Kernel-Log – Was 2.6.37 bringt (3): Netzwerk- und Storage-Hardware
Zahlreiche Änderungen am Netzwerk- und Storage-Code sollen die Arbeitsgeschwindigkeit steigern und die Hardware-Unterstützung verbessern. Neu sind etwa ein PPTP-Stack, verschiedene Treiber für WLAN-Hardware von Atheros, Broadcom und Realtek und Code für Festplatten, die logisch mit 4 KByte großen Sektoren arbeiten.
- Thorsten Leemhuis
In einer Antwort auf die Freigabe-Mail von Linux 2.6.37-rc5 vergagenen Woche rechnete Tony Luck hoch, dass die Freigabe von 2.6.37 noch vor Weihnachten durchaus im Bereich des Möglichen liege, da diesmal alles sehr gut laufe. Torvalds sieht das ähnlich, aber nicht ganz so rosig; und selbst wenn alles glatt laufe, würde vermutlich kaum jemand wollen, dass das Merge Window in den Urlaubstagen rund um den Jahreswechsel offen sei. Er denkt daher, dass er den Kernel 2.6.37 Anfang Januar freigeben wird, sofern nicht noch Probleme auftauchen, die eine weitere Verzögerung erfordern.
Das Kernel-Log setzt derweil die Mini-Serie "Was 2.6.37 bringt" mit einer Beschreibung der Neuerungen rund um Treiber und Infrastruktur für Storage und Netzwerk-Hardware fort. Der erste Teil der Serie hatte sich bereits mit den Änderungen rund um Grafik-Hardware beschäftigt, der zweite mit denen rund um Dateisysteme; folgen werden in den kommenden Wochen noch Artikel zu Architektur-Code, Treibern und der sie umgebenden Infrastruktur.
Netzwerk
Zum Netzwerk-Subsystem stieß eine Kernel-Implementierung des für VPNs genutzten Point-to-Point Tunneling Protocols (PPTP); wie der Commit-Kommentar erläutert, soll sie deutlich schneller arbeiten und die CPU weniger belasten als existierende Userspace-PPTP-Stacks. Nutzen lassen sich die neuen Kernel-Funktionen mit accel-pptp.
Neu dabei ist auch der Treiber bna für 10Gb-Ethernet-Chips 1010 und 1020 von Brocade. Der Treiber bnx2x unterstützt nun auch den Broadcom 57712; zum Kernel stieß ferner ein Netzwerk-Treiber für die LAN-Chips der Tile-Architektur sowie LAN- und CAN-Treiber für Intels Embedded-PCH Topcliff. Der Kernel beherrscht nun auch das CAIF Shared Memory Transport Protocol der U5500-Chips von ST Ericsson (STE) (1, 2).
Die Unterstützung für Bluetooth-Elemente von durch ath9k versorgte WLAN/BT-Kombi-Hardware mit Atheros-Chips wurde ausgebaut. Der Kernel kennt nun auch die Bluetooth-Controller im MacBookAir3,1(2), MacbookPro 6,2 und MacbookPro 7,1. USB Autosuspend im Bluetooth-USB-Treiber btusb ist nun standardmäßig eingeschaltet, was die Leitungsaufnahme senken sollte, wenn es nichts zu tun gibt.
Einige weitere wichtige Änderungen nennt Netzwerk-Subsystem-Betreuer David Miller in seinem Haupt-Git-Pull-Request. Dort lobt er zahlreiche von Eric Dumazet eingebrachte und teilweise bei den kleinen Perlen am Ende des Artikels verlinkte Optimierungen rund um Routing-, Neighbour- und Device Handling. Laut Tests sei das Routing dadurch nun schneller, wenn der Routing Cache deaktiviert ist; letzterer werde aber noch für andere Dinge gebraucht, daher können man ihn nicht einfach entfernen. Einige Hintergründe zu den Optimierungen finden sich auch in den Präsentationsfolien des kürzlich von Miller gehaltenen Vortrags "Linux Networking: The RISE of the congestion window, the FALL of the routing cache, and the LOCALITY of packets".
WLAN
Mit der Kernel-Version 2.6.37 haben die Entwickler den Treiber carl9170 für die Atheros-Chips AR9170 in den Linux-Kernel integriert (u. a. 1, 2, 3, 4, 5). Diese Bausteine betreuten bislang die Treiber ar9170usb und otus. Ursprünglich hatte Ersterer den im Staging-Bereich angesiedelten Otus-Treiber ersetzen sollen, konnte jedoch bei Funktionsumfang, Geschwindigkeit, Stabilität und Qualität nie zu Otus aufschließen. Das soll Carl9170 gelungen sein, daher wurde Otus rausgeschmissen; mittelfristig dürfte ar9170usb das gleiche Schicksal ereilen.
Es gab noch einige andere für Netzwerk-Hardware relevante Änderungen im Staging-Bereich, in dem Treiber und andere eigenständiger Code liegt, der den Qualitätsansprüchen seiner Entwickler oder der Kernel-Hacker nicht genügt. Der neu aufgenommene Staging-Treiber rtl8712 ersetzt den für USB-802.11n-Chips von Realtek geeigneten Treiber rtl8192su; beiden nutzen einen eigenen WLAN-Stack, was einer der Gründe für die Einordnung in Staging-Zweig ist. WLAN-Treiber-Entwickler Larry Finger deutet allerdings an, das Realtek sich neuerdings mehr Mühe bei der Entwicklung von Linux-Treibern gibt.
In diesem Bereich landete auch der von Broadcom selbst entwickelte Open-Source-Treiber brcm80211, der einige 802.11n-WLAN-Bausteine von Broadcom anspricht. Wie schon zur Vorstellung des Treibers im September stehen unter anderem Unterstützung für Stromspartechniken oder Datenverschlüsselung durch den WLAN-Chip auf der Todo-Liste. Das gilt auch für das Funken mit 40 MHz breiten Kanälen – ein optionales Feature des 802.11n-Standards, das jedoch erforderlich ist, um die maximale Brutto-Datenrate von 300 MBit/s zu erreichen.
Unter den "kleinen Perlen" am Ende des Artikels finden sich auch einige Commits, welche den Code zur noch rudimentäre 802.11n-Untersüttzung im Treiber b43 verbessert, der andere WLAN-Bausteine von Broadcom anspricht. Diese Arbeit stammt größtenteils von Rafał Miłecki, der kürzlich in einem Blog-Eintrag beschrieb, dass eine weiter verbesserte Version des B43-Treibers nach einem Jahr Arbeit nun endlich auf dem BCM4328 arbeite. Miłecki erklärte zudem auf Nachfrage, dass sich die vom brcm80211 unterstützten Chips von Aufbau stark von jenen unterscheiden, die b43 anspricht – viele Elemente zum Ansprechen des PHYs seien aber ähnlich, daher glaubt er, dass b43 langfristig weiter verbessert wird und dann auch die derzeit von brcm80211 unterstützten Chips ansprechen wird.
[pagebreak Storage]
Block Layer
Der für Schreibbarrieren zuständigen Code arbeitete nach Ansicht einiger Kernel-Hacker bislang an einigen Stellen übervorsichtig. Eine größere Umstrukturierung soll dem ein Ende machen und verlagert die Verantwortung zum Ordnen der Schreibreihenfolge größtenteils an den Dateisystemcode, was den Datendurchsatz bei bestimmten Aufgaben deutlich steigern soll. Hintergründe zu diesem Thema liefert LWN.net im Artikel "The end of block barriers", eine LKML-Diskussion und die Kommentare zu einigen die Änderung umsetzenden Commits (1, 2, 3, 4)
Über Control Groups (Cgroups) lässt sich nun auch der maximale Durchsatz von Datenträgern limitieren/drosseln; Details liefern einige der Commit-Kommentare (1, 2, 3, 4) und die aktualisierte Dokumentation. Einige Änderungen am CFQ-I/O-Scheduler sollen dessen Performance steigern, wenn ein Fsync ("File Synchronize") bei kleinen Dateien abgearbeitet wird. Der Code zum Einbinden der Root-Partition kann die richtige Partitionen nun mit Hilfe eines UUID (Universally Unique Identifier) finden, wenn man den Kernel mit einem Parameter wie "root=PARTUUID=hex-uuid" dazu anweist.
Storage-Hardware
Das Libata-Subsystem arbeitet nun auch mit Festplatten zusammen, die nicht nur physisch, sondern auch logisch mit Sektoren arbeiten, die nicht 512 Byte groß sind; getestet hat der Entwickler den Code mit einem "Engineering Sample" eines mit 4K-Sektoren arbeitenden Datenträgers von Hitachi GST. Durch die neue Libata Transport Class exportiert der für ATA-Adapter zuständige Kernel-Code fortan weit mehr ATA-Interna via Sysfs. Der Kernel unterstützt nun zudem IDE-R Devices von Intels AMT (Active Management Technology); um verschiedene Probleme zu beseitigen haben die Libata-Entwickler den Code für Link Power Management neu implementiert.
Im SCSI-Subsystem und dem darauf aufbauenden Libata-Code gab es einige größere, erst für die dritte Vorabversion von 2.6.37 integrierte und zuvor auf der LKML diskutierte Änderungen. Sie bauen die Locking-Mechanismen um, was manche Treiber beschleunigen soll (u. a. 1, 2)
Der neue Treiber cxgb4i bietet iSCSI Connection Acceleration bei T4-Produkten von Chelsio. Der Infiniband-Stack und der Treiber mlx4_ib bieten nun Unterstützung für das auch als InfiniBand-over-Ethernet/IBoE (u. a. 1, 2). Die Technik wird eigentlich RDMA over Converged Ethernet (RoCE) genannt, der Betreuer des Infiniband-Codes bevorzugt jedoch InfiniBand-over-Ethernet, wie er in zwei Blog-Einträgen zu den Neuerungen erläutert (1, 2)
[pagebreak Kleine Perlen: Netzwerk]
Die kleinen Perlen: Netzwerk
Viele kleinere, 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 "offiziellen" Kernel-Quellen auf Kernel.org. Der über diese Links angezeigten Commit-Kommentar und der darunter ausgegebene Patch liefern zahlreiche weitere Informationen zur jeweiligen Änderungen.
Vor jedem Link finden sich in eckigen Klammern einige Buchstaben und Zahlen. Ein "C" kennzeichnet Patches mit Änderungen an Kconfig-Dateien, welche die Hilfetexte und Konfigurationsoptionen enthalten, die bei der Kernel-Konfiguration über "make menuconfig", "make xconfig" und ähnliche Werkzeuge angezeigt werden. Ein "D" steht bei Patches, die die Dokumentation verändern, die im Kernel-Zweig unterhalb von Documentation/ liegt. Ein "N" weist Änderungen aus, die eine neue Datei anlegen. Die Zahl vermittelt einen groben Eindruck zur Größe des Patches: eine "1" steht etwa für Änderungen, die inklusive Kommentar zwischen 10 und 20 KByte groß sind, eine "2" für solche, die zwischen 20 und 30 KByte Umfang haben; Änderungen ohne Zahl sind kleiner als 10 KByte, Patches mit einer "9" hingegen 90 KByte oder größer.
LAN
- [
5
] be2net: add multiple RX queue support - [
- [
N9
] bnx2: Update firmware to 6.0.x. - [
N9
] bnx2x: add 6.0.34 fw files - [
- [
9
] bnx2x: Add dual-media changes - [
9
] bnx2x, cnic, bnx2i: use new FW/HSI - [
9
] bnx2x: remove old FW files - [
- [
N
] caif-u5500: CAIF shared memory mailbox interface - [
- [
- [
C
] de2104x: remove experimental status - [
- [
N2
] enic: Add support for multiple hardware receive queues - [
- [
- [
- [
- [
- [
1
] igb: Add support for DH89xxCC - [
C N1
] introduce cx82310_eth: Conexant CX82310-based ADSL router USB ethernet driver - [
- [
- [
N2
] mlx4_en: Added self diagnostics test implementation - [
- [
D
] phylib: make local function static - [
- [
2
] qeth: NAPI support for l2 and l3 discipline - [
- [
1
] qlcnic: add eswitch statistics support - [
- [
- [
- [
- [
- [
- [
- [
- [
- [
- [
- [
- [
1
] r8169: use 50% less ram for RX ring - [
- [
N2
] sfc: Add filter table management - [
N2
] sfc: Add support for SFE4003 board and TXC43128 PHY - [
1
] sfc: Allocate each channel separately, along with its RX and TX queues - [
1
] sfc: Allow changing the DMA ring sizes dynamically via ethtool - [
- [
2
] sfc: Make the dmaq size a run-time setting (rather than compile-time) - [
4
] sfc: Remove support for SFN4111T, SFT9001 and Falcon GMAC - [
- [
- [
1
] stmmac: consolidate and tidy-up the COE support - [
- [
- [
- [
- [
- [
- [
- [
WLAN
- [
- [
1
] ath5k: Allow ath5k to support virtual STA and AP interfaces. - [
- [
- [
- [
- [
- [
- [
- [
7
] ath9k_hw: remove AR9003 2.0 support - [
- [
- [
C
] ath9k: make the driver specific rate control module optional - [
- [
- [
- [
N9
] b43: N-PHY: put radio-specific code in separated file - [
D 1
] cfg80211: add some documentation - [
3
] cfg80211/mac80211: allow per-station GTKs - [
4
] cfg80211/mac80211: extensible frame processing - [
- [
- [
- [
1
] iwlagn: implement advance BT config command - [
- [
1
] iwlwifi: add bt full concurrency support - [
- [
- [
C
] iwlwifi: enable experimental ucode support - [
8
] iwlwifi: initial contextification - [
D
] iwlwifi: schedule to deprecate software scan support - [
- [
1
] mac80211: add p2p device type support - [
- [
D
] mac80211: fix docbook - [
- [
- [
1
] mac80211: support runtime interface type changes - [
- [
- [
C
] p54spi: Kconfig option for config blob - [
- [
- [
- [
- [
- [
1
] rt2x00: Implement TX status reporting for rt2800usb - [
1
] rt2x00: Merge rt2800{pci/usb} radio enabling/disabling code to rt2800lib - [
- [
DN2
] wireless: move documentation books - [
C N1
] wl1251: move to it's own directory - [
- [
- [
- [
- [
- [
- [
- [
- [
- [
- [
C N
] wl12xx: add platform data passing support
Various
- [
- [
- [
- [
- [
C
] caif-u5500: Build config for CAIF shared mem driver - [
N1
] caif-u5500: CAIF shared memory transport protocol - [
D
] Documentation: Update Phonet doc for Pipe controller changes - [
D
] Documentation: Update Phonet doc for Pipe Controller implementation - [
3
] drivers/net: avoid some skb->ip_summed initializations - [
- [
1
] fib_hash: RCU conversion phase 2 - [
1
] fib: RCU conversion of fib_lookup() - [
- [
- [
- [
- [
- [
- [
- [
1
] neigh: RCU conversion of struct neighbour - [
- [
- [
- [
1
] net dst: use a percpu_counter to track entries - [
- [
- [
- [
2
] net neigh: RCU conversion of neigh hash table - [
- [
- [
- [
C N1
] net/sched: add ACT_CSUM action to update packets checksums - [
C
] Phonet: advise against enabling the pipe controller - [
D
] Phonet: cleanup pipe enable socket option - [
1
] Phonet: 'connect' socket implementation for Pipe controller - [
C 1
] Phonet: Implement Pipe Controller to support Nokia Slim Modems - [
[pagebreak Kleine Perlen: Storage]
Die kleinen Perlen: Storage
Block Layer, DRBD, Infiniband, MD ...
- [
- [
- [
- [
- [
2
] drbd: receiving of big packets, for payloads between 64kByte and 4GByte - [
1
] drbd: Removed the BIO_RW_BARRIER support form the receiver/epoch code - [
3
] drbd: Sending of big packets, for payloads from 64KByte to 4GByte - [
- [
- [
D
] update block_device_operations documentation
Barrier Rewrite
- [
- [
- [
- [
1
] dm: implement REQ_FLUSH/FUA support for bio-based dm - [
1
] dm: implement REQ_FLUSH/FUA support for request-based dm - [
- [
- [
- [
- [
- [
- [
2
] md: implment REQ_FLUSH/FUA support - [
- [
- [
- [
- [
Libata
- [
- [
- [
1
] libata: clean up lpm related symbols and sysfs show/store functions - [
- [
- [
MFD, MMC, MTD...
- [
C N2
] mfd: AB8500 debugfs - [
C N
] mfd: AB8500 register access via PRCMU I2C - [
C
] mfd: Add basic tps6586x interrupt support - [
- [
C N1
] mfd: Add MAX8998 interrupts support - [
C N5
] mfd: Add mc13892 support to mc13xxx - [
- [
C N
] mfd: Add VIA VX855 multi-function device support - [
C N
] mfd: Add WM831x SPI support - [
- [
C 3
] mfd: Align ab8500 with the abx500 interface - [
C N1
] mfd: Factor out WM831x I2C I/O from the core driver - [
C
] mfd: LP3974 PMIC support - [
- [
C
] mfd: Switch AB3100 to use MFD cells - [
C
] mfd: Update kconfig for ab8500 core driver - [
- [
- [
C N
] mmc: add new sdhci-pxa driver for Marvell SoCs - [
- [
CD
] mmc: make number of mmcblk minors configurable - [
- [
- [
- [
- [
- [
C N
] mmc: sdhci-pltfm: add -pltfm driver for imx35/51 - [
- [
- [
- [
C N1
] mmc: USB SD Host Controller (USHC) driver - [
- [
C N1
] mtd: add Broadcom BCM63xx image tag partition parser - [
- [
- [
C N3
] mtd: generic FSMC NAND MTD driver - [
- [
- [
- [
1
] mtd: nand: add support for BBT without OOB - [
1
] mtd: nand: add support for reading ONFI parameters from NAND device - [
- [
- [
- [
C
] mtd: OneNAND: S5PC210 OneNAND support
SCSI
- [
2
] scsi: autoconvert trivial BKL users to private mutex - [
N9
] SCSI: bfa: cleanup driver - [
- [
- [
- [
1
] SCSI: libosd: Support for scatter gather write/read commands - [
2
] SCSI: lpfc 8.3.18: Add new WQE support - [
1
] SCSI: lpfc 8.3.18: Add support of received ELS commands - [
- [
- [
D
] SCSI: megaraid_sas: Version and documentation update - [
1
] SCSI: pmcraid: add support for set timestamp command and other fixes - [
- [
- [
- [
- [
- [
- [
- [
- [
- [
D
] SCSI: st: add MTWEOFI to write filemarks without flushing drive buffer
Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Kernel-Logs auf heise open. Neue Ausgaben des Kernel-Logs werden auf den Identi.ca- und Twitter-Konten "@kernellog" erwähnt; die englischen, bei den Kollegen von "The H" erscheinenden Übersetzungen auf den Identi.ca- und Twitter-Konten "@kernellog2". Gelegentlich zwitschert der Autor des Kernel-Logs unabhängig davon über einige Kernel-Log-Themen bei Identi.ca und Twitter als "@kernellogauthor". (thl).
(thl)