* [PATCH] mac80211: don't always advertise remain-on-channel
@ 2012-03-26 16:47 Johannes Berg
2012-03-26 20:10 ` Luciano Coelho
0 siblings, 1 reply; 2+ messages in thread
From: Johannes Berg @ 2012-03-26 16:47 UTC (permalink / raw)
To: linux-wireless
Cc: Jouni Malinen, Sujith, Luciano Coelho, Christian Lamparter,
Luis R. Rodriguez
From: Johannes Berg <johannes.berg@intel.com>
Not all devices are really capable of implementing
remain-on-channel, even if it is implemented in SW,
as they can't necessarily deal with channel changes
while associated.
Remove the WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL and add
it only if either the driver has remain_on_channel
implemented in the driver/device.
Also add it to all drivers that advertise P2P right
now since those definitely have to have it working.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
I think e.g. wl1251 would completely get fucked up by this .. let's not
go there. Also iwlegacy wouldn't like offchannel much, and doesn't need
it since it'll never have P2P anyway.
Since we don't need offchannel any more for "real" operation (auth/assoc
used to use it) we should clean this up too.
drivers/net/wireless/ath/ath9k/htc_drv_init.c | 3 ++-
drivers/net/wireless/ath/ath9k/init.c | 1 +
drivers/net/wireless/ath/carl9170/fw.c | 2 ++
drivers/net/wireless/mac80211_hwsim.c | 3 ++-
drivers/net/wireless/wl12xx/main.c | 3 ++-
net/mac80211/main.c | 6 ++++--
6 files changed, 13 insertions(+), 5 deletions(-)
--- a/net/mac80211/main.c 2012-03-26 18:41:42.000000000 +0200
+++ b/net/mac80211/main.c 2012-03-26 18:41:43.000000000 +0200
@@ -560,8 +560,10 @@ struct ieee80211_hw *ieee80211_alloc_hw(
WIPHY_FLAG_4ADDR_AP |
WIPHY_FLAG_4ADDR_STATION |
WIPHY_FLAG_REPORTS_OBSS |
- WIPHY_FLAG_OFFCHAN_TX |
- WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL;
+ WIPHY_FLAG_OFFCHAN_TX;
+
+ if (ops->remain_on_channel)
+ wiphy->flags |= WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL;
wiphy->features = NL80211_FEATURE_SK_TX_STATUS |
NL80211_FEATURE_HT_IBSS;
--- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c 2012-03-26 18:41:42.000000000 +0200
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c 2012-03-26 18:41:43.000000000 +0200
@@ -711,7 +711,8 @@ static void ath9k_set_hw_capab(struct at
hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT;
- hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN;
+ hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN |
+ WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL;
hw->queues = 4;
hw->channel_change_time = 5000;
--- a/drivers/net/wireless/ath/ath9k/init.c 2012-03-26 18:41:42.000000000 +0200
+++ b/drivers/net/wireless/ath/ath9k/init.c 2012-03-26 18:41:43.000000000 +0200
@@ -676,6 +676,7 @@ void ath9k_set_hw_capab(struct ath_softc
hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN;
hw->wiphy->flags |= WIPHY_FLAG_SUPPORTS_TDLS;
+ hw->wiphy->flags |= WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL;
hw->queues = 4;
hw->max_rates = 4;
--- a/drivers/net/wireless/ath/carl9170/fw.c 2012-03-26 18:41:42.000000000 +0200
+++ b/drivers/net/wireless/ath/carl9170/fw.c 2012-03-26 18:41:43.000000000 +0200
@@ -355,6 +355,8 @@ static int carl9170_fw(struct ar9170 *ar
ar->hw->wiphy->interface_modes |= if_comb_types;
+ ar->hw->wiphy->flags |= WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL;
+
#undef SUPPORTED
return carl9170_fw_tx_sequence(ar);
}
--- a/drivers/net/wireless/wl12xx/main.c 2012-03-26 18:41:42.000000000 +0200
+++ b/drivers/net/wireless/wl12xx/main.c 2012-03-26 18:41:43.000000000 +0200
@@ -5242,7 +5242,8 @@ static int wl1271_init_ieee80211(struct
wl->hw->wiphy->max_sched_scan_ie_len = WL1271_CMD_TEMPL_MAX_SIZE -
sizeof(struct ieee80211_header);
- wl->hw->wiphy->flags |= WIPHY_FLAG_AP_UAPSD;
+ wl->hw->wiphy->flags |= WIPHY_FLAG_AP_UAPSD |
+ WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL;
/* make sure all our channels fit in the scanned_ch bitmask */
BUILD_BUG_ON(ARRAY_SIZE(wl1271_channels) +
--- a/drivers/net/wireless/mac80211_hwsim.c 2012-03-26 18:41:42.000000000 +0200
+++ b/drivers/net/wireless/mac80211_hwsim.c 2012-03-26 18:41:43.000000000 +0200
@@ -1791,7 +1791,8 @@ static int __init init_mac80211_hwsim(vo
IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS |
IEEE80211_HW_AMPDU_AGGREGATION;
- hw->wiphy->flags |= WIPHY_FLAG_SUPPORTS_TDLS;
+ hw->wiphy->flags |= WIPHY_FLAG_SUPPORTS_TDLS |
+ WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL;
/* ask mac80211 to reserve space for magic */
hw->vif_data_size = sizeof(struct hwsim_vif_priv);
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] mac80211: don't always advertise remain-on-channel
2012-03-26 16:47 [PATCH] mac80211: don't always advertise remain-on-channel Johannes Berg
@ 2012-03-26 20:10 ` Luciano Coelho
0 siblings, 0 replies; 2+ messages in thread
From: Luciano Coelho @ 2012-03-26 20:10 UTC (permalink / raw)
To: Johannes Berg
Cc: linux-wireless, Jouni Malinen, Sujith, Christian Lamparter,
Luis R. Rodriguez
On Mon, 2012-03-26 at 18:47 +0200, Johannes Berg wrote:
> From: Johannes Berg <johannes.berg@intel.com>
>
> Not all devices are really capable of implementing
> remain-on-channel, even if it is implemented in SW,
> as they can't necessarily deal with channel changes
> while associated.
>
> Remove the WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL and add
> it only if either the driver has remain_on_channel
> implemented in the driver/device.
>
> Also add it to all drivers that advertise P2P right
> now since those definitely have to have it working.
>
> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
> ---
> I think e.g. wl1251 would completely get fucked up by this .. let's not
> go there. Also iwlegacy wouldn't like offchannel much, and doesn't need
> it since it'll never have P2P anyway.
Yes, I'm pretty sure it wouldn't work as is with wl1251. So, let's
leave it out.
Otherwise, for the wl12xx part:
Acked-by: Luciano Coelho <coelho@ti.com>
--
Cheers,
Luca.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-03-26 20:10 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-26 16:47 [PATCH] mac80211: don't always advertise remain-on-channel Johannes Berg
2012-03-26 20:10 ` Luciano Coelho
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox