|
@@ -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);
|
|
|
|