On 09/14/2010 09:37 AM, Felix Fietkau wrote:
At the time the .add_interface driver op is called, the interface has not been marked as running yet, so ieee80211_iterate_active_interfaces will not pass it to the iterator function. Because of this, the calculated BSSID mask is wrong, which breaks multi-BSS operation. Additionally, the current way of comparing all addresses against each other is pointless, as the hardware only uses the hardware MAC address and the BSSID mask for matching the destination address, so all the address array reallocation is completely unnecessary. This patch simplifies the logic by setting the initial mask bytes to 0xff and removing all bits in the iterator call that don't match the hardware MAC address. It also calls the iterator for the vif that was passed to add_interface() Signed-off-by: Felix Fietkau<nbd@xxxxxxxxxxx>
I tried this on top of Johannes' sta_info patch and my ath9k rfilt patch, and I'm able to create two STAs that talk to each other (for around 15 seconds after AP reboots, then no luck). The mask looks right to me, so I think my particular problem must be elsewhere. So, you can add: Tested-by: Ben Greear <greearb@xxxxxxxxxxxxxxx> Thanks, Ben -- Ben Greear <greearb@xxxxxxxxxxxxxxx> Candela Technologies Inc http://www.candelatech.com -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html