@@ -843,6 +843,8 @@ void mt7921_mac_write_txwi(struct mt7921_dev *dev, __le32 *txwi,
843843 struct ieee80211_vif * vif = info -> control .vif ;
844844 struct mt76_phy * mphy = & dev -> mphy ;
845845 u8 p_fmt , q_idx , omac_idx = 0 , wmm_idx = 0 ;
846+ bool is_mmio = mt76_is_mmio (& dev -> mt76 );
847+ u32 sz_txd = is_mmio ? MT_TXD_SIZE : MT_SDIO_TXD_SIZE ;
846848 bool is_8023 = info -> flags & IEEE80211_TX_CTL_HW_80211_ENCAP ;
847849 u16 tx_count = 15 ;
848850 u32 val ;
@@ -858,15 +860,15 @@ void mt7921_mac_write_txwi(struct mt7921_dev *dev, __le32 *txwi,
858860 p_fmt = MT_TX_TYPE_FW ;
859861 q_idx = MT_LMAC_BCN0 ;
860862 } else if (skb_get_queue_mapping (skb ) >= MT_TXQ_PSD ) {
861- p_fmt = MT_TX_TYPE_CT ;
863+ p_fmt = is_mmio ? MT_TX_TYPE_CT : MT_TX_TYPE_SF ;
862864 q_idx = MT_LMAC_ALTX0 ;
863865 } else {
864- p_fmt = MT_TX_TYPE_CT ;
866+ p_fmt = is_mmio ? MT_TX_TYPE_CT : MT_TX_TYPE_SF ;
865867 q_idx = wmm_idx * MT7921_MAX_WMM_SETS +
866868 mt7921_lmac_mapping (dev , skb_get_queue_mapping (skb ));
867869 }
868870
869- val = FIELD_PREP (MT_TXD0_TX_BYTES , skb -> len + MT_TXD_SIZE ) |
871+ val = FIELD_PREP (MT_TXD0_TX_BYTES , skb -> len + sz_txd ) |
870872 FIELD_PREP (MT_TXD0_PKT_FMT , p_fmt ) |
871873 FIELD_PREP (MT_TXD0_Q_IDX , q_idx );
872874 txwi [0 ] = cpu_to_le32 (val );
@@ -1384,12 +1386,18 @@ void mt7921_pm_wake_work(struct work_struct *work)
13841386 mphy = dev -> phy .mt76 ;
13851387
13861388 if (!mt7921_mcu_drv_pmctrl (dev )) {
1389+ struct mt76_dev * mdev = & dev -> mt76 ;
13871390 int i ;
13881391
1389- mt76_for_each_q_rx (& dev -> mt76 , i )
1390- napi_schedule (& dev -> mt76 .napi [i ]);
1391- mt76_connac_pm_dequeue_skbs (mphy , & dev -> pm );
1392- mt7921_mcu_tx_cleanup (dev );
1392+ if (mt76_is_sdio (mdev )) {
1393+ mt76_connac_pm_dequeue_skbs (mphy , & dev -> pm );
1394+ mt76_worker_schedule (& mdev -> sdio .txrx_worker );
1395+ } else {
1396+ mt76_for_each_q_rx (mdev , i )
1397+ napi_schedule (& mdev -> napi [i ]);
1398+ mt76_connac_pm_dequeue_skbs (mphy , & dev -> pm );
1399+ mt7921_mcu_tx_cleanup (dev );
1400+ }
13931401 if (test_bit (MT76_STATE_RUNNING , & mphy -> state ))
13941402 ieee80211_queue_delayed_work (mphy -> hw , & mphy -> mac_work ,
13951403 MT7921_WATCHDOG_TIME );
0 commit comments