struct ieee80211_rx_status *rx_status = &dp->rx_status;
        struct dp_rxdma_ring *rx_ring = &dp->rx_refill_buf_ring;
        struct hal_srng *srng;
-       struct hal_rx_meta_info meta_info;
        struct sk_buff *msdu;
        struct sk_buff_head msdu_list;
        struct sk_buff_head amsdu_list;
 
 try_again:
        while ((rx_desc = ath11k_hal_srng_dst_get_next_entry(ab, srng))) {
-               memset(&meta_info, 0, sizeof(meta_info));
-               ath11k_hal_rx_parse_dst_ring_desc(ab, rx_desc, &meta_info);
+               struct hal_reo_dest_ring *desc = (struct hal_reo_dest_ring *)rx_desc;
+               enum hal_reo_dest_ring_push_reason push_reason;
+               u32 cookie;
 
+               cookie = FIELD_GET(BUFFER_ADDR_INFO1_SW_COOKIE,
+                                  desc->buf_addr_info.info1);
                buf_id = FIELD_GET(DP_RXDMA_BUF_COOKIE_BUF_ID,
-                                  meta_info.msdu_meta.cookie);
+                                  cookie);
                spin_lock_bh(&rx_ring->idr_lock);
                msdu = idr_find(&rx_ring->bufs_idr, buf_id);
                if (!msdu) {
 
                num_buffs_reaped++;
 
-               if (meta_info.push_reason !=
+               push_reason = FIELD_GET(HAL_REO_DEST_RING_INFO0_PUSH_REASON,
+                                       desc->info0);
+               if (push_reason !=
                    HAL_REO_DEST_RING_PUSH_REASON_ROUTING_INSTRUCTION) {
                        /* TODO: Check if the msdu can be sent up for processing */
                        dev_kfree_skb_any(msdu);
                        continue;
                }
 
-               rxcb->is_first_msdu = meta_info.msdu_meta.first;
-               rxcb->is_last_msdu = meta_info.msdu_meta.last;
-               rxcb->is_continuation = meta_info.msdu_meta.continuation;
+               rxcb->is_first_msdu = !!(desc->rx_msdu_info.info0 &
+                                        RX_MSDU_DESC_INFO0_FIRST_MSDU_IN_MPDU);
+               rxcb->is_last_msdu = !!(desc->rx_msdu_info.info0 &
+                                       RX_MSDU_DESC_INFO0_LAST_MSDU_IN_MPDU);
+               rxcb->is_continuation = !!(desc->rx_msdu_info.info0 &
+                                          RX_MSDU_DESC_INFO0_MSDU_CONTINUATION);
                rxcb->mac_id = mac_id;
                __skb_queue_tail(&msdu_list, msdu);
 
 int ath11k_dp_process_rx_err(struct ath11k_base *ab, struct napi_struct *napi,
                             int budget)
 {
-       struct hal_rx_msdu_meta meta[HAL_NUM_RX_MSDUS_PER_LINK_DESC];
+       u32 msdu_cookies[HAL_NUM_RX_MSDUS_PER_LINK_DESC];
        struct dp_link_desc_bank *link_desc_banks;
        enum hal_rx_buf_return_buf_manager rbm;
        int tot_n_bufs_reaped, quota, ret, i;
        int n_bufs_reaped[MAX_RADIOS] = {0};
-       struct hal_rx_meta_info meta_info;
        struct dp_rxdma_ring *rx_ring;
        struct dp_srng *reo_except;
        u32 desc_bank, num_msdus;
 
        while (budget &&
               (desc = ath11k_hal_srng_dst_get_next_entry(ab, srng))) {
+               struct hal_reo_dest_ring *reo_desc = (struct hal_reo_dest_ring *)desc;
+
                ab->soc_stats.err_ring_pkts++;
                ret = ath11k_hal_desc_reo_parse_err(ab, desc, &paddr,
                                                    &desc_bank);
                }
                link_desc_va = link_desc_banks[desc_bank].vaddr +
                               (paddr - link_desc_banks[desc_bank].paddr);
-               ath11k_hal_rx_msdu_link_info_get(link_desc_va, &num_msdus, meta,
+               ath11k_hal_rx_msdu_link_info_get(link_desc_va, &num_msdus, msdu_cookies,
                                                 &rbm);
                if (rbm != HAL_RX_BUF_RBM_WBM_IDLE_DESC_LIST &&
                    rbm != HAL_RX_BUF_RBM_SW3_BM) {
                        continue;
                }
 
-               memset(&meta_info, 0, sizeof(meta_info));
-               ath11k_hal_rx_parse_dst_ring_desc(ab, desc, &meta_info);
-
-               is_frag = meta_info.mpdu_meta.frag;
+               is_frag = !!(reo_desc->rx_mpdu_info.info0 & RX_MPDU_DESC_INFO0_FRAG_FLAG);
 
                /* Return the link desc back to wbm idle list */
                ath11k_dp_rx_link_desc_return(ab, desc,
 
                for (i = 0; i < num_msdus; i++) {
                        buf_id = FIELD_GET(DP_RXDMA_BUF_COOKIE_BUF_ID,
-                                          meta[i].cookie);
+                                          msdu_cookies[i]);
 
                        mac_id = FIELD_GET(DP_RXDMA_BUF_COOKIE_PDEV_ID,
-                                          meta[i].cookie);
+                                          msdu_cookies[i]);
 
                        ar = ab->pdevs[mac_id].ar;
 
        struct dp_rxdma_ring *rx_ring = &ar->dp.rx_refill_buf_ring;
        struct dp_link_desc_bank *link_desc_banks = ab->dp.link_desc_banks;
        struct hal_srng *srng;
-       struct hal_rx_msdu_meta meta[HAL_NUM_RX_MSDUS_PER_LINK_DESC];
+       u32 msdu_cookies[HAL_NUM_RX_MSDUS_PER_LINK_DESC];
        enum hal_rx_buf_return_buf_manager rbm;
        enum hal_reo_entr_rxdma_ecode rxdma_err_code;
        struct ath11k_skb_rxcb *rxcb;
 
                link_desc_va = link_desc_banks[desc_bank].vaddr +
                               (paddr - link_desc_banks[desc_bank].paddr);
-               ath11k_hal_rx_msdu_link_info_get(link_desc_va, &num_msdus, meta,
-                                                &rbm);
+               ath11k_hal_rx_msdu_link_info_get(link_desc_va, &num_msdus,
+                                                msdu_cookies, &rbm);
 
                for (i = 0; i < num_msdus; i++) {
                        buf_id = FIELD_GET(DP_RXDMA_BUF_COOKIE_BUF_ID,
-                                          meta[i].cookie);
+                                          msdu_cookies[i]);
 
                        spin_lock_bh(&rx_ring->idr_lock);
                        skb = idr_find(&rx_ring->bufs_idr, buf_id);
 
 }
 
 void ath11k_hal_rx_msdu_link_info_get(void *link_desc, u32 *num_msdus,
-                                     struct hal_rx_msdu_meta *meta,
+                                     u32 *msdu_cookies,
                                      enum hal_rx_buf_return_buf_manager *rbm)
 {
        struct hal_rx_msdu_link *link = (struct hal_rx_msdu_link *)link_desc;
                        *num_msdus = i;
                        break;
                }
-               meta->msdu_len = FIELD_GET(RX_MSDU_DESC_INFO0_MSDU_LENGTH,
-                                          msdu->rx_msdu_info.info0);
-               meta->first = !!(msdu->rx_msdu_info.info0 &
-                                RX_MSDU_DESC_INFO0_FIRST_MSDU_IN_MPDU);
-               meta->last = !!(msdu->rx_msdu_info.info0 &
-                               RX_MSDU_DESC_INFO0_LAST_MSDU_IN_MPDU);
-               meta->continuation = !!(msdu->rx_msdu_info.info0 &
-                                       RX_MSDU_DESC_INFO0_MSDU_CONTINUATION);
-               meta->cookie = FIELD_GET(BUFFER_ADDR_INFO1_SW_COOKIE,
-                                        msdu->buf_addr_info.info1);
-               meta++;
+               *msdu_cookies = FIELD_GET(BUFFER_ADDR_INFO1_SW_COOKIE,
+                                         msdu->buf_addr_info.info1);
+               msdu_cookies++;
        }
 }
 
        return 0;
 }
 
-void ath11k_hal_rx_parse_dst_ring_desc(struct ath11k_base *ab, u32 *rx_desc,
-                                      struct hal_rx_meta_info *meta_info)
-{
-       struct hal_reo_dest_ring *desc = (struct hal_reo_dest_ring *)rx_desc;
-       struct rx_mpdu_desc *mpdu = &desc->rx_mpdu_info;
-       struct rx_msdu_desc *msdu = &desc->rx_msdu_info;
-       struct hal_rx_mpdu_meta *meta_mpdu = &meta_info->mpdu_meta;
-       struct hal_rx_msdu_meta *meta_msdu = &meta_info->msdu_meta;
-
-       meta_info->push_reason = FIELD_GET(HAL_REO_DEST_RING_INFO0_PUSH_REASON,
-                                          desc->info0);
-
-       meta_mpdu->msdu_cnt = FIELD_GET(RX_MPDU_DESC_INFO0_MSDU_COUNT,
-                                       mpdu->info0);
-       meta_mpdu->seq_num = FIELD_GET(RX_MPDU_DESC_INFO0_SEQ_NUM, mpdu->info0);
-       meta_mpdu->frag = !!(mpdu->info0 & RX_MPDU_DESC_INFO0_FRAG_FLAG);
-       meta_mpdu->retry = !!(mpdu->info0 & RX_MPDU_DESC_INFO0_MPDU_RETRY);
-       meta_mpdu->ampdu = !!(mpdu->info0 & RX_MPDU_DESC_INFO0_AMPDU_FLAG);
-       meta_mpdu->raw = !!(mpdu->info0 & RX_MPDU_DESC_INFO0_RAW_MPDU);
-       meta_mpdu->peer_meta = mpdu->meta_data;
-
-       meta_msdu->cookie = FIELD_GET(BUFFER_ADDR_INFO1_SW_COOKIE,
-                                     desc->buf_addr_info.info1);
-       meta_msdu->msdu_len = FIELD_GET(RX_MSDU_DESC_INFO0_MSDU_LENGTH,
-                                       msdu->info0);
-       meta_msdu->first =
-               !!(msdu->info0 & RX_MSDU_DESC_INFO0_FIRST_MSDU_IN_MPDU);
-       meta_msdu->last =
-               !!(msdu->info0 & RX_MSDU_DESC_INFO0_LAST_MSDU_IN_MPDU);
-       meta_msdu->continuation =
-               !!(msdu->info0 & RX_MSDU_DESC_INFO0_MSDU_CONTINUATION);
-}
-
 int ath11k_hal_wbm_desc_parse_err(struct ath11k_base *ab, void *desc,
                                  struct hal_rx_wbm_rel_info *rel_info)
 {
 
 #ifndef ATH11K_HAL_RX_H
 #define ATH11K_HAL_RX_H
 
-struct hal_rx_mpdu_meta {
-       u32 peer_meta;
-       u16 msdu_cnt;
-       u16 seq_num;
-       bool frag;
-       bool retry;
-       bool ampdu;
-       bool raw;
-};
-
-struct hal_rx_msdu_meta {
-       u32 cookie;
-       u32 msdu_len;
-       bool first;
-       bool last;
-       bool continuation;
-};
-
-struct hal_rx_meta_info {
-       enum hal_reo_dest_ring_push_reason push_reason;
-       struct hal_rx_mpdu_meta mpdu_meta;
-       struct hal_rx_msdu_meta msdu_meta;
-};
-
 struct hal_rx_wbm_rel_info {
        u32 cookie;
        enum hal_wbm_rel_src_module err_rel_src;
                                               struct hal_reo_status *status);
 int ath11k_hal_reo_process_status(u8 *reo_desc, u8 *status);
 void ath11k_hal_rx_msdu_link_info_get(void *link_desc, u32 *num_msdus,
-                                     struct hal_rx_msdu_meta *meta,
+                                     u32 *msdu_cookies,
                                      enum hal_rx_buf_return_buf_manager *rbm);
 void ath11k_hal_rx_msdu_link_desc_set(struct ath11k_base *ab, void *desc,
                                      void *link_desc,
                                     u32 *cookie, u8 *rbm);
 int ath11k_hal_desc_reo_parse_err(struct ath11k_base *ab, u32 *rx_desc,
                                  dma_addr_t *paddr, u32 *desc_bank);
-void ath11k_hal_rx_parse_dst_ring_desc(struct ath11k_base *ab, u32 *rx_desc,
-                                      struct hal_rx_meta_info *meta_info);
 int ath11k_hal_wbm_desc_parse_err(struct ath11k_base *ab, void *desc,
                                  struct hal_rx_wbm_rel_info *rel_info);
 void ath11k_hal_rx_reo_ent_paddr_get(struct ath11k_base *ab, void *desc,