aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2008-10-08cxgb3: simplify port type struct and usageDivy Le Ray6-87/+94
Second step in overall phy layer reorganization. Clean up the port_type_info structure. Support coextistence of clause 22 and clause 45 MDIO devices. Select the type of MDIO transaction on a per transaction basis. Signed-off-by: Divy Le Ray <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08cxgb3: allow for PHY reset statusDivy Le Ray4-27/+37
First step towards overall PHY layering re-organization. Allow a status return when a PHY is reset. Signed-off-by: Divy Le Ray <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08cxgb3: Allocate multiqueues at init timeDivy Le Ray3-37/+145
Allocate a queue set per core, up to the maximum of available qsets. Share the queue sets on multi port adapters. Rename MSI-X interrupt vectors ethX-N, N being the queue set number. Signed-off-by: Divy Le Ray <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08cxgb3: reset the adapter on fatal errorDivy Le Ray5-60/+119
when a fatal error occurs, bring ports down, reset the chip, and bring ports back up. Factorize code used for both EEH and fatal error recovery. Fix timer usage when bringing up/resetting sge queue sets. Signed-off-by: Divy Le Ray <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08dsa: Need to select PHYLIB.David S. Miller1-0/+1
Signed-off-by: David S. Miller <[email protected]>
2008-10-08dsa: add support for the Marvell 88E6060 switch chipLennert Buytenhek3-0/+295
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 <[email protected]> Tested-by: Byron Bradley <[email protected]> Tested-by: Tim Ellis <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08dsa: add support for Trailer tagging formatLennert Buytenhek10-0/+164
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 <[email protected]> Tested-by: Byron Bradley <[email protected]> Tested-by: Tim Ellis <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08dsa: add support for the Marvell 88E6131 switch chipLennert Buytenhek5-0/+555
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 <[email protected]> Tested-by: Nicolas Pitre <[email protected]> Tested-by: Peter van Valderen <[email protected]> Tested-by: Dirk Teurlings <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08dsa: add support for original DSA tagging formatLennert Buytenhek11-7/+258
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 <[email protected]> Tested-by: Nicolas Pitre <[email protected]> Tested-by: Peter van Valderen <[email protected]> Tested-by: Dirk Teurlings <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08net: Distributed Switch Architecture protocol supportLennert Buytenhek14-0/+1931
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 <[email protected]> Tested-by: Nicolas Pitre <[email protected]> Tested-by: Byron Bradley <[email protected]> Tested-by: Tim Ellis <[email protected]> Tested-by: Peter van Valderen <[email protected]> Tested-by: Dirk Teurlings <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-088139too: move wmb before TX DMA startAndreas Oberritter1-1/+6
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 <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08netdev: uniquify the tx_timeout nameArjan van de Ven3-10/+10
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 <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08drivers/net/usb/Makefile - shrink logspamDavid Brownell1-3/+0
When building with CONFIG_USB_DEBUG, don't create logspam from the USB networking drivers. Signed-off-by: David Brownell <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08r8169: WoL fixes, part 2.Bruno Prémont1-0/+2
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 <[email protected]> Acked-by: Rafael J. Wysocki <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08r8169: WoL fixes, part 1.Bruno Prémont1-0/+4
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 <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08gianfar: Create net device with carrier downTrent Piepho1-0/+3
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 <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08mv643xx_eth: include linux/ip.h to fix buildLennert Buytenhek1-0/+1
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 <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08lib8390: Fix locking in ei_poll (poll controller)Jarek Poplawski1-2/+2
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 <[email protected]> Signed-off-by: Jarek Poplawski <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08ixgb: fix bug when freeing resourcesBrandeburg, Jesse1-3/+5
It was pointed out by Breno Leitao <[email protected]> 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 <[email protected]> Signed-off-by: Jesse Brandeburg <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08e1000e: release hw semaphore after successfully writing EEPROMArthur Jones1-0/+1
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 <[email protected]> Signed-off-by: Arthur Jones <[email protected]> Reviewed-by: Auke Kok <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08net: Add SMSC LAN9500 USB2.0 10/100 ethernet adapter driverSteve Glendinning5-0/+1493
Attached is a driver for SMSC's LAN9500 USB2.0 10/100 ethernet adapter. Signed-off-by: Steve Glendinning <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08phylib: add mdiobus_{read,write}Lennert Buytenhek3-57/+87
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 <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08phylib: give mdio buses a device tree presenceLennert Buytenhek2-4/+79
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 <[email protected]> Acked-by: Andy Fleming <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08phylib: move to dynamic allocation of struct mii_busLennert Buytenhek23-185/+279
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 <[email protected]> Signed-off-by: David S. Miller <[email protected]> Acked-by: Andy Fleming <[email protected]>
2008-10-08phylib: rename mii_bus::dev to mii_bus::parentLennert Buytenhek17-17/+17
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 <[email protected]> Signed-off-by: David S. Miller <[email protected]> Acked-by: Andy Fleming <[email protected]>
2008-10-08myri10ge: add multiqueue TXBrice Goglin1-34/+118
Add multiqueue TX support to myri10ge. [ Removed reference to deprecated CONFIG_NETDEVICES_MULTIQUEUE and NETIF_F_MULTI_QUEUE ] Signed-off-by: Brice Goglin <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08atl1: update introductory commentsJay Cliburn1-7/+3
Update the driver's introductory comments. Signed-off-by: Jay Cliburn <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08atl1: remove EXPERIMENTAL labelJay Cliburn1-3/+4
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 <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08atl1: remove LLTXJay Cliburn1-17/+1
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 <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08atl1: fix transmit timeout bugJay Cliburn2-2/+3
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 <[email protected]> Cc: Alexey Dobriyan <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08skge: Fix skge_set_ring_param() losing error returnWang Chen1-2/+2
The error return is useful to caller, driver shouldn't miss it. Signed-off-by: Wang Chen <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08[10/21] driver/net/skge.c: restart the interface when it's options orXiaoming.Zhang1-4/+18
pauseparam is set On Wednesday 24 September 2008 07:47, Stephen Hemminger wrote: > On Mon, 22 Sep 2008 14:52:17 -0700 > > [email protected] wrote: > > From: "Xiaoming.Zhang" <[email protected]> > > > > 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 <[email protected]> > > Cc: Stephen Hemminger <[email protected]> > > Cc: Jeff Garzik <[email protected]> > > Signed-off-by: Andrew Morton <[email protected]> > > --- > > > > 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 <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08[2.6.28,1/1] cxgb3 - fix race in EEHDivy Le Ray3-3/+24
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 <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08via-velocity: Fix warnings on sparc64.Francois Romieu1-2/+2
As reported by Meelis Roos. Signed-off-by: David S. Miller <[email protected]>
2008-10-08net: remove LLTX in atl2 driverKevin Hao2-24/+1
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 <[email protected]> Acked-by: Jay Cliburn <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08phylib: Wake PHY state machine on interruptTrent Piepho1-0/+6
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 <[email protected]> Acked-by: Andy Fleming <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08PHY: Avoid unnecessary aneg restartsTrent Piepho1-19/+30
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 <[email protected]> Acked-by: Andy Fleming <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08r8169: read MAC address from EEPROM on initIvan Vecera1-1/+72
Reviewed-by: Ilpo Järvinen <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08net: add net poll support for atl2 driverKevin Hao1-0/+12
Add netconsole support for Atheros L2 10/100 network device. Signed-off-by: Kevin Hao <[email protected]> Acked-by: Jay Cliburn <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08ibm_newemac: Fix EMAC soft reset on 460EX/GTVictor Gallardo3-0/+27
This patch fixes EMAC soft reset on 460EX/GT when no external clock is available. Signed-off-by: Victor Gallardo <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08phylib: phy_mii_ioctl() fixesLennert Buytenhek1-2/+3
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 <[email protected]> Acked-by: Andy Fleming <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-09Merge branch 'linus' into core/rcuIngo Molnar148-1085/+1831
2008-10-08Merge branch 'master' of ↵David S. Miller139-1041/+1732
master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/e1000e/ich8lan.c drivers/net/e1000e/netdev.c
2008-10-08RDMA/nes: Correct error_module bit maskChien Tung1-1/+1
error_module is 5 bits wide not 4. The corresponding crit_error_count array is correct with 32 entries. Signed-off-by: Chien Tung <[email protected]> -- drivers/infiniband/hw/nes/nes_hw.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) Signed-off-by: Roland Dreier <[email protected]>
2008-10-08ipvs: Remove stray file left over from ipvs moveSven Wegener1-261/+0
Commit cb7f6a7b716e801097b564dec3ccb58d330aef56 ("IPVS: Move IPVS to net/netfilter/ipvs") has left a stray file in the old location of ipvs. Signed-off-by: Sven Wegener <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08tcpv6: fix option space offsets with md5Ilpo Järvinen1-1/+1
More breakage :-), part of timestamps just were previously overwritten. Signed-off-by: Ilpo Järvinen <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08Merge branch 'lvs-next-2.6' of ↵David S. Miller29-5/+272
git://git.kernel.org/pub/scm/linux/kernel/git/horms/lvs-2.6 Conflicts: net/netfilter/Kconfig
2008-10-08sctp: shrink sctp_tsnmap some more by removing gabs arrayVlad Yasevich3-20/+15
The gabs array in the sctp_tsnmap structure is only used in one place, sctp_make_sack(). As such, carrying the array around in the sctp_tsnmap and thus directly in the sctp_association is rather pointless since most of the time it's just taking up space. Now, let sctp_make_sack create and populate it and then throw it away when it's done. Signed-off-by: Vlad Yasevich <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08sctp: Rework the tsn map to use generic bitmap.Vlad Yasevich8-224/+178
The tsn map currently use is 4K large and is stuck inside the sctp_association structure making memory references REALLY expensive. What we really need is at most 4K worth of bits so the biggest map we would have is 512 bytes. Also, the map is only really usefull when we have gaps to store and report. As such, starting with minimal map of say 32 TSNs (bits) should be enough for normal low-loss operations. We can grow the map by some multiple of 32 along with some extra room any time we receive the TSN which would put us outside of the map boundry. As we close gaps, we can shift the map to rebase it on the latest TSN we've seen. This saves 4088 bytes per association just in the map alone along savings from the now unnecessary structure members. Signed-off-by: Vlad Yasevich <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-10-08inet: cleanup of local_port_rangeEric Dumazet3-20/+23
I noticed sysctl_local_port_range[] and its associated seqlock sysctl_local_port_range_lock were on separate cache lines. Moreover, sysctl_local_port_range[] was close to unrelated variables, highly modified, leading to cache misses. Moving these two variables in a structure can help data locality and moving this structure to read_mostly section helps sharing of this data among cpus. Cleanup of extern declarations (moved in include file where they belong), and use of inet_get_local_port_range() accessor instead of direct access to ports values. Signed-off-by: Eric Dumazet <[email protected]> Signed-off-by: David S. Miller <[email protected]>