فهرست منبع

qcacld-3.0: Add support to configure ito repeat count

Currently there is no support to configure ito repeat
count when driver enters into wow mode.

Add support to configure ito repeat count with ini
gItoRepeatCount when driver enters into wow mode.

CRs-fixed: 2419137
Change-Id: I62d7e7df12342e9743c26e0147851347214a9ce7
Ashish Kumar Dhanotiya 6 سال پیش
والد
کامیت
16fd4201f9

+ 1 - 0
components/pmo/core/src/wlan_pmo_main.c

@@ -209,6 +209,7 @@ static void wlan_pmo_init_cfg(struct wlan_objmgr_psoc *psoc,
 			cfg_get(psoc, CFG_ACTIVE_UC_APF_MODE);
 	psoc_cfg->active_mc_bc_apf_mode =
 			cfg_get(psoc, CFG_ACTIVE_MC_BC_APF_MODE);
+	psoc_cfg->ito_repeat_count = cfg_get(psoc, CFG_ITO_REPEAT_COUNT);
 	wlan_pmo_ra_filtering_init_cfg(psoc, psoc_cfg);
 }
 

+ 21 - 0
components/pmo/core/src/wlan_pmo_suspend_resume.c

@@ -170,6 +170,8 @@ static void pmo_configure_vdev_suspend_params(
 	uint8_t vdev_id;
 	enum QDF_OPMODE opmode = pmo_core_get_vdev_op_mode(vdev);
 	struct pmo_psoc_cfg *psoc_cfg = &vdev_ctx->pmo_psoc_ctx->psoc_cfg;
+	uint8_t  ito_repeat_count_value = 0;
+	uint32_t non_wow_inactivity_time, wow_inactivity_time;
 
 	pmo_enter();
 
@@ -185,6 +187,25 @@ static void pmo_configure_vdev_suspend_params(
 			  vdev_id);
 	}
 
+	non_wow_inactivity_time = psoc_cfg->ps_data_inactivity_timeout;
+	wow_inactivity_time = psoc_cfg->wow_data_inactivity_timeout;
+	/*
+	 * To keep ito repeat count same in wow mode as in non wow mode,
+	 * modulating ito repeat count value.
+	 */
+	ito_repeat_count_value = (non_wow_inactivity_time /
+				  wow_inactivity_time) *
+					psoc_cfg->ito_repeat_count;
+	if (ito_repeat_count_value)
+		ret = pmo_tgt_vdev_update_param_req(
+					vdev,
+					pmo_vdev_param_ito_repeat_count,
+					psoc_cfg->wow_data_inactivity_timeout);
+	if (QDF_IS_STATUS_ERROR(ret)) {
+		pmo_err("Failed to Set ito repeat count vdevId %d",
+			vdev_id);
+	}
+
 	pmo_exit();
 }
 

+ 4 - 0
components/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h

@@ -64,11 +64,13 @@
  * @pmo_vdev_param_dtim_policy: vdev param dtim policy
  * @pmo_vdev_max_param: Max vdev param id
  * @pmo_vdev_param_inactivity_time: inactivity time value
+ * @pmo_vdev_param_ito_repeat_count: Indicates ito repeated count
  */
 enum pmo_vdev_param_id {
 	pmo_vdev_param_listen_interval = 0,
 	pmo_vdev_param_dtim_policy,
 	pmo_vdev_param_inactivity_time,
+	pmo_vdev_param_ito_repeat_count,
 	pmo_vdev_max_param
 };
 
@@ -347,6 +349,7 @@ enum active_apf_mode {
  *	mode for uc packets
  * @active_mc_bc_apf_mode: Setting that determines how APF is applied in
  *	active mode for MC/BC packets
+ * @ito_repeat_count: Indicates ito repeated count
  */
 struct pmo_psoc_cfg {
 	bool ptrn_match_enable_all_vdev;
@@ -408,6 +411,7 @@ struct pmo_psoc_cfg {
 	uint8_t ps_data_inactivity_timeout;
 	enum active_apf_mode active_uc_apf_mode;
 	enum active_apf_mode active_mc_bc_apf_mode;
+	uint8_t ito_repeat_count;
 };
 
 /**

+ 3 - 0
components/target_if/pmo/src/target_if_pmo_suspend_resume.c

@@ -60,6 +60,9 @@ QDF_STATUS target_if_pmo_send_vdev_update_param_req(
 	case pmo_vdev_param_inactivity_time:
 		param_id = WMI_STA_PS_PARAM_INACTIVITY_TIME;
 		break;
+	case pmo_vdev_param_ito_repeat_count:
+		param_id = WMI_STA_PS_PARAM_MAX_RESET_ITO_COUNT_ON_TIM_NO_TXRX;
+		break;
 	default:
 		target_if_err("invalid vdev param id %d", param_id);
 		return QDF_STATUS_E_INVAL;