* [PATCH net-next] net: mana: Add debug knob to skip TX timeout recovery reset
@ 2026-07-10 13:22 Aditya Garg
0 siblings, 0 replies; only message in thread
From: Aditya Garg @ 2026-07-10 13:22 UTC (permalink / raw)
To: kys, haiyangz, wei.liu, decui, longli, andrew+netdev, davem,
edumazet, kuba, pabeni, kotaranov, horms, ernis, dipayanroy,
gargaditya, ssengar, gargaditya, linux-hyperv, netdev,
linux-kernel, linux-rdma
Add a per-port debugfs boolean "tx_timeout_skip_reset" that, when
enabled, makes mana_tx_timeout() log the TX timeout and return without
queueing the per-port detach/attach recovery work.
This is a debug-only aid for bringup and qualification: skipping the
recovery reset keeps the device and queue state intact so a TX timeout
can be correlated with hardware telemetry. The knob defaults to false,
so production recovery behaviour is unchanged.
Signed-off-by: Aditya Garg <gargaditya@linux.microsoft.com>
Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
Reviewed-by: Dipayaan Roy <dipayanroy@linux.microsoft.com>
---
drivers/net/ethernet/microsoft/mana/mana_en.c | 14 ++++++++++++++
include/net/mana/mana.h | 3 +++
2 files changed, 17 insertions(+)
diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c b/drivers/net/ethernet/microsoft/mana/mana_en.c
index 89e7f59f635d..a8c329bdbacf 100644
--- a/drivers/net/ethernet/microsoft/mana/mana_en.c
+++ b/drivers/net/ethernet/microsoft/mana/mana_en.c
@@ -892,6 +892,17 @@ static void mana_tx_timeout(struct net_device *netdev, unsigned int txqueue)
struct mana_context *ac = apc->ac;
struct gdma_context *gc = ac->gdma_dev->gdma_context;
+ /* Debug knob for bringup/qualification: when set, log the timeout and
+ * skip the reset so the failing state is preserved for telemetry.
+ * Disabled by default; production behaviour is unchanged.
+ */
+ if (READ_ONCE(apc->tx_timeout_skip_reset)) {
+ netdev_warn(netdev,
+ "TX timeout on queue %u: reset skipped (tx_timeout_skip_reset enabled)\n",
+ txqueue);
+ return;
+ }
+
/* Already in service, hence tx queue reset is not required.*/
if (test_bit(GC_IN_SERVICE, &gc->flags))
return;
@@ -3486,6 +3497,9 @@ static int mana_init_port(struct net_device *ndev)
&apc->steer_cqe_coalescing);
debugfs_create_u32("current_speed", 0400, apc->mana_port_debugfs,
&apc->speed);
+ debugfs_create_bool("tx_timeout_skip_reset", 0600,
+ apc->mana_port_debugfs,
+ &apc->tx_timeout_skip_reset);
return 0;
reset_apc:
diff --git a/include/net/mana/mana.h b/include/net/mana/mana.h
index 226b61504596..4d041fb8437f 100644
--- a/include/net/mana/mana.h
+++ b/include/net/mana/mana.h
@@ -530,6 +530,9 @@ struct mana_port_context {
struct net_device *ndev;
struct work_struct queue_reset_work;
+ /* Debug knob to log TX timeout but skip recovery reset */
+ bool tx_timeout_skip_reset;
+
u8 mac_addr[ETH_ALEN];
struct mana_eq *eqs;
--
2.43.0
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-07-10 13:23 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-10 13:22 [PATCH net-next] net: mana: Add debug knob to skip TX timeout recovery reset Aditya Garg
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.