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:
@@ -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 =
|
||||||
|
@@ -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)
|
||||||
{
|
{
|
||||||
|
@@ -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)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user