|
@@ -3143,6 +3143,20 @@ static int iwl_mvm_mac_testmode_cmd(struct ieee80211_hw *hw,
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+static void iwl_mvm_channel_switch(struct ieee80211_hw *hw,
|
|
|
+ struct ieee80211_vif *vif,
|
|
|
+ struct ieee80211_channel_switch *chsw)
|
|
|
+{
|
|
|
+ /* By implementing this operation, we prevent mac80211 from
|
|
|
+ * starting its own channel switch timer, so that we can call
|
|
|
+ * ieee80211_chswitch_done() ourselves at the right time
|
|
|
+ * (which is when the absence time event starts).
|
|
|
+ */
|
|
|
+
|
|
|
+ IWL_DEBUG_MAC80211(IWL_MAC80211_GET_MVM(hw),
|
|
|
+ "dummy channel switch op\n");
|
|
|
+}
|
|
|
+
|
|
|
static int iwl_mvm_pre_channel_switch(struct ieee80211_hw *hw,
|
|
|
struct ieee80211_vif *vif,
|
|
|
struct ieee80211_channel_switch *chsw)
|
|
@@ -3336,6 +3350,7 @@ const struct ieee80211_ops iwl_mvm_hw_ops = {
|
|
|
|
|
|
.set_tim = iwl_mvm_set_tim,
|
|
|
|
|
|
+ .channel_switch = iwl_mvm_channel_switch,
|
|
|
.pre_channel_switch = iwl_mvm_pre_channel_switch,
|
|
|
.post_channel_switch = iwl_mvm_post_channel_switch,
|
|
|
|