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:

committed by
Madan Koyyalamudi

parent
f656e5d56d
commit
102a08f0d5
@@ -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
|
||||
|
@@ -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,
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user