Kernel Log: Coming in 2.6.33 (Part 1) - Networking
by Thorsten Leemhuis
Linux 2.6.33 will have new and improved drivers for Wi-Fi chips by Intel, Ralink and Realtek. Several drivers for old Wi-Fi hardware have been moved to the staging area and will probably soon be discarded. New additions include various LAN chip drivers and several improvements to the network stack.
On Tuesday night, Linus Torvalds released Linux 2.6.33-rc3, the third release candidate of Linux version 2.6.33. The forthcoming version is expected to be finalised in early March and this release candidate offers a smaller number of changes than is usual at this point in the development cycle – it seems that some of the kernel hackers took some time off over Christmas.
However, most of the important new features of the next version in the Linux main development line were already integrated by Torvalds and his fellow programmers in the "merge window" phase at the start of the development cycle. As it is uncommon for newly integrated items to be discarded again in the current second phase, the Kernel Log can already provide a comprehensive overview of the most important new features of Linux 2.6.33.
To avoid being swamped by the wealth of advancements, the Kernel Log will provide the overview in its usual multi-part series of articles that together discuss the kernel's various functional areas. The first part of the "Coming in 2.6.33" series deals with the most important changes to the kernel's network support. Articles discussing the Linux kernel's storage hardware, file systems, graphics support, architecture code, drivers and other functional areas will follow over the next few weeks preceding the release of version 2.6.33 of the Linux kernel.
The iwlwifi driver can now address various, previously unsupported Intel series 1000, 5000 and 6000 Wi-Fi modules (1, 2, 3) and now also supports the WiMAX function of the 6x50 series (1, 2). A new addition is the "Intel Wireless MultiCom 3200 top driver (iwmc3200top)" for a new Intel wireless chip that supports GPS, Bluetooth, Wi-Fi and WiMAX. The power saving features of the iwl3945 Intel Wi-Fi driver have been temporarily disabled due to some problems.
The kernel developers have also added the rt2800pci driver, which is still considered "very experimental", "intended for developers" and "non-functional" at this point in the development cycle and addresses Ralink's RT2760, RT2790, RT2860, RT2880, RT2890 and RT3052 PCI Wi-Fi chips frequently found in recent netbooks and notebooks. These chips could previously only be used with a driver developed by the vendor which was in the kernel's staging area for a few months. The staging area is the kernel area for drivers of insufficient quality or maturity. However, some distributions don't include the staging drivers and the drivers, with their separate Wi-Fi stack, occasionally have problems when interacting with configuration tools, such as the Network Manager. So the Ralink drivers, although not a proper solution, were better than nothing. Initially it's likely the situation will be the same for the rt2800pci driver.
The new driver was mainly developed by the rt2x00 project which also maintains other drivers for Ralink chips. Several more of the project's drivers were improved for 2.6.33 and now support a greater variety of USB Wi-Fi hardware than ever – more details can be found via the links mentioned under "Minor gems" at the end of this article. The new support of Ralink's RT3070 Wi-Fi chip in the rt2800usb driver is also classified as "non-functional at the moment" – but the developers have already prepared patches for the two rt2800 drivers which could still make it into 2.6.33 and get the drivers into a "usable state".
The kernel hackers have incorporated the rtl8192u driver for Realtek's chips of the same name into the staging area. Furthermore, the arlan, netwave, strip and wavelan drivers have been moved to the area for low-quality drivers because they are based on the Linux kernel's MAC80211 Wi-Fi stack and, according to the kernel developers, are now hardly used by anyone – therefore, they are currently not considered worth the effort of porting them to the new Wi-Fi stack. If no one comes forward to maintain these drivers they are destined to be removed in Linux 2.6.35.
LAN, network stack etc
Further changes in the network subsystem:
- The sfc driver now supports the SFL9021 'Siena' and SFC9020 'Bethpage' 10 Gigabit ethernet controllers from Solarflare's SFC9000 series (1, 2).
- A new addition is the octeon_mgmt LAN driver for CN57XX, CN56XX, CN55XX, CN54XX, CN52XX and CN6XXX Octeon chips by Cavium Networks.
- The bnx2x driver now also supports Broadcom's BCM8481/BCM84823 and BCM84823 chips (1, 2) and offers extended iSCSI support when combined with the cnic driver (1, 2, 3).
- The new recvmmsg socket syscall allows multiple messages to be received, which reduces processing workloads (see also the short description at LWN.net).
- The new TCP Cookie Transactions are designed to make initialising TCP connections faster, more secure and more robust (1, 2, 3, 4, 5, 6, 7).
The first Git-Pull request by network subsystem maintainer David S. Miller alone caused more than 1800 changes to be integrated into Linux 2.6.33 – this means that about a fifth of all the commits incorporated during the merge window of 2.6.33 have been handled by Miller, who also maintains the old IDE subsystem and the Sparc code. While the majority of changes modify C source code, some of the changes adapt the firmware that comes with the kernel and considerably increase the total number of new, deleted or moved lines of source code – this is very evident with two patches of about 1 MB each which update the firmware of the bnx2x driver (1, 2).
Many further minor, but by no means insignificant, changes can be found in the list below, which contains the commit headers referring to the respective change. Like many of the references in the text above, the links point to the relevant commit in the web front end of the Git branch for the kernel sources maintained by Linus Torvalds at kernel.org. The commit comments and the patches themselves provide extensive further information on the respective changes.
- atl1e: Allow TX checksum offload and TSO to be disabled and reenabled
- be2net: Add support for ethtool self test
- be2net: Add support for next generation of BladeEngine device.
- be2net: Add the new PCI IDs to PCI_DEVICE_TABLE.
- be2net: Support for WoL using magic packet after suspend.
- bnx2x: Handle Rx and Tx together in NAPI
- DM9000: Wake on LAN support
- e1000e: add missing tests for 82583 in ethtool functions
- e1000e: correct ICH/PCH PHY operations function pointers
- e1000e: enable new 82567V-3 device
- ethtool: Add Direct Attach support to connector port reporting
- fsl_pq_mdio: Add Suport for etsec2.0 devices.
- gianfar: Add Multiple group Support
- gianfar: Add Multiple Queue Support
- gianfar: Add per queue structure support
- gianfar: Add support for hibernation
- gianfar: Introduce logical group support.
- igb: Add full support for 82580 devices
- igb: add new data structure for handling interrupts and NAPI
- igb: add single vector msi-x testing to interrupt test
- igb: add support for 82576NS SerDes adapter
- igb: add support for 82580 MAC
- igb: add support for seperate tx-usecs setting in ethtool
- igb: add support for the 82580 phy
- igb: make use of the uta to allow for promiscous mode filter
- igb: remove microwire support from igb
- ixgbe: Add support for 82599 alternative WWNN/WWPN prefix
- ixgbe: add support for 82599 based Express Module X520-P2
- ixgbe: add support for 82599 KR device 0x1517
- ixgbe: Add support for netdev_ops.ndo_fcoe_get_wwn to 82599
- mwl8k: add support for the 88w8366
- NET: Add driver for Octeon MDIO buses.
- net: add Runtime PM to the sh_eth driver
- net/appletalk: push down BKL into a atalk_dgram_ops
- net: enable smsc911x on MIPS
- net/ipx: push down BKL into a ipx_dgram_ops
- NET/KS8695: add support NAPI for Rx
- net/ps3: Add support for gelic link negotiation
- netxen: add access to on chip memory for tools
- netxen: add PCI IDs for new chip
- netxen: add sysfs entries for diag tools
- pasemi_mac: ethtool set settings support
- qlge: Add CBFC pause frame counters to ethtool stats.
- qlge: Add ethtool blink function.
- qlge: Add ethtool get/set pause parameter.
- qlge: Add ethtool register dump function.
- qlge: Add ethtool self-test.
- qlge: Add ethtool wake on LAN function.
- sfc: Add firmware protocol definitions (MCDI)
- sfc: Add power-management and wake-on-LAN support
- sfc: Extend MTD driver for use with new NICs
- sfc: Move shared NIC code from falcon.c to new source file nic.c
- sfc: Separate shared NIC code from Falcon-specific and rename accordingly
- sfc: Update hardware definitions for Siena
- sfc: Update version, copyright dates, authors
- sky2: 88E8059 support
- sky2: add register definitions for new chips
- sky2: add SK-9E21M device id
- tc35815: Enable NAPI
- tg3: Add 50610M phy ID for 5785
- tg3: Add 5717 phy ID
- tg3: Add 57765 asic rev
- tg3: Add AC131 power down support
- tg3 / broadcom: Add APD support for GPHYs
- tg3: Fix DIDs, Enable 5717 support
- tg3: Improve 5785 PCIe performance
- TI DaVinci EMAC: Add suspend/resume capability
- via-velocity: Add ethtool interrupt coalescing support
- via-velocity: Implement NAPI support
- via-velocity: Re-enable transmit scatter-gather support
- vxge: Removed accessing non-supported registers.
- ar9170: Add support for D-Link DWA 160 A2
- ath5k: add LED support for Acer Aspire One AO751h/AO531h
- ath5k: add support for Dell Vostro A860 LED
- ath5k: enable Power-Save Polls by setting the association ID
- ath5k: use noise calibration from madwifi hal
- ath9k_common: add new module to share 802.11n driver helpers
- ath9k_hw: add AR9271 srev and device ID to allow hw to support ar9271
- ath9k_hw: print device ID if not supported
- ath9k: move hw code to its own module
- atheros: add common debug printing
- b43: LP-PHY: Begin implementing calibration and software RFKILL support
- cfg80211: add firmware and hardware version to wiphy
- cfg80211: Add PMKSA wext compatibility handler
- gianfar: Basic Support for programming hash rules
- i2400m: minimal ethtool support
- iwlwifi: add aggregation tables to the rate scaling algorithm
- iwlwifi: add channel switch support to 5000 series and up
- iwlwifi: add LED mode to support different LED behavior
- iwlwifi: add module firmware info for 1000 series
- iwlwifi: add SM PS support for 6x50 series
- iwlwifi: Chain Noise Calibration for 6000 series
- iwlwifi: device tracing
- iwlwifi: drop lib80211 dependency
- iwlwifi: LED cleanup
- iwlwifi: provide firmware version
- iwlwifi: reliable entering of critical temperature state
- iwlwifi: rework for static power save
- iwlwifi: support idle for 6000 series hw
- iwlwifi: update lowest API version support for 6x00 and 6x50 series
- iwmc3200wifi: 802.11n Tx aggregation support
- iwmc3200wifi: add BGN sdio device id
- iwmc3200wifi: Add wifi-wimax coexistence mode as a module parameter
- iwmc3200wifi: CT kill support
- iwmc3200wifi: Enable wimax core through module parameter
- iwmc3200wifi: WPS support
- KVM: x86 emulator: Add 'push/pop sreg' instructions
- libertas: Add auto deep sleep support for SD8385/SD8686/SD8688
- libertas: first stab at cfg80211 support
- libipw: initiate cfg80211 API conversion (v2)
- mac80211: add MAC80211_VERBOSE_MHWMP_DEBUG
- mac80211: async station powersave handling
- MAINTAINERS: Add iwmc3200wifi entry
- mwl8k: add support for enabling hardware sniffer mode
- mwl8k: handle loading AP firmware images
- mwl8k: implement AP firmware antenna configuration
- nl80211: PMKSA caching support
- rt2x00: Add rt2x00soc bus module
- rt2x00: Add USB ID for Linksys WUSB 600N rev 2.
- rt2x00: Disable powersaving for rt61pci and rt2800pci.
- rt2x00: more ids to rt2800usb.c
- rt2x00: Only initialize HT on rt2800 devices that support it.
- wimax: allow specifying debug levels as command line option
- wimax/i2400m: implement passive mode as a module option
- wimax/i2400m: Implement pre/post reset support in the USB driver
- wimax/i2400m: rework bootrom initialization to be more flexible
- wimax/i2400m: support extended firmware format
- wimax/iwmc3200: add new sdio device ID to support iwmc3200 2.5GHz sku
- wireless: implement basic ethtool support for cfg80211 devices
- wireless: remove remaining qual code
- wireless: remove WLAN_80211 and WLAN_PRE80211 from Kconfig
- wl1251: Add connection monitoring configuration
- wl1251: add support for PG11 chips.
- wl1251: enable power save
- wl1271: Added 5 GHz parameters for wl1273
- wl1271: Added 5 GHz support to join and rx
- wl1271: Added support to scan on 5 GHz band
- wl1271: Add retry implementation for PSM entries
- wl1271: Enable ELP
- wl1271: Enable smart reflex
- wl1271: Support for IPv4 ARP filtering
Various others network drivers, network stack
- Bluetooth: Add L2CAP option for max transmit value
- Bluetooth: Add RFCOMM option to use L2CAP ERTM mode
- Bluetooth: Enable auto sleep mode for btmrvl driver
- Bluetooth: Implement raw output support for HIDP layer
- bond: Add support for multiple network namespaces
- bonding: introduce primary_reselect option
- bridge: Allow enable/disable UFO on bridge device via ethtool
- can: add the driver for Analog Devices Blackfin on-chip CAN controllers
- can: add TI CAN (HECC) driver
- can: Driver for the Microchip MCP251x SPI CAN controllers
- ethtool: Add reset operation
- ethtool: Remove support for obsolete string query operations
- fakehard: claim all 2.4 Ghz channels as supported
- gigaset: add Kernel CAPI interface (v3)
- gigaset: allow building without I4L
- gigaset: documentation amendments
- gigaset: prepare for CAPI implementation
- ieee802154: add LIST_PHY command support
- ieee802154: add support for creation/removal of logic interfaces
- inet: rename some inet_sock fields
- ip: update the description of rp_filter in ip-sysctl.txt
- ipv4 05/05: add sysctl to accept packets with local source addresses
- ipv4: fib table algorithm performance improvement
- ipv4: udp: Optimise multicast reception
- ipv4: udp: optimize unicast RX path
- ipv6 sit: 6rd (IPv6 Rapid Deployment) Support.
- ipv6: udp: Optimise multicast reception
- ipv6: udp: optimize unicast RX path
- net: Add sk_mark route lookup support for IPv4 listening sockets
- net: Add support for batching network namespace cleanups
- net/can: add driver for mscan family and mpc52xx_mscan
- net/can/mpc52xx_can: improve properties and their description
- net: export device speed and duplex via sysfs
- netfilter: nf_ct_tcp: improve out-of-sync situation in TCP tracking
- netfilter: xtables: document minimal required version
- net: Generalize socket rx gap / receive queue overflow cmsg
- net/irda: push BKL into proto_ops
- net: Remove BKL from tun
- net: Support specifying the network namespace upon device creation.
- net/x25: push BKL usage into x25_proto
- sctp: remove deprecated SCTP_GET_*_OLD stuffs
- udp: dynamically size hash tables at boot time
- usbnet: Set device type for wlan and wwan devices
- usbnet: Use wwan%d interface name for mobile broadband devices
- vlan: Add support to netdev_ops.ndo_fcoe_get_wwn for VLAN device
- vlan: support "loose binding" to the underlying network device
For other articles on 2.6.33 and links to the rest of the "Coming in 2.6.33 " series, see The H's Kernel Log - 2.6.33 Tracking page.