Kernel Log: What's coming in 2.6.30 - Network: New Wi-Fi drivers and other network novelties
The next major Linux version will include new Wi-Fi drivers for chips from Atheros, Intel, Intersil/Prism and Marvell and new drivers for Intel LAN chips. The kernel will also in future make better use of energy saving features in the latest Wi-Fi hardware and Oracle is contributing code for the Reliable Datagram Sockets (RDS) cluster protocol.
As with previous kernel versions, the recent release of the second pre-release version of Linux 2.6.30 saw a good few major patches which had missed the merge window find their way into the main Linux development tree. Further major changes are rare in the second phase of the development cycle, so that the second pre-release version should now contain all the major changes for the next major kernel revision.
The Kernel Log on The H is taking the opportunity to open the "What's coming in 2.6.30" series with a description of the major networking-related changes and will be extended with further instalments over the next few weeks, building up to a detailed description of all the major changes in 2.6.30 in the various functional areas within the Linux kernel, until Linus Torvalds releases Linux kernel 2.6.30 in around seven to ten weeks time.
In version 2.6.30, Linux will for the first time include the ar9170 Wi-Fi driver for Atheros' eponymous 802.11n USB chip set (1, 2, 3, 4, 5, 6). The driver is brand spanking new, but re-uses some of the code from Atheros' otus driver, which was released a few months ago. The latter was added to the staging area in Linux 2.6.29; in the opinion of some Wi-Fi driver developers, however, re-jigging and improving the staging driver to meet kernel hacker quality standards would have taken more work than writing a new driver tailored to the kernel's Wi-Fi stack, resulting in the development of the new driver.
Also making its debut, driven largely by Marvell developers, is the mwl8k driver for Marvell 88w8xxx (Topdog) series PCI and PCIe Wi-Fi chips. Currently, however, it only supports the 88w8687 Wi-Fi chip in STA mode on channels 1 to 11. Also still some way off technical maturity is the new at76c50x-usb driver for Atmel's old at76c503, at76c505 and at76c505a Wi-Fi chips. In the long term it is intended to replace the at76_usb driver, which was incorporated into the kernel's staging area in 2.6.28. As with otus and ar9170, some of the old driver code has found its way into the new driver, which is based on the kernel's Mac80211 Wi-Fi stack.
Clean up work and energy saving functions
To simplify maintenance, the kernel development team has combined parts of the iwl3945 driver with the files for drivers for newer Intel Wi-Fi chips (e.g. 1, 2, 3, 4). The latter have been extended to include support for Intel's 1000, 6000 and 6050 Wi-Fi chips (1, 2, 3, 4).
The kernel hackers have also improved support for runtime energy saving features in modern Wi-Fi hardware in both the Mac80211 Wi-Fi stack and in some drivers (e.g. 1, 2, 3; further commits can be found in the list at the end of this article). There have also been enhancements to the code for suspending to, and resuming from, RAM and disk.
The kernel development team have added support for the Generic Receive Offload (GRO) infrastructure, introduced in 2.6.29, to many LAN drivers. These include the igbvf network driver for Intel's 82576, ethoc for OpenCores' 10/100 Mbit LAN Chip and vxge for Neterion's X3100 series 10GbE PCIe I/O Virtualized Server adapters (e.g. 1, 2, Documentation).
Also new in 2.6.30 is code introduced by one Oracle developer (Documentation) to provide support for the Reliable Datagram Sockets (RDS) server cluster protocol. This was originally developed jointly by Cisco Systems and Oracle, before being transferred to the Open Fabrics Alliance software stack.
- Having offloaded the firmware code for many network drivers into separate files in 2.6.27, .28 and .29, the kernel developers are continuing the process in 2.6.30.
- The new libertas_spi drivers for the Marvell 8686 and the experimental p54spi driver for Prism's stlc4550 and stlc4560 chips, designed for Nokia's N800 and N810 devices, are tailored to Wi-Fi chips with SPI (Serial Peripheral Interface).
- Cfg80211 and nl80211 now include autonomous support for scanning for Wi-Fi networks.
- The packet filter code now offers a userspace interface allowing packets to be time stamped.
- Bluetooth: Kernel hackers have adapted the Bluetooth stack security model for the changes made in Bluetooth 2.1, as a result of which the kernel can now utilise Secure Simple Pairing.
The changes described are just some of the more significant changes recently undertaken by kernel hackers in the networking field. The following list includes numerous further major commits for 2.6.30 in the main Linux development tree; the links lead directly to the Git version control system web interface, where comments on the commits and patches themselves provide wide-ranging information on the less important, but far from insignificant, changes.
Most relevant Git-Pull-Request:
- Infiniband: 1
- 3C359: use request_firmware
- bnx2: Use request_firmware()
- bnx2x: MSI support
- bnx2x: Multi-queue
- bnx2x: New FW
- bnx2x: Register dump
- bnx2x: Supporting BCM8726 PHY
- bnx2x: Supporting new BCM8726 FW
- cxgb3: Replace LRO with GRO
- dsa: add support for the Marvell 88E6095/6095F switch chips
- dsa: add switch chip cascading support
- e1000e: add aer support
- e1000e: add support for 82574 device ID 0x10F6
- e1000e: add support for 82583 device id
- e1000e: Invoke VLAN GRO handler
- e100: add support for 82552 10/100 adapter
- fec: Add support for Freescale MX27
- forcedeth: add new optimization mode
- forcedeth: enable msix to default
- forcedeth: remove msix + napi
- igb: add support for 82576 quad copper adapter
- igb: add support for another dual port 82576 non-security nic
- igb: Add support for enabling VFs to PF driver.
- igb: remove LRO Kconfig option
- igb: Replace LRO with GRO
- ixgbe: Add 82598 support for BX mezzanine devices
- ixgbe: Add 82599 device id's, hook it up into the main driver.
- ixgbe: Add DCB for 82599, remove BCN support
- ixgbe: Add documentation for the driver
- ixgbe: Add hardware specific initialization code for 82599 devices
- ixgbe: add support KX/KX4 device
- ixgbe: Replace LRO with GRO
- mlx4_core: Add device IDs for MT25458 10GigE devices
- mv643xx_eth: implement Large Receive Offload
- mv643xx_eth: make LRO unconditional
- net: Add support for the OpenCores 10/100 Mbps Ethernet MAC.
- niu: Add GRO support.
- phy: add new LAN8710 and LAN8720 device ids to smsc phy driver
- qlge: Add support for device ID 8000.
- qlge: Add support for GRO.
- sfc: Add support for QT2025C PHY
- sfc: Add support for SFN4112F SFP+ reference design
- sfc: Replace LRO with GRO
- tehuti: Use request_firmware()
- tg3: Add GRO support.
- typhoon: Use request_firmware()
- virtio_net: Add a MAC filter table
- virtio_net: Add support for VLAN filtering in the hypervisor
- yam: use request_firmware
- Add mesh point functionality to ath9k
- Add new rt73usb USB ID
- ath5k: Add tx power calibration support
- ath5k: support LEDs on Acer Aspire One netbook
- ath5k: Support LED's on Acer Extensa 5620z
- ath9k: Add support for multiple virtual AP interfaces
- ath9k: Enable Bluetooth Coexistence support
- ath9k: Enable dynamic power save in ath9k.
- ath9k: enable support for AR9100
- b43: Add BCM4307 PCI-ID
- b43: Add LP 2062 radio init
- b43: Add parts of LP-PHY TX power control
- b43: Automatically probe for opensource firmware
- b43: Change schedule for old-fw support removal
- b43: detect N PHY revision/radio
- b43/ssb: Add SPROM8 extraction and LP-PHY detection
- cfg80211: add PM hooks
- cfg80211: add regulatory netlink multicast group
- cfg80211: Allow for strict regulatory settings
- cfg80211: default CONFIG_WIRELESS_OLD_REGULATORY to n
- iwl3945: use rx queue management infrastructure from iwlcore
- iwlwifi: Fix and rework Kconfig file
- iwlwifi: support 11h
- iwlwifi: update 5150 API version to support new firmware
- mac80211: 802.11w - Add BIP (AES-128-CMAC)
- mac80211: 802.11w - Use BIP (AES-128-CMAC)
- mac80211: Add 802.11h CSA support
- mac80211: add beacon filtering support
- mac80211: Add documentation bits for mac80211_rate_control_flags
- mac80211: add suspend/resume callbacks
- mac80211: disable power save when scanning
- mac80211_hwsim: add support for 5 GHz
- mac80211: resume properly, add suspend/resume test
- p54: enable power save support
- p54: initial SoftLED support
- p54: power save management
- rt2x00: Add mesh support
- rt2x00: Add RFKILL support to rt2500usb and rt73usb
- rt2x00: Add various new USB IDs for rt73usb
- rt2x00: Implement Powersaving
- rt2x00: New USB ID for rt73usb
- rt2x00: Release rt2x00 2.3.0
- rt2x00: Replace RFKILL with INPUT
- rt2x00: Update MAINTAINERS entry: new mailinglist
- ssb/b43: add new N PHY device
- wireless: Add channel/frequency conversions to ieee80211.h
- RDS: Add iWARP support
- RDS: Add MAINTAINERS entry
- RDS: Add userspace header
- RDS: Common RDMA transport code
- RDS: Connection handling
- RDS/IB: Infiniband transport
- RDS: Kconfig and Makefile
- RDS: Main header file
- RDS: RDMA support
- RDS: Socket interface
- RDS: Transport code
- gigaset: documentation update
- IPoIB: Document newish features
- RDMA/nes: Add support for new SFP+ PHY
- RDMA/nes: Add wide_ppm_offset parm for switch compatibility
- wimax/i2400m: implement RX reorder support
- wimax/i2400m: support extended data RX protocol (no need to reallocate skbs)
Further background and information about developments in the Linux kernel and its environment can also be found in previous issues of the Kernel Log at The H Open Source:
- Kernel Log: Linux 2.6.30 is taking shape
- Kernel Log: Development of 2.6.30 is under way
- Steady Growth: What's new in Linux 2.6.29
- Kernel Log: Tasmanian devil to be Linux's temporary mascot, new Radeon drivers