Message ID | 20240904095418.6426-1-larysa.zaremba@intel.com (mailing list archive) |
---|---|
State | Awaiting Upstream |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [iwl-net] idpf: deinit virtchnl transaction manager after vport and vectors | expand |
> -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of > Larysa Zaremba > Sent: Wednesday, September 4, 2024 2:54 AM > To: intel-wired-lan@lists.osuosl.org; Nguyen, Anthony L > <anthony.l.nguyen@intel.com> > Cc: Tantilov, Emil S <emil.s.tantilov@intel.com>; Zaremba, Larysa > <larysa.zaremba@intel.com>; Kitszel, Przemyslaw > <przemyslaw.kitszel@intel.com>; Hay, Joshua A <joshua.a.hay@intel.com>; > linux-kernel@vger.kernel.org; Bagnucki, Igor <igor.bagnucki@intel.com>; > Lobakin, Aleksander <aleksander.lobakin@intel.com>; Eric Dumazet > <edumazet@google.com>; Kubiak, Michal <michal.kubiak@intel.com>; Alan > Brady <alan.brady@intel.com>; netdev@vger.kernel.org; Jakub Kicinski > <kuba@kernel.org>; Paolo Abeni <pabeni@redhat.com>; David S. Miller > <davem@davemloft.net> > Subject: [Intel-wired-lan] [PATCH iwl-net] idpf: deinit virtchnl transaction > manager after vport and vectors > > When the device is removed, idpf is supposed to make certain virtchnl > requests e.g. VIRTCHNL2_OP_DEALLOC_VECTORS and > VIRTCHNL2_OP_DESTROY_VPORT. > > However, this does not happen due to the referenced commit introducing > virtchnl transaction manager and placing its deinitialization before those > messages are sent. Then the sending is impossible due to no transactions > being available. > > Lack of cleanup can lead to the FW becoming unresponsive from e.g. > unloading-loading the driver and creating-destroying VFs afterwards. > > Move transaction manager deinitialization to after other virtchnl-related > cleanup is done. > > Fixes: 34c21fa894a1 ("idpf: implement virtchnl transaction manager") > Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com> > Signed-off-by: Larysa Zaremba <larysa.zaremba@intel.com> > --- > drivers/net/ethernet/intel/idpf/idpf_virtchnl.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c > b/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c > index a5f9b7a5effe..f18f490dafd8 100644 > --- a/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c > +++ b/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c Tested-by: Krishneil Singh <krishneil.k.singh@intel.com>
diff --git a/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c b/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c index a5f9b7a5effe..f18f490dafd8 100644 --- a/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c +++ b/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c @@ -3040,9 +3040,9 @@ void idpf_vc_core_deinit(struct idpf_adapter *adapter) if (!test_bit(IDPF_VC_CORE_INIT, adapter->flags)) return; - idpf_vc_xn_shutdown(adapter->vcxn_mngr); idpf_deinit_task(adapter); idpf_intr_rel(adapter); + idpf_vc_xn_shutdown(adapter->vcxn_mngr); cancel_delayed_work_sync(&adapter->serv_task); cancel_delayed_work_sync(&adapter->mbx_task);