OSDN Git Service
Gustavo A. R. Silva [Fri, 20 Nov 2020 18:37:18 +0000 (12:37 -0600)]
mt76: mt7615: Fix fall-through warnings for Clang
In preparation to enable -Wimplicit-fallthrough for Clang, fix a
warning by replacing a /* fall through */ comment with the new
pseudo-keyword macro fallthrough; instead of letting the code fall
through to the next case.
Notice that Clang doesn't recognize /* fall through */ comments as
implicit fall-through markings.
Link: https://github.com/KSPP/linux/issues/115
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Shayne Chen [Thu, 26 Nov 2020 08:59:18 +0000 (16:59 +0800)]
mt76: mt7915: fix ht mcs in mt7915_mcu_get_rx_rate()
The mcs value of HT mode reported by mt7915_mcu_get_rx_rate()
has already been converted to the expected format.
Tested-by: Yiwei Chung <yiwei.chung@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Sat, 21 Nov 2020 17:23:35 +0000 (18:23 +0100)]
mt76: attempt to free up more room when filling the tx queue
Run dma cleanup immediately if the queue is almost full, instead of waiting
for the tx interrupt
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Sat, 21 Nov 2020 15:00:14 +0000 (16:00 +0100)]
mt76: mt7915: stop queues when running out of tx tokens
Avoids packet drops under load with lots of stations
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Sat, 21 Nov 2020 13:00:47 +0000 (14:00 +0100)]
mt76: improve tx queue stop/wake
Instead of stopping and waking only a single queue, handle all phy tx queues
mapped ot the same hardware queue.
Also allow the driver to block tx queues
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Shayne Chen [Mon, 16 Nov 2020 11:45:54 +0000 (19:45 +0800)]
mt76: mt7915: fix memory leak in mt7915_mcu_get_rx_rate()
Free the skb to prevent memory leak.
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Tue, 17 Nov 2020 23:18:18 +0000 (00:18 +0100)]
mt76: mt7615: fix rdd mcu cmd endianness
Similar to mt7915 driver, fix mt7615 radar mcu command endianness
Fixes:
2ce73efe0f8e5 ("mt76: mt7615: initialize radar specs from host driver")
Fixes:
70911d9638069 ("mt76: mt7615: add radar pattern test knob to debugfs")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Thu, 12 Nov 2020 14:23:28 +0000 (15:23 +0100)]
mt76: mt7915: fix endian issues
Multiple MCU messages were using u16/u32 fields without endian annotations
or conversions
Fixes:
e57b7901469f ("mt76: add mac80211 driver for MT7915 PCIe-based chipsets")
Fixes:
5517f78b0063 ("mt76: mt7915: enable firmware module debug support")
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Fri, 13 Nov 2020 10:11:32 +0000 (11:11 +0100)]
mt76: mt7915: get rid of dbdc debugfs knob
mt7915 automatically detects dbdc feature so drop debugfs knob.
Move if_comb, mt7915_rates, if_limits structs and mt7915_regd_notifier(),
mt7915_init_wiphy() routines at the begging of init.c in order to make
mt7915_register_ext_phy routine static
Co-developed-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Co-developed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Fri, 13 Nov 2020 10:11:31 +0000 (11:11 +0100)]
mt76: mt7915: introduce dbdc support
Introduce mt7915 dbdc support. If dbdc is available, mt7915 primary phy
will work on 2.4GHz band, while secondary one on 5GHz band.
Co-developed-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Co-developed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Fri, 13 Nov 2020 10:11:30 +0000 (11:11 +0100)]
mt76: move hw mac_addr in mt76_phy
This is a preliminary patch to properly support mt7915 dbdc
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Thu, 12 Nov 2020 09:56:58 +0000 (10:56 +0100)]
mt76: move band allocation in mt76_register_phy
This is a preliminary patch to introduce dbdc support to mt7915 devices
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Thu, 12 Nov 2020 09:56:57 +0000 (10:56 +0100)]
mt76: rely on mt76_phy in mt76_init_sband_2g and mt76_init_sband_5g
This is a preliminary patch to properly support mt7915 dbdc
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Thu, 12 Nov 2020 09:56:56 +0000 (10:56 +0100)]
mt76: move band capabilities in mt76_phy
This is a preliminary patch to move properly support mt7915 dbdc
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Wed, 11 Nov 2020 13:47:32 +0000 (14:47 +0100)]
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>
Lorenzo Bianconi [Wed, 11 Nov 2020 13:47:31 +0000 (14:47 +0100)]
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>
Lorenzo Bianconi [Wed, 11 Nov 2020 13:47:30 +0000 (14:47 +0100)]
mt76: rely on mt76_queue in tx_queue_skb_raw 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>
Lorenzo Bianconi [Wed, 11 Nov 2020 13:47:29 +0000 (14:47 +0100)]
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>
Lorenzo Bianconi [Wed, 11 Nov 2020 13:47:28 +0000 (14:47 +0100)]
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>
Lorenzo Bianconi [Wed, 11 Nov 2020 13:47:27 +0000 (14:47 +0100)]
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>
Lorenzo Bianconi [Wed, 11 Nov 2020 13:47:26 +0000 (14:47 +0100)]
mt76: mt7663s: rely on mt76_queue in mt7663s_tx_run_queue signature
This is a preliminary patch to move data queues in mt76_phy and properly
support dbdc for mt7915
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Wed, 11 Nov 2020 13:47:25 +0000 (14:47 +0100)]
mt76: sdio: rely on mt76_queue in mt76s_process_tx_queue signature
This is a preliminary patch to move data queues in mt76_phy and properly
support dbdc for mt7915
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Wed, 11 Nov 2020 13:47:24 +0000 (14:47 +0100)]
mt76: sdio: introduce mt76s_alloc_tx_queue
This is a preliminary patch to move hw data queues in mt76_phy for
mt7915 dbdc support
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Wed, 11 Nov 2020 13:47:23 +0000 (14:47 +0100)]
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>
Lorenzo Bianconi [Tue, 10 Nov 2020 11:17:37 +0000 (12:17 +0100)]
mt76: mt7915: rely on eeprom definitions
In order to make the code more readable, rely on mt7915_eeprom_field
definitions for eeprom parsing
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Sun, 8 Nov 2020 10:27:45 +0000 (11:27 +0100)]
mt76: mt7615: refactor usb/sdio rate code
Since wtbl workqueue is used only for rate handling, refactor code to
make it more clear
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Thu, 29 Oct 2020 17:11:17 +0000 (01:11 +0800)]
mt76: mt7615: support 16 interfaces
When looking for a MAC address slot, start by using main BSSID slots 1-3,
afterwards use 16 repeater mode BSSID slots, then start using the slots
usually used for AP mode.
This search order should prevent unnecessary conflicts with AP mode interfaces
on the same PHY.
Note that two PHYs share global 32 omac slots with each other.
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Thu, 29 Oct 2020 17:11:16 +0000 (01:11 +0800)]
mt76: mt7915: remove unused mt7915_mcu_bss_sync_tlv()
mt7915_mcu_bss_sync_tlv() is no longer used, so remove it.
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Thu, 29 Oct 2020 17:11:15 +0000 (01:11 +0800)]
mt76: mt7915: use BIT_ULL for omac_idx
The omac_idx variable is u64 so we should use the 64-bit BIT_ULL().
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Sun, 25 Oct 2020 10:56:16 +0000 (11:56 +0100)]
mt76: mt7915: make mt7915_eeprom_read static
Make mt7915_eeprom_read routine static since it is used only in eeprom.c
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Shayne Chen [Thu, 22 Oct 2020 02:28:20 +0000 (10:28 +0800)]
mt76: mt7915: add support to set tx frequency offset in testmode
Support to set tx frequency offset in testmode, which is usally used in
the pre-calibration stage.
Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Shayne Chen [Thu, 22 Oct 2020 02:28:19 +0000 (10:28 +0800)]
mt76: mt7915: add support to set txpower in testmode
Support tx_power setting in testmode. Note that the tx power value of
antenna 1-3 equal to antenna 0.
Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Shayne Chen [Thu, 22 Oct 2020 02:28:18 +0000 (10:28 +0800)]
mt76: mt7915: implement testmode rx support
Support testmode rx and display rx statistic by parsing RXV packet
type, which is currently only enabled in testmode.
Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Shayne Chen [Thu, 22 Oct 2020 02:28:17 +0000 (10:28 +0800)]
mt76: mt7915: implement testmode tx support
Support testmode tx for MT7915A, including tx streams and HE rate
settings.
Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Shayne Chen [Thu, 22 Oct 2020 02:28:16 +0000 (10:28 +0800)]
mt76: testmode: add support for HE rate modes
Extend enum mt76_testmode_tx_mode to support various HE rate modes.
Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Shayne Chen [Thu, 22 Oct 2020 02:28:15 +0000 (10:28 +0800)]
mt76: mt7915: fix tx rate related fields in tx descriptor
Correct the bitfields of tx rateval and bw in tx descriptor.
Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Shayne Chen [Thu, 22 Oct 2020 02:28:14 +0000 (10:28 +0800)]
mt76: testmode: add support for LTF and GI combinations for HE mode
Prepare for setting different LTF (1x, 2x, and 4x) and GI (0.8us,
1.6us, 3.2us) combinations in HE rate mode.
Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Shayne Chen [Thu, 22 Oct 2020 02:28:13 +0000 (10:28 +0800)]
mt76: testmode: add tx_rate_stbc parameter
Add the parameter to control STBC function in testmode.
Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Shayne Chen [Thu, 22 Oct 2020 02:28:12 +0000 (10:28 +0800)]
mt76: testmode: add snr attribute in rx statistics
Support to display snr value when dumping rx statistics.
Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Shayne Chen [Thu, 22 Oct 2020 02:28:11 +0000 (10:28 +0800)]
mt76: testmode: switch ib and wb rssi to array type for per-antenna report
Change ib_rssi and wb_rssi into array type, since they could be reported
by per-antenna.
Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Tue, 20 Oct 2020 09:13:11 +0000 (11:13 +0200)]
mt76: mt76u: use dedicated thread for status work
Split tx and status path in mt76-usb module relying on mt76 workers APIs
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Tue, 20 Oct 2020 09:13:10 +0000 (11:13 +0200)]
mt76: mt76u: rely on woker APIs for rx work
In order to improve parallelism, convert rx path in mt76-usb module to
mt76 workers APIs
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Tue, 20 Oct 2020 08:03:17 +0000 (10:03 +0200)]
mt76: mt7615: run key configuration in mt7615_set_key for usb/sdio devices
Since rate configuration is run holding dev mutex, we can run key
configuration in mt7615_set_key for usb/sdio devices avoiding to
schedule the workqueue
Tested-by: Tested-by: YN Chen <yn.chen@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Sat, 17 Oct 2020 15:15:25 +0000 (17:15 +0200)]
mt76: fix tkip configuration for mt7615/7663 devices
Fix Tx-Rx MIC overwrite during TKIP hw key configuration
Fixes:
01cfc1b45421 ("mt76: mt7615: add BIP_CMAC_128 cipher support")
Tested-by: YN Chen <yn.chen@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Sat, 17 Oct 2020 09:43:35 +0000 (11:43 +0200)]
mt76: switch to wep sw crypto for mt7615/mt7915
Switch to wep sw crypto for mt7615/mt7915 since wtbl require a sta
reference and wep key is not pairwise
Tested-by: YN Chen <yn.chen@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Sean Wang [Fri, 16 Oct 2020 00:26:42 +0000 (08:26 +0800)]
mt76: mt7663s: introduce WoW support via GPIO
SDIO-based WiFi would rely on an additional GPIO pin to wake up the host.
Co-developed-by: YN Chen <YN.Chen@mediatek.com>
Signed-off-by: YN Chen <YN.Chen@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Wed, 14 Oct 2020 10:03:58 +0000 (12:03 +0200)]
mt76: move mt76_mcu_send_firmware in common module
Move mt76_mcu_send_firmware routine in common code since it is actually
shared between mt7615, mt7663, mt7603 and mt7915 devices
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
David Bauer [Tue, 13 Oct 2020 14:23:26 +0000 (16:23 +0200)]
mt76: mt7603: add additional EEPROM chip ID
Some newer MT7628 based routers (notably the TP-Link Archer C50 v4) are
shipped with a chip-id of 0x7600 in the on-flash EEPROM. Add this as a
possible valid ID.
Ref: https://bugs.openwrt.org/index.php?do=details&task_id=2781
Suggested-by: Ron Asimi <ron.asimi@gmail.com>
Signed-off-by: David Bauer <mail@david-bauer.net>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Tue, 13 Oct 2020 08:33:49 +0000 (10:33 +0200)]
mt76: fix memory leak if device probing fails
Run mt76_free_device instead of ieee80211_free_hw if device probing
fails in order to remove the already allocated mt76 workqueue
Fixes:
a86f1d01f5ce5 ("mt76: move mt76 workqueue in common code")
Fixes:
f1d962369d568 ("mt76: mt7915: implement HE per-rate tx power support")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Mon, 12 Oct 2020 16:21:21 +0000 (00:21 +0800)]
mt76: mt7915: fix sparse warning cast from restricted __le16
drivers/net/wireless/mediatek/mt76/mt7915/init.c:339:26: sparse:
sparse: cast from restricted __le16
Fixes:
00b2e16e0063 ("mt76: mt7915: add TxBF capabilities")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Sun, 11 Oct 2020 22:43:55 +0000 (00:43 +0200)]
mt76: dma: fix possible deadlock running mt76_dma_cleanup
Fix the following possible deadlock reported by lockdep disabling BH
running mt76_free_pending_txwi()
================================
WARNING: inconsistent lock state
5.9.0-rc6 #14 Not tainted
--------------------------------
inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage.
rmmod/1227 [HC0[0]:SC0[0]:HE1:SE1] takes:
ffff888156a83530 (&dev->lock#2){+.?.}-{2:2}, at: mt76_dma_cleanup+0x125/0x150 [mt76]
{IN-SOFTIRQ-W} state was registered at:
__lock_acquire+0x20c/0x6b0
lock_acquire+0x9d/0x220
_raw_spin_lock+0x2c/0x70
mt76_dma_tx_cleanup+0xc7/0x200 [mt76]
mt76x02_poll_tx+0x31/0xb0 [mt76x02_lib]
napi_poll+0x3a/0x100
net_rx_action+0xa8/0x200
__do_softirq+0xc4/0x430
asm_call_on_stack+0xf/0x20
do_softirq_own_stack+0x49/0x60
irq_exit_rcu+0x9a/0xd0
common_interrupt+0xa4/0x190
asm_common_interrupt+0x1e/0x40
irq event stamp: 9915
hardirqs last enabled at (9915): [<
ffffffff8124e286>] __free_pages_ok+0x336/0x3b0
hardirqs last disabled at (9914): [<
ffffffff8124e24e>] __free_pages_ok+0x2fe/0x3b0
softirqs last enabled at (9912): [<
ffffffffa03aa672>] mt76_dma_rx_cleanup+0xa2/0x120 [mt76]
softirqs last disabled at (9846): [<
ffffffffa03aa5ea>] mt76_dma_rx_cleanup+0x1a/0x120 [mt76]
other info that might help us debug this:
Possible unsafe locking scenario:
CPU0
----
lock(&dev->lock#2);
<Interrupt>
lock(&dev->lock#2);
*** DEADLOCK ***
1 lock held by rmmod/1227:
#0:
ffff88815b5eb240 (&dev->mutex){....}-{3:3}, at: driver_detach+0xb5/0x110
stack backtrace:
CPU: 1 PID: 1227 Comm: rmmod Kdump: loaded Not tainted 5.9.0-rc6-wdn-src+ #14
Hardware name: Dell Inc. Studio XPS 1340/0K183D, BIOS A11 09/08/2009
Call Trace:
dump_stack+0x77/0xa0
mark_lock_irq.cold+0x15/0x39
mark_lock+0x1fc/0x500
mark_usage+0xc7/0x140
__lock_acquire+0x20c/0x6b0
? find_held_lock+0x2b/0x80
? sched_clock_cpu+0xc/0xb0
lock_acquire+0x9d/0x220
? mt76_dma_cleanup+0x125/0x150 [mt76]
_raw_spin_lock+0x2c/0x70
? mt76_dma_cleanup+0x125/0x150 [mt76]
mt76_dma_cleanup+0x125/0x150 [mt76]
mt76x2_cleanup+0x5a/0x70 [mt76x2e]
mt76x2e_remove+0x18/0x30 [mt76x2e]
pci_device_remove+0x36/0xa0
__device_release_driver+0x16c/0x220
driver_detach+0xcf/0x110
bus_remove_driver+0x56/0xca
pci_unregister_driver+0x36/0x80
__do_sys_delete_module.constprop.0+0x127/0x200
? syscall_enter_from_user_mode+0x1d/0x50
? trace_hardirqs_on+0x1c/0xe0
do_syscall_64+0x33/0x80
entry_SYSCALL_64_after_hwframe+0x44/0xa9
RIP: 0033:0x7ff0da54e36b
Code: 73 01 c3 48 8b 0d 2d 0b 0c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa b8 b0 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d fd 0a 0c 00 f7 d8 64 89 01 48
Fixes:
dd57a95cfddc ("mt76: move txwi handling code to dma.c, since it is mmio specific")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Taehee Yoo [Thu, 8 Oct 2020 15:51:56 +0000 (15:51 +0000)]
mt76: set fops_tx_stats.owner to THIS_MODULE
If THIS_MODULE is not set, the module would be removed while debugfs is
being used.
It eventually makes kernel panic.
Fixes:
e57b7901469f ("mt76: add mac80211 driver for MT7915 PCIe-based chipsets")
Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Thu, 8 Oct 2020 16:57:36 +0000 (00:57 +0800)]
mt76: mt7915: rename mt7915_mcu_get_rate_info to mt7915_mcu_get_tx_rate
Avoid confusion with rx rate query function.
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Thu, 8 Oct 2020 16:57:35 +0000 (00:57 +0800)]
mt76: mt7915: update ppe threshold
Update ppe_thresh capability to sync SDK setting.
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Taehee Yoo [Thu, 8 Oct 2020 15:51:57 +0000 (15:51 +0000)]
mt76: mt7915: set fops_sta_stats.owner to THIS_MODULE
If THIS_MODULE is not set, the module would be removed while debugfs is
being used.
It eventually makes kernel panic.
Fixes:
ec9742a8f38e ("mt76: mt7915: add .sta_add_debugfs support")
Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Allen Pais [Wed, 7 Oct 2020 10:33:07 +0000 (16:03 +0530)]
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>
Lorenzo Bianconi [Tue, 6 Oct 2020 12:00:01 +0000 (14:00 +0200)]
mt76: sdio: get rid of sched.lock
sched quota is now updated in mt7663s_txrx_worker so there is no more
need of sched.lock mutex
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Mon, 5 Oct 2020 15:22:23 +0000 (17:22 +0200)]
mt76: mt7663s: fix a possible ple quota underflow
Properly account current consumed ple quota in mt7663s_tx_pick_quota
routine and avoid possible underflow.
Fixes:
6ef2d665f64d ("mt76: mt7663s: split mt7663s_tx_update_sched in mt7663s_tx_{pick,update}_quota")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Mon, 5 Oct 2020 11:36:31 +0000 (13:36 +0200)]
mt76: mt7663s: get rid of mt7663s_sta_add
Get rid of mt7663s_sta_add routine and rely on mt7615_mac_sta_add
since sched quota is already initialized in mt7663s_mcu_init_sched
routine
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Mon, 5 Oct 2020 08:18:33 +0000 (10:18 +0200)]
mt76: mt7615: introduce quota debugfs node for mt7663s
Add sched_quota debugfs node for mt7663s. Scheduling quota stats
are useful for debugging
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Wed, 30 Sep 2020 08:57:15 +0000 (10:57 +0200)]
mt76: mt7615: enable beacon filtering by default for offload fw
In order to reduce cpu cycles, enable hw beacon filter by default if
the device is running offload fw with sta only interfaces.
Disable runtime pm for multi-vif scenario.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Sat, 10 Oct 2020 13:20:18 +0000 (15:20 +0200)]
mt76: add back the SUPPORTS_REORDERING_BUFFER flag
It was accidentally dropped while adding multiple wiphy support
Fixes fast-rx support and avoids handling reordering in both mac80211
and the driver
Cc: stable@vger.kernel.org
Fixes:
c89d36254155 ("mt76: add function for allocating an extra wiphy")
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Wed, 30 Sep 2020 09:39:04 +0000 (11:39 +0200)]
mt76: mt7915: query station rx rate from firmware
When per-packet rate reporting is enabled, the hardware can get stuck under
some conditions. It self-recovers quickly, but in practice this leads to
reduced performance.
In order to avoid running into this issue, disable per-packet rate reporting
by default and query the rx rate from firmware instead, unless monitor mode
is enabled.
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Wed, 30 Sep 2020 03:45:46 +0000 (05:45 +0200)]
mt76: mt7915: move eeprom parsing out of mt7915_mcu_parse_response
Use the new mt76_mcu_send_and_get_msg function
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Wed, 30 Sep 2020 03:03:21 +0000 (05:03 +0200)]
mt76: implement functions to get the response skb for MCU calls
Can be used by the caller to get the response data directly instead of using the
hack of storing the result in internal data structures from .mcu_parse_response
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Wed, 30 Sep 2020 02:51:03 +0000 (04:51 +0200)]
mt76: mt7603: switch to .mcu_skb_send_msg
Reduces code duplication
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Wed, 30 Sep 2020 02:46:43 +0000 (04:46 +0200)]
mt76: make mcu_ops->mcu_send_msg optional
Remove it from mt7615 and mt7915 and implement it in core code instead
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Wed, 30 Sep 2020 02:35:11 +0000 (04:35 +0200)]
mt76: move waiting and locking out of mcu_ops->mcu_skb_send_msg
This removes some code duplication and prepares the code for making
the MCU API more flexible
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Wed, 30 Sep 2020 02:01:01 +0000 (04:01 +0200)]
mt76: move mcu timeout handling to .mcu_parse_response
Preparation for further cleanup
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Wed, 30 Sep 2020 01:53:59 +0000 (03:53 +0200)]
mt76: implement .mcu_parse_response in struct mt76_mcu_ops
Do not free skb inside that function
Preparation for further cleanup
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Wed, 30 Sep 2020 01:10:52 +0000 (03:10 +0200)]
mt76: rename __mt76_mcu_skb_send_msg to mt76_mcu_skb_send_msg
Preparation for further cleanup
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Wed, 30 Sep 2020 01:09:19 +0000 (03:09 +0200)]
mt76: rename __mt76_mcu_send_msg to mt76_mcu_send_msg
Preparation for further cleanup
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Tue, 29 Sep 2020 06:48:19 +0000 (08:48 +0200)]
mt76: mt7915: disable OFDMA/MU-MIMO UL
The feature is not ready in firmware yet, and it leads to hangs
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Mon, 28 Sep 2020 13:14:50 +0000 (15:14 +0200)]
mt76: mt7915: fix DRR sta bss group index
The firmware/hardware supports only 16 entries. Trying to use more can lead
to timeouts on some firmware versions
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Tue, 1 Sep 2020 15:46:19 +0000 (17:46 +0200)]
mt76: mt7915: use napi_consume_skb to bulk-free tx skbs
Slightly improves performance
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Sun, 27 Sep 2020 14:36:25 +0000 (16:36 +0200)]
mt76: mt7915: fix processing txfree events
In the MT7915 info, the fields for the WLAN index / queue overlap with the
token id, and the MT_TX_FREE_PAIR bit indicates, which one is present.
If MT_TX_FREE_PAIR is set, skip processing the token index, since the data
will not be valid.
This fixes accidentally freeing tokens which are still in use by the
hardware with a wrong station pointer.
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Sat, 26 Sep 2020 20:40:41 +0000 (22:40 +0200)]
mt76: mt7915: support 32 station interfaces
When looking for a MAC address slot, start by using main BSSID slots 1-3,
afterwards use 16 repeater mode BSSID slots, then start using the slots
usually used for AP mode.
This search order should prevent unnecessary conflicts with AP mode interfaces
on the same PHY
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Sat, 26 Sep 2020 20:39:31 +0000 (22:39 +0200)]
mt76: do not set NEEDS_UNIQUE_STA_ADDR for 7615 and 7915
The newer chipsets can deal with the same STA on multiple interfaces
Preparation for supporting more station interfaces
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Fri, 25 Sep 2020 13:56:49 +0000 (15:56 +0200)]
mt76: mt7615: add debugfs knob for setting extended local mac addresses
This is primarily for testing and can be used in combination with monitor
mode to make the card respond to packets sent to a specific MAC address.
For now this is only exposed as a debug/testing feature, later on the
approach might be used to support more concurrent station interfaces
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Sat, 25 Jul 2020 17:03:17 +0000 (19:03 +0200)]
mt76: use ieee80211_rx_list to pass frames to the network stack as a batch
Improves icache footprint
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Fri, 21 Aug 2020 06:42:46 +0000 (08:42 +0200)]
mt76: mt7915: add encap offload for 4-address mode stations
Enable MWDS mode in firmware as well and fix txp->rept_wds_wcid for wcid >= 255
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Mon, 17 Aug 2020 05:30:54 +0000 (07:30 +0200)]
mt76: mt7915: add 802.11 encap offload support
It is currently limited to 3-address mode AP and STA interfaces
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Sat, 26 Sep 2020 15:06:25 +0000 (17:06 +0200)]
mt76: sdio: convert {status/net}_work to mt76_worker
In order to improve driver throughput, convert status_work and net_work
to mt76 worker APIs.
Remove txrx_wq sdio workqueue since it is no longer used
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Sat, 26 Sep 2020 15:06:24 +0000 (17:06 +0200)]
mt76: mt7663s: disable interrupt during txrx_worker processing
In order to reduce sdio bus contention, disable interrupts during
txrx_worker processing
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Sat, 26 Sep 2020 15:06:23 +0000 (17:06 +0200)]
mt76: mt7663s: convert txrx_work to mt76_worker
In order to improve driver throughput, convert txrx_work to mt76 worker
threads APIs.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Sat, 26 Sep 2020 15:06:22 +0000 (17:06 +0200)]
mt76: mt7663s: move tx/rx processing in the same txrx workqueue
Move mt7663 tx and rx processing in the same workqueue in order to
reduce jitter that can hit tcp performances. This is a preliminary patch
to switch to mt76 workers APIs
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Chuanhong Guo [Wed, 23 Sep 2020 07:23:03 +0000 (15:23 +0800)]
mt76: mt7615: retry if mt7615_mcu_init returns -EAGAIN
mt7615_load_patch in mt7615/mcu.c sometimes fails with:
mt7622-wmac
18000000.wmac: Failed to get patch semaphore
and returns -EAGAIN. But this error is returned all the way up to
mt7615_init_work with no actual retrial performed, leaving a
broken wireless phy.
Wait a bit and retry for up to 10 times before giving up.
Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Thu, 24 Sep 2020 15:23:14 +0000 (23:23 +0800)]
mt76: mt7915: fix VHT LDPC capability
The MCU field should contain a boolean 0/1, not the flag itself.
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Thu, 24 Sep 2020 15:23:13 +0000 (23:23 +0800)]
mt76: mt7915: measure channel noise and report it via survey
Read per-stream measurements every 100 ms and build a simple moving average.
Tested-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Kalle Valo [Wed, 2 Dec 2020 19:46:55 +0000 (21:46 +0200)]
Merge ath-next from git://git./linux/kernel/git/kvalo/ath.git
ath.git patches for v5.11. Major changes:
ath11k
* Fast Initial Link Setup (FILS) discovery and unsolicited broadcast
probe response support
* qcom,ath11k-calibration-variant Device Tree setting
* cold boot calibration support
* new DFS region: JP
wnc36xx
* enable connection monitoring and keepalive in firmware
ath10k
* firmware IRAM recovery feature
mhi
* merge mhi-ath11k-immutable branch to make MHI API change go smoothly
Tom Rix [Fri, 27 Nov 2020 18:08:35 +0000 (10:08 -0800)]
wl1251: remove trailing semicolon in macro definition
The macro use will already have a semicolon.
Signed-off-by: Tom Rix <trix@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20201127180835.2769297-1-trix@redhat.com
Tom Rix [Fri, 27 Nov 2020 17:58:21 +0000 (09:58 -0800)]
airo: remove trailing semicolon in macro definition
The macro use will already have a semicolon.
Signed-off-by: Tom Rix <trix@redhat.com>
Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20201127175821.2756988-1-trix@redhat.com
Ajay Singh [Wed, 25 Nov 2020 11:41:10 +0000 (11:41 +0000)]
wilc1000: added queue support for WMM
Added multiple queues[BK,BE,VI,VO] to handle different priority data
packets. Before adding a packet to the queue, checked its priority from
the header, and then add to the suitable queue. The limit for each queue
is maintained separately. Also while passing the packets to the firmware
via VMM take care to select data packets based on priority and available
space.
Signed-off-by: Ajay Singh <ajay.kathat@microchip.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20201125114059.10006-6-ajay.kathat@microchip.com
Ajay Singh [Wed, 25 Nov 2020 11:41:10 +0000 (11:41 +0000)]
wilc1000: call complete() for failure in wilc_wlan_txq_add_cfg_pkt()
Added complete() call for failure case in wilc_wlan_txq_add_cfg_pkt().
Signed-off-by: Ajay Singh <ajay.kathat@microchip.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20201125114059.10006-5-ajay.kathat@microchip.com
Ajay Singh [Wed, 25 Nov 2020 11:41:09 +0000 (11:41 +0000)]
wilc1000: free resource in wilc_wlan_txq_add_mgmt_pkt() for failure path
Before returing from wilc_wlan_txq_add_mgmt_pkt() invoke tx_complete_fn()
callback to free up allocated memory for failure case.
Signed-off-by: Ajay Singh <ajay.kathat@microchip.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20201125114059.10006-4-ajay.kathat@microchip.com
Ajay Singh [Wed, 25 Nov 2020 11:41:08 +0000 (11:41 +0000)]
wilc1000: free resource in wilc_wlan_txq_add_net_pkt() for failure path
Before returing from wilc_wlan_txq_add_net_pkt() invoke tx_complete_fn()
callback to free up allocated memory for failure cases.
Signed-off-by: Ajay Singh <ajay.kathat@microchip.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20201125114059.10006-3-ajay.kathat@microchip.com
Ajay Singh [Wed, 25 Nov 2020 11:41:08 +0000 (11:41 +0000)]
wilc1000: added 'ndo_set_mac_address' callback support
Added support for 'ndo_set_mac_address call' callback to allow change of
interface MAC address.
Signed-off-by: Ajay Singh <ajay.kathat@microchip.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20201125114059.10006-2-ajay.kathat@microchip.com
Matthias Brugger [Tue, 24 Nov 2020 12:00:18 +0000 (13:00 +0100)]
brcmfmac: expose firmware config files through modinfo
Apart from a firmware binary the chip needs a config file used by the
FW. Add the config files to modinfo so that they can be read by
userspace.
Signed-off-by: Matthias Brugger <mbrugger@suse.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20201124120018.31358-1-matthias.bgg@kernel.org
Tian Tao [Mon, 23 Nov 2020 01:47:42 +0000 (09:47 +0800)]
wlcore: Switch to using the new API kobj_to_dev()
Switch to using the new API kobj_to_dev().
Signed-off-by: Tian Tao <tiantao6@hisilicon.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/1606096062-32251-1-git-send-email-tiantao6@hisilicon.com
Ching-Te Ku [Thu, 26 Nov 2020 02:10:59 +0000 (10:10 +0800)]
rtw88: coex: add feature to enhance HID coexistence performance
Add toggle table related function to enhance WL throughput when WL coexist
with 4/18 HID.
The toggle table feature will toggle WL/BT priority table during WL slot,
it can decrease the impact from HID's frequently packets and prevent HID
lag.
Signed-off-by: Ching-Te Ku <ku920601@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20201126021059.11981-11-pkshih@realtek.com