aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2015-06-11 10:02:32 -0400
committerJohannes Berg <johannes.berg@intel.com>2015-07-17 09:37:59 -0400
commitaf9f9b22beee70aae58651cdbb9d6375e6e51797 (patch)
tree5a90af54ae293c49d1baa3b17f2e0d8dd1961397 /drivers/net
parent798a457dfb232535ebc9670082b8dfccdab684ff (diff)
mac80211: don't store napi struct
When introducing multiple RX queues, a single NAPI struct will not be sufficient. Instead of trying to store multiple, simply change the API to have the NAPI struct passed to the RX function. This of course means that drivers using rx_irqsafe() cannot use NAPI, but that seems a reasonable trade-off, particularly since only two of all drivers are currently using it at all. While at it, we can now remove the IEEE80211_RX_REORDER_TIMER flag again since this code path cannot have a napi struct anyway. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/dev.h2
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/main.c3
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/rx.c2
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/mvm.h1
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/ops.c3
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/rx.c2
6 files changed, 9 insertions, 4 deletions
diff --git a/drivers/net/wireless/iwlwifi/dvm/dev.h b/drivers/net/wireless/iwlwifi/dvm/dev.h
index 3811878ab9cd..074977ede343 100644
--- a/drivers/net/wireless/iwlwifi/dvm/dev.h
+++ b/drivers/net/wireless/iwlwifi/dvm/dev.h
@@ -669,6 +669,8 @@ struct iwl_priv {
669 /* ieee device used by generic ieee processing code */ 669 /* ieee device used by generic ieee processing code */
670 struct ieee80211_hw *hw; 670 struct ieee80211_hw *hw;
671 671
672 struct napi_struct *napi;
673
672 struct list_head calib_results; 674 struct list_head calib_results;
673 675
674 struct workqueue_struct *workqueue; 676 struct workqueue_struct *workqueue;
diff --git a/drivers/net/wireless/iwlwifi/dvm/main.c b/drivers/net/wireless/iwlwifi/dvm/main.c
index 234e30f498b2..644819563cf0 100644
--- a/drivers/net/wireless/iwlwifi/dvm/main.c
+++ b/drivers/net/wireless/iwlwifi/dvm/main.c
@@ -2037,7 +2037,8 @@ static void iwl_napi_add(struct iwl_op_mode *op_mode,
2037{ 2037{
2038 struct iwl_priv *priv = IWL_OP_MODE_GET_DVM(op_mode); 2038 struct iwl_priv *priv = IWL_OP_MODE_GET_DVM(op_mode);
2039 2039
2040 ieee80211_napi_add(priv->hw, napi, napi_dev, poll, weight); 2040 netif_napi_add(napi_dev, napi, poll, weight);
2041 priv->napi = napi;
2041} 2042}
2042 2043
2043static const struct iwl_op_mode_ops iwl_dvm_ops = { 2044static const struct iwl_op_mode_ops iwl_dvm_ops = {
diff --git a/drivers/net/wireless/iwlwifi/dvm/rx.c b/drivers/net/wireless/iwlwifi/dvm/rx.c
index debec963c610..5a91f5d6b1dc 100644
--- a/drivers/net/wireless/iwlwifi/dvm/rx.c
+++ b/drivers/net/wireless/iwlwifi/dvm/rx.c
@@ -786,7 +786,7 @@ static void iwlagn_pass_packet_to_mac80211(struct iwl_priv *priv,
786 786
787 memcpy(IEEE80211_SKB_RXCB(skb), stats, sizeof(*stats)); 787 memcpy(IEEE80211_SKB_RXCB(skb), stats, sizeof(*stats));
788 788
789 ieee80211_rx(priv->hw, skb); 789 ieee80211_rx_napi(priv->hw, skb, priv->napi);
790} 790}
791 791
792static u32 iwlagn_translate_rx_status(struct iwl_priv *priv, u32 decrypt_in) 792static u32 iwlagn_translate_rx_status(struct iwl_priv *priv, u32 decrypt_in)
diff --git a/drivers/net/wireless/iwlwifi/mvm/mvm.h b/drivers/net/wireless/iwlwifi/mvm/mvm.h
index 2d4bad5fe825..605f57a2c6be 100644
--- a/drivers/net/wireless/iwlwifi/mvm/mvm.h
+++ b/drivers/net/wireless/iwlwifi/mvm/mvm.h
@@ -559,6 +559,7 @@ struct iwl_mvm {
559 const struct iwl_cfg *cfg; 559 const struct iwl_cfg *cfg;
560 struct iwl_phy_db *phy_db; 560 struct iwl_phy_db *phy_db;
561 struct ieee80211_hw *hw; 561 struct ieee80211_hw *hw;
562 struct napi_struct *napi;
562 563
563 /* for protecting access to iwl_mvm */ 564 /* for protecting access to iwl_mvm */
564 struct mutex mutex; 565 struct mutex mutex;
diff --git a/drivers/net/wireless/iwlwifi/mvm/ops.c b/drivers/net/wireless/iwlwifi/mvm/ops.c
index e4fa50075ffd..3967df63e0f3 100644
--- a/drivers/net/wireless/iwlwifi/mvm/ops.c
+++ b/drivers/net/wireless/iwlwifi/mvm/ops.c
@@ -1316,7 +1316,8 @@ static void iwl_mvm_napi_add(struct iwl_op_mode *op_mode,
1316{ 1316{
1317 struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); 1317 struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode);
1318 1318
1319 ieee80211_napi_add(mvm->hw, napi, napi_dev, poll, weight); 1319 netif_napi_add(napi_dev, napi, poll, weight);
1320 mvm->napi = napi;
1320} 1321}
1321 1322
1322static const struct iwl_op_mode_ops iwl_mvm_ops = { 1323static const struct iwl_op_mode_ops iwl_mvm_ops = {
diff --git a/drivers/net/wireless/iwlwifi/mvm/rx.c b/drivers/net/wireless/iwlwifi/mvm/rx.c
index 8f1d93b7a13a..9ff0b4321df3 100644
--- a/drivers/net/wireless/iwlwifi/mvm/rx.c
+++ b/drivers/net/wireless/iwlwifi/mvm/rx.c
@@ -129,7 +129,7 @@ static void iwl_mvm_pass_packet_to_mac80211(struct iwl_mvm *mvm,
129 fraglen, rxb->truesize); 129 fraglen, rxb->truesize);
130 } 130 }
131 131
132 ieee80211_rx(mvm->hw, skb); 132 ieee80211_rx_napi(mvm->hw, skb, mvm->napi);
133} 133}
134 134
135/* 135/*