Loading drivers/net/wireless/iwlwifi/dvm/mac80211.c +0 −6 Original line number Diff line number Diff line Loading @@ -322,12 +322,6 @@ static void iwlagn_mac_stop(struct ieee80211_hw *hw) flush_workqueue(priv->workqueue); /* User space software may expect getting rfkill changes * even if interface is down, trans->down will leave the RF * kill interrupt enabled */ iwl_trans_stop_hw(priv->trans, false); IWL_DEBUG_MAC80211(priv, "leave\n"); } Loading drivers/net/wireless/iwlwifi/dvm/main.c +2 −2 Original line number Diff line number Diff line Loading @@ -1313,7 +1313,7 @@ static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans, } /* Reset chip to save power until we load uCode during "up". */ iwl_trans_stop_hw(priv->trans, false); iwl_trans_stop_device(priv->trans); priv->nvm_data = iwl_parse_eeprom_data(priv->trans->dev, priv->cfg, priv->eeprom_blob, Loading Loading @@ -1458,7 +1458,7 @@ static void iwl_op_mode_dvm_stop(struct iwl_op_mode *op_mode) dev_kfree_skb(priv->beacon_skb); iwl_trans_stop_hw(priv->trans, true); iwl_trans_op_mode_leave(priv->trans); ieee80211_free_hw(priv->hw); } Loading drivers/net/wireless/iwlwifi/iwl-7000.c +1 −1 Original line number Diff line number Diff line Loading @@ -108,7 +108,7 @@ static const struct iwl_base_params iwl7000_base_params = { }; static const struct iwl_ht_params iwl7000_ht_params = { .use_rts_for_aggregation = true, /* use rts/cts protection */ .stbc = true, .ht40_bands = BIT(IEEE80211_BAND_2GHZ) | BIT(IEEE80211_BAND_5GHZ), }; Loading drivers/net/wireless/iwlwifi/iwl-config.h +2 −0 Original line number Diff line number Diff line Loading @@ -162,12 +162,14 @@ struct iwl_base_params { }; /* * @stbc: support Tx STBC and 1*SS Rx STBC * @use_rts_for_aggregation: use rts/cts protection for HT traffic * @ht40_bands: bitmap of bands (using %IEEE80211_BAND_*) that support HT40 */ struct iwl_ht_params { enum ieee80211_smps_mode smps_mode; const bool ht_greenfield_support; /* if used set to true */ const bool stbc; bool use_rts_for_aggregation; u8 ht40_bands; }; Loading drivers/net/wireless/iwlwifi/iwl-drv.c +39 −0 Original line number Diff line number Diff line Loading @@ -322,6 +322,41 @@ static void set_sec_offset(struct iwl_firmware_pieces *pieces, pieces->img[type].sec[sec].offset = offset; } static int iwl_store_cscheme(struct iwl_fw *fw, const u8 *data, const u32 len) { int i, j; struct iwl_fw_cscheme_list *l = (struct iwl_fw_cscheme_list *)data; struct iwl_fw_cipher_scheme *fwcs; struct ieee80211_cipher_scheme *cs; u32 cipher; if (len < sizeof(*l) || len < sizeof(l->size) + l->size * sizeof(l->cs[0])) return -EINVAL; for (i = 0, j = 0; i < IWL_UCODE_MAX_CS && i < l->size; i++) { fwcs = &l->cs[j]; cipher = le32_to_cpu(fwcs->cipher); /* we skip schemes with zero cipher suite selector */ if (!cipher) continue; cs = &fw->cs[j++]; cs->cipher = cipher; cs->iftype = BIT(NL80211_IFTYPE_STATION); cs->hdr_len = fwcs->hdr_len; cs->pn_len = fwcs->pn_len; cs->pn_off = fwcs->pn_off; cs->key_idx_off = fwcs->key_idx_off; cs->key_idx_mask = fwcs->key_idx_mask; cs->key_idx_shift = fwcs->key_idx_shift; cs->mic_len = fwcs->mic_len; } return 0; } /* * Gets uCode section from tlv. */ Loading Loading @@ -729,6 +764,10 @@ static int iwl_parse_tlv_firmware(struct iwl_drv *drv, return -EINVAL; } break; case IWL_UCODE_TLV_CSCHEME: if (iwl_store_cscheme(&drv->fw, tlv_data, tlv_len)) goto invalid_tlv_len; break; default: IWL_DEBUG_INFO(drv, "unknown TLV: %d\n", tlv_type); break; Loading Loading
drivers/net/wireless/iwlwifi/dvm/mac80211.c +0 −6 Original line number Diff line number Diff line Loading @@ -322,12 +322,6 @@ static void iwlagn_mac_stop(struct ieee80211_hw *hw) flush_workqueue(priv->workqueue); /* User space software may expect getting rfkill changes * even if interface is down, trans->down will leave the RF * kill interrupt enabled */ iwl_trans_stop_hw(priv->trans, false); IWL_DEBUG_MAC80211(priv, "leave\n"); } Loading
drivers/net/wireless/iwlwifi/dvm/main.c +2 −2 Original line number Diff line number Diff line Loading @@ -1313,7 +1313,7 @@ static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans, } /* Reset chip to save power until we load uCode during "up". */ iwl_trans_stop_hw(priv->trans, false); iwl_trans_stop_device(priv->trans); priv->nvm_data = iwl_parse_eeprom_data(priv->trans->dev, priv->cfg, priv->eeprom_blob, Loading Loading @@ -1458,7 +1458,7 @@ static void iwl_op_mode_dvm_stop(struct iwl_op_mode *op_mode) dev_kfree_skb(priv->beacon_skb); iwl_trans_stop_hw(priv->trans, true); iwl_trans_op_mode_leave(priv->trans); ieee80211_free_hw(priv->hw); } Loading
drivers/net/wireless/iwlwifi/iwl-7000.c +1 −1 Original line number Diff line number Diff line Loading @@ -108,7 +108,7 @@ static const struct iwl_base_params iwl7000_base_params = { }; static const struct iwl_ht_params iwl7000_ht_params = { .use_rts_for_aggregation = true, /* use rts/cts protection */ .stbc = true, .ht40_bands = BIT(IEEE80211_BAND_2GHZ) | BIT(IEEE80211_BAND_5GHZ), }; Loading
drivers/net/wireless/iwlwifi/iwl-config.h +2 −0 Original line number Diff line number Diff line Loading @@ -162,12 +162,14 @@ struct iwl_base_params { }; /* * @stbc: support Tx STBC and 1*SS Rx STBC * @use_rts_for_aggregation: use rts/cts protection for HT traffic * @ht40_bands: bitmap of bands (using %IEEE80211_BAND_*) that support HT40 */ struct iwl_ht_params { enum ieee80211_smps_mode smps_mode; const bool ht_greenfield_support; /* if used set to true */ const bool stbc; bool use_rts_for_aggregation; u8 ht40_bands; }; Loading
drivers/net/wireless/iwlwifi/iwl-drv.c +39 −0 Original line number Diff line number Diff line Loading @@ -322,6 +322,41 @@ static void set_sec_offset(struct iwl_firmware_pieces *pieces, pieces->img[type].sec[sec].offset = offset; } static int iwl_store_cscheme(struct iwl_fw *fw, const u8 *data, const u32 len) { int i, j; struct iwl_fw_cscheme_list *l = (struct iwl_fw_cscheme_list *)data; struct iwl_fw_cipher_scheme *fwcs; struct ieee80211_cipher_scheme *cs; u32 cipher; if (len < sizeof(*l) || len < sizeof(l->size) + l->size * sizeof(l->cs[0])) return -EINVAL; for (i = 0, j = 0; i < IWL_UCODE_MAX_CS && i < l->size; i++) { fwcs = &l->cs[j]; cipher = le32_to_cpu(fwcs->cipher); /* we skip schemes with zero cipher suite selector */ if (!cipher) continue; cs = &fw->cs[j++]; cs->cipher = cipher; cs->iftype = BIT(NL80211_IFTYPE_STATION); cs->hdr_len = fwcs->hdr_len; cs->pn_len = fwcs->pn_len; cs->pn_off = fwcs->pn_off; cs->key_idx_off = fwcs->key_idx_off; cs->key_idx_mask = fwcs->key_idx_mask; cs->key_idx_shift = fwcs->key_idx_shift; cs->mic_len = fwcs->mic_len; } return 0; } /* * Gets uCode section from tlv. */ Loading Loading @@ -729,6 +764,10 @@ static int iwl_parse_tlv_firmware(struct iwl_drv *drv, return -EINVAL; } break; case IWL_UCODE_TLV_CSCHEME: if (iwl_store_cscheme(&drv->fw, tlv_data, tlv_len)) goto invalid_tlv_len; break; default: IWL_DEBUG_INFO(drv, "unknown TLV: %d\n", tlv_type); break; Loading