<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/net/ipg.c, branch v2.6.24</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>ipg: fix Tx completion irq request</title>
<updated>2008-01-17T22:35:09+00:00</updated>
<author>
<name>Francois Romieu</name>
<email>romieu@fr.zoreil.com</email>
</author>
<published>2008-01-10T22:53:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=47cccd7d7cc1f2b6f34aadc9041fb991c6293cdd'/>
<id>47cccd7d7cc1f2b6f34aadc9041fb991c6293cdd</id>
<content type='text'>
The current logic will only request an ack for the first pending
packet. No irq is triggered as soon as the CPU submits a few
packets a bit quickly.  Let's request an irq for every packet
instead.

Signed-off-by: Francois Romieu &lt;romieu@fr.zoreil.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The current logic will only request an ack for the first pending
packet. No irq is triggered as soon as the CPU submits a few
packets a bit quickly.  Let's request an irq for every packet
instead.

Signed-off-by: Francois Romieu &lt;romieu@fr.zoreil.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ipg: fix queue stop condition in the xmit handler</title>
<updated>2008-01-17T22:35:09+00:00</updated>
<author>
<name>Francois Romieu</name>
<email>romieu@fr.zoreil.com</email>
</author>
<published>2008-01-10T22:45:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=dafdec746f8c468bebf6b99f32a392ee6c8d0212'/>
<id>dafdec746f8c468bebf6b99f32a392ee6c8d0212</id>
<content type='text'>
Signed-off-by: Francois Romieu &lt;romieu@fr.zoreil.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Francois Romieu &lt;romieu@fr.zoreil.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ipg: plug Tx completion leak</title>
<updated>2008-01-17T22:35:09+00:00</updated>
<author>
<name>Francois Romieu</name>
<email>romieu@fr.zoreil.com</email>
</author>
<published>2008-01-10T22:40:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=0da1b995aee447656c0eb77e4e32468e37f868a3'/>
<id>0da1b995aee447656c0eb77e4e32468e37f868a3</id>
<content type='text'>
The Tx skb release could not free more than one skb per call.
Add it to the fact that the xmit handler does not check for
a queue full condition and you have a recipe to leak quickly.

Let's release every pending Tx descriptor which has been given
back to the host CPU by the network controller. The xmit handler
suggests that it is done through the IPG_TFC_TFDDONE bit.

Remove the former "curr" computing: it does not produce anything
usable in its current form.

Signed-off-by: Francois Romieu &lt;romieu@fr.zoreil.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The Tx skb release could not free more than one skb per call.
Add it to the fact that the xmit handler does not check for
a queue full condition and you have a recipe to leak quickly.

Let's release every pending Tx descriptor which has been given
back to the host CPU by the network controller. The xmit handler
suggests that it is done through the IPG_TFC_TFDDONE bit.

Remove the former "curr" computing: it does not produce anything
usable in its current form.

Signed-off-by: Francois Romieu &lt;romieu@fr.zoreil.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ipg: balance locking in irq handler</title>
<updated>2008-01-17T22:35:09+00:00</updated>
<author>
<name>Francois Romieu</name>
<email>romieu@fr.zoreil.com</email>
</author>
<published>2008-01-10T22:25:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=227bc24d675d80de1cfb3ab72891cc932dadbc3b'/>
<id>227bc24d675d80de1cfb3ab72891cc932dadbc3b</id>
<content type='text'>
Spotted-by: &lt;linux@horizon.com&gt;
Signed-off-by: Francois Romieu &lt;romieu@fr.zoreil.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Spotted-by: &lt;linux@horizon.com&gt;
Signed-off-by: Francois Romieu &lt;romieu@fr.zoreil.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drivers/net/ipg.c: cleanups</title>
<updated>2007-10-25T07:31:13+00:00</updated>
<author>
<name>Adrian Bunk</name>
<email>bunk@kernel.org</email>
</author>
<published>2007-10-24T16:23:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=96fd74b2d9b59edeed7ea1287d322b7661d549ca'/>
<id>96fd74b2d9b59edeed7ea1287d322b7661d549ca</id>
<content type='text'>
This patch contains the following cleanups:
- make ipg_nic_get_stats() static
- move DefaultPhyParam[] from ipg.h to ipg.c and make it static

Signed-off-by: Adrian Bunk &lt;bunk@kernel.org&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch contains the following cleanups:
- make ipg_nic_get_stats() static
- move DefaultPhyParam[] from ipg.h to ipg.c and make it static

Signed-off-by: Adrian Bunk &lt;bunk@kernel.org&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ipg: endianness fixes</title>
<updated>2007-10-14T19:41:52+00:00</updated>
<author>
<name>Al Viro</name>
<email>viro@ftp.linux.org.uk</email>
</author>
<published>2007-10-14T18:41:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=325a80715f6dba4b12479f8bb011d96093a47374'/>
<id>325a80715f6dba4b12479f8bb011d96093a47374</id>
<content type='text'>
if your mask is host-endian, you should apply it after le64_to_cpu();
if it's little-endian - before.  Doing both (for the same mask and
little-endian value) is broken.

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
if your mask is host-endian, you should apply it after le64_to_cpu();
if it's little-endian - before.  Doing both (for the same mask and
little-endian value) is broken.

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ipg.c doesn't compile with with CONFIG_HIGHMEM64G</title>
<updated>2007-10-10T23:54:28+00:00</updated>
<author>
<name>trem</name>
<email>tremyfr@yahoo.fr</email>
</author>
<published>2007-10-02T21:04:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=1dad939ddbbd8d64e1edc7799df00a9e591b4197'/>
<id>1dad939ddbbd8d64e1edc7799df00a9e591b4197</id>
<content type='text'>
I've tried to compile 2.6.23-rc8-mm2, but it fails on ipg.c with the
error : ERROR: "__udivdi3" [drivers/net/ipg.ko] undefined!

I've instigated a bit, and I've found this code in ipg.c :

static void ipg_nic_txfree(struct net_device *dev)
{
       struct ipg_nic_private *sp = netdev_priv(dev);
       void __iomem *ioaddr = sp-&gt;ioaddr;
       const unsigned int curr = ipg_r32(TFD_LIST_PTR_0) -
               (sp-&gt;txd_map / sizeof(struct ipg_tx)) - 1;
       unsigned int released, pending;

sp-&gt;txd_map is an u64
because :
	dma_addr_t txd_map;

And in asm-i386/types.h, I see :
#ifdef CONFIG_HIGHMEM64G
typedef u64 dma_addr_t;
#else
typedef u32 dma_addr_t;
#endif
I my config, I use CONFIG_HIGHMEM64G

sizeof(struct ipg_tx) is an u32
So the div failed on i386 because of u64 / u32.

[akpm@linux-foundation.org: cleanups]
Cc: Sorbica Shieh &lt;sorbica@icplus.com.tw&gt;
Cc: Jesse Huang &lt;jesse@icplus.com.tw&gt;
Cc: Jeff Garzik &lt;jeff@garzik.org&gt;
Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I've tried to compile 2.6.23-rc8-mm2, but it fails on ipg.c with the
error : ERROR: "__udivdi3" [drivers/net/ipg.ko] undefined!

I've instigated a bit, and I've found this code in ipg.c :

static void ipg_nic_txfree(struct net_device *dev)
{
       struct ipg_nic_private *sp = netdev_priv(dev);
       void __iomem *ioaddr = sp-&gt;ioaddr;
       const unsigned int curr = ipg_r32(TFD_LIST_PTR_0) -
               (sp-&gt;txd_map / sizeof(struct ipg_tx)) - 1;
       unsigned int released, pending;

sp-&gt;txd_map is an u64
because :
	dma_addr_t txd_map;

And in asm-i386/types.h, I see :
#ifdef CONFIG_HIGHMEM64G
typedef u64 dma_addr_t;
#else
typedef u32 dma_addr_t;
#endif
I my config, I use CONFIG_HIGHMEM64G

sizeof(struct ipg_tx) is an u32
So the div failed on i386 because of u64 / u32.

[akpm@linux-foundation.org: cleanups]
Cc: Sorbica Shieh &lt;sorbica@icplus.com.tw&gt;
Cc: Jesse Huang &lt;jesse@icplus.com.tw&gt;
Cc: Jeff Garzik &lt;jeff@garzik.org&gt;
Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Jeff Garzik &lt;jeff@garzik.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[IPG]: add IP1000A driver to kernel tree</title>
<updated>2007-10-10T23:51:33+00:00</updated>
<author>
<name>Francois Romieu</name>
<email>romieu@fr.zoreil.com</email>
</author>
<published>2007-09-18T00:13:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=1202d6ff356cc66dc8d2b85546eb4f187f9e1f25'/>
<id>1202d6ff356cc66dc8d2b85546eb4f187f9e1f25</id>
<content type='text'>
Signed-off-by: Jesse Huang &lt;jesse@icplus.com.tw&gt;
Signed-off-by: Stefan Lippers-Hollmann &lt;s.l-h@gmx.de&gt;
Signed-off-by: Francois Romieu &lt;romieu@fr.zoreil.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Jesse Huang &lt;jesse@icplus.com.tw&gt;
Signed-off-by: Stefan Lippers-Hollmann &lt;s.l-h@gmx.de&gt;
Signed-off-by: Francois Romieu &lt;romieu@fr.zoreil.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
