2007-11-28 06:57:01

by Michael Wu

[permalink] [raw]
Subject: [PATCH] mac80211: Fix behavior of ieee80211_open and ieee80211_close

This patch fixes:
- Incorrect calls to ieee80211_hw_config when the radiotap flag is set.
- Failure to actually unset the radiotap flag when all monitors are down.
- Failure to call ieee80211_hw_config after successful interface start.

Signed-off-by: Michael Wu <[email protected]>
---

net/mac80211/ieee80211.c | 5 ++---
1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c
index 59350b8..fc8b29c 100644
--- a/net/mac80211/ieee80211.c
+++ b/net/mac80211/ieee80211.c
@@ -216,6 +216,7 @@ static int ieee80211_open(struct net_device *dev)
res = local->ops->start(local_to_hw(local));
if (res)
return res;
+ ieee80211_hw_config(local);
}

switch (sdata->type) {
@@ -232,7 +233,6 @@ static int ieee80211_open(struct net_device *dev)
netif_tx_unlock_bh(local->mdev);

local->hw.conf.flags |= IEEE80211_CONF_RADIOTAP;
- ieee80211_hw_config(local);
}
break;
case IEEE80211_IF_TYPE_STA:
@@ -334,8 +334,7 @@ static int ieee80211_stop(struct net_device *dev)
ieee80211_configure_filter(local);
netif_tx_unlock_bh(local->mdev);

- local->hw.conf.flags |= IEEE80211_CONF_RADIOTAP;
- ieee80211_hw_config(local);
+ local->hw.conf.flags &= ~IEEE80211_CONF_RADIOTAP;
}
break;
case IEEE80211_IF_TYPE_STA:




2007-11-28 13:31:49

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] mac80211: Fix behavior of ieee80211_open and ieee80211_close


On Wed, 2007-11-28 at 01:57 -0500, Michael Wu wrote:
> This patch fixes:
> - Incorrect calls to ieee80211_hw_config when the radiotap flag is set.
> - Failure to actually unset the radiotap flag when all monitors are down.
> - Failure to call ieee80211_hw_config after successful interface start.
>
> Signed-off-by: Michael Wu <[email protected]>

Thanks. I knew about the second one and just ran into the third one
yesterday after fixing up iwlwifi's radiotap support.

Acked-by: Johannes Berg <[email protected]>

> ---
>
> net/mac80211/ieee80211.c | 5 ++---
> 1 files changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c
> index 59350b8..fc8b29c 100644
> --- a/net/mac80211/ieee80211.c
> +++ b/net/mac80211/ieee80211.c
> @@ -216,6 +216,7 @@ static int ieee80211_open(struct net_device *dev)
> res = local->ops->start(local_to_hw(local));
> if (res)
> return res;
> + ieee80211_hw_config(local);
> }
>
> switch (sdata->type) {
> @@ -232,7 +233,6 @@ static int ieee80211_open(struct net_device *dev)
> netif_tx_unlock_bh(local->mdev);
>
> local->hw.conf.flags |= IEEE80211_CONF_RADIOTAP;
> - ieee80211_hw_config(local);
> }
> break;
> case IEEE80211_IF_TYPE_STA:
> @@ -334,8 +334,7 @@ static int ieee80211_stop(struct net_device *dev)
> ieee80211_configure_filter(local);
> netif_tx_unlock_bh(local->mdev);
>
> - local->hw.conf.flags |= IEEE80211_CONF_RADIOTAP;
> - ieee80211_hw_config(local);
> + local->hw.conf.flags &= ~IEEE80211_CONF_RADIOTAP;
> }
> break;
> case IEEE80211_IF_TYPE_STA:
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>


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