These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / net / wireless / iwlwifi / iwl-nvm-parse.c
index ef20be0..d829849 100644 (file)
@@ -249,7 +249,7 @@ static u32 iwl_get_channel_flags(u8 ch_num, int ch_idx, bool is_5ghz,
         */
        if ((nvm_flags & NVM_CHANNEL_GO_CONCURRENT) &&
            (flags & IEEE80211_CHAN_NO_IR))
-               flags |= IEEE80211_CHAN_GO_CONCURRENT;
+               flags |= IEEE80211_CHAN_IR_CONCURRENT;
 
        return flags;
 }
@@ -580,13 +580,15 @@ static void iwl_set_hw_address_family_8000(struct device *dev,
        IWL_ERR_DEV(dev, "mac address is not found\n");
 }
 
+#define IWL_4165_DEVICE_ID 0x5501
+
 struct iwl_nvm_data *
 iwl_parse_nvm_data(struct device *dev, const struct iwl_cfg *cfg,
                   const __le16 *nvm_hw, const __le16 *nvm_sw,
                   const __le16 *nvm_calib, const __le16 *regulatory,
                   const __le16 *mac_override, const __le16 *phy_sku,
                   u8 tx_chains, u8 rx_chains, bool lar_fw_supported,
-                  u32 mac_addr0, u32 mac_addr1)
+                  u32 mac_addr0, u32 mac_addr1, u32 hw_id)
 {
        struct iwl_nvm_data *data;
        u32 sku;
@@ -625,6 +627,17 @@ iwl_parse_nvm_data(struct device *dev, const struct iwl_cfg *cfg,
                                    (sku & NVM_SKU_CAP_11AC_ENABLE);
        data->sku_cap_mimo_disabled = sku & NVM_SKU_CAP_MIMO_DISABLE;
 
+       /*
+        * OTP 0x52 bug work around
+        * define antenna 1x1 according to MIMO disabled
+        */
+       if (hw_id == IWL_4165_DEVICE_ID && data->sku_cap_mimo_disabled) {
+               data->valid_tx_ant = ANT_B;
+               data->valid_rx_ant = ANT_B;
+               tx_chains = ANT_B;
+               rx_chains = ANT_B;
+       }
+
        data->n_hw_addrs = iwl_get_n_hw_addrs(cfg, nvm_sw);
 
        if (cfg->device_family != IWL_DEVICE_FAMILY_8000) {