netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next v2 0/3] Drop NETDEV_UNREGISTER_FINAL (was unnamed)
@ 2018-03-23 16:47 Kirill Tkhai
  2018-03-23 16:47 ` [PATCH net-next v2 2/3] infiniband: Replace usnic_ib_netdev_event_to_string() with netdev_cmd_to_name() Kirill Tkhai
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Kirill Tkhai @ 2018-03-23 16:47 UTC (permalink / raw)
  To: davem, Michal.Kalderon, Ariel.Elior, dledford, jgg, benve,
	1dgoodell, daniel, jakub.kicinski, ast, edumazet, linux,
	john.fastabend, brouer, dsahern, netdev, ktkhai

This series drops unused NETDEV_UNREGISTER_FINAL
after some preparations.

v2: New patch [2/3]. Use switch() in [1/3].

The first version was acked by Jason Gunthorpe,
and [1/3] was acked by David Ahern.

Since there are differences to v1, I haven't added
Acked-by tags of people. It would be nice, if you
fill OK to tag v2 too.

Thanks,
Kirill
---

Kirill Tkhai (3):
      net: Make NETDEV_XXX commands enum { }
      infiniband: Replace usnic_ib_netdev_event_to_string() with netdev_cmd_to_name()
      net: Drop NETDEV_UNREGISTER_FINAL


 drivers/infiniband/hw/qedr/main.c           |    4 +-
 drivers/infiniband/hw/usnic/usnic_ib_main.c |   28 ++---------
 include/linux/netdevice.h                   |   68 ++++++++++++++-------------
 include/rdma/ib_verbs.h                     |    4 +-
 net/core/dev.c                              |   25 ++++++++--
 5 files changed, 63 insertions(+), 66 deletions(-)

--
Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>

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

* [PATCH net-next v2 2/3] infiniband: Replace usnic_ib_netdev_event_to_string() with netdev_cmd_to_name()
  2018-03-23 16:47 [PATCH net-next v2 0/3] Drop NETDEV_UNREGISTER_FINAL (was unnamed) Kirill Tkhai
@ 2018-03-23 16:47 ` Kirill Tkhai
  2018-03-23 16:47 ` [PATCH net-next v2 3/3] net: Drop NETDEV_UNREGISTER_FINAL Kirill Tkhai
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Kirill Tkhai @ 2018-03-23 16:47 UTC (permalink / raw)
  To: davem, Michal.Kalderon, Ariel.Elior, dledford, jgg, benve,
	1dgoodell, daniel, jakub.kicinski, ast, edumazet, linux,
	john.fastabend, brouer, dsahern, netdev, ktkhai

This function just calls netdev_cmd_to_name().

Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
---
 drivers/infiniband/hw/usnic/usnic_ib_main.c |   15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)

diff --git a/drivers/infiniband/hw/usnic/usnic_ib_main.c b/drivers/infiniband/hw/usnic/usnic_ib_main.c
index 5bf3b20eba25..ca5638091b55 100644
--- a/drivers/infiniband/hw/usnic/usnic_ib_main.c
+++ b/drivers/infiniband/hw/usnic/usnic_ib_main.c
@@ -95,11 +95,6 @@ void usnic_ib_log_vf(struct usnic_ib_vf *vf)
 }
 
 /* Start of netdev section */
-static inline const char *usnic_ib_netdev_event_to_string(unsigned long event)
-{
-	return netdev_cmd_to_name(event);
-}
-
 static void usnic_ib_qp_grp_modify_active_to_err(struct usnic_ib_dev *us_ibdev)
 {
 	struct usnic_ib_ucontext *ctx;
@@ -172,7 +167,7 @@ static void usnic_ib_handle_usdev_event(struct usnic_ib_dev *us_ibdev,
 			ib_dispatch_event(&ib_event);
 		} else {
 			usnic_dbg("Ignoring %s on %s\n",
-					usnic_ib_netdev_event_to_string(event),
+					netdev_cmd_to_name(event),
 					us_ibdev->ib_dev.name);
 		}
 		break;
@@ -209,7 +204,7 @@ static void usnic_ib_handle_usdev_event(struct usnic_ib_dev *us_ibdev,
 		break;
 	default:
 		usnic_dbg("Ignoring event %s on %s",
-				usnic_ib_netdev_event_to_string(event),
+				netdev_cmd_to_name(event),
 				us_ibdev->ib_dev.name);
 	}
 	mutex_unlock(&us_ibdev->usdev_lock);
@@ -251,7 +246,7 @@ static int usnic_ib_handle_inet_event(struct usnic_ib_dev *us_ibdev,
 	switch (event) {
 	case NETDEV_DOWN:
 		usnic_info("%s via ip notifiers",
-				usnic_ib_netdev_event_to_string(event));
+				netdev_cmd_to_name(event));
 		usnic_fwd_del_ipaddr(us_ibdev->ufdev);
 		usnic_ib_qp_grp_modify_active_to_err(us_ibdev);
 		ib_event.event = IB_EVENT_GID_CHANGE;
@@ -262,7 +257,7 @@ static int usnic_ib_handle_inet_event(struct usnic_ib_dev *us_ibdev,
 	case NETDEV_UP:
 		usnic_fwd_add_ipaddr(us_ibdev->ufdev, ifa->ifa_address);
 		usnic_info("%s via ip notifiers: ip %pI4",
-				usnic_ib_netdev_event_to_string(event),
+				netdev_cmd_to_name(event),
 				&us_ibdev->ufdev->inaddr);
 		ib_event.event = IB_EVENT_GID_CHANGE;
 		ib_event.device = &us_ibdev->ib_dev;
@@ -271,7 +266,7 @@ static int usnic_ib_handle_inet_event(struct usnic_ib_dev *us_ibdev,
 		break;
 	default:
 		usnic_info("Ignoring event %s on %s",
-				usnic_ib_netdev_event_to_string(event),
+				netdev_cmd_to_name(event),
 				us_ibdev->ib_dev.name);
 	}
 	mutex_unlock(&us_ibdev->usdev_lock);

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

* [PATCH net-next v2 3/3] net: Drop NETDEV_UNREGISTER_FINAL
  2018-03-23 16:47 [PATCH net-next v2 0/3] Drop NETDEV_UNREGISTER_FINAL (was unnamed) Kirill Tkhai
  2018-03-23 16:47 ` [PATCH net-next v2 2/3] infiniband: Replace usnic_ib_netdev_event_to_string() with netdev_cmd_to_name() Kirill Tkhai
@ 2018-03-23 16:47 ` Kirill Tkhai
  2018-03-23 16:50 ` [PATCH net-next v2 0/3] Drop NETDEV_UNREGISTER_FINAL (was unnamed) Jason Gunthorpe
  2018-03-26 15:35 ` [PATCH net-next v2 0/3] Drop NETDEV_UNREGISTER_FINAL David Miller
  3 siblings, 0 replies; 5+ messages in thread
From: Kirill Tkhai @ 2018-03-23 16:47 UTC (permalink / raw)
  To: davem, Michal.Kalderon, Ariel.Elior, dledford, jgg, benve,
	1dgoodell, daniel, jakub.kicinski, ast, edumazet, linux,
	john.fastabend, brouer, dsahern, netdev, ktkhai

Last user is gone after bdf5bd7f2132 "rds: tcp: remove
register_netdevice_notifier infrastructure.", so we can
remove this netdevice command. This allows to delete
rtnl_lock() in netdev_run_todo(), which is hot path for
net namespace unregistration.

dev_change_net_namespace() and netdev_wait_allrefs()
have rcu_barrier() before NETDEV_UNREGISTER_FINAL call,
and the source commits say they were introduced to
delemit the call with NETDEV_UNREGISTER, but this patch
leaves them on the places, since they require additional
analysis, whether we need in them for something else.

Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
---
 drivers/infiniband/hw/qedr/main.c |    4 ++--
 include/linux/netdevice.h         |    1 -
 include/rdma/ib_verbs.h           |    4 ++--
 net/core/dev.c                    |    7 -------
 4 files changed, 4 insertions(+), 12 deletions(-)

diff --git a/drivers/infiniband/hw/qedr/main.c b/drivers/infiniband/hw/qedr/main.c
index db4bf97c0e15..eb32abb0099a 100644
--- a/drivers/infiniband/hw/qedr/main.c
+++ b/drivers/infiniband/hw/qedr/main.c
@@ -90,8 +90,8 @@ static struct net_device *qedr_get_netdev(struct ib_device *dev, u8 port_num)
 	dev_hold(qdev->ndev);
 
 	/* The HW vendor's device driver must guarantee
-	 * that this function returns NULL before the net device reaches
-	 * NETDEV_UNREGISTER_FINAL state.
+	 * that this function returns NULL before the net device has finished
+	 * NETDEV_UNREGISTER state.
 	 */
 	return qdev->ndev;
 }
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index dd5a04c971d5..2a2d9cf50aa2 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -2336,7 +2336,6 @@ enum netdev_cmd {
 	NETDEV_PRE_TYPE_CHANGE,
 	NETDEV_POST_TYPE_CHANGE,
 	NETDEV_POST_INIT,
-	NETDEV_UNREGISTER_FINAL,
 	NETDEV_RELEASE,
 	NETDEV_NOTIFY_PEERS,
 	NETDEV_JOIN,
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 73b2387e3f74..a1c5e8320f86 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -2126,8 +2126,8 @@ struct ib_device {
 	 * net device of device @device at port @port_num or NULL if such
 	 * a net device doesn't exist. The vendor driver should call dev_hold
 	 * on this net device. The HW vendor's device driver must guarantee
-	 * that this function returns NULL before the net device reaches
-	 * NETDEV_UNREGISTER_FINAL state.
+	 * that this function returns NULL before the net device has finished
+	 * NETDEV_UNREGISTER state.
 	 */
 	struct net_device	  *(*get_netdev)(struct ib_device *device,
 						 u8 port_num);
diff --git a/net/core/dev.c b/net/core/dev.c
index eb8ff44f46d6..cb4d2ceb36fb 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1584,7 +1584,6 @@ const char *netdev_cmd_to_name(enum netdev_cmd cmd)
 	N(RESEND_IGMP) N(PRECHANGEMTU) N(CHANGEINFODATA) N(BONDING_INFO)
 	N(PRECHANGEUPPER) N(CHANGELOWERSTATE) N(UDP_TUNNEL_PUSH_INFO)
 	N(UDP_TUNNEL_DROP_INFO) N(CHANGE_TX_QUEUE_LEN)
-	N(UNREGISTER_FINAL)
 	};
 #undef N
 	return "UNKNOWN_NETDEV_EVENT";
@@ -8089,7 +8088,6 @@ static void netdev_wait_allrefs(struct net_device *dev)
 			rcu_barrier();
 			rtnl_lock();
 
-			call_netdevice_notifiers(NETDEV_UNREGISTER_FINAL, dev);
 			if (test_bit(__LINK_STATE_LINKWATCH_PENDING,
 				     &dev->state)) {
 				/* We must not have linkwatch events
@@ -8161,10 +8159,6 @@ void netdev_run_todo(void)
 			= list_first_entry(&list, struct net_device, todo_list);
 		list_del(&dev->todo_list);
 
-		rtnl_lock();
-		call_netdevice_notifiers(NETDEV_UNREGISTER_FINAL, dev);
-		__rtnl_unlock();
-
 		if (unlikely(dev->reg_state != NETREG_UNREGISTERING)) {
 			pr_err("network todo '%s' but state %d\n",
 			       dev->name, dev->reg_state);
@@ -8606,7 +8600,6 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
 	 */
 	call_netdevice_notifiers(NETDEV_UNREGISTER, dev);
 	rcu_barrier();
-	call_netdevice_notifiers(NETDEV_UNREGISTER_FINAL, dev);
 
 	new_nsid = peernet2id_alloc(dev_net(dev), net);
 	/* If there is an ifindex conflict assign a new one */

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

* Re: [PATCH net-next v2 0/3] Drop NETDEV_UNREGISTER_FINAL (was unnamed)
  2018-03-23 16:47 [PATCH net-next v2 0/3] Drop NETDEV_UNREGISTER_FINAL (was unnamed) Kirill Tkhai
  2018-03-23 16:47 ` [PATCH net-next v2 2/3] infiniband: Replace usnic_ib_netdev_event_to_string() with netdev_cmd_to_name() Kirill Tkhai
  2018-03-23 16:47 ` [PATCH net-next v2 3/3] net: Drop NETDEV_UNREGISTER_FINAL Kirill Tkhai
@ 2018-03-23 16:50 ` Jason Gunthorpe
  2018-03-26 15:35 ` [PATCH net-next v2 0/3] Drop NETDEV_UNREGISTER_FINAL David Miller
  3 siblings, 0 replies; 5+ messages in thread
From: Jason Gunthorpe @ 2018-03-23 16:50 UTC (permalink / raw)
  To: Kirill Tkhai
  Cc: davem, Michal.Kalderon, Ariel.Elior, dledford, benve, 1dgoodell,
	daniel, jakub.kicinski, ast, edumazet, linux, john.fastabend,
	brouer, dsahern, netdev

On Fri, Mar 23, 2018 at 07:47:09PM +0300, Kirill Tkhai wrote:
> This series drops unused NETDEV_UNREGISTER_FINAL
> after some preparations.
> 
> v2: New patch [2/3]. Use switch() in [1/3].
> 
> The first version was acked by Jason Gunthorpe,
> and [1/3] was acked by David Ahern.
> 
> Since there are differences to v1, I haven't added
> Acked-by tags of people. It would be nice, if you
> fill OK to tag v2 too.
>
> Thanks,
> Kirill
> 
> Kirill Tkhai (3):
>       net: Make NETDEV_XXX commands enum { }
>       infiniband: Replace usnic_ib_netdev_event_to_string() with netdev_cmd_to_name()
>       net: Drop NETDEV_UNREGISTER_FINAL
> 
>  drivers/infiniband/hw/qedr/main.c           |    4 +-
>  drivers/infiniband/hw/usnic/usnic_ib_main.c |   28 ++---------
>  include/linux/netdevice.h                   |   68 ++++++++++++++-------------
>  include/rdma/ib_verbs.h                     |    4 +-
>  net/core/dev.c                              |   25 ++++++++--
>  5 files changed, 63 insertions(+), 66 deletions(-)

All the infiniband stuff is OK to merge through netdev:

Acked-by: Jason Gunthorpe <jgg@mellanox>

Jason

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

* Re: [PATCH net-next v2 0/3] Drop NETDEV_UNREGISTER_FINAL
  2018-03-23 16:47 [PATCH net-next v2 0/3] Drop NETDEV_UNREGISTER_FINAL (was unnamed) Kirill Tkhai
                   ` (2 preceding siblings ...)
  2018-03-23 16:50 ` [PATCH net-next v2 0/3] Drop NETDEV_UNREGISTER_FINAL (was unnamed) Jason Gunthorpe
@ 2018-03-26 15:35 ` David Miller
  3 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2018-03-26 15:35 UTC (permalink / raw)
  To: ktkhai
  Cc: Michal.Kalderon, Ariel.Elior, dledford, jgg, benve, 1dgoodell,
	daniel, jakub.kicinski, ast, edumazet, linux, john.fastabend,
	brouer, dsahern, netdev

From: Kirill Tkhai <ktkhai@virtuozzo.com>
Date: Fri, 23 Mar 2018 19:47:09 +0300

> This series drops unused NETDEV_UNREGISTER_FINAL
> after some preparations.
> 
> v2: New patch [2/3]. Use switch() in [1/3].
> 
> The first version was acked by Jason Gunthorpe,
> and [1/3] was acked by David Ahern.
> 
> Since there are differences to v1, I haven't added
> Acked-by tags of people. It would be nice, if you
> fill OK to tag v2 too.

Series applied, thank you!

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

end of thread, other threads:[~2018-03-26 15:35 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-03-23 16:47 [PATCH net-next v2 0/3] Drop NETDEV_UNREGISTER_FINAL (was unnamed) Kirill Tkhai
2018-03-23 16:47 ` [PATCH net-next v2 2/3] infiniband: Replace usnic_ib_netdev_event_to_string() with netdev_cmd_to_name() Kirill Tkhai
2018-03-23 16:47 ` [PATCH net-next v2 3/3] net: Drop NETDEV_UNREGISTER_FINAL Kirill Tkhai
2018-03-23 16:50 ` [PATCH net-next v2 0/3] Drop NETDEV_UNREGISTER_FINAL (was unnamed) Jason Gunthorpe
2018-03-26 15:35 ` [PATCH net-next v2 0/3] Drop NETDEV_UNREGISTER_FINAL David Miller

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).