356 Commits
Author SHA1 Message Date
Lorenzo BianconiandFelix Fietkau 6856ef62bf mt76: usb: fix hw initialization sequence
mt76u_alloc_queues need to be called before mt76u_mcu_init_rx
since it initializes rx_page_lock spinlock used in mt76u_buf_alloc
routine.

Fixes: b11e19694dc9 ("mt76x0: add ieee80211_ops ops pointer to
mt76x0_alloc_device signature")

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-04 12:55:58 +02:00
Lorenzo BianconiandFelix Fietkau 053de5c432 mt76x0: pci: add mt76x0e_cleanup routine
Add mt76x0e_cleanup routine to tidy up the device
during device removal

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-10-01 13:43:30 +02:00
Lorenzo BianconiandFelix Fietkau fb5bae06ef mt76x0: usb: move mt76x0u_tx_prepare_skb in usb.c
Move mt76x0u_tx_prepare_skb routine in usb module in
order to remove leftover usb dependency from generic code

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-28 13:47:52 +02:00
Lorenzo BianconiandFelix Fietkau b50f38acb3 mt76x0: eeprom: load eeprom data from mtd by default
Read eeprom data from mtd memory by default and fall-back
to efuse if it fails

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-28 13:47:52 +02:00
Lorenzo BianconiandFelix Fietkau c240904a31 mt76x0: pci: add mt76x0e_{start/stop} callbacks
Introduce mt76x0e_start and mt76x0e_stop mac80211
callbacks to start/stop device mac opening/closing
the netdevice

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-28 13:47:52 +02:00
Lorenzo BianconiandFelix Fietkau 8050d714e8 mt76x0: add ieee80211_ops ops pointer to mt76x0_alloc_device signature
Add ieee80211_ops ops pointer to mt76x0_alloc_device routine signature
in order to specify mac80211 callbacks and remove usb dependency from
mt76x0 generic code.
Move mt76x0_ops callbacks in usb module in order to remove leftover
usb dependency in mt76x0 generic code.
Introduce mt76x0e_ops mac80211 callbacks for pci code

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-28 13:47:52 +02:00
Lorenzo BianconiandFelix Fietkau 5d2a331f91 mt76: move set_{tx,rx}_path routines in mt76x02-lib module
Move mt76x02_phy_set_rxpath and mt76x02_phy_tx_dac routines in
mt76x02_phy.c since they are shared between mt76x2 and mt76x0 drivers.
Moreover move chainmask variable from mt76x2/mt76x0 to mt76_dev data
structure

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-28 13:47:52 +02:00
Lorenzo BianconiandFelix Fietkau 15a50e1267 mt76x0: phy: set antenna parameter according to wireless band
Move mt76x0_ant_select routine in __mt76x0_phy_set_channel in order to
configure antenna parameters according to the current wireless channel

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-28 13:47:52 +02:00
Lorenzo BianconiandFelix Fietkau 22be43e70d mt76x0: pci: add hw initialization at bootstrap
Add mt76x0e_register_device routine in pci.c
to initialize the device during hw probe.

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-28 13:47:52 +02:00
Lorenzo BianconiandFelix Fietkau da982d3ce6 mt76x0: usb: move initialization code in usb.c
Move usb initialization code in mt76x0-usb module in
order to remove usb dependency from generic init code
(not completed yet). Moreover fix a memory leak in usb probe
if mt76x02_wait_for_mac fails

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-28 13:47:52 +02:00
Lorenzo BianconiandFelix Fietkau 5bb8339822 mt76x0: init rx filter in mt76x0_init_hardware
Initialize rxfilter mask at bootstrap an not at mac start.
This is a preliminary patch to share mt76x2_mac_start routine
between mt76x2e and mt76x0e drivers

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-28 13:47:52 +02:00
Lorenzo BianconiandFelix Fietkau 94776fe14b mt76x0: init: remove MT_PBF_SYS_CTRL configuration in mt76x0_reset_csr_bbp
Remove MT_PBF_SYS_CTRL configuration in mt76x0_reset_csr_bbp since
it is already initialized in mt76x0_init_mac_registers routine

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-28 13:47:52 +02:00
Lorenzo BianconiandFelix Fietkau 005d40af4f mt76x0: init: remove duplicated initialization
Remove MT_HEADER_TRANS_CTRL_REG/MT_TSO_CTRL configuration
since they are already initialized in mt76x0_init_mac_registers
routine

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-28 13:47:52 +02:00
Lorenzo BianconiandFelix Fietkau c7b28f49a7 mt76x0: use mt76x02 utility routines in mt76x0 init code
Use mt76x02_wait_for_wpdma and mt76x02_wait_for_txrx_idle
utility routines in mt76x0_init_hardware and mt76x0_mac_start
and remove duplicated code

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-28 13:47:52 +02:00
Lorenzo BianconiandFelix Fietkau 886f6fc995 mt76x0: usb: move mcu code in usb_mcu.c
Move usb mcu code in a dedicated source file in order to remove
usb dependency from generic source files and improve code
maintainability

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-28 13:47:52 +02:00
Lorenzo BianconiandFelix Fietkau e1a21793e1 mt76x0: pci: move mcu code in pci_mcu.c
Move pci mcu code in a dedicated source file in order to
improve maintainability and facilitate new device support
development

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-28 13:47:52 +02:00
Lorenzo BianconiandFelix Fietkau 7cc4be790b mt76x0: update initvals to latest version of vendor driver
Update mac/rf/dcoc initial values to latest version of vendor driver.
Improve code readability

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-28 13:47:52 +02:00
Lorenzo BianconiandFelix Fietkau 5a29094532 mt76: move mt76x02_beacon_offset in mt76x02_util.c
Move mt76x02_beacon_offset utility routine in mt76x02-lib module
since it is shared between mt76x0 and mt76x2 driver and remove
duplicated code. Moreover move beacon_offset data structure in
mt76x02-lib module since it is shared between mt76x0 and mt76x2
drivers

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-28 13:47:52 +02:00
Lorenzo BianconiandFelix Fietkau b95bc8a75a mt76x0: use mt76_poll in mt76x0_set_wlan_state
Use mt76_poll utility routine in mt76x0_set_wlan_state to check
if the PLL/XTAL is ready

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-28 13:45:08 +02:00
Felix Fietkau 41c552f13a mt76x0: work around cflags issue in compat layer for trace.h
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-28 13:03:29 +02:00
Stanislaw GruszkaandFelix Fietkau 4112e1ca30 mt76x0: add quirk to disable 2.4GHz band for Archer T1U
TP-LINK Archer T1U do not support 2.4GHz band despite EEPROM
reports that. Add quirk to mask out 2.4GHz support.

Reported-by: Sid Hayn <[email protected]>
Signed-off-by: Stanislaw Gruszka <[email protected]>
2018-09-26 22:04:27 +02:00
Lorenzo BianconiandFelix Fietkau 06b4b36049 mt76: usb: make rx page_frag_cache access atomic
Add rx_page_lock spinlock in order to make rx page fragment access
atomic. This patch fixes the following crash that occasionally
occurs during module loading/unloading

BUG: unable to handle kernel paging request at ffff9f8322e19000
PGD 27ba01067 P4D 27ba01067 PUD 27ddba063 PMD 263b35063 PTE 8000000262e19061
Oops: 0003 [#1] SMP PTI
CPU: 2 PID: 1766 Comm: systemd-udevd Not tainted 4.19.0-rc5+ #6
Hardware name: ASUSTeK COMPUTER INC. ESC2000 G2/Z9PE-D8 WS, BIOS 0405 03/19/2012
RIP: 0010:__memcpy+0x12/0x20
RSP: 0018:ffffba13849b3ad8 EFLAGS: 00010246
RAX: ffff9f8322e17004 RBX: 00000000000038f0 RCX: 000000000000031f
RDX: 0000000000000000 RSI: ffffba13844cf058 RDI: ffff9f8322e18ffc
RBP: 0000000000010c6c R08: 0000000000000000 R09: 0000607ec0000000
R10: 0000000000000003 R11: 0000000000003e2e R12: ffff9f8324cd9540
R13: 0000000000000000 R14: ffffba13849b3b30 R15: ffff9f8322e17000
FS:  00007fadec85b880(0000) GS:ffff9f833fa80000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: ffff9f8322e19000 CR3: 0000000263428001 CR4: 00000000000606e0
Call Trace:
 mt76x02u_mcu_fw_send_data+0x16c/0x270 [mt76x02_usb]
 mt76x0u_probe+0x35a/0x598 [mt76x0u]
 usb_probe_interface+0x113/0x310
 really_probe+0x1c8/0x400
 driver_probe_device+0x5c/0x130
 __driver_attach+0xec/0x110
 bus_for_each_dev+0x50/0x90
 bus_add_driver+0x1c0/0x280
 driver_register+0x5b/0xe0
 usb_register_driver+0x7c/0x140
 do_one_initcall+0x44/0x19b
 do_init_module+0x5a/0x210
 load_module+0x175c/0x1bc0
 __do_sys_finit_module+0x97/0xc0
 do_syscall_64+0x3f/0xf0
 entry_SYSCALL_64_after_hwframe+0x44/0xa9
RIP: 0033:0x7fadeb6f1809
RSP: 002b:00007ffe548f9f38 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
RAX: ffffffffffffffda RBX: 00007fadebdf0d89 RCX: 00007fadeb6f1809
RDX: 0000000000000000 RSI: 00007fadebdf0d89 RDI: 0000000000000006
RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000006 R11: 0000000000000246 R12: 0000560b9ef58ab0
R13: 0000560b9ef29800 R14: 0000560b9ef59040 R15: 0000000000020000

Fixes: c12128ce44b0 ("mt76: use a per rx queue page fragment cache")
Reported-by: Stanislaw Gruszka <[email protected]>
Tested-by: Stanislaw Gruszka <[email protected]>
Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-26 22:04:27 +02:00
Davide CarattiandFelix Fietkau 4f346379b3 mt76: report firmware version using ethtool
print fw_ver and build_ver members of struct mt76x02_fw_header, similarly
to what appears in the output of 'dmesg' when the MCU firmware is loaded.

Reported-by: Sid Hayn <[email protected]>
Signed-off-by: Davide Caratti <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-26 22:04:27 +02:00
Felix Fietkau 8cd4ecfa0e mt76: include linux/module.h in files using MODULE_*
Fix source files using MODULE_* macros without including linux/module.h

Signed-off-by: Felix Fietkau <[email protected]>
2018-09-26 22:04:27 +02:00
Lorenzo BianconiandFelix Fietkau ac8c1db8b0 mt76x0: phy: introduce mt76x0_phy_set_txpower routine
Add mt76x0_phy_set_txpower routine in order to configure
base and per rate tx power gain. Moreover take into account
txpower_conf in order to limit the tx power gain according to
the bound provided by mac80211

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-26 22:04:27 +02:00
Lorenzo BianconiandFelix Fietkau 82248d9cfa mt76x0: use shared debugfs implementation
Use mt76 shared debugfs implementation and remove duplicated code
in mt76x0 driver

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-26 22:04:27 +02:00
Lorenzo BianconiandFelix Fietkau 9a0cf759f9 mt76x0: remove eeprom dependency from mt76x0_get_power_info
In order to unify eeprom parsing between mt76x0 and mt76x2 drivers,
remove eeprom pointer dependency from mt76x0_get_power_info routine.
Remove mt76x0_eeprom_params since it is now an empty structure

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-26 22:04:27 +02:00
Lorenzo BianconiandFelix Fietkau a8cba4623b mt76x0: remove eeprom dependency from mt76x0_set_tx_power_per_rate
In order to unify eeprom parsing between mt76x0 and mt76x2 drivers,
remove eeprom pointer dependency from mt76x0_set_tx_power_per_rate.
Moreover use mt76_rate_power to store power vs rate calibration data.

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-26 22:04:27 +02:00
Lorenzo BianconiandFelix Fietkau d1c23bc697 mt76x0: remove mt76x0_phy_set_tx_power and mt76x0_extra_power_over_mac
Remove mt76x0_extra_power_over_mac and mt76x0_phy_set_tx_power routines
since they are not actually used and tx power handling will be unified
with mt76x2 driver

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-26 22:04:27 +02:00
Lorenzo BianconiandFelix Fietkau 1adcd3964b mt76x0: unify parse hw capabilities
Unify parse hw capabilities with mt76x2 driver using
mt76x02_eeprom_parse_hw_cap utility routine available
in mt76x02-lib module

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-21 18:05:35 +02:00
Lorenzo BianconiandFelix Fietkau 76bc22f3ba mt76x0: unify freq offset parsing
Unify frequency offset parsing with mt76x2 driver using
eeprom utility routines available in mt76x02-lib module

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-21 18:05:35 +02:00
Lorenzo BianconiandFelix Fietkau fe89537df0 mt76x0: unify temperature offset parsing
Unify temperature offset parsing with mt76x2 driver using
eeprom utility routines available in mt76x02-lib module

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-21 18:05:35 +02:00
Lorenzo BianconiandFelix Fietkau 2a470dbf73 mt76x0: unify rssi_offset parsing
Unify rssi_offset parsing with mt76x2 driver using eeprom utility
routines available in mt76x02-lib module

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-21 18:05:35 +02:00
Lorenzo BianconiandFelix Fietkau 35b0a2a474 mt76x0: unify lna_gain parsing
Unify lna gain parsing with mt76x2 driver using eeprom utility
routines available in mt76x02-lib module

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-21 18:05:35 +02:00
Lorenzo BianconiandFelix Fietkau 19d78534be mt76x0: remove mt76x0_set_country_reg routine
Remove mt76x0_set_country_reg routine for the moment
since it is partial and it is not actually used

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-21 18:05:35 +02:00
Lorenzo BianconiandFelix Fietkau 7556cb9355 mt76: move mt76x2_ext_pa_enabled routine in mt76x02_eeprom.c
Move mt76x2_ext_pa_enabled utility routine in mt76x02_eeprom.c
and remove duplicated code. This is a preliminary patch to
unify eeprom code between mt76x2 and mt76x0 driver

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-21 18:05:35 +02:00
Lorenzo BianconiandFelix Fietkau 844daebc0d mt76: move mt76x2_get_efuse_data in mt76x02-lib module
Move mt76x2_efuse_read and mt76x2_get_efuse_data in mt76x02_eeprom.c
in order to be reused in mt76x0 driver for eeprom parsing

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-21 18:05:35 +02:00
Lorenzo BianconiandFelix Fietkau b59ed565de mt76: move mt76x02_mac_setaddr in mt76x02-lib module
Move mt76x02_mac_setaddr utility routine in mt76x02-lib
module and remove duplicated code. This is a preliminary patch
to unify eeprom code between mt76x2 and mt76x0 driver

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-21 18:05:35 +02:00
Lorenzo BianconiandFelix Fietkau c9100cb925 mt76: move eeprom utility routines in mt76x02_eeprom.h
Move shared eeprom utility routines in mt76x02_eeprom.h and
remove duplicated code

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-21 18:05:35 +02:00
Lorenzo BianconiandFelix Fietkau 4451f99549 mt76: move common eeprom definitions in mt76x02-lib module
Move mt76x2 and mt76x0 common definitions in mt76x02_eeprom.h
and remove duplicated code

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-21 18:05:35 +02:00
Lorenzo BianconiandFelix Fietkau 35e88c00d7 mt76x0: pci: add fw uploading routine
Add pci load firmware routine. Move some shared mcu definitions
in mt76x02_mcu.h

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Stanislaw Gruszka <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-21 17:33:03 +02:00
Lorenzo BianconiandFelix Fietkau 0aced8057f mt76x0: pci: add mt7650 PCI ID
Add mt7650 PCI id found on ASUS rt-51ac to pci_device_id table

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-21 17:33:03 +02:00
Lorenzo BianconiandFelix Fietkau d56be993ce mt76x0: usb: remove mt76_fw definition
Remove mt76_fw dependency from mt76x0u_upload_firmware routine since
it does not define firmware layout properly. Moreover use mt76_poll_msec
utility routine to check if the fw is properly running

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-20 12:02:55 +02:00
Lorenzo BianconiandFelix Fietkau 44145f33ae mt76x0: remove unused usb header file
Remove unused usb header file and move mt76x0 firmware definition
in usb.c

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-20 12:02:41 +02:00
Lorenzo BianconiandFelix Fietkau 26b20f8dea mt76x0: remove mcu source file
Remove mcu.c source file since it contains just 'one-line' function
that is shared between PCI and USB code

Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-20 12:02:35 +02:00
Stanislaw GruszkaandFelix Fietkau 1047913825 mt76x0: usb: move firmware loading to usb.c
Firmware loading is usb specific, move it to usb.c file.

Signed-off-by: Stanislaw Gruszka <[email protected]>
Signed-off-by: Lorenzo Bianconi <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
2018-09-20 12:02:28 +02:00
Lorenzo BianconiandFelix Fietkau ce91108826 mt76: move shared mcu_calibrate routine in mt76x02-lib module
Move mcu_calibrate routine in mt76x02-lib module since it is
shared between USB and PCI code. Moreover remove duplicated
code

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-12 13:16:50 +02:00
Lorenzo BianconiandFelix Fietkau a0cbd4b677 mt76: move mt76{0,2} mcu shared code in mt76x02_mcu.c
Move shared mt76x2/mt76x0 mcu shared code in a common file
and remove duplicated code

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-12 13:16:50 +02:00
Lorenzo BianconiandFelix Fietkau 90b1eace21 mt76: unify firmware header between mt76x0 and mt76x2
Move mt76x2_fw_header definition in mt76x02_mcu.h and remove
duplicated code

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-12 13:16:50 +02:00
Lorenzo BianconiandFelix Fietkau 14aaf8790d mt76: usb: remove skb check in mt76x{0,2}u mcu routines
Remove mt76_mcu_msg_alloc return value check since it is already
evaluated in __mt76x02u_mcu_send_msg

Signed-off-by: Lorenzo Bianconi <[email protected]>
2018-09-12 13:16:50 +02:00