wifi: mt76: connac: enable HW CSO module for mt7996
authorHoward Hsu <howard-yh.hsu@mediatek.com>
Wed, 20 Mar 2024 11:09:12 +0000 (19:09 +0800)
committerFelix Fietkau <nbd@nbd.name>
Thu, 2 May 2024 10:44:51 +0000 (12:44 +0200)
For mt7996 chipsets, the HW CSO module can help to identify TCP traffic,
which assists the firmware in adjusting algorithms to improve overall
performance.

Signed-off-by: Howard Hsu <howard-yh.hsu@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c

index 657a4d1f856b2268f137053649968b713963bcaa..608deb47dada12ef9a79d5e8615d4be1f49756ef 100644 (file)
@@ -610,6 +610,12 @@ struct sta_rec_ra_fixed {
        u8 mmps_mode;
 } __packed;
 
+struct sta_rec_tx_proc {
+       __le16 tag;
+       __le16 len;
+       __le32 flag;
+} __packed;
+
 /* wtbl_rec */
 
 struct wtbl_req_hdr {
@@ -777,6 +783,7 @@ struct wtbl_raw {
                                         sizeof(struct sta_rec_ra_fixed) + \
                                         sizeof(struct sta_rec_he_6g_capa) + \
                                         sizeof(struct sta_rec_pn_info) + \
+                                        sizeof(struct sta_rec_tx_proc) + \
                                         sizeof(struct tlv) +           \
                                         MT76_CONNAC_WTBL_UPDATE_MAX_SIZE)
 
index 3add620d21673e6e5814e3f4d0354e474551b54b..ab5b4b523578d21cbcf55f509459f7ef21ae21bf 100644 (file)
@@ -1748,6 +1748,18 @@ mt7996_mcu_sta_bfee_tlv(struct mt7996_dev *dev, struct sk_buff *skb,
        bfee->fb_identity_matrix = (nrow == 1 && tx_ant == 2);
 }
 
+static void
+mt7996_mcu_sta_tx_proc_tlv(struct sk_buff *skb)
+{
+       struct sta_rec_tx_proc *tx_proc;
+       struct tlv *tlv;
+
+       tlv = mt76_connac_mcu_add_tlv(skb, STA_REC_TX_PROC, sizeof(*tx_proc));
+
+       tx_proc = (struct sta_rec_tx_proc *)tlv;
+       tx_proc->flag = cpu_to_le32(0);
+}
+
 static void
 mt7996_mcu_sta_hdrt_tlv(struct mt7996_dev *dev, struct sk_buff *skb)
 {
@@ -2159,6 +2171,8 @@ int mt7996_mcu_add_sta(struct mt7996_dev *dev, struct ieee80211_vif *vif,
 
        /* starec hdr trans */
        mt7996_mcu_sta_hdr_trans_tlv(dev, skb, vif, sta);
+       /* starec tx proc */
+       mt7996_mcu_sta_tx_proc_tlv(skb);
 
        /* tag order is in accordance with firmware dependency. */
        if (sta) {