Dmitry Osipenko [Tue, 11 May 2021 21:15:48 +0000 (00:15 +0300)]
cfg80211: Add wiphy_info_once()
Add wiphy_info_once() helper that prints info message only once.
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210511211549.30571-1-digetx@gmail.com
Kalle Valo [Wed, 23 Jun 2021 17:39:07 +0000 (20:39 +0300)]
Merge ath-next from git://git./linux/kernel/git/kvalo/ath.git
ath.git patches for v5.14. Major changes:
ath11k
* enable support for QCN9074 PCI devices
Kees Cook [Thu, 17 Jun 2021 17:10:58 +0000 (10:10 -0700)]
wcn36xx: Avoid memset() beyond end of struct field
In preparation for FORTIFY_SOURCE performing compile-time and run-time
field bounds checking for memset(), avoid intentionally writing across
neighboring array fields.
Instead of writing past the end of the header to reach the rest of
the body, replace the redundant function with existing macro to wipe
struct contents and set field values. Additionally adjusts macro to add
missing parens.
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210617171058.3410494-1-keescook@chromium.org
Kees Cook [Wed, 16 Jun 2021 19:54:10 +0000 (12:54 -0700)]
ath11k: Avoid memcpy() over-reading of he_cap
In preparation for FORTIFY_SOURCE performing compile-time and run-time
field bounds checking for memcpy(), memmove(), and memset(), avoid
intentionally writing across neighboring array fields.
Since peer_he_cap_{mac,phy}info and he_cap_elem.{mac,phy}_cap_info are not
the same sizes, memcpy() was reading beyond field boundaries. Instead,
correctly cap the copy length and pad out any difference in size
(peer_he_cap_macinfo is 8 bytes whereas mac_cap_info is 6, and
peer_he_cap_phyinfo is 12 bytes whereas phy_cap_info is 11).
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210616195410.1232119-1-keescook@chromium.org
Wei Mingzhi [Fri, 18 Jun 2021 16:08:40 +0000 (00:08 +0800)]
mt7601u: add USB device ID for some versions of XiaoDu WiFi Dongle.
USB device ID of some versions of XiaoDu WiFi Dongle is 2955:1003
instead of 2955:1001. Both are the same mt7601u hardware.
Signed-off-by: Wei Mingzhi <whistler@member.fsf.org>
Acked-by: Jakub Kicinski <kubakici@wp.pl>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210618160840.305024-1-whistler@member.fsf.org
Kees Cook [Thu, 17 Jun 2021 17:15:22 +0000 (10:15 -0700)]
mwifiex: Avoid memset() over-write of WEP key_material
In preparation for FORTIFY_SOURCE performing compile-time and run-time
field bounds checking for memset(), avoid intentionally writing across
neighboring array fields.
When preparing to call mwifiex_set_keyparamset_wep(), key_material is
treated very differently from its structure layout (which has only a
single struct mwifiex_ie_type_key_param_set). Instead, add a new type to
the union so memset() can correctly reason about the size of the
structure.
Note that the union ("params", 196 bytes) containing key_material was
not large enough to hold the target of this memset(): sizeof(struct
mwifiex_ie_type_key_param_set) == 60, NUM_WEP_KEYS = 4, so 240
bytes, or 44 bytes past the end of "params". The good news is that
it appears that the command buffer, as allocated, is 2048 bytes
(MWIFIEX_SIZE_OF_CMD_BUFFER), so no neighboring memory appears to be
getting clobbered.
Signed-off-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210617171522.3410951-1-keescook@chromium.org
Kees Cook [Thu, 17 Jun 2021 17:13:17 +0000 (10:13 -0700)]
rtlwifi: rtl8192de: Fully initialize curvecount_val
In preparation for FORTIFY_SOURCE performing compile-time and run-time
field bounds checking for memcpy(), memmove(), and memset(), avoid
intentionally writing across neighboring array fields.
The size argument to memset() is bytes, but the array element size
of curvecount_val is u32, so "CV_CURVE_CNT * 2" was only 1/4th of the
contents of curvecount_val. Adjust memset() to wipe full buffer size.
Signed-off-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210617171317.3410722-1-keescook@chromium.org
Kees Cook [Thu, 17 Jun 2021 04:14:31 +0000 (21:14 -0700)]
mwl8k: Avoid memcpy() over-reading of mcs.rx_mask
In preparation for FORTIFY_SOURCE performing compile-time and run-time
field bounds checking for memcpy(), memmove(), and memset(), avoid
intentionally reading across neighboring array fields. Use the
sub-structure address directly.
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210617041431.2168953-1-keescook@chromium.org
Kees Cook [Wed, 16 Jun 2021 20:39:51 +0000 (13:39 -0700)]
orinoco: Avoid field-overflowing memcpy()
In preparation for FORTIFY_SOURCE performing compile-time and run-time
field bounds checking for memcpy(), memmove(), and memset(), avoid
intentionally writing across neighboring array fields.
Validate the expected key size and introduce a wrapping structure
to use as the multi-field memcpy() destination so that overflows
can be correctly detected.
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210616203952.1248910-1-keescook@chromium.org
wengjianfeng [Thu, 20 May 2021 00:55:45 +0000 (08:55 +0800)]
rtw88: coex: remove unnecessary variable and label
In some funciton, the variable ret just used as return value,and
out label just return ret,so ret and out label are unnecessary,
we should delete these and use return true/false to replace.
Signed-off-by: wengjianfeng <wengjianfeng@yulong.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210520005545.31272-1-samirweng1979@163.com
Ping-Ke Shih [Mon, 7 Jun 2021 01:22:54 +0000 (09:22 +0800)]
rtw88: add quirks to disable pci capabilities
8821CE with ASPM cannot work properly on Protempo Ltd L116HTN6SPW. Add a
quirk to disable the cap.
The reporter describes the symptom is that this module (driver) causes
frequent freezes, randomly but usually within a few minutes of running
(thus very soon after boot): screen display remains frozen, no response
to either keyboard or mouse input. All I can do is to hold the power
button to power off, then reboot.
Reported-by: Paul Szabo <psz2036@gmail.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210607012254.6306-1-pkshih@realtek.com
Po-Hao Huang [Fri, 28 May 2021 03:29:01 +0000 (11:29 +0800)]
rtw88: refine unwanted h2c command
Don't send beacon filter h2c when there is no valid context.
Return early instead of printing out warning messages, so others
won't get confused.
Signed-off-by: Po-Hao Huang <phhuang@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/20210528032901.12927-3-pkshih@realtek.com
Zong-Zhe Yang [Fri, 28 May 2021 03:29:00 +0000 (11:29 +0800)]
rtw88: dump FW crash via devcoredump
Use device coredump framework instead of print_hex_dump to support
FW crash dump. Pass data to the framework if preparing and dumping
are successful. The framework will take the ownership of the data.
The data will be freed after the framework determines its lifetime
is over. A new coredump will not work if the previous one still
exists.
Signed-off-by: Zong-Zhe Yang <kevin_yang@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/20210528032901.12927-2-pkshih@realtek.com
Chin-Yen Lee [Fri, 14 May 2021 07:55:17 +0000 (15:55 +0800)]
rtw88: notify fw when driver in scan-period to avoid potential problem
It is found that driver scan could be affected by dynamic mechanism
of firmware, so we notify firmware to stop it in the scan period.
Another, firmware will detect the background noise and report to
driver for further use.
Signed-off-by: Chin-Yen Lee <timlee@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/20210514075517.14216-3-pkshih@realtek.com
Chin-Yen Lee [Fri, 14 May 2021 07:55:16 +0000 (15:55 +0800)]
rtw88: add rtw_fw_feature_check api
add api to check if a certain feature is supported.
Signed-off-by: Chin-Yen Lee <timlee@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/20210514075517.14216-2-pkshih@realtek.com
Po-Hao Huang [Thu, 6 May 2021 08:36:43 +0000 (16:36 +0800)]
rtw88: 8822c: update RF parameter tables to v62
Update RTL8822C devices' RF tables to v62.
This fixes higher than expected spur in 2400 MHz under CCK mask.
Signed-off-by: Po-Hao Huang <phhuang@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/20210506083643.18317-1-pkshih@realtek.com
Wan Jiabing [Fri, 30 Apr 2021 02:49:50 +0000 (10:49 +0800)]
rtw88: Remove duplicate include of coex.h
In commit
fb8517f4fade4 ("rtw88: 8822c: add CFO tracking"),
"coex.h" was added here which caused the duplicate include.
Remove the later duplicate include.
Signed-off-by: Wan Jiabing <wanjiabing@vivo.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210430024951.33406-1-wanjiabing@vivo.com
Po-Hao Huang [Mon, 26 Apr 2021 01:32:52 +0000 (09:32 +0800)]
rtw88: 8822c: fix lc calibration timing
Before this patch, we use value from 2 seconds ago to decide
whether we should do lc calibration.
Although this don't happen frequently, fix flow to the way it should be.
Fixes:
7ae7784ec2a8 ("rtw88: 8822c: add LC calibration for RTL8822C")
Signed-off-by: Po-Hao Huang <phhuang@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/20210426013252.5665-3-pkshih@realtek.com
Po-Hao Huang [Mon, 26 Apr 2021 01:32:51 +0000 (09:32 +0800)]
rtw88: add path diversity
This feature chooses to transmit with antenna that has better signal
strength periodically under 1ss rate.
It can benefit connection quality in the following cases:
1. User is far away from the AP.
2. The far-field pattern of the antenna showed significant signal
strength difference.
Signed-off-by: Po-Hao Huang <phhuang@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/20210426013252.5665-2-pkshih@realtek.com
Po-Hao Huang [Mon, 26 Apr 2021 01:32:50 +0000 (09:32 +0800)]
rtw88: add beacon filter support
Adding this supports beacon filter and CQM.
Let firmware perform connection quality monitor and beacon processing.
This make host CPU wakeup less under power save mode.
To make mechanisms work as usual, fw will notify driver events such as
signal change and beacon loss.
This feature needs firmware 9.9.8 or newer to support it, and driver is
compatible with older firmware.
Signed-off-by: Po-Hao Huang <phhuang@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/20210426013252.5665-1-pkshih@realtek.com
Anilkumar Kolli [Thu, 17 Jun 2021 08:29:40 +0000 (11:29 +0300)]
ath11k: Enable QCN9074 device
The issues mentioned in commit
4e80946197a8
("ath11k: add qcn9074 pci device support") are fixed in firmware.
This patch enables QCN9074 device.
Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.4.0.1-01838-QCAHKSWPL_SILICONZ-1
Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210615211348.92168-1-jouni@codeaurora.org
Caleb Connolly [Thu, 17 Jun 2021 08:29:40 +0000 (11:29 +0300)]
ath10k: demote chan info without scan request warning
Some devices/firmwares cause this to be printed every 5-15 seconds,
though it has no impact on functionality. Demote this to a debug
message.
I see this on SDM845 and MSM8998 platforms, specifically the OnePlus 6 devices,
PocoPhone F1 and OnePlus 5. On the OnePlus 6 (SDM845) we are stuck with the
following signed vendor fw:
[ 9.339873] ath10k_snoc
18800000.wifi: qmi chip_id 0x30214 chip_family 0x4001 board_id 0xff soc_id 0x40030001
[ 9.339897] ath10k_snoc
18800000.wifi: qmi fw_version 0x20060029 fw_build_timestamp 2019-07-12 02:14 fw_build_id QC_IMAGE_VERSION_STRING=WLAN.HL.2.0.c8-00041-QCAHLSWMTPLZ-1
The OnePlus 5 (MSM8998) is using firmware:
[ 6096.956799] ath10k_snoc
18800000.wifi: qmi chip_id 0x30214 chip_family 0x4001 board_id 0xff soc_id 0x40010002
[ 6096.956824] ath10k_snoc
18800000.wifi: qmi fw_version 0x1007007e fw_build_timestamp 2020-04-14 22:45 fw_build_id QC_IMAGE_VERSION_STRING=WLAN.HL.1.0.c6-00126-QCAHLSWMTPLZ-1.211883.1.278648.
Tested-on: WCN3990 hw1.0 SNOC WLAN.HL.2.0.c8-00041-QCAHLSWMTPLZ-1
Tested-on: WCN3990 hw1.0 SNOC WLAN.HL.1.0.c6-00126-QCAHLSWMTPLZ-1.211883.1.278648
Signed-off-by: Caleb Connolly <caleb@connolly.tech>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210522171609.299611-1-caleb@connolly.tech
Íñigo Huguet [Tue, 11 May 2021 07:19:27 +0000 (09:19 +0200)]
rtl8xxxu: avoid parsing short RX packet
One USB data buffer can contain multiple received network
packets. If that's the case, they're processed this way:
1. Original buffer is cloned
2. Original buffer is trimmed to contain only the first
network packet
3. This first network packet is passed to network stack
4. Cloned buffer is trimmed to eliminate the first network
packet
5. Repeat with the cloned buffer until there are no more
network packets inside
However, if the space remaining in original buffer after
the first network packet is not enough to contain at least
another network packet descriptor, it is not cloned.
The loop parsing this packets ended if remaining space == 0.
But if the remaining space was > 0 but < packet descriptor
size, another iteration of the loop was done, processing again
the previous packet because cloning didn't happen. Moreover,
the ownership of this packet had been passed to network
stack in the previous iteration.
This patch ensures that no extra iteration is done if the
remaining size is not enough for one packet, and also avoid
the first iteration for the same reason.
Probably this doesn't happen in practice, but can happen
theoretically.
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210511071926.8951-1-ihuguet@redhat.com
Pascal Terjan [Sat, 24 Apr 2021 17:29:59 +0000 (18:29 +0100)]
rtl8xxxu: Fix device info for RTL8192EU devices
Based on 2001:3319 and 2357:0109 which I used to test the fix and
0bda:818b and 2357:0108 for which I found efuse dumps online.
== 2357:0109 ==
=== Before ===
Vendor: Realtek
Product: \x03802.11n NI
Serial:
=== After ===
Vendor: Realtek
Product: 802.11n NIC
Serial not available.
== 2001:3319 ==
=== Before ===
Vendor: Realtek
Product: Wireless N
Serial: no USB Adap
=== After ===
Vendor: Realtek
Product: Wireless N Nano USB Adapter
Serial not available.
Signed-off-by: Pascal Terjan <pterjan@google.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210424172959.1559890-1-pterjan@google.com
Kalle Valo [Sat, 19 Jun 2021 08:49:26 +0000 (11:49 +0300)]
Merge tag 'mt76-for-kvalo-2021-06-18' of https://github.com/nbd168/wireless into pending
mt76 patches for 5.14
* mt7915 MSI support
* disable ASPM on mt7915
* mt7915 tx status reporting
* mt7921 decap offload
* driver fixes
* cleanups
* mt7921 runtime power management improvements
* testmode improvements/fixes
* runtime PM improvements
Lorenzo Bianconi [Fri, 18 Jun 2021 10:30:47 +0000 (12:30 +0200)]
mt76: mt7921: allow chip reset during device restart
Disable chip full reset just during device probing but allow
it during hw restart.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Fri, 18 Jun 2021 08:08:24 +0000 (10:08 +0200)]
mt76: mt7615: set macwork timeout according to runtime-pm
Set macwork timeout value according to runtime-pm in order to reduce
power consumption
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Fri, 18 Jun 2021 08:08:23 +0000 (10:08 +0200)]
mt76: mt7663s: enable runtime-pm
Allow the user to enable runtime-pm for mt7663s driver
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Fri, 18 Jun 2021 08:08:22 +0000 (10:08 +0200)]
mt76: mt7663s: rely on mt76_connac_pm_ref/mt76_connac_pm_unref in tx path
Similar to mt7663e, rely on mt76_connac_pm_ref/mt76_connac_pm_unref to
check PM state and increment/decrement wake counter
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Fri, 18 Jun 2021 08:08:21 +0000 (10:08 +0200)]
mt76: mt7663s: rely on pm reference counting
As already done for mt7921 and mt7663e, rely on pm reference counting in
drv/fw_own
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Fri, 18 Jun 2021 08:08:20 +0000 (10:08 +0200)]
mt76: sdio: do not run mt76_txq_schedule directly
In order to support runtime-pm for sdio, do not run mt76_txq_schedule
directly, but schedule tx_worker instead
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Deren Wu [Thu, 17 Jun 2021 14:38:25 +0000 (22:38 +0800)]
mt76: mt7921: enable HE BFee capability
Enables HE MU/SU beamformee functionality
Signed-off-by: Eric-SY Chang <Eric-SY.Chang@mediatek.com>
Signed-off-by: Deren Wu <deren.wu@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Thu, 17 Jun 2021 11:02:09 +0000 (13:02 +0200)]
mt76: disable TWT capabilities for the moment
Disable TWT REQ/RES mac capabilities since TWT is not supported
yet in mt7915/mt7921.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Thu, 17 Jun 2021 07:17:49 +0000 (15:17 +0800)]
mt76: fix iv and CCMP header insertion
The iv from RXD is only for TKIP_RSC/CCMP_PN/GCMP_PN, and it needs a
check for CCMP header insertion. Move mt76_cipher_type to mt76.h to
reduce duplicated code.
Signed-off-by: Xing Song <xing.song@mediatek.com>
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Sean Wang [Thu, 17 Jun 2021 01:39:19 +0000 (09:39 +0800)]
mt76: mt7921: fix the coredump is being truncated
Fix the maximum size of the coredump generated with current mt7921
firmware. Otherwise, a truncated coredump would be reported to userland
via dev_coredumpv.
Also, there is an additional error handling enhanced in the patch to avoid
the possible invalid buffer access when the system failed to create the
buffer to hold the coredump.
Fixes:
0da3c795d07b ("mt76: mt7921: add coredump support")
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>
Sean Wang [Tue, 15 Jun 2021 21:31:10 +0000 (05:31 +0800)]
mt76: mt7921: fix kernel warning when reset on vif is not sta
ieee80211_disconnect is only called for the staton mode.
[ 714.050429] WARNING: CPU: 1 PID: 382 at net/mac80211/mlme.c:2787
ieee80211_disconnect+0x108/0x118 [mac80211]
[ 714.116704] Hardware name: MediaTek Asurada rev1 board (DT)
[ 714.122303] Workqueue: mt76 mt7921_mac_reset_work [mt7921e]
[ 714.127877] pstate:
20c00009 (nzCv daif +PAN +UAO)
[ 714.132761] pc : ieee80211_disconnect+0x108/0x118 [mac80211]
[ 714.138430] lr : mt7921_vif_connect_iter+0x28/0x54 [mt7921e]
[ 714.144083] sp :
ffffffc0107cbbd0
[ 714.147394] x29:
ffffffc0107cbbd0 x28:
ffffffb26c9cb928
[ 714.152706] x27:
ffffffb26c9cbd98 x26:
0000000000000000
[ 714.158017] x25:
0000000000000003 x24:
ffffffb26c9c9c38
[ 714.163328] x23:
ffffffb26c9c9c38 x22:
ffffffb26c9c8860
[ 714.168639] x21:
ffffffb23b940000 x20:
ffffffb26c9c8860
[ 714.173950] x19:
0000000000000001 x18:
000000000000b67e
[ 714.179261] x17:
00000000064dd409 x16:
ffffffd739cb28f0
[ 714.184571] x15:
0000000000000000 x14:
0000000000000227
[ 714.189881] x13:
0000000000000400 x12:
ffffffd73a4eb060
[ 714.195191] x11:
0000000000000000 x10:
0000000000000000
[ 714.200502] x9 :
ffffffd703a0a000 x8 :
0000000000000006
[ 714.205812] x7 :
2828282828282828 x6 :
ffffffb200440396
[ 714.211122] x5 :
0000000000000000 x4 :
0000000000000004
[ 714.216432] x3 :
0000000000000000 x2 :
ffffffb23b940c90
[ 714.221743] x1 :
0000000000000001 x0 :
ffffffb23b940c90
[ 714.227054] Call trace:
[ 714.229594] ieee80211_disconnect+0x108/0x118 [mac80211]
[ 714.234913] mt7921_vif_connect_iter+0x28/0x54 [mt7921e]
[ 714.240313] __iterate_interfaces+0xc4/0xdc [mac80211]
[ 714.245541] ieee80211_iterate_interfaces+0x4c/0x68 [mac80211]
[ 714.251381] mt7921_mac_reset_work+0x410/0x468 [mt7921e]
[ 714.256696] process_one_work+0x208/0x3c8
[ 714.260706] worker_thread+0x23c/0x3e8
[ 714.264456] kthread+0x140/0x17c
[ 714.267685] ret_from_fork+0x10/0x18
Fixes:
0c1ce9884607 ("mt76: mt7921: add wifi reset support")
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Sat, 12 Jun 2021 14:49:30 +0000 (16:49 +0200)]
mt76: mt7921: introduce dedicated control for deep_sleep
Introduce ds_enable switch to fully control fw deep_sleep capability
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Sat, 12 Jun 2021 12:48:48 +0000 (14:48 +0200)]
mt76: mt7921: limit txpower according to userlevel power
Limit tx power for single-sku according to userlevel power.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Sat, 12 Jun 2021 12:43:03 +0000 (14:43 +0200)]
mt76: mt7921: improve code readability for mt7921_update_txs
Introduce mt7921_update_txs routine in order to improve code readability
for tx timestamp parsing/configuration.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Sean Wang [Mon, 10 May 2021 15:14:53 +0000 (23:14 +0800)]
mt76: mt7921: add deep sleep control to runtime-pm knob
Add addtional the deep sleep control to runtime-pm knob to
allow us to control driver switching between the full power
mode and the deep sleep mode the firmware is able to support.
Reviewed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Sean Wang [Mon, 10 May 2021 15:14:52 +0000 (23:14 +0800)]
mt76: mt7921: enable deep sleep at runtime
Enable the deep sleep mode with that firmware is able to trap into
the doze state at runtime to reduce the power consumption further.
The deep sleep mode is not allowed in the STA state transition with
the firmware to have the fast connection experience as we've done in
the full power mode
Reviewed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Fri, 11 Jun 2021 18:04:20 +0000 (02:04 +0800)]
mt76: mt7915: fix IEEE80211_HE_PHY_CAP7_MAX_NC for station mode
The value of station mode is always 0.
Fixed:
00b2e16e0063 ("mt76: mt7915: add TxBF capabilities")
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Tom Rix [Thu, 10 Jun 2021 21:44:38 +0000 (14:44 -0700)]
mt76: use SPDX header file comment style
header files should use '/* SPDX ... */
Change from c file comment syle to header style
Signed-off-by: Tom Rix <trix@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Tom Rix [Thu, 10 Jun 2021 21:44:37 +0000 (14:44 -0700)]
mt76: add a space between comment char and SPDX tag
checkpatch expects a space between '#' and 'SPDX...'
Add a space.
Signed-off-by: Tom Rix <trix@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Thu, 10 Jun 2021 20:03:26 +0000 (04:03 +0800)]
mt76: mt7915: improve MU stability
- Adjust starec flow since VHT MU group is only updated by starec_vht
follows starec_bf settings.
- Drop unnecessary MU BF checks.
TX MPDU PER (Status = Success):
TOT_MPDU_CNT FAIL_MPDU_CNT TX_PER
WCID Rate
1 VHT_BW80_2SS_MCS7_LGI_LDPC_MUBF 114 0 0.00%
VHT_BW80_2SS_MCS7_LGI_LDPC_MUBF_MU 64 0 0.00%
VHT_BW80_2SS_MCS7_SGI_LDPC_MUBF 128 0 0.00%
VHT_BW80_2SS_MCS7_SGI_LDPC_MUBF_MU 745 0 0.00%
VHT_BW80_2SS_MCS8_LGI_LDPC_MUBF_MU 856 0 0.00%
VHT_BW80_2SS_MCS8_SGI_LDPC_MUBF_MU 1430 4 0.28%
VHT_BW80_2SS_MCS9_LGI_LDPC_MUBF_MU 5220 31 0.59%
VHT_BW80_2SS_MCS9_LGI_LDPC_iBF 59 0 0.00%
VHT_BW80_2SS_MCS9_SGI_LDPC_MUBF 64 2 3.12%
VHT_BW80_2SS_MCS9_SGI_LDPC_MUBF_MU 22132 76 0.34%
VHT_BW80_2SS_MCS9_SGI_LDPC_iBF 2866 1 0.03%
2 VHT_BW80_2SS_MCS7_LGI_LDPC_MUBF_MU 3781 5 0.13%
VHT_BW80_2SS_MCS7_SGI_LDPC_MUBF_MU 735 0 0.00%
VHT_BW80_2SS_MCS8_LGI_LDPC_MUBF_MU 1270 365 28.74%
VHT_BW80_2SS_MCS8_SGI_LDPC_MUBF_MU 3420 57 1.67%
VHT_BW80_2SS_MCS9_LGI_LDPC_MUBF 128 0 0.00%
VHT_BW80_2SS_MCS9_LGI_LDPC_MUBF_MU 64 0 0.00%
VHT_BW80_2SS_MCS9_SGI_LDPC_MUBF 191 0 0.00%
VHT_BW80_2SS_MCS9_SGI_LDPC_MUBF_MU 18833 320 1.70%
VHT_BW80_2SS_MCS9_SGI_LDPC_iBF 6040 0 0.00%
287 OFDM 6M
Tested-by: Evelyn Tsai <evelyn.tsai@mediatek.com>
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Thu, 10 Jun 2021 18:43:46 +0000 (02:43 +0800)]
mt76: mt7915: introduce mt7915_mcu_set_txbf()
Use mt7915_mcu_set_txbf() to reduce global functions. This can be
easily extended to support other TxBF commands in further patches.
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Thu, 10 Jun 2021 18:43:45 +0000 (02:43 +0800)]
mt76: make mt76_update_survey() per phy
Reduce duplicated survey for DBDC.
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Tue, 25 May 2021 16:45:04 +0000 (18:45 +0200)]
mt76: mt7915: drop the use of repeater entries for station interfaces
There are firmware or hardware issues, which are currently causing tx hangs
when attempting to use these interfaces
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Sat, 5 Jun 2021 11:50:52 +0000 (13:50 +0200)]
mt76: connac: check band caps in mt76_connac_mcu_set_rate_txpower
Check device band capabilities before configuring single-sku
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Thu, 10 Jun 2021 07:44:12 +0000 (09:44 +0200)]
mt76: move mt76_get_next_pkt_id in mt76.h
In order to remove duplicated code, move mt76_get_next_pkt_id routine
in mt76.h
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Wed, 9 Jun 2021 15:13:58 +0000 (17:13 +0200)]
mt76: reduce rx buffer size to 2048
Reduce rx buffer size to 2048 for mt7921/mt7915/mt7615 since we
now support rx amsdu offload
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Sean Wang [Wed, 9 Jun 2021 06:15:32 +0000 (14:15 +0800)]
mt76: connac: fix the maximum interval schedule scan can support
Maximum interval (in seconds) for schedule scan plan supported by
the offload firmware can be U16_MAX.
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Shayne Chen [Tue, 8 Jun 2021 06:55:58 +0000 (14:55 +0800)]
mt76: mt7915: fix rx fcs error count in testmode
FCS error packets are filtered by default and won't be reported to
driver, so that RX fcs error and PER in testmode always show zero.
Fix this issue by reading fcs error count from hw counter.
We did't fix this issue by disabling fcs error rx filter since it may
let HW suffer some SER errors.
Fixes:
5d8a83f09941 ("mt76: mt7915: implement testmode rx support")
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Shayne Chen [Tue, 8 Jun 2021 06:55:57 +0000 (14:55 +0800)]
mt76: testmode: move chip-specific stats dump before common stats
Move chip-specific stats dumping part before common stats dumping
to provide flexibility for per-chip driver to modify the value of
common stats.
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Sun, 6 Jun 2021 13:18:12 +0000 (15:18 +0200)]
mt76: connac: add mt76_connac_mcu_get_nic_capability utility routine
Introduce mt76_connac_mcu_get_nic_capability utility routine to poll
device capabilities returned by mcu fw for CE devices (mt7663/mt7921).
This is a preliminary patch to introduce 6GHz support.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Sat, 5 Jun 2021 13:12:48 +0000 (15:12 +0200)]
mt76: mt7921: make mt7921_set_channel static
Make mt7921_set_channel routine static since it is only used in main.c
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Sat, 5 Jun 2021 11:46:03 +0000 (13:46 +0200)]
mt76: mt7921: wake the device before dumping power table
Always wake the device up before dumping the single_sku power table
otherwise the device can hang.
Fixes:
ea29acc97c555 ("mt76: mt7921: add dumping Tx power table")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Wed, 2 Jun 2021 21:25:28 +0000 (23:25 +0200)]
mt76: connac: add mt76_connac_power_save_sched in mt76_connac_pm_unref
Schedule power_save work running mt76_connac_pm_unref in order to reduce
power consumption
Tested-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Wed, 2 Jun 2021 16:00:14 +0000 (18:00 +0200)]
mt76: connac: fix UC entry is being overwritten
Fix UC entry is being overwritten by BC entry
Tested-by: Deren Wu <deren.wu@mediatek.com>
Co-developed-by: Deren Wu <deren.wu@mediatek.com>
Signed-off-by: Deren Wu <deren.wu@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Sun, 6 Jun 2021 07:45:54 +0000 (09:45 +0200)]
mt76: mt7921: enable VHT BFee capability
Enables VHT beamformee functionality
Signed-off-by: Leon Yen <Leon.Yen@mediatek.com>
Signed-off-by: Deren Wu <deren.wu@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Mon, 17 May 2021 04:45:58 +0000 (12:45 +0800)]
mt76: mt7915: fix MT_EE_CAL_GROUP_SIZE
Fix wrong offset for pre-calibration data.
Fixes:
495184ac91bb ("mt76: mt7915: add support for applying pre-calibration data")
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Wed, 2 Jun 2021 03:04:03 +0000 (11:04 +0800)]
mt76: mt7615: update radar parameters
Patch radar parameters to match the SDK to avoid possible false alarms.
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Wed, 2 Jun 2021 01:50:17 +0000 (09:50 +0800)]
mt76: mt7915: setup drr group for peers
This is a prerequisite for MU functionality.
Tested-by: Evelyn Tsai <evelyn.tsai@mediatek.com>
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Deren Wu [Mon, 31 May 2021 17:01:22 +0000 (01:01 +0800)]
mt76: mt7921: enable random mac address during sched_scan
Enable src address randomization during scheduled scanning
Co-developed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Deren Wu <deren.wu@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Mon, 31 May 2021 15:53:29 +0000 (17:53 +0200)]
mt76: mt7921: remove mt7921_get_wtbl_info routine
Since now the fw reports tx rate events without polling,
mt7921_get_wtbl_info and related structures are no longer used.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Mon, 31 May 2021 06:33:18 +0000 (08:33 +0200)]
mt76: mt7921: enable hw offloading for wep keys
Enable wep key hw offloading for sta mode. This patch fixes
WoW support for wep connections.
Tested-by: Deren.Wu <deren.wu@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Shayne Chen [Sat, 29 May 2021 11:11:50 +0000 (19:11 +0800)]
mt76: mt7915: read all eeprom fields from fw in efuse mode
If efuse mode is used, read all values from fw during eeprom init,
which makes it more convinient to check if rf values in efuse are
properly burned.
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Sat, 15 May 2021 04:17:29 +0000 (12:17 +0800)]
mt76: mt7915: use mt7915_mcu_get_mib_info() to get survey data
Firmware functions (SCS, MU ...) also require read-clear phy counters,
hence firmware prepares a global task to read shared fields out to a
shared pool to avoid concurrency. Switch to event format accordingly.
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Fri, 28 May 2021 17:11:42 +0000 (19:11 +0200)]
mt76: mt7921: set MT76_RESET during mac reset
Set MT76_RESET during mt7921_mac_reset in order to avoid packet
transmissions. Move tx scheduling at the end of reset routine.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Felix Fietkau [Tue, 1 Jun 2021 20:26:31 +0000 (22:26 +0200)]
mt76: mt7915: improve error recovery reliability
- Remove no-op code for queue lock/unlock, which is no longer needed
- Set a missing DMA flag
- Wait for full completion of error recovery before restarting tx
- Schedule IRQ tasklet to ensure that IRQ mask gets written
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Fri, 28 May 2021 11:02:24 +0000 (13:02 +0200)]
mt76: allow hw driver code to overwrite wiphy interface_modes
Move wiphy interface_modes configuration in mt76_alloc_device and
mt76_alloc_phy in order to be overwritten by hw specific code
since some drivers do not support all operating modes (mt7921
supports sta only in the current codebase)
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Deren Wu [Thu, 27 May 2021 17:05:33 +0000 (01:05 +0800)]
mt76: mt7921: update statistic in active mode only
wakeup chip every 250ms may cause huge power consumption
try to update statistic counter only if in active status only,
and it would lead fewer power cost
Signed-off-by: Deren Wu <deren.wu@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Deren Wu [Fri, 28 May 2021 11:38:09 +0000 (19:38 +0800)]
mt76: mt7921: introduce mac tx done handling
Instead of read tx status from mac table, add new mechanisam to hanele
tx done event for data frame, every 250ms
This event indicate the real tx status of this pkt in mac layer and
would help mac80211 correct status more frequently
Signed-off-by: Deren Wu <deren.wu@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Wed, 21 Apr 2021 22:20:03 +0000 (06:20 +0800)]
mt76: mt7615: fix potential overflow on large shift
Fix the following static checker warning:
error: undefined (user controlled) shift '(((1))) << (c->omac_idx)'
Fixes:
402a695b1ae6 ("mt76: mt7615: fix CSA notification for DBDC")
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Thu, 27 May 2021 11:35:30 +0000 (13:35 +0200)]
mt76: testmode: remove undefined behaviour in mt76_testmode_alloc_skb
Get rid of an undefined behaviour in mt76_testmode_alloc_skb routine
allocating skb frames
Fixes:
2601dda8faa76 ("mt76: testmode: add support to send larger packet")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Thu, 27 May 2021 11:35:29 +0000 (13:35 +0200)]
mt76: testmode: remove unnecessary function calls in mt76_testmode_free_skb
Get rid of unnecessary function calls in mt76_testmode_free_skb routine
since they are already managed by dev_kfree_skb
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Thu, 27 May 2021 11:35:28 +0000 (13:35 +0200)]
mt76: testmode: fix memory leak in mt76_testmode_alloc_skb
Free all pending frames in case of failure in mt76_testmode_alloc_skb
routine
Fixes:
2601dda8faa76 ("mt76: testmode: add support to send larger packet")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Thu, 27 May 2021 11:01:24 +0000 (13:01 +0200)]
mt76: mt7615: remove useless if condition in mt7615_add_interface()
Get rid of unnecessary if condition in mt7615_add_interface routine
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Shayne Chen [Tue, 25 May 2021 10:34:09 +0000 (18:34 +0800)]
mt76: mt7915: use mt7915_mcu_get_txpower_sku() to get per-rate txpower
Get per-rate txpower with mcu command. This is the preparation of
co-driver for the next chipset, which has different tmac power registers
but can share this same command.
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Tue, 25 May 2021 09:22:24 +0000 (17:22 +0800)]
mt76: mt7615: add .offset_tsf callback
It's much more accurate than .get_tsf + .set_tsf and switch to use
mt76_rmw to operate tsf registers.
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Tue, 25 May 2021 08:45:14 +0000 (16:45 +0800)]
mt76: mt7915: add .offset_tsf callback
It's much more accurate than .get_tsf + .set_tsf, and switch to use
mt76_rmw to operate tsf registers.
Tested-by: Xing Song <xing.song@mediatek.com>
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Sun, 23 May 2021 21:10:12 +0000 (23:10 +0200)]
mt76: mt7921: reset wfsys during hw probe
This patch fixes a mcu hang during device probe on
Marvell ESPRESSObin after a hot reboot.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Sun, 23 May 2021 21:08:05 +0000 (23:08 +0200)]
mt76: mt7921: do not schedule hw reset if the device is not running
Do not schedule hw full reset if the device is not fully initialized
(e.g if the channel has not been configured yet). This patch fixes
the kernel crash reported below
[ 44.440266] mt7921e 0000:01:00.0: chip reset failed
[ 44.527575] Unable to handle kernel paging request at virtual address
ffffffc02f3e0000
[ 44.535771] Mem abort info:
[ 44.538646] ESR = 0x96000006
[ 44.541792] EC = 0x25: DABT (current EL), IL = 32 bits
[ 44.547268] SET = 0, FnV = 0
[ 44.550413] EA = 0, S1PTW = 0
[ 44.553648] Data abort info:
[ 44.556613] ISV = 0, ISS = 0x00000006
[ 44.560563] CM = 0, WnR = 0
[ 44.563619] swapper pgtable: 4k pages, 39-bit VAs, pgdp=
0000000000955000
[ 44.570530] [
ffffffc02f3e0000] pgd=
100000003ffff003, p4d=
100000003ffff003, pud=
100000003ffff003, pmd=
0000000000000000
[ 44.581489] Internal error: Oops:
96000006 [#1] SMP
[ 44.606406] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G W 5.13.0-rc1-espressobin-12875-g6dc7f82ebc26 #33
[ 44.617264] Hardware name: Globalscale Marvell ESPRESSOBin Board (DT)
[ 44.623905] pstate:
600000c5 (nZCv daIF -PAN -UAO -TCO BTYPE=--)
[ 44.630100] pc : __queue_work+0x1f0/0x500
[ 44.634249] lr : __queue_work+0x1e8/0x500
[ 44.638384] sp :
ffffffc010003d70
[ 44.641798] x29:
ffffffc010003d70 x28:
0000000000000000 x27:
ffffff8003989200
[ 44.649166] x26:
ffffffc010c08510 x25:
0000000000000002 x24:
ffffffc010ad90b0
[ 44.656533] x23:
ffffffc010c08508 x22:
0000000000000012 x21:
0000000000000000
[ 44.663899] x20:
ffffff8006385238 x19:
ffffffc02f3e0000 x18:
00000000000003c9
[ 44.671266] x17:
0000000000000000 x16:
0000000000000000 x15:
000009b1a8a3bf90
[ 44.678632] x14:
0098968000000000 x13:
0000000000000000 x12:
0000000000000325
[ 44.685998] x11:
ffffff803fda1928 x10:
0000000000000001 x9 :
ffffffc010003e98
[ 44.693365] x8 :
0000000000000032 x7 :
fff8000000000000 x6 :
0000000000000035
[ 44.700732] x5 :
0000000000000000 x4 :
0000000000000000 x3 :
ffffffc010adf700
[ 44.708098] x2 :
ffffff8006385238 x1 :
000000007fffffff x0 :
0000000000000000
[ 44.715465] Call trace:
[ 44.717982] __queue_work+0x1f0/0x500
[ 44.721760] delayed_work_timer_fn+0x18/0x20
[ 44.726167] call_timer_fn+0x2c/0x178
[ 44.729947] run_timer_softirq+0x488/0x5c8
[ 44.734172] _stext+0x11c/0x378
[ 44.737411] irq_exit+0x100/0x108
[ 44.740830] __handle_domain_irq+0x60/0xb0
[ 44.745059] gic_handle_irq+0x70/0x2b4
[ 44.748929] el1_irq+0xb8/0x13c
[ 44.752167] arch_cpu_idle+0x14/0x30
[ 44.755858] default_idle_call+0x38/0x168
[ 44.759994] do_idle+0x1fc/0x210
[ 44.763325] cpu_startup_entry+0x20/0x58
[ 44.767372] rest_init+0xb8/0xc8
[ 44.770703] arch_call_rest_init+0xc/0x14
[ 44.774841] start_kernel+0x408/0x424
[ 44.778623] Code:
aa1403e0 97fff54f aa0003f5 b5fff500 (
f9400275)
[ 44.784907] ---[ end trace
be73c3142d8c36a9 ]---
[ 44.789668] Kernel panic - not syncing: Oops: Fatal exception in interrupt
Fixes:
0c1ce9884607 ("mt76: mt7921: add wifi reset support")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Lorenzo Bianconi [Sun, 23 May 2021 21:03:26 +0000 (23:03 +0200)]
mt76: mt7921: return proper error value in mt7921_mac_init
Return possible error values in mt7921_mac_init routine
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
YN Chen [Thu, 20 May 2021 03:46:35 +0000 (11:46 +0800)]
mt76: connac: add bss color support for sta mode
Add bss color support for sta mode
Signed-off-by: Jayden.Kuo <jayden.kuo@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 [Thu, 20 May 2021 03:46:41 +0000 (11:46 +0800)]
mt76: mt7921: enable runtime pm by default
mt7921 is mainly used in CE/IoT market so enable runtime-pm by default
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Sean Wang [Thu, 20 May 2021 03:46:40 +0000 (11:46 +0800)]
mt76: mt7921: fix OMAC idx usage
OMAC idx have to be same with BSS idx according to firmware usage.
Fixes:
e0f9fdda81bd ("mt76: mt7921: add ieee80211_ops")
Reviewed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Deren Wu <deren.wu@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>
Sean Wang [Thu, 20 May 2021 03:46:39 +0000 (11:46 +0800)]
mt76: mt7921: fix invalid register access in wake_work
Make sure mt7921_pm_wake_work wouldn't be scheduled after the driver is
in suspend mode to fix the following the kernel crash.
[ 3515.390012] mt7921e 0000:01:00.0: calling pci_pm_suspend+0x0/0x22c @ 2869, parent: 0000:00:00.0
[ 3515.390015] mt7921e 0000:01:00.0: mt7921_pci_suspend +
[ 3515.396395] anx7625 3-0058: anx7625_suspend+0x0/0x6c returned 0 after 0 usecs
[ 3515.405965] mt7921e 0000:01:00.0: mt7921_pci_suspend -
[ 3515.411336] usb 1-1.4: usb_dev_suspend+0x0/0x2c returned 0 after 1 usecs
[ 3515.411513] SError Interrupt on CPU7, code 0xbe000011 -- SError
[ 3515.411515] CPU: 7 PID: 2849 Comm: kworker/u16:27 Not tainted 5.4.114 #44
[ 3515.411516] Hardware name: MediaTek Asurada rev1 board (DT)
[ 3515.411517] Workqueue: mt76 mt7921_pm_wake_work [mt7921e]
[ 3515.411518] pstate:
80c00009 (Nzcv daif +PAN +UAO)
[ 3515.411519] pc : mt76_mmio_rr+0x30/0xf0 [mt76]
[ 3515.411520] lr : mt7921_rr+0x38/0x44 [mt7921e]
[ 3515.411520] sp :
ffffffc015813c50
[ 3515.411521] x29:
ffffffc015813c50 x28:
0000000000000402
[ 3515.411522] x27:
ffffffe5a2012138 x26:
ffffffe5a1eea018
[ 3515.411524] x25:
00000000328be505 x24:
00000000000a0002
[ 3515.411525] x23:
0000000000000006 x22:
ffffffbd29b7a300
[ 3515.411527] x21:
ffffffbd29b7a300 x20:
00000000000e0010
[ 3515.411528] x19:
00000000eac08f43 x18:
0000000000000000
[ 3515.411529] x17:
0000000000000000 x16:
ffffffe5a16b2914
[ 3515.411531] x15:
0000000000000010 x14:
0000000000000010
[ 3515.411532] x13:
00000000003dd3a2 x12:
0000000000010000
[ 3515.411533] x11:
ffffffe597abec14 x10:
0000000000000010
[ 3515.411535] x9 :
ffffffe597abeba8 x8 :
ffffffc013ce0010
[ 3515.411536] x7 :
000000b2b5593519 x6 :
0000000000300000
[ 3515.411537] x5 :
0000000000000000 x4 :
0000000000000032
[ 3515.411539] x3 :
0000000000000000 x2 :
0000000000000004
[ 3515.411540] x1 :
00000000000e0010 x0 :
ffffffbd29b7a300
[ 3515.411542] Kernel panic - not syncing: Asynchronous SError Interrupt
[ 3515.411543] CPU: 7 PID: 2849 Comm: kworker/u16:27 Not tainted 5.4.114 #44
[ 3515.411544] Hardware name: MediaTek Asurada rev1 board (DT)
[ 3515.411544] Workqueue: mt76 mt7921_pm_wake_work [mt7921e]
[ 3515.411545] Call trace:
[ 3515.411546] dump_backtrace+0x0/0x14c
[ 3515.411546] show_stack+0x20/0x2c
[ 3515.411547] dump_stack+0xa0/0xfc
[ 3515.411548] panic+0x154/0x350
[ 3515.411548] panic+0x0/0x350
[ 3515.411549] arm64_serror_panic+0x78/0x84
[ 3515.411550] do_serror+0x0/0x118
[ 3515.411550] do_serror+0xa4/0x118
[ 3515.411551] el1_error+0x84/0xf8
[ 3515.411552] mt76_mmio_rr+0x30/0xf0 [mt76]
[ 3515.411552] mt7921_rr+0x38/0x44 [mt7921e]
[ 3515.411553] __mt76_poll_msec+0x5c/0x9c [mt76]
[ 3515.411554] __mt7921_mcu_drv_pmctrl+0x50/0x94 [mt7921e]
[ 3515.411555] mt7921_mcu_drv_pmctrl+0x38/0xb0 [mt7921e]
[ 3515.411555] mt7921_pm_wake_work+0x34/0xd4 [mt7921e]
[ 3515.411556] process_one_work+0x208/0x3c8
[ 3515.411557] worker_thread+0x23c/0x3e8
[ 3515.411557] kthread+0x144/0x178
[ 3515.411558] ret_from_fork+0x10/0x18
[ 3515.418831] SMP: stopping secondary CPUs
[ 3515.418832] Kernel Offset: 0x2590c00000 from 0xffffffc010000000
[ 3515.418832] PHYS_OFFSET: 0xffffffc400000000
[ 3515.418833] CPU features: 0x080026,
2a80aa18
[ 3515.418834] Memory Limit: none
[DL]
00000000 00000000 010701
Fixes:
1d8efc741df80 ("mt76: mt7921: introduce Runtime PM support")
Co-developed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Sean Wang [Thu, 20 May 2021 03:46:38 +0000 (11:46 +0800)]
mt76: mt7921: avoid unnecessary consecutive WiFi resets
Avoid unnecessary consecutive WiFi resets by dropping reset
request when reset work is working.
Co-developed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Deren Wu [Thu, 20 May 2021 03:46:36 +0000 (11:46 +0800)]
mt76: connac: update BA win size in Rx direction
Update BA size used data transimission in the Rx direction to improve Rx
throughput.
Reviewed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Deren Wu <deren.wu@mediatek.com>
Signed-off-by: Leon Yen <leon.yen@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>
Ryder Lee [Fri, 23 Apr 2021 22:02:06 +0000 (06:02 +0800)]
mt76: mt7615: add thermal sensor device support
Similar to mt7915, switching to use standard hwmon sysfs.
For reading temperature, cat /sys/class/ieee80211/phy*/hwmon*/temp1_input
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Fri, 23 Apr 2021 22:02:05 +0000 (06:02 +0800)]
mt76: mt7915: add thermal cooling device support
Thermal cooling device support is added to control the temperature by
throttling the data transmission for the given duration. Throttling is
done by adjusting Tx period by given percentage of time. The thermal
device allows user to configure duty cycle.
Throttling can be disabled by setting the duty cycle to 0. The cooling
device can be found under /sys/class/thermal/cooling_deviceX/.
Corresponding soft link to this device can be found under phy folder
To set duty cycle as 80%,
echo 80 > /sys/class/ieee80211/phy*/cooling_device/cur_state
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Ryder Lee [Fri, 23 Apr 2021 22:02:04 +0000 (06:02 +0800)]
mt76: mt7915: add thermal sensor device support
This provides userspace with a unified interface, hwmon sysfs, to monitor
temperature in the hardware and can be adapted to system monitoring tools.
For reading temperature, cat /sys/class/ieee80211/phy*/hwmon*/temp1_input
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Sean Wang [Mon, 10 May 2021 15:14:57 +0000 (23:14 +0800)]
mt76: mt7921: add back connection monitor support
Hw beacon cmd to the mt7921 firmware doesn't only filter out the beacon,
but also performs its own connection monitoring, including periodic
keep-alives to the AP and probing the AP on beacon loss. Will indicate
the host with the event when the firmware detects the connection is lost.
Fixes:
1d8efc741df8 ("mt76: mt7921: introduce Runtime PM support")
Reviewed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Deren Wu <deren.wu@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>
Sean Wang [Mon, 10 May 2021 15:14:55 +0000 (23:14 +0800)]
mt76: mt7921: consider the invalid value for to_rssi
It is possible the RCPI from the certain antenna is an invalid value,
especially packets are receiving while the system is frequently entering
deep sleep mode, so consider calculating RSSI with the reasonable upper
bound to avoid report the wrong value to the mac80211 layer.
Fixes:
163f4d22c118 ("mt76: mt7921: add MAC support")
Reviewed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
YN Chen [Mon, 10 May 2021 15:14:54 +0000 (23:14 +0800)]
mt76: connac: fix WoW with disconnetion and bitmap pattern
Update MCU command usage to fix WoW configuration with disconnection
and bitmap pattern and to avoid magic number.
Fixes:
ffa1bf97425b ("mt76: mt7921: introduce PM support")
Reviewed-by: Lorenzo Bianconi <lorenzo@kernel.org>
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>
Sean Wang [Thu, 20 May 2021 03:46:37 +0000 (11:46 +0800)]
mt76: mt7921: fix reset under the deep sleep is enabled
To fix possibly the race to access register between the WiFi reset
and the other context that is caused by explicitly cancelling ps_work
and wake_work to break PM_STATE consistency.
Deep sleep would cause the hardware into the inactive state,
so we forcely put device drv_own state before we start to reset.
The patch also ignore the reset request when the procedure is in
progress to avoid the consecutive WiFi resets.
localhost ~ # [ 2932.073966] SError Interrupt on CPU7, code 0xbe000011
[ 2932.073967] CPU: 7 PID: 8761 Comm: kworker/u16:2 Not tainted 5.4.112 #30
[ 2932.073968] Hardware name: MediaTek Asurada rev1 board (DT)
[ 2932.073968] Workqueue: phy0 ieee80211_reconfig_filter [mac80211]
[ 2932.073969] pstate:
80400089 (Nzcv daIf +PAN -UAO)
[ 2932.073969] pc : el1_irq+0x78/0x180
[ 2932.073970] lr : mt76_mmio_rmw+0x30/0x5c [mt76]
[ 2932.073970] sp :
ffffffc01142bad0
[ 2932.073970] x29:
ffffffc01142bc00 x28:
ffffff8f96fb1e00
[ 2932.073971] x27:
ffffffd2cdc12138 x26:
ffffffd2cdaeb018
[ 2932.073972] x25:
0000000000000000 x24:
ffffff8fa8e14c08
[ 2932.073973] x23:
0000000080c00009 x22:
ffffffd2a5603918
[ 2932.073974] x21:
ffffffc01142bc10 x20:
0000007fffffffff
[ 2932.073975] x19:
0000000000000000 x18:
0000000000000400
[ 2932.073975] x17:
0000000000000400 x16:
ffffffd2cd2b87dc
[ 2932.073976] x15:
0000000000000000 x14:
0000000000000000
[ 2932.073977] x13:
0000000000000001 x12:
0000000000000001
[ 2932.073978] x11:
0000000000000001 x10:
000000000010e000
[ 2932.073978] x9 :
0000000000000000 x8 :
ffffffc013921404
[ 2932.073979] x7 :
000000b2b5593519 x6 :
0000000000300000
[ 2932.073980] x5 :
0000000000000000 x4 :
ffffffc01142bbc8
[ 2932.073980] x3 :
00000000000001f0 x2 :
0000000000000000
[ 2932.073981] x1 :
0000000000021404 x0 :
ffffff8fa8e12300
[ 2932.073982] Kernel panic - not syncing: Asynchronous SError Interrupt
[ 2932.073983] CPU: 7 PID: 8761 Comm: kworker/u16:2 Not tainted 5.4.112 #30
[ 2932.073983] Hardware name: MediaTek Asurada rev1 board (DT)
[ 2932.073984] Workqueue: phy0 ieee80211_reconfig_filter [mac80211]
[ 2932.073984] Call trace:
[ 2932.073985] dump_backtrace+0x0/0x14c
[ 2932.073985] show_stack+0x20/0x2c
[ 2932.073985] dump_stack+0xa0/0xf8
[ 2932.073986] panic+0x154/0x360
[ 2932.073986] test_taint+0x0/0x44
[ 2932.073986] arm64_serror_panic+0x78/0x84
[ 2932.073987] do_serror+0x0/0x118
[ 2932.073987] do_serror+0xa4/0x118
[ 2932.073987] el1_error+0x84/0xf8
[ 2932.073988] el1_irq+0x78/0x180
[ 2932.073988] mt76_mmio_rr+0x30/0xf0 [mt76]
[ 2932.073988] mt76_mmio_rmw+0x30/0x5c [mt76]
[ 2932.073989] mt7921_rmw+0x4c/0x5c [mt7921e]
[ 2932.073989] mt7921_configure_filter+0x138/0x160 [mt7921e]
[ 2932.073990] ieee80211_configure_filter+0x2f0/0x3e0 [mac80211]
[ 2932.073990] ieee80211_reconfig_filter+0x1c/0x28 [mac80211]
[ 2932.073990] process_one_work+0x208/0x3c8
[ 2932.073991] worker_thread+0x23c/0x3e8
[ 2932.073991] kthread+0x140/0x17c
[ 2932.073992] ret_from_fork+0x10/0x18
[ 2932.074071] SMP: stopping secondary CPUs
[ 2932.074071] Kernel Offset: 0x12bc800000 from 0xffffffc010000000
[ 2932.074072] PHYS_OFFSET: 0xfffffff180000000
[ 2932.074072] CPU features: 0x080026,
2a80aa18
[ 2932.074072] Memory Limit: none
Co-developed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Sean Wang [Mon, 10 May 2021 15:14:51 +0000 (23:14 +0800)]
mt76: connac: fw_own rely on all packet memory all being free
If the device is MMIO-based, we must ensure all TxD/TxP on the host
memory all being consumed by the device prior to safely switching to
fw_own state.
Fixes:
ec7bd7b4a9c0 ("mt76: connac: check wake refcount in mcu_fw_pmctrl")
Reviewed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Sean Wang [Mon, 10 May 2021 15:14:50 +0000 (23:14 +0800)]
mt76: mt7921: Don't alter Rx path classifier
Keep Rx path classifier the mt7921 firmware prefers to allow frames pass
through MCU.
Fixes:
5c14a5f944b9 ("mt76: mt7921: introduce mt7921e support")
Reviewed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Sean Wang [Mon, 10 May 2021 15:14:49 +0000 (23:14 +0800)]
mt76: mt7921: fix mt7921_wfsys_reset sequence
WiFi subsytem reset should control MT_WFSYS_SW_RST_B and then poll the
same register until the bit WFSYS_SW_INIT_DONE bit is set.
Fixes:
0c1ce9884607 ("mt76: mt7921: add wifi reset support")
Reviewed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>