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
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -2871,4 +2871,64 @@ hal_rx_mpdu_info_ampdu_flag_get(hal_soc_handle_t hal_soc_hdl, uint8_t *buf)
|
||||
return hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get(buf);
|
||||
}
|
||||
|
||||
#ifdef REO_SHARED_QREF_TABLE_EN
|
||||
/**
|
||||
* hal_reo_shared_qaddr_write(): Write REo tid queue addr
|
||||
* LUT shared by SW and HW at the index given by peer id
|
||||
* and tid.
|
||||
*
|
||||
* @hal_soc: hal soc pointer
|
||||
* @reo_qref_addr: pointer to index pointed to be peer_id
|
||||
* and tid
|
||||
* @tid: tid queue number
|
||||
* @hw_qdesc_paddr: reo queue addr
|
||||
*/
|
||||
static inline 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)
|
||||
{
|
||||
struct hal_soc *hal_soc = (struct hal_soc *)hal_soc_hdl;
|
||||
|
||||
if (hal_soc->ops->hal_reo_shared_qaddr_write)
|
||||
return hal_soc->ops->hal_reo_shared_qaddr_write(hal_soc_hdl,
|
||||
peer_id, tid, hw_qdesc_paddr);
|
||||
}
|
||||
|
||||
/**
|
||||
* hal_reo_shared_qaddr_init(): Initialize reo qref LUT
|
||||
* @hal_soc: Hal soc pointer
|
||||
*
|
||||
* Write MLO and Non MLO table start addr to HW reg
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
static inline void
|
||||
hal_reo_shared_qaddr_init(hal_soc_handle_t hal_soc_hdl)
|
||||
{
|
||||
struct hal_soc *hal_soc = (struct hal_soc *)hal_soc_hdl;
|
||||
|
||||
if (hal_soc->ops->hal_reo_shared_qaddr_init)
|
||||
return hal_soc->ops->hal_reo_shared_qaddr_init(hal_soc_hdl);
|
||||
}
|
||||
|
||||
#else
|
||||
static inline 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) {}
|
||||
static inline void
|
||||
hal_reo_shared_qaddr_init(hal_soc_handle_t hal_soc_hdl) {}
|
||||
|
||||
#endif /* REO_SHARED_QREF_TABLE_EN */
|
||||
|
||||
static inline uint8_t
|
||||
hal_reo_shared_qaddr_is_enable(hal_soc_handle_t hal_soc_hdl)
|
||||
{
|
||||
struct hal_soc *hal = (struct hal_soc *)hal_soc_hdl;
|
||||
|
||||
return hal->reo_qref.reo_qref_table_en;
|
||||
}
|
||||
#endif /* _HAL_RX_H */
|
||||
|
Reference in New Issue
Block a user