qcacmn: Free the raw mode mpdus in REO error ring

Raw mode mpdus in REO end up resulting in NULL_QUEUE_DESCRIPTOR error.
Raw mode mpdus are not expected in REO, free them without further
processing.

Change-Id: Ica920caecf90a1107ce17836051e1019c9dfc994
CRs-Fixed: 3282836
This commit is contained in:
Prakash Manjunathappa
2022-09-08 23:55:11 -07:00
committed by Madan Koyyalamudi
parent 499b2deb3b
commit 60c0c089cd
6 changed files with 52 additions and 8 deletions

View File

@@ -1109,6 +1109,36 @@ static void hal_rx_dump_pkt_tlvs_kiwi(hal_soc_handle_t hal_soc_hdl,
hal_rx_dump_pkt_hdr_tlv_kiwi(pkt_tlvs, dbg_level);
}
/**
* hal_rx_get_mpdu_flags_from_tlv() - Populate the local mpdu_flags elements
* from the rx tlvs
* @mpdu_info: buf address to rx_mpdu_info
*
* Return: mpdu_flags.
*/
static inline uint32_t
hal_rx_get_mpdu_flags_from_tlv(struct rx_mpdu_info *mpdu_info)
{
uint32_t mpdu_flags = 0;
if (mpdu_info->fragment_flag)
mpdu_flags |= HAL_MPDU_F_FRAGMENT;
if (mpdu_info->mpdu_retry)
mpdu_flags |= HAL_MPDU_F_RETRY_BIT;
if (mpdu_info->ampdu_flag)
mpdu_flags |= HAL_MPDU_F_AMPDU_FLAG;
if (mpdu_info->raw_mpdu)
mpdu_flags |= HAL_MPDU_F_RAW_AMPDU;
if (mpdu_info->mpdu_qos_control_valid)
mpdu_flags |= HAL_MPDU_F_QOS_CONTROL_VALID;
return mpdu_flags;
}
/**
* hal_rx_tlv_populate_mpdu_desc_info_kiwi() - Populate the local mpdu_desc_info
* elements from the rx tlvs
@@ -1130,8 +1160,7 @@ hal_rx_tlv_populate_mpdu_desc_info_kiwi(uint8_t *buf,
struct rx_mpdu_info *mpdu_info = &mpdu_start->rx_mpdu_info_details;
mpdu_desc_info->mpdu_seq = mpdu_info->mpdu_sequence_number;
mpdu_desc_info->mpdu_flags = hal_rx_get_mpdu_flags((uint32_t *)
mpdu_info);
mpdu_desc_info->mpdu_flags = hal_rx_get_mpdu_flags_from_tlv(mpdu_info);
mpdu_desc_info->peer_meta_data = mpdu_info->peer_meta_data;
mpdu_desc_info->bar_frame = mpdu_info->bar_frame;
}