This patch series adds channel switch support for mt76 usb interfaces. When testing, I noticed that between 5 or 7 consecutive beacons had the identical channel switch count set. After some debugging I found out, that beacon copying over usb took far too long (up to 700ms for one call of mt76x02u_pre_tbtt_work). Therefore the first four patches speed up beacon copying and the last patch enables channel switch support also for usb interfaces. v6: * use min_t in mt76u_copy * use round_up in mt76u_copy * use additional copy for mmio beacon set again v5 (thanks to Stanislaw): * ommit empty mt76x2u_channel_switch_beacon * copy txwi into beacon skb v4: * use multiple of 4 len for usb copy again v3: * fixed checkpatch errors v2 (thanks for the comments Lorenzo): * correctly track beacon data mask * clean-ups * make channel switch fn static (reported by kbuild test robot) Markus Theil (5): mt76: mt76x02: ommit beacon slot clearing mt76: mt76x02: split beaconing mt76: mt76x02: remove a copy call for usb speedup mt76: speed up usb bulk copy mt76: mt76x02: add channel switch support for usb interfaces drivers/net/wireless/mediatek/mt76/mt76.h | 2 +- .../wireless/mediatek/mt76/mt76x02_beacon.c | 72 ++++++++----------- .../net/wireless/mediatek/mt76/mt76x02_mac.h | 1 + .../net/wireless/mediatek/mt76/mt76x02_mmio.c | 5 ++ .../wireless/mediatek/mt76/mt76x02_usb_core.c | 12 ++++ .../net/wireless/mediatek/mt76/mt76x02_util.c | 2 +- drivers/net/wireless/mediatek/mt76/usb.c | 24 +++++-- 7 files changed, 69 insertions(+), 49 deletions(-) -- 2.24.0