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:

committed by
snandini

parent
199049f281
commit
8007762d6a
@@ -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) \
|
||||
|
Reference in New Issue
Block a user