100 Commits
Author SHA1 Message Date
Felix Fietkau d2abbe66f6 wifi: mt76: mt7915: decrease timeout for commonly issued MCU commands
This allows faster recovery from firmware issues

Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:27 +02:00
Felix Fietkau 3be3e7352d wifi: mt76: mt7915: hold dev->mutex while interacting with the thermal state
Avoid issuing MCU calls during a hardware restart

Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:27 +02:00
Felix Fietkau b2b6ccf8ee wifi: mt76: mt7915: fix omac index assignment after hardware reset
Reset per-phy mac address slot mask in order to avoid leaking entries.

Fixes: 8a55712d124f ("wifi: mt76: mt7915: enable full system reset support")
Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:27 +02:00
Felix Fietkau 34644d6f2b wifi: mt76: mt7915: firmware restart on devices with a second pcie link
It seems that the firmware checks the register used for detecting matching
PCIe links in order to figure out if a secondary PCIe link is enabled.
Write the register again just before starting the firmware on hw reset,
in order to fix an issue that left the second band unusable after restart.

Fixes: 9093cfff72e3 ("mt76: mt7915: add support for using a secondary PCIe link for gen1")
Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:27 +02:00
Felix Fietkau 562b1147dd wifi: mt76: mt7915: reduce the number of command retries
The need to retry a command is really uncommon. Reduce the retries to 1 to
speed up recovery from firmware issues.

Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:27 +02:00
Felix Fietkau b3180075cc wifi: mt76: mt7915: fix slot time for 5/6GHz
It should only be set to 20 for long slot time on 2.4 GHz

Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:27 +02:00
Felix Fietkau cee0b9b60d wifi: mt76: mt76x0: fix locking regression
mt76_update_channel already takes dev->mt76.mutex

Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:27 +02:00
Felix Fietkau 990f94e1ac wifi: mt76: mt7915: improve hardware recovery
Do not trigger full restarts when running into timeouts during SER.
Immediately abort MCU commands when firmware requests DMA restart.

Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:27 +02:00
Felix Fietkau 3314432263 firmware: update mt7916/mt7981/mt7986 firmware to version 20240823
Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:27 +02:00
Felix Fietkau af0b8c5789 wifi: mt76: mt7915: fix unused variable error
Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:27 +02:00
Felix Fietkau a7ac0558dd wifi: mt76: mt7915: improve hardware restart reliability
- use reconfig_complete to restart mac_work / queues
- reset full wtbl after firmware init
- clear wcid and vif mask to avoid leak

Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:27 +02:00
Felix Fietkau ad05f5f258 wifi: mt76: connac: move mt7615_mcu_del_wtbl_all to connac
Preparation for reusing it in mt7915

Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:27 +02:00
Felix Fietkau 93ce47b661 firmware: update MT7986 firmware to version 20240507160203
Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:27 +02:00
Felix Fietkau 0e1e5bd5f0 firmware: update MT7981 firmware to version 20240507201102
Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:27 +02:00
Felix Fietkau 325eb4b419 wifi: mt76: mt7915: fix sta poll list corruption on hw restart
When ieee80211_restart_hw is called, all interfaces and stations are
recreated. This can lead to corruption in the sta poll list, since
existing entries were not removed before their private data is reset.

Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:27 +02:00
Felix Fietkau 3d47eba8d9 wifi: mt76: mt7915: hold dev->mt76.mutex while disabling tx worker
Prevent racing against other functions disabling the same worker

Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:27 +02:00
Felix Fietkau 78cbf5d4ad wifi: mt76: fix off-channel wcid pending queue handling
- migrate offchannel to on-channel on switch
- fix scheduling during offchannel

Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:26 +02:00
Felix Fietkau c2438bbe24 wifi: mt76: mt7915: reset the device after MCU timeout
On MT7915, MCU hangs do not trigger watchdog interrupts, so they can only
be detected through MCU message timeouts. Ensure that the hardware gets
restarted when that happens in order to prevent a permanent stuck state.

Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:26 +02:00
Felix Fietkau 8b0178d1d7 wifi: mt76: mt7915: retry mcu messages
In some cases MCU messages can get lost. Instead of failing completely,
attempt to recover by re-sending them.

Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:26 +02:00
Felix Fietkau aded704ee9 wifi: mt76: mt7915: set MT76_MCU_RESET early in mt7915_mac_full_reset
This avoids running into unnecessary timeouts waiting for MCU responses

Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:26 +02:00
Felix Fietkau acdc822183 wifi: mt76: mt7915: allocate vif wcid in the same range as stations
Reduces the amount of unnecessary WTBL bank switching, while still reserving
WTBL entries for vifs.

Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:26 +02:00
Felix Fietkau 11208b7658 wifi: mt76: mt7915: use mac80211 .sta_state op
Allows adding stations before assoc, though they are not passed to the
firmware yet at that point.

Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:26 +02:00
Felix Fietkau b651391b88 wifi: mt76: change .sta_assoc callback to .sta_event
Also report auth/disassoc events, in order to give the driver more control over
handling the station state.

Signed-off-by: Felix Fietkau <[email protected]>
2024-10-17 12:32:26 +02:00
Felix Fietkau 34aad4127a wifi: mt76: connac: add support for passing connection state directly
Preparation for improvements to sta handling. No functional changes.

Signed-off-by: Felix Fietkau <[email protected]>
2024-08-27 11:09:34 +02:00
Felix Fietkau dda31744ff wifi: mt76: mt7915: disable tx worker during tx BA session enable/disable
Avoids firmware race condition.

Signed-off-by: Felix Fietkau <[email protected]>
2024-08-27 10:35:48 +02:00
Felix Fietkau 6f78add122 wifi: mt76: add separate tx scheduling queue for off-channel tx
Ensure that packets are not sent out to the wrong channel

Signed-off-by: Felix Fietkau <[email protected]>
2024-08-27 10:35:48 +02:00
Felix Fietkau c47de95855 wifi: mt76: partially move channel change code to core
This allows the core code to change the channel. Code deduplication and
preparation for adding scanning code to the core.

Signed-off-by: Felix Fietkau <[email protected]>
2024-08-27 10:35:48 +02:00
Felix Fietkau 69705f4ebe firmware: update firmware for MT7915 to 20240429200502
Signed-off-by: Felix Fietkau <[email protected]>
2024-08-27 10:35:48 +02:00
Felix Fietkau 2c78b0c889 wifi: mt76: mt7915: always query station rx rate from firmware
When offloading is enabled, the software rx path may not have the latest
rate information.

Signed-off-by: Felix Fietkau <[email protected]>
2024-08-27 10:35:48 +02:00
Felix Fietkau 1c8af73782 wifi: mt76: fix mt76_get_rate
Do not assume that the first phy has 2 GHz support.
Check sband->band instead of accessing dev->phy.sband_2g.

Signed-off-by: Felix Fietkau <[email protected]>
2024-08-27 10:35:48 +02:00
Felix Fietkau 03f8494814 wifi: mt76: mt7921: fix crash on ipv6 addr notification during vif bringup
mvif->phy is NULL when the interface is not properly initialized yet

Signed-off-by: Felix Fietkau <[email protected]>
2024-08-27 10:35:48 +02:00
Felix Fietkau e8de65a27a mt76: mt7603: fix mixed declarations and code
Move the qid variable declaration further up

Fixes: b473c0e47f04 ("wifi: mt76: mt7603: fix tx queue of loopback packets")
Signed-off-by: Felix Fietkau <[email protected]>
2024-08-27 10:35:41 +02:00
Felix Fietkau 8f3bb7dc86 mt76: shrink mt76_queue_buf
Reuse one bit from the length field for skip_unmap

Signed-off-by: Felix Fietkau <[email protected]>
2024-08-27 10:35:41 +02:00
Felix Fietkau 4f0b349902 wifi: mt76: enable spectrum management
It is supported by all drivers

Signed-off-by: Felix Fietkau <[email protected]>
2024-08-27 10:35:41 +02:00
Felix Fietkau d9c62742be wifi: mt76: make const arrays in functions static
Reduces size by avoiding duplicates

Signed-off-by: Felix Fietkau <[email protected]>
2024-04-19 10:02:17 +02:00
Felix Fietkau 2d264aecbf mt76: mt7915: make pre-cal freq lists static const
Signed-off-by: Felix Fietkau <[email protected]>
2024-04-19 09:54:41 +02:00
Felix Fietkau 8f301a5c5f firmware: add mt7981 default eeprom
Signed-off-by: Felix Fietkau <[email protected]>
2024-04-04 17:28:55 +02:00
Felix Fietkau 1e336a8582 wifi: mt76: connac: use muar idx 0xe for non-mt799x as well
This is expected by the firmware of older chipsets as well, though it may
not have been as strongly required as on mt799x

Fixes: 098428c400ff ("wifi: mt76: connac: set correct muar_idx for mt799x chipsets")
Signed-off-by: Felix Fietkau <[email protected]>
2024-04-03 13:05:12 +02:00
Felix Fietkau 669aba47a1 wifi: mt76: mt7915: fix HE PHY capability regression
Fix a logic error that was dropping required capabilities

Signed-off-by: Felix Fietkau <[email protected]>
2024-04-03 11:34:14 +02:00
Felix Fietkau 446f652c96 wifi: mt76: mt7603: add wpdma tx eof flag for PSE client reset
This flag is needed for the PSE client reset. Fixes watchdog reset issues.

Fixes: c677dda16523 ("wifi: mt76: mt7603: improve watchdog reset reliablity")
Signed-off-by: Felix Fietkau <[email protected]>
2024-04-03 11:13:34 +02:00
Felix Fietkau e4de3592c4 wifi: mt76: mt7603: fix tx queue of loopback packets
Use the correct WMM AC queue instead of the MGMT one to fix potential issues
with aggregation sequence number tracking. Drop non-bufferable packets.

Fixes: fca9615f1a43 ("mt76: mt7603: fix up hardware queue index for PS filtered packets")
Signed-off-by: Felix Fietkau <[email protected]>
2024-04-03 11:12:55 +02:00
Felix Fietkau 605624a4e1 mt76: fix path to page_pool helper include
Signed-off-by: Felix Fietkau <[email protected]>
2024-03-24 15:51:52 +01:00
Felix Fietkau 2135e201e7 mt76: mt7915: add fallback in case of missing precal data
When pre-calibration data is missing, do not fail the driver probe.
Instead, just print a warning and fall back to regular calibration.

Signed-off-by: Felix Fietkau <[email protected]>
2024-03-18 10:33:01 +01:00
Felix Fietkau 2330781b8c wifi: mt76: mt7996: only set MT76_MCU_RESET for the main phy
The MT76_MCU_RESET flag is only read on the main phy.

Signed-off-by: Felix Fietkau <[email protected]>
2024-03-15 17:07:47 +01:00
Felix Fietkau b5640b3153 wifi: mt76: fix tx packet loss when scanning on DBDC
When queueing packets, only the MT76_RESET flag of the primary PHY
is checked. If the primary PHY is scanning or changing channels, this can
lead to packet loss for tx on the second PHY.
Fix this by passing the phy to the .tx_queue_skb op and using it to check
the correct flag.

Signed-off-by: Felix Fietkau <[email protected]>
2024-03-15 17:07:47 +01:00
Felix Fietkau 46c7d1849d wifi: mt76: replace skb_put with skb_put_zero
Avoid potentially reusing uninitialized data

Signed-off-by: Felix Fietkau <[email protected]>
2024-03-15 17:07:47 +01:00
Felix Fietkau a238df940d wifi: mt76: mt7915: initialize rssi on adding stations
Improves initial rate selection after connecting

Signed-off-by: Felix Fietkau <[email protected]>
2024-03-15 17:07:31 +01:00
Felix Fietkau 786a339bac wifi: mt76: mt7996: fix fortify warning
Copy cck and ofdm separately in order to avoid __read_overflow2_field
warning.

Fixes: f75e4779d215 ("wifi: mt76: mt7996: add txpower setting support")
Signed-off-by: Felix Fietkau <[email protected]>
2024-02-03 14:22:05 +01:00
Felix Fietkau 3e81173d9e wifi: mt76: mt7603: initialize chainmask
Fixes reported tx power by accounting for the combined output

Signed-off-by: Felix Fietkau <[email protected]>
2024-01-29 11:09:31 +01:00
Felix Fietkau 0258dc90e3 wifi: mt76: mt7603: fix reading target power from eeprom
If the ext-PA target power is unset, fall back to the standard EEPROM value.

Signed-off-by: Felix Fietkau <[email protected]>
2024-01-29 11:00:08 +01:00
Felix Fietkau 3d5890e2ca wifi: mt76: mt7915: fix error recovery with WED enabled
Do not clear the interrupt mask register on MT7915, since that prevents
MCU_CMD interrupts from being reported, thus causing timeouts during the
reset sequence. Defer stopping WED until tx/rx processing activity has
stopped.

Signed-off-by: Felix Fietkau <[email protected]>
2024-01-18 15:51:57 +01:00
Felix Fietkau f559adf184 wifi: mt76: fix crash with WED rx support enabled
If WED rx is enabled, rx buffers are added to a buffer pool that can be
filled from multiple page pools. Because buffers freed from rx poll are
not guaranteed to belong to the processed queue's page pool, lockless
caching must not be used in this case.

Cc: [email protected]
Fixes: 2f5c3c77fc9b ("wifi: mt76: switch to page_pool allocator")
Signed-off-by: Felix Fietkau <[email protected]>
2023-12-08 08:43:42 +01:00
Felix Fietkau 7730fc91dd wifi: mt76: fix shift overflow warnings on 32 bit systems
Signed-off-by: Felix Fietkau <[email protected]>
2023-12-07 18:49:45 +01:00
Felix Fietkau 890ae4d717 wifi: mt76: mt76x02: fix MT76x0 external LNA gain handling
On MT76x0, LNA gain should be applied for both external and internal LNA.
On MT76x2, LNA gain should be treated as 0 for external LNA.
Move the LNA type based logic to mt76x2 in order to fix mt76x0.

Fixes: 2daa67588f34 ("mt76x0: unify lna_gain parsing")
Reported-by: Shiji Yang <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2023-09-19 21:48:01 +02:00
Felix Fietkau 8d5ea32d48 wifi: mt76: remove unused error path in mt76_connac_tx_complete_skb
The error handling code was added in order to allow tx enqueue to fail after
calling .tx_prepare_skb. Since this can no longer happen, the error handling
code is unused.

Signed-off-by: Felix Fietkau <[email protected]>
2023-09-11 15:15:19 +02:00
Felix Fietkau cd371fcc98 mt76: mt7996: sync with upstream
Signed-off-by: Felix Fietkau <[email protected]>
2023-09-11 13:10:51 +02:00
Felix Fietkau f1e1e67d97 wifi: mt76: fix race condition related to checking tx queue fill status
When drv_tx calls race against local tx scheduling, the queue fill status checks
can potentially race, leading to dma queue entries being overwritten.
Fix this by deferring packets from drv_tx calls to the tx worker, in order to
ensure that all regular queue tx comes from the same context.

Signed-off-by: Felix Fietkau <[email protected]>
2023-09-11 13:10:34 +02:00
Felix Fietkau bbbac7deee wifi: mt76: rename mt76_packet_id_init/flush to mt76_wcid_init/cleanup
Also un-inline the functions. Will be used for further wcid init/cleanup

Signed-off-by: Felix Fietkau <[email protected]>
2023-09-11 13:10:34 +02:00
Felix Fietkau b5d13611d3 mt76: mt7915: fix monitor mode issues
Enable receiving other-unicast packets
Disable RX header translation in order to proprerly receive data packets

Signed-off-by: Felix Fietkau <[email protected]>
2023-09-11 13:10:34 +02:00
Felix Fietkau b14c2351dd wifi: mt76: mt7603: disable A-MSDU tx support on MT7628
It was reported that this can cause the PSE hang issues, even with a low
number of fragments.

Link: https://github.com/openwrt/mt76/issues/793#issuecomment-1676529138
Signed-off-by: Felix Fietkau <[email protected]>
2023-08-14 21:33:36 +02:00
Felix Fietkau 85cc58378d wifi: mt76: mt7603: add missing register initialization for MT7628
Ported from the vendor driver code

Signed-off-by: Felix Fietkau <[email protected]>
2023-08-14 14:08:13 +02:00
Felix Fietkau c03d84c0d0 wifi: mt76: mt7603: improve stuck beacon handling
Before preparing the new beacon, check the queue status, flush out all
previous beacons and buffered multicast packets, then (if necessary)
try to recover more gracefully from a stuck beacon condition by making a
less invasive attempt at getting the MAC un-stuck.

Fixes: c8846e101502 ("mt76: add driver for MT7603E and MT7628/7688")
Signed-off-by: Felix Fietkau <[email protected]>
2023-08-14 14:08:13 +02:00
Felix Fietkau a8d9553d8f wifi: mt76: mt7603: improve watchdog reset reliablity
Only trigger PSE reset if PSE was stuck, otherwise it can cause DMA issues.
Trigger the PSE reset while DMA is fully stopped in order to improve
reliabilty.

Fixes: c8846e101502 ("mt76: add driver for MT7603E and MT7628/7688")
Signed-off-by: Felix Fietkau <[email protected]>
2023-08-14 14:08:13 +02:00
Felix Fietkau 80b8bcf0e3 wifi: mt76: mt7603: rework/fix rx pse hang check
It turns out that the code in mt7603_rx_pse_busy() does not detect actual
hardware hangs, it only checks for busy conditions in PSE.
A reset should only be performed if these conditions are true and if there
is no rx activity as well.
Reset the counter whenever a rx interrupt occurs. In order to also deal with
a fully loaded CPU that leaves interrupts disabled with continuous NAPI
polling, also check for pending rx interrupts in the function itself.

Fixes: c8846e101502 ("mt76: add driver for MT7603E and MT7628/7688")
Signed-off-by: Felix Fietkau <[email protected]>
2023-08-14 14:08:13 +02:00
Felix Fietkau 7ef4dd12d9 wifi: mt76: mt7603: fix tx filter/flush function
Setting MT_TX_ABORT does not abort any transmission for a wtbl index on its
own. Instead, it modifies the behavior of a queue flush to make it selectively
flush packets for a particular wtbl index.
Adjust powersave filtering to make use of this in order to avoid running into
unnecessary timeouts while flushing

Signed-off-by: Felix Fietkau <[email protected]>
2023-07-25 21:06:12 +02:00
Felix Fietkau 53edfc7aaa wifi: mt76: mt7603: fix beacon interval after disabling a single vif
When disabling beacons on a vif, intval is 0. Ensure that dev->mt76.beacon_int
is not overwritten in this case, so that beacons continue to work for other
interfaces.

Signed-off-by: Felix Fietkau <[email protected]>
2023-07-25 12:38:02 +02:00
Felix Fietkau bb3937d5c3 wifi: mt76: mt7915: remove VHT160 capability on MT7915
The IEEE80211_VHT_CAP_EXT_NSS_BW value already indicates support for half-NSS
160 MHz support, so it is wrong to also advertise full 160 MHz support.

Fixes: c2f73eacee3b ("wifi: mt76: mt7915: add back 160MHz channel width support for MT7915")
Signed-off-by: Felix Fietkau <[email protected]>
2023-07-14 10:59:20 +02:00
Felix Fietkau f704e4f83c mt76: mt7915: fix copy&paste issue on capability check rework
Fixes disabling capabilities in AP mode via config

Reported-by: Money Wang (王信安) <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2023-07-04 06:04:08 +02:00
Felix Fietkau 1377f586c6 wifi: mt7915: move capability check to start_ap
Avoid using it for non-AP modes

Signed-off-by: Felix Fietkau <[email protected]>
2023-06-30 11:01:52 +02:00
Felix Fietkau d7d7479b00 wifi: mt7915: fix beaconing in mesh mode
The bringup sequence was fixed for AP mode, but not mesh

Signed-off-by: Felix Fietkau <[email protected]>
2023-06-30 11:01:20 +02:00
Felix Fietkau c50be0b54c wifi: mt76: mt7915: fix capabilities in non-AP mode
Capabilities in vif->bss_conf are only initialized in AP mode.
For other modes, they should be enabled by default, in order to avoid a
mismatch.

Fixes: 885f7af7e544 ("wifi: mt76: mt7915: remove mt7915_mcu_beacon_check_caps()")
Signed-off-by: Felix Fietkau <[email protected]>
2023-06-29 22:40:04 +02:00
Felix Fietkau f36b921692 Revert "wifi: mt76: mt76x02: remove WEP support
This reverts commit 40f6e433f7.

Signed-off-by: Felix Fietkau <[email protected]>
2023-06-27 13:37:05 +02:00
Felix Fietkau c85a0f2f09 mt7921: remove duplicated line
Signed-off-by: Felix Fietkau <[email protected]>
2023-04-18 11:47:29 +02:00
Felix Fietkau d63cb85c12 wifi: mt76: add missing locking to protect against concurrent rx/status calls
According to the documentation, ieee80211_rx_list must not run concurrently
with ieee80211_tx_status (or its variants).

Cc: [email protected]
Fixes: 88046b2c9f6d ("mt76: add support for reporting tx status with skb")
Reported-by: Brian Coverstone <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2023-04-17 15:46:10 +02:00
Felix Fietkau 22f1b7776d mt76: adjust for ieee80211_is_bufferable_mmpdu API change
Signed-off-by: Felix Fietkau <[email protected]>
2023-03-30 11:08:19 +02:00
Felix Fietkau 8ecf551c6d wifi: mt76: set NL80211_EXT_FEATURE_CAN_REPLACE_PTK0 on supported drivers
Drivers that do not generate IV/PN in software can safely rekey PTK0

Signed-off-by: Felix Fietkau <[email protected]>
2023-03-30 11:07:53 +02:00
Felix Fietkau efa44cb57f wifi: mt76: ignore key disable commands
This helps avoid cleartext leakage of already queued or powersave buffered
packets, when a reassoc triggers the key deletion.

Cc: [email protected]
Signed-off-by: Felix Fietkau <[email protected]>
2023-03-30 11:07:40 +02:00
Felix Fietkau 56f0cd4d5e wifi: mt76: mt7915 add tc offloading support
This is used for offloading flows from WLAN to Ethernet, or from WLAN to WLAN

Signed-off-by: Felix Fietkau <[email protected]>
2023-03-21 09:39:38 +01:00
Felix Fietkau f9ca70d636 wifi: mt76: mt7915: add back 160MHz channel width support for MT7915
A number of users reported that this support was working fine before
it got removed. Add it back, but leave out the unsupported 80+80 mode.

Fixes: ac922bd60ace ("wifi: mt76: mt7915: remove BW160 and BW80+80 support")
Signed-off-by: Felix Fietkau <[email protected]>
2023-03-01 16:36:55 +01:00
Felix Fietkau 09c6147348 Revert "wifi: mt76: mt7996: rely on mt76_connac2_mac_decode_he_radiotap"
This reverts commit fbf986dbd4.
2023-02-03 14:52:20 +01:00
Felix Fietkau e8c10835cf wifi: mt76: fix compile error without CONFIG_PAGE_POOL_STATS
Signed-off-by: Felix Fietkau <[email protected]>
2023-01-27 11:31:03 +01:00
Felix Fietkau 6c256218e5 wifi: mt76: dma: use napi_build_skb
Improves performance by using bulk allocation

Signed-off-by: Felix Fietkau <[email protected]>
2022-12-31 08:47:20 +01:00
Felix Fietkau 5b509e8038 wifi: mt76: dma: fix a regression in adding rx buffers
When adding WED support, mt76_dma_add_buf was accidentally changed to set
the skip_buf0 flag for tx buffers on the wrong queue descriptor entry.
Additionally, there is a rxwi leak when rx buffer allocation fails.

Fix this and make the code more readable by adding a separate function for
adding rx buffers.

Reported-by: Mikhail Gavrilov <[email protected]>
Tested-by: Mikhail Gavrilov <[email protected]>
Fixes: cd372b8c99c5 ("wifi: mt76: add WED RX support to mt76_dma_{add,get}_buf")
Signed-off-by: Felix Fietkau <[email protected]>
2022-12-22 16:17:39 +01:00
Felix Fietkau a03ef0aab9 wifi: mt76: mt7921: fix deadlock in mt7921_abort_roc
When mt7921_abort_roc is called with dev->mutex held, it can deadlock while
calling cancel_work_sync(&phy->roc_work), because the work function could
be waiting to acquire the mutex.

Fix this by flushing the work before taking the mutex

Reported-by: Mikhail Gavrilov <[email protected]>
Fixes: 034ae28b56f1 ("wifi: mt76: mt7921: introduce remain_on_channel support")
Fixes: 41ac53c899bd ("wifi: mt76: mt7921: introduce chanctx support")
Signed-off-by: Felix Fietkau <[email protected]>
2022-12-22 16:17:39 +01:00
Felix Fietkau ec46d7486a sync with upstream
Signed-off-by: Felix Fietkau <[email protected]>
2022-12-10 13:11:04 +01:00
Felix Fietkau e7a9f7a044 wifi: mt76: mt7915: fix unused-but-set warning
Signed-off-by: Felix Fietkau <[email protected]>
2022-11-25 15:05:23 +01:00
Felix Fietkau 4bf2607362 wifi: mt76: fix dbdc number of spatial streams limit
Limit per-band streams to 2 instead of unconditionally dividing by 2

Fixes: 869815e5ef ("wifi: mt76: mt7915: Fix chainmask calculation on mt7915 DBDC")
Signed-off-by: Felix Fietkau <[email protected]>
2022-11-12 19:13:25 +01:00
Felix Fietkau a9ac73ed82 wifi: mt76: mt7615: increase eeprom size for mt7663
mt7663 efuse has 0x600 bytes instead of 0x400. Increase the size in order
to fix issues with incomplete calibration data

Signed-off-by: Felix Fietkau <[email protected]>
2022-11-11 19:55:31 +01:00
Felix Fietkau f5034abea8 mt76: mt7915: fix format string
Signed-off-by: Felix Fietkau <[email protected]>
2022-11-11 18:15:39 +01:00
Felix Fietkau 413a4bf395 mt76: mt7915: fix unused-but-set variable
Signed-off-by: Felix Fietkau <[email protected]>
2022-11-11 15:06:37 +01:00
Felix Fietkau 269df4b01f wifi: mt76: fix rx checksum offload on mt7615/mt7915/mt7921
Checking the relevant rxd bits for the checksum information only indicates
if the checksum verification was performed by the hardware and doesn't show
actual checksum errors. Checksum errors are indicated in the info field of
the DMA descriptor. Fix packets erroneously marked as CHECKSUM_UNNECESSARY
by checking the extra bits as well.
Those bits are only passed to the driver for MMIO devices at the moment, so
limit checksum offload to those.

Fixes: 2122dfbfd0bd ("mt76: mt7615: add rx checksum offload support")
Fixes: 94244d2ea503 ("mt76: mt7915: add rx checksum offload support")
Fixes: 0e75732764e8 ("mt76: mt7921: enable rx csum offload")
Signed-off-by: Felix Fietkau <[email protected]>
2022-10-05 15:05:43 +02:00
Felix Fietkau 2182de50a3 wifi: mt76: fix receiving LLC packets on mt7615/mt7915
When 802.3 decap offload is enabled, the hardware indicates header translation
failure, whenever either the LLC-SNAP header was not found, or a VLAN header
with an unregcognized tag is present.
In that case, the hardware inserts a 2-byte length fields after the MAC
addresses. For VLAN packets, this tag needs to be removed. However,
for 802.3 LLC packets, the length bytes should be preserved, since there
is no separate ethertype field in the data.
This fixes an issue where the length field was omitted for LLC frames, causing
them to be malformed after hardware decap.

Fixes: 1eeff0b4c1a6 ("mt76: mt7915: fix decap offload corner case with 4-addr VLAN frames")
Reported-by: Chad Monroe <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2022-10-05 15:04:31 +02:00
Felix Fietkau 8cc34bdc9e wifi: mt76: mt7921: set MT_DRV_AMSDU_OFFLOAD for USB/SDIO
Signed-off-by: Felix Fietkau <[email protected]>
2022-10-05 14:31:14 +02:00
Felix Fietkau 172d68b625 mt76: mt76x02: fix vht rate power array overrun
Signed-off-by: Felix Fietkau <[email protected]>
2022-10-01 17:01:59 +02:00
Felix Fietkau 3f27f6adb1 wifi: mt76: mt76x02: simplify struct mt76x02_rate_power
- remove stbc, because mt76x0 doesn't support it and mt76x2 uses the same
  values as HT/VHT
- reduce vht array to 2 elements, because VHT MCS0-7 are the same as HT

Signed-off-by: Felix Fietkau <[email protected]>
2022-09-28 11:29:46 +02:00
Felix Fietkau e49b6063fb wifi: mt76: move mt76_rate_power from core to mt76x02 driver code
Its layout and code is mt76x02 specific

Signed-off-by: Felix Fietkau <[email protected]>
2022-09-28 11:29:15 +02:00
Felix Fietkau d70546462b mt76: fix 5 GHz connection regression on mt76x0/mt76x2
Some users have reported being unable to connect to MT76x0 APs running mt76
after a commit enabling the VHT extneded NSS BW feature.
Fix this regression by ensuring that this feature only gets enabled on drivers
that support it

Fixes: d9fcfc1424aa ("mt76: enable the VHT extended NSS BW feature")
Signed-off-by: Felix Fietkau <[email protected]>
2022-09-06 22:39:56 +02:00
Felix Fietkau 5ec78e1ec4 wifi: mt76: fix reading current per-tid starting sequence number for aggregation
The code was accidentally shifting register values down by tid % 32 instead of
(tid * field_size) % 32.

Signed-off-by: Felix Fietkau <[email protected]>
2022-08-26 19:46:09 +02:00
Felix Fietkau 9485e3b470 mt76: remove q->qid
It is no longer used

Signed-off-by: Felix Fietkau <[email protected]>
2022-07-03 20:59:06 +02:00
Felix Fietkau 93e3fce916 mt76: pass original queue id from __mt76_tx_queue_skb to the driver
MT7615 and newer map multiple software tx queues to the hardware id

Signed-off-by: Felix Fietkau <[email protected]>
2022-07-03 17:52:25 +02:00