diff options
author | David S. Miller <davem@davemloft.net> | 2016-03-07 14:58:11 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-03-07 14:58:11 -0500 |
commit | 7024b68ef1310a9dd3b2b40b082588a9826f05f5 (patch) | |
tree | f75178979858f2edec542c1b5a48a8f9fe779f10 | |
parent | 979d804e5bc926f8f3133715736f26456c910a97 (diff) | |
parent | 10da848f67a7e7152bf7cbe332e4c92d71a990d2 (diff) |
Merge tag 'wireless-drivers-for-davem-2016-03-04' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers
Kalle Valo says:
====================
wireless-drivers fixes for 4.5
iwlwifi
* free firmware paging memory when the module is unloaded or device removed
* fix pending frames counter to fix an issue when removing stations
ssb
* fix a build problem related to ssb_fill_sprom_with_fallback()
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/mvm.h | 3 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 9 | ||||
-rw-r--r-- | drivers/ssb/Kconfig | 1 |
5 files changed, 18 insertions, 1 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c index 4ed5180c547b..0ccc697fef76 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c | |||
@@ -107,7 +107,7 @@ static int iwl_send_tx_ant_cfg(struct iwl_mvm *mvm, u8 valid_tx_ant) | |||
107 | sizeof(tx_ant_cmd), &tx_ant_cmd); | 107 | sizeof(tx_ant_cmd), &tx_ant_cmd); |
108 | } | 108 | } |
109 | 109 | ||
110 | static void iwl_free_fw_paging(struct iwl_mvm *mvm) | 110 | void iwl_free_fw_paging(struct iwl_mvm *mvm) |
111 | { | 111 | { |
112 | int i; | 112 | int i; |
113 | 113 | ||
@@ -127,6 +127,8 @@ static void iwl_free_fw_paging(struct iwl_mvm *mvm) | |||
127 | get_order(mvm->fw_paging_db[i].fw_paging_size)); | 127 | get_order(mvm->fw_paging_db[i].fw_paging_size)); |
128 | } | 128 | } |
129 | kfree(mvm->trans->paging_download_buf); | 129 | kfree(mvm->trans->paging_download_buf); |
130 | mvm->trans->paging_download_buf = NULL; | ||
131 | |||
130 | memset(mvm->fw_paging_db, 0, sizeof(mvm->fw_paging_db)); | 132 | memset(mvm->fw_paging_db, 0, sizeof(mvm->fw_paging_db)); |
131 | } | 133 | } |
132 | 134 | ||
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h index 5f3ac8cccf49..ff7c6df9f941 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h | |||
@@ -1225,6 +1225,9 @@ void iwl_mvm_rx_umac_scan_complete_notif(struct iwl_mvm *mvm, | |||
1225 | void iwl_mvm_rx_umac_scan_iter_complete_notif(struct iwl_mvm *mvm, | 1225 | void iwl_mvm_rx_umac_scan_iter_complete_notif(struct iwl_mvm *mvm, |
1226 | struct iwl_rx_cmd_buffer *rxb); | 1226 | struct iwl_rx_cmd_buffer *rxb); |
1227 | 1227 | ||
1228 | /* Paging */ | ||
1229 | void iwl_free_fw_paging(struct iwl_mvm *mvm); | ||
1230 | |||
1228 | /* MVM debugfs */ | 1231 | /* MVM debugfs */ |
1229 | #ifdef CONFIG_IWLWIFI_DEBUGFS | 1232 | #ifdef CONFIG_IWLWIFI_DEBUGFS |
1230 | int iwl_mvm_dbgfs_register(struct iwl_mvm *mvm, struct dentry *dbgfs_dir); | 1233 | int iwl_mvm_dbgfs_register(struct iwl_mvm *mvm, struct dentry *dbgfs_dir); |
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c index 89ea70deeb84..e80be9a59520 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c | |||
@@ -684,6 +684,8 @@ static void iwl_op_mode_mvm_stop(struct iwl_op_mode *op_mode) | |||
684 | for (i = 0; i < NVM_MAX_NUM_SECTIONS; i++) | 684 | for (i = 0; i < NVM_MAX_NUM_SECTIONS; i++) |
685 | kfree(mvm->nvm_sections[i].data); | 685 | kfree(mvm->nvm_sections[i].data); |
686 | 686 | ||
687 | iwl_free_fw_paging(mvm); | ||
688 | |||
687 | iwl_mvm_tof_clean(mvm); | 689 | iwl_mvm_tof_clean(mvm); |
688 | 690 | ||
689 | ieee80211_free_hw(mvm->hw); | 691 | ieee80211_free_hw(mvm->hw); |
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c index 0914ec2fd574..a040edc55057 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c | |||
@@ -423,6 +423,15 @@ int iwl_mvm_tx_skb_non_sta(struct iwl_mvm *mvm, struct sk_buff *skb) | |||
423 | return -1; | 423 | return -1; |
424 | } | 424 | } |
425 | 425 | ||
426 | /* | ||
427 | * Increase the pending frames counter, so that later when a reply comes | ||
428 | * in and the counter is decreased - we don't start getting negative | ||
429 | * values. | ||
430 | * Note that we don't need to make sure it isn't agg'd, since we're | ||
431 | * TXing non-sta | ||
432 | */ | ||
433 | atomic_inc(&mvm->pending_frames[sta_id]); | ||
434 | |||
426 | return 0; | 435 | return 0; |
427 | } | 436 | } |
428 | 437 | ||
diff --git a/drivers/ssb/Kconfig b/drivers/ssb/Kconfig index 0c675861623f..d8e4219c2324 100644 --- a/drivers/ssb/Kconfig +++ b/drivers/ssb/Kconfig | |||
@@ -83,6 +83,7 @@ config SSB_SDIOHOST | |||
83 | config SSB_HOST_SOC | 83 | config SSB_HOST_SOC |
84 | bool "Support for SSB bus on SoC" | 84 | bool "Support for SSB bus on SoC" |
85 | depends on SSB && BCM47XX_NVRAM | 85 | depends on SSB && BCM47XX_NVRAM |
86 | select SSB_SPROM | ||
86 | help | 87 | help |
87 | Host interface for a SSB directly mapped into memory. This is | 88 | Host interface for a SSB directly mapped into memory. This is |
88 | for some Broadcom SoCs from the BCM47xx and BCM53xx lines. | 89 | for some Broadcom SoCs from the BCM47xx and BCM53xx lines. |