diff options
| author | Bjoern A. Zeeb <bz@FreeBSD.org> | 2025-04-21 22:45:06 +0000 |
|---|---|---|
| committer | Bjoern A. Zeeb <bz@FreeBSD.org> | 2025-04-21 22:45:06 +0000 |
| commit | fbdea4ebdf0f084ae3cc90e2e2650c4ead99e033 (patch) | |
| tree | 0d41e02ec4aaf492c42c324e2f11d9c4bbe098ac /mt76x02_usb_core.c | |
| parent | 2911a07e56028e421cc9c561bb92ff535f139bca (diff) | |
mt76: update Mediatek's mt76 drivervendor/Linux/mt76/torvalds-v6.14
This version is based on
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
38fec10eb60d687e30c8c6b5420d86e8149f7557 ( tag: v6.14 ).
Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'mt76x02_usb_core.c')
| -rw-r--r-- | mt76x02_usb_core.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/mt76x02_usb_core.c b/mt76x02_usb_core.c index 2c6c03809b20..0e1ede9314d8 100644 --- a/mt76x02_usb_core.c +++ b/mt76x02_usb_core.c @@ -67,7 +67,7 @@ int mt76x02u_tx_prepare_skb(struct mt76_dev *mdev, void *data, struct mt76_tx_info *tx_info) { struct mt76x02_dev *dev = container_of(mdev, struct mt76x02_dev, mt76); - int pid, len = tx_info->skb->len, ep = q2ep(dev->mphy.q_tx[qid]->hw_idx); + int pid, len = tx_info->skb->len, ep = dev->mphy.q_tx[qid]->ep; struct mt76x02_txwi *txwi; bool ampdu = IEEE80211_SKB_CB(tx_info->skb)->flags & IEEE80211_TX_CTL_AMPDU; enum mt76_qsel qsel; @@ -182,15 +182,16 @@ static void mt76x02u_pre_tbtt_work(struct work_struct *work) { struct mt76x02_dev *dev = container_of(work, struct mt76x02_dev, pre_tbtt_work); - struct beacon_bc_data data = {}; + struct beacon_bc_data data = { + .dev = dev, + }; struct sk_buff *skb; int nbeacons; - if (!dev->mt76.beacon_mask) + if (!dev->mt76.beacon_mask || dev->mphy.offchannel) return; - if (mt76_hw(dev)->conf.flags & IEEE80211_CONF_OFFCHANNEL) - return; + __skb_queue_head_init(&data.q); mt76x02_resync_beacon_timer(dev); @@ -198,9 +199,12 @@ static void mt76x02u_pre_tbtt_work(struct work_struct *work) mt76_set(dev, MT_BCN_BYPASS_MASK, 0xffff); dev->beacon_data_count = 0; - ieee80211_iterate_active_interfaces(mt76_hw(dev), + ieee80211_iterate_active_interfaces_atomic(mt76_hw(dev), IEEE80211_IFACE_ITER_RESUME_ALL, - mt76x02_update_beacon_iter, dev); + mt76x02_update_beacon_iter, &data); + + while ((skb = __skb_dequeue(&data.q)) != NULL) + mt76x02_mac_set_beacon(dev, skb); mt76_csa_check(&dev->mt76); |
