qcacld-3.0: Handle HE capable flags during 6ghz ap chanswitch

Set he_6ghz_band flag when SAP is switching to 6Ghz band.
And clear the flag when switching to non-6ghz band.
The Driver will add the 6ghz op info in HE operation IE
in beacon frame if he_6ghz_band is set.

Change-Id: I281a9bb239c5fea693e640a8ecddf4ffc14ba7d8
CRs-Fixed: 2602152
This commit is contained in:
Liangwei Dong
2020-01-12 20:46:53 +08:00
committed by nshrivas
parent eee8de1b96
commit e193a3582b
3 changed files with 54 additions and 0 deletions

View File

@@ -4964,6 +4964,17 @@ static void lim_process_sme_channel_change_request(struct mac_context *mac_ctx,
ch_change_req->nw_type, ch_change_req->nw_type,
ch_change_req->dot11mode); ch_change_req->dot11mode);
if (IS_DOT11_MODE_HE(ch_change_req->dot11mode) &&
lim_is_session_he_capable(session_entry)) {
lim_update_session_he_capable_chan_switch
(mac_ctx, session_entry, target_freq);
} 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,
lim_is_session_he_capable(session_entry));
return;
}
/* Store the New Channel Params in session_entry */ /* Store the New Channel Params in session_entry */
session_entry->ch_width = ch_change_req->ch_width; session_entry->ch_width = ch_change_req->ch_width;
session_entry->ch_center_freq_seg0 = session_entry->ch_center_freq_seg0 =

View File

@@ -7195,6 +7195,28 @@ void lim_update_session_he_capable(struct mac_context *mac, struct pe_session *s
pe_debug("he_capable: %d", session->he_capable); pe_debug("he_capable: %d", session->he_capable);
} }
void lim_update_session_he_capable_chan_switch(struct mac_context *mac,
struct pe_session *session,
uint32_t new_chan_freq)
{
session->he_capable = true;
if (wlan_reg_is_6ghz_chan_freq(session->curr_op_freq) &&
!wlan_reg_is_6ghz_chan_freq(new_chan_freq)) {
session->htCapability = 1;
session->vhtCapability = 1;
session->he_6ghz_band = 0;
} else if (!wlan_reg_is_6ghz_chan_freq(session->curr_op_freq) &&
wlan_reg_is_6ghz_chan_freq(new_chan_freq)) {
session->htCapability = 0;
session->vhtCapability = 0;
session->he_6ghz_band = 1;
}
pe_debug("he_capable: %d ht %d vht %d 6ghz_band %d new freq %d",
session->he_capable, session->htCapability,
session->vhtCapability, session->he_6ghz_band, new_chan_freq);
}
void lim_set_he_caps(struct mac_context *mac, struct pe_session *session, uint8_t *ie_start, void lim_set_he_caps(struct mac_context *mac, struct pe_session *session, uint8_t *ie_start,
uint32_t num_bytes) uint32_t num_bytes)
{ {

View File

@@ -1279,6 +1279,20 @@ void lim_update_stads_he_capable(tpDphHashNode sta_ds, tpSirAssocReq assoc_req);
*/ */
void lim_update_session_he_capable(struct mac_context *mac, struct pe_session *session); void lim_update_session_he_capable(struct mac_context *mac, struct pe_session *session);
/**
* lim_update_session_he_capable_chan_switch(): Update he_capable in PE session
* @mac: pointer to MAC context
* @session: pointer to PE session
* @new_chan_freq: new channel frequency Mhz
*
* Update session he capable during AP channel switching
*
* Return: None
*/
void lim_update_session_he_capable_chan_switch(struct mac_context *mac,
struct pe_session *session,
uint32_t new_chan_freq);
/** /**
* lim_set_he_caps() - update HE caps to be sent to FW as part of scan IE * lim_set_he_caps() - update HE caps to be sent to FW as part of scan IE
* @mac: pointer to MAC * @mac: pointer to MAC
@@ -1474,6 +1488,13 @@ static inline void lim_update_session_he_capable(struct mac_context *mac,
{ {
} }
static inline
void lim_update_session_he_capable_chan_switch(struct mac_context *mac,
struct pe_session *session,
uint32_t new_chan_freq)
{
}
static inline void lim_set_he_caps(struct mac_context *mac, struct pe_session *session, static inline void lim_set_he_caps(struct mac_context *mac, struct pe_session *session,
uint8_t *ie_start, uint32_t num_bytes) uint8_t *ie_start, uint32_t num_bytes)
{ {