• Sujith Manoharan's avatar
    ath9k: Fix panic when adding an AP interface · 9bf30ff9
    Sujith Manoharan authored
    If a station interface is already assigned to a context
    and is active and a second interface of type AP is added,
    then beaconing on the new interface has to be begin only
    after the BSS_CHANGED_BEACON_ENABLED flag is sent by mac80211
    to the driver.
    
    But, since we issue ATH_CHANCTX_EVENT_ENABLE_MULTICHANNEL as soon
    as a new channel context is added, a switch occurs almost immediately
    before BSS_CHANGED_BEACON_ENABLED is received. When a HW reset
    is done for the new context, beacons are enabled for the
    interface since "enable_beacon" in the BSS config maintained
    in mac80211 is true - but the driver hasn't been notified yet.
    This causes a panic, since the beacon interval is zero for this
    interface and ath9k_cmn_beacon_config_ap() doesn't have a safety check.
    
    Fix this panic by checking if the beacon params has been cached
    for this context and use the "enable_beacon" flag maintained
    locally in the driver. Also, recalculate the summary data
    after the beacon params have been cached when BSS_CHANGED_BEACON_ENABLED
    is received.
    Signed-off-by: default avatarSujith Manoharan <c_manoha@qca.qualcomm.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    9bf30ff9
main.c 58.4 KB