• J
    rndis_wlan: fix matching bssid check in rndis_check_bssid_list() · b0fd49b7
    Jussi Kivilinna 提交于
    rndis_check_bssid_list() originally tried to check if bssid->mac and
    match_bssid are equal using compare_ether_addr() when it should use
    !compare_ether_addr(). This check was added by commit
    b5257c95 as part of workaround for
    hardware issue.
    
    Commit 2e42e474 that replaced
    compare_ether_addr with ether_addr_equal relieved that this compare
    to be inverse of what it should be.
    
    Compare was added as response to hardware bug, where bssid-list does
    not contain BSSID and other information of currently connected AP
    (spec insists that device must provide this information in the list
    when connected). Lack bssid-data on current connection then causes
    WARN_ON somewhere in cfg80211. Workaround was to check if bssid-list
    returns current bssid and if it does not, manually construct bssid
    information in other ways. And this workaround worked, with inverse
    check. Which must mean that when hardware is experiencing the problem,
    it's actually returning empty bssid-list and this check didn't make
    any difference for workaround.
    
    However inverse check causes workaround be activated when bssid-list
    returns only entry, currently connected BSSID. That does not cause
    problems in itself, just slightly more inaccurate information in
    scan-list.
    
    Cc: Joe Perches <joe@perches.com>
    Cc: David S. Miller <davem@davemloft.net>
    Signed-off-by: NJussi Kivilinna <jussi.kivilinna@mbnet.fi>
    Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
    b0fd49b7
rndis_wlan.c 99.8 KB