static void _rtl92de_query_rxphystatus(struct ieee80211_hw *hw,
                                       struct rtl_stats *pstats,
-                                      struct rx_desc_92d *pdesc,
+                                      __le32 *pdesc,
                                       struct rx_fwinfo_92d *p_drvinfo,
                                       bool packet_match_bssid,
                                       bool packet_toself,
        u8 i, max_spatial_stream;
        u32 rssi, total_rssi = 0;
        bool is_cck_rate;
+       u8 rxmcs;
 
-       is_cck_rate = RX_HAL_IS_CCK_RATE(pdesc->rxmcs);
+       rxmcs = get_rx_desc_rxmcs(pdesc);
+       is_cck_rate = rxmcs <= DESC_RATE11M;
        pstats->packet_matchbssid = packet_match_bssid;
        pstats->packet_toself = packet_toself;
        pstats->packet_beacon = packet_beacon;
                pstats->rx_pwdb_all = pwdb_all;
                pstats->rxpower = rx_pwr_all;
                pstats->recvsignalpower = rx_pwr_all;
-               if (pdesc->rxht && pdesc->rxmcs >= DESC_RATEMCS8 &&
-                   pdesc->rxmcs <= DESC_RATEMCS15)
+               if (get_rx_desc_rxht(pdesc) && rxmcs >= DESC_RATEMCS8 &&
+                   rxmcs <= DESC_RATEMCS15)
                        max_spatial_stream = 2;
                else
                        max_spatial_stream = 1;
 static void _rtl92de_translate_rx_signal_stuff(struct ieee80211_hw *hw,
                                               struct sk_buff *skb,
                                               struct rtl_stats *pstats,
-                                              struct rx_desc_92d *pdesc,
+                                              __le32 *pdesc,
                                               struct rx_fwinfo_92d *p_drvinfo)
 {
        struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
        if (phystatus) {
                p_drvinfo = (struct rx_fwinfo_92d *)(skb->data +
                                                     stats->rx_bufshift);
-               _rtl92de_translate_rx_signal_stuff(hw,
-                                                  skb, stats,
-                                                  (struct rx_desc_92d *)pdesc,
+               _rtl92de_translate_rx_signal_stuff(hw, skb, stats, pdesc,
                                                   p_drvinfo);
        }
        /*rx_status->qual = stats->signal; */
 
        u8 csi_target[2];
        u8 sigevm;
        u8 max_ex_pwr;
+#ifdef __LITTLE_ENDIAN
        u8 ex_intf_flag:1;
        u8 sgi_en:1;
        u8 rxsc:2;
        u8 reserve:4;
+#else
+       u8 reserve:4;
+       u8 rxsc:2;
+       u8 sgi_en:1;
+       u8 ex_intf_flag:1;
+#endif
 } __packed;
 
 struct tx_desc_92d {
        u32 reserve_pass_pcie_mm_limit[4];
 } __packed;
 
-struct rx_desc_92d {
-       u32 length:14;
-       u32 crc32:1;
-       u32 icverror:1;
-       u32 drv_infosize:4;
-       u32 security:3;
-       u32 qos:1;
-       u32 shift:2;
-       u32 phystatus:1;
-       u32 swdec:1;
-       u32 lastseg:1;
-       u32 firstseg:1;
-       u32 eor:1;
-       u32 own:1;
-
-       u32 macid:5;
-       u32 tid:4;
-       u32 hwrsvd:5;
-       u32 paggr:1;
-       u32 faggr:1;
-       u32 a1_fit:4;
-       u32 a2_fit:4;
-       u32 pam:1;
-       u32 pwr:1;
-       u32 moredata:1;
-       u32 morefrag:1;
-       u32 type:2;
-       u32 mc:1;
-       u32 bc:1;
-
-       u32 seq:12;
-       u32 frag:4;
-       u32 nextpktlen:14;
-       u32 nextind:1;
-       u32 rsvd:1;
-
-       u32 rxmcs:6;
-       u32 rxht:1;
-       u32 amsdu:1;
-       u32 splcp:1;
-       u32 bandwidth:1;
-       u32 htc:1;
-       u32 tcpchk_rpt:1;
-       u32 ipcchk_rpt:1;
-       u32 tcpchk_valid:1;
-       u32 hwpcerr:1;
-       u32 hwpcind:1;
-       u32 iv0:16;
-
-       u32 iv1;
-
-       u32 tsfl;
-
-       u32 bufferaddress;
-       u32 bufferaddress64;
-
-} __packed;
-
 void rtl92de_tx_fill_desc(struct ieee80211_hw *hw,
                          struct ieee80211_hdr *hdr, u8 *pdesc,
                          u8 *pbd_desc_tx, struct ieee80211_tx_info *info,