Эх сурвалжийг харах

qcacmn: Add API to update MGMT Rx REO Host snapshot

MGMT Rx REO algorithm maintains a host snapshot which contains MGMT Rx
REO parameters of the latest frame received by the Host.
Add an API to update the same using the parameters sent by the FW.

CRs-Fixed: 3029489
Change-Id: I7ea574507de4e96407207bcb57319680ae78f7c9
Shiva Krishna Pittala 4 жил өмнө
parent
commit
719e90b6dc

+ 40 - 0
umac/cmn_services/mgmt_txrx/core/src/wlan_mgmt_txrx_rx_reo.c

@@ -1059,6 +1059,46 @@ mgmt_rx_reo_list_init(struct mgmt_rx_reo_list *reo_list)
 	return QDF_STATUS_SUCCESS;
 	return QDF_STATUS_SUCCESS;
 }
 }
 
 
+/**
+ * wlan_mgmt_rx_reo_update_host_snapshot() - Update Host snapshot with the MGMT
+ * Rx REO parameters.
+ * @pdev: pdev extracted from the WMI event
+ * @reo_params: MGMT Rx REO parameters received in the WMI event
+ *
+ * Return: QDF_STATUS of operation
+ */
+static QDF_STATUS
+wlan_mgmt_rx_reo_update_host_snapshot(struct wlan_objmgr_pdev *pdev,
+				      struct mgmt_rx_reo_params *reo_params)
+{
+	struct mgmt_rx_reo_pdev_info *rx_reo_pdev_ctx;
+	struct mgmt_rx_reo_snapshot_params *host_ss;
+
+	if (!reo_params) {
+		mgmt_rx_reo_err("Mgmt Rx REO params are NULL");
+		return QDF_STATUS_E_NULL_VALUE;
+	}
+
+	rx_reo_pdev_ctx = wlan_mgmt_rx_reo_get_priv_object(pdev);
+	if (!rx_reo_pdev_ctx) {
+		mgmt_rx_reo_err("Mgmt Rx REO context empty for pdev %pK", pdev);
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	/* FW should send valid REO parameters */
+	if (!reo_params->valid) {
+		mgmt_rx_reo_err("Mgmt Rx REO params is invalid");
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	host_ss = &rx_reo_pdev_ctx->host_snapshot;
+	host_ss->valid = true;
+	host_ss->global_timestamp = reo_params->global_timestamp;
+	host_ss->mgmt_pkt_ctr = reo_params->mgmt_pkt_ctr;
+
+	return QDF_STATUS_SUCCESS;
+}
+
 QDF_STATUS
 QDF_STATUS
 mgmt_rx_reo_init_context(void)
 mgmt_rx_reo_init_context(void)
 {
 {