introduce mt7921e support
Subsystems (2)
[email protected]
reviewerv4 cover introduce mt7921e support
From: Sean Wang <[email protected]>
Introduce support for mt7921e 802.11ax (Wi-Fi 6) 2x2:2SS chipset.
v2:
- Mark the patch as -next
v3:
- Remove sw scan support
- Get rid of dbdc code
- Run mt7921_configure_filter hodling mt76 mutex
- Correct Txp programming in Txd
- Correct fw log to host command
- Correct eeprom offset definition
- Update rate adaption info report
- Remove unused code and fields in struture
- Split the previous driver into several patches for easy review
v4:
- introduce sched scan support
- introduce 802.11 PS support in sta mode
- introduce support for hardware beacon filter
- introduce beacon_loss mcu event
- introduce PM support
- refine sta_rec_phy and add sta_rec_ra_info
- remove incorrect mt7921_mcu_tx_config member
- fix erroneous endianness conversion in mt7921_tx_complete_skb()
- fix endianness warning in mt7921_get_wtbl_info()
- fix endianness warnings in mt7921_mcu_sta_tlv()
- remove unused code in mt7921_mcu_send_message
- remove scan with random mac until fw is ready
- channel domain is added for hw scan
Sean Wang (13):
mt76: mt7921: add module support
mt76: mt7921: add MCU support
mt76: mt7921: add MAC support
mt76: mt7921: add DMA support
mt76: mt7921: add EEPROM support
mt76: mt7921: add ieee80211_ops
mt76: mt7921: introduce mt7921e support
mt76: mt7921: add debugfs support
mt76: mt7921: introduce schedule scan support
mt76: mt7921: introduce 802.11 PS support in sta mode
mt76: mt7921: introduce support for hardware beacon filter
mt76: mt7921: introduce beacon_loss mcu event
mt76: mt7921: introduce PM support
drivers/net/wireless/mediatek/mt76/Kconfig | 1 + drivers/net/wireless/mediatek/mt76/Makefile | 1 + .../net/wireless/mediatek/mt76/mt7921/Kconfig | 10 + .../wireless/mediatek/mt76/mt7921/Makefile | 5 + .../wireless/mediatek/mt76/mt7921/debugfs.c | 178 + .../net/wireless/mediatek/mt76/mt7921/dma.c | 356 ++ .../wireless/mediatek/mt76/mt7921/eeprom.c | 101 + .../wireless/mediatek/mt76/mt7921/eeprom.h | 27 + .../net/wireless/mediatek/mt76/mt7921/init.c | 270 ++ .../net/wireless/mediatek/mt76/mt7921/mac.c | 1366 ++++++++ .../net/wireless/mediatek/mt76/mt7921/mac.h | 333 ++ .../net/wireless/mediatek/mt76/mt7921/main.c | 1050 ++++++ .../net/wireless/mediatek/mt76/mt7921/mcu.c | 2924 +++++++++++++++++ .../net/wireless/mediatek/mt76/mt7921/mcu.h | 1175 +++++++ .../wireless/mediatek/mt76/mt7921/mt7921.h | 374 +++ .../net/wireless/mediatek/mt76/mt7921/pci.c | 279 ++ .../net/wireless/mediatek/mt76/mt7921/regs.h | 413 +++ 17 files changed, 8863 insertions(+) create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/Kconfig create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/Makefile create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/dma.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/eeprom.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/eeprom.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/init.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/mac.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/mac.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/main.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/mcu.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/mcu.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/pci.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/regs.h
--
2.25.1
[email protected]
reviewerPATCH v4 1/13 mt76: mt7921: add module support
From: Sean Wang <[email protected]>
Add mt7921 as the pci driver module.
The purpose of the patch is to check about if the following patches are able to compile properly.
--- drivers/net/wireless/mediatek/mt76/Kconfig | 1 + drivers/net/wireless/mediatek/mt76/Makefile | 1 + .../net/wireless/mediatek/mt76/mt7921/Kconfig | 10 +++ .../wireless/mediatek/mt76/mt7921/Makefile | 5 ++ .../net/wireless/mediatek/mt76/mt7921/pci.c | 63 +++++++++++++++++++ 5 files changed, 80 insertions(+) create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/Kconfig create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/Makefile create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/pci.c
drivers/net/wireless/mediatek/mt76/Kconfig +1 -0
@@ -29,3 +29,4 @@ source "drivers/net/wireless/mediatek/mt76/mt76x2/Kconfig" source "drivers/net/wireless/mediatek/mt76/mt7603/Kconfig" source "drivers/net/wireless/mediatek/mt76/mt7615/Kconfig" source "drivers/net/wireless/mediatek/mt76/mt7915/Kconfig" +source "drivers/net/wireless/mediatek/mt76/mt7921/Kconfig"
drivers/net/wireless/mediatek/mt76/Makefile +1 -0
@@ -31,3 +31,4 @@ obj-$(CONFIG_MT76x2_COMMON) += mt76x2/ obj-$(CONFIG_MT7603E) += mt7603/ obj-$(CONFIG_MT7615_COMMON) += mt7615/ obj-$(CONFIG_MT7915E) += mt7915/ +obj-$(CONFIG_MT7921E) += mt7921/
drivers/net/wireless/mediatek/mt76/mt7921/Kconfig new file +10 -0
@@ -0,0 +1,10 @@ +# SPDX-License-Identifier: ISC +config MT7921E + tristate "MediaTek MT7921E (PCIe) support" + select MT76_CORE + depends on MAC80211 + depends on PCI + help + This adds support for MT7921E 802.11ax 2x2:2SS wireless devices. + + To compile this driver as a module, choose M here.
drivers/net/wireless/mediatek/mt76/mt7921/Makefile new file +5 -0
@@ -0,0 +1,5 @@ +#SPDX-License-Identifier: ISC + +obj-$(CONFIG_MT7921E) += mt7921e.o + +mt7921e-y := pci.o
drivers/net/wireless/mediatek/mt76/mt7921/pci.c new file +63 -0
63 lines not on this page · raw message
Signature · 1 line
2.25.1
Felix Fietkau
maintainerRe: [PATCH -next v4 01/13] mt76: mt7921: add module support
Quoted 4 lines · On 2020-12-30 19:06, [email protected] wrote:
From: Sean Wang <[email protected]>
Add mt7921 as the pci driver module.
Quoted 8 lines
The purpose of the patch is to check about if the following patches are able to compile properly.
Co-developed-by Lorenzo Bianconi <[email protected]>Signed-off-by Lorenzo Bianconi <[email protected]>Co-developed-by Soul Huang <[email protected]>Signed-off-by Soul Huang <[email protected]>Signed-off-by Sean Wang <[email protected]>
This should be the last patch in the series.
- Felix
_______________________________________________
Linux-mediatek mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-mediatek
[email protected]
reviewerPATCH v4 2/13 mt76: mt7921: add MCU support
In reply to [email protected]From: Sean Wang <[email protected]>
MT7921 contains a microprocessor with which the host can use command/event to communicate to implement offload features such as establish connection, hardware scan and so on. The host has to download the ROM patch, RAM firmware and finally activate the MCU to complete the MT7921 initialization.
--- .../wireless/mediatek/mt76/mt7921/Makefile | 2 +- .../net/wireless/mediatek/mt76/mt7921/mac.h | 333 +++ .../net/wireless/mediatek/mt76/mt7921/mcu.c | 2438 +++++++++++++++++ .../net/wireless/mediatek/mt76/mt7921/mcu.h | 1050 +++++++ .../wireless/mediatek/mt76/mt7921/mt7921.h | 353 +++ .../net/wireless/mediatek/mt76/mt7921/regs.h | 413 +++ 6 files changed, 4588 insertions(+), 1 deletion(-) create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/mac.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/mcu.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/mcu.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/regs.h
drivers/net/wireless/mediatek/mt76/mt7921/Makefile +1 -1
@@ -2,4 +2,4 @@ obj-$(CONFIG_MT7921E) += mt7921e.o -mt7921e-y := pci.o +mt7921e-y := pci.o mcu.o
drivers/net/wireless/mediatek/mt76/mt7921/mac.h new file +333 -0
333 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c new file +2438 -0
2,438 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7921/mcu.h new file +1050 -0
224 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h new file +353 -0
353 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7921/regs.h new file +413 -0
413 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Signature · 1 line
2.25.1
Part of the diff is not shown here. View the raw message.
Ryder Lee
maintainerRe: [PATCH -next v4 02/13] mt76: mt7921: add MCU support
Quoted 28 lines · On Thu, 2020-12-31 at 02:06 +0800, [email protected] wrote:
From: Sean Wang <[email protected]>
MT7921 contains a microprocessor with which the host can use command/event to communicate to implement offload features such as establish connection, hardware scan and so on. The host has to download the ROM patch, RAM firmware and finally activate the MCU to complete the MT7921 initialization.
Co-developed-by Lorenzo Bianconi <[email protected]>Signed-off-by Lorenzo Bianconi <[email protected]>Co-developed-by Soul Huang <[email protected]>Signed-off-by Soul Huang <[email protected]>Signed-off-by Sean Wang <[email protected]>--- .../wireless/mediatek/mt76/mt7921/Makefile | 2 +- .../net/wireless/mediatek/mt76/mt7921/mac.h | 333 +++ .../net/wireless/mediatek/mt76/mt7921/mcu.c | 2438 +++++++++++++++++ .../net/wireless/mediatek/mt76/mt7921/mcu.h | 1050 +++++++ .../wireless/mediatek/mt76/mt7921/mt7921.h | 353 +++ .../net/wireless/mediatek/mt76/mt7921/regs.h | 413 +++ 6 files changed, 4588 insertions(+), 1 deletion(-) create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/mac.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/mcu.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/mcu.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/regs.h
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c line 329
Quoted 7 lines
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c new file +7
-0+static int +mt7921_mcu_send_message (struct mt76_dev *mdev,struct sk_buff *skb, +int cmd,int *wait_seq) +{ + struct mt7921_dev *dev = container_of(mdev, struct mt7921_dev, mt76); +int txd_len, mcu_cmd = cmd &MCU_CMD_MASK ; +enum mt76_txq_id txq =MT_MCUQ_WM ;
Implicit conversion from enumeration type 'enum mt76_mcuq_id' to different enumeration type 'enum mt76_txq_id'
Should be enum mt76_mcuq_id
Quoted 16 lines
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c new file +16
-0+static int +mt7921_mcu_sta_key_tlv (struct sk_buff *skb,struct ieee80211_key_conf *key, +enum set_key_cmd cmd) +{ +struct sta_rec_sec *sec; +struct tlv *tlv; +u32 len =sizeof (*sec); + + tlv =mt7921_mcu_add_tlv (skb,STA_REC_KEY_V2 ,sizeof (*sec)); + + sec = (struct sta_rec_sec *)tlv; + sec->add = cmd; + +if (cmd ==SET_KEY ) { +struct sec_key *sec_key; +u8 cipher;
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c line 767
Quoted 10 lines
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c new file +10
-0+ + cipher =mt7921_mcu_get_cipher (key->cipher); +if (cipher ==MT_CIPHER_NONE ) +return -EOPNOTSUPP ; + + sec_key = &sec->key[0 ]; + sec_key->cipher_len =sizeof (*sec_key); + sec_key->key_id = key->keyidx; + +if (cipher ==MT_CIPHER_BIP_CMAC_128 ) {
This was copied/pasted my wrong flow from mt7915 so I guess BIP_CMAC_128 cannot work. I've fixed this recently for mt7915. You may take a look at
https://patchwork.kernel.org/project/linux-wireless/patch/fc6abcd810a74bb4e8568b0f46bfc851fdcfd800.1607445161.git.ryder.lee@mediatek.com/
Or, fallback to sw version
Quoted 25 lines
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h new file +25
-0+extern const struct ieee80211_ops mt7921_ops; +extern struct pci_driver mt7921_pci_driver; + +u32 mt7921_reg_map (struct mt7921_dev *dev,u32 addr); + +int mt7921_register_device (struct mt7921_dev *dev); +void mt7921_unregister_device (struct mt7921_dev *dev); +int mt7921_eeprom_init (struct mt7921_dev *dev); +void mt7921_eeprom_parse_band_config (struct mt7921_phy *phy); +int mt7921_eeprom_get_target_power (struct mt7921_dev *dev, +struct ieee80211_channel *chan, +u8 chain_idx); +void mt7921_eeprom_init_sku (struct mt7921_dev *dev); +int mt7921_dma_init (struct mt7921_dev *dev); +void mt7921_dma_prefetch (struct mt7921_dev *dev); +void mt7921_dma_cleanup (struct mt7921_dev *dev); +int mt7921_mcu_init (struct mt7921_dev *dev); +int mt7921_mcu_add_bss_info (struct mt7921_phy *phy, +struct ieee80211_vif *vif,int enable); +int mt7921_mcu_sta_update_hdr_trans (struct mt7921_dev *dev, +struct ieee80211_vif *vif, +struct ieee80211_sta *sta); +int mt7921_mcu_add_key (struct mt7921_dev *dev,struct ieee80211_vif *vif, +struct mt7921_sta *msta,struct ieee80211_key_conf *key, +enum set_key_cmd cmd);
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h line 246
Quoted 10 lines
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h new file +10
-0+int mt7921_set_channel (struct mt7921_phy *phy); +int mt7921_mcu_set_chan_info (struct mt7921_phy *phy,int cmd); +int mt7921_mcu_set_tx (struct mt7921_dev *dev,struct ieee80211_vif *vif); +int mt7921_mcu_set_eeprom (struct mt7921_dev *dev); +int mt7921_mcu_get_eeprom (struct mt7921_dev *dev,u32 offset); +int mt7921_mcu_set_mac (struct mt7921_dev *dev,int band,bool enable, +bool hdr_trans); +int mt7921_mcu_set_rts_thresh (struct mt7921_phy *phy,u32 val); +int mt7921_mcu_get_rx_rate (struct mt7921_phy *phy,struct ieee80211_vif *vif, +struct ieee80211_sta *sta,struct rate_info *rate);
Just a quick look. Seem some unused functions (used by mt7915) are exported here. e.g. mt7921_mcu_get_rx_rate()
[email protected]
reviewerPATCH v4 3/13 mt76: mt7921: add MAC support
In reply to [email protected]From: Sean Wang <[email protected]>
Add Rx packet description parsing, Tx packet description compositon, handle packet recycling and provide MAC information mt76 core needs to support mac80211.
--- .../wireless/mediatek/mt76/mt7921/Makefile | 2 +- .../net/wireless/mediatek/mt76/mt7921/mac.c | 1364 +++++++++++++++++ 2 files changed, 1365 insertions(+), 1 deletion(-) create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/mac.c
drivers/net/wireless/mediatek/mt76/mt7921/Makefile +1 -1
@@ -2,4 +2,4 @@ obj-$(CONFIG_MT7921E) += mt7921e.o -mt7921e-y := pci.o mcu.o +mt7921e-y := pci.o mcu.o mac.o
drivers/net/wireless/mediatek/mt76/mt7921/mac.c new file +1364 -0
1,364 lines not on this page · raw message
Signature · 1 line
2.25.1
Ryder Lee
maintainerRe: [PATCH -next v4 03/13] mt76: mt7921: add MAC support
Quoted 6 lines · On Thu, 2020-12-31 at 02:06 +0800, [email protected] wrote:
From: Sean Wang <[email protected]>
Add Rx packet description parsing, Tx packet description compositon, handle packet recycling and provide MAC information mt76 core needs to support mac80211.
Quoted 6 lines
Co-developed-by Lorenzo Bianconi <[email protected]>Signed-off-by Lorenzo Bianconi <[email protected]>Co-developed-by Soul Huang <[email protected]>Signed-off-by Soul Huang <[email protected]>Signed-off-by Sean Wang <[email protected]>---
Trim the code. Please take these fixups into account.
https://patchwork.kernel.org/project/linux-wireless/patch/65336148b5d440dceb967a401488b119e14b9c5a.1607124652.git.ryder.lee@mediatek.com/
https://patchwork.kernel.org/project/linux-wireless/patch/69d62cd40ae52e0ddd5b26ba96bc7480385585a5.1607578601.git.ryder.lee@mediatek.com/
Ryder
Ryder Lee
maintainerRe: [PATCH -next v4 03/13] mt76: mt7921: add MAC support
In reply to [email protected]Quoted 6 lines · On Thu, 2020-12-31 at 02:06 +0800, [email protected] wrote:
From: Sean Wang <[email protected]>
Add Rx packet description parsing, Tx packet description compositon, handle packet recycling and provide MAC information mt76 core needs to support mac80211.
Quoted 8 lines
Co-developed-by Lorenzo Bianconi <[email protected]>Signed-off-by Lorenzo Bianconi <[email protected]>Co-developed-by Soul Huang <[email protected]>Signed-off-by Soul Huang <[email protected]>Signed-off-by Sean Wang <[email protected]>--- .../wireless/mediatek/mt76/mt7921/Makefile | 2 +- .../net/wireless/mediatek/mt76/mt7921/mac.c | 1364 +++++++++++++++++
Why not put mac.h into this patch?
Quoted 6 lines
2 files changed, 1365 insertions(+), 1 deletion(-) create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/mac.cdrivers/net/wireless/mediatek/mt76/mt7921/mac.c new file +3
-0+int mt7921_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr, + enum mt76_txq_id qid, struct mt76_wcid *wcid, + struct ieee80211_sta *sta,
drivers/net/wireless/mediatek/mt76/mt7921/mac.c line 786
Quoted 10 lines
drivers/net/wireless/mediatek/mt76/mt7921/mac.c new file +10
-0+ struct mt76_tx_info *tx_info) +{ + struct mt7921_dev *dev = container_of(mdev, struct mt7921_dev, mt76); +struct ieee80211_tx_info *info =IEEE80211_SKB_CB (tx_info->skb); +struct ieee80211_key_conf *key = info->control.hw_key; +struct mt76_tx_cb *cb =mt76_tx_skb_cb (tx_info->skb); +struct mt76_txwi_cache *t; +struct mt7921_txp_common *txp; +int id; +u8 *txwi = (u8 *)txwi_ptr;
Moreover, hardware cannot add LLC-SNAP when skb->data_len is 0, which causes Tx stuck. We found this case happened on mt7915 (station mode) quality test with few packets whose skb->len = 14
So,https://github.com/nbd168/wireless/commit/6b6605e4061c94c9909ff82acc0e02bfd3a8d40e
Ryder
_______________________________________________
Linux-mediatek mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-mediatek
[email protected]
reviewerPATCH v4 4/13 mt76: mt7921: add DMA support
In reply to [email protected]From: Sean Wang <[email protected]>
Add DMA and register access support to MT7921e driver to set up the link for the data movement between the host and MT7921 MAC, or the host and MT7921 MCU.
--- .../wireless/mediatek/mt76/mt7921/Makefile | 2 +- .../net/wireless/mediatek/mt76/mt7921/dma.c | 356 ++++++++++++++++++ .../net/wireless/mediatek/mt76/mt7921/mac.c | 3 + 3 files changed, 360 insertions(+), 1 deletion(-) create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/dma.c
drivers/net/wireless/mediatek/mt76/mt7921/Makefile +1 -1
@@ -2,4 +2,4 @@ obj-$(CONFIG_MT7921E) += mt7921e.o -mt7921e-y := pci.o mcu.o mac.o +mt7921e-y := pci.o mcu.o mac.o dma.o
drivers/net/wireless/mediatek/mt76/mt7921/dma.c new file +356 -0
356 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7921/mac.c +3 -0
@@ -1201,6 +1201,9 @@ mt7921_dma_reset(struct mt7921_phy *phy)mt76_queue_rx_reset (dev, i); } +/* re-init prefetch settings after reset */ +mt7921_dma_prefetch (dev); +mt76_set (dev,MT_WFDMA0_GLO_CFG ,MT_WFDMA0_GLO_CFG_TX_DMA_EN |MT_WFDMA0_GLO_CFG_RX_DMA_EN ); }
Signature · 1 line
2.25.1
[email protected]
reviewerPATCH v4 5/13 mt76: mt7921: add EEPROM support
In reply to [email protected]From: Sean Wang <[email protected]>
Add EEPROM support to MT7921 to determine the capability the card has such as indentificaiton, MAC address, the band and antenna number the card able to support.
--- .../wireless/mediatek/mt76/mt7921/Makefile | 2 +- .../wireless/mediatek/mt76/mt7921/eeprom.c | 101 ++++++++++++++++++ .../wireless/mediatek/mt76/mt7921/eeprom.h | 27 +++++ 3 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/eeprom.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/eeprom.h
drivers/net/wireless/mediatek/mt76/mt7921/Makefile +1 -1
@@ -2,4 +2,4 @@ obj-$(CONFIG_MT7921E) += mt7921e.o -mt7921e-y := pci.o mcu.o mac.o dma.o +mt7921e-y := pci.o mcu.o mac.o dma.o eeprom.o
drivers/net/wireless/mediatek/mt76/mt7921/eeprom.c new file +101 -0
101 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7921/eeprom.h new file +27 -0
@@ -0,0 +1,27 @@ +/* SPDX-License-Identifier: ISC */ +/* Copyright (C) 2020 MediaTek Inc. */ + +#ifndef __MT7921_EEPROM_H +#define __MT7921_EEPROM_H + +#include "mt7921.h" + +enum mt7921_eeprom_field { +MT_EE_CHIP_ID =0x000 , +MT_EE_VERSION =0x002 , +MT_EE_MAC_ADDR =0x004 , +MT_EE_WIFI_CONF =0x07c , + __MT_EE_MAX =0x3bf +}; + +#define MT_EE_WIFI_CONF_TX_MASK BIT(0) +#define MT_EE_WIFI_CONF_BAND_SEL GENMASK(3, 2) + +enum mt7921_eeprom_band { +MT_EE_NA , +MT_EE_5GHZ , +MT_EE_2GHZ , +MT_EE_DUAL_BAND , +}; + +#endif
Signature · 1 line
2.25.1
[email protected]
reviewerPATCH v4 6/13 mt76: mt7921: add ieee80211_ops
In reply to [email protected]From: Sean Wang <[email protected]>
Filling ieee80211_ops with the mt7921 operations.
--- .../wireless/mediatek/mt76/mt7921/Makefile | 2 +- .../net/wireless/mediatek/mt76/mt7921/main.c | 930 ++++++++++++++++++ 2 files changed, 931 insertions(+), 1 deletion(-) create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/main.c
drivers/net/wireless/mediatek/mt76/mt7921/Makefile +1 -1
@@ -2,4 +2,4 @@ obj-$(CONFIG_MT7921E) += mt7921e.o -mt7921e-y := pci.o mcu.o mac.o dma.o eeprom.o +mt7921e-y := pci.o mcu.o mac.o dma.o eeprom.o main.o
drivers/net/wireless/mediatek/mt76/mt7921/main.c new file +930 -0
930 lines not on this page · raw message
Signature · 1 line
2.25.1
[email protected]
reviewerPATCH v4 7/13 mt76: mt7921: introduce mt7921e support
In reply to [email protected]From: Sean Wang <[email protected]>
Introduce support for mt7921e 802.11ax (Wi-Fi 6) 2x2:2SS chipset.
--- .../wireless/mediatek/mt76/mt7921/Makefile | 2 +- .../net/wireless/mediatek/mt76/mt7921/init.c | 263 ++++++++++++++++++ .../net/wireless/mediatek/mt76/mt7921/pci.c | 121 ++++++++ 3 files changed, 385 insertions(+), 1 deletion(-) create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/init.c
drivers/net/wireless/mediatek/mt76/mt7921/Makefile +1 -1
@@ -2,4 +2,4 @@ obj-$(CONFIG_MT7921E) += mt7921e.o -mt7921e-y := pci.o mcu.o mac.o dma.o eeprom.o main.o +mt7921e-y := pci.o mcu.o mac.o dma.o eeprom.o main.o init.o
drivers/net/wireless/mediatek/mt76/mt7921/init.c new file +263 -0
263 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7921/pci.c +121 -0
155 lines not on this page · raw message
Signature · 1 line
2.25.1
[email protected]
reviewerPATCH v4 8/13 mt76: mt7921: add debugfs support
In reply to [email protected]From: Sean Wang <[email protected]>
Add debugfs support to dump driver statistics and hardware details.
--- .../wireless/mediatek/mt76/mt7921/Makefile | 2 +- .../wireless/mediatek/mt76/mt7921/debugfs.c | 178 ++++++++++++++++++ .../net/wireless/mediatek/mt76/mt7921/init.c | 2 +- 3 files changed, 180 insertions(+), 2 deletions(-) create mode 100644 drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
drivers/net/wireless/mediatek/mt76/mt7921/Makefile +1 -1
@@ -2,4 +2,4 @@ obj-$(CONFIG_MT7921E) += mt7921e.o -mt7921e-y := pci.o mcu.o mac.o dma.o eeprom.o main.o init.o +mt7921e-y := pci.o mcu.o mac.o dma.o eeprom.o main.o init.o debugfs.o
drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c new file +178 -0
178 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7921/init.c +1 -1
@@ -231,7 +231,7 @@ int mt7921_register_device(struct mt7921_dev *dev)ieee80211_queue_work (mt76_hw (dev), &dev->init_work); -return 0 ; +return mt7921_init_debugfs (dev); }void mt7921_unregister_device (struct mt7921_dev *dev)
Signature · 1 line
2.25.1
[email protected]
reviewerPATCH v4 9/13 mt76: mt7921: introduce schedule scan support
In reply to [email protected]From: Sean Wang <[email protected]>
introduce schedule scan to control mt7921 firmware to do background scan in defined plan to see if the matched SSID is available.
--- .../net/wireless/mediatek/mt76/mt7921/init.c | 5 ++ .../net/wireless/mediatek/mt76/mt7921/main.c | 38 +++++++++ .../net/wireless/mediatek/mt76/mt7921/mcu.c | 83 +++++++++++++++++++ .../net/wireless/mediatek/mt76/mt7921/mcu.h | 20 +++++ .../wireless/mediatek/mt76/mt7921/mt7921.h | 9 ++ 5 files changed, 155 insertions(+)
drivers/net/wireless/mediatek/mt76/mt7921/init.c +5 -0
@@ -70,6 +70,11 @@ mt7921_init_wiphy(struct ieee80211_hw *hw) wiphy->n_iface_combinations =ARRAY_SIZE (if_comb); wiphy->max_scan_ie_len =MT7921_SCAN_IE_LEN ; wiphy->max_scan_ssids =4 ; + wiphy->max_sched_scan_plan_interval =MT7921_MAX_SCHED_SCAN_INTERVAL ; + wiphy->max_sched_scan_ie_len =IEEE80211_MAX_DATA_LEN ; + wiphy->max_sched_scan_ssids =MT7921_MAX_SCHED_SCAN_SSID ; + wiphy->max_match_sets =MT7921_MAX_SCAN_MATCH ; + wiphy->max_sched_scan_reqs =1 ; wiphy->flags |=WIPHY_FLAG_HAS_CHANNEL_SWITCH ;wiphy_ext_feature_set (wiphy,NL80211_EXT_FEATURE_SET_SCAN_DWELL );
drivers/net/wireless/mediatek/mt76/mt7921/main.c +38 -0
@@ -864,6 +864,42 @@ mt7921_cancel_hw_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif)mutex_unlock (&dev->mt76.mutex); } +static int +mt7921_start_sched_scan (struct ieee80211_hw *hw,struct ieee80211_vif *vif, +struct cfg80211_sched_scan_request *req, +struct ieee80211_scan_ies *ies) +{ +struct mt7921_dev *dev =mt7921_hw_dev (hw); +struct mt76_phy *mphy = hw->priv; +int err; + +mutex_lock (&dev->mt76.mutex); + + err =mt7921_mcu_sched_scan_req (mphy->priv, vif, req); +if (err <0 ) + goto out; + + err =mt7921_mcu_sched_scan_enable (mphy->priv, vif, true); +out: +mutex_unlock (&dev->mt76.mutex); + +return err; +} + +static int +mt7921_stop_sched_scan (struct ieee80211_hw *hw,struct ieee80211_vif *vif) +{ +struct mt7921_dev *dev =mt7921_hw_dev (hw); +struct mt76_phy *mphy = hw->priv; +int err; + +mutex_lock (&dev->mt76.mutex); + err =mt7921_mcu_sched_scan_enable (mphy->priv, vif, false); +mutex_unlock (&dev->mt76.mutex); + +return err; +} +static int mt7921_set_antenna (struct ieee80211_hw *hw,u32 tx_ant,u32 rx_ant) {
@@ -927,4 +963,6 @@ const struct ieee80211_ops mt7921_ops = { .set_coverage_class = mt7921_set_coverage_class, .hw_scan = mt7921_hw_scan, .cancel_hw_scan = mt7921_cancel_hw_scan, + .sched_scan_start = mt7921_start_sched_scan, + .sched_scan_stop = mt7921_stop_sched_scan, };
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +83 -0
89 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7921/mcu.h +20 -0
@@ -879,6 +879,26 @@ struct mt7921_hw_scan_done {__le32 beacon_5g_num; } __packed; +struct mt7921_sched_scan_req { +u8 version; +u8 seq_num; +u8 stop_on_match; +u8 ssids_num; +u8 match_num; +u8 pad; +__le16 ie_len; +struct mt7921_mcu_scan_ssid ssids[MT7921_MAX_SCHED_SCAN_SSID ]; +struct mt7921_mcu_scan_match match[MT7921_MAX_SCAN_MATCH ]; +u8 channel_type; +u8 channels_num; +u8 intervals_num; +u8 scan_func; +struct mt7921_mcu_scan_channel channels[64 ]; +__le16 intervals[MT7921_MAX_SCHED_SCAN_INTERVAL ]; +u8 bss_idx; +u8 pad2[64 ]; +} __packed; +struct mt7921_mcu_bss_event {u8 bss_idx;u8 is_absent;
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +9 -0
@@ -44,6 +44,9 @@#define MT7921_SKU_TABLE_SIZE (MT7921_SKU_RATE_NUM + 1)#define MT7921_SCAN_IE_LEN 600 +#define MT7921_MAX_SCHED_SCAN_INTERVAL 10 +#define MT7921_MAX_SCHED_SCAN_SSID 10 +#define MT7921_MAX_SCAN_MATCH 16struct mt7921_vif ;struct mt7921_sta ;
@@ -347,6 +350,12 @@ void mt7921_scan_work(struct work_struct *work);int mt7921_mcu_set_channel_domain (struct mt7921_phy *phy);int mt7921_mcu_hw_scan (struct mt7921_phy *phy,struct ieee80211_vif *vif,struct ieee80211_scan_request *scan_req); +int mt7921_mcu_sched_scan_req (struct mt7921_phy *phy, +struct ieee80211_vif *vif, +struct cfg80211_sched_scan_request *sreq); +int mt7921_mcu_sched_scan_enable (struct mt7921_phy *phy, +struct ieee80211_vif *vif, +bool enable);int mt7921_mcu_cancel_hw_scan (struct mt7921_phy *phy,struct ieee80211_vif *vif);u32 mt7921_get_wtbl_info (struct mt7921_dev *dev,u16 wlan_idx);
Signature · 1 line
2.25.1
[email protected]
reviewerPATCH v4 10/13 mt76: mt7921: introduce 802.11 PS support in sta mode
In reply to [email protected]From: Sean Wang <[email protected]>
Enable 802.11 power-save support available in mt7921 firmware
--- .../net/wireless/mediatek/mt76/mt7921/init.c | 2 ++ .../net/wireless/mediatek/mt76/mt7921/mac.c | 3 +-- .../net/wireless/mediatek/mt76/mt7921/main.c | 3 +++ .../net/wireless/mediatek/mt76/mt7921/mcu.c | 21 +++++++++++++++++++ .../wireless/mediatek/mt76/mt7921/mt7921.h | 1 + 5 files changed, 28 insertions(+), 2 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7921/init.c +2 -0
@@ -83,6 +83,8 @@ mt7921_init_wiphy(struct ieee80211_hw *hw)ieee80211_hw_set (hw,HAS_RATE_CONTROL );ieee80211_hw_set (hw,SUPPORTS_TX_ENCAP_OFFLOAD );ieee80211_hw_set (hw,WANT_MONITOR_VIF ); +ieee80211_hw_set (hw,SUPPORTS_PS ); +ieee80211_hw_set (hw,SUPPORTS_DYNAMIC_PS ); hw->max_tx_fragments =4 ; }
drivers/net/wireless/mediatek/mt76/mt7921/mac.c +1 -2
@@ -690,8 +690,7 @@ void mt7921_mac_write_txwi(struct mt7921_dev *dev, __le32 *txwi, txwi[1 ] =cpu_to_le32 (val); txwi[2 ] =0 ; - val =MT_TXD3_SW_POWER_MGMT | -FIELD_PREP (MT_TXD3_REM_TX_COUNT , tx_count); + val =FIELD_PREP (MT_TXD3_REM_TX_COUNT , tx_count);if (key) val |=MT_TXD3_PROTECT_FRAME ;if (info->flags &IEEE80211_TX_CTL_NO_ACK )
drivers/net/wireless/mediatek/mt76/mt7921/main.c +3 -0
@@ -559,6 +559,9 @@ static void mt7921_bss_info_changed(struct ieee80211_hw *hw,if (changed & (BSS_CHANGED_QOS |BSS_CHANGED_BEACON_ENABLED ))mt7921_mcu_set_tx (dev, vif); +if (changed &BSS_CHANGED_PS ) +mt7921_mcu_set_vif_ps (dev, vif); +mutex_unlock (&dev->mt76.mutex); }
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +21 -0
@@ -2519,3 +2519,24 @@ u32 mt7921_get_wtbl_info(struct mt7921_dev *dev, u16 wlan_idx)return 0 ; } + +int mt7921_mcu_set_vif_ps (struct mt7921_dev *dev,struct ieee80211_vif *vif) +{ +struct mt7921_vif *mvif = (struct mt7921_vif *)vif->drv_priv; +struct { +u8 bss_idx; +u8 ps_state;/* 0: device awake +* 1: static power save +* 2: dynamic power saving +*/ + } req = { + .bss_idx = mvif->idx, + .ps_state = vif->bss_conf.ps ?2 :0 , + }; + +if (vif->type !=NL80211_IFTYPE_STATION ) +return -EOPNOTSUPP ; + +return mt76_mcu_send_msg (&dev->mt76,MCU_CMD_SET_PS_PROFILE , &req, +sizeof (req), false); +}
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +1 -0
@@ -359,4 +359,5 @@ int mt7921_mcu_sched_scan_enable(struct mt7921_phy *phy,int mt7921_mcu_cancel_hw_scan (struct mt7921_phy *phy,struct ieee80211_vif *vif);u32 mt7921_get_wtbl_info (struct mt7921_dev *dev,u16 wlan_idx); +int mt7921_mcu_set_vif_ps (struct mt7921_dev *dev,struct ieee80211_vif *vif);#endif
Signature · 1 line
2.25.1
[email protected]
reviewerPATCH v4 11/13 mt76: mt7921: introduce support for hardware beacon filter
In reply to [email protected]From: Sean Wang <[email protected]>
Introduce support for hw beacon filter available in the mt7921 firmware.
--- .../net/wireless/mediatek/mt76/mt7921/mcu.c | 40 +++++++++++++++++++ .../wireless/mediatek/mt76/mt7921/mt7921.h | 2 + 2 files changed, 42 insertions(+)
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +40 -0
@@ -2540,3 +2540,43 @@ int mt7921_mcu_set_vif_ps(struct mt7921_dev *dev, struct ieee80211_vif *vif)return mt76_mcu_send_msg (&dev->mt76,MCU_CMD_SET_PS_PROFILE , &req,sizeof (req), false); } + +int mt7921_mcu_set_bss_pm (struct mt7921_dev *dev,struct ieee80211_vif *vif, +bool enable) +{ +struct mt7921_vif *mvif = (struct mt7921_vif *)vif->drv_priv; +struct { +u8 bss_idx; +u8 dtim_period; +__le16 aid; +__le16 bcn_interval; +__le16 atim_window; +u8 uapsd; +u8 bmc_delivered_ac; +u8 bmc_triggered_ac; +u8 pad; + } req = { + .bss_idx = mvif->idx, + .aid =cpu_to_le16 (vif->bss_conf.aid), + .dtim_period = vif->bss_conf.dtim_period, + .bcn_interval =cpu_to_le16 (vif->bss_conf.beacon_int), + }; +struct { +u8 bss_idx; +u8 pad[3 ]; + } req_hdr = { + .bss_idx = mvif->idx, + }; +int err; + +if (vif->type !=NL80211_IFTYPE_STATION ) +return 0 ; + + err =mt76_mcu_send_msg (&dev->mt76,MCU_CMD_SET_BSS_ABORT , &req_hdr, +sizeof (req_hdr), false); +if (err <0 || !enable) +return err; + +return mt76_mcu_send_msg (&dev->mt76,MCU_CMD_SET_BSS_CONNECTED , &req, +sizeof (req), false); +}
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +2 -0
@@ -360,4 +360,6 @@ int mt7921_mcu_cancel_hw_scan(struct mt7921_phy *phy, struct ieee80211_vif *vif);u32 mt7921_get_wtbl_info (struct mt7921_dev *dev,u16 wlan_idx);int mt7921_mcu_set_vif_ps (struct mt7921_dev *dev,struct ieee80211_vif *vif); +int mt7921_mcu_set_bss_pm (struct mt7921_dev *dev,struct ieee80211_vif *vif, +bool enable);#endif
Signature · 1 line
2.25.1
[email protected]
reviewerPATCH v4 12/13 mt76: mt7921: introduce beacon_loss mcu event
In reply to [email protected]From: Sean Wang <[email protected]>
If device has enabled beacon hw filter rx beacons are not reported to the host. Introduce beacon_loss mcu event to trigger mac80211 mlme connection state machine in this configuration. IEEE80211_VIF_BEACON_FILTER has not set in vif flags since hw beacon filter is not enabled yet
--- .../net/wireless/mediatek/mt76/mt7921/mcu.c | 35 +++++++++++++++++++ .../net/wireless/mediatek/mt76/mt7921/mcu.h | 6 ++++ 2 files changed, 41 insertions(+)
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +35 -0
@@ -543,6 +543,40 @@ mt7921_mcu_scan_event(struct mt7921_dev *dev, struct sk_buff *skb) MT7921_HW_SCAN_TIMEOUT); } +static void +mt7921_mcu_beacon_loss_iter (void *priv,u8 *mac,struct ieee80211_vif *vif) +{ +struct mt7921_vif *mvif = (struct mt7921_vif *)vif->drv_priv; +struct mt7921_beacon_loss_event *event = priv; + +if (mvif->idx != event->bss_idx) +return ; + +if (!(vif->driver_flags &IEEE80211_VIF_BEACON_FILTER )) +return ; + +ieee80211_beacon_loss (vif); +} + +static void +mt7921_mcu_beacon_loss_event (struct mt7921_dev *dev,struct sk_buff *skb) +{ +struct mt7921_beacon_loss_event *event; +struct mt76_phy *mphy; +u8 band_idx =0 ;/* DBDC support */ + +skb_pull (skb,sizeof (struct mt7921_mcu_rxd )); + event = (struct mt7921_beacon_loss_event *)skb->data; +if (band_idx && dev->mt76.phy2) + mphy = dev->mt76.phy2; +else + mphy = &dev->mt76.phy; + +ieee80211_iterate_active_interfaces_atomic (mphy->hw, +IEEE80211_IFACE_ITER_RESUME_ALL , + mt7921_mcu_beacon_loss_iter, event); +} +static void mt7921_mcu_bss_event (struct mt7921_dev *dev,struct sk_buff *skb) {
@@ -593,6 +627,7 @@ mt7921_mcu_rx_unsolicited_event(struct mt7921_dev *dev, struct sk_buff *skb)switch (rxd->eid) {case MCU_EVENT_BSS_BEACON_LOSS : +mt7921_mcu_beacon_loss_event (dev, skb);break ;case MCU_EVENT_SCHED_SCAN_DONE :case MCU_EVENT_SCAN_DONE :
drivers/net/wireless/mediatek/mt76/mt7921/mcu.h +6 -0
@@ -783,6 +783,12 @@ struct mt7921_bss_qos_tlv {u8 pad[3 ]; } __packed; +struct mt7921_beacon_loss_event { +u8 bss_idx; +u8 reason; +u8 pad[2 ]; +} __packed; +struct mt7921_mcu_scan_ssid {__le32 ssid_len;u8 ssid[IEEE80211_MAX_SSID_LEN ];
Signature · 1 line
2.25.1
[email protected]
reviewerPATCH v4 13/13 mt76: mt7921: introduce PM support
In reply to [email protected]From: Sean Wang <[email protected]>
Introduce suspend/resume and WoW (Wake-on-WoWLAN) support to mt7921 driver to allow remote wakeu-up from the suspend state.
--- .../net/wireless/mediatek/mt76/mt7921/main.c | 79 +++++ .../net/wireless/mediatek/mt76/mt7921/mcu.c | 307 ++++++++++++++++++ .../net/wireless/mediatek/mt76/mt7921/mcu.h | 99 ++++++ .../wireless/mediatek/mt76/mt7921/mt7921.h | 9 + .../net/wireless/mediatek/mt76/mt7921/pci.c | 95 ++++++ 5 files changed, 589 insertions(+)
drivers/net/wireless/mediatek/mt76/mt7921/main.c +79 -0
@@ -937,6 +937,79 @@ mt7921_sta_rc_update(struct ieee80211_hw *hw, { } +#ifdef CONFIG_PM +static int mt7921_suspend (struct ieee80211_hw *hw, +struct cfg80211_wowlan *wowlan) +{ +struct mt7921_dev *dev =mt7921_hw_dev (hw); +struct mt7921_phy *phy =mt7921_hw_phy (hw); +int err; + +cancel_delayed_work_sync (&phy->scan_work); +cancel_delayed_work_sync (&phy->mac_work); + +mutex_lock (&dev->mt76.mutex); + +clear_bit (MT76_STATE_RUNNING , &phy->mt76->state); + +set_bit (MT76_STATE_SUSPEND , &phy->mt76->state); +ieee80211_iterate_active_interfaces (hw, +IEEE80211_IFACE_ITER_RESUME_ALL , + mt7921_mcu_set_suspend_iter, phy); + + err =mt7921_mcu_set_hif_suspend (dev, true); + +mutex_unlock (&dev->mt76.mutex); + +return err; +} + +static int mt7921_resume (struct ieee80211_hw *hw) +{ +struct mt7921_dev *dev =mt7921_hw_dev (hw); +struct mt7921_phy *phy =mt7921_hw_phy (hw); +int err; + +mutex_lock (&dev->mt76.mutex); + + err =mt7921_mcu_set_hif_suspend (dev, false); +if (err <0 ) + goto out; + +set_bit (MT76_STATE_RUNNING , &phy->mt76->state); +clear_bit (MT76_STATE_SUSPEND , &phy->mt76->state); +ieee80211_iterate_active_interfaces (hw, +IEEE80211_IFACE_ITER_RESUME_ALL , + mt7921_mcu_set_suspend_iter, phy); + +ieee80211_queue_delayed_work (hw, &phy->mac_work, +MT7921_WATCHDOG_TIME ); +out: +mutex_unlock (&dev->mt76.mutex); + +return err; +} + +static void mt7921_set_wakeup (struct ieee80211_hw *hw,bool enabled) +{ +struct mt7921_dev *dev =mt7921_hw_dev (hw); +struct mt76_dev *mdev = &dev->mt76; + +device_set_wakeup_enable (mdev->dev, enabled); +} + +static void mt7921_set_rekey_data (struct ieee80211_hw *hw, +struct ieee80211_vif *vif, +struct cfg80211_gtk_rekey_data *data) +{ +struct mt7921_dev *dev =mt7921_hw_dev (hw); + +mutex_lock (&dev->mt76.mutex); +mt7921_mcu_update_gtk_rekey (hw, vif, data); +mutex_unlock (&dev->mt76.mutex); +} +#endif /* CONFIG_PM */ +const struct ieee80211_ops mt7921_ops = { .tx = mt7921_tx, .start = mt7921_start,
@@ -968,4 +1041,10 @@ const struct ieee80211_ops mt7921_ops = { .cancel_hw_scan = mt7921_cancel_hw_scan, .sched_scan_start = mt7921_start_sched_scan, .sched_scan_stop = mt7921_stop_sched_scan, +#ifdef CONFIG_PM + .suspend = mt7921_suspend, + .resume = mt7921_resume, + .set_wakeup = mt7921_set_wakeup, + .set_rekey_data = mt7921_set_rekey_data, +#endif /* CONFIG_PM */ };
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +307 -0
322 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7921/mcu.h +99 -0
105 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +9 -0
@@ -362,4 +362,13 @@ u32 mt7921_get_wtbl_info(struct mt7921_dev *dev, u16 wlan_idx);int mt7921_mcu_set_vif_ps (struct mt7921_dev *dev,struct ieee80211_vif *vif);int mt7921_mcu_set_bss_pm (struct mt7921_dev *dev,struct ieee80211_vif *vif,bool enable); +int mt7921_mcu_set_hif_suspend (struct mt7921_dev *dev,bool suspend); +void mt7921_mcu_set_suspend_iter (void *priv,u8 *mac, +struct ieee80211_vif *vif); +int mt7921_mcu_update_gtk_rekey (struct ieee80211_hw *hw, +struct ieee80211_vif *vif, +struct cfg80211_gtk_rekey_data *key); +int mt7921_mcu_update_arp_filter (struct ieee80211_hw *hw, +struct ieee80211_vif *vif, +struct ieee80211_bss_conf *info);#endif
drivers/net/wireless/mediatek/mt76/mt7921/pci.c +95 -0
106 lines not on this page · raw message
Signature · 1 line
2.25.1