iwlwifi: mvm: add MVM_FW_MCAST_FILTER_PASS_ALL option
authorMax Stepanov <Max.Stepanov@intel.com>
Mon, 4 Aug 2014 10:55:01 +0000 (13:55 +0300)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Sun, 14 Sep 2014 09:56:38 +0000 (12:56 +0300)
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>
drivers/net/wireless/iwlwifi/mvm/constants.h
drivers/net/wireless/iwlwifi/mvm/mac80211.c

index dd00e8f..cb48656 100644 (file)
@@ -86,5 +86,6 @@
 #define IWL_MVM_BT_COEX_SYNC2SCO               1
 #define IWL_MVM_BT_COEX_CORUNNING              1
 #define IWL_MVM_BT_COEX_MPLUT                  1
+#define IWL_MVM_FW_MCAST_FILTER_PASS_ALL       0
 
 #endif /* __MVM_CONSTANTS_H */
index bcfb03c..089d7b3 100644 (file)
@@ -1200,14 +1200,15 @@ static u64 iwl_mvm_prepare_multicast(struct ieee80211_hw *hw,
        struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
        struct iwl_mcast_filter_cmd *cmd;
        struct netdev_hw_addr *addr;
-       int addr_count = netdev_hw_addr_list_count(mc_list);
-       bool pass_all = false;
+       int addr_count;
+       bool pass_all;
        int len;
 
-       if (addr_count > MAX_MCAST_FILTERING_ADDRESSES) {
-               pass_all = true;
+       addr_count = netdev_hw_addr_list_count(mc_list);
+       pass_all = addr_count > MAX_MCAST_FILTERING_ADDRESSES ||
+                  IWL_MVM_FW_MCAST_FILTER_PASS_ALL;
+       if (pass_all)
                addr_count = 0;
-       }
 
        len = roundup(sizeof(*cmd) + addr_count * ETH_ALEN, 4);
        cmd = kzalloc(len, GFP_ATOMIC);