diff mbox

[v2] ath9k: Fix mesh related rx filtering issue for older chips

Message ID 1347634168-20706-1-git-send-email-mohammed@qca.qualcomm.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Shajakhan, Mohammed Sept. 14, 2012, 2:49 p.m. UTC
From: Thomas Wagner <Thomas.Wagner@hs-rm.de>

We need to have the promiscus mode enabled for older
chipsets(i.e, rule out many frames being filtered in the
hardware itself) if 'FIF_OTHER_BSS' flag is set, when we
start the mesh mode. Fix this by enabling promiscus
mode for all the chipsets whose macversion <= AR9160
chipsets. This should fix
https://bugzilla.kernel.org/show_bug.cgi?id=45591

shafi: made the fix generic by having the frame filtering
disabled for chipsets older than AR9280.

Cc: Javier Cardona <javier@cozybit.com>
Signed-off-by: Thomas Wagner <Thomas.Wagner@hs-rm.de>
Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath9k/recv.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

Comments

Felix Fietkau Sept. 14, 2012, 3:18 p.m. UTC | #1
On 2012-09-14 4:49 PM, Mohammed Shafi Shajakhan wrote:
> From: Thomas Wagner <Thomas.Wagner@hs-rm.de>
> 
> We need to have the promiscus mode enabled for older
> chipsets(i.e, rule out many frames being filtered in the
> hardware itself) if 'FIF_OTHER_BSS' flag is set, when we
> start the mesh mode. Fix this by enabling promiscus
> mode for all the chipsets whose macversion <= AR9160
> chipsets. This should fix
> https://bugzilla.kernel.org/show_bug.cgi?id=45591
> 
> shafi: made the fix generic by having the frame filtering
> disabled for chipsets older than AR9280.
> 
> Cc: Javier Cardona <javier@cozybit.com>
> Signed-off-by: Thomas Wagner <Thomas.Wagner@hs-rm.de>
> Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
> ---
>  drivers/net/wireless/ath/ath9k/recv.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
> index 4480c0c..76db0b3 100644
> --- a/drivers/net/wireless/ath/ath9k/recv.c
> +++ b/drivers/net/wireless/ath/ath9k/recv.c
> @@ -424,8 +424,8 @@ u32 ath_calcrxfilter(struct ath_softc *sc)
>  		rfilt |= ATH9K_RX_FILTER_COMP_BAR;
>  
>  	if (sc->nvifs > 1 || (sc->rx.rxfilter & FIF_OTHER_BSS)) {
> -		/* The following may also be needed for other older chips */
> -		if (sc->sc_ah->hw_version.macVersion == AR_SREV_VERSION_9160)
> +		/* This is needed for older chips, especially for mesh mode */
> +		if (sc->sc_ah->hw_version.macVersion <= AR_SREV_VERSION_9160)
>  			rfilt |= ATH9K_RX_FILTER_PROM;
>  		rfilt |= ATH9K_RX_FILTER_MCAST_BCAST_ALL;
>  	}
I'm really not sure about this being tied to sc->nvifs. If it's mesh
related, how about just adding a check for the number of mesh interfaces
instead of piggy-backing onto something potentially unrelated.

- Felix
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Shajakhan, Mohammed Sept. 17, 2012, 5:17 a.m. UTC | #2
Hi Tom,

+ linux-wireless

On Saturday 15 September 2012 12:24 AM, Thomas Wagner wrote:
> Hi,
>
>> I'm really not sure about this being tied to sc->nvifs.
>> If it's mesh related, how about just adding a check for the number of mesh interfaces [...]
> No, it is not mesh related!
> Several frames where filtered out.
> I discovered this on trying to set up a mesh.
> But the where filtered frames beyond  the mesh: e.g. a beacon of 802.11b Sitecom Router
>
> @Felix: Pleas forward this mail to:
> linux-wireless@vger.kernel.org
> ath9k-devel@venema.h4ckr.net
>
>

thanks for the clarification.
Shajakhan, Mohammed Sept. 17, 2012, 3:12 p.m. UTC | #3
Hi Tom,


On Monday 17 September 2012 10:47 AM, Mohammed Shafi Shajakhan wrote:
> Hi Tom,
>
> + linux-wireless
>
> On Saturday 15 September 2012 12:24 AM, Thomas Wagner wrote:
>> Hi,
>>
>>> I'm really not sure about this being tied to sc->nvifs.
>>> If it's mesh related, how about just adding a check for the number of
>>> mesh interfaces [...]
>> No, it is not mesh related!
>> Several frames where filtered out.
>> I discovered this on trying to set up a mesh.
>> But the where filtered frames beyond  the mesh: e.g. a beacon of
>> 802.11b Sitecom Router
>>
>> @Felix: Pleas forward this mail to:
>> linux-wireless@vger.kernel.org
>> ath9k-devel@venema.h4ckr.net
>>
>>
>
> thanks for the clarification.
>
>

will send a v3 soon changing the subject and commit log mentioning 
generically that the  older hardware chipsets seem to filter some 
necessary wifi frames ?. thanks!
diff mbox

Patch

diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
index 4480c0c..76db0b3 100644
--- a/drivers/net/wireless/ath/ath9k/recv.c
+++ b/drivers/net/wireless/ath/ath9k/recv.c
@@ -424,8 +424,8 @@  u32 ath_calcrxfilter(struct ath_softc *sc)
 		rfilt |= ATH9K_RX_FILTER_COMP_BAR;
 
 	if (sc->nvifs > 1 || (sc->rx.rxfilter & FIF_OTHER_BSS)) {
-		/* The following may also be needed for other older chips */
-		if (sc->sc_ah->hw_version.macVersion == AR_SREV_VERSION_9160)
+		/* This is needed for older chips, especially for mesh mode */
+		if (sc->sc_ah->hw_version.macVersion <= AR_SREV_VERSION_9160)
 			rfilt |= ATH9K_RX_FILTER_PROM;
 		rfilt |= ATH9K_RX_FILTER_MCAST_BCAST_ALL;
 	}