• Johannes Berg's avatar
    mac80211: don't set set TDLS STA bandwidth wider than possible · f65607cd
    Johannes Berg authored
    When we set up a TDLS station, we set sta->sta.bandwidth solely based
    on the capabilities, because the "what's the current bandwidth" check
    is bypassed and only applied for other types of stations.
    
    This leads to the unfortunate scenario that the sta->sta.bandwidth is
    160 MHz if both stations support it, but we never actually configure
    this bandwidth unless the AP is already using 160 MHz; even for wider
    bandwidth support we only go up to 80 MHz (at least right now.)
    
    For iwlwifi, this can also lead to firmware asserts, telling us that
    we've configured the TX rates for a higher bandwidth than is actually
    available due to the PHY configuration.
    
    For non-TDLS, we check against the interface's requested bandwidth,
    but we explicitly skip this check for TDLS to cope with the wider BW
    case. Change this to
     (a) still limit to the TDLS peer's own chandef, which gets factored
         into the overall PHY configuration we request from the driver,
         and
     (b) limit it to when the TDLS peer is authorized, because it's only
         factored into the channel context in this case.
    
    Fixes: 504871e6 ("mac80211: fix bandwidth computation for TDLS peers")
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
    Link: https://lore.kernel.org/r/iwlwifi.20201206145305.fcc7d29c4590.I11f77e9e25ddf871a3c8d5604650c763e2c5887a@changeidSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    f65607cd
vht.c 20.6 KB