Subject: Improvement in mac80211 to move to a proper state when channel is set from user space

The problem with the current behaviour of mac80211 when setting a
new channel from user space while interface is in associated state
is, it is still maintainig the associated state even after the h/w
is set to a different channel and it is sending packets destined
to the connected AP/STA which is operating in a different freq/band
in the new channel before detecting that the AP is no more in the
channel (in this case it is done by sending couple of probe req to
the associated AP which is obviously operating on a different channel
after the channel change). I think we need to put the interface into
a proper state instead of just relying on this tx probe req logic in
this case. I'm have the following proposals to improve the situation.

Handle proper state transition in wireless handler (ieee80211_ioctl_siwfreq):
For STA mode, move the interface to disassociated state with the associated AP
in the current channel and move it to scan state to find an appropriate
AP in the new channel.
For IBSS, mark all the joined ibss stations as not joined in the
current chanel and move the inteface state to scan in the new channel.
For AP mode, move the interface to disassociated state with all
associated stations in current channel and start a BSS in the new
channel.

Handle it from the diver:
Sense the situation from the beacon miss or in config() callback
(with some hacky check) and trigger the disassociation, for this
we need to add one more notification type in ieee80211_notify_mac()
for disassoc.

Would like to know comments on this one.

Thanks,
Vasanth


2008-08-14 11:09:50

by Jouni Malinen

[permalink] [raw]
Subject: Re: Improvement in mac80211 to move to a proper state when channel is set from user space

On Thu, Aug 14, 2008 at 03:35:01PM +0530, Vasanthakumar Thiagarajan wrote:

> The problem with the current behaviour of mac80211 when setting a
> new channel from user space while interface is in associated state
> is, it is still maintainig the associated state even after the h/w
> is set to a different channel and it is sending packets destined
> to the connected AP/STA which is operating in a different freq/band
> in the new channel before detecting that the AP is no more in the
> channel

Please note that AP may change channels with associated STA remaining
associated on the new channel (see Channel Switch Announcement).

> Handle proper state transition in wireless handler (ieee80211_ioctl_siwfreq):
> For STA mode, move the interface to disassociated state with the associated AP
> in the current channel and move it to scan state to find an appropriate
> AP in the new channel.

If client MLME is in user space, siwfreq could be used to handle channel
switch announcement from the AP and in this case the STA should not be
moved into disassociated state.

> For IBSS, mark all the joined ibss stations as not joined in the
> current chanel and move the inteface state to scan in the new channel.

IBSS can also use channel switch announcement and in addition, merging
of separate IBSSes into a single one may end up changing channels for
some STAs. If this is managed from user space, siwfreq should not
tricker this type of changes.

> For AP mode, move the interface to disassociated state with all
> associated stations in current channel and start a BSS in the new
> channel.

Same here and taken into account that we only support AP MLME in user
space (i.e., hostapd), I would say it is up to userspace to do this.
mac80211 should not start marking STAs disassociated in AP mode.

--
Jouni Malinen PGP id EFC895FA