Kaynağa Gözat

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
Deeksha Gupta 2 yıl önce
ebeveyn
işleme
102a08f0d5

+ 19 - 12
core/mac/src/pe/include/lim_session.h

@@ -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

+ 2 - 1
core/mac/src/pe/lim/lim_utils.c

@@ -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,

+ 27 - 22
core/mac/src/sys/legacy/src/utils/src/parser_api.c

@@ -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;