diff --git a/dp/wifi3.0/dp_rx.c b/dp/wifi3.0/dp_rx.c index 060a342ea0..4c68f6a20a 100644 --- a/dp/wifi3.0/dp_rx.c +++ b/dp/wifi3.0/dp_rx.c @@ -2529,6 +2529,8 @@ more_data: soc, rx.msdu_scatter_wait_break, 1); + dp_rx_cookie_reset_invalid_bit( + ring_desc); break; } is_prev_msdu_last = false; diff --git a/dp/wifi3.0/dp_rx.h b/dp/wifi3.0/dp_rx.h index ff28fd7ec1..7c0a810413 100644 --- a/dp/wifi3.0/dp_rx.h +++ b/dp/wifi3.0/dp_rx.h @@ -587,12 +587,30 @@ dp_rx_cookie_check_and_invalidate(hal_ring_desc_t ring_desc) HAL_RX_REO_BUF_COOKIE_INVALID_SET(ring_desc); return QDF_STATUS_SUCCESS; } + +/** + * dp_rx_cookie_reset_invalid_bit() - Reset the invalid bit of the cookie + * field in ring descriptor + * @ring_desc: ring descriptor + * + * Return: None + */ +static inline void +dp_rx_cookie_reset_invalid_bit(hal_ring_desc_t ring_desc) +{ + HAL_RX_REO_BUF_COOKIE_INVALID_RESET(ring_desc); +} #else static inline QDF_STATUS dp_rx_cookie_check_and_invalidate(hal_ring_desc_t ring_desc) { return QDF_STATUS_SUCCESS; } + +static inline void +dp_rx_cookie_reset_invalid_bit(hal_ring_desc_t ring_desc) +{ +} #endif #endif /* QCA_HOST_MODE_WIFI_DISABLED */ diff --git a/hal/wifi3.0/hal_rx.h b/hal/wifi3.0/hal_rx.h index 79ebf600b4..11a012a216 100644 --- a/hal/wifi3.0/hal_rx.h +++ b/hal/wifi3.0/hal_rx.h @@ -287,6 +287,14 @@ enum hal_rx_ret_buf_manager { (BUFFER_ADDR_INFO_1_SW_BUFFER_COOKIE_OFFSET >> 2))) |= \ HAL_RX_COOKIE_INVALID_MASK) +/* + * macro to reset the invalid bit for sw cookie + */ +#define HAL_RX_BUF_COOKIE_INVALID_RESET(buff_addr_info) \ + ((*(((unsigned int *)buff_addr_info) + \ + (BUFFER_ADDR_INFO_1_SW_BUFFER_COOKIE_OFFSET >> 2))) &= \ + ~HAL_RX_COOKIE_INVALID_MASK) + /* * macro to set the cookie into the rxdma ring entry */ @@ -390,6 +398,11 @@ enum hal_rx_ret_buf_manager { (((struct reo_destination_ring *) \ reo_desc)->buf_or_link_desc_addr_info))) +#define HAL_RX_REO_BUF_COOKIE_INVALID_RESET(reo_desc) \ + (HAL_RX_BUF_COOKIE_INVALID_RESET(& \ + (((struct reo_destination_ring *) \ + reo_desc)->buf_or_link_desc_addr_info))) + #define HAL_RX_MPDU_SEQUENCE_NUMBER_GET(mpdu_info_ptr) \ ((mpdu_info_ptr \ [RX_MPDU_DESC_INFO_0_MPDU_SEQUENCE_NUMBER_OFFSET >> 2] & \