John Que wrote:
I understand that the rewrite of the
driver ((
) will probably use softmac.

We already do use softmac.

As I understand, softmac is an extension to
the currently Linux's ieee80211 stack,
Can somebody tell in 3-4 sentences what is the
benefit of using softmac ?

Taking a step back, do you understand the benefit of using the ieee80211 stack in a driver?

The ZyDAS driver does *not* use ieee80211. Instead, they wrote several thousand lines of code to handle IEEE 802.11 packet construction, IEEE 802.11 fragmentation and reassembly, parsing of beacon frames and probe responses (scan results), ...

So, by using the ieee80211 stack in our driver, we saved ourselves from many hours of work, and we can share a large amount of code with other drivers, resulting in fewer overall bugs, and a smaller kernel overall.

Back to the question - softmac. ieee80211 was a worthwhile addition to the kernel but not good enough to benefit *all* wireless hardware. This is because some devices do most operations in in hardware ("fullmac") and some do almost everything in software ("softmac"). ieee80211 was the solution for fullmac devices, but drivers for softmac devices still had a hell of a lot of generic code to write.

For example, Intel's ipw2x00 hardware is fullmac - if you want to associate, the driver sends a simpistic command to the device ("I want to associated to essid <blah>") and the device sends a simple status report back ("I am now associated to <blah>").

The ZD1211 is a softmac device though - the hardware does very little. If you want to associate, the driver has to generate an authentication request frame, and then wait for an authentication response frame. You then have to generate an association request frame, and wait for an association response frame. Scanning also requires manual generation of frames and parsing of response frames.

ZyDAS wrote another several thousand lines of code to implement all this, but we saved ourselves much grief by using the (new) generic implementation of these functions, called "softmac". When we had the basic transmit and receive code working, implementing scanning took only *2* lines of code at that point (simply hooking into softmac's scan code). The benefits of using softmac are the same as the benefits for using ieee80211.

There isn't a great deal of functional difference between ZyDAS's driver and zd1211rw (although admittedly there is a fair amount of unimplemented functionality in ours), yet the ZyDAS driver is about 30,000 lines of code longer than zd1211rw. Go figure :)


Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
Zd1211-devs mailing list -

Reply via email to