aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* dsa: add support for the Marvell 88E6060 switch chipLennert Buytenhek2008-10-08
| | | | | | | | | | | | Add support for the Marvell 88E6060 switch chip. This chip only supports the Header and Trailer tagging formats, and we use it in Trailer mode since that mode is slightly easier to handle than Header mode. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Tested-by: Byron Bradley <byron.bbradley@gmail.com> Tested-by: Tim Ellis <tim.ellis@mac.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* dsa: add support for Trailer tagging formatLennert Buytenhek2008-10-08
| | | | | | | | | | | | This adds support for the Trailer switch tagging format. This is another tagging that doesn't explicitly mark tagged packets with a distinct ethertype, so that we need to add a similar hack in the receive path as for the Original DSA tagging format. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Tested-by: Byron Bradley <byron.bbradley@gmail.com> Tested-by: Tim Ellis <tim.ellis@mac.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* dsa: add support for the Marvell 88E6131 switch chipLennert Buytenhek2008-10-08
| | | | | | | | | | | | | | | | | | | | | | | | | | Add support for the Marvell 88E6131 switch chip. This chip only supports the original (ethertype-less) DSA tagging format. On the 88E6131, there is a PHY Polling Unit (PPU) which has exclusive access to each of the PHYs's MII management registers. If we want to talk to the PHYs from software, we have to disable the PPU and wait for it to complete its current transaction before we can do so, and we need to re-enable the PPU afterwards to make sure that the switch will notice changes in link state and speed on the individual ports as they occur. Since disabling the PPU is rather slow, and since MII management accesses are typically done in bursts, this patch keeps the PPU disabled for 10ms after a software access completes. This makes handling the PPU slightly more complex, but speeds up something like running ethtool on one of the switch slave interfaces from ~300ms to ~30ms on typical hardware. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Tested-by: Nicolas Pitre <nico@marvell.com> Tested-by: Peter van Valderen <linux@ddcrew.com> Tested-by: Dirk Teurlings <dirk@upexia.nl> Signed-off-by: David S. Miller <davem@davemloft.net>
* dsa: add support for original DSA tagging formatLennert Buytenhek2008-10-08
| | | | | | | | | | | | | | | | | | | | | | | | | Most of the DSA switches currently in the field do not support the Ethertype DSA tagging format that one of the previous patches added support for, but only the original DSA tagging format. The original DSA tagging format carries the same information as the Ethertype DSA tagging format, but with the difference that it does not have an ethertype field. In other words, when receiving a packet that is tagged with an original DSA tag, there is no way of telling in eth_type_trans() that this packet is in fact a DSA-tagged packet. This patch adds a hook into eth_type_trans() which is only compiled in if support for a switch chip that doesn't support Ethertype DSA is selected, and which checks whether there is a DSA switch driver instance attached to this network device which uses the old tag format. If so, it sets the protocol field to ETH_P_DSA without looking at the packet, so that the packet ends up in the right place. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Tested-by: Nicolas Pitre <nico@marvell.com> Tested-by: Peter van Valderen <linux@ddcrew.com> Tested-by: Dirk Teurlings <dirk@upexia.nl> Signed-off-by: David S. Miller <davem@davemloft.net>
* net: Distributed Switch Architecture protocol supportLennert Buytenhek2008-10-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Distributed Switch Architecture is a protocol for managing hardware switch chips. It consists of a set of MII management registers and commands to configure the switch, and an ethernet header format to signal which of the ports of the switch a packet was received from or is intended to be sent to. The switches that this driver supports are typically embedded in access points and routers, and a typical setup with a DSA switch looks something like this: +-----------+ +-----------+ | | RGMII | | | +-------+ +------ 1000baseT MDI ("WAN") | | | 6-port +------ 1000baseT MDI ("LAN1") | CPU | | ethernet +------ 1000baseT MDI ("LAN2") | |MIImgmt| switch +------ 1000baseT MDI ("LAN3") | +-------+ w/5 PHYs +------ 1000baseT MDI ("LAN4") | | | | +-----------+ +-----------+ The switch driver presents each port on the switch as a separate network interface to Linux, polls the switch to maintain software link state of those ports, forwards MII management interface accesses to those network interfaces (e.g. as done by ethtool) to the switch, and exposes the switch's hardware statistics counters via the appropriate Linux kernel interfaces. This initial patch supports the MII management interface register layout of the Marvell 88E6123, 88E6161 and 88E6165 switch chips, and supports the "Ethertype DSA" packet tagging format. (There is no officially registered ethertype for the Ethertype DSA packet format, so we just grab a random one. The ethertype to use is programmed into the switch, and the switch driver uses the value of ETH_P_EDSA for this, so this define can be changed at any time in the future if the one we chose is allocated to another protocol or if Ethertype DSA gets its own officially registered ethertype, and everything will continue to work.) Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Tested-by: Nicolas Pitre <nico@marvell.com> Tested-by: Byron Bradley <byron.bbradley@gmail.com> Tested-by: Tim Ellis <tim.ellis@mac.com> Tested-by: Peter van Valderen <linux@ddcrew.com> Tested-by: Dirk Teurlings <dirk@upexia.nl> Signed-off-by: David S. Miller <davem@davemloft.net>
* 8139too: move wmb before TX DMA startAndreas Oberritter2008-10-08
| | | | | | | | | The write barrier should be used before starting a DMA transfer. This fixes a problem, where almost all packets received on another machine had garbled content. Tested with an RTL8100C on a MIPS machine. Signed-off-by: Andreas Oberritter <obi@linuxtv.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* netdev: uniquify the tx_timeout nameArjan van de Ven2008-10-08
| | | | | | | | | | | there's several drivers that have use "tx_timeout" for the .. tx timeout function. All fine with that, they're static, however for doing stats on how often which driver hits the timeout it's a tad unfortunate. The patch below gives the ones I found in the kerneloops.org database unique names. Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* drivers/net/usb/Makefile - shrink logspamDavid Brownell2008-10-08
| | | | | | | | When building with CONFIG_USB_DEBUG, don't create logspam from the USB networking drivers. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: David S. Miller <davem@davemloft.net>
* r8169: WoL fixes, part 2.Bruno Prémont2008-10-08
| | | | | | | | | | | | | | | | | Since recent kernel (2.6.26 or 2.6.27) the PCI wakeup functions are influenced by generic device ability and configuration when enabling PCI-device triggered wake-up. This patch causes WoL setting to enable/disable device's wish to be permitted to wake-up the host when changing WoL options and also during device probing. Without this patch one has write 'enabled' to /sys/bus/pci/devices/0000:02:08.0/power/wakeup Signed-off-by: Bruno Prémont <bonbons@linux-vserver.org> Acked-by: Rafael J. Wysocki <rjw@sisk.pl> Signed-off-by: David S. Miller <davem@davemloft.net>
* r8169: WoL fixes, part 1.Bruno Prémont2008-10-08
| | | | | | | | | | | | When probing the chip and handling it's power management settings also remember wether WoL feature is enabled. Without this patch one has to call ethtool to change WoL settings for this flag to be set and any WoL being enabled on suspend to RAM. Signed-off-by: Bruno Prémont <bonbons@linux-vserver.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* gianfar: Create net device with carrier downTrent Piepho2008-10-08
| | | | | | | | | | | | | | | | | The device's carrier status is controlled via the functions netif_carrier_on() and netif_carrier_off(). These set or clear a bit indicating the carrier (aka lower level link) is down, and if the state changed, they fire off a routing netlink event. Add a call to netif_carrier_off() before register_netdev() so that the newly created device will be set to carrier down. Then when the carrier comes up for the first time, a netlink event will be generated, as the carrier changed from down to up. Otherwise the initial carrier up will appear to be changing the status from up to up, and so no event is generated since that's not a change. Signed-off-by: Trent Piepho <tpiepho@freescale.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* mv643xx_eth: include linux/ip.h to fix buildLennert Buytenhek2008-10-08
| | | | | | | | | | mv643xx_eth uses ip_hdr() (defined in linux/ip.h), but relied on another header file to include the needed header file indirectly. In latest net-next this indirect include chain is gone, so the driver fails to build. Include linux/ip.h explicitly to fix this. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* lib8390: Fix locking in ei_poll (poll controller)Jarek Poplawski2008-10-08
| | | | | | | | | | | | | | | | | | | | | | This lockdep warning: ================================= [ INFO: inconsistent lock state ] 2.6.27-rc7 #3 --------------------------------- inconsistent {in-softirq-W} -> {softirq-on-W} usage. syslogd/2474 [HC0[0]:SC0[0]:HE1:SE1] takes: (_xmit_ETHER#2){-+..}, at: [<c0265562>] netpoll_send_skb+0x132/0x190 ... is caused by unconditional local_irq_disable()/local_irq_enable() in disable_irq_lockdep()/enable_irq_lockdep() used by __ei_poll(). Since netconsole/netpoll always calls dev->poll_controller() with local irqs disabled, disable_irq()/enable_irq() instead is safe and enough (like e.g. in 3c509 or 8139xx drivers). Reported-and-tested-by: Bernard Pidoux F6BVP <f6bvp@free.fr> Signed-off-by: Jarek Poplawski <jarkao2@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* ixgb: fix bug when freeing resourcesBrandeburg, Jesse2008-10-08
| | | | | | | | | | | | | | | It was pointed out by Breno Leitao <leitao@linux.vnet.ibm.com> that ixgb would crash on PPC when an IOMMU was in use, if change_mtu was called. It appears to be a pretty simple issue in the driver that wasn't discovered because most systems don't run with an IOMMU. The driver needs to only unmap buffers that are mapped (duh). CC: Breno Leitao <leitao@linux.vnet.ibm.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* e1000e: release hw semaphore after successfully writing EEPROMArthur Jones2008-10-08
| | | | | | | | | | | | | | Since e1000e has been existance in linux-2.6, we've never released the hardware semaphore after a successful write to the SPI EEPROM. I guess we don't write to SPI EEPROM much -- but those few of us that do appreciate it when we can later read from the EEPROM without having to reboot. Found-by: Nick Van Fossen <Nick.VanFossen@riverbed.com> Signed-off-by: Arthur Jones <ajones@riverbed.com> Reviewed-by: Auke Kok <auke-jan.h.kok@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* net: Add SMSC LAN9500 USB2.0 10/100 ethernet adapter driverSteve Glendinning2008-10-08
| | | | | | | | Attached is a driver for SMSC's LAN9500 USB2.0 10/100 ethernet adapter. Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* phylib: add mdiobus_{read,write}Lennert Buytenhek2008-10-08
| | | | | | | | | Add mdiobus_{read,write} routines to allow direct reading/writing of registers on an mii bus without having to go through the PHY abstraction, and make phy_{read,write} use these primitives. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* phylib: give mdio buses a device tree presenceLennert Buytenhek2008-10-08
| | | | | | | | | | Introduce the mdio_bus class, and give each 'struct mii_bus' its own 'struct device', so that mii_bus objects are represented in the device tree and can be found by querying the device tree. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Acked-by: Andy Fleming <afleming@freescale.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* phylib: move to dynamic allocation of struct mii_busLennert Buytenhek2008-10-08
| | | | | | | | | | This patch introduces mdiobus_alloc() and mdiobus_free(), and makes all mdio bus drivers use these functions to allocate their struct mii_bus'es dynamically. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Signed-off-by: David S. Miller <davem@davemloft.net> Acked-by: Andy Fleming <afleming@freescale.com>
* phylib: rename mii_bus::dev to mii_bus::parentLennert Buytenhek2008-10-08
| | | | | | | | | | | | In preparation of giving mii_bus objects a device tree presence of their own, rename struct mii_bus's ->dev argument to ->parent, since having a 'struct device *dev' that points to our parent device conflicts with introducing a 'struct device dev' representing our own device. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Signed-off-by: David S. Miller <davem@davemloft.net> Acked-by: Andy Fleming <afleming@freescale.com>
* myri10ge: add multiqueue TXBrice Goglin2008-10-08
| | | | | | | | | | Add multiqueue TX support to myri10ge. [ Removed reference to deprecated CONFIG_NETDEVICES_MULTIQUEUE and NETIF_F_MULTI_QUEUE ] Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* atl1: update introductory commentsJay Cliburn2008-10-08
| | | | | | | Update the driver's introductory comments. Signed-off-by: Jay Cliburn <jacliburn@bellsouth.net> Signed-off-by: David S. Miller <davem@davemloft.net>
* atl1: remove EXPERIMENTAL labelJay Cliburn2008-10-08
| | | | | | | | | | Remove the EXPERIMENTAL label from the atl1 driver and change the vendor name to include Attansic's successor, Atheros. We'll leave Attansic in the name since Attansic's PCI ID (1969) is encoded in the PCI config and is what users encounter on their systems. Signed-off-by: Jay Cliburn <jacliburn@bellsouth.net> Signed-off-by: David S. Miller <davem@davemloft.net>
* atl1: remove LLTXJay Cliburn2008-10-08
| | | | | | | | NETIF_F_LLTX is deprecated. Remove private TX locking from the driver and remove the NETIF_F_LLTX feature flag. Signed-off-by: Jay Cliburn <jacliburn@bellsouth.net> Signed-off-by: David S. Miller <davem@davemloft.net>
* atl1: fix transmit timeout bugJay Cliburn2008-10-08
| | | | | | | | | | | See http://marc.info/?l=linux-netdev&m=121931988219314&w=2 Stop the queue and turn off carrier to prevent transmit timeouts when the cable is unplugged/replugged. Signed-off-by: Jay Cliburn <jacliburn@bellsouth.net> Cc: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* skge: Fix skge_set_ring_param() losing error returnWang Chen2008-10-08
| | | | | | | The error return is useful to caller, driver shouldn't miss it. Signed-off-by: Wang Chen <wangchen@cn.fujitsu.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* [10/21] driver/net/skge.c: restart the interface when it's options orXiaoming.Zhang2008-10-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | pauseparam is set On Wednesday 24 September 2008 07:47, Stephen Hemminger wrote: > On Mon, 22 Sep 2008 14:52:17 -0700 > > akpm@linux-foundation.org wrote: > > From: "Xiaoming.Zhang" <Xiaoming.Zhang@resilience.com> > > > > We have an issue of the skge driver: The card won't work when it's > > options are changed. Here's the hardware info: > > > > # lspci -v > > 05:04.0 Ethernet controller: Marvell Technology Group Ltd. 88E8001 > > Gigabit Ethernet Controller (rev 13) Subsystem: Marvell Technology Group > > Ltd. Marvell RDK-8001 Flags: bus master, 66MHz, medium devsel, latency > > 32, IRQ 16 Memory at d042c000 (32-bit, non-prefetchable) [size=16K] I/O > > ports at d000 [size=256] > > [virtual] Expansion ROM at 20400000 [disabled] [size=128K] > > Capabilities: [48] Power Management version 2 > > Capabilities: [50] Vital Product Data > > > > The happens in both Linux-2.6.26(skge version 1.23) and RHEL5.2(skge > > version 1.6). > > > > For example, at first it is set to "speed 1000 duplex full auto-neg on" > > and it works, then run > > > > ethtool -s <ethx> autoneg off > > or ethtool -s <ethx> speed 100 duplex full autoneg off > > > > Then it will stop working. After that if we restart the interface: > > > > ifconifg <ethx> down > > ifconfig <ethx> up > > > > It will work again. And `ethtool -A' has the same issue. > > > > So we think after setting the options, the interface should be restarted. > > > > Signed-off-by: Zhang Xiaoming <xiaoming.zhang@resilience.com> > > Cc: Stephen Hemminger <shemminger@vyatta.com> > > Cc: Jeff Garzik <jeff@garzik.org> > > Signed-off-by: Andrew Morton <akpm@linux-foundation.org> > > --- > > > > drivers/net/skge.c | 12 ++++++++---- > > 1 file changed, 8 insertions(+), 4 deletions(-) > > > > diff -puN > > drivers/net/skge.c~driver-net-skgec-restart-the-interface-when-its-option > >s-or-pauseparam-is-set drivers/net/skge.c --- > > a/drivers/net/skge.c~driver-net-skgec-restart-the-interface-when-its-opti > >ons-or-pauseparam-is-set +++ a/drivers/net/skge.c > > @@ -353,8 +353,10 @@ static int skge_set_settings(struct net_ > > skge->autoneg = ecmd->autoneg; > > skge->advertising = ecmd->advertising; > > > > - if (netif_running(dev)) > > - skge_phy_reset(skge); > > + if (netif_running(dev)) { > > + skge_down(dev); > > + skge_up(dev); > > + } > > > > return (0); > > } > > @@ -595,8 +597,10 @@ static int skge_set_pauseparam(struct ne > > skge->flow_control = FLOW_MODE_NONE; > > } > > > > - if (netif_running(dev)) > > - skge_phy_reset(skge); > > + if (netif_running(dev)) { > > + skge_down(dev); > > + skge_up(dev); > > + } > > > > return 0; > > } > > Since skge_up can fail because of out of memory, this code needs to > check the return value. And then if it fails the "limbo state" needs > to be handled in skge_down. How about like this? It is tested. Thank you. Signed-off-by: Zhang Xiaoming <xiaoming.zhang@resilience.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* [2.6.28,1/1] cxgb3 - fix race in EEHDivy Le Ray2008-10-08
| | | | | | | | A SGE queue set timer might access registers while in EEH recovery, triggering an EEH error loop. Stop all timers early in EEH process. Signed-off-by: Divy Le Ray <divy@chelsio.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* via-velocity: Fix warnings on sparc64.Francois Romieu2008-10-08
| | | | | | As reported by Meelis Roos. Signed-off-by: David S. Miller <davem@davemloft.net>
* net: remove LLTX in atl2 driverKevin Hao2008-10-08
| | | | | | | | | | | | | | When NETIF_F_LLTX is set, the atlx driver will use a private lock. But in recent kernels this implementation seems redundant and can cause problems where AF_PACKET sees things twice. Since NETIF_F_LLTX is marked as deprecated and shouldn't be used in new driver, this patch removes NETIF_F_LLTX and adds a mmiowb before sending packet. I have tested this driver on a Eee PC. It works well. Signed-off-by: Kevin Hao <kexin.hao@windriver.com> Acked-by: Jay Cliburn <jacliburn@bellsouth.net> Signed-off-by: David S. Miller <davem@davemloft.net>
* phylib: Wake PHY state machine on interruptTrent Piepho2008-10-08
| | | | | | | | | This way the phy layer will respond to a change in phy state immediately, instead of up to one second later when the state machine timer runs. Signed-off-by: Trent Piepho <tpiepho@freescale.com> Acked-by: Andy Fleming <afleming@freescale.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* PHY: Avoid unnecessary aneg restartsTrent Piepho2008-10-08
| | | | | | | | | | | | | | | | | | | The PHY's aneg is configured and restarted whenever the link is brought up, e.g. when DHCP is started after the kernel has booted. This can take the link down for several seconds while auto-negotiation is redone. If the advertised features haven't changed, then it shouldn't be necessary to bring down the link and start auto-negotiation over again. genphy_config_advert() is enhanced to return 0 when the advertised features haven't been changed and >0 when they have been. genphy_config_aneg() then uses this information to not call genphy_restart_aneg() if there has been no change. Signed-off-by: Trent Piepho <tpiepho@freescale.com> Acked-by: Andy Fleming <afleming@freescale.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* r8169: read MAC address from EEPROM on initIvan Vecera2008-10-08
| | | | | Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> Signed-off-by: David S. Miller <davem@davemloft.net>
* net: add net poll support for atl2 driverKevin Hao2008-10-08
| | | | | | | | Add netconsole support for Atheros L2 10/100 network device. Signed-off-by: Kevin Hao <kexin.hao@windriver.com> Acked-by: Jay Cliburn <jacliburn@bellsouth.net> Signed-off-by: David S. Miller <davem@davemloft.net>
* ibm_newemac: Fix EMAC soft reset on 460EX/GTVictor Gallardo2008-10-08
| | | | | | | | This patch fixes EMAC soft reset on 460EX/GT when no external clock is available. Signed-off-by: Victor Gallardo <vgallardo@amcc.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* phylib: phy_mii_ioctl() fixesLennert Buytenhek2008-10-08
| | | | | | | | | | | Make the SIOCGMIIPHY case fall through properly (it is supposed to not only return the ID of the default PHY but also to read from that PHY), and make phy_mii_ioctl() return the same error code as generic_mii_ioctl() in case of an unsupported operation. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Acked-by: Andy Fleming <afleming@freescale.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* Merge branch 'master' of ↵David S. Miller2008-10-08
|\ | | | | | | | | | | | | | | | | master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/e1000e/ich8lan.c drivers/net/e1000e/netdev.c
| * Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linusLinus Torvalds2008-10-08
| |\ | | | | | | | | | | | | * 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: [MIPS] Sibyte: Register PIO PATA device only for Swarm and Litte Sur
| | * [MIPS] Sibyte: Register PIO PATA device only for Swarm and Litte SurRalf Baechle2008-10-08
| | | | | | | | | | | | | | | | | | | | | Symbol name spaghetti which is too complicated to cleanup on this stage of the release cycle breaks the build on BCM1480 platforms. Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
| * | Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6Linus Torvalds2008-10-08
| |\ \ | | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: tcp: Fix tcp_hybla zero congestion window growth with small rho and large cwnd. net: Fix netdev_run_todo dead-lock tcp: Fix possible double-ack w/ user dma net: only invoke dev->change_rx_flags when device is UP netrom: Fix sock_orphan() use in nr_release ax25: Quick fix for making sure unaccepted sockets get destroyed. Revert "ax25: Fix std timer socket destroy handling." [Bluetooth] Add reset quirk for A-Link BlueUSB21 dongle [Bluetooth] Add reset quirk for new Targus and Belkin dongles [Bluetooth] Fix double frees on error paths of btusb and bpa10x drivers
| | * tcp: Fix tcp_hybla zero congestion window growth with small rho and large cwnd.Daniele Lacamera2008-10-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Because of rounding, in certain conditions, i.e. when in congestion avoidance state rho is smaller than 1/128 of the current cwnd, TCP Hybla congestion control starves and the cwnd is kept constant forever. This patch forces an increment by one segment after #send_cwnd calls without increments(newreno behavior). Signed-off-by: Daniele Lacamera <root@danielinux.net> Signed-off-by: David S. Miller <davem@davemloft.net>
| | * net: Fix netdev_run_todo dead-lockHerbert Xu2008-10-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Benjamin Thery tracked down a bug that explains many instances of the error unregister_netdevice: waiting for %s to become free. Usage count = %d It turns out that netdev_run_todo can dead-lock with itself if a second instance of it is run in a thread that will then free a reference to the device waited on by the first instance. The problem is really quite silly. We were trying to create parallelism where none was required. As netdev_run_todo always follows a RTNL section, and that todo tasks can only be added with the RTNL held, by definition you should only need to wait for the very ones that you've added and be done with it. There is no need for a second mutex or spinlock. This is exactly what the following patch does. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
| | * Merge branch 'master' of ↵David S. Miller2008-10-07
| | |\ | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6
| | | * [Bluetooth] Add reset quirk for A-Link BlueUSB21 dongleMarcel Holtmann2008-10-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new A-Link Bluetooth dongle is another one based on the BCM2046 chip from Broadcom and it also needs to send HCI_Reset before it becomes fully operational. Without the quirk it will show a lot of I/O errors. Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
| | | * [Bluetooth] Add reset quirk for new Targus and Belkin donglesMarcel Holtmann2008-10-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Targus and Belkin have come out with new Bluetooth 2.1 capable dongles using the latest BCM2046 chip from Broadcom. Both of them are so called HID proxy dongles and they need to send HCI_Reset before they become fully operational. Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
| | | * [Bluetooth] Fix double frees on error paths of btusb and bpa10x driversMarcel Holtmann2008-10-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The transfer buffer of an URB will be automatically freed when using the URB_FREE_BUFFER transfer_flag. So the extra calls to kfree() will cause a double free. Reported-by: Justin Mattock <justinmattock@gmail.com> Signed-off-by: Rabin Vincent <rabin@rab.in> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
| | * | tcp: Fix possible double-ack w/ user dmaAli Saidi2008-10-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | From: Ali Saidi <saidi@engin.umich.edu> When TCP receive copy offload is enabled it's possible that tcp_rcv_established() will cause two acks to be sent for a single packet. In the case that a tcp_dma_early_copy() is successful, copied_early is set to true which causes tcp_cleanup_rbuf() to be called early which can send an ack. Further along in tcp_rcv_established(), __tcp_ack_snd_check() is called and will schedule a delayed ACK. If no packets are processed before the delayed ack timer expires the packet will be acked twice. Signed-off-by: David S. Miller <davem@davemloft.net>
| | * | net: only invoke dev->change_rx_flags when device is UPPatrick McHardy2008-10-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Jesper Dangaard Brouer <hawk@comx.dk> reported a bug when setting a VLAN device down that is in promiscous mode: When the VLAN device is set down, the promiscous count on the real device is decremented by one by vlan_dev_stop(). When removing the promiscous flag from the VLAN device afterwards, the promiscous count on the real device is decremented a second time by the vlan_change_rx_flags() callback. The root cause for this is that the ->change_rx_flags() callback is invoked while the device is down. The synchronization is meant to mirror the behaviour of the ->set_rx_mode callbacks, meaning the ->open function is responsible for doing a full sync on open, the ->close() function is responsible for doing full cleanup on ->stop() and ->change_rx_flags() is meant to do incremental changes while the device is UP. Only invoke ->change_rx_flags() while the device is UP to provide the intended behaviour. Tested-by: Jesper Dangaard Brouer <jdb@comx.dk> Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
| | * | netrom: Fix sock_orphan() use in nr_releaseJarek Poplawski2008-10-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While debugging another bug it was found that NetRom socks are sometimes seen unorphaned in sk_free(). This patch moves sock_orphan() in nr_release() to the beginning (like in ax25, or rose). Reported-and-tested-by: Bernard Pidoux f6bvp <f6bvp@free.fr> Signed-off-by: Jarek Poplawski <jarkao2@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
| | * | ax25: Quick fix for making sure unaccepted sockets get destroyed.David S. Miller2008-10-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since we reverted 30902dc3cb0ea1cfc7ac2b17bcf478ff98420d74 ("ax25: Fix std timer socket destroy handling.") we have to put some kind of fix in to cure the issue whereby unaccepted connections do not get destroyed. The approach used here is from Tihomir Heidelberg - 9a4gl Signed-off-by: David S. Miller <davem@davemloft.net>