* [PATCH v2 2/5] rtw88: pci: use ieee80211_ac_numbers instead of 0-3
From: yhchuang @ 2019-05-03 11:53 UTC (permalink / raw)
To: kvalo; +Cc: linux-wireless
In-Reply-To: <1556884415-23474-1-git-send-email-yhchuang@realtek.com>
From: Yan-Hsuan Chuang <yhchuang@realtek.com>
AC numbers are defined as enum in mac80211, use them instead of bare
0-3 indexing.
Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com>
---
drivers/net/wireless/realtek/rtw88/pci.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/realtek/rtw88/pci.c b/drivers/net/wireless/realtek/rtw88/pci.c
index cfe05ba..87bfcb3 100644
--- a/drivers/net/wireless/realtek/rtw88/pci.c
+++ b/drivers/net/wireless/realtek/rtw88/pci.c
@@ -487,10 +487,10 @@ static void rtw_pci_stop(struct rtw_dev *rtwdev)
}
static u8 ac_to_hwq[] = {
- [0] = RTW_TX_QUEUE_VO,
- [1] = RTW_TX_QUEUE_VI,
- [2] = RTW_TX_QUEUE_BE,
- [3] = RTW_TX_QUEUE_BK,
+ [IEEE80211_AC_VO] = RTW_TX_QUEUE_VO,
+ [IEEE80211_AC_VI] = RTW_TX_QUEUE_VI,
+ [IEEE80211_AC_BE] = RTW_TX_QUEUE_BE,
+ [IEEE80211_AC_BK] = RTW_TX_QUEUE_BK,
};
static u8 rtw_hw_queue_mapping(struct sk_buff *skb)
--
2.7.4
^ permalink raw reply related
* RE: [RFC] rtw88: fix subscript above array bounds compiler warning
From: Tony Chuang @ 2019-05-03 12:01 UTC (permalink / raw)
To: Stanislaw Gruszka; +Cc: linux-wireless@vger.kernel.org
In-Reply-To: <20190503115333.GA23109@redhat.com>
> Subject: [RFC] rtw88: fix subscript above array bounds compiler warning
>
> My compiler complain about:
>
> drivers/net/wireless/realtek/rtw88/phy.c: In function
> ‘rtw_phy_rf_power_2_rssi’:
> drivers/net/wireless/realtek/rtw88/phy.c:430:26: warning: array subscript is
> above array bounds [-Warray-bounds]
> linear = db_invert_table[i][j];
>
> According to comment power_db should be in range 1 ~ 96 .
> Correct rtw_phy_power_2_db() to make max power 96 db
> (still min is 0). This make the warning gone.
>
> However power >= 20 check still looks somewhat suspicious to me.
>
> Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
> ---
> drivers/net/wireless/realtek/rtw88/phy.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/realtek/rtw88/phy.c
> b/drivers/net/wireless/realtek/rtw88/phy.c
> index 35a35dbca85f..a716a44d78b0 100644
> --- a/drivers/net/wireless/realtek/rtw88/phy.c
> +++ b/drivers/net/wireless/realtek/rtw88/phy.c
> @@ -410,12 +410,12 @@ void rtw_phy_dynamic_mechanism(struct rtw_dev
> *rtwdev)
>
> static u8 rtw_phy_power_2_db(s8 power)
> {
> - if (power <= -100 || power >= 20)
> + if (power <= -96 || power >= 20)
> return 0;
> else if (power >= 0)
> - return 100;
> + return 96;
> else
> - return 100 + power;
> + return 96 + power;
> }
>
> static u64 rtw_phy_db_2_linear(u8 power_db)
> --
I think I should check with the radio team, that if the power from the
rx descriptor generated by hardware can possibly get >= 20
And also check what the actual logic they expected to deal with the power.
Thanks for reporting it.
Yan-Hsuan
^ permalink raw reply
* Re: [PATCH v2 0/5] rtw88: minor fixes from suggestions during review
From: Kalle Valo @ 2019-05-03 12:04 UTC (permalink / raw)
To: yhchuang; +Cc: linux-wireless
In-Reply-To: <1556884415-23474-1-git-send-email-yhchuang@realtek.com>
<yhchuang@realtek.com> writes:
> From: Yan-Hsuan Chuang <yhchuang@realtek.com>
>
> The series fix some small problems for rtw88, most of the suggestions
> are from the review process.
>
>
> v1 -> v2
>
> - modify description for LPS, ", turn off" -> ", to turn off"
> - drop patch "rtw88: mac: remove dangerous while (1)",
> should re-write the power sequence parsing code to make sense of avoiding
> infinite loop
> - unify Makefile license to Dual GPL/BSD
>
>
> Yan-Hsuan Chuang (5):
> rtw88: add license for Makefile
> rtw88: pci: use ieee80211_ac_numbers instead of 0-3
> rtw88: pci: check if queue mapping exceeds size of ac_to_hwq
> rtw88: fix unassigned rssi_level in rtw_sta_info
> rtw88: more descriptions about LPS
I was just in the next few minutes about to tag the last -next pull for
5.2. I'll apply patch 1 now so that we have consistent licenses for 5.2
but the rest have to wait for 5.3.
--
Kalle Valo
^ permalink raw reply
* Re: [PATCH v2 1/5] rtw88: add license for Makefile
From: Kalle Valo @ 2019-05-03 12:11 UTC (permalink / raw)
To: yhchuang; +Cc: linux-wireless
In-Reply-To: <1556884415-23474-2-git-send-email-yhchuang@realtek.com>
<yhchuang@realtek.com> wrote:
> From: Yan-Hsuan Chuang <yhchuang@realtek.com>
>
> Add missing license for Makefile
>
> Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com>
Patch applied to wireless-drivers-next.git, thanks.
f9b628d61fae rtw88: add license for Makefile
--
https://patchwork.kernel.org/patch/10928421/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply
* pull-request: wireless-drivers-next 2019-05-03
From: Kalle Valo @ 2019-05-03 12:21 UTC (permalink / raw)
To: David Miller; +Cc: linux-wireless, netdev, linux-kernel
Hi Dave,
here's a pull request to net-next for 5.2, more information below. Also
there's a conflict in iwlwifi again and this time I added the conflict
resolution to the signed tag based on our discussion earlier this week.
Please let me know what you think or there are any problems.
Kalle
The following changes since commit 5c2e6e14a0ad24a35d9d2b318204c8c012d9d618:
Merge branch 'net-add-reset-controller-driven-PHY-reset' (2019-04-18 17:43:11 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git tags/wireless-drivers-next-for-davem-2019-05-03
for you to fetch changes up to f9b628d61faef9b6d411f13cf4be41470b7a7adb:
rtw88: add license for Makefile (2019-05-03 15:06:12 +0300)
----------------------------------------------------------------
wireless-drivers-next patches for 5.2
Most likely the last patchset of new feature for 5.2, and this time we
have quite a lot of new features. Most obvious being rtw88 from
Realtek which supports RTL8822BE and RTL8822CE 802.11ac devices. We
have also new hardware support for existing drivers and improvements.
There's one conflict in iwlwifi, my example conflict resolution below.
Major changes:
iwlwifi
* bump the 20000-series FW API version
* work on new hardware continues
* RTT confidence indication support for Fine Timing Measurement (FTM)
* an improvement in HE (802.11ax) rate-scaling
* add command version parsing from the fimware TLVs
* add support for a new WoWLAN patterns firmware API
rsi
* add support for rs9116
mwifiex
* add support for SD8987
brcmfmac
* add quirk for ACEPC T8 and T11 mini PCs
rt2x00
* add RT3883 support
qtnfmac
* fix debugfs interface to support multiple cards
rtw88
* new driver
mt76
* share more code across drivers
* add support for MT7615 chipset
* rework DMA API
* tx/rx performance optimizations
* use NAPI for tx cleanup on mt76x02
* AP mode support for USB devices
* USB stability fixes
* tx power handling fixes for 76x2
* endian fixes
Conflicts:
There's a trivial conflict in
drivers/net/wireless/intel/iwlwifi/fw/file.h, just leave
IWL_UCODE_TLV_FW_FSEQ_VERSION to the file. 'git diff' output should be
just empty:
diff --cc drivers/net/wireless/intel/iwlwifi/fw/file.h
index cd622af90077,b0671e16e1ce..000000000000
--- a/drivers/net/wireless/intel/iwlwifi/fw/file.h
+++ b/drivers/net/wireless/intel/iwlwifi/fw/file.h
----------------------------------------------------------------
Aditya Pakki (1):
rsi: Fix NULL pointer dereference in kmalloc
Ahmad Masri (4):
wil6210: prevent device memory access while in reset or suspend
wil6210: check mid is valid
wil6210: fix report of rx packet checksum in edma mode
wil6210: add support for ucode tracing
Alexei Avshalom Lazar (1):
wil6210: align to latest auto generated wmi.h
Alexey Khoroshilov (1):
mwl8k: fix error handling in mwl8k_post_cmd()
Andrei Otcheretianski (1):
iwlwifi: mvm: Don't sleep in RX path
Avraham Stern (2):
iwlwifi: mvm: support rtt confidence indication
iwlwifi: mvm: report FTM start time TSF when applicable
Colin Ian King (3):
iwlegacy: fix spelling mistake "acumulative" -> "accumulative"
mwifiex: fix spelling mistake "capabilties" -> "capabilities"
rtw88: fix shift of more than 32 bits of a integer
Dan Carpenter (2):
mwifiex: prevent an array overflow
brcm80211: potential NULL dereference in brcmf_cfg80211_vndr_cmds_dcmd_handler()
Dedy Lansky (2):
wil6210: use OEM MAC address from OTP
wil6210: free edma_rx_swtail upon reset
Felix Fietkau (11):
mt76: fix tx power issues
mt76: use readl/writel instead of ioread32/iowrite32
mt76: use mac80211 txq scheduling
mt76: reduce locking in mt76_dma_tx_cleanup
mt76: store wcid tx rate info in one u32 reduce locking
mt76: move tx tasklet to struct mt76_dev
mt76: only schedule txqs from the tx tasklet
mt76: mt76x02: use napi polling for tx cleanup
mt76: mt76x02: remove irqsave/restore in locking for tx status fifo
mt76: mt7603: fix initialization of max rx length
mt76: mt7615: use sizeof instead of sizeof_field
Gabor Juhos (1):
rt2x00: add RT3883 support
Gregory Greenman (1):
iwlwifi: rs: consider LDPC capability in case of HE
Gustavo A. R. Silva (5):
rndis_wlan: use struct_size() helper
mwifiex: use struct_size() in kzalloc()
zd1211rw: use struct_size() helper
rtlwifi: rtl8723ae: Fix missing break in switch statement
rtw88: phy: mark expected switch fall-throughs
Hans de Goede (1):
brcmfmac: Add DMI nvram filename quirk for ACEPC T8 and T11 mini PCs
Igor Mitsyanko (1):
qtnfmac: allow to control DFS slave radar detection
Jeff Xie (1):
mwl8k: move spin_lock_bh to spin_lock in tasklet
Johannes Berg (3):
iwlwifi: pcie: initialize debug_rfkill to -1
iwlwifi: pcie: don't crash on invalid RX interrupt
iwlwifi: parse command version TLV
Kalle Valo (5):
Merge ath-next from git://git.kernel.org/.../kvalo/ath.git
Merge tag 'iwlwifi-next-for-kalle-2019-04-18-2' of git://git.kernel.org/.../iwlwifi/iwlwifi-next
Revert "brcmfmac: send mailbox interrupt twice for specific hardware device"
Merge tag 'iwlwifi-next-for-kalle-2019-04-29' of git://git.kernel.org/.../iwlwifi/iwlwifi-next
Merge tag 'mt76-for-kvalo-2019-05-01' of https://github.com/nbd168/wireless
Kangjie Lu (1):
net: cw1200: fix a NULL pointer dereference
Larry Finger (1):
b43: Remove empty function lpphy_papd_cal()
Liad Kaufman (1):
iwlwifi: mvm: limit TLC according to our HE capabilities
Lior David (1):
wil6210: fix return code of wmi_mgmt_tx and wmi_mgmt_tx_ext
Lorenzo Bianconi (35):
mt76: mmio: move mt76x02_set_irq_mask in mt76 module
mt76: dma: move mt76x02_init_{tx,rx}_queue in mt76 module
mt76: remove mt76_queue dependency from tx_queue_skb function pointer
mt76: remove mt76_queue dependency from tx_prepare_skb function pointer
mt76: remove mt76_queue dependency from tx_complete_skb function pointer
mt76: introduce mt76_sw_queue data structure
mt76: introduce mt76_txq_id field in mt76_queue_entry
mt76: move mt76x02_insert_hdr_pad in mt76-core module
mt76: mmio: move mt76_insert_hdr_pad in mt76_dma_tx_queue_skb
mt76: move skb dma mapping before running tx_prepare_skb
mt76: introduce mt76_tx_info data structure
mt76: dma: add static qualifier to mt76_dma_tx_queue_skb
mt7603: remove mt7603_mcu_init routine
mt7603: core: do not use magic numbers in mt7603_reg_map
mt76: usb: reduce code indentation in mt76u_alloc_tx
mt76: introduce mt76_free_device routine
mt76: move mac_work in mt76_dev
mt76: usb: reduce locking in mt76u_tx_tasklet
mt76: set txwi_size according to the driver value
mt76: add skb pointer to mt76_tx_info
mt76: dma: introduce skb field in mt76_txwi_cache
mt76: dma: add skb check for dummy pointer
mt76: mt7603: remove query from mt7603_mcu_msg_send signature
mt76: mt7603: use standard signature for mt7603_mcu_msg_send
mt76: mt7603: initialize mt76_mcu_ops data structure
mt76: introduce mt76_mcu_restart macro
mt76: mt7603: init mcu_restart function pointer
mt76: mt7603: run __mt76_mcu_send_msg in mt7603_mcu_send_firmware
mt76: mt7603: report firmware version using ethtool
mt76: move beacon_int in mt76_dev
mt76: move beacon_mask in mt76_dev
mt76: move pre_tbtt_tasklet in mt76_dev
mt76: mt7603: enable/disable pre_tbtt_tasklet in mt7603_set_channel
mt76: do not enable/disable pre_tbtt_tasklet in scan_start/scan_complete
mt76: mt7603: dynamically alloc mcu req in mt7603_mcu_set_eeprom
Luca Coelho (5):
iwlwifi: bump FW API to 47 for 22000 series
iwlwifi: remove unused 0x40C0 PCI device IDs
iwlwifi: mvm: support v2 of the WoWLAN patterns command
iwlwifi: bump FW API to 48 for 22000 series
iwlwifi: pcie: remove stray character in iwl_pcie_rx_alloc_page()
Maya Erez (6):
wil6210: increase PCP stop command timeout
wil6210: do not set BIT_USER_SUPPORT_T_POWER_ON_0 in Talyn-MB
wil6210: update WIL_MCS_MAX to 15
wil6210: prevent access to RGF_CAF_ICR in Talyn
wil6210: reset buff id in status message after completion
wil6210: print error in FW and board files load failures
Nathan Chancellor (2):
iwlwifi: mvm: Change an 'else if' into an 'else' in iwl_mvm_send_add_bcast_sta
rtw88: Make RA_MASK macros ULL
Pan Bian (1):
p54: drop device reference count if fails to enable device
Paolo Bonzini (1):
wlcore: simplify/fix/optimize reg_ch_conf_pending operations
Petr Štetiar (1):
mwl8k: Fix rate_idx underflow
Rafał Miłecki (1):
brcmfmac: print firmware messages after a firmware crash
Ryder Lee (6):
mt76: add mac80211 driver for MT7615 PCIe-based chipsets
mt76: add unlikely() for dma_mapping_error() check
mt76: use macro for sn and seq_ctrl conversion
MAINTAINERS: update entry for mt76 wireless driver
mt76: fix endianness sparse warnings
mt76: add TX/RX antenna pattern capabilities
Sergey Matyukevich (2):
qtnfmac: handle channel switch events for connected stations only
qtnfmac: modify debugfs to support multiple cards
Shahar S Matityahu (12):
iwlwifi: dbg_ini: support notification and dhc regions type parsing
iwlwifi: add FW_INFO debug level
iwlwifi: dbg_ini: add debug prints to the ini flows
iwlwifi: dbg: add periphery memory dumping support to ax210 device family
iwlwifi: dbg: add lmac and umac PC registers to periphery dump
iwlwifi: dbg_ini: set dump bit only when trigger collection is certain
iwlwifi: support fseq tlv and print fseq version
iwlwifi: dbg_ini: add lmac and umac error tables dumping support
iwlwifi: dbg_ini: add periodic trigger support
iwlwifi: dbg: replace dump info device family with HW type
iwlwifi: avoid allocating memory for region with disabled domain
iwlwifi: dbg_ini: check for valid region type during regions parsing
Shaul Triebitz (2):
iwlwifi: mvm: set 512 TX queue slots for AX210 devices
iwlwifi: unite macros with same meaning
Siva Rebbagondla (8):
rsi: add new device model for 9116
rsi: move common part of firmware load to separate function
rsi: add firmware loading for 9116 device
rsi: change in device init frame sequence for 9116
rsi: new bootup parameters for 9116
rsi: send new tx command frame wlan9116 features
rsi: reset device changes for 9116
rsi: miscallaneous changes for 9116 and common
Stanislaw Gruszka (39):
rt2x00: use ratelimited variants dev_warn/dev_err
rt2x00: check number of EPROTO errors
rt2x00: do not print error when queue is full
rt2800: partially restore old mmio txstatus behaviour
rt2800: new flush implementation for SoC devices
rt2800: move txstatus pending routine
rt2800mmio: fetch tx status changes
rt2800mmio: use timer and work for handling tx statuses timeouts
rt2x00: remove last_nostatus_check
rt2x00: remove not used entry field
rt2x00mmio: remove legacy comment
mt76x02: introduce mt76x02_beacon.c
mt76x02: add hrtimer for pre TBTT for USB
mt76x02: introduce beacon_ops
mt76x02u: implement beacon_ops
mt76x02: generalize some mmio beaconing functions
mt76x02u: add sta_ps
mt76x02: disable HW encryption for group frames
mt76x02u: implement pre TBTT work for USB
mt76x02: make beacon slots bigger for USB
mt76x02u: add mt76_release_buffered_frames
mt76: unify set_tim
mt76x02: enable AP mode for USB
mt76usb: change mt76u_submit_buf
mt76: remove rx_page_lock
mt76usb: change mt76u_fill_rx_sg arguments
mt76usb: use usb_dev private data
mt76usb: remove mt76u_buf redundant fileds
mt76usb: move mt76u_buf->done to queue entry
mt76usb: remove mt76u_buf and use urb directly
mt76usb: remove MT_RXQ_MAIN queue from mt76u_urb_alloc
mt76usb: resue mt76u_urb_alloc for tx
mt76usb: remove unneded sg_init_table
mt76usb: allocate urb and sg as linear data
mt76usb: remove queue variable from rx_tasklet
mt76: mt76x02u: remove bogus stop on suspend
mt76usb: fix tx/rx stop
mt76: mt76x02: remove bogus mutex usage
mt76: usb: use EP max packet aligned buffer sizes for rx
Tamás Szűcs (1):
mwifiex: add support for SD8987 chipset
Tomislav Požega (1):
rt2x00: code-style fix in rt2800usb.c
Wright Feng (3):
brcmfmac: send mailbox interrupt twice for specific hardware device
brcmfmac: send mailbox interrupt twice for specific hardware device
brcmfmac: set txflow request id from 1 to pktids array size
Yan-Hsuan Chuang (2):
rtw88: new Realtek 802.11ac driver
rtw88: add license for Makefile
YueHaibing (6):
ray_cs: Check return value of pcmcia_register_driver
ray_cs: use remove_proc_subtree to simplify procfs code
ssb: Fix possible NULL pointer dereference in ssb_host_pcmcia_exit
at76c50x-usb: Don't register led_trigger if usb_register_driver failed
rtlwifi: rtl8192cu: remove set but not used variable 'turbo_scanoff'
iwlwifi: Use correct channel_profile iniwl_get_nvm
kbuild test robot (1):
mt76: mt76x02: mt76x02_poll_tx() can be static
MAINTAINERS | 8 +
drivers/net/wireless/ath/wil6210/cfg80211.c | 11 +-
drivers/net/wireless/ath/wil6210/debugfs.c | 38 +-
drivers/net/wireless/ath/wil6210/fw_inc.c | 6 +-
drivers/net/wireless/ath/wil6210/main.c | 78 +-
drivers/net/wireless/ath/wil6210/netdev.c | 10 +-
drivers/net/wireless/ath/wil6210/pcie_bus.c | 4 +-
drivers/net/wireless/ath/wil6210/pm.c | 35 +-
drivers/net/wireless/ath/wil6210/txrx_edma.c | 74 +-
drivers/net/wireless/ath/wil6210/txrx_edma.h | 47 +-
drivers/net/wireless/ath/wil6210/wil6210.h | 11 +-
drivers/net/wireless/ath/wil6210/wil_crash_dump.c | 18 +-
drivers/net/wireless/ath/wil6210/wmi.c | 24 +-
drivers/net/wireless/ath/wil6210/wmi.h | 91 +-
drivers/net/wireless/atmel/at76c50x-usb.c | 4 +-
drivers/net/wireless/broadcom/b43/phy_lp.c | 11 -
.../net/wireless/broadcom/brcm80211/brcmfmac/dmi.c | 26 +
.../wireless/broadcom/brcm80211/brcmfmac/msgbuf.c | 6 +-
.../wireless/broadcom/brcm80211/brcmfmac/pcie.c | 31 +-
.../wireless/broadcom/brcm80211/brcmfmac/vendor.c | 5 +-
drivers/net/wireless/intel/iwlegacy/3945-debug.c | 8 +-
drivers/net/wireless/intel/iwlwifi/cfg/22000.c | 19 +-
drivers/net/wireless/intel/iwlwifi/fw/api/d3.h | 136 +-
.../net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h | 4 +
.../net/wireless/intel/iwlwifi/fw/api/location.h | 77 +-
drivers/net/wireless/intel/iwlwifi/fw/api/txq.h | 3 +
drivers/net/wireless/intel/iwlwifi/fw/dbg.c | 187 +-
drivers/net/wireless/intel/iwlwifi/fw/dbg.h | 3 +
drivers/net/wireless/intel/iwlwifi/fw/error-dump.h | 4 +-
drivers/net/wireless/intel/iwlwifi/fw/file.h | 33 +-
drivers/net/wireless/intel/iwlwifi/fw/img.h | 7 +-
drivers/net/wireless/intel/iwlwifi/fw/init.c | 2 +
drivers/net/wireless/intel/iwlwifi/fw/runtime.h | 1 +
drivers/net/wireless/intel/iwlwifi/iwl-config.h | 1 -
drivers/net/wireless/intel/iwlwifi/iwl-csr.h | 1 +
drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c | 2 +-
drivers/net/wireless/intel/iwlwifi/iwl-debug.h | 2 +
drivers/net/wireless/intel/iwlwifi/iwl-drv.c | 26 +-
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c | 2 +-
drivers/net/wireless/intel/iwlwifi/mvm/d3.c | 58 +-
.../net/wireless/intel/iwlwifi/mvm/ftm-initiator.c | 33 +-
drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c | 2 +-
drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 1 +
drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c | 50 +-
drivers/net/wireless/intel/iwlwifi/mvm/sta.c | 11 +-
.../net/wireless/intel/iwlwifi/mvm/time-event.c | 2 +-
.../wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c | 3 +-
.../net/wireless/intel/iwlwifi/pcie/ctxt-info.c | 6 +-
drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 5 -
drivers/net/wireless/intel/iwlwifi/pcie/internal.h | 8 +-
drivers/net/wireless/intel/iwlwifi/pcie/rx.c | 9 +-
.../net/wireless/intel/iwlwifi/pcie/trans-gen2.c | 7 +-
drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 13 +-
drivers/net/wireless/intel/iwlwifi/pcie/tx.c | 8 +-
drivers/net/wireless/intersil/p54/p54pci.c | 3 +-
drivers/net/wireless/marvell/mwifiex/Kconfig | 4 +-
drivers/net/wireless/marvell/mwifiex/cfp.c | 3 +
drivers/net/wireless/marvell/mwifiex/sdio.c | 5 +
drivers/net/wireless/marvell/mwifiex/sdio.h | 69 +
drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c | 7 +-
drivers/net/wireless/marvell/mwifiex/sta_event.c | 12 +-
drivers/net/wireless/marvell/mwifiex/uap_event.c | 8 +-
drivers/net/wireless/marvell/mwl8k.c | 24 +-
drivers/net/wireless/mediatek/mt76/Kconfig | 1 +
drivers/net/wireless/mediatek/mt76/Makefile | 3 +-
drivers/net/wireless/mediatek/mt76/agg-rx.c | 2 +-
drivers/net/wireless/mediatek/mt76/debugfs.c | 7 +-
drivers/net/wireless/mediatek/mt76/dma.c | 164 +-
drivers/net/wireless/mediatek/mt76/dma.h | 2 +
drivers/net/wireless/mediatek/mt76/mac80211.c | 41 +-
drivers/net/wireless/mediatek/mt76/mmio.c | 17 +-
drivers/net/wireless/mediatek/mt76/mt76.h | 119 +-
drivers/net/wireless/mediatek/mt76/mt7603/beacon.c | 35 +-
drivers/net/wireless/mediatek/mt76/mt7603/core.c | 19 +-
drivers/net/wireless/mediatek/mt76/mt7603/dma.c | 39 +-
drivers/net/wireless/mediatek/mt76/mt7603/init.c | 12 +-
drivers/net/wireless/mediatek/mt76/mt7603/mac.c | 54 +-
drivers/net/wireless/mediatek/mt76/mt7603/main.c | 34 +-
drivers/net/wireless/mediatek/mt76/mt7603/mcu.c | 116 +-
drivers/net/wireless/mediatek/mt76/mt7603/mt7603.h | 23 +-
drivers/net/wireless/mediatek/mt76/mt7603/regs.h | 4 +
drivers/net/wireless/mediatek/mt76/mt7615/Kconfig | 7 +
drivers/net/wireless/mediatek/mt76/mt7615/Makefile | 5 +
drivers/net/wireless/mediatek/mt76/mt7615/dma.c | 205 +
drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c | 98 +
drivers/net/wireless/mediatek/mt76/mt7615/eeprom.h | 18 +
drivers/net/wireless/mediatek/mt76/mt7615/init.c | 229 +
drivers/net/wireless/mediatek/mt76/mt7615/mac.c | 775 +
drivers/net/wireless/mediatek/mt76/mt7615/mac.h | 300 +
drivers/net/wireless/mediatek/mt76/mt7615/main.c | 499 +
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c | 1655 ++
drivers/net/wireless/mediatek/mt76/mt7615/mcu.h | 520 +
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h | 195 +
drivers/net/wireless/mediatek/mt76/mt7615/pci.c | 150 +
drivers/net/wireless/mediatek/mt76/mt7615/regs.h | 203 +
drivers/net/wireless/mediatek/mt76/mt76x0/init.c | 2 +-
drivers/net/wireless/mediatek/mt76/mt76x0/main.c | 8 +-
drivers/net/wireless/mediatek/mt76/mt76x0/pci.c | 26 +-
drivers/net/wireless/mediatek/mt76/mt76x0/usb.c | 49 +-
drivers/net/wireless/mediatek/mt76/mt76x02.h | 44 +-
.../net/wireless/mediatek/mt76/mt76x02_beacon.c | 286 +
drivers/net/wireless/mediatek/mt76/mt76x02_mac.c | 185 +-
drivers/net/wireless/mediatek/mt76/mt76x02_mac.h | 4 +-
drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c | 266 +-
drivers/net/wireless/mediatek/mt76/mt76x02_regs.h | 5 +-
drivers/net/wireless/mediatek/mt76/mt76x02_txrx.c | 29 +-
drivers/net/wireless/mediatek/mt76/mt76x02_usb.h | 12 +-
.../net/wireless/mediatek/mt76/mt76x02_usb_core.c | 188 +-
drivers/net/wireless/mediatek/mt76/mt76x02_util.c | 107 +-
drivers/net/wireless/mediatek/mt76/mt76x2/init.c | 12 +-
drivers/net/wireless/mediatek/mt76/mt76x2/pci.c | 3 +-
.../net/wireless/mediatek/mt76/mt76x2/pci_init.c | 6 +-
.../net/wireless/mediatek/mt76/mt76x2/pci_main.c | 27 +-
drivers/net/wireless/mediatek/mt76/mt76x2/phy.c | 6 +-
drivers/net/wireless/mediatek/mt76/mt76x2/usb.c | 14 +-
.../net/wireless/mediatek/mt76/mt76x2/usb_init.c | 5 +-
.../net/wireless/mediatek/mt76/mt76x2/usb_main.c | 19 +-
drivers/net/wireless/mediatek/mt76/tx.c | 148 +-
drivers/net/wireless/mediatek/mt76/usb.c | 379 +-
drivers/net/wireless/quantenna/qtnfmac/cfg80211.c | 2 +-
drivers/net/wireless/quantenna/qtnfmac/commands.c | 4 +-
drivers/net/wireless/quantenna/qtnfmac/commands.h | 3 +-
drivers/net/wireless/quantenna/qtnfmac/core.c | 35 +
drivers/net/wireless/quantenna/qtnfmac/core.h | 2 +
drivers/net/wireless/quantenna/qtnfmac/debug.c | 4 +-
drivers/net/wireless/quantenna/qtnfmac/event.c | 16 +-
drivers/net/wireless/quantenna/qtnfmac/qlink.h | 4 +-
drivers/net/wireless/ralink/rt2x00/rt2800.h | 19 +-
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 628 +-
drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 3 +-
drivers/net/wireless/ralink/rt2x00/rt2800mmio.c | 124 +-
drivers/net/wireless/ralink/rt2x00/rt2800mmio.h | 1 +
drivers/net/wireless/ralink/rt2x00/rt2800pci.c | 2 +-
drivers/net/wireless/ralink/rt2x00/rt2800soc.c | 13 +-
drivers/net/wireless/ralink/rt2x00/rt2800usb.c | 28 +-
drivers/net/wireless/ralink/rt2x00/rt2x00.h | 7 +-
drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 4 +
drivers/net/wireless/ralink/rt2x00/rt2x00mmio.h | 2 -
drivers/net/wireless/ralink/rt2x00/rt2x00queue.c | 3 +-
drivers/net/wireless/ralink/rt2x00/rt2x00queue.h | 3 -
drivers/net/wireless/ralink/rt2x00/rt2x00usb.c | 22 +-
drivers/net/wireless/ray_cs.c | 8 +-
drivers/net/wireless/realtek/Kconfig | 1 +
drivers/net/wireless/realtek/Makefile | 1 +
.../net/wireless/realtek/rtlwifi/rtl8192cu/rf.c | 3 -
.../net/wireless/realtek/rtlwifi/rtl8723ae/hw.c | 1 +
drivers/net/wireless/realtek/rtw88/Kconfig | 54 +
drivers/net/wireless/realtek/rtw88/Makefile | 22 +
drivers/net/wireless/realtek/rtw88/debug.c | 637 +
drivers/net/wireless/realtek/rtw88/debug.h | 52 +
drivers/net/wireless/realtek/rtw88/efuse.c | 160 +
drivers/net/wireless/realtek/rtw88/efuse.h | 26 +
drivers/net/wireless/realtek/rtw88/fw.c | 633 +
drivers/net/wireless/realtek/rtw88/fw.h | 222 +
drivers/net/wireless/realtek/rtw88/hci.h | 211 +
drivers/net/wireless/realtek/rtw88/mac.c | 965 +
drivers/net/wireless/realtek/rtw88/mac.h | 35 +
drivers/net/wireless/realtek/rtw88/mac80211.c | 481 +
drivers/net/wireless/realtek/rtw88/main.c | 1211 ++
drivers/net/wireless/realtek/rtw88/main.h | 1104 +
drivers/net/wireless/realtek/rtw88/pci.c | 1211 ++
drivers/net/wireless/realtek/rtw88/pci.h | 237 +
drivers/net/wireless/realtek/rtw88/phy.c | 1727 ++
drivers/net/wireless/realtek/rtw88/phy.h | 134 +
drivers/net/wireless/realtek/rtw88/ps.c | 166 +
drivers/net/wireless/realtek/rtw88/ps.h | 20 +
drivers/net/wireless/realtek/rtw88/reg.h | 421 +
drivers/net/wireless/realtek/rtw88/regd.c | 391 +
drivers/net/wireless/realtek/rtw88/regd.h | 67 +
drivers/net/wireless/realtek/rtw88/rtw8822b.c | 1594 ++
drivers/net/wireless/realtek/rtw88/rtw8822b.h | 170 +
.../net/wireless/realtek/rtw88/rtw8822b_table.c | 20783 +++++++++++++++++++
.../net/wireless/realtek/rtw88/rtw8822b_table.h | 18 +
drivers/net/wireless/realtek/rtw88/rtw8822c.c | 1890 ++
drivers/net/wireless/realtek/rtw88/rtw8822c.h | 186 +
.../net/wireless/realtek/rtw88/rtw8822c_table.c | 11753 +++++++++++
.../net/wireless/realtek/rtw88/rtw8822c_table.h | 17 +
drivers/net/wireless/realtek/rtw88/rx.c | 151 +
drivers/net/wireless/realtek/rtw88/rx.h | 41 +
drivers/net/wireless/realtek/rtw88/sec.c | 120 +
drivers/net/wireless/realtek/rtw88/sec.h | 39 +
drivers/net/wireless/realtek/rtw88/tx.c | 367 +
drivers/net/wireless/realtek/rtw88/tx.h | 89 +
drivers/net/wireless/realtek/rtw88/util.c | 72 +
drivers/net/wireless/realtek/rtw88/util.h | 34 +
drivers/net/wireless/rndis_wlan.c | 12 +-
drivers/net/wireless/rsi/rsi_91x_hal.c | 199 +-
drivers/net/wireless/rsi/rsi_91x_mac80211.c | 30 +-
drivers/net/wireless/rsi/rsi_91x_mgmt.c | 232 +-
drivers/net/wireless/rsi/rsi_91x_sdio.c | 129 +-
drivers/net/wireless/rsi/rsi_91x_usb.c | 96 +-
drivers/net/wireless/rsi/rsi_boot_params.h | 63 +
drivers/net/wireless/rsi/rsi_hal.h | 44 +-
drivers/net/wireless/rsi/rsi_main.h | 21 +-
drivers/net/wireless/rsi/rsi_mgmt.h | 26 +
drivers/net/wireless/rsi/rsi_sdio.h | 5 +-
drivers/net/wireless/rsi/rsi_usb.h | 3 +-
drivers/net/wireless/st/cw1200/main.c | 5 +
drivers/net/wireless/ti/wlcore/cmd.c | 15 +-
drivers/net/wireless/ti/wlcore/wlcore.h | 4 +-
drivers/net/wireless/zydas/zd1211rw/zd_usb.c | 3 +-
drivers/ssb/bridge_pcmcia_80211.c | 9 +-
202 files changed, 56497 insertions(+), 1641 deletions(-)
create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/Kconfig
create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/Makefile
create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/dma.c
create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c
create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/eeprom.h
create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/init.c
create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/mac.c
create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/mac.h
create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/main.c
create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/mcu.h
create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h
create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/pci.c
create mode 100644 drivers/net/wireless/mediatek/mt76/mt7615/regs.h
create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x02_beacon.c
create mode 100644 drivers/net/wireless/realtek/rtw88/Kconfig
create mode 100644 drivers/net/wireless/realtek/rtw88/Makefile
create mode 100644 drivers/net/wireless/realtek/rtw88/debug.c
create mode 100644 drivers/net/wireless/realtek/rtw88/debug.h
create mode 100644 drivers/net/wireless/realtek/rtw88/efuse.c
create mode 100644 drivers/net/wireless/realtek/rtw88/efuse.h
create mode 100644 drivers/net/wireless/realtek/rtw88/fw.c
create mode 100644 drivers/net/wireless/realtek/rtw88/fw.h
create mode 100644 drivers/net/wireless/realtek/rtw88/hci.h
create mode 100644 drivers/net/wireless/realtek/rtw88/mac.c
create mode 100644 drivers/net/wireless/realtek/rtw88/mac.h
create mode 100644 drivers/net/wireless/realtek/rtw88/mac80211.c
create mode 100644 drivers/net/wireless/realtek/rtw88/main.c
create mode 100644 drivers/net/wireless/realtek/rtw88/main.h
create mode 100644 drivers/net/wireless/realtek/rtw88/pci.c
create mode 100644 drivers/net/wireless/realtek/rtw88/pci.h
create mode 100644 drivers/net/wireless/realtek/rtw88/phy.c
create mode 100644 drivers/net/wireless/realtek/rtw88/phy.h
create mode 100644 drivers/net/wireless/realtek/rtw88/ps.c
create mode 100644 drivers/net/wireless/realtek/rtw88/ps.h
create mode 100644 drivers/net/wireless/realtek/rtw88/reg.h
create mode 100644 drivers/net/wireless/realtek/rtw88/regd.c
create mode 100644 drivers/net/wireless/realtek/rtw88/regd.h
create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822b.c
create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822b.h
create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822b_table.c
create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822b_table.h
create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822c.c
create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822c.h
create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822c_table.c
create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822c_table.h
create mode 100644 drivers/net/wireless/realtek/rtw88/rx.c
create mode 100644 drivers/net/wireless/realtek/rtw88/rx.h
create mode 100644 drivers/net/wireless/realtek/rtw88/sec.c
create mode 100644 drivers/net/wireless/realtek/rtw88/sec.h
create mode 100644 drivers/net/wireless/realtek/rtw88/tx.c
create mode 100644 drivers/net/wireless/realtek/rtw88/tx.h
create mode 100644 drivers/net/wireless/realtek/rtw88/util.c
create mode 100644 drivers/net/wireless/realtek/rtw88/util.h
^ permalink raw reply
* Re: [RFC] rtw88: fix subscript above array bounds compiler warning
From: Stanislaw Gruszka @ 2019-05-03 12:24 UTC (permalink / raw)
To: Tony Chuang; +Cc: linux-wireless@vger.kernel.org
In-Reply-To: <F7CD281DE3E379468C6D07993EA72F84D17E8846@RTITMBSVM04.realtek.com.tw>
On Fri, May 03, 2019 at 12:01:05PM +0000, Tony Chuang wrote:
> > Subject: [RFC] rtw88: fix subscript above array bounds compiler warning
> >
> > My compiler complain about:
> >
> > drivers/net/wireless/realtek/rtw88/phy.c: In function
> > ‘rtw_phy_rf_power_2_rssi’:
> > drivers/net/wireless/realtek/rtw88/phy.c:430:26: warning: array subscript is
> > above array bounds [-Warray-bounds]
> > linear = db_invert_table[i][j];
> >
> > According to comment power_db should be in range 1 ~ 96 .
> > Correct rtw_phy_power_2_db() to make max power 96 db
> > (still min is 0). This make the warning gone.
> >
> > However power >= 20 check still looks somewhat suspicious to me.
> >
> > Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
> > ---
> > drivers/net/wireless/realtek/rtw88/phy.c | 6 +++---
> > 1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/net/wireless/realtek/rtw88/phy.c
> > b/drivers/net/wireless/realtek/rtw88/phy.c
> > index 35a35dbca85f..a716a44d78b0 100644
> > --- a/drivers/net/wireless/realtek/rtw88/phy.c
> > +++ b/drivers/net/wireless/realtek/rtw88/phy.c
> > @@ -410,12 +410,12 @@ void rtw_phy_dynamic_mechanism(struct rtw_dev
> > *rtwdev)
> >
> > static u8 rtw_phy_power_2_db(s8 power)
> > {
> > - if (power <= -100 || power >= 20)
> > + if (power <= -96 || power >= 20)
> > return 0;
> > else if (power >= 0)
> > - return 100;
> > + return 96;
> > else
> > - return 100 + power;
> > + return 96 + power;
> > }
> >
> > static u64 rtw_phy_db_2_linear(u8 power_db)
> > --
>
> I think I should check with the radio team, that if the power from the
> rx descriptor generated by hardware can possibly get >= 20
>
> And also check what the actual logic they expected to deal with the power.
> Thanks for reporting it.
Yeah, this could be just teoretical issue as we can not get power
values >= 0 from HW. However I think compiler correctly complains, as
for power_db=100 we get i = ((100 - 1) >> 3) = 12 , what exceed by one
max first index of db_invert_table[][], which should be in range
0 - 11.
Stanislaw
^ permalink raw reply
* [PATCH] rtw88: avoid circular locking between local->iflist_mtx and rtwdev->mutex
From: Stanislaw Gruszka @ 2019-05-03 12:29 UTC (permalink / raw)
To: linux-wireless; +Cc: Yan-Hsuan Chuang, Stanislaw Gruszka
Remove circular lock dependency by using atomic version of interfaces
iterate in watch_dog_work(), hence avoid taking local->iflist_mtx
(rtw_vif_watch_dog_iter() only update some data, it can be called from
atomic context). Fixes below LOCKDEP warning:
[ 1157.219415] ======================================================
[ 1157.225772] [ INFO: possible circular locking dependency detected ]
[ 1157.232150] 3.10.0-1043.el7.sgruszka1.x86_64.debug #1 Not tainted
[ 1157.238346] -------------------------------------------------------
[ 1157.244635] kworker/u4:2/14490 is trying to acquire lock:
[ 1157.250194] (&rtwdev->mutex){+.+.+.}, at: [<ffffffffc098322b>] rtw_ops_config+0x2b/0x90 [rtw88]
[ 1157.259151]
but task is already holding lock:
[ 1157.265085] (&local->iflist_mtx){+.+...}, at: [<ffffffffc0b8ab7a>] ieee80211_mgd_probe_ap.part.28+0xca/0x160 [mac80211]
[ 1157.276169]
which lock already depends on the new lock.
[ 1157.284488]
the existing dependency chain (in reverse order) is:
[ 1157.292101]
-> #2 (&local->iflist_mtx){+.+...}:
[ 1157.296919] [<ffffffffbc741a29>] lock_acquire+0x99/0x1e0
[ 1157.302955] [<ffffffffbce72793>] mutex_lock_nested+0x93/0x410
[ 1157.309416] [<ffffffffc0b6038f>] ieee80211_iterate_interfaces+0x2f/0x60 [mac80211]
[ 1157.317730] [<ffffffffc09811ab>] rtw_watch_dog_work+0xcb/0x130 [rtw88]
[ 1157.325003] [<ffffffffbc6d77bc>] process_one_work+0x22c/0x720
[ 1157.331481] [<ffffffffbc6d7dd6>] worker_thread+0x126/0x3b0
[ 1157.337589] [<ffffffffbc6e107f>] kthread+0xef/0x100
[ 1157.343260] [<ffffffffbce848b7>] ret_from_fork_nospec_end+0x0/0x39
[ 1157.350091]
-> #1 ((&(&rtwdev->watch_dog_work)->work)){+.+...}:
[ 1157.356314] [<ffffffffbc741a29>] lock_acquire+0x99/0x1e0
[ 1157.362427] [<ffffffffbc6d570b>] flush_work+0x5b/0x310
[ 1157.368287] [<ffffffffbc6d740e>] __cancel_work_timer+0xae/0x170
[ 1157.374940] [<ffffffffbc6d7583>] cancel_delayed_work_sync+0x13/0x20
[ 1157.381930] [<ffffffffc0982b49>] rtw_core_stop+0x29/0x50 [rtw88]
[ 1157.388679] [<ffffffffc098bee6>] rtw_enter_ips+0x16/0x20 [rtw88]
[ 1157.395428] [<ffffffffc0983242>] rtw_ops_config+0x42/0x90 [rtw88]
[ 1157.402173] [<ffffffffc0b13343>] ieee80211_hw_config+0xc3/0x680 [mac80211]
[ 1157.409854] [<ffffffffc0b3925b>] ieee80211_do_open+0x69b/0x9c0 [mac80211]
[ 1157.417418] [<ffffffffc0b395e9>] ieee80211_open+0x69/0x70 [mac80211]
[ 1157.424496] [<ffffffffbcd03442>] __dev_open+0xe2/0x160
[ 1157.430356] [<ffffffffbcd03773>] __dev_change_flags+0xa3/0x180
[ 1157.436922] [<ffffffffbcd03879>] dev_change_flags+0x29/0x60
[ 1157.443224] [<ffffffffbcda14c4>] devinet_ioctl+0x794/0x890
[ 1157.449331] [<ffffffffbcda27b5>] inet_ioctl+0x75/0xa0
[ 1157.455087] [<ffffffffbccd54eb>] sock_do_ioctl+0x2b/0x60
[ 1157.461178] [<ffffffffbccd5753>] sock_ioctl+0x233/0x310
[ 1157.467109] [<ffffffffbc8bd820>] do_vfs_ioctl+0x410/0x6c0
[ 1157.473233] [<ffffffffbc8bdb71>] SyS_ioctl+0xa1/0xc0
[ 1157.478914] [<ffffffffbce84a5e>] system_call_fastpath+0x25/0x2a
[ 1157.485569]
-> #0 (&rtwdev->mutex){+.+.+.}:
[ 1157.490022] [<ffffffffbc7409d1>] __lock_acquire+0xec1/0x1630
[ 1157.496305] [<ffffffffbc741a29>] lock_acquire+0x99/0x1e0
[ 1157.502413] [<ffffffffbce72793>] mutex_lock_nested+0x93/0x410
[ 1157.508890] [<ffffffffc098322b>] rtw_ops_config+0x2b/0x90 [rtw88]
[ 1157.515724] [<ffffffffc0b13343>] ieee80211_hw_config+0xc3/0x680 [mac80211]
[ 1157.523370] [<ffffffffc0b8a4ca>] ieee80211_recalc_ps.part.27+0x9a/0x180 [mac80211]
[ 1157.531685] [<ffffffffc0b8abc5>] ieee80211_mgd_probe_ap.part.28+0x115/0x160 [mac80211]
[ 1157.540353] [<ffffffffc0b8b40d>] ieee80211_beacon_connection_loss_work+0x4d/0x80 [mac80211]
[ 1157.549513] [<ffffffffbc6d77bc>] process_one_work+0x22c/0x720
[ 1157.555886] [<ffffffffbc6d7dd6>] worker_thread+0x126/0x3b0
[ 1157.562170] [<ffffffffbc6e107f>] kthread+0xef/0x100
[ 1157.567765] [<ffffffffbce848b7>] ret_from_fork_nospec_end+0x0/0x39
[ 1157.574579]
other info that might help us debug this:
[ 1157.582788] Chain exists of:
&rtwdev->mutex --> (&(&rtwdev->watch_dog_work)->work) --> &local->iflist_mtx
[ 1157.593024] Possible unsafe locking scenario:
[ 1157.599046] CPU0 CPU1
[ 1157.603653] ---- ----
[ 1157.608258] lock(&local->iflist_mtx);
[ 1157.612180] lock((&(&rtwdev->watch_dog_work)->work));
[ 1157.620074] lock(&local->iflist_mtx);
[ 1157.626555] lock(&rtwdev->mutex);
[ 1157.630124]
*** DEADLOCK ***
[ 1157.636148] 4 locks held by kworker/u4:2/14490:
[ 1157.640755] #0: (%s#6){.+.+.+}, at: [<ffffffffbc6d774a>] process_one_work+0x1ba/0x720
[ 1157.648965] #1: ((&ifmgd->beacon_connection_loss_work)){+.+.+.}, at: [<ffffffffbc6d774a>] process_one_work+0x1ba/0x720
[ 1157.659950] #2: (&wdev->mtx){+.+.+.}, at: [<ffffffffc0b8aad5>] ieee80211_mgd_probe_ap.part.28+0x25/0x160 [mac80211]
[ 1157.670901] #3: (&local->iflist_mtx){+.+...}, at: [<ffffffffc0b8ab7a>] ieee80211_mgd_probe_ap.part.28+0xca/0x160 [mac80211]
[ 1157.682466]
Fixes: e3037485c68e ("rtw88: new Realtek 802.11ac driver")
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
drivers/net/wireless/realtek/rtw88/main.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c
index 9893e5e297e3..f63c34a2e356 100644
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
@@ -162,7 +162,8 @@ static void rtw_watch_dog_work(struct work_struct *work)
rtwdev->stats.tx_cnt = 0;
rtwdev->stats.rx_cnt = 0;
- rtw_iterate_vifs(rtwdev, rtw_vif_watch_dog_iter, &data);
+ /* use atomic version to avoid taking local->iflist_mtx mutex */
+ rtw_iterate_vifs_atomic(rtwdev, rtw_vif_watch_dog_iter, &data);
/* fw supports only one station associated to enter lps, if there are
* more than two stations associated to the AP, then we can not enter
--
1.9.3
^ permalink raw reply related
* [PATCH] mt76: Fix a signedness bug in mt7615_add_interface()
From: Dan Carpenter @ 2019-05-03 12:54 UTC (permalink / raw)
To: Felix Fietkau, Ryder Lee
Cc: Lorenzo Bianconi, Roy Luo, Kalle Valo, Matthias Brugger,
linux-wireless, linux-mediatek, kernel-janitors
The problem is that "mvif->omac_idx" is a u8 so it can't be negative
and the error handling won't work. The get_omac_idx() function returns
-1 on error.
Fixes: 04b8e65922f6 ("mt76: add mac80211 driver for MT7615 PCIe-based chipsets")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
drivers/net/wireless/mediatek/mt76/mt7615/main.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/main.c b/drivers/net/wireless/mediatek/mt76/mt7615/main.c
index 80e6b211f60b..8d7a47d1b205 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7615/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7615/main.c
@@ -77,11 +77,12 @@ static int mt7615_add_interface(struct ieee80211_hw *hw,
goto out;
}
- mvif->omac_idx = get_omac_idx(vif->type, dev->omac_mask);
- if (mvif->omac_idx < 0) {
+ idx = get_omac_idx(vif->type, dev->omac_mask);
+ if (idx < 0) {
ret = -ENOSPC;
goto out;
}
+ mvif->omac_idx = idx;
/* TODO: DBDC support. Use band 0 and wmm 0 for now */
mvif->band_idx = 0;
--
2.18.0
^ permalink raw reply related
* [PATCH] mt76: mt7615: Use after free in mt7615_mcu_set_bcn()
From: Dan Carpenter @ 2019-05-03 13:09 UTC (permalink / raw)
To: Felix Fietkau, Ryder Lee
Cc: Lorenzo Bianconi, Roy Luo, Kalle Valo, Matthias Brugger,
linux-wireless, linux-mediatek, kernel-janitors
We dereference "skb" when we assign:
req.pkt_len = cpu_to_le16(MT_TXD_SIZE + skb->len);
^^^^^^^^
So this patch just moves the dev_kfree_skb() down a bit to avoid the
use after free.
Fixes: 04b8e65922f6 ("mt76: add mac80211 driver for MT7615 PCIe-based chipsets")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
index ea67c6022fe6..dc1301effa24 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
@@ -1270,7 +1270,6 @@ int mt7615_mcu_set_bcn(struct mt7615_dev *dev, struct ieee80211_vif *vif,
mt7615_mac_write_txwi(dev, (__le32 *)(req.pkt), skb, wcid, NULL,
0, NULL);
memcpy(req.pkt + MT_TXD_SIZE, skb->data, skb->len);
- dev_kfree_skb(skb);
req.omac_idx = mvif->omac_idx;
req.enable = en;
@@ -1281,6 +1280,7 @@ int mt7615_mcu_set_bcn(struct mt7615_dev *dev, struct ieee80211_vif *vif,
req.pkt_len = cpu_to_le16(MT_TXD_SIZE + skb->len);
req.tim_ie_pos = cpu_to_le16(MT_TXD_SIZE + tim_off);
+ dev_kfree_skb(skb);
skb = mt7615_mcu_msg_alloc(&req, sizeof(req));
return mt7615_mcu_msg_send(dev, skb, MCU_EXT_CMD_BCN_OFFLOAD,
--
2.18.0
^ permalink raw reply related
* [PATCH v4 02/10] dt-bindings: doc: reflect new NVMEM of_get_mac_address behaviour
From: Petr Štetiar @ 2019-05-03 14:27 UTC (permalink / raw)
To: netdev, devicetree, David S. Miller, Rob Herring, Mark Rutland,
Andrew Lunn, Vivien Didelot, Florian Fainelli, Yisen Zhuang,
Salil Mehta, Woojung Huh, Microchip Linux Driver Support,
Kunihiko Hayashi, Masahiro Yamada, Jassi Brar, Kalle Valo,
Matthias Brugger
Cc: Heiner Kallweit, Frank Rowand, Srinivas Kandagatla, Maxime Ripard,
Petr Štetiar, linux-kernel, linux-arm-kernel, linux-wireless,
linux-mediatek
In-Reply-To: <1556893635-18549-1-git-send-email-ynezz@true.cz>
As of_get_mac_address now supports NVMEM under the hood, we need to update
the bindings documentation with the new nvmem-cell* properties, which would
mean copy&pasting a lot of redundant information to every binding
documentation currently referencing some of the MAC address properties.
So I've just removed all the references to the optional MAC address
properties and replaced them with the small note referencing
net/ethernet.txt file.
Signed-off-by: Petr Štetiar <ynezz@true.cz>
---
Changes since v2:
* replaced only MAC address related optional properties with a text
referencing ethernet.txt
Documentation/devicetree/bindings/net/altera_tse.txt | 5 ++---
Documentation/devicetree/bindings/net/amd-xgbe.txt | 5 +++--
Documentation/devicetree/bindings/net/brcm,amac.txt | 4 ++--
Documentation/devicetree/bindings/net/cpsw.txt | 4 +++-
Documentation/devicetree/bindings/net/davinci_emac.txt | 5 +++--
Documentation/devicetree/bindings/net/dsa/dsa.txt | 5 ++---
Documentation/devicetree/bindings/net/ethernet.txt | 6 ++++--
Documentation/devicetree/bindings/net/hisilicon-femac.txt | 4 +++-
.../devicetree/bindings/net/hisilicon-hix5hd2-gmac.txt | 4 +++-
Documentation/devicetree/bindings/net/keystone-netcp.txt | 10 +++++-----
Documentation/devicetree/bindings/net/macb.txt | 5 ++---
Documentation/devicetree/bindings/net/marvell-pxa168.txt | 4 +++-
Documentation/devicetree/bindings/net/microchip,enc28j60.txt | 3 ++-
Documentation/devicetree/bindings/net/microchip,lan78xx.txt | 5 ++---
Documentation/devicetree/bindings/net/qca,qca7000.txt | 4 +++-
Documentation/devicetree/bindings/net/samsung-sxgbe.txt | 4 +++-
.../devicetree/bindings/net/snps,dwc-qos-ethernet.txt | 5 +++--
.../devicetree/bindings/net/socionext,uniphier-ave4.txt | 4 ++--
Documentation/devicetree/bindings/net/socionext-netsec.txt | 5 +++--
.../devicetree/bindings/net/wireless/mediatek,mt76.txt | 5 +++--
Documentation/devicetree/bindings/net/wireless/qca,ath9k.txt | 4 ++--
21 files changed, 58 insertions(+), 42 deletions(-)
diff --git a/Documentation/devicetree/bindings/net/altera_tse.txt b/Documentation/devicetree/bindings/net/altera_tse.txt
index 0e21df9..0b7d4d3 100644
--- a/Documentation/devicetree/bindings/net/altera_tse.txt
+++ b/Documentation/devicetree/bindings/net/altera_tse.txt
@@ -46,9 +46,8 @@ Required properties:
- reg: phy id used to communicate to phy.
- device_type: Must be "ethernet-phy".
-Optional properties:
-- local-mac-address: See ethernet.txt in the same directory.
-- max-frame-size: See ethernet.txt in the same directory.
+The MAC address will be determined using the optional properties defined in
+ethernet.txt.
Example:
diff --git a/Documentation/devicetree/bindings/net/amd-xgbe.txt b/Documentation/devicetree/bindings/net/amd-xgbe.txt
index 93dcb79..9c27dfc 100644
--- a/Documentation/devicetree/bindings/net/amd-xgbe.txt
+++ b/Documentation/devicetree/bindings/net/amd-xgbe.txt
@@ -24,8 +24,6 @@ Required properties:
- phy-mode: See ethernet.txt file in the same directory
Optional properties:
-- mac-address: mac address to be assigned to the device. Can be overridden
- by UEFI.
- dma-coherent: Present if dma operations are coherent
- amd,per-channel-interrupt: Indicates that Rx and Tx complete will generate
a unique interrupt for each DMA channel - this requires an additional
@@ -34,6 +32,9 @@ Optional properties:
0 - 1GbE and 10GbE (default)
1 - 2.5GbE and 10GbE
+The MAC address will be determined using the optional properties defined in
+ethernet.txt.
+
The following optional properties are represented by an array with each
value corresponding to a particular speed. The first array value represents
the setting for the 1GbE speed, the second value for the 2.5GbE speed and
diff --git a/Documentation/devicetree/bindings/net/brcm,amac.txt b/Documentation/devicetree/bindings/net/brcm,amac.txt
index 0bfad65..0120ebe 100644
--- a/Documentation/devicetree/bindings/net/brcm,amac.txt
+++ b/Documentation/devicetree/bindings/net/brcm,amac.txt
@@ -16,8 +16,8 @@ Required properties:
registers (required for Northstar2)
- interrupts: Interrupt number
-Optional properties:
-- mac-address: See ethernet.txt file in the same directory
+The MAC address will be determined using the optional properties
+defined in ethernet.txt.
Examples:
diff --git a/Documentation/devicetree/bindings/net/cpsw.txt b/Documentation/devicetree/bindings/net/cpsw.txt
index 3264e19..7c7ac5e 100644
--- a/Documentation/devicetree/bindings/net/cpsw.txt
+++ b/Documentation/devicetree/bindings/net/cpsw.txt
@@ -49,10 +49,12 @@ Required properties:
Optional properties:
- dual_emac_res_vlan : Specifies VID to be used to segregate the ports
-- mac-address : See ethernet.txt file in the same directory
- phy_id : Specifies slave phy id (deprecated, use phy-handle)
- phy-handle : See ethernet.txt file in the same directory
+The MAC address will be determined using the optional properties
+defined in ethernet.txt.
+
Slave sub-nodes:
- fixed-link : See fixed-link.txt file in the same directory
diff --git a/Documentation/devicetree/bindings/net/davinci_emac.txt b/Documentation/devicetree/bindings/net/davinci_emac.txt
index ca83dcc..5e3579e 100644
--- a/Documentation/devicetree/bindings/net/davinci_emac.txt
+++ b/Documentation/devicetree/bindings/net/davinci_emac.txt
@@ -20,11 +20,12 @@ Required properties:
Optional properties:
- phy-handle: See ethernet.txt file in the same directory.
If absent, davinci_emac driver defaults to 100/FULL.
-- nvmem-cells: phandle, reference to an nvmem node for the MAC address
-- nvmem-cell-names: string, should be "mac-address" if nvmem is to be used
- ti,davinci-rmii-en: 1 byte, 1 means use RMII
- ti,davinci-no-bd-ram: boolean, does EMAC have BD RAM?
+The MAC address will be determined using the optional properties
+defined in ethernet.txt.
+
Example (enbw_cmc board):
eth0: emac@1e20000 {
compatible = "ti,davinci-dm6467-emac";
diff --git a/Documentation/devicetree/bindings/net/dsa/dsa.txt b/Documentation/devicetree/bindings/net/dsa/dsa.txt
index d66a529..a237567 100644
--- a/Documentation/devicetree/bindings/net/dsa/dsa.txt
+++ b/Documentation/devicetree/bindings/net/dsa/dsa.txt
@@ -71,9 +71,8 @@ properties, described in binding documents:
Documentation/devicetree/bindings/net/fixed-link.txt
for details.
-- local-mac-address : See
- Documentation/devicetree/bindings/net/ethernet.txt
- for details.
+The MAC address will be determined using the optional properties
+defined in ethernet.txt.
Example
diff --git a/Documentation/devicetree/bindings/net/ethernet.txt b/Documentation/devicetree/bindings/net/ethernet.txt
index a686215..6992444 100644
--- a/Documentation/devicetree/bindings/net/ethernet.txt
+++ b/Documentation/devicetree/bindings/net/ethernet.txt
@@ -4,12 +4,14 @@ NOTE: All 'phy*' properties documented below are Ethernet specific. For the
generic PHY 'phys' property, see
Documentation/devicetree/bindings/phy/phy-bindings.txt.
-- local-mac-address: array of 6 bytes, specifies the MAC address that was
- assigned to the network device;
- mac-address: array of 6 bytes, specifies the MAC address that was last used by
the boot program; should be used in cases where the MAC address assigned to
the device by the boot program is different from the "local-mac-address"
property;
+- local-mac-address: array of 6 bytes, specifies the MAC address that was
+ assigned to the network device;
+- nvmem-cells: phandle, reference to an nvmem node for the MAC address
+- nvmem-cell-names: string, should be "mac-address" if nvmem is to be used
- max-speed: number, specifies maximum speed in Mbit/s supported by the device;
- max-frame-size: number, maximum transfer unit (IEEE defined MTU), rather than
the maximum frame size (there's contradiction in the Devicetree
diff --git a/Documentation/devicetree/bindings/net/hisilicon-femac.txt b/Documentation/devicetree/bindings/net/hisilicon-femac.txt
index d11af5e..5f96976 100644
--- a/Documentation/devicetree/bindings/net/hisilicon-femac.txt
+++ b/Documentation/devicetree/bindings/net/hisilicon-femac.txt
@@ -14,7 +14,6 @@ Required properties:
the PHY reset signal(optional).
- reset-names: should contain the reset signal name "mac"(required)
and "phy"(optional).
-- mac-address: see ethernet.txt [1].
- phy-mode: see ethernet.txt [1].
- phy-handle: see ethernet.txt [1].
- hisilicon,phy-reset-delays-us: triplet of delays if PHY reset signal given.
@@ -22,6 +21,9 @@ Required properties:
The 2nd cell is reset pulse in micro seconds.
The 3rd cell is reset post-delay in micro seconds.
+The MAC address will be determined using the optional properties
+defined in ethernet.txt[1].
+
[1] Documentation/devicetree/bindings/net/ethernet.txt
Example:
diff --git a/Documentation/devicetree/bindings/net/hisilicon-hix5hd2-gmac.txt b/Documentation/devicetree/bindings/net/hisilicon-hix5hd2-gmac.txt
index eea73ad..cddf46b 100644
--- a/Documentation/devicetree/bindings/net/hisilicon-hix5hd2-gmac.txt
+++ b/Documentation/devicetree/bindings/net/hisilicon-hix5hd2-gmac.txt
@@ -18,7 +18,6 @@ Required properties:
- #size-cells: must be <0>.
- phy-mode: see ethernet.txt [1].
- phy-handle: see ethernet.txt [1].
-- mac-address: see ethernet.txt [1].
- clocks: clock phandle and specifier pair.
- clock-names: contain the clock name "mac_core"(required) and "mac_ifc"(optional).
- resets: should contain the phandle to the MAC core reset signal(optional),
@@ -31,6 +30,9 @@ Required properties:
The 2nd cell is reset pulse in micro seconds.
The 3rd cell is reset post-delay in micro seconds.
+The MAC address will be determined using the properties defined in
+ethernet.txt[1].
+
- PHY subnode: inherits from phy binding [2]
[1] Documentation/devicetree/bindings/net/ethernet.txt
diff --git a/Documentation/devicetree/bindings/net/keystone-netcp.txt b/Documentation/devicetree/bindings/net/keystone-netcp.txt
index 04ba1dc..3a65aab 100644
--- a/Documentation/devicetree/bindings/net/keystone-netcp.txt
+++ b/Documentation/devicetree/bindings/net/keystone-netcp.txt
@@ -135,14 +135,14 @@ Optional properties:
are swapped. The netcp driver will swap the two DWORDs
back to the proper order when this property is set to 2
when it obtains the mac address from efuse.
-- local-mac-address: the driver is designed to use the of_get_mac_address api
- only if efuse-mac is 0. When efuse-mac is 0, the MAC
- address is obtained from local-mac-address. If this
- attribute is not present, then the driver will use a
- random MAC address.
- "netcp-device label": phandle to the device specification for each of NetCP
sub-module attached to this interface.
+The MAC address will be determined using the optional properties defined in
+ethernet.txt, as provided by the of_get_mac_address API and only if efuse-mac
+is set to 0. If any of the optional MAC address properties are not present,
+then the driver will use random MAC address.
+
Example binding:
netcp: netcp@2000000 {
diff --git a/Documentation/devicetree/bindings/net/macb.txt b/Documentation/devicetree/bindings/net/macb.txt
index 8b80515..9c5e944 100644
--- a/Documentation/devicetree/bindings/net/macb.txt
+++ b/Documentation/devicetree/bindings/net/macb.txt
@@ -26,9 +26,8 @@ Required properties:
Optional elements: 'tsu_clk'
- clocks: Phandles to input clocks.
-Optional properties:
-- nvmem-cells: phandle, reference to an nvmem node for the MAC address
-- nvmem-cell-names: string, should be "mac-address" if nvmem is to be used
+The MAC address will be determined using the optional properties
+defined in ethernet.txt.
Optional properties for PHY child node:
- reset-gpios : Should specify the gpio for phy reset
diff --git a/Documentation/devicetree/bindings/net/marvell-pxa168.txt b/Documentation/devicetree/bindings/net/marvell-pxa168.txt
index 845a148..5574af3 100644
--- a/Documentation/devicetree/bindings/net/marvell-pxa168.txt
+++ b/Documentation/devicetree/bindings/net/marvell-pxa168.txt
@@ -11,7 +11,9 @@ Optional properties:
- #address-cells: must be 1 when using sub-nodes.
- #size-cells: must be 0 when using sub-nodes.
- phy-handle: see ethernet.txt file in the same directory.
-- local-mac-address: see ethernet.txt file in the same directory.
+
+The MAC address will be determined using the optional properties
+defined in ethernet.txt.
Sub-nodes:
Each PHY can be represented as a sub-node. This is not mandatory.
diff --git a/Documentation/devicetree/bindings/net/microchip,enc28j60.txt b/Documentation/devicetree/bindings/net/microchip,enc28j60.txt
index 24626e0..a827592 100644
--- a/Documentation/devicetree/bindings/net/microchip,enc28j60.txt
+++ b/Documentation/devicetree/bindings/net/microchip,enc28j60.txt
@@ -21,8 +21,9 @@ Optional properties:
- spi-max-frequency: Maximum frequency of the SPI bus when accessing the ENC28J60.
According to the ENC28J80 datasheet, the chip allows a maximum of 20 MHz, however,
board designs may need to limit this value.
-- local-mac-address: See ethernet.txt in the same directory.
+The MAC address will be determined using the optional properties
+defined in ethernet.txt.
Example (for NXP i.MX28 with pin control stuff for GPIO irq):
diff --git a/Documentation/devicetree/bindings/net/microchip,lan78xx.txt b/Documentation/devicetree/bindings/net/microchip,lan78xx.txt
index 76786a0..11a6795 100644
--- a/Documentation/devicetree/bindings/net/microchip,lan78xx.txt
+++ b/Documentation/devicetree/bindings/net/microchip,lan78xx.txt
@@ -7,9 +7,8 @@ The Device Tree properties, if present, override the OTP and EEPROM.
Required properties:
- compatible: Should be one of "usb424,7800", "usb424,7801" or "usb424,7850".
-Optional properties:
-- local-mac-address: see ethernet.txt
-- mac-address: see ethernet.txt
+The MAC address will be determined using the optional properties
+defined in ethernet.txt.
Optional properties of the embedded PHY:
- microchip,led-modes: a 0..4 element vector, with each element configuring
diff --git a/Documentation/devicetree/bindings/net/qca,qca7000.txt b/Documentation/devicetree/bindings/net/qca,qca7000.txt
index e4a8a51..21c36e5 100644
--- a/Documentation/devicetree/bindings/net/qca,qca7000.txt
+++ b/Documentation/devicetree/bindings/net/qca,qca7000.txt
@@ -23,7 +23,6 @@ Optional properties:
Numbers smaller than 1000000 or greater than 16000000
are invalid. Missing the property will set the SPI
frequency to 8000000 Hertz.
-- local-mac-address : see ./ethernet.txt
- qca,legacy-mode : Set the SPI data transfer of the QCA7000 to legacy mode.
In this mode the SPI master must toggle the chip select
between each data word. In burst mode these gaps aren't
@@ -31,6 +30,9 @@ Optional properties:
the QCA7000 is setup via GPIO pin strapping. If the
property is missing the driver defaults to burst mode.
+The MAC address will be determined using the optional properties
+defined in ethernet.txt.
+
SPI Example:
/* Freescale i.MX28 SPI master*/
diff --git a/Documentation/devicetree/bindings/net/samsung-sxgbe.txt b/Documentation/devicetree/bindings/net/samsung-sxgbe.txt
index 46e5911..2cff6d8 100644
--- a/Documentation/devicetree/bindings/net/samsung-sxgbe.txt
+++ b/Documentation/devicetree/bindings/net/samsung-sxgbe.txt
@@ -21,10 +21,12 @@ Required properties:
range.
Optional properties:
-- mac-address: 6 bytes, mac address
- max-frame-size: Maximum Transfer Unit (IEEE defined MTU), rather
than the maximum frame size.
+The MAC address will be determined using the optional properties
+defined in ethernet.txt.
+
Example:
aliases {
diff --git a/Documentation/devicetree/bindings/net/snps,dwc-qos-ethernet.txt b/Documentation/devicetree/bindings/net/snps,dwc-qos-ethernet.txt
index 36f1aef..ad3c6e1 100644
--- a/Documentation/devicetree/bindings/net/snps,dwc-qos-ethernet.txt
+++ b/Documentation/devicetree/bindings/net/snps,dwc-qos-ethernet.txt
@@ -103,8 +103,6 @@ Required properties:
Optional properties:
- dma-coherent: Present if dma operations are coherent
-- mac-address: See ethernet.txt in the same directory
-- local-mac-address: See ethernet.txt in the same directory
- phy-reset-gpios: Phandle and specifier for any GPIO used to reset the PHY.
See ../gpio/gpio.txt.
- snps,en-lpi: If present it enables use of the AXI low-power interface
@@ -133,6 +131,9 @@ Optional properties:
- device_type: Must be "ethernet-phy".
- fixed-mode device tree subnode: see fixed-link.txt in the same directory
+The MAC address will be determined using the optional properties
+defined in ethernet.txt.
+
Examples:
ethernet2@40010000 {
clock-names = "phy_ref_clk", "apb_pclk";
diff --git a/Documentation/devicetree/bindings/net/socionext,uniphier-ave4.txt b/Documentation/devicetree/bindings/net/socionext,uniphier-ave4.txt
index fc8f017..4e85fc4 100644
--- a/Documentation/devicetree/bindings/net/socionext,uniphier-ave4.txt
+++ b/Documentation/devicetree/bindings/net/socionext,uniphier-ave4.txt
@@ -31,8 +31,8 @@ Required properties:
- socionext,syscon-phy-mode: A phandle to syscon with one argument
that configures phy mode. The argument is the ID of MAC instance.
-Optional properties:
- - local-mac-address: See ethernet.txt in the same directory.
+The MAC address will be determined using the optional properties
+defined in ethernet.txt.
Required subnode:
- mdio: A container for child nodes representing phy nodes.
diff --git a/Documentation/devicetree/bindings/net/socionext-netsec.txt b/Documentation/devicetree/bindings/net/socionext-netsec.txt
index 0cff94f..9d6c9feb 100644
--- a/Documentation/devicetree/bindings/net/socionext-netsec.txt
+++ b/Documentation/devicetree/bindings/net/socionext-netsec.txt
@@ -26,11 +26,12 @@ Required properties:
Optional properties: (See ethernet.txt file in the same directory)
- dma-coherent: Boolean property, must only be present if memory
accesses performed by the device are cache coherent.
-- local-mac-address: See ethernet.txt in the same directory.
-- mac-address: See ethernet.txt in the same directory.
- max-speed: See ethernet.txt in the same directory.
- max-frame-size: See ethernet.txt in the same directory.
+The MAC address will be determined using the optional properties
+defined in ethernet.txt.
+
Example:
eth0: ethernet@522d0000 {
compatible = "socionext,synquacer-netsec";
diff --git a/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt b/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt
index 7b9a776..7466550 100644
--- a/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt
+++ b/Documentation/devicetree/bindings/net/wireless/mediatek,mt76.txt
@@ -13,11 +13,12 @@ properties:
Optional properties:
-- mac-address: See ethernet.txt in the parent directory
-- local-mac-address: See ethernet.txt in the parent directory
- ieee80211-freq-limit: See ieee80211.txt
- mediatek,mtd-eeprom: Specify a MTD partition + offset containing EEPROM data
+The driver is using of_get_mac_address API, so the MAC address can be as well
+be set with corresponding optional properties defined in net/ethernet.txt.
+
Optional nodes:
- led: Properties for a connected LED
Optional properties:
diff --git a/Documentation/devicetree/bindings/net/wireless/qca,ath9k.txt b/Documentation/devicetree/bindings/net/wireless/qca,ath9k.txt
index b7396c8..aaaeeb5 100644
--- a/Documentation/devicetree/bindings/net/wireless/qca,ath9k.txt
+++ b/Documentation/devicetree/bindings/net/wireless/qca,ath9k.txt
@@ -34,9 +34,9 @@ Optional properties:
ath9k wireless chip (in this case the calibration /
EEPROM data will be loaded from userspace using the
kernel firmware loader).
-- mac-address: See ethernet.txt in the parent directory
-- local-mac-address: See ethernet.txt in the parent directory
+The MAC address will be determined using the optional properties defined in
+net/ethernet.txt.
In this example, the node is defined as child node of the PCI controller:
&pci0 {
--
1.9.1
^ permalink raw reply related
* [PATCH v4 07/10] net: wireless: support of_get_mac_address new ERR_PTR error
From: Petr Štetiar @ 2019-05-03 14:27 UTC (permalink / raw)
To: netdev, devicetree, QCA ath9k Development, Kalle Valo,
David S. Miller, Felix Fietkau, Lorenzo Bianconi,
Matthias Brugger, Stanislaw Gruszka, Helmut Schaa
Cc: Andrew Lunn, Florian Fainelli, Heiner Kallweit, Frank Rowand,
Srinivas Kandagatla, Maxime Ripard, Petr Štetiar,
linux-wireless, linux-kernel, linux-arm-kernel, linux-mediatek
In-Reply-To: <1556893635-18549-1-git-send-email-ynezz@true.cz>
There was NVMEM support added to of_get_mac_address, so it could now return
ERR_PTR encoded error values, so we need to adjust all current users of
of_get_mac_address to this new fact.
Signed-off-by: Petr Štetiar <ynezz@true.cz>
---
Changes since v3:
* IS_ERR_OR_NULL -> IS_ERR
drivers/net/wireless/ath/ath9k/init.c | 2 +-
drivers/net/wireless/mediatek/mt76/eeprom.c | 2 +-
drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
index 98141b6..a04d861 100644
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -642,7 +642,7 @@ static int ath9k_of_init(struct ath_softc *sc)
}
mac = of_get_mac_address(np);
- if (mac)
+ if (!IS_ERR(mac))
ether_addr_copy(common->macaddr, mac);
return 0;
diff --git a/drivers/net/wireless/mediatek/mt76/eeprom.c b/drivers/net/wireless/mediatek/mt76/eeprom.c
index a1529920d..0496493 100644
--- a/drivers/net/wireless/mediatek/mt76/eeprom.c
+++ b/drivers/net/wireless/mediatek/mt76/eeprom.c
@@ -94,7 +94,7 @@
return;
mac = of_get_mac_address(np);
- if (mac)
+ if (!IS_ERR(mac))
memcpy(dev->macaddr, mac, ETH_ALEN);
#endif
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
index 357c094..19a794a 100644
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
@@ -1007,7 +1007,7 @@ void rt2x00lib_set_mac_address(struct rt2x00_dev *rt2x00dev, u8 *eeprom_mac_addr
const char *mac_addr;
mac_addr = of_get_mac_address(rt2x00dev->dev->of_node);
- if (mac_addr)
+ if (!IS_ERR(mac_addr))
ether_addr_copy(eeprom_mac_addr, mac_addr);
if (!is_valid_ether_addr(eeprom_mac_addr)) {
--
1.9.1
^ permalink raw reply related
* pull request: iwlwifi firmware updates 2019-05-03
From: Luca Coelho @ 2019-05-03 16:40 UTC (permalink / raw)
To: linux-firmware@kernel.org
Cc: linux-wireless@vger.kernel.org, linuxwifi, kyle@infradead.org,
jwboyer@kernel.org, ben@decadent.org.uk
In-Reply-To: <1546157106.3213.3.camel@intel.com>
[-- Attachment #1: Type: text/plain, Size: 1513 bytes --]
Hi,
This contains some new versions of firmwares for the 9000 series of
devices and the firmware for a new device, namely 22260.
Please pull or let me know if there are any issues.
--
Cheers,
Luca.
The following changes since commit 92e17d0dd2437140fab044ae62baf69b35d7d1fa:
amdgpu: update vega20 to the latest 19.10 firmware (2019-05-02 06:24:19 -0400)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/linux-firmware.git tags/iwlwifi-fw-2019-05-03
for you to fetch changes up to 95a93535b723085ff74845eb8733d01c8ff5c052:
iwlwifi: update -46 firmwares for 22260 and 9000 series (2019-05-03 19:33:53 +0300)
----------------------------------------------------------------
updates for -46.ucode for 9260, 9000 and 22260
----------------------------------------------------------------
Luca Coelho (3):
iwlwifi: add -46.ucode firmwares for 9000 series
iwlwifi: add firmware for 22260 and update 9000 series -46 firmwares
iwlwifi: update -46 firmwares for 22260 and 9000 series
WHENCE | 9 +++++++++
iwlwifi-9000-pu-b0-jf-b0-46.ucode | Bin 0 -> 1448644 bytes
iwlwifi-9260-th-b0-jf-b0-46.ucode | Bin 0 -> 1456088 bytes
iwlwifi-cc-a0-46.ucode | Bin 0 -> 1044072 bytes
4 files changed, 9 insertions(+)
create mode 100644 iwlwifi-9000-pu-b0-jf-b0-46.ucode
create mode 100644 iwlwifi-9260-th-b0-jf-b0-46.ucode
create mode 100644 iwlwifi-cc-a0-46.ucode
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply
* Re: [PATCH] ath10k: remove mmc_hw_reset while hif power down
From: Grant Grundler @ 2019-05-03 18:01 UTC (permalink / raw)
To: Wen Gong; +Cc: ath10k, linux-wireless
In-Reply-To: <1556417825-13713-1-git-send-email-wgong@codeaurora.org>
[repeating comments I made in the gerrit review for Chrome OS :
https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/1585667
]
On Sat, Apr 27, 2019 at 7:17 PM Wen Gong <wgong@codeaurora.org> wrote:
>
> For sdio 3.0 chip, the clock will drop from 200M Hz to 50M Hz after load
> ath10k driver, it is because mmc_hw_reset will reset the sdio's power,
> then mmc will consider it as sdio 2.0 and drop the clock.
Wen,
5468e784c0600551ca03263f5255a375c05f88e7 commit message gives reasons
for adding the mmc_hw_reset() call. The commit message for removing
gives different reason for removal. Both are good but second one is
incomplete.
The commit message for removal should ALSO explain why adding this
call wasn't necessary in the first place OR move the call to a
different code path.
> Remove mmc_hw_reset will avoid the drop of clock.
This commit message makes it clear the original patch introduced a new
problem. But the original patch fixed a different problem and that
this proposed change seems likely to re-introduce and the commit
message should explain why that isn't true (or how the original was
fixed differently)
cheers,
grant
>
> Tested with QCA6174 SDIO with firmware
> WLAN.RMH.4.4.1-00007-QCARMSWP-1.
>
> Signed-off-by: Wen Gong <wgong@codeaurora.org>
> ---
> drivers/net/wireless/ath/ath10k/sdio.c | 4 ----
> 1 file changed, 4 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath10k/sdio.c b/drivers/net/wireless/ath/ath10k/sdio.c
> index fae56c6..f1d2af8 100644
> --- a/drivers/net/wireless/ath/ath10k/sdio.c
> +++ b/drivers/net/wireless/ath/ath10k/sdio.c
> @@ -1433,10 +1433,6 @@ static void ath10k_sdio_hif_power_down(struct ath10k *ar)
> return;
> }
>
> - ret = mmc_hw_reset(ar_sdio->func->card->host);
> - if (ret)
> - ath10k_warn(ar, "unable to reset sdio: %d\n", ret);
> -
> sdio_release_host(ar_sdio->func);
>
> ar_sdio->is_disabled = true;
> --
> 1.9.1
>
^ permalink raw reply
* [bug report] rtw88: new Realtek 802.11ac driver
From: Dan Carpenter @ 2019-05-03 20:12 UTC (permalink / raw)
To: yhchuang; +Cc: linux-wireless
Hello Yan-Hsuan Chuang,
The patch e3037485c68e: "rtw88: new Realtek 802.11ac driver" from Apr
26, 2019, leads to the following static checker warning:
drivers/net/wireless/realtek/rtw88/efuse.c:78 rtw_dump_logical_efuse_map()
error: buffer overflow 'log_map' 768 <= 768
drivers/net/wireless/realtek/rtw88/efuse.c
38 static int rtw_dump_logical_efuse_map(struct rtw_dev *rtwdev, u8 *phy_map,
39 u8 *log_map)
40 {
41 u32 physical_size = rtwdev->efuse.physical_size;
42 u32 protect_size = rtwdev->efuse.protect_size;
43 u32 logical_size = rtwdev->efuse.logical_size;
44 u32 phy_idx, log_idx;
45 u8 hdr1, hdr2;
46 u8 blk_idx;
47 u8 word_en;
48 int i;
49
50 for (phy_idx = 0; phy_idx < physical_size - protect_size;) {
51 hdr1 = phy_map[phy_idx];
52 hdr2 = phy_map[phy_idx + 1];
53 if (invalid_efuse_header(hdr1, hdr2))
54 break;
55
56 if ((hdr1 & 0x1f) == 0xf) {
57 /* 2-byte header format */
58 blk_idx = get_efuse_blk_idx_2_byte(hdr1, hdr2);
59 word_en = hdr2 & 0xf;
60 phy_idx += 2;
61 } else {
62 /* 1-byte header format */
63 blk_idx = get_efuse_blk_idx_1_byte(hdr1);
64 word_en = hdr1 & 0xf;
65 phy_idx += 1;
66 }
67
68 for (i = 0; i < 4; i++) {
69 if (invalid_efuse_content(word_en, i))
70 continue;
71
72 log_idx = block_idx_to_logical_idx(blk_idx, i);
73 if (phy_idx + 1 > physical_size - protect_size ||
74 log_idx + 1 > logical_size)
^^^^^^^^^^^^^^^^^^^^^^^^^^
This is a false positive because we know that "log_idx + 1" is an odd
number and logical_size is even so they can't be equal... But I wonder
if it would make it more readable to change the > to >=?
The log_map[] array has logical_size elements. It's allocated in
rtw_parse_efuse_map().
75 return -EINVAL;
76
77 log_map[log_idx] = phy_map[phy_idx];
78 log_map[log_idx + 1] = phy_map[phy_idx + 1];
^^^^^^^^^^^^^^^^^^^
79 phy_idx += 2;
80 }
81 }
82 return 0;
regards,
dan carpenter
^ permalink raw reply
* [PATCH] net: wireless: b43: Avoid possible double calls to b43_one_core_detach()
From: Jia-Ju Bai @ 2019-05-04 9:10 UTC (permalink / raw)
To: kvalo, davem, colin.king, yuehaibing
Cc: linux-wireless, b43-dev, netdev, linux-kernel, Jia-Ju Bai
In b43_request_firmware(), when ieee80211_register_hw() fails,
b43_one_core_detach() is called. In b43_bcma_remove() and
b43_ssb_remove(), b43_one_core_detach() is called again. In this case,
null-pointer dereferences and double-free problems can occur when
the driver is removed.
To fix this bug, the call to b43_one_core_detach() in
b43_request_firmware() is deleted.
This bug is found by a runtime fuzzing tool named FIZZER written by us.
Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
---
drivers/net/wireless/broadcom/b43/main.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/drivers/net/wireless/broadcom/b43/main.c b/drivers/net/wireless/broadcom/b43/main.c
index 74be3c809225..e666a472a0da 100644
--- a/drivers/net/wireless/broadcom/b43/main.c
+++ b/drivers/net/wireless/broadcom/b43/main.c
@@ -2610,18 +2610,13 @@ static void b43_request_firmware(struct work_struct *work)
err = ieee80211_register_hw(wl->hw);
if (err)
- goto err_one_core_detach;
+ goto out;
wl->hw_registered = true;
b43_leds_register(wl->current_dev);
/* Register HW RNG driver */
b43_rng_init(wl);
- goto out;
-
-err_one_core_detach:
- b43_one_core_detach(dev->dev);
-
out:
kfree(ctx);
}
--
2.17.0
^ permalink raw reply related
* [PATCH] net: wireless: iwlwifi: Fix double-free problems in iwl_req_fw_callback()
From: Jia-Ju Bai @ 2019-05-04 9:33 UTC (permalink / raw)
To: johannes.berg, emmanuel.grumbach, luciano.coelho, linuxwifi,
kvalo, davem
Cc: linux-wireless, netdev, linux-kernel, Jia-Ju Bai
In the error handling code of iwl_req_fw_callback(), iwl_dealloc_ucode()
is called to free data. In iwl_drv_stop(), iwl_dealloc_ucode() is called
again, which can cause double-free problems.
To fix this bug, the call to iwl_dealloc_ucode() in
iwl_req_fw_callback() is deleted.
This bug is found by a runtime fuzzing tool named FIZZER written by us.
Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
---
drivers/net/wireless/intel/iwlwifi/iwl-drv.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
index 689a65b11cc3..4fd1737d768b 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
@@ -1579,7 +1579,6 @@ static void iwl_req_fw_callback(const struct firmware *ucode_raw, void *context)
goto free;
out_free_fw:
- iwl_dealloc_ucode(drv);
release_firmware(ucode_raw);
out_unbind:
complete(&drv->request_firmware_complete);
--
2.17.0
^ permalink raw reply related
* Re: [PATCH] mt76: mt7615: Use after free in mt7615_mcu_set_bcn()
From: Lorenzo Bianconi @ 2019-05-04 9:52 UTC (permalink / raw)
To: Dan Carpenter
Cc: Felix Fietkau, Ryder Lee, Lorenzo Bianconi, Roy Luo, Kalle Valo,
Matthias Brugger, linux-wireless, linux-mediatek, kernel-janitors
In-Reply-To: <20190503130909.GI29695@mwanda>
[-- Attachment #1: Type: text/plain, Size: 1564 bytes --]
Acked-by: Lorenzo Bianconi <lorenzo@kernel.org>
> We dereference "skb" when we assign:
>
> req.pkt_len = cpu_to_le16(MT_TXD_SIZE + skb->len);
> ^^^^^^^^
> So this patch just moves the dev_kfree_skb() down a bit to avoid the
> use after free.
>
> Fixes: 04b8e65922f6 ("mt76: add mac80211 driver for MT7615 PCIe-based chipsets")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> ---
> drivers/net/wireless/mediatek/mt76/mt7615/mcu.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
> index ea67c6022fe6..dc1301effa24 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
> @@ -1270,7 +1270,6 @@ int mt7615_mcu_set_bcn(struct mt7615_dev *dev, struct ieee80211_vif *vif,
> mt7615_mac_write_txwi(dev, (__le32 *)(req.pkt), skb, wcid, NULL,
> 0, NULL);
> memcpy(req.pkt + MT_TXD_SIZE, skb->data, skb->len);
> - dev_kfree_skb(skb);
>
> req.omac_idx = mvif->omac_idx;
> req.enable = en;
> @@ -1281,6 +1280,7 @@ int mt7615_mcu_set_bcn(struct mt7615_dev *dev, struct ieee80211_vif *vif,
> req.pkt_len = cpu_to_le16(MT_TXD_SIZE + skb->len);
> req.tim_ie_pos = cpu_to_le16(MT_TXD_SIZE + tim_off);
>
> + dev_kfree_skb(skb);
> skb = mt7615_mcu_msg_alloc(&req, sizeof(req));
>
> return mt7615_mcu_msg_send(dev, skb, MCU_EXT_CMD_BCN_OFFLOAD,
> --
> 2.18.0
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply
* [PATCH] net: wireless: ath9k: Return an error when ath9k_hw_reset() fails
From: Jia-Ju Bai @ 2019-05-04 10:08 UTC (permalink / raw)
To: ath9k-devel, kvalo, davem
Cc: linux-wireless, netdev, linux-kernel, Jia-Ju Bai
ath9k_hw_reset() in ath9k_start() can fail, and in this case,
ath9k_start() should return an error instead of executing the
subsequent code.
Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
---
drivers/net/wireless/ath/ath9k/main.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index f23cb2f3d296..f78e7c46764d 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -681,6 +681,7 @@ static int ath9k_start(struct ieee80211_hw *hw)
"Unable to reset hardware; reset status %d (freq %u MHz)\n",
r, curchan->center_freq);
ah->reset_power_on = false;
+ return r;
}
/* Setup our intr mask. */
--
2.17.0
^ permalink raw reply related
* [PATCH] mt76: mt7615: Make mt7615_irq_handler static
From: YueHaibing @ 2019-05-04 10:22 UTC (permalink / raw)
To: nbd, lorenzo.bianconi83, ryder.lee, royluo, kvalo, matthias.bgg
Cc: linux-kernel, netdev, linux-mediatek, linux-arm-kernel,
linux-wireless, YueHaibing
Fix sparse warning:
drivers/net/wireless/mediatek/mt76/mt7615/pci.c:37:13:
warning: symbol 'mt7615_irq_handler' was not declared. Should it be static?
Signed-off-by: YueHaibing <yuehaibing@huawei.com>
---
drivers/net/wireless/mediatek/mt76/mt7615/pci.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/pci.c b/drivers/net/wireless/mediatek/mt76/mt7615/pci.c
index 11122bd..c181e59 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7615/pci.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7615/pci.c
@@ -34,7 +34,7 @@ void mt7615_rx_poll_complete(struct mt76_dev *mdev, enum mt76_rxq_id q)
mt7615_irq_enable(dev, MT_INT_RX_DONE(q));
}
-irqreturn_t mt7615_irq_handler(int irq, void *dev_instance)
+static irqreturn_t mt7615_irq_handler(int irq, void *dev_instance)
{
struct mt7615_dev *dev = dev_instance;
u32 intr;
--
2.7.4
^ permalink raw reply related
* [PATCH] rtw88: Make some symbols static
From: YueHaibing @ 2019-05-04 10:32 UTC (permalink / raw)
To: yhchuang, kvalo; +Cc: linux-kernel, netdev, linux-wireless, davem, YueHaibing
Fix sparse warnings:
drivers/net/wireless/realtek/rtw88/phy.c:851:4: warning: symbol 'rtw_cck_size' was not declared. Should it be static?
drivers/net/wireless/realtek/rtw88/phy.c:852:4: warning: symbol 'rtw_ofdm_size' was not declared. Should it be static?
drivers/net/wireless/realtek/rtw88/phy.c:853:4: warning: symbol 'rtw_ht_1s_size' was not declared. Should it be static?
drivers/net/wireless/realtek/rtw88/phy.c:854:4: warning: symbol 'rtw_ht_2s_size' was not declared. Should it be static?
drivers/net/wireless/realtek/rtw88/phy.c:855:4: warning: symbol 'rtw_vht_1s_size' was not declared. Should it be static?
drivers/net/wireless/realtek/rtw88/phy.c:856:4: warning: symbol 'rtw_vht_2s_size' was not declared. Should it be static?
drivers/net/wireless/realtek/rtw88/fw.c:11:6: warning: symbol 'rtw_fw_c2h_cmd_handle_ext' was not declared. Should it be static?
drivers/net/wireless/realtek/rtw88/fw.c:50:6: warning: symbol 'rtw_fw_send_h2c_command' was not declared. Should it be static?
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: YueHaibing <yuehaibing@huawei.com>
---
drivers/net/wireless/realtek/rtw88/fw.c | 6 ++++--
drivers/net/wireless/realtek/rtw88/phy.c | 13 +++++++------
2 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/drivers/net/wireless/realtek/rtw88/fw.c b/drivers/net/wireless/realtek/rtw88/fw.c
index cf4265c..62847797 100644
--- a/drivers/net/wireless/realtek/rtw88/fw.c
+++ b/drivers/net/wireless/realtek/rtw88/fw.c
@@ -8,7 +8,8 @@
#include "reg.h"
#include "debug.h"
-void rtw_fw_c2h_cmd_handle_ext(struct rtw_dev *rtwdev, struct sk_buff *skb)
+static void rtw_fw_c2h_cmd_handle_ext(struct rtw_dev *rtwdev,
+ struct sk_buff *skb)
{
struct rtw_c2h_cmd *c2h;
u8 sub_cmd_id;
@@ -47,7 +48,8 @@ void rtw_fw_c2h_cmd_handle(struct rtw_dev *rtwdev, struct sk_buff *skb)
}
}
-void rtw_fw_send_h2c_command(struct rtw_dev *rtwdev, u8 *h2c)
+static void rtw_fw_send_h2c_command(struct rtw_dev *rtwdev,
+ u8 *h2c)
{
u8 box;
u8 box_state;
diff --git a/drivers/net/wireless/realtek/rtw88/phy.c b/drivers/net/wireless/realtek/rtw88/phy.c
index 4381b36..2105fc4 100644
--- a/drivers/net/wireless/realtek/rtw88/phy.c
+++ b/drivers/net/wireless/realtek/rtw88/phy.c
@@ -848,12 +848,13 @@ u8 rtw_vht_2s_rates[] = {
DESC_RATEVHT2SS_MCS6, DESC_RATEVHT2SS_MCS7,
DESC_RATEVHT2SS_MCS8, DESC_RATEVHT2SS_MCS9
};
-u8 rtw_cck_size = ARRAY_SIZE(rtw_cck_rates);
-u8 rtw_ofdm_size = ARRAY_SIZE(rtw_ofdm_rates);
-u8 rtw_ht_1s_size = ARRAY_SIZE(rtw_ht_1s_rates);
-u8 rtw_ht_2s_size = ARRAY_SIZE(rtw_ht_2s_rates);
-u8 rtw_vht_1s_size = ARRAY_SIZE(rtw_vht_1s_rates);
-u8 rtw_vht_2s_size = ARRAY_SIZE(rtw_vht_2s_rates);
+
+static u8 rtw_cck_size = ARRAY_SIZE(rtw_cck_rates);
+static u8 rtw_ofdm_size = ARRAY_SIZE(rtw_ofdm_rates);
+static u8 rtw_ht_1s_size = ARRAY_SIZE(rtw_ht_1s_rates);
+static u8 rtw_ht_2s_size = ARRAY_SIZE(rtw_ht_2s_rates);
+static u8 rtw_vht_1s_size = ARRAY_SIZE(rtw_vht_1s_rates);
+static u8 rtw_vht_2s_size = ARRAY_SIZE(rtw_vht_2s_rates);
u8 *rtw_rate_section[RTW_RATE_SECTION_MAX] = {
rtw_cck_rates, rtw_ofdm_rates,
rtw_ht_1s_rates, rtw_ht_2s_rates,
--
2.7.4
^ permalink raw reply related
* Re: [PATCH] net: wireless: ath9k: Return an error when ath9k_hw_reset() fails
From: Heiner Kallweit @ 2019-05-04 11:02 UTC (permalink / raw)
To: Jia-Ju Bai, ath9k-devel, kvalo, davem
Cc: linux-wireless, netdev, linux-kernel
In-Reply-To: <20190504100815.19876-1-baijiaju1990@gmail.com>
On 04.05.2019 12:08, Jia-Ju Bai wrote:
> ath9k_hw_reset() in ath9k_start() can fail, and in this case,
> ath9k_start() should return an error instead of executing the
> subsequent code.
>
Such mechanical patches w/o understanding the code are always
problematic. Do you have any proof that this error is fatal?
I think it is not, else we wouldn't have this line:
ah->reset_power_on = false;
Also you should consider that a mutex and a spinlock are held.
Maybe changing the error message to a warning would be more
appropriate. But this I would leave to somebody being more
familiar with this driver.
> Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
> ---
> drivers/net/wireless/ath/ath9k/main.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
> index f23cb2f3d296..f78e7c46764d 100644
> --- a/drivers/net/wireless/ath/ath9k/main.c
> +++ b/drivers/net/wireless/ath/ath9k/main.c
> @@ -681,6 +681,7 @@ static int ath9k_start(struct ieee80211_hw *hw)
> "Unable to reset hardware; reset status %d (freq %u MHz)\n",
> r, curchan->center_freq);
> ah->reset_power_on = false;
> + return r;
> }
>
> /* Setup our intr mask. */
>
^ permalink raw reply
* [PATCH 00/17] use standard signature for mt7615 mcu api
From: Lorenzo Bianconi @ 2019-05-04 15:28 UTC (permalink / raw)
To: nbd; +Cc: lorenzo.bianconi, linux-wireless, ryder.lee, royluo
Introduce mt76_mcu_ops data structure in mt7615 mcu code in order
to reuse the code with other bus types and unify the code with mt7603
driver
Changes since RFC:
- rebase ontop of https://patchwork.kernel.org/patch/10928753/
- fix net_type initialization in mt7615_mcu_set_bss_info
Lorenzo Bianconi (17):
mt7615: mcu: simplify __mt7615_mcu_set_wtbl
mt7615: mcu: simplify __mt7615_mcu_set_sta_rec
mt7615: mcu: remove bss_info_convert_vif_type routine
mt7615: mcu: use proper msg size in mt7615_mcu_add_wtbl_bmc
mt7615: mcu: use proper msg size in mt7615_mcu_add_wtbl
mt7615: mcu: unify mt7615_mcu_add_wtbl_bmc and mt7615_mcu_del_wtbl_bmc
mt7615: mcu: remove unused parameter in mt7615_mcu_del_wtbl
mt7615: remove query from mt7615_mcu_msg_send signature
mt7615: remove dest from mt7615_mcu_msg_send signature
mt7615: mcu: remove skb_ret from mt7615_mcu_msg_send
mt7615: mcu: unify __mt7615_mcu_set_dev_info and
mt7615_mcu_set_dev_info
mt7615: mcu: do not use function pointers whenever possible
mt7615: mcu: remove unused structure in mcu.h
mt7615: mcu: use standard signature for mt7615_mcu_msg_send
mt7615: initialize mt76_mcu_ops data structure
mt7615: mcu: init mcu_restart function pointer
mt7615: mcu: run __mt76_mcu_send_msg in mt7615_mcu_send_firmware
.../net/wireless/mediatek/mt76/mt7615/main.c | 17 +-
.../net/wireless/mediatek/mt76/mt7615/mcu.c | 1147 ++++++++---------
.../net/wireless/mediatek/mt76/mt7615/mcu.h | 49 +-
.../wireless/mediatek/mt76/mt7615/mt7615.h | 11 +-
4 files changed, 556 insertions(+), 668 deletions(-)
--
2.20.1
^ permalink raw reply
* [PATCH 01/17] mt7615: mcu: simplify __mt7615_mcu_set_wtbl
From: Lorenzo Bianconi @ 2019-05-04 15:28 UTC (permalink / raw)
To: nbd; +Cc: lorenzo.bianconi, linux-wireless, ryder.lee, royluo
In-Reply-To: <cover.1556981521.git.lorenzo@kernel.org>
Do not loop over cmd payload in __mt7615_mcu_set_wtbl since it is
already done in before running __mt7615_mcu_set_wtbl (e.g.
mt7615_mcu_set_wtbl_key)
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
.../net/wireless/mediatek/mt76/mt7615/mcu.c | 62 ++++++++-----------
1 file changed, 26 insertions(+), 36 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
index dc1301effa24..3de20c8111cf 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
@@ -918,37 +918,24 @@ int mt7615_mcu_set_bss_info(struct mt7615_dev *dev, struct ieee80211_vif *vif,
return __mt7615_mcu_set_bss_info(dev, &bss_info);
}
-static int __mt7615_mcu_set_wtbl(struct mt7615_dev *dev, int wlan_idx,
- int operation, void *buf, int buf_len)
+static int
+__mt7615_mcu_set_wtbl(struct mt7615_dev *dev, int wlan_idx,
+ int operation, int ntlv, void *buf,
+ int buf_len)
{
struct req_hdr {
u8 wlan_idx;
u8 operation;
__le16 tlv_num;
u8 rsv[4];
- } __packed req_hdr = {0};
- struct tlv {
- __le16 tag;
- __le16 len;
- u8 buf[0];
- } __packed;
+ } __packed req_hdr = {
+ .wlan_idx = wlan_idx,
+ .operation = operation,
+ .tlv_num = cpu_to_le16(ntlv),
+ };
struct sk_buff *skb;
- u16 tlv_num = 0;
- int offset = 0;
-
- while (offset < buf_len) {
- struct tlv *tlv = (struct tlv *)((u8 *)buf + offset);
-
- tlv_num++;
- offset += tlv->len;
- }
skb = mt7615_mcu_msg_alloc(NULL, sizeof(req_hdr) + buf_len);
-
- req_hdr.wlan_idx = wlan_idx;
- req_hdr.operation = operation;
- req_hdr.tlv_num = cpu_to_le16(tlv_num);
-
memcpy(skb_put(skb, sizeof(req_hdr)), &req_hdr, sizeof(req_hdr));
if (buf && buf_len)
@@ -1015,8 +1002,8 @@ int mt7615_mcu_set_wtbl_key(struct mt7615_dev *dev, int wcid,
wtbl_sec_key.key_len = sizeof(wtbl_sec_key.key_material);
}
- return __mt7615_mcu_set_wtbl(dev, wcid, WTBL_SET, &wtbl_sec_key,
- buf_len);
+ return __mt7615_mcu_set_wtbl(dev, wcid, WTBL_SET, 1,
+ &wtbl_sec_key, buf_len);
}
int mt7615_mcu_add_wtbl_bmc(struct mt7615_dev *dev, struct ieee80211_vif *vif)
@@ -1047,7 +1034,8 @@ int mt7615_mcu_add_wtbl_bmc(struct mt7615_dev *dev, struct ieee80211_vif *vif)
wtbl_rx->rv = 1;
ret = __mt7615_mcu_set_wtbl(dev, mvif->sta.wcid.idx,
- WTBL_RESET_AND_SET, buf, buf_len);
+ WTBL_RESET_AND_SET, 2, buf,
+ buf_len);
kfree(buf);
return ret;
@@ -1058,7 +1046,7 @@ int mt7615_mcu_del_wtbl_bmc(struct mt7615_dev *dev, struct ieee80211_vif *vif)
struct mt7615_vif *mvif = (struct mt7615_vif *)vif->drv_priv;
return __mt7615_mcu_set_wtbl(dev, mvif->sta.wcid.idx,
- WTBL_RESET_AND_SET, NULL, 0);
+ WTBL_RESET_AND_SET, 0, NULL, 0);
}
int mt7615_mcu_add_wtbl(struct mt7615_dev *dev, struct ieee80211_vif *vif,
@@ -1092,8 +1080,8 @@ int mt7615_mcu_add_wtbl(struct mt7615_dev *dev, struct ieee80211_vif *vif,
wtbl_rx->rca2 = 1;
wtbl_rx->rv = 1;
- ret = __mt7615_mcu_set_wtbl(dev, msta->wcid.idx,
- WTBL_RESET_AND_SET, buf, buf_len);
+ ret = __mt7615_mcu_set_wtbl(dev, msta->wcid.idx, WTBL_RESET_AND_SET,
+ 2, buf, buf_len);
kfree(buf);
return ret;
@@ -1105,12 +1093,12 @@ int mt7615_mcu_del_wtbl(struct mt7615_dev *dev, struct ieee80211_vif *vif,
struct mt7615_sta *msta = (struct mt7615_sta *)sta->drv_priv;
return __mt7615_mcu_set_wtbl(dev, msta->wcid.idx,
- WTBL_RESET_AND_SET, NULL, 0);
+ WTBL_RESET_AND_SET, 0, NULL, 0);
}
int mt7615_mcu_del_wtbl_all(struct mt7615_dev *dev)
{
- return __mt7615_mcu_set_wtbl(dev, 0, WTBL_RESET_ALL, NULL, 0);
+ return __mt7615_mcu_set_wtbl(dev, 0, WTBL_RESET_ALL, 0, NULL, 0);
}
static int __mt7615_mcu_set_sta_rec(struct mt7615_dev *dev, int bss_idx,
@@ -1367,7 +1355,7 @@ int mt7615_mcu_set_ht_cap(struct mt7615_dev *dev, struct ieee80211_vif *vif,
struct wtbl_ht *wtbl_ht;
struct wtbl_raw *wtbl_raw;
struct sta_rec_ht *sta_rec_ht;
- int buf_len, ret;
+ int buf_len, ret, ntlv = 2;
u32 msk, val = 0;
u8 *buf;
@@ -1400,6 +1388,7 @@ int mt7615_mcu_set_ht_cap(struct mt7615_dev *dev, struct ieee80211_vif *vif,
wtbl_vht->len = cpu_to_le16(sizeof(*wtbl_vht));
wtbl_vht->ldpc = sta->vht_cap.cap & IEEE80211_VHT_CAP_RXLDPC;
wtbl_vht->vht = 1;
+ ntlv++;
if (sta->vht_cap.cap & IEEE80211_VHT_CAP_SHORT_GI_80)
val |= MT_WTBL_W5_SHORT_GI_80;
@@ -1416,6 +1405,7 @@ int mt7615_mcu_set_ht_cap(struct mt7615_dev *dev, struct ieee80211_vif *vif,
wtbl_smps->tag = cpu_to_le16(WTBL_SMPS);
wtbl_smps->len = cpu_to_le16(sizeof(*wtbl_smps));
wtbl_smps->smps = 1;
+ ntlv++;
}
/* sgi */
@@ -1431,8 +1421,8 @@ int mt7615_mcu_set_ht_cap(struct mt7615_dev *dev, struct ieee80211_vif *vif,
wtbl_raw->msk = cpu_to_le32(~msk);
wtbl_raw->val = cpu_to_le32(val);
- ret = __mt7615_mcu_set_wtbl(dev, msta->wcid.idx, WTBL_SET, buf,
- buf_len);
+ ret = __mt7615_mcu_set_wtbl(dev, msta->wcid.idx, WTBL_SET, ntlv,
+ buf, buf_len);
if (ret) {
kfree(buf);
return ret;
@@ -1501,8 +1491,8 @@ int mt7615_mcu_set_tx_ba(struct mt7615_dev *dev,
wtbl_ba.ba_winsize_idx = idx;
}
- ret = __mt7615_mcu_set_wtbl(dev, msta->wcid.idx, WTBL_SET, &wtbl_ba,
- buf_len);
+ ret = __mt7615_mcu_set_wtbl(dev, msta->wcid.idx, WTBL_SET, 1,
+ &wtbl_ba, buf_len);
if (ret)
return ret;
@@ -1561,7 +1551,7 @@ int mt7615_mcu_set_rx_ba(struct mt7615_dev *dev,
wtbl_ba.rst_ba_sb = 1;
return __mt7615_mcu_set_wtbl(dev, msta->wcid.idx, WTBL_SET,
- &wtbl_ba, buf_len);
+ 1, &wtbl_ba, buf_len);
}
void mt7615_mcu_set_rates(struct mt7615_dev *dev, struct mt7615_sta *sta,
--
2.20.1
^ permalink raw reply related
* [PATCH 02/17] mt7615: mcu: simplify __mt7615_mcu_set_sta_rec
From: Lorenzo Bianconi @ 2019-05-04 15:28 UTC (permalink / raw)
To: nbd; +Cc: lorenzo.bianconi, linux-wireless, ryder.lee, royluo
In-Reply-To: <cover.1556981521.git.lorenzo@kernel.org>
Do not loop over cmd payload in __mt7615_mcu_set_sta_rec since it is
already done in before running __mt7615_mcu_set_sta_rec (e.g.
mt7615_mcu_set_sta_rec)
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
.../net/wireless/mediatek/mt76/mt7615/mcu.c | 51 ++++++++-----------
1 file changed, 21 insertions(+), 30 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
index 3de20c8111cf..2a632c0debe9 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
@@ -1101,9 +1101,10 @@ int mt7615_mcu_del_wtbl_all(struct mt7615_dev *dev)
return __mt7615_mcu_set_wtbl(dev, 0, WTBL_RESET_ALL, 0, NULL, 0);
}
-static int __mt7615_mcu_set_sta_rec(struct mt7615_dev *dev, int bss_idx,
- int wlan_idx, int muar_idx, void *buf,
- int buf_len)
+static int
+__mt7615_mcu_set_sta_rec(struct mt7615_dev *dev, int bss_idx,
+ int wlan_idx, int muar_idx, int ntlv,
+ void *buf, int buf_len)
{
struct req_hdr {
u8 bss_idx;
@@ -1112,31 +1113,16 @@ static int __mt7615_mcu_set_sta_rec(struct mt7615_dev *dev, int bss_idx,
u8 is_tlv_append;
u8 muar_idx;
u8 rsv[2];
- } __packed req_hdr = {0};
- struct tlv {
- __le16 tag;
- __le16 len;
- u8 buf[0];
- } __packed;
+ } __packed req_hdr = {
+ .bss_idx = bss_idx,
+ .wlan_idx = wlan_idx,
+ .tlv_num = cpu_to_le16(ntlv),
+ .is_tlv_append = !!ntlv,
+ .muar_idx = muar_idx,
+ };
struct sk_buff *skb;
- u16 tlv_num = 0;
- int offset = 0;
-
- while (offset < buf_len) {
- struct tlv *tlv = (struct tlv *)((u8 *)buf + offset);
-
- tlv_num++;
- offset += tlv->len;
- }
skb = mt7615_mcu_msg_alloc(NULL, sizeof(req_hdr) + buf_len);
-
- req_hdr.bss_idx = bss_idx;
- req_hdr.wlan_idx = wlan_idx;
- req_hdr.tlv_num = cpu_to_le16(tlv_num);
- req_hdr.is_tlv_append = tlv_num ? 1 : 0;
- req_hdr.muar_idx = muar_idx;
-
memcpy(skb_put(skb, sizeof(req_hdr)), &req_hdr, sizeof(req_hdr));
if (buf && buf_len)
@@ -1167,7 +1153,7 @@ int mt7615_mcu_set_sta_rec_bmc(struct mt7615_dev *dev,
}
return __mt7615_mcu_set_sta_rec(dev, mvif->idx, mvif->sta.wcid.idx,
- mvif->omac_idx, &sta_rec_basic,
+ mvif->omac_idx, 1, &sta_rec_basic,
buf_len);
}
@@ -1216,7 +1202,7 @@ int mt7615_mcu_set_sta_rec(struct mt7615_dev *dev, struct ieee80211_vif *vif,
}
return __mt7615_mcu_set_sta_rec(dev, mvif->idx, msta->wcid.idx,
- mvif->omac_idx, &sta_rec_basic,
+ mvif->omac_idx, 1, &sta_rec_basic,
buf_len);
}
@@ -1435,6 +1421,7 @@ int mt7615_mcu_set_ht_cap(struct mt7615_dev *dev, struct ieee80211_vif *vif,
sta_rec_ht->tag = cpu_to_le16(STA_REC_HT);
sta_rec_ht->len = cpu_to_le16(sizeof(*sta_rec_ht));
sta_rec_ht->ht_cap = cpu_to_le16(sta->ht_cap.cap);
+ ntlv = 1;
if (sta->vht_cap.vht_supported) {
struct sta_rec_vht *sta_rec_vht;
@@ -1448,10 +1435,12 @@ int mt7615_mcu_set_ht_cap(struct mt7615_dev *dev, struct ieee80211_vif *vif,
cpu_to_le16(sta->vht_cap.vht_mcs.rx_mcs_map);
sta_rec_vht->vht_tx_mcs_map =
cpu_to_le16(sta->vht_cap.vht_mcs.tx_mcs_map);
+ ntlv++;
}
ret = __mt7615_mcu_set_sta_rec(dev, mvif->idx, msta->wcid.idx,
- mvif->omac_idx, buf, buf_len);
+ mvif->omac_idx, ntlv, buf,
+ buf_len);
kfree(buf);
return ret;
}
@@ -1508,7 +1497,8 @@ int mt7615_mcu_set_tx_ba(struct mt7615_dev *dev,
sta_rec_ba.winsize = cpu_to_le16(ba_size);
return __mt7615_mcu_set_sta_rec(dev, mvif->idx, msta->wcid.idx,
- mvif->omac_idx, &sta_rec_ba, buf_len);
+ mvif->omac_idx, 1, &sta_rec_ba,
+ buf_len);
}
int mt7615_mcu_set_rx_ba(struct mt7615_dev *dev,
@@ -1535,7 +1525,8 @@ int mt7615_mcu_set_rx_ba(struct mt7615_dev *dev,
sta_rec_ba.winsize = cpu_to_le16(params->buf_size);
ret = __mt7615_mcu_set_sta_rec(dev, mvif->idx, msta->wcid.idx,
- mvif->omac_idx, &sta_rec_ba, buf_len);
+ mvif->omac_idx, 1, &sta_rec_ba,
+ buf_len);
if (ret || !add)
return ret;
--
2.20.1
^ permalink raw reply related
* [PATCH 03/17] mt7615: mcu: remove bss_info_convert_vif_type routine
From: Lorenzo Bianconi @ 2019-05-04 15:28 UTC (permalink / raw)
To: nbd; +Cc: lorenzo.bianconi, linux-wireless, ryder.lee, royluo
In-Reply-To: <cover.1556981521.git.lorenzo@kernel.org>
Remove bss_info_convert_vif_type routine since it is run just in
mt7615_mcu_set_bss_info and the switch over vif->type is already there.
Simplify mt7615_mcu_set_bss_info routine
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
.../net/wireless/mediatek/mt76/mt7615/mcu.c | 73 +++++++------------
1 file changed, 27 insertions(+), 46 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
index 2a632c0debe9..2a73ac8b0d90 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
@@ -842,39 +842,28 @@ static int __mt7615_mcu_set_bss_info(struct mt7615_dev *dev,
MCU_Q_SET, MCU_S2D_H2N, NULL);
}
-static void bss_info_convert_vif_type(enum nl80211_iftype type,
- u32 *network_type, u32 *conn_type)
-{
- switch (type) {
- case NL80211_IFTYPE_AP:
- if (network_type)
- *network_type = NETWORK_INFRA;
- if (conn_type)
- *conn_type = CONNECTION_INFRA_AP;
- break;
- case NL80211_IFTYPE_STATION:
- if (network_type)
- *network_type = NETWORK_INFRA;
- if (conn_type)
- *conn_type = CONNECTION_INFRA_STA;
- break;
- default:
- WARN_ON(1);
- break;
- };
-}
-
-int mt7615_mcu_set_bss_info(struct mt7615_dev *dev, struct ieee80211_vif *vif,
- int en)
+int mt7615_mcu_set_bss_info(struct mt7615_dev *dev,
+ struct ieee80211_vif *vif, int en)
{
struct mt7615_vif *mvif = (struct mt7615_vif *)vif->drv_priv;
- struct bss_info bss_info = {0};
- u8 bmc_tx_wlan_idx = 0;
- u32 network_type = 0, conn_type = 0;
+ struct bss_info bss_info = {
+ .bss_idx = mvif->idx,
+ .omac_idx = mvif->omac_idx,
+ .band_idx = mvif->band_idx,
+ .bcn_interval = vif->bss_conf.beacon_int,
+ .dtim_period = vif->bss_conf.dtim_period,
+ .enable = en,
+ .feature = BIT(BSS_INFO_BASIC),
+ .wmm_idx = mvif->wmm_idx,
+ };
- if (vif->type == NL80211_IFTYPE_AP) {
- bmc_tx_wlan_idx = mvif->sta.wcid.idx;
- } else if (vif->type == NL80211_IFTYPE_STATION) {
+ switch (vif->type) {
+ case NL80211_IFTYPE_AP:
+ bss_info.bmc_tx_wlan_idx = mvif->sta.wcid.idx;
+ bss_info.network_type = NETWORK_INFRA;
+ bss_info.conn_type = CONNECTION_INFRA_AP;
+ break;
+ case NL80211_IFTYPE_STATION: {
/* find the unicast entry for sta mode bmc tx */
struct ieee80211_sta *ap_sta;
struct mt7615_sta *msta;
@@ -888,27 +877,19 @@ int mt7615_mcu_set_bss_info(struct mt7615_dev *dev, struct ieee80211_vif *vif,
}
msta = (struct mt7615_sta *)ap_sta->drv_priv;
- bmc_tx_wlan_idx = msta->wcid.idx;
+ bss_info.bmc_tx_wlan_idx = msta->wcid.idx;
+ bss_info.network_type = NETWORK_INFRA;
+ bss_info.conn_type = CONNECTION_INFRA_STA;
rcu_read_unlock();
- } else {
+ break;
+ }
+ default:
WARN_ON(1);
+ break;
}
-
- bss_info_convert_vif_type(vif->type, &network_type, &conn_type);
-
- bss_info.bss_idx = mvif->idx;
memcpy(bss_info.bssid, vif->bss_conf.bssid, ETH_ALEN);
- bss_info.omac_idx = mvif->omac_idx;
- bss_info.band_idx = mvif->band_idx;
- bss_info.bmc_tx_wlan_idx = bmc_tx_wlan_idx;
- bss_info.wmm_idx = mvif->wmm_idx;
- bss_info.network_type = network_type;
- bss_info.conn_type = conn_type;
- bss_info.bcn_interval = vif->bss_conf.beacon_int;
- bss_info.dtim_period = vif->bss_conf.dtim_period;
- bss_info.enable = en;
- bss_info.feature = BIT(BSS_INFO_BASIC);
+
if (en) {
bss_info.feature |= BIT(BSS_INFO_OMAC);
if (mvif->omac_idx > EXT_BSSID_START)
--
2.20.1
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox