--- a/drivers/net/wireless/ath/ath11k/nss.c
+++ b/drivers/net/wireless/ath/ath11k/nss.c
@@ -313,13 +313,14 @@ static void ath11k_nss_peer_mem_free(str
 
 /*-----------------------------Events/Callbacks------------------------------*/
 
-void ath11k_nss_wifili_event_receive(struct ath11k_base *ab, struct nss_wifili_msg *msg)
+void ath11k_nss_wifili_event_receive(void *context, struct nss_wifili_msg *msg)
 {
 	u32 msg_type = msg->cm.type;
 	enum nss_cmn_response response = msg->cm.response;
 	u32 error =  msg->cm.error;
 	u32 peer_id;
 	struct nss_wifili_peer_stats *peer_stats;
+	struct ath11k_base *ab = (struct ath11k_base *)context;
 
 	if (!ab)
 		return;
@@ -519,6 +520,17 @@ ath11k_nss_wifili_ext_callback_fn(struct
 	}
 }
 
+static inline void ath11k_nss_wifili_ext_callback_wrapper(struct net_device *netdev,
+						   struct sk_buff *skb,
+						   struct napi_struct *napi)
+{
+	// Retrieve the ath11k_base from the net_device's private data
+	struct ath11k_base *ab = (struct ath11k_base *)netdev_priv(netdev);
+
+	// Call the original function with the retrieved ath11k_base
+	ath11k_nss_wifili_ext_callback_fn(ab, skb, napi);
+}
+
 void ath11k_nss_vdev_cfg_cb(void *app_data, struct nss_cmn_msg *msg)
 {
 	struct ath11k_vif *arvif = (struct ath11k_vif *)app_data;
@@ -1431,7 +1443,7 @@ int ath11k_nss_mesh_exception_flags(stru
 	nss_tx_status_t status;
 	int ret = 0;
 
-	msg_cb = (nss_wifi_mesh_msg_callback_t)ath11k_nss_mesh_wifili_event_receive;
+	msg_cb = ath11k_nss_mesh_wifili_event_receive;
 
 	status = (nss_tx_status_t)nss_wifi_meshmgr_mesh_path_exception(arvif->nss.mesh_handle, nss_msg,
 			msg_cb, arvif->ar->ab);
@@ -1532,7 +1544,7 @@ static int ath11k_nss_mesh_mpath_add(str
 	if (!msg)
 		return -ENOMEM;
 
-	msg_cb = (nss_wifi_mesh_msg_callback_t)ath11k_nss_mesh_wifili_event_receive;
+	msg_cb = ath11k_nss_mesh_wifili_event_receive;
 
 	ether_addr_copy(msg->dest_mac_addr, path->mesh_da);
 	ether_addr_copy(msg->next_hop_mac_addr, path->next_hop);
@@ -1578,7 +1590,7 @@ static int ath11k_nss_mesh_mpath_update(
 	if (!msg)
 		return -ENOMEM;
 
-	msg_cb = (nss_wifi_mesh_msg_callback_t)ath11k_nss_mesh_wifili_event_receive;
+	msg_cb = ath11k_nss_mesh_wifili_event_receive;
 
 	ether_addr_copy(msg->dest_mac_addr, path->mesh_da);
 	ether_addr_copy(msg->next_hop_mac_addr, path->next_hop);
@@ -1634,7 +1646,7 @@ static int ath11k_nss_mesh_mpath_del(str
 	if (!msg)
 		return -ENOMEM;
 
-	msg_cb = (nss_wifi_mesh_msg_callback_t)ath11k_nss_mesh_wifili_event_receive;
+	msg_cb = ath11k_nss_mesh_wifili_event_receive;
 
 	ether_addr_copy(msg->mesh_dest_mac_addr, path->mesh_da);
 	ether_addr_copy(msg->next_hop_mac_addr, path->next_hop);
@@ -1670,7 +1682,7 @@ static int ath11k_nss_mesh_mpp_add_cmd(s
 	if (!msg)
 		return -ENOMEM;
 
-	msg_cb = (nss_wifi_mesh_msg_callback_t)ath11k_nss_mesh_wifili_event_receive;
+	msg_cb = ath11k_nss_mesh_wifili_event_receive;
 
 	ether_addr_copy(msg->dest_mac_addr, path->da);
 	ether_addr_copy(msg->mesh_dest_mac, path->mesh_da);
@@ -1706,7 +1718,7 @@ static int ath11k_nss_mesh_mpp_update_cm
 	if (!msg)
 		return -ENOMEM;
 
-	msg_cb = (nss_wifi_mesh_msg_callback_t)ath11k_nss_mesh_wifili_event_receive;
+	msg_cb = ath11k_nss_mesh_wifili_event_receive;
 
 	ether_addr_copy(msg->dest_mac_addr, path->da);
 	ether_addr_copy(msg->mesh_dest_mac, path->mesh_da);
@@ -1744,7 +1756,7 @@ static int ath11k_nss_mesh_mpp_del_cmd(s
 	if (!msg)
 		return -ENOMEM;
 
-	msg_cb = (nss_wifi_mesh_msg_callback_t)ath11k_nss_mesh_wifili_event_receive;
+	msg_cb = ath11k_nss_mesh_wifili_event_receive;
 
 	ether_addr_copy(msg->dest_mac_addr, path->da);
 	ether_addr_copy(msg->mesh_dest_mac_addr, path->mesh_da);
@@ -1933,7 +1945,7 @@ void ath11k_nss_mpp_timer_cb(struct time
 	LIST_HEAD(local_entry);
 	nss_tx_status_t status;
 
-	msg_cb = (nss_wifi_mesh_msg_callback_t)ath11k_nss_mesh_wifili_event_receive;
+	msg_cb = ath11k_nss_mesh_wifili_event_receive;
 
 	if (!arvif->nss.mpp_dump_req)
 		arvif->nss.mpp_dump_num_entries = 0;
@@ -3067,7 +3079,7 @@ int ath11k_nss_ext_vdev_wds_4addr_allow(
 	cfg_4addr_msg->if_num = arvif->nss.if_num;
 	cfg_4addr_msg->enable = true;
 
-	msg_cb = (nss_wifili_msg_callback_t)ath11k_nss_wifili_event_receive;
+	msg_cb = ath11k_nss_wifili_event_receive;
 
 	nss_cmn_msg_init(&wlmsg->cm, ar->ab->nss.if_num,
 			 NSS_WIFILI_PEER_4ADDR_EVENT_MSG,
@@ -3472,7 +3484,7 @@ int ath11k_nss_set_peer_sec_type(struct
 		memcpy(&sec_msg->mic_key[0], mic_key, NSS_WIFILI_MIC_KEY_LEN);
 	}
 
-	msg_cb = (nss_wifili_msg_callback_t)ath11k_nss_wifili_event_receive;
+	msg_cb = ath11k_nss_wifili_event_receive;
 
 	nss_cmn_msg_init(&wlmsg->cm, ar->ab->nss.if_num,
 			 NSS_WIFILI_PEER_SECURITY_TYPE_MSG,
@@ -3511,7 +3523,7 @@ int ath11k_nss_set_peer_authorize(struct
 	auth_msg->peer_id = peer_id;
 	auth_msg->auth_flag = 1;
 
-	msg_cb = (nss_wifili_msg_callback_t)ath11k_nss_wifili_event_receive;
+	msg_cb = ath11k_nss_wifili_event_receive;
 
 	nss_cmn_msg_init(&wlmsg->cm, ar->ab->nss.if_num,
 			 NSS_WIFILI_PEER_UPDATE_AUTH_FLAG,
@@ -3743,7 +3755,7 @@ int ath11k_nss_peer_delete(struct ath11k
 	peer_msg->vdev_id = peer->vdev_id;
 	peer_msg->peer_id = peer->peer_id;
 
-	msg_cb = (nss_wifili_msg_callback_t)ath11k_nss_wifili_event_receive;
+	msg_cb = ath11k_nss_wifili_event_receive;
 
 	nss_cmn_msg_init(&wlmsg->cm, ar->ab->nss.if_num,
 			 NSS_WIFILI_PEER_DELETE_MSG,
@@ -3841,7 +3853,7 @@ int ath11k_nss_peer_create(struct ath11k
 	peer_msg->nss_peer_mem = peer->nss.paddr;
 	peer_msg->psta_vdev_id = peer->vdev_id;
 
-	msg_cb = (nss_wifili_msg_callback_t)ath11k_nss_wifili_event_receive;
+	msg_cb = ath11k_nss_wifili_event_receive;
 
 	nss_cmn_msg_init(&wlmsg->cm, ab->nss.if_num,
 			 NSS_WIFILI_PEER_CREATE_MSG,
@@ -3909,7 +3921,7 @@ int ath11k_nss_add_wds_peer(struct ath11
 	ether_addr_copy(wds_peer_msg->peer_mac, peer->addr);
 	ether_addr_copy(wds_peer_msg->dest_mac, dest_mac);
 
-	msg_cb = (nss_wifili_msg_callback_t)ath11k_nss_wifili_event_receive;
+	msg_cb = ath11k_nss_wifili_event_receive;
 
 	nss_cmn_msg_init(&wlmsg->cm, ab->nss.if_num,
 			 NSS_WIFILI_WDS_PEER_ADD_MSG,
@@ -3955,7 +3967,7 @@ int ath11k_nss_update_wds_peer(struct at
 	ether_addr_copy(wds_peer_msg->peer_mac, peer->addr);
 	ether_addr_copy(wds_peer_msg->dest_mac, dest_mac);
 
-	msg_cb = (nss_wifili_msg_callback_t)ath11k_nss_wifili_event_receive;
+	msg_cb = ath11k_nss_wifili_event_receive;
 
 	nss_cmn_msg_init(&wlmsg->cm, ab->nss.if_num,
 			 NSS_WIFILI_WDS_PEER_UPDATE_MSG,
@@ -4006,7 +4018,7 @@ int ath11k_nss_map_wds_peer(struct ath11
 
 	ether_addr_copy(wds_peer_map_msg->dest_mac, dest_mac);
 
-	msg_cb = (nss_wifili_msg_callback_t)ath11k_nss_wifili_event_receive;
+	msg_cb = ath11k_nss_wifili_event_receive;
 
 	nss_cmn_msg_init(&wlmsg->cm, ab->nss.if_num,
 			 NSS_WIFILI_WDS_PEER_MAP_MSG,
@@ -4052,7 +4064,7 @@ int ath11k_nss_del_wds_peer(struct ath11
 	ether_addr_copy(wds_peer_msg->peer_mac, peer_addr);
 	ether_addr_copy(wds_peer_msg->dest_mac, dest_mac);
 
-	msg_cb = (nss_wifili_msg_callback_t)ath11k_nss_wifili_event_receive;
+	msg_cb = ath11k_nss_wifili_event_receive;
 
 	nss_cmn_msg_init(&wlmsg->cm, ab->nss.if_num,
 			 NSS_WIFILI_WDS_PEER_DEL_MSG,
@@ -4366,7 +4378,7 @@ static int ath11k_nss_mesh_capability(st
 	if (!wlmsg)
 		return -ENOMEM;
 
-	msg_cb = (nss_wifili_msg_callback_t)ath11k_nss_wifili_event_receive;
+	msg_cb = ath11k_nss_wifili_event_receive;
 
 	reinit_completion(&ab->nss.complete);
 
@@ -4483,7 +4495,7 @@ static int ath11k_nss_init(struct ath11k
 
 	/* register callbacks for events and exceptions with nss */
 	nss_contex = nss_register_wifili_if(ab->nss.if_num, NULL,
-					    (nss_wifili_callback_t)ath11k_nss_wifili_ext_callback_fn,
+					    (nss_wifili_callback_t)ath11k_nss_wifili_ext_callback_wrapper,
 					    (nss_wifili_msg_callback_t)ath11k_nss_wifili_event_receive,
 					    (struct net_device *)ab, features);
 
@@ -4502,7 +4514,7 @@ static int ath11k_nss_init(struct ath11k
 	 */
 	ab->nss.ctx = nss_contex;
 
-	msg_cb = (nss_wifili_msg_callback_t)ath11k_nss_wifili_event_receive;
+	msg_cb = ath11k_nss_wifili_event_receive;
 
 	/* Initialize the common part of the wlmsg */
 	nss_cmn_msg_init(&wlmsg->cm, ab->nss.if_num,
@@ -4574,7 +4586,7 @@ static int ath11k_nss_stats_cfg(struct a
 	stats_cfg = &wlmsg->msg.scm;
 	stats_cfg->cfg = enable;
 
-	msg_cb = (nss_wifili_msg_callback_t)ath11k_nss_wifili_event_receive;
+	msg_cb = ath11k_nss_wifili_event_receive;
 
 	nss_cmn_msg_init(&wlmsg->cm, ab->nss.if_num,
 			 nss_msg,
@@ -4684,7 +4696,7 @@ int ath11k_nss_pdev_init(struct ath11k_b
 	refill_ring_id = ar->dp.rx_refill_buf_ring.refill_buf_ring.ring_id;
 	ath11k_nss_fill_srng_info(ab, refill_ring_id, &pdevmsg->rxdma_ring);
 
-	msg_cb = (nss_wifili_msg_callback_t)ath11k_nss_wifili_event_receive;
+	msg_cb = ath11k_nss_wifili_event_receive;
 
 	nss_cmn_msg_init(&wlmsg->cm, ab->nss.if_num,
 			 NSS_WIFILI_PDEV_INIT_MSG,
@@ -4758,7 +4770,7 @@ int ath11k_nss_start(struct ath11k_base
 	if (!wlmsg)
 		return -ENOMEM;
 
-	msg_cb = (nss_wifili_msg_callback_t)ath11k_nss_wifili_event_receive;
+	msg_cb = ath11k_nss_wifili_event_receive;
 
 	/* Empty message for NSS Start message */
 	nss_cmn_msg_init(&wlmsg->cm, ab->nss.if_num,
@@ -4816,7 +4828,7 @@ static void ath11k_nss_reset(struct ath1
 		return;
 	}
 
-	msg_cb = (nss_wifili_msg_callback_t)ath11k_nss_wifili_event_receive;
+	msg_cb = ath11k_nss_wifili_event_receive;
 
 	/* Empty message for NSS Reset message */
 	nss_cmn_msg_init(&wlmsg->cm, ab->nss.if_num,
@@ -4869,7 +4881,7 @@ static int ath11k_nss_stop(struct ath11k
 	if (!wlmsg)
 		return -ENOMEM;
 
-	msg_cb = (nss_wifili_msg_callback_t)ath11k_nss_wifili_event_receive;
+	msg_cb = ath11k_nss_wifili_event_receive;
 
 	/* Empty message for Stop command */
 	nss_cmn_msg_init(&wlmsg->cm, ab->nss.if_num,
@@ -4936,7 +4948,7 @@ int ath11k_nss_pdev_deinit(struct ath11k
 	deinit = &wlmsg->msg.pdevdeinit;
 	deinit->ifnum = radio_id;
 
-	msg_cb = (nss_wifili_msg_callback_t)ath11k_nss_wifili_event_receive;
+	msg_cb = ath11k_nss_wifili_event_receive;
 
 	nss_cmn_msg_init(&wlmsg->cm, ab->nss.if_num,
 			 NSS_WIFILI_PDEV_DEINIT_MSG,
