* some fixes for PN key programming when entering D3;
* fix for CSA when the AP is stopped during a channel switch; * fix firmware name for 3160 devices; * add some new PCI IDs for 7265 devices; * fix CT-kill entry; * fix kernel panic when a sysassert occurs in the init ucode flow; -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJWEly7AAoJEKFHnKIaPMX6gpMP/2l7TAlCHTeNj1S8QMa6mOnw HhBgtu/U/dwy0ry1KzVJArspAjpIdrizPvPmuJMO6+gSlHRHz8YMrLMYGTelKrdP rMX4Ir+kyrywKJjKpquwwWv1pT7m7r5Y/tAEXauxnf/z3yJ6zwGc7G2aP3BWUo9E +GwDEzvu/pPDpxI3ZjiEyZkbk2SA1DJk5TRzrJhUxdYSa8WF7dOxQBuTcZz1H/Vt /ctWxAUnaDyciBpWDm31q8YJFzwbFysT50NbUU1xmvWBxDMlVJXU20G9tj0cLCda PF1CcZxT/oeRJ+pvm8M6GyxWutf8s/5ALLEmNK02255Ht1+4PfnDEGiGYYJp/cU6 pZ3Vt4PyH7h8yDizSguS/jcwA7PMNVbk1h2KcHX76U+vrffeNudp4eH97WeG9TB1 9RPHnEMpM6p9wEluniqdyDlhFokR+IHwzmjj/+JGwszWGx97RmA8JGFJNOaVwhGC xI8EWFIODW2uNRdIc1aej9ridWrcos5Hkm4GZWlXzm8TXvGFUrESAHlfC9HnRABA imwGV2svVLtrbo9h1GCk/wGQvZvmxfQEEAdHWbVsV8cygJ+B8CzgrXz4G+d8qZb5 SKN7nMXvcpaM6lLdo4brQQzl1ZpB7+Ucy8F5lhN1bBrhRszNwF/sL/z43G8+/AN4 jiVw1hD18tzXwBZ6rF0/ =UHbJ -----END PGP SIGNATURE----- Merge tag 'iwlwifi-for-kalle-2015-10-05' of git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-fixes * some fixes for PN key programming when entering D3; * fix for CSA when the AP is stopped during a channel switch; * fix firmware name for 3160 devices; * add some new PCI IDs for 7265 devices; * fix CT-kill entry; * fix kernel panic when a sysassert occurs in the init ucode flow;
This commit is contained in:
commit
de28a05ee2
@ -1020,7 +1020,7 @@ static void iwlagn_wowlan_program_keys(struct ieee80211_hw *hw,
|
||||
u8 *pn = seq.ccmp.pn;
|
||||
|
||||
ieee80211_get_key_rx_seq(key, i, &seq);
|
||||
aes_sc->pn = cpu_to_le64(
|
||||
aes_sc[i].pn = cpu_to_le64(
|
||||
(u64)pn[5] |
|
||||
((u64)pn[4] << 8) |
|
||||
((u64)pn[3] << 16) |
|
||||
|
@ -348,6 +348,6 @@ const struct iwl_cfg iwl7265d_n_cfg = {
|
||||
};
|
||||
|
||||
MODULE_FIRMWARE(IWL7260_MODULE_FIRMWARE(IWL7260_UCODE_API_OK));
|
||||
MODULE_FIRMWARE(IWL3160_MODULE_FIRMWARE(IWL3160_UCODE_API_OK));
|
||||
MODULE_FIRMWARE(IWL3160_MODULE_FIRMWARE(IWL7260_UCODE_API_OK));
|
||||
MODULE_FIRMWARE(IWL7265_MODULE_FIRMWARE(IWL7260_UCODE_API_OK));
|
||||
MODULE_FIRMWARE(IWL7265D_MODULE_FIRMWARE(IWL7260_UCODE_API_OK));
|
||||
|
@ -274,18 +274,13 @@ static void iwl_mvm_wowlan_program_keys(struct ieee80211_hw *hw,
|
||||
break;
|
||||
case WLAN_CIPHER_SUITE_CCMP:
|
||||
if (sta) {
|
||||
u8 *pn = seq.ccmp.pn;
|
||||
u64 pn64;
|
||||
|
||||
aes_sc = data->rsc_tsc->all_tsc_rsc.aes.unicast_rsc;
|
||||
aes_tx_sc = &data->rsc_tsc->all_tsc_rsc.aes.tsc;
|
||||
|
||||
ieee80211_get_key_tx_seq(key, &seq);
|
||||
aes_tx_sc->pn = cpu_to_le64((u64)pn[5] |
|
||||
((u64)pn[4] << 8) |
|
||||
((u64)pn[3] << 16) |
|
||||
((u64)pn[2] << 24) |
|
||||
((u64)pn[1] << 32) |
|
||||
((u64)pn[0] << 40));
|
||||
pn64 = atomic64_read(&key->tx_pn);
|
||||
aes_tx_sc->pn = cpu_to_le64(pn64);
|
||||
} else {
|
||||
aes_sc = data->rsc_tsc->all_tsc_rsc.aes.multicast_rsc;
|
||||
}
|
||||
@ -298,7 +293,7 @@ static void iwl_mvm_wowlan_program_keys(struct ieee80211_hw *hw,
|
||||
u8 *pn = seq.ccmp.pn;
|
||||
|
||||
ieee80211_get_key_rx_seq(key, i, &seq);
|
||||
aes_sc->pn = cpu_to_le64((u64)pn[5] |
|
||||
aes_sc[i].pn = cpu_to_le64((u64)pn[5] |
|
||||
((u64)pn[4] << 8) |
|
||||
((u64)pn[3] << 16) |
|
||||
((u64)pn[2] << 24) |
|
||||
@ -1453,15 +1448,15 @@ static void iwl_mvm_d3_update_gtks(struct ieee80211_hw *hw,
|
||||
|
||||
switch (key->cipher) {
|
||||
case WLAN_CIPHER_SUITE_CCMP:
|
||||
iwl_mvm_aes_sc_to_seq(&sc->aes.tsc, &seq);
|
||||
iwl_mvm_set_aes_rx_seq(sc->aes.unicast_rsc, key);
|
||||
atomic64_set(&key->tx_pn, le64_to_cpu(sc->aes.tsc.pn));
|
||||
break;
|
||||
case WLAN_CIPHER_SUITE_TKIP:
|
||||
iwl_mvm_tkip_sc_to_seq(&sc->tkip.tsc, &seq);
|
||||
iwl_mvm_set_tkip_rx_seq(sc->tkip.unicast_rsc, key);
|
||||
ieee80211_set_key_tx_seq(key, &seq);
|
||||
break;
|
||||
}
|
||||
ieee80211_set_key_tx_seq(key, &seq);
|
||||
|
||||
/* that's it for this key */
|
||||
return;
|
||||
|
@ -703,7 +703,7 @@ int iwl_run_init_mvm_ucode(struct iwl_mvm *mvm, bool read_nvm)
|
||||
* abort after reading the nvm in case RF Kill is on, we will complete
|
||||
* the init seq later when RF kill will switch to off
|
||||
*/
|
||||
if (iwl_mvm_is_radio_killed(mvm)) {
|
||||
if (iwl_mvm_is_radio_hw_killed(mvm)) {
|
||||
IWL_DEBUG_RF_KILL(mvm,
|
||||
"jump over all phy activities due to RF kill\n");
|
||||
iwl_remove_notification(&mvm->notif_wait, &calib_wait);
|
||||
@ -736,7 +736,7 @@ int iwl_run_init_mvm_ucode(struct iwl_mvm *mvm, bool read_nvm)
|
||||
ret = iwl_wait_notification(&mvm->notif_wait, &calib_wait,
|
||||
MVM_UCODE_CALIB_TIMEOUT);
|
||||
|
||||
if (ret && iwl_mvm_is_radio_killed(mvm)) {
|
||||
if (ret && iwl_mvm_is_radio_hw_killed(mvm)) {
|
||||
IWL_DEBUG_RF_KILL(mvm, "RFKILL while calibrating.\n");
|
||||
ret = 1;
|
||||
}
|
||||
|
@ -2388,6 +2388,7 @@ static void iwl_mvm_stop_ap_ibss(struct ieee80211_hw *hw,
|
||||
iwl_mvm_remove_time_event(mvm, mvmvif,
|
||||
&mvmvif->time_event_data);
|
||||
RCU_INIT_POINTER(mvm->csa_vif, NULL);
|
||||
mvmvif->csa_countdown = false;
|
||||
}
|
||||
|
||||
if (rcu_access_pointer(mvm->csa_tx_blocked_vif) == vif) {
|
||||
|
@ -860,6 +860,11 @@ static inline bool iwl_mvm_is_radio_killed(struct iwl_mvm *mvm)
|
||||
test_bit(IWL_MVM_STATUS_HW_CTKILL, &mvm->status);
|
||||
}
|
||||
|
||||
static inline bool iwl_mvm_is_radio_hw_killed(struct iwl_mvm *mvm)
|
||||
{
|
||||
return test_bit(IWL_MVM_STATUS_HW_RFKILL, &mvm->status);
|
||||
}
|
||||
|
||||
/* Must be called with rcu_read_lock() held and it can only be
|
||||
* released when mvmsta is not needed anymore.
|
||||
*/
|
||||
|
@ -590,6 +590,7 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,
|
||||
ieee80211_unregister_hw(mvm->hw);
|
||||
iwl_mvm_leds_exit(mvm);
|
||||
out_free:
|
||||
flush_delayed_work(&mvm->fw_dump_wk);
|
||||
iwl_phy_db_free(mvm->phy_db);
|
||||
kfree(mvm->scan_cmd);
|
||||
if (!cfg->no_power_up_nic_in_init || !mvm->nvm_file_name)
|
||||
|
@ -414,6 +414,11 @@ static const struct pci_device_id iwl_hw_card_ids[] = {
|
||||
{IWL_PCI_DEVICE(0x095A, 0x5590, iwl7265_2ac_cfg)},
|
||||
{IWL_PCI_DEVICE(0x095B, 0x5290, iwl7265_2ac_cfg)},
|
||||
{IWL_PCI_DEVICE(0x095A, 0x5490, iwl7265_2ac_cfg)},
|
||||
{IWL_PCI_DEVICE(0x095A, 0x5F10, iwl7265_2ac_cfg)},
|
||||
{IWL_PCI_DEVICE(0x095B, 0x5212, iwl7265_2ac_cfg)},
|
||||
{IWL_PCI_DEVICE(0x095B, 0x520A, iwl7265_2ac_cfg)},
|
||||
{IWL_PCI_DEVICE(0x095A, 0x9000, iwl7265_2ac_cfg)},
|
||||
{IWL_PCI_DEVICE(0x095A, 0x9400, iwl7265_2ac_cfg)},
|
||||
|
||||
/* 8000 Series */
|
||||
{IWL_PCI_DEVICE(0x24F3, 0x0010, iwl8260_2ac_cfg)},
|
||||
|
Loading…
x
Reference in New Issue
Block a user