qcacld-3.0: Add ML link band check to enable EMLSR mode
Add check to ensure that the ML links are in 5 GHz + 6 GHz band to enable EMLSR mode. If either of the links are in 2.4 GHz band, do not advertise EML caps in assoc req frame. Change-Id: Ic3118ac9370931c0c524d68d90e9fc2ad3000ff6 CRs-Fixed: 3300127
This commit is contained in:

gecommit door
Madan Koyyalamudi

bovenliggende
23902b7c6b
commit
62f7de7e4f
@@ -1192,3 +1192,29 @@ end:
|
||||
wlan_objmgr_peer_release_ref(peer, WLAN_LEGACY_MAC_ID);
|
||||
return is_ml_peer_disconn;
|
||||
}
|
||||
|
||||
bool lim_is_emlsr_band_supported(struct pe_session *session)
|
||||
{
|
||||
uint8_t i;
|
||||
uint32_t freq;
|
||||
struct mlo_partner_info *partner_info;
|
||||
|
||||
partner_info = &session->lim_join_req->partner_info;
|
||||
|
||||
if (wlan_reg_is_24ghz_ch_freq(session->curr_op_freq)) {
|
||||
pe_debug("Pri link freq: %d, EMLSR mode not allowed",
|
||||
session->curr_op_freq);
|
||||
return false;
|
||||
}
|
||||
|
||||
for (i = 0; i < partner_info->num_partner_links; i++) {
|
||||
freq = partner_info->partner_link_info[i].chan_freq;
|
||||
if (wlan_reg_is_24ghz_ch_freq(freq)) {
|
||||
pe_debug("Partner link freq: %d, EMLSR mode not allwed",
|
||||
freq);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@@ -335,6 +335,8 @@ QDF_STATUS lim_store_mlo_ie_raw_info(uint8_t *ie, uint8_t *sta_prof_ie,
|
||||
bool lim_is_ml_peer_state_disconn(struct mac_context *mac_ctx,
|
||||
struct pe_session *session,
|
||||
uint8_t *mac_addr);
|
||||
|
||||
bool lim_is_emlsr_band_supported(struct pe_session *session);
|
||||
#else
|
||||
static inline void lim_mlo_notify_peer_disconn(struct pe_session *pe_session,
|
||||
tpDphHashNode sta_ds)
|
||||
@@ -454,5 +456,11 @@ bool lim_is_ml_peer_state_disconn(struct mac_context *mac_ctx,
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline
|
||||
bool lim_is_emlsr_band_supported(struct pe_session *session)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
@@ -4022,6 +4022,8 @@ static void lim_fill_ml_info(struct cm_vdev_join_req *req,
|
||||
partner_info->partner_link_info[idx].link_id,
|
||||
QDF_MAC_ADDR_REF(partner_info->partner_link_info[idx].
|
||||
link_addr.bytes));
|
||||
partner_info->partner_link_info[idx].chan_freq =
|
||||
req->partner_info.partner_link_info[idx].chan_freq;
|
||||
}
|
||||
pe_join_req->assoc_link_id = req->assoc_link_id;
|
||||
}
|
||||
@@ -4029,7 +4031,7 @@ static void lim_fill_ml_info(struct cm_vdev_join_req *req,
|
||||
static void lim_set_emlsr_caps(struct mac_context *mac_ctx,
|
||||
struct pe_session *session)
|
||||
{
|
||||
bool emlsr_cap, emlsr_allowed, emlsr_enabled = false;
|
||||
bool emlsr_cap, emlsr_allowed, emlsr_band_check, emlsr_enabled = false;
|
||||
|
||||
/* Check if HW supports eMLSR mode */
|
||||
emlsr_cap = policy_mgr_is_hw_emlsr_capable(mac_ctx->psoc);
|
||||
@@ -4039,7 +4041,10 @@ static void lim_set_emlsr_caps(struct mac_context *mac_ctx,
|
||||
/* Check if vendor command chooses eMLSR mode */
|
||||
wlan_mlme_get_emlsr_mode_enabled(mac_ctx->psoc, &emlsr_enabled);
|
||||
|
||||
emlsr_allowed = emlsr_cap && emlsr_enabled;
|
||||
/* Check if ML links are in 5 GHz + 6 GHz combination */
|
||||
emlsr_band_check = lim_is_emlsr_band_supported(session);
|
||||
|
||||
emlsr_allowed = emlsr_cap && emlsr_enabled && emlsr_band_check;
|
||||
|
||||
if (emlsr_allowed) {
|
||||
wlan_vdev_obj_lock(session->vdev);
|
||||
|
Verwijs in nieuw issue
Block a user