• Tony Lindgren's avatar
    wlcore: Fix command execute failure 19 for wl12xx · cb88d01b
    Tony Lindgren authored
    We can currently get a "command execute failure 19" error on beacon loss
    if the signal is weak:
    
    wlcore: Beacon loss detected. roles:0xff
    wlcore: Connection loss work (role_id: 0).
    ...
    wlcore: ERROR command execute failure 19
    ...
    WARNING: CPU: 0 PID: 1552 at drivers/net/wireless/ti/wlcore/main.c:803
    ...
    (wl12xx_queue_recovery_work.part.0 [wlcore])
    (wl12xx_cmd_role_start_sta [wlcore])
    (wl1271_op_bss_info_changed [wlcore])
    (ieee80211_prep_connection [mac80211])
    
    Error 19 is defined as CMD_STATUS_WRONG_NESTING from the wlcore firmware,
    and seems to mean that the firmware no longer wants to see the quirk
    handling for WLCORE_QUIRK_START_STA_FAILS done.
    
    This quirk got added with commit 18eab430 ("wlcore: workaround
    start_sta problem in wl12xx fw"), and it seems that this already got fixed
    in the firmware long time ago back in 2012 as wl18xx never had this quirk
    in place to start with.
    
    As we no longer even support firmware that early, to me it seems that it's
    safe to just drop WLCORE_QUIRK_START_STA_FAILS to fix the error. Looks
    like earlier firmware got disabled back in 2013 with commit 0e284c07
    ("wl12xx: increase minimum singlerole firmware version required").
    
    If it turns out we still need WLCORE_QUIRK_START_STA_FAILS with any
    firmware that the driver works with, we can simply revert this patch and
    add extra checks for firmware version used.
    
    With this fix wlcore reconnects properly after a beacon loss.
    
    Cc: Raz Bouganim <r-bouganim@ti.com>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20210115065613.7731-1-tony@atomide.com
    cb88d01b
main.c 170 KB