qcacmn: Config edits for multiple TX rings in HMT

The following configurations are changed
- Change numer of WBM2SWRELEASE rings from 7 to 8
- Use configurable RBM value when enqueuing packets for TX. This is needed
since WBM release ring numbers do not have an easy mapping to RBM values
for HMT1.0.

Change-Id: Idcf9e48e00b7039331fc1837bb1e900b12f19eb3
CRs-Fixed: 2984362
This commit is contained in:
Mohit Khanna
2021-07-16 03:45:46 -07:00
zatwierdzone przez Madan Koyyalamudi
rodzic 3e89b4435a
commit 47a165fe8e
9 zmienionych plików z 113 dodań i 73 usunięć

Wyświetl plik

@@ -88,6 +88,20 @@
struct wlan_cfg_dp_pdev_ctxt;
/**
* struct wlan_cfg_tcl_wbm_ring_num_map - TCL WBM Ring number mapping
* @tcl_ring_num - TCL Ring number
* @wbm_ring_num - WBM Ring number
* @wbm_ring_num - WBM RBM ID to be used when enqueuing to TCL
* @for_ipa - whether this TCL/WBM for IPA use or not
*/
struct wlan_cfg_tcl_wbm_ring_num_map {
uint8_t tcl_ring_num;
uint8_t wbm_ring_num;
uint8_t wbm_rbm_id;
uint8_t for_ipa;
};
/**
* struct wlan_srng_cfg - Per ring configuration parameters
* @timer_threshold: Config to control interrupts based on timer duration
@@ -208,6 +222,8 @@ struct wlan_srng_cfg {
* @wow_check_rx_pending_enable: Enable RX frame pending check in WoW
* @ipa_tx_ring_size: IPA tx ring size
* @ipa_tx_comp_ring_size: IPA tx completion ring size
* @hw_cc_conv_enabled: cookie conversion enabled
* @tcl_wbm_map_array: TCL-WBM map array
*/
struct wlan_cfg_dp_soc_ctxt {
int num_int_ctxts;
@@ -337,6 +353,7 @@ struct wlan_cfg_dp_soc_ctxt {
uint32_t ipa_tx_comp_ring_size;
#endif
bool hw_cc_enabled;
struct wlan_cfg_tcl_wbm_ring_num_map *tcl_wbm_map_array;
};
/**
@@ -357,18 +374,6 @@ struct wlan_cfg_dp_pdev_ctxt {
int nss_enabled;
};
/**
* struct wlan_cfg_tcl_wbm_ring_num_map - TCL WBM Ring number mapping
* @tcl_ring_num - TCL Ring number
* @wbm_ring_num - WBM Ring number
* @for_ipa - whether this TCL/WBM for IPA use or not
*/
struct wlan_cfg_tcl_wbm_ring_num_map {
uint8_t tcl_ring_num;
uint8_t wbm_ring_num;
uint8_t for_ipa;
};
/**
* wlan_cfg_soc_attach() - Attach configuration interface for SoC
* @ctrl_obj - PSOC object
@@ -479,8 +484,10 @@ int wlan_cfg_get_num_contexts(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
*/
int wlan_cfg_get_tx_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
int context);
/**
* wlan_cfg_get_tcl_wbm_ring_num_for_index() - Get TCL/WBM ring number for index
* @wlan_cfg_ctx - Configuration Handle
* @index: index for which TCL/WBM ring numbers are needed
* @tcl: pointer to TCL ring number, to be filled
* @wbm: pointer to WBM ring number to be filled
@@ -493,19 +500,45 @@ int wlan_cfg_get_tx_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
*
* Return: None
*/
void wlan_cfg_get_tcl_wbm_ring_num_for_index(int index, int *tcl, int *wbm);
static inline
void wlan_cfg_get_tcl_wbm_ring_num_for_index(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
int index, int *tcl, int *wbm)
{
*tcl = wlan_cfg_ctx->tcl_wbm_map_array[index].tcl_ring_num;
*wbm = wlan_cfg_ctx->tcl_wbm_map_array[index].wbm_ring_num;
}
/**
* wlan_cfg_get_wbm_ring_num_for_index() - Get WBM ring number for index
* @wlan_cfg_ctx - Configuration Handle
* @index: index for which WBM ring numbers is needed
*
* Return: WBM Ring number for the index
*/
static inline
int wlan_cfg_get_wbm_ring_num_for_index(int index)
int wlan_cfg_get_wbm_ring_num_for_index(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
int index)
{
extern struct wlan_cfg_tcl_wbm_ring_num_map tcl_wbm_map_array[MAX_TCL_DATA_RINGS];
return tcl_wbm_map_array[index].wbm_ring_num;
return wlan_cfg_ctx->tcl_wbm_map_array[index].wbm_ring_num;
}
/**
* wlan_cfg_get_rbm_id_for_index() - Get WBM RBM ID for TX ring index
* @wlan_cfg_ctx - Configuration Handle
* @index: TCL index for which WBM rbm value is needed
*
* The function fills in wbm rbm value corresponding to a TX ring index in
* soc->tcl_data_ring. This is needed since WBM ring numbers donot map
* sequentially to wbm rbm values.
* The function returns rbm id values as stored in tcl_wbm_map_array global
* array.
*
* Return: WBM rbm value corresnponding to TX ring index
*/
static inline
int wlan_cfg_get_rbm_id_for_index(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx, int index)
{
return wlan_cfg_ctx->tcl_wbm_map_array[index].wbm_rbm_id;
}
/**