From: Greg Kroah-Hartman Date: Mon, 15 Aug 2022 13:34:54 +0000 (+0200) Subject: drop some unneeded mt76 patches from 5.18 X-Git-Tag: v5.15.61~43 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=08ae2e70d313e803c55ab0ddf401da1964946b9c;p=thirdparty%2Fkernel%2Fstable-queue.git drop some unneeded mt76 patches from 5.18 --- diff --git a/queue-5.18/mt76-connac-move-connac2_mac_write_txwi-in-mt76_conn.patch b/queue-5.18/mt76-connac-move-connac2_mac_write_txwi-in-mt76_conn.patch deleted file mode 100644 index ecbcd198da0..00000000000 --- a/queue-5.18/mt76-connac-move-connac2_mac_write_txwi-in-mt76_conn.patch +++ /dev/null @@ -1,946 +0,0 @@ -From 5536ffc5cd4009a333107d0930b7d281ecfe637f Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 7 Jun 2022 11:28:40 +0200 -Subject: mt76: connac: move connac2_mac_write_txwi in mt76_connac module - -From: Lorenzo Bianconi - -[ Upstream commit 182071cdd594bc79f42899c85afa995c370ef82d ] - -mac_write_txwi code is shared between connac2 devices (mt7915 and -mt7921). Move it in connac module. - -Signed-off-by: Lorenzo Bianconi -Signed-off-by: Felix Fietkau -Signed-off-by: Sasha Levin ---- - .../net/wireless/mediatek/mt76/mt76_connac.h | 6 + - .../wireless/mediatek/mt76/mt76_connac_mac.c | 284 ++++++++++++++++++ - .../net/wireless/mediatek/mt76/mt7915/mac.c | 251 +--------------- - .../net/wireless/mediatek/mt76/mt7915/mcu.c | 2 +- - .../wireless/mediatek/mt76/mt7915/mt7915.h | 1 - - .../net/wireless/mediatek/mt76/mt7921/mac.c | 212 +------------ - .../net/wireless/mediatek/mt76/mt7921/main.c | 2 +- - .../net/wireless/mediatek/mt76/mt7921/mcu.c | 4 +- - .../wireless/mediatek/mt76/mt7921/mt7921.h | 5 - - .../wireless/mediatek/mt76/mt7921/pci_mac.c | 4 +- - 10 files changed, 299 insertions(+), 472 deletions(-) - -diff --git a/drivers/net/wireless/mediatek/mt76/mt76_connac.h b/drivers/net/wireless/mediatek/mt76/mt76_connac.h -index 400ba514460e..a9d7a269fcf3 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt76_connac.h -+++ b/drivers/net/wireless/mediatek/mt76/mt76_connac.h -@@ -12,6 +12,8 @@ - #define MT76_CONNAC_MAX_SCHED_SCAN_SSID 10 - #define MT76_CONNAC_MAX_SCAN_MATCH 16 - -+#define MT76_CONNAC_MAX_WMM_SETS 4 -+ - #define MT76_CONNAC_COREDUMP_TIMEOUT (HZ / 20) - #define MT76_CONNAC_COREDUMP_SZ (1300 * 1024) - -@@ -244,5 +246,9 @@ void mt76_connac_pm_queue_skb(struct ieee80211_hw *hw, - struct sk_buff *skb); - void mt76_connac_pm_dequeue_skbs(struct mt76_phy *phy, - struct mt76_connac_pm *pm); -+void mt76_connac2_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi, -+ struct sk_buff *skb, struct mt76_wcid *wcid, -+ struct ieee80211_key_conf *key, int pid, -+ u32 changed); - - #endif /* __MT76_CONNAC_H */ -diff --git a/drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c b/drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c -index 306e9eaea917..0ea795565c88 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c -+++ b/drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c -@@ -2,6 +2,7 @@ - /* Copyright (C) 2020 MediaTek Inc. */ - - #include "mt76_connac.h" -+#include "mt76_connac2_mac.h" - - int mt76_connac_pm_wake(struct mt76_phy *phy, struct mt76_connac_pm *pm) - { -@@ -115,3 +116,286 @@ void mt76_connac_pm_dequeue_skbs(struct mt76_phy *phy, - mt76_worker_schedule(&phy->dev->tx_worker); - } - EXPORT_SYMBOL_GPL(mt76_connac_pm_dequeue_skbs); -+ -+static u16 -+mt76_connac2_mac_tx_rate_val(struct mt76_phy *mphy, struct ieee80211_vif *vif, -+ bool beacon, bool mcast) -+{ -+ u8 mode = 0, band = mphy->chandef.chan->band; -+ int rateidx = 0, mcast_rate; -+ -+ if (!vif) -+ goto legacy; -+ -+ if (is_mt7921(mphy->dev)) { -+ rateidx = ffs(vif->bss_conf.basic_rates) - 1; -+ goto legacy; -+ } -+ -+ if (beacon) { -+ struct cfg80211_bitrate_mask *mask; -+ -+ mask = &vif->bss_conf.beacon_tx_rate; -+ if (hweight16(mask->control[band].he_mcs[0]) == 1) { -+ rateidx = ffs(mask->control[band].he_mcs[0]) - 1; -+ mode = MT_PHY_TYPE_HE_SU; -+ goto out; -+ } else if (hweight16(mask->control[band].vht_mcs[0]) == 1) { -+ rateidx = ffs(mask->control[band].vht_mcs[0]) - 1; -+ mode = MT_PHY_TYPE_VHT; -+ goto out; -+ } else if (hweight8(mask->control[band].ht_mcs[0]) == 1) { -+ rateidx = ffs(mask->control[band].ht_mcs[0]) - 1; -+ mode = MT_PHY_TYPE_HT; -+ goto out; -+ } else if (hweight32(mask->control[band].legacy) == 1) { -+ rateidx = ffs(mask->control[band].legacy) - 1; -+ goto legacy; -+ } -+ } -+ -+ mcast_rate = vif->bss_conf.mcast_rate[band]; -+ if (mcast && mcast_rate > 0) -+ rateidx = mcast_rate - 1; -+ else -+ rateidx = ffs(vif->bss_conf.basic_rates) - 1; -+ -+legacy: -+ rateidx = mt76_calculate_default_rate(mphy, rateidx); -+ mode = rateidx >> 8; -+ rateidx &= GENMASK(7, 0); -+ -+out: -+ return FIELD_PREP(MT_TX_RATE_IDX, rateidx) | -+ FIELD_PREP(MT_TX_RATE_MODE, mode); -+} -+ -+static void -+mt76_connac2_mac_write_txwi_8023(__le32 *txwi, struct sk_buff *skb, -+ struct mt76_wcid *wcid) -+{ -+ u8 tid = skb->priority & IEEE80211_QOS_CTL_TID_MASK; -+ u8 fc_type, fc_stype; -+ u16 ethertype; -+ bool wmm = false; -+ u32 val; -+ -+ if (wcid->sta) { -+ struct ieee80211_sta *sta; -+ -+ sta = container_of((void *)wcid, struct ieee80211_sta, drv_priv); -+ wmm = sta->wme; -+ } -+ -+ val = FIELD_PREP(MT_TXD1_HDR_FORMAT, MT_HDR_FORMAT_802_3) | -+ FIELD_PREP(MT_TXD1_TID, tid); -+ -+ ethertype = get_unaligned_be16(&skb->data[12]); -+ if (ethertype >= ETH_P_802_3_MIN) -+ val |= MT_TXD1_ETH_802_3; -+ -+ txwi[1] |= cpu_to_le32(val); -+ -+ fc_type = IEEE80211_FTYPE_DATA >> 2; -+ fc_stype = wmm ? IEEE80211_STYPE_QOS_DATA >> 4 : 0; -+ -+ val = FIELD_PREP(MT_TXD2_FRAME_TYPE, fc_type) | -+ FIELD_PREP(MT_TXD2_SUB_TYPE, fc_stype); -+ -+ txwi[2] |= cpu_to_le32(val); -+ -+ val = FIELD_PREP(MT_TXD7_TYPE, fc_type) | -+ FIELD_PREP(MT_TXD7_SUB_TYPE, fc_stype); -+ -+ txwi[7] |= cpu_to_le32(val); -+} -+ -+static void -+mt76_connac2_mac_write_txwi_80211(struct mt76_dev *dev, __le32 *txwi, -+ struct sk_buff *skb, -+ struct ieee80211_key_conf *key) -+{ -+ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; -+ struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)skb->data; -+ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); -+ bool multicast = is_multicast_ether_addr(hdr->addr1); -+ u8 tid = skb->priority & IEEE80211_QOS_CTL_TID_MASK; -+ __le16 fc = hdr->frame_control; -+ u8 fc_type, fc_stype; -+ u32 val; -+ -+ if (ieee80211_is_action(fc) && -+ mgmt->u.action.category == WLAN_CATEGORY_BACK && -+ mgmt->u.action.u.addba_req.action_code == WLAN_ACTION_ADDBA_REQ) { -+ u16 capab = le16_to_cpu(mgmt->u.action.u.addba_req.capab); -+ -+ txwi[5] |= cpu_to_le32(MT_TXD5_ADD_BA); -+ tid = (capab >> 2) & IEEE80211_QOS_CTL_TID_MASK; -+ } else if (ieee80211_is_back_req(hdr->frame_control)) { -+ struct ieee80211_bar *bar = (struct ieee80211_bar *)hdr; -+ u16 control = le16_to_cpu(bar->control); -+ -+ tid = FIELD_GET(IEEE80211_BAR_CTRL_TID_INFO_MASK, control); -+ } -+ -+ val = FIELD_PREP(MT_TXD1_HDR_FORMAT, MT_HDR_FORMAT_802_11) | -+ FIELD_PREP(MT_TXD1_HDR_INFO, -+ ieee80211_get_hdrlen_from_skb(skb) / 2) | -+ FIELD_PREP(MT_TXD1_TID, tid); -+ -+ txwi[1] |= cpu_to_le32(val); -+ -+ fc_type = (le16_to_cpu(fc) & IEEE80211_FCTL_FTYPE) >> 2; -+ fc_stype = (le16_to_cpu(fc) & IEEE80211_FCTL_STYPE) >> 4; -+ -+ val = FIELD_PREP(MT_TXD2_FRAME_TYPE, fc_type) | -+ FIELD_PREP(MT_TXD2_SUB_TYPE, fc_stype) | -+ FIELD_PREP(MT_TXD2_MULTICAST, multicast); -+ -+ if (key && multicast && ieee80211_is_robust_mgmt_frame(skb) && -+ key->cipher == WLAN_CIPHER_SUITE_AES_CMAC) { -+ val |= MT_TXD2_BIP; -+ txwi[3] &= ~cpu_to_le32(MT_TXD3_PROTECT_FRAME); -+ } -+ -+ if (!ieee80211_is_data(fc) || multicast || -+ info->flags & IEEE80211_TX_CTL_USE_MINRATE) -+ val |= MT_TXD2_FIX_RATE; -+ -+ txwi[2] |= cpu_to_le32(val); -+ -+ if (ieee80211_is_beacon(fc)) { -+ txwi[3] &= ~cpu_to_le32(MT_TXD3_SW_POWER_MGMT); -+ txwi[3] |= cpu_to_le32(MT_TXD3_REM_TX_COUNT); -+ if (!is_mt7921(dev)) -+ txwi[7] |= cpu_to_le32(FIELD_PREP(MT_TXD7_SPE_IDX, -+ 0x18)); -+ } -+ -+ if (info->flags & IEEE80211_TX_CTL_INJECTED) { -+ u16 seqno = le16_to_cpu(hdr->seq_ctrl); -+ -+ if (ieee80211_is_back_req(hdr->frame_control)) { -+ struct ieee80211_bar *bar; -+ -+ bar = (struct ieee80211_bar *)skb->data; -+ seqno = le16_to_cpu(bar->start_seq_num); -+ } -+ -+ val = MT_TXD3_SN_VALID | -+ FIELD_PREP(MT_TXD3_SEQ, IEEE80211_SEQ_TO_SN(seqno)); -+ txwi[3] |= cpu_to_le32(val); -+ txwi[7] &= ~cpu_to_le32(MT_TXD7_HW_AMSDU); -+ } -+ -+ if (mt76_is_mmio(dev)) { -+ val = FIELD_PREP(MT_TXD7_TYPE, fc_type) | -+ FIELD_PREP(MT_TXD7_SUB_TYPE, fc_stype); -+ txwi[7] |= cpu_to_le32(val); -+ } else { -+ val = FIELD_PREP(MT_TXD8_L_TYPE, fc_type) | -+ FIELD_PREP(MT_TXD8_L_SUB_TYPE, fc_stype); -+ txwi[8] |= cpu_to_le32(val); -+ } -+} -+ -+void mt76_connac2_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi, -+ struct sk_buff *skb, struct mt76_wcid *wcid, -+ struct ieee80211_key_conf *key, int pid, -+ u32 changed) -+{ -+ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); -+ bool ext_phy = info->hw_queue & MT_TX_HW_QUEUE_EXT_PHY; -+ struct ieee80211_vif *vif = info->control.vif; -+ struct mt76_phy *mphy = &dev->phy; -+ u8 p_fmt, q_idx, omac_idx = 0, wmm_idx = 0, band_idx = 0; -+ u32 val, sz_txd = mt76_is_mmio(dev) ? MT_TXD_SIZE : MT_SDIO_TXD_SIZE; -+ bool is_8023 = info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP; -+ bool beacon = !!(changed & (BSS_CHANGED_BEACON | -+ BSS_CHANGED_BEACON_ENABLED)); -+ bool inband_disc = !!(changed & (BSS_CHANGED_UNSOL_BCAST_PROBE_RESP | -+ BSS_CHANGED_FILS_DISCOVERY)); -+ -+ if (vif) { -+ struct mt76_vif *mvif = (struct mt76_vif *)vif->drv_priv; -+ -+ omac_idx = mvif->omac_idx; -+ wmm_idx = mvif->wmm_idx; -+ band_idx = mvif->band_idx; -+ } -+ -+ if (ext_phy && dev->phy2) -+ mphy = dev->phy2; -+ -+ if (inband_disc) { -+ p_fmt = MT_TX_TYPE_FW; -+ q_idx = MT_LMAC_ALTX0; -+ } else if (beacon) { -+ p_fmt = MT_TX_TYPE_FW; -+ q_idx = MT_LMAC_BCN0; -+ } else if (skb_get_queue_mapping(skb) >= MT_TXQ_PSD) { -+ p_fmt = mt76_is_mmio(dev) ? MT_TX_TYPE_CT : MT_TX_TYPE_SF; -+ q_idx = MT_LMAC_ALTX0; -+ } else { -+ p_fmt = mt76_is_mmio(dev) ? MT_TX_TYPE_CT : MT_TX_TYPE_SF; -+ q_idx = wmm_idx * MT76_CONNAC_MAX_WMM_SETS + -+ mt76_connac_lmac_mapping(skb_get_queue_mapping(skb)); -+ } -+ -+ val = FIELD_PREP(MT_TXD0_TX_BYTES, skb->len + sz_txd) | -+ FIELD_PREP(MT_TXD0_PKT_FMT, p_fmt) | -+ FIELD_PREP(MT_TXD0_Q_IDX, q_idx); -+ txwi[0] = cpu_to_le32(val); -+ -+ val = MT_TXD1_LONG_FORMAT | -+ FIELD_PREP(MT_TXD1_WLAN_IDX, wcid->idx) | -+ FIELD_PREP(MT_TXD1_OWN_MAC, omac_idx); -+ if (!is_mt7921(dev)) -+ val |= MT_TXD1_VTA; -+ if (ext_phy || band_idx) -+ val |= MT_TXD1_TGID; -+ -+ txwi[1] = cpu_to_le32(val); -+ txwi[2] = 0; -+ -+ val = FIELD_PREP(MT_TXD3_REM_TX_COUNT, 15); -+ if (!is_mt7921(dev)) -+ val |= MT_TXD3_SW_POWER_MGMT; -+ if (key) -+ val |= MT_TXD3_PROTECT_FRAME; -+ if (info->flags & IEEE80211_TX_CTL_NO_ACK) -+ val |= MT_TXD3_NO_ACK; -+ -+ txwi[3] = cpu_to_le32(val); -+ txwi[4] = 0; -+ -+ val = FIELD_PREP(MT_TXD5_PID, pid); -+ if (pid >= MT_PACKET_ID_FIRST) -+ val |= MT_TXD5_TX_STATUS_HOST; -+ -+ txwi[5] = cpu_to_le32(val); -+ txwi[6] = 0; -+ txwi[7] = wcid->amsdu ? cpu_to_le32(MT_TXD7_HW_AMSDU) : 0; -+ -+ if (is_8023) -+ mt76_connac2_mac_write_txwi_8023(txwi, skb, wcid); -+ else -+ mt76_connac2_mac_write_txwi_80211(dev, txwi, skb, key); -+ -+ if (txwi[2] & cpu_to_le32(MT_TXD2_FIX_RATE)) { -+ /* Fixed rata is available just for 802.11 txd */ -+ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; -+ bool multicast = is_multicast_ether_addr(hdr->addr1); -+ u16 rate = mt76_connac2_mac_tx_rate_val(mphy, vif, beacon, -+ multicast); -+ u32 val = MT_TXD6_FIXED_BW; -+ -+ /* hardware won't add HTC for mgmt/ctrl frame */ -+ txwi[2] |= cpu_to_le32(MT_TXD2_HTC_VLD); -+ -+ val |= FIELD_PREP(MT_TXD6_TX_RATE, rate); -+ txwi[6] |= cpu_to_le32(val); -+ txwi[3] |= cpu_to_le32(MT_TXD3_BA_DISABLE); -+ } -+} -+EXPORT_SYMBOL_GPL(mt76_connac2_mac_write_txwi); -diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c -index d65a873739af..9bf8db47d103 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c -@@ -1013,265 +1013,18 @@ mt7915_mac_write_txwi_tm(struct mt7915_phy *phy, __le32 *txwi, - #endif - } - --static void --mt7915_mac_write_txwi_8023(__le32 *txwi, struct sk_buff *skb, -- struct mt76_wcid *wcid) --{ -- -- u8 tid = skb->priority & IEEE80211_QOS_CTL_TID_MASK; -- u8 fc_type, fc_stype; -- u16 ethertype; -- bool wmm = false; -- u32 val; -- -- if (wcid->sta) { -- struct ieee80211_sta *sta; -- -- sta = container_of((void *)wcid, struct ieee80211_sta, drv_priv); -- wmm = sta->wme; -- } -- -- val = FIELD_PREP(MT_TXD1_HDR_FORMAT, MT_HDR_FORMAT_802_3) | -- FIELD_PREP(MT_TXD1_TID, tid); -- -- ethertype = get_unaligned_be16(&skb->data[12]); -- if (ethertype >= ETH_P_802_3_MIN) -- val |= MT_TXD1_ETH_802_3; -- -- txwi[1] |= cpu_to_le32(val); -- -- fc_type = IEEE80211_FTYPE_DATA >> 2; -- fc_stype = wmm ? IEEE80211_STYPE_QOS_DATA >> 4 : 0; -- -- val = FIELD_PREP(MT_TXD2_FRAME_TYPE, fc_type) | -- FIELD_PREP(MT_TXD2_SUB_TYPE, fc_stype); -- -- txwi[2] |= cpu_to_le32(val); -- -- val = FIELD_PREP(MT_TXD7_TYPE, fc_type) | -- FIELD_PREP(MT_TXD7_SUB_TYPE, fc_stype); -- txwi[7] |= cpu_to_le32(val); --} -- --static void --mt7915_mac_write_txwi_80211(__le32 *txwi, struct sk_buff *skb, -- struct ieee80211_key_conf *key, bool *mcast) --{ -- struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; -- struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)skb->data; -- struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); -- u8 tid = skb->priority & IEEE80211_QOS_CTL_TID_MASK; -- __le16 fc = hdr->frame_control; -- u8 fc_type, fc_stype; -- u32 val; -- -- *mcast = is_multicast_ether_addr(hdr->addr1); -- -- if (ieee80211_is_action(fc) && -- mgmt->u.action.category == WLAN_CATEGORY_BACK && -- mgmt->u.action.u.addba_req.action_code == WLAN_ACTION_ADDBA_REQ) { -- u16 capab = le16_to_cpu(mgmt->u.action.u.addba_req.capab); -- -- txwi[5] |= cpu_to_le32(MT_TXD5_ADD_BA); -- tid = (capab >> 2) & IEEE80211_QOS_CTL_TID_MASK; -- } else if (ieee80211_is_back_req(hdr->frame_control)) { -- struct ieee80211_bar *bar = (struct ieee80211_bar *)hdr; -- u16 control = le16_to_cpu(bar->control); -- -- tid = FIELD_GET(IEEE80211_BAR_CTRL_TID_INFO_MASK, control); -- } -- -- val = FIELD_PREP(MT_TXD1_HDR_FORMAT, MT_HDR_FORMAT_802_11) | -- FIELD_PREP(MT_TXD1_HDR_INFO, -- ieee80211_get_hdrlen_from_skb(skb) / 2) | -- FIELD_PREP(MT_TXD1_TID, tid); -- txwi[1] |= cpu_to_le32(val); -- -- fc_type = (le16_to_cpu(fc) & IEEE80211_FCTL_FTYPE) >> 2; -- fc_stype = (le16_to_cpu(fc) & IEEE80211_FCTL_STYPE) >> 4; -- -- val = FIELD_PREP(MT_TXD2_FRAME_TYPE, fc_type) | -- FIELD_PREP(MT_TXD2_SUB_TYPE, fc_stype) | -- FIELD_PREP(MT_TXD2_MULTICAST, *mcast); -- -- if (key && *mcast && ieee80211_is_robust_mgmt_frame(skb) && -- key->cipher == WLAN_CIPHER_SUITE_AES_CMAC) { -- val |= MT_TXD2_BIP; -- txwi[3] &= ~cpu_to_le32(MT_TXD3_PROTECT_FRAME); -- } -- -- if (!ieee80211_is_data(fc) || *mcast || -- info->flags & IEEE80211_TX_CTL_USE_MINRATE) -- val |= MT_TXD2_FIX_RATE; -- -- txwi[2] |= cpu_to_le32(val); -- -- if (ieee80211_is_beacon(fc)) { -- txwi[3] &= ~cpu_to_le32(MT_TXD3_SW_POWER_MGMT); -- txwi[3] |= cpu_to_le32(MT_TXD3_REM_TX_COUNT); -- txwi[7] |= cpu_to_le32(FIELD_PREP(MT_TXD7_SPE_IDX, 0x18)); -- } -- -- if (info->flags & IEEE80211_TX_CTL_INJECTED) { -- u16 seqno = le16_to_cpu(hdr->seq_ctrl); -- -- if (ieee80211_is_back_req(hdr->frame_control)) { -- struct ieee80211_bar *bar; -- -- bar = (struct ieee80211_bar *)skb->data; -- seqno = le16_to_cpu(bar->start_seq_num); -- } -- -- val = MT_TXD3_SN_VALID | -- FIELD_PREP(MT_TXD3_SEQ, IEEE80211_SEQ_TO_SN(seqno)); -- txwi[3] |= cpu_to_le32(val); -- txwi[7] &= ~cpu_to_le32(MT_TXD7_HW_AMSDU); -- } -- -- val = FIELD_PREP(MT_TXD7_TYPE, fc_type) | -- FIELD_PREP(MT_TXD7_SUB_TYPE, fc_stype); -- txwi[7] |= cpu_to_le32(val); --} -- --static u16 --mt7915_mac_tx_rate_val(struct mt76_phy *mphy, struct ieee80211_vif *vif, -- bool beacon, bool mcast) --{ -- u8 mode = 0, band = mphy->chandef.chan->band; -- int rateidx = 0, mcast_rate; -- -- if (beacon) { -- struct cfg80211_bitrate_mask *mask; -- -- mask = &vif->bss_conf.beacon_tx_rate; -- if (hweight16(mask->control[band].he_mcs[0]) == 1) { -- rateidx = ffs(mask->control[band].he_mcs[0]) - 1; -- mode = MT_PHY_TYPE_HE_SU; -- goto out; -- } else if (hweight16(mask->control[band].vht_mcs[0]) == 1) { -- rateidx = ffs(mask->control[band].vht_mcs[0]) - 1; -- mode = MT_PHY_TYPE_VHT; -- goto out; -- } else if (hweight8(mask->control[band].ht_mcs[0]) == 1) { -- rateidx = ffs(mask->control[band].ht_mcs[0]) - 1; -- mode = MT_PHY_TYPE_HT; -- goto out; -- } else if (hweight32(mask->control[band].legacy) == 1) { -- rateidx = ffs(mask->control[band].legacy) - 1; -- goto legacy; -- } -- } -- -- mcast_rate = vif->bss_conf.mcast_rate[band]; -- if (mcast && mcast_rate > 0) -- rateidx = mcast_rate - 1; -- else -- rateidx = ffs(vif->bss_conf.basic_rates) - 1; -- --legacy: -- rateidx = mt76_calculate_default_rate(mphy, rateidx); -- mode = rateidx >> 8; -- rateidx &= GENMASK(7, 0); -- --out: -- return FIELD_PREP(MT_TX_RATE_IDX, rateidx) | -- FIELD_PREP(MT_TX_RATE_MODE, mode); --} -- - void mt7915_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi, - struct sk_buff *skb, struct mt76_wcid *wcid, int pid, - struct ieee80211_key_conf *key, u32 changed) - { - struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); -- struct ieee80211_vif *vif = info->control.vif; - struct mt76_phy *mphy = &dev->phy; -- bool ext_phy = info->hw_queue & MT_TX_HW_QUEUE_EXT_PHY; -- u8 p_fmt, q_idx, omac_idx = 0, wmm_idx = 0, band_idx = 0; -- bool is_8023 = info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP; -- bool mcast = false; -- u16 tx_count = 15; -- u32 val; -- bool beacon = !!(changed & (BSS_CHANGED_BEACON | -- BSS_CHANGED_BEACON_ENABLED)); -- bool inband_disc = !!(changed & (BSS_CHANGED_UNSOL_BCAST_PROBE_RESP | -- BSS_CHANGED_FILS_DISCOVERY)); - -- if (vif) { -- struct mt7915_vif *mvif = (struct mt7915_vif *)vif->drv_priv; -- -- omac_idx = mvif->mt76.omac_idx; -- wmm_idx = mvif->mt76.wmm_idx; -- band_idx = mvif->mt76.band_idx; -- } -- -- if (ext_phy && dev->phy2) -+ if ((info->hw_queue & MT_TX_HW_QUEUE_EXT_PHY) && dev->phy2) - mphy = dev->phy2; - -- if (inband_disc) { -- p_fmt = MT_TX_TYPE_FW; -- q_idx = MT_LMAC_ALTX0; -- } else if (beacon) { -- p_fmt = MT_TX_TYPE_FW; -- q_idx = MT_LMAC_BCN0; -- } else if (skb_get_queue_mapping(skb) >= MT_TXQ_PSD) { -- p_fmt = MT_TX_TYPE_CT; -- q_idx = MT_LMAC_ALTX0; -- } else { -- p_fmt = MT_TX_TYPE_CT; -- q_idx = wmm_idx * MT7915_MAX_WMM_SETS + -- mt76_connac_lmac_mapping(skb_get_queue_mapping(skb)); -- } -- -- val = FIELD_PREP(MT_TXD0_TX_BYTES, skb->len + MT_TXD_SIZE) | -- FIELD_PREP(MT_TXD0_PKT_FMT, p_fmt) | -- FIELD_PREP(MT_TXD0_Q_IDX, q_idx); -- txwi[0] = cpu_to_le32(val); -- -- val = MT_TXD1_LONG_FORMAT | MT_TXD1_VTA | -- FIELD_PREP(MT_TXD1_WLAN_IDX, wcid->idx) | -- FIELD_PREP(MT_TXD1_OWN_MAC, omac_idx); -- -- if (ext_phy || band_idx) -- val |= MT_TXD1_TGID; -- -- txwi[1] = cpu_to_le32(val); -- -- txwi[2] = 0; -+ mt76_connac2_mac_write_txwi(dev, txwi, skb, wcid, key, pid, changed); - -- val = MT_TXD3_SW_POWER_MGMT | -- FIELD_PREP(MT_TXD3_REM_TX_COUNT, tx_count); -- if (key) -- val |= MT_TXD3_PROTECT_FRAME; -- if (info->flags & IEEE80211_TX_CTL_NO_ACK) -- val |= MT_TXD3_NO_ACK; -- -- txwi[3] = cpu_to_le32(val); -- txwi[4] = 0; -- -- val = FIELD_PREP(MT_TXD5_PID, pid); -- if (pid >= MT_PACKET_ID_FIRST) -- val |= MT_TXD5_TX_STATUS_HOST; -- txwi[5] = cpu_to_le32(val); -- -- txwi[6] = 0; -- txwi[7] = wcid->amsdu ? cpu_to_le32(MT_TXD7_HW_AMSDU) : 0; -- -- if (is_8023) -- mt7915_mac_write_txwi_8023(txwi, skb, wcid); -- else -- mt7915_mac_write_txwi_80211(txwi, skb, key, &mcast); -- -- if (txwi[2] & cpu_to_le32(MT_TXD2_FIX_RATE)) { -- u16 rate = mt7915_mac_tx_rate_val(mphy, vif, beacon, mcast); -- -- /* hardware won't add HTC for mgmt/ctrl frame */ -- txwi[2] |= cpu_to_le32(MT_TXD2_HTC_VLD); -- -- val = MT_TXD6_FIXED_BW | -- FIELD_PREP(MT_TXD6_TX_RATE, rate); -- txwi[6] |= cpu_to_le32(val); -- txwi[3] |= cpu_to_le32(MT_TXD3_BA_DISABLE); -- } - - if (mt76_testmode_enabled(mphy)) - mt7915_mac_write_txwi_tm(mphy->priv, txwi, skb); -diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c -index 0ef3952bc33c..695c38a6f90c 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c -@@ -2701,7 +2701,7 @@ int mt7915_mcu_set_tx(struct mt7915_dev *dev, struct ieee80211_vif *vif) - struct edca *e = &req.edca[ac]; - - e->set = WMM_PARAM_SET; -- e->queue = ac + mvif->mt76.wmm_idx * MT7915_MAX_WMM_SETS; -+ e->queue = ac + mvif->mt76.wmm_idx * MT76_CONNAC_MAX_WMM_SETS; - e->aifs = q->aifs; - e->txop = cpu_to_le16(q->txop); - -diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h b/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h -index 41d76e24dd8b..6e4bff51b427 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h -+++ b/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h -@@ -10,7 +10,6 @@ - #include "regs.h" - - #define MT7915_MAX_INTERFACES 19 --#define MT7915_MAX_WMM_SETS 4 - #define MT7915_WTBL_SIZE 288 - #define MT7916_WTBL_SIZE 544 - #define MT7915_WTBL_RESERVED (mt7915_wtbl_size(dev) - 1) -diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mac.c b/drivers/net/wireless/mediatek/mt76/mt7921/mac.c -index 3ae7989c8500..297f3630537e 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7921/mac.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7921/mac.c -@@ -808,216 +808,6 @@ mt7921_mac_fill_rx(struct mt7921_dev *dev, struct sk_buff *skb) - return 0; - } - --static void --mt7921_mac_write_txwi_8023(__le32 *txwi, struct sk_buff *skb, -- struct mt76_wcid *wcid) --{ -- u8 tid = skb->priority & IEEE80211_QOS_CTL_TID_MASK; -- u8 fc_type, fc_stype; -- u16 ethertype; -- bool wmm = false; -- u32 val; -- -- if (wcid->sta) { -- struct ieee80211_sta *sta; -- -- sta = container_of((void *)wcid, struct ieee80211_sta, drv_priv); -- wmm = sta->wme; -- } -- -- val = FIELD_PREP(MT_TXD1_HDR_FORMAT, MT_HDR_FORMAT_802_3) | -- FIELD_PREP(MT_TXD1_TID, tid); -- -- ethertype = get_unaligned_be16(&skb->data[12]); -- if (ethertype >= ETH_P_802_3_MIN) -- val |= MT_TXD1_ETH_802_3; -- -- txwi[1] |= cpu_to_le32(val); -- -- fc_type = IEEE80211_FTYPE_DATA >> 2; -- fc_stype = wmm ? IEEE80211_STYPE_QOS_DATA >> 4 : 0; -- -- val = FIELD_PREP(MT_TXD2_FRAME_TYPE, fc_type) | -- FIELD_PREP(MT_TXD2_SUB_TYPE, fc_stype); -- -- txwi[2] |= cpu_to_le32(val); -- -- val = FIELD_PREP(MT_TXD7_TYPE, fc_type) | -- FIELD_PREP(MT_TXD7_SUB_TYPE, fc_stype); -- txwi[7] |= cpu_to_le32(val); --} -- --static void --mt7921_mac_write_txwi_80211(struct mt76_dev *dev, __le32 *txwi, -- struct sk_buff *skb, struct ieee80211_key_conf *key) --{ -- struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; -- struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)skb->data; -- struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); -- bool multicast = is_multicast_ether_addr(hdr->addr1); -- u8 tid = skb->priority & IEEE80211_QOS_CTL_TID_MASK; -- __le16 fc = hdr->frame_control; -- u8 fc_type, fc_stype; -- u32 val; -- -- if (ieee80211_is_action(fc) && -- mgmt->u.action.category == WLAN_CATEGORY_BACK && -- mgmt->u.action.u.addba_req.action_code == WLAN_ACTION_ADDBA_REQ) { -- u16 capab = le16_to_cpu(mgmt->u.action.u.addba_req.capab); -- -- txwi[5] |= cpu_to_le32(MT_TXD5_ADD_BA); -- tid = (capab >> 2) & IEEE80211_QOS_CTL_TID_MASK; -- } else if (ieee80211_is_back_req(hdr->frame_control)) { -- struct ieee80211_bar *bar = (struct ieee80211_bar *)hdr; -- u16 control = le16_to_cpu(bar->control); -- -- tid = FIELD_GET(IEEE80211_BAR_CTRL_TID_INFO_MASK, control); -- } -- -- val = FIELD_PREP(MT_TXD1_HDR_FORMAT, MT_HDR_FORMAT_802_11) | -- FIELD_PREP(MT_TXD1_HDR_INFO, -- ieee80211_get_hdrlen_from_skb(skb) / 2) | -- FIELD_PREP(MT_TXD1_TID, tid); -- txwi[1] |= cpu_to_le32(val); -- -- fc_type = (le16_to_cpu(fc) & IEEE80211_FCTL_FTYPE) >> 2; -- fc_stype = (le16_to_cpu(fc) & IEEE80211_FCTL_STYPE) >> 4; -- -- val = FIELD_PREP(MT_TXD2_FRAME_TYPE, fc_type) | -- FIELD_PREP(MT_TXD2_SUB_TYPE, fc_stype) | -- FIELD_PREP(MT_TXD2_MULTICAST, multicast); -- -- if (key && multicast && ieee80211_is_robust_mgmt_frame(skb) && -- key->cipher == WLAN_CIPHER_SUITE_AES_CMAC) { -- val |= MT_TXD2_BIP; -- txwi[3] &= ~cpu_to_le32(MT_TXD3_PROTECT_FRAME); -- } -- -- if (!ieee80211_is_data(fc) || multicast || -- info->flags & IEEE80211_TX_CTL_USE_MINRATE) -- val |= MT_TXD2_FIX_RATE; -- -- txwi[2] |= cpu_to_le32(val); -- -- if (ieee80211_is_beacon(fc)) { -- txwi[3] &= ~cpu_to_le32(MT_TXD3_SW_POWER_MGMT); -- txwi[3] |= cpu_to_le32(MT_TXD3_REM_TX_COUNT); -- } -- -- if (info->flags & IEEE80211_TX_CTL_INJECTED) { -- u16 seqno = le16_to_cpu(hdr->seq_ctrl); -- -- if (ieee80211_is_back_req(hdr->frame_control)) { -- struct ieee80211_bar *bar; -- -- bar = (struct ieee80211_bar *)skb->data; -- seqno = le16_to_cpu(bar->start_seq_num); -- } -- -- val = MT_TXD3_SN_VALID | -- FIELD_PREP(MT_TXD3_SEQ, IEEE80211_SEQ_TO_SN(seqno)); -- txwi[3] |= cpu_to_le32(val); -- txwi[7] &= ~cpu_to_le32(MT_TXD7_HW_AMSDU); -- } -- -- if (mt76_is_mmio(dev)) { -- val = FIELD_PREP(MT_TXD7_TYPE, fc_type) | -- FIELD_PREP(MT_TXD7_SUB_TYPE, fc_stype); -- txwi[7] |= cpu_to_le32(val); -- } else { -- val = FIELD_PREP(MT_TXD8_L_TYPE, fc_type) | -- FIELD_PREP(MT_TXD8_L_SUB_TYPE, fc_stype); -- txwi[8] |= cpu_to_le32(val); -- } --} -- --void mt7921_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi, -- struct sk_buff *skb, struct mt76_wcid *wcid, -- struct ieee80211_key_conf *key, int pid, -- bool beacon) --{ -- struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); -- struct ieee80211_vif *vif = info->control.vif; -- struct mt76_phy *mphy = &dev->phy; -- u8 p_fmt, q_idx, omac_idx = 0, wmm_idx = 0; -- u32 sz_txd = mt76_is_mmio(dev) ? MT_TXD_SIZE : MT_SDIO_TXD_SIZE; -- bool is_8023 = info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP; -- u16 tx_count = 15; -- u32 val; -- -- if (vif) { -- struct mt76_vif *mvif = (struct mt76_vif *)vif->drv_priv; -- -- omac_idx = mvif->omac_idx; -- wmm_idx = mvif->wmm_idx; -- } -- -- if (beacon) { -- p_fmt = MT_TX_TYPE_FW; -- q_idx = MT_LMAC_BCN0; -- } else if (skb_get_queue_mapping(skb) >= MT_TXQ_PSD) { -- p_fmt = mt76_is_mmio(dev) ? MT_TX_TYPE_CT : MT_TX_TYPE_SF; -- q_idx = MT_LMAC_ALTX0; -- } else { -- p_fmt = mt76_is_mmio(dev) ? MT_TX_TYPE_CT : MT_TX_TYPE_SF; -- q_idx = wmm_idx * MT7921_MAX_WMM_SETS + -- mt76_connac_lmac_mapping(skb_get_queue_mapping(skb)); -- } -- -- val = FIELD_PREP(MT_TXD0_TX_BYTES, skb->len + sz_txd) | -- FIELD_PREP(MT_TXD0_PKT_FMT, p_fmt) | -- FIELD_PREP(MT_TXD0_Q_IDX, q_idx); -- txwi[0] = cpu_to_le32(val); -- -- val = MT_TXD1_LONG_FORMAT | -- FIELD_PREP(MT_TXD1_WLAN_IDX, wcid->idx) | -- FIELD_PREP(MT_TXD1_OWN_MAC, omac_idx); -- -- txwi[1] = cpu_to_le32(val); -- txwi[2] = 0; -- -- 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) -- val |= MT_TXD3_NO_ACK; -- -- txwi[3] = cpu_to_le32(val); -- txwi[4] = 0; -- -- val = FIELD_PREP(MT_TXD5_PID, pid); -- if (pid >= MT_PACKET_ID_FIRST) -- val |= MT_TXD5_TX_STATUS_HOST; -- txwi[5] = cpu_to_le32(val); -- -- txwi[6] = 0; -- txwi[7] = wcid->amsdu ? cpu_to_le32(MT_TXD7_HW_AMSDU) : 0; -- -- if (is_8023) -- mt7921_mac_write_txwi_8023(txwi, skb, wcid); -- else -- mt7921_mac_write_txwi_80211(dev, txwi, skb, key); -- -- if (txwi[2] & cpu_to_le32(MT_TXD2_FIX_RATE)) { -- int rateidx = vif ? ffs(vif->bss_conf.basic_rates) - 1 : 0; -- u16 rate, mode; -- -- /* hardware won't add HTC for mgmt/ctrl frame */ -- txwi[2] |= cpu_to_le32(MT_TXD2_HTC_VLD); -- -- rate = mt76_calculate_default_rate(mphy, rateidx); -- mode = rate >> 8; -- rate &= GENMASK(7, 0); -- rate |= FIELD_PREP(MT_TX_RATE_MODE, mode); -- -- val = MT_TXD6_FIXED_BW | -- FIELD_PREP(MT_TXD6_TX_RATE, rate); -- txwi[6] |= cpu_to_le32(val); -- txwi[3] |= cpu_to_le32(MT_TXD3_BA_DISABLE); -- } --} --EXPORT_SYMBOL_GPL(mt7921_mac_write_txwi); -- - void mt7921_tx_check_aggr(struct ieee80211_sta *sta, __le32 *txwi) - { - struct mt7921_sta *msta; -@@ -1645,7 +1435,7 @@ mt7921_usb_sdio_write_txwi(struct mt7921_dev *dev, struct mt76_wcid *wcid, - __le32 *txwi = (__le32 *)(skb->data - MT_SDIO_TXD_SIZE); - - memset(txwi, 0, MT_SDIO_TXD_SIZE); -- mt7921_mac_write_txwi(&dev->mt76, txwi, skb, wcid, key, pid, false); -+ mt76_connac2_mac_write_txwi(&dev->mt76, txwi, skb, wcid, key, pid, 0); - skb_push(skb, MT_SDIO_TXD_SIZE); - } - -diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/main.c b/drivers/net/wireless/mediatek/mt76/mt7921/main.c -index d7e2bd605117..aa3d92d94353 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7921/main.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7921/main.c -@@ -321,7 +321,7 @@ static int mt7921_add_interface(struct ieee80211_hw *hw, - mvif->mt76.omac_idx = mvif->mt76.idx; - mvif->phy = phy; - mvif->mt76.band_idx = 0; -- mvif->mt76.wmm_idx = mvif->mt76.idx % MT7921_MAX_WMM_SETS; -+ mvif->mt76.wmm_idx = mvif->mt76.idx % MT76_CONNAC_MAX_WMM_SETS; - - ret = mt76_connac_mcu_uni_add_dev(&dev->mphy, vif, &mvif->sta.wcid, - true); -diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c -index c2245be657d4..f2bfa0c4e737 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c -@@ -1226,8 +1226,8 @@ mt7921_mcu_uni_add_beacon_offload(struct mt7921_dev *dev, - return -EINVAL; - } - -- mt7921_mac_write_txwi(&dev->mt76, (__le32 *)(req.beacon_tlv.pkt), skb, -- wcid, NULL, 0, true); -+ mt76_connac2_mac_write_txwi(&dev->mt76, (__le32 *)(req.beacon_tlv.pkt), -+ skb, wcid, NULL, 0, BSS_CHANGED_BEACON); - memcpy(req.beacon_tlv.pkt + MT_TXD_SIZE, skb->data, skb->len); - req.beacon_tlv.pkt_len = cpu_to_le16(MT_TXD_SIZE + skb->len); - req.beacon_tlv.tim_ie_pos = cpu_to_le16(MT_TXD_SIZE + offs.tim_offset); -diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h b/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h -index d105e815fcd4..9b484b389117 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h -+++ b/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h -@@ -10,7 +10,6 @@ - #include "regs.h" - - #define MT7921_MAX_INTERFACES 4 --#define MT7921_MAX_WMM_SETS 4 - #define MT7921_WTBL_SIZE 20 - #define MT7921_WTBL_RESERVED (MT7921_WTBL_SIZE - 1) - #define MT7921_WTBL_STA (MT7921_WTBL_RESERVED - \ -@@ -411,10 +410,6 @@ int mt7921_testmode_cmd(struct ieee80211_hw *hw, struct ieee80211_vif *vif, - void *data, int len); - int mt7921_testmode_dump(struct ieee80211_hw *hw, struct sk_buff *msg, - struct netlink_callback *cb, void *data, int len); --void mt7921_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi, -- struct sk_buff *skb, struct mt76_wcid *wcid, -- struct ieee80211_key_conf *key, int pid, -- bool beacon); - void mt7921_tx_check_aggr(struct ieee80211_sta *sta, __le32 *txwi); - void mt7921_mac_sta_poll(struct mt7921_dev *dev); - int mt7921_mcu_fill_message(struct mt76_dev *mdev, struct sk_buff *skb, -diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/pci_mac.c b/drivers/net/wireless/mediatek/mt76/mt7921/pci_mac.c -index f261cbfae2f3..b0f58bcf70cb 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7921/pci_mac.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7921/pci_mac.c -@@ -72,8 +72,8 @@ int mt7921e_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr, - } - - pid = mt76_tx_status_skb_add(mdev, wcid, tx_info->skb); -- mt7921_mac_write_txwi(mdev, txwi_ptr, tx_info->skb, wcid, key, -- pid, false); -+ mt76_connac2_mac_write_txwi(mdev, txwi_ptr, tx_info->skb, wcid, key, -+ pid, 0); - - txp = (struct mt7921_txp_common *)(txwi + MT_TXD_SIZE); - memset(txp, 0, sizeof(struct mt7921_txp_common)); --- -2.35.1 - diff --git a/queue-5.18/mt76-connac-move-mac-connac2-defs-in-mt76_connac2_ma.patch b/queue-5.18/mt76-connac-move-mac-connac2-defs-in-mt76_connac2_ma.patch deleted file mode 100644 index 1eb83cf8749..00000000000 --- a/queue-5.18/mt76-connac-move-mac-connac2-defs-in-mt76_connac2_ma.patch +++ /dev/null @@ -1,574 +0,0 @@ -From d3d26f6277444cd8f05771aa21dfc0f34386ff67 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 7 Jun 2022 11:28:39 +0200 -Subject: mt76: connac: move mac connac2 defs in mt76_connac2_mac.h - -From: Lorenzo Bianconi - -[ Upstream commit 90211957a640e6933b236e06728578d252f7374f ] - -This is a preliminary patch to share connac2 mac txwi code. - -Signed-off-by: Lorenzo Bianconi -Signed-off-by: Felix Fietkau -Signed-off-by: Sasha Levin ---- - .../wireless/mediatek/mt76/mt76_connac2_mac.h | 167 ++++++++++++++++++ - .../net/wireless/mediatek/mt76/mt7915/mac.h | 142 +-------------- - .../wireless/mediatek/mt76/mt7915/mt7915.h | 14 -- - .../net/wireless/mediatek/mt76/mt7921/mac.h | 123 +------------ - .../wireless/mediatek/mt76/mt7921/mt7921.h | 10 -- - 5 files changed, 171 insertions(+), 285 deletions(-) - create mode 100644 drivers/net/wireless/mediatek/mt76/mt76_connac2_mac.h - -diff --git a/drivers/net/wireless/mediatek/mt76/mt76_connac2_mac.h b/drivers/net/wireless/mediatek/mt76/mt76_connac2_mac.h -new file mode 100644 -index 000000000000..c9d9c8475a38 ---- /dev/null -+++ b/drivers/net/wireless/mediatek/mt76/mt76_connac2_mac.h -@@ -0,0 +1,167 @@ -+/* SPDX-License-Identifier: ISC */ -+/* Copyright (C) 2022 MediaTek Inc. */ -+ -+#ifndef __MT76_CONNAC2_MAC_H -+#define __MT76_CONNAC2_MAC_H -+ -+enum tx_header_format { -+ MT_HDR_FORMAT_802_3, -+ MT_HDR_FORMAT_CMD, -+ MT_HDR_FORMAT_802_11, -+ MT_HDR_FORMAT_802_11_EXT, -+}; -+ -+enum tx_pkt_type { -+ MT_TX_TYPE_CT, -+ MT_TX_TYPE_SF, -+ MT_TX_TYPE_CMD, -+ MT_TX_TYPE_FW, -+}; -+ -+enum { -+ MT_CTX0, -+ MT_HIF0 = 0x0, -+ -+ MT_LMAC_AC00 = 0x0, -+ MT_LMAC_AC01, -+ MT_LMAC_AC02, -+ MT_LMAC_AC03, -+ MT_LMAC_ALTX0 = 0x10, -+ MT_LMAC_BMC0, -+ MT_LMAC_BCN0, -+ MT_LMAC_PSMP0, -+}; -+ -+#define MT_TXD_SIZE (8 * 4) -+#define MT_SDIO_TXD_SIZE (MT_TXD_SIZE + 8 * 4) -+#define MT_SDIO_TAIL_SIZE 8 -+#define MT_SDIO_HDR_SIZE 4 -+#define MT_USB_TAIL_SIZE 4 -+ -+#define MT_TXD0_Q_IDX GENMASK(31, 25) -+#define MT_TXD0_PKT_FMT GENMASK(24, 23) -+#define MT_TXD0_ETH_TYPE_OFFSET GENMASK(22, 16) -+#define MT_TXD0_TX_BYTES GENMASK(15, 0) -+ -+#define MT_TXD1_LONG_FORMAT BIT(31) -+#define MT_TXD1_TGID BIT(30) -+#define MT_TXD1_OWN_MAC GENMASK(29, 24) -+#define MT_TXD1_AMSDU BIT(23) -+#define MT_TXD1_TID GENMASK(22, 20) -+#define MT_TXD1_HDR_PAD GENMASK(19, 18) -+#define MT_TXD1_HDR_FORMAT GENMASK(17, 16) -+#define MT_TXD1_HDR_INFO GENMASK(15, 11) -+#define MT_TXD1_ETH_802_3 BIT(15) -+#define MT_TXD1_VTA BIT(10) -+#define MT_TXD1_WLAN_IDX GENMASK(9, 0) -+ -+#define MT_TXD2_FIX_RATE BIT(31) -+#define MT_TXD2_FIXED_RATE BIT(30) -+#define MT_TXD2_POWER_OFFSET GENMASK(29, 24) -+#define MT_TXD2_MAX_TX_TIME GENMASK(23, 16) -+#define MT_TXD2_FRAG GENMASK(15, 14) -+#define MT_TXD2_HTC_VLD BIT(13) -+#define MT_TXD2_DURATION BIT(12) -+#define MT_TXD2_BIP BIT(11) -+#define MT_TXD2_MULTICAST BIT(10) -+#define MT_TXD2_RTS BIT(9) -+#define MT_TXD2_SOUNDING BIT(8) -+#define MT_TXD2_NDPA BIT(7) -+#define MT_TXD2_NDP BIT(6) -+#define MT_TXD2_FRAME_TYPE GENMASK(5, 4) -+#define MT_TXD2_SUB_TYPE GENMASK(3, 0) -+ -+#define MT_TXD3_SN_VALID BIT(31) -+#define MT_TXD3_PN_VALID BIT(30) -+#define MT_TXD3_SW_POWER_MGMT BIT(29) -+#define MT_TXD3_BA_DISABLE BIT(28) -+#define MT_TXD3_SEQ GENMASK(27, 16) -+#define MT_TXD3_REM_TX_COUNT GENMASK(15, 11) -+#define MT_TXD3_TX_COUNT GENMASK(10, 6) -+#define MT_TXD3_TIMING_MEASURE BIT(5) -+#define MT_TXD3_DAS BIT(4) -+#define MT_TXD3_EEOSP BIT(3) -+#define MT_TXD3_EMRD BIT(2) -+#define MT_TXD3_PROTECT_FRAME BIT(1) -+#define MT_TXD3_NO_ACK BIT(0) -+ -+#define MT_TXD4_PN_LOW GENMASK(31, 0) -+ -+#define MT_TXD5_PN_HIGH GENMASK(31, 16) -+#define MT_TXD5_MD BIT(15) -+#define MT_TXD5_ADD_BA BIT(14) -+#define MT_TXD5_TX_STATUS_HOST BIT(10) -+#define MT_TXD5_TX_STATUS_MCU BIT(9) -+#define MT_TXD5_TX_STATUS_FMT BIT(8) -+#define MT_TXD5_PID GENMASK(7, 0) -+ -+#define MT_TXD6_TX_IBF BIT(31) -+#define MT_TXD6_TX_EBF BIT(30) -+#define MT_TXD6_TX_RATE GENMASK(29, 16) -+#define MT_TXD6_SGI GENMASK(15, 14) -+#define MT_TXD6_HELTF GENMASK(13, 12) -+#define MT_TXD6_LDPC BIT(11) -+#define MT_TXD6_SPE_ID_IDX BIT(10) -+#define MT_TXD6_ANT_ID GENMASK(7, 4) -+#define MT_TXD6_DYN_BW BIT(3) -+#define MT_TXD6_FIXED_BW BIT(2) -+#define MT_TXD6_BW GENMASK(1, 0) -+ -+#define MT_TXD7_TXD_LEN GENMASK(31, 30) -+#define MT_TXD7_UDP_TCP_SUM BIT(29) -+#define MT_TXD7_IP_SUM BIT(28) -+#define MT_TXD7_TYPE GENMASK(21, 20) -+#define MT_TXD7_SUB_TYPE GENMASK(19, 16) -+ -+#define MT_TXD7_PSE_FID GENMASK(27, 16) -+#define MT_TXD7_SPE_IDX GENMASK(15, 11) -+#define MT_TXD7_HW_AMSDU BIT(10) -+#define MT_TXD7_TX_TIME GENMASK(9, 0) -+ -+#define MT_TXD8_L_TYPE GENMASK(5, 4) -+#define MT_TXD8_L_SUB_TYPE GENMASK(3, 0) -+ -+#define MT_TX_RATE_STBC BIT(13) -+#define MT_TX_RATE_NSS GENMASK(12, 10) -+#define MT_TX_RATE_MODE GENMASK(9, 6) -+#define MT_TX_RATE_SU_EXT_TONE BIT(5) -+#define MT_TX_RATE_DCM BIT(4) -+/* VHT/HE only use bits 0-3 */ -+#define MT_TX_RATE_IDX GENMASK(5, 0) -+ -+#define MT_TXS0_FIXED_RATE BIT(31) -+#define MT_TXS0_BW GENMASK(30, 29) -+#define MT_TXS0_TID GENMASK(28, 26) -+#define MT_TXS0_AMPDU BIT(25) -+#define MT_TXS0_TXS_FORMAT GENMASK(24, 23) -+#define MT_TXS0_BA_ERROR BIT(22) -+#define MT_TXS0_PS_FLAG BIT(21) -+#define MT_TXS0_TXOP_TIMEOUT BIT(20) -+#define MT_TXS0_BIP_ERROR BIT(19) -+ -+#define MT_TXS0_QUEUE_TIMEOUT BIT(18) -+#define MT_TXS0_RTS_TIMEOUT BIT(17) -+#define MT_TXS0_ACK_TIMEOUT BIT(16) -+#define MT_TXS0_ACK_ERROR_MASK GENMASK(18, 16) -+ -+#define MT_TXS0_TX_STATUS_HOST BIT(15) -+#define MT_TXS0_TX_STATUS_MCU BIT(14) -+#define MT_TXS0_TX_RATE GENMASK(13, 0) -+ -+#define MT_TXS1_SEQNO GENMASK(31, 20) -+#define MT_TXS1_RESP_RATE GENMASK(19, 16) -+#define MT_TXS1_RXV_SEQNO GENMASK(15, 8) -+#define MT_TXS1_TX_POWER_DBM GENMASK(7, 0) -+ -+#define MT_TXS2_BF_STATUS GENMASK(31, 30) -+#define MT_TXS2_LAST_TX_RATE GENMASK(29, 27) -+#define MT_TXS2_SHARED_ANTENNA BIT(26) -+#define MT_TXS2_WCID GENMASK(25, 16) -+#define MT_TXS2_TX_DELAY GENMASK(15, 0) -+ -+#define MT_TXS3_PID GENMASK(31, 24) -+#define MT_TXS3_ANT_ID GENMASK(23, 0) -+ -+#define MT_TXS4_TIMESTAMP GENMASK(31, 0) -+ -+#endif /* __MT76_CONNAC2_MAC_H */ -diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mac.h b/drivers/net/wireless/mediatek/mt76/mt7915/mac.h -index 5add1dd36dbe..51496981cb1e 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7915/mac.h -+++ b/drivers/net/wireless/mediatek/mt76/mt7915/mac.h -@@ -4,6 +4,8 @@ - #ifndef __MT7915_MAC_H - #define __MT7915_MAC_H - -+#include "../mt76_connac2_mac.h" -+ - #define MT_CT_PARSE_LEN 72 - #define MT_CT_DMA_BUF_NUM 2 - -@@ -165,20 +167,6 @@ enum rx_pkt_type { - #define MT_CRXV_FOE_HI GENMASK(6, 0) - #define MT_CRXV_FOE_SHIFT 13 - --enum tx_header_format { -- MT_HDR_FORMAT_802_3, -- MT_HDR_FORMAT_CMD, -- MT_HDR_FORMAT_802_11, -- MT_HDR_FORMAT_802_11_EXT, --}; -- --enum tx_pkt_type { -- MT_TX_TYPE_CT, -- MT_TX_TYPE_SF, -- MT_TX_TYPE_CMD, -- MT_TX_TYPE_FW, --}; -- - enum tx_port_idx { - MT_TX_PORT_IDX_LMAC, - MT_TX_PORT_IDX_MCU -@@ -199,97 +187,6 @@ enum tx_mcu_port_q_idx { - #define MT_CT_INFO_HSR2_TX BIT(4) - #define MT_CT_INFO_FROM_HOST BIT(7) - --#define MT_TXD_SIZE (8 * 4) -- --#define MT_TXD0_Q_IDX GENMASK(31, 25) --#define MT_TXD0_PKT_FMT GENMASK(24, 23) --#define MT_TXD0_ETH_TYPE_OFFSET GENMASK(22, 16) --#define MT_TXD0_TX_BYTES GENMASK(15, 0) -- --#define MT_TXD1_LONG_FORMAT BIT(31) --#define MT_TXD1_TGID BIT(30) --#define MT_TXD1_OWN_MAC GENMASK(29, 24) --#define MT_TXD1_AMSDU BIT(23) --#define MT_TXD1_TID GENMASK(22, 20) --#define MT_TXD1_HDR_PAD GENMASK(19, 18) --#define MT_TXD1_HDR_FORMAT GENMASK(17, 16) --#define MT_TXD1_HDR_INFO GENMASK(15, 11) --#define MT_TXD1_ETH_802_3 BIT(15) --#define MT_TXD1_VTA BIT(10) --#define MT_TXD1_WLAN_IDX GENMASK(9, 0) -- --#define MT_TXD2_FIX_RATE BIT(31) --#define MT_TXD2_FIXED_RATE BIT(30) --#define MT_TXD2_POWER_OFFSET GENMASK(29, 24) --#define MT_TXD2_MAX_TX_TIME GENMASK(23, 16) --#define MT_TXD2_FRAG GENMASK(15, 14) --#define MT_TXD2_HTC_VLD BIT(13) --#define MT_TXD2_DURATION BIT(12) --#define MT_TXD2_BIP BIT(11) --#define MT_TXD2_MULTICAST BIT(10) --#define MT_TXD2_RTS BIT(9) --#define MT_TXD2_SOUNDING BIT(8) --#define MT_TXD2_NDPA BIT(7) --#define MT_TXD2_NDP BIT(6) --#define MT_TXD2_FRAME_TYPE GENMASK(5, 4) --#define MT_TXD2_SUB_TYPE GENMASK(3, 0) -- --#define MT_TXD3_SN_VALID BIT(31) --#define MT_TXD3_PN_VALID BIT(30) --#define MT_TXD3_SW_POWER_MGMT BIT(29) --#define MT_TXD3_BA_DISABLE BIT(28) --#define MT_TXD3_SEQ GENMASK(27, 16) --#define MT_TXD3_REM_TX_COUNT GENMASK(15, 11) --#define MT_TXD3_TX_COUNT GENMASK(10, 6) --#define MT_TXD3_TIMING_MEASURE BIT(5) --#define MT_TXD3_DAS BIT(4) --#define MT_TXD3_EEOSP BIT(3) --#define MT_TXD3_EMRD BIT(2) --#define MT_TXD3_PROTECT_FRAME BIT(1) --#define MT_TXD3_NO_ACK BIT(0) -- --#define MT_TXD4_PN_LOW GENMASK(31, 0) -- --#define MT_TXD5_PN_HIGH GENMASK(31, 16) --#define MT_TXD5_MD BIT(15) --#define MT_TXD5_ADD_BA BIT(14) --#define MT_TXD5_TX_STATUS_HOST BIT(10) --#define MT_TXD5_TX_STATUS_MCU BIT(9) --#define MT_TXD5_TX_STATUS_FMT BIT(8) --#define MT_TXD5_PID GENMASK(7, 0) -- --#define MT_TXD6_TX_IBF BIT(31) --#define MT_TXD6_TX_EBF BIT(30) --#define MT_TXD6_TX_RATE GENMASK(29, 16) --#define MT_TXD6_SGI GENMASK(15, 14) --#define MT_TXD6_HELTF GENMASK(13, 12) --#define MT_TXD6_LDPC BIT(11) --#define MT_TXD6_SPE_ID_IDX BIT(10) --#define MT_TXD6_ANT_ID GENMASK(7, 4) --#define MT_TXD6_DYN_BW BIT(3) --#define MT_TXD6_FIXED_BW BIT(2) --#define MT_TXD6_BW GENMASK(1, 0) -- --#define MT_TXD7_TXD_LEN GENMASK(31, 30) --#define MT_TXD7_UDP_TCP_SUM BIT(29) --#define MT_TXD7_IP_SUM BIT(28) -- --#define MT_TXD7_TYPE GENMASK(21, 20) --#define MT_TXD7_SUB_TYPE GENMASK(19, 16) -- --#define MT_TXD7_PSE_FID GENMASK(27, 16) --#define MT_TXD7_SPE_IDX GENMASK(15, 11) --#define MT_TXD7_HW_AMSDU BIT(10) --#define MT_TXD7_TX_TIME GENMASK(9, 0) -- --#define MT_TX_RATE_STBC BIT(13) --#define MT_TX_RATE_NSS GENMASK(12, 10) --#define MT_TX_RATE_MODE GENMASK(9, 6) --#define MT_TX_RATE_SU_EXT_TONE BIT(5) --#define MT_TX_RATE_DCM BIT(4) --/* VHT/HE only use bits 0-3 */ --#define MT_TX_RATE_IDX GENMASK(5, 0) -- - #define MT_TXP_MAX_BUF_NUM 6 - - struct mt7915_txp { -@@ -322,41 +219,6 @@ struct mt7915_tx_free { - /* will support this field in further revision */ - #define MT_TX_FREE_RATE GENMASK(13, 0) - --#define MT_TXS0_FIXED_RATE BIT(31) --#define MT_TXS0_BW GENMASK(30, 29) --#define MT_TXS0_TID GENMASK(28, 26) --#define MT_TXS0_AMPDU BIT(25) --#define MT_TXS0_TXS_FORMAT GENMASK(24, 23) --#define MT_TXS0_BA_ERROR BIT(22) --#define MT_TXS0_PS_FLAG BIT(21) --#define MT_TXS0_TXOP_TIMEOUT BIT(20) --#define MT_TXS0_BIP_ERROR BIT(19) -- --#define MT_TXS0_QUEUE_TIMEOUT BIT(18) --#define MT_TXS0_RTS_TIMEOUT BIT(17) --#define MT_TXS0_ACK_TIMEOUT BIT(16) --#define MT_TXS0_ACK_ERROR_MASK GENMASK(18, 16) -- --#define MT_TXS0_TX_STATUS_HOST BIT(15) --#define MT_TXS0_TX_STATUS_MCU BIT(14) --#define MT_TXS0_TX_RATE GENMASK(13, 0) -- --#define MT_TXS1_SEQNO GENMASK(31, 20) --#define MT_TXS1_RESP_RATE GENMASK(19, 16) --#define MT_TXS1_RXV_SEQNO GENMASK(15, 8) --#define MT_TXS1_TX_POWER_DBM GENMASK(7, 0) -- --#define MT_TXS2_BF_STATUS GENMASK(31, 30) --#define MT_TXS2_LAST_TX_RATE GENMASK(29, 27) --#define MT_TXS2_SHARED_ANTENNA BIT(26) --#define MT_TXS2_WCID GENMASK(25, 16) --#define MT_TXS2_TX_DELAY GENMASK(15, 0) -- --#define MT_TXS3_PID GENMASK(31, 24) --#define MT_TXS3_ANT_ID GENMASK(23, 0) -- --#define MT_TXS4_TIMESTAMP GENMASK(31, 0) -- - #define MT_TXS5_F0_FINAL_MPDU BIT(31) - #define MT_TXS5_F0_QOS BIT(30) - #define MT_TXS5_F0_TX_COUNT GENMASK(29, 25) -diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h b/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h -index 64b4c3c09d33..41d76e24dd8b 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h -+++ b/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h -@@ -335,20 +335,6 @@ enum { - __MT_WFDMA_MAX, - }; - --enum { -- MT_CTX0, -- MT_HIF0 = 0x0, -- -- MT_LMAC_AC00 = 0x0, -- MT_LMAC_AC01, -- MT_LMAC_AC02, -- MT_LMAC_AC03, -- MT_LMAC_ALTX0 = 0x10, -- MT_LMAC_BMC0, -- MT_LMAC_BCN0, -- MT_LMAC_PSMP0, --}; -- - enum { - MT_RX_SEL0, - MT_RX_SEL1, -diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mac.h b/drivers/net/wireless/mediatek/mt76/mt7921/mac.h -index 79447e2d0143..556e687bd235 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7921/mac.h -+++ b/drivers/net/wireless/mediatek/mt76/mt7921/mac.h -@@ -4,6 +4,8 @@ - #ifndef __MT7921_MAC_H - #define __MT7921_MAC_H - -+#include "../mt76_connac2_mac.h" -+ - #define MT_CT_PARSE_LEN 72 - #define MT_CT_DMA_BUF_NUM 2 - -@@ -163,20 +165,6 @@ enum rx_pkt_type { - #define MT_CRXV_FOE_HI GENMASK(6, 0) - #define MT_CRXV_FOE_SHIFT 13 - --enum tx_header_format { -- MT_HDR_FORMAT_802_3, -- MT_HDR_FORMAT_CMD, -- MT_HDR_FORMAT_802_11, -- MT_HDR_FORMAT_802_11_EXT, --}; -- --enum tx_pkt_type { -- MT_TX_TYPE_CT, -- MT_TX_TYPE_SF, -- MT_TX_TYPE_CMD, -- MT_TX_TYPE_FW, --}; -- - enum tx_port_idx { - MT_TX_PORT_IDX_LMAC, - MT_TX_PORT_IDX_MCU -@@ -197,104 +185,6 @@ enum tx_mcu_port_q_idx { - #define MT_CT_INFO_HSR2_TX BIT(4) - #define MT_CT_INFO_FROM_HOST BIT(7) - --#define MT_TXD_SIZE (8 * 4) -- --#define MT_SDIO_TXD_SIZE (MT_TXD_SIZE + 8 * 4) --#define MT_SDIO_TAIL_SIZE 8 --#define MT_SDIO_HDR_SIZE 4 --#define MT_USB_TAIL_SIZE 4 -- --#define MT_TXD0_Q_IDX GENMASK(31, 25) --#define MT_TXD0_PKT_FMT GENMASK(24, 23) --#define MT_TXD0_ETH_TYPE_OFFSET GENMASK(22, 16) --#define MT_TXD0_TX_BYTES GENMASK(15, 0) -- --#define MT_TXD1_LONG_FORMAT BIT(31) --#define MT_TXD1_TGID BIT(30) --#define MT_TXD1_OWN_MAC GENMASK(29, 24) --#define MT_TXD1_AMSDU BIT(23) --#define MT_TXD1_TID GENMASK(22, 20) --#define MT_TXD1_HDR_PAD GENMASK(19, 18) --#define MT_TXD1_HDR_FORMAT GENMASK(17, 16) --#define MT_TXD1_HDR_INFO GENMASK(15, 11) --#define MT_TXD1_ETH_802_3 BIT(15) --#define MT_TXD1_VTA BIT(10) --#define MT_TXD1_WLAN_IDX GENMASK(9, 0) -- --#define MT_TXD2_FIX_RATE BIT(31) --#define MT_TXD2_FIXED_RATE BIT(30) --#define MT_TXD2_POWER_OFFSET GENMASK(29, 24) --#define MT_TXD2_MAX_TX_TIME GENMASK(23, 16) --#define MT_TXD2_FRAG GENMASK(15, 14) --#define MT_TXD2_HTC_VLD BIT(13) --#define MT_TXD2_DURATION BIT(12) --#define MT_TXD2_BIP BIT(11) --#define MT_TXD2_MULTICAST BIT(10) --#define MT_TXD2_RTS BIT(9) --#define MT_TXD2_SOUNDING BIT(8) --#define MT_TXD2_NDPA BIT(7) --#define MT_TXD2_NDP BIT(6) --#define MT_TXD2_FRAME_TYPE GENMASK(5, 4) --#define MT_TXD2_SUB_TYPE GENMASK(3, 0) -- --#define MT_TXD3_SN_VALID BIT(31) --#define MT_TXD3_PN_VALID BIT(30) --#define MT_TXD3_SW_POWER_MGMT BIT(29) --#define MT_TXD3_BA_DISABLE BIT(28) --#define MT_TXD3_SEQ GENMASK(27, 16) --#define MT_TXD3_REM_TX_COUNT GENMASK(15, 11) --#define MT_TXD3_TX_COUNT GENMASK(10, 6) --#define MT_TXD3_TIMING_MEASURE BIT(5) --#define MT_TXD3_DAS BIT(4) --#define MT_TXD3_EEOSP BIT(3) --#define MT_TXD3_EMRD BIT(2) --#define MT_TXD3_PROTECT_FRAME BIT(1) --#define MT_TXD3_NO_ACK BIT(0) -- --#define MT_TXD4_PN_LOW GENMASK(31, 0) -- --#define MT_TXD5_PN_HIGH GENMASK(31, 16) --#define MT_TXD5_MD BIT(15) --#define MT_TXD5_ADD_BA BIT(14) --#define MT_TXD5_TX_STATUS_HOST BIT(10) --#define MT_TXD5_TX_STATUS_MCU BIT(9) --#define MT_TXD5_TX_STATUS_FMT BIT(8) --#define MT_TXD5_PID GENMASK(7, 0) -- --#define MT_TXD6_TX_IBF BIT(31) --#define MT_TXD6_TX_EBF BIT(30) --#define MT_TXD6_TX_RATE GENMASK(29, 16) --#define MT_TXD6_SGI GENMASK(15, 14) --#define MT_TXD6_HELTF GENMASK(13, 12) --#define MT_TXD6_LDPC BIT(11) --#define MT_TXD6_SPE_ID_IDX BIT(10) --#define MT_TXD6_ANT_ID GENMASK(7, 4) --#define MT_TXD6_DYN_BW BIT(3) --#define MT_TXD6_FIXED_BW BIT(2) --#define MT_TXD6_BW GENMASK(1, 0) -- --#define MT_TXD7_TXD_LEN GENMASK(31, 30) --#define MT_TXD7_UDP_TCP_SUM BIT(29) --#define MT_TXD7_IP_SUM BIT(28) -- --#define MT_TXD7_TYPE GENMASK(21, 20) --#define MT_TXD7_SUB_TYPE GENMASK(19, 16) -- --#define MT_TXD7_PSE_FID GENMASK(27, 16) --#define MT_TXD7_SPE_IDX GENMASK(15, 11) --#define MT_TXD7_HW_AMSDU BIT(10) --#define MT_TXD7_TX_TIME GENMASK(9, 0) -- --#define MT_TXD8_L_TYPE GENMASK(5, 4) --#define MT_TXD8_L_SUB_TYPE GENMASK(3, 0) -- --#define MT_TX_RATE_STBC BIT(13) --#define MT_TX_RATE_NSS GENMASK(12, 10) --#define MT_TX_RATE_MODE GENMASK(9, 6) --#define MT_TX_RATE_SU_EXT_TONE BIT(5) --#define MT_TX_RATE_DCM BIT(4) --#define MT_TX_RATE_IDX GENMASK(3, 0) -- - #define MT_TXP_MAX_BUF_NUM 6 - - struct mt7921_txp { -@@ -325,15 +215,6 @@ struct mt7921_tx_free { - /* will support this field in further revision */ - #define MT_TX_FREE_RATE GENMASK(13, 0) - --#define MT_TXS0_BW GENMASK(30, 29) --#define MT_TXS0_TXS_FORMAT GENMASK(24, 23) --#define MT_TXS0_ACK_ERROR_MASK GENMASK(18, 16) --#define MT_TXS0_TX_RATE GENMASK(13, 0) -- --#define MT_TXS2_WCID GENMASK(25, 16) -- --#define MT_TXS3_PID GENMASK(31, 24) -- - static inline struct mt7921_txp_common * - mt7921_txwi_to_txp(struct mt76_dev *dev, struct mt76_txwi_cache *t) - { -diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h b/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h -index a049bd35e0bc..d105e815fcd4 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h -+++ b/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h -@@ -244,16 +244,6 @@ struct mt7921_txpwr { - } data[TXPWR_MAX_NUM]; - }; - --enum { -- MT_LMAC_AC00, -- MT_LMAC_AC01, -- MT_LMAC_AC02, -- MT_LMAC_AC03, -- MT_LMAC_ALTX0 = 0x10, -- MT_LMAC_BMC0, -- MT_LMAC_BCN0, --}; -- - static inline struct mt7921_phy * - mt7921_hw_phy(struct ieee80211_hw *hw) - { --- -2.35.1 - diff --git a/queue-5.18/mt76-mt7915-add-support-for-6g-in-band-discovery.patch b/queue-5.18/mt76-mt7915-add-support-for-6g-in-band-discovery.patch deleted file mode 100644 index 9005f451adb..00000000000 --- a/queue-5.18/mt76-mt7915-add-support-for-6g-in-band-discovery.patch +++ /dev/null @@ -1,288 +0,0 @@ -From e4cfaffd52b1756a4fdab00b30e525a8962df8de Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 26 Apr 2022 10:23:35 +0800 -Subject: mt76: mt7915: add support for 6G in-band discovery - -From: MeiChia Chiu - -[ Upstream commit 869f06468e77b06795bc5855bd5b6b03c6cb147c ] - -Add offloading FILS discovery and unsolicited broadcast probe response support. - -Reviewed-by: Ryder Lee -Signed-off-by: MeiChia Chiu -Signed-off-by: Felix Fietkau -Signed-off-by: Sasha Levin ---- - .../net/wireless/mediatek/mt76/mt7915/init.c | 2 + - .../net/wireless/mediatek/mt76/mt7915/mac.c | 17 +++-- - .../net/wireless/mediatek/mt76/mt7915/main.c | 8 +- - .../net/wireless/mediatek/mt76/mt7915/mcu.c | 75 ++++++++++++++++++- - .../net/wireless/mediatek/mt76/mt7915/mcu.h | 15 +++- - .../wireless/mediatek/mt76/mt7915/mt7915.h | 4 +- - 6 files changed, 107 insertions(+), 14 deletions(-) - -diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/init.c b/drivers/net/wireless/mediatek/mt76/mt7915/init.c -index 6d29366c5139..a03251a2960a 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7915/init.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7915/init.c -@@ -351,6 +351,8 @@ mt7915_init_wiphy(struct ieee80211_hw *hw) - wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_BEACON_RATE_HT); - wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_BEACON_RATE_VHT); - wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_BEACON_RATE_HE); -+ wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP); -+ wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_FILS_DISCOVERY); - - if (!mdev->dev->of_node || - !of_property_read_bool(mdev->dev->of_node, -diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c -index 45169a027fda..7873fdaf0373 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c -@@ -1181,7 +1181,7 @@ mt7915_mac_tx_rate_val(struct mt76_phy *mphy, struct ieee80211_vif *vif, - - void mt7915_mac_write_txwi(struct mt7915_dev *dev, __le32 *txwi, - struct sk_buff *skb, struct mt76_wcid *wcid, int pid, -- struct ieee80211_key_conf *key, bool beacon) -+ struct ieee80211_key_conf *key, u32 changed) - { - struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); - struct ieee80211_vif *vif = info->control.vif; -@@ -1192,6 +1192,10 @@ void mt7915_mac_write_txwi(struct mt7915_dev *dev, __le32 *txwi, - bool mcast = false; - u16 tx_count = 15; - u32 val; -+ bool beacon = !!(changed & (BSS_CHANGED_BEACON | -+ BSS_CHANGED_BEACON_ENABLED)); -+ bool inband_disc = !!(changed & (BSS_CHANGED_UNSOL_BCAST_PROBE_RESP | -+ BSS_CHANGED_FILS_DISCOVERY)); - - if (vif) { - struct mt7915_vif *mvif = (struct mt7915_vif *)vif->drv_priv; -@@ -1204,7 +1208,10 @@ void mt7915_mac_write_txwi(struct mt7915_dev *dev, __le32 *txwi, - if (ext_phy && dev->mt76.phy2) - mphy = dev->mt76.phy2; - -- if (beacon) { -+ if (inband_disc) { -+ p_fmt = MT_TX_TYPE_FW; -+ q_idx = MT_LMAC_ALTX0; -+ } else if (beacon) { - p_fmt = MT_TX_TYPE_FW; - q_idx = MT_LMAC_BCN0; - } else if (skb_get_queue_mapping(skb) >= MT_TXQ_PSD) { -@@ -1312,8 +1319,7 @@ int mt7915_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr, - return id; - - pid = mt76_tx_status_skb_add(mdev, wcid, tx_info->skb); -- mt7915_mac_write_txwi(dev, txwi_ptr, tx_info->skb, wcid, pid, key, -- false); -+ mt7915_mac_write_txwi(dev, txwi_ptr, tx_info->skb, wcid, pid, key, 0); - - txp = (struct mt7915_txp *)(txwi + MT_TXD_SIZE); - for (i = 0; i < nbuf; i++) { -@@ -1923,7 +1929,8 @@ mt7915_update_vif_beacon(void *priv, u8 *mac, struct ieee80211_vif *vif) - case NL80211_IFTYPE_MESH_POINT: - case NL80211_IFTYPE_ADHOC: - case NL80211_IFTYPE_AP: -- mt7915_mcu_add_beacon(hw, vif, vif->bss_conf.enable_beacon); -+ mt7915_mcu_add_beacon(hw, vif, vif->bss_conf.enable_beacon, -+ BSS_CHANGED_BEACON_ENABLED); - break; - default: - break; -diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/main.c b/drivers/net/wireless/mediatek/mt76/mt7915/main.c -index 187cf4ccd36e..d6d0a17c3730 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7915/main.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7915/main.c -@@ -630,8 +630,10 @@ static void mt7915_bss_info_changed(struct ieee80211_hw *hw, - mt7915_update_bss_color(hw, vif, &info->he_bss_color); - - if (changed & (BSS_CHANGED_BEACON | -- BSS_CHANGED_BEACON_ENABLED)) -- mt7915_mcu_add_beacon(hw, vif, info->enable_beacon); -+ BSS_CHANGED_BEACON_ENABLED | -+ BSS_CHANGED_UNSOL_BCAST_PROBE_RESP | -+ BSS_CHANGED_FILS_DISCOVERY)) -+ mt7915_mcu_add_beacon(hw, vif, info->enable_beacon, changed); - - mutex_unlock(&dev->mt76.mutex); - } -@@ -644,7 +646,7 @@ mt7915_channel_switch_beacon(struct ieee80211_hw *hw, - struct mt7915_dev *dev = mt7915_hw_dev(hw); - - mutex_lock(&dev->mt76.mutex); -- mt7915_mcu_add_beacon(hw, vif, true); -+ mt7915_mcu_add_beacon(hw, vif, true, BSS_CHANGED_BEACON); - mutex_unlock(&dev->mt76.mutex); - } - -diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c -index 736c9c342baa..4bfb26e730eb 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c -@@ -1892,6 +1892,7 @@ mt7915_mcu_beacon_cont(struct mt7915_dev *dev, struct ieee80211_vif *vif, - u8 *buf; - int len = sizeof(*cont) + MT_TXD_SIZE + skb->len; - -+ len = (len & 0x3) ? ((len | 0x3) + 1) : len; - tlv = mt7915_mcu_add_nested_subtlv(rskb, BSS_INFO_BCN_CONTENT, - len, &bcn->sub_ntlv, &bcn->len); - -@@ -1910,7 +1911,7 @@ mt7915_mcu_beacon_cont(struct mt7915_dev *dev, struct ieee80211_vif *vif, - - buf = (u8 *)tlv + sizeof(*cont); - mt7915_mac_write_txwi(dev, (__le32 *)buf, skb, wcid, 0, NULL, -- true); -+ BSS_CHANGED_BEACON); - memcpy(buf + MT_TXD_SIZE, skb->data, skb->len); - } - -@@ -1992,8 +1993,71 @@ mt7915_mcu_beacon_check_caps(struct mt7915_phy *phy, struct ieee80211_vif *vif, - } - } - --int mt7915_mcu_add_beacon(struct ieee80211_hw *hw, -- struct ieee80211_vif *vif, int en) -+static void -+mt7915_mcu_beacon_inband_discov(struct mt7915_dev *dev, struct ieee80211_vif *vif, -+ struct sk_buff *rskb, struct bss_info_bcn *bcn, -+ u32 changed) -+{ -+#define OFFLOAD_TX_MODE_SU BIT(0) -+#define OFFLOAD_TX_MODE_MU BIT(1) -+ struct ieee80211_hw *hw = mt76_hw(dev); -+ struct mt7915_phy *phy = mt7915_hw_phy(hw); -+ struct mt7915_vif *mvif = (struct mt7915_vif *)vif->drv_priv; -+ struct cfg80211_chan_def *chandef = &mvif->phy->mt76->chandef; -+ enum nl80211_band band = chandef->chan->band; -+ struct mt76_wcid *wcid = &dev->mt76.global_wcid; -+ struct bss_info_inband_discovery *discov; -+ struct ieee80211_tx_info *info; -+ struct sk_buff *skb = NULL; -+ struct tlv *tlv; -+ bool ext_phy = phy != &dev->phy; -+ u8 *buf, interval; -+ int len; -+ -+ if (changed & BSS_CHANGED_FILS_DISCOVERY && -+ vif->bss_conf.fils_discovery.max_interval) { -+ interval = vif->bss_conf.fils_discovery.max_interval; -+ skb = ieee80211_get_fils_discovery_tmpl(hw, vif); -+ } else if (changed & BSS_CHANGED_UNSOL_BCAST_PROBE_RESP && -+ vif->bss_conf.unsol_bcast_probe_resp_interval) { -+ interval = vif->bss_conf.unsol_bcast_probe_resp_interval; -+ skb = ieee80211_get_unsol_bcast_probe_resp_tmpl(hw, vif); -+ } -+ -+ if (!skb) -+ return; -+ -+ info = IEEE80211_SKB_CB(skb); -+ info->control.vif = vif; -+ info->band = band; -+ -+ if (ext_phy) -+ info->hw_queue |= MT_TX_HW_QUEUE_EXT_PHY; -+ -+ len = sizeof(*discov) + MT_TXD_SIZE + skb->len; -+ len = (len & 0x3) ? ((len | 0x3) + 1) : len; -+ -+ tlv = mt7915_mcu_add_nested_subtlv(rskb, BSS_INFO_BCN_DISCOV, -+ len, &bcn->sub_ntlv, &bcn->len); -+ discov = (struct bss_info_inband_discovery *)tlv; -+ discov->tx_mode = OFFLOAD_TX_MODE_SU; -+ /* 0: UNSOL PROBE RESP, 1: FILS DISCOV */ -+ discov->tx_type = !!(changed & BSS_CHANGED_FILS_DISCOVERY); -+ discov->tx_interval = interval; -+ discov->prob_rsp_len = cpu_to_le16(MT_TXD_SIZE + skb->len); -+ discov->enable = true; -+ -+ buf = (u8 *)tlv + sizeof(*discov); -+ -+ mt7915_mac_write_txwi(dev, (__le32 *)buf, skb, wcid, 0, NULL, -+ changed); -+ memcpy(buf + MT_TXD_SIZE, skb->data, skb->len); -+ -+ dev_kfree_skb(skb); -+} -+ -+int mt7915_mcu_add_beacon(struct ieee80211_hw *hw, struct ieee80211_vif *vif, -+ int en, u32 changed) - { - #define MAX_BEACON_SIZE 512 - struct mt7915_dev *dev = mt7915_hw_dev(hw); -@@ -2044,6 +2108,11 @@ int mt7915_mcu_add_beacon(struct ieee80211_hw *hw, - mt7915_mcu_beacon_cont(dev, vif, rskb, skb, bcn, &offs); - dev_kfree_skb(skb); - -+ if (changed & BSS_CHANGED_UNSOL_BCAST_PROBE_RESP || -+ changed & BSS_CHANGED_FILS_DISCOVERY) -+ mt7915_mcu_beacon_inband_discov(dev, vif, rskb, -+ bcn, changed); -+ - out: - return mt76_mcu_skb_send_msg(&phy->dev->mt76, rskb, - MCU_EXT_CMD(BSS_INFO_UPDATE), true); -diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mcu.h b/drivers/net/wireless/mediatek/mt76/mt7915/mcu.h -index 960072a44222..2b5495bd1e20 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7915/mcu.h -+++ b/drivers/net/wireless/mediatek/mt76/mt7915/mcu.h -@@ -414,11 +414,23 @@ struct bss_info_bcn_cont { - __le16 pkt_len; - } __packed __aligned(4); - -+struct bss_info_inband_discovery { -+ __le16 tag; -+ __le16 len; -+ u8 tx_type; -+ u8 tx_mode; -+ u8 tx_interval; -+ u8 enable; -+ __le16 rsv; -+ __le16 prob_rsp_len; -+} __packed __aligned(4); -+ - enum { - BSS_INFO_BCN_CSA, - BSS_INFO_BCN_BCC, - BSS_INFO_BCN_MBSSID, - BSS_INFO_BCN_CONTENT, -+ BSS_INFO_BCN_DISCOV, - BSS_INFO_BCN_MAX - }; - -@@ -486,6 +498,7 @@ enum { - #define MT7915_BEACON_UPDATE_SIZE (sizeof(struct sta_req_hdr) + \ - sizeof(struct bss_info_bcn_cntdwn) + \ - sizeof(struct bss_info_bcn_mbss) + \ -- sizeof(struct bss_info_bcn_cont)) -+ sizeof(struct bss_info_bcn_cont) + \ -+ sizeof(struct bss_info_inband_discovery)) - - #endif -diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h b/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h -index 4b6eda958ef3..ff413fe1da5e 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h -+++ b/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h -@@ -463,7 +463,7 @@ int mt7915_mcu_add_rx_ba(struct mt7915_dev *dev, - int mt7915_mcu_update_bss_color(struct mt7915_dev *dev, struct ieee80211_vif *vif, - struct cfg80211_he_bss_color *he_bss_color); - int mt7915_mcu_add_beacon(struct ieee80211_hw *hw, struct ieee80211_vif *vif, -- int enable); -+ int enable, u32 changed); - int mt7915_mcu_add_obss_spr(struct mt7915_dev *dev, struct ieee80211_vif *vif, - bool enable); - int mt7915_mcu_add_rate_ctrl(struct mt7915_dev *dev, struct ieee80211_vif *vif, -@@ -550,7 +550,7 @@ void mt7915_mac_cca_stats_reset(struct mt7915_phy *phy); - void mt7915_mac_enable_nf(struct mt7915_dev *dev, bool ext_phy); - void mt7915_mac_write_txwi(struct mt7915_dev *dev, __le32 *txwi, - struct sk_buff *skb, struct mt76_wcid *wcid, int pid, -- struct ieee80211_key_conf *key, bool beacon); -+ struct ieee80211_key_conf *key, u32 changed); - void mt7915_mac_set_timing(struct mt7915_phy *phy); - int mt7915_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif, - struct ieee80211_sta *sta); --- -2.35.1 - diff --git a/queue-5.18/mt76-mt7915-fix-incorrect-testmode-ipg-on-band-1-cau.patch b/queue-5.18/mt76-mt7915-fix-incorrect-testmode-ipg-on-band-1-cau.patch deleted file mode 100644 index 4c0daf29605..00000000000 --- a/queue-5.18/mt76-mt7915-fix-incorrect-testmode-ipg-on-band-1-cau.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 97c5577cb493dbe3f3ef0bf350695e52d9df9acd Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 20 Jun 2022 14:17:17 +0800 -Subject: mt76: mt7915: fix incorrect testmode ipg on band 1 caused by wmm_idx - -From: Shayne Chen - -[ Upstream commit 6e744cfeee02c2d8676eb55d5b3720808812f41f ] - -Fix the issue that the measured inter packet gap didn't fit its -setting value. - -Fixes: c2d3b1926f30 ("mt76: mt7915: add support for ipg in testmode") -Signed-off-by: Shayne Chen -Signed-off-by: Felix Fietkau -Signed-off-by: Sasha Levin ---- - drivers/net/wireless/mediatek/mt76/mt7915/testmode.c | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/testmode.c b/drivers/net/wireless/mediatek/mt76/mt7915/testmode.c -index 20f63644e929..0f5c1e5bffe1 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7915/testmode.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7915/testmode.c -@@ -168,13 +168,14 @@ mt7915_tm_set_tam_arb(struct mt7915_phy *phy, bool enable, bool mu) - } - - static int --mt7915_tm_set_wmm_qid(struct mt7915_dev *dev, u8 qid, u8 aifs, u8 cw_min, -+mt7915_tm_set_wmm_qid(struct mt7915_phy *phy, u8 qid, u8 aifs, u8 cw_min, - u16 cw_max, u16 txop) - { -+ struct mt7915_vif *mvif = (struct mt7915_vif *)phy->monitor_vif->drv_priv; - struct mt7915_mcu_tx req = { .total = 1 }; - struct edca *e = &req.edca[0]; - -- e->queue = qid; -+ e->queue = qid + mvif->mt76.wmm_idx * MT76_CONNAC_MAX_WMM_SETS; - e->set = WMM_PARAM_SET; - - e->aifs = aifs; -@@ -182,7 +183,7 @@ mt7915_tm_set_wmm_qid(struct mt7915_dev *dev, u8 qid, u8 aifs, u8 cw_min, - e->cw_max = cpu_to_le16(cw_max); - e->txop = cpu_to_le16(txop); - -- return mt7915_mcu_update_edca(dev, &req); -+ return mt7915_mcu_update_edca(phy->dev, &req); - } - - static int -@@ -244,7 +245,7 @@ mt7915_tm_set_ipg_params(struct mt7915_phy *phy, u32 ipg, u8 mode) - - mt7915_tm_set_slot_time(phy, slot_time, sifs); - -- return mt7915_tm_set_wmm_qid(dev, -+ return mt7915_tm_set_wmm_qid(phy, - mt76_connac_lmac_mapping(IEEE80211_AC_BE), - aifsn, cw, cw, 0); - } --- -2.35.1 - diff --git a/queue-5.18/mt76-mt7915-rely-on-mt76_dev-in-mt7915_mac_write_txw.patch b/queue-5.18/mt76-mt7915-rely-on-mt76_dev-in-mt7915_mac_write_txw.patch deleted file mode 100644 index 05e5a0dcea4..00000000000 --- a/queue-5.18/mt76-mt7915-rely-on-mt76_dev-in-mt7915_mac_write_txw.patch +++ /dev/null @@ -1,133 +0,0 @@ -From ca4fb9b60c0b6bb52c2bdd4b3a3800096b9a4c0b Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 7 Jun 2022 11:28:38 +0200 -Subject: mt76: mt7915: rely on mt76_dev in mt7915_mac_write_txwi signature - -From: Lorenzo Bianconi - -[ Upstream commit d502e30020b85857ead0f9d392d24dba8c0f44cb ] - -This is a preliminary patch to share txwi configuration code. - -Signed-off-by: Lorenzo Bianconi -Signed-off-by: Felix Fietkau -Signed-off-by: Sasha Levin ---- - .../net/wireless/mediatek/mt76/mt7915/mac.c | 23 +++++++++---------- - .../net/wireless/mediatek/mt76/mt7915/mcu.c | 4 ++-- - .../wireless/mediatek/mt76/mt7915/mt7915.h | 2 +- - 3 files changed, 14 insertions(+), 15 deletions(-) - -diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c -index 7873fdaf0373..d65a873739af 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c -@@ -1014,8 +1014,8 @@ mt7915_mac_write_txwi_tm(struct mt7915_phy *phy, __le32 *txwi, - } - - static void --mt7915_mac_write_txwi_8023(struct mt7915_dev *dev, __le32 *txwi, -- struct sk_buff *skb, struct mt76_wcid *wcid) -+mt7915_mac_write_txwi_8023(__le32 *txwi, struct sk_buff *skb, -+ struct mt76_wcid *wcid) - { - - u8 tid = skb->priority & IEEE80211_QOS_CTL_TID_MASK; -@@ -1054,9 +1054,8 @@ mt7915_mac_write_txwi_8023(struct mt7915_dev *dev, __le32 *txwi, - } - - static void --mt7915_mac_write_txwi_80211(struct mt7915_dev *dev, __le32 *txwi, -- struct sk_buff *skb, struct ieee80211_key_conf *key, -- bool *mcast) -+mt7915_mac_write_txwi_80211(__le32 *txwi, struct sk_buff *skb, -+ struct ieee80211_key_conf *key, bool *mcast) - { - struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; - struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)skb->data; -@@ -1179,13 +1178,13 @@ mt7915_mac_tx_rate_val(struct mt76_phy *mphy, struct ieee80211_vif *vif, - FIELD_PREP(MT_TX_RATE_MODE, mode); - } - --void mt7915_mac_write_txwi(struct mt7915_dev *dev, __le32 *txwi, -+void mt7915_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi, - struct sk_buff *skb, struct mt76_wcid *wcid, int pid, - struct ieee80211_key_conf *key, u32 changed) - { - struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); - struct ieee80211_vif *vif = info->control.vif; -- struct mt76_phy *mphy = &dev->mphy; -+ struct mt76_phy *mphy = &dev->phy; - bool ext_phy = info->hw_queue & MT_TX_HW_QUEUE_EXT_PHY; - u8 p_fmt, q_idx, omac_idx = 0, wmm_idx = 0, band_idx = 0; - bool is_8023 = info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP; -@@ -1205,8 +1204,8 @@ void mt7915_mac_write_txwi(struct mt7915_dev *dev, __le32 *txwi, - band_idx = mvif->mt76.band_idx; - } - -- if (ext_phy && dev->mt76.phy2) -- mphy = dev->mt76.phy2; -+ if (ext_phy && dev->phy2) -+ mphy = dev->phy2; - - if (inband_disc) { - p_fmt = MT_TX_TYPE_FW; -@@ -1258,9 +1257,9 @@ void mt7915_mac_write_txwi(struct mt7915_dev *dev, __le32 *txwi, - txwi[7] = wcid->amsdu ? cpu_to_le32(MT_TXD7_HW_AMSDU) : 0; - - if (is_8023) -- mt7915_mac_write_txwi_8023(dev, txwi, skb, wcid); -+ mt7915_mac_write_txwi_8023(txwi, skb, wcid); - else -- mt7915_mac_write_txwi_80211(dev, txwi, skb, key, &mcast); -+ mt7915_mac_write_txwi_80211(txwi, skb, key, &mcast); - - if (txwi[2] & cpu_to_le32(MT_TXD2_FIX_RATE)) { - u16 rate = mt7915_mac_tx_rate_val(mphy, vif, beacon, mcast); -@@ -1319,7 +1318,7 @@ int mt7915_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr, - return id; - - pid = mt76_tx_status_skb_add(mdev, wcid, tx_info->skb); -- mt7915_mac_write_txwi(dev, txwi_ptr, tx_info->skb, wcid, pid, key, 0); -+ mt7915_mac_write_txwi(mdev, txwi_ptr, tx_info->skb, wcid, pid, key, 0); - - txp = (struct mt7915_txp *)(txwi + MT_TXD_SIZE); - for (i = 0; i < nbuf; i++) { -diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c -index 4bfb26e730eb..0ef3952bc33c 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c -@@ -1910,7 +1910,7 @@ mt7915_mcu_beacon_cont(struct mt7915_dev *dev, struct ieee80211_vif *vif, - } - - buf = (u8 *)tlv + sizeof(*cont); -- mt7915_mac_write_txwi(dev, (__le32 *)buf, skb, wcid, 0, NULL, -+ mt7915_mac_write_txwi(&dev->mt76, (__le32 *)buf, skb, wcid, 0, NULL, - BSS_CHANGED_BEACON); - memcpy(buf + MT_TXD_SIZE, skb->data, skb->len); - } -@@ -2049,7 +2049,7 @@ mt7915_mcu_beacon_inband_discov(struct mt7915_dev *dev, struct ieee80211_vif *vi - - buf = (u8 *)tlv + sizeof(*discov); - -- mt7915_mac_write_txwi(dev, (__le32 *)buf, skb, wcid, 0, NULL, -+ mt7915_mac_write_txwi(&dev->mt76, (__le32 *)buf, skb, wcid, 0, NULL, - changed); - memcpy(buf + MT_TXD_SIZE, skb->data, skb->len); - -diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h b/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h -index ff413fe1da5e..64b4c3c09d33 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h -+++ b/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h -@@ -548,7 +548,7 @@ bool mt7915_mac_wtbl_update(struct mt7915_dev *dev, int idx, u32 mask); - void mt7915_mac_reset_counters(struct mt7915_phy *phy); - void mt7915_mac_cca_stats_reset(struct mt7915_phy *phy); - void mt7915_mac_enable_nf(struct mt7915_dev *dev, bool ext_phy); --void mt7915_mac_write_txwi(struct mt7915_dev *dev, __le32 *txwi, -+void mt7915_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi, - struct sk_buff *skb, struct mt76_wcid *wcid, int pid, - struct ieee80211_key_conf *key, u32 changed); - void mt7915_mac_set_timing(struct mt7915_phy *phy); --- -2.35.1 - diff --git a/queue-5.18/mt76-mt7921-add-ap-mode-support.patch b/queue-5.18/mt76-mt7921-add-ap-mode-support.patch deleted file mode 100644 index 11602aaafd8..00000000000 --- a/queue-5.18/mt76-mt7921-add-ap-mode-support.patch +++ /dev/null @@ -1,281 +0,0 @@ -From cb9d7e965884f88681508d5d4b131768d3fd8188 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 7 Apr 2022 02:29:14 +0800 -Subject: mt76: mt7921: Add AP mode support - -From: Sean Wang - -[ Upstream commit 116c69603b01f2d6e4499ca5d535f5b71c52052c ] - -add AP mode support to mt7921 that can work for mt7921[e,s,u] -with the common code. - -Tested-by: Deren Wu -Tested-by: Lorenzo Bianconi -Signed-off-by: Sean Wang -Signed-off-by: Felix Fietkau -Signed-off-by: Sasha Levin ---- - .../net/wireless/mediatek/mt76/mt7921/init.c | 11 ++- - .../net/wireless/mediatek/mt76/mt7921/mac.c | 9 +++ - .../net/wireless/mediatek/mt76/mt7921/main.c | 45 +++++++++++ - .../net/wireless/mediatek/mt76/mt7921/mcu.c | 79 ++++++++++++++++++- - .../wireless/mediatek/mt76/mt7921/mt7921.h | 4 + - 5 files changed, 146 insertions(+), 2 deletions(-) - -diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/init.c b/drivers/net/wireless/mediatek/mt76/mt7921/init.c -index 37453e1c136f..0a688c6545b3 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7921/init.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7921/init.c -@@ -11,6 +11,10 @@ static const struct ieee80211_iface_limit if_limits[] = { - { - .max = MT7921_MAX_INTERFACES, - .types = BIT(NL80211_IFTYPE_STATION) -+ }, -+ { -+ .max = 1, -+ .types = BIT(NL80211_IFTYPE_AP) - } - }; - -@@ -64,7 +68,8 @@ mt7921_init_wiphy(struct ieee80211_hw *hw) - wiphy->iface_combinations = if_comb; - wiphy->flags &= ~(WIPHY_FLAG_IBSS_RSN | WIPHY_FLAG_4ADDR_AP | - WIPHY_FLAG_4ADDR_STATION); -- wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION); -+ wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | -+ BIT(NL80211_IFTYPE_AP); - wiphy->n_iface_combinations = ARRAY_SIZE(if_comb); - wiphy->max_scan_ie_len = MT76_CONNAC_SCAN_IE_LEN; - wiphy->max_scan_ssids = 4; -@@ -80,6 +85,10 @@ mt7921_init_wiphy(struct ieee80211_hw *hw) - wiphy->features |= NL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR | - NL80211_FEATURE_SCAN_RANDOM_MAC_ADDR; - wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_SET_SCAN_DWELL); -+ wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_BEACON_RATE_LEGACY); -+ wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_BEACON_RATE_HT); -+ wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_BEACON_RATE_VHT); -+ wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_BEACON_RATE_HE); - - ieee80211_hw_set(hw, SINGLE_SCAN_ON_ALL_BANDS); - ieee80211_hw_set(hw, HAS_RATE_CONTROL); -diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mac.c b/drivers/net/wireless/mediatek/mt76/mt7921/mac.c -index c5350e7a11e6..ac11e8b28f13 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7921/mac.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7921/mac.c -@@ -1363,12 +1363,21 @@ mt7921_vif_connect_iter(void *priv, u8 *mac, - { - struct mt7921_vif *mvif = (struct mt7921_vif *)vif->drv_priv; - struct mt7921_dev *dev = mvif->phy->dev; -+ struct ieee80211_hw *hw = mt76_hw(dev); - - if (vif->type == NL80211_IFTYPE_STATION) - ieee80211_disconnect(vif, true); - - mt76_connac_mcu_uni_add_dev(&dev->mphy, vif, &mvif->sta.wcid, true); - mt7921_mcu_set_tx(dev, vif); -+ -+ if (vif->type == NL80211_IFTYPE_AP) { -+ mt76_connac_mcu_uni_add_bss(dev->phy.mt76, vif, &mvif->sta.wcid, -+ true); -+ mt7921_mcu_sta_update(dev, NULL, vif, true, -+ MT76_STA_INFO_STATE_NONE); -+ mt7921_mcu_uni_add_beacon_offload(dev, hw, vif, true); -+ } - } - - /* system error recovery */ -diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/main.c b/drivers/net/wireless/mediatek/mt76/mt7921/main.c -index 9b9e80f56eda..d7e2bd605117 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7921/main.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7921/main.c -@@ -53,6 +53,7 @@ mt7921_init_he_caps(struct mt7921_phy *phy, enum nl80211_band band, - - switch (i) { - case NL80211_IFTYPE_STATION: -+ case NL80211_IFTYPE_AP: - break; - default: - continue; -@@ -86,6 +87,23 @@ mt7921_init_he_caps(struct mt7921_phy *phy, enum nl80211_band band, - IEEE80211_HE_PHY_CAP2_UL_MU_PARTIAL_MU_MIMO; - - switch (i) { -+ case NL80211_IFTYPE_AP: -+ he_cap_elem->mac_cap_info[2] |= -+ IEEE80211_HE_MAC_CAP2_BSR; -+ he_cap_elem->mac_cap_info[4] |= -+ IEEE80211_HE_MAC_CAP4_BQR; -+ he_cap_elem->mac_cap_info[5] |= -+ IEEE80211_HE_MAC_CAP5_OM_CTRL_UL_MU_DATA_DIS_RX; -+ he_cap_elem->phy_cap_info[3] |= -+ IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_TX_QPSK | -+ IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_QPSK; -+ he_cap_elem->phy_cap_info[6] |= -+ IEEE80211_HE_PHY_CAP6_PARTIAL_BW_EXT_RANGE | -+ IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT; -+ he_cap_elem->phy_cap_info[9] |= -+ IEEE80211_HE_PHY_CAP9_TX_1024_QAM_LESS_THAN_242_TONE_RU | -+ IEEE80211_HE_PHY_CAP9_RX_1024_QAM_LESS_THAN_242_TONE_RU; -+ break; - case NL80211_IFTYPE_STATION: - he_cap_elem->mac_cap_info[1] |= - IEEE80211_HE_MAC_CAP1_TF_MAC_PAD_DUR_16US; -@@ -635,6 +653,20 @@ static void mt7921_bss_info_changed(struct ieee80211_hw *hw, - } - } - -+ if (changed & BSS_CHANGED_BEACON_ENABLED && info->enable_beacon) { -+ struct mt7921_vif *mvif = (struct mt7921_vif *)vif->drv_priv; -+ -+ mt76_connac_mcu_uni_add_bss(phy->mt76, vif, &mvif->sta.wcid, -+ true); -+ mt7921_mcu_sta_update(dev, NULL, vif, true, -+ MT76_STA_INFO_STATE_NONE); -+ } -+ -+ if (changed & (BSS_CHANGED_BEACON | -+ BSS_CHANGED_BEACON_ENABLED)) -+ mt7921_mcu_uni_add_beacon_offload(dev, hw, vif, -+ info->enable_beacon); -+ - /* ensure that enable txcmd_mode after bss_info */ - if (changed & (BSS_CHANGED_QOS | BSS_CHANGED_BEACON_ENABLED)) - mt7921_mcu_set_tx(dev, vif); -@@ -1395,6 +1427,18 @@ static int mt7921_set_sar_specs(struct ieee80211_hw *hw, - return err; - } - -+static void -+mt7921_channel_switch_beacon(struct ieee80211_hw *hw, -+ struct ieee80211_vif *vif, -+ struct cfg80211_chan_def *chandef) -+{ -+ struct mt7921_dev *dev = mt7921_hw_dev(hw); -+ -+ mt7921_mutex_acquire(dev); -+ mt7921_mcu_uni_add_beacon_offload(dev, hw, vif, true); -+ mt7921_mutex_release(dev); -+} -+ - const struct ieee80211_ops mt7921_ops = { - .tx = mt7921_tx, - .start = mt7921_start, -@@ -1413,6 +1457,7 @@ const struct ieee80211_ops mt7921_ops = { - .set_rts_threshold = mt7921_set_rts_threshold, - .wake_tx_queue = mt76_wake_tx_queue, - .release_buffered_frames = mt76_release_buffered_frames, -+ .channel_switch_beacon = mt7921_channel_switch_beacon, - .get_txpower = mt76_get_txpower, - .get_stats = mt7921_get_stats, - .get_et_sset_count = mt7921_get_et_sset_count, -diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c -index 2a609b25561c..b1ce15cea9e0 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c -@@ -248,7 +248,8 @@ mt7921_mcu_connection_loss_iter(void *priv, u8 *mac, - if (mvif->idx != event->bss_idx) - return; - -- if (!(vif->driver_flags & IEEE80211_VIF_BEACON_FILTER)) -+ if (!(vif->driver_flags & IEEE80211_VIF_BEACON_FILTER) || -+ vif->type != NL80211_IFTYPE_STATION) - return; - - ieee80211_connection_loss(vif); -@@ -1167,3 +1168,79 @@ int mt7921_mcu_set_sniffer(struct mt7921_dev *dev, struct ieee80211_vif *vif, - return mt76_mcu_send_msg(&dev->mt76, MCU_UNI_CMD(SNIFFER), &req, sizeof(req), - true); - } -+ -+int -+mt7921_mcu_uni_add_beacon_offload(struct mt7921_dev *dev, -+ struct ieee80211_hw *hw, -+ struct ieee80211_vif *vif, -+ bool enable) -+{ -+ struct mt7921_vif *mvif = (struct mt7921_vif *)vif->drv_priv; -+ struct mt76_wcid *wcid = &dev->mt76.global_wcid; -+ struct ieee80211_mutable_offsets offs; -+ struct { -+ struct req_hdr { -+ u8 bss_idx; -+ u8 pad[3]; -+ } __packed hdr; -+ struct bcn_content_tlv { -+ __le16 tag; -+ __le16 len; -+ __le16 tim_ie_pos; -+ __le16 csa_ie_pos; -+ __le16 bcc_ie_pos; -+ /* 0: disable beacon offload -+ * 1: enable beacon offload -+ * 2: update probe respond offload -+ */ -+ u8 enable; -+ /* 0: legacy format (TXD + payload) -+ * 1: only cap field IE -+ */ -+ u8 type; -+ __le16 pkt_len; -+ u8 pkt[512]; -+ } __packed beacon_tlv; -+ } req = { -+ .hdr = { -+ .bss_idx = mvif->mt76.idx, -+ }, -+ .beacon_tlv = { -+ .tag = cpu_to_le16(UNI_BSS_INFO_BCN_CONTENT), -+ .len = cpu_to_le16(sizeof(struct bcn_content_tlv)), -+ .enable = enable, -+ }, -+ }; -+ struct sk_buff *skb; -+ -+ if (!enable) -+ goto out; -+ -+ skb = ieee80211_beacon_get_template(mt76_hw(dev), vif, &offs); -+ if (!skb) -+ return -EINVAL; -+ -+ if (skb->len > 512 - MT_TXD_SIZE) { -+ dev_err(dev->mt76.dev, "beacon size limit exceed\n"); -+ dev_kfree_skb(skb); -+ return -EINVAL; -+ } -+ -+ mt7921_mac_write_txwi(dev, (__le32 *)(req.beacon_tlv.pkt), skb, -+ wcid, NULL, 0, true); -+ memcpy(req.beacon_tlv.pkt + MT_TXD_SIZE, skb->data, skb->len); -+ req.beacon_tlv.pkt_len = cpu_to_le16(MT_TXD_SIZE + skb->len); -+ req.beacon_tlv.tim_ie_pos = cpu_to_le16(MT_TXD_SIZE + offs.tim_offset); -+ -+ if (offs.cntdwn_counter_offs[0]) { -+ u16 csa_offs; -+ -+ csa_offs = MT_TXD_SIZE + offs.cntdwn_counter_offs[0] - 4; -+ req.beacon_tlv.csa_ie_pos = cpu_to_le16(csa_offs); -+ } -+ dev_kfree_skb(skb); -+ -+out: -+ return mt76_mcu_send_msg(&dev->mt76, MCU_UNI_CMD(BSS_INFO_UPDATE), -+ &req, sizeof(req), true); -+} -diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h b/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h -index 7690364bc079..d497a7e59a29 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h -+++ b/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h -@@ -470,4 +470,8 @@ int mt7921u_wfsys_reset(struct mt7921_dev *dev); - int mt7921u_dma_init(struct mt7921_dev *dev); - int mt7921u_init_reset(struct mt7921_dev *dev); - int mt7921u_mac_reset(struct mt7921_dev *dev); -+int mt7921_mcu_uni_add_beacon_offload(struct mt7921_dev *dev, -+ struct ieee80211_hw *hw, -+ struct ieee80211_vif *vif, -+ bool enable); - #endif --- -2.35.1 - diff --git a/queue-5.18/mt76-mt7921-rely-on-mt76_dev-in-mt7921_mac_write_txw.patch b/queue-5.18/mt76-mt7921-rely-on-mt76_dev-in-mt7921_mac_write_txw.patch deleted file mode 100644 index 2b7dc133675..00000000000 --- a/queue-5.18/mt76-mt7921-rely-on-mt76_dev-in-mt7921_mac_write_txw.patch +++ /dev/null @@ -1,148 +0,0 @@ -From bdec8b3e32716c381149c169a100b932f420a779 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 7 Jun 2022 11:28:37 +0200 -Subject: mt76: mt7921: rely on mt76_dev in mt7921_mac_write_txwi signature - -From: Lorenzo Bianconi - -[ Upstream commit e00b3e407efeed81dc30a72e4041ff57bf7068d5 ] - -This is a preliminary patch to share txwi configuration code. - -Signed-off-by: Lorenzo Bianconi -Signed-off-by: Felix Fietkau -Signed-off-by: Sasha Levin ---- - .../net/wireless/mediatek/mt76/mt7921/mac.c | 23 +++++++++---------- - .../net/wireless/mediatek/mt76/mt7921/mcu.c | 2 +- - .../wireless/mediatek/mt76/mt7921/mt7921.h | 2 +- - .../wireless/mediatek/mt76/mt7921/pci_mac.c | 2 +- - 4 files changed, 14 insertions(+), 15 deletions(-) - -diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mac.c b/drivers/net/wireless/mediatek/mt76/mt7921/mac.c -index ac11e8b28f13..3ae7989c8500 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7921/mac.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7921/mac.c -@@ -809,8 +809,8 @@ mt7921_mac_fill_rx(struct mt7921_dev *dev, struct sk_buff *skb) - } - - static void --mt7921_mac_write_txwi_8023(struct mt7921_dev *dev, __le32 *txwi, -- struct sk_buff *skb, struct mt76_wcid *wcid) -+mt7921_mac_write_txwi_8023(__le32 *txwi, struct sk_buff *skb, -+ struct mt76_wcid *wcid) - { - u8 tid = skb->priority & IEEE80211_QOS_CTL_TID_MASK; - u8 fc_type, fc_stype; -@@ -848,7 +848,7 @@ mt7921_mac_write_txwi_8023(struct mt7921_dev *dev, __le32 *txwi, - } - - static void --mt7921_mac_write_txwi_80211(struct mt7921_dev *dev, __le32 *txwi, -+mt7921_mac_write_txwi_80211(struct mt76_dev *dev, __le32 *txwi, - struct sk_buff *skb, struct ieee80211_key_conf *key) - { - struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; -@@ -920,7 +920,7 @@ mt7921_mac_write_txwi_80211(struct mt7921_dev *dev, __le32 *txwi, - txwi[7] &= ~cpu_to_le32(MT_TXD7_HW_AMSDU); - } - -- if (mt76_is_mmio(&dev->mt76)) { -+ if (mt76_is_mmio(dev)) { - val = FIELD_PREP(MT_TXD7_TYPE, fc_type) | - FIELD_PREP(MT_TXD7_SUB_TYPE, fc_stype); - txwi[7] |= cpu_to_le32(val); -@@ -931,17 +931,16 @@ mt7921_mac_write_txwi_80211(struct mt7921_dev *dev, __le32 *txwi, - } - } - --void mt7921_mac_write_txwi(struct mt7921_dev *dev, __le32 *txwi, -+void mt7921_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi, - struct sk_buff *skb, struct mt76_wcid *wcid, - struct ieee80211_key_conf *key, int pid, - bool beacon) - { - struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); - struct ieee80211_vif *vif = info->control.vif; -- struct mt76_phy *mphy = &dev->mphy; -+ struct mt76_phy *mphy = &dev->phy; - u8 p_fmt, q_idx, omac_idx = 0, wmm_idx = 0; -- bool is_mmio = mt76_is_mmio(&dev->mt76); -- u32 sz_txd = is_mmio ? MT_TXD_SIZE : MT_SDIO_TXD_SIZE; -+ u32 sz_txd = mt76_is_mmio(dev) ? MT_TXD_SIZE : MT_SDIO_TXD_SIZE; - bool is_8023 = info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP; - u16 tx_count = 15; - u32 val; -@@ -957,10 +956,10 @@ void mt7921_mac_write_txwi(struct mt7921_dev *dev, __le32 *txwi, - p_fmt = MT_TX_TYPE_FW; - q_idx = MT_LMAC_BCN0; - } else if (skb_get_queue_mapping(skb) >= MT_TXQ_PSD) { -- p_fmt = is_mmio ? MT_TX_TYPE_CT : MT_TX_TYPE_SF; -+ p_fmt = mt76_is_mmio(dev) ? MT_TX_TYPE_CT : MT_TX_TYPE_SF; - q_idx = MT_LMAC_ALTX0; - } else { -- p_fmt = is_mmio ? MT_TX_TYPE_CT : MT_TX_TYPE_SF; -+ p_fmt = mt76_is_mmio(dev) ? MT_TX_TYPE_CT : MT_TX_TYPE_SF; - q_idx = wmm_idx * MT7921_MAX_WMM_SETS + - mt76_connac_lmac_mapping(skb_get_queue_mapping(skb)); - } -@@ -995,7 +994,7 @@ void mt7921_mac_write_txwi(struct mt7921_dev *dev, __le32 *txwi, - txwi[7] = wcid->amsdu ? cpu_to_le32(MT_TXD7_HW_AMSDU) : 0; - - if (is_8023) -- mt7921_mac_write_txwi_8023(dev, txwi, skb, wcid); -+ mt7921_mac_write_txwi_8023(txwi, skb, wcid); - else - mt7921_mac_write_txwi_80211(dev, txwi, skb, key); - -@@ -1646,7 +1645,7 @@ mt7921_usb_sdio_write_txwi(struct mt7921_dev *dev, struct mt76_wcid *wcid, - __le32 *txwi = (__le32 *)(skb->data - MT_SDIO_TXD_SIZE); - - memset(txwi, 0, MT_SDIO_TXD_SIZE); -- mt7921_mac_write_txwi(dev, txwi, skb, wcid, key, pid, false); -+ mt7921_mac_write_txwi(&dev->mt76, txwi, skb, wcid, key, pid, false); - skb_push(skb, MT_SDIO_TXD_SIZE); - } - -diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c -index b1ce15cea9e0..c2245be657d4 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c -@@ -1226,7 +1226,7 @@ mt7921_mcu_uni_add_beacon_offload(struct mt7921_dev *dev, - return -EINVAL; - } - -- mt7921_mac_write_txwi(dev, (__le32 *)(req.beacon_tlv.pkt), skb, -+ mt7921_mac_write_txwi(&dev->mt76, (__le32 *)(req.beacon_tlv.pkt), skb, - wcid, NULL, 0, true); - memcpy(req.beacon_tlv.pkt + MT_TXD_SIZE, skb->data, skb->len); - req.beacon_tlv.pkt_len = cpu_to_le16(MT_TXD_SIZE + skb->len); -diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h b/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h -index d497a7e59a29..a049bd35e0bc 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h -+++ b/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h -@@ -421,7 +421,7 @@ int mt7921_testmode_cmd(struct ieee80211_hw *hw, struct ieee80211_vif *vif, - void *data, int len); - int mt7921_testmode_dump(struct ieee80211_hw *hw, struct sk_buff *msg, - struct netlink_callback *cb, void *data, int len); --void mt7921_mac_write_txwi(struct mt7921_dev *dev, __le32 *txwi, -+void mt7921_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi, - struct sk_buff *skb, struct mt76_wcid *wcid, - struct ieee80211_key_conf *key, int pid, - bool beacon); -diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/pci_mac.c b/drivers/net/wireless/mediatek/mt76/mt7921/pci_mac.c -index 5ca14dbbdd26..f261cbfae2f3 100644 ---- a/drivers/net/wireless/mediatek/mt76/mt7921/pci_mac.c -+++ b/drivers/net/wireless/mediatek/mt76/mt7921/pci_mac.c -@@ -72,7 +72,7 @@ int mt7921e_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr, - } - - pid = mt76_tx_status_skb_add(mdev, wcid, tx_info->skb); -- mt7921_mac_write_txwi(dev, txwi_ptr, tx_info->skb, wcid, key, -+ mt7921_mac_write_txwi(mdev, txwi_ptr, tx_info->skb, wcid, key, - pid, false); - - txp = (struct mt7921_txp_common *)(txwi + MT_TXD_SIZE); --- -2.35.1 -