Kernel Log - Coming in 2.6.31 - Part 1: New Wi-Fi drivers and other network-related changes
Linux 2.6.31 will be IEEE 802.15.4 capable and will include a new Wi-Fi driver for Intel chips. Developers have also added support for recent Ralink Wi-Fi components and revamped the Rfkill framework. The Wi-fi stack and drivers are now better able to use newer power saving technologies.
With the release of the first pre-release version of Linux 2.6.31, the kernel hackers last week brought the merge window to a close, heralding an end to the adoption of major changes in the main development line of the next kernel version. Kernel hackers generally restrict themselves to introducing minor changes only into the main development tree during the second phase of the development cycle, so as to fix as many existing bugs as possible and avoid introducing new ones.
Kernel Log can now, therefore, launch its "Coming in 2.6.31" series and is dedicating the first article to major changes relating to Linux' network support. Further articles in the Kernel Log series will be published on The H over the next few weeks, building up to a detailed description of all the major changes planned for 2.6.31 for the various functional areas within the Linux kernel, up until Linus Torvalds releases Linux kernel 2.6.31 in late August or early September. For other articles on 2.6.31 and links to the rest of the "Coming in 2.6.31" series, see The H's Kernel Log - 2.6.31 Tracking page.
This time around, there are again many Wi-Fi related changes. The iwmc3200wifi Wi-Fi driver for Intel's Wireless Multicomm 802.11 is one new addition to the kernel. The driver is not yet fully mature, however, as it does not yet support operation as an access point or data transfer using 802.11n. No information on the 802.11agn chip, a 'full MAC' chip expected in a few weeks to months, is currently available from the Intel website. Chips of this type appear, to the operating system, like normal network chips, but are able to deal with many tasks themselves using their built-in firmware – the 'soft MAC' chips commonly found in today's netbooks and laptops leave more of the work to the drivers and Wi-Fi stack.
The kernel developers have added support for data transfer using 802.11n to the basic infrastructure of the rt2x00 family of drivers for driving various Ralink Wi-Fi chips. Changes adding support for Ralink's RT2770, RT2870 and RT3070 USB Wi-Fi chips have also moved into the kernel. This code is, however, far from mature, with the commit comments listing a number of major problems, for which reason users may be better served by the staging drivers for these chips and the vendor's own drivers.
Re-revamped, IEEE 802.15.4
Hot on the heels of the first complete revamp in 2.6.27 comes a new 'rewrite' of the Rfkill framework, which deals with the slide switch or keyboard shortcut for switching Wi-Fi or Bluetooth off and on usually found on laptops. This is aimed at improving the interaction between hardware, kernel and userspace programs such as NetworkManager, and fixing numerous problems in this area.
As the rewrite was largely driven by one of the main Wi-Fi driver developers and further major improvements to the code were made during peer review, it is to be hoped that this may be the last major revision to the Rfkill framework for the time being. Nevertheless, a few teething troubles with the new code are to be expected.
Developed primarily by developers working for Siemens, support for the IEEE 802.15.4 data transfer protocol for Personal Area Networks (WPAN) has also now found its way into the main Linux development tree (e.g. 1, 2, 3, 4, documentation).
There have been numerous changes to the Wi-Fi drivers in the staging area, where drivers which do not yet meet the requisite quality standards are collected for further development. The rtl8192su driver for similarly named Realtek Wi-Fi chips is one new addition, and is joined by the vt6655 driver for the eponymous VIA chip range (e.g. 1, 2).
Developers have also merged parts of the three staging drivers for Ralink's RT2770, RT2870 and RT3070 Wi-Fi chipsets, substantially reducing the amount of code in the staging area. In the long term, however, this work is probably irrelevant, as the standard rt2x00 Ralink driver should eventually also deal with these chips, with the result that the staging drivers may simply be abandoned. Kernel developers have now taken the first steps along this route with their changes to the rt2x00 driver.
Network hardware and packet filtering
One new arrival is the cnic driver for Broadcom's NetXtremeII series Gigabit Ethernet cards. Thanks to a number of changes to the bnx2 driver for Broadcom chips, Broadcom hardware now takes care of much of the iSCSI work itself, thereby reducing CPU load ("iSCSI offload").
Another new arrival is the int51x1 driver for Intellon's USB-connected 14 Mbit/s INT51x1 and INT5200 chips, used by devices for transferring data via the power grid (power line communication/PLC), such as develo's dLAN.
Thanks to passive OS fingerprinting, the Netfilter code can now partially detect the operating system deployed on the system from which network packets originate and can then subject packets to operating system-specific rule sets. The OSF project website includes example usages and links to a fingerprint collection. There is also a short LWN.net article with background information on the technology.
The changes described above are just some of the more significant of those recently undertaken by kernel hackers in the networking field. Among the other changes are:
- A new arrival is a network driver for Texas Instruments' DaVinci Ethernet Media Access Controller.
- The e1000e driver can now talk to Intel's 82577 and 82578 Gigabit LAN chips.
- There have been a number of changes to the e100 driver aimed at improving support for older Intel network chips, which had been worse with the e100 driver than with the recently removed eepro100 driver.
- There have been many improvements and a few new drivers in the Controller Area Network (CAN) subsystem (e.g. 1, 2, 3, 4, 5, 6).
- The kernel now includes the wl12xx driver for Texas Instruments' wl1251 and wl1271 Wi-Fi chips, used primarily in embedded systems.
- CFG80211 and NL80211 now offer an API for configuring ad-hoc networks using IBSS (Independent Basic Service Set).
- Various changes improve support for power saving features offered by newer Wi-Fi chips, in drivers such as iwlwifi and in the MAC80211 Wi-Fi stack (e.g. 1, 2, 3, 4).
- Support for operating as an access point has now been "officially" enabled in the ath5k driver for older Atheros chips.
- Support for an XHFC embedded solution from Speech Design has been added to the mISDN subsystem.
Many less major, but in no way insignificant, changes can be found in the list below. The numerous links in the list below and text above lead directly to the relevant changes in the main Linux development tree web interface. The commit comments and the patches themselves provide extensive further information on changes. A brief overview of the major network-related changes and patches can also be found in the git pull requests from the network subsystem maintainer (1, 2, 3, 4, 5).
- bnx2x: Separated FW from the source.
- cxgb3: Add Aeluros 2020 phy support
- e1000e: enable CRC stripping by default
- e1000e: stop unnecessary polling when using msi-x
- fec: Add FEC support for MX35 processor
- forcedeth: addition of new mcp89 device id
- ixgbe: Add FCoE Storage MAC Address support
- macb: Add support of the netpoll API
- mdio: Add generic MDIO (clause 45) support functions
- net: add Xilinx ll_temac device driver
- netdev: Added KS8842 driver
- NET/r8169: Rework suspend and resume
- net: sh_eth: Add support SH7724
- net: smsc911x: add power management functions
- openfirmware: Add OF phylib support code
- s6gmac: xtensa s6000 on-chip ethernet driver
- sky2: add GRO support
- The patch adds support for the PCI cards: PCIcan and PCIcanx (1, 2 or 4 channel) from Kvaser (http://www.kvaser.com).
- vxge: Enable SRIOV support in the driver.
- Add LED support for AR5BXB6 IBM Thinkpad PCIe adapters
- Add support for CF8381 WiFi card.
- ar9170: add support for 1-stage firmware
- ar9170: support HT receive and channel config
- ath5k: Add Spur filter support on newer chips
- ath5k: add support for Fukato Datacask Jupiter LEDs
- ath5k: Implement antenna control
- ath5k: use regulatory infrastructure
- ath9k: Disable autosleep feature for AR9285 based chipsets.
- atheros: introduce ath module containing common ath5k/ath9k/ar9170 code
- atheros: put atheros wireless drivers into ath/
- b43: Add fw capabilities
- cfg80211: allow adding/deleting stations on mesh
- iwlagn: co-exist with AMT
- iwlagn: disable PS support for iwlagn
- iwlwifi: add Greenfield support for 11n
- iwlwifi: improve scan support
- iwlwifi: support truly passive scanning
- libertas: add support for Marvell SD8688 chip
- mac80211: add hardware restart function
- mac80211: Allow scan to be requested in AP mode
- mac80211: disable powersave if pm_qos asks for low latency
- mac80211: enable PS by default
- mac80211: implement beacon filtering in software
- mac80211: improve scan timing
- mac80211: update injection documentation
- p54: add beacon filtering support
- p54: deactivate broken powersave function (part 2)
- rt2x00: Add new rt2800usb USB ID's
- rt2x00: Add new rt2800usb USB ID's for Sweex
- rt2x00: Add new USB ID for rt2800usb
- rt2x00: Add USB ID for rt2800usb
- rtl8187: Implement TX/RX blink for LED
- zd1211rw: adding 083a:e503 as a ZD1211B device
- acer-wmi: fix rfkill conversion
- ath5k: added cfg80211 based rfkill support
- ath9k: port to cfg80211 rfkill
- b43/legacy: port to cfg80211 rfkill
- Bluetooth: Add native RFKILL soft-switch support for all devices
- cfg80211: add rfkill support
- eeepc-laptop: add rfkill support for the 3G modem in Eee PC 901 Go
- eeepc-laptop: read rfkill soft-blocked state on resume
- eeepc-laptop: rfkill refactoring
- iwlwifi: port to cfg80211 rfkill
- rfkill: add function to query state
- rfkill: create useful userspace interface
- rfkill: document /dev/rfkill
- rfkill: don't restore software blocked state on persistent devices
- rfkill: export persistent attribute in sysfs
- rfkill: improve docs
- rfkill: remove user_claim stuff
- rfkill: rewrite
- gigaset: documentation update
- gigaset: remove UNDOCREQ config option
- isdn: clean up documentation index
- isdn: extend INTERFACE.CAPI document
- ISDN: update Documentation/isdn/00-INDEX
- mISDN: Added layer-1-hold feature
- mISDN: Added PCI ID for new Junghanns.net Single E1 cards.
- mISDN: Add PCI ID for Junghanns 8S card
- mISDN: Add watchdog functionality to hfcmulti driver
- mISDN: Add XHFC support for embedded Speech-Design board to hfcmulti
- cdc_ether: additional PID's to the whitelist
- ethtool: Add port type PORT_OTHER
- fcoe: adds spma mode support
- IPv6: Add 'autoconf' and 'disable_ipv6' module parameters
- irda: new Blackfin on-chip SIR IrDA driver
- irda-usb: suspend/resume support
- net: group address list and its count
- snmp: add missing counters for RFC 4293
- tcp: extend ECN sysctl to allow server-side only ECN
For other articles on 2.6.31 and links to the rest of the "Coming in 2.6.31" series, see The H's Kernel Log - 2.6.31 Tracking page.