Commit Graph

982974 Commits

Author SHA1 Message Date
Arnd Bergmann
c0d638a03b mmc: mediatek: mark PM functions as __maybe_unused
The #ifdef check for the suspend/resume functions is wrong:

drivers/mmc/host/mtk-sd.c:2765:12: error: unused function 'msdc_suspend' [-Werror,-Wunused-function]
static int msdc_suspend(struct device *dev)
drivers/mmc/host/mtk-sd.c:2779:12: error: unused function 'msdc_resume' [-Werror,-Wunused-function]
static int msdc_resume(struct device *dev)

Remove the #ifdef and mark all four as __maybe_unused to aovid the
problem.

Fixes: c0a2074ac5 ("mmc: mediatek: Fix system suspend/resume support for CQHCI")
Cc: stable@vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Link: https://lore.kernel.org/r/20201203222922.1067522-1-arnd@kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
2020-12-04 15:35:54 +01:00
Johan Hovold
daa919196b USB: serial: cp210x: clean up dtr_rts()
Clean up dtr_rts() by renaming the port parameter and adding missing
whitespace.

Signed-off-by: Johan Hovold <johan@kernel.org>
2020-12-04 15:17:27 +01:00
Bean Huo
6246d7c9d1 mmc: block: Fixup condition for CMD13 polling for RPMB requests
The CMD13 polling is needed for commands with R1B responses. In commit
a0d4c7eb71 ("mmc: block: Add CMD13 polling for MMC IOCTLS with R1B
response"), the intent was to introduce this for requests targeted to the
RPMB partition. However, the condition to trigger the polling loop became
wrong, leading to unnecessary polling. Let's fix the condition to avoid
this.

Fixes: a0d4c7eb71 ("mmc: block: Add CMD13 polling for MMC IOCTLS with R1B response")
Cc: stable@vger.kernel.org
Reported-by: Zhan Liu <zliua@micron.com>
Signed-off-by: Zhan Liu <zliua@micron.com>
Signed-off-by: Bean Huo <beanhuo@micron.com>
Link: https://lore.kernel.org/r/20201202202320.22165-1-huobean@gmail.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
2020-12-04 15:02:27 +01:00
Johan Hovold
ed921771ff USB: serial: cp210x: refactor flow-control handling
Add a helper function to be used to configure flow control.

The flow-control code was the last caller that relied on the
memset-on-failure behaviour of cp210x_read_reg_block(), which we can now
drop in favour of bailing out on errors when retrieving the flow-control
settings.

This should also simplify adding support for software flow control.

Signed-off-by: Johan Hovold <johan@kernel.org>
2020-12-04 14:57:27 +01:00
Johan Hovold
b339628ec0 USB: serial: cp210x: drop flow-control debugging
Drop some unnecessary flow-control debugging.

Signed-off-by: Johan Hovold <johan@kernel.org>
2020-12-04 14:57:26 +01:00
Johan Hovold
46827bda2d USB: serial: cp210x: set terminal settings on open
Unlike other drivers cp210x have been retrieving the current terminal
settings from the device on open and reflecting those in termios.

Due to how set_termios() used to be implemented, this saved a few
control requests on open but has instead caused problems like broken
flow control and has required adding workarounds for swapped
line-control in cp2108 and line-speed initialisation on cp2104.

This unusual implementation also complicates adding new features for no
good reason.

Rip out the corresponding code and the above mentioned workarounds and
instead initialise the terminal settings unconditionally on open.

Signed-off-by: Johan Hovold <johan@kernel.org>
2020-12-04 14:57:24 +01:00
Johan Hovold
d42976296c USB: serial: cp210x: clean up line-control handling
Update the line-control settings in one request unconditionally instead
of setting the word-length, parity and stop-bit settings separately.

This avoids multiple requests when several settings are changed even if
this scheme could potentially also be used to detect unsupported device
settings. Since all device types but CP2101 appears to support all
settings, let's handle that one specifically and also report back the
unsupported settings properly through termios by clearing the
corresponding bits.

Also drop the related unnecessary debug printks.

Signed-off-by: Johan Hovold <johan@kernel.org>
2020-12-04 14:57:23 +01:00
Johan Hovold
95168d624f USB: serial: cp210x: return early on unchanged termios
Return early from set_termios() in case no relevant terminal settings
have changed.

This avoids testing each parameter in turn and specifically allows the
line-control handling to be cleaned up further.

Signed-off-by: Johan Hovold <johan@kernel.org>
2020-12-04 14:57:20 +01:00
Felix Fietkau
9716ef046b mt76: attempt to free up more room when filling the tx queue
Run dma cleanup immediately if the queue is almost full, instead of waiting
for the tx interrupt

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:16 +01:00
Felix Fietkau
5342758d55 mt76: mt7915: stop queues when running out of tx tokens
Avoids packet drops under load with lots of stations

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:16 +01:00
Felix Fietkau
90d494c99a mt76: improve tx queue stop/wake
Instead of stopping and waking only a single queue, handle all phy tx queues
mapped ot the same hardware queue.
Also allow the driver to block tx queues

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:16 +01:00
Shayne Chen
d211c00338 mt76: mt7915: fix memory leak in mt7915_mcu_get_rx_rate()
Free the skb to prevent memory leak.

Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:16 +01:00
Lorenzo Bianconi
0211c282bc mt76: mt7615: fix rdd mcu cmd endianness
Similar to mt7915 driver, fix mt7615 radar mcu command endianness

Fixes: 2ce73efe0f ("mt76: mt7615: initialize radar specs from host driver")
Fixes: 70911d9638 ("mt76: mt7615: add radar pattern test knob to debugfs")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:16 +01:00
Felix Fietkau
cee236e148 mt76: mt7915: fix endian issues
Multiple MCU messages were using u16/u32 fields without endian annotations
or conversions

Fixes: e57b790146 ("mt76: add mac80211 driver for MT7915 PCIe-based chipsets")
Fixes: 5517f78b00 ("mt76: mt7915: enable firmware module debug support")
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:16 +01:00
Lorenzo Bianconi
af901eb4ab mt76: mt7915: get rid of dbdc debugfs knob
mt7915 automatically detects dbdc feature so drop debugfs knob.
Move if_comb, mt7915_rates, if_limits structs and mt7915_regd_notifier(),
mt7915_init_wiphy() routines at the begging of init.c in order to make
mt7915_register_ext_phy routine static

Co-developed-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Co-developed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:15 +01:00
Lorenzo Bianconi
4c430774e0 mt76: mt7915: introduce dbdc support
Introduce mt7915 dbdc support. If dbdc is available, mt7915 primary phy
will work on 2.4GHz band, while secondary one on 5GHz band.

Co-developed-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Co-developed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:15 +01:00
Lorenzo Bianconi
98df2baeb3 mt76: move hw mac_addr in mt76_phy
This is a preliminary patch to properly support mt7915 dbdc

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:15 +01:00
Lorenzo Bianconi
db78a791ca mt76: move band allocation in mt76_register_phy
This is a preliminary patch to introduce dbdc support to mt7915 devices

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:15 +01:00
Lorenzo Bianconi
77af762e42 mt76: rely on mt76_phy in mt76_init_sband_2g and mt76_init_sband_5g
This is a preliminary patch to properly support mt7915 dbdc

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:15 +01:00
Lorenzo Bianconi
48dbce5cb1 mt76: move band capabilities in mt76_phy
This is a preliminary patch to move properly support mt7915 dbdc

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:15 +01:00
Lorenzo Bianconi
9199051929 mt76: move tx hw data queues in mt76_phy
Move hw data queues in mt76_phy from mt76_dev since mt7915 supports per
phy hw queues in dbdc mode

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:15 +01:00
Lorenzo Bianconi
e637763b60 mt76: move mcu queues to mt76_dev q_mcu array
Move mcu queue to a dedicated array q_mcu in mt76_dev structure.
This is a preliminary patch to move data queues in mt76_phy and properly
support dbdc

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:15 +01:00
Lorenzo Bianconi
d95093a143 mt76: rely on mt76_queue in tx_queue_skb_raw signature
This is a preliminary patch to move data queues in mt76_phy and properly
support dbdc

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:15 +01:00
Lorenzo Bianconi
b1cb42add6 mt76: introduce mt76_init_mcu_queue utility routine
Introduce mt76_init_mcu_queue utility routine in order to allocate
dedicate q_mcu pointers for mcu hw queues. This is a preliminary patch
to move data queues in mt76_phy and add dbdc support to mt7915 driver

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:14 +01:00
Lorenzo Bianconi
8987059475 mt76: rely on mt76_queue in tx_queue_skb signature
Rely on mt76_queue instead of qid in tx_queue_skb signature.
This is a preliminary patch to move data queues in mt76_phy and add
dbdc support to mt7915 driver

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:14 +01:00
Lorenzo Bianconi
e5655492e3 mt76: dma: rely on mt76_queue in mt76_dma_tx_cleanup signature
This is a preliminary patch to move data queues in mt76_phy and properly
support dbdc

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:14 +01:00
Lorenzo Bianconi
264b7b1986 mt76: mt7663s: rely on mt76_queue in mt7663s_tx_run_queue signature
This is a preliminary patch to move data queues in mt76_phy and properly
support dbdc for mt7915

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:14 +01:00
Lorenzo Bianconi
afc2b59cb9 mt76: sdio: rely on mt76_queue in mt76s_process_tx_queue signature
This is a preliminary patch to move data queues in mt76_phy and properly
support dbdc for mt7915

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:14 +01:00
Lorenzo Bianconi
a2a93548db mt76: sdio: introduce mt76s_alloc_tx_queue
This is a preliminary patch to move hw data queues in mt76_phy for
mt7915 dbdc support

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:14 +01:00
Lorenzo Bianconi
b671da33d1 mt76: move mt76_init_tx_queue in common code
Move mt76_init_tx_queue in mac80211.c since it is shared by all
drivers.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:14 +01:00
Lorenzo Bianconi
3d51a3e993 mt76: mt7915: rely on eeprom definitions
In order to make the code more readable, rely on mt7915_eeprom_field
definitions for eeprom parsing

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:14 +01:00
Lorenzo Bianconi
d927ebb99d mt76: mt7615: refactor usb/sdio rate code
Since wtbl workqueue is used only for rate handling, refactor code to
make it more clear

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:14 +01:00
Ryder Lee
d8d59f66d1 mt76: mt7615: support 16 interfaces
When looking for a MAC address slot, start by using main BSSID slots 1-3,
afterwards use 16 repeater mode BSSID slots, then start using the slots
usually used for AP mode.

This search order should prevent unnecessary conflicts with AP mode interfaces
on the same PHY.

Note that two PHYs share global 32 omac slots with each other.

Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:13 +01:00
Ryder Lee
802145e2ed mt76: mt7915: remove unused mt7915_mcu_bss_sync_tlv()
mt7915_mcu_bss_sync_tlv() is no longer used, so remove it.

Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:13 +01:00
Ryder Lee
4812e0bc37 mt76: mt7915: use BIT_ULL for omac_idx
The omac_idx variable is u64 so we should use the 64-bit BIT_ULL().

Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:13 +01:00
Lorenzo Bianconi
078b6d21b8 mt76: mt7915: make mt7915_eeprom_read static
Make mt7915_eeprom_read routine static since it is used only in eeprom.c

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:13 +01:00
Shayne Chen
ed3c9072fa mt76: mt7915: add support to set tx frequency offset in testmode
Support to set tx frequency offset in testmode, which is usally used in
the pre-calibration stage.

Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:13 +01:00
Shayne Chen
e0852d9083 mt76: mt7915: add support to set txpower in testmode
Support tx_power setting in testmode. Note that the tx power value of
antenna 1-3 equal to antenna 0.

Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:13 +01:00
Shayne Chen
5d8a83f099 mt76: mt7915: implement testmode rx support
Support testmode rx and display rx statistic by parsing RXV packet
type, which is currently only enabled in testmode.

Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:13 +01:00
Shayne Chen
aadf09537c mt76: mt7915: implement testmode tx support
Support testmode tx for MT7915A, including tx streams and HE rate
settings.

Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:13 +01:00
Shayne Chen
61fe73577d mt76: testmode: add support for HE rate modes
Extend enum mt76_testmode_tx_mode to support various HE rate modes.

Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:13 +01:00
Shayne Chen
c31d94af18 mt76: mt7915: fix tx rate related fields in tx descriptor
Correct the bitfields of tx rateval and bw in tx descriptor.

Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:13 +01:00
Shayne Chen
1a38c2f535 mt76: testmode: add support for LTF and GI combinations for HE mode
Prepare for setting different LTF (1x, 2x, and 4x) and GI (0.8us,
1.6us, 3.2us) combinations in HE rate mode.

Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:12 +01:00
Shayne Chen
7f54c7425d mt76: testmode: add tx_rate_stbc parameter
Add the parameter to control STBC function in testmode.

Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:12 +01:00
Shayne Chen
0922999223 mt76: testmode: add snr attribute in rx statistics
Support to display snr value when dumping rx statistics.

Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:12 +01:00
Shayne Chen
8248bb58e2 mt76: testmode: switch ib and wb rssi to array type for per-antenna report
Change ib_rssi and wb_rssi into array type, since they could be reported
by per-antenna.

Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:12 +01:00
Lorenzo Bianconi
9daf27e628 mt76: mt76u: use dedicated thread for status work
Split tx and status path in mt76-usb module relying on mt76 workers APIs

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:12 +01:00
Lorenzo Bianconi
be83a7e20c mt76: mt76u: rely on woker APIs for rx work
In order to improve parallelism, convert rx path in mt76-usb module to
mt76 workers APIs

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:12 +01:00
Lorenzo Bianconi
faa72684b4 mt76: mt7615: run key configuration in mt7615_set_key for usb/sdio devices
Since rate configuration is run holding dev mutex, we can run key
configuration in mt7615_set_key for usb/sdio devices avoiding to
schedule the workqueue

Tested-by: Tested-by: YN Chen <yn.chen@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:12 +01:00
Lorenzo Bianconi
930e0eaddf mt76: fix tkip configuration for mt7615/7663 devices
Fix Tx-Rx MIC overwrite during TKIP hw key configuration

Fixes: 01cfc1b454 ("mt76: mt7615: add BIP_CMAC_128 cipher support")
Tested-by: YN Chen <yn.chen@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2020-12-04 14:31:12 +01:00