|
@@ -7205,6 +7205,7 @@ static void lim_process_sme_channel_change_request(struct mac_context *mac_ctx,
|
|
|
uint8_t session_id; /* PE session_id */
|
|
|
int8_t max_tx_pwr;
|
|
|
uint32_t target_freq;
|
|
|
+ bool is_curr_ch_2g, is_new_ch_2g, update_he_cap;
|
|
|
|
|
|
if (!msg_buf) {
|
|
|
pe_err("msg_buf is NULL");
|
|
@@ -7255,6 +7256,27 @@ static void lim_process_sme_channel_change_request(struct mac_context *mac_ctx,
|
|
|
lim_is_session_he_capable(session_entry))) {
|
|
|
lim_update_session_he_capable_chan_switch
|
|
|
(mac_ctx, session_entry, target_freq);
|
|
|
+ is_new_ch_2g = wlan_reg_is_24ghz_ch_freq(target_freq);
|
|
|
+ is_curr_ch_2g = wlan_reg_is_24ghz_ch_freq(
|
|
|
+ session_entry->curr_op_freq);
|
|
|
+ if ((is_new_ch_2g && !is_curr_ch_2g) ||
|
|
|
+ (!is_new_ch_2g && is_curr_ch_2g))
|
|
|
+ update_he_cap = true;
|
|
|
+ else
|
|
|
+ update_he_cap = false;
|
|
|
+ if (!update_he_cap) {
|
|
|
+ if ((session_entry->ch_width !=
|
|
|
+ ch_change_req->ch_width) &&
|
|
|
+ (session_entry->ch_width > CH_WIDTH_80MHZ ||
|
|
|
+ ch_change_req->ch_width > CH_WIDTH_80MHZ))
|
|
|
+ update_he_cap = true;
|
|
|
+ }
|
|
|
+ if (update_he_cap) {
|
|
|
+ session_entry->curr_op_freq = target_freq;
|
|
|
+ session_entry->ch_width = ch_change_req->ch_width;
|
|
|
+ lim_copy_bss_he_cap(session_entry);
|
|
|
+ lim_update_he_bw_cap_mcs(session_entry, NULL);
|
|
|
+ }
|
|
|
} else if (wlan_reg_is_6ghz_chan_freq(target_freq)) {
|
|
|
pe_debug("Invalid target_freq %d for dot11mode %d cur HE %d",
|
|
|
target_freq, ch_change_req->dot11mode,
|