2011-05-04 11:59:40

by Nicolas Cavallari

[permalink] [raw]
Subject: [PATCH] carl9170: fix allmulticast mode

Currently, the driver only disable multicast filtering when the
FIF_ALLMULTI driver flag has been just set (ie,
if changed_flags& FIF_ALLMULTI and *new_flags& FIF_ALLMULTI) or else
it will reenable multicast filtering.

But next time, this condition will be false and multicast filtering
will be reenabled, even through FIF_ALLMULTI is still set.

This mean that allmulticast only works for less than two minutes in
ad-hoc mode. This patch fixes that to disable multicast filtering
as long as FIF_ALLMULTI is set.

Signed-off-by: Nicolas Cavallari <[email protected]>

---

diff --git a/drivers/net/wireless/ath/carl9170/main.c b/drivers/net/wireless/ath/carl9170/main.c
index 1638468..7d5c65e 100644
--- a/drivers/net/wireless/ath/carl9170/main.c
+++ b/drivers/net/wireless/ath/carl9170/main.c
@@ -883,7 +883,7 @@ static void carl9170_op_configure_filter(struct
ieee80211_hw *hw,
* then checking the error flags, later.
*/

- if (changed_flags& FIF_ALLMULTI&& *new_flags& FIF_ALLMULTI)
+ if (*new_flags& FIF_ALLMULTI)
multicast = ~0ULL;

if (multicast != ar->cur_mc_hash)



2011-05-04 12:43:25

by Christian Lamparter

[permalink] [raw]
Subject: Re: [PATCH] carl9170: fix allmulticast mode

On Wednesday 04 May 2011 11:47:17 Nicolas Cavallari wrote:
> Currently, the driver only disable multicast filtering when the
> FIF_ALLMULTI driver flag has been just set (ie,
> if changed_flags& FIF_ALLMULTI and *new_flags& FIF_ALLMULTI) or else
> it will reenable multicast filtering.
>
> But next time, this condition will be false and multicast filtering
> will be reenabled, even through FIF_ALLMULTI is still set.
>
> This mean that allmulticast only works for less than two minutes in
> ad-hoc mode. This patch fixes that to disable multicast filtering
> as long as FIF_ALLMULTI is set.
>
> Signed-off-by: Nicolas Cavallari <[email protected]>
Acked-by: Christian Lamparter <[email protected]>
[Just a minor niggle]

> ---
> diff --git a/drivers/net/wireless/ath/carl9170/main.c b/drivers/net/wireless/ath/carl9170/main.c
> index 1638468..7d5c65e 100644
> --- a/drivers/net/wireless/ath/carl9170/main.c
> +++ b/drivers/net/wireless/ath/carl9170/main.c
> @@ -883,7 +883,7 @@ static void carl9170_op_configure_filter(struct
> ieee80211_hw *hw,
> * then checking the error flags, later.
> */
>
> - if (changed_flags& FIF_ALLMULTI&& *new_flags& FIF_ALLMULTI)
^^^ ^^^ ^^^
It looks like your mailer realigned the spaces around the operators
and added a line-wrap so it won't apply without some help. Can you
fix the problem and send the patch again?

Thanks,
Christian