Commit Graph
204 Commits
Author SHA1 Message Date
Ryder LeeandFelix Fietkau 256f324f8f mt76: mt7915: check mcu returned values in mt7915_ops
Properly check returned values from mcu utility routines in
mt7915_ops.

Signed-off-by: Ryder Lee <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-03-14 23:39:10 +01:00
Ryder LeeandFelix Fietkau a4307e6ba0 mt76: mt7915: fix txrate reporting
Properly check rate_info to fix unexpected reporting.

[ 1215.161863] Call trace:
[ 1215.164307]  cfg80211_calculate_bitrate+0x124/0x200 [cfg80211]
[ 1215.170139]  ieee80211s_update_metric+0x80/0xc0 [mac80211]
[ 1215.175624]  ieee80211_tx_status_ext+0x508/0x838 [mac80211]
[ 1215.181190]  mt7915_mcu_get_rx_rate+0x28c/0x8d0 [mt7915e]
[ 1215.186580]  mt7915_mac_tx_free+0x324/0x7c0 [mt7915e]
[ 1215.191623]  mt7915_queue_rx_skb+0xa8/0xd0 [mt7915e]
[ 1215.196582]  mt76_dma_cleanup+0x7b0/0x11d0 [mt76]
[ 1215.201276]  __napi_poll+0x38/0xf8
[ 1215.204668]  napi_workfn+0x40/0x80
[ 1215.208062]  process_one_work+0x1fc/0x390
[ 1215.212062]  worker_thread+0x48/0x4d0
[ 1215.215715]  kthread+0x120/0x128
[ 1215.218935]  ret_from_fork+0x10/0x1c

Fixes: e57b7901469f ("mt76: add mac80211 driver for MT7915 PCIe-based chipsets")
Fixes: e4c5ead632ff ("mt76: mt7915: rename mt7915_mcu_get_rate_info to mt7915_mcu_get_tx_rate")
Reported-by: Evelyn Tsai <[email protected]>
Signed-off-by: Ryder Lee <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-03-14 23:39:10 +01:00
Ryder LeeandFelix Fietkau 29a04583ae mt76: mt7915: fix rxrate reporting
Avoid directly updating sinfo->rxrate from firmware since rate_info might
be overwritten by wrong results even mt7915_mcu_get_rx_rate() fails check.

Add more error handlings accordingly.

Fixes: 11553d88d0b9 ("mt76: mt7915: query station rx rate from firmware")
Signed-off-by: Ryder Lee <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-03-14 23:39:10 +01:00
Ryder LeeandFelix Fietkau 477b783018 mt76: mt7915: fix PHY mode for DBDC
Fix PHY mode configuration for DBDC.

Signed-off-by: Ryder Lee <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-03-14 23:39:10 +01:00
Ryder LeeandFelix Fietkau e9e418fc7e mt76: mt7915: stop ext_phy queue when mac reset happens
Stop Tx burst for ext_phy after mac reset.

Signed-off-by: Ryder Lee <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-03-14 23:39:10 +01:00
Ryder LeeandFelix Fietkau 7de0a06540 mt76: mt7915: fix CSA notification for DBDC
Add CSA notification for second phy.

Signed-off-by: Ryder Lee <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-03-14 23:39:10 +01:00
Ryder LeeandFelix Fietkau 5ff25c915e mt76: mt7915: add missing capabilities for DBDC
This improves dbdc performance.

Signed-off-by: Ryder Lee <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-03-14 23:39:10 +01:00
Ryder LeeandFelix Fietkau 8a5b036af4 mt76: mt7915: fix mib stats counter reporting to mac80211
In order to properly report MIB counters to mac80211, resets stats in
mt7915_get_stats routine() and hold mt76 mutex accessing MIB counters.
Sum up MIB counters in mt7915_mac_update_mib_stats routine.

Fixes: c6b002bcdf ("mt76: add mac80211 driver for MT7915 PCIe-based chipsets")
Signed-off-by: Ryder Lee <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-03-14 23:38:18 +01:00
Lorenzo BianconiandFelix Fietkau 84229a5184 mt76: mt7915: fix aggr len debugfs node
Similar to mt7921, fix 802.11 aggr len debugfs reporting for mt7915 driver.

Fixes: e57b7901469fc ("mt76: add mac80211 driver for MT7915 PCIe-based chipsets")
Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-03-14 23:38:18 +01:00
Felix Fietkau bfa8d5a6a9 mt76: adjust to upstream API for enabling threaded NAPI
Create a second dummy device for tx napi to avoid making it threaded

Signed-off-by: Felix Fietkau <[email protected]>
2021-03-14 17:36:54 +01:00
Arnd BergmannandFelix Fietkau 7e1eff6762 mt76: mt7915: fix unused 'mode' variable
clang points out a possible corner case in the mt7915_tm_set_tx_cont()
function if called with invalid arguments:

drivers/net/wireless/mediatek/mt76/mt7915/testmode.c:593:2: warning: variable 'mode' is used uninitialized whenever switch default is taken [-Wsometimes-uninitialized]
        default:
        ^~~~~~~
drivers/net/wireless/mediatek/mt76/mt7915/testmode.c:597:13: note: uninitialized use occurs here
        rateval =  mode << 6 | rate_idx;
                   ^~~~
drivers/net/wireless/mediatek/mt76/mt7915/testmode.c:506:37: note: initialize the variable 'mode' to silence this warning
        u8 rate_idx = td->tx_rate_idx, mode;
                                           ^

Change it to return an error instead of continuing with invalid data
here.

Fixes: 3f0caa3cbf94 ("mt76: mt7915: add support for continuous tx in testmode")
Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Kalle Valo <[email protected]>
2021-03-12 13:27:28 +01:00
Felix Fietkau ab90451533 mt76: mt7915: only modify tx buffer list after allocating tx token id
Modifying the tx buffer list too early can leak DMA mappings

Signed-off-by: Felix Fietkau <[email protected]>
2021-02-16 14:49:09 +01:00
Felix Fietkau 289cd78045 mt76: mt7915: add support for rx decapsulation offload
For AP and Client mode, the hardware can pass received packets as 802.3 frames
that can be passed to the network stack as-is.

Signed-off-by: Felix Fietkau <[email protected]>
2021-02-14 12:26:01 +01:00
Felix Fietkau 4b7a68634f mt76: mt7915: add rx checksum offload support
Set skb->ip_summed to CHECKSUM_UNNECESSARY if the hardware has validated
the IP and TCP/UDP checksum

Signed-off-by: Felix Fietkau <[email protected]>
2021-02-14 12:26:01 +01:00
Lorenzo BianconiandFelix Fietkau 4c0811c647 mt76: mt7915: enable hw rx-amsdu de-aggregation
Enable hw rx-amsdu de-aggregation support available in 7915 devices.
This is a preliminary patch to enable rx checksum offload

Signed-off-by: Lorenzo Bianconi <[email protected]>
2021-02-14 12:26:01 +01:00
Felix Fietkau 0d7564d0d8 mt76: add support for 802.3 rx frames
Do not try to access the header when receiving them

Signed-off-by: Felix Fietkau <[email protected]>
2021-02-14 12:26:01 +01:00
John CrispinandFelix Fietkau 200c1b1c23 mac80211: rename csa counters to countdown counters
We want to reuse the functions and structs for other counters such as BSS
color change. Rename them to more generic names.

Signed-off-by: John Crispin <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Johannes Berg <[email protected]>
2021-02-14 12:26:01 +01:00
Lorenzo BianconiandFelix Fietkau 80a87412e9 mt76: mt7915: fix uninitialized variable in mt7915_tm_set_tx_cont()
Set MT_PHY_TYPE_OFDM as default value for mode variable in
mt7915_tm_set_tx_cont routine in order to proper initialize it even
for default case.

Fixes: 3f0caa3cbf94: "mt76: mt7915: add support for continuous tx in testmode"
Reported-by: Dan Carpenter <[email protected]>
Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-02-14 11:30:00 +01:00
Lorenzo BianconiandFelix Fietkau 8da10d6f92 mt76: mt7915: always check return value from mt7915_mcu_alloc_wtbl_req
As done for mt76_connac_mcu_alloc_wtbl_req, even if this is not a real
bug since mt7915_mcu_alloc_wtbl_req routine can fails just if nskb is NULL,
always check return value from mt7915_mcu_alloc_wtbl_req in order to avoid
possible future mistake.

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-02-14 11:30:00 +01:00
Ryder LeeandFelix Fietkau 994893d38d mt76: always use WTBL_MAX_SIZE for tlv allocation
Simplify WTBL defines.

Signed-off-by: Ryder Lee <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-02-14 11:30:00 +01:00
Felix Fietkau 892f74d37e mt76: mt7915: fix tx skb dma unmap
The first pointer in the txp needs to be unmapped as well, otherwise it will
leak DMA mapping entries

Fixes: 27d5c528a7ca ("mt76: fix double DMA unmap of the first buffer on 7615/7915")
Signed-off-by: Felix Fietkau <[email protected]>
2021-02-14 11:21:51 +01:00
Felix Fietkau 2f85aa5cbc mt76: mt7915: avoid writes to MT_PCIE_RECOG_ID when not using gen1 devices
Signed-off-by: Felix Fietkau <[email protected]>
2021-01-26 19:33:34 +01:00
Felix Fietkau 8c796a3378 mt76: mt7915: only set int1 when using the second hif
Signed-off-by: Felix Fietkau <[email protected]>
2021-01-22 14:55:43 +01:00
Felix Fietkau 8dc5d4a0da Revert "mt76: mt7915: fix vif sta index for DBDC"
This reverts commit c4c9c402d1.
Superseded by making vif index global

Signed-off-by: Felix Fietkau <[email protected]>
2021-01-21 16:30:55 +01:00
Felix Fietkau be2bea66d6 mt76: mt7915: detect wrong nss eeprom parameter on dbdc cards
Signed-off-by: Felix Fietkau <[email protected]>
2021-01-21 12:49:30 +01:00
Felix Fietkau fb3e5ce1eb mt76: move vif_mask back from mt76_phy to mt76_dev
Since it is global for all drivers, it belongs to the main device

Signed-off-by: Felix Fietkau <[email protected]>
2021-01-20 13:11:46 +01:00
Felix Fietkau dbaf0f4679 mt76: mt7915: make vif index per adapter instead of per band
The firmware treats it as global, so we need to avoid collisions here

Signed-off-by: Felix Fietkau <[email protected]>
2021-01-20 13:11:46 +01:00
Felix Fietkau c828124ef9 mt76: mt7915: add support for using a secondary PCIe link for gen1
For performance reasons, mt7915 supports using 2 PCIE gen1 links on
platforms that don't support gen2.
Add support for using this to move traffic for a second DBDC band onto
a dedicated link

Signed-off-by: Felix Fietkau <[email protected]>
2021-01-19 17:50:03 +01:00
Felix Fietkau eca2f0ec0d mt76: mt7915: fix command id for txbf action
Signed-off-by: Felix Fietkau <[email protected]>
2021-01-19 17:50:03 +01:00
Felix Fietkau c4c9c402d1 mt76: mt7915: fix vif sta index for DBDC
Since vif indexes are per-phy, we need to factor in the phy index to avoid
collisions on the WTBL index

Signed-off-by: Felix Fietkau <[email protected]>
2021-01-19 17:50:03 +01:00
Felix Fietkau cc3f23d1e6 mt76: mt7915: bring up the WA event rx queue for band1
This is needed for DBDC cards to work correctly on both bands simultaneously

Signed-off-by: Felix Fietkau <[email protected]>
2021-01-19 11:06:13 +01:00
Ryder LeeandFelix Fietkau 3f546330b5 mt76: mt7915: support TxBF for DBDC
With this patch, TxBF can be run on both bands simultaneously.

Signed-off-by: Ryder Lee <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-01-19 11:00:39 +01:00
Xu WangandFelix Fietkau 5c86d5bb07 mt76: mt7915: Remove unneeded semicolon
fix semicolon.cocci warnings:
drivers/net/wireless/mediatek/mt76/mt7915/mac.c:1694:2-3: Unneeded semicolon

Signed-off-by: Xu Wang <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-01-19 11:00:27 +01:00
Felix Fietkau 7a93026dd3 mt76: mt7915: fix eeprom DBDC band selection
When the EEPROM band fields contain default values, assign 2.4 GHz to the
first band and 5 GHz to the second.

Signed-off-by: Felix Fietkau <[email protected]>
2021-01-14 12:25:56 +01:00
Felix Fietkau 25d7429bdc mt76: mt7915: fix eeprom parsing for DBDC
Annotate WIFI_CONF eeprom mask values with the byte number
Fix parsing per-band number of chains

Signed-off-by: Felix Fietkau <[email protected]>
2021-01-14 12:25:56 +01:00
Felix Fietkau e6fe82acb1 mt76: mt7915: disable RED support in the WA firmware
It causes high CPU load on the WA core, which can lead to extra latency when
using many stations. Dropping packets for long queues is managed by mac80211
fq_codel instead

Signed-off-by: Felix Fietkau <[email protected]>
2021-01-14 12:25:56 +01:00
Felix Fietkau 9c312f2ce2 mt76: mt7915: rework mcu API
Add support for passing flags for selecting the MCU target and query type
instead of trying to detect it based on the command id

Signed-off-by: Felix Fietkau <[email protected]>
2021-01-14 12:25:56 +01:00
Randy DunlapandFelix Fietkau 983091a406 mt76: mt7915: fix MESH ifdef block
Fix a build error when CONFIG_MAC80211_MESH is not enabled:

../drivers/net/wireless/mediatek/mt76/mt7915/init.c:47:2: error: expected expression before '}' token
  }, {
  ^

Fixes: af901eb4ab80 ("mt76: mt7915: get rid of dbdc debugfs knob")
Signed-off-by: Randy Dunlap <[email protected]>
Cc: Shayne Chen <[email protected]>
Cc: Ryder Lee <[email protected]>
Cc: Lorenzo Bianconi <[email protected]>
Cc: Felix Fietkau <[email protected]>
Cc: [email protected]
Cc: Kalle Valo <[email protected]>
Signed-off-by: Kalle Valo <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
2021-01-14 11:31:47 +01:00
Ryder LeeandFelix Fietkau 6377b7f330 mt76: mt7915: add implicit Tx beamforming support
Add ht/vht implicit Tx beamforming support and enable it via debugfs.

Tested-by: Shayne Chen <[email protected]>
Signed-off-by: Ryder Lee <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-01-14 11:25:11 +01:00
Ryder LeeandFelix Fietkau 9fc19db512 mt76: mt7915: simplify peer's TxBF capability check
This is a preliminary patch for implicit beamforming support.

Signed-off-by: Ryder Lee <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-01-14 11:25:11 +01:00
Shayne ChenandFelix Fietkau 364affef82 mt76: mt7615: mt7915: disable txpower sku when testmode enabled
When testmode can be enabled, the start() callback would already be
called, causing that txpower sku feature isn't really disabled after
testmode is enabled. This patch fix the issue.

Signed-off-by: Shayne Chen <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-01-14 11:25:11 +01:00
Shayne ChenandFelix Fietkau 11a1e86e59 mt76: mt7915: add support for continuous tx in testmode
Implement continuous tx state for MT7915 NIC testmode.

Signed-off-by: Shayne Chen <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-01-14 11:25:11 +01:00
Shayne ChenandFelix Fietkau 4793fc9b3d mt76: mt7915: rework set state part in testmode
This is a preliminary patch to simplify setting state in mt7915
testmode, for adding the new continuous tx state.

Signed-off-by: Shayne Chen <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-01-14 11:24:22 +01:00
Shayne ChenandFelix Fietkau 729ec5daeb mt76: mt7915: clean hw queue before starting new testmode tx
Add a testmode mcu command to clean up hw tx queue before a new
testmode tx starts.

Signed-off-by: Shayne Chen <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-01-14 11:24:22 +01:00
Shayne ChenandFelix Fietkau 6fa642903e mt76: mt7915: calculate new packet length when tx_time is set in testmode
If tx_time is set, calculate a new packet length based on tx time and
tx rate.

Signed-off-by: Shayne Chen <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-01-14 11:24:22 +01:00
Shayne ChenandFelix Fietkau e56282bf67 mt76: mt7915: add support for ipg in testmode
Add support to calculate and apply ipg parameters in testmode
for MT7915 NIC.

Signed-off-by: Shayne Chen <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-01-14 11:24:22 +01:00
Shayne ChenandFelix Fietkau 6365a58573 mt76: mt7915: split edca update function
Split parameter settings and mcu command update in mt7915_mcu_set_tx().
This is for reusing edca update function in testmode ipg setting.

Signed-off-by: Shayne Chen <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-01-14 11:24:22 +01:00
Shayne ChenandFelix Fietkau 3d0834e780 mt76: testmode: add support to set user-defined spe index
Add spatial extension (spe) index as a configurable parameter in testmode.
This is used for specifically configuring TX path, such as different
WF TX priority, number of antennas and spatial streams.

If spe_idx is not set, TX path depends on tx_antenna_mask; otherwise,
both spe_idx and tx_antenna_mask are referenced to decide TX path.

Signed-off-by: Shayne Chen <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-01-14 11:14:59 +01:00
Shayne ChenandFelix Fietkau 89a6781ed0 mt76: mt7915: force ldpc for bw larger than 20MHz in testmode
LDPC should be set when bw is larger than 20MHz to make
testmode tx work normally.

Signed-off-by: Shayne Chen <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-01-14 11:14:59 +01:00
Lorenzo BianconiandFelix Fietkau 36cd48ab44 mt76: move chainmask in mt76_phy
Move chainmask from driver phy to mt76_phy since it is used by all
drivers. This is a preliminary patch to create a common mcu library used
by mt7615 and mt7921 drivers

Co-developed-by: Sean Wang <[email protected]>
Signed-off-by: Sean Wang <[email protected]>
Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2021-01-14 11:14:59 +01:00