Kernel Log: Coming in 2.6.34 (Part 1) - Network Support
by Thorsten Leemhuis
Expected for release in May, Linux kernel version 2.6.34 contains several new network drivers and various advancements designed to improve network performance or increase network configuration flexibility, which will particularly impact virtualisation.
The development of 2.6.34 has been slightly less smooth than usual: First, Torvalds baffled many developers with a shorter merge window, then RC2 was released comparatively late and included more changes than usual; furthermore, both versions contained significant problems, as Torvalds had to admit when releasing RC3. RC4 has now been released after two weeks, longer than the normal weekly release cycle. Torvalds explained that this was due to "hunting a really annoying VM regression".
Despite this bumpy start, all the major changes for the next version in the main development line should have now made it into the Linux source code management system – therefore, the Kernel Log is already in a position to provide a comprehensive overview of the most important advancements of Linux 2.6.34, which is due for release in May. The Kernel Log will provide the usual multi-part series of articles which will cover the kernel's various functional areas step by step. This, the first part in the "Coming in 2.6.34" mini series discusses the changes that affect the kernel's network support; further articles in the coming weeks will deal with the improvements in terms of storage hardware, file systems, graphics support, architecture code, drivers and various other functional areas.
LAN, WLAN, Network Stack, etc.
Among the 1,300 changes in the main Git-Pull request submitted by network subsystem maintainer David Miller are various new Ethernet drivers. The ixgbevf driver (for example 1, 2/documentation), uses SR-IOV to communicate with guest systems via the virtual networking features offered by Intel's 82599 family of 10 Gigabit Ethernet controllers – for this purpose, the ixgbe driver, which supports these chips on the host system, was extended to include SR-IOV (1, 2, 3). The qlcnic driver has been added for Qlogic's QLE8240 and QLE8242 1G/10G CNA chips; other new drivers include greth for 10/100/1G Ethernet chips in the Gaisler family by Aeroflex, ksz884x for Micrel KSZ8841 and KSZ8842 Ethernet chips as well as the smsc75xx driver suitable for USB Gigabit NICs with LAN75xx chips by SMSC. After releasing RC3, the kernel developers also incorporated the cxgb4 driver (1, 2) for Chelsio T4 Gigabit Ethernet and 10 Gigabit Ethernet chips. The atl1c driver has been extended to support the AR8152 and AR8152 Ethernet chips by Atheros.
Further additions to the kernel include vhost-net, which is designed to increase performance in virtualisation solutions such as KVM or Lguest – vhost-net is a server for the Virtio framework outlined in the commit comment which operates in the kernel and is designed to reduce overheads when guest systems use virtual Virtio network hardware to exchange data with operating systems that run on different hardware. The new macvtap driver offers more flexible and faster network data exchange facilities between the guest systems on a host as well as various other options. The developers are preparing numerous other improvements for this driver and the Virtio server so that in the long term these components' performance and range of features will be further increased.
Various changes to the Wi-Fi stack were introduced to improve the utilisation of the power-saving mechanisms offered by modern Wi-Fi chips. Numerous patches modify the Wi-Fi drivers for the RT2800 generation and newer generations of Ralink chip-sets – however, these young drivers still don't run smoothly on many chips, which probably means that in the coming months the Ralink drivers from the staging area will remain the preferred option for many users.
The kernel's bridge code now supports IGMP snooping. The netfilter code now understands "conntrack zones" and offers TCP connection tracking for SIP. The network stack now includes private VLAN proxy arp support as described in RFC3069. Jan Kiszka introduced about 30 further changes which considerably update the CAPI code in the kernel's ISDN subsystem and reportedly eliminate numerous problems.
Minor gems
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 changes. Like many of the references in the text above, the links point to 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.
LAN
- axnet_cs: add new id
- be2net: Add link test to list of ethtool self tests.
- e1000e: provide MAC-family-specific function to set LAN ID
- e1000e: use alternate MAC address on ESB2 if available
- e1000: Report link status in ethtool when interface is down
- enic: feature add: add ethtool -c/C support
- fec: Add LAN8700 phy support
- fs_enet: Add support for MPC512x to fs_enet driver
- igb: add support for wake-on-link
- igb: Report link status in ethtool when interface is down
- igb: support for VF configuration tools
- ipg: Remove device claimed by dl2k from pci id table
- ixgbe: Add support for the new ethtool n-tuple programming interface
- lib/vsprintf.c: Add IPV4 options %pI4[hnbl] for host, network, big and little endian
- macvlan: allow multiple driver backends
- macvtap: add GSO/csum offload support
- MCS7830 USB-Ether: add Rx error support
- net: add ColdFire support to the smc91x driver
- net: Add netdev ops for SR-IOV configuration
- NET: Add Qlogic ethernet driver for CNA devices
- net: Delete isa-skeleton net driver
- net: emaclite: adding MDIO and phy lib support
- net: Kconfig change for KSZ884X driver
- net/macvtap: add vhost support
- pcnet_cs: add new id
- phy: SMSC device Energy Detect power-down mode
- qlge: Add basic firmware dump.
- qlge: Add module param to force firmware core dump.
- sfc: Enable autonegotiated flow-control by default if supported
- stmmac: add documentation for the driver.
- tg3: Abort phy init for 5717 serdes devices
- tg3: Add 5717 serdes phy ID
- tg3: Add 57765 phy ID and enable devices.
- tg3: Make 57791 and 57795 10/100 only
- tg3: Turn off multiple DMA reads for 5717
- via-velocity: Enable scatter/gather IO by default virtio: disable multiport console support.
WLAN
- Add a pci-id to the mwl8k driver
- Add Station and AdHoc mode support to libertas_tf
- Add USB ID for Thomson SpeedTouch 120g to p54usb id table
- ar9170: add support for NEC WL300NU-G USB dongle
- ar9170usb: add Sphairon Homelink 1202 USB ID
- ath5k: adding LED support for AR5BXB63 cards
- ath9k: add support for 802.11n bonded out AR2427
- ath9k: implement coverage class support
- b43: add new SSB's core id for BCM4328
- b43: Allow PIO mode to be selected at module load
- b43: Declare at least one real firmware file using MODULE_FIRMWARE.
- b43: fall back gracefully to PIO mode after fatal DMA errors
- b43legacy: Declare all possible ucodeX.fw files
- cfg80211: add regulatory hint disconnect support
- cfg80211: add remain-on-channel command
- cfg80211/mac80211: allow registering for and sending action frames
- cfg80211: process the max power on a country IE
- iwlwifi: Add chain_noise support for 6050
- iwlwifi: add continuous uCode event log capability
- iwlwifi: cleanup spectrum measurement command support
- iwlwifi: module parameter to enable/disable bt co-exist
- iwlwifi: optimize power saving
- mac80211: add U-APSD client support
- mac80211: allow disabling 40MHz on 2.4GHz
- mac80211/cfg80211: add station events
- mac80211: enable spatial multiplexing powersave
- mac80211: generalise work handling
- mac80211_hwsim: add fake hw scan handler
- mac80211: improve powersave documentation
- mac80211: introduce flush operation
- mac80211: let cfg80211 manage auth state
- mac80211: support remain-on-channel command
- MAINTAINERS: update mwl8k maintenance status
- mwl8k: add 2.4GHz channels 12, 13 and 14
- mwl8k: add 5 GHz band channels and rates
- mwl8k: add another 88w8366 PCI ID
- mwl8k: add support for 88w8363 in STA mode
- mwl8k: bail out if there is no AP firmware image support for this chip
- mwl8k: basic AP interface support
- mwl8k: update MODULE_FIRMWARE tags
- nl80211: Add new WIPHY attribute COVERAGE_CLASS
- nl80211: add power save commands
- p54usb: Add the USB ID for Belkin (Accton) FD7050E ver 1010ec
- p54usb: Add usbid for Corega CG-WLUSB2GT.
- ps3_gelic_wireless: Remove PS3 gelic legacy wpa support
- rt2x00: Add USB ID for CEIVA adapter to rt73usb
- rt2x00: Disable powersaving by default in rt2500usb.
- rt2x00: Introduce SoC interface type.
- rt2x00: Reorganize RT chipset setting for PCI/SOC devices.
- rt2x00: rework RT chipset and revision determination for PCI an SOC devices.
- rt2x00: rt2800 - Make rt30xx and rt35xx chipsets configurable.
- rt73usb: add WLI-U2-H54HP
- wireless: remove CONFIG_WIRELESS_OLD_REGULATORY
- wireless: support internal statically compiled regulatory database
- wl1251: add U-APSD support
- wl1251: enable WMM
- wl1251: implement WMM
- wl1271: Add rudimentary ad-hoc support
- wl1271: add testmode support
- wl1271: Implement chipset boot retry
Network-Stack, Netfilter, etc.
- Bluetooth: Add controller types for BR/EDR and 802.11 AMP
- Bluetooth: Convert debug files to actually use debugfs instead of sysfs
- bridge: Add hash elasticity/max sysfs entries
- bridge: Add multicast count/interval sysfs entries
- bridge: Add multicast data-path hooks
- bridge: Add multicast forwarding functions
- bridge: Add multicast_router sysfs entries
- bridge: Add multicast_snooping sysfs toggle
- bridge: Add multicast start/stop hooks
- can: add support for CAN interface cards based on the PLX90xx PCI bridge
- can: mscan-mpc5xxx: add support for the MPC512x processor
- can/netlink: add CAN_CTRLMODE_ONE_SHOT
- can: Proper ctrlmode handling for CAN devices
- can:ti_hecc: Add pm hook-up
- CAPI: Remove experimental tag from middleware feature
- CAPI: Rework locking of controller data structures
- CAPI: Sanitize capifs API
- CAPI: Schedule capifs for removal
- dccp: allow probing of CCID-array length
- doc: document IPv6 parameters
- ethtool: Introduce n-tuple filter programming support
- gigaset: small documentation improvement
- igb: Add support for 82576 ET2 Quad Port Server Adapter
- ipv4: allow warming up the ARP cache with request type gratuitous ARP
- IPVS: Allow boot time change of hash size
- ipvs: SCTP Trasport Loadbalancing Support
- ISDN: Add PCI ID for HFC-2S/4S Beronet Card PCIe
- isdn: fix a few Kconfig imperfections
- llc: optimize multicast delivery
- llc: use a device based hash table to speed up multicast delivery
- net/9p: Add sysfs mount_tag file for virtio 9P device
- net: add limit for socket backlog
- net: add scheduler sync hint to tcp_prequeue().
- netfilter: ctnetlink: add zone support
- netfilter: ctnetlink: netns support
- netfilter: ctnetlink: support selective event delivery
- netfilter: ebtables: add CONFIG_COMPAT support
- netfilter: nf_conntrack_sip: add T.38 FAX support
- netfilter: nf_conntrack: support conntrack templates
- netfilter: nf_nat_sip: add TCP support
- netfilter: nf_nat: support mangling a single TCP packet multiple times
- netfilter: nfnetlink: netns support
- netfilter: xtables: add CT target
- netfilter: xtables: optimize call flow around xt_ematch_foreach
- netfilter: xtables: optimize call flow around xt_entry_foreach
- netfilter: xt_connlimit: netns support
- netfilter: xt_hashlimit: netns support
- netfilter: xt_recent: netns support
- net/irda: sh_sir: Add SuperH IrDA driver
- net: TCP thin dupack
- net: TCP thin linear timeouts
- net: TCP thin-stream detection
- packet: Add GSO/csum offload support.
- packet: Kill CONFIG_PACKET_MMAP.
- powerpc/mpc5xxx: add OF platform binding doc for FSL MSCAN devices
- qeth: HiperSockets Network Traffic Analyzer
- rfkill: Add support for KEY_RFKILL
- timestamping: fix example build tun: socket filter support
For other articles on 2.6.34 and links to the rest of the "Coming in 2.6.34" series, see The H's Kernel Log - 2.6.34 Tracking page. Older Kernel Logs can be found in the archives or by using the search function at The H Open Source. New editions of Kernel Logs are also mentioned on Identi.ca and Twitter via "@kernellog2". The Kernel Log author also posts updates about various topics on Identi.ca and Twitter via "@kernellogauthor".
(thl)