netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Where Linux 802.11x support needs work
@ 2005-01-25 21:47 Dan Williams
  0 siblings, 0 replies; 9+ messages in thread
From: Dan Williams @ 2005-01-25 21:47 UTC (permalink / raw)
  To: linux-kernel, netdev; +Cc: jgarzik

[-- Attachment #1: Type: TEXT/PLAIN, Size: 7224 bytes --]

Hi,

This list of stuff that should get fixed in Linux wireless grew out of my 
attempt to put a GUI on top of Linux wireless with NetworkManager 
(http://people.redhat.com/dcbw/NetworkManager).  This isn't, of course, a 
demand or anything, and I've been personally slowly fixing stuff up as I 
come to it (orinoco merge, fixing linux-wlan-ng, small kernel wireless 
driver patches), but I don't think anyone has posted a comprehensive list 
of where Linux wireless currently falls a bit short.

I think the biggest issue here is that the Wireless Extensions API has 
stagnated a bit, and driver writers have gone off and done their own thing 
(for example, WPA support) because the WEAPI hasn't shown leadership in 
this area.  That's fixable, and at this point doesn't seem to be a large 
amount of work since the main offender here is only WPA.

Second, there are, for historical reasons most likely, areas where the 
WEAPI has multiple methods of encoding data to/from user space.  For 
example, WE Quality values and WE Frequency/Channel values.  Quality is 
either signed or unsigned 8-bit number, which (I believe) is either a raw 
dBm/rssi value or a percentage value, respectively.  Frequency uses 
exponent & mantissa notation, OR a channel # stuffed into the 
exponent/mantissa structure.  Things like that.

Comments appreciated, and hopefully this may spark some wider effort to 
get a few things fixed.

So without further ado, here's the list:
-------------------------------------------------------------------------

o  Quality values vary wildly or are absent
   1) atmel doesn't return any quality data from scanned APs
   2) ipw_2100 doesn't return _any_ quality data (as of v1.02)
   3) Different quality methods for almost every driver
      - Prism54 does a quality as a percentage
      - airo mixes use of absolute and relative values in dBm
      - Average and max quality levels for almost all drivers are
         artificial and don't come from the the card in any way

Work Item: normalize quality values.  Wireless extensions supports two
different types of quality data, either percentage or dBm.  PICK ONE.  I 
would recommend reporting only a Percentage value to user space with the 
SIOCGIWSTATS call, and having separate ioctl() calls for getting 
specific dBm/noise values if user-space applications _and_ the driver 
supports it.  We cannot have user-space applications guessing which of 3 
different quality algorithms the driver is reporting.

o  Frequency values vary wildly from iw_get_range
   1) prism54 uses completely different exponent values than airo
   2) airo, atmel, orinoco are the same

Work Item: Normalize frequency values between wireless cards.  Use 
actual frequencies in MHz rather than using Exponent & Mantissa format 
as now.  Force user-space applications to convert channels->frequencies, 
based on what frequencies the driver says it supports. Or, fix drivers 
to report Frequency<->Channel pairs when they report their supported 
frequencies, but the point again is to PICK ONE and make all drivers do 
that.  Remove the guessing-game from user-space and pick one API for 
drivers to use.

o  airo/prism54 seem to have problems with ip6 and cause panic
   1) Some drivers don't NULL out their data after they are done with
      it, causing kernel panics later on down the line.  See Red Hat
      bugzilla #135432 for details, Dave Jones has a patch for the airo
      driver that seems to work better, which is in Red Hat 2.6.10
      kernels.

Work Item: Make sure all drivers dispose of and NULL out their data when 
they close, or fix kernel areas that might depend on that stale data.  
Or whatever the problem is.

o  Not all drivers have correct netlink support, if they even have it
   1) orinoco is too twitchy, sends too many events (shouldn't send them
		during a scan for example)
   2) atmel, airo, and others don't seem to have any netlink support

Work Item: fix all drivers to ensure that when the card successfully 
associates with an access point, that it signals the kernel that its 
network link is "up".

o  Not all drivers support wirless scanning
   1) orinoco driver mainly, support is upstream and is being slowly
      merged into the kernel driver

Work Item: Speed up merge of upstream Orinoco into kernel orinoco

o  Firmware issues
   1) Cisco aironet firmware upload is quite inconsistent, fails with
      5.21 for example.  Firmware <= 5.02 seems to be required for using
      WEP with most access points.  Latest Cisco-provided driver is quite
      different than latest in-kernel driver

Work Item: Figure out licensing issues between Cisco-provided driver for 
2.4 kernel (which is MPL) and in-kernel airo driver (which is GPL).  
Then, figure out what changes were made to the Cisco-provided driver to 
support firmware up to 5.30.17, and make those changes in the in-kernel 
airo driver.

o  Ethtool support for all drivers
   1) viro has done a lot of them, not sure if this is complete.

o  Ad-Hoc mode support is quite flaky or absent from most drivers
   1) prism54 "mgmt tx queue full" errors on otherwise-working cards
   2) madwifi resets bitrate to 0 when switching to ad-hoc mode

Work Item: Fix drivers to support Ad-Hoc mode, attempt to get specs on 
their hardware & registers from manufacturers if we don't have that 
information yet for all "modern" cards.

o  WPA support is lacking or just in-progress, needs much help
   1) The point here is that Wireless Extensions API has severely lagged
      behind the capabilities of current chipsets.  There should be
      support _in_ Wireless Extensions for WPA and its associated
      technologies, instead of what all the drivers do now, which is
      separate, non-standard, private ioctl() calls for WPA settings.

Work Item: standardize on an interface for WPA and its associated 
technologies, and implement that interface in Wireless Extensions API.  
Fix all drivers to use that API rather than private ioctl() calls.  Some 
drivers that support WPA:  atmel, madwifi, prism54, ipw2200.  It would 
also be beneficial in this effort to support the calls that 802.1x 
stacks need (like wpa_supplicant and Open 802.1x) so that they don't 
have to patch the drivers (Open 802.1x) or create special per-driver 
hook modules (wpa_supplicant) to be able to capture the necessary 
authentication packets or set up the card's WPA settings.

o  Drivers deal with hidden ESSIDs differently
   1) ipw2x00 traps " " and runs of \0 and changes it to "<hidden>" in
      the driver, while other drivers just pass the blank string through

Work Item: Standardize all drivers to simply pass an empty string 
through to user-space when the base station does not broadcast its 
ESSID.  Drivers should _not_ be clever about this.


Levels of Importance (my opinion):
1) All drivers _MUST_ support wireless scanning (*cough* orinoco *cough*)
2) WPA support needs to be standardized in Wireless Extensions
3) Consistent (and present) quality data among drivers, both for
    currently connected AP and for scanned APs
4) rtnetlink link notification for all drivers when they associate with
    an AP
5) Ad-Hoc mode support
6) Ethtool support
7) Cisco firmware issues


[-- Attachment #2: Type: TEXT/plain, Size: 5858 bytes --]

What needs to be fixed in Linux 802.11x Wireless:

o  Quality values vary wildly or are absent
   1) atmel doesn't return any quality data from scanned APs
   2) ipw_2100 doesn't return _any_ quality data (as of v1.02)
   3) Different quality methods for almost every driver
      - Prism54 does a quality as a percentage
      - airo mixes use of absolute and relative values in dBm
      - Average and max quality levels for almost all drivers are
         artificial and don't come from the the card in any way

Work Item: normalize quality values.  Wireless extensions supports two
different types of quality data, either percentage or dBm.  PICK ONE.  I 
would recommend reporting only a Percentage value to user space with the 
SIOCGIWSTATS call, and having separate ioctl() calls for getting 
specific dBm/noise values if user-space applications _and_ the driver 
supports it.  We cannot have user-space applications guessing which of 3 
different quality algorithms the driver is reporting.

o  Frequency values vary wildly from iw_get_range
   1) prism54 uses completely different exponent values than airo
   2) airo, atmel, orinoco are the same

Work Item: Normalize frequency values between wireless cards.  Use 
actual frequencies in MHz rather than using Exponent & Mantissa format 
as now.  Force user-space applications to convert channels->frequencies, 
based on what frequencies the driver says it supports. Or, fix drivers 
to report Frequency<->Channel pairs when they report their supported 
frequencies, but the point again is to PICK ONE and make all drivers do 
that.  Remove the guessing-game from user-space and pick one API for 
drivers to use.

o  airo/prism54 seem to have problems with ip6 and cause panic
   1) Some drivers don't NULL out their data after they are done with
      it, causing kernel panics later on down the line.  See Red Hat
      bugzilla #135432 for details, Dave Jones has a patch for the airo
      driver that seems to work better, which is in Red Hat 2.6.10
      kernels.

Work Item: Make sure all drivers dispose of and NULL out their data when 
they close, or fix kernel areas that might depend on that stale data.  
Or whatever the problem is.

o  Not all drivers have correct netlink support, if they even have it
   1) orinoco is too twitchy, sends too many events (shouldn't send them
		during a scan for example)
   2) atmel, airo, and others don't seem to have any netlink support

Work Item: fix all drivers to ensure that when the card successfully 
associates with an access point, that it signals the kernel that its 
network link is "up".

o  Not all drivers support wirless scanning
   1) orinoco driver mainly, support is upstream and is being slowly
      merged into the kernel driver

Work Item: Speed up merge of upstream Orinoco into kernel orinoco

o  Firmware issues
   1) Cisco aironet firmware upload is quite inconsistent, fails with
      5.21 for example.  Firmware <= 5.02 seems to be required for using
      WEP with most access points.  Latest Cisco-provided driver is quite
      different than latest in-kernel driver

Work Item: Figure out licensing issues between Cisco-provided driver for 
2.4 kernel (which is MPL) and in-kernel airo driver (which is GPL).  
Then, figure out what changes were made to the Cisco-provided driver to 
support firmware up to 5.30.17, and make those changes in the in-kernel 
airo driver.

o  Ethtool support for all drivers
   1) viro has done a lot of them, not sure if this is complete.

o  Ad-Hoc mode support is quite flaky or absent from most drivers
   1) prism54 "mgmt tx queue full" errors on otherwise-working cards
   2) madwifi resets bitrate to 0 when switching to ad-hoc mode

Work Item: Fix drivers to support Ad-Hoc mode, attempt to get specs on 
their hardware & registers from manufacturers if we don't have that 
information yet for all "modern" cards.

o  WPA support is lacking or just in-progress, needs much help
   1) The point here is that Wireless Extensions API has severely lagged
      behind the capabilities of current chipsets.  There should be
      support _in_ Wireless Extensions for WPA and its associated
      technologies, instead of what all the drivers do now, which is
      separate, non-standard, private ioctl() calls for WPA settings.

Work Item: standardize on an interface for WPA and its associated 
technologies, and implement that interface in Wireless Extensions API.  
Fix all drivers to use that API rather than private ioctl() calls.  Some 
drivers that support WPA:  atmel, madwifi, prism54, ipw2200.  It would 
also be beneficial in this effort to support the calls that 802.1x 
stacks need (like wpa_supplicant and Open 802.1x) so that they don't 
have to patch the drivers (Open 802.1x) or create special per-driver 
hook modules (wpa_supplicant) to be able to capture the necessary 
authentication packets or set up the card's WPA settings.

o  Drivers deal with hidden ESSIDs differently
   1) ipw2x00 traps " " and runs of \0 and changes it to "<hidden>" in
      the driver, while other drivers just pass the blank string through

Work Item: Standardize all drivers to simply pass an empty string 
through to user-space when the base station does not broadcast its 
ESSID.  Drivers should _not_ be clever about this.


Levels of Importance (my opinion):
1) All drivers _MUST_ support wireless scanning (*cough* orinoco *cough*)
2) WPA support needs to be standardized in Wireless Extensions
3) Consistent (and present) quality data among drivers, both for
    currently connected AP and for scanned APs
4) rtnetlink link notification for all drivers when they associate with
    an AP
5) Ad-Hoc mode support
6) Ethtool support
7) Cisco firmware issues


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Where Linux 802.11x support needs work
@ 2005-01-26  2:40 Jean Tourrilhes
  2005-01-26  4:03 ` Dan Williams
  0 siblings, 1 reply; 9+ messages in thread
From: Jean Tourrilhes @ 2005-01-26  2:40 UTC (permalink / raw)
  To: netdev, Dan Williams

Dan Williams wrote :
> 
> This list of stuff that should get fixed in Linux wireless grew out of my 
> attempt to put a GUI on top of Linux wireless with NetworkManager 
> (http://people.redhat.com/dcbw/NetworkManager).  This isn't, of course, a 
> demand or anything, and I've been personally slowly fixing stuff up as I 
> come to it (orinoco merge, fixing linux-wlan-ng, small kernel wireless 
> driver patches)

	Yes, I've seen your various contributions for the various
drivers. I'm glad that someone is doing all these little fixes,
because they are needed, and such a job is not gratifying and not well
recognised. I used to do more of that, in the past, when I had more
time, and Pavel did some, but it's not our full time job to work on
Linux.
	I also want to thank you for your work on the NetworkManager,
it's a great piece of work and goes beyond what I had in mind when I
created the API.

> I think the biggest issue here is that the Wireless Extensions API has 
> stagnated a bit, and driver writers have gone off and done their own thing 
> (for example, WPA support) because the WEAPI hasn't shown leadership in 
> this area.  That's fixable, and at this point doesn't seem to be a large 
> amount of work since the main offender here is only WPA.

	You know already that in Linux things happen by pushing
patches around, not by "showing leadership" (whatever that
means). Driver authors will always do their own thing, nobody can
prevent them, and it's actually a good thing as it creates inovation
and the best ideas can then be folded back into the official API. Yes,
I believe in the bottom up approach (cheers).
	Note that API doesn't happen in isolation, you need to make
things happen on both sides of it, and the API feed on the experience
of both sides.
	Because NetworkManager is both useful and standard, it will
show leadership and force driver authors to conform to its
requirements. If a driver is broken with NetworkManager, users will
bug the author until it's fixed. I've seen that happening with various
other tools (unfortunately, my wtools are too permissive).

> o  Quality values vary wildly or are absent
>      - Average and max quality levels for almost all drivers are
>         artificial and don't come from the the card in any way

	Those can't come from the hardware, they may only come from
the spec, when available.
	The idea with "average" and "max" would be that application
authors would feed back driver authors as to what to
use. Unfortunately, it did not happen, especially that apps decided to
ignore them.

> o  Frequency values vary wildly from iw_get_range
>   1) prism54 uses completely different exponent values than airo
>   2) airo, atmel, orinoco are the same

	Nobody in their right mind would use iwfreq for anything, it's
just used to go across the kernel interface. Once in userspace, just
use the iw_freq2float() and iw_float2freq() to convert to double, and
then it's all normalised.
	If you need it, I can donate you those two functions under LGPL.

> o  Not all drivers have correct netlink support, if they even have it

	Note that netlink make only sense in Managed mode, it does not
make sense in Ad-Hoc or Master mode. That make things a bit more messy
to implement.
	In the interim, for driver that don't support netlink you can
check the value of the AP address.

> o  Not all drivers support wirless scanning
>   1) orinoco driver mainly, support is upstream and is being slowly
>      merged into the kernel driver

	Just for your info, I was the one who originally authored the
Scanning patch for the Orinoco driver (based on other patches). After
that many people improved on it.

> o  Ad-Hoc mode support is quite flaky or absent from most drivers

	Low priority for most vendors, firwmares are only lightly tested.

> o  WPA support is lacking or just in-progress, needs much help

	Preliminary patch is on my web page :
http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html#wext
	Jouni is the main author, as he is doing the supplicant. He
told me that he want to make a few additional changes. WPA is quite
complex and therefore I would prefer to make sure it's right.


	Note that various other people have their own todo list. Jeff
also has things he has in minds. I have (few) patches on my web
pages. Driver authors also have their wishes.
	One of the big item not mentionned by you is the in-kernel
802.11 stack (native frames and management). If done right, I guess it
would mostly be transparent to you...

	Have fun...

	Jean

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Where Linux 802.11x support needs work
  2005-01-26  2:40 Where Linux 802.11x support needs work Jean Tourrilhes
@ 2005-01-26  4:03 ` Dan Williams
  2005-01-26  4:41   ` Michael Wu
  2005-01-26  7:17   ` Michael Renzmann
  0 siblings, 2 replies; 9+ messages in thread
From: Dan Williams @ 2005-01-26  4:03 UTC (permalink / raw)
  To: Jean Tourrilhes; +Cc: netdev, Dan Williams

On Tue, 25 Jan 2005, Jean Tourrilhes wrote:
> 	You know already that in Linux things happen by pushing
> patches around, not by "showing leadership" (whatever that
> means). Driver authors will always do their own thing, nobody can
> prevent them, and it's actually a good thing as it creates inovation
> and the best ideas can then be folded back into the official API. Yes,
> I believe in the bottom up approach (cheers).

Quite true, and I don't think that's a bad approach, I just think that 
adding general WPA support to WEAPI a bit earlier might have saved some 
trouble.  Since most driver writers have their drivers in the kernel, and 
since the kernel can enforce usage of the WEAPI on the driver, it seems 
like the WEAPI would be a good place to standardize new stuff like WPA 
that's been around for a while and is supported by a fair # of chipsets.  
Furthermore, if an API were in place, then driver writers could write to 
that API and not have to invent one themselves.  Of course, the API would 
need to change and evolve as driver writers ran into limitations and 
whatnot.  So I guess its a toss-up, either way (waiting till later, or 
starting sooner) both driver writers and user-applications have to change 
code around.  But I completely agree that flexibility is of great 
importance here.

> > o  Quality values vary wildly or are absent
> >      - Average and max quality levels for almost all drivers are
> >         artificial and don't come from the the card in any way
> 
> 	Those can't come from the hardware, they may only come from
> the spec, when available.
> 	The idea with "average" and "max" would be that application
> authors would feed back driver authors as to what to
> use. Unfortunately, it did not happen, especially that apps decided to
> ignore them.

My frustration here (and why I've pretty much stopped trying to fix it) is 
basically twofold:
1) If the card only reports dBm, I cannot try to calculate the 
signal-to-noise ratio without getting the correct noise level.  Only the 
card can provide that, and quite a few do not.
2) The API here is a bit confusing and lacks some documentation.  Since we 
have the 8-bit value for the quality, the driver has the choice of either 
0 - 255 (which seems to be what Airo uses) or -128 - +128 (which others 
use).  I could not really deduce what the values that various drivers 
return is, and how to convert that to a percentage value.

For quality data, we have qual.qual, qual.level, and qual.noise.  Its not 
completely clear what each of those values is (though if I had to guess, 
I'd assume qual.qual = %-age value, qual.level = dBm of current signal, 
qual.noise = dBm of current noise threshold).

The breakdown:
ipw2200: fairly sane
ipw2100: fairly sane, but no scan quality data
airo: only qual.level on scans (qual.qual/qual.noise = 0), for normal
      quality uses a lot of magic numbers.  No way to get a percentage
      value out of this driver.
atmel: magic numbers tied to one hardware version.  No scan quality data.
orinoco: magic numbers
madwifi: doesn't seem to implement SIOCGIWSTATS

As far as I understand the comments in iwlib.c, all drivers do something 
different for the qual.qual/qual.level/qual.noise fields, WRT the 
signed/unsigned debate.  Airo seems to use 0 - 255, others seem to use 
-128 - +128, etc.  We need to standardize signal strength and quality data 
among the drivers.

> > o  Frequency values vary wildly from iw_get_range
> >   1) prism54 uses completely different exponent values than airo
> >   2) airo, atmel, orinoco are the same
> 
> 	Nobody in their right mind would use iwfreq for anything, it's
> just used to go across the kernel interface. Once in userspace, just
> use the iw_freq2float() and iw_float2freq() to convert to double, and
> then it's all normalised.
> 	If you need it, I can donate you those two functions under LGPL.

AFAIK, those functions are exposed in iwlib, no?  I think I'm already 
using them in NetworkManager.  I was using get/set frequency calls (which 
only madwifi actually seems to support) to ensure that the card jumps to 
the correct frequency in Ad-Hoc mode, which it didn't always seem to do.

> > o  Not all drivers have correct netlink support, if they even have it
> 
> 	Note that netlink make only sense in Managed mode, it does not
> make sense in Ad-Hoc or Master mode. That make things a bit more messy
> to implement.
> 	In the interim, for driver that don't support netlink you can
> check the value of the AP address.

True, but some tools like wpa_supplicant seem to use the netlink sockets 
stuff to trigger auth/encryption capability checks since certain auth 
algorithms send challenge packets to you when you auth/assoc to the AP.  
In any case, I'm not actually using any netlink sockets support in NM 
since its just to flaky between drivers.

Checking the AP MAC address isn't really good enough, since cards have 
different semantics here.  Some cards seem to update the MAC address only 
when you've successfully authed/assoced to the AP, while others don't 
really care as long as you've pointed your card at the ESSID.  For 
example, airo driver won't set a valid ESSID on the card until the auth 
mode is correct (ie OpenSystem/SharedKey), while others (madwifi, atmel) 
will happily show a valid MAC address even if your WEP key is wrong (airo 
will still show invalid in this instance).

The only way that I've found to guarantee a link to an access point is to 
set the ESSID, and then check over a period of 10 seconds or so for a 
valid AP MAC address on the card for at least 6 seconds, and then try to 
DHCP.  If you're in Open System and DHCP fails, then you fall back to 
Shared Key and get a link, try DHCP again, etc.

What would work better is if all cards supported netlink, so that I could 
at least tell when the _card_ thought it was connected and then stop the 
whole "wait for 10s until card has link" type of deal.  Furthermore, some 
cards re-load their firmware when you set the ESSID on them, which means 
you have to wait at least 2 or 3 seconds before any value on the card is 
actually valid.  There are liberal usleep (x) sprinkled throughout places 
in NetworkManager where I have to wait for cards to bring themselves back 
up before I can do anything with them.  Even a netlink message of "I'm the 
firmware, I'm ready for business" would be an improvement for this 
problem.

> > o  Not all drivers support wirless scanning
> >   1) orinoco driver mainly, support is upstream and is being slowly
> >      merged into the kernel driver
> 
> 	Just for your info, I was the one who originally authored the
> Scanning patch for the Orinoco driver (based on other patches). After
> that many people improved on it.

Yep, I see your stamp all over the code :)  In any case, I think Dave 
Gibson was busy for a while and just never quite got around to getting the 
scanning support merged.  He seems to be doing that now though.  I tried 
to help at one point, but was using the wrong orinoco branch.  I haven't 
taken the time to extract the scanning code again however and repost that, 
because it depends on most every other change in the upstream orinoco 
drivers (better firmware capability detection, iwspy support, etc).

> > o  Ad-Hoc mode support is quite flaky or absent from most drivers
> 
> 	Low priority for most vendors, firwmares are only lightly tested.

Yeah, I don't expect much to happen here but it would be nice.  FWIW, at 
least madwifi and atmel seem to work OK here.

> > o  WPA support is lacking or just in-progress, needs much help
> 
> 	Preliminary patch is on my web page :
> http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html#wext
> 	Jouni is the main author, as he is doing the supplicant. He
> told me that he want to make a few additional changes. WPA is quite
> complex and therefore I would prefer to make sure it's right.

I plan to make NetworkManager talk to wpa_supplicant at some near-future 
point, I've had some long emails with Jouni about the wpa_supplicant 
interface and how to work with it.  I was a bit horrified to discover that 
the Open 802.1x project actually patches drivers (ok, I'm not 100% sure, 
but there are patches against kernel drivers in their CVS at least).  
However, if they have to patch kernel drivers, that probably means there's 
some capability that they need that should be in the drivers anyway, so it 
might be useful to look into those patches and see what can be 
cherry-picked to improve driver quality.

> 	Note that various other people have their own todo list. Jeff
> also has things he has in minds. I have (few) patches on my web
> pages. Driver authors also have their wishes.

True, but I'm not sure how many of those wishes/todo lists are actually 
well-known or public.  I don't really see any great momentum in the Linux 
802.11x world, but more a hodge-podge of improvements.  I was hoping that 
the post today could help  direct a bit more attention and effort at Linux 
802.11x stuff so we could try to clean it up and improve it.  I don't 
think enough people focus on this right now, and as Linux moves more 
towards mainstream we need to be as foolproof as possible.  Furthermore, 
we need to develop a clear API for driver writers so that hardware 
companies have fewer excuses to develop open-source drivers.  Obviously 
they all have tons of experience writing to NDIS/WDM, and that's fairly 
understood.  But I believe that Linux wireless driver APIs are much less 
understood and documented.

> 	One of the big item not mentionned by you is the in-kernel
> 802.11 stack (native frames and management). If done right, I guess it
> would mostly be transparent to you...

You know, I was thinking of it and I just forgot to put it on the list.  
If you're including madwifi and ipw2x00, we have a grand total of what, 3 
or 4 802.11 stacks in the kernel at the same time?  (madwifi, 
orinoco/hermes, ipw2x00, linux-wlan-ng)

Cheers,
Dan

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Where Linux 802.11x support needs work
  2005-01-26  4:03 ` Dan Williams
@ 2005-01-26  4:41   ` Michael Wu
  2005-01-26  7:31     ` Roar Bjørgum Rotvik
  2005-01-26  7:17   ` Michael Renzmann
  1 sibling, 1 reply; 9+ messages in thread
From: Michael Wu @ 2005-01-26  4:41 UTC (permalink / raw)
  To: netdev

[-- Attachment #1: Type: text/plain, Size: 769 bytes --]

On Tuesday 25 January 2005 11:03 pm, Dan Williams wrote:
> >  One of the big item not mentionned by you is the in-kernel
> > 802.11 stack (native frames and management). If done right, I guess it
> > would mostly be transparent to you...
>
> You know, I was thinking of it and I just forgot to put it on the list.
> If you're including madwifi and ipw2x00, we have a grand total of what, 3
> or 4 802.11 stacks in the kernel at the same time?  (madwifi,
> orinoco/hermes, ipw2x00, linux-wlan-ng)
>
Only orinoco/hermes is in the kernel, and that doesn't really have much of an 
802.11 stack, since most things are done in hardware. Madwifi has a fairly 
complete 802.11 stack (ported from netbsd), and so does adm8211. Dunno about 
ipw2x00.

-Michael Wu

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Where Linux 802.11x support needs work
  2005-01-26  4:03 ` Dan Williams
  2005-01-26  4:41   ` Michael Wu
@ 2005-01-26  7:17   ` Michael Renzmann
  2005-01-26 18:03     ` Dan Williams
  1 sibling, 1 reply; 9+ messages in thread
From: Michael Renzmann @ 2005-01-26  7:17 UTC (permalink / raw)
  To: Dan Williams; +Cc: Jean Tourrilhes, netdev

Hi.

Dan Williams wrote:
> madwifi: doesn't seem to implement SIOCGIWSTATS

It does. The SIOCGIWSTATS is used in tools/athstats.c (line 195 in 
current CVS) for example to get the rssi (via qual.qual).

>>>o  Ad-Hoc mode support is quite flaky or absent from most drivers
>>	Low priority for most vendors, firwmares are only lightly tested.
> Yeah, I don't expect much to happen here but it would be nice.  FWIW, at 
> least madwifi and atmel seem to work OK here.

Madwifi unfortunately has some known problems in Ad-hoc implementation. 
Someone worked on that, but the patches have not been sent in as far as 
I can tell.

>>	Note that various other people have their own todo list. Jeff
>>also has things he has in minds. I have (few) patches on my web
>>pages. Driver authors also have their wishes.
> True, but I'm not sure how many of those wishes/todo lists are actually 
> well-known or public.  I don't really see any great momentum in the Linux 
> 802.11x world, but more a hodge-podge of improvements.  I was hoping that 
> the post today could help  direct a bit more attention and effort at Linux 
> 802.11x stuff so we could try to clean it up and improve it.

How about setting up a project that cares of finding, defining and 
implementing such quasi-standards in the Linux 802.11 world? Most things 
are very WLAN specific, so I think netdev isn't the best place to 
discuss them. Of course this only works IMO when many (if not all) of 
the wlan driver authors join in and help out.

Comments?

Bye, Mike

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Where Linux 802.11x support needs work
  2005-01-26  4:41   ` Michael Wu
@ 2005-01-26  7:31     ` Roar Bjørgum Rotvik
  2005-01-27 16:24       ` Michael Wu
  2005-01-27 18:09       ` Michael Renzmann
  0 siblings, 2 replies; 9+ messages in thread
From: Roar Bjørgum Rotvik @ 2005-01-26  7:31 UTC (permalink / raw)
  To: netdev

Michael Wu wrote:
> On Tuesday 25 January 2005 11:03 pm, Dan Williams wrote:
> 
>>> One of the big item not mentionned by you is the in-kernel
>>>802.11 stack (native frames and management). If done right, I guess it
>>>would mostly be transparent to you...
>>
>>You know, I was thinking of it and I just forgot to put it on the list.
>>If you're including madwifi and ipw2x00, we have a grand total of what, 3
>>or 4 802.11 stacks in the kernel at the same time?  (madwifi,
>>orinoco/hermes, ipw2x00, linux-wlan-ng)
>>
> 
> Only orinoco/hermes is in the kernel, and that doesn't really have much of an 
> 802.11 stack, since most things are done in hardware. Madwifi has a fairly 
> complete 802.11 stack (ported from netbsd), and so does adm8211. Dunno about 
> ipw2x00.

Do any of these 80.11 stacks (or the upstream linux network stack) have 
a solution for WLAN cards with 802.11e (QoS extension) with more than 
one HW/firmware transmit queues?

As you may or may not know WLAN cards implementing 802.11e may have more 
than one HW/firmware transmit queue (I know of an 802.11a chip with 
802.11e extension that have 4 transmit queues in hardware/firmware with 
different priority).

As far as I know the linux network stack today only have one qdisc queue 
pr. device (struct netdev), so the driver may only stop/start 
(netif_stop_queue()/netif_wake_queue()) one queue at a time. This is a 
problem for drivers with more than one HW/firmware transmit queues, as 
you can not let a full low priority HW queue block the netdev queue.

Is there an existing solution for this problem, or is an 
multiqueue-pr-device solution being planned as part of introducing a 
common 802.11 stack in the kernel?

-- 
Roar B. Rotvik

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Where Linux 802.11x support needs work
  2005-01-26  7:17   ` Michael Renzmann
@ 2005-01-26 18:03     ` Dan Williams
  0 siblings, 0 replies; 9+ messages in thread
From: Dan Williams @ 2005-01-26 18:03 UTC (permalink / raw)
  To: Michael Renzmann; +Cc: Dan Williams, Jean Tourrilhes, netdev

On Wed, 26 Jan 2005, Michael Renzmann wrote:
> 
> Dan Williams wrote:
> > madwifi: doesn't seem to implement SIOCGIWSTATS
> 
> It does. The SIOCGIWSTATS is used in tools/athstats.c (line 195 in 
> current CVS) for example to get the rssi (via qual.qual).

Except then there's no handler for it in the ath_handlers[] array:

/Users/dan/Desktop/madwifi> grep -r "SIOCGIWSTATS" *
ath/if_ath.c:   (iw_handler) NULL /* kernel code */, /* SIOCGIWSTATS */
tools/athstats.c:       if (ioctl(s, SIOCGIWSTATS, &wrq) < 0)

That makes it essentially useless for using with the Linux Wireless 
Extensions API (unless the ioctl() somehow redirets calls to SIOCGIWSTATS 
to the dev->get_wireless_stats function?).  In any case, it should be as 
simple as adding the ath_iw_getstats() function to that line in 
ath/if_ath.c in the ath_handlers[] array.  So I guess no fundamental 
problems there, should be a 20 second fix.

> >>>o  Ad-Hoc mode support is quite flaky or absent from most drivers
> >>	Low priority for most vendors, firwmares are only lightly tested.
> > Yeah, I don't expect much to happen here but it would be nice.  FWIW, at 
> > least madwifi and atmel seem to work OK here.
> 
> Madwifi unfortunately has some known problems in Ad-hoc implementation. 
> Someone worked on that, but the patches have not been sent in as far as 
> I can tell.

It actually seems to perform fairly well already.  The only problems I 
noticed were that whne you set the card into Ad-hoc mode and set the ESSID 
on the card, it dropts to a bitrate of 0 and performance is terrible.  
When you explicitly set a bitrate of 11Mbps or some other value on the 
card the it works fine.  I think the card just gets a bit confused as to 
what bitrate to use when doing Ad-hoc mode.

> >>	Note that various other people have their own todo list. Jeff
> >>also has things he has in minds. I have (few) patches on my web
> >>pages. Driver authors also have their wishes.
> > True, but I'm not sure how many of those wishes/todo lists are actually 
> > well-known or public.  I don't really see any great momentum in the Linux 
> > 802.11x world, but more a hodge-podge of improvements.  I was hoping that 
> > the post today could help  direct a bit more attention and effort at Linux 
> > 802.11x stuff so we could try to clean it up and improve it.
> 
> How about setting up a project that cares of finding, defining and 
> implementing such quasi-standards in the Linux 802.11 world? Most things 
> are very WLAN specific, so I think netdev isn't the best place to 
> discuss them. Of course this only works IMO when many (if not all) of 
> the wlan driver authors join in and help out.

This would probably be a very good thing :)

Dan

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Where Linux 802.11x support needs work
  2005-01-26  7:31     ` Roar Bjørgum Rotvik
@ 2005-01-27 16:24       ` Michael Wu
  2005-01-27 18:09       ` Michael Renzmann
  1 sibling, 0 replies; 9+ messages in thread
From: Michael Wu @ 2005-01-27 16:24 UTC (permalink / raw)
  To: netdev

[-- Attachment #1: Type: text/plain, Size: 1199 bytes --]

On Wednesday 26 January 2005 2:31 am, Roar Bjørgum Rotvik wrote:
> Michael Wu wrote:
> > On Tuesday 25 January 2005 11:03 pm, Dan Williams wrote:
> >>> One of the big item not mentionned by you is the in-kernel
> >>>802.11 stack (native frames and management). If done right, I guess it
> >>>would mostly be transparent to you...
> >>
> >>You know, I was thinking of it and I just forgot to put it on the list.
> >>If you're including madwifi and ipw2x00, we have a grand total of what, 3
> >>or 4 802.11 stacks in the kernel at the same time?  (madwifi,
> >>orinoco/hermes, ipw2x00, linux-wlan-ng)
> >
> > Only orinoco/hermes is in the kernel, and that doesn't really have much
> > of an 802.11 stack, since most things are done in hardware. Madwifi has a
> > fairly complete 802.11 stack (ported from netbsd), and so does adm8211.
> > Dunno about ipw2x00.
>
> Do any of these 80.11 stacks (or the upstream linux network stack) have
> a solution for WLAN cards with 802.11e (QoS extension) with more than
> one HW/firmware transmit queues?
>
I'm not aware of any. The latest revision of the adm8211 chip supports more 
than one tx queue, but only one is used.

-Michael Wu

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Where Linux 802.11x support needs work
  2005-01-26  7:31     ` Roar Bjørgum Rotvik
  2005-01-27 16:24       ` Michael Wu
@ 2005-01-27 18:09       ` Michael Renzmann
  1 sibling, 0 replies; 9+ messages in thread
From: Michael Renzmann @ 2005-01-27 18:09 UTC (permalink / raw)
  To: netdev

Hi.

Roar Bjørgum Rotvik wrote:
> Is there an existing solution for this problem, or is an 
> multiqueue-pr-device solution being planned as part of introducing a 
> common 802.11 stack in the kernel?

Some (most or all?) Atheros chipsets have several priority queues. As 
far as I can tell Madwifi is prepared for supporting them, as well as 
the underlying 802.11 stack that has been ported from BSD. But I may be 
wrong, as I'm by no means a madwifi-wizard :)

Bye, Mike

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2005-01-27 18:09 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-01-26  2:40 Where Linux 802.11x support needs work Jean Tourrilhes
2005-01-26  4:03 ` Dan Williams
2005-01-26  4:41   ` Michael Wu
2005-01-26  7:31     ` Roar Bjørgum Rotvik
2005-01-27 16:24       ` Michael Wu
2005-01-27 18:09       ` Michael Renzmann
2005-01-26  7:17   ` Michael Renzmann
2005-01-26 18:03     ` Dan Williams
  -- strict thread matches above, loose matches on Subject: below --
2005-01-25 21:47 Dan Williams

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).