68 Commits
Author SHA1 Message Date
Felix Fietkau bd0df1b017 mt76: avoid extra RCU synchronization on station removal
Use sta_pre_rcu_remove callback to clear wcid pointer earlier

Signed-off-by: Felix Fietkau <[email protected]>
2020-02-07 12:33:17 +01:00
Lorenzo BianconiandFelix Fietkau 9354f0f41d mt76: mt7603: set 0 as min coverage_class value
Set 0 as minimum configurable value for coverage_class since mt76 does
not support dynack

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-12-13 23:16:36 +01:00
Lorenzo BianconiandFelix Fietkau 683eb244fa mt76: mt7603: reset STA_CCA counter setting the channel
Reset MT_MIB_STAT_CCA after channel switch since it is used to track busy
time starting from 'commit dcff8d4dc301 ("mt76: mt7603: switch to a
different counter for survey busy time")'

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-12-13 23:16:32 +01:00
Felix Fietkau a3e88bcf17 mt76: move state from struct mt76_dev to mt76_phy
Allows keeping per-wiphy state separate

Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20 12:54:55 +01:00
Felix Fietkau ee36c8e217 mt76: move channel state to struct mt76_phy
Add support for an extra wiphy in mt76_set_channel and mt76_get_survey
This is preparation for supporting multiple wiphys per device to support the
concurrent dual-band feature of MT7615D

Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20 12:54:17 +01:00
Felix Fietkau c5f1e83e30 mt76: add support for an extra wiphy in the main tx path
This is preparation for supporting multiple wiphys per device to support the
concurrent dual-band feature of MT7615D

Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20 12:54:17 +01:00
Lorenzo BianconiandFelix Fietkau db78ee08d9 mt76: move mt76_get_antenna in mt76_core module
Move mt76_get_antenna in mac80211.c in order to be reused by all
drivers. Initialize .get_antenna function pointer for mt76x0, mt7603,
mt7615 and mt76x2u drivers

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-11-20 12:27:21 +01:00
Felix Fietkau 2a0a19168d mt7603: remove vif sta from poll list on interface remove
Signed-off-by: Felix Fietkau <[email protected]>
2019-10-11 16:03:39 +02:00
Felix Fietkau 5b02a078d4 mt76: add missing locking around ampdu action
This is needed primarily to avoid races in dealing with rx aggregation
related data structures

Signed-off-by: Felix Fietkau <[email protected]>
2019-10-07 12:32:21 +02:00
Felix Fietkau ee310307ad mt76: mt7603: track tx airtime for airtime fairness and survey
Poll per-station hardware counters after tx status events

Signed-off-by: Felix Fietkau <[email protected]>
2019-09-26 14:59:06 +02:00
Lorenzo BianconiandFelix Fietkau 081926aa7b mt76: mt7603: collect aggregation stats
Introduce ampdu_stat entry in mt7603 debugfs in order to dump 802.11
aggr cumulative statistics

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-09-26 12:04:20 +02:00
Felix Fietkau 4d8a9f2061 mt76: do not send BAR frame on tx aggregation flush stop
There is no need to send a BAR frame after stopping aggregation, and doing
so could lead to sending class 3 frames after deauthentication from an AP

Signed-off-by: Balakrishna Bandi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-08-22 09:37:42 +02:00
Lorenzo BianconiandFelix Fietkau a7fa326039 mt76: add default implementation for mt76_sw_scan/mt76_sw_scan_complete
Introduce a default implementation for mt76_sw_scan and
mt76_sw_scan_complete in mt76 module and remove duplicated code
since most of the drivers share the same implementation

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-08-22 09:26:30 +02:00
Lorenzo BianconiandFelix Fietkau 1f44159b41 mt76: mt7603: move survey_time in mt76_dev
Move survey_time field in mt76_dev in order to be reused adding survey
support to mt7615 driver

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-08-21 13:02:33 +02:00
Ryder LeeandFelix Fietkau 8b7bbd0176 mt76: mt7603: fix some checkpatch warnings
This fixes the following checkpatch warnings:

WARNING: Improper SPDX comment style
CHECK: No space is necessary after a cast

Signed-off-by: Ryder Lee <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-08-20 15:21:30 +02:00
Lorenzo BianconiandFelix Fietkau 3d6796b867 mt76: mt7603: fix watchdog rescheduling in mt7603_set_channel
Convert MT7603_WATCHDOG_TIME in jiffies rescheduling watchdog delayed
work

Fixes: c8846e101502 ("mt76: add driver for MT7603E and MT7628/7688")
Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-08-20 15:21:27 +02:00
Stanislaw GruszkaandFelix Fietkau f74d117ed4 mt76: mt7603: use params->ssn value directly
There is no point to use pointer to params->ssn.

Signed-off-by: Stanislaw Gruszka <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-07-12 16:07:11 +02:00
Lorenzo BianconiandFelix Fietkau f9dadd2d93 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:57:45 +02:00
Lorenzo BianconiandFelix Fietkau cb63a06c40 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-11 16:03:52 +02:00
Lorenzo BianconiandFelix Fietkau 7606c08414 mt76: mt7603: enable/disable pre_tbtt_tasklet in mt7603_set_channel
Disable pre_tbtt_tasklet tasklet before setting the operating channel.
Enable/disable beacon_timer in mt7603_set_channel

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-04-30 17:52:28 +02:00
Lorenzo BianconiandFelix Fietkau 6e790e106a mt76: move pre_tbtt_tasklet in mt76_dev
Move pre_tbtt_tasklet tasklet in mt76_dev data structure since
it is used by all drivers

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-04-30 17:52:28 +02:00
Lorenzo BianconiandFelix Fietkau f43fccf099 mt76: move beacon_int in mt76_dev
Move beacon_int in mt76_dev data structure since it is used by
all drivers

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-04-30 11:43:51 +02:00
Ryder LeeandFelix Fietkau 355c07904d 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-04-25 12:04:34 +02:00
Lorenzo BianconiandFelix Fietkau a7dfcf2e24 mt76: move mac_work in mt76_dev
Move mac_work delayed work in mt76_dev data structure since
it is used by all drivers and it will be reused adding mac work to
mt7615

Signed-off-by: Lorenzo Bianconi <[email protected]>
2019-04-25 12:04:34 +02:00
Felix Fietkau ae166b09cf Revert "mt76: mt7603: store software PN/IV in wcid"
This reverts commit 2660aa98c4.
PN needs to be shared with mac82011 for mgmt frame crypto

Signed-off-by: Felix Fietkau <[email protected]>
2019-03-26 11:35:18 +01:00
Stanislaw GruszkaandFelix Fietkau 65e634418c mt76: unify set_tim
All mt76 drivers (now also USB drivers) require empty .set_tim
callback. Add it to common mt76 module and use on all drivers.

Signed-off-by: Stanislaw Gruszka <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-03-24 08:22:22 +01:00
Felix Fietkau 6fc50ea917 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:01:28 +01:00
Felix Fietkau 5912e8a1ff 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 17:58:06 +01:00
Felix Fietkau 2660aa98c4 mt76: mt7603: store software PN/IV in wcid
Avoids expensive 64-bit atomic access in the data path

Signed-off-by: Felix Fietkau <[email protected]>
2019-03-16 20:11:42 +01:00
Lorenzo BianconiandFelix Fietkau 06c917faeb mt76: introduce mt76_sw_queue data structure
Introduce mt76_sw_queue data structure in order to support new
chipsets (e.g. mt7615) that have a shared hardware queue for all traffic
identifiers. mt76_sw_queue will be used to track outstanding packets

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-03-13 12:53:23 +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 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
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
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 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 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 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 d273ddd9e3 mt7603: fix number of frames limit in .release_buffered_frames
Signed-off-by: Felix Fietkau <[email protected]>
2019-01-15 12:50:01 +01:00
Felix Fietkau 48fb0116f0 mt7603: fix CF-End transmit rate when 11b stations are connected
Use a CCK rate in that case

Signed-off-by: Felix Fietkau <[email protected]>
2018-12-30 17:08:40 +01:00
Felix Fietkau 24ec040a97 mt7603: fix BSSID configuration in AP mode
Fixes BSSID value in self-generated frames, such as CF-End

Signed-off-by: Felix Fietkau <[email protected]>
2018-12-30 16:41:17 +01:00
Felix Fietkau 148219d572 mt7603: fix checkpatch issues
Signed-off-by: Felix Fietkau <[email protected]>
2018-12-29 13:27:35 +01:00
Felix Fietkau 6203d46fcc mt7603: add support for setting transmit power
Signed-off-by: Felix Fietkau <[email protected]>
2018-12-06 14:38:07 +01:00
Felix Fietkau 9d009be68d mt7603: add dynamic sensitivity tuning based on false CCA events
This reduces sensitivity in cases where it could help throughput/stability.

Signed-off-by: Felix Fietkau <[email protected]>
2018-12-05 18:26:20 +01:00
Felix Fietkau 80843237fa mt7603: implement code for adjusting energy detect CCA thresholds
Ported from the reference driver.
Should fix compliance with ETSI rules on preventing transmission while
energy detect values are above the threshold.
Relax rules for non-ETSI regdomains

Signed-off-by: Felix Fietkau <[email protected]>
2018-12-03 18:03:52 +01:00
Felix Fietkau cd456ca87f mt7603: disable broken support for WEP hardware encryption
Signed-off-by: Felix Fietkau <[email protected]>
2018-11-28 15:03:26 +01:00