OSDN Git Service

net: Make NETDEV_XXX commands enum { }
authorKirill Tkhai <ktkhai@virtuozzo.com>
Fri, 23 Mar 2018 16:47:19 +0000 (19:47 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 26 Mar 2018 15:33:26 +0000 (11:33 -0400)
This patch is preparation to drop NETDEV_UNREGISTER_FINAL.
Since the cmd is used in usnic_ib_netdev_event_to_string()
to get cmd name, after plain removing NETDEV_UNREGISTER_FINAL
from everywhere, we'd have holes in event2str[] in this
function.

Instead of that, let's make NETDEV_XXX commands names
available for everyone, and to define netdev_cmd_to_name()
in the way we won't have to shaffle names after their
numbers are changed.

Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/infiniband/hw/usnic/usnic_ib_main.c
include/linux/netdevice.h
net/core/dev.c

index f45e99a..5bf3b20 100644 (file)
@@ -97,20 +97,7 @@ 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];
+       return netdev_cmd_to_name(event);
 }
 
 static void usnic_ib_qp_grp_modify_active_to_err(struct usnic_ib_dev *us_ibdev)
index 913b1cc..dd5a04c 100644 (file)
@@ -2312,43 +2312,46 @@ 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_UNREGISTER_FINAL,
+       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);
index f9c28f4..055e7ae 100644 (file)
@@ -1571,6 +1571,26 @@ 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)
+       N(UNREGISTER_FINAL)
+       };
+#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)
 {