aboutsummaryrefslogtreecommitdiff
path: root/mt76x02_usb_core.c
diff options
context:
space:
mode:
authorBjoern A. Zeeb <bz@FreeBSD.org>2025-04-21 22:45:06 +0000
committerBjoern A. Zeeb <bz@FreeBSD.org>2025-04-21 22:45:06 +0000
commitfbdea4ebdf0f084ae3cc90e2e2650c4ead99e033 (patch)
tree0d41e02ec4aaf492c42c324e2f11d9c4bbe098ac /mt76x02_usb_core.c
parent2911a07e56028e421cc9c561bb92ff535f139bca (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.c18
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);