We observe that the condition of chanctx could not be back to IEEE80211_CHANCTX_REPLACE_NONE occasionally while STA connection. In this case the state could be IEEE80211_CHANCTX_REPLACE_OTHER, which fails the check and then creates another chanctx that leads to the next round of chan_switch failure in cfg80211_check_combinations(). So, modify state to just rule out IEEE80211_CHANCTX_WILL_BE_REPLACED. Signed-off-by: Ryder Lee <ryder.lee@xxxxxxxxxxxx> --- net/mac80211/chan.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/mac80211/chan.c b/net/mac80211/chan.c index e26d42de14ec..604095ff7a5b 100644 --- a/net/mac80211/chan.c +++ b/net/mac80211/chan.c @@ -477,7 +477,7 @@ ieee80211_find_chanctx(struct ieee80211_local *local, list_for_each_entry(ctx, &local->chanctx_list, list) { const struct cfg80211_chan_def *compat; - if (ctx->replace_state != IEEE80211_CHANCTX_REPLACE_NONE) + if (ctx->replace_state == IEEE80211_CHANCTX_WILL_BE_REPLACED) continue; if (ctx->mode == IEEE80211_CHANCTX_EXCLUSIVE) -- 2.29.2