iwlwifi: mvm: move AP-specific code to right function
authorJohannes Berg <johannes.berg@intel.com>
Wed, 24 Aug 2016 08:05:40 +0000 (10:05 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Mon, 19 Sep 2016 08:29:32 +0000 (11:29 +0300)
There's no need for the common MAC context function to have an
if on AP mode, the values can be overridden in the AP-specific
function later. Clean that up by adding the full command as a
new parameter to the AP-specific function, and doing it there.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c

index d742d27d8de0aa22f469a0d55d673df6f4aef1bc..6b962d6b067a2017d5bd1f3e855aa8af8a11822b 100644 (file)
@@ -774,26 +774,6 @@ static void iwl_mvm_mac_ctxt_cmd_common(struct iwl_mvm *mvm,
                cmd->ac[txf].fifos_mask = BIT(txf);
        }
 
-       if (vif->type == NL80211_IFTYPE_AP) {
-               /* in AP mode, the MCAST FIFO takes the EDCA params from VO */
-               cmd->ac[IWL_MVM_TX_FIFO_VO].fifos_mask |=
-                       BIT(IWL_MVM_TX_FIFO_MCAST);
-
-               /*
-                * in AP mode, pass probe requests and beacons from other APs
-                * (needed for ht protection); when there're no any associated
-                * station don't ask FW to pass beacons to prevent unnecessary
-                * wake-ups.
-                */
-               cmd->filter_flags |= cpu_to_le32(MAC_FILTER_IN_PROBE_REQUEST);
-               if (mvmvif->ap_assoc_sta_count || !mvm->drop_bcn_ap_mode) {
-                       cmd->filter_flags |= cpu_to_le32(MAC_FILTER_IN_BEACON);
-                       IWL_DEBUG_HC(mvm, "Asking FW to pass beacons\n");
-               } else {
-                       IWL_DEBUG_HC(mvm, "No need to receive beacons\n");
-               }
-       }
-
        if (vif->bss_conf.qos)
                cmd->qos_flags |= cpu_to_le32(MAC_QOS_FLG_UPDATE_EDCA);
 
@@ -1191,6 +1171,7 @@ static void iwl_mvm_mac_ap_iterator(void *_data, u8 *mac,
  */
 static void iwl_mvm_mac_ctxt_cmd_fill_ap(struct iwl_mvm *mvm,
                                         struct ieee80211_vif *vif,
+                                        struct iwl_mac_ctx_cmd *cmd,
                                         struct iwl_mac_data_ap *ctxt_ap,
                                         bool add)
 {
@@ -1201,6 +1182,23 @@ static void iwl_mvm_mac_ctxt_cmd_fill_ap(struct iwl_mvm *mvm,
                .beacon_device_ts = 0
        };
 
+       /* in AP mode, the MCAST FIFO takes the EDCA params from VO */
+       cmd->ac[IWL_MVM_TX_FIFO_VO].fifos_mask |= BIT(IWL_MVM_TX_FIFO_MCAST);
+
+       /*
+        * in AP mode, pass probe requests and beacons from other APs
+        * (needed for ht protection); when there're no any associated
+        * station don't ask FW to pass beacons to prevent unnecessary
+        * wake-ups.
+        */
+       cmd->filter_flags |= cpu_to_le32(MAC_FILTER_IN_PROBE_REQUEST);
+       if (mvmvif->ap_assoc_sta_count || !mvm->drop_bcn_ap_mode) {
+               cmd->filter_flags |= cpu_to_le32(MAC_FILTER_IN_BEACON);
+               IWL_DEBUG_HC(mvm, "Asking FW to pass beacons\n");
+       } else {
+               IWL_DEBUG_HC(mvm, "No need to receive beacons\n");
+       }
+
        ctxt_ap->bi = cpu_to_le32(vif->bss_conf.beacon_int);
        ctxt_ap->bi_reciprocal =
                cpu_to_le32(iwl_mvm_reciprocal(vif->bss_conf.beacon_int));
@@ -1258,7 +1256,7 @@ static int iwl_mvm_mac_ctxt_cmd_ap(struct iwl_mvm *mvm,
        iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action);
 
        /* Fill the data specific for ap mode */
-       iwl_mvm_mac_ctxt_cmd_fill_ap(mvm, vif, &cmd.ap,
+       iwl_mvm_mac_ctxt_cmd_fill_ap(mvm, vif, &cmd, &cmd.ap,
                                     action == FW_CTXT_ACTION_ADD);
 
        return iwl_mvm_mac_ctxt_send_cmd(mvm, &cmd);
@@ -1277,7 +1275,7 @@ static int iwl_mvm_mac_ctxt_cmd_go(struct iwl_mvm *mvm,
        iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, NULL, action);
 
        /* Fill the data specific for GO mode */
-       iwl_mvm_mac_ctxt_cmd_fill_ap(mvm, vif, &cmd.go.ap,
+       iwl_mvm_mac_ctxt_cmd_fill_ap(mvm, vif, &cmd, &cmd.go.ap,
                                     action == FW_CTXT_ACTION_ADD);
 
        cmd.go.ctwin = cpu_to_le32(noa->oppps_ctwindow &