diff options
author | Luca Coelho <luciano.coelho@intel.com> | 2017-09-01 11:57:35 -0400 |
---|---|---|
committer | Luca Coelho <luciano.coelho@intel.com> | 2017-09-08 04:47:37 -0400 |
commit | 61e7d91bcf7725b9fcd9cbfc5fa0e0f84f19e6de (patch) | |
tree | 6ac3f3a86b7c30627bb686abbcdec77c7ac37279 | |
parent | 97bce57bd7f96e1218751996f549a6e61f18cc8c (diff) |
iwlwifi: mvm: handle FIF_ALLMULTI when setting multicast addresses
We were ignoring the FIF_ALLMULTI flag when setting the multicast
addresses with MCAST_FILTER_CMD. Check if this flag is set and enable
pass_all accordingly. We also need to set the count to 0 if pass_all
is enable so we don't pass addresses to the firmware when not needed
(as doing so causes an assert).
This fixes https://bugzilla.kernel.org/show_bug.cgi?id=196741
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c index 635db63f972e..3bcaa82f59b2 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | |||
@@ -1643,6 +1643,12 @@ static void iwl_mvm_configure_filter(struct ieee80211_hw *hw, | |||
1643 | if (!cmd) | 1643 | if (!cmd) |
1644 | goto out; | 1644 | goto out; |
1645 | 1645 | ||
1646 | if (changed_flags & FIF_ALLMULTI) | ||
1647 | cmd->pass_all = !!(*total_flags & FIF_ALLMULTI); | ||
1648 | |||
1649 | if (cmd->pass_all) | ||
1650 | cmd->count = 0; | ||
1651 | |||
1646 | iwl_mvm_recalc_multicast(mvm); | 1652 | iwl_mvm_recalc_multicast(mvm); |
1647 | out: | 1653 | out: |
1648 | mutex_unlock(&mvm->mutex); | 1654 | mutex_unlock(&mvm->mutex); |