summaryrefslogtreecommitdiffstats
path: root/include/net/mac80211.h
diff options
context:
space:
mode:
authorLuciano Coelho2014-02-27 13:33:47 +0100
committerJohannes Berg2014-04-09 10:55:56 +0200
commit5d52ee81101943c507f45c76368026935f6bb75a (patch)
treec048e3cf544e0e87448d4974a9b41e7f435a098a /include/net/mac80211.h
parentmac80211: implement chanctx reservation (diff)
downloadkernel-qcow2-linux-5d52ee81101943c507f45c76368026935f6bb75a.tar.gz
kernel-qcow2-linux-5d52ee81101943c507f45c76368026935f6bb75a.tar.xz
kernel-qcow2-linux-5d52ee81101943c507f45c76368026935f6bb75a.zip
mac80211: allow reservation of a running chanctx
With single-channel drivers, we need to be able to change a running chanctx if we want to use chanctx reservation. Not all drivers may be able to do this, so add a flag that indicates support for it. Changing a running chanctx can also be used as an optimization in multi-channel drivers when the context needs to be reserved for future usage. Introduce IEEE80211_CHANCTX_RESERVED chanctx mode to mark a channel as reserved so nobody else can use it (since we know it's going to change). In the future, we may allow several vifs to use the same reservation as long as they plan to use the chanctx on the same future channel. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r--include/net/mac80211.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index faa7b9cf9cc7..03ab3c08fb70 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1555,6 +1555,12 @@ struct ieee80211_tx_control {
* for a single active channel while using channel contexts. When support
* is not enabled the default action is to disconnect when getting the
* CSA frame.
+ *
+ * @IEEE80211_HW_CHANGE_RUNNING_CHANCTX: The hardware can change a
+ * channel context on-the-fly. This is needed for channel switch
+ * on single-channel hardware. It can also be used as an
+ * optimization in certain channel switch cases with
+ * multi-channel.
*/
enum ieee80211_hw_flags {
IEEE80211_HW_HAS_RATE_CONTROL = 1<<0,
@@ -1586,6 +1592,7 @@ enum ieee80211_hw_flags {
IEEE80211_HW_TIMING_BEACON_ONLY = 1<<26,
IEEE80211_HW_SUPPORTS_HT_CCK_RATES = 1<<27,
IEEE80211_HW_CHANCTX_STA_CSA = 1<<28,
+ IEEE80211_HW_CHANGE_RUNNING_CHANCTX = 1<<29,
};
/**