qcacmn: Set invalid bit in cookie for exception ring descriptor

On returning the msdu link descriptor to HW via WBM
release ring, the rx exception ring contents are not
zeroed. This could result in host reading stale ring
descriptor content in the scenario when HP is updated
even before the latest values are reflected in the ring
descriptor.

Fix is to set invalid bit in cookie for exception ring
descriptor and add cookie sanity check.

Change-Id: I01a294c92b260ebe8e584ef20e9550b1febec913
CRs-Fixed: 2730759
This commit is contained in:
Yeshwanth Sriram Guntuka
2020-07-14 21:23:58 +05:30
committed by snandini
parent 199049f281
commit 8007762d6a
4 changed files with 87 additions and 8 deletions

View File

@@ -300,6 +300,28 @@ enum hal_rx_ret_buf_manager {
BUFFER_ADDR_INFO_1_RETURN_BUFFER_MANAGER_MASK, \
BUFFER_ADDR_INFO_1_RETURN_BUFFER_MANAGER_LSB))
#define HAL_RX_LINK_COOKIE_INVALID_MASK 0x40000000
#define HAL_RX_BUF_LINK_COOKIE_INVALID_GET(buff_addr_info) \
((*(((unsigned int *)buff_addr_info) + \
(BUFFER_ADDR_INFO_1_SW_BUFFER_COOKIE_OFFSET >> 2))) & \
HAL_RX_LINK_COOKIE_INVALID_MASK)
#define HAL_RX_BUF_LINK_COOKIE_INVALID_SET(buff_addr_info) \
((*(((unsigned int *)buff_addr_info) + \
(BUFFER_ADDR_INFO_1_SW_BUFFER_COOKIE_OFFSET >> 2))) |= \
HAL_RX_LINK_COOKIE_INVALID_MASK)
#define HAL_RX_REO_BUF_LINK_COOKIE_INVALID_GET(reo_desc) \
(HAL_RX_BUF_LINK_COOKIE_INVALID_GET(& \
(((struct reo_destination_ring *) \
reo_desc)->buf_or_link_desc_addr_info)))
#define HAL_RX_REO_BUF_LINK_COOKIE_INVALID_SET(reo_desc) \
(HAL_RX_BUF_LINK_COOKIE_INVALID_SET(& \
(((struct reo_destination_ring *) \
reo_desc)->buf_or_link_desc_addr_info)))
/* TODO: Convert the following structure fields accesseses to offsets */
#define HAL_RX_REO_BUFFER_ADDR_39_32_GET(reo_desc) \