Shayne Chen
2660fde82f
wifi: mt76: mt7996: Update mt7996_mcu_add_rate_ctrl to MLO
...
Update mt7996_mcu_add_rate_ctrl routine and all the called subroutines
to support MLO.
This is a preliminary patch to enable MLO for MT7996 driver
Co-developed-by: Bo Jiao <Bo.Jiao@mediatek.com >
Signed-off-by: Bo Jiao <Bo.Jiao@mediatek.com >
Co-developed-by: Peter Chiu <chui-hao.chiu@mediatek.com >
Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com >
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com >
Co-developed-by: Lorenzo Bianconi <lorenzo@kernel.org >
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Link: https://patch.msgid.link/20250312-b4-mt7996-mlo-p2-v1-1-015b3d6fd928@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:06 +01:00
Lorenzo Bianconi
3c477b7fca
wifi: mt76: mt7996: Rely on mt7996_vif/sta_link in twt teardown
...
This is a preliminary patch to enable MLO for MT7996 driver
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Link: https://patch.msgid.link/20250311-mt7996-mlo-v2-13-31df6972519b@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:06 +01:00
Shayne Chen
7854cc94ec
wifi: mt76: mt7996: Rely on mt7996_vif_link in mt7996_mcu_twt_agrt_update signature
...
This is a preliminary patch to enable MLO for MT7996 driver
Co-developed-by: Bo Jiao <Bo.Jiao@mediatek.com >
Signed-off-by: Bo Jiao <Bo.Jiao@mediatek.com >
Co-developed-by: Peter Chiu <chui-hao.chiu@mediatek.com >
Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com >
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com >
Co-developed-by: Lorenzo Bianconi <lorenzo@kernel.org >
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Link: https://patch.msgid.link/20250311-mt7996-mlo-v2-12-31df6972519b@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:05 +01:00
Shayne Chen
c7e4fc3624
wifi: mt76: mt7996: Update mt7996_mcu_add_sta to MLO support
...
Update mt7996_mcu_add_sta routine and all the called subroutines to
support MLO. This is a preliminary patch to enable MLO for MT7996
driver.
Co-developed-by: Bo Jiao <Bo.Jiao@mediatek.com >
Signed-off-by: Bo Jiao <Bo.Jiao@mediatek.com >
Co-developed-by: Peter Chiu <chui-hao.chiu@mediatek.com >
Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com >
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com >
Co-developed-by: Lorenzo Bianconi <lorenzo@kernel.org >
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Link: https://patch.msgid.link/20250311-mt7996-mlo-v2-11-31df6972519b@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:05 +01:00
Shayne Chen
9890624c1b
wifi: mt76: Check link_conf pointer in mt76_connac_mcu_sta_basic_tlv()
...
This is a preliminary patch to introduce MLO support for MT7996 driver.
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com >
Link: https://patch.msgid.link/20250311-mt7996-mlo-v2-10-31df6972519b@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:05 +01:00
Lorenzo Bianconi
ecd72f9695
wifi: mt76: mt7996: Support MLO in mt7996_mac_sta_event()
...
Similar to mt7996_mac_sta_add() adn mt7996_mac_sta_remove(), update
mt7996_mac_sta_event routine to take into account MLO support.
Please note mcu routines does not support MLO yet.
Co-developed-by: Bo Jiao <Bo.Jiao@mediatek.com >
Signed-off-by: Bo Jiao <Bo.Jiao@mediatek.com >
Co-developed-by: Peter Chiu <chui-hao.chiu@mediatek.com >
Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com >
Co-developed-by: Shayne Chen <shayne.chen@mediatek.com >
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com >
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Link: https://patch.msgid.link/20250311-mt7996-mlo-v2-9-31df6972519b@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:05 +01:00
Shayne Chen
f520eceacd
wifi: mt76: mt7996: Add mt7996_mac_sta_change_links callback
...
Intrdouce mt7996_mac_sta_change_links routine to set change_sta_links
required by mac80211. This is a preliminary patch to introduce MLO
support for MT7996 driver.
Co-developed-by: Bo Jiao <Bo.Jiao@mediatek.com >
Signed-off-by: Bo Jiao <Bo.Jiao@mediatek.com >
Co-developed-by: Peter Chiu <chui-hao.chiu@mediatek.com >
Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com >
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com >
Co-developed-by: Lorenzo Bianconi <lorenzo@kernel.org >
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Link: https://patch.msgid.link/20250311-mt7996-mlo-v2-8-31df6972519b@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:05 +01:00
Lorenzo Bianconi
dd82a9e02c
wifi: mt76: mt7996: Rely on mt7996_sta_link in sta_add/sta_remove callbacks
...
Generalize mt7996_mac_sta_add() and mt7996_mac_sta_remove() routines to
deal with mt7996_sta_link structure.
This is a preliminary patch to introduce MLO support for MT7996 driver.
Co-developed-by: Bo Jiao <Bo.Jiao@mediatek.com >
Signed-off-by: Bo Jiao <Bo.Jiao@mediatek.com >
Co-developed-by: Peter Chiu <chui-hao.chiu@mediatek.com >
Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com >
Co-developed-by: Shayne Chen <shayne.chen@mediatek.com >
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com >
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Link: https://patch.msgid.link/20250311-mt7996-mlo-v2-7-31df6972519b@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:05 +01:00
Lorenzo Bianconi
e5d944b4af
wifi: mt76: mt7996: Add mt7996_sta_state routine
...
Introduce mt7996_sta_state routine in order to initialize wcid structure
in mt7996 codebase. This is a preliminary patch to enable MLO support in
MT7996 driver.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Link: https://patch.msgid.link/20250311-mt7996-mlo-v2-6-31df6972519b@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:05 +01:00
Lorenzo Bianconi
0a04597cd3
wifi: mt76: mt7996: Add link_info_changed callback
...
Convert bss_info_changed mac80211 callback in link_info_changed one.
This is a preliminary patch to enable MLO support in MT7996 driver.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Link: https://patch.msgid.link/20250311-mt7996-mlo-v2-5-31df6972519b@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:05 +01:00
Lorenzo Bianconi
2b967a3ad1
wifi: mt76: mt7996: Add vif_cfg_changed callback
...
Introduce vif_cfg_changed mac80211 callback as preliminary patch to
enable MLO support in MT7996 driver.
Co-developed-by: Bo Jiao <Bo.Jiao@mediatek.com >
Signed-off-by: Bo Jiao <Bo.Jiao@mediatek.com >
Co-developed-by: Peter Chiu <chui-hao.chiu@mediatek.com >
Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com >
Co-developed-by: Shayne Chen <shayne.chen@mediatek.com >
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com >
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Link: https://patch.msgid.link/20250311-mt7996-mlo-v2-4-31df6972519b@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:05 +01:00
Lorenzo Bianconi
35997d7d39
wifi: mt76: mt7996: Add mt7996_sta_link struct in mt7996_vif_link
...
Introduce mt7996_sta_link field in mt7996_vif_link structure instead of
mt7996_sta. This is a preliminary patch to support MLO in MT7996 driver.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Link: https://patch.msgid.link/20250311-mt7996-mlo-v2-3-31df6972519b@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:05 +01:00
Lorenzo Bianconi
f32915eb6d
wifi: mt76: mt7996: Introduce mt7996_sta_link container
...
Similar to mt7996_vif_link, add mt7996_sta_link structure as driver
representation for sta links. This is a preliminary patch to introduce
MLO support for MT7996 driver.
Co-developed-by: Bo Jiao <Bo.Jiao@mediatek.com >
Signed-off-by: Bo Jiao <Bo.Jiao@mediatek.com >
Co-developed-by: Peter Chiu <chui-hao.chiu@mediatek.com >
Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com >
Co-developed-by: Shayne Chen <shayne.chen@mediatek.com >
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com >
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Link: https://patch.msgid.link/20250311-mt7996-mlo-v2-2-31df6972519b@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:05 +01:00
Lorenzo Bianconi
142f82d45e
wifi: mt76: mt7996: Add change_vif_links stub
...
change_vif_links callback is required by mac80211.
This is a preliminary patch to introduce MLO support for MT7996 driver.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Link: https://patch.msgid.link/20250311-mt7996-mlo-v2-1-31df6972519b@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:05 +01:00
Felix Fietkau
5b5f1ca9ce
wifi: mt76: scan: fix setting tx_info fields
...
ieee80211_tx_prepare_skb initializes the skb cb, so fields need to be set
afterwards.
Link: https://patch.msgid.link/20250311103646.43346-8-nbd@nbd.name
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:05 +01:00
Felix Fietkau
86db2c5d4e
wifi: mt76: mt7996: implement driver specific get_txpower function
...
Fixes reporting tx power for vifs that don't have a channel context
assigned. Report the tx power of a phy that is covered by the vif's
radio mask.
Link: https://patch.msgid.link/20250311103646.43346-7-nbd@nbd.name
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:05 +01:00
Felix Fietkau
0c5a89cedd
wifi: mt76: only mark tx-status-failed frames as ACKed on mt76x0/2
...
The interrupt status polling is unreliable, which can cause status events
to get lost. On all newer chips, txs-timeout is an indication that the
packet was either never sent, or never acked.
Fixes issues with inactivity polling.
Link: https://patch.msgid.link/20250311103646.43346-6-nbd@nbd.name
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:04 +01:00
Felix Fietkau
13b4c81083
wifi: mt76: mt7996: use the correct vif link for scanning/roc
...
Use the newly added offchannel_link pointer in vif data
Link: https://patch.msgid.link/20250311103646.43346-5-nbd@nbd.name
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:04 +01:00
Felix Fietkau
3ba20af886
wifi: mt76: scan: set vif offchannel link for scanning/roc
...
The driver needs to know what vif link to use
Link: https://patch.msgid.link/20250311103646.43346-4-nbd@nbd.name
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:04 +01:00
Michael-CY Lee
0337355cc2
wifi: mt76: mt7996: remove unnecessary key->cipher check for BIP frames
...
The cipher type check is redundant, and there is no need to dereference the
key struct here.
Signed-off-by: Michael-CY Lee <michael-cy.lee@mediatek.com >
Link: https://patch.msgid.link/20250311103646.43346-3-nbd@nbd.name
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:04 +01:00
Rex Lu
8d38abdf6c
wifi: mt76: mt7996: fix SER reset trigger on WED reset
...
The firmware needs a specific trigger when WED is being reset due to an
ethernet reset condition. This helps prevent further L1 SER failure.
Signed-off-by: Rex Lu <rex.lu@mediatek.com >
Link: https://patch.msgid.link/20250311103646.43346-2-nbd@nbd.name
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:04 +01:00
Benjamin Lin
593c829b43
wifi: mt76: mt7996: revise TXS size
...
Size of MPDU/PPDU TXS is 12 DWs.
In mt7996/mt7992, last 4 DWs are reserved, so TXS size was mistakenly
considered to be 8 DWs. However, in mt7990, 9th DW of TXS starts to be used.
Signed-off-by: Benjamin Lin <benjamin-jw.lin@mediatek.com >
Link: https://patch.msgid.link/20250311103646.43346-1-nbd@nbd.name
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:04 +01:00
Razvan Grigore
6fc82f6587
wifi: mt76: mt7996: cleanup mt7996_get_power_bound
...
Refactor for making use of mt76_get_power_bound instead of the specific
mt7996_get_power_bound, since we need this for other chipsets as well
when calculating txpower
Signed-off-by: Razvan Grigore <razvan.grigore@vampirebyte.ro >
Link: https://patch.msgid.link/20250211081247.5892-6-razvan.grigore@vampirebyte.ro
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:04 +01:00
Razvan Grigore
b4446a000b
wifi: mt76: mt7915: cleanup mt7915_get_power_bound
...
Refactor for making use of mt76_get_power_bound instead of the specific
mt7915_get_power_bound, since we need this for other chipsets as well
when calculating txpower
Signed-off-by: Razvan Grigore <razvan.grigore@vampirebyte.ro >
Link: https://patch.msgid.link/20250211081247.5892-5-razvan.grigore@vampirebyte.ro
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:04 +01:00
Razvan Grigore
764bf16699
wifi: mt76: add mt76_get_power_bound helper function
...
This will replace mt7915_get_power_bound function from b/mt7915/mcu.h,
since we will need it also for mt7921 and mt7925
Signed-off-by: Razvan Grigore <razvan.grigore@vampirebyte.ro >
Link: https://patch.msgid.link/20250211081247.5892-2-razvan.grigore@vampirebyte.ro
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:04 +01:00
Ming Yen Hsieh
51ac8dbb70
wifi: mt76: mt7925: add MTCL support to enhance the regulatory compliance
...
Apply the MTCL configuration to improving channel availability and
regulatory compliance if MTCL table is supported.
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com >
Link: https://patch.msgid.link/20250304113649.867387-6-mingyen.hsieh@mediatek.com
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:04 +01:00
Ming Yen Hsieh
7cebc2300d
wifi: mt76: mt792x: extend MTCL of APCI to version3 for EHT control
...
This patch introduces version 3 of the MTCL table, which provides
regulatory information for WiFi 7. It also configured by the platform
vender like the version 1 and 2.
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com >
Link: https://patch.msgid.link/20250304113649.867387-5-mingyen.hsieh@mediatek.com
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:04 +01:00
Ming Yen Hsieh
b4ea6fdfc0
wifi: mt76: mt7925: remove unused acpi function for clc
...
The code for handling ACPI configuration in CLC was copied from the mt7921
driver but is not utilized in the mt7925 implementation. So removes the
unused functionality to clean up the codebase.
Cc: stable@vger.kernel.org
Fixes: c948b5da6b ("wifi: mt76: mt7925: add Mediatek Wi-Fi7 driver for mt7925 chips")
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com >
Link: https://patch.msgid.link/20250304113649.867387-4-mingyen.hsieh@mediatek.com
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:04 +01:00
Ming Yen Hsieh
91b3790240
wifi: mt76: mt7925: update the channel usage when the regd domain changed
...
The 5.9/6GHz channel license of a certain platform device has been
regulated in various countries. That may be difference with standard Liunx
regulatory domain settings. In this case, when .reg_notifier() called for
regulatory change, mt7925 chipset should update the channel usage based on
CLC data.
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com >
Link: https://patch.msgid.link/20250304113649.867387-3-mingyen.hsieh@mediatek.com
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:04 +01:00
Ming Yen Hsieh
f0317215b3
wifi: mt76: mt7925: add EHT control support based on the CLC data
...
Some countries do not support EHT modulation for now. To prevent violating
regulations, the MT7925 chipset should control the EHT capabilities.
Therefore, when a regulatory domain change is detected during scanning,
the `mt7925_regd_be_ctrl` will process the CLC data to update the EHT
capabilities.
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com >
Link: https://patch.msgid.link/20250304113649.867387-2-mingyen.hsieh@mediatek.com
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:03 +01:00
Ming Yen Hsieh
f2027ef3f7
wifi: mt76: mt7925: load the appropriate CLC data based on hardware type
...
Read the EEPROM to determine the hardware type and uses this to load the
correct CLC data.
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com >
Link: https://patch.msgid.link/20250304113649.867387-1-mingyen.hsieh@mediatek.com
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:03 +01:00
Ming Yen Hsieh
276a568832
wifi: mt76: mt7925: update the power-saving flow
...
After joining MLO, ensure that all links are setup before
enabling power-saving.
Fixes: 86c051f2c4 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
Cc: stable@vger.kernel.org
Co-developed-by: Sean Wang <sean.wang@mediatek.com >
Signed-off-by: Sean Wang <sean.wang@mediatek.com >
Tested-by: Caleb Jorden <cjorden@gmail.com >
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com >
Link: https://patch.msgid.link/20250305000851.493671-6-sean.wang@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:03 +01:00
Ming Yen Hsieh
cb1353ef34
wifi: mt76: mt7925: integrate *mlo_sta_cmd and *sta_cmd
...
Integrate *mlo_sta_cmd and *sta_cmd for the MLO firmware.
Fixes: 86c051f2c4 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
Cc: stable@vger.kernel.org
Co-developed-by: Sean Wang <sean.wang@mediatek.com >
Signed-off-by: Sean Wang <sean.wang@mediatek.com >
Tested-by: Caleb Jorden <cjorden@gmail.com >
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com >
Link: https://patch.msgid.link/20250305000851.493671-5-sean.wang@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:03 +01:00
Ming Yen Hsieh
0ebb60da84
wifi: mt76: mt7925: adjust rm BSS flow to prevent next connection failure
...
Removing BSS without removing STAREC first will cause firmware
abnormal and next connection fail.
Fixes: 816161051a ("wifi: mt76: mt7925: Cleanup MLO settings post-disconnection")
Cc: stable@vger.kernel.org
Co-developed-by: Sean Wang <sean.wang@mediatek.com >
Signed-off-by: Sean Wang <sean.wang@mediatek.com >
Tested-by: Caleb Jorden <cjorden@gmail.com >
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com >
Link: https://patch.msgid.link/20250305000851.493671-4-sean.wang@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:03 +01:00
Ming Yen Hsieh
7dcea6fe33
wifi: mt76: mt7925: fix the wrong simultaneous cap for MLO
...
The mt7925 chip is only support a single radio, so the maximum
number of simultaneous should be 0.
Fixes: 86c051f2c4 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
Cc: stable@vger.kernel.org
Co-developed-by: Sean Wang <sean.wang@mediatek.com >
Signed-off-by: Sean Wang <sean.wang@mediatek.com >
Tested-by: Caleb Jorden <cjorden@gmail.com >
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com >
Link: https://patch.msgid.link/20250305000851.493671-3-sean.wang@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:03 +01:00
Ming Yen Hsieh
4bada9b0a2
wifi: mt76: mt7925: fix the wrong link_idx when a p2p_device is present
...
When the p2p device and MLO station are running concurrently, the p2p device
will occupy the wrong link_idx when the MLO secondary link is added.
Fixes: 9e4c3a007f ("wifi: mt76: connac: Extend mt76_connac_mcu_uni_add_dev for MLO")
Cc: stable@vger.kernel.org
Co-developed-by: Sean Wang <sean.wang@mediatek.com >
Signed-off-by: Sean Wang <sean.wang@mediatek.com >
Tested-by: Caleb Jorden <cjorden@gmail.com >
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com >
Link: https://patch.msgid.link/20250305000851.493671-2-sean.wang@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:03 +01:00
Sean Wang
766ea2cf5a
Revert "wifi: mt76: mt7925: Update mt7925_mcu_uni_[tx,rx]_ba for MLO"
...
For MLO, mac80211 will send the BA action for each link to
the driver, so the driver does not need to handle it itself.
Therefore, revert this patch.
Fixes: eb2a9a12c6 ("wifi: mt76: mt7925: Update mt7925_mcu_uni_[tx,rx]_ba for MLO")
Cc: stable@vger.kernel.org
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com >
Tested-by: Caleb Jorden <cjorden@gmail.com >
Signed-off-by: Sean Wang <sean.wang@mediatek.com >
Link: https://patch.msgid.link/20250305000851.493671-1-sean.wang@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:03 +01:00
Ming Yen Hsieh
adc3fd2a22
wifi: mt76: mt7921: fix kernel panic due to null pointer dereference
...
Address a kernel panic caused by a null pointer dereference in the
`mt792x_rx_get_wcid` function. The issue arises because the `deflink` structure
is not properly initialized with the `sta` context. This patch ensures that the
`deflink` structure is correctly linked to the `sta` context, preventing the
null pointer dereference.
BUG: kernel NULL pointer dereference, address: 0000000000000400
#PF: supervisor read access in kernel mode
#PF: error_code(0x0000) - not-present page
PGD 0 P4D 0
Oops: Oops: 0000 [#1 ] PREEMPT SMP NOPTI
CPU: 0 UID: 0 PID: 470 Comm: mt76-usb-rx phy Not tainted 6.12.13-gentoo-dist #1
Hardware name: /AMD HUDSON-M1, BIOS 4.6.4 11/15/2011
RIP: 0010:mt792x_rx_get_wcid+0x48/0x140 [mt792x_lib]
RSP: 0018:ffffa147c055fd98 EFLAGS: 00010202
RAX: 0000000000000000 RBX: ffff8e9ecb652000 RCX: 0000000000000000
RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffff8e9ecb652000
RBP: 0000000000000685 R08: ffff8e9ec6570000 R09: 0000000000000000
R10: ffff8e9ecd2ca000 R11: ffff8e9f22a217c0 R12: 0000000038010119
R13: 0000000080843801 R14: ffff8e9ec6570000 R15: ffff8e9ecb652000
FS: 0000000000000000(0000) GS:ffff8e9f22a00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000400 CR3: 000000000d2ea000 CR4: 00000000000006f0
Call Trace:
<TASK>
? __die_body.cold+0x19/0x27
? page_fault_oops+0x15a/0x2f0
? search_module_extables+0x19/0x60
? search_bpf_extables+0x5f/0x80
? exc_page_fault+0x7e/0x180
? asm_exc_page_fault+0x26/0x30
? mt792x_rx_get_wcid+0x48/0x140 [mt792x_lib]
mt7921_queue_rx_skb+0x1c6/0xaa0 [mt7921_common]
mt76u_alloc_queues+0x784/0x810 [mt76_usb]
? __pfx___mt76_worker_fn+0x10/0x10 [mt76]
__mt76_worker_fn+0x4f/0x80 [mt76]
kthread+0xd2/0x100
? __pfx_kthread+0x10/0x10
ret_from_fork+0x34/0x50
? __pfx_kthread+0x10/0x10
ret_from_fork_asm+0x1a/0x30
</TASK>
---[ end trace 0000000000000000 ]---
Reported-by: Nick Morrow <usbwifi2024@gmail.com >
Closes: https://github.com/morrownr/USB-WiFi/issues/577
Cc: stable@vger.kernel.org
Fixes: 90c10286b1 ("wifi: mt76: mt7925: Update mt792x_rx_get_wcid for per-link STA")
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com >
Tested-by: Salah Coronya <salah.coronya@gmail.com >
Link: https://patch.msgid.link/20250218033343.1999648-1-mingyen.hsieh@mediatek.com
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:03 +01:00
Quan Zhou
bf39813599
wifi: mt76: mt7925: Simplify HIF suspend handling to avoid suspend fail
...
System suspend failures may occur due to inappropriate
handling of traffic not idle event by the WiFi driver.
The WiFi firmware's traffic not idle indication does
not need to be tied to suspend. Fix the flow to ensuring
the system can suspend properly.
Signed-off-by: Quan Zhou <quan.zhou@mediatek.com >
Link: https://patch.msgid.link/34208c7280325f57a651363d339399eb1744d3b7.1740400998.git.quan.zhou@mediatek.com
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:03 +01:00
Thorsten Blum
ffb9d7bcd3
wifi: mt76: mt7925: Remove unnecessary if-check
...
The if and else branches implement the same logic. Remove the
unnecessary if-check and simplify the code.
Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev >
Link: https://patch.msgid.link/20250223232127.99357-2-thorsten.blum@linux.dev
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:03 +01:00
Haoxiang Li
4bc1da524b
wifi: mt76: Add check for devm_kstrdup()
...
Add check for the return value of devm_kstrdup() in
mt76_get_of_data_from_mtd() to catch potential exception.
Fixes: e7a6a044f9 ("mt76: testmode: move mtd part to mt76_dev")
Cc: stable@vger.kernel.org
Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com >
Link: https://patch.msgid.link/20250219033645.2594753-1-haoxiang_li2024@163.com
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:03 +01:00
Ming Yen Hsieh
6458d760a0
wifi: mt76: mt7925: fix country count limitation for CLC
...
Due to the increase in the number of power tables for 6Ghz on CLC,
the variable nr_country is no longer sufficient to represent the
total quantity. Therefore, we have switched to calculating the
length of clc buf to obtain the correct power table.
Cc: stable@vger.kernel.org
Fixes: c948b5da6b ("wifi: mt76: mt7925: add Mediatek Wi-Fi7 driver for mt7925 chips")
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com >
Link: https://patch.msgid.link/20250116062131.3860198-1-mingyen.hsieh@mediatek.com
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:03 +01:00
Ming Yen Hsieh
8ae45b1f69
wifi: mt76: mt7925: ensure wow pattern command align fw format
...
Align the format of "struct mt7925_wow_pattern_tlv" with
firmware to ensure proper functionality.
Cc: stable@vger.kernel.org
Fixes: c948b5da6b ("wifi: mt76: mt7925: add Mediatek Wi-Fi7 driver for mt7925 chips")
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com >
Link: https://patch.msgid.link/20250116055925.3856856-1-mingyen.hsieh@mediatek.com
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:02 +01:00
Nikita Zhandarovich
77b749520c
wifi: mt76: mt7915: fix possible integer overflows in mt7915_muru_stats_show()
...
Assuming sums of values stored in variables such as sub_total_cnt
and total_ppdu_cnt are big enough to warrant their u64 type, it
makes sense to ensure that their calculation takes into account
possible integer overflow issues.
Play it safe and fix the problem by casting right hand expressions
to u64 as well. Also, slightly adjust tabulation.
Found by Linux Verification Center (linuxtesting.org) with static
analysis tool SVACE.
Fixes: 1966a5078f ("mt76: mt7915: add mu-mimo and ofdma debugfs knobs")
Signed-off-by: Nikita Zhandarovich <n.zhandarovich@fintech.ru >
Link: https://patch.msgid.link/20250114154441.16920-1-n.zhandarovich@fintech.ru
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:02 +01:00
Quan Zhou
2d5630b0c9
wifi: mt76: mt7925: fix fails to enter low power mode in suspend state
...
The mt7925 sometimes fails to enter low power mode during suspend.
This is caused by the chip firmware sending an additional ACK event
to the host after processing the suspend command. Due to timing issues,
this event may not reach the host, causing the chip to get stuck.
To resolve this, the ACK flag in the suspend command is removed,
as it is not needed in the MT7925 architecture. This prevents the
firmware from sending the additional ACK event, ensuring the device
can reliably enter low power mode during suspend.
Signed-off-by: Quan Zhou <quan.zhou@mediatek.com >
Link: https://patch.msgid.link/d056938144a3a0336c3a4e3cec6f271899f32bf7.1736775666.git.quan.zhou@mediatek.com
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:02 +01:00
Ming Yen Hsieh
5fd0ff3b96
wifi: mt76: mt7925: introduce MLO capability control
...
This patch introduces MLO capability control for the MT792x Wi-Fi driver.
It removes the unused `MT792x_CHIP_CAP_MLO_EVT_EN` flag and introduces new
capability flags `MT792x_CHIP_CAP_MLO_EN` and `MT792x_CHIP_CAP_MLO_EML_EN`
to enable MLO and EML features based on firmware capabilities.
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com >
Reviewed-by: Sabeeh Khan <sabeeh-khan@ti.com >
Link: https://patch.msgid.link/20250217081729.1840930-1-mingyen.hsieh@mediatek.com
Signed-off-by: Felix Fietkau <nbd@nbd.name >
2025-03-19 14:47:02 +01:00
Johannes Berg
3fd552b265
Merge tag 'rtw-next-2025-03-13' of https://github.com/pkshih/rtw
...
Ping-Ke Shih says:
====================
rtw-next patches for v6.15
Some minor fixes and refinements of rtw89.
The only major change is rtw88:
* support RTL8814AE/RTL8814AU
====================
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2025-03-19 09:36:47 +01:00
Johannes Berg
cd0b9da682
wifi: nl80211: re-enable multi-link reconfiguration
...
With the recent fixes, we can re-enable multi-link
reconfiguration. Also add a CMD() entry to allow
userspace discovery for it.
Link: https://patch.msgid.link/20250318135009.a95c43837a0f.Ic6ed3d184e5be8ba47c6affa7271daaf824fd823@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2025-03-18 14:52:11 +01:00
Gustavo A. R. Silva
e74c0a7875
wifi: iwlwifi: dvm: Avoid -Wflex-array-member-not-at-end warnings
...
-Wflex-array-member-not-at-end was introduced in GCC-14, and we are
getting ready to enable it, globally.
So, in order to avoid ending up with a flexible-array member in the
middle of multiple other structs, we use the `__struct_group()`
helper to create a new tagged `struct iwl_tx_cmd_hdr`. This structure
groups together all the members of the flexible `struct iwl_tx_cmd`
except the flexible array.
As a result, the array is effectively separated from the rest of the
members without modifying the memory layout of the flexible structure.
We then change the type of the middle struct members currently causing
trouble from `struct iwl_tx_cmd` to `struct iwl_tx_cmd_hdr`.
We also want to ensure that when new members need to be added to the
flexible structure, they are always included within the newly created
tagged struct. For this, we use `static_assert()`. This ensures that the
memory layout for both the flexible structure and the new tagged struct
is the same after any changes.
This approach avoids having to implement `struct iwl_tx_cmd_hdr`
as a completely separate structure, thus preventing having to maintain
two independent but basically identical structures, closing the door
to potential bugs in the future.
So, with these changes, fix the following warnings:
drivers/net/wireless/intel/iwlwifi/dvm/commands.h:2315:27: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
drivers/net/wireless/intel/iwlwifi/dvm/commands.h:2426:27: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org >
Acked-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://patch.msgid.link/Zr5QR03+wyw571zd@elsanto
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2025-03-18 13:54:14 +01:00
Emmanuel Grumbach
db9b4b8311
wifi: iwlwifi: do not use iwlmld for non-wifi7 devices
...
Roll-back to use iwlmvm for those devices. iwlmld will support wifi7
capable devices only. The firmware for the non-wifi7 capable will soon
be frozen and we don't want iwlmld to have to support devices that will
require the old APIs.
Fixes: d1e879ec60 ("wifi: iwlwifi: add iwlmld sub-driver")
Reviewed-by: Miriam Rachel Korenblit <miriam.rachel.korenblit@intel.com >
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com >
Link: https://patch.msgid.link/20250318103019.df6df96df826.I0020ca9f6c6c928caa78721666df131a692c6186@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2025-03-18 13:51:03 +01:00