Kernel-Log – Was 2.6.33 bringt (1): Netzwerk
Linux 2.6.33 kommt mit neuen und verbesserten Treibern für WLAN-Chips von Intel, Ralink und Realtek. Einige Treiber für alte WLAN-Hardware ziehen in den Staging-Bereich um und fliegen vermutlich bald raus. Neu dabei sind auch einige Treiber für LAN-Chips und einige Verbesserungen für den Netzwerk-Stack.
- Thorsten Leemhuis
In der Nacht von Dienstag auf Mittwoch hat Linus Torvalds mit Linux 2.6.33-rc3 die dritte Vorabversion der Anfang März erwarteten Linux-Version 2.6.33 veröffentlicht. Sie bringt etwas weniger Änderungen als an diesem Zeitpunkt des Entwicklungszyklus üblich – offensichtlich haben es auch einige Kernel-Hacker über die Feiertage etwas ruhiger angehen lassen.
Alle wesentlichen Neuerungen für die nächste Version des Hauptentwicklungslinie von Linux hatten Torvalds und die ihm zuarbeitenden Programmierer aber ohnehin bereits in der ersten, "Merge Window" genannten Phase des Entwicklungszyklus eingepflegt, daher kann das Kernel-Log bereits jetzt einen umfassenden Überblick über die größten Neuerungen von Linux 2.6.33 geben.
Um nicht in der Fülle an Neuerungen zu ersticken, liefern wir den Überblick wie üblich in einer mehrteiligen Artikel-Serie, die sich den verschiedenen Funktionsbereichen des Kernels widmet. Den Anfang der Serie "Was 2.6.33 bringt" machen die Änderungen rund um die Netzwerkunterstützung des Kernels. In den kommenden Wochen bis zum Erscheinen von Linux-Kernel 2.6.33 werden Artikel zu Storage-Hardware, Dateisystemen, Grafik-Unterstützung, Architektur-Code, Treibern und einigen weiteren Funktionsbereichen des Linux-Kernels folgen.
Funken
Der Treiber iwlwifi spricht nun verschiedene, zuvor vom Treiber nicht unterstützte Intel-WLAN-Module der Serien 1000, 5000 und 6000 an (1, 2, 3) und bietet nun auch Unterstützung für die Wimax-Funktion der 6x50-Serie (1, 2). Neu dabei ist der "Intel Wireless MultiCom 3200 top driver (iwmc3200top)" für einen neuen Intel-Funkchip, der GPS, Bluetooth, WLAN und WiMAX unterstützt. Die Stromsparfunktionen des Intel-WLAN-Treiber iwl3945 haben Entwickler aufgrund von Problemen vorerst deaktiviert.
Neu aufgenommen für Linux 2.6.33 haben die Kernel-Entwickler den an diesem Punkt des Entwicklungszyklus noch als "sehr experimentell" und "nur für Entwickler gedacht" eingestuften Treiber rt2800pci, der die bei neueren Net- und Notebooks häufiger zu findenden PCI-WLAN-Chips RT2760, RT2790, RT2860, RT2880, RT2890 und RT3052 von Ralink anspricht. Die ließen sich bislang nur mit einem Treiber des Herstellers nutzen, der sich seit einigen Monaten im Staging-Bereich des Kernel für nicht ausgereifte Treiber befindet. Da manche Distributionen Staging-Treiber aber nicht mit ausliefern und die Treiber aufgrund eines eigenen WLAN-Stack gelegentlich Schwierigkeiten mit Konfigurationstools wie dem NetworkManager machen, waren die Treiber von Ralink zwar besser als nichts, aber auch keine wirklich ordentliche Lösung – das dürfte das allerdings zunächst auch für rt2800pci gelten.
Der neue Treiber stammt maßgeblich aus der Feder der Entwickler des Projekts rt2x00, das sich auch um andere Treiber für Chips von Ralink kümmert. Auch einige andere Treiber des Projekts wurden für 2.6.33 verbessert und sprechen nun mehr USB-WLAN-Hardware an als zuvor – Details finden sich über die Links im Abschnitt "Die kleinen Perlen" am Ende des Artikels. Die neue Unterstützung für den Ralink-WLAN-Chip RT3070 im Treiber rt2800usb gilt allerdings ebenfalls als "noch nicht recht funktionstüchtig" – die Entwickler haben aber bereits einige möglicherweise noch in 2.6.33 einfließenden Patches für die beiden rt2800-Treiber vorbereitet, um die Treiber in einen "brauchbaren Zustand" zu versetzen.
In den Staging-Bereich pflegten die Kernel-Hacker den Treiber rtl8192u für die gleichnamigen Chips von Realtek ein. Zudem sind die WLAN-Treiber arlan, netwave, strip und wavelan in den Bereich für minderwertige Treiber umgezogen, da sie nicht auf den MAC80211-WLAN-Stack des Linux-Kernels aufsetzen und laut den Kernel-Entwicklern vermutlich kaum mehr genutzt werden – deshalb sind sie nach derzeitiger Einschätzung den Portierungsaufwand auf den neuen WLAN-Stack nicht wert. Wenn sich niemand der Treiber annimmt, sollen sie bei Linux 2.6.35 rausfliegen.
LAN, Network Stack und Co.
Einige weitere Änderungen im Netzwerksubsystem:
- Der Treiber sfc unterstützt nun die zur SFC9000-Reihe von gehörenden 10-Gigabit-Ethernet-Controller SFL9021 'Siena' und SFC9020 'Bethpage' von Solarflare (1, 2).
- Neu dabei ist der LAN-Treiber octeon_mgmt für die Octeon-Chips CN57XX, CN56XX, CN55XX, CN54XX, CN52XX und CN6XXX von Cavium Networks.
- Der Treiber bnx2x spricht jetzt auch die Broadcom-Chips BCM8481/BCM84823 und BCM84823 an (1, 2) und bietet zusammen mit dem Treiber cnic erweiterte iSCSI-Unterstützung (1, 2, 3).
- Über den neuen Socket-Syscall recvmmsg lassen sich mehrere Messages mit in einem Rutsch annehmen, was den Verwaltungsaufwand bei der Verarbeitung reduzieren soll (siehe auch Kurzbeschreibung bei LWN.net).
- Die neuen TCP Cookie Transactions sollen eine schnellere, sichere und robustere Initialisierung von TCP-Verbindungen ermöglichen (1, 2, 3, 4, 5, 6, 7).
Die kleinen Perlen
Viele weiteren nicht ganz so wichtige, aber keineswegs unbedeutende Neuerungen finden sich in der folgenden Liste mit den englischen Commit-Überschriften der jeweiligen Änderung. Die Einträge verlinken genau wie viele der Verweise im vorangegangenen Text auf das Webfrontend des von Linus Torvalds gepflegten Git-Zweigs mit den Kernel-Quellen auf Kernel.org. Im Webfrontend liefern normalerweise der Commit-Kommentar und der Patch selbst zahlreiche weitere Informationen zur jeweiligen Änderungen.
LAN
- 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.
WLAN
- 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
Weitere Hintergründe und Informationen rund um die Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Ausgaben des Kernel-Log. (thl) (thl)