diff options
author | Arik Nemtsov <arik@wizery.com> | 2014-11-09 11:50:19 -0500 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2014-11-19 12:45:21 -0500 |
commit | a7a6bdd0670feb8bfc26d41cda32b6064dbca50e (patch) | |
tree | d343591f508af2d1a15f5b265e7ddaf182e34129 /include/net/mac80211.h | |
parent | 53837584438f8899e061ada4663ae1d09b49b96a (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.h | 19 |
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 | */ |
2919 | struct ieee80211_ops { | 2929 | struct 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 | /** |