2009-08-20 07:02:01

by Rami Rosen

[permalink] [raw]
Subject: Linux Kernel Wireless stack presentation

Folks,

I am giving on Thursday next week a lecture about the Linux Kernel
Wireless stack in a
Linux User Group in Herzelia (Israel).

The slides are available online now, so I thought some of you might
be interested
to take a look; the presentation is very detailed (over 110 pages).

see:
http://tuxology.net/wp-content/uploads/2009/08/wirelessLecHerzelinux.pdf

and
http://tuxology.net/herzelinux/

(I know that this is a bit off topic, but it seems to me that this can interest
some members of the Linux wireless community)

Regards,
Rami Rosen


2009-08-20 10:14:12

by Rami Rosen

[permalink] [raw]
Subject: Re: Linux Kernel Wireless stack presentation

Johannes,
Thanks a lot for your comments. I will fix the presentation accordingly.

The code base for the lecture is indeed not the latest wireless-testing tree.

> Hey that got long!
The presentation is also quite long...

Regards,
Rami Rosen




On Thu, Aug 20, 2009 at 12:22 PM, Johannes
Berg<[email protected]> wrote:
> On Thu, 2009-08-20 at 10:02 +0300, Rami Rosen wrote:
>
>> http://tuxology.net/wp-content/uploads/2009/08/wirelessLecHerzelinux.pdf
>
> had a quick look
>
> * almost all drivers support passive scanning -- all the modern ones at
> least -- maybe some old drivers don't, but all using cfg80211 do
> * your presentation is based on old code -- all the code stuff about
> scanning is already outdated in wireless-testing
> * you can scan for multiple specific SSIDs and channels:
> iw wlan0 scan freq 2412 ssid foo bar baz
> * iw has a better IE parser, so showing a result from that may be more
> instructive
> * code stuff about authentication/association is also outdated already
> * the STA_MLME_DISABLED stuff no longer exists
> * AP MLME will never be in the kernel, not just not in the near
> future :)
> * raw packets still go through the mac80211 stack, they arrive in
> monitor_start_xmit() or so
> * four-address format is not necessarily used only for WDS, the
> standard doesn't define uses for it (ToDS = FromDS = 1)
> * an AP may transmit nullfunc (!) frames to tell clients it has no data
> buffered, but it never transmits frames with the PM bit on
> * power timeout 5 is described incorrectly -- it doesn't go to sleep
> for 5 seconds, it actually stays awake for 5 seconds after each
> packet transmission -- the time spent asleep is calculated based on
> the DTIM period etc. Cf. 04fe20372e70685d9f15966216cdffd3795fe590.
> * STA may wake up in response to TIM[AID] == 1 instead of sending
> PS-poll, which we do depends on the timeout (iwconfig wlan0 power
> timeout 0 == PS-poll, iwconfig wlan0 power timeout 100ms == send
> nullfunc and stay awake for 100ms)
> * "paramter" typo
> * ibss is in net/mac80211/ibss.c and has been for quite a while
> * PM in IBSS is not implemented typically
> * s/80211.s/802.11s/
> * s/80211.n/802.11n/
> * you can change the channel with iw (iw phy set freq ...) but it isn't
> really useful unless you're AP/monitor (and rejected otherwise)
> * Fedora no longer updates from wireless-testing afaik
> * wmaster0 is no longer created
> * assigning interface_modes doesn't set the mode, it just sets the
> possible modes :)
> * you can also call iterate_interfaces_atomic() in irq context
> * nobody cares about the wireless extensions version any more :)
> * for sniffing you may care about "iw dev <devname> set monitor <flag>*"
>
> Hey that got long!
>
> johannes
>

2009-08-20 07:31:41

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: Linux Kernel Wireless stack presentation

On Thu, Aug 20, 2009 at 12:22 AM, Rami Rosen<[email protected]> wrote:
> Luis,
> First, thanks for your quick response.
>
>> * Ditch iwconfig and refer to iw
>
> I do mention also iw; for example, in slide 70, slide 111.
> My impression is that both set of tools, wireless-tools and iw, will
> coexist for the next
> near future and maybe beyond.

Sure, but the sooner wireless-tools if forgotten into oblivion the better.

Luis

2009-08-20 07:22:38

by Rami Rosen

[permalink] [raw]
Subject: Re: Linux Kernel Wireless stack presentation

Luis,
First, thanks for your quick response.

> * Ditch iwconfig and refer to iw

I do mention also iw; for example, in slide 70, slide 111.
My impression is that both set of tools, wireless-tools and iw, will
coexist for the next
near future and maybe beyond.


> * ath5k/ath9k do not have any firmware burned onto any "ROM", the
> devices just do not require software, everything is done by the driver

Thanks for the info!

Regards,
Rami Rosen


On Thu, Aug 20, 2009 at 10:12 AM, Luis R. Rodriguez<[email protected]> wrote:
> On Thu, Aug 20, 2009 at 12:02 AM, Rami Rosen<[email protected]> wrote:
>> Folks,
>>
>> I am giving on Thursday next week a lecture about the Linux Kernel
>> Wireless stack in a
>> Linux User Group in Herzelia (Israel).
>>
>> The slides are available online now, so I thought some of you might
>> be interested
>> to take a look; the presentation is very detailed (over 110 pages).
>>
>> see:
>> http://tuxology.net/wp-content/uploads/2009/08/wirelessLecHerzelinux.pdf
>
> A few comments:
>
> * Ditch iwconfig and refer to iw
> * ath5k/ath9k do not have any firmware burned onto any "ROM", the
> devices just do not require software, everything is done by the driver
>
> Luis
>

2009-08-25 10:29:17

by Rami Rosen

[permalink] [raw]
Subject: Re: Linux Kernel Wireless stack presentation

Hello,


> iwconfig wlan0 power timeout 0 == PS-poll,

I am not sure I fully understand what you mean here by
"iwconfig wlan0 power timeout 0 == PS-poll". As far as I understand,
"iwconfig wlan0 power timeout 0" invokes ieee80211_change_ps(); this method
notifies the driver about disabling PS (by
ieee80211_hw_config(...IEEE80211_CONF_CHANGE_PS))
and sets the flags to have ~IEEE80211_CONF_PS; It also cancells the
dynamic_ps_enable_work work_queue thread. But what PS-POLL has to do with it ?
I am not sure I understand how PSPOLL is relevant here.

It could be that I missunderstand you in some point here.

Regards,
Rami Rosen


On Thu, Aug 20, 2009 at 12:22 PM, Johannes
Berg<[email protected]> wrote:
> On Thu, 2009-08-20 at 10:02 +0300, Rami Rosen wrote:
>
>> http://tuxology.net/wp-content/uploads/2009/08/wirelessLecHerzelinux.pdf
>
> had a quick look
>
> * almost all drivers support passive scanning -- all the modern ones at
> least -- maybe some old drivers don't, but all using cfg80211 do
> * your presentation is based on old code -- all the code stuff about
> scanning is already outdated in wireless-testing
> * you can scan for multiple specific SSIDs and channels:
> iw wlan0 scan freq 2412 ssid foo bar baz
> * iw has a better IE parser, so showing a result from that may be more
> instructive
> * code stuff about authentication/association is also outdated already
> * the STA_MLME_DISABLED stuff no longer exists
> * AP MLME will never be in the kernel, not just not in the near
> future :)
> * raw packets still go through the mac80211 stack, they arrive in
> monitor_start_xmit() or so
> * four-address format is not necessarily used only for WDS, the
> standard doesn't define uses for it (ToDS = FromDS = 1)
> * an AP may transmit nullfunc (!) frames to tell clients it has no data
> buffered, but it never transmits frames with the PM bit on
> * power timeout 5 is described incorrectly -- it doesn't go to sleep
> for 5 seconds, it actually stays awake for 5 seconds after each
> packet transmission -- the time spent asleep is calculated based on
> the DTIM period etc. Cf. 04fe20372e70685d9f15966216cdffd3795fe590.
> * STA may wake up in response to TIM[AID] == 1 instead of sending
> PS-poll, which we do depends on the timeout (iwconfig wlan0 power
> timeout 0 == PS-poll, iwconfig wlan0 power timeout 100ms == send
> nullfunc and stay awake for 100ms)
> * "paramter" typo
> * ibss is in net/mac80211/ibss.c and has been for quite a while
> * PM in IBSS is not implemented typically
> * s/80211.s/802.11s/
> * s/80211.n/802.11n/
> * you can change the channel with iw (iw phy set freq ...) but it isn't
> really useful unless you're AP/monitor (and rejected otherwise)
> * Fedora no longer updates from wireless-testing afaik
> * wmaster0 is no longer created
> * assigning interface_modes doesn't set the mode, it just sets the
> possible modes :)
> * you can also call iterate_interfaces_atomic() in irq context
> * nobody cares about the wireless extensions version any more :)
> * for sniffing you may care about "iw dev <devname> set monitor <flag>*"
>
> Hey that got long!
>
> johannes
>

2009-08-20 09:22:41

by Johannes Berg

[permalink] [raw]
Subject: Re: Linux Kernel Wireless stack presentation

On Thu, 2009-08-20 at 10:02 +0300, Rami Rosen wrote:

> http://tuxology.net/wp-content/uploads/2009/08/wirelessLecHerzelinux.pdf

had a quick look

* almost all drivers support passive scanning -- all the modern ones at
least -- maybe some old drivers don't, but all using cfg80211 do
* your presentation is based on old code -- all the code stuff about
scanning is already outdated in wireless-testing
* you can scan for multiple specific SSIDs and channels:
iw wlan0 scan freq 2412 ssid foo bar baz
* iw has a better IE parser, so showing a result from that may be more
instructive
* code stuff about authentication/association is also outdated already
* the STA_MLME_DISABLED stuff no longer exists
* AP MLME will never be in the kernel, not just not in the near
future :)
* raw packets still go through the mac80211 stack, they arrive in
monitor_start_xmit() or so
* four-address format is not necessarily used only for WDS, the
standard doesn't define uses for it (ToDS = FromDS = 1)
* an AP may transmit nullfunc (!) frames to tell clients it has no data
buffered, but it never transmits frames with the PM bit on
* power timeout 5 is described incorrectly -- it doesn't go to sleep
for 5 seconds, it actually stays awake for 5 seconds after each
packet transmission -- the time spent asleep is calculated based on
the DTIM period etc. Cf. 04fe20372e70685d9f15966216cdffd3795fe590.
* STA may wake up in response to TIM[AID] == 1 instead of sending
PS-poll, which we do depends on the timeout (iwconfig wlan0 power
timeout 0 == PS-poll, iwconfig wlan0 power timeout 100ms == send
nullfunc and stay awake for 100ms)
* "paramter" typo
* ibss is in net/mac80211/ibss.c and has been for quite a while
* PM in IBSS is not implemented typically
* s/80211.s/802.11s/
* s/80211.n/802.11n/
* you can change the channel with iw (iw phy set freq ...) but it isn't
really useful unless you're AP/monitor (and rejected otherwise)
* Fedora no longer updates from wireless-testing afaik
* wmaster0 is no longer created
* assigning interface_modes doesn't set the mode, it just sets the
possible modes :)
* you can also call iterate_interfaces_atomic() in irq context
* nobody cares about the wireless extensions version any more :)
* for sniffing you may care about "iw dev <devname> set monitor <flag>*"

Hey that got long!

johannes


Attachments:
signature.asc (801.00 B)
This is a digitally signed message part

2009-08-20 07:12:42

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: Linux Kernel Wireless stack presentation

On Thu, Aug 20, 2009 at 12:02 AM, Rami Rosen<[email protected]> wrote:
> Folks,
>
>  I am giving on Thursday next week a lecture about the Linux Kernel
> Wireless stack in a
> Linux User Group in Herzelia (Israel).
>
>  The slides are available online now, so I thought some of you might
> be interested
> to take a look; the presentation is very detailed (over 110 pages).
>
> see:
> http://tuxology.net/wp-content/uploads/2009/08/wirelessLecHerzelinux.pdf

A few comments:

* Ditch iwconfig and refer to iw
* ath5k/ath9k do not have any firmware burned onto any "ROM", the
devices just do not require software, everything is done by the driver

Luis

2009-08-25 10:38:01

by Johannes Berg

[permalink] [raw]
Subject: Re: Linux Kernel Wireless stack presentation

Hi,

> > iwconfig wlan0 power timeout 0 == PS-poll,
>
> I am not sure I fully understand what you mean here by
> "iwconfig wlan0 power timeout 0 == PS-poll". As far as I understand,
> "iwconfig wlan0 power timeout 0" invokes ieee80211_change_ps(); this method
> notifies the driver about disabling PS (by
> ieee80211_hw_config(...IEEE80211_CONF_CHANGE_PS))
> and sets the flags to have ~IEEE80211_CONF_PS; It also cancells the
> dynamic_ps_enable_work work_queue thread. But what PS-POLL has to do with it ?
> I am not sure I understand how PSPOLL is relevant here.

No,

iwconfig wlan0 power off

goes into the disable PS case.

iwconfig wlan0 power timeout 0

sets the timeout to zero and power management on. And when the timeout
is 0 we use ps-poll.

johannes


Attachments:
signature.asc (801.00 B)
This is a digitally signed message part