bool vht)
 {
        struct ieee80211_sta_ht_cap *ht_cap = &sband->ht_cap;
-       int i, nstream = hweight8(dev->antenna_mask);
+       int i, nstream = hweight8(dev->phy.antenna_mask);
        struct ieee80211_sta_vht_cap *vht_cap;
        u16 mcs_map = 0;
 
        wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST);
        wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_AIRTIME_FAIRNESS);
 
-       wiphy->available_antennas_tx = dev->antenna_mask;
-       wiphy->available_antennas_rx = dev->antenna_mask;
+       wiphy->available_antennas_tx = dev->phy.antenna_mask;
+       wiphy->available_antennas_rx = dev->phy.antenna_mask;
 
        hw->txq_data_size = sizeof(struct mt76_txq);
        hw->max_tx_fragments = 16;
 int mt76_get_txpower(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
                     int *dbm)
 {
-       struct mt76_dev *dev = hw->priv;
-       int n_chains = hweight8(dev->antenna_mask);
+       struct mt76_phy *phy = hw->priv;
+       int n_chains = hweight8(phy->antenna_mask);
 
-       *dbm = DIV_ROUND_UP(dev->txpower_cur, 2);
+       *dbm = DIV_ROUND_UP(phy->txpower_cur, 2);
 
        /* convert from per-chain power to combined
         * output power
 
 int mt76_get_antenna(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant)
 {
-       struct mt76_dev *dev = hw->priv;
+       struct mt76_phy *phy = hw->priv;
+       struct mt76_dev *dev = phy->dev;
 
        mutex_lock(&dev->mutex);
-       *tx_ant = dev->antenna_mask;
-       *rx_ant = dev->antenna_mask;
+       *tx_ant = phy->antenna_mask;
+       *rx_ant = phy->antenna_mask;
        mutex_unlock(&dev->mutex);
 
        return 0;
 
 
        struct mt76_sband sband_2g;
        struct mt76_sband sband_5g;
+
+       int txpower_cur;
+       u8 antenna_mask;
 };
 
 struct mt76_dev {
 
        u32 aggr_stats[32];
 
-       u8 antenna_mask;
-
        struct tasklet_struct pre_tbtt_tasklet;
        int beacon_int;
        u8 beacon_mask;
        struct mt76_hw_cap cap;
 
        struct mt76_rate_power rate_power;
-       int txpower_cur;
 
        enum nl80211_dfs_regions region;
 
 
 static void
 mt7603_phy_init(struct mt7603_dev *dev)
 {
-       int rx_chains = dev->mt76.antenna_mask;
+       int rx_chains = dev->mphy.antenna_mask;
        int tx_chains = hweight8(rx_chains) - 1;
 
        mt76_rmw(dev, MT_WF_RMAC_RMCR,
        target_power += max_offset;
 
        dev->tx_power_limit = target_power;
-       dev->mt76.txpower_cur = target_power;
+       dev->mphy.txpower_cur = target_power;
 
        target_power = DIV_ROUND_UP(target_power, 2);
 
        /* add 3 dBm for 2SS devices (combined output) */
-       if (dev->mt76.antenna_mask & BIT(1))
+       if (dev->mphy.antenna_mask & BIT(1))
                target_power += 3;
 
        for (i = 0; i < sband->n_channels; i++) {
                     (unsigned long)dev);
 
        /* Check for 7688, which only has 1SS */
-       dev->mt76.antenna_mask = 3;
+       dev->mphy.antenna_mask = 3;
        if (mt76_rr(dev, MT_EFUSE_BASE + 0x64) & BIT(4))
-               dev->mt76.antenna_mask = 1;
+               dev->mphy.antenna_mask = 1;
 
        dev->slottime = 9;
 
 
 
                status->rate_idx = i;
 
-               status->chains = dev->mt76.antenna_mask;
+               status->chains = dev->mphy.antenna_mask;
                status->chain_signal[0] = FIELD_GET(MT_RXV4_IB_RSSI0, rxdg3) +
                                          dev->rssi_offset[0];
                status->chain_signal[1] = FIELD_GET(MT_RXV4_IB_RSSI1, rxdg3) +
 
 {
        struct cfg80211_chan_def *chandef = &dev->mphy.chandef;
        struct ieee80211_hw *hw = mt76_hw(dev);
-       int n_chains = hweight8(dev->mt76.antenna_mask);
+       int n_chains = hweight8(dev->mphy.antenna_mask);
        struct {
                u8 control_chan;
                u8 center_chan;
        }
 
        tx_power = hw->conf.power_level * 2;
-       if (dev->mt76.antenna_mask == 3)
+       if (dev->mphy.antenna_mask == 3)
                tx_power -= 6;
        tx_power = min(tx_power, dev->tx_power_limit);
 
-       dev->mt76.txpower_cur = tx_power;
+       dev->mphy.txpower_cur = tx_power;
 
        for (i = 0; i < ARRAY_SIZE(req.txpower); i++)
                req.txpower[i] = tx_power;
 
                tx_mask = max_nss;
 
        dev->chainmask = tx_mask << 8 | rx_mask;
-       dev->mt76.antenna_mask = BIT(tx_mask) - 1;
+       dev->mphy.antenna_mask = BIT(tx_mask) - 1;
 }
 
 int mt7615_eeprom_get_power_index(struct mt7615_dev *dev,
 
 mt7615_init_txpower(struct mt7615_dev *dev,
                    struct ieee80211_supported_band *sband)
 {
-       int i, n_chains = hweight8(dev->mt76.antenna_mask), target_chains;
+       int i, n_chains = hweight8(dev->mphy.antenna_mask), target_chains;
        u8 *eep = (u8 *)dev->mt76.eeprom.data;
        enum nl80211_band band = sband->band;
 
 
 
                status->enc_flags |= RX_ENC_FLAG_STBC_MASK * stbc;
 
-               status->chains = dev->mt76.antenna_mask;
+               status->chains = dev->mphy.antenna_mask;
                status->chain_signal[0] = to_rssi(MT_RXV4_RCPI0, rxdg3);
                status->chain_signal[1] = to_rssi(MT_RXV4_RCPI1, rxdg3);
                status->chain_signal[2] = to_rssi(MT_RXV4_RCPI2, rxdg3);
                status->chain_signal[3] = to_rssi(MT_RXV4_RCPI3, rxdg3);
                status->signal = status->chain_signal[0];
 
-               for (i = 1; i < hweight8(dev->mt76.antenna_mask); i++) {
+               for (i = 1; i < hweight8(dev->mphy.antenna_mask); i++) {
                        if (!(status->chains & BIT(i)))
                                continue;
 
 
 
 int mt7615_mcu_set_tx_power(struct mt7615_dev *dev)
 {
-       int i, ret, n_chains = hweight8(dev->mt76.antenna_mask);
+       int i, ret, n_chains = hweight8(dev->mphy.antenna_mask);
        struct cfg80211_chan_def *chandef = &dev->mphy.chandef;
        int freq = chandef->center_freq1, len, target_chains;
        u8 *req, *data, *eep = (u8 *)dev->mt76.eeprom.data;
                break;
        }
        tx_power = max_t(s8, tx_power, 0);
-       dev->mt76.txpower_cur = tx_power;
+       dev->mphy.txpower_cur = tx_power;
 
        target_chains = mt7615_ext_pa_enabled(dev, band) ? 1 : n_chains;
        for (i = 0; i < target_chains; i++) {
                .control_chan = chandef->chan->hw_value,
                .center_chan = ieee80211_frequency_to_channel(freq1),
                .tx_streams = (dev->chainmask >> 8) & 0xf,
-               .rx_streams_mask = dev->mt76.antenna_mask,
+               .rx_streams_mask = dev->mphy.antenna_mask,
                .center_chan2 = ieee80211_frequency_to_channel(freq2),
        };
        int ret;
 
 
        mt76x02_add_rate_power_offset(t, info);
        mt76x02_limit_rate_power(t, dev->txpower_conf);
-       dev->mt76.txpower_cur = mt76x02_get_max_rate_power(t);
+       dev->mphy.txpower_cur = mt76x02_get_max_rate_power(t);
        mt76x02_add_rate_power_offset(t, -info);
 
        dev->target_power = info;
 
                dev->mphy.sband_5g.sband.ht_cap.cap |=
                                IEEE80211_HT_CAP_LDPC_CODING;
                dev->chainmask = 0x202;
-               dev->mt76.antenna_mask = 3;
+               dev->mphy.antenna_mask = 3;
        } else {
                dev->chainmask = 0x101;
-               dev->mt76.antenna_mask = 1;
+               dev->mphy.antenna_mask = 1;
        }
 }
 EXPORT_SYMBOL_GPL(mt76x02_init_device);
 
        mutex_lock(&dev->mt76.mutex);
 
        dev->chainmask = (tx_ant == 3) ? 0x202 : 0x101;
-       dev->mt76.antenna_mask = tx_ant;
+       dev->mphy.antenna_mask = tx_ant;
 
        mt76_set_stream_caps(&dev->mt76, true);
        mt76x2_phy_set_antenna(dev);
 
 
        val = mt76_rr(dev, MT_BBP(AGC, 0));
        val &= ~(BIT(4) | BIT(1));
-       switch (dev->mt76.antenna_mask) {
+       switch (dev->mphy.antenna_mask) {
        case 1:
                /* disable mac DAC control */
                mt76_clear(dev, MT_BBP(IBI, 9), BIT(11));
 
        mt76x2_get_rate_power(dev, &t, chan);
        mt76x02_add_rate_power_offset(&t, txp.target_power + delta);
        mt76x02_limit_rate_power(&t, dev->txpower_conf);
-       dev->mt76.txpower_cur = mt76x02_get_max_rate_power(&t);
+       dev->mphy.txpower_cur = mt76x02_get_max_rate_power(&t);
 
        base_power = mt76x2_get_min_rate_power(&t);
        delta = base_power - txp.target_power;