[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <c674e933-cf6f-412d-b83b-b225ff6365c9@wanadoo.fr>
Date: Sun, 19 Oct 2025 17:56:40 +0200
From: Christophe JAILLET <christophe.jaillet@...adoo.fr>
To: Aleksander Jan Bajkowski <olek2@...pl>, nbd@....name, lorenzo@...nel.org,
ryder.lee@...iatek.com, shayne.chen@...iatek.com, sean.wang@...iatek.com,
matthias.bgg@...il.com, angelogioacchino.delregno@...labora.com,
howard-yh.hsu@...iatek.com, StanleyYP.Wang@...iatek.com, rosenp@...il.com,
luoxueqin@...inos.cn, chad@...roe.io, linux-wireless@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
linux-mediatek@...ts.infradead.org
Subject: Re: [PATCH] wifi: mt76: add tx checksum offload for mt7915, mt7921,
mt7981 and mt7986
Le 19/10/2025 à 17:51, Aleksander Jan Bajkowski a écrit :
> Supports IPv4 and IPv6 TCP + UDP
>
> In various tests between MT7986 and Intel BE200, I observed a performance
> boost ranging from 2 to 12%, with an average of 5.5%.
>
> I did the tests on the MT7915, MT7981, MT7986, and MT7921 variants. The
> MT7922, MT7925, and MT799x are untouched for now and still have
> checksumming disabled.
>
> Signed-off-by: Felix Fietkau <nbd@....name>
> [rebased and resolved conflicts]
> Signed-off-by: Aleksander Jan Bajkowski <olek2@...pl>
> ---
> drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c | 5 +++++
> drivers/net/wireless/mediatek/mt76/mt7915/init.c | 3 ++-
> drivers/net/wireless/mediatek/mt76/mt792x_core.c | 3 +++
> 3 files changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c b/drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c
> index 0db00efe88b0..e31b3e7e2038 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c
> @@ -372,6 +372,9 @@ mt76_connac2_mac_write_txwi_8023(__le32 *txwi, struct sk_buff *skb,
> wmm = sta->wme;
> }
>
> + val = FIELD_PREP(MT_TXD0_ETH_TYPE_OFFSET, 10);
> + txwi[0] |= cpu_to_le32(val);
> +
> val = FIELD_PREP(MT_TXD1_HDR_FORMAT, MT_HDR_FORMAT_802_3) |
> FIELD_PREP(MT_TXD1_TID, tid);
>
> @@ -391,6 +394,8 @@ mt76_connac2_mac_write_txwi_8023(__le32 *txwi, struct sk_buff *skb,
>
> val = FIELD_PREP(MT_TXD7_TYPE, fc_type) |
> FIELD_PREP(MT_TXD7_SUB_TYPE, fc_stype);
> + if (skb->ip_summed == CHECKSUM_PARTIAL)
> + val |= MT_TXD7_IP_SUM | MT_TXD7_UDP_TCP_SUM;
>
> txwi[7] |= cpu_to_le32(val);
> }
> diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/init.c b/drivers/net/wireless/mediatek/mt76/mt7915/init.c
> index 5ea8b46e092e..a3bab240afb7 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt7915/init.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt7915/init.c
> @@ -359,7 +359,8 @@ mt7915_init_wiphy(struct mt7915_phy *phy)
> hw->queues = 4;
> hw->max_rx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF_HE;
> hw->max_tx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF_HE;
> - hw->netdev_features = NETIF_F_RXCSUM;
> + hw->netdev_features = NETIF_F_RXCSUM |
> + NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
>
> if (mtk_wed_device_active(&mdev->mmio.wed))
> hw->netdev_features |= NETIF_F_HW_TC;
> diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_core.c b/drivers/net/wireless/mediatek/mt76/mt792x_core.c
> index c0e56541a954..fe138d2e8e62 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt792x_core.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt792x_core.c
> @@ -632,6 +632,9 @@ int mt792x_init_wiphy(struct ieee80211_hw *hw)
> }
> hw->netdev_features = NETIF_F_RXCSUM;
>
> + if (is_mt7921(&dev->mt76))
> + NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
This looks strange.
Maybe:
netdev_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
?
CJ
> +
> hw->radiotap_timestamp.units_pos =
> IEEE80211_RADIOTAP_TIMESTAMP_UNIT_US;
>
Powered by blists - more mailing lists