Kernel Log: What's new in 2.6.29 - Part 1: Dodgy Wifi drivers and AP support
Scarcely two weeks after the release of Linux 2.6.28, Linus Torvalds has integrated comprehensive changes for kernel version 2.6.29 into the main development branch. As of Friday morning, he had added a whopping 7550 patches that changed 8388 files and included more than 1,061,513 new, changed, or moved, lines of code. Over the weekend, the merge window closed and the second phase of the development cycle, which usually lasts some eight to ten weeks, has started with the release of 2.6.29-RC1. In the second phase only corrections, or small changes that do not threaten the code, will find their way into the main development branch.
A significant part of the changes integrated up to now includes a long list of improvements in the kernel's network support features. Since the network support features are the most significant additions to the kernel, a round-up of these changes kicks off this "What's new in 2.6.29" series. Should any other noteworthy patches for the network subsystem find their way into the main development branch in the coming weeks, we will sum them up in the final instalment of this series – shortly before Torvalds releases 2.6.29. On the occasion of the release, a comprehensive Kernel Log will again sum up the most important changes reported in the course of the "What's new in 2.6.29" series.
Dodgy network drivers
Following the integration in 2.6.28 of Greg Kroah-Hartman's staging kernel branch into the Linux main development branch, the self-styled "maintainers of crap" have added numerous additional drivers, in the kernel's staging area, that do not meet the kernel developers' quality standards. Among the offenders were the rt2860 and rt2870 Wifi drivers for the Ralink Wifi chips found in some of the new netbooks and low-end notebooks. Other new entries in the staging area are the otus driver, released in October, for the Atheros UB81, UB82 and UB83 WLAN chips, as well as the agnx and rtl8187se drivers for the Airgo AGNX00 WLAN chip and the Realtek RTL8187SE WLAN chip. There was also a comprehensive scrub and restructuring done on the code for the wlan-ng framework included in 2.6.28. Developers swapped the at76_usb staging driver, also included in 2.6.28, for a variant based on the mac80211 Linux WLAN stack – actually, the author of the driver had another solution in mind, so it would be no surprise if additional changes are made to the patch, or if it is withdrawn entirely.
Also, the benet network driver for ServerEngines' BladeEngine (EC 3210) 10Gb network adapter is a new addition to the staging area. Whether users of the mainstream distributions and their kernels will see tangible advantages from the inclusion of all these staging drivers depends on which distribution they are using. Administrators of the distributions' kernels activate only some of the staging drivers, or only partially activate them, since they do not meet the normal quality standards of the kernel developers. The drivers' failure to meet these standards is also the reason the kernel is marked with a "TAINT_CRAP" flag when it is loading them. This makes it clear in users' error reports that a "crappy" driver has "besmirched" the kernel and may have been responsible, or partly responsible, for problems. However, in the absence of other drivers, users who simply want to use their hardware may not give a hoot about the driver, as long as it does not cause any serious problems. Network manager/developer Dan Williams made it known in a recent Fedora list post that he does not think much of the staging drivers (1, 2). He said that he would ignore bugs involving staging drivers, "Basically, I'm going to ignore any issues that come in from these drivers because they aren't accepted upstream wireless drivers, despite what gregkh (who's not a wireless developer) tries to make them."
More than a thousand other changes
Network subsystem administrator David S. Miller did not leave it to Greg Kroah-Hartman alone to submit all of the network updates; he collected more than a thousand network-related patches himself and sent them to Torvalds. (1, 2, 3).
New and removed WLAN drivers, AP mode
Support for operation as an access point (AP), which has been in the kernel's Wifi stack for some time, albeit deactivated, has now been activated (documentation, support in nl80211). However, the kernel does not handle the actual AP administration functions itself, but rather leaves them to the current versions of hostapd. The WLAN drivers have to support AP mode as well, although this is not the case with the kernel's drivers for the Intel WLAN modules found in Centrino notebooks and others. Developers are expanding the ath5k and p54 WLAN drivers, to support AP mode (1, 2).
The kernel hackers have extended the Ath9k WLAN driver, which has been AP-compatible for some time, to make it support the AR9285 Atheros WLAN chip (1, 2). Developers have comprehensively revised the rate control API and HT handling for the mac80211 WLAN stack (1, 2, 3). Also, the kernel hackers have added 802.11d support to cfg80211 and mac80211. Parts of the outdated Linux WLAN stack, still needed for the ipw2x00 and hostap drivers, have been shuffled around and hidden, which can cause problems when compiling some WLAN drivers that are dependent on the official Linux kernel.
LAN related changes
The Generic Receive Offload (GRO) Infrastructure has been added for LAN drivers. Other new additions include the smsc911x driver for SMSC 's LAN911x and LAN921x LAN chips, as well as the smsc9420 driver for the 100 Mb LAN9420 chip also made by SMSC. The bnx2 driver is now compatible with the BCM5716S Broadcom chip and the Broadcom PHY module now works with the BCM57780 and BCM50610 chips. There are new improvements for the 5785 chip in the tg3 driver for Marvell LAN chips, as well as support for the 5761S and 57780 chips.
Following the network subsystem and subsystem drivers administrators' initially cool reception of the split in 2.6.27 between drivers and firmware, the kernel developers have now implemented the separation in numerous network drivers -- in 2.6.29 the split has been implemented in the acenic, e100, starfire and tg3 drivers. Developers have removed the eepro100 driver for Intel 100 Mb LAN chips, which was replaced long ago by the e100 driver. The hci_usb Bluetooth driver also had to go, since it was made obsolete by the btusb driver some time ago.
Still more changes
The changes noted so far are the key network related updates in 2.6.29. As always, however, there is a whole host of other less important, but not insignificant updates that the kernel developers have implemented in the Linux kernel source code administration system. See – Part 2 of Whats new in 2.6.29.
- bonding: alternate agg selection policies for 802.3ad
- DCB: Add support for DCB BCN
- ethtool: Add GGRO and SGRO ops
- gro: Add internal interfaces for VLAN
- ipv4: Add GRO infrastructure
- netdev: network device operations infrastructure
- pkt_sched: add DRR scheduler
- tcp: Add GRO support
- vlan: Add GRO interfaces
- bnx2: Restrict WoL support
- e1000e: Add GRO support
- e1000e: enable ECC correction on 82571 silicon
- hso: Add new usb device id's
- igb: Add support for pci-e Advanced Error Reporting
- ixgbe: add device support for 82598AT (copper 10GbE) adapters
- ixgbe: add SFP+ driver support
- ixgbe: Implement PCIe AER support
- ixgbe: this patch adds support for DCB to the kernel and ixgbe driver
- IXP4xx: Add ethtool support to Ethernet driver
- IXP4xx: Add PHYLIB MII ioctl to the Ethernet driver
- IXP4xx: Add PHYLIB support to Ethernet driver
- phy: Add file missed in previous commit
- phy: Add LSI ET1011C PHY driver
- phy: add natsemi PHY driver
- phy: power management support
- net: Add support for the KS8695 ethernet devices
- sfc: Add support for Solarflare 10Xpress SFT9001
- sfc: Implement auto-negotiation
- sfc: Use lm87 and lm90 drivers for board temperature/power monitoring
- smsc95xx: add tx checksum offload support
- Add nl80211 commands to get and set o11s mesh networking parameters
- ath5k/ath9k: correct signal quality
- ath5k: name pci driver "ath5k" too
- ath9k: Add ATH9K_DEBUG configuration option
- ath9k: Adding AR9285 chipset register information
- ath9k: INI update for atheros chipets
- cfg80211: Add regulatory domain intersection capability
- cfg80211: add support for custom firmware regulatory solutions
- hostap: select required crypto bits in Kconfig
- ipw2x00: change default policy for auto-associate
- iwlwifi: 5150 add support for 5150
- mac80211_hwsim: enable Mesh Point operation
- mac80211: Re-enable aggregation
- nl80211: Add TX queue parameter configuration
- nl80211: relicense nl80211.h under the ISC
- p54: enable Mesh Point support
- rfkill: preserve state across suspend
- rt2x00: Implement HW encryption (rt2500usb)
- rt2x00: Optimize configuration handling
- rtl8187: Remove module warning and dependence on CONFIG_EXPERIMENTAL
- wireless: consolidate on a single escape_essid implementation
- wireless: remove struct regdom hinting
- Bluetooth: Add suspend/resume support to btusb driver
- Bluetooth: Allow SCO audio with Asus WL-BTD202 dongle
- irda: convert to internal stats
- RDMA/cma: Add IPv6 support
- WAN: Add IXP4xx HSS HDLC driver
- WAN: new synchronous PPP implementation for generic HDLC
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 heise open:
- Kernel Log: 2.6.29 development kicks off, improved 3D support
- Kernel Log: Higher and Further, The innovations of Linux 2.6.28
- Kernel Log: What's coming in 2.6.28 - Part 9: Fastboot and other remainders
- Kernel Log: What's coming in 2.6.28 - Part 7: architecture support, memory subsystem and virtualisation
- Kernel Log: What's coming in 2.6.28 - Part 6: Changes to the audio drivers
- Kernel Log: New kernel versions, progress with Btrfs and Tux3