openwrt/staging/blogic.git
6 years agoqtnfmac: add missing header includes to bus.h
Igor Mitsyanko [Mon, 24 Sep 2018 22:15:11 +0000 (15:15 -0700)]
qtnfmac: add missing header includes to bus.h

A few include directives were missing in bus.h resulting in dependency
of include order in other modules. Add missing includes.

Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agoqtnfmac_pcie: rename platform-specific functions
Igor Mitsyanko [Mon, 24 Sep 2018 22:15:10 +0000 (15:15 -0700)]
qtnfmac_pcie: rename platform-specific functions

Rename several functions to indicate that they are platform specific.

Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agoqtnfmac_pcie: separate platform-independent PCIe structure
Igor Mitsyanko [Mon, 24 Sep 2018 22:15:09 +0000 (15:15 -0700)]
qtnfmac_pcie: separate platform-independent PCIe structure

Move platform-independent PCIe data structure to a separate header file
so it can be reused by different devices.

Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agoqtnfmac_pcie: pearl: rename spinlock tx0_lock to tx_lock
Igor Mitsyanko [Mon, 24 Sep 2018 22:15:08 +0000 (15:15 -0700)]
qtnfmac_pcie: pearl: rename spinlock tx0_lock to tx_lock

tx_lock name will later be reused when common pcie code is extracted to
separate files.

Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agoqtnfmac_pcie: indicate pearl-specific structures by their names
Igor Mitsyanko [Mon, 24 Sep 2018 22:15:07 +0000 (15:15 -0700)]
qtnfmac_pcie: indicate pearl-specific structures by their names

In preparation to extract common PCIe driver state, indicate
PEARL-specific structures by their name and move them to pearl-specific
source file.

Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agoqtnfmac_pcie: rename private Pearl PCIe state structure
Igor Mitsyanko [Mon, 24 Sep 2018 22:15:06 +0000 (15:15 -0700)]
qtnfmac_pcie: rename private Pearl PCIe state structure

In preparation to extract common pcie driver state into a separate
structure, rename Pearl-specific state to qtnf_pcie_pearl_state and move
it directly to pearl-specific PCIe source file.

Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agoqtnfmac_pcie: move Pearl pcie sources to pcie-specific directory
Igor Mitsyanko [Mon, 24 Sep 2018 22:15:05 +0000 (15:15 -0700)]
qtnfmac_pcie: move Pearl pcie sources to pcie-specific directory

In preparation to extract common qtnfmac PCIe driver sources into a
separate file, move existing Pearl-specific pcie driver sources to pcie/
directory.

Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agoqtnfmac_pcie: do not store FW name in driver state structure
Igor Mitsyanko [Mon, 24 Sep 2018 22:15:04 +0000 (15:15 -0700)]
qtnfmac_pcie: do not store FW name in driver state structure

Firmware name is only needed at probe stage, no point in keeping it in
driver state structure.

Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agort2800: flush and txstatus rework for rt2800mmio
Stanislaw Gruszka [Wed, 26 Sep 2018 10:24:57 +0000 (12:24 +0200)]
rt2800: flush and txstatus rework for rt2800mmio

Implement custom rt2800mmio flush routine and change txstatus
routine to read TX_STA_FIFO also in the tasklet.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agort2x00: use different txstatus timeouts when flushing
Stanislaw Gruszka [Wed, 26 Sep 2018 10:24:56 +0000 (12:24 +0200)]
rt2x00: use different txstatus timeouts when flushing

Use different tx status timeouts for normal operation and when flushing.
This increase timeout to 2s for normal operation as when there are bad
radio conditions and frames are reposted many times device can not provide
the status for quite long. With new timeout we can still get valid status
on such bad conditions.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agort2x00: do not check for txstatus timeout every time on tasklet
Stanislaw Gruszka [Wed, 26 Sep 2018 10:24:55 +0000 (12:24 +0200)]
rt2x00: do not check for txstatus timeout every time on tasklet

Do not check for tx status timeout everytime we perform txstatus tasklet.
Perform check once per half a second.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agort2800mmio: use txdone/txstatus routines from lib
Stanislaw Gruszka [Wed, 26 Sep 2018 10:24:54 +0000 (12:24 +0200)]
rt2800mmio: use txdone/txstatus routines from lib

Use usb txdone/txstatus routines (now in rt2800libc) for mmio devices.

Note this also change how we handle INT_SOURCE_CSR_TX_FIFO_STATUS
interrupt. Now it is disabled since IRQ routine till end of the txstatus
tasklet (the same behaviour like others interrupts). Reason to do not
disable this interrupt was not to miss any tx status from 16 entries
FIFO register. Now, since we check for tx status timeout, we can
allow to miss some tx statuses. However this will be improved in further
patch where I also implement read status FIFO register in the tasklet.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agort2800: move usb specific txdone/txstatus routines to rt2800lib
Stanislaw Gruszka [Wed, 26 Sep 2018 10:24:53 +0000 (12:24 +0200)]
rt2800: move usb specific txdone/txstatus routines to rt2800lib

In order to reuse usb txdone/txstatus routines for mmio, move them
to common rt2800lib.c file.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agortlwifi: btcoex: Use proper enumerated types for Wi-Fi only interface
Nathan Chancellor [Sun, 23 Sep 2018 06:31:15 +0000 (23:31 -0700)]
rtlwifi: btcoex: Use proper enumerated types for Wi-Fi only interface

Clang warns when one enumerated type is implicitly converted to another.

drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c:1327:34:
warning: implicit conversion from enumeration type 'enum
btc_chip_interface' to different enumeration type 'enum
wifionly_chip_interface' [-Wenum-conversion]
                wifionly_cfg->chip_interface = BTC_INTF_PCI;
                                             ~ ^~~~~~~~~~~~
drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c:1330:34:
warning: implicit conversion from enumeration type 'enum
btc_chip_interface' to different enumeration type 'enum
wifionly_chip_interface' [-Wenum-conversion]
                wifionly_cfg->chip_interface = BTC_INTF_USB;
                                             ~ ^~~~~~~~~~~~
drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c:1333:34:
warning: implicit conversion from enumeration type 'enum
btc_chip_interface' to different enumeration type 'enum
wifionly_chip_interface' [-Wenum-conversion]
                wifionly_cfg->chip_interface = BTC_INTF_UNKNOWN;
                                             ~ ^~~~~~~~~~~~~~~~
3 warnings generated.

Use the values from the correct enumerated type, wifionly_chip_interface.

BTC_INTF_UNKNOWN = WIFIONLY_INTF_UNKNOWN = 0
BTC_INTF_PCI = WIFIONLY_INTF_PCI = 1
BTC_INTF_USB = WIFIONLY_INTF_USB = 2

Link: https://github.com/ClangBuiltLinux/linux/issues/135
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
Acked-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agoath5k: Remove unused BUG_ON
Nathan Chancellor [Fri, 21 Sep 2018 19:32:36 +0000 (12:32 -0700)]
ath5k: Remove unused BUG_ON

Clang warns that the address of a pointer will always evaluated as true
in a boolean context:

drivers/net/wireless/ath/ath5k/debug.c:1031:14: warning: address of
array 'ah->sbands' will always evaluate to 'true'
[-Wpointer-bool-conversion]
        BUG_ON(!ah->sbands);
               ~~~~~^~~~~~
./include/asm-generic/bug.h:61:45: note: expanded from macro 'BUG_ON'
#define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
                                            ^~~~~~~~~
./include/linux/compiler.h:77:42: note: expanded from macro 'unlikely'
# define unlikely(x)    __builtin_expect(!!(x), 0)
                                            ^
1 warning generated.

Given that this condition is always false because of the logical not,
just remove it.

Link: https://github.com/ClangBuiltLinux/linux/issues/130
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agorsi: Remove unnecessary boolean condition
Nathan Chancellor [Fri, 21 Sep 2018 09:48:29 +0000 (02:48 -0700)]
rsi: Remove unnecessary boolean condition

Clang warns that the address of a pointer will always evaluated as true
in a boolean context.

drivers/net/wireless/rsi/rsi_91x_mac80211.c:927:50: warning: address of
array 'key->key' will always evaluate to 'true'
[-Wpointer-bool-conversion]
        if (vif->type == NL80211_IFTYPE_STATION && key->key &&
                                                ~~ ~~~~~^~~
1 warning generated.

Link: https://github.com/ClangBuiltLinux/linux/issues/136
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agoipw2x00: Remove unnecessary parentheses
Nathan Chancellor [Thu, 20 Sep 2018 20:45:49 +0000 (13:45 -0700)]
ipw2x00: Remove unnecessary parentheses

Clang warns when multiple pairs of parentheses are used for a single
conditional statement.

drivers/net/wireless/intel/ipw2x00/ipw2200.c:5655:28: warning: equality
comparison with extraneous parentheses [-Wparentheses-equality]
                if ((priv->ieee->iw_mode == IW_MODE_ADHOC)) {
                     ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
drivers/net/wireless/intel/ipw2x00/ipw2200.c:5655:28: note: remove
extraneous parentheses around the comparison to silence this warning
                if ((priv->ieee->iw_mode == IW_MODE_ADHOC)) {
                    ~                    ^               ~
drivers/net/wireless/intel/ipw2x00/ipw2200.c:5655:28: note: use '=' to
turn this equality comparison into an assignment
                if ((priv->ieee->iw_mode == IW_MODE_ADHOC)) {
                                         ^~
                                         =
1 warning generated.

Link: https://github.com/ClangBuiltLinux/linux/issues/134
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agoqtnfmac: remove set but not used variable 'vif'
YueHaibing [Tue, 11 Sep 2018 12:28:24 +0000 (12:28 +0000)]
qtnfmac: remove set but not used variable 'vif'

Fixes gcc '-Wunused-but-set-variable' warning:

drivers/net/wireless/quantenna/qtnfmac/cfg80211.c: In function 'qtnf_dump_survey':
drivers/net/wireless/quantenna/qtnfmac/cfg80211.c:694:19: warning:
 variable 'vif' set but not used [-Wunused-but-set-variable]

Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Reviewed-by: Sergey Matyukevich <sergey.matyukevich.os@quantenna.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agobrcmsmac: Use kvmalloc() for ucode allocations
Takashi Iwai [Thu, 13 Sep 2018 06:15:17 +0000 (08:15 +0200)]
brcmsmac: Use kvmalloc() for ucode allocations

The ucode chunk might be relatively large and the allocation with
kmalloc() may fail occasionally.  Since the data isn't DMA-transferred
but by manual loops, we can use vmalloc instead of kmalloc.
For a better performance, though, kvmalloc() would be the best choice
in such a case, so let's replace with it.

Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1103431
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agobrcmfmac: remove set but not used variables 'sfdoff' and 'pad_size'
YueHaibing [Tue, 11 Sep 2018 03:24:04 +0000 (11:24 +0800)]
brcmfmac: remove set but not used variables 'sfdoff' and 'pad_size'

Fixes gcc '-Wunused-but-set-variable' warning:

drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c: In function 'brcmf_sdio_rxglom':
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c:1466:11: warning:
 variable 'sfdoff' set but not used [-Wunused-but-set-variable]

drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c: In function 'brcmf_sdio_bus_preinit':
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c:3408:7: warning:
 variable 'pad_size' set but not used [-Wunused-but-set-variable]

Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agobrcm80211: remove redundant condition check before debugfs_remove_recursive
zhong jiang [Sat, 8 Sep 2018 13:40:43 +0000 (21:40 +0800)]
brcm80211: remove redundant condition check before debugfs_remove_recursive

debugfs_remove_recursive has taken IS_ERR_OR_NULL into account. So just
remove the condition check before debugfs_remove_recursive.

Signed-off-by: zhong jiang <zhongjiang@huawei.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agobrcmfmac: increase buffer for obtaining firmware capabilities
Arend van Spriel [Wed, 5 Sep 2018 07:48:59 +0000 (09:48 +0200)]
brcmfmac: increase buffer for obtaining firmware capabilities

When obtaining the firmware capability a buffer is provided of 512
bytes. However, if all features in firmware are supported the buffer
needs to be 565 bytes as otherwise truncated information is retrieved
from firmware. Increasing the buffer to 768 bytes on stack.

Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agobrcmfmac: fix for proper support of 160MHz bandwidth
Arend van Spriel [Wed, 5 Sep 2018 07:48:58 +0000 (09:48 +0200)]
brcmfmac: fix for proper support of 160MHz bandwidth

Decoding of firmware channel information was not complete for 160MHz
support. This resulted in the following warning:

  WARNING: CPU: 2 PID: 2222 at .../broadcom/brcm80211/brcmutil/d11.c:196
brcmu_d11ac_decchspec+0x2e/0x100 [brcmutil]
  Modules linked in: brcmfmac(O) brcmutil(O) sha256_generic cfg80211 ...
  CPU: 2 PID: 2222 Comm: kworker/2:0 Tainted: G           O
  4.17.0-wt-testing-x64-00002-gf1bed50 #1
  Hardware name: Dell Inc. Latitude E6410/07XJP9, BIOS A07 02/15/2011
  Workqueue: events request_firmware_work_func
  RIP: 0010:brcmu_d11ac_decchspec+0x2e/0x100 [brcmutil]
  RSP: 0018:ffffc90000047bd0 EFLAGS: 00010206
  RAX: 000000000000e832 RBX: ffff8801146fe910 RCX: ffff8801146fd3c0
  RDX: 0000000000002800 RSI: 0000000000000070 RDI: ffffc90000047c30
  RBP: ffffc90000047bd0 R08: 0000000000000000 R09: ffffffffa0798c80
  R10: ffff88012bca55e0 R11: ffff880110a4ea00 R12: ffff8801146f8000
  R13: ffffc90000047c30 R14: ffff8801146fe930 R15: ffff8801138e02e0
  FS:  0000000000000000(0000) GS:ffff88012bc80000(0000) knlGS:0000000000000000
  CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
  CR2: 00007f18ce8b8070 CR3: 000000000200a003 CR4: 00000000000206e0
  Call Trace:
   brcmf_setup_wiphybands+0x212/0x780 [brcmfmac]
   brcmf_cfg80211_attach+0xae2/0x11a0 [brcmfmac]
   brcmf_attach+0x1fc/0x4b0 [brcmfmac]
   ? __kmalloc+0x13c/0x1c0
   brcmf_pcie_setup+0x99b/0xe00 [brcmfmac]
   brcmf_fw_request_done+0x16a/0x1f0 [brcmfmac]
   request_firmware_work_func+0x36/0x60
   process_one_work+0x146/0x350
   worker_thread+0x4a/0x3b0
   kthread+0x102/0x140
   ? process_one_work+0x350/0x350
   ? kthread_bind+0x20/0x20
   ret_from_fork+0x35/0x40
  Code: 66 90 0f b7 07 55 48 89 e5 89 c2 88 47 02 88 47 03 66 81 e2 00 38
66 81 fa 00 18 74 6e 66 81 fa 00 20 74 39 66 81 fa 00 10 74 14 <0f>
0b 66 25 00 c0 74 20 66 3d 00 c0 75 20 c6 47 04 01 5d c3 66
  ---[ end trace 550c46682415b26d ]---
  brcmfmac: brcmf_construct_chaninfo: Ignoring unexpected firmware channel 50

This patch adds the missing stuff to properly handle this.

Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agoMerge tag 'mt76-for-kvalo-2018-09-19' of https://github.com/nbd168/wireless
Kalle Valo [Thu, 20 Sep 2018 11:15:40 +0000 (14:15 +0300)]
Merge tag 'mt76-for-kvalo-2018-09-19' of https://github.com/nbd168/wireless

mt76 patches for 4.20

* lots of mt76x0 cleanups / fixes
* mt76x2u fixes
* unify code between mt76x0, mt76x2e and mt76x2u
* rename mt76x0 to mt76x0u
* improve rx buffer allocation for all variants
* prepare for adding mt76x0e (pci-e variant) support
  add CONFIG_MT76x0E kconfig symbol

6 years agomt76x0: usb: remove mt76_fw definition
Lorenzo Bianconi [Wed, 12 Sep 2018 15:19:36 +0000 (17:19 +0200)]
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 <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: remove unused usb header file
Lorenzo Bianconi [Tue, 11 Sep 2018 21:09:30 +0000 (23:09 +0200)]
mt76x0: remove unused usb header file

Remove unused usb header file and move mt76x0 firmware definition
in usb.c

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: remove mcu source file
Lorenzo Bianconi [Tue, 11 Sep 2018 21:09:29 +0000 (23:09 +0200)]
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 <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: usb: move firmware loading to usb.c
Stanislaw Gruszka [Tue, 11 Sep 2018 21:09:28 +0000 (23:09 +0200)]
mt76x0: usb: move firmware loading to usb.c

Firmware loading is usb specific, move it to usb.c file.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: use a per rx queue page fragment cache
Felix Fietkau [Fri, 13 Jul 2018 14:26:15 +0000 (16:26 +0200)]
mt76: use a per rx queue page fragment cache

Using the NAPI or netdev frag cache along with other drivers can lead to
32 KiB pages being held for a long time, despite only being used for
very few page fragments.

This can happen if the driver grabs one or two fragments for rx ring
refill, while other drivers use (and free up) the remaining fragments.
The 32 KiB higher-order page can only be freed once all users have freed
their fragments.

Depending on the traffic patterns, this can waste a lot of memory and
look a lot like a memory leak.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x2: move mt76x2_phy_tssi_compensate in mt76x2-common module
Lorenzo Bianconi [Sun, 9 Sep 2018 21:58:05 +0000 (23:58 +0200)]
mt76x2: move mt76x2_phy_tssi_compensate in mt76x2-common module

Move mt76x2_phy_tssi_compensate routine in mt76x2-common module
since it is shared between mt76x2 and mt76x2u drivers

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: move shared mcu_calibrate routine in mt76x02-lib module
Lorenzo Bianconi [Sun, 9 Sep 2018 21:58:04 +0000 (23:58 +0200)]
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 <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x2: move mt76x2 mcu shared code in mt76x2_mcu_common.c
Lorenzo Bianconi [Sun, 9 Sep 2018 21:58:03 +0000 (23:58 +0200)]
mt76x2: move mt76x2 mcu shared code in mt76x2_mcu_common.c

Move shared mt76x2 {pcie/usb} mcu shared code in a common file
and remove duplicated code

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: move mt76{0,2} mcu shared code in mt76x02_mcu.c
Lorenzo Bianconi [Sun, 9 Sep 2018 21:58:02 +0000 (23:58 +0200)]
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 <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: unify firmware header between mt76x0 and mt76x2
Lorenzo Bianconi [Sun, 9 Sep 2018 21:58:01 +0000 (23:58 +0200)]
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 <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x2: use common helpers for mcu_alloc_msg()/mcu_send_msg()
Lorenzo Bianconi [Sun, 9 Sep 2018 21:58:00 +0000 (23:58 +0200)]
mt76x2: use common helpers for mcu_alloc_msg()/mcu_send_msg()

Use mcu common helpers instead of mt76x2 specific routines for
mcu_alloc_msg()/mcu_send_msg(). This is a preliminary patch to
unify mt76e and mt76u mcu code

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x2: use mt76_dev instead of mt76x2_dev in mt76x2_mcu_msg_send
Lorenzo Bianconi [Sun, 9 Sep 2018 21:57:59 +0000 (23:57 +0200)]
mt76x2: use mt76_dev instead of mt76x2_dev in mt76x2_mcu_msg_send

Use mt76_dev data structure instead of mt76x2_dev one in mt76x2_mcu_msg_send
and mt76x2_mcu_get_response routines. Moreover add wait_resp parameter to
mt76x2_mcu_msg_send signature. This is a preliminary patch in order to unify
mcu_msg_alloc()/mcu_msg_send() between pcie and usb code

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: move __iomem regs in mt76_mmio
Lorenzo Bianconi [Sun, 9 Sep 2018 21:57:58 +0000 (23:57 +0200)]
mt76: move __iomem regs in mt76_mmio

Move __iomem regs pointer in mt76_mmio data structure

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: introduce mmio data structure in mt76_dev
Lorenzo Bianconi [Sun, 9 Sep 2018 21:57:57 +0000 (23:57 +0200)]
mt76: introduce mmio data structure in mt76_dev

Introduce mt76_mmio data structure in mt76_dev and
move mt76x2_mcu in mt76_mmio. This is a preliminary
patch to unify mcu code between mt76x02{e,u} drivers

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x2: remove leftover mt76u_buf data structure in mt76x2_mcu
Lorenzo Bianconi [Sun, 9 Sep 2018 21:57:56 +0000 (23:57 +0200)]
mt76x2: remove leftover mt76u_buf data structure in mt76x2_mcu

Remove unused usb buffer in mt76x2_mcu data structure

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x2: use mt76_dev instead of mt76x2_dev in mt76x2_tx_queue_mcu
Lorenzo Bianconi [Sun, 9 Sep 2018 21:57:55 +0000 (23:57 +0200)]
mt76x2: use mt76_dev instead of mt76x2_dev in mt76x2_tx_queue_mcu

Use mt76_dev data structure instead of mt76x2_dev one in
mt76x2_tx_queue_mcu routine. This is a preliminary patch
to share mcu code between mt76x2e and mt76x0e

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: usb: remove skb check in mt76x{0,2}u mcu routines
Lorenzo Bianconi [Sun, 9 Sep 2018 21:57:54 +0000 (23:57 +0200)]
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 <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: remove mt76x0_burst_write_regs()
Stanislaw Gruszka [Sun, 9 Sep 2018 20:32:46 +0000 (22:32 +0200)]
mt76x0: remove mt76x0_burst_write_regs()

We don't need to use custom burst write regs via MCU, we can use
generic mt76_wr_copy() for the same purpose.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: remove unused mt76x0_burst_read_regs
Stanislaw Gruszka [Sun, 9 Sep 2018 20:32:45 +0000 (22:32 +0200)]
mt76x0: remove unused mt76x0_burst_read_regs

mt76x0_burst_read_regs is not used, but keep it for eventual use. Since
we have this function now in the driver git history, we can remove it and
eventually revert this commit it the function will be needed.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x02: add static qualifier to mt76x02_remove_dma_hdr
Lorenzo Bianconi [Sun, 9 Sep 2018 20:32:44 +0000 (22:32 +0200)]
mt76x02: add static qualifier to mt76x02_remove_dma_hdr

Add static qualifier to mt76x02_remove_dma_hdr routine and
do not export the symbol since it is only used in mt76x02_util.c

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x02: move TXD/RXD/MCU definitions in mt76x02_dma.h
Lorenzo Bianconi [Sun, 9 Sep 2018 20:32:43 +0000 (22:32 +0200)]
mt76x02: move TXD/RXD/MCU definitions in mt76x02_dma.h

Introduce mt76x02_dma.h header file to contain mt76x02 dma
related definitions

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: usb: move mt76u_skb_dma_info in mt76x02_usb_core.c
Lorenzo Bianconi [Sun, 9 Sep 2018 20:32:42 +0000 (22:32 +0200)]
mt76: usb: move mt76u_skb_dma_info in mt76x02_usb_core.c

Move mt76u_skb_dma_info routine in mt76x02-usb module and rename it in
mt76x02u_skb_dma_info. Moreover move mt76x02u_set_txinfo in
mt76x02_usb_core.c. This is a preliminary patch to move MT_TXD_INFO,
MT_MCU_MSG and MT_RX_FCE_INFO defs in mt76x02-lib module since other
chipsets (e.g. mt7603) use different dma definitions

Acked-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: usb: move mt76x02 mcu code in mt76x02-usb module
Lorenzo Bianconi [Sun, 9 Sep 2018 20:32:41 +0000 (22:32 +0200)]
mt76: usb: move mt76x02 mcu code in mt76x02-usb module

Introduce mt76x02_usb_mcu.c in order to contain mt76x02u mcu related
code. Add mt76x02-usb module as a container for mt76x02 usb code.
This is a preliminary patch to move MT_TXD_INFO, MT_MCU_MSG and
MT_RX_FCE_INFO defs in mt76x02-lib module since other chipsets (e.g.
mt7603) use different dma definitions

Acked-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: usb: use common helpers for mcu_alloc_msg()/mcu_send_msg()
Lorenzo Bianconi [Sun, 9 Sep 2018 20:32:40 +0000 (22:32 +0200)]
mt76: usb: use common helpers for mcu_alloc_msg()/mcu_send_msg()

Use mcu common helpers instead of usb specific routines.
Add static qualifier to the following functions:
- mt76u_mcu_msg_alloc
- __mt76u_mcu_send_msg
- mt76u_mcu_send_msg
- mt76u_mcu_wr_rp
- mt76u_mcu_rd_rp
- mt76u_wr_rp
- mt76u_rd_rp
This is a preliminary patch to move mt76x02 usb mcu code in
mt76x02-usb module

Acked-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: add rd_rp and wr_rp to bus_ops/mcu_ops
Stanislaw Gruszka [Sun, 9 Sep 2018 20:32:39 +0000 (22:32 +0200)]
mt76: add rd_rp and wr_rp to bus_ops/mcu_ops

Add callbacks for reading and writing reg pairs tables.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: add usb implementation of {wr,rd}_rp
Stanislaw Gruszka [Sun, 9 Sep 2018 20:32:38 +0000 (22:32 +0200)]
mt76: add usb implementation of {wr,rd}_rp

Add USB implementation for read and write reg pair routines.
The actual implementation can use mcu related routines according to
MCU state

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: add mt76_mcu_ops data structure for mcu related pointers
Lorenzo Bianconi [Sun, 9 Sep 2018 20:32:37 +0000 (22:32 +0200)]
mt76: add mt76_mcu_ops data structure for mcu related pointers

Introduce mt76_mcu_ops data structure to contain mcu related function
pointers. This is a preliminary patch to move mt76x02 usb mcu code in
mt76x02-usb module

Acked-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: move mt76x0 and mt76x2 mcu shared defs in mt76x02_mcu.h
Lorenzo Bianconi [Sun, 9 Sep 2018 20:32:36 +0000 (22:32 +0200)]
mt76: move mt76x0 and mt76x2 mcu shared defs in mt76x02_mcu.h

Move mt76x0 and mt76x2 mcu shared definition in mt76x02_mcu.h
and remove duplicated code

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: run vco calibration for each channel configuration
Lorenzo Bianconi [Fri, 7 Sep 2018 21:13:12 +0000 (23:13 +0200)]
mt76x0: run vco calibration for each channel configuration

According to vendor sdk, vco calibration has to be executed
for each channel configuration whereas mcu calibration has to be
performed during channel scanning. This patch fixes the mt76x0
monitor mode issue since in that configuration vco calibration
was never executed

Fixes: 10de7a8b4ab9 ("mt76x0: phy files")
Tested-by: Sid Hayn <sidhayn@gmail.com>
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: make device allocation bus neutral
Stanislaw Gruszka [Thu, 6 Sep 2018 09:18:58 +0000 (11:18 +0200)]
mt76x0: make device allocation bus neutral

Remove some USB specific code form mt76x0_alloc_device.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: remove some usb specific code from mt76x0_register_device
Stanislaw Gruszka [Thu, 6 Sep 2018 09:18:57 +0000 (11:18 +0200)]
mt76x0: remove some usb specific code from mt76x0_register_device

Initial effort to make mt76x0_register_device bus neutral.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: remove unused mt76x0_wcid
Stanislaw Gruszka [Thu, 6 Sep 2018 09:18:56 +0000 (11:18 +0200)]
mt76x0: remove unused mt76x0_wcid

We do not use mt76x0_wcid any longer.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: inital split between pci and usb
Stanislaw Gruszka [Thu, 6 Sep 2018 09:18:53 +0000 (11:18 +0200)]
mt76x0: inital split between pci and usb

For now pci driver can read ASIC version from the device :-)

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: use mt76_register_device for device registration
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:52 +0000 (11:18 +0200)]
mt76x0: use mt76_register_device for device registration

Use mt76_register_device routine for device registration.
mt76_register_device allows to enable VHT support on 5GHz band.
Overwrite unsupported vht features with mt76x0_vht_cap_mask routine.
Remove macaddr field of mt76x0_dev data structure and
use the mt76_dev one. Moreover remove following unused routines:
- mt76_init_sband
- mt76_init_sband_2g
- mt76_init_sband_5g

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: remove has_{2,5}ghz fields of mt76x0_eeprom_params
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:51 +0000 (11:18 +0200)]
mt76x0: remove has_{2,5}ghz fields of mt76x0_eeprom_params

Remove has_2ghz/has_5ghz fields of mt76x0_eeprom_params data
structure and use mt76_dev ones. This is a preliminary patch
to use shared routines for device allocation

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: do not free/alloc buffers during suspend/resume
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:50 +0000 (11:18 +0200)]
mt76x0: do not free/alloc buffers during suspend/resume

Do not free/alloc {tx,rx} buffers during suspend/resume phases
but use the ones previously allocated during hw probe.
Move {tx,rx}/mcu buffers allocation from mt76x0_init_hardware routine
to mt76x0_register_device

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: move mt76x0_init_hardware in mt76x0_register_device
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:49 +0000 (11:18 +0200)]
mt76x0: move mt76x0_init_hardware in mt76x0_register_device

Move mt76x0_init_hardware routine in mt76x0_register_device
during hw probe. This is a preliminary patch to avoid {tx/rx}
buffer allocation during resume/suspend

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: move stop related routines in mt76x0_mac_stop
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:48 +0000 (11:18 +0200)]
mt76x0: move stop related routines in mt76x0_mac_stop

Move tear-down routines in mt76x0_mac_stop function.
mt76x0_mac_stop routines will be reused in mt76x0_suspend

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: fix memory leak during hw probe
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:47 +0000 (11:18 +0200)]
mt76x0: fix memory leak during hw probe

Fix memory leak during hw probe if mt76x0_register_device fails
since MT76_STATE_INITIALIZED has not set yet and mt76x0_cleanup
does not free tx/rx queues and mcu buffers

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: alloc mcu buffers first in mt76x0_mcu_cmd_init
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:46 +0000 (11:18 +0200)]
mt76x0: alloc mcu buffers first in mt76x0_mcu_cmd_init

swap mt76u_mcu_init_rx and mt76x0_mcu_function_select in
mt76x0_mcu_cmd_init routine in order to allocate mcu buffers
first and then send mcu commands

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: move mt76 rate definitions in mt76x02-lib module
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:45 +0000 (11:18 +0200)]
mt76: move mt76 rate definitions in mt76x02-lib module

Move mt76x2_rate definition in mt76x02-lib module and rename it in
mt76x02_rates in order to be reused in mt76x0 driver.
Moreover remove unused mt76_rate definition

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: remove mt76x0_stop_hardware routine
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:44 +0000 (11:18 +0200)]
mt76x0: remove mt76x0_stop_hardware routine

Since it is actually used in a single place and it just
runs mt76x0_chip_onoff routine, remove mt76x0_stop_hardware
and use mt76x0_chip_onoff directly

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: remove unused MT76_MORE_STATS state
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:43 +0000 (11:18 +0200)]
mt76: remove unused MT76_MORE_STATS state

Remove no longer used hw state

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: trim rx skb to proper length
Stanislaw Gruszka [Thu, 6 Sep 2018 09:18:42 +0000 (11:18 +0200)]
mt76x0: trim rx skb to proper length

We need to truncate skb to proper length. This fix below message:

wlan0: associating with AP with corrupt beacon and probe response

Fixes: 9d87d9fad47e ("mt76x0: unify tx/rx datapath with mt76x2u driver")
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: init hw capabilities
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:41 +0000 (11:18 +0200)]
mt76x0: init hw capabilities

Enable hw capabilities supported by mt76-usb layer
- fast_xmit
- tx/rx amsdu
- MFP
- non-linear tx skbs

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: enable per-sta tx queueing
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:40 +0000 (11:18 +0200)]
mt76x0: enable per-sta tx queueing

Initialize wake_tx_queue function pointer in ieee80211_ops
in order to enable per-sta tx queueing. Moreover set driver
private txq size

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: remove unused stat_work
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:39 +0000 (11:18 +0200)]
mt76x0: remove unused stat_work

Remove unused definition of stat_work delayed_work definition and
related flush/cancel routines

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: remove unused endpoint definitions
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:38 +0000 (11:18 +0200)]
mt76x0: remove unused endpoint definitions

remove unused usb endpoint definitions since mt76x0
uses mt76-usb ones. Moreover remove unused usb_ctrl mutex

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: remove unused mt76x0_tx_status routine
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:37 +0000 (11:18 +0200)]
mt76x0: remove unused mt76x0_tx_status routine

Remove no longer used mt76x0_tx_status routine since
mt76x0 driver uses mt76-usb utility routines to report tx-feedbacks

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: remove unused {tx/rx}_queue definitions
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:36 +0000 (11:18 +0200)]
mt76x0: remove unused {tx/rx}_queue definitions

Remove unused tx_queue and rx_queue definitions since
now mt76x0 driver uses mt76-usb {tx/rx}_queues

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: remove unused stat work_queue
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:35 +0000 (11:18 +0200)]
mt76x0: remove unused stat work_queue

Remove unused tx_status workqueue since now tx feedbacks are
processed by mt76-usb layer

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: remove unused dma.c source file
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:34 +0000 (11:18 +0200)]
mt76x0: remove unused dma.c source file

Remove unused dma.c source file since dma related routines are no
longer used

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: set max fragments size
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:33 +0000 (11:18 +0200)]
mt76x0: set max fragments size

Set maximum number of tx fragments according to usb controller
features

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: stop stat workqueue at hw stop
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:32 +0000 (11:18 +0200)]
mt76x0: stop stat workqueue at hw stop

Cancel tx status workqueue during vif teardown

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: unify tx/rx datapath with mt76x2u driver
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:31 +0000 (11:18 +0200)]
mt76x0: unify tx/rx datapath with mt76x2u driver

Use mt76/mt76-usb shared routine for tx/rx datapath.
Initialize mt76-usb tx/rx queues in mt76x0_init_hardware and
deallocate them in mt76x0_cleanup routine.
Moreover remove data padding in mt76_mac_process_rx routine.
Furthermore remove unused skb2q routine

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: use mt76_alloc_device for device allocation
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:26 +0000 (11:18 +0200)]
mt76x0: use mt76_alloc_device for device allocation

Use mt76_alloc_device utility routine for mt76x0_dev/mt76_dev
allocation

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: init mt76_driver_ops callbacks
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:25 +0000 (11:18 +0200)]
mt76x0: init mt76_driver_ops callbacks

Init mt76_driver_ops callbacks in mt76x0_alloc_device.
mt76_driver_ops callbacks will be used by mt76-usb module

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: add mt76x0_queue_rx_skb routine
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:30 +0000 (11:18 +0200)]
mt76x0: add mt76x0_queue_rx_skb routine

Introduce mt76x0_queue_rx_skb routine as mt76x0 driver
frame rx handler. mt76x0_queue_rx_skb will be run by mt76-usb layer
rx datapath

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: simplify mt76_mac_process_rx signature
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:29 +0000 (11:18 +0200)]
mt76x0: simplify mt76_mac_process_rx signature

Remove data pointer from mt76_mac_process_rx routine signature

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: mark device as running in mt76x0_start
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:28 +0000 (11:18 +0200)]
mt76x0: mark device as running in mt76x0_start

Set MT76_STATE_RUNNING flag in mt76x0_start routine and
clear it in mt76x0_stop one

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: disable usb rx bulk aggregation
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:27 +0000 (11:18 +0200)]
mt76x0: disable usb rx bulk aggregation

In order to use zero-copying, disable usb rx bulk aggregation

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: move mt76x2u_tx_status_data in mt76x02-lib module
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:24 +0000 (11:18 +0200)]
mt76: move mt76x2u_tx_status_data in mt76x02-lib module

Move mt76x2u_tx_status_data routine in mt76x02-lib module and rename it
in mt76x02_tx_status_data in order to be reused in mt76x0 driver

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: introduce mt76x0_tx_prepare_skb routine
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:23 +0000 (11:18 +0200)]
mt76x0: introduce mt76x0_tx_prepare_skb routine

Add mt76x0_tx_prepare_skb routine as tx txwi handler.
mt76x0_tx_prepare_skb will be used by mt76-usb layer

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: move mt76x2u_set_txinfo in mt76x02-lib module
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:22 +0000 (11:18 +0200)]
mt76: move mt76x2u_set_txinfo in mt76x02-lib module

Move mt76x2u_set_txinfo routine in mt76x02-lib module and rename it in
mt76x02_set_txinfo in order to be reused in mt76x0 driver

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: move mt76_qsel definition in dma.h
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:21 +0000 (11:18 +0200)]
mt76: move mt76_qsel definition in dma.h

Move mt76_qsel definition in dma.h in order to be reused in mt76x0
driver. Moreover remove empty mt76x2_dma.h header file

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: move mt76x2u_tx_complete_skb in mt76x02-lib moudule
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:20 +0000 (11:18 +0200)]
mt76: move mt76x2u_tx_complete_skb in mt76x02-lib moudule

Move mt76x2u_tx_complete_skb routine in mt76x02-lib module
and rename it in mt76x02_tx_complete_skb in order to be reused
in mt76x0 driver

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: move mt76x2u_remove_dma_hdr in mt76x02-lib module
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:19 +0000 (11:18 +0200)]
mt76: move mt76x2u_remove_dma_hdr in mt76x02-lib module

Move mt76x2u_remove_dma_hdr in mt76x02-lib module and rename it in
mt76x02_remove_dma_hdr. Moreover use mt76x02_remove_hdr_pad routine
in mt76x02_remove_dma_hdr function.
Furthermore remove mt76x0_tx_skb_remove_dma_overhead routine

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: move mt76x2_tx_complete routine in mt76x02-lib module
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:18 +0000 (11:18 +0200)]
mt76: move mt76x2_tx_complete routine in mt76x02-lib module

Move mt76x2_tx_complete routine in mt76x02-lib module and rename it in
mt76x02_tx_complete in order to be used in mt76x0 driver

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x2: change mt76x2_tx_complete routine signature
Lorenzo Bianconi [Thu, 6 Sep 2018 09:18:17 +0000 (11:18 +0200)]
mt76x2: change mt76x2_tx_complete routine signature

Use mt76_dev instead of mt76x2_dev in mt76x2_tx_complete signature
in order to be reused in mt76x0 driver

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: partially unify filling txwi fields
Stanislaw Gruszka [Tue, 4 Sep 2018 14:41:15 +0000 (16:41 +0200)]
mt76: partially unify filling txwi fields

Merge code filing txwi fields the same way on mt76x0 and mt76x2.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: unify {insert/remove}_hdr_pad
Stanislaw Gruszka [Tue, 4 Sep 2018 14:41:14 +0000 (16:41 +0200)]
mt76: unify {insert/remove}_hdr_pad

Merge insert/remove _hdr_pad from mt76x0 and mt76x2.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: reserve enough space in mac80211
Stanislaw Gruszka [Tue, 4 Sep 2018 14:41:13 +0000 (16:41 +0200)]
mt76x0: reserve enough space in mac80211

Allocate skg with enough headroom by mac80211 , this eliminate need
to add extra skb headroom by the mt76x0 driver.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: unify mac_process_rate
Stanislaw Gruszka [Tue, 4 Sep 2018 14:41:12 +0000 (16:41 +0200)]
mt76: unify mac_process_rate

Merge mac_process_rate from mt76x0 and mt76x2.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: use mt76_rx_status in mt76x0
Stanislaw Gruszka [Tue, 4 Sep 2018 14:41:11 +0000 (16:41 +0200)]
mt76: use mt76_rx_status in mt76x0

Make rx status processing similar to mt76x2.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: unify send_tx_status and related helpers
Stanislaw Gruszka [Tue, 4 Sep 2018 14:41:10 +0000 (16:41 +0200)]
mt76: unify send_tx_status and related helpers

Merge send_tx_status and helper functions from mt76x0 and mt76x2.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: unify load_tx_status
Stanislaw Gruszka [Tue, 4 Sep 2018 14:41:09 +0000 (16:41 +0200)]
mt76: unify load_tx_status

Unify load/fetch tx status from mt76x0 and mt76x2

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>