diff options
Diffstat (limited to 'include/linux/netdevice.h')
-rw-r--r-- | include/linux/netdevice.h | 169 |
1 files changed, 98 insertions, 71 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index b21e4054c12c..46c36ffe20ee 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -54,6 +54,7 @@ | |||
54 | 54 | ||
55 | struct vlan_group; | 55 | struct vlan_group; |
56 | struct netpoll_info; | 56 | struct netpoll_info; |
57 | struct phy_device; | ||
57 | /* 802.11 specific */ | 58 | /* 802.11 specific */ |
58 | struct wireless_dev; | 59 | struct wireless_dev; |
59 | /* source back-compat hooks */ | 60 | /* source back-compat hooks */ |
@@ -65,6 +66,11 @@ struct wireless_dev; | |||
65 | #define HAVE_FREE_NETDEV /* free_netdev() */ | 66 | #define HAVE_FREE_NETDEV /* free_netdev() */ |
66 | #define HAVE_NETDEV_PRIV /* netdev_priv() */ | 67 | #define HAVE_NETDEV_PRIV /* netdev_priv() */ |
67 | 68 | ||
69 | /* hardware address assignment types */ | ||
70 | #define NET_ADDR_PERM 0 /* address is permanent (default) */ | ||
71 | #define NET_ADDR_RANDOM 1 /* address is generated randomly */ | ||
72 | #define NET_ADDR_STOLEN 2 /* address is stolen from other device */ | ||
73 | |||
68 | /* Backlog congestion levels */ | 74 | /* Backlog congestion levels */ |
69 | #define NET_RX_SUCCESS 0 /* keep 'em coming, baby */ | 75 | #define NET_RX_SUCCESS 0 /* keep 'em coming, baby */ |
70 | #define NET_RX_DROP 1 /* packet dropped */ | 76 | #define NET_RX_DROP 1 /* packet dropped */ |
@@ -159,45 +165,39 @@ static inline bool dev_xmit_complete(int rc) | |||
159 | #define MAX_HEADER (LL_MAX_HEADER + 48) | 165 | #define MAX_HEADER (LL_MAX_HEADER + 48) |
160 | #endif | 166 | #endif |
161 | 167 | ||
162 | #endif /* __KERNEL__ */ | ||
163 | |||
164 | /* | 168 | /* |
165 | * Network device statistics. Akin to the 2.0 ether stats but | 169 | * Old network device statistics. Fields are native words |
166 | * with byte counters. | 170 | * (unsigned long) so they can be read and written atomically. |
167 | */ | 171 | */ |
168 | 172 | ||
169 | struct net_device_stats { | 173 | struct net_device_stats { |
170 | unsigned long rx_packets; /* total packets received */ | 174 | unsigned long rx_packets; |
171 | unsigned long tx_packets; /* total packets transmitted */ | 175 | unsigned long tx_packets; |
172 | unsigned long rx_bytes; /* total bytes received */ | 176 | unsigned long rx_bytes; |
173 | unsigned long tx_bytes; /* total bytes transmitted */ | 177 | unsigned long tx_bytes; |
174 | unsigned long rx_errors; /* bad packets received */ | 178 | unsigned long rx_errors; |
175 | unsigned long tx_errors; /* packet transmit problems */ | 179 | unsigned long tx_errors; |
176 | unsigned long rx_dropped; /* no space in linux buffers */ | 180 | unsigned long rx_dropped; |
177 | unsigned long tx_dropped; /* no space available in linux */ | 181 | unsigned long tx_dropped; |
178 | unsigned long multicast; /* multicast packets received */ | 182 | unsigned long multicast; |
179 | unsigned long collisions; | 183 | unsigned long collisions; |
180 | |||
181 | /* detailed rx_errors: */ | ||
182 | unsigned long rx_length_errors; | 184 | unsigned long rx_length_errors; |
183 | unsigned long rx_over_errors; /* receiver ring buff overflow */ | 185 | unsigned long rx_over_errors; |
184 | unsigned long rx_crc_errors; /* recved pkt with crc error */ | 186 | unsigned long rx_crc_errors; |
185 | unsigned long rx_frame_errors; /* recv'd frame alignment error */ | 187 | unsigned long rx_frame_errors; |
186 | unsigned long rx_fifo_errors; /* recv'r fifo overrun */ | 188 | unsigned long rx_fifo_errors; |
187 | unsigned long rx_missed_errors; /* receiver missed packet */ | 189 | unsigned long rx_missed_errors; |
188 | |||
189 | /* detailed tx_errors */ | ||
190 | unsigned long tx_aborted_errors; | 190 | unsigned long tx_aborted_errors; |
191 | unsigned long tx_carrier_errors; | 191 | unsigned long tx_carrier_errors; |
192 | unsigned long tx_fifo_errors; | 192 | unsigned long tx_fifo_errors; |
193 | unsigned long tx_heartbeat_errors; | 193 | unsigned long tx_heartbeat_errors; |
194 | unsigned long tx_window_errors; | 194 | unsigned long tx_window_errors; |
195 | |||
196 | /* for cslip etc */ | ||
197 | unsigned long rx_compressed; | 195 | unsigned long rx_compressed; |
198 | unsigned long tx_compressed; | 196 | unsigned long tx_compressed; |
199 | }; | 197 | }; |
200 | 198 | ||
199 | #endif /* __KERNEL__ */ | ||
200 | |||
201 | 201 | ||
202 | /* Media selection options. */ | 202 | /* Media selection options. */ |
203 | enum { | 203 | enum { |
@@ -381,6 +381,8 @@ enum gro_result { | |||
381 | }; | 381 | }; |
382 | typedef enum gro_result gro_result_t; | 382 | typedef enum gro_result gro_result_t; |
383 | 383 | ||
384 | typedef struct sk_buff *rx_handler_func_t(struct sk_buff *skb); | ||
385 | |||
384 | extern void __napi_schedule(struct napi_struct *n); | 386 | extern void __napi_schedule(struct napi_struct *n); |
385 | 387 | ||
386 | static inline int napi_disable_pending(struct napi_struct *n) | 388 | static inline int napi_disable_pending(struct napi_struct *n) |
@@ -504,9 +506,9 @@ struct netdev_queue { | |||
504 | * please use this field instead of dev->trans_start | 506 | * please use this field instead of dev->trans_start |
505 | */ | 507 | */ |
506 | unsigned long trans_start; | 508 | unsigned long trans_start; |
507 | unsigned long tx_bytes; | 509 | u64 tx_bytes; |
508 | unsigned long tx_packets; | 510 | u64 tx_packets; |
509 | unsigned long tx_dropped; | 511 | u64 tx_dropped; |
510 | } ____cacheline_aligned_in_smp; | 512 | } ____cacheline_aligned_in_smp; |
511 | 513 | ||
512 | #ifdef CONFIG_RPS | 514 | #ifdef CONFIG_RPS |
@@ -660,10 +662,19 @@ struct netdev_rx_queue { | |||
660 | * Callback uses when the transmitter has not made any progress | 662 | * Callback uses when the transmitter has not made any progress |
661 | * for dev->watchdog ticks. | 663 | * for dev->watchdog ticks. |
662 | * | 664 | * |
665 | * struct rtnl_link_stats64* (*ndo_get_stats64)(struct net_device *dev, | ||
666 | * struct rtnl_link_stats64 *storage); | ||
663 | * struct net_device_stats* (*ndo_get_stats)(struct net_device *dev); | 667 | * struct net_device_stats* (*ndo_get_stats)(struct net_device *dev); |
664 | * Called when a user wants to get the network device usage | 668 | * Called when a user wants to get the network device usage |
665 | * statistics. If not defined, the counters in dev->stats will | 669 | * statistics. Drivers must do one of the following: |
666 | * be used. | 670 | * 1. Define @ndo_get_stats64 to fill in a zero-initialised |
671 | * rtnl_link_stats64 structure passed by the caller. | ||
672 | * 2. Define @ndo_get_stats to update a net_device_stats structure | ||
673 | * (which should normally be dev->stats) and return a pointer to | ||
674 | * it. The structure may be changed asynchronously only if each | ||
675 | * field is written atomically. | ||
676 | * 3. Update dev->stats asynchronously and atomically, and define | ||
677 | * neither operation. | ||
667 | * | 678 | * |
668 | * void (*ndo_vlan_rx_register)(struct net_device *dev, struct vlan_group *grp); | 679 | * void (*ndo_vlan_rx_register)(struct net_device *dev, struct vlan_group *grp); |
669 | * If device support VLAN receive accleration | 680 | * If device support VLAN receive accleration |
@@ -718,6 +729,8 @@ struct net_device_ops { | |||
718 | struct neigh_parms *); | 729 | struct neigh_parms *); |
719 | void (*ndo_tx_timeout) (struct net_device *dev); | 730 | void (*ndo_tx_timeout) (struct net_device *dev); |
720 | 731 | ||
732 | struct rtnl_link_stats64* (*ndo_get_stats64)(struct net_device *dev, | ||
733 | struct rtnl_link_stats64 *storage); | ||
721 | struct net_device_stats* (*ndo_get_stats)(struct net_device *dev); | 734 | struct net_device_stats* (*ndo_get_stats)(struct net_device *dev); |
722 | 735 | ||
723 | void (*ndo_vlan_rx_register)(struct net_device *dev, | 736 | void (*ndo_vlan_rx_register)(struct net_device *dev, |
@@ -728,6 +741,8 @@ struct net_device_ops { | |||
728 | unsigned short vid); | 741 | unsigned short vid); |
729 | #ifdef CONFIG_NET_POLL_CONTROLLER | 742 | #ifdef CONFIG_NET_POLL_CONTROLLER |
730 | void (*ndo_poll_controller)(struct net_device *dev); | 743 | void (*ndo_poll_controller)(struct net_device *dev); |
744 | int (*ndo_netpoll_setup)(struct net_device *dev, | ||
745 | struct netpoll_info *info); | ||
731 | void (*ndo_netpoll_cleanup)(struct net_device *dev); | 746 | void (*ndo_netpoll_cleanup)(struct net_device *dev); |
732 | #endif | 747 | #endif |
733 | int (*ndo_set_vf_mac)(struct net_device *dev, | 748 | int (*ndo_set_vf_mac)(struct net_device *dev, |
@@ -775,11 +790,11 @@ struct net_device { | |||
775 | /* | 790 | /* |
776 | * This is the first field of the "visible" part of this structure | 791 | * This is the first field of the "visible" part of this structure |
777 | * (i.e. as seen by users in the "Space.c" file). It is the name | 792 | * (i.e. as seen by users in the "Space.c" file). It is the name |
778 | * the interface. | 793 | * of the interface. |
779 | */ | 794 | */ |
780 | char name[IFNAMSIZ]; | 795 | char name[IFNAMSIZ]; |
781 | 796 | ||
782 | struct pm_qos_request_list *pm_qos_req; | 797 | struct pm_qos_request_list pm_qos_req; |
783 | 798 | ||
784 | /* device name hash chain */ | 799 | /* device name hash chain */ |
785 | struct hlist_node name_hlist; | 800 | struct hlist_node name_hlist; |
@@ -847,7 +862,8 @@ struct net_device { | |||
847 | #define NETIF_F_FSO (SKB_GSO_FCOE << NETIF_F_GSO_SHIFT) | 862 | #define NETIF_F_FSO (SKB_GSO_FCOE << NETIF_F_GSO_SHIFT) |
848 | 863 | ||
849 | /* List of features with software fallbacks. */ | 864 | /* List of features with software fallbacks. */ |
850 | #define NETIF_F_GSO_SOFTWARE (NETIF_F_TSO | NETIF_F_TSO_ECN | NETIF_F_TSO6) | 865 | #define NETIF_F_GSO_SOFTWARE (NETIF_F_TSO | NETIF_F_TSO_ECN | \ |
866 | NETIF_F_TSO6 | NETIF_F_UFO) | ||
851 | 867 | ||
852 | 868 | ||
853 | #define NETIF_F_GEN_CSUM (NETIF_F_NO_CSUM | NETIF_F_HW_CSUM) | 869 | #define NETIF_F_GEN_CSUM (NETIF_F_NO_CSUM | NETIF_F_HW_CSUM) |
@@ -908,6 +924,7 @@ struct net_device { | |||
908 | 924 | ||
909 | /* Interface address info. */ | 925 | /* Interface address info. */ |
910 | unsigned char perm_addr[MAX_ADDR_LEN]; /* permanent hw address */ | 926 | unsigned char perm_addr[MAX_ADDR_LEN]; /* permanent hw address */ |
927 | unsigned char addr_assign_type; /* hw address assignment type */ | ||
911 | unsigned char addr_len; /* hardware address length */ | 928 | unsigned char addr_len; /* hardware address length */ |
912 | unsigned short dev_id; /* for shared network cards */ | 929 | unsigned short dev_id; /* for shared network cards */ |
913 | 930 | ||
@@ -957,6 +974,8 @@ struct net_device { | |||
957 | #endif | 974 | #endif |
958 | 975 | ||
959 | struct netdev_queue rx_queue; | 976 | struct netdev_queue rx_queue; |
977 | rx_handler_func_t *rx_handler; | ||
978 | void *rx_handler_data; | ||
960 | 979 | ||
961 | struct netdev_queue *_tx ____cacheline_aligned_in_smp; | 980 | struct netdev_queue *_tx ____cacheline_aligned_in_smp; |
962 | 981 | ||
@@ -1024,10 +1043,6 @@ struct net_device { | |||
1024 | /* mid-layer private */ | 1043 | /* mid-layer private */ |
1025 | void *ml_priv; | 1044 | void *ml_priv; |
1026 | 1045 | ||
1027 | /* bridge stuff */ | ||
1028 | struct net_bridge_port *br_port; | ||
1029 | /* macvlan */ | ||
1030 | struct macvlan_port *macvlan_port; | ||
1031 | /* GARP */ | 1046 | /* GARP */ |
1032 | struct garp_port *garp_port; | 1047 | struct garp_port *garp_port; |
1033 | 1048 | ||
@@ -1057,6 +1072,9 @@ struct net_device { | |||
1057 | #endif | 1072 | #endif |
1058 | /* n-tuple filter list attached to this device */ | 1073 | /* n-tuple filter list attached to this device */ |
1059 | struct ethtool_rx_ntuple_list ethtool_ntuple_list; | 1074 | struct ethtool_rx_ntuple_list ethtool_ntuple_list; |
1075 | |||
1076 | /* phy device may attach itself for hardware timestamping */ | ||
1077 | struct phy_device *phydev; | ||
1060 | }; | 1078 | }; |
1061 | #define to_net_dev(d) container_of(d, struct net_device, dev) | 1079 | #define to_net_dev(d) container_of(d, struct net_device, dev) |
1062 | 1080 | ||
@@ -1087,11 +1105,7 @@ static inline void netdev_for_each_tx_queue(struct net_device *dev, | |||
1087 | static inline | 1105 | static inline |
1088 | struct net *dev_net(const struct net_device *dev) | 1106 | struct net *dev_net(const struct net_device *dev) |
1089 | { | 1107 | { |
1090 | #ifdef CONFIG_NET_NS | 1108 | return read_pnet(&dev->nd_net); |
1091 | return dev->nd_net; | ||
1092 | #else | ||
1093 | return &init_net; | ||
1094 | #endif | ||
1095 | } | 1109 | } |
1096 | 1110 | ||
1097 | static inline | 1111 | static inline |
@@ -1272,8 +1286,8 @@ extern void dev_add_pack(struct packet_type *pt); | |||
1272 | extern void dev_remove_pack(struct packet_type *pt); | 1286 | extern void dev_remove_pack(struct packet_type *pt); |
1273 | extern void __dev_remove_pack(struct packet_type *pt); | 1287 | extern void __dev_remove_pack(struct packet_type *pt); |
1274 | 1288 | ||
1275 | extern struct net_device *dev_get_by_flags(struct net *net, unsigned short flags, | 1289 | extern struct net_device *dev_get_by_flags_rcu(struct net *net, unsigned short flags, |
1276 | unsigned short mask); | 1290 | unsigned short mask); |
1277 | extern struct net_device *dev_get_by_name(struct net *net, const char *name); | 1291 | extern struct net_device *dev_get_by_name(struct net *net, const char *name); |
1278 | extern struct net_device *dev_get_by_name_rcu(struct net *net, const char *name); | 1292 | extern struct net_device *dev_get_by_name_rcu(struct net *net, const char *name); |
1279 | extern struct net_device *__dev_get_by_name(struct net *net, const char *name); | 1293 | extern struct net_device *__dev_get_by_name(struct net *net, const char *name); |
@@ -1696,6 +1710,11 @@ static inline void napi_free_frags(struct napi_struct *napi) | |||
1696 | napi->skb = NULL; | 1710 | napi->skb = NULL; |
1697 | } | 1711 | } |
1698 | 1712 | ||
1713 | extern int netdev_rx_handler_register(struct net_device *dev, | ||
1714 | rx_handler_func_t *rx_handler, | ||
1715 | void *rx_handler_data); | ||
1716 | extern void netdev_rx_handler_unregister(struct net_device *dev); | ||
1717 | |||
1699 | extern void netif_nit_deliver(struct sk_buff *skb); | 1718 | extern void netif_nit_deliver(struct sk_buff *skb); |
1700 | extern int dev_valid_name(const char *name); | 1719 | extern int dev_valid_name(const char *name); |
1701 | extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *); | 1720 | extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *); |
@@ -1775,6 +1794,8 @@ extern void netif_carrier_on(struct net_device *dev); | |||
1775 | 1794 | ||
1776 | extern void netif_carrier_off(struct net_device *dev); | 1795 | extern void netif_carrier_off(struct net_device *dev); |
1777 | 1796 | ||
1797 | extern void netif_notify_peers(struct net_device *dev); | ||
1798 | |||
1778 | /** | 1799 | /** |
1779 | * netif_dormant_on - mark device as dormant. | 1800 | * netif_dormant_on - mark device as dormant. |
1780 | * @dev: network device | 1801 | * @dev: network device |
@@ -2119,8 +2140,10 @@ extern void netdev_features_change(struct net_device *dev); | |||
2119 | /* Load a device via the kmod */ | 2140 | /* Load a device via the kmod */ |
2120 | extern void dev_load(struct net *net, const char *name); | 2141 | extern void dev_load(struct net *net, const char *name); |
2121 | extern void dev_mcast_init(void); | 2142 | extern void dev_mcast_init(void); |
2122 | extern const struct net_device_stats *dev_get_stats(struct net_device *dev); | 2143 | extern struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev, |
2123 | extern void dev_txq_stats_fold(const struct net_device *dev, struct net_device_stats *stats); | 2144 | struct rtnl_link_stats64 *storage); |
2145 | extern void dev_txq_stats_fold(const struct net_device *dev, | ||
2146 | struct rtnl_link_stats64 *stats); | ||
2124 | 2147 | ||
2125 | extern int netdev_max_backlog; | 2148 | extern int netdev_max_backlog; |
2126 | extern int netdev_tstamp_prequeue; | 2149 | extern int netdev_tstamp_prequeue; |
@@ -2230,25 +2253,23 @@ static inline const char *netdev_name(const struct net_device *dev) | |||
2230 | return dev->name; | 2253 | return dev->name; |
2231 | } | 2254 | } |
2232 | 2255 | ||
2233 | #define netdev_printk(level, netdev, format, args...) \ | 2256 | extern int netdev_printk(const char *level, const struct net_device *dev, |
2234 | dev_printk(level, (netdev)->dev.parent, \ | 2257 | const char *format, ...) |
2235 | "%s: " format, \ | 2258 | __attribute__ ((format (printf, 3, 4))); |
2236 | netdev_name(netdev), ##args) | 2259 | extern int netdev_emerg(const struct net_device *dev, const char *format, ...) |
2237 | 2260 | __attribute__ ((format (printf, 2, 3))); | |
2238 | #define netdev_emerg(dev, format, args...) \ | 2261 | extern int netdev_alert(const struct net_device *dev, const char *format, ...) |
2239 | netdev_printk(KERN_EMERG, dev, format, ##args) | 2262 | __attribute__ ((format (printf, 2, 3))); |
2240 | #define netdev_alert(dev, format, args...) \ | 2263 | extern int netdev_crit(const struct net_device *dev, const char *format, ...) |
2241 | netdev_printk(KERN_ALERT, dev, format, ##args) | 2264 | __attribute__ ((format (printf, 2, 3))); |
2242 | #define netdev_crit(dev, format, args...) \ | 2265 | extern int netdev_err(const struct net_device *dev, const char *format, ...) |
2243 | netdev_printk(KERN_CRIT, dev, format, ##args) | 2266 | __attribute__ ((format (printf, 2, 3))); |
2244 | #define netdev_err(dev, format, args...) \ | 2267 | extern int netdev_warn(const struct net_device *dev, const char *format, ...) |
2245 | netdev_printk(KERN_ERR, dev, format, ##args) | 2268 | __attribute__ ((format (printf, 2, 3))); |
2246 | #define netdev_warn(dev, format, args...) \ | 2269 | extern int netdev_notice(const struct net_device *dev, const char *format, ...) |
2247 | netdev_printk(KERN_WARNING, dev, format, ##args) | 2270 | __attribute__ ((format (printf, 2, 3))); |
2248 | #define netdev_notice(dev, format, args...) \ | 2271 | extern int netdev_info(const struct net_device *dev, const char *format, ...) |
2249 | netdev_printk(KERN_NOTICE, dev, format, ##args) | 2272 | __attribute__ ((format (printf, 2, 3))); |
2250 | #define netdev_info(dev, format, args...) \ | ||
2251 | netdev_printk(KERN_INFO, dev, format, ##args) | ||
2252 | 2273 | ||
2253 | #if defined(DEBUG) | 2274 | #if defined(DEBUG) |
2254 | #define netdev_dbg(__dev, format, args...) \ | 2275 | #define netdev_dbg(__dev, format, args...) \ |
@@ -2296,20 +2317,26 @@ do { \ | |||
2296 | netdev_printk(level, (dev), fmt, ##args); \ | 2317 | netdev_printk(level, (dev), fmt, ##args); \ |
2297 | } while (0) | 2318 | } while (0) |
2298 | 2319 | ||
2320 | #define netif_level(level, priv, type, dev, fmt, args...) \ | ||
2321 | do { \ | ||
2322 | if (netif_msg_##type(priv)) \ | ||
2323 | netdev_##level(dev, fmt, ##args); \ | ||
2324 | } while (0) | ||
2325 | |||
2299 | #define netif_emerg(priv, type, dev, fmt, args...) \ | 2326 | #define netif_emerg(priv, type, dev, fmt, args...) \ |
2300 | netif_printk(priv, type, KERN_EMERG, dev, fmt, ##args) | 2327 | netif_level(emerg, priv, type, dev, fmt, ##args) |
2301 | #define netif_alert(priv, type, dev, fmt, args...) \ | 2328 | #define netif_alert(priv, type, dev, fmt, args...) \ |
2302 | netif_printk(priv, type, KERN_ALERT, dev, fmt, ##args) | 2329 | netif_level(alert, priv, type, dev, fmt, ##args) |
2303 | #define netif_crit(priv, type, dev, fmt, args...) \ | 2330 | #define netif_crit(priv, type, dev, fmt, args...) \ |
2304 | netif_printk(priv, type, KERN_CRIT, dev, fmt, ##args) | 2331 | netif_level(crit, priv, type, dev, fmt, ##args) |
2305 | #define netif_err(priv, type, dev, fmt, args...) \ | 2332 | #define netif_err(priv, type, dev, fmt, args...) \ |
2306 | netif_printk(priv, type, KERN_ERR, dev, fmt, ##args) | 2333 | netif_level(err, priv, type, dev, fmt, ##args) |
2307 | #define netif_warn(priv, type, dev, fmt, args...) \ | 2334 | #define netif_warn(priv, type, dev, fmt, args...) \ |
2308 | netif_printk(priv, type, KERN_WARNING, dev, fmt, ##args) | 2335 | netif_level(warn, priv, type, dev, fmt, ##args) |
2309 | #define netif_notice(priv, type, dev, fmt, args...) \ | 2336 | #define netif_notice(priv, type, dev, fmt, args...) \ |
2310 | netif_printk(priv, type, KERN_NOTICE, dev, fmt, ##args) | 2337 | netif_level(notice, priv, type, dev, fmt, ##args) |
2311 | #define netif_info(priv, type, dev, fmt, args...) \ | 2338 | #define netif_info(priv, type, dev, fmt, args...) \ |
2312 | netif_printk(priv, type, KERN_INFO, (dev), fmt, ##args) | 2339 | netif_level(info, priv, type, dev, fmt, ##args) |
2313 | 2340 | ||
2314 | #if defined(DEBUG) | 2341 | #if defined(DEBUG) |
2315 | #define netif_dbg(priv, type, dev, format, args...) \ | 2342 | #define netif_dbg(priv, type, dev, format, args...) \ |