Practical Technology

for practical people.

Linux 2.6.17 kernel: better WiFi, faster performance


This past Saturday, June 17th, saw the arrival of the latest stable version of the Linux kernel: Linux 2.6.17.

While this new kernel doesn’t boast any earth-shaking additions, it does include numerous improvements to Linux for both users and developers.

For many laptop users, the most important news is that Linux now includes built-in driver support for the Broadcom 43xx based wireless card family. This WiFi chip family is found in many laptops such as many models from Acer, Apple (those using Airport Extreme), Compaq, and Dell.

This driver support depends upon another new enhancement to the kernel — the addition of a Softmac layer in the wireless stack. Softmac is a software MAC (machine access control) layer that works with Linux’s built-in 802.11 layer. This provides a great deal of WiFi protocol management features for chips that, unlike the Intel ProSet Wireless chip family, don’t handle these details in hardware.

Softmac is not the only open-source project that takes this approach. MADWiFi, for example, uses one to support Atheros WiFi chips. Since Softmac is now part of the kernel, however, it can be used by developers to more easily support other WiFi chips. There have already been efforts at supporting the Prism54 and the Ralink rt2* 802.11 chip families using Softmac.

Linux’s wireless improvements also include support for Cisco’s LEAP (Lightweight Extensible Authentication Protocol). LEAP is used in Cisco’s and other vendors’ wireless devices, including clients, switches, access points, and RADIUS servers that use 802.1X authentication. In turn, this enables network administrators to easily set up dynamic per-user, per-session WEP (Wired Equivalent Privacy) secured sessions. The bottom line is that it will be much easier to use Linux systems in LEAP-secured networks.

For users, what all this means is that they’ll be much more likely to be able to use their laptops’ WiFi without any fuss or muss.

The new Linux kernel also includes automatic support for SMP (Symmetric Multiprocessing) computers on the i32 and 64 families. With this, Linux distributions will detect how many processors, or conceivably processor cores, are running on the system at boot time. The distribution will then automatically adjust to make the most of the existing architecture.

While at first, this might not appear that useful for many users, with the increasing use of virtual CPUs in virtualization systems like Xen, it might become very helpful in high-powered servers.

Another new development that should be especially useful in servers is the arrival of the new kernel system call, “splice.”

Regarding what splice does, Linus Torvalds wrote:

“So in a very real (but abstract) sense, “splice()” is nothing but read()/write() to a kernel buffer.”

Now, to get slightly less abstract, there are two important practical details.” First, “the “buffer” implementation is nothing but a regular old-fashioned UNIX pipe.”

This actually makes sense on so many levels, but mostly simply because that is exactly what a UNIX pipe has always been: it’s a buffer in kernel space. That’s what a pipe has always been. So the splice usage isn’t conceptually anything new for pipes – it’s just exposing that old buffer in a new way.

The second part of the deal is that the buffer is actually implemented as a set of reference-counted pointers, which means that you can copy them around without actually physically copy memory.”

For those who don’t speak programmer, what this means is that with splice, and other new related calls such as tee and vmsplice, your computer will perform faster. That’s because it will no longer be wasting time copying redundant data from one chunk of memory to another or to a disk.

To cite an example from the new kernel’s changelog, “For example, you could forward data that comes from a MPEG-4 hardware encoder, and tee() it to duplicate the stream, and write one of the streams to disk, and the other one to a socket for a real-time network broadcast. Again, all without actually physically copying it around in memory.”

Speaking of performance boosts, the new kernel has also given the popular Ext3 file system a kick in the pants by supporting mapping multiple block file input/output to disk. In the past, Ext3 could only map one block at a time. This lead to a real speed bump, especially when it came to handling sequential I/O workloads.

Early tests have shown that users could see as much as 50 percent speed increases in some disk writing operations.

There are, of course, many other changes in the new kernel. Not the least of which, is that Linux is now supported on Sun’s new Niagara chip architecture. To sum it all up, though, better WiFi support and performance are the hallmarks of this latest kernel.

For a detailed list of all the changes, see the latest Linux changelog.

A version of this story first appeared in Linux-Watch.

Leave a Reply