@@ -910,7 +910,7 @@ static int ieee80211_assign_link_chanctx(struct ieee80211_link_data *link,
910
910
conf = rcu_dereference_protected (link -> conf -> chanctx_conf ,
911
911
lockdep_is_held (& local -> hw .wiphy -> mtx ));
912
912
913
- if (conf ) {
913
+ if (conf && ! local -> in_reconfig ) {
914
914
curr_ctx = container_of (conf , struct ieee80211_chanctx , conf );
915
915
916
916
drv_unassign_vif_chanctx (local , sdata , link -> conf , curr_ctx );
@@ -930,8 +930,9 @@ static int ieee80211_assign_link_chanctx(struct ieee80211_link_data *link,
930
930
931
931
/* succeeded, so commit it to the data structures */
932
932
conf = & new_ctx -> conf ;
933
- list_add (& link -> assigned_chanctx_list ,
934
- & new_ctx -> assigned_links );
933
+ if (!local -> in_reconfig )
934
+ list_add (& link -> assigned_chanctx_list ,
935
+ & new_ctx -> assigned_links );
935
936
}
936
937
} else {
937
938
ret = 0 ;
@@ -1932,7 +1933,8 @@ int _ieee80211_link_use_channel(struct ieee80211_link_data *link,
1932
1933
if (ret < 0 )
1933
1934
goto out ;
1934
1935
1935
- __ieee80211_link_release_channel (link , false);
1936
+ if (!local -> in_reconfig )
1937
+ __ieee80211_link_release_channel (link , false);
1936
1938
1937
1939
ctx = ieee80211_find_chanctx (local , link , chanreq , mode );
1938
1940
/* Note: context is now reserved */
0 commit comments