- Aug 14, 2009
-
-
Dongdong Deng authored
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() { -> local_irq_save(flags) ---> dev->ndo_start_xmit(skb, dev) ---> spin_lock_irq() ---> spin_unlock_irq() *******here would enable the interrupt. ... -> local_irq_restore(flags) } Signed-off-by:
Dongdong Deng <dongdong.deng@windriver.com> Signed-off-by:
Jason Wessel <jason.wessel@windriver.com> Acked-by:
Bruce Ashfield <bruce.ashfield@windriver.com> Acked-by:
Matt Mackall <mpm@selenic.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
-
- May 27, 2009
-
-
Eric Dumazet authored
Use struct net_device_stats provided in struct net_device instead of private ones. Signed-off-by:
Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
-
- Apr 07, 2009
-
-
Yang Hongyang authored
Replace all DMA_30BIT_MASK macro with DMA_BIT_MASK(30) Signed-off-by:
Yang <Hongyang<yanghy@cn.fujitsu.com> Signed-off-by:
Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
-
- Apr 06, 2009
-
-
Michael Buesch authored
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 <mb@bu3sch.de> Signed-off-by:
David S. Miller <davem@davemloft.net>
-
- Apr 04, 2009
-
-
Michael Buesch authored
> > ------------[ cut here ]------------ > > WARNING: at lib/dma-debug.c:539 check_sync+0xe9/0x341() (Not tainted) > > Hardware name: HP Compaq nx6110 (PY501EA#AB9) > > b44 0000:02:0e.0: DMA-API: device driver tries to sync DMA memory it has not > > allocated [device address=0x0000000075941040] [size=1566 bytes] > > Modules linked in: llc bnep l2cap bluetooth autofs4 lm90 hwmon i2c_i801 sunrpc > > ipv6 cpufreq_ondemand acpi_cpufreq uinput snd_intel8x0m snd_intel8x0 > > snd_ac97_codec snd_seq_dummy ac97_bus snd_seq_oss snd_seq_midi_event snd_seq > > snd_seq_device snd_pcm_oss snd_mixer_oss snd_pcm b44 ssb firewire_ohci > > snd_timer ipw2200 iTCO_wdt mii firewire_core snd iTCO_vendor_support libipw > > yenta_socket crc_itu_t lib80211 rsrc_nonstatic soundcore snd_page_alloc joydev > > pcspkr wmi serio_raw ata_generic pata_acpi i915 drm i2c_algo_bit i2c_core video > > output [last unloaded: scsi_wait_scan] > > Pid: 2418, comm: S58ntpd Not tainted 2.6.29-16.fc10.i686.PAE #1 > > Call Trace: > > [<c04396d1>] warn_slowpath+0x7c/0xbd > > [<c0457fe1>] ? register_lock_class+0x17/0x290 > > [<c0458d61>] ? mark_lock+0x1e/0x349 > > [<c0556448>] ? _raw_spin_unlock+0x74/0x78 > > [<c0458d61>] ? mark_lock+0x1e/0x349 > > [<c055a060>] ? check_sync+0x37/0x341 > > [<c055a112>] check_sync+0xe9/0x341 > > [<c0711245>] ? _spin_unlock_irqrestore+0x45/0x55 > > [<c04592db>] ? trace_hardirqs_on+0xb/0xd > > [<c055a4d1>] debug_dma_sync_single_for_device+0x2f/0x39 > > [<f828f722>] dma_sync_single_for_device+0x4a/0x59 [b44] > > [<f828f76f>] ssb_dma_sync_single_for_device+0x3e/0x48 [b44] > > [<f8291d1e>] b44_recycle_rx+0x18c/0x196 [b44] > > [<f8291f9f>] b44_poll+0x277/0x3c0 [b44] > > [<c0687bb9>] net_rx_action+0xa1/0x1ca > > [<c043e30a>] __do_softirq+0x9d/0x154 > > [<c043e413>] do_softirq+0x52/0x7e > > [<c043e56f>] irq_exit+0x49/0x77 > > [<c040b22e>] do_IRQ+0x97/0xad > > [<c0409dac>] 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 <davem@davemloft.net>
-
- Feb 26, 2009
-
-
Michael Buesch authored
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 <pktoss@gmail.com> Signed-off-by:
Michael Buesch <mb@bu3sch.de> Signed-off-by:
David S. Miller <davem@davemloft.net>
-
Michael Buesch authored
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 <pktoss@gmail.com> Signed-off-by:
Michael Buesch <mb@bu3sch.de> Signed-off-by:
David S. Miller <davem@davemloft.net>
-
- Feb 10, 2009
-
-
David S. Miller authored
Signed-off-by:
David S. Miller <davem@davemloft.net>
-
- Jan 21, 2009
-
-
Ben Hutchings authored
Following the removal of the unused struct net_device * parameter from the NAPI functions named *netif_rx_* in commit 908a7a16, they are exactly equivalent to the corresponding *napi_* functions and are therefore redundant. Signed-off-by:
Ben Hutchings <bhutchings@solarflare.com> Acked-by:
Neil Horman <nhorman@tuxdriver.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
-
- Jan 15, 2009
-
-
Eric Dumazet authored
b44 chip has some hardware limitations, that need GFP_DMA bounce buffers in some situations. In order to not deplete DMA zone, we should keep allocated GFP_DMA skb only for driver use. At rx time, we copy such skb to newly allocated skb, reusing existing copybreak infrastructure. On machines with low amount of memory, all skb meet the hardware limitation, so no copy is needed. We detect this situation using a new device flag, set to one if one GFP_DMA skb was ever allocated by b44_alloc_rx_skb(). Previously allocated skb, even outside from DMA zone will then be recycled, to have minimal impact on DMA zone use. Signed-off-by:
Eric Dumazet <dada1@cosmosbay.com> Tested-by:
Ionut Leonte <ionut.leonte@gmail.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
-
- Jan 11, 2009
-
-
Felix Fietkau authored
Broadcom 4400 puts a header of configurable size (apparently needs to be at least 28 bytes) in front of received packets. When handling this, the previous code accidentally added the offset 30 *twice* for the software and once for the hardware, thereby cancelling out the IP alignment effect of the 30 byte padding and wasting an additional 30 bytes of memory per packet. This patch fixes this problem and improves routing throughput by about 30% on MIPS, where unaligned access is expensive. Signed-off-by:
Felix Fietkau <nbd@openwrt.org> Signed-off-by:
David S. Miller <davem@davemloft.net>
-
- Jan 07, 2009
-
-
Stephen Hemminger authored
Signed-off-by:
Stephen Hemminger <shemminger@vyatta.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
-
- Dec 26, 2008
-
-
David S. Miller authored
When we removed the network device argument from several NAPI interfaces in 908a7a16 ("net: Remove unused netdev arg from some NAPI interfaces.") several drivers now started getting unused variable warnings. This fixes those up. Signed-off-by:
David S. Miller <davem@davemloft.net>
-
- Dec 22, 2008
-
-
Neil Horman authored
When the napi api was changed to separate its 1:1 binding to the net_device struct, the netif_rx_[prep|schedule|complete] api failed to remove the now vestigual net_device structure parameter. This patch cleans up that api by properly removing it.. Signed-off-by:
Neil Horman <nhorman@tuxdriver.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
-
- Nov 03, 2008
-
-
David S. Miller authored
The generic packet receive code takes care of setting netdev->last_rx when necessary, for the sake of the bonding ARP monitor. Drivers need not do it any more. Some cases had to be skipped over because the drivers were making use of the ->last_rx value themselves. Signed-off-by:
David S. Miller <davem@davemloft.net>
-
- Oct 27, 2008
-
-
Johannes Berg authored
This converts pretty much everything to print_mac. There were a few things that had conflicts which I have just dropped for now, no harm done. I've built an allyesconfig with this and looked at the files that weren't built very carefully, but it's a huge patch. Signed-off-by:
Johannes Berg <johannes@sipsolutions.net> Signed-off-by:
David S. Miller <davem@davemloft.net>
-
- Jun 27, 2008
-
-
Michael Buesch authored
This is a rewrite of the DMA API for SSB devices. This is needed, because the old (non-existing) "API" made too many bad assumptions on the API of the host-bus (PCI). This introduces an almost complete SSB-DMA-API that maps to the lowlevel bus-API based on the bustype. Signed-off-by:
Michael Buesch <mb@bu3sch.de> Signed-off-by:
John W. Linville <linville@tuxdriver.com>
-
- Apr 15, 2008
-
-
Michael Buesch authored
This fixes DMA on architectures where DMA is nontrivial, like PPC64. We must use the host-device's (PCI) struct device for any DMA operation instead of the SSB device. For this we add a new struct device pointer to the SSB device structure that will always point to the right device for DMAing. Without this patch b43 and b44 drivers won't work on complex-DMA architectures, that for example need dev->archdata for DMA operations. Signed-off-by:
Michael Buesch <mb@bu3sch.de> Signed-off-by:
John W. Linville <linville@tuxdriver.com>
-
- Mar 25, 2008
-
-
Michael Buesch authored
Some ROMs on embedded devices store incorrect values for the PHY address of the ethernet device. It looks like the number is sign-extended. Truncate the value by applying the PHY-address mask to it. The patch was tested on a bcm47xx embedded system (where the bug triggers) and a bcm4400 PCI card. Signed-off-by:
Michael Buesch <mb@bu3sch.de> Signed-off-by:
Jeff Garzik <jeff@garzik.org>
-
- Jan 28, 2008
-
-
Miguel Botón authored
This is just this patch (http://lkml.org/lkml/2007/7/1/51 ) but adapted to the 'b44' ssb driver. Signed-off-by:
Miguel Botón <mboton@gmail.com> Signed-off-by:
John W. Linville <linville@tuxdriver.com>
-
Larry Finger authored
The b44 driver is changed to use the new SPROM data structure. Signed-off-by:
Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by:
John W. Linville <linville@tuxdriver.com>
-
- Oct 10, 2007
-
-
Jeff Garzik authored
These have been superceded by the new ->get_sset_count() hook. Signed-off-by:
Jeff Garzik <jeff@garzik.org> Signed-off-by:
David S. Miller <davem@davemloft.net>
-
Michael Buesch authored
Signed-off-by:
Michael Buesch <mb@bu3sch.de> Signed-off-by:
John W. Linville <linville@tuxdriver.com>
-
Joe Perches authored
This is nicer than the MAC_FMT stuff. Signed-off-by:
Joe Perches <joe@perches.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
-
Ralf Baechle authored
It's been a useless no-op for long enough in 2.6 so I figured it's time to remove it. The number of people that could object because they're maintaining unified 2.4 and 2.6 drivers is probably rather small. [ Handled drivers added by netdev tree and some missed IRDA cases... -DaveM ] Signed-off-by:
Ralf Baechle <ralf@linux-mips.org> Signed-off-by:
Jeff Garzik <jeff@garzik.org> Signed-off-by:
David S. Miller <davem@davemloft.net>
-
Stephen Hemminger authored
Several devices have multiple independant RX queues per net device, and some have a single interrupt doorbell for several queues. In either case, it's easier to support layouts like that if the structure representing the poll is independant from the net device itself. The signature of the ->poll() call back goes from: int foo_poll(struct net_device *dev, int *budget) to int foo_poll(struct napi_struct *napi, int budget) The caller is returned the number of RX packets processed (or the number of "NAPI credits" consumed if you want to get abstract). The callee no longer messes around bumping dev->quota, *budget, etc. because that is all handled in the caller upon return. The napi_struct is to be embedded in the device driver private data structures. Furthermore, it is the driver's responsibility to disable all NAPI instances in it's ->stop() device close handler. Since the napi_struct is privatized into the driver's private data structures, only the driver knows how to get at all of the napi_struct instances it may have per-device. With lots of help and suggestions from Rusty Russell, Roland Dreier, Michael Chan, Jeff Garzik, and Jamal Hadi Salim. Bug fixes from Thomas Graf, Roland Dreier, Peter Zijlstra, Joseph Fannin, Scott Wood, Hans J. Koch, and Michael Chan. [ Ported to current tree and all drivers converted. Integrated Stephen's follow-on kerneldoc additions, and restored poll_list handling to the old style to fix mutual exclusion issues. -DaveM ] Signed-off-by:
Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by:
David S. Miller <davem@davemloft.net>
-
- Jul 31, 2007
-
-
Matthew Wilcox authored
All drivers implement ethtool get_perm_addr the same way -- by calling the generic function. So we can inline the generic function into the caller and avoid going through the drivers. Signed-off-by:
Matthew Wilcox <matthew@wil.cx> Signed-off-by:
David S. Miller <davem@davemloft.net>
-
- Jul 19, 2007
-
-
Yoann Padioleau authored
Transform some calls to kmalloc/memset to a single kzalloc (or kcalloc). Here is a short excerpt of the semantic patch performing this transformation: @@ type T2; expression x; identifier f,fld; expression E; expression E1,E2; expression e1,e2,e3,y; statement S; @@ x = - kmalloc + kzalloc (E1,E2) ... when != \(x->fld=E;\|y=f(...,x,...);\|f(...,x,...);\|x=E;\|while(...) S\|for(e1;e2;e3) S\) - memset((T2)x,0,E1); @@ expression E1,E2,E3; @@ - kzalloc(E1 * E2,E3) + kcalloc(E1,E2,E3) [akpm@linux-foundation.org: get kcalloc args the right way around] Signed-off-by:
Yoann Padioleau <padator@wanadoo.fr> Cc: Richard Henderson <rth@twiddle.net> Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru> Acked-by:
Russell King <rmk@arm.linux.org.uk> Cc: Bryan Wu <bryan.wu@analog.com> Acked-by:
Jiri Slaby <jirislaby@gmail.com> Cc: Dave Airlie <airlied@linux.ie> Acked-by:
Roland Dreier <rolandd@cisco.com> Cc: Jiri Kosina <jkosina@suse.cz> Acked-by:
Dmitry Torokhov <dtor@mail.ru> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Acked-by:
Mauro Carvalho Chehab <mchehab@infradead.org> Acked-by:
Pierre Ossman <drzeus-list@drzeus.cx> Cc: Jeff Garzik <jeff@garzik.org> Cc: "David S. Miller" <davem@davemloft.net> Acked-by:
Greg KH <greg@kroah.com> Cc: James Bottomley <James.Bottomley@steeleye.com> Cc: "Antonino A. Daplas" <adaplas@pol.net> Signed-off-by:
Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
-
- Jul 08, 2007
-
-
Stephen Hemminger authored
Use netdev_alloc_skb rather than dev_alloc_skb when allocating receive buffers. Signed-off-by:
Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by:
Jeff Garzik <jeff@garzik.org>
-
Stephen Hemminger authored
The receive buffer offset is constant in this driver. Signed-off-by:
Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by:
Jeff Garzik <jeff@garzik.org>
-
Stephen Hemminger authored
No need to grap full size MTU buffer for possibly small transmit bounce buffers. Signed-off-by:
Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by:
Jeff Garzik <jeff@garzik.org>
-
Stephen Hemminger authored
Make the PHY and statistic timer run on one second boundary for powersaving. On resume, the driver should check for link up immediately, to get online faster (rather than waiting for the next second). Signed-off-by:
Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by:
Jeff Garzik <jeff@garzik.org>
-
- Apr 25, 2007
-
-
Arnaldo Carvalho de Melo authored
To clearly state the intent of copying from linear sk_buffs, _offset being a overly long variant but interesting for the sake of saving some bytes. Signed-off-by:
Arnaldo Carvalho de Melo <acme@redhat.com>
-
Arnaldo Carvalho de Melo authored
One less thing for drivers writers to worry about. Signed-off-by:
Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
-
- Apr 03, 2007
-
-
Bill Helfinstine authored
If you set the IFF_ALLMULTI flag on a b44 device, or if you join more than B44_MCAST_TABLE_SIZE multicast groups, the device will stop receiving unicast messages. This is because the __b44_set_mac_addr call sets the zeroth CAM entry to the MAC address of the device, and then the loop at line 1722 proceeds to overwrite it unless the value of i is set by the __b44_load_mcast call. However, when IFF_ALLMULTI is set, that call is bypassed, leaving i set to zero. Fixed by starting the loop at 1 to make it skip the CAM entry for the MAC address. Signed-off-by:
Bill Helfinstine <bhelf@flitterfly.whirpon.com> Signed-off-by:
Jeff Garzik <jeff@garzik.org>
-
- Feb 17, 2007
-
-
Gary Zambrano authored
The b44 Enet control disable bit may take longer to clear on some systems, so the loop count is increased with this patch. Functionality is not compromised, but a debug message can be seen when the bit is not cleared within the count value. Thanks to Vasileios Lourdas who reported the problem. Signed-off by: Gary Zambrano <zambrano@broadcom.com> Signed-off-by:
Jeff Garzik <jeff@garzik.org>
-
Gary Zambrano authored
Replaced B44_DMA_MASK with DMA_30BIT_MASK. Signed-off by: Gary Zambrano <zambrano@broadcom.com> Signed-off-by:
Jeff Garzik <jeff@garzik.org>
-
- Feb 06, 2007
-
-
Al Viro authored
Signed-off-by:
Al Viro <viro@zeniv.linux.org.uk> Signed-off-by:
Jeff Garzik <jeff@garzik.org>
-
- Jan 30, 2007
-
-
Al Viro authored
Signed-off-by:
Al Viro <viro@zeniv.linux.org.uk> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
-
Dmitriy Monakhov authored
Some issues in b44_resume(). - Return value of pci_enable_device() was ignored. - If request_irq() has failed we have to just disable device and exit. Signed-off-by:
Dmitriy Monakhov <dmonakhov@openvz.org> Signed-off-by:
Andrew Morton <akpm@osdl.org> Signed-off-by:
Jeff Garzik <jeff@garzik.org>
-