• Ben Greear's avatar
    mac80211: Support not iterating over not-sdata-in-driver ifaces · 265a0708
    Ben Greear authored
    Allow drivers to request that interface-iterator does NOT iterate
    over interfaces that are not sdata-in-driver.  This will allow
    us to fix crashes in ath10k (and possibly other drivers).
    
    To summarize Johannes' explanation:
    
    Consider
    
    add interface wlan0
    add interface wlan1
    iterate active interfaces -> wlan0 wlan1
    add interface wlan2
    iterate active interfaces -> wlan0 wlan1 wlan2
    
    If you apply this scenario to a restart, which ought to be functionally
    equivalent to the normal startup, just compressed in time, you're
    basically saying that today you get
    
    add interface wlan0
    add interface wlan1
    iterate active interfaces -> wlan0 wlan1 wlan2 << problem here
    add interface wlan2
    iterate active interfaces -> wlan0 wlan1 wlan2
    
    which yeah, totally seems wrong.
    
    But fixing that to be
    
    add interface wlan0
    add interface wlan1
    iterate active interfaces ->
    <nothing>
    add interface wlan2
    iterate active interfaces -> <nothing>
    (or
    maybe -> wlan0 wlan1 wlan2 if the reconfig already completed)
    
    This is also at least somewhat wrong, but better to not iterate
    over something that exists in the driver than iterate over something
    that does not.  Originally the first issue was causing crashes in
    testing with lots of station vdevs on an ath10k radio, combined
    with firmware crashing.
    
    I ran with a similar patch for years with no obvious bad results,
    including significant testing with ath9k and ath10k.
    Signed-off-by: default avatarBen Greear <greearb@candelatech.com>
    Link: https://lore.kernel.org/r/20200922191957.25257-1-greearb@candelatech.comSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    265a0708
mac80211.h 261 KB