platform/kernel/linux-rpi.git
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>
6 years agomt76: unify txwi and rxwi structures
Stanislaw Gruszka [Tue, 4 Sep 2018 14:41:08 +0000 (16:41 +0200)]
mt76: unify txwi and rxwi structures

txwi and rxwi are the same for mt76x0 and mt76x2.

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

Use common sta_rate_tbl_update on mt76x0 and mt76x2.
mt76x0 do not have support TPC (transmision power control) implmented,
msta->wcid.max_txpwr_adj is only set for mt76x2.

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

Make common add_interface for mt76x0 and mt76x2e. This change behavior
for mt76x0, but it should work with the new implementation.

mt76x2u has different implementation. Maybe it can use common one,
but for now leave it as is.

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

Use common remove_interface callback in mt76x0 and mt76x2.

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

Make remove_interface more similar to mt76x2.

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

Use one conf_tx implementation in mt76x0 and mt76x2. Note this change
conf_tx for mt76x0, but it should work with mt76x2 version.

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

Use the same AC to hardware queue mappings for all subdrivers.
Note: this change BK and BE mappings for USB drivers.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76x0: remove empty sta_notify
Stanislaw Gruszka [Tue, 4 Sep 2018 14:41:00 +0000 (16:41 +0200)]
mt76x0: remove empty sta_notify

Remove empty implementation of sta_notify.

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

Merge mt76x0 and mt76x2 set_key mac80211 callback.

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

Use mt76x2_ampdu_action as common function, mt76x0 ampdu_action was
diffrent, but mt76x2 version should work for this driver as well.

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

Create common mt76x02_vif_init function and use int on drivers
add_interface callback.

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

Merge mt76x0 and mt76x0 sta add/remove callback. We drop
mt76x0_mac_set_ampdu_factor() for now. Need to consider to add
it to common code, but mt76x2 don't do it so perhaps mt76x0 don't
need it as well.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agomt76: move wcid fields to common mt76_dev struct
Stanislaw Gruszka [Tue, 4 Sep 2018 14:40:54 +0000 (16:40 +0200)]
mt76: move wcid fields to common mt76_dev struct

All current MT devices including new MT7603 type chips support 128
WCIDs, we can unify wcid data in common mt76_dev structure.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
6 years agoMerge wireless-drivers into wireless-drivers-next
Kalle Valo [Mon, 17 Sep 2018 14:41:02 +0000 (17:41 +0300)]
Merge wireless-drivers into wireless-drivers-next

Solve the conflict in main.c early on as there will be a lot more mt76 patches
in the queue.

6 years agomt76x0: fix remove_interface
Stanislaw Gruszka [Mon, 3 Sep 2018 10:26:21 +0000 (12:26 +0200)]
mt76x0: fix remove_interface

We wrongly use wcid_mask instead of vif_mask. This creates problems
when the interface is removed more than 8 times, for example with iw:

iw dev <devname> interface add <name> type <type>
iw dev <name> del

This caused 'ifconfig up' to fail with error:

SIOCSIFFLAGS: No space left on device

Fixes: 95e444098a7b ("mt76x0: main file")
Reported-and-tested-by: Sid Hayn <sidhayn@gmail.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agoorinoco_usb: fix spelling mistake in fall-through annotation
Gustavo A. R. Silva [Mon, 3 Sep 2018 20:17:52 +0000 (15:17 -0500)]
orinoco_usb: fix spelling mistake in fall-through annotation

Replace "fall though" with a proper "fall through" annotation.

This fix is part of the ongoing efforts to enabling
-Wimplicit-fallthrough

Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agortlwifi: remove set but unused variables
Kevin Lo [Mon, 3 Sep 2018 14:57:35 +0000 (22:57 +0800)]
rtlwifi: remove set but unused variables

Remove set but unused variables from _rtl88ee_hw_configure() and
_rtl8723e_hw_configure().

Signed-off-by: Kevin Lo <kevlo@kevlo.org>
Acked-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agorsi: remove set but not used variables 'header_size' and 'tx_params'
YueHaibing [Sat, 1 Sep 2018 07:48:27 +0000 (07:48 +0000)]
rsi: remove set but not used variables 'header_size' and 'tx_params'

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

drivers/net/wireless/rsi/rsi_91x_hal.c: In function 'rsi_send_data_pkt':
drivers/net/wireless/rsi/rsi_91x_hal.c:288:5: warning:
 variable 'header_size' set but not used [-Wunused-but-set-variable]

'tx_params' only used for 'header_size' dereferenced,so also
can be removed.

Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agowireless: remove unnecessary unlikely()
Igor Stoppa [Fri, 31 Aug 2018 15:03:00 +0000 (18:03 +0300)]
wireless: remove unnecessary unlikely()

Both WARN_ON() and WARN_ON_ONCE() already contain unlikely().

Signed-off-by: Igor Stoppa <igor.stoppa@huawei.com>
Cc: Kalle Valo <kvalo@codeaurora.org>
Cc: Christian Lamparter <chunkeey@googlemail.com>
Cc: Michal Kazior <michal.kazior@tieto.com>
Cc: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Cc: Linux Wireless Mailing List <linux-wireless@vger.kernel.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agortl8xxxu: Add rtl8188ctv support
Aleksei Mamlin [Thu, 30 Aug 2018 14:05:41 +0000 (17:05 +0300)]
rtl8xxxu: Add rtl8188ctv support

The Realtek rtl8188ctv (0x0bda:0x018a) is a highly integrated single-chip
WLAN USB2.0 network interface controller.

Currently rtl8188ctv is supported by rtlwifi driver.
It is similar to the rtl8188cus(0x0bda:0x818a) and uses the same config.

Signed-off-by: Aleksei Mamlin <mamlinav@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: Enable NL80211_EXT_FEATURE_CQM_RSSI_LIST
Kristian Evensen [Sat, 1 Sep 2018 08:38:34 +0000 (10:38 +0200)]
mt76: Enable NL80211_EXT_FEATURE_CQM_RSSI_LIST

Enable the use of CQM_RSSI_LIST with mt76-devices. The change has been
tested with the mt7602, mt7603 and mt7621 PCI wifi-cards. I passed a
list of RSSI thresholds to the driver, and when disconnecting/connecting
the antenna(s) I got an event each time the RSSI went above/below a
threshold.

While I have not been able to test the change with any of the mt76
USB-devices (no access to a device), the RX RSSI management code is
shared between the two device types. Thus, CQM should also work with the
mt76 USB-devices.

Signed-off-by: Kristian Evensen <kristian.evensen@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76x0: remove unused routines for usb_buff alloc/free
Lorenzo Bianconi [Sat, 25 Aug 2018 10:40:56 +0000 (12:40 +0200)]
mt76x0: remove unused routines for usb_buff alloc/free

Remove the following unused routines for usb buffer
allocation/free/submit:
- mt76x0_usb_alloc_buf
- mt76x0_usb_free_buf
- mt76x0_usb_submit_buf

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76x0: use mt76u_mcu_fw_send_data for fw uploading
Lorenzo Bianconi [Sat, 25 Aug 2018 10:40:55 +0000 (12:40 +0200)]
mt76x0: use mt76u_mcu_fw_send_data for fw uploading

Use mt76u_mcu_fw_send_data utility routine for firmware uploading and
remove unused __mt76x0_dma_fw/mt76x0_dma_fw functions

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76x0: remove unused mt76x0_mcu structure
Lorenzo Bianconi [Sat, 25 Aug 2018 10:40:54 +0000 (12:40 +0200)]
mt76x0: remove unused mt76x0_mcu structure

Remove no longer used mt76x0_mcu data structure

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76x0: use mt76u_mcu_send_msg utility routine to send fw cmds
Lorenzo Bianconi [Sat, 25 Aug 2018 10:40:53 +0000 (12:40 +0200)]
mt76x0: use mt76u_mcu_send_msg utility routine to send fw cmds

Use mt76u_mcu_send_msg/__mt76u_mcu_send_msg utility routines to
send commands to usb mcu. Remove following unused routines:
- mt76x0_mcu_wait_resp
- __mt76x0_mcu_msg_send
- mt76x0_mcu_msg_send
- mt76x0_dma_skb_wrap_cmd
- trace_mt_mcu_msg_send_cs
- mt76x0_mcu_cmd_deinit

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76x0: remove unused mt76x0_wait_asic_ready routine
Lorenzo Bianconi [Sat, 25 Aug 2018 10:40:52 +0000 (12:40 +0200)]
mt76x0: remove unused mt76x0_wait_asic_ready routine

Delete core.c source file since, removing mt76x0_wait_asic_ready
routine, it is no longer needed

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76x0: remove mt76x0_vendor_request routine
Lorenzo Bianconi [Sat, 25 Aug 2018 10:40:51 +0000 (12:40 +0200)]
mt76x0: remove mt76x0_vendor_request routine

Remove mt76x0_vendor_request routine and use
mt76u_vendor_request utility function from mt76-usb
layer in mt76x0_upload_firmware

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76x0: remove mt76x0_complete_urb routine
Lorenzo Bianconi [Sat, 25 Aug 2018 10:40:50 +0000 (12:40 +0200)]
mt76x0: remove mt76x0_complete_urb routine

Remove mt76x0_complete_urb routine and use mt76u_mcu_complete_urb utility
function as usb mcu completion handler

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76x0: use shared mt76 usb mcu completion
Lorenzo Bianconi [Sat, 25 Aug 2018 10:40:49 +0000 (12:40 +0200)]
mt76x0: use shared mt76 usb mcu completion

Use mt76 usb shared completion data structure in
mt76x0_mcu_wait_resp routine and remove mt76x0
private one

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76x0: remove mt76x0_mcu_msg_alloc routine
Lorenzo Bianconi [Sat, 25 Aug 2018 10:40:48 +0000 (12:40 +0200)]
mt76x0: remove mt76x0_mcu_msg_alloc routine

Remove mt76x0_mcu_msg_alloc duplicated routine and use mt76u_mcu_msg_alloc
utility function for usb mcu message allocation

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76x0: remove mt76x0_vendor_single_wr routine
Lorenzo Bianconi [Sat, 25 Aug 2018 10:40:47 +0000 (12:40 +0200)]
mt76x0: remove mt76x0_vendor_single_wr routine

Remove mt76x0_vendor_single_wr routine and use mt76u_single_wr
utility function for mcu firmware loading

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76x0: remove mt76x0_vendor_reset routine
Lorenzo Bianconi [Sat, 25 Aug 2018 10:40:46 +0000 (12:40 +0200)]
mt76x0: remove mt76x0_vendor_reset routine

Remove mt76x0_vendor_reset duplicated routine and use mt76u_mcu_fw_reset
utility function for mcu fw reset

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76x0: use mt76u_init for bus initialization
Lorenzo Bianconi [Sat, 25 Aug 2018 10:40:45 +0000 (12:40 +0200)]
mt76x0: use mt76u_init for bus initialization

Use mt76u_init utility routine for usb initialization.
Moreover remove following unused routines:
- mt76x0_rr
- mt76x0_wr
- mt76x0_rmw
- mt76x0_wr_copy
- mt76x0_assign_pipes

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: add multiple regs read support to usb_mcu layer
Lorenzo Bianconi [Sat, 25 Aug 2018 10:40:44 +0000 (12:40 +0200)]
mt76: add multiple regs read support to usb_mcu layer

Introduce multiple regs read support to mcu layer in mt76-usb module.
Multiple regs read will be reused by mt76x0 driver in usb mcu layer
unification between mt76x0 and mt76x2u drivers

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: move mt76x2u_mcu_deinit routine in mt76-usb module
Lorenzo Bianconi [Sat, 25 Aug 2018 10:40:43 +0000 (12:40 +0200)]
mt76: move mt76x2u_mcu_deinit routine in mt76-usb module

Move mt76x2u_mcu_deinit routine in usb_mcu layer in order to
be reused by mt76x0 driver in usb mcu layer unification between
mt76x0 and mt76x2u drivers

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: split __mt76u_mcu_send_msg and mt76u_mcu_send_msg routines
Lorenzo Bianconi [Sat, 25 Aug 2018 10:40:42 +0000 (12:40 +0200)]
mt76: split __mt76u_mcu_send_msg and mt76u_mcu_send_msg routines

Split __mt76u_mcu_send_msg and mt76u_mcu_send_msg in order to be reused
by mt76x0 driver in usb mcu layer unification between mt76x0 and
mt76x2u drivers

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: move mt76_reg_pair definition in mt76.h
Lorenzo Bianconi [Sat, 25 Aug 2018 10:40:41 +0000 (12:40 +0200)]
mt76: move mt76_reg_pair definition in mt76.h

Move common definition of mt76_reg_pair in mt76.h
and remove duplicated code in mt76x2_init_common.c

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76x0: use mt76x02_sta and mt76x02_tx_status
Stanislaw Gruszka [Wed, 29 Aug 2018 11:16:47 +0000 (13:16 +0200)]
mt76x0: use mt76x02_sta and mt76x02_tx_status

Use common mt76x02_sta and mt76x02_tx_status structures in mt76x0 sub-driver.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76x0: initalize custom tx queues
Stanislaw Gruszka [Wed, 29 Aug 2018 11:16:46 +0000 (13:16 +0200)]
mt76x0: initalize custom tx queues

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: unify sta structure part 2
Stanislaw Gruszka [Wed, 29 Aug 2018 11:16:45 +0000 (13:16 +0200)]
mt76: unify sta structure part 2

Second part of unifying mt76x02_sta structure between mt76x0 and mt76x2.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: unify sta structure part 1
Stanislaw Gruszka [Wed, 29 Aug 2018 11:16:44 +0000 (13:16 +0200)]
mt76: unify sta structure part 1

First part of unifying mt76x02_sta structure between mt76x0 and mt76x2.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: unify mt76x02_vif struct
Stanislaw Gruszka [Wed, 29 Aug 2018 11:16:43 +0000 (13:16 +0200)]
mt76: unify mt76x02_vif struct

Private vif structures definitions are the same for mt76x2 and mt76x0.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76x0: use mt76_wcid_free in mt76x0
Stanislaw Gruszka [Wed, 29 Aug 2018 11:16:42 +0000 (13:16 +0200)]
mt76x0: use mt76_wcid_free in mt76x0

Use helper from util instead of custom code.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: use mac_wcid_set_drop in mt76x0
Stanislaw Gruszka [Wed, 29 Aug 2018 11:16:41 +0000 (13:16 +0200)]
mt76: use mac_wcid_set_drop in mt76x0

Move mt76x02_mac_wcid_set_drop to common code and use it in mt76x0.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: unify mac_wcid_setup
Stanislaw Gruszka [Wed, 29 Aug 2018 11:16:40 +0000 (13:16 +0200)]
mt76: unify mac_wcid_setup

Merge mt76x{0,2}_mac_wcid_setup into common code.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: unify mac_wcid_set_key
Stanislaw Gruszka [Wed, 29 Aug 2018 11:16:39 +0000 (13:16 +0200)]
mt76: unify mac_wcid_set_key

Merge mt76x{0,2}_mac_wcid_set_key into common code.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: unify mac_shared_key_setup
Stanislaw Gruszka [Wed, 29 Aug 2018 11:16:38 +0000 (13:16 +0200)]
mt76: unify mac_shared_key_setup

Merge mt76x{0,2} mac_shared_key_setup into common code.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: add helpers for register access with mt76_dev struct
Stanislaw Gruszka [Wed, 29 Aug 2018 11:16:37 +0000 (13:16 +0200)]
mt76: add helpers for register access with mt76_dev struct

Add helpers for register access from common code.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: unify mac_get_key_info
Stanislaw Gruszka [Wed, 29 Aug 2018 11:16:36 +0000 (13:16 +0200)]
mt76: unify mac_get_key_info

Merge mt76x{0,2} mac_get_key_info into new mt76x02_mac.c file.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: create new mt76x02-lib module for common mt76x{0,2} code
Stanislaw Gruszka [Wed, 29 Aug 2018 11:16:35 +0000 (13:16 +0200)]
mt76: create new mt76x02-lib module for common mt76x{0,2} code

Move rxfilter and mutex to common structure. Create mt76x02-lib.ko
for mt76x0 and mt76x2 common functions and create new unified
mt76x02_configure_filter() function there.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: merge mt76x0/regs.h into mt76x02_regs.h
Stanislaw Gruszka [Wed, 29 Aug 2018 11:16:34 +0000 (13:16 +0200)]
mt76: merge mt76x0/regs.h into mt76x02_regs.h

Add missed definitions for mt76x0 into mt76x02_regs.h. Remove
mt76x0/regs.h and fixup mt76x0 code to adjust to some diffrent
registers/fields names.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: rename mt76x2_regs.h
Stanislaw Gruszka [Wed, 29 Aug 2018 11:16:33 +0000 (13:16 +0200)]
mt76: rename mt76x2_regs.h

MAC registers are the same for mt76x0 and mt76x2. Rename mt76x2_regs.h
file to reflect that.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: unify wait_for_mac
Stanislaw Gruszka [Wed, 29 Aug 2018 11:16:32 +0000 (13:16 +0200)]
mt76: unify wait_for_mac

Create new mt76x02_mac.h for common mac functions of mt76x0 and mt76x2
and unity wait_for_mac for both drivers.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: verify evt type in usb mcu response
Lorenzo Bianconi [Fri, 24 Aug 2018 10:41:44 +0000 (12:41 +0200)]
mt76: verify evt type in usb mcu response

Verify if evt field is set to EVT_CMD_DONE in usb mcu
response messages. This is a preliminary patch for usb_mcu layer
unification between mt76x0u and mt76x2u driver.

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76x2u: run device cleanup routine if resume fails
Lorenzo Bianconi [Fri, 24 Aug 2018 08:17:49 +0000 (10:17 +0200)]
mt76x2u: run device cleanup routine if resume fails

Cleanup {tx,rx} and mcu queues if resume operation fails

Fixes: ee676cd5017c ("mt76: add driver code for MT76x2u based devices")
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomt76: Fix comparisons with invalid hardware key index
Geert Uytterhoeven [Thu, 23 Aug 2018 21:27:38 +0000 (23:27 +0200)]
mt76: Fix comparisons with invalid hardware key index

With gcc 4.1.2:

    drivers/net/wireless/mediatek/mt76/mt76x0/tx.c: In function ‘mt76x0_tx’:
    drivers/net/wireless/mediatek/mt76/mt76x0/tx.c:169: warning: comparison is always true due to limited range of data type
    drivers/net/wireless/mediatek/mt76/mt76x2_tx_common.c: In function ‘mt76x2_tx’:
    drivers/net/wireless/mediatek/mt76/mt76x2_tx_common.c:35: warning: comparison is always true due to limited range of data type

While assigning -1 to a u8 works fine, comparing with -1 does not work
as expected.

Fix this by comparing with 0xff, like is already done in some other
places.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agorsi: improve kernel thread handling to fix kernel panic
Siva Rebbagondla [Mon, 27 Aug 2018 11:35:15 +0000 (17:05 +0530)]
rsi: improve kernel thread handling to fix kernel panic

While running regressions, observed below kernel panic when sdio disconnect
called. This is because of, kthread_stop() is taking care of
wait_for_completion() by default. When wait_for_completion triggered
in kthread_stop and as it was done already, giving kernel panic.
Hence, removing redundant wait_for_completion() from rsi_kill_thread().

... skipping ...
BUG: unable to handle kernel NULL pointer dereference at           (null)
IP: [<ffffffff810a63df>] exit_creds+0x1f/0x50
PGD 0
Oops: 0002 [#1] SMP
CPU: 0 PID: 6502 Comm: rmmod Tainted: G  OE   4.15.9-Generic #154-Ubuntu
Hardware name: Dell Inc. Edge Gateway 3003/ , BIOS 01.00.00 04/17/2017
Stack:
ffff88007392e600 ffff880075847dc0 ffffffff8108160a 0000000000000000
ffff88007392e600 ffff880075847de8 ffffffff810a484b ffff880076127000
ffff88003cd3a800 ffff880074f12a00 ffff880075847e28 ffffffffc09bed15
Call Trace:
[<ffffffff8108160a>] __put_task_struct+0x5a/0x140
[<ffffffff810a484b>] kthread_stop+0x10b/0x110
[<ffffffffc09bed15>] rsi_disconnect+0x2f5/0x300 [ven_rsi_sdio]
[<ffffffff81578bcb>] ? __pm_runtime_resume+0x5b/0x80
[<ffffffff816f0918>] sdio_bus_remove+0x38/0x100
[<ffffffff8156cc64>] __device_release_driver+0xa4/0x150
[<ffffffff8156d7a5>] driver_detach+0xb5/0xc0
[<ffffffff8156c6c5>] bus_remove_driver+0x55/0xd0
[<ffffffff8156dfbc>] driver_unregister+0x2c/0x50
[<ffffffff816f0b8a>] sdio_unregister_driver+0x1a/0x20
[<ffffffffc09bf0f5>] rsi_module_exit+0x15/0x30 [ven_rsi_sdio]
[<ffffffff8110cad8>] SyS_delete_module+0x1b8/0x210
[<ffffffff81851dc8>] entry_SYSCALL_64_fastpath+0x1c/0xbb

Signed-off-by: Siva Rebbagondla <siva.rebbagondla@redpinesignals.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agorsi: fix memory alignment issue in ARM32 platforms
Siva Rebbagondla [Mon, 27 Aug 2018 11:35:14 +0000 (17:05 +0530)]
rsi: fix memory alignment issue in ARM32 platforms

During testing in ARM32 platforms, observed below kernel panic, as driver
accessing data beyond the allocated memory while submitting URB to USB.

Fix: Resolved this by specifying correct length by considering 64 bit
alignment. so that, USB bus driver will access only allocated memory.

Unit-test: Tested and confirm that driver bring up and scanning,
connection and data transfer works fine with this fix.

...skipping...
[   25.389450] Unable to handle kernel paging request at virtual
       address 5aa11422
[   25.403078] Internal error: Oops: 5 [#1] SMP ARM
[   25.407703] Modules linked in: rsi_usb
[   25.411473] CPU: 1 PID: 317 Comm: RX-Thread Not tainted 4.18.0-rc7 #1
[   25.419221] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
[   25.425764] PC is at skb_release_data+0x90/0x168
[   25.430393] LR is at skb_release_all+0x28/0x2c
[   25.434842] pc : [<807435b0>] lr : [<80742ba0>] psr: 200e0013 5aa1141e
[   25.464633] Flags: nzCv  IRQs on  FIQs on  Mode SVC_32 ISA ARM Segment none
[   25.477524] Process RX-Thread (pid: 317, stack limit = 0x(ptrval))
[   25.483709] Stack: (0xedf69ed8 to 0xedf6a000)
[   25.569907] Backtrace:
[   25.572368] [<80743520>] (skb_release_data) from [<80742ba0>]
       (skb_release_all+0x28/0x2c)
[   25.580555] r9:7f00258c r8:00000001 r7:ee355000 r6:eddab0d0
       r5:eddab000 r4:eddbb840
[   25.588308] [<80742b78>] (skb_release_all) from [<807432cc>]
       (consume_skb+0x30/0x50)
[   25.596055] r5:eddab000 r4:eddbb840
[   25.599648] [<8074329c>] (consume_skb) from [<7f00117c>]
       (rsi_usb_rx_thread+0x64/0x12c [rsi_usb])
[   25.608524] r5:eddab000 r4:eddbb840
[   25.612116] [<7f001118>] (rsi_usb_rx_thread [rsi_usb]) from
       [<80142750>] (kthread+0x11c/0x15c)
[   25.620735] r10:ee9ff9e0 r9:edcde3b8 r8:ee355000 r7:edf68000
       r6:edd3a780 r5:00000000
[   25.628567] r4:edcde380
[   25.631110] [<80142634>] (kthread) from [<801010e8>]
       (ret_from_fork+0x14/0x2c)
[   25.638336] Exception stack(0xedf69fb0 to 0xedf69ff8)
[   25.682929] ---[ end trace 8236a5496f5b5d3b ]---

Signed-off-by: Siva Rebbagondla <siva.rebbagondla@redpinesignals.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agobrcmfmac: fix wrong strnchr usage
Rasmus Villemoes [Wed, 22 Aug 2018 13:22:15 +0000 (15:22 +0200)]
brcmfmac: fix wrong strnchr usage

strnchr takes arguments in the order of its name: string, max bytes to
read, character to search for. Here we're passing '\n' aka 10 as the
buffer size, and searching for sizeof(buf) aka BRCMF_DCMD_SMLEN aka
256 (aka '\0', since it's implicitly converted to char) within those 10
bytes.

Just interchanging the last two arguments would still leave a bug,
because if we've been successful once, there are not sizeof(buf)
characters left after the new value of p.

Since clmver is immediately afterwards passed as a %s argument, I assume
that it is actually a properly nul-terminated string. For that case, we
have strreplace().

Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agort2x00: use simple_read_from_buffer()
Dan Carpenter [Wed, 22 Aug 2018 10:41:26 +0000 (13:41 +0300)]
rt2x00: use simple_read_from_buffer()

The problem with this copy_to_user() calls is that they don't ensure
that "size" is less than the "length" which the user provided.

Obviously, this is debugfs and "size" is normally going to be very small
so it probably doesn't matter, but this is the correct thing to do.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
6 years agomwifex: free rx_cmd skb in suspended state
Ganapathi Bhat [Tue, 21 Aug 2018 07:53:02 +0000 (13:23 +0530)]
mwifex: free rx_cmd skb in suspended state

USB suspend handler will kill the presubmitted rx_cmd URB. This
triggers a call to the corresponding URB complete handler, which
will free the rx_cmd skb, associated with rx_cmd URB. Due to a
possible race betwen suspend handler and main thread, depicted in
'commit bfcacac6c84b ("mwifiex: do no submit URB in suspended
state")', it is possible that the rx_cmd skb will fail to get
freed. This causes a memory leak, since the resume handler will
always allocate a new rx_cmd skb.

To fix this, free the rx_cmd skb in mwifiex_usb_submit_rx_urb, if
the device is in suspended state.

Signed-off-by: Vidya Dharmaraju <vidyad@marvell.com>
Signed-off-by: Cathy Luo <cluo@marvell.com>
Signed-off-by: Ganapathi Bhat <gbhat@marvell.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>