These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / net / wireless / mwl8k.c
index 9592116..30e3aaa 100644 (file)
@@ -2380,7 +2380,7 @@ mwl8k_set_ht_caps(struct ieee80211_hw *hw,
        if (cap & MWL8K_CAP_GREENFIELD)
                band->ht_cap.cap |= IEEE80211_HT_CAP_GRN_FLD;
        if (cap & MWL8K_CAP_AMPDU) {
-               hw->flags |= IEEE80211_HW_AMPDU_AGGREGATION;
+               ieee80211_hw_set(hw, AMPDU_AGGREGATION);
                band->ht_cap.ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K;
                band->ht_cap.ampdu_density = IEEE80211_HT_MPDU_DENSITY_NONE;
        }
@@ -5019,35 +5019,36 @@ mwl8k_bss_info_changed_sta(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
                memcpy(ap_mcs_rates, ap->ht_cap.mcs.rx_mask, 16);
 
                rcu_read_unlock();
-       }
 
-       if ((changed & BSS_CHANGED_ASSOC) && vif->bss_conf.assoc &&
-           !priv->ap_fw) {
-               rc = mwl8k_cmd_set_rate(hw, vif, ap_legacy_rates, ap_mcs_rates);
-               if (rc)
-                       goto out;
+               if (changed & BSS_CHANGED_ASSOC) {
+                       if (!priv->ap_fw) {
+                               rc = mwl8k_cmd_set_rate(hw, vif,
+                                                       ap_legacy_rates,
+                                                       ap_mcs_rates);
+                               if (rc)
+                                       goto out;
 
-               rc = mwl8k_cmd_use_fixed_rate_sta(hw);
-               if (rc)
-                       goto out;
-       } else {
-               if ((changed & BSS_CHANGED_ASSOC) && vif->bss_conf.assoc &&
-                   priv->ap_fw) {
-                       int idx;
-                       int rate;
+                               rc = mwl8k_cmd_use_fixed_rate_sta(hw);
+                               if (rc)
+                                       goto out;
+                       } else {
+                               int idx;
+                               int rate;
 
-                       /* Use AP firmware specific rate command.
-                        */
-                       idx = ffs(vif->bss_conf.basic_rates);
-                       if (idx)
-                               idx--;
+                               /* Use AP firmware specific rate command.
+                                */
+                               idx = ffs(vif->bss_conf.basic_rates);
+                               if (idx)
+                                       idx--;
 
-                       if (hw->conf.chandef.chan->band == IEEE80211_BAND_2GHZ)
-                               rate = mwl8k_rates_24[idx].hw_value;
-                       else
-                               rate = mwl8k_rates_50[idx].hw_value;
+                               if (hw->conf.chandef.chan->band ==
+                                   IEEE80211_BAND_2GHZ)
+                                       rate = mwl8k_rates_24[idx].hw_value;
+                               else
+                                       rate = mwl8k_rates_50[idx].hw_value;
 
-                       mwl8k_cmd_use_fixed_rate_ap(hw, rate, rate);
+                               mwl8k_cmd_use_fixed_rate_ap(hw, rate, rate);
+                       }
                }
        }
 
@@ -5192,7 +5193,7 @@ mwl8k_configure_filter_sniffer(struct ieee80211_hw *hw,
                priv->sniffer_enabled = true;
        }
 
-       *total_flags &= FIF_PROMISC_IN_BSS | FIF_ALLMULTI |
+       *total_flags &= FIF_ALLMULTI |
                        FIF_BCN_PRBRESP_PROMISC | FIF_CONTROL |
                        FIF_OTHER_BSS;
 
@@ -5422,7 +5423,7 @@ static int
 mwl8k_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
                   enum ieee80211_ampdu_mlme_action action,
                   struct ieee80211_sta *sta, u16 tid, u16 *ssn,
-                  u8 buf_size)
+                  u8 buf_size, bool amsdu)
 {
 
        int i, rc = 0;
@@ -5431,7 +5432,7 @@ mwl8k_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
        u8 *addr = sta->addr, idx;
        struct mwl8k_sta *sta_info = MWL8K_STA(sta);
 
-       if (!(hw->flags & IEEE80211_HW_AMPDU_AGGREGATION))
+       if (!ieee80211_hw_check(hw, AMPDU_AGGREGATION))
                return -ENOTSUPP;
 
        spin_lock(&priv->stream_lock);
@@ -6076,14 +6077,15 @@ static int mwl8k_firmware_load_success(struct mwl8k_priv *priv)
        hw->queues = MWL8K_TX_WMM_QUEUES;
 
        /* Set rssi values to dBm */
-       hw->flags |= IEEE80211_HW_SIGNAL_DBM | IEEE80211_HW_HAS_RATE_CONTROL;
+       ieee80211_hw_set(hw, SIGNAL_DBM);
+       ieee80211_hw_set(hw, HAS_RATE_CONTROL);
 
        /*
         * Ask mac80211 to not to trigger PS mode
         * based on PM bit of incoming frames.
         */
        if (priv->ap_fw)
-               hw->flags |= IEEE80211_HW_AP_LINK_PS;
+               ieee80211_hw_set(hw, AP_LINK_PS);
 
        hw->vif_data_size = sizeof(struct mwl8k_vif);
        hw->sta_data_size = sizeof(struct mwl8k_sta);