netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH iwl-net] ice: add missing napi deletion
@ 2023-06-20  8:24 Maciej Fijalkowski
  2023-06-20  9:58 ` [Intel-wired-lan] " Przemek Kitszel
  2023-06-20 16:53 ` Jakub Kicinski
  0 siblings, 2 replies; 6+ messages in thread
From: Maciej Fijalkowski @ 2023-06-20  8:24 UTC (permalink / raw)
  To: intel-wired-lan
  Cc: netdev, anthony.l.nguyen, magnus.karlsson, michal.swiatkowski,
	Maciej Fijalkowski

Error path from ice_probe() is missing ice_napi_del() calls, add it to
ice_deinit_eth() as ice_init_eth() was the one to add napi instances. It
is also a good habit to delete napis when removing driver and this also
addresses that. FWIW ice_napi_del() had no callsites.

Fixes: 6624e780a577 ("ice: split ice_vsi_setup into smaller functions")
Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_main.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index cd562856f23a..f6b041490154 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -4485,6 +4485,7 @@ static void ice_deinit_eth(struct ice_pf *pf)
 	if (!vsi)
 		return;
 
+	ice_napi_del(vsi);
 	ice_vsi_close(vsi);
 	ice_unregister_netdev(vsi);
 	ice_devlink_destroy_pf_port(pf);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [Intel-wired-lan] [PATCH iwl-net] ice: add missing napi deletion
  2023-06-20  8:24 [PATCH iwl-net] ice: add missing napi deletion Maciej Fijalkowski
@ 2023-06-20  9:58 ` Przemek Kitszel
  2023-06-20 16:53 ` Jakub Kicinski
  1 sibling, 0 replies; 6+ messages in thread
From: Przemek Kitszel @ 2023-06-20  9:58 UTC (permalink / raw)
  To: Maciej Fijalkowski, intel-wired-lan
  Cc: netdev, anthony.l.nguyen, magnus.karlsson, michal.swiatkowski

On 6/20/23 10:24, Maciej Fijalkowski wrote:
> Error path from ice_probe() is missing ice_napi_del() calls, add it to
> ice_deinit_eth() as ice_init_eth() was the one to add napi instances. It
> is also a good habit to delete napis when removing driver and this also
> addresses that. FWIW ice_napi_del() had no callsites.
> 
> Fixes: 6624e780a577 ("ice: split ice_vsi_setup into smaller functions")
> Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
> ---
>   drivers/net/ethernet/intel/ice/ice_main.c | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
> index cd562856f23a..f6b041490154 100644
> --- a/drivers/net/ethernet/intel/ice/ice_main.c
> +++ b/drivers/net/ethernet/intel/ice/ice_main.c
> @@ -4485,6 +4485,7 @@ static void ice_deinit_eth(struct ice_pf *pf)
>   	if (!vsi)
>   		return;
>   
> +	ice_napi_del(vsi);
>   	ice_vsi_close(vsi);
>   	ice_unregister_netdev(vsi);
>   	ice_devlink_destroy_pf_port(pf);

Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH iwl-net] ice: add missing napi deletion
  2023-06-20  8:24 [PATCH iwl-net] ice: add missing napi deletion Maciej Fijalkowski
  2023-06-20  9:58 ` [Intel-wired-lan] " Przemek Kitszel
@ 2023-06-20 16:53 ` Jakub Kicinski
  2023-06-20 17:22   ` Maciej Fijalkowski
  1 sibling, 1 reply; 6+ messages in thread
From: Jakub Kicinski @ 2023-06-20 16:53 UTC (permalink / raw)
  To: Maciej Fijalkowski
  Cc: intel-wired-lan, netdev, anthony.l.nguyen, magnus.karlsson,
	michal.swiatkowski

On Tue, 20 Jun 2023 10:24:54 +0200 Maciej Fijalkowski wrote:
> Error path from ice_probe() is missing ice_napi_del() calls, add it to
> ice_deinit_eth() as ice_init_eth() was the one to add napi instances. It
> is also a good habit to delete napis when removing driver and this also
> addresses that. FWIW ice_napi_del() had no callsites.
> 
> Fixes: 6624e780a577 ("ice: split ice_vsi_setup into smaller functions")
> Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>

Is there user visible impact? I agree that it's a good habit, but
since unregister cleans up NAPI instances automatically the patch
is not necessarily a fix.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH iwl-net] ice: add missing napi deletion
  2023-06-20 16:53 ` Jakub Kicinski
@ 2023-06-20 17:22   ` Maciej Fijalkowski
  2023-06-20 17:49     ` Jakub Kicinski
  0 siblings, 1 reply; 6+ messages in thread
From: Maciej Fijalkowski @ 2023-06-20 17:22 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: intel-wired-lan, netdev, anthony.l.nguyen, magnus.karlsson,
	michal.swiatkowski

On Tue, Jun 20, 2023 at 09:53:35AM -0700, Jakub Kicinski wrote:
> On Tue, 20 Jun 2023 10:24:54 +0200 Maciej Fijalkowski wrote:
> > Error path from ice_probe() is missing ice_napi_del() calls, add it to
> > ice_deinit_eth() as ice_init_eth() was the one to add napi instances. It
> > is also a good habit to delete napis when removing driver and this also
> > addresses that. FWIW ice_napi_del() had no callsites.
> > 
> > Fixes: 6624e780a577 ("ice: split ice_vsi_setup into smaller functions")
> > Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
> 
> Is there user visible impact? I agree that it's a good habit, but
> since unregister cleans up NAPI instances automatically the patch
> is not necessarily a fix.

It's rather free_netdev() not unregistering per se, no? I sent this patch
as I found that cited commit didn't delete napis on ice_probe()'s error
path - I just saw that as a regression. 

But as you're saying when getting rid of netdev we actually do
netif_napi_del() - it seems redundant to do explicit napi delete on remove
path as it is supposed do free the netdev. Does it mean that many drivers
should be verified against that? Sorta tired so might be missing
something, pardon. If not, I'll send a v2 that just removes
ice_napi_del().

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH iwl-net] ice: add missing napi deletion
  2023-06-20 17:22   ` Maciej Fijalkowski
@ 2023-06-20 17:49     ` Jakub Kicinski
  2023-06-21 11:43       ` Maciej Fijalkowski
  0 siblings, 1 reply; 6+ messages in thread
From: Jakub Kicinski @ 2023-06-20 17:49 UTC (permalink / raw)
  To: Maciej Fijalkowski
  Cc: intel-wired-lan, netdev, anthony.l.nguyen, magnus.karlsson,
	michal.swiatkowski

On Tue, 20 Jun 2023 19:22:01 +0200 Maciej Fijalkowski wrote:
> On Tue, Jun 20, 2023 at 09:53:35AM -0700, Jakub Kicinski wrote:
> > Is there user visible impact? I agree that it's a good habit, but
> > since unregister cleans up NAPI instances automatically the patch
> > is not necessarily a fix.  
> 
> It's rather free_netdev() not unregistering per se, no? I sent this patch
> as I found that cited commit didn't delete napis on ice_probe()'s error
> path - I just saw that as a regression. 
> 
> But as you're saying when getting rid of netdev we actually do
> netif_napi_del() - it seems redundant to do explicit napi delete on remove
> path as it is supposed do free the netdev. Does it mean that many drivers
> should be verified against that? Sorta tired so might be missing
> something, pardon. If not, I'll send a v2 that just removes
> ice_napi_del().

I personally prefer to keep track of my resources, so I avoid devm_*
and delete NAPI instances by hand. It's up to the author and/or
maintainer of the driver in question.

My only real ask is to no route this via net and drop the Fixes tag.
Whether you prefer to keep the patch as is or drop ice_napi_del() --
up to you.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH iwl-net] ice: add missing napi deletion
  2023-06-20 17:49     ` Jakub Kicinski
@ 2023-06-21 11:43       ` Maciej Fijalkowski
  0 siblings, 0 replies; 6+ messages in thread
From: Maciej Fijalkowski @ 2023-06-21 11:43 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: intel-wired-lan, netdev, anthony.l.nguyen, magnus.karlsson,
	michal.swiatkowski

On Tue, Jun 20, 2023 at 10:49:11AM -0700, Jakub Kicinski wrote:
> On Tue, 20 Jun 2023 19:22:01 +0200 Maciej Fijalkowski wrote:
> > On Tue, Jun 20, 2023 at 09:53:35AM -0700, Jakub Kicinski wrote:
> > > Is there user visible impact? I agree that it's a good habit, but
> > > since unregister cleans up NAPI instances automatically the patch
> > > is not necessarily a fix.  
> > 
> > It's rather free_netdev() not unregistering per se, no? I sent this patch
> > as I found that cited commit didn't delete napis on ice_probe()'s error
> > path - I just saw that as a regression. 
> > 
> > But as you're saying when getting rid of netdev we actually do
> > netif_napi_del() - it seems redundant to do explicit napi delete on remove
> > path as it is supposed do free the netdev. Does it mean that many drivers
> > should be verified against that? Sorta tired so might be missing
> > something, pardon. If not, I'll send a v2 that just removes
> > ice_napi_del().
> 
> I personally prefer to keep track of my resources, so I avoid devm_*
> and delete NAPI instances by hand. It's up to the author and/or
> maintainer of the driver in question.

Hmm I am not a fan of devm either but I didn't mean that in my response at
all.

There are quite a few drivers that do this:

net/core/dev.c:
void free_netdev(struct net_device *dev)
{
	(...)
	list_for_each_entry_safe(p, n, &dev->napi_list, dev_list)
		netif_napi_del(p);
	(...)
}

static inline void netif_napi_del(struct napi_struct *napi)
{
	__netif_napi_del(napi);
	synchronize_net();
}

drivers/net/ethernet/xxxcorp/xxx/xxx_main.c:
static void xxx_remove(struct pci_dev *pdev)
{
	// retrieve net_device and napi_struct ptrs

	netif_napi_del(napi); // redundant, covered below
	(...)
	free_netdev(netdev);
	(...)
}

I believe this is what you were referring to originally and I said that
after a short drivers audit there is a bunch going via flow shown
above...plus my patch was trying to introduce that :)

Although in such case __netif_napi_del() will exit early as
NAPI_STATE_LISTED bit was cleared, if driver holds multiple napi instances
we will be going unnecessarily via synchronize_net() calls.

> 
> My only real ask is to no route this via net and drop the Fixes tag.
> Whether you prefer to keep the patch as is or drop ice_napi_del() --
> up to you.

I'll go through -next and remove ice_napi_del(), given the above
explanation what I meant previously.

> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-06-21 11:43 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-20  8:24 [PATCH iwl-net] ice: add missing napi deletion Maciej Fijalkowski
2023-06-20  9:58 ` [Intel-wired-lan] " Przemek Kitszel
2023-06-20 16:53 ` Jakub Kicinski
2023-06-20 17:22   ` Maciej Fijalkowski
2023-06-20 17:49     ` Jakub Kicinski
2023-06-21 11:43       ` Maciej Fijalkowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).