qcacmn: Update TID value in skb priority from the MPDU buffer

Update TID value in skb priority from the MPDU buffer.

Change-Id: I707190f0c3095b4c47bd4b3cffd4a94f5952939c
CRs-Fixed: 3037067
This commit is contained in:
Sai Rupesh Chevuru
2021-09-15 10:18:25 +05:30
committed by Madan Koyyalamudi
parent 5479ef4492
commit ba3f9c04c8
3 changed files with 23 additions and 8 deletions

View File

@@ -372,8 +372,9 @@ more_data:
if (msdu_desc_info.msdu_flags & HAL_MSDU_F_INTRA_BSS) if (msdu_desc_info.msdu_flags & HAL_MSDU_F_INTRA_BSS)
qdf_nbuf_set_intra_bss(rx_desc->nbuf, 1); qdf_nbuf_set_intra_bss(rx_desc->nbuf, 1);
qdf_nbuf_set_tid_val(rx_desc->nbuf, if (qdf_likely(mpdu_desc_info.mpdu_flags &
HAL_RX_REO_QUEUE_NUMBER_GET(ring_desc)); HAL_MPDU_F_QOS_CONTROL_VALID))
qdf_nbuf_set_tid_val(rx_desc->nbuf, mpdu_desc_info.tid);
#ifdef CONFIG_LITHIUM #ifdef CONFIG_LITHIUM
qdf_nbuf_set_rx_reo_dest_ind( qdf_nbuf_set_rx_reo_dest_ind(
rx_desc->nbuf, rx_desc->nbuf,

View File

@@ -129,6 +129,16 @@
RX_MPDU_DESC_INFO_BAR_FRAME_MASK) >> \ RX_MPDU_DESC_INFO_BAR_FRAME_MASK) >> \
RX_MPDU_DESC_INFO_BAR_FRAME_LSB) RX_MPDU_DESC_INFO_BAR_FRAME_LSB)
#define HAL_RX_MPDU_TID_GET(mpdu_info_ptr) \
((mpdu_info_ptr[RX_MPDU_DESC_INFO_TID_OFFSET >> 2] & \
RX_MPDU_DESC_INFO_TID_MASK) >> \
RX_MPDU_DESC_INFO_TID_LSB)
#define HAL_RX_MPDU_MPDU_QOS_CONTROL_VALID_GET(mpdu_info_ptr) \
((mpdu_info_ptr[RX_MPDU_DESC_INFO_MPDU_QOS_CONTROL_VALID_OFFSET >> 2] &\
RX_MPDU_DESC_INFO_MPDU_QOS_CONTROL_VALID_MASK) >> \
RX_MPDU_DESC_INFO_MPDU_QOS_CONTROL_VALID_LSB)
/* /*
* NOTE: None of the following _GET macros need a right * NOTE: None of the following _GET macros need a right
* shift by the corresponding _LSB. This is because, they are * shift by the corresponding _LSB. This is because, they are
@@ -243,6 +253,9 @@ static inline uint32_t hal_rx_get_mpdu_flags(uint32_t *mpdu_info)
if (HAL_RX_MPDU_RAW_MPDU_GET(mpdu_info)) if (HAL_RX_MPDU_RAW_MPDU_GET(mpdu_info))
mpdu_flags |= HAL_MPDU_F_RAW_AMPDU; mpdu_flags |= HAL_MPDU_F_RAW_AMPDU;
if (HAL_RX_MPDU_MPDU_QOS_CONTROL_VALID_GET(mpdu_info))
mpdu_flags |= HAL_MPDU_F_QOS_CONTROL_VALID;
return mpdu_flags; return mpdu_flags;
} }
@@ -255,11 +268,6 @@ static inline uint32_t hal_rx_get_mpdu_flags(uint32_t *mpdu_info)
REO_DESTINATION_RING_REO_DEST_BUFFER_TYPE_MASK) >> \ REO_DESTINATION_RING_REO_DEST_BUFFER_TYPE_MASK) >> \
REO_DESTINATION_RING_REO_DEST_BUFFER_TYPE_LSB) REO_DESTINATION_RING_REO_DEST_BUFFER_TYPE_LSB)
#define HAL_RX_REO_QUEUE_NUMBER_GET(reo_desc) (((*(((uint32_t *)reo_desc) + \
(REO_DESTINATION_RING_RX_MPDU_DESC_INFO_DETAILS_TID_OFFSET >> 2))) & \
REO_DESTINATION_RING_RX_MPDU_DESC_INFO_DETAILS_TID_MASK) >> \
REO_DESTINATION_RING_RX_MPDU_DESC_INFO_DETAILS_TID_LSB)
#define HAL_RX_REO_ERROR_GET(reo_desc) (((*(((uint32_t *)reo_desc) + \ #define HAL_RX_REO_ERROR_GET(reo_desc) (((*(((uint32_t *)reo_desc) + \
(REO_DESTINATION_RING_REO_ERROR_CODE_OFFSET >> 2))) & \ (REO_DESTINATION_RING_REO_ERROR_CODE_OFFSET >> 2))) & \
REO_DESTINATION_RING_REO_ERROR_CODE_MASK) >> \ REO_DESTINATION_RING_REO_ERROR_CODE_MASK) >> \
@@ -396,6 +404,7 @@ void hal_rx_mpdu_desc_info_get_be(void *desc_addr,
mpdu_desc_info->peer_meta_data = mpdu_desc_info->peer_meta_data =
HAL_RX_MPDU_DESC_PEER_META_DATA_GET(mpdu_info); HAL_RX_MPDU_DESC_PEER_META_DATA_GET(mpdu_info);
mpdu_desc_info->bar_frame = HAL_RX_MPDU_BAR_FRAME_GET(mpdu_info); mpdu_desc_info->bar_frame = HAL_RX_MPDU_BAR_FRAME_GET(mpdu_info);
mpdu_desc_info->tid = HAL_RX_MPDU_TID_GET(mpdu_info);
} }
/* /*

View File

@@ -216,6 +216,7 @@ enum hal_rx_msdu_desc_flags {
* [3] raw_ampdu * [3] raw_ampdu
* @peer_meta_data: Upper bits containing peer id, vdev id * @peer_meta_data: Upper bits containing peer id, vdev id
* @bar_frame: indicates if received frame is a bar frame * @bar_frame: indicates if received frame is a bar frame
* @tid: tid value of received MPDU
*/ */
struct hal_rx_mpdu_desc_info { struct hal_rx_mpdu_desc_info {
uint16_t msdu_count; uint16_t msdu_count;
@@ -223,6 +224,8 @@ struct hal_rx_mpdu_desc_info {
uint32_t mpdu_flags; uint32_t mpdu_flags;
uint32_t peer_meta_data; /* sw progamed meta-data:MAC Id & peer Id */ uint32_t peer_meta_data; /* sw progamed meta-data:MAC Id & peer Id */
uint16_t bar_frame; uint16_t bar_frame;
uint8_t tid:4,
reserved:4;
}; };
/** /**
@@ -232,12 +235,14 @@ struct hal_rx_mpdu_desc_info {
* @ HAL_MPDU_F_RETRY_BIT: Retry bit is set in FC of MPDU * @ HAL_MPDU_F_RETRY_BIT: Retry bit is set in FC of MPDU
* @ HAL_MPDU_F_AMPDU_FLAG: MPDU received as part of A-MPDU * @ HAL_MPDU_F_AMPDU_FLAG: MPDU received as part of A-MPDU
* @ HAL_MPDU_F_RAW_AMPDU: MPDU is a Raw MDPU * @ HAL_MPDU_F_RAW_AMPDU: MPDU is a Raw MDPU
* @ HAL_MPDU_F_QOS_CONTROL_VALID: MPDU has a QoS control field
*/ */
enum hal_rx_mpdu_desc_flags { enum hal_rx_mpdu_desc_flags {
HAL_MPDU_F_FRAGMENT = (0x1 << 20), HAL_MPDU_F_FRAGMENT = (0x1 << 20),
HAL_MPDU_F_RETRY_BIT = (0x1 << 21), HAL_MPDU_F_RETRY_BIT = (0x1 << 21),
HAL_MPDU_F_AMPDU_FLAG = (0x1 << 22), HAL_MPDU_F_AMPDU_FLAG = (0x1 << 22),
HAL_MPDU_F_RAW_AMPDU = (0x1 << 30) HAL_MPDU_F_RAW_AMPDU = (0x1 << 30),
HAL_MPDU_F_QOS_CONTROL_VALID = (0x1 << 31)
}; };
/* Return Buffer manager ID */ /* Return Buffer manager ID */