qcacld-3.0: Update ML IE handling as per draft 2.0 spec

Update ML IE as per 11be draft 2.0 spec

Change-Id: Ib66624d25d91811dd9bdde0818f20901929d16dd
CRs-Fixed: 3220099
This commit is contained in:
Deeksha Gupta
2022-06-13 15:46:51 +05:30
committed by Madan Koyyalamudi
parent f656e5d56d
commit 102a08f0d5
3 changed files with 48 additions and 35 deletions

View File

@@ -174,7 +174,7 @@ struct eml_capabilities {
};
/**
* mld_capabilities - MLD capability info
* mld_capab_and_op - MLD capability and operations info
* @max_simultaneous_link_num: MAX simultaneous link num
* @srs_support: SRS support
* @tid_link_map_supported: TID link map support
@@ -182,7 +182,7 @@ struct eml_capabilities {
* @aar_support: AAR support
* @reserved: reserve
*/
struct mld_capabilities {
struct mld_capab_and_op {
uint16_t max_simultaneous_link_num:4;
uint16_t srs_support:1;
uint16_t tid_link_map_supported:2;
@@ -199,7 +199,8 @@ struct mld_capabilities {
* @bss_param_change_cnt_present: the present flag of bss prarm change cnt
* @medium_sync_delay_info_present: the present flag of medium sync delay info
* @eml_capab_present: the present flag of EML capability
* @mld_capab_present: the present flag of MLD capability
* @mld_capab_and_op_present: the present flag of MLD capability and operation
* @mld_id_present: the present flag of MLD ID
* @reserved_1: reserved
* @common_info_length: common info length
* @mld_mac_addr: MLD mac address
@@ -207,7 +208,8 @@ struct mld_capabilities {
* @bss_param_change_count: bss param change count
* @medium_sync_delay_info: structure of medium_sync_delay
* @eml_capabilities_info: structure of eml_capabilities
* @mld_capabilities_info: structure of mld_capabilities
* @mld_capab_and_op_info: structure of mld_capabilities and operations
* @mld_id_info: MLD ID
* @num_sta_profile: the number of sta profile
* @sta_profile: structure of wlan_mlo_sta_profile
* @num_data: the length of data
@@ -221,15 +223,17 @@ struct wlan_mlo_ie {
uint16_t bss_param_change_cnt_present:1;
uint16_t medium_sync_delay_info_present:1;
uint16_t eml_capab_present:1;
uint16_t mld_capab_present:1;
uint16_t reserved_1:7;
uint16_t mld_capab_and_op_present: 1;
uint16_t mld_id_present: 1;
uint16_t reserved_1:6;
uint8_t common_info_length;
uint8_t mld_mac_addr[6];
uint8_t link_id;
uint8_t bss_param_change_count;
struct medium_sync_delay medium_sync_delay_info;
struct eml_capabilities eml_capabilities_info;
struct mld_capabilities mld_capabilities_info;
struct mld_capab_and_op mld_capab_and_op_info;
uint8_t mld_id_info;
uint16_t num_sta_profile;
struct wlan_mlo_sta_profile sta_profile[WLAN_MLO_MAX_VDEVS];
uint16_t num_data;
@@ -305,7 +309,8 @@ struct mlo_link_ie_info {
* @mld_mac_addr: MLD MAC address
* @common_info_length: Common Info Length
* @reserved_1: reserved bits
* @mld_capab_present: MLD capability present
* @mld_id_present: MLD ID present
* @mld_capab_and_op_present: MLD capability and operations present
* @eml_capab_present: EML capability present
* @medium_sync_delay_info_present: Medium sync delay information present
* @bss_param_change_cnt_present: BSS parameter change count present
@@ -317,8 +322,9 @@ struct wlan_mlo_ie_info {
#ifndef ANI_LITTLE_BIT_ENDIAN
uint8_t mld_mac_addr[6];
uint8_t common_info_length;
uint16_t reserved_1:7;
uint16_t mld_capab_present:1;
uint16_t reserved_1:6;
uint16_t mld_id_present:1;
uint16_t mld_capab_and_op_present:1;
uint16_t eml_capab_present:1;
uint16_t medium_sync_delay_info_present:1;
uint16_t bss_param_change_cnt_present:1;
@@ -332,8 +338,9 @@ struct wlan_mlo_ie_info {
uint16_t bss_param_change_cnt_present:1;
uint16_t medium_sync_delay_info_present:1;
uint16_t eml_capab_present:1;
uint16_t mld_capab_present:1;
uint16_t reserved_1:7;
uint16_t mld_capab_and_op_present:1;
uint16_t mld_id_present:1;
uint16_t reserved_1:6;
uint8_t common_info_length;
uint8_t mld_mac_addr[6];
#endif

View File

@@ -8018,7 +8018,8 @@ void lim_set_mlo_caps(struct mac_context *mac, struct pe_session *session,
mlo_ie_info->medium_sync_delay_info_present =
dot11_cap.medium_sync_delay_info_present;
mlo_ie_info->eml_capab_present = dot11_cap.eml_capab_present;
mlo_ie_info->mld_capab_present = dot11_cap.mld_capab_present;
mlo_ie_info->mld_capab_and_op_present = dot11_cap.mld_capab_and_op_present;
mlo_ie_info->mld_id_present = dot11_cap.mld_id_present;
mlo_ie_info->reserved_1 = dot11_cap.reserved_1;
mlo_ie_info->common_info_length = dot11_cap.common_info_length;
qdf_mem_copy(&mlo_ie_info->mld_mac_addr,

View File

@@ -9021,7 +9021,8 @@ QDF_STATUS populate_dot11f_assoc_rsp_mlo_ie(struct mac_context *mac_ctx,
session->mlo_link_info.link_ie.bss_param_change_cnt;
common_info_len += WLAN_ML_BSSPARAMCHNGCNT_SIZE;
mlo_ie->mld_capab_present = 0;
mlo_ie->mld_capab_and_op_present = 0;
mlo_ie->mld_id_present = 0;
mlo_ie->common_info_length = common_info_len;
@@ -9580,7 +9581,7 @@ QDF_STATUS populate_dot11f_assoc_rsp_mlo_ie(struct mac_context *mac_ctx,
num_sta_pro++;
}
mlo_ie->num_sta_profile = num_sta_pro;
mlo_ie->mld_capabilities_info.max_simultaneous_link_num = num_sta_pro;
mlo_ie->mld_capab_and_op_info.max_simultaneous_link_num = num_sta_pro;
return QDF_STATUS_SUCCESS;
}
@@ -9640,11 +9641,12 @@ QDF_STATUS populate_dot11f_bcn_mlo_ie(struct mac_context *mac_ctx,
session->mlo_link_info.link_ie.bss_param_change_cnt;
tmp_offset += 1; /* bss parameters change count */
common_info_length += WLAN_ML_BSSPARAMCHNGCNT_SIZE;
mlo_ie->mld_capab_present = 0;
mlo_ie->mld_capab_and_op_present = 0;
mlo_ie->mld_id_present = 0;
sch_info->num_links = 0;
lim_get_mlo_vdev_list(session, &vdev_count, wlan_vdev_list);
mlo_ie->mld_capabilities_info.max_simultaneous_link_num =
mlo_ie->mld_capab_and_op_info.max_simultaneous_link_num =
vdev_count - 1;
mlo_ie->common_info_length = common_info_length;
@@ -9923,8 +9925,9 @@ populate_dot11f_mlo_caps(struct mac_context *mac_ctx,
mlo_ie->eml_capabilities_info.emlsr_support = 0;
}
mlo_ie->mld_capab_present = 1;
common_info_len += WLAN_ML_BV_CINFO_MLDCAP_SIZE;
mlo_ie->mld_capab_and_op_present = 1;
common_info_len += WLAN_ML_BV_CINFO_MLDCAPANDOP_SIZE;
mlo_ie->mld_id_present = 0;
mlo_ie->reserved = 0;
mlo_ie->reserved_1 = 0;
mlo_ie->common_info_length = common_info_len;
@@ -10888,7 +10891,8 @@ QDF_STATUS populate_dot11f_auth_mlo_ie(struct mac_context *mac_ctx,
mlo_ie->bss_param_change_cnt_present = 0;
mlo_ie->medium_sync_delay_info_present = 0;
mlo_ie->eml_capab_present = 0;
mlo_ie->mld_capab_present = 0;
mlo_ie->mld_capab_and_op_present = 0;
mlo_ie->mld_id_present = 0;
p_ml_ie = mlo_ie->data;
len_remaining = sizeof(mlo_ie->data);
@@ -10982,16 +10986,17 @@ QDF_STATUS populate_dot11f_assoc_req_mlo_ie(struct mac_context *mac_ctx,
mlo_ie->bss_param_change_cnt_present = 0;
mlo_ie->medium_sync_delay_info_present = 0;
mlo_ie->eml_capab_present = 0;
mlo_ie->mld_capab_present = 1;
mlo_ie->mld_capab_and_op_present = 1;
mlo_ie->mld_id_present = 0;
if (mlo_ie->mld_capab_present) {
presence_bitmap |= WLAN_ML_BV_CTRL_PBM_MLDCAP_P;
mlo_ie->common_info_length += WLAN_ML_BV_CINFO_MLDCAP_SIZE;
mlo_ie->mld_capabilities_info.max_simultaneous_link_num = 1;
mlo_ie->mld_capabilities_info.srs_support = 0;
mlo_ie->mld_capabilities_info.tid_link_map_supported = 0;
mlo_ie->mld_capabilities_info.str_freq_separation = 0;
mlo_ie->mld_capabilities_info.aar_support = 0;
if (mlo_ie->mld_capab_and_op_present) {
presence_bitmap |= WLAN_ML_BV_CTRL_PBM_MLDCAPANDOP_P;
mlo_ie->common_info_length += WLAN_ML_BV_CINFO_MLDCAPANDOP_SIZE;
mlo_ie->mld_capab_and_op_info.max_simultaneous_link_num = 1;
mlo_ie->mld_capab_and_op_info.srs_support = 0;
mlo_ie->mld_capab_and_op_info.tid_link_map_supported = 0;
mlo_ie->mld_capab_and_op_info.str_freq_separation = 0;
mlo_ie->mld_capab_and_op_info.aar_support = 0;
}
/*
@@ -11044,13 +11049,13 @@ QDF_STATUS populate_dot11f_assoc_req_mlo_ie(struct mac_context *mac_ctx,
len_remaining -= WLAN_ML_BV_CINFO_EMLCAP_SIZE;
}
if (mlo_ie->mld_capab_present) {
if (mlo_ie->mld_capab_and_op_present) {
QDF_SET_BITS(*(uint16_t *)p_ml_ie,
WLAN_ML_BV_CINFO_MLDCAP_MAXSIMULLINKS_IDX,
WLAN_ML_BV_CINFO_MLDCAP_MAXSIMULLINKS_BITS,
mlo_ie->mld_capabilities_info.max_simultaneous_link_num);
p_ml_ie += WLAN_ML_BV_CINFO_MLDCAP_SIZE;
len_remaining -= WLAN_ML_BV_CINFO_MLDCAP_SIZE;
WLAN_ML_BV_CINFO_MLDCAPANDOP_MAXSIMULLINKS_IDX,
WLAN_ML_BV_CINFO_MLDCAPANDOP_MAXSIMULLINKS_BITS,
mlo_ie->mld_capab_and_op_info.max_simultaneous_link_num);
p_ml_ie += WLAN_ML_BV_CINFO_MLDCAPANDOP_SIZE;
len_remaining -= WLAN_ML_BV_CINFO_MLDCAPANDOP_SIZE;
}
mlo_ie->num_data = p_ml_ie - mlo_ie->data;