On Mon, 2007-08-06 at 13:05 -0400, John W. Linville wrote:

> --- a/net/mac80211/ieee80211.c
> +++ b/net/mac80211/ieee80211.c
> @@ -3030,9 +3030,10 @@ ieee80211_rx_h_data(struct ieee80211_txrx_data *rx)
>               memcpy(dst, hdr->addr1, ETH_ALEN);
>               memcpy(src, hdr->addr3, ETH_ALEN);
>  
> -             if (sdata->type != IEEE80211_IF_TYPE_STA) {
> +             if (sdata->type != IEEE80211_IF_TYPE_STA ||
> +                 (is_multicast_ether_addr(dst) &&
> +                  !compare_ether_addr(src, dev->dev_addr)))
>                       return TXRX_DROP;

I can confirm that this works (applies if you s/ieee80211.c/rx.c/) for
IPv6 link local addresses, and it's definitely the right thing to do
here.

johannes

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to