Merge branch 'Drop-NETDEV_UNREGISTER_FINAL'
Kirill Tkhai says: ==================== Drop NETDEV_UNREGISTER_FINAL (was unnamed) 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. ==================== Acked-by: Jason Gunthorpe <jgg@mellanox> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
cb6219a2f5
@ -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;
|
||||
}
|
||||
|
@ -95,24 +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)
|
||||
{
|
||||
const char *event2str[] = {"NETDEV_NONE", "NETDEV_UP", "NETDEV_DOWN",
|
||||
"NETDEV_REBOOT", "NETDEV_CHANGE",
|
||||
"NETDEV_REGISTER", "NETDEV_UNREGISTER", "NETDEV_CHANGEMTU",
|
||||
"NETDEV_CHANGEADDR", "NETDEV_GOING_DOWN", "NETDEV_FEAT_CHANGE",
|
||||
"NETDEV_BONDING_FAILOVER", "NETDEV_PRE_UP",
|
||||
"NETDEV_PRE_TYPE_CHANGE", "NETDEV_POST_TYPE_CHANGE",
|
||||
"NETDEV_POST_INT", "NETDEV_UNREGISTER_FINAL", "NETDEV_RELEASE",
|
||||
"NETDEV_NOTIFY_PEERS", "NETDEV_JOIN"
|
||||
};
|
||||
|
||||
if (event >= ARRAY_SIZE(event2str))
|
||||
return "UNKNOWN_NETDEV_EVENT";
|
||||
else
|
||||
return event2str[event];
|
||||
}
|
||||
|
||||
static void usnic_ib_qp_grp_modify_active_to_err(struct usnic_ib_dev *us_ibdev)
|
||||
{
|
||||
struct usnic_ib_ucontext *ctx;
|
||||
@ -185,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;
|
||||
@ -222,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);
|
||||
@ -264,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;
|
||||
@ -275,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;
|
||||
@ -284,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);
|
||||
|
@ -2312,43 +2312,45 @@ struct netdev_lag_lower_state_info {
|
||||
|
||||
#include <linux/notifier.h>
|
||||
|
||||
/* netdevice notifier chain. Please remember to update the rtnetlink
|
||||
* notification exclusion list in rtnetlink_event() when adding new
|
||||
* types.
|
||||
/* netdevice notifier chain. Please remember to update netdev_cmd_to_name()
|
||||
* and the rtnetlink notification exclusion list in rtnetlink_event() when
|
||||
* adding new types.
|
||||
*/
|
||||
#define NETDEV_UP 0x0001 /* For now you can't veto a device up/down */
|
||||
#define NETDEV_DOWN 0x0002
|
||||
#define NETDEV_REBOOT 0x0003 /* Tell a protocol stack a network interface
|
||||
enum netdev_cmd {
|
||||
NETDEV_UP = 1, /* For now you can't veto a device up/down */
|
||||
NETDEV_DOWN,
|
||||
NETDEV_REBOOT, /* Tell a protocol stack a network interface
|
||||
detected a hardware crash and restarted
|
||||
- we can use this eg to kick tcp sessions
|
||||
once done */
|
||||
#define NETDEV_CHANGE 0x0004 /* Notify device state change */
|
||||
#define NETDEV_REGISTER 0x0005
|
||||
#define NETDEV_UNREGISTER 0x0006
|
||||
#define NETDEV_CHANGEMTU 0x0007 /* notify after mtu change happened */
|
||||
#define NETDEV_CHANGEADDR 0x0008
|
||||
#define NETDEV_GOING_DOWN 0x0009
|
||||
#define NETDEV_CHANGENAME 0x000A
|
||||
#define NETDEV_FEAT_CHANGE 0x000B
|
||||
#define NETDEV_BONDING_FAILOVER 0x000C
|
||||
#define NETDEV_PRE_UP 0x000D
|
||||
#define NETDEV_PRE_TYPE_CHANGE 0x000E
|
||||
#define NETDEV_POST_TYPE_CHANGE 0x000F
|
||||
#define NETDEV_POST_INIT 0x0010
|
||||
#define NETDEV_UNREGISTER_FINAL 0x0011
|
||||
#define NETDEV_RELEASE 0x0012
|
||||
#define NETDEV_NOTIFY_PEERS 0x0013
|
||||
#define NETDEV_JOIN 0x0014
|
||||
#define NETDEV_CHANGEUPPER 0x0015
|
||||
#define NETDEV_RESEND_IGMP 0x0016
|
||||
#define NETDEV_PRECHANGEMTU 0x0017 /* notify before mtu change happened */
|
||||
#define NETDEV_CHANGEINFODATA 0x0018
|
||||
#define NETDEV_BONDING_INFO 0x0019
|
||||
#define NETDEV_PRECHANGEUPPER 0x001A
|
||||
#define NETDEV_CHANGELOWERSTATE 0x001B
|
||||
#define NETDEV_UDP_TUNNEL_PUSH_INFO 0x001C
|
||||
#define NETDEV_UDP_TUNNEL_DROP_INFO 0x001D
|
||||
#define NETDEV_CHANGE_TX_QUEUE_LEN 0x001E
|
||||
NETDEV_CHANGE, /* Notify device state change */
|
||||
NETDEV_REGISTER,
|
||||
NETDEV_UNREGISTER,
|
||||
NETDEV_CHANGEMTU, /* notify after mtu change happened */
|
||||
NETDEV_CHANGEADDR,
|
||||
NETDEV_GOING_DOWN,
|
||||
NETDEV_CHANGENAME,
|
||||
NETDEV_FEAT_CHANGE,
|
||||
NETDEV_BONDING_FAILOVER,
|
||||
NETDEV_PRE_UP,
|
||||
NETDEV_PRE_TYPE_CHANGE,
|
||||
NETDEV_POST_TYPE_CHANGE,
|
||||
NETDEV_POST_INIT,
|
||||
NETDEV_RELEASE,
|
||||
NETDEV_NOTIFY_PEERS,
|
||||
NETDEV_JOIN,
|
||||
NETDEV_CHANGEUPPER,
|
||||
NETDEV_RESEND_IGMP,
|
||||
NETDEV_PRECHANGEMTU, /* notify before mtu change happened */
|
||||
NETDEV_CHANGEINFODATA,
|
||||
NETDEV_BONDING_INFO,
|
||||
NETDEV_PRECHANGEUPPER,
|
||||
NETDEV_CHANGELOWERSTATE,
|
||||
NETDEV_UDP_TUNNEL_PUSH_INFO,
|
||||
NETDEV_UDP_TUNNEL_DROP_INFO,
|
||||
NETDEV_CHANGE_TX_QUEUE_LEN,
|
||||
};
|
||||
const char *netdev_cmd_to_name(enum netdev_cmd cmd);
|
||||
|
||||
int register_netdevice_notifier(struct notifier_block *nb);
|
||||
int unregister_netdevice_notifier(struct notifier_block *nb);
|
||||
|
@ -2122,8 +2122,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);
|
||||
|
@ -1571,6 +1571,25 @@ static void dev_disable_gro_hw(struct net_device *dev)
|
||||
netdev_WARN(dev, "failed to disable GRO_HW!\n");
|
||||
}
|
||||
|
||||
const char *netdev_cmd_to_name(enum netdev_cmd cmd)
|
||||
{
|
||||
#define N(val) \
|
||||
case NETDEV_##val: \
|
||||
return "NETDEV_" __stringify(val);
|
||||
switch (cmd) {
|
||||
N(UP) N(DOWN) N(REBOOT) N(CHANGE) N(REGISTER) N(UNREGISTER)
|
||||
N(CHANGEMTU) N(CHANGEADDR) N(GOING_DOWN) N(CHANGENAME) N(FEAT_CHANGE)
|
||||
N(BONDING_FAILOVER) N(PRE_UP) N(PRE_TYPE_CHANGE) N(POST_TYPE_CHANGE)
|
||||
N(POST_INIT) N(RELEASE) N(NOTIFY_PEERS) N(JOIN) N(CHANGEUPPER)
|
||||
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)
|
||||
};
|
||||
#undef N
|
||||
return "UNKNOWN_NETDEV_EVENT";
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(netdev_cmd_to_name);
|
||||
|
||||
static int call_netdevice_notifier(struct notifier_block *nb, unsigned long val,
|
||||
struct net_device *dev)
|
||||
{
|
||||
@ -8077,7 +8096,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
|
||||
@ -8149,10 +8167,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);
|
||||
@ -8594,7 +8608,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 */
|
||||
|
Loading…
Reference in New Issue
Block a user