Ver código fonte

qcacmn: Add extract API for ring params from DBR

Extract ring parameters using dbr_rx_ops for functions in umac.

CRs-Fixed: 2404710
Change-Id: I6fa02668b4fead35ace9e1b4886954ca4cca09c6
Abhiram Jogadenu 6 anos atrás
pai
commit
db3bb4b4a7

+ 2 - 0
target_if/direct_buf_rx/src/target_if_direct_buf_rx_api.c

@@ -174,5 +174,7 @@ void target_if_direct_buf_rx_register_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops)
 				target_if_direct_buf_rx_unregister_events;
 	tx_ops->dbr_tx_ops.direct_buf_rx_print_ring_stat =
 				target_if_direct_buf_rx_print_ring_stat;
+	tx_ops->dbr_tx_ops.direct_buf_rx_get_ring_params =
+				target_if_direct_buf_rx_get_ring_params;
 }
 qdf_export_symbol(target_if_direct_buf_rx_register_tx_ops);

+ 28 - 0
target_if/direct_buf_rx/src/target_if_direct_buf_rx_main.c

@@ -1134,3 +1134,31 @@ QDF_STATUS target_if_direct_buf_rx_print_ring_stat(
 
 	return QDF_STATUS_SUCCESS;
 }
+
+QDF_STATUS
+target_if_direct_buf_rx_get_ring_params(struct wlan_objmgr_pdev *pdev,
+					struct module_ring_params *param,
+					int mod_id)
+{
+	struct direct_buf_rx_pdev_obj *dbr_pdev_obj;
+	struct direct_buf_rx_module_param *dbr_mod_param;
+
+	if (NULL == pdev) {
+		direct_buf_rx_err("pdev context passed is null");
+		return QDF_STATUS_E_INVAL;
+	}
+
+	dbr_pdev_obj = wlan_objmgr_pdev_get_comp_private_obj
+			(pdev, WLAN_TARGET_IF_COMP_DIRECT_BUF_RX);
+
+	if (NULL == dbr_pdev_obj) {
+		direct_buf_rx_err("dir buf rx object is null");
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	dbr_mod_param = &dbr_pdev_obj->dbr_mod_param[mod_id];
+	param->num_bufs = dbr_mod_param->dbr_ring_cfg->num_ptr;
+	param->buf_size = dbr_mod_param->dbr_ring_cfg->buf_size;
+
+	return QDF_STATUS_SUCCESS;
+}

+ 23 - 0
target_if/direct_buf_rx/src/target_if_direct_buf_rx_main.h

@@ -130,6 +130,16 @@ struct direct_buf_rx_psoc_obj {
 	qdf_device_t osdev;
 };
 
+/**
+ * struct module_ring_params - Direct buf ring params for module
+ * @num_bufs: Number of buffers alloted to this module
+ * @buf_size: size of buffers
+ */
+struct module_ring_params {
+	uint32_t num_bufs;
+	uint32_t buf_size;
+};
+
 /**
  * target_if_direct_buf_rx_register_events() - Register WMI events to direct
  *                                             buffer rx module
@@ -244,4 +254,17 @@ QDF_STATUS target_if_direct_buf_rx_module_register(
  */
 QDF_STATUS target_if_direct_buf_rx_module_unregister(
 			struct wlan_objmgr_pdev *pdev, uint8_t mod_id);
+
+/**
+ * target_if_direct_buf_rx_get_ring_params() - Function to get ring parameters
+ *                                             for module_id
+ * @pdev: pointer to pdev object
+ * @module_ring_params: pointer to store ring params
+ * @mod_id: module idindicating module using direct buffer rx framework
+ */
+QDF_STATUS
+target_if_direct_buf_rx_get_ring_params(struct wlan_objmgr_pdev *pdev,
+					struct module_ring_params *param,
+					int mod_id);
+
 #endif /* _TARGET_IF_DIRECT_BUF_RX_MAIN_H_ */

+ 8 - 0
umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h

@@ -66,6 +66,8 @@ struct oem_data_rsp;
 #ifdef DIRECT_BUF_RX_ENABLE
 /* forward declarations for direct buf rx */
 struct direct_buf_rx_data;
+/* Forward declaration for module_ring_params */
+struct module_ring_params;
 #endif
 
 #ifdef FEATURE_WLAN_TDLS
@@ -577,6 +579,8 @@ struct wlan_lmac_if_wifi_pos_tx_ops {
  * @direct_buf_rx_unregister_events: Unregistraton of WMI events for direct
  *                                   buffer rx framework
  * @direct_buf_rx_print_ring_stat: Print ring status per module per pdev
+ *
+ * @direct_buf_rx_get_ring_params: Get ring parameters for module_id
  */
 struct wlan_lmac_if_direct_buf_rx_tx_ops {
 	QDF_STATUS (*direct_buf_rx_module_register)(
@@ -591,6 +595,10 @@ struct wlan_lmac_if_direct_buf_rx_tx_ops {
 			struct wlan_objmgr_psoc *psoc);
 	QDF_STATUS (*direct_buf_rx_print_ring_stat)(
 			struct wlan_objmgr_pdev *pdev);
+	QDF_STATUS (*direct_buf_rx_get_ring_params)
+		(struct wlan_objmgr_pdev *pdev,
+		 struct module_ring_params *param,
+		 int module_id);
 };
 #endif