qcacmn: REO queue ref enhancement for Waikiki
In WIN BE chipsets, replace the REO tid queue programming in FW via WMI with writing to a Host managed table shared by HW and SW. REO HW will pick the tid queue address from the table indexed by peer id and tid number. Change-Id: I8107ca5116425538329b11ae3519f02b32573bac
This commit is contained in:

committed by
Madan Koyyalamudi

parent
e54c2ef953
commit
e4d9b0c2d7
@@ -1028,6 +1028,13 @@ struct hal_hw_txrx_ops {
|
||||
#ifdef QCA_MONITOR_2_0_SUPPORT
|
||||
void (*hal_txmon_status_free_buffer)(qdf_frag_t status_frag);
|
||||
#endif /* QCA_MONITOR_2_0_SUPPORT */
|
||||
void (*hal_reo_shared_qaddr_setup)(hal_soc_handle_t hal_soc_hdl);
|
||||
void (*hal_reo_shared_qaddr_init)(hal_soc_handle_t hal_soc_hdl);
|
||||
void (*hal_reo_shared_qaddr_detach)(hal_soc_handle_t hal_soc_hdl);
|
||||
void (*hal_reo_shared_qaddr_write)(hal_soc_handle_t hal_soc_hdl,
|
||||
uint16_t peer_id,
|
||||
int tid,
|
||||
qdf_dma_addr_t hw_qdesc_paddr);
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1084,6 +1091,22 @@ struct hal_reg_write_fail_history {
|
||||
};
|
||||
#endif
|
||||
|
||||
/**
|
||||
* struct reo_queue_ref_table - Reo qref LUT addr
|
||||
* @mlo_reo_qref_table_vaddr: MLO table vaddr
|
||||
* @non_mlo_reo_qref_table_vaddr: Non MLO table vaddr
|
||||
* @mlo_reo_qref_table_paddr: MLO table paddr
|
||||
* @non_mlo_reo_qref_table_paddr: Non MLO table paddr
|
||||
* @reo_qref_table_en: Enable flag
|
||||
*/
|
||||
struct reo_queue_ref_table {
|
||||
uint64_t *mlo_reo_qref_table_vaddr;
|
||||
uint64_t *non_mlo_reo_qref_table_vaddr;
|
||||
qdf_dma_addr_t mlo_reo_qref_table_paddr;
|
||||
qdf_dma_addr_t non_mlo_reo_qref_table_paddr;
|
||||
uint8_t reo_qref_table_en;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct hal_soc - HAL context to be used to access SRNG APIs
|
||||
* (currently used by data path and
|
||||
@@ -1165,6 +1188,8 @@ struct hal_soc {
|
||||
#endif
|
||||
/* flag to indicate cmn dmac rings in berryllium */
|
||||
bool dmac_cmn_src_rxbuf_ring;
|
||||
/* Reo queue ref table items */
|
||||
struct reo_queue_ref_table reo_qref;
|
||||
};
|
||||
|
||||
#if defined(FEATURE_HAL_DELAYED_REG_WRITE)
|
||||
@@ -1227,4 +1252,14 @@ struct hal_srng *hal_ring_handle_to_hal_srng(hal_ring_handle_t hal_ring)
|
||||
{
|
||||
return (struct hal_srng *)hal_ring;
|
||||
}
|
||||
|
||||
/* Size of REO queue reference table in Host
|
||||
* 2k peers * 17 tids * 8bytes(rx_reo_queue_reference)
|
||||
* = 278528 bytes
|
||||
*/
|
||||
#define REO_QUEUE_REF_NON_ML_TABLE_SIZE 278528
|
||||
/* Calculated based on 512 MLO peers */
|
||||
#define REO_QUEUE_REF_ML_TABLE_SIZE 69632
|
||||
#define HAL_ML_PEER_ID_START 0x2000
|
||||
#define HAL_PEER_ID_IS_MLO(peer_id) ((peer_id) & HAL_ML_PEER_ID_START)
|
||||
#endif /* _HAL_INTERNAL_H_ */
|
||||
|
Reference in New Issue
Block a user