356 Commits
Author SHA1 Message Date
Lorenzo BianconiandFelix Fietkau 6ed5b7a5ec mt76x0: remove mt76x0u_alloc_device routine
Remove mt76x0u_alloc_device since it just runs mt76_alloc_device.
Move mt76_alloc_device call in mt76x0u_probe and in mt76x0e_probe

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-02-18 20:39:41 +01:00
Lorenzo BianconiandFelix Fietkau 47d5922e14 mt76: move alloc_device common code in mt76_alloc_device
Move mt76x{0,2} alloc_device common code in mt76_alloc_device and
remove duplicated code

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-02-18 20:39:41 +01:00
Lorenzo BianconiandFelix Fietkau 4db9d75a08 mt76x0: mcu: remove useless commented configuration
Remove useless commented out configuration in mt76x0u_load_firmware
routine

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-02-07 14:48:44 +01:00
Lorenzo BianconiandFelix Fietkau 28d81ff90e mt76x0: eeprom: fix VHT mcs{8,9} rate power offset
Fix rate power configuration for VHT mcs 8 and 9 in
mt76x0_get_tx_power_per_rate. Moreover use the rate power
offset used for HT/VHT mcs 6 even for HT/VHT mcs 7

Fixes: b37bbc8c8251 ("mt76x0: remove eeprom dependency from mt76x0_set_tx_power_per_rate")
Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2019-02-07 14:47:57 +01:00
Felix Fietkau e3c1aad159 mt76: run MAC work every 100ms
ED/CCA Tx blocking checks need to be run every 100 ms in order to avoid
triggering too late and keeping tx blocking on for too long

Signed-off-by: Felix Fietkau <[email protected]>
2019-02-03 14:46:51 +01:00
Felix Fietkau 4d7e13fcd5 mt76: explicitly disable energy detect cca during scan
Avoid reusing the previous channel's tx blocking state

Signed-off-by: Felix Fietkau <[email protected]>
2019-02-03 13:59:32 +01:00
Lorenzo BianconiandFelix Fietkau bc7ce2a170 mt76x0: init: introduce mt76x0_init_txpower routine
Add mt76x0_init_txpower in order to initialize max_power per channel
at device bootstrap. Modify mt76x0_get_tx_power_per_rate and
mt76x0_get_power_info signature in order to compute tx power for
non-operating channels

Signed-off-by: Lorenzo Bianconi <[email protected]>
2019-01-30 15:14:44 +01:00
Lorenzo BianconiandFelix Fietkau 24bd2c0d6e mt76x0: phy: report target_power in debugfs
Initialize target_power variable in mt76x0_phy_set_txpower in order to
report target_power in debugfs

Signed-off-by: Lorenzo Bianconi <[email protected]>
2019-01-30 15:14:31 +01:00
Lorenzo BianconiandFelix Fietkau c989bac555 mt76x0: eeprom: fix chan_vs_power map in mt76x0_get_power_info
Report correct eeprom per channel power value.
Fix chan_vs_power map in mt76x0_get_power_info routine

Fixes: f2a2e819d672 ("mt76x0: remove eeprom dependency from mt76x0_get_power_info")
Signed-off-by: Lorenzo Bianconi <[email protected]>
2019-01-30 15:14:19 +01:00
Lorenzo BianconiandFelix Fietkau 9661da4580 mt76: add energy detect CCA support to mt76x{0,2}e drivers
Ported from the reference driver. Should fix compliance with ETSI
regulatories on preventing transmission while energy detect values
are above the threshold.
The code has been tested using an ath9k device running tx99 as
noise generator

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-12-28 13:43:56 +01:00
Stanislaw GruszkaandFelix Fietkau f7d8c17573 mt76x0: configure MT_VHT_HT_FBK_CFG1
Configure MT_VHT_HT_FBK_CFG1 values similar like vendor driver.

Signed-off-by: Stanislaw Gruszka <[email protected]>
2018-12-28 13:43:56 +01:00
Lorenzo BianconiandFelix Fietkau 40dad3240f mt76x0: pci: fix ACS support
Fix Automatic Channel Selection (ACS) support in mt76x0e driver
configuring properly MT_CH_TIME_CFG register

Fixes: 6250318694ca ("mt76x0: pci: add get_survey support")
Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-12-28 13:43:56 +01:00
Hauke MehrtensandFelix Fietkau eb076ae8db mt76: Add missing include of linux/module.h
MODULE_FIRMWARE() is used in usb_mcu.c and provided by linux/module.h,
but this header file is not directly included. This causes problems in
backports with some kernel versions.

Add the missing include.

Signed-off-by: Hauke Mehrtens <[email protected]>
2018-12-28 13:43:56 +01:00
Felix Fietkau b2cc29b905 mt76: move mt76x02_get_txpower to mt76 core
It will be reused by mt7603 later

Signed-off-by: Felix Fietkau <[email protected]>
2018-12-06 14:30:00 +01:00
Felix Fietkau fea7ad804e mt76: move mt76x02_phy_get_min_avg_rssi to mt76 core
This will be used by mt7603 as well

Signed-off-by: Felix Fietkau <[email protected]>
2018-12-05 17:06:59 +01:00
Felix Fietkau a97127b1b3 mt76: replace sta_add/remove ops with common sta_state function
Allows adding unassociated stations from mac80211

Signed-off-by: Felix Fietkau <[email protected]>
2018-11-16 12:09:52 +01:00
Stanislaw GruszkaandFelix Fietkau 88f68838d9 mt76: remove wait argument from mt76x02_mcu_calibrate
We always wait for CMD_CALIBRATION_OP mcu message, but wait argument is used
for do additional MT_MCU_COM_REG0 register operations, which are needed
for mt76x2e devices and we can use appropriate check instead of wait argument.

Signed-off-by: Stanislaw Gruszka <[email protected]>
2018-11-13 20:56:41 +01:00
Lorenzo BianconiandFelix Fietkau 0bfa98eb08 mt76: introduce mt76x02_config_mac_addr_list routine
Add mt76x02_config_mac_addr_list routine in order to set
the mac address list supported by the driver. Initialize
wiphy->addresses/n_addresses for mt76x0e driver

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-11-13 20:56:41 +01:00
Stanislaw GruszkaandFelix Fietkau 663b197401 mt76x02: assure we update gain after scan
Assure that after we initialize dev->cal.low_gain to -1 this
will cause update gain calibration. Otherwise this might or
might not happen depending on value of second bit of low_gain
and values read from registers in mt76x02_phy_adjust_vga_gain().

Signed-off-by: Stanislaw Gruszka <[email protected]>
2018-11-01 18:29:27 +01:00
Stanislaw GruszkaandFelix Fietkau 9b97e0f2a5 mt76x02: run calibration after scanning
If we are associated and scanning is performed, sw_scan_complete callback
is done after we get back to operating channel, so we do not perform
queue cal work. Fix this queue cal work from sw_scan_complete().

On mt76x0 we have to restore gain in MT_BBP(AGC, 8) register after
scanning, as it was multiple times modified by channel switch code.
So queue cal work without any delay to set AGC gain value.

Similar like in mt76x2 init AGC gain only when set operating channel
and just check before queuing cal work in sw_scan_complete() if
initialization was already done.

Fixes: bbd10586f0df ("mt76x0: phy: do not run calibration during channel switch")
Signed-off-by: Stanislaw Gruszka <[email protected]>
2018-11-01 18:29:27 +01:00
Stanislaw GruszkaandFelix Fietkau 15cb426adf mt76: remove wait argument from mt76x02_mcu_function_select
Remove wait argument from mt76x02_mcu_function_select and wait for
response when function is not Q_SELECT, what is the same behaviour
like in vendor driver.

Note this change behaviour for PCIe devices for Q_SELECT function
form wait to no-wait, and for mt76x0u BW_SETTING from no-wait to wait.
But the change is in align with vendor driver.

Signed-off-by: Stanislaw Gruszka <[email protected]>
2018-11-01 18:29:27 +01:00
Stanislaw GruszkaandFelix Fietkau 94ad030758 mt76: remove mcu_msg_alloc
We almost always use patter like this:

       skb = mt76_mcu_msg_alloc(dev, &msg, sizeof(msg));
       return mt76_mcu_send_msg(dev, skb, CMD_FUN_SET_OP, wait_resp);

This is not needed, we can allocate skb in mcu_send_msg routine.

Signed-off-by: Stanislaw Gruszka <[email protected]>
2018-11-01 18:04:33 +01:00
Lorenzo BianconiandFelix Fietkau a78802c63b mt76x0: phy: use tssi reported value to configure tx power if available
Use tssi calibrated value to configure tx power gain if tssi is enabled
in eeprom data

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-11-01 18:04:15 +01:00
Lorenzo BianconiandFelix Fietkau 57b441dcae mt76x0: phy: introduce tssi calibration support
Run mt76x0 tssi calibration process if enabled in eeprom data.
Perform calibration procedure every 4s

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-11-01 18:04:15 +01:00
Lorenzo BianconiandFelix Fietkau 097b2bd05c mt76x0: init: use mt76x02_mac_wcid_setup for wcid configuration
Use mt76x02_mac_wcid_setup utility routine for wcid init configuration
and remove duplicated code. This patch fixes a mt76x0 AP issue since
hw key table selection was set to pairwise by default

Fixes: dbad2adcb2c7 ("mt76x0: pci: enable AP support")
Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-11-01 18:04:15 +01:00
Lorenzo BianconiandFelix Fietkau add66a0a09 mt76x0: init: use mt76x02_mac_shared_key_setup in mt76x0_init_hardware
Use mt76x02_mac_shared_key_setup utility routine for shared key
initialization and remove duplicated code

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-11-01 18:04:15 +01:00
Lorenzo BianconiandFelix Fietkau 2ae2046e70 mt76x0: phy: use mt76_poll_msec in mt76x0_phy_temp_sensor
Use mt76_poll_msec utility routine for CORE_R34 register polling
instead of mt76_poll in order to allow the hw to complete requested
calibration since on slow devices (e.g. mt7620 based boards) calibration
takes longer than 2ms

Fixes: 66a34c66e0cb ("mt76x0: phy: add phy/vco temperature compensation")
Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-11-01 18:04:15 +01:00
Stanislaw GruszkaandFelix Fietkau 172f081f27 mt76x0: do not overwrite other MT_BBP(AGC, 8) fields
MT_BBP(AGC, 8) register has values depend on band in
mt76x0_bbp_switch_tab, so we should not overwrite other fields
than MT_BBP_AGC_GAIN when setting gain.

This can fix performance issues when connecting to 2.4GHz AP.

Fixes: 4636a2544c3b ("mt76x0: phy: align channel gain logic to mt76x2 one")
Acked-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Stanislaw Gruszka <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-11-01 18:04:15 +01:00
Stanislaw GruszkaandFelix Fietkau 14b6c59dc6 mt76x0: use band parameter for LC calibration
We use always 1 as band parameter for MCU_CAL_LC, this break 2GHz,
we should use 0 for this band instead.

Patch fixes problems happened sometimes when try to associate with 2GHz
AP and manifest by errors like below:

[14680.920823] wlan0: authenticate with 18:31:bf:c0:51:b0
[14681.109506] wlan0: send auth to 18:31:bf:c0:51:b0 (try 1/3)
[14681.310454] wlan0: send auth to 18:31:bf:c0:51:b0 (try 2/3)
[14681.518469] wlan0: send auth to 18:31:bf:c0:51:b0 (try 3/3)
[14681.726499] wlan0: authentication with 18:31:bf:c0:51:b0 timed out

Fixes: 9aec146d0f6b ("mt76x0: pci: introduce mt76x0_phy_calirate routine")
Signed-off-by: Stanislaw Gruszka <[email protected]>
2018-10-25 19:15:54 +02:00
Lorenzo BianconiandFelix Fietkau ba9d4247f2 mt76x0: pci: add DFS support
Introduce dfs support in mt76x0e driver and unlock radar channels

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-23 11:14:20 +02:00
Lorenzo BianconiandFelix Fietkau 5bca2de885 mt76: move mt76x02_bss_info_changed in mt76x02-lib module
Unify drv_bss_info_changed mac80211 callback and remove duplicated
code in mt76x0 and mt76x2 drivers

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-23 11:13:45 +02:00
Lorenzo BianconiandFelix Fietkau fe5a1494c1 mt76: move tx protection routines in mt76x02-lib module
Move mt76x02_set_rts_threshold and mt76x02_mac_set_tx_protection
routines in mt76x02-lib module and remove duplicated code in mt76x0
and mt76x2 drivers. Remove pci_mac.c and mt76x0/mac.c since now are
empty files

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-23 11:13:45 +02:00
Lorenzo BianconiandFelix Fietkau 41d7ef7bbd mt76x0: update init vals for MT_TX_PROT registers
Add missing VHT MT_TX_PROT register init values

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-23 11:13:45 +02:00
Lorenzo BianconiandFelix Fietkau 3b86d9964b mt76: move mt76x02_set_tx_ackto in mt76x02-lib module
Move mt76x02_set_tx_ackto and mt76x02_set_coverage_class routines
in mt76x02-lib module in order to be reused by mt76x0 driver.
This is a preliminary patch to unify drv_bss_info_changed mac80211
callback between mt76x0 and mt76x2 drivers

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-23 11:13:45 +02:00
Lorenzo BianconiandFelix Fietkau c181d973ef mt76x0: pci: enable AP support
Add missing mac80211 callbacks to mt76x0e_ops data structure
and add mt76x02_beacon utility routines in mt76x0_bss_info_changed
in order to enable/disable beacon transmission

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-23 11:13:45 +02:00
Lorenzo BianconiandFelix Fietkau e684281389 mt76: introduce mt76x02_init_beacon_config routine
Add mt76x02_init_beacon_config utility routine in mt76x02-lib
module in order to be reused by mt76x0 driver configuring
BSSID registers and remove duplicated code

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-23 11:13:45 +02:00
Lorenzo BianconiandFelix Fietkau aa1d6bd6bc mt76: move mt76x02_sta_ps in mt76x02-lib module
Move mt76x02_sta_ps utility routine in mt76x02_util.c
in order to be reused by mt76x0 driver adding AP support

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-23 11:13:45 +02:00
Lorenzo BianconiandFelix Fietkau 2d736cff1d mt76: move mt76x02_get_txpower in mt76x02_util.c
Move mt76x02_get_txpower utility routine in mt76x02-lib module
in order to be reused by mt76x0 and mt76x2u drivers

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-23 11:13:45 +02:00
Lorenzo BianconiandFelix Fietkau acd4c99e87 mt76: move mt76x02_sw_scan and mt76x02_sw_scan_complete in mt76x02-lib module
Move mt76x02_sw_scan and mt76x02_sw_scan_complete utility routines
in mt76x02_util.c in order to be reused by mt76x0 and mt76x2u drivers
and remove duplicated code

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-23 11:13:45 +02:00
Lorenzo BianconiandFelix Fietkau 8486047738 mt76x0: pci: add pre_tbtt_tasklet support
Enable/disable pre_tbtt_tasklet in mt76x0 driver in order
to add AP support

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-23 11:13:45 +02:00
Lorenzo BianconiandFelix Fietkau aa6ebf9da5 mt76: move mt76x02_init_device in mt76x02-lib module
Move mt76x02_init_device routine in mt76x02_util.c in order to be
reused by mt76x0 driver and remove duplicated code. Move interface
combo definition supported by the driver in mt76x02_init_device routine

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-23 11:13:45 +02:00
Lorenzo BianconiandFelix Fietkau d4391ae2f0 mt76: move mt76x02_mac_set_short_preamble in mt76x02_mac.c
Move mt76x02_mac_set_short_preamble routine in mt76x02-lib module
since it is shared between mt76x0 and mt76x2 drivers

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-23 11:13:45 +02:00
Lorenzo BianconiandFelix Fietkau 5d8c4bfc9c mt76x0: align mt76x0u and mt76x0e fw version
Unify firmware version used on mt76x0e and mt76x0u drivers.
Fallback to mt7610u fw if mt7610e one is not available

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-23 11:13:45 +02:00
Lorenzo BianconiandFelix Fietkau 97e026924a mt76x0: mac: remove mt76x0_mac_set_ampdu_factor
Remove no longer used mt76x0_mac_set_ampdu_factor routine

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-23 11:13:45 +02:00
Lorenzo BianconiandFelix Fietkau 3c54612f7f mt76x0: pci: add missing MODULE_FIRMWARE macro
Add missing firmware declaration for mt76x0e driver

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-23 11:13:45 +02:00
Lorenzo BianconiandFelix Fietkau dade10933e mt76x0: init: simplify mt76x0_init_mac_registers
Simplify mt76x0_init_mac_registers routine using mt76_set, mt76_clear
and mt76_rmw utility routines

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-23 09:49:40 +02:00
Stanislaw GruszkaandFelix Fietkau 11151f4887 mt76x0: antenna select corrections
Update mt76x0_phy_ant_select() to conform vendor driver, most notably
add dual antenna mode support, read configuration from EEPROM and
move ant select out of channel config to init phase. Plus small MT7630E
quirk for MT_CMB_CTRL register which vendor driver dedicated to this
chip do.

This make MT7630E workable with mt76x0e driver and do not cause any
problems on MT7610U for me.

Signed-off-by: Stanislaw Gruszka <[email protected]>
Acked-by: Lorenzo Bianconi <[email protected]>
2018-10-23 09:49:40 +02:00
Lorenzo BianconiandFelix Fietkau 1a2b2dc1c9 mt76: usb: fix static tracepoints
Add submit_urb and rx_urb static tracepoints in mt76-usb module.
Move trace_mac_txstat_fetch in mt76x02_mac_load_tx_status routine
in order to be available to usb drivers. Moreover remove
no longer used mt76x0/trace.{c,h}

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-10-23 09:49:40 +02:00
Felix Fietkau d033272458 mt76: mt76x0: handle chip specific initval differences
Some RF registers need different values for various chips.
For at least mt76x0_rf_central_tab registers, overwriting them later does
not work, as the wrong values can cause the entire system to hang on some
devices with MT7610E

Signed-off-by: Felix Fietkau <[email protected]>
2018-10-23 09:49:40 +02:00
Stanislaw GruszkaandFelix Fietkau 5ed28f34cd mt76x0: do not perform MCU calibration for MT7630
Driver works better for MT7630 without MCU calibration, which
looks like it can hangs the firmware. Vendor driver do not
perform it for MT7630 as well.

Signed-off-by: Stanislaw Gruszka <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-16 12:51:14 +02:00