mbox series

[v2,00/37] Enabling MT7925 MLO Mode Support

Message ID cover.1720248331.git.sean.wang@kernel.org
Headers show
Series Enabling MT7925 MLO Mode Support | expand

Message

Sean Wang July 6, 2024, 8:27 a.m. UTC
From: Sean Wang <sean.wang@kernel.org>

Hi nbd,

We've worked diligently to prepare the driver for the upcoming MLO-enabled
firmware integration in the 6.11 kernel.

We are posting v2 to further enhance and refine the v1 patchset. We hope these
improvements can be included in the mt76 pull request for the merge window.

These patches are rebased on commit "74861fbe2d25" (wifi: mt76: mt7925: simplify
mt7925_mcu_sta_cmd logic by removing fw_offload) in the mt76 tree. If these
changes look okay to you, could you please update them in your tree?

Thank you very much for your assistance.

The details in v2:

Address missing parts and improve driver for the firmware for multilink support

- Added 8 new patches:
  - wifi: mt76: mt7925: add link handling in the BSS_CHANGED_ARP_FILTER handler
  - wifi: mt76: mt7925: add link handling in mt7925_vif_connect_iter
  - wifi: mt76: mt7925: add link handling in the mt7925_ipv6_addr_change
  - wifi: mt76: mt7925: update mt7925_mcu_sta_phy_tlv for MLO
  - wifi: mt76: mt7925: update mt7925_mcu_set_timing for MLO
  - wifi: mt76: mt7925: update mt7925_mcu_bss_basic_tlv for MLO
  - wifi: mt76: mt7925: update mt7925_mac_link_bss_add for MLO
  - wifi: mt76: mt7925: remove the unused mt7925_mcu_set_chan_info

- Updated the following v1 patches with changes:
  - wifi: mt76: mt7925: update mt7925_mcu_bss_mld_tlv for MLO
    1. Update group_mld_id with primary link

  - wifi: mt76: mt7925: update mt7925_mcu_add_bss_info for MLO
    1. Set the bss index per link
    2. Set the BC entry per link

  - wifi: mt76: mt7925: add link handling in mt7925_set_key
    1. Set bss index per link
    2. Fix the issue for setting up the BC key

  - wifi: mt76: mt7925: add mt7925_[assign, unassign]_vif_chanctx
    1. Set the channel context per link

  - wifi: mt76: mt7925: add link handling to mt7925_change_chanctx
    1. Get the channel context per link

  - wifi: mt76: mt7925: add link handling in mt7925_mac_sta_assoc
    1. Set the channel context per link
    2. Update mt7925_mac_select_links to properly calculate the sel_links

  - wifi: mt76: mt7925: update mt76_connac_mcu_uni_add_dev for MLO
    1. Set the omac, band index per link

  - wifi: mt76: mt7925: update mt7925_mcu_sta_update for MLO
    1. Set the bss index per link

  - wifi: mt76: mt7925: add link handling in mt7925_mcu_set_beacon_filter
    1. Add link handling in the call path of disabling beacon filter

  - wifi: mt76: mt7925: update mt7925_mcu_sta_rate_ctrl_tlv for MLO
    1. Get the channel context per link

  - wifi: mt76: mt7925: update mt7925_mac_link_sta_[add, assoc, remove] for MLO
    1. Set the channel context per link
    2. Simplify the logic to get mconf
    3. Get phy idx per link
    4. Also update assoc logic to include the above (1), (2), and (3)

The details in v1:

This patchset introduces comprehensive support for MLO (Multi-Link-
Operation) mode on the MT7925 Wi-Fi driver. It includes driver
modifications to ensure seamless operation specifically with MLO-enabled
firmware environments. The patches included are:

1) Enable the link handling in the existing neccessary functions
   in the driver for MLO mode.
2) Add MCU TLV handling tailored for the MLO-enabled firmware.
3) Implement .change_vif_links and .change_sta_links callbacks for MLO
   mode.
4) Register the MLO capability with mac80211 when the driver is operating
   with the MLO-enabled firmware.

These changes maintain compatibility with non-MLO mode and the older
firmware versions.

Sean Wang (37):
  wifi: mt76: mt7925: update mt76_connac_mcu_uni_add_dev for MLO
  wifi: mt76: mt7925: update mt7925_mac_link_sta_[add, assoc, remove]
    for MLO
  wifi: mt76: mt7925: set Tx queue parameters according to link id
  wifi: mt76: mt7925: set mt7925_mcu_sta_key_tlv according to link id
  wifi: mt76: mt7925: add mt7925_set_link_key
  wifi: mt76: mt7925: extend mt7925_mcu_uni_roc_event
  wifi: mt76: mt7925: add mt7925_change_vif_links
  wifi: mt76: mt7925: add mt7925_change_sta_links
  wifi: mt76: mt7925: add link handling in mt7925_mac_sta_add
  wifi: mt76: mt7925: add link handling in mt7925_mac_sta_remove
  wifi: mt76: mt7925: add link handling to txwi
  wifi: mt76: mt7925: add link handling in mt7925_set_key
  wifi: mt76: mt7925: add link handling to mt7925_change_chanctx
  wifi: mt76: mt7925: add link handling in the BSS_CHANGED_PS handler
  wifi: mt76: mt7925: add link handling in mt7925_mcu_set_beacon_filter
  wifi: mt76: mt7925: add link handling in mt7925_txwi_free
  wifi: mt76: mt7925: add link handling in mt7925_mac_sta_assoc
  wifi: mt76: mt7925: add link handling in mt7925_sta_set_decap_offload
  wifi: mt76: mt7925: add link handling in mt7925_vif_connect_iter
  wifi: mt76: mt7925: add link handling in the BSS_CHANGED_ARP_FILTER
    handler
  wifi: mt76: mt7925: add link handling in the mt7925_ipv6_addr_change
  wifi: mt76: mt7925: update rate index according to link id
  wifi: mt76: mt7925: report link information in rx status
  wifi: mt76: add def_wcid to struct mt76_wcid
  wifi: mt76: mt7925: add mt7925_[assign,unassign]_vif_chanctx
  wifi: mt76: mt7925: update mt7925_mcu_sta_mld_tlv for MLO
  wifi: mt76: mt7925: update mt7925_mcu_bss_mld_tlv for MLO
  wifi: mt76: mt7925: update mt7925_mcu_add_bss_info for MLO
  wifi: mt76: mt7925: update mt7925_mcu_sta_update for MLO
  wifi: mt76: mt7925: add mt7925_mcu_sta_eht_mld_tlv for MLO
  wifi: mt76: mt7925: update mt7925_mcu_sta_rate_ctrl_tlv for MLO
  wifi: mt76: mt7925: update mt7925_mcu_sta_phy_tlv for MLO
  wifi: mt76: mt7925: update mt7925_mcu_set_timing for MLO
  wifi: mt76: mt7925: update mt7925_mcu_bss_basic_tlv for MLO
  wifi: mt76: mt7925: update mt7925_mac_link_bss_add for MLO
  wifi: mt76: mt7925: remove the unused mt7925_mcu_set_chan_info
  wifi: mt76: mt7925: enabling MLO when the firmware supports it

 drivers/net/wireless/mediatek/mt76/mac80211.c |   5 +
 drivers/net/wireless/mediatek/mt76/mt76.h     |   7 +
 .../wireless/mediatek/mt76/mt76_connac_mcu.c  |   6 +-
 .../wireless/mediatek/mt76/mt76_connac_mcu.h  |  11 +
 .../net/wireless/mediatek/mt76/mt7925/init.c  |   6 +
 .../net/wireless/mediatek/mt76/mt7925/mac.c   |  80 +-
 .../net/wireless/mediatek/mt76/mt7925/main.c  | 730 ++++++++++++++++--
 .../net/wireless/mediatek/mt76/mt7925/mcu.c   | 538 +++++++++----
 .../net/wireless/mediatek/mt76/mt7925/mcu.h   |  42 +-
 .../wireless/mediatek/mt76/mt7925/mt7925.h    |  16 +-
 drivers/net/wireless/mediatek/mt76/mt792x.h   |  26 +
 .../net/wireless/mediatek/mt76/mt792x_core.c  |  49 +-
 12 files changed, 1249 insertions(+), 267 deletions(-)