qcacmn: Fix Reo qref issues

1. Since peer id is reused for reconnection in MLO case,
old entries for queue desc addr is cleared. Clear the reo
internal storage and reset it back on client connection.

2. Send Qref feature WMI cmd to FW to enable the feature.

Change-Id: I6705ce121c8c25d9a2ace039dab21312fa5ea4b1
CRs-Fixed: 3156642
This commit is contained in:
sumedh baikady
2022-02-22 12:44:15 -08:00
committed by Madan Koyyalamudi
parent 423c297cc3
commit 52181cceb1
9 changed files with 77 additions and 0 deletions

View File

@@ -2934,6 +2934,26 @@ hal_reo_shared_qaddr_init(hal_soc_handle_t hal_soc_hdl)
return hal_soc->ops->hal_reo_shared_qaddr_init(hal_soc_hdl);
}
/**
* hal_reo_shared_qaddr_cache_clear(): Set and unset 'clear_qdesc_array'
* bit in reo reg for shared qref feature. This is done for every MLO
* connection to clear HW reo internal storage for clearing stale entry
* of prev peer having same peer id
*
* @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_cache_clear(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_cache_clear)
return hal_soc->ops->hal_reo_shared_qaddr_cache_clear(hal_soc_hdl);
}
#else
static inline void
hal_reo_shared_qaddr_write(hal_soc_handle_t hal_soc_hdl,
@@ -2943,6 +2963,9 @@ hal_reo_shared_qaddr_write(hal_soc_handle_t hal_soc_hdl,
static inline void
hal_reo_shared_qaddr_init(hal_soc_handle_t hal_soc_hdl) {}
static inline void
hal_reo_shared_qaddr_cache_clear(hal_soc_handle_t hal_soc_hdl) {}
#endif /* REO_SHARED_QREF_TABLE_EN */
static inline uint8_t