struct mt7921_dev *dev = phy->dev;
        struct mib_stats *mib = &phy->mib;
        int i, aggr0 = 0, aggr1;
+       u32 val;
 
        mib->fcs_err_cnt += mt76_get_field(dev, MT_MIB_SDR3(0),
                                           MT_MIB_SDR3_FCS_ERR_MASK);
        mib->rts_retries_cnt += mt76_get_field(dev, MT_MIB_MB_BSDR1(0),
                                               MT_MIB_RTS_FAIL_COUNT_MASK);
 
+       mib->tx_ampdu_cnt += mt76_rr(dev, MT_MIB_SDR12(0));
+       mib->tx_mpdu_attempts_cnt += mt76_rr(dev, MT_MIB_SDR14(0));
+       mib->tx_mpdu_success_cnt += mt76_rr(dev, MT_MIB_SDR15(0));
+
+       val = mt76_rr(dev, MT_MIB_SDR32(0));
+       mib->tx_pkt_ebf_cnt += FIELD_GET(MT_MIB_SDR9_EBF_CNT_MASK, val);
+       mib->tx_pkt_ibf_cnt += FIELD_GET(MT_MIB_SDR9_IBF_CNT_MASK, val);
+
+       val = mt76_rr(dev, MT_ETBF_TX_APP_CNT(0));
+       mib->tx_bf_ibf_ppdu_cnt += FIELD_GET(MT_ETBF_TX_IBF_CNT, val);
+       mib->tx_bf_ebf_ppdu_cnt += FIELD_GET(MT_ETBF_TX_EBF_CNT, val);
+
+       val = mt76_rr(dev, MT_ETBF_RX_FB_CNT(0));
+       mib->tx_bf_rx_fb_all_cnt += FIELD_GET(MT_ETBF_RX_FB_ALL, val);
+       mib->tx_bf_rx_fb_he_cnt += FIELD_GET(MT_ETBF_RX_FB_HE, val);
+       mib->tx_bf_rx_fb_vht_cnt += FIELD_GET(MT_ETBF_RX_FB_VHT, val);
+       mib->tx_bf_rx_fb_ht_cnt += FIELD_GET(MT_ETBF_RX_FB_HT, val);
+
+       mib->rx_mpdu_cnt += mt76_rr(dev, MT_MIB_SDR5(0));
+       mib->rx_ampdu_cnt += mt76_rr(dev, MT_MIB_SDR22(0));
+       mib->rx_ampdu_bytes_cnt += mt76_rr(dev, MT_MIB_SDR23(0));
+       mib->rx_ba_cnt += mt76_rr(dev, MT_MIB_SDR31(0));
+
        for (i = 0, aggr1 = aggr0 + 4; i < 4; i++) {
-               u32 val, val2;
+               u32 val2;
 
                val = mt76_rr(dev, MT_TX_AGG_CNT(0, i));
                val2 = mt76_rr(dev, MT_TX_AGG_CNT2(0, i));
 
 #define MT_LPON_TCR_SW_MODE            GENMASK(1, 0)
 #define MT_LPON_TCR_SW_WRITE           BIT(0)
 
+/* ETBF: band 0(0x24000), band 1(0xa4000) */
+#define MT_WF_ETBF_BASE(_band)         ((_band) ? 0x820fa000 : 0x820ea000)
+#define MT_WF_ETBF(_band, ofs)         (MT_WF_ETBF_BASE(_band) + (ofs))
+
+#define MT_ETBF_TX_APP_CNT(_band)      MT_WF_ETBF(_band, 0x150)
+#define MT_ETBF_TX_IBF_CNT             GENMASK(31, 16)
+#define MT_ETBF_TX_EBF_CNT             GENMASK(15, 0)
+
+#define MT_ETBF_RX_FB_CNT(_band)       MT_WF_ETBF(_band, 0x158)
+#define MT_ETBF_RX_FB_ALL              GENMASK(31, 24)
+#define MT_ETBF_RX_FB_HE               GENMASK(23, 16)
+#define MT_ETBF_RX_FB_VHT              GENMASK(15, 8)
+#define MT_ETBF_RX_FB_HT               GENMASK(7, 0)
+
 /* MIB: band 0(0x24800), band 1(0xa4800) */
 #define MT_WF_MIB_BASE(_band)          ((_band) ? 0x820fd000 : 0x820ed000)
 #define MT_WF_MIB(_band, ofs)          (MT_WF_MIB_BASE(_band) + (ofs))
 #define MT_MIB_SDR3(_band)             MT_WF_MIB(_band, 0x698)
 #define MT_MIB_SDR3_FCS_ERR_MASK       GENMASK(31, 16)
 
+#define MT_MIB_SDR5(_band)             MT_WF_MIB(_band, 0x780)
+
 #define MT_MIB_SDR9(_band)             MT_WF_MIB(_band, 0x02c)
 #define MT_MIB_SDR9_BUSY_MASK          GENMASK(23, 0)
 
+#define MT_MIB_SDR12(_band)            MT_WF_MIB(_band, 0x558)
+#define MT_MIB_SDR14(_band)            MT_WF_MIB(_band, 0x564)
+#define MT_MIB_SDR15(_band)            MT_WF_MIB(_band, 0x568)
+
 #define MT_MIB_SDR16(_band)            MT_WF_MIB(_band, 0x048)
 #define MT_MIB_SDR16_BUSY_MASK         GENMASK(23, 0)
 
+#define MT_MIB_SDR22(_band)            MT_WF_MIB(_band, 0x770)
+#define MT_MIB_SDR23(_band)            MT_WF_MIB(_band, 0x774)
+#define MT_MIB_SDR31(_band)            MT_WF_MIB(_band, 0x55c)
+
+#define MT_MIB_SDR32(_band)            MT_WF_MIB(_band, 0x7a8)
+#define MT_MIB_SDR9_IBF_CNT_MASK       GENMASK(31, 16)
+#define MT_MIB_SDR9_EBF_CNT_MASK       GENMASK(15, 0)
+
 #define MT_MIB_SDR34(_band)            MT_WF_MIB(_band, 0x090)
 #define MT_MIB_MU_BF_TX_CNT            GENMASK(15, 0)