diff options
author | Benoit Papillault <benoit.papillault@free.fr> | 2010-01-03 10:20:01 +0100 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-01-04 16:09:49 -0500 |
commit | 7de3c5dc0ac89b847b00f25d16976c158dc38e4c (patch) | |
tree | 7a6e63af78ba0ca11e9a299448ea01118428e9a1 /drivers/net/wireless | |
parent | 8a9ac160e844c7ce8074f6aa531feefb4acdee7c (diff) | |
download | kernel-crypto-7de3c5dc0ac89b847b00f25d16976c158dc38e4c.tar.gz kernel-crypto-7de3c5dc0ac89b847b00f25d16976c158dc38e4c.tar.xz kernel-crypto-7de3c5dc0ac89b847b00f25d16976c158dc38e4c.zip |
zd1211rw: Fix multicast filtering.
If multicast parameter (as returned by zd_op_prepare_multicast) has
changed, no bit in changed_flags is set. To handle this situation, we do
not return if changed_flags is 0. If we do so, we will have some issue
with IPv6 which uses multicast for link layer address resolution.
Signed-off-by: Benoit Papillault <benoit.papillault@free.fr>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/zd1211rw/zd_mac.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c b/drivers/net/wireless/zd1211rw/zd_mac.c index cc648efb8ed..9d9b263733e 100644 --- a/drivers/net/wireless/zd1211rw/zd_mac.c +++ b/drivers/net/wireless/zd1211rw/zd_mac.c @@ -987,12 +987,13 @@ static void zd_op_configure_filter(struct ieee80211_hw *hw, changed_flags &= SUPPORTED_FIF_FLAGS; *new_flags &= SUPPORTED_FIF_FLAGS; - /* changed_flags is always populated but this driver - * doesn't support all FIF flags so its possible we don't - * need to do anything */ - if (!changed_flags) - return; - + /* + * If multicast parameter (as returned by zd_op_prepare_multicast) + * has changed, no bit in changed_flags is set. To handle this + * situation, we do not return if changed_flags is 0. If we do so, + * we will have some issue with IPv6 which uses multicast for link + * layer address resolution. + */ if (*new_flags & (FIF_PROMISC_IN_BSS | FIF_ALLMULTI)) zd_mc_add_all(&hash); |