2008-12-01 20:16:23

by John W. Linville

[permalink] [raw]
Subject: [PATCH] mac80211: deauth when interface is marked down

It seems like proper etiquette to let other stations know when we are
going down in either STA or IBSS mode. This also notifies userland, so
wpa_supplicant doesn't get confused.

Signed-off-by: John W. Linville <[email protected]>
---
net/mac80211/iface.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index 4608212..b557250 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -435,6 +435,9 @@ static int ieee80211_stop(struct net_device *dev)
break;
case NL80211_IFTYPE_STATION:
case NL80211_IFTYPE_ADHOC:
+ /* Announce that we are leaving the network. */
+ ieee80211_sta_deauthenticate(dev, WLAN_REASON_DEAUTH_LEAVING);
+
sdata->u.sta.state = IEEE80211_STA_MLME_DISABLED;
memset(sdata->u.sta.bssid, 0, ETH_ALEN);
del_timer_sync(&sdata->u.sta.timer);
--
1.5.4.3



2008-12-01 20:18:37

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] mac80211: deauth when interface is marked down

On Mon, 2008-12-01 at 15:02 -0500, John W. Linville wrote:
> It seems like proper etiquette to let other stations know when we are
> going down in either STA or IBSS mode. This also notifies userland, so
> wpa_supplicant doesn't get confused.
>
> Signed-off-by: John W. Linville <[email protected]>
> ---
> net/mac80211/iface.c | 3 +++
> 1 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
> index 4608212..b557250 100644
> --- a/net/mac80211/iface.c
> +++ b/net/mac80211/iface.c
> @@ -435,6 +435,9 @@ static int ieee80211_stop(struct net_device *dev)
> break;
> case NL80211_IFTYPE_STATION:
> case NL80211_IFTYPE_ADHOC:
> + /* Announce that we are leaving the network. */
> + ieee80211_sta_deauthenticate(dev, WLAN_REASON_DEAUTH_LEAVING);
> +

Ack, but I think it should check whether we're authenticated/associated
at all.

johannes


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

2008-12-01 20:52:07

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] mac80211: deauth when interface is marked down

John W. Linville <[email protected]> writes:

> It seems like proper etiquette to let other stations know when we are
> going down in either STA or IBSS mode. This also notifies userland, so
> wpa_supplicant doesn't get confused.

I noticed a problem while I was testing my dynamic power save patches,
power save settings were not correctly sent to the driver because
ieee80211_stop() didn't notify mlme. I think this patch will fix this
but I didn't test it, yet.
>
> Signed-off-by: John W. Linville <[email protected]>
> ---
> net/mac80211/iface.c | 3 +++
> 1 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
> index 4608212..b557250 100644
> --- a/net/mac80211/iface.c
> +++ b/net/mac80211/iface.c
> @@ -435,6 +435,9 @@ static int ieee80211_stop(struct net_device *dev)
> break;
> case NL80211_IFTYPE_STATION:
> case NL80211_IFTYPE_ADHOC:
> + /* Announce that we are leaving the network. */
> + ieee80211_sta_deauthenticate(dev, WLAN_REASON_DEAUTH_LEAVING);
> +
> sdata->u.sta.state = IEEE80211_STA_MLME_DISABLED;

I think manually setting u.sta.state can be removed now because
ieee80211_sta_deauthenticate() calls ieee80211_set_disassoc() which
again has this:

if (self_disconnected || reason == WLAN_REASON_DISASSOC_STA_HAS_LEFT)
ifsta->state = IEEE80211_STA_MLME_DISABLED;

--
Kalle Valo