Lines Matching refs:dev

6 	struct mt7603_dev *dev;  member
13 mt7603_mac_stuck_beacon_recovery(struct mt7603_dev *dev) in mt7603_mac_stuck_beacon_recovery() argument
15 if (dev->beacon_check % 5 != 4) in mt7603_mac_stuck_beacon_recovery()
18 mt76_clear(dev, MT_WPDMA_GLO_CFG, MT_WPDMA_GLO_CFG_TX_DMA_EN); in mt7603_mac_stuck_beacon_recovery()
19 mt76_set(dev, MT_SCH_4, MT_SCH_4_RESET); in mt7603_mac_stuck_beacon_recovery()
20 mt76_clear(dev, MT_SCH_4, MT_SCH_4_RESET); in mt7603_mac_stuck_beacon_recovery()
21 mt76_set(dev, MT_WPDMA_GLO_CFG, MT_WPDMA_GLO_CFG_TX_DMA_EN); in mt7603_mac_stuck_beacon_recovery()
23 mt76_set(dev, MT_WF_CFG_OFF_WOCCR, MT_WF_CFG_OFF_WOCCR_TMAC_GC_DIS); in mt7603_mac_stuck_beacon_recovery()
24 mt76_set(dev, MT_ARB_SCR, MT_ARB_SCR_TX_DISABLE); in mt7603_mac_stuck_beacon_recovery()
25 mt76_clear(dev, MT_ARB_SCR, MT_ARB_SCR_TX_DISABLE); in mt7603_mac_stuck_beacon_recovery()
26 mt76_clear(dev, MT_WF_CFG_OFF_WOCCR, MT_WF_CFG_OFF_WOCCR_TMAC_GC_DIS); in mt7603_mac_stuck_beacon_recovery()
32 struct mt7603_dev *dev = (struct mt7603_dev *)priv; in mt7603_update_beacon_iter() local
33 struct mt76_dev *mdev = &dev->mt76; in mt7603_update_beacon_iter()
42 skb = ieee80211_beacon_get(mt76_hw(dev), vif, 0); in mt7603_update_beacon_iter()
53 spin_lock_bh(&dev->ps_lock); in mt7603_update_beacon_iter()
55 mt76_wr(dev, MT_DMA_FQCR0, val | in mt7603_update_beacon_iter()
57 if (!mt76_poll(dev, MT_DMA_FQCR0, MT_DMA_FQCR0_BUSY, 0, 5000)) { in mt7603_update_beacon_iter()
58 dev->beacon_check = MT7603_WATCHDOG_TIMEOUT; in mt7603_update_beacon_iter()
62 mt76_wr(dev, MT_DMA_FQCR0, val | in mt7603_update_beacon_iter()
64 if (!mt76_poll(dev, MT_DMA_FQCR0, MT_DMA_FQCR0_BUSY, 0, 5000)) { in mt7603_update_beacon_iter()
65 dev->beacon_check = MT7603_WATCHDOG_TIMEOUT; in mt7603_update_beacon_iter()
69 mt76_tx_queue_skb(dev, dev->mphy.q_tx[MT_TXQ_BEACON], in mt7603_update_beacon_iter()
73 spin_unlock_bh(&dev->ps_lock); in mt7603_update_beacon_iter()
80 struct mt7603_dev *dev = data->dev; in mt7603_add_buffered_bc() local
85 if (!(dev->mt76.beacon_mask & BIT(mvif->idx))) in mt7603_add_buffered_bc()
88 skb = ieee80211_get_buffered_bc(mt76_hw(dev), vif); in mt7603_add_buffered_bc()
103 struct mt7603_dev *dev = from_tasklet(dev, t, mt76.pre_tbtt_tasklet); in mt7603_pre_tbtt_tasklet() local
104 struct mt76_dev *mdev = &dev->mt76; in mt7603_pre_tbtt_tasklet()
110 if (mt76_hw(dev)->conf.flags & IEEE80211_CONF_OFFCHANNEL) in mt7603_pre_tbtt_tasklet()
113 data.dev = dev; in mt7603_pre_tbtt_tasklet()
117 mt76_wr(dev, MT_WF_ARB_CAB_FLUSH, GENMASK(30, 16) | BIT(0)); in mt7603_pre_tbtt_tasklet()
119 mt76_queue_tx_cleanup(dev, dev->mphy.q_tx[MT_TXQ_CAB], false); in mt7603_pre_tbtt_tasklet()
120 mt76_queue_tx_cleanup(dev, dev->mphy.q_tx[MT_TXQ_BEACON], false); in mt7603_pre_tbtt_tasklet()
122 if (dev->mphy.q_tx[MT_TXQ_BEACON]->queued > 0) in mt7603_pre_tbtt_tasklet()
123 dev->beacon_check++; in mt7603_pre_tbtt_tasklet()
125 dev->beacon_check = 0; in mt7603_pre_tbtt_tasklet()
126 mt7603_mac_stuck_beacon_recovery(dev); in mt7603_pre_tbtt_tasklet()
128 q = dev->mphy.q_tx[MT_TXQ_BEACON]; in mt7603_pre_tbtt_tasklet()
130 ieee80211_iterate_active_interfaces_atomic(mt76_hw(dev), in mt7603_pre_tbtt_tasklet()
132 mt7603_update_beacon_iter, dev); in mt7603_pre_tbtt_tasklet()
133 mt76_queue_kick(dev, q); in mt7603_pre_tbtt_tasklet()
140 q = dev->mphy.q_tx[MT_TXQ_CAB]; in mt7603_pre_tbtt_tasklet()
143 ieee80211_iterate_active_interfaces_atomic(mt76_hw(dev), in mt7603_pre_tbtt_tasklet()
165 mt76_tx_queue_skb(dev, q, MT_TXQ_CAB, skb, &mvif->sta.wcid, NULL); in mt7603_pre_tbtt_tasklet()
167 mt76_queue_kick(dev, q); in mt7603_pre_tbtt_tasklet()
171 mt76_wr(dev, MT_WF_ARB_CAB_COUNT_B0_REG(i), in mt7603_pre_tbtt_tasklet()
174 mt76_wr(dev, MT_WF_ARB_CAB_START, in mt7603_pre_tbtt_tasklet()
180 void mt7603_beacon_set_timer(struct mt7603_dev *dev, int idx, int intval) in mt7603_beacon_set_timer() argument
186 dev->mt76.beacon_mask |= BIT(idx); in mt7603_beacon_set_timer()
188 dev->mt76.beacon_mask &= ~BIT(idx); in mt7603_beacon_set_timer()
191 if (!dev->mt76.beacon_mask || (!intval && idx < 0)) { in mt7603_beacon_set_timer()
192 mt7603_irq_disable(dev, MT_INT_MAC_IRQ3); in mt7603_beacon_set_timer()
193 mt76_clear(dev, MT_ARB_SCR, MT_ARB_SCR_BCNQ_OPMODE_MASK); in mt7603_beacon_set_timer()
194 mt76_wr(dev, MT_HW_INT_MASK(3), 0); in mt7603_beacon_set_timer()
199 dev->mt76.beacon_int = intval; in mt7603_beacon_set_timer()
200 mt76_wr(dev, MT_TBTT, in mt7603_beacon_set_timer()
203 mt76_wr(dev, MT_TBTT_TIMER_CFG, 0x99); /* start timer */ in mt7603_beacon_set_timer()
205 mt76_rmw_field(dev, MT_ARB_SCR, MT_ARB_SCR_BCNQ_OPMODE_MASK, in mt7603_beacon_set_timer()
207 mt76_clear(dev, MT_ARB_SCR, MT_ARB_SCR_TBTT_BCN_PRIO); in mt7603_beacon_set_timer()
208 mt76_set(dev, MT_ARB_SCR, MT_ARB_SCR_TBTT_BCAST_PRIO); in mt7603_beacon_set_timer()
210 mt76_wr(dev, MT_PRE_TBTT, pre_tbtt); in mt7603_beacon_set_timer()
212 mt76_set(dev, MT_HW_INT_MASK(3), in mt7603_beacon_set_timer()
215 mt76_set(dev, MT_WF_ARB_BCN_START, in mt7603_beacon_set_timer()
217 ((dev->mt76.beacon_mask >> 1) * in mt7603_beacon_set_timer()
219 mt7603_irq_enable(dev, MT_INT_MAC_IRQ3); in mt7603_beacon_set_timer()
221 if (dev->mt76.beacon_mask & ~BIT(0)) in mt7603_beacon_set_timer()
222 mt76_set(dev, MT_LPON_SBTOR(0), MT_LPON_SBTOR_SUB_BSS_EN); in mt7603_beacon_set_timer()
224 mt76_clear(dev, MT_LPON_SBTOR(0), MT_LPON_SBTOR_SUB_BSS_EN); in mt7603_beacon_set_timer()