mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-14 16:46:15 -04:00
qcacld-3.0: Update the session he cap if channel is changed
Update the session he capabilities when SAP switches to new channel and if new channel band or channel width is different from current session channel info. Change-Id: I1a91864eb6f26189c37b2dc715e6b6d7fb950458 CRs-Fixed: 2863366
This commit is contained in:
parent
e31e29c20c
commit
6cf1003125
2 changed files with 37 additions and 0 deletions
|
|
@ -5007,6 +5007,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");
|
||||
|
|
@ -5057,6 +5058,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,
|
||||
|
|
|
|||
|
|
@ -6896,6 +6896,8 @@ void lim_update_usr_he_cap(struct mac_context *mac_ctx, struct pe_session *sessi
|
|||
uint8_t extracted_buff[DOT11F_IE_HE_CAP_MAX_LEN + 2];
|
||||
QDF_STATUS status;
|
||||
struct sir_vht_config *vht_cfg = &session->vht_config;
|
||||
struct mlme_legacy_priv *mlme_priv;
|
||||
|
||||
qdf_mem_zero(extracted_buff, sizeof(extracted_buff));
|
||||
status = lim_strip_ie(mac_ctx, add_ie->probeRespBCNData_buff,
|
||||
&add_ie->probeRespBCNDataLen,
|
||||
|
|
@ -6937,6 +6939,19 @@ void lim_update_usr_he_cap(struct mac_context *mac_ctx, struct pe_session *sessi
|
|||
vht_cfg->mu_beam_formee = 0;
|
||||
vht_cfg->csnof_beamformer_antSup = 0;
|
||||
}
|
||||
|
||||
mlme_priv = wlan_vdev_mlme_get_ext_hdl(session->vdev);
|
||||
if (mlme_priv) {
|
||||
mlme_priv->he_config.mu_beamformer = he_cap->mu_beamformer;
|
||||
mlme_priv->he_config.su_beamformer = he_cap->su_beamformer;
|
||||
mlme_priv->he_config.su_beamformee = he_cap->su_beamformee;
|
||||
mlme_priv->he_config.bfee_sts_lt_80 = he_cap->bfee_sts_lt_80;
|
||||
mlme_priv->he_config.bfee_sts_gt_80 = he_cap->bfee_sts_gt_80;
|
||||
mlme_priv->he_config.num_sounding_lt_80 =
|
||||
he_cap->num_sounding_lt_80;
|
||||
mlme_priv->he_config.num_sounding_gt_80 =
|
||||
he_cap->num_sounding_gt_80;
|
||||
}
|
||||
wma_set_he_txbf_params(session->vdev_id, he_cap->su_beamformer,
|
||||
he_cap->su_beamformee, he_cap->mu_beamformer);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue