aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2016-03-07 14:58:11 -0500
committerDavid S. Miller <davem@davemloft.net>2016-03-07 14:58:11 -0500
commit7024b68ef1310a9dd3b2b40b082588a9826f05f5 (patch)
treef75178979858f2edec542c1b5a48a8f9fe779f10
parent979d804e5bc926f8f3133715736f26456c910a97 (diff)
parent10da848f67a7e7152bf7cbe332e4c92d71a990d2 (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.c4
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/mvm.h3
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/ops.c2
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/tx.c9
-rw-r--r--drivers/ssb/Kconfig1
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
110static void iwl_free_fw_paging(struct iwl_mvm *mvm) 110void 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,
1225void iwl_mvm_rx_umac_scan_iter_complete_notif(struct iwl_mvm *mvm, 1225void 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 */
1229void 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
1230int iwl_mvm_dbgfs_register(struct iwl_mvm *mvm, struct dentry *dbgfs_dir); 1233int 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
83config SSB_HOST_SOC 83config 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.