aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/mac80211.h
diff options
context:
space:
mode:
authorArik Nemtsov <arik@wizery.com>2014-11-09 11:50:19 -0500
committerJohannes Berg <johannes.berg@intel.com>2014-11-19 12:45:21 -0500
commita7a6bdd0670feb8bfc26d41cda32b6064dbca50e (patch)
treed343591f508af2d1a15f5b265e7ddaf182e34129 /include/net/mac80211.h
parent53837584438f8899e061ada4663ae1d09b49b96a (diff)
mac80211: introduce TDLS channel switch ops
Implement the cfg80211 TDLS channel switch ops and introduce new mac80211 ones for low-level drivers. Verify low-level driver support for the new ops when using the relevant wiphy feature bit. Also verify the peer supports channel switching before passing the command down. Add a new STA flag to track the off-channel state with the TDLS peer and make sure to cancel the channel-switch if the peer STA is unexpectedly removed. Signed-off-by: Arik Nemtsov <arikx.nemtsov@intel.com> Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r--include/net/mac80211.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 83232aa2f077..fdedceb7adcb 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2915,6 +2915,16 @@ enum ieee80211_reconfig_type {
2915 * 2915 *
2916 * @get_txpower: get current maximum tx power (in dBm) based on configuration 2916 * @get_txpower: get current maximum tx power (in dBm) based on configuration
2917 * and hardware limits. 2917 * and hardware limits.
2918 *
2919 * @tdls_channel_switch: Start channel-switching with a TDLS peer. The driver
2920 * is responsible for continually initiating channel-switching operations
2921 * and returning to the base channel for communication with the AP. The
2922 * driver receives a channel-switch request template and the location of
2923 * the switch-timing IE within the template as part of the invocation.
2924 * The template is valid only within the call, and the driver can
2925 * optionally copy the skb for further re-use.
2926 * @tdls_cancel_channel_switch: Stop channel-switching with a TDLS peer. Both
2927 * peers must be on the base channel when the call completes.
2918 */ 2928 */
2919struct ieee80211_ops { 2929struct ieee80211_ops {
2920 void (*tx)(struct ieee80211_hw *hw, 2930 void (*tx)(struct ieee80211_hw *hw,
@@ -3126,6 +3136,15 @@ struct ieee80211_ops {
3126 u32 (*get_expected_throughput)(struct ieee80211_sta *sta); 3136 u32 (*get_expected_throughput)(struct ieee80211_sta *sta);
3127 int (*get_txpower)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 3137 int (*get_txpower)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
3128 int *dbm); 3138 int *dbm);
3139
3140 int (*tdls_channel_switch)(struct ieee80211_hw *hw,
3141 struct ieee80211_vif *vif,
3142 struct ieee80211_sta *sta, u8 oper_class,
3143 struct cfg80211_chan_def *chandef,
3144 struct sk_buff *skb, u32 ch_sw_tm_ie);
3145 void (*tdls_cancel_channel_switch)(struct ieee80211_hw *hw,
3146 struct ieee80211_vif *vif,
3147 struct ieee80211_sta *sta);
3129}; 3148};
3130 3149
3131/** 3150/**