Thanks for your detailed answer! It helps to clear things.

To verify I understood well:

Regarding sotmac and the wirelss stack :
I saw in README of the rewrite dirver, that
"The driver is been developed against the wireless-2.6
tree maintained by John Linville, which includes the softmac

I looke at 2.6.16.rc3 kernel:
 Is this tree , which includes a subfolder called "softmac"
  has a softmac implementation which is based (or is a partial part of)
Devicescape  Linux-based 802.11 stack implementation ? (http://devicescape.com/)
(I don't know Devicescape implementation).
Or is it softmac layer in the kernel is totatlly something different ?


On 4/25/06, Daniel Drake <[EMAIL PROTECTED]> wrote:
John Que wrote:
> Hello,
> I understand that the rewrite of the
> driver ((http://zd1211.ath.cx/wiki/DriverRewrite).
> ) 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 - http://zd1211.ath.cx/
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/zd1211-devs

Reply via email to