iwlwifi: fix multicast

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linux Kernel Mailing List
Date: Wednesday, July 7, 2010 - 7:59 pm

Gitweb:     http://git.kernel.org/linus/d1e89f37de2845db364ef6d67586cd882f86b557
Commit:     d1e89f37de2845db364ef6d67586cd882f86b557
Parent:     6c3118e2305326743acb52250bcfd0d52389d9dc
Author:     Johannes Berg <johannes.berg@intel.com>
AuthorDate: Fri Jun 18 03:41:25 2010 -0700
Committer:  Reinette Chatre <reinette.chatre@intel.com>
CommitDate: Fri Jun 25 14:32:06 2010 -0700

    iwlwifi: fix multicast
    
    commit 3474ad635db371b0d8d0ee40086f15d223d5b6a4
    Author: Johannes Berg <johannes.berg@intel.com>
    Date:   Thu Apr 29 04:43:05 2010 -0700
    
        iwlwifi: apply filter flags directly
    
    broke multicast. The reason, it turns out, is that
    the code previously checked if ALLMULTI _changed_,
    which the new code no longer did, and normally it
    _never_ changes. Had somebody changed it manually,
    the code prior to my patch there would have been
    broken already.
    
    The reason is that we always, unconditionally, ask
    the device to pass up all multicast frames, but the
    new code made it depend on ALLMULTI which broke it
    since now we'd pass up multicast frames depending
    on the default filter in the device, which isn't
    necessarily what we want (since we don't program it
    right now).
    
    Fix this by simply not checking allmulti as we have
    allmulti behaviour enabled already anyway.
    
    Reported-by: Maxim Levitsky <maximlevitsky@gmail.com>
    Tested-by: Maxim Levitsky <maximlevitsky@gmail.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
 drivers/net/wireless/iwlwifi/iwl-core.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index 426e955..5bbc529 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -1314,7 +1314,6 @@ void iwl_configure_filter(struct ieee80211_hw *hw,
 			changed_flags, *total_flags);
 
 	CHK(FIF_OTHER_BSS | FIF_PROMISC_IN_BSS, RXON_FILTER_PROMISC_MSK);
-	CHK(FIF_ALLMULTI, RXON_FILTER_ACCEPT_GRP_MSK);
 	CHK(FIF_CONTROL, RXON_FILTER_CTL2HOST_MSK);
 	CHK(FIF_BCN_PRBRESP_PROMISC, RXON_FILTER_BCON_AWARE_MSK);
 
@@ -1329,6 +1328,12 @@ void iwl_configure_filter(struct ieee80211_hw *hw,
 
 	mutex_unlock(&priv->mutex);
 
+	/*
+	 * Receiving all multicast frames is always enabled by the
+	 * default flags setup in iwl_connection_init_rx_config()
+	 * since we currently do not support programming multicast
+	 * filters into the device.
+	 */
 	*total_flags &= FIF_OTHER_BSS | FIF_ALLMULTI | FIF_PROMISC_IN_BSS |
 			FIF_BCN_PRBRESP_PROMISC | FIF_CONTROL;
 }
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
iwlwifi: fix multicast, Linux Kernel Mailing ..., (Wed Jul 7, 7:59 pm)