On Thursday 02 August 2007 17:55, John W. Linville wrote: > } else if (!multicast && > compare_ether_addr(sdata->dev->dev_addr, > - hdr->addr1) != 0) { > + hdr->addr1)) { Good idea. Should do this for all the other cases in the function to keep things consistent. > if (!sdata->promisc) > continue; > rx.u.rx.ra_match = 0; > - } > + } else if (multicast && > + !compare_ether_addr(sdata->dev->dev_addr, > + hdr->addr3)) > + rx.u.rx.ra_match = 0; This doesn't seem quite right. I think ieee80211_rx_h_data is a safer place for this check (inside the IEEE80211_FCTL_FROMDS case), and allows various statistics to be updated. ieee80211_rx_h_sta_process is another function that might work though that would probably involve more code to add all the right checks. Another alternate is to continue - doing rx.u.rx.ra_match = 0; still passes the frame through the rx chain, though I think I'd prefer to update the statistics. -Michael Wu
Attachment:
pgpzZIwdh6BkM.pgp
Description: PGP signature