diff --git a/target_if/direct_buf_rx/src/target_if_direct_buf_rx_api.c b/target_if/direct_buf_rx/src/target_if_direct_buf_rx_api.c index 1361c0ab629c..b50ad2d96588 100644 --- a/target_if/direct_buf_rx/src/target_if_direct_buf_rx_api.c +++ b/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); diff --git a/target_if/direct_buf_rx/src/target_if_direct_buf_rx_main.c b/target_if/direct_buf_rx/src/target_if_direct_buf_rx_main.c index b4cb87e28237..3d2ddb9b90c2 100644 --- a/target_if/direct_buf_rx/src/target_if_direct_buf_rx_main.c +++ b/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; +} diff --git a/target_if/direct_buf_rx/src/target_if_direct_buf_rx_main.h b/target_if/direct_buf_rx/src/target_if_direct_buf_rx_main.h index e8764d58eb1c..d38108ce1960 100644 --- a/target_if/direct_buf_rx/src/target_if_direct_buf_rx_main.h +++ b/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_ */ diff --git a/umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h b/umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h index da58871dc870..85561b965250 100644 --- a/umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h +++ b/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