On Tue, 2007-07-31 at 20:37 +0200, Ivo van Doorn wrote: > + if (is_monitor_present(intf)) { > + filter = IFF_PROMISC | IFF_MULTICAST | IFF_BROADCAST; > + if (intf->filter != filter) > + __set_bit(PACKET_FILTER_PENDING, &rt2x00dev->flags); > + } Don't do that. There's no requirement that monitor mode interfaces always be promisc. Also, earlier in the code: > + int promisc = !!(filter & IFF_PROMISC); > + int multicast = !!(filter & IFF_MULTICAST); > + int broadcast = !!(filter & IFF_BROADCAST); > u32 reg; > > rt2x00pci_register_read(rt2x00dev, RXCSR0, ®); > rt2x00_set_field32(®, RXCSR0_DROP_NOT_TO_ME, !promisc); > + rt2x00_set_field32(®, RXCSR0_DROP_MCAST, !multicast); > + rt2x00_set_field32(®, RXCSR0_DROP_BCAST, !broadcast); > rt2x00pci_register_write(rt2x00dev, RXCSR0, reg); Depending on how the hardware behaves I think promisc should imply the other two, it seems likely that even with DROP_NOT_TO_ME turned off you won't be getting multicast traffic and promisc should see that too. johannes
Attachment:
signature.asc
Description: This is a digitally signed message part