<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/net/b44.c, branch v2.6.31</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>drivers/net: fixed drivers that support netpoll use ndo_start_xmit()</title>
<updated>2009-08-14T23:41:16+00:00</updated>
<author>
<name>Dongdong Deng</name>
<email>dongdong.deng@windriver.com</email>
</author>
<published>2009-08-13T19:12:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=22580f894ac190c46beebb5c3172e450a2318f79'/>
<id>22580f894ac190c46beebb5c3172e450a2318f79</id>
<content type='text'>
The NETPOLL API requires that interrupts remain disabled in
netpoll_send_skb(). The use of spin_lock_irq() and spin_unlock_irq()
in the NETPOLL API callbacks causes the interrupts to get enabled and
can lead to kernel instability.

The solution is to use spin_lock_irqsave() and spin_unlock_restore()
to prevent the irqs from getting enabled while in netpoll_send_skb().

Call trace:
netpoll_send_skb()
{
   -&gt; local_irq_save(flags)
     ---&gt; dev-&gt;ndo_start_xmit(skb, dev)
         ---&gt; spin_lock_irq()
         ---&gt; spin_unlock_irq() *******here would enable the interrupt.
              ...
   -&gt; local_irq_restore(flags)
}

Signed-off-by: Dongdong Deng &lt;dongdong.deng@windriver.com&gt;
Signed-off-by: Jason Wessel &lt;jason.wessel@windriver.com&gt;
Acked-by: Bruce Ashfield &lt;bruce.ashfield@windriver.com&gt;
Acked-by: Matt Mackall &lt;mpm@selenic.com&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>
The NETPOLL API requires that interrupts remain disabled in
netpoll_send_skb(). The use of spin_lock_irq() and spin_unlock_irq()
in the NETPOLL API callbacks causes the interrupts to get enabled and
can lead to kernel instability.

The solution is to use spin_lock_irqsave() and spin_unlock_restore()
to prevent the irqs from getting enabled while in netpoll_send_skb().

Call trace:
netpoll_send_skb()
{
   -&gt; local_irq_save(flags)
     ---&gt; dev-&gt;ndo_start_xmit(skb, dev)
         ---&gt; spin_lock_irq()
         ---&gt; spin_unlock_irq() *******here would enable the interrupt.
              ...
   -&gt; local_irq_restore(flags)
}

Signed-off-by: Dongdong Deng &lt;dongdong.deng@windriver.com&gt;
Signed-off-by: Jason Wessel &lt;jason.wessel@windriver.com&gt;
Acked-by: Bruce Ashfield &lt;bruce.ashfield@windriver.com&gt;
Acked-by: Matt Mackall &lt;mpm@selenic.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: use netdev stats in b44, sundance, via-rhine and via-velocity</title>
<updated>2009-05-27T22:47:07+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>eric.dumazet@gmail.com</email>
</author>
<published>2009-05-27T10:34:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=553e2335625e6c96cb6d76c0d63cfc1034747614'/>
<id>553e2335625e6c96cb6d76c0d63cfc1034747614</id>
<content type='text'>
Use struct net_device_stats provided in struct net_device instead of
private ones.

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&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>
Use struct net_device_stats provided in struct net_device instead of
private ones.

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>dma-mapping: replace all DMA_30BIT_MASK macro with DMA_BIT_MASK(30)</title>
<updated>2009-04-07T15:31:11+00:00</updated>
<author>
<name>Yang Hongyang</name>
<email>yanghy@cn.fujitsu.com</email>
</author>
<published>2009-04-07T02:01:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=28b767967763835d8526f6baedc25a8a86052640'/>
<id>28b767967763835d8526f6baedc25a8a86052640</id>
<content type='text'>
Replace all DMA_30BIT_MASK macro with DMA_BIT_MASK(30)

Signed-off-by: Yang Hongyang&lt;yanghy@cn.fujitsu.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&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>
Replace all DMA_30BIT_MASK macro with DMA_BIT_MASK(30)

Signed-off-by: Yang Hongyang&lt;yanghy@cn.fujitsu.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>b44: Use kernel DMA addresses for the kernel DMA API</title>
<updated>2009-04-07T00:51:29+00:00</updated>
<author>
<name>Michael Buesch</name>
<email>mb@bu3sch.de</email>
</author>
<published>2009-04-06T09:52:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=37efa239901493694a48f1d6f59f8de17c2c4509'/>
<id>37efa239901493694a48f1d6f59f8de17c2c4509</id>
<content type='text'>
We must not use the device DMA addresses for the kernel DMA API, because
device DMA addresses have an additional offset added for the SSB translation.

Use the original dma_addr_t for the sync operation.

Cc: stable@kernel.org
Signed-off-by: Michael Buesch &lt;mb@bu3sch.de&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>
We must not use the device DMA addresses for the kernel DMA API, because
device DMA addresses have an additional offset added for the SSB translation.

Use the original dma_addr_t for the sync operation.

Cc: stable@kernel.org
Signed-off-by: Michael Buesch &lt;mb@bu3sch.de&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>b44: Fix sizes passed to b44_sync_dma_desc_for_{device,cpu}()</title>
<updated>2009-04-04T23:48:17+00:00</updated>
<author>
<name>Michael Buesch</name>
<email>mb@bu3sch.de</email>
</author>
<published>2009-04-03T00:01:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=5d4d9e8ad6c646c4811bf0049df761dee6affc3d'/>
<id>5d4d9e8ad6c646c4811bf0049df761dee6affc3d</id>
<content type='text'>
&gt; &gt; ------------[ cut here ]------------
&gt; &gt; WARNING: at lib/dma-debug.c:539 check_sync+0xe9/0x341() (Not tainted)
&gt; &gt; Hardware name: HP Compaq nx6110 (PY501EA#AB9)
&gt; &gt; b44 0000:02:0e.0: DMA-API: device driver tries to sync DMA memory it has not
&gt; &gt; allocated [device address=0x0000000075941040] [size=1566 bytes]
&gt; &gt; Modules linked in: llc bnep l2cap bluetooth autofs4 lm90 hwmon i2c_i801 sunrpc
&gt; &gt; ipv6 cpufreq_ondemand acpi_cpufreq uinput snd_intel8x0m snd_intel8x0
&gt; &gt; snd_ac97_codec snd_seq_dummy ac97_bus snd_seq_oss snd_seq_midi_event snd_seq
&gt; &gt; snd_seq_device snd_pcm_oss snd_mixer_oss snd_pcm b44 ssb firewire_ohci
&gt; &gt; snd_timer ipw2200 iTCO_wdt mii firewire_core snd iTCO_vendor_support libipw
&gt; &gt; yenta_socket crc_itu_t lib80211 rsrc_nonstatic soundcore snd_page_alloc joydev
&gt; &gt; pcspkr wmi serio_raw ata_generic pata_acpi i915 drm i2c_algo_bit i2c_core video
&gt; &gt; output [last unloaded: scsi_wait_scan]
&gt; &gt; Pid: 2418, comm: S58ntpd Not tainted 2.6.29-16.fc10.i686.PAE #1
&gt; &gt; Call Trace:
&gt; &gt;  [&lt;c04396d1&gt;] warn_slowpath+0x7c/0xbd
&gt; &gt;  [&lt;c0457fe1&gt;] ? register_lock_class+0x17/0x290
&gt; &gt;  [&lt;c0458d61&gt;] ? mark_lock+0x1e/0x349
&gt; &gt;  [&lt;c0556448&gt;] ? _raw_spin_unlock+0x74/0x78
&gt; &gt;  [&lt;c0458d61&gt;] ? mark_lock+0x1e/0x349
&gt; &gt;  [&lt;c055a060&gt;] ? check_sync+0x37/0x341
&gt; &gt;  [&lt;c055a112&gt;] check_sync+0xe9/0x341
&gt; &gt;  [&lt;c0711245&gt;] ? _spin_unlock_irqrestore+0x45/0x55
&gt; &gt;  [&lt;c04592db&gt;] ? trace_hardirqs_on+0xb/0xd
&gt; &gt;  [&lt;c055a4d1&gt;] debug_dma_sync_single_for_device+0x2f/0x39
&gt; &gt;  [&lt;f828f722&gt;] dma_sync_single_for_device+0x4a/0x59 [b44]
&gt; &gt;  [&lt;f828f76f&gt;] ssb_dma_sync_single_for_device+0x3e/0x48 [b44]
&gt; &gt;  [&lt;f8291d1e&gt;] b44_recycle_rx+0x18c/0x196 [b44]
&gt; &gt;  [&lt;f8291f9f&gt;] b44_poll+0x277/0x3c0 [b44]
&gt; &gt;  [&lt;c0687bb9&gt;] net_rx_action+0xa1/0x1ca
&gt; &gt;  [&lt;c043e30a&gt;] __do_softirq+0x9d/0x154
&gt; &gt;  [&lt;c043e413&gt;] do_softirq+0x52/0x7e
&gt; &gt;  [&lt;c043e56f&gt;] irq_exit+0x49/0x77
&gt; &gt;  [&lt;c040b22e&gt;] do_IRQ+0x97/0xad
&gt; &gt;  [&lt;c0409dac&gt;] common_interrupt+0x2c/0x34

I don't know if this is related, but the following patch seems to fix some DMA
mapping bug. Can somebody comment who does understand the code better than me?

(completely untested)

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
&gt; &gt; ------------[ cut here ]------------
&gt; &gt; WARNING: at lib/dma-debug.c:539 check_sync+0xe9/0x341() (Not tainted)
&gt; &gt; Hardware name: HP Compaq nx6110 (PY501EA#AB9)
&gt; &gt; b44 0000:02:0e.0: DMA-API: device driver tries to sync DMA memory it has not
&gt; &gt; allocated [device address=0x0000000075941040] [size=1566 bytes]
&gt; &gt; Modules linked in: llc bnep l2cap bluetooth autofs4 lm90 hwmon i2c_i801 sunrpc
&gt; &gt; ipv6 cpufreq_ondemand acpi_cpufreq uinput snd_intel8x0m snd_intel8x0
&gt; &gt; snd_ac97_codec snd_seq_dummy ac97_bus snd_seq_oss snd_seq_midi_event snd_seq
&gt; &gt; snd_seq_device snd_pcm_oss snd_mixer_oss snd_pcm b44 ssb firewire_ohci
&gt; &gt; snd_timer ipw2200 iTCO_wdt mii firewire_core snd iTCO_vendor_support libipw
&gt; &gt; yenta_socket crc_itu_t lib80211 rsrc_nonstatic soundcore snd_page_alloc joydev
&gt; &gt; pcspkr wmi serio_raw ata_generic pata_acpi i915 drm i2c_algo_bit i2c_core video
&gt; &gt; output [last unloaded: scsi_wait_scan]
&gt; &gt; Pid: 2418, comm: S58ntpd Not tainted 2.6.29-16.fc10.i686.PAE #1
&gt; &gt; Call Trace:
&gt; &gt;  [&lt;c04396d1&gt;] warn_slowpath+0x7c/0xbd
&gt; &gt;  [&lt;c0457fe1&gt;] ? register_lock_class+0x17/0x290
&gt; &gt;  [&lt;c0458d61&gt;] ? mark_lock+0x1e/0x349
&gt; &gt;  [&lt;c0556448&gt;] ? _raw_spin_unlock+0x74/0x78
&gt; &gt;  [&lt;c0458d61&gt;] ? mark_lock+0x1e/0x349
&gt; &gt;  [&lt;c055a060&gt;] ? check_sync+0x37/0x341
&gt; &gt;  [&lt;c055a112&gt;] check_sync+0xe9/0x341
&gt; &gt;  [&lt;c0711245&gt;] ? _spin_unlock_irqrestore+0x45/0x55
&gt; &gt;  [&lt;c04592db&gt;] ? trace_hardirqs_on+0xb/0xd
&gt; &gt;  [&lt;c055a4d1&gt;] debug_dma_sync_single_for_device+0x2f/0x39
&gt; &gt;  [&lt;f828f722&gt;] dma_sync_single_for_device+0x4a/0x59 [b44]
&gt; &gt;  [&lt;f828f76f&gt;] ssb_dma_sync_single_for_device+0x3e/0x48 [b44]
&gt; &gt;  [&lt;f8291d1e&gt;] b44_recycle_rx+0x18c/0x196 [b44]
&gt; &gt;  [&lt;f8291f9f&gt;] b44_poll+0x277/0x3c0 [b44]
&gt; &gt;  [&lt;c0687bb9&gt;] net_rx_action+0xa1/0x1ca
&gt; &gt;  [&lt;c043e30a&gt;] __do_softirq+0x9d/0x154
&gt; &gt;  [&lt;c043e413&gt;] do_softirq+0x52/0x7e
&gt; &gt;  [&lt;c043e56f&gt;] irq_exit+0x49/0x77
&gt; &gt;  [&lt;c040b22e&gt;] do_IRQ+0x97/0xad
&gt; &gt;  [&lt;c0409dac&gt;] common_interrupt+0x2c/0x34

I don't know if this is related, but the following patch seems to fix some DMA
mapping bug. Can somebody comment who does understand the code better than me?

(completely untested)

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6</title>
<updated>2009-03-02T05:35:16+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2009-03-02T05:35:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=aa4abc9bcce0d2a7ec189e897f8f8c58ca04643b'/>
<id>aa4abc9bcce0d2a7ec189e897f8f8c58ca04643b</id>
<content type='text'>
Conflicts:
	drivers/net/wireless/iwlwifi/iwl-tx.c
	net/8021q/vlan_core.c
	net/core/dev.c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:
	drivers/net/wireless/iwlwifi/iwl-tx.c
	net/8021q/vlan_core.c
	net/core/dev.c
</pre>
</div>
</content>
</entry>
<entry>
<title>b44: Disable device on shutdown</title>
<updated>2009-02-27T06:35:02+00:00</updated>
<author>
<name>Michael Buesch</name>
<email>mb@bu3sch.de</email>
</author>
<published>2009-02-27T06:35:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=e92aa634a33739478958f4109d6bd35b36d13532'/>
<id>e92aa634a33739478958f4109d6bd35b36d13532</id>
<content type='text'>
Disable the SSB core on device shutdown.
This has two advantages:
1) A clean device shutdown is always desired here, because we disable
  the device's global crystal in the next statement.
2) This fixes a bug where the device will come up with the enable-bit
  set on the next initialization (without a reboot inbetween).
  This causes breakage on the second initialization due to code that
  checks this bit (ssb_device_is_enabled() checks).

Reported-by: Pantelis Koukousoulas &lt;pktoss@gmail.com&gt;
Signed-off-by: Michael Buesch &lt;mb@bu3sch.de&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>
Disable the SSB core on device shutdown.
This has two advantages:
1) A clean device shutdown is always desired here, because we disable
  the device's global crystal in the next statement.
2) This fixes a bug where the device will come up with the enable-bit
  set on the next initialization (without a reboot inbetween).
  This causes breakage on the second initialization due to code that
  checks this bit (ssb_device_is_enabled() checks).

Reported-by: Pantelis Koukousoulas &lt;pktoss@gmail.com&gt;
Signed-off-by: Michael Buesch &lt;mb@bu3sch.de&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>b44: Unconditionally enable interrupt routing on reset</title>
<updated>2009-02-27T06:33:00+00:00</updated>
<author>
<name>Michael Buesch</name>
<email>mb@bu3sch.de</email>
</author>
<published>2009-02-27T06:33:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=f8af11af85fecbfa7b95fd79c043b16ae0ee0d55'/>
<id>f8af11af85fecbfa7b95fd79c043b16ae0ee0d55</id>
<content type='text'>
Unconditionally setup the IRQ routing on chip reset.
It's safe to call ssb_pcicore_dev_irqvecs_enable() unconditionally, because
it has internal checks for redundant calls.

This fixes problems where hardware will not come up properly
due to quirks in the enable-bit hardware.

Reported-by: Pantelis Koukousoulas &lt;pktoss@gmail.com&gt;
Signed-off-by: Michael Buesch &lt;mb@bu3sch.de&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>
Unconditionally setup the IRQ routing on chip reset.
It's safe to call ssb_pcicore_dev_irqvecs_enable() unconditionally, because
it has internal checks for redundant calls.

This fixes problems where hardware will not come up properly
due to quirks in the enable-bit hardware.

Reported-by: Pantelis Koukousoulas &lt;pktoss@gmail.com&gt;
Signed-off-by: Michael Buesch &lt;mb@bu3sch.de&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>netdev: Use __netdev_alloc_skb() instead of __dev_alloc_skb().</title>
<updated>2009-02-10T09:56:45+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2009-02-10T09:56:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=9034f77bad1e86c4b43e5f5739eb3b8f4878e947'/>
<id>9034f77bad1e86c4b43e5f5739eb3b8f4878e947</id>
<content type='text'>
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: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: Remove redundant NAPI functions</title>
<updated>2009-01-21T22:33:50+00:00</updated>
<author>
<name>Ben Hutchings</name>
<email>bhutchings@solarflare.com</email>
</author>
<published>2009-01-20T00:43:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=288379f050284087578b77e04f040b57db3db3f8'/>
<id>288379f050284087578b77e04f040b57db3db3f8</id>
<content type='text'>
Following the removal of the unused struct net_device * parameter from
the NAPI functions named *netif_rx_* in commit 908a7a1, they are
exactly equivalent to the corresponding *napi_* functions and are
therefore redundant.

Signed-off-by: Ben Hutchings &lt;bhutchings@solarflare.com&gt;
Acked-by: Neil Horman &lt;nhorman@tuxdriver.com&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>
Following the removal of the unused struct net_device * parameter from
the NAPI functions named *netif_rx_* in commit 908a7a1, they are
exactly equivalent to the corresponding *napi_* functions and are
therefore redundant.

Signed-off-by: Ben Hutchings &lt;bhutchings@solarflare.com&gt;
Acked-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
