}
 
 static int
-mt76_dma_tx_queue_skb(struct mt76_dev *dev, struct mt76_queue *q,
+mt76_dma_tx_queue_skb(struct mt76_phy *phy, struct mt76_queue *q,
                      enum mt76_txq_id qid, struct sk_buff *skb,
                      struct mt76_wcid *wcid, struct ieee80211_sta *sta)
 {
        struct mt76_tx_info tx_info = {
                .skb = skb,
        };
+       struct mt76_dev *dev = phy->dev;
        struct ieee80211_hw *hw;
        int len, n = 0, ret = -ENOMEM;
        struct mt76_txwi_cache *t;
        dma_addr_t addr;
        u8 *txwi;
 
-       if (test_bit(MT76_RESET, &dev->phy.state))
+       if (test_bit(MT76_RESET, &phy->state))
                goto free_skb;
 
        t = mt76_get_txwi(dev);
 
                     int idx, int n_desc, int bufsize,
                     u32 ring_base);
 
-       int (*tx_queue_skb)(struct mt76_dev *dev, struct mt76_queue *q,
+       int (*tx_queue_skb)(struct mt76_phy *phy, struct mt76_queue *q,
                            enum mt76_txq_id qid, struct sk_buff *skb,
                            struct mt76_wcid *wcid, struct ieee80211_sta *sta);
 
 #define mt76_init_queues(dev, ...)             (dev)->mt76.queue_ops->init(&((dev)->mt76), __VA_ARGS__)
 #define mt76_queue_alloc(dev, ...)     (dev)->mt76.queue_ops->alloc(&((dev)->mt76), __VA_ARGS__)
 #define mt76_tx_queue_skb_raw(dev, ...)        (dev)->mt76.queue_ops->tx_queue_skb_raw(&((dev)->mt76), __VA_ARGS__)
-#define mt76_tx_queue_skb(dev, ...)    (dev)->mt76.queue_ops->tx_queue_skb(&((dev)->mt76), __VA_ARGS__)
+#define mt76_tx_queue_skb(dev, ...)    (dev)->mt76.queue_ops->tx_queue_skb(&((dev)->mphy), __VA_ARGS__)
 #define mt76_queue_rx_reset(dev, ...)  (dev)->mt76.queue_ops->rx_reset(&((dev)->mt76), __VA_ARGS__)
 #define mt76_queue_tx_cleanup(dev, ...)        (dev)->mt76.queue_ops->tx_cleanup(&((dev)->mt76), __VA_ARGS__)
 #define mt76_queue_rx_cleanup(dev, ...)        (dev)->mt76.queue_ops->rx_cleanup(&((dev)->mt76), __VA_ARGS__)
 
 }
 
 static int
-mt76s_tx_queue_skb(struct mt76_dev *dev, struct mt76_queue *q,
+mt76s_tx_queue_skb(struct mt76_phy *phy, struct mt76_queue *q,
                   enum mt76_txq_id qid, struct sk_buff *skb,
                   struct mt76_wcid *wcid, struct ieee80211_sta *sta)
 {
        struct mt76_tx_info tx_info = {
                .skb = skb,
        };
+       struct mt76_dev *dev = phy->dev;
        int err, len = skb->len;
        u16 idx = q->head;
 
 
               q->queued < q->ndesc / 2) {
                int ret;
 
-               ret = dev->queue_ops->tx_queue_skb(dev, q, qid, skb_get(skb),
+               ret = dev->queue_ops->tx_queue_skb(phy, q, qid, skb_get(skb),
                                                   wcid, NULL);
                if (ret < 0)
                        break;
 
        int idx;
 
        non_aql = !info->tx_time_est;
-       idx = dev->queue_ops->tx_queue_skb(dev, q, qid, skb, wcid, sta);
+       idx = dev->queue_ops->tx_queue_skb(phy, q, qid, skb, wcid, sta);
        if (idx < 0 || !sta)
                return idx;
 
 
 }
 
 static int
-mt76u_tx_queue_skb(struct mt76_dev *dev, struct mt76_queue *q,
+mt76u_tx_queue_skb(struct mt76_phy *phy, struct mt76_queue *q,
                   enum mt76_txq_id qid, struct sk_buff *skb,
                   struct mt76_wcid *wcid, struct ieee80211_sta *sta)
 {
        struct mt76_tx_info tx_info = {
                .skb = skb,
        };
+       struct mt76_dev *dev = phy->dev;
        u16 idx = q->head;
        int err;