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

qcacmn: Get link id from pdev only if mgmt Rx REO is enabled

Get link id from pdev only if management Rx REO feature is enabled in
FW and INI.

CRs-Fixed: 3199557
Change-Id: I8732cbb9c24059268f67d6c00447acbe99ef5ccc
Edayilliam Jayadev 3 жил өмнө
parent
commit
bec69b91fe

+ 3 - 4
umac/cmn_services/mgmt_txrx/core/src/wlan_mgmt_txrx_rx_reo_i.h

@@ -1049,11 +1049,10 @@ static inline bool is_mgmt_rx_reo_required(
 			struct mgmt_rx_reo_frame_descriptor *desc)
 			struct mgmt_rx_reo_frame_descriptor *desc)
 {
 {
 	/**
 	/**
-	 * NOTE: Implementing a simple policy based on INI, WMI serive bit
-	 * and the number of MLO vdevs in the given pdev.
+	 * NOTE: Implementing a simple policy based on the number of MLO vdevs
+	 * in the given pdev.
 	 */
 	 */
-	return wlan_mgmt_rx_reo_is_feature_enabled_at_pdev(pdev) &&
-	       wlan_pdev_get_mlo_vdev_count(pdev);
+	return  wlan_pdev_get_mlo_vdev_count(pdev);
 }
 }
 
 
 /**
 /**

+ 16 - 31
umac/cmn_services/mgmt_txrx/dispatcher/src/wlan_mgmt_txrx_rx_reo_tgt_api.c

@@ -105,21 +105,32 @@ tgt_mgmt_rx_reo_enter_algo_without_buffer(
 				struct mgmt_rx_reo_params *reo_params,
 				struct mgmt_rx_reo_params *reo_params,
 				enum mgmt_rx_reo_frame_descriptor_type type)
 				enum mgmt_rx_reo_frame_descriptor_type type)
 {
 {
-	struct mgmt_rx_event_params mgmt_rx_params;
+	struct mgmt_rx_event_params mgmt_rx_params = {0};
 	struct mgmt_rx_reo_frame_descriptor desc = {0};
 	struct mgmt_rx_reo_frame_descriptor desc = {0};
 	bool is_frm_queued;
 	bool is_frm_queued;
 	QDF_STATUS status;
 	QDF_STATUS status;
+	int8_t link_id;
 
 
 	if (!pdev) {
 	if (!pdev) {
 		mgmt_rx_reo_err("pdev is null");
 		mgmt_rx_reo_err("pdev is null");
 		return QDF_STATUS_E_NULL_VALUE;
 		return QDF_STATUS_E_NULL_VALUE;
 	}
 	}
 
 
+	if (!wlan_mgmt_rx_reo_is_feature_enabled_at_pdev(pdev))
+		return  QDF_STATUS_SUCCESS;
+
 	if (!reo_params) {
 	if (!reo_params) {
 		mgmt_rx_reo_err("mgmt rx reo params are null");
 		mgmt_rx_reo_err("mgmt rx reo params are null");
 		return QDF_STATUS_E_NULL_VALUE;
 		return QDF_STATUS_E_NULL_VALUE;
 	}
 	}
 
 
+	link_id = wlan_get_mlo_link_id_from_pdev(pdev);
+	if (link_id < 0) {
+		mgmt_rx_reo_err("Invalid link %d for the pdev", link_id);
+		return QDF_STATUS_E_INVAL;
+	}
+	reo_params->link_id = link_id;
+
 	mgmt_rx_params.reo_params = reo_params;
 	mgmt_rx_params.reo_params = reo_params;
 
 
 	desc.nbuf = NULL; /* No frame buffer */
 	desc.nbuf = NULL; /* No frame buffer */
@@ -149,21 +160,6 @@ QDF_STATUS
 tgt_mgmt_rx_reo_fw_consumed_event_handler(struct wlan_objmgr_pdev *pdev,
 tgt_mgmt_rx_reo_fw_consumed_event_handler(struct wlan_objmgr_pdev *pdev,
 					  struct mgmt_rx_reo_params *params)
 					  struct mgmt_rx_reo_params *params)
 {
 {
-	int8_t link_id;
-
-	if (!params) {
-		mgmt_rx_reo_err("MGMT rx reo params is NULL");
-		return QDF_STATUS_E_NULL_VALUE;
-	}
-
-	link_id = wlan_get_mlo_link_id_from_pdev(pdev);
-	if (link_id < 0) {
-		mgmt_rx_reo_err("Invalid link %d for the pdev", link_id);
-		return QDF_STATUS_E_INVAL;
-	}
-
-	params->link_id = link_id;
-
 	return tgt_mgmt_rx_reo_enter_algo_without_buffer(
 	return tgt_mgmt_rx_reo_enter_algo_without_buffer(
 			pdev, params, MGMT_RX_REO_FRAME_DESC_FW_CONSUMED_FRAME);
 			pdev, params, MGMT_RX_REO_FRAME_DESC_FW_CONSUMED_FRAME);
 }
 }
@@ -172,21 +168,6 @@ QDF_STATUS
 tgt_mgmt_rx_reo_host_drop_handler(struct wlan_objmgr_pdev *pdev,
 tgt_mgmt_rx_reo_host_drop_handler(struct wlan_objmgr_pdev *pdev,
 				  struct mgmt_rx_reo_params *params)
 				  struct mgmt_rx_reo_params *params)
 {
 {
-	int8_t link_id;
-
-	if (!params) {
-		mgmt_rx_reo_err("MGMT rx reo params is NULL");
-		return QDF_STATUS_E_NULL_VALUE;
-	}
-
-	link_id = wlan_get_mlo_link_id_from_pdev(pdev);
-	if (link_id < 0) {
-		mgmt_rx_reo_err("Invalid link %d for the pdev", link_id);
-		return QDF_STATUS_E_INVAL;
-	}
-
-	params->link_id = link_id;
-
 	return tgt_mgmt_rx_reo_enter_algo_without_buffer(
 	return tgt_mgmt_rx_reo_enter_algo_without_buffer(
 			pdev, params, MGMT_RX_REO_FRAME_DESC_ERROR_FRAME);
 			pdev, params, MGMT_RX_REO_FRAME_DESC_ERROR_FRAME);
 }
 }
@@ -264,6 +245,10 @@ QDF_STATUS tgt_mgmt_rx_reo_frame_handler(
 		goto cleanup;
 		goto cleanup;
 	}
 	}
 
 
+	if (!wlan_mgmt_rx_reo_is_feature_enabled_at_pdev(pdev))
+		return tgt_mgmt_txrx_process_rx_frame(pdev, buf,
+						      mgmt_rx_params);
+
 	link_id = wlan_get_mlo_link_id_from_pdev(pdev);
 	link_id = wlan_get_mlo_link_id_from_pdev(pdev);
 	if (link_id < 0) {
 	if (link_id < 0) {
 		mgmt_rx_reo_err("Invalid link %d for the pdev", link_id);
 		mgmt_rx_reo_err("Invalid link %d for the pdev", link_id);