aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Stepanov <Max.Stepanov@intel.com>2014-08-04 06:55:01 -0400
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>2014-09-14 05:56:38 -0400
commitf3bd58f486acd954ca8d90f8733d752dbd98eec6 (patch)
tree6fd2e5f71d32123744bd4137d74f891e65ff31c9
parenta26d4e7b096d85eeea0ce08950744e2887cb46fa (diff)
iwlwifi: mvm: add MVM_FW_MCAST_FILTER_PASS_ALL option
Add MVM_FW_MCAST_FILTER_PASS_ALL option to iwl-dbg-cfg.ini configuration file to enable/disable FW multicast filtering. Signed-off-by: Max Stepanov <Max.Stepanov@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/constants.h1
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/mac80211.c11
2 files changed, 7 insertions, 5 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/constants.h b/drivers/net/wireless/iwlwifi/mvm/constants.h
index dd00e8f7f765..cb48656a8eaf 100644
--- a/drivers/net/wireless/iwlwifi/mvm/constants.h
+++ b/drivers/net/wireless/iwlwifi/mvm/constants.h
@@ -86,5 +86,6 @@
86#define IWL_MVM_BT_COEX_SYNC2SCO 1 86#define IWL_MVM_BT_COEX_SYNC2SCO 1
87#define IWL_MVM_BT_COEX_CORUNNING 1 87#define IWL_MVM_BT_COEX_CORUNNING 1
88#define IWL_MVM_BT_COEX_MPLUT 1 88#define IWL_MVM_BT_COEX_MPLUT 1
89#define IWL_MVM_FW_MCAST_FILTER_PASS_ALL 0
89 90
90#endif /* __MVM_CONSTANTS_H */ 91#endif /* __MVM_CONSTANTS_H */
diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c
index bcfb03ce46be..089d7b37cf90 100644
--- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c
+++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c
@@ -1200,14 +1200,15 @@ static u64 iwl_mvm_prepare_multicast(struct ieee80211_hw *hw,
1200 struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); 1200 struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
1201 struct iwl_mcast_filter_cmd *cmd; 1201 struct iwl_mcast_filter_cmd *cmd;
1202 struct netdev_hw_addr *addr; 1202 struct netdev_hw_addr *addr;
1203 int addr_count = netdev_hw_addr_list_count(mc_list); 1203 int addr_count;
1204 bool pass_all = false; 1204 bool pass_all;
1205 int len; 1205 int len;
1206 1206
1207 if (addr_count > MAX_MCAST_FILTERING_ADDRESSES) { 1207 addr_count = netdev_hw_addr_list_count(mc_list);
1208 pass_all = true; 1208 pass_all = addr_count > MAX_MCAST_FILTERING_ADDRESSES ||
1209 IWL_MVM_FW_MCAST_FILTER_PASS_ALL;
1210 if (pass_all)
1209 addr_count = 0; 1211 addr_count = 0;
1210 }
1211 1212
1212 len = roundup(sizeof(*cmd) + addr_count * ETH_ALEN, 4); 1213 len = roundup(sizeof(*cmd) + addr_count * ETH_ALEN, 4);
1213 cmd = kzalloc(len, GFP_ATOMIC); 1214 cmd = kzalloc(len, GFP_ATOMIC);