enum mt76_dfs_state dfs_state;
        ktime_t survey_time;
 
+       u32 aggr_stats[32];
+
        struct mt76_hw_cap cap;
        struct mt76_sband sband_2g;
        struct mt76_sband sband_5g;
 
        u32 rev;
 
-       u32 aggr_stats[32];
-
        struct tasklet_struct pre_tbtt_tasklet;
        int beacon_int;
        u8 beacon_mask;
 
                           bound[i], bound[i + 1]);
        seq_puts(file, "\nCount:  ");
        for (i = 0; i < ARRAY_SIZE(bound); i++)
-               seq_printf(file, "%8d | ", dev->mt76.aggr_stats[i]);
+               seq_printf(file, "%8d | ", dev->mphy.aggr_stats[i]);
        seq_puts(file, "\n");
 
        return 0;
 
        for (i = 0; i < 2; i++)
                mt76_rr(dev, MT_TX_AGG_CNT(i));
 
-       memset(dev->mt76.aggr_stats, 0, sizeof(dev->mt76.aggr_stats));
+       memset(dev->mphy.aggr_stats, 0, sizeof(dev->mphy.aggr_stats));
 }
 
 void mt7603_mac_set_timing(struct mt7603_dev *dev)
        for (i = 0, idx = 0; i < 2; i++) {
                u32 val = mt76_rr(dev, MT_TX_AGG_CNT(i));
 
-               dev->mt76.aggr_stats[idx++] += val & 0xffff;
-               dev->mt76.aggr_stats[idx++] += val >> 16;
+               dev->mphy.aggr_stats[idx++] += val & 0xffff;
+               dev->mphy.aggr_stats[idx++] += val >> 16;
        }
 
        if (dev->mphy.mac_work_count == 10)
 
 {
        struct mt7615_dev *dev = file->private;
        u32 reg = is_mt7663(&dev->mt76) ? MT_MIB_ARNG(0) : MT_AGG_ASRCR0;
-       bool ext_phy = phy != &dev->phy;
        int bound[7], i, range;
 
        if (!phy)
        for (i = 0; i < 3; i++)
                bound[i + 4] = MT_AGG_ASRCR_RANGE(range, i) + 1;
 
-       seq_printf(file, "\nPhy %d\n", ext_phy);
+       seq_printf(file, "\nPhy %d\n", phy != &dev->phy);
 
        seq_printf(file, "Length: %8d | ", bound[0]);
        for (i = 0; i < ARRAY_SIZE(bound) - 1; i++)
                           bound[i], bound[i + 1]);
        seq_puts(file, "\nCount:  ");
 
-       range = ext_phy ? ARRAY_SIZE(dev->mt76.aggr_stats) / 2 : 0;
        for (i = 0; i < ARRAY_SIZE(bound); i++)
-               seq_printf(file, "%8d | ", dev->mt76.aggr_stats[i + range]);
+               seq_printf(file, "%8d | ", phy->mt76->aggr_stats[i]);
        seq_puts(file, "\n");
 
        seq_printf(file, "BA miss count: %d\n", phy->mib.ba_miss_cnt);
 
                mt76_rr(dev, MT_TX_AGG_CNT(1, i));
        }
 
-       memset(dev->mt76.aggr_stats, 0, sizeof(dev->mt76.aggr_stats));
+       memset(phy->mt76->aggr_stats, 0, sizeof(phy->mt76->aggr_stats));
        phy->mt76->survey_time = ktime_get_boottime();
 
        /* reset airtime counters */
        struct mt7615_dev *dev = phy->dev;
        struct mib_stats *mib = &phy->mib;
        bool ext_phy = phy != &dev->phy;
-       int i, aggr;
+       int i, aggr = 0;
        u32 val, val2;
 
        mib->fcs_err_cnt += mt76_get_field(dev, MT_MIB_SDR3(ext_phy),
                mib->aggr_per = 1000 * (val - val2) / val;
        }
 
-       aggr = ext_phy ? ARRAY_SIZE(dev->mt76.aggr_stats) / 2 : 0;
        for (i = 0; i < 4; i++) {
                val = mt76_rr(dev, MT_MIB_MB_SDR1(ext_phy, i));
                mib->ba_miss_cnt += FIELD_GET(MT_MIB_BA_MISS_COUNT_MASK, val);
                                                  val);
 
                val = mt76_rr(dev, MT_TX_AGG_CNT(ext_phy, i));
-               dev->mt76.aggr_stats[aggr++] += val & 0xffff;
-               dev->mt76.aggr_stats[aggr++] += val >> 16;
+               phy->mt76->aggr_stats[aggr++] += val & 0xffff;
+               phy->mt76->aggr_stats[aggr++] += val >> 16;
        }
 }
 
 
                seq_puts(file, "Count:  ");
                for (j = 0; j < 8; j++)
                        seq_printf(file, "%8d | ",
-                                  dev->mt76.aggr_stats[i * 8 + j]);
+                                  dev->mphy.aggr_stats[i * 8 + j]);
                seq_puts(file, "\n");
                seq_puts(file, "--------");
                for (j = 0; j < 8; j++)
 
        for (i = 0; i < 16; i++)
                mt76_rr(dev, MT_TX_STAT_FIFO);
 
-       memset(dev->mt76.aggr_stats, 0, sizeof(dev->mt76.aggr_stats));
+       memset(dev->mphy.aggr_stats, 0, sizeof(dev->mphy.aggr_stats));
 }
 EXPORT_SYMBOL_GPL(mt76x02_mac_reset_counters);
 
        for (i = 0, idx = 0; i < 16; i++) {
                u32 val = mt76_rr(dev, MT_TX_AGG_CNT(i));
 
-               dev->mt76.aggr_stats[idx++] += val & 0xffff;
-               dev->mt76.aggr_stats[idx++] += val >> 16;
+               dev->mphy.aggr_stats[idx++] += val & 0xffff;
+               dev->mphy.aggr_stats[idx++] += val >> 16;
        }
 
        mt76x02_check_mac_err(dev);
 
 {
        struct mt7915_dev *dev = phy->dev;
        bool ext_phy = phy != &dev->phy;
-       int bound[15], range[4], i, n;
+       int bound[15], range[4], i;
 
        /* Tx ampdu stat */
        for (i = 0; i < ARRAY_SIZE(range); i++)
                           bound[i] + 1, bound[i + 1]);
 
        seq_puts(file, "\nCount:  ");
-       n = phy->band_idx ? ARRAY_SIZE(dev->mt76.aggr_stats) / 2 : 0;
        for (i = 0; i < ARRAY_SIZE(bound); i++)
-               seq_printf(file, "%8d | ", dev->mt76.aggr_stats[i + n]);
+               seq_printf(file, "%8d | ", phy->mt76->aggr_stats[i]);
        seq_puts(file, "\n");
 
        seq_printf(file, "BA miss count: %d\n", phy->mib.ba_miss_cnt);
 
                mt76_rr(dev, MT_TX_AGG_CNT2(phy->band_idx, i));
        }
 
-       i = 0;
        phy->mt76->survey_time = ktime_get_boottime();
-       if (phy->band_idx)
-               i = ARRAY_SIZE(dev->mt76.aggr_stats) / 2;
-
-       memset(&dev->mt76.aggr_stats[i], 0, sizeof(dev->mt76.aggr_stats) / 2);
+       memset(phy->mt76->aggr_stats, 0, sizeof(phy->mt76->aggr_stats));
 
        /* reset airtime counters */
        mt76_set(dev, MT_WF_RMAC_MIB_AIRTIME0(phy->band_idx),
 {
        struct mt7915_dev *dev = phy->dev;
        struct mib_stats *mib = &phy->mib;
-       int i, aggr0, aggr1, cnt;
+       int i, aggr0 = 0, aggr1, cnt;
        u32 val;
 
        cnt = mt76_rr(dev, MT_MIB_SDR3(phy->band_idx));
                mib->tx_amsdu_cnt += cnt;
        }
 
-       aggr0 = phy->band_idx ? ARRAY_SIZE(dev->mt76.aggr_stats) / 2 : 0;
        if (is_mt7915(&dev->mt76)) {
                for (i = 0, aggr1 = aggr0 + 8; i < 4; i++) {
                        val = mt76_rr(dev, MT_MIB_MB_SDR1(phy->band_idx, (i << 4)));
                                FIELD_GET(MT_MIB_RTS_RETRIES_COUNT_MASK, val);
 
                        val = mt76_rr(dev, MT_TX_AGG_CNT(phy->band_idx, i));
-                       dev->mt76.aggr_stats[aggr0++] += val & 0xffff;
-                       dev->mt76.aggr_stats[aggr0++] += val >> 16;
+                       phy->mt76->aggr_stats[aggr0++] += val & 0xffff;
+                       phy->mt76->aggr_stats[aggr0++] += val >> 16;
 
                        val = mt76_rr(dev, MT_TX_AGG_CNT2(phy->band_idx, i));
-                       dev->mt76.aggr_stats[aggr1++] += val & 0xffff;
-                       dev->mt76.aggr_stats[aggr1++] += val >> 16;
+                       phy->mt76->aggr_stats[aggr1++] += val & 0xffff;
+                       phy->mt76->aggr_stats[aggr1++] += val >> 16;
                }
 
                cnt = mt76_rr(dev, MT_MIB_SDR32(phy->band_idx));
 
                for (i = 0; i < 8; i++) {
                        val = mt76_rr(dev, MT_TX_AGG_CNT(phy->band_idx, i));
-                       dev->mt76.aggr_stats[aggr0++] += FIELD_GET(GENMASK(15, 0), val);
-                       dev->mt76.aggr_stats[aggr0++] += FIELD_GET(GENMASK(31, 16), val);
+                       phy->mt76->aggr_stats[aggr0++] += FIELD_GET(GENMASK(15, 0), val);
+                       phy->mt76->aggr_stats[aggr0++] += FIELD_GET(GENMASK(31, 16), val);
                }
 
                cnt = mt76_rr(dev, MT_MIB_SDR32(phy->band_idx));
 
        };
        struct mib_stats *mib = &phy->mib;
        /* See mt7915_ampdu_stat_read_phy, etc */
-       int i, n, ei = 0;
+       int i, ei = 0;
 
        mutex_lock(&dev->mt76.mutex);
 
        data[ei++] = mib->tx_pkt_ibf_cnt;
 
        /* Tx ampdu stat */
-       n = phy->band_idx ? ARRAY_SIZE(dev->mt76.aggr_stats) / 2 : 0;
        for (i = 0; i < 15 /*ARRAY_SIZE(bound)*/; i++)
-               data[ei++] = dev->mt76.aggr_stats[i + n];
+               data[ei++] = phy->mt76->aggr_stats[i];
 
        data[ei++] = phy->mib.ba_miss_cnt;
 
 
 
        seq_puts(file, "\nCount:  ");
        for (i = 0; i < ARRAY_SIZE(bound); i++)
-               seq_printf(file, "%8d | ", dev->mt76.aggr_stats[i]);
+               seq_printf(file, "%8d | ", phy->mt76->aggr_stats[i]);
        seq_puts(file, "\n");
 
        seq_printf(file, "BA miss count: %d\n", phy->mib.ba_miss_cnt);
 
        }
 
        dev->mt76.phy.survey_time = ktime_get_boottime();
-       memset(&dev->mt76.aggr_stats[0], 0, sizeof(dev->mt76.aggr_stats) / 2);
+       memset(phy->mt76->aggr_stats, 0, sizeof(phy->mt76->aggr_stats));
 
        /* reset airtime counters */
        mt76_rr(dev, MT_MIB_SDR9(0));
                val = mt76_rr(dev, MT_TX_AGG_CNT(0, i));
                val2 = mt76_rr(dev, MT_TX_AGG_CNT2(0, i));
 
-               dev->mt76.aggr_stats[aggr0++] += val & 0xffff;
-               dev->mt76.aggr_stats[aggr0++] += val >> 16;
-               dev->mt76.aggr_stats[aggr1++] += val2 & 0xffff;
-               dev->mt76.aggr_stats[aggr1++] += val2 >> 16;
+               phy->mt76->aggr_stats[aggr0++] += val & 0xffff;
+               phy->mt76->aggr_stats[aggr0++] += val >> 16;
+               phy->mt76->aggr_stats[aggr1++] += val2 & 0xffff;
+               phy->mt76->aggr_stats[aggr1++] += val2 >> 16;
        }
 }
 
 
 
        /* Tx ampdu stat */
        for (i = 0; i < 15; i++)
-               data[ei++] = dev->mt76.aggr_stats[i];
+               data[ei++] = phy->mt76->aggr_stats[i];
 
        data[ei++] = phy->mib.ba_miss_cnt;