• F
    ath9k: fix BSSID mask calculation · 31a01645
    Felix Fietkau 提交于
    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: NFelix Fietkau <nbd@openwrt.org>
    Tested-by: NBen Greear <greearb@candelatech.com>
    Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
    31a01645
virtual.c 18.1 KB