#
2e420b88 |
|
19-Oct-2023 |
Lorenzo Bianconi <lorenzo@kernel.org> |
wifi: mt76: introduce wed pointer in mt76_queue Introduce mtk_wed_device pointer in mt76_queue structure in order to configure WED chip. Get rid of dev parameter in Q_READ and Q_WRITE macros. Introduce wed parameter to the following routine signatures: - mt76_init_queue - mt76_init_tx_queue This is a preliminary patch to introduce WED support for mt7996 since mt7996 runs two separate WED chips. Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
debd133a |
|
28-Aug-2023 |
Johannes Berg <johannes.berg@intel.com> |
wifi: mt76: use atomic iface iteration for pre-TBTT work In addition to the previous series I posted, over time I'd also like to get rid of the iflist_mtx in mac80211. That isn't easy now since lots of places use iteration and would have to be audited, but even a cursory look suggests that mt76 might be more problematic than most since holding the wiphy lock for the latency-sensitive pre-TBTT work could be an issue. Convert the pre-TBTT work to use atomic iteration and then sending the device commands outside of it. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
d08295f5 |
|
03-Jul-2022 |
Felix Fietkau <nbd@nbd.name> |
mt76: pass original queue id from __mt76_tx_queue_skb to the driver MT7615 and newer map multiple software tx queues to the hardware id Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
f68d6762 |
|
06-Dec-2021 |
Felix Fietkau <nbd@nbd.name> |
mt76: mt7915: add Wireless Ethernet Dispatch support This is used to support hardware flow offloading from Ethernet to WLAN Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
3ed27b60 |
|
04-May-2022 |
Jakub Kicinski <kuba@kernel.org> |
mt76: switch to netif_napi_add_tx() Switch to the new API not requiring passing in NAPI_POLL_WEIGHT. Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/20220504163316.549648-3-kuba@kernel.org
|
#
c007ef8c |
|
31-Jan-2022 |
Felix Fietkau <nbd@nbd.name> |
mt76: mt76x02: improve tx hang detection Instead of checking if any queue has not made progress since the last run, only trigger hang detection if one of the queues has not made any progress in 10 subsequent runs. This should reduce false positive firmware restarts Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
c02f86ee |
|
13-Sep-2021 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: remove mt76_wcid pointer from mt76_tx_status_check signature Remove mt76_wcid pointer from mt76_tx_status_check signature since it is always set to NULL Tested-by: mrkiko.rs@gmail.com Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
b5cdb4f9 |
|
09-Sep-2021 |
Xingbang Liu <liu.airalert@gmail.com> |
mt76: move spin_lock_bh to spin_lock in tasklet as you are already in a tasklet, it is unnecessary to call spin_lock_bh. Signed-off-by: Xingbang Liu <liu.airalert@gmail.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
970be1df |
|
24-Sep-2021 |
Felix Fietkau <nbd@nbd.name> |
mt76: disable BH around napi_schedule() calls napi_schedule() can call __raise_softirq_irqoff(), which can perform softirq handling, so it must not be called in a pure process context with BH enabled. Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
cb8ed33d |
|
18-Apr-2021 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: dma: add the capability to define a custom rx napi poll routine Add the capability to define a custom rx napi callback for each driver. This is a preliminary patch to properly support runtime-pm on rx side Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
6929d1d7 |
|
13-Apr-2021 |
Felix Fietkau <nbd@nbd.name> |
mt76: flush tx status queue on DMA reset After DMA reset, tx status information for queued frames will never arrive. Flush the queue to free skbs immediately instead of waiting for a timeout Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
aa40528a |
|
26-Jul-2020 |
Felix Fietkau <nbd@nbd.name> |
mt76: use threaded NAPI With threaded NAPI, the rx handler function is no longer bound to the CPU that fired the interrupt, which significantly helps to spread the workload over multiple CPUs, especially when multiple devices are using threaded NAPI at the same time. Exclude the tx handler from threaded NAPI by using a separate dummy netdev. The work is small and short-lived enough that it makes more sense to run it in softirq instead of creating a dedicated thread Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
2ab33b8d |
|
20-Jan-2021 |
Felix Fietkau <nbd@nbd.name> |
mt76: move vif_mask back from mt76_phy to mt76_dev Since it is global for all drivers, it belongs to the main device Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
91990519 |
|
11-Nov-2020 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: move tx hw data queues in mt76_phy Move hw data queues in mt76_phy from mt76_dev since mt7915 supports per phy hw queues in dbdc mode Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
e637763b |
|
11-Nov-2020 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: move mcu queues to mt76_dev q_mcu array Move mcu queue to a dedicated array q_mcu in mt76_dev structure. This is a preliminary patch to move data queues in mt76_phy and properly support dbdc Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
b1cb42ad |
|
11-Nov-2020 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: introduce mt76_init_mcu_queue utility routine Introduce mt76_init_mcu_queue utility routine in order to allocate dedicate q_mcu pointers for mcu hw queues. This is a preliminary patch to move data queues in mt76_phy and add dbdc support to mt7915 driver Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
89870594 |
|
11-Nov-2020 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: rely on mt76_queue in tx_queue_skb signature Rely on mt76_queue instead of qid in tx_queue_skb signature. This is a preliminary patch to move data queues in mt76_phy and add dbdc support to mt7915 driver Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
e5655492 |
|
11-Nov-2020 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: dma: rely on mt76_queue in mt76_dma_tx_cleanup signature This is a preliminary patch to move data queues in mt76_phy and properly support dbdc Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
b671da33 |
|
11-Nov-2020 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: move mt76_init_tx_queue in common code Move mt76_init_tx_queue in mac80211.c since it is shared by all drivers. Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
5ee3e780 |
|
07-Oct-2020 |
Allen Pais <apais@linux.microsoft.com> |
wireless: mt76: convert tasklets to use new tasklet_setup() API In preparation for unconditionally passing the struct tasklet_struct pointer to all tasklet callbacks, switch to using the new tasklet_setup() and from_tasklet() to pass the tasklet pointer explicitly. Signed-off-by: Romain Perier <romain.perier@gmail.com> Signed-off-by: Allen Pais <apais@linux.microsoft.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
781eef5b |
|
24-Jul-2020 |
Felix Fietkau <nbd@nbd.name> |
mt76: convert from tx tasklet to tx worker thread This improves performance by allowing the scheduler to move the tx scheduling work to idle CPUs. Since tx scheduling work is very latency sensitive and kept short via AQL, sched_set_fifo_low is used to keep worker priority above normal tasks Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
9e47a683 |
|
24-Aug-2020 |
Felix Fietkau <nbd@nbd.name> |
mt76: mt76x02: tune tx ring size Increase data queue size to improve performance. Reduce PS/mgmt queue size Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
f099c2e5 |
|
23-Aug-2020 |
Felix Fietkau <nbd@nbd.name> |
mt76: remove struct mt76_sw_queue All members except for the struct mt76_queue pointer have been removed Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
513d6acb |
|
23-Aug-2020 |
Felix Fietkau <nbd@nbd.name> |
mt76: remove swq from struct mt76_sw_queue Since txq selection was moved to mac80211, it is no longer used Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
2c270b0e |
|
07-Aug-2020 |
Felix Fietkau <nbd@nbd.name> |
mt76: mt76x02: clean up and fix interrupt masking in the irq handler Only clear unmasked interrupts. If an interrupt is temporarily masked, its pending events need to be processed later, even if another interrupt happened in the mean time. Disable interrupts in one call before scheduling Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
beffe070 |
|
11-Jun-2020 |
Felix Fietkau <nbd@nbd.name> |
mt76: vif_mask to struct mt76_phy All drivers use this in pretty much the same way. Moving it to core helps with some checks for the upcoming testmode support Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
4ac668a3 |
|
15-Jun-2020 |
Felix Fietkau <nbd@nbd.name> |
mt76: mt76x02: do not access uninitialized NAPI structs Fixes a crash on MMIO devices when running into the watchdog reset Fixes: d3377b78cec6 ("mt76: add HE phy modes and hardware queue") Signed-off-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Link: https://lore.kernel.org/r/20200615181341.81871-1-nbd@nbd.name
|
#
f473b42a |
|
24-May-2020 |
Felix Fietkau <nbd@nbd.name> |
mt76: only iterate over initialized rx queues Fixes the following reported crash: [ 2.361127] BUG: spinlock bad magic on CPU#0, modprobe/456 [ 2.361583] lock: 0xffffa1287525b3b8, .magic: 00000000, .owner: <none>/-1, .owner_cpu: 0 [ 2.362250] CPU: 0 PID: 456 Comm: modprobe Not tainted 4.14.177 #5 [ 2.362751] Hardware name: HP Meep/Meep, BIOS Google_Meep.11297.75.0 06/17/2019 [ 2.363343] Call Trace: [ 2.363552] dump_stack+0x97/0xdb [ 2.363826] ? spin_bug+0xa6/0xb3 [ 2.364096] do_raw_spin_lock+0x6a/0x9a [ 2.364417] mt76_dma_rx_fill+0x44/0x1de [mt76] [ 2.364787] ? mt76_dma_kick_queue+0x18/0x18 [mt76] [ 2.365184] mt76_dma_init+0x53/0x85 [mt76] [ 2.365532] mt7615_dma_init+0x3d7/0x546 [mt7615e] [ 2.365928] mt7615_register_device+0xe6/0x1a0 [mt7615e] [ 2.366364] mt7615_mmio_probe+0x14b/0x171 [mt7615e] [ 2.366771] mt7615_pci_probe+0x118/0x13b [mt7615e] [ 2.367169] pci_device_probe+0xaf/0x13d [ 2.367491] driver_probe_device+0x284/0x2ca [ 2.367840] __driver_attach+0x7a/0x9e [ 2.368146] ? driver_attach+0x1f/0x1f [ 2.368451] bus_for_each_dev+0xa0/0xdb [ 2.368765] bus_add_driver+0x132/0x204 [ 2.369078] driver_register+0x8e/0xcd [ 2.369384] do_one_initcall+0x160/0x257 [ 2.369706] ? 0xffffffffc0240000 [ 2.369980] do_init_module+0x60/0x1bb [ 2.370286] load_module+0x18c2/0x1a2b [ 2.370596] ? kernel_read_file+0x141/0x1b9 [ 2.370937] ? kernel_read_file_from_fd+0x46/0x71 [ 2.371320] SyS_finit_module+0xcc/0xf0 [ 2.371636] do_syscall_64+0x6b/0xf7 [ 2.371930] entry_SYSCALL_64_after_hwframe+0x3d/0xa2 [ 2.372344] RIP: 0033:0x7da218ae4199 [ 2.372637] RSP: 002b:00007fffd0608398 EFLAGS: 00000246 ORIG_RAX: 0000000000000139 [ 2.373252] RAX: ffffffffffffffda RBX: 00005a705449df90 RCX: 00007da218ae4199 [ 2.373833] RDX: 0000000000000000 RSI: 00005a7052e73bd8 RDI: 0000000000000006 [ 2.374411] RBP: 00007fffd06083e0 R08: 0000000000000000 R09: 00005a705449d540 [ 2.374989] R10: 0000000000000006 R11: 0000000000000246 R12: 0000000000000000 [ 2.375569] R13: 00005a705449def0 R14: 00005a7052e73bd8 R15: 0000000000000000 Reported-by: Sean Wang <sean.wang@mediatek.com> Fixes: d3377b78cec6 ("mt76: add HE phy modes and hardware queue") Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
238f5d6f |
|
20-May-2020 |
Felix Fietkau <nbd@nbd.name> |
mt76: fix per-driver wcid range checks after wcid array size bump All drivers before MT7915 have a limit of 128 WCID entries. Stop relying on ARRAY_SIZE(dev->mt76.wcid), since it no longer reflects that limit. Fixes: 49e649c3e0a6 ("mt76: adjust wcid size to support new 802.11ax generation") Reported-by: kbuild test robot <lkp@intel.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
fd6c2dfa |
|
16-Feb-2020 |
Felix Fietkau <nbd@nbd.name> |
mt76: mt76x02: fix handling MCU timeouts during hw restart If a MCU timeout occurs before a hw restart completes, another hw restart is scheduled, and the station state gets corrupted. To speed up dealing with that, do not issue any MCU commands after the first timeout, and defer handling timeouts until the reset has completed. Also ignore errors in MCU commands during start/config to avoid making user space fail on this condition. If it happens, another restart is scheduled quickly, and that usually recovers the hardware properly. Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
e58f6e06 |
|
10-Mar-2020 |
Felix Fietkau <nbd@nbd.name> |
mt76: mt76x02: reset MCU timeout counter earlier in watchdog reset Ensure that MCU commands issued right after hardware reset are not dropped and treated as failed. Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
09872957 |
|
08-Feb-2020 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: Introduce mt76_mcu data structure Introduce mt76_mcu data structure to contain common fields between mt76u_mcu and mt76e_mcu. Initialize mcu common fields in mt76_alloc_device(). Rely on mt76_mcu in mt76_mcu_rx_event and in mt76_mcu_get_response in order to reuse them in usb code Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
43ba1922 |
|
06-Feb-2020 |
Felix Fietkau <nbd@nbd.name> |
mt76: avoid extra RCU synchronization on station removal Use sta_pre_rcu_remove callback to clear wcid pointer earlier Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
a3f657ec |
|
29-Dec-2019 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: move dev_irq tracepoint in mt76 module Move dev_irq tracepoint in common code in order to be reused by mt7603 and mt7615 drivers Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
f27469a9 |
|
18-Dec-2019 |
Markus Theil <markus.theil@tu-ilmenau.de> |
mt76: mt76x02: split beaconing Sending beacons to the hardware always happens in batches. In order to speed up beacon processing on usb devices, this patch splits out common code an calls it only once. Beacons are sequentially written into the beacon memory area, by tracking its usage with the dev->beacon_data_count. For MBSS support and buffered traffic dev->beacon_data_count is used to create the bypass mask. The code is also adapted for the mmio part of the driver, but should not have any performance implication there. MBSS tests were performed with AVM AC860 USB NIC with temporary support for 5 BSS'. Different combinations of active vifs were created and brought up. Afterwards connection and data transfer was tested for the announced BSS'. Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
011849e0 |
|
15-Oct-2019 |
Felix Fietkau <nbd@nbd.name> |
mt76: move state from struct mt76_dev to mt76_phy Allows keeping per-wiphy state separate Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
5a95ca41 |
|
14-Oct-2019 |
Felix Fietkau <nbd@nbd.name> |
mt76: keep a set of software tx queues per phy Allows tracking tx scheduling separately per phy Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
9fba6d07 |
|
11-Oct-2019 |
Felix Fietkau <nbd@nbd.name> |
mt76: add support for an extra wiphy in the main tx path This is preparation for supporting multiple wiphys per device to support the concurrent dual-band feature of MT7615D Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
ad571c93 |
|
12-Sep-2019 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: mt76x2: move mt76x02_mac_reset_counters in mt76x02_mac_start Move mt76x02_mac_reset_counters in mt76x02_mac_start and get rid of mt76x2_mac_start since it is just a wrapper for mt76x02_mac_start Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
0e3d6777 |
|
24-Jul-2019 |
Ryder Lee <ryder.lee@mediatek.com> |
mt76: switch to SPDX tag instead of verbose boilerplate text No functional change intended. Add SPDX identifiers to all remaining files in /mt76. Signed-off-by: Ryder Lee <ryder.lee@mediatek.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
ff97c52a |
|
24-Jul-2019 |
Ryder Lee <ryder.lee@mediatek.com> |
mt76: mt76x02: fix some checkpatch warnings This fixes the following checkpatch warnings: ERROR: code indent should use tabs where possible CHECK: Alignment should match open parenthesis CHECK: No space is necessary after a cast CHECK: Please don't use multiple blank lines CHECK: Avoid precedence issues in macro WARNING: Statements should start on a tabstop WARNING: Unnecessary space before function pointer arguments Signed-off-by: Ryder Lee <ryder.lee@mediatek.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
4875e346 |
|
01-May-2019 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: move netif_napi_del in mt76_dma_cleanup Move netif_napi_del in mt76_dma_cleanup routine since it is done by all drivers Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
8402650a |
|
01-May-2019 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: move tx_napi in mt76_dev Move tx_napi in mt76_dev data structure in order to implement concurrency between tx scheduling and tx cleanup in mt7603 and mt7615 drivers Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
ae66068f |
|
30-Apr-2019 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: do not enable/disable pre_tbtt_tasklet in scan_start/scan_complete Do not enable/disable pre_tbtt_tasklet tasklet in mt76x02_sw_scan/mt76x02_sw_scan_complete since it is already done setting the operating channel. Do run tbtt_tasklet while the device is offchannel Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
dc6057f4 |
|
30-Apr-2019 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: move pre_tbtt_tasklet in mt76_dev Move pre_tbtt_tasklet tasklet in mt76_dev data structure since it is used by all drivers Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
c8a04d98 |
|
29-Apr-2019 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: move beacon_mask in mt76_dev Move beacon_mask in mt76_dev data structure since it is used by all drivers Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
9c7c756e |
|
29-Apr-2019 |
kbuild test robot <lkp@intel.com> |
mt76: mt76x02: mt76x02_poll_tx() can be static Fixes: ec7d2d74760a ("mt76: mt76x02: use napi polling for tx cleanup") Signed-off-by: kbuild test robot <lkp@intel.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
e2c2fd0f |
|
13-Apr-2019 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: introduce mt76_mcu_restart macro Use common function wrapper in mt76x02_watchdog_reset Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
6fe53337 |
|
31-Jan-2019 |
Felix Fietkau <nbd@nbd.name> |
mt76: mt76x02: remove irqsave/restore in locking for tx status fifo Use a separate lock and spin_trylock to avoid disabling interrupts. Should improve performance and latency Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
2ac515a5 |
|
22-Mar-2019 |
Felix Fietkau <nbd@nbd.name> |
mt76: mt76x02: use napi polling for tx cleanup This allows tx scheduling and tx cleanup to run concurrently Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
f3950a41 |
|
02-Apr-2019 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: set txwi_size according to the driver value Dynamically allocate txwi since new chipsets will use longer txwi descriptors Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
41634aa8 |
|
13-Mar-2019 |
Felix Fietkau <nbd@nbd.name> |
mt76: only schedule txqs from the tx tasklet Reduces lock contention from the tx path and improves performance Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
a33b8ab8 |
|
13-Mar-2019 |
Felix Fietkau <nbd@nbd.name> |
mt76: move tx tasklet to struct mt76_dev Allows it to be scheduled from core code Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
d908d4ec |
|
23-Mar-2019 |
Felix Fietkau <nbd@nbd.name> |
mt76: use readl/writel instead of ioread32/iowrite32 Switching to readl/writel is faster because it gets rid of an unnecessary wrapper with extra checks. Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
f2276c29 |
|
19-Mar-2019 |
Stanislaw Gruszka <sgruszka@redhat.com> |
mt76x02: make beacon slots bigger for USB Since we sent PS buffered frames via beacon memory we need to make beacon slots bigger. That imply we will also need to decrease number of slots as beacon SRAM memory is limited to 8kB. Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
31cdd442 |
|
19-Mar-2019 |
Stanislaw Gruszka <sgruszka@redhat.com> |
mt76x02: generalize some mmio beaconing functions Move some TBTT mmio functions to mt76x02_beacon.c and create new ones in order to be reused by USB pre-TBTT. Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
c004b881 |
|
19-Mar-2019 |
Stanislaw Gruszka <sgruszka@redhat.com> |
mt76x02: introduce beacon_ops Enabling/disableing TBTT and beacon will be diffrent for USB. Introduce beacon_ops to encapsulate that and implement it for MMIO. USB implementation is noop for now. Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
8d71aef9 |
|
19-Mar-2019 |
Stanislaw Gruszka <sgruszka@redhat.com> |
mt76x02: introduce mt76x02_beacon.c Move most of beaconing code into separate file and separate beacon initialization for USB and MMIO as pre TBTT implementation for USB will be different. Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
eb9ca7ec |
|
07-Mar-2019 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: dma: add static qualifier to mt76_dma_tx_queue_skb As already done for mt76_dma_tx_queue_skb_raw, add static qualifier to mt76_dma_tx_queue_skb and introduce mt76_tx_queue_skb in order to run mt76_dma_tx_queue_skb in driver code Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
af005f26 |
|
02-Mar-2019 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: introduce mt76_sw_queue data structure Introduce mt76_sw_queue data structure in order to support new chipsets (e.g. mt7615) that have a shared hardware queue for all traffic identifiers. mt76_sw_queue will be used to track outstanding packets Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
89a37842 |
|
02-Mar-2019 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: remove mt76_queue dependency from tx_queue_skb function pointer Remove mt76_queue dependency from tx_queue_skb function pointer and rely on mt76_tx_qid instead. This is a preliminary patch to introduce mt76_sw_queue support Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
b1bfbe70 |
|
28-Feb-2019 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: dma: move mt76x02_init_{tx,rx}_queue in mt76 module Move mt76x02_init_tx_queue and mt76x02_init_rx_queue in mt76 module in order to be reused adding support for mt7603 driver and remove duplicated code. Squash mt76x02_init_tx_queue and mt76x02_init_rx_queue in mt76_dma_alloc_queue Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
9220f695 |
|
28-Feb-2019 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: mmio: move mt76x02_set_irq_mask in mt76 module Move mt76x02_set_irq_mask in mt76 module in order to be reused adding support for mt7603 driver and remove duplicated code Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
13f61dfc |
|
11-Mar-2019 |
Lorenzo Bianconi <lorenzo@kernel.org> |
mt76: fix schedule while atomic in mt76x02_reset_state Fix following schedule while atomic in mt76x02_reset_state since synchronize_rcu is run inside a RCU section [44036.944222] mt76x2e 0000:06:00.0: MCU message 31 (seq 3) timed out [44036.944281] BUG: sleeping function called from invalid context at kernel/rcu/tree_exp.h:818 [44036.944284] in_atomic(): 1, irqs_disabled(): 0, pid: 28066, name: kworker/u4:1 [44036.944287] INFO: lockdep is turned off. [44036.944292] CPU: 1 PID: 28066 Comm: kworker/u4:1 Tainted: G W 5.0.0-rc7-wdn-t1+ #7 [44036.944294] Hardware name: Dell Inc. Studio XPS 1340/0K183D, BIOS A11 09/08/2009 [44036.944305] Workqueue: phy1 mt76x02_wdt_work [mt76x02_lib] [44036.944308] Call Trace: [44036.944317] dump_stack+0x67/0x90 [44036.944322] ___might_sleep.cold.88+0x9f/0xaf [44036.944327] rcu_blocking_is_gp+0x13/0x50 [44036.944330] synchronize_rcu+0x17/0x80 [44036.944337] mt76_sta_state+0x138/0x1d0 [mt76] [44036.944349] mt76x02_wdt_work+0x1c9/0x610 [mt76x02_lib] [44036.944355] process_one_work+0x2a5/0x620 [44036.944361] worker_thread+0x35/0x3e0 [44036.944368] kthread+0x11c/0x140 [44036.944376] ret_from_fork+0x3a/0x50 [44036.944384] BUG: scheduling while atomic: kworker/u4:1/28066/0x00000002 [44036.944387] INFO: lockdep is turned off. [44036.944389] Modules linked in: cmac ctr ccm af_packet snd_hda_codec_hdmi Introduce __mt76_sta_remove in order to run sta_remove without holding dev->mutex. Move __mt76_sta_remove outside of RCU section in mt76x02_reset_state Fixes: e4ebb8b403d1 ("mt76: mt76x2: implement full device restart on watchdog reset") Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
#
00496042 |
|
27-Feb-2019 |
Felix Fietkau <nbd@nbd.name> |
mt76: mt76x2: implement full device restart on watchdog reset Restart the firmware and re-initialize the MAC to be able to recover from more kinds of hang states Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
72e5d479 |
|
24-Feb-2019 |
Felix Fietkau <nbd@nbd.name> |
mt76: mt76x02: issue watchdog reset on MCU request timeout MCU request timeout usually indicates that the device is no longer responsive, and it usually does not recover without a reset Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
b3f09304 |
|
24-Feb-2019 |
Felix Fietkau <nbd@nbd.name> |
mt76: mt76x02: fix beacon timer drift adjustment Check the count before incrementing it to match vendor code behavior. This defers the adjustment by one more tick, which should improve accuracy Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
e7173858 |
|
15-Jan-2019 |
Felix Fietkau <nbd@nbd.name> |
mt76: add channel switch announcement support Use the appropriate mac80211 callbacks after beacon transmission Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
c1e0d2be |
|
28-Dec-2018 |
Lorenzo Bianconi <lorenzo.bianconi@redhat.com> |
mt76: mmio: introduce mt76x02_check_tx_hang watchdog Port mt76x02_check_tx_hang watchdog from vendor driver in order to perform a device reset when tx mac/dma logic hangs. Tx mac/dma stuck has been observed when the device is heavy loaded or in a noisy environment. Moreover introduce wdt delayed work in order to run tx_hang watchdog. For the moment run mt76x02_check_tx_hang watchdog just on mt76x2 devices since the issue has not been observed on mt76x0 driver yet Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
cbbfd737 |
|
29-Nov-2018 |
Felix Fietkau <nbd@nbd.name> |
mt76: throttle transmission of buffered multicast packets Avoids drowning out regular transmissions Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
82b5c239 |
|
19-Oct-2018 |
Lorenzo Bianconi <lorenzo.bianconi@redhat.com> |
mt76x0: pci: add pre_tbtt_tasklet support Enable/disable pre_tbtt_tasklet in mt76x0 driver in order to add AP support Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
dfe6c80c |
|
19-Oct-2018 |
Lorenzo Bianconi <lorenzo.bianconi@redhat.com> |
mt76: move tx beacon routines in mt76x02-lib module Move mt76x02_tx beacon utility routines in mt76x02_mmio.c in order to be reused by mt76x0 driver adding AP support Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
5567b373 |
|
17-Oct-2018 |
Felix Fietkau <nbd@nbd.name> |
mt76: clean up unused leftover EXPORT_SYMBOLs Make previously exported functions static where possible Acked-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
8d66af49 |
|
07-Oct-2018 |
Lorenzo Bianconi <lorenzo.bianconi@redhat.com> |
mt76: use mt76x02_dev instead of mt76_dev in mt76x02_mac.c Use mt76x02_dev data structure as reference in mt76x02_mac.c instead of mt76_dev Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
9b43960b |
|
05-Oct-2018 |
Lorenzo Bianconi <lorenzo.bianconi@redhat.com> |
mt76: move irq handler in mt76x02-lib moudle Move mt76x02_irq_handler handler in mt76x02_mmio.c in order to be reused in mt76x0 driver. Move mt76x02_rx_poll_complete routine in mt76x02-lib module. Moreover remove pci_core.c and mt76x2/trace.{c,h} since are empty files Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
53d20fdb |
|
05-Oct-2018 |
Lorenzo Bianconi <lorenzo.bianconi@redhat.com> |
mt76: move tx_tasklet management in mt76x02-lib moudle Move tx_tasklet management in mt76x02_mmio.c in order to be reused by mt76x0 driver and remove duplicated code Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
a23fde09 |
|
05-Oct-2018 |
Lorenzo Bianconi <lorenzo.bianconi@redhat.com> |
mt76: use mt76x02_dev instead of mt76_dev in mt76x02_mmio.c Use mt76x02_dev data structure as reference in mt76x02_mmio.c instead of mt76_dev Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
7a07adcd |
|
05-Oct-2018 |
Lorenzo Bianconi <lorenzo.bianconi@redhat.com> |
mt76: rename mt76x02_util.h in mt76x02.h Rename mt76x02_util.h header file in mt76x02.h since now contains all mt76x02 related definitions and not just utility routines declarations Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
9f04eb7b |
|
28-Sep-2018 |
Lorenzo Bianconi <lorenzo.bianconi@redhat.com> |
mt76: add mt76x02_mac_start routine Introduce mt76x02_mac_start since the mac start code is shared between mt76x0e and mt76x2 drivers. Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
b2eabd4c |
|
28-Sep-2018 |
Lorenzo Bianconi <lorenzo.bianconi@redhat.com> |
mt76: move queue initialization in mt76x02_mmio.c Move mt76x02_dma_init, mt76x02_init_rx_queue and mt76x02_init_tx_queue routines in mt76x02-lib module in order to be reused by mt76x0 driver Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
957068c2 |
|
28-Sep-2018 |
Lorenzo Bianconi <lorenzo.bianconi@redhat.com> |
mt76: move mt76x02_set_irq_mask in mt76x02_mmio.c Move mt76x02_set_irq_mask, mt76x02_irq_enable and mt76x02_irq_disable in mt76x02-lib module in order to be reused by mt76x0 driver. Moreover move irq_lock and irqmask in mt76_mmio data structure Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
#
20885649 |
|
28-Sep-2018 |
Lorenzo Bianconi <lorenzo.bianconi@redhat.com> |
mt76: add mt76x02_dma_enable/mt76x02_dma_disable utility routines Introduce mt76x02_dma_enable and mt76x02_dma_disable utility routines in order to be reused in mt76x0 mac configuration and remove duplicated code Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
|