lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220228111558.3825974-1-vee.khee.wong@linux.intel.com>
Date:   Mon, 28 Feb 2022 19:15:58 +0800
From:   Wong Vee Khee <vee.khee.wong@...ux.intel.com>
To:     "David S . Miller" <davem@...emloft.net>,
        Jakub Kicinski <kuba@...nel.org>,
        Maxime Coquelin <mcoquelin.stm32@...il.com>
Cc:     Giuseppe Cavallaro <peppe.cavallaro@...com>,
        Alexandre Torgue <alexandre.torgue@...s.st.com>,
        Jose Abreu <joabreu@...opsys.com>, netdev@...r.kernel.org,
        linux-stm32@...md-mailman.stormreply.com,
        linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
        pei.lee.ling@...el.com
Subject: [PATCH net 1/1] net: stmmac: Resolve poor line rate after switching from TSO off to TSO on

From: Ling Pei Lee <pei.lee.ling@...el.com>

Sequential execution of these steps:
i) TSO ON – iperf3 execution,
ii) TSO OFF – iperf3 execution,
iii) TSO ON – iperf3 execution, it leads to iperf3 0 bytes transfer.

Example of mentioned Issue happened:
root@...A:~# iperf3 -c 169.254.168.191
Connecting to host 169.254.168.191, port 5201
[  5] local 169.254.50.108 port 45846 connected to 169.254.168.191
port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   113 MBytes   947 Mbits/sec    0    378 KBytes
[  5]   1.00-2.00   sec   111 MBytes   933 Mbits/sec    0    378 KBytes
[  5]   2.00-3.00   sec   111 MBytes   933 Mbits/sec    0    378 KBytes
[  5]   3.00-4.00   sec   111 MBytes   929 Mbits/sec    0    378 KBytes
[  5]   4.00-5.00   sec   111 MBytes   934 Mbits/sec    0    378 KBytes
[  5]   5.00-6.00   sec   111 MBytes   932 Mbits/sec    0    378 KBytes
[  5]   6.00-7.00   sec   111 MBytes   932 Mbits/sec    0    378 KBytes
[  5]   7.00-8.00   sec   111 MBytes   932 Mbits/sec    0    378 KBytes
[  5]   8.00-9.00   sec   111 MBytes   931 Mbits/sec    0    378 KBytes
[  5]   9.00-10.00  sec   111 MBytes   932 Mbits/sec    0    378 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.09 GBytes   933 Mbits/sec    0    sender
[  5]   0.00-10.00  sec  1.09 GBytes   932 Mbits/sec         receiver

iperf Done.
root@...A:~# ethtool -K enp0s30f4 tso off
root@...A:~# iperf3 -c 169.254.168.191
Connecting to host 169.254.168.191, port 5201
[  5] local 169.254.50.108 port 45854 connected to 169.254.168.191
port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   104 MBytes   870 Mbits/sec    0    352 KBytes
[  5]   1.00-2.00   sec   101 MBytes   850 Mbits/sec    0    369 KBytes
[  5]   2.00-3.00   sec   102 MBytes   860 Mbits/sec    0    369 KBytes
[  5]   3.00-4.00   sec   102 MBytes   853 Mbits/sec    0    369 KBytes
[  5]   4.00-5.00   sec   102 MBytes   855 Mbits/sec    0    369 KBytes
[  5]   5.00-6.00   sec   101 MBytes   849 Mbits/sec    0    369 KBytes
[  5]   6.00-7.00   sec   102 MBytes   860 Mbits/sec    0    369 KBytes
[  5]   7.00-8.00   sec   102 MBytes   853 Mbits/sec    0    369 KBytes
[  5]   8.00-9.00   sec   101 MBytes   851 Mbits/sec    0    369 KBytes
[  5]   9.00-10.00  sec   102 MBytes   856 Mbits/sec    0    369 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1020 MBytes   856 Mbits/sec    0    sender
[  5]   0.00-10.00  sec  1019 MBytes   854 Mbits/sec         receiver

iperf Done.
root@...A:~# ethtool -K enp0s30f4 tso on
root@...A:~# iperf3 -c 169.254.168.191
Connecting to host 169.254.168.191, port 5201
[  5] local 169.254.50.108 port 45860 connected to 169.254.168.191
port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   107 KBytes   879 Kbits/sec    0   1.41 KBytes
[  5]   1.00-2.00   sec  0.00 Bytes  0.00 bits/sec    0   1.41 KBytes
[  5]   2.00-3.00   sec  0.00 Bytes  0.00 bits/sec    0   1.41 KBytes
[  5]   3.00-4.00   sec  0.00 Bytes  0.00 bits/sec    0   1.41 KBytes
[  5]   4.00-5.00   sec  0.00 Bytes  0.00 bits/sec    0   1.41 KBytes
[  5]   5.00-6.00   sec  0.00 Bytes  0.00 bits/sec    0   1.41 KBytes
[  5]   6.00-7.00   sec  0.00 Bytes  0.00 bits/sec    0   1.41 KBytes
[  5]   7.00-8.00   sec  0.00 Bytes  0.00 bits/sec    0   1.41 KBytes

Clear mss in TDES and call stmmac_enable_tso() to indicate
a new TSO transmission when it is enabled from TSO off using
ethtool command

Fixes: f748be531d70 ("stmmac: support new GMAC4")
Signed-off-by: Ling Pei Lee <pei.lee.ling@...el.com>
Signed-off-by: Wong Vee Khee <vee.khee.wong@...ux.intel.com>
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index b745d624b2cb..9e2ea0e0bd68 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -5460,6 +5460,8 @@ static netdev_features_t stmmac_fix_features(struct net_device *dev,
 					     netdev_features_t features)
 {
 	struct stmmac_priv *priv = netdev_priv(dev);
+	u32 tx_cnt = priv->plat->tx_queues_to_use;
+	u32 chan;
 
 	if (priv->plat->rx_coe == STMMAC_RX_COE_NONE)
 		features &= ~NETIF_F_RXCSUM;
@@ -5483,6 +5485,16 @@ static netdev_features_t stmmac_fix_features(struct net_device *dev,
 			priv->tso = false;
 	}
 
+	for (chan = 0; chan < tx_cnt; chan++) {
+		struct stmmac_tx_queue *tx_q = &priv->tx_queue[chan];
+
+		/* TSO and TBS cannot co-exist */
+		if (tx_q->tbs & STMMAC_TBS_AVAIL)
+			continue;
+
+		tx_q->mss = 0;
+		stmmac_enable_tso(priv, priv->ioaddr, priv->tso, chan);
+	}
 	return features;
 }
 
-- 
2.25.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ