Commit Graph
126 Commits
Author SHA1 Message Date
Felix Fietkau 010557767d mt76: fix setting chan->max_power
When setting chan->max_power after registering the wiphy, chan->max_reg_power
needs to be used as a limit

Signed-off-by: Felix Fietkau <[email protected]>
2019-06-06 09:27:18 +02:00
Felix Fietkau 28b9b38022 mt7603: fix reading target tx power from eeprom
For the external PA (TSSI OFF) case, the target power needs to be read
from a different location in EEPROM

Signed-off-by: Felix Fietkau <[email protected]>
2019-06-06 09:27:15 +02:00
Ryder LeeandFelix Fietkau 792e6cee07 mt76: fix endianness sparse warnings
Fix many warnings with incorrect endian assumptions.

Reported-by: kbuild test robot <[email protected]>
Signed-off-by: Ryder Lee <[email protected]>
Reviewed-by: Stanislaw Gruszka <[email protected]
Signed-off-by: Felix Fietkau <[email protected]>
2019-05-20 19:00:24 +02:00
Ryder LeeandFelix Fietkau f98fce6149 mt76: use macro for sn and seq_ctrl conversion
Use macro to convert sn and seq_ctrl for better readability.

Signed-off-by: Roy Luo <[email protected]>
Signed-off-by: Ryder Lee <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-05-20 18:59:53 +02:00
Lorenzo BianconiandFelix Fietkau 1d74488f9a mt76: mt7603: add debugfs knob to enable/disable edcca
Introduce a knob in mt7603 debugfs in order to enable/disable
energy detection based on CCA thresholds

Signed-off-by: Lorenzo Bianconi <[email protected]>
2019-05-20 18:58:37 +02:00
Lorenzo BianconiandFelix Fietkau 11ed3fadc7 mt76: mt7603: stop mac80211 queues before setting the channel
Suspend data transmission during channel switch

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-05-20 18:58:30 +02:00
Felix Fietkau 2f8df1762c mt76: fix tx power issues
- tx power is stored in the channels after ieee80211_register_hw, so
  chan->orig_mpwr needs to be updated as well
- for non-TSSI devices, mt76x2e needs to use a different target power value
  from the EEPROM
- fix a rounding error in a few places (need to round up, not down)

Signed-off-by: Felix Fietkau <[email protected]>
2019-03-27 13:04:30 +01:00
Felix Fietkau a5f5605f32 mt7603: send BAR after powersave wakeup
Now that the sequence number allocation is fixed, we can finally send a BAR
at powersave wakeup time to refresh the receiver side reorder window

Signed-off-by: Felix Fietkau <[email protected]>
2019-03-23 18:03:09 +01:00
Felix Fietkau 9e3ef1f992 mt7603: fix sequence number assignment
If the MT_TXD3_SN_VALID flag is not set in the tx descriptor, the hardware
assigns the sequence number. However, the rest of the code assumes that the
sequence number specified in the 802.11 header gets transmitted.
This was causing issues with the aggregation setup, which worked for the
initial one (where the sequence numbers were still close), but not for
further teardown/re-establishing of sessions.

Additionally, the overwrite of the TID sequence number in WTBL2 was resetting
the hardware assigned sequence numbers, causing them to drift further apart.

Fix this by using the software assigned sequence numbers

Signed-off-by: Felix Fietkau <[email protected]>
2019-03-23 18:00:31 +01:00
Felix Fietkau 320af65ca1 mt76: mt7603: use the correct hweight8() function
__sw_hweight8() is only defined if CONFIG_GENERIC_HWEIGHT is enabled.
The function that works on all architectures is hweight8().

Signed-off-by: Felix Fietkau <[email protected]>
2019-03-11 14:09:05 +01:00
Felix Fietkau 00ac79d1af mt7603: fix initialization of max rx length
The previous version only accidentally disabled A-MSDU deaggregation by
using the wrong mask for rx length configuration, which left previous
length value in place.
Fix the length and initialize the register completely to keep A-MSDU
de-aggregation remaining disabled

Signed-off-by: Felix Fietkau <[email protected]>
2019-03-08 19:51:42 +01:00
Wei YongjunandFelix Fietkau 0b927b26d2 mt76: fix return value check in mt76_wmac_probe()
In case of error, the function devm_ioremap_resource() returns ERR_PTR()
and never returns NULL. The NULL test in the return value check should
be replaced with IS_ERR().

Fixes: c8846e101502 ("mt76: add driver for MT7603E and MT7628/7688")
Signed-off-by: Wei Yongjun <[email protected]>
2019-03-04 09:03:41 +01:00
Felix Fietkau 1d7760d904 mt76: mt7603: set moredata flag when queueing ps-filtered packets
Clients should poll for more packets afterwards

Signed-off-by: Felix Fietkau <[email protected]>
2019-03-04 08:37:34 +01:00
Felix Fietkau 3687eec55f mt76: mt7603: clear the service period on releasing PS filtered packets
These packets have no txwi entry in the ring, so tracking via tx status does
not work. To prevent PS poll requests from being unanswered, end the service
period right away

Signed-off-by: Felix Fietkau <[email protected]>
2019-03-03 19:21:42 +01:00
Felix Fietkau eb1ecc402f mt76: mt7603: notify mac80211 about buffered frames in ps queue
Also fix the size check for filtered powersave frames
Fixes a corner case with waking up clients

Signed-off-by: Felix Fietkau <[email protected]>
2019-03-03 19:21:42 +01:00
Felix Fietkau d13b065957 mt76: mt7603: fix up hardware queue index for PS filtered packets
Make the queue index match the hardware queue on which they get sent out

Signed-off-by: Felix Fietkau <[email protected]>
2019-03-03 19:21:42 +01:00
Felix Fietkau 8bfe6d44ae mt76: mt7603: clear ps filtering mode before releasing buffered frames
Fixes sending them, otherwise they loop back right into the buffer

Signed-off-by: Felix Fietkau <[email protected]>
2019-03-03 19:21:42 +01:00
Felix Fietkau 2ed938271c mt76: mt7603: fix tx status HT rate validation
Use the correct variable in the check. Fixes an uninitialized variable warning

Reported-by: Gustavo A. R. Silva <[email protected]>
Fixes: c8846e1015022 ("mt76: add driver for MT7603E and MT7628/7688")
Signed-off-by: Felix Fietkau <[email protected]>
2019-03-03 11:06:20 +01:00
Lorenzo BianconiandFelix Fietkau 283ebbefde mt76: dma: move mt76x02_init_{tx,rx}_queue in mt76 module
Move mt76x02_init_tx_queue and mt76x02_init_rx_queue in mt76
module in order to be reused adding support for mt7603 driver
and remove duplicated code.
Squash mt76x02_init_tx_queue and mt76x02_init_rx_queue in
mt76_dma_alloc_queue

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-03-01 13:00:31 +01:00
Lorenzo BianconiandFelix Fietkau ba1d9894c6 mt76: mmio: move mt76x02_set_irq_mask in mt76 module
Move mt76x02_set_irq_mask in mt76 module in order to be reused
adding support for mt7603 driver and remove duplicated code

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-03-01 13:00:31 +01:00
Felix Fietkau fd315bd0f2 mt7603: disable dynamic sensitivity adjustment by default
The vendor driver also does not enable it, and it has been shown to cause
some issues. It can be re-enabled for testing through debugfs

Signed-off-by: Felix Fietkau <[email protected]>
2019-02-26 15:15:54 +01:00
Roy LuoandFelix Fietkau e2a9d40772 mt7603: fix ba window size selection
The tx ba window size which is set to HW should not
exceed the actual window size of the ba session,
otherwise the HW might aggregate more packets than
what's negotiated.

Signed-off-by: Felix Fietkau <[email protected]>
2019-02-26 12:26:02 +01:00
Lorenzo BianconiandFelix Fietkau 82fa31293f mt7603: move alloc_dev common code in mt76_alloc_device
Signed-off-by: Lorenzo Bianconi <[email protected]>
2019-02-18 20:39:41 +01:00
Lorenzo BianconiandFelix Fietkau 11ab62057e mt7603: rely on mt76_tx_queue_skb_raw common routine
Signed-off-by: Lorenzo Bianconi <[email protected]>
2019-02-18 20:39:41 +01:00
Lorenzo BianconiandFelix Fietkau cacc986701 mt7603: rely on mt76_mcu_rx_event routine
Signed-off-by: Lorenzo Bianconi <[email protected]>
2019-02-07 14:50:23 +01:00
Lorenzo BianconiandFelix Fietkau 471c447ca1 mt7603: rely on mt76_mcu_get_response routine
Signed-off-by: Lorenzo Bianconi <[email protected]>
2019-02-07 14:50:10 +01:00
Lorenzo BianconiandFelix Fietkau db47920ac2 mt7603: rely on mt76_mcu_msg_alloc routine
Signed-off-by: Lorenzo Bianconi <[email protected]>
2019-02-07 14:49:54 +01:00
Felix Fietkau 2afa0d7e7a mt7603: remove WCID override for software encrypted frames
It is not necessary, since the hardware has a flag to indicate hardware
encryption offload

Signed-off-by: Felix Fietkau <[email protected]>
2019-01-31 21:51:29 +01:00
Felix Fietkau 8027b5d061 mt7603: remove copyright headers
No longer needed because of SPDX License Identifier

Signed-off-by: Felix Fietkau <[email protected]>
2019-01-31 18:30:30 +01:00
Felix Fietkau a4ec45c294 mt7603: fix LED support (copy CFLAGS from main Makefile)
Signed-off-by: Felix Fietkau <[email protected]>
2019-01-31 09:35:33 +01:00
Felix Fietkau b5ac8e49c5 mt7603: initialize LED callbacks only if CONFIG_MT76_LEDS is set
Signed-off-by: Felix Fietkau <[email protected]>
2019-01-30 15:03:25 +01:00
Felix Fietkau 0db925f076 mt7603: update HT/VHT capabilities after assoc
Signed-off-by: Felix Fietkau <[email protected]>
2019-01-30 12:18:32 +01:00
Felix Fietkau 6eef33bfd5 mt7603: remove mt7603_txq_init
Simplify the code by open coding it in the only remaining caller

Signed-off-by: Felix Fietkau <[email protected]>
2019-01-30 12:10:45 +01:00
Felix Fietkau 7a53138b32 mt7603: trigger watchdog reset if flushing CAB queue fails
Signed-off-by: Felix Fietkau <[email protected]>
2019-01-29 16:20:15 +01:00
Felix Fietkau c3da1aa3b0 mt7603: trigger beacon stuck detection faster
Check against number of active beacon interfaces instead of maximum number
of interfaces

Signed-off-by: Felix Fietkau <[email protected]>
2019-01-29 16:18:19 +01:00
Felix Fietkau aa470d8655 mt7603: fix buffered multicast queue flush
For some reason the BMC queue flush does not work properly if packets were
queued for a BSS0_n interface (secondary vif).
Work around this issue by using the DMA scheduler to filter the queue before
issueing the BMC queue flush.

Signed-off-by: Felix Fietkau <[email protected]>
2019-01-22 15:25:16 +01:00
Felix Fietkau e342cc5c72 mt7603: fix buffered multicast count register
Signed-off-by: Felix Fietkau <[email protected]>
2019-01-22 14:24:43 +01:00
Felix Fietkau ce8cc5d52d mt7603: issue PSE client reset on init
Improves reliability of module reload after tx hangs

Signed-off-by: Felix Fietkau <[email protected]>
2019-01-22 14:09:54 +01:00
Felix Fietkau fe30bd35e2 mt7603: issue PSE reset on tx hang
Signed-off-by: Felix Fietkau <[email protected]>
2019-01-22 14:03:31 +01:00
Felix Fietkau 2efa389b4c mt7603: limit station power save queue length to 64
Avoid excessive memory use, in case something goes wrong.

Signed-off-by: Felix Fietkau <[email protected]>
2019-01-21 21:02:33 +01:00
Felix Fietkau 3df341d597 mt7603: avoid redundant MAC timing updates
Signed-off-by: Felix Fietkau <[email protected]>
2019-01-21 15:04:37 +01:00
Felix Fietkau 79b337cfad mt7603: move CF-End rate update to mt7603_mac_set_timing
Signed-off-by: Felix Fietkau <[email protected]>
2019-01-21 15:03:19 +01:00
Felix Fietkau b35cc8eefa mt7603: set timing on channel change before starting MAC
MAC needs to be stopped/started for timing change anyway

Signed-off-by: Felix Fietkau <[email protected]>
2019-01-21 14:59:52 +01:00
Felix Fietkau 815fd03e0f mt7603: fix CCA timing values
Sync CCK values with reference driver.
Use OFDM values obtained from the hardware reset value
Stop tx/rx on change only using the ARB_SCR register

Signed-off-by: Felix Fietkau <[email protected]>
2019-01-21 14:59:52 +01:00
Felix Fietkau 3e9a7d5c4d Revert "mt7603: fix txd q_idx field value"
This reverts commit 4bcb2f9fe2.
This causes a slight throughput regression

Signed-off-by: Felix Fietkau <[email protected]>
2019-01-21 14:30:47 +01:00
Felix Fietkau fc31457cd9 mt7603: implement support for SMPS
The hardware needs to be notified of peers using dynamic SMPS mode
Fixes using dual-stream rates on some clients (e.g. Intel)

Signed-off-by: Felix Fietkau <[email protected]>
2019-01-20 17:46:51 +01:00
Felix Fietkau 158529d679 mt7603: fix PSE reset retry sequence
Clear pending PSE request bit in order to avoid having it trigger by the
firmware at a bad point in time.
Only clear AC queue stuck bits if the PSE reset succeeded

Signed-off-by: Felix Fietkau <[email protected]>
2019-01-20 15:15:13 +01:00
Felix Fietkau 702f557c75 mt7603: use maximum tx count for buffered multicast packets
Should improve stability

Signed-off-by: Felix Fietkau <[email protected]>
2019-01-20 14:41:39 +01:00
Felix Fietkau c4e4982fa9 mt7603: set IEEE80211_HW_TX_STATUS_NO_AMPDU_LEN
The hardware cannot report accurate tx A-MPDU length information, so tell rate
control to ignore it. Improves tx rate selection

Signed-off-by: Felix Fietkau <[email protected]>
2019-01-16 22:35:17 +01:00
Felix Fietkau 4bcb2f9fe2 mt7603: fix txd q_idx field value
Use 802.11e ACI values - the vendor driver does the same

Signed-off-by: Felix Fietkau <[email protected]>
2019-01-16 19:56:18 +01:00