From: Tony Nguyen <anthony.l.nguyen@intel.com>
To: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com,
edumazet@google.com, andrew+netdev@lunn.ch,
netdev@vger.kernel.org
Cc: Emil Tantilov <emil.s.tantilov@intel.com>,
anthony.l.nguyen@intel.com, joshua.a.hay@intel.com,
madhu.chittim@intel.com, larysa.zaremba@intel.com,
aleksander.lobakin@intel.com, iamvivekkumar@google.com,
decot@google.com, willemb@google.com,
Aleksandr Loktionov <aleksandr.loktionov@intel.com>,
Samuel Salin <Samuel.salin@intel.com>
Subject: [PATCH net 01/13] idpf: keep the netdev when a reset fails
Date: Tue, 6 Jan 2026 16:06:33 -0800 [thread overview]
Message-ID: <20260107000648.1861994-2-anthony.l.nguyen@intel.com> (raw)
In-Reply-To: <20260107000648.1861994-1-anthony.l.nguyen@intel.com>
From: Emil Tantilov <emil.s.tantilov@intel.com>
During a successful reset the driver would re-allocate vport resources
while keeping the netdevs intact. However, in case of an error in the
init task, the netdev of the failing vport will be unregistered,
effectively removing the network interface:
[ 121.211076] idpf 0000:83:00.0: enabling device (0100 -> 0102)
[ 121.221976] idpf 0000:83:00.0: Device HW Reset initiated
[ 124.161229] idpf 0000:83:00.0 ens801f0: renamed from eth0
[ 124.163364] idpf 0000:83:00.0 ens801f0d1: renamed from eth1
[ 125.934656] idpf 0000:83:00.0 ens801f0d2: renamed from eth2
[ 128.218429] idpf 0000:83:00.0 ens801f0d3: renamed from eth3
ip -br a
ens801f0 UP
ens801f0d1 UP
ens801f0d2 UP
ens801f0d3 UP
echo 1 > /sys/class/net/ens801f0/device/reset
[ 145.885537] idpf 0000:83:00.0: resetting
[ 145.990280] idpf 0000:83:00.0: reset done
[ 146.284766] idpf 0000:83:00.0: HW reset detected
[ 146.296610] idpf 0000:83:00.0: Device HW Reset initiated
[ 211.556719] idpf 0000:83:00.0: Transaction timed-out (op:526 cookie:7700 vc_op:526 salt:77 timeout:60000ms)
[ 272.996705] idpf 0000:83:00.0: Transaction timed-out (op:502 cookie:7800 vc_op:502 salt:78 timeout:60000ms)
ip -br a
ens801f0d1 DOWN
ens801f0d2 DOWN
ens801f0d3 DOWN
Re-shuffle the logic in the error path of the init task to make sure the
netdevs remain intact. This will allow the driver to attempt recovery via
subsequent resets, provided the FW is still functional.
The main change is to make sure that idpf_decfg_netdev() is not called
should the init task fail during a reset. The error handling is
consolidated under unwind_vports, as the removed labels had the same
cleanup logic split depending on the point of failure.
Fixes: ce1b75d0635c ("idpf: add ptypes and MAC filter support")
Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Tested-by: Samuel Salin <Samuel.salin@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
drivers/net/ethernet/intel/idpf/idpf_lib.c | 17 ++++++-----------
1 file changed, 6 insertions(+), 11 deletions(-)
diff --git a/drivers/net/ethernet/intel/idpf/idpf_lib.c b/drivers/net/ethernet/intel/idpf/idpf_lib.c
index 7ce4eb71a433..313803c08847 100644
--- a/drivers/net/ethernet/intel/idpf/idpf_lib.c
+++ b/drivers/net/ethernet/intel/idpf/idpf_lib.c
@@ -1579,6 +1579,10 @@ void idpf_init_task(struct work_struct *work)
goto unwind_vports;
}
+ err = idpf_send_get_rx_ptype_msg(vport);
+ if (err)
+ goto unwind_vports;
+
index = vport->idx;
vport_config = adapter->vport_config[index];
@@ -1590,15 +1594,11 @@ void idpf_init_task(struct work_struct *work)
err = idpf_check_supported_desc_ids(vport);
if (err) {
dev_err(&pdev->dev, "failed to get required descriptor ids\n");
- goto cfg_netdev_err;
+ goto unwind_vports;
}
if (idpf_cfg_netdev(vport))
- goto cfg_netdev_err;
-
- err = idpf_send_get_rx_ptype_msg(vport);
- if (err)
- goto handle_err;
+ goto unwind_vports;
/* Once state is put into DOWN, driver is ready for dev_open */
np = netdev_priv(vport->netdev);
@@ -1645,11 +1645,6 @@ void idpf_init_task(struct work_struct *work)
return;
-handle_err:
- idpf_decfg_netdev(vport);
-cfg_netdev_err:
- idpf_vport_rel(vport);
- adapter->vports[index] = NULL;
unwind_vports:
if (default_vport) {
for (index = 0; index < adapter->max_vports; index++) {
--
2.47.1
next prev parent reply other threads:[~2026-01-07 0:06 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-07 0:06 [PATCH net 00/13][pull request] Intel Wired LAN Driver Updates 2026-01-06 (idpf) Tony Nguyen
2026-01-07 0:06 ` Tony Nguyen [this message]
2026-01-07 0:06 ` [PATCH net 02/13] idpf: detach and close netdevs while handling a reset Tony Nguyen
2026-01-07 0:06 ` [PATCH net 03/13] idpf: fix memory leak in idpf_vport_rel() Tony Nguyen
2026-01-07 0:06 ` [PATCH net 04/13] idpf: fix memory leak in idpf_vc_core_deinit() Tony Nguyen
2026-01-07 0:06 ` [PATCH net 05/13] idpf: fix error handling in the init_task on load Tony Nguyen
2026-01-07 0:06 ` [PATCH net 06/13] idpf: fix memory leak of flow steer list on rmmod Tony Nguyen
2026-01-07 0:06 ` [PATCH net 07/13] idpf: fix issue with ethtool -n command display Tony Nguyen
2026-01-07 0:06 ` [PATCH net 08/13] idpf: Fix RSS LUT NULL pointer crash on early ethtool operations Tony Nguyen
2026-01-07 0:06 ` [PATCH net 09/13] idpf: Fix RSS LUT configuration on down interfaces Tony Nguyen
2026-01-07 0:06 ` [PATCH net 10/13] idpf: Fix RSS LUT NULL ptr issue after soft reset Tony Nguyen
2026-01-07 0:06 ` [PATCH net 11/13] idpf: Fix error handling in idpf_vport_open() Tony Nguyen
2026-01-07 0:06 ` [PATCH net 12/13] idpf: cap maximum Rx buffer size Tony Nguyen
2026-01-07 0:06 ` [PATCH net 13/13] idpf: fix aux device unplugging when rdma is not supported by vport Tony Nguyen
2026-01-08 17:00 ` [PATCH net 00/13][pull request] Intel Wired LAN Driver Updates 2026-01-06 (idpf) patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260107000648.1861994-2-anthony.l.nguyen@intel.com \
--to=anthony.l.nguyen@intel.com \
--cc=Samuel.salin@intel.com \
--cc=aleksander.lobakin@intel.com \
--cc=aleksandr.loktionov@intel.com \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=decot@google.com \
--cc=edumazet@google.com \
--cc=emil.s.tantilov@intel.com \
--cc=iamvivekkumar@google.com \
--cc=joshua.a.hay@intel.com \
--cc=kuba@kernel.org \
--cc=larysa.zaremba@intel.com \
--cc=madhu.chittim@intel.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=willemb@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox