diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/ath/ath11k/core.h
index 6b3ee2a..0cfe30a 100644
--- a/drivers/net/wireless/ath/ath11k/core.h
+++ b/drivers/net/wireless/ath/ath11k/core.h
@@ -66,7 +66,7 @@ struct ath11k_skb_rxcb {
 	bool is_first_msdu;
 	bool is_last_msdu;
 	bool is_continuation;
-	void *rx_desc;
+	struct hal_rx_desc *rx_desc;
 	u8 err_rel_src;
 	u8 err_code;
 	u8 mac_id;
diff --git a/drivers/net/wireless/ath/ath11k/dp_rx.c b/drivers/net/wireless/ath/ath11k/dp_rx.c
index 57a1c27..5666373 100644
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
@@ -13,78 +13,61 @@
 #include "dp_tx.h"
 #include "peer.h"
 
-static u8 *ath11k_dp_rx_h_80211_hdr(u8 *desc)
+static u8 *ath11k_dp_rx_h_80211_hdr(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
-
-	return rxd->hdr_status;
+	return desc->hdr_status;
 }
 
-static enum hal_encrypt_type ath11k_dp_rx_h_mpdu_start_enctype(u8 *desc)
+static enum hal_encrypt_type ath11k_dp_rx_h_mpdu_start_enctype(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
-
-	if (!(__le32_to_cpu(rxd->mpdu_start.info1) &
+	if (!(__le32_to_cpu(desc->mpdu_start.info1) &
 	    RX_MPDU_START_INFO1_ENCRYPT_INFO_VALID))
 		return HAL_ENCRYPT_TYPE_OPEN;
 
 	return FIELD_GET(RX_MPDU_START_INFO2_ENC_TYPE,
-			 __le32_to_cpu(rxd->mpdu_start.info2));
+			 __le32_to_cpu(desc->mpdu_start.info2));
 }
 
-static u8 ath11k_dp_rx_h_mpdu_start_decap_type(u8 *desc)
+static u8 ath11k_dp_rx_h_mpdu_start_decap_type(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
-
 	return FIELD_GET(RX_MPDU_START_INFO5_DECAP_TYPE,
-			 __le32_to_cpu(rxd->mpdu_start.info5));
+			 __le32_to_cpu(desc->mpdu_start.info5));
 }
 
-static bool ath11k_dp_rx_h_attn_msdu_done(u8 *desc)
+static bool ath11k_dp_rx_h_attn_msdu_done(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
-
 	return !!FIELD_GET(RX_ATTENTION_INFO2_MSDU_DONE,
-			   __le32_to_cpu(rxd->attention.info2));
+			   __le32_to_cpu(desc->attention.info2));
 }
 
-static bool ath11k_dp_rx_h_attn_first_mpdu(u8 *desc)
+static bool ath11k_dp_rx_h_attn_first_mpdu(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
-
 	return !!FIELD_GET(RX_ATTENTION_INFO1_FIRST_MPDU,
-			   __le32_to_cpu(rxd->attention.info1));
+			   __le32_to_cpu(desc->attention.info1));
 }
 
-static bool ath11k_dp_rx_h_attn_l4_cksum_fail(u8 *desc)
+static bool ath11k_dp_rx_h_attn_l4_cksum_fail(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
-
 	return !!FIELD_GET(RX_ATTENTION_INFO1_TCP_UDP_CKSUM_FAIL,
-			   __le32_to_cpu(rxd->attention.info1));
+			   __le32_to_cpu(desc->attention.info1));
 }
 
-static bool ath11k_dp_rx_h_attn_ip_cksum_fail(u8 *desc)
+static bool ath11k_dp_rx_h_attn_ip_cksum_fail(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
-
 	return !!FIELD_GET(RX_ATTENTION_INFO1_IP_CKSUM_FAIL,
-			   __le32_to_cpu(rxd->attention.info1));
+			   __le32_to_cpu(desc->attention.info1));
 }
 
-static bool ath11k_dp_rx_h_attn_is_decrypted(u8 *desc)
+static bool ath11k_dp_rx_h_attn_is_decrypted(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
-
 	return (FIELD_GET(RX_ATTENTION_INFO2_DCRYPT_STATUS_CODE,
-			  __le32_to_cpu(rxd->attention.info2)) ==
+			  __le32_to_cpu(desc->attention.info2)) ==
 		RX_DESC_DECRYPT_STATUS_CODE_OK);
 }
 
-static u32 ath11k_dp_rx_h_attn_mpdu_err(u8 *desc)
+static u32 ath11k_dp_rx_h_attn_mpdu_err(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
-	u32 info = __le32_to_cpu(rxd->attention.info1);
+	u32 info = __le32_to_cpu(desc->attention.info1);
 	u32 errmap = 0;
 
 	if (info & RX_ATTENTION_INFO1_FCS_ERR)
@@ -111,99 +94,76 @@ static u32 ath11k_dp_rx_h_attn_mpdu_err(u8 *desc)
 	return errmap;
 }
 
-static u16 ath11k_dp_rx_h_msdu_start_msdu_len(u8 *desc)
+static u16 ath11k_dp_rx_h_msdu_start_msdu_len(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
-
 	return FIELD_GET(RX_MSDU_START_INFO1_MSDU_LENGTH,
-			 __le32_to_cpu(rxd->msdu_start.info1));
+			 __le32_to_cpu(desc->msdu_start.info1));
 }
 
-static u8 ath11k_dp_rx_h_msdu_start_sgi(u8 *desc)
+static u8 ath11k_dp_rx_h_msdu_start_sgi(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
-
 	return FIELD_GET(RX_MSDU_START_INFO3_SGI,
-			 __le32_to_cpu(rxd->msdu_start.info3));
+			 __le32_to_cpu(desc->msdu_start.info3));
 }
 
-static u8 ath11k_dp_rx_h_msdu_start_rate_mcs(u8 *desc)
+static u8 ath11k_dp_rx_h_msdu_start_rate_mcs(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
-
 	return FIELD_GET(RX_MSDU_START_INFO3_RATE_MCS,
-			 __le32_to_cpu(rxd->msdu_start.info3));
+			 __le32_to_cpu(desc->msdu_start.info3));
 }
 
-static u8 ath11k_dp_rx_h_msdu_start_rx_bw(u8 *desc)
+static u8 ath11k_dp_rx_h_msdu_start_rx_bw(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
-
 	return FIELD_GET(RX_MSDU_START_INFO3_RECV_BW,
-			 __le32_to_cpu(rxd->msdu_start.info3));
+			 __le32_to_cpu(desc->msdu_start.info3));
 }
 
-static u8 ath11k_dp_rx_h_msdu_start_rssi(u8 *desc)
+static u8 ath11k_dp_rx_h_msdu_start_rssi(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
-
 	return FIELD_GET(RX_MSDU_START_INFO3_USER_RSSI,
-			 __le32_to_cpu(rxd->msdu_start.info3));
+			 __le32_to_cpu(desc->msdu_start.info3));
 }
 
-static u32 ath11k_dp_rx_h_msdu_start_freq(u8 *desc)
+static u32 ath11k_dp_rx_h_msdu_start_freq(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
-
-	return __le32_to_cpu(rxd->msdu_start.phy_meta_data);
+	return __le32_to_cpu(desc->msdu_start.phy_meta_data);
 }
 
-static u8 ath11k_dp_rx_h_msdu_start_pkt_type(u8 *desc)
+static u8 ath11k_dp_rx_h_msdu_start_pkt_type(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
-
 	return FIELD_GET(RX_MSDU_START_INFO3_PKT_TYPE,
-			 __le32_to_cpu(rxd->msdu_start.info3));
+			 __le32_to_cpu(desc->msdu_start.info3));
 }
 
-static u8 ath11k_dp_rx_h_msdu_start_nss(u8 *desc)
+static u8 ath11k_dp_rx_h_msdu_start_nss(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
 	u8 mimo_ss_bitmap = FIELD_GET(RX_MSDU_START_INFO3_MIMO_SS_BITMAP,
-				      __le32_to_cpu(rxd->msdu_start.info3));
+				      __le32_to_cpu(desc->msdu_start.info3));
 
 	return hweight8(mimo_ss_bitmap);
 }
 
-static u8 ath11k_dp_rx_h_msdu_end_l3pad(u8 *desc)
+static u8 ath11k_dp_rx_h_msdu_end_l3pad(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
-
 	return FIELD_GET(RX_MSDU_END_INFO2_L3_HDR_PADDING,
-			 __le32_to_cpu(rxd->msdu_end.info2));
+			 __le32_to_cpu(desc->msdu_end.info2));
 }
 
-static bool ath11k_dp_rx_h_msdu_end_first_msdu(u8 *desc)
+static bool ath11k_dp_rx_h_msdu_end_first_msdu(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
-
 	return !!FIELD_GET(RX_MSDU_END_INFO2_FIRST_MSDU,
-			   __le32_to_cpu(rxd->msdu_end.info2));
+			   __le32_to_cpu(desc->msdu_end.info2));
 }
 
-static bool ath11k_dp_rx_h_msdu_end_last_msdu(u8 *desc)
+static bool ath11k_dp_rx_h_msdu_end_last_msdu(struct hal_rx_desc *desc)
 {
-	struct hal_rx_desc *rxd = (struct hal_rx_desc *)desc;
-
 	return !!FIELD_GET(RX_MSDU_END_INFO2_LAST_MSDU,
-			   __le32_to_cpu(rxd->msdu_end.info2));
+			   __le32_to_cpu(desc->msdu_end.info2));
 }
 
-static void ath11k_dp_rx_desc_end_tlv_copy(u8 *first, u8 *last)
+static void ath11k_dp_rx_desc_end_tlv_copy(struct hal_rx_desc *fdesc,
+					   struct hal_rx_desc *ldesc)
 {
-	struct hal_rx_desc *fdesc = (struct hal_rx_desc *)first;
-	struct hal_rx_desc *ldesc = (struct hal_rx_desc *)last;
-
 	memcpy((u8 *)&fdesc->msdu_end, (u8 *)&ldesc->msdu_end,
 	       sizeof(struct rx_msdu_end));
 	memcpy((u8 *)&fdesc->attention, (u8 *)&ldesc->attention,
@@ -212,9 +172,8 @@ static void ath11k_dp_rx_desc_end_tlv_copy(u8 *first, u8 *last)
 	       sizeof(struct rx_mpdu_end));
 }
 
-static u32 ath11k_dp_rxdesc_get_mpdulen_err(void *hw_desc_addr)
+static u32 ath11k_dp_rxdesc_get_mpdulen_err(struct hal_rx_desc *rx_desc)
 {
-	struct hal_rx_desc *rx_desc = (struct hal_rx_desc *)hw_desc_addr;
 	struct rx_attention *rx_attn;
 
 	rx_attn = &rx_desc->attention;
@@ -223,9 +182,8 @@ static u32 ath11k_dp_rxdesc_get_mpdulen_err(void *hw_desc_addr)
 			 __le32_to_cpu(rx_attn->info1));
 }
 
-static u32 ath11k_dp_rxdesc_get_decap_format(void *hw_desc_addr)
+static u32 ath11k_dp_rxdesc_get_decap_format(struct hal_rx_desc *rx_desc)
 {
-	struct hal_rx_desc *rx_desc = (struct hal_rx_desc *)hw_desc_addr;
 	struct rx_msdu_start *rx_msdu_start;
 
 	rx_msdu_start = &rx_desc->msdu_start;
@@ -234,9 +192,8 @@ static u32 ath11k_dp_rxdesc_get_decap_format(void *hw_desc_addr)
 			 __le32_to_cpu(rx_msdu_start->info2));
 }
 
-static u8 *ath11k_dp_rxdesc_get_80211hdr(void *hw_desc_addr)
+static u8 *ath11k_dp_rxdesc_get_80211hdr(struct hal_rx_desc *rx_desc)
 {
-	struct hal_rx_desc *rx_desc = (struct hal_rx_desc *)hw_desc_addr;
 	u8 *rx_pkt_hdr;
 
 	rx_pkt_hdr = &rx_desc->msdu_payload[0];
@@ -244,9 +201,8 @@ static u8 *ath11k_dp_rxdesc_get_80211hdr(void *hw_desc_addr)
 	return rx_pkt_hdr;
 }
 
-static bool ath11k_dp_rxdesc_mpdu_valid(void *hw_desc_addr)
+static bool ath11k_dp_rxdesc_mpdu_valid(struct hal_rx_desc *rx_desc)
 {
-	struct hal_rx_desc *rx_desc = (struct hal_rx_desc *)hw_desc_addr;
 	u32 tlv_tag;
 
 	tlv_tag = FIELD_GET(HAL_TLV_HDR_TAG,
@@ -255,10 +211,8 @@ static bool ath11k_dp_rxdesc_mpdu_valid(void *hw_desc_addr)
 	return tlv_tag == HAL_RX_MPDU_START ? true : false;
 }
 
-static u32 ath11k_dp_rxdesc_get_ppduid(void *hw_desc_addr)
+static u32 ath11k_dp_rxdesc_get_ppduid(struct hal_rx_desc *rx_desc)
 {
-	struct hal_rx_desc *rx_desc = (struct hal_rx_desc *)hw_desc_addr;
-
 	return __le16_to_cpu(rx_desc->mpdu_start.phy_ppdu_id);
 }
 
@@ -1420,6 +1374,7 @@ static int ath11k_dp_rx_msdu_coalesce(struct ath11k *ar,
 {
 	struct sk_buff *skb;
 	struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(first);
+	struct hal_rx_desc *ldesc;
 	int space_extra;
 	int rem_len;
 	int buf_len;
@@ -1437,8 +1392,9 @@ static int ath11k_dp_rx_msdu_coalesce(struct ath11k *ar,
 		return 0;
 	}
 
-	rxcb->is_first_msdu = ath11k_dp_rx_h_msdu_end_first_msdu(last->data);
-	rxcb->is_last_msdu = ath11k_dp_rx_h_msdu_end_last_msdu(last->data);
+	ldesc = (struct hal_rx_desc *)last->data;
+	rxcb->is_first_msdu = ath11k_dp_rx_h_msdu_end_first_msdu(ldesc);
+	rxcb->is_last_msdu = ath11k_dp_rx_h_msdu_end_last_msdu(ldesc);
 
 	/* MSDU spans over multiple buffers because the length of the MSDU
 	 * exceeds DP_RX_BUFFER_SIZE - HAL_RX_DESC_SIZE. So assume the data
@@ -1465,7 +1421,7 @@ static int ath11k_dp_rx_msdu_coalesce(struct ath11k *ar,
 	/* When an MSDU spread over multiple buffers attention, MSDU_END and
 	 * MPDU_END tlvs are valid only in the last buffer. Copy those tlvs.
 	 */
-	ath11k_dp_rx_desc_end_tlv_copy(rxcb->rx_desc, last->data);
+	ath11k_dp_rx_desc_end_tlv_copy(rxcb->rx_desc, ldesc);
 
 	rem_len = msdu_len -
 		  (DP_RX_BUFFER_SIZE - HAL_RX_DESC_SIZE - l3pad_bytes);
@@ -1522,6 +1478,7 @@ static int ath11k_dp_rx_retrieve_amsdu(struct ath11k *ar,
 	struct sk_buff *last_buf;
 	struct ath11k_skb_rxcb *rxcb;
 	struct ieee80211_hdr *hdr;
+	struct hal_rx_desc *rx_desc, *lrx_desc;
 	u16 msdu_len;
 	u8 l3_pad_bytes;
 	u8 *hdr_status;
@@ -1530,7 +1487,8 @@ static int ath11k_dp_rx_retrieve_amsdu(struct ath11k *ar,
 	if (!msdu)
 		return -ENOENT;
 
-	hdr_status = ath11k_dp_rx_h_80211_hdr(msdu->data);
+	rx_desc = (struct hal_rx_desc *)msdu->data;
+	hdr_status = ath11k_dp_rx_h_80211_hdr(rx_desc);
 	hdr = (struct ieee80211_hdr *)hdr_status;
 	/* Process only data frames */
 	if (!ieee80211_is_data(hdr->frame_control)) {
@@ -1549,16 +1507,19 @@ static int ath11k_dp_rx_retrieve_amsdu(struct ath11k *ar,
 			goto free_out;
 		}
 
-		if (!ath11k_dp_rx_h_attn_msdu_done(last_buf->data)) {
+		rx_desc = (struct hal_rx_desc *)msdu->data;
+		lrx_desc = (struct hal_rx_desc *)last_buf->data;
+
+		if (!ath11k_dp_rx_h_attn_msdu_done(lrx_desc)) {
 			ath11k_warn(ar->ab, "msdu_done bit in attention is not set\n");
 			ret = -EIO;
 			goto free_out;
 		}
 
 		rxcb = ATH11K_SKB_RXCB(msdu);
-		rxcb->rx_desc = msdu->data;
-		msdu_len = ath11k_dp_rx_h_msdu_start_msdu_len(msdu->data);
-		l3_pad_bytes = ath11k_dp_rx_h_msdu_end_l3pad(last_buf->data);
+		rxcb->rx_desc = rx_desc;
+		msdu_len = ath11k_dp_rx_h_msdu_start_msdu_len(rx_desc);
+		l3_pad_bytes = ath11k_dp_rx_h_msdu_end_l3pad(lrx_desc);
 
 		if (!rxcb->is_continuation) {
 			skb_put(msdu, HAL_RX_DESC_SIZE + l3_pad_bytes + msdu_len);
@@ -1855,7 +1816,8 @@ static void ath11k_dp_rx_h_undecap_eth(struct ath11k *ar,
 }
 
 static void ath11k_dp_rx_h_undecap(struct ath11k *ar, struct sk_buff *msdu,
-				   u8 *rx_desc, enum hal_encrypt_type enctype,
+				   struct hal_rx_desc *rx_desc,
+				   enum hal_encrypt_type enctype,
 				   struct ieee80211_rx_status *status,
 				   bool decrypted)
 {
@@ -1886,7 +1848,7 @@ static void ath11k_dp_rx_h_undecap(struct ath11k *ar, struct sk_buff *msdu,
 
 static void ath11k_dp_rx_h_mpdu(struct ath11k *ar,
 				struct sk_buff_head *amsdu_list,
-				u8 *rx_desc,
+				struct hal_rx_desc *rx_desc,
 				struct ieee80211_rx_status *rx_status)
 {
 	struct ieee80211_hdr *hdr;
@@ -1944,7 +1906,7 @@ static void ath11k_dp_rx_h_mpdu(struct ath11k *ar,
 	}
 }
 
-static void ath11k_dp_rx_h_rate(struct ath11k *ar, void *rx_desc,
+static void ath11k_dp_rx_h_rate(struct ath11k *ar, struct hal_rx_desc *rx_desc,
 				struct ieee80211_rx_status *rx_status)
 {
 	struct ieee80211_supported_band *sband;
@@ -2006,7 +1968,7 @@ static void ath11k_dp_rx_h_rate(struct ath11k *ar, void *rx_desc,
 	}
 }
 
-static void ath11k_dp_rx_h_ppdu(struct ath11k *ar, void *rx_desc,
+static void ath11k_dp_rx_h_ppdu(struct ath11k *ar, struct hal_rx_desc *rx_desc,
 				struct ieee80211_rx_status *rx_status)
 {
 	u8 channel_num;
@@ -2048,7 +2010,7 @@ static void ath11k_dp_rx_process_amsdu(struct ath11k *ar,
 {
 	struct sk_buff *first;
 	struct ath11k_skb_rxcb *rxcb;
-	void *rx_desc;
+	struct hal_rx_desc *rx_desc;
 	bool first_mpdu;
 
 	if (skb_queue_empty(amsdu_list))
@@ -2721,7 +2683,7 @@ static int ath11k_dp_rx_link_desc_return(struct ath11k_base *ab,
 
 static void ath11k_dp_rx_frag_h_mpdu(struct ath11k *ar,
 				     struct sk_buff *msdu,
-				     u8 *rx_desc,
+				     struct hal_rx_desc *rx_desc,
 				     struct ieee80211_rx_status *rx_status)
 {
 	u8 rx_channel;
@@ -2782,7 +2744,7 @@ static void ath11k_dp_rx_frag_h_mpdu(struct ath11k *ar,
 	struct sk_buff *msdu;
 	struct ath11k_skb_rxcb *rxcb;
 	struct ieee80211_rx_status *status;
-	void *rx_desc;
+	struct hal_rx_desc *rx_desc;
 	u16 msdu_len;
 
 	spin_lock_bh(&rx_ring->idr_lock);
@@ -2821,7 +2783,7 @@ static void ath11k_dp_rx_frag_h_mpdu(struct ath11k *ar,
 		goto exit;
 	}
 
-	rx_desc = msdu->data;
+	rx_desc = (struct hal_rx_desc *)msdu->data;
 	msdu_len = ath11k_dp_rx_h_msdu_start_msdu_len(rx_desc);
 	skb_put(msdu, HAL_RX_DESC_SIZE + msdu_len);
 	skb_pull(msdu, HAL_RX_DESC_SIZE);
@@ -2978,7 +2940,7 @@ static int ath11k_dp_rx_h_null_q_desc(struct ath11k *ar, struct sk_buff *msdu,
 {
 	struct sk_buff_head amsdu_list;
 	u16 msdu_len;
-	u8 *desc = msdu->data;
+	struct hal_rx_desc *desc = (struct hal_rx_desc *)msdu->data;
 	u8 l3pad_bytes;
 	struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu);
 
@@ -3062,7 +3024,7 @@ static void ath11k_dp_rx_h_tkip_mic_err(struct ath11k *ar, struct sk_buff *msdu,
 					struct ieee80211_rx_status *status)
 {
 	u16 msdu_len;
-	u8 *desc = msdu->data;
+	struct hal_rx_desc *desc = (struct hal_rx_desc *)msdu->data;
 	u8 l3pad_bytes;
 	struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu);
 
@@ -3210,7 +3172,7 @@ int ath11k_dp_rx_process_wbm_err(struct ath11k_base *ab,
 
 		rxcb->err_rel_src = err_info.err_rel_src;
 		rxcb->err_code = err_info.err_code;
-		rxcb->rx_desc = msdu->data;
+		rxcb->rx_desc = (struct hal_rx_desc *)msdu->data;
 		__skb_queue_tail(&msdu_list[mac_id], msdu);
 	}
 
@@ -3674,7 +3636,7 @@ static void ath11k_dp_mon_get_buf_len(struct hal_rx_msdu_desc_info *info,
 	struct sk_buff *msdu = NULL, *last = NULL;
 	struct hal_rx_msdu_list msdu_list;
 	void *p_buf_addr_info, *p_last_buf_addr_info;
-	void *rx_desc;
+	struct hal_rx_desc *rx_desc;
 	void *rx_msdu_link_desc;
 	dma_addr_t paddr;
 	u16 num_msdus = 0;
@@ -3762,11 +3724,10 @@ static void ath11k_dp_mon_get_buf_len(struct hal_rx_msdu_desc_info *info,
 				goto next_msdu;
 			}
 
-			rx_desc = msdu->data;
+			rx_desc = (struct hal_rx_desc *)msdu->data;
 
 			rx_pkt_offset = sizeof(struct hal_rx_desc);
-			l2_hdr_offset =
-				ath11k_dp_rx_h_msdu_end_l3pad(msdu->data);
+			l2_hdr_offset = ath11k_dp_rx_h_msdu_end_l3pad(rx_desc);
 
 			if (is_first_msdu) {
 				if (!ath11k_dp_rxdesc_mpdu_valid(rx_desc)) {
@@ -3838,7 +3799,7 @@ static void ath11k_dp_rx_msdus_set_payload(struct sk_buff *msdu)
 	u32 rx_pkt_offset, l2_hdr_offset;
 
 	rx_pkt_offset = sizeof(struct hal_rx_desc);
-	l2_hdr_offset = ath11k_dp_rx_h_msdu_end_l3pad(msdu->data);
+	l2_hdr_offset = ath11k_dp_rx_h_msdu_end_l3pad((struct hal_rx_desc *)msdu->data);
 	skb_pull(msdu, rx_pkt_offset + l2_hdr_offset);
 }
 
@@ -3850,7 +3811,7 @@ static void ath11k_dp_rx_msdus_set_payload(struct sk_buff *msdu)
 {
 	struct sk_buff *msdu, *mpdu_buf, *prev_buf;
 	u32 decap_format, wifi_hdr_len;
-	void *rx_desc;
+	struct hal_rx_desc *rx_desc;
 	char *hdr_desc;
 	u8 *dest;
 	struct ieee80211_hdr_3addr *wh;
@@ -3860,7 +3821,7 @@ static void ath11k_dp_rx_msdus_set_payload(struct sk_buff *msdu)
 	if (!head_msdu)
 		goto err_merge_fail;
 
-	rx_desc = head_msdu->data;
+	rx_desc = (struct hal_rx_desc *)head_msdu->data;
 
 	if (ath11k_dp_rxdesc_get_mpdulen_err(rx_desc))
 		return NULL;
@@ -3889,7 +3850,7 @@ static void ath11k_dp_rx_msdus_set_payload(struct sk_buff *msdu)
 		__le16 qos_field;
 		u8 qos_pkt = 0;
 
-		rx_desc = head_msdu->data;
+		rx_desc = (struct hal_rx_desc *)head_msdu->data;
 		hdr_desc = ath11k_dp_rxdesc_get_80211hdr(rx_desc);
 
 		/* Base size */
@@ -3906,7 +3867,7 @@ static void ath11k_dp_rx_msdus_set_payload(struct sk_buff *msdu)
 		msdu = head_msdu;
 
 		while (msdu) {
-			rx_desc = msdu->data;
+			rx_desc = (struct hal_rx_desc *)msdu->data;
 			hdr_desc = ath11k_dp_rxdesc_get_80211hdr(rx_desc);
 
 			if (qos_pkt) {
