|
@@ -2017,6 +2017,18 @@ static void iwl_mvm_mac_mgd_prepare_tx(struct ieee80211_hw *hw,
|
|
|
mutex_unlock(&mvm->mutex);
|
|
|
}
|
|
|
|
|
|
+static void iwl_mvm_mac_mgd_protect_tdls_discover(struct ieee80211_hw *hw,
|
|
|
+ struct ieee80211_vif *vif)
|
|
|
+{
|
|
|
+ struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
|
|
|
+ u32 duration = 2 * vif->bss_conf.dtim_period * vif->bss_conf.beacon_int;
|
|
|
+
|
|
|
+ mutex_lock(&mvm->mutex);
|
|
|
+ /* Protect the session to hear the TDLS setup response on the channel */
|
|
|
+ iwl_mvm_protect_session(mvm, vif, duration, duration, 100);
|
|
|
+ mutex_unlock(&mvm->mutex);
|
|
|
+}
|
|
|
+
|
|
|
static int iwl_mvm_mac_sched_scan_start(struct ieee80211_hw *hw,
|
|
|
struct ieee80211_vif *vif,
|
|
|
struct cfg80211_sched_scan_request *req,
|
|
@@ -2781,6 +2793,7 @@ const struct ieee80211_ops iwl_mvm_hw_ops = {
|
|
|
.sta_rc_update = iwl_mvm_sta_rc_update,
|
|
|
.conf_tx = iwl_mvm_mac_conf_tx,
|
|
|
.mgd_prepare_tx = iwl_mvm_mac_mgd_prepare_tx,
|
|
|
+ .mgd_protect_tdls_discover = iwl_mvm_mac_mgd_protect_tdls_discover,
|
|
|
.flush = iwl_mvm_mac_flush,
|
|
|
.sched_scan_start = iwl_mvm_mac_sched_scan_start,
|
|
|
.sched_scan_stop = iwl_mvm_mac_sched_scan_stop,
|