return;
        }
 
-       arsta = (struct ath12k_sta *)peer->sta->drv_priv;
+       arsta = ath12k_sta_to_arsta(peer->sta);
        rx_stats = arsta->rx_stats;
 
        if (!rx_stats)
                        }
 
                        if (ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_SU) {
-                               arsta = (struct ath12k_sta *)peer->sta->drv_priv;
+                               arsta = ath12k_sta_to_arsta(peer->sta);
                                ath12k_dp_mon_rx_update_peer_su_stats(ar, arsta,
                                                                      ppdu_info);
                        } else if ((ppdu_info->fc_valid) &&
 
                             struct ieee80211_ampdu_params *params)
 {
        struct ath12k_base *ab = ar->ab;
-       struct ath12k_sta *arsta = (void *)params->sta->drv_priv;
+       struct ath12k_sta *arsta = ath12k_sta_to_arsta(params->sta);
        int vdev_id = arsta->arvif->vdev_id;
        int ret;
 
 {
        struct ath12k_base *ab = ar->ab;
        struct ath12k_peer *peer;
-       struct ath12k_sta *arsta = (void *)params->sta->drv_priv;
+       struct ath12k_sta *arsta = ath12k_sta_to_arsta(params->sta);
        int vdev_id = arsta->arvif->vdev_id;
        bool active;
        int ret;
        }
 
        sta = peer->sta;
-       arsta = (struct ath12k_sta *)sta->drv_priv;
+       arsta = ath12k_sta_to_arsta(sta);
 
        memset(&arsta->txrate, 0, sizeof(arsta->txrate));
 
 
                ath12k_warn(ab, "peer %pM disappeared!\n", peer_addr);
 
        if (sta) {
-               arsta = (struct ath12k_sta *)sta->drv_priv;
+               arsta = ath12k_sta_to_arsta(sta);
 
                switch (key->cipher) {
                case WLAN_CIPHER_SUITE_TKIP:
 {
        struct ath12k_base *ab = ar->ab;
        struct ath12k_vif *arvif = ath12k_vif_to_arvif(vif);
-       struct ath12k_sta *arsta = (struct ath12k_sta *)sta->drv_priv;
+       struct ath12k_sta *arsta = ath12k_sta_to_arsta(sta);
        struct ath12k_wmi_peer_create_arg peer_param;
        int ret;
 
 {
        struct ath12k *ar = hw->priv;
        struct ath12k_vif *arvif = ath12k_vif_to_arvif(vif);
-       struct ath12k_sta *arsta = (struct ath12k_sta *)sta->drv_priv;
+       struct ath12k_sta *arsta = ath12k_sta_to_arsta(sta);
        struct ath12k_peer *peer;
        int ret = 0;
 
                                        u32 changed)
 {
        struct ath12k *ar = hw->priv;
-       struct ath12k_sta *arsta = (struct ath12k_sta *)sta->drv_priv;
+       struct ath12k_sta *arsta = ath12k_sta_to_arsta(sta);
        struct ath12k_vif *arvif = ath12k_vif_to_arvif(vif);
        struct ath12k_peer *peer;
        u32 bw, smps;
                                             struct ieee80211_sta *sta)
 {
        struct ath12k_vif *arvif = data;
-       struct ath12k_sta *arsta = (struct ath12k_sta *)sta->drv_priv;
+       struct ath12k_sta *arsta = ath12k_sta_to_arsta(sta);
        struct ath12k *ar = arvif->ar;
 
        spin_lock_bh(&ar->data_lock);
                                         struct ieee80211_sta *sta,
                                         struct station_info *sinfo)
 {
-       struct ath12k_sta *arsta = (struct ath12k_sta *)sta->drv_priv;
+       struct ath12k_sta *arsta = ath12k_sta_to_arsta(sta);
 
        sinfo->rx_duration = arsta->rx_duration;
        sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_DURATION);