瀏覽代碼

qcacld-3.0: Configure the default values for MSD subfields

An AP MLD advertises Medium Synchronization Delay support
and parameters to ML STA in assoc response frame. Host
extracts these values and sends it to FW via peer assoc
command. If the MSD support is absent in assoc response,
Host sends zeroes for MSD subfields. Change this to
configure specific default values as defined in 802.11BE
draft 3.0.

Change-Id: Idd044b23d350634d96b010176b0d8922e793290a
CRs-Fixed: 3416241
Gururaj Pandurangi 2 年之前
父節點
當前提交
daa45ef22b
共有 2 個文件被更改,包括 16 次插入7 次删除
  1. 13 2
      core/mac/src/pe/lim/lim_utils.c
  2. 3 5
      core/wma/src/wma_mgmt.c

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

@@ -9280,6 +9280,8 @@ void lim_intersect_ap_emlsr_caps(struct mac_context *mac_ctx,
 		 add_bss->staContext.emlsr_trans_timeout);
 }
 
+#define MAX_MSD_OFDM_ED_THRESHOLD 10
+
 void lim_extract_msd_caps(struct mac_context *mac_ctx,
 			  struct pe_session *session,
 			  struct bss_params *add_bss,
@@ -9319,11 +9321,20 @@ void lim_extract_msd_caps(struct mac_context *mac_ctx,
 				assoc_rsp->mlo_ie.mlo_ie.medium_sync_delay_info.medium_sync_duration;
 			add_bss->staContext.msd_caps.med_sync_ofdm_ed_thresh =
 				assoc_rsp->mlo_ie.mlo_ie.medium_sync_delay_info.medium_sync_ofdm_ed_thresh;
+			if (add_bss->staContext.msd_caps.med_sync_ofdm_ed_thresh >
+			    MAX_MSD_OFDM_ED_THRESHOLD)
+				add_bss->staContext.msd_caps.med_sync_ofdm_ed_thresh = 0;
 			add_bss->staContext.msd_caps.med_sync_max_txop_num =
 				assoc_rsp->mlo_ie.mlo_ie.medium_sync_delay_info.medium_sync_max_txop_num;
 		} else {
-			/* Fill MSD params with zeroes if MSD caps are absent */
-			add_bss->staContext.msd_caps.med_sync_duration = 0;
+			/**
+			 * Fill MSD params with default values if MSD caps are
+			 * absent.
+			 * MSD duration = 5484usec / 32 = 171.
+			 * OFDM ED threshold = 0. FW adds -72 to Host value.
+			 * Maximum number of TXOPs = AP value (default = 0).
+			 */
+			add_bss->staContext.msd_caps.med_sync_duration = 171;
 			add_bss->staContext.msd_caps.med_sync_ofdm_ed_thresh = 0;
 			add_bss->staContext.msd_caps.med_sync_max_txop_num = 0;
 		}

+ 3 - 5
core/wma/src/wma_mgmt.c

@@ -1430,14 +1430,12 @@ static void wma_set_mlo_capability(tp_wma_handle wma,
 					params->emlsr_trans_timeout;
 		}
 		req->mlo_params.msd_cap_support = params->msd_caps_present;
-		if (req->mlo_params.msd_cap_support) {
-			req->mlo_params.medium_sync_duration =
+		req->mlo_params.medium_sync_duration =
 				params->msd_caps.med_sync_duration;
-			req->mlo_params.medium_sync_ofdm_ed_thresh =
+		req->mlo_params.medium_sync_ofdm_ed_thresh =
 				params->msd_caps.med_sync_ofdm_ed_thresh;
-			req->mlo_params.medium_sync_max_txop_num =
+		req->mlo_params.medium_sync_max_txop_num =
 				params->msd_caps.med_sync_max_txop_num;
-		}
 	} else {
 		wma_debug("Peer MLO context is NULL");
 		req->mlo_params.mlo_enabled = false;