patch 'net/txgbe: set I2C SDA hold time' has been queued to stable release 24.11.9
luca.boccassi at gmail.com
luca.boccassi at gmail.com
Thu Nov 5 17:43:13 CET 2026
Hi,
FYI, your patch has been queued to stable release 24.11.9
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/07/26. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/ee1a79c17e75118b1eb9e147f20fbd53d95286fc
Thanks.
Luca Boccassi
---
>From ee1a79c17e75118b1eb9e147f20fbd53d95286fc Mon Sep 17 00:00:00 2001
From: Zaiyu Wang <zaiyuwang at trustnetic.com>
Date: Wed, 28 Oct 2026 18:33:55 +0800
Subject: [PATCH] net/txgbe: set I2C SDA hold time
[ upstream commit 2d97950c7bad404b3627dc00dafe1161c4eed6a1 ]
The data_in_hold_time measured on the oscilloscope does not meet the
hardware requirement, which can corrupt SFP EEPROM reads over I2C.
Set the I2C SDA hold time to 100 (0x64) I2C clock periods for both
RX and TX in txgbe_i2c_start().
Fixes: 00970f6398c8 ("net/txgbe: fix reading SFP module SFF-8472 data")
Signed-off-by: Zaiyu Wang <zaiyuwang at trustnetic.com>
---
drivers/net/txgbe/base/txgbe_phy.c | 3 +++
drivers/net/txgbe/base/txgbe_regs.h | 3 +++
2 files changed, 6 insertions(+)
diff --git a/drivers/net/txgbe/base/txgbe_phy.c b/drivers/net/txgbe/base/txgbe_phy.c
index ce6882e2627..43cf32350f3 100644
--- a/drivers/net/txgbe/base/txgbe_phy.c
+++ b/drivers/net/txgbe/base/txgbe_phy.c
@@ -1338,6 +1338,9 @@ static void txgbe_i2c_start(struct txgbe_hw *hw, u8 dev_addr)
wr32(hw, TXGBE_I2CSCLTMOUT, 0xFFFFFF);
wr32(hw, TXGBE_I2CSDATMOUT, 0xFFFFFF);
+ wr32m(hw, TXGBE_I2C_SDA_HOLD,
+ TXGBE_I2C_SDA_RX_HOLD | TXGBE_I2C_SDA_TX_HOLD, 0x640064);
+
wr32(hw, TXGBE_I2CICM, 0);
wr32(hw, TXGBE_I2CENA, 1);
}
diff --git a/drivers/net/txgbe/base/txgbe_regs.h b/drivers/net/txgbe/base/txgbe_regs.h
index 5156b9055cc..393846d90e1 100644
--- a/drivers/net/txgbe/base/txgbe_regs.h
+++ b/drivers/net/txgbe/base/txgbe_regs.h
@@ -1556,6 +1556,9 @@ enum txgbe_5tuple_protocol {
#define TXGBE_I2CSTAT_MST ((1U << 5))
#define TXGBE_I2CSCLTMOUT 0x0149AC
#define TXGBE_I2CSDATMOUT 0x0149B0 /*I2C SDA Stuck at Low Timeout*/
+#define TXGBE_I2C_SDA_HOLD 0x1497C /* SDA hold time length reg */
+#define TXGBE_I2C_SDA_RX_HOLD 0xff0000 /* SDA rx hold time length reg */
+#define TXGBE_I2C_SDA_TX_HOLD 0xffff /* SDA tx hold time length reg */
/* port cfg Registers */
#define TXGBE_PORTSTAT 0x014404
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2026-11-05 16:42:48.977192260 +0000
+++ 0106-net-txgbe-set-I2C-SDA-hold-time.patch 2026-11-05 16:42:45.061064970 +0000
@@ -1 +1 @@
-From 2d97950c7bad404b3627dc00dafe1161c4eed6a1 Mon Sep 17 00:00:00 2001
+From ee1a79c17e75118b1eb9e147f20fbd53d95286fc Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2d97950c7bad404b3627dc00dafe1161c4eed6a1 ]
+
@@ -13 +14,0 @@
-Cc: stable at dpdk.org
@@ -22 +23 @@
-index 2fbe50e242f..8b653f0aeb8 100644
+index ce6882e2627..43cf32350f3 100644
@@ -25 +26 @@
-@@ -1334,6 +1334,9 @@ static void txgbe_i2c_start(struct txgbe_hw *hw, u8 dev_addr)
+@@ -1338,6 +1338,9 @@ static void txgbe_i2c_start(struct txgbe_hw *hw, u8 dev_addr)
@@ -36 +37 @@
-index bf46a808622..b0042dc0d6e 100644
+index 5156b9055cc..393846d90e1 100644
@@ -39 +40 @@
-@@ -1610,6 +1610,9 @@ enum txgbe_5tuple_protocol {
+@@ -1556,6 +1556,9 @@ enum txgbe_5tuple_protocol {
More information about the stable
mailing list