<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/net/gianfar.c, branch linux-2.6.30.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.30.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.30.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2009-07-30T21:40:30Z</updated>
<entry>
<title>netdev: restore MAC address set and validate operations</title>
<updated>2009-07-30T21:40:30Z</updated>
<author>
<name>Ben Hutchings</name>
</author>
<published>2009-07-09T17:54:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cc37bbfa8271d1b41d6c16e7e9c51763787f74e1'/>
<id>urn:sha1:cc37bbfa8271d1b41d6c16e7e9c51763787f74e1</id>
<content type='text'>
commit 240c102d9c54fee7fdc87a4ef2fabc7eb539e00a upstream.

alloc_etherdev() used to install default implementations of these
operations, but they must now be explicitly installed in struct
net_device_ops.

Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>gianfar: fix BUG under load after introduction of skb recycling</title>
<updated>2009-05-25T07:42:34Z</updated>
<author>
<name>Lennert Buytenhek</name>
</author>
<published>2009-05-25T07:42:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4e2fd555199977c5994d1a4d2d3b8761b20ca4c7'/>
<id>urn:sha1:4e2fd555199977c5994d1a4d2d3b8761b20ca4c7</id>
<content type='text'>
Since commit 0fd56bb5be6455d0d42241e65aed057244665e5e ("gianfar:
Add support for skb recycling"), gianfar puts skbuffs that are in
the rx ring back onto the recycle list as-is in case there was a
receive error, but this breaks the following invariant: that all
skbuffs on the recycle list have skb-&gt;data = skb-&gt;head + NET_SKB_PAD.

The RXBUF_ALIGNMENT realignment done in gfar_new_skb() will be done
twice on skbuffs recycled in this way, causing there not to be enough
room in the skb anymore to receive a full packet, eventually leading
to an skb_over_panic from gfar_clean_rx_ring() -&gt; skb_put().

Resetting the skb-&gt;data pointer to skb-&gt;head + NET_SKB_PAD before
putting the skb back onto the recycle list restores the mentioned
invariant, and should fix this issue.

Reported-by: Michael Guntsche &lt;mike@it-loops.com&gt;
Tested-by: Michael Guntsche &lt;mike@it-loops.com&gt;
Signed-off-by: Lennert Buytenhek &lt;buytenh@wantstofly.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>gianfar: stop send queue before resetting gianfar</title>
<updated>2009-04-15T09:35:40Z</updated>
<author>
<name>Markus Brunner</name>
</author>
<published>2009-04-15T09:35:40Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cbea270714faae389c48c2901ee7988ecd62f664'/>
<id>urn:sha1:cbea270714faae389c48c2901ee7988ecd62f664</id>
<content type='text'>
After a transmit timed out, the reset task will be called, which will free the
allocated resources(stop_gfar). If gfar_poll will be called before the
resources get allocated again gfar_clean_tx_ring will call
dev_kfree_skb_any(NULL).

Example crash:

ops: Kernel access of bad area, sig: 11 [#1]
PREEMPT RSBBA100
Modules linked in:
NIP: c01a10c4 LR: c013b254 CTR: c013c038
REGS: c02e7d20 TRAP: 0300   Not tainted  (2.6.27.20)
MSR: 00001032 &lt;ME,IR,DR&gt;  CR: 24000082  XER: 20000000
DAR: 000000a0, DSISR: 20000000
TASK = c02ce578[0] 'swapper' THREAD: c02e6000
GPR00: 000000a0 c02e7dd0 c02ce578 00000000 00000040 00000001 c02ec1c0 
00001032
GPR08: c080d1e0 df9ea800 00000000 00000000 24000082 ffffffff 0404f000 
00000000
GPR16: ffffffbf ffffffff ffffffff ffdff7ff ffffffff c02d0fd4 00100100 
00200200
GPR24: c031220c 00000001 00000001 00000000 00000000 df849800 ff109000 
df849b80
NIP [c01a10c4] dev_kfree_skb_irq+0x18/0x70
LR [c013b254] gfar_clean_tx_ring+0x70/0x11c
Call Trace:
[c02e7dd0] [c003e978] update_wall_time+0x730/0x744 (unreliable)
[c02e7df0] [c013b254] gfar_clean_tx_ring+0x70/0x11c
[c02e7e10] [c013c07c] gfar_poll+0x44/0x150
[c02e7e30] [c01a064c] net_rx_action+0xa8/0x19c
[c02e7e70] [c00251d4] __do_softirq+0x64/0xc0
[c02e7e90] [c0006384] do_softirq+0x40/0x58
[c02e7ea0] [c00250a8] irq_exit+0x40/0x9c
[c02e7eb0] [c000642c] do_IRQ+0x90/0xac
[c02e7ec0] [c0010ab4] ret_from_except+0x0/0x14
--- Exception: 501 at cpu_idle+0x9c/0xf8
    LR = cpu_idle+0x9c/0xf8
[c02e7f80] [c0009820] cpu_idle+0x58/0xf8 (unreliable)
[c02e7fa0] [c01fb8c8] __got2_end+0x7c/0x90
[c02e7fc0] [c026c794] start_kernel+0x2c0/0x2d4
[c02e7ff0] [00003438] 0x3438
Instruction dump:
7fa00124 80010024 bba10014 38210020 7c0803a6 4e800020 9421ffe0 7c0802a6
7c6b1b78 90010024 380300a0 bfa10014 &lt;7d200028&gt; 3129ffff 7d20012d 40a2fff4
Kernel panic - not syncing: Fatal exception in interrupt

This Patch calls netif_stop_queue before calling stop_gfar.

Signed-off-by: Markus Brunner &lt;super.firetwister@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;

</content>
</entry>
<entry>
<title>gianfar: Fix use-after-of_node_put() in gfar_of_init().</title>
<updated>2009-03-29T08:19:37Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2009-03-29T08:19:37Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ee76db5e9e9896312f001790855a798472440328'/>
<id>urn:sha1:ee76db5e9e9896312f001790855a798472440328</id>
<content type='text'>
We can't put 'mdio' until after we've used it in the
fsl_pq_mdio_bus_name() call.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>gianfar: only check headroom when FCB is needed</title>
<updated>2009-03-27T22:54:30Z</updated>
<author>
<name>Li Yang</name>
</author>
<published>2009-03-27T22:54:30Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5b28beaf88436fa44fc25ee27a2fadffb75f222e'/>
<id>urn:sha1:5b28beaf88436fa44fc25ee27a2fadffb75f222e</id>
<content type='text'>
Signed-off-by: Li Yang &lt;leoli@freescale.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>gianfar: Fix kfree(skb)</title>
<updated>2009-03-27T08:10:58Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2009-03-27T08:10:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bd14ba842cd29edbbd40e566194bd33cf0c92f6c'/>
<id>urn:sha1:bd14ba842cd29edbbd40e566194bd33cf0c92f6c</id>
<content type='text'>
Noticed by Li Yang.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>gianfar: fix headroom expansion code</title>
<updated>2009-03-27T07:38:45Z</updated>
<author>
<name>Stephen Hemminger</name>
</author>
<published>2009-03-27T07:38:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=54dc79fe0d895758bdaa1dcf8512d3d21263d105'/>
<id>urn:sha1:54dc79fe0d895758bdaa1dcf8512d3d21263d105</id>
<content type='text'>
The code that was added to increase headroom was wrong.
It doesn't handle the case where gfar_add_fcb() changes the skb.
Better to do check at start of transmit (outside of lock), where
error handling is better anyway.

Signed-off-by: Stephen Hemminger &lt;shemminger@vyatta.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>gianfar: reallocate skb when headroom is not enough for fcb</title>
<updated>2009-03-26T00:21:19Z</updated>
<author>
<name>Li Yang</name>
</author>
<published>2009-03-24T23:15:33Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=93c1285c5d92c31f9bcc20355f1e86e95bec165e'/>
<id>urn:sha1:93c1285c5d92c31f9bcc20355f1e86e95bec165e</id>
<content type='text'>
Gianfar uses a hardware header FCB for offloading.  However when used
with bridging or IP forwarding, TX skb might not have enough headroom
for the FCB.  Reallocate skb for such cases.

Signed-off-by: Li Yang &lt;leoli@freescale.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>gianfar: Fix build with CONFIG_PM enabled</title>
<updated>2009-03-21T20:27:55Z</updated>
<author>
<name>Anton Vorontsov</name>
</author>
<published>2009-03-21T20:27:55Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=29ded5f76ce3c41f43b64643b074b7c9c9ebd925'/>
<id>urn:sha1:29ded5f76ce3c41f43b64643b074b7c9c9ebd925</id>
<content type='text'>
commit 4826857f1bf07f9c0f1495e9b05d125552c88a85 ("gianfar: pass the
proper dev to DMA ops") introduced this build breakage:

  CC      drivers/net/gianfar.o
drivers/net/gianfar.c: In function 'gfar_suspend':
drivers/net/gianfar.c:552: error: 'struct gfar_private' has no member named 'dev'
drivers/net/gianfar.c: In function 'gfar_resume':
drivers/net/gianfar.c:601: error: 'struct gfar_private' has no member named 'dev'
make[2]: *** [drivers/net/gianfar.o] Error 1

Fix this by converting suspend and resume routines to use
gfar_private-&gt;ndev.

Signed-off-by: Anton Vorontsov &lt;avorontsov@ru.mvista.com&gt;
Acked-by: Kumar Gala &lt;galak@kernel.crashing.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>gianfar: pass the proper dev to DMA ops</title>
<updated>2009-03-19T06:28:22Z</updated>
<author>
<name>Kumar Gala</name>
</author>
<published>2009-03-19T06:28:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4826857f1bf07f9c0f1495e9b05d125552c88a85'/>
<id>urn:sha1:4826857f1bf07f9c0f1495e9b05d125552c88a85</id>
<content type='text'>
We need to be passing the of_platform device struct into the DMA ops as
its the one that has the archdata setup to know which low-level DMA ops we
should be using (not the net_device one).  This isn't an issue until we
expect the archdata to be setup correctly.

Signed-off-by: Kumar Gala &lt;galak@kernel.crashing.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
