aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/netdevice.h
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2013-09-30 15:36:45 -0400
committerDavid S. Miller <davem@davemloft.net>2013-09-30 15:36:45 -0400
commitcb178190ab7d9c9b9fb90e36488ebd26ca004d32 (patch)
treeb2c7b9d6dda5600df21bb109eb7616b89039629d /include/linux/netdevice.h
parent7b77d161ce7e480a660692cab079712fc0268ba2 (diff)
parentf629d208d27a22f495b7734eede585b5d207e912 (diff)
Merge branch '20130926_include_linux_networking_externs' of git://repo.or.cz/linux-2.6/trivial-mods
Conflicts: include/linux/netdevice.h More extern removals from Joe Perches. Minor conflict with the dev_notify_flags changes which added a new argument to __dev_notify_flags(). Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux/netdevice.h')
-rw-r--r--include/linux/netdevice.h435
1 files changed, 209 insertions, 226 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index f44f99a69977..f5cd464271bf 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -60,8 +60,8 @@ struct wireless_dev;
60#define SET_ETHTOOL_OPS(netdev,ops) \ 60#define SET_ETHTOOL_OPS(netdev,ops) \
61 ( (netdev)->ethtool_ops = (ops) ) 61 ( (netdev)->ethtool_ops = (ops) )
62 62
63extern void netdev_set_default_ethtool_ops(struct net_device *dev, 63void netdev_set_default_ethtool_ops(struct net_device *dev,
64 const struct ethtool_ops *ops); 64 const struct ethtool_ops *ops);
65 65
66/* hardware address assignment types */ 66/* hardware address assignment types */
67#define NET_ADDR_PERM 0 /* address is permanent (default) */ 67#define NET_ADDR_PERM 0 /* address is permanent (default) */
@@ -298,7 +298,7 @@ struct netdev_boot_setup {
298}; 298};
299#define NETDEV_BOOT_SETUP_MAX 8 299#define NETDEV_BOOT_SETUP_MAX 8
300 300
301extern int __init netdev_boot_setup(char *str); 301int __init netdev_boot_setup(char *str);
302 302
303/* 303/*
304 * Structure for NAPI scheduling similar to tasklet but with weighting 304 * Structure for NAPI scheduling similar to tasklet but with weighting
@@ -394,7 +394,7 @@ enum rx_handler_result {
394typedef enum rx_handler_result rx_handler_result_t; 394typedef enum rx_handler_result rx_handler_result_t;
395typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **pskb); 395typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **pskb);
396 396
397extern void __napi_schedule(struct napi_struct *n); 397void __napi_schedule(struct napi_struct *n);
398 398
399static inline bool napi_disable_pending(struct napi_struct *n) 399static inline bool napi_disable_pending(struct napi_struct *n)
400{ 400{
@@ -445,8 +445,8 @@ static inline bool napi_reschedule(struct napi_struct *napi)
445 * 445 *
446 * Mark NAPI processing as complete. 446 * Mark NAPI processing as complete.
447 */ 447 */
448extern void __napi_complete(struct napi_struct *n); 448void __napi_complete(struct napi_struct *n);
449extern void napi_complete(struct napi_struct *n); 449void napi_complete(struct napi_struct *n);
450 450
451/** 451/**
452 * napi_by_id - lookup a NAPI by napi_id 452 * napi_by_id - lookup a NAPI by napi_id
@@ -455,7 +455,7 @@ extern void napi_complete(struct napi_struct *n);
455 * lookup @napi_id in napi_hash table 455 * lookup @napi_id in napi_hash table
456 * must be called under rcu_read_lock() 456 * must be called under rcu_read_lock()
457 */ 457 */
458extern struct napi_struct *napi_by_id(unsigned int napi_id); 458struct napi_struct *napi_by_id(unsigned int napi_id);
459 459
460/** 460/**
461 * napi_hash_add - add a NAPI to global hashtable 461 * napi_hash_add - add a NAPI to global hashtable
@@ -463,7 +463,7 @@ extern struct napi_struct *napi_by_id(unsigned int napi_id);
463 * 463 *
464 * generate a new napi_id and store a @napi under it in napi_hash 464 * generate a new napi_id and store a @napi under it in napi_hash
465 */ 465 */
466extern void napi_hash_add(struct napi_struct *napi); 466void napi_hash_add(struct napi_struct *napi);
467 467
468/** 468/**
469 * napi_hash_del - remove a NAPI from global table 469 * napi_hash_del - remove a NAPI from global table
@@ -472,7 +472,7 @@ extern void napi_hash_add(struct napi_struct *napi);
472 * Warning: caller must observe rcu grace period 472 * Warning: caller must observe rcu grace period
473 * before freeing memory containing @napi 473 * before freeing memory containing @napi
474 */ 474 */
475extern void napi_hash_del(struct napi_struct *napi); 475void napi_hash_del(struct napi_struct *napi);
476 476
477/** 477/**
478 * napi_disable - prevent NAPI from scheduling 478 * napi_disable - prevent NAPI from scheduling
@@ -664,8 +664,8 @@ static inline void rps_reset_sock_flow(struct rps_sock_flow_table *table,
664extern struct rps_sock_flow_table __rcu *rps_sock_flow_table; 664extern struct rps_sock_flow_table __rcu *rps_sock_flow_table;
665 665
666#ifdef CONFIG_RFS_ACCEL 666#ifdef CONFIG_RFS_ACCEL
667extern bool rps_may_expire_flow(struct net_device *dev, u16 rxq_index, 667bool rps_may_expire_flow(struct net_device *dev, u16 rxq_index, u32 flow_id,
668 u32 flow_id, u16 filter_id); 668 u16 filter_id);
669#endif 669#endif
670 670
671/* This structure contains an instance of an RX queue. */ 671/* This structure contains an instance of an RX queue. */
@@ -1497,9 +1497,9 @@ static inline void netdev_for_each_tx_queue(struct net_device *dev,
1497 f(dev, &dev->_tx[i], arg); 1497 f(dev, &dev->_tx[i], arg);
1498} 1498}
1499 1499
1500extern struct netdev_queue *netdev_pick_tx(struct net_device *dev, 1500struct netdev_queue *netdev_pick_tx(struct net_device *dev,
1501 struct sk_buff *skb); 1501 struct sk_buff *skb);
1502extern u16 __netdev_pick_tx(struct net_device *dev, struct sk_buff *skb); 1502u16 __netdev_pick_tx(struct net_device *dev, struct sk_buff *skb);
1503 1503
1504/* 1504/*
1505 * Net namespace inlines 1505 * Net namespace inlines
@@ -1683,8 +1683,8 @@ struct packet_offload {
1683#define NETDEV_CHANGEUPPER 0x0015 1683#define NETDEV_CHANGEUPPER 0x0015
1684#define NETDEV_RESEND_IGMP 0x0016 1684#define NETDEV_RESEND_IGMP 0x0016
1685 1685
1686extern int register_netdevice_notifier(struct notifier_block *nb); 1686int register_netdevice_notifier(struct notifier_block *nb);
1687extern int unregister_netdevice_notifier(struct notifier_block *nb); 1687int unregister_netdevice_notifier(struct notifier_block *nb);
1688 1688
1689struct netdev_notifier_info { 1689struct netdev_notifier_info {
1690 struct net_device *dev; 1690 struct net_device *dev;
@@ -1707,9 +1707,9 @@ netdev_notifier_info_to_dev(const struct netdev_notifier_info *info)
1707 return info->dev; 1707 return info->dev;
1708} 1708}
1709 1709
1710extern int call_netdevice_notifiers_info(unsigned long val, struct net_device *dev, 1710int call_netdevice_notifiers_info(unsigned long val, struct net_device *dev,
1711 struct netdev_notifier_info *info); 1711 struct netdev_notifier_info *info);
1712extern int call_netdevice_notifiers(unsigned long val, struct net_device *dev); 1712int call_netdevice_notifiers(unsigned long val, struct net_device *dev);
1713 1713
1714 1714
1715extern rwlock_t dev_base_lock; /* Device list lock */ 1715extern rwlock_t dev_base_lock; /* Device list lock */
@@ -1764,54 +1764,52 @@ static inline struct net_device *first_net_device_rcu(struct net *net)
1764 return lh == &net->dev_base_head ? NULL : net_device_entry(lh); 1764 return lh == &net->dev_base_head ? NULL : net_device_entry(lh);
1765} 1765}
1766 1766
1767extern int netdev_boot_setup_check(struct net_device *dev); 1767int netdev_boot_setup_check(struct net_device *dev);
1768extern unsigned long netdev_boot_base(const char *prefix, int unit); 1768unsigned long netdev_boot_base(const char *prefix, int unit);
1769extern struct net_device *dev_getbyhwaddr_rcu(struct net *net, unsigned short type, 1769struct net_device *dev_getbyhwaddr_rcu(struct net *net, unsigned short type,
1770 const char *hwaddr); 1770 const char *hwaddr);
1771extern struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type); 1771struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type);
1772extern struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short type); 1772struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short type);
1773extern void dev_add_pack(struct packet_type *pt); 1773void dev_add_pack(struct packet_type *pt);
1774extern void dev_remove_pack(struct packet_type *pt); 1774void dev_remove_pack(struct packet_type *pt);
1775extern void __dev_remove_pack(struct packet_type *pt); 1775void __dev_remove_pack(struct packet_type *pt);
1776extern void dev_add_offload(struct packet_offload *po); 1776void dev_add_offload(struct packet_offload *po);
1777extern void dev_remove_offload(struct packet_offload *po); 1777void dev_remove_offload(struct packet_offload *po);
1778extern void __dev_remove_offload(struct packet_offload *po); 1778void __dev_remove_offload(struct packet_offload *po);
1779 1779
1780extern struct net_device *dev_get_by_flags_rcu(struct net *net, unsigned short flags, 1780struct net_device *dev_get_by_flags_rcu(struct net *net, unsigned short flags,
1781 unsigned short mask); 1781 unsigned short mask);
1782extern struct net_device *dev_get_by_name(struct net *net, const char *name); 1782struct net_device *dev_get_by_name(struct net *net, const char *name);
1783extern struct net_device *dev_get_by_name_rcu(struct net *net, const char *name); 1783struct net_device *dev_get_by_name_rcu(struct net *net, const char *name);
1784extern struct net_device *__dev_get_by_name(struct net *net, const char *name); 1784struct net_device *__dev_get_by_name(struct net *net, const char *name);
1785extern int dev_alloc_name(struct net_device *dev, const char *name); 1785int dev_alloc_name(struct net_device *dev, const char *name);
1786extern int dev_open(struct net_device *dev); 1786int dev_open(struct net_device *dev);
1787extern int dev_close(struct net_device *dev); 1787int dev_close(struct net_device *dev);
1788extern void dev_disable_lro(struct net_device *dev); 1788void dev_disable_lro(struct net_device *dev);
1789extern int dev_loopback_xmit(struct sk_buff *newskb); 1789int dev_loopback_xmit(struct sk_buff *newskb);
1790extern int dev_queue_xmit(struct sk_buff *skb); 1790int dev_queue_xmit(struct sk_buff *skb);
1791extern int register_netdevice(struct net_device *dev); 1791int register_netdevice(struct net_device *dev);
1792extern void unregister_netdevice_queue(struct net_device *dev, 1792void unregister_netdevice_queue(struct net_device *dev, struct list_head *head);
1793 struct list_head *head); 1793void unregister_netdevice_many(struct list_head *head);
1794extern void unregister_netdevice_many(struct list_head *head);
1795static inline void unregister_netdevice(struct net_device *dev) 1794static inline void unregister_netdevice(struct net_device *dev)
1796{ 1795{
1797 unregister_netdevice_queue(dev, NULL); 1796 unregister_netdevice_queue(dev, NULL);
1798} 1797}
1799 1798
1800extern int netdev_refcnt_read(const struct net_device *dev); 1799int netdev_refcnt_read(const struct net_device *dev);
1801extern void free_netdev(struct net_device *dev); 1800void free_netdev(struct net_device *dev);
1802extern void synchronize_net(void); 1801void synchronize_net(void);
1803extern int init_dummy_netdev(struct net_device *dev); 1802int init_dummy_netdev(struct net_device *dev);
1804 1803
1805extern struct net_device *dev_get_by_index(struct net *net, int ifindex); 1804struct net_device *dev_get_by_index(struct net *net, int ifindex);
1806extern struct net_device *__dev_get_by_index(struct net *net, int ifindex); 1805struct net_device *__dev_get_by_index(struct net *net, int ifindex);
1807extern struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex); 1806struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex);
1808extern int netdev_get_name(struct net *net, char *name, int ifindex); 1807int netdev_get_name(struct net *net, char *name, int ifindex);
1809extern int dev_restart(struct net_device *dev); 1808int dev_restart(struct net_device *dev);
1810#ifdef CONFIG_NETPOLL_TRAP 1809#ifdef CONFIG_NETPOLL_TRAP
1811extern int netpoll_trap(void); 1810int netpoll_trap(void);
1812#endif 1811#endif
1813extern int skb_gro_receive(struct sk_buff **head, 1812int skb_gro_receive(struct sk_buff **head, struct sk_buff *skb);
1814 struct sk_buff *skb);
1815 1813
1816static inline unsigned int skb_gro_offset(const struct sk_buff *skb) 1814static inline unsigned int skb_gro_offset(const struct sk_buff *skb)
1817{ 1815{
@@ -1883,7 +1881,7 @@ static inline int dev_parse_header(const struct sk_buff *skb,
1883} 1881}
1884 1882
1885typedef int gifconf_func_t(struct net_device * dev, char __user * bufptr, int len); 1883typedef int gifconf_func_t(struct net_device * dev, char __user * bufptr, int len);
1886extern int register_gifconf(unsigned int family, gifconf_func_t * gifconf); 1884int register_gifconf(unsigned int family, gifconf_func_t *gifconf);
1887static inline int unregister_gifconf(unsigned int family) 1885static inline int unregister_gifconf(unsigned int family)
1888{ 1886{
1889 return register_gifconf(family, NULL); 1887 return register_gifconf(family, NULL);
@@ -1954,7 +1952,7 @@ static inline void input_queue_tail_incr_save(struct softnet_data *sd,
1954 1952
1955DECLARE_PER_CPU_ALIGNED(struct softnet_data, softnet_data); 1953DECLARE_PER_CPU_ALIGNED(struct softnet_data, softnet_data);
1956 1954
1957extern void __netif_schedule(struct Qdisc *q); 1955void __netif_schedule(struct Qdisc *q);
1958 1956
1959static inline void netif_schedule_queue(struct netdev_queue *txq) 1957static inline void netif_schedule_queue(struct netdev_queue *txq)
1960{ 1958{
@@ -2274,8 +2272,8 @@ static inline void netif_wake_subqueue(struct net_device *dev, u16 queue_index)
2274} 2272}
2275 2273
2276#ifdef CONFIG_XPS 2274#ifdef CONFIG_XPS
2277extern int netif_set_xps_queue(struct net_device *dev, struct cpumask *mask, 2275int netif_set_xps_queue(struct net_device *dev, struct cpumask *mask,
2278 u16 index); 2276 u16 index);
2279#else 2277#else
2280static inline int netif_set_xps_queue(struct net_device *dev, 2278static inline int netif_set_xps_queue(struct net_device *dev,
2281 struct cpumask *mask, 2279 struct cpumask *mask,
@@ -2306,12 +2304,10 @@ static inline bool netif_is_multiqueue(const struct net_device *dev)
2306 return dev->num_tx_queues > 1; 2304 return dev->num_tx_queues > 1;
2307} 2305}
2308 2306
2309extern int netif_set_real_num_tx_queues(struct net_device *dev, 2307int netif_set_real_num_tx_queues(struct net_device *dev, unsigned int txq);
2310 unsigned int txq);
2311 2308
2312#ifdef CONFIG_RPS 2309#ifdef CONFIG_RPS
2313extern int netif_set_real_num_rx_queues(struct net_device *dev, 2310int netif_set_real_num_rx_queues(struct net_device *dev, unsigned int rxq);
2314 unsigned int rxq);
2315#else 2311#else
2316static inline int netif_set_real_num_rx_queues(struct net_device *dev, 2312static inline int netif_set_real_num_rx_queues(struct net_device *dev,
2317 unsigned int rxq) 2313 unsigned int rxq)
@@ -2338,28 +2334,27 @@ static inline int netif_copy_real_num_queues(struct net_device *to_dev,
2338} 2334}
2339 2335
2340#define DEFAULT_MAX_NUM_RSS_QUEUES (8) 2336#define DEFAULT_MAX_NUM_RSS_QUEUES (8)
2341extern int netif_get_num_default_rss_queues(void); 2337int netif_get_num_default_rss_queues(void);
2342 2338
2343/* Use this variant when it is known for sure that it 2339/* Use this variant when it is known for sure that it
2344 * is executing from hardware interrupt context or with hardware interrupts 2340 * is executing from hardware interrupt context or with hardware interrupts
2345 * disabled. 2341 * disabled.
2346 */ 2342 */
2347extern void dev_kfree_skb_irq(struct sk_buff *skb); 2343void dev_kfree_skb_irq(struct sk_buff *skb);
2348 2344
2349/* Use this variant in places where it could be invoked 2345/* Use this variant in places where it could be invoked
2350 * from either hardware interrupt or other context, with hardware interrupts 2346 * from either hardware interrupt or other context, with hardware interrupts
2351 * either disabled or enabled. 2347 * either disabled or enabled.
2352 */ 2348 */
2353extern void dev_kfree_skb_any(struct sk_buff *skb); 2349void dev_kfree_skb_any(struct sk_buff *skb);
2354 2350
2355extern int netif_rx(struct sk_buff *skb); 2351int netif_rx(struct sk_buff *skb);
2356extern int netif_rx_ni(struct sk_buff *skb); 2352int netif_rx_ni(struct sk_buff *skb);
2357extern int netif_receive_skb(struct sk_buff *skb); 2353int netif_receive_skb(struct sk_buff *skb);
2358extern gro_result_t napi_gro_receive(struct napi_struct *napi, 2354gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb);
2359 struct sk_buff *skb); 2355void napi_gro_flush(struct napi_struct *napi, bool flush_old);
2360extern void napi_gro_flush(struct napi_struct *napi, bool flush_old); 2356struct sk_buff *napi_get_frags(struct napi_struct *napi);
2361extern struct sk_buff * napi_get_frags(struct napi_struct *napi); 2357gro_result_t napi_gro_frags(struct napi_struct *napi);
2362extern gro_result_t napi_gro_frags(struct napi_struct *napi);
2363 2358
2364static inline void napi_free_frags(struct napi_struct *napi) 2359static inline void napi_free_frags(struct napi_struct *napi)
2365{ 2360{
@@ -2367,42 +2362,36 @@ static inline void napi_free_frags(struct napi_struct *napi)
2367 napi->skb = NULL; 2362 napi->skb = NULL;
2368} 2363}
2369 2364
2370extern int netdev_rx_handler_register(struct net_device *dev, 2365int netdev_rx_handler_register(struct net_device *dev,
2371 rx_handler_func_t *rx_handler, 2366 rx_handler_func_t *rx_handler,
2372 void *rx_handler_data); 2367 void *rx_handler_data);
2373extern void netdev_rx_handler_unregister(struct net_device *dev); 2368void netdev_rx_handler_unregister(struct net_device *dev);
2374 2369
2375extern bool dev_valid_name(const char *name); 2370bool dev_valid_name(const char *name);
2376extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *); 2371int dev_ioctl(struct net *net, unsigned int cmd, void __user *);
2377extern int dev_ethtool(struct net *net, struct ifreq *); 2372int dev_ethtool(struct net *net, struct ifreq *);
2378extern unsigned int dev_get_flags(const struct net_device *); 2373unsigned int dev_get_flags(const struct net_device *);
2379extern int __dev_change_flags(struct net_device *, unsigned int flags); 2374int __dev_change_flags(struct net_device *, unsigned int flags);
2380extern int dev_change_flags(struct net_device *, unsigned int); 2375int dev_change_flags(struct net_device *, unsigned int);
2381void __dev_notify_flags(struct net_device *, 2376void __dev_notify_flags(struct net_device *, unsigned int old_flags,
2382 unsigned int old_flags, 2377 unsigned int gchanges);
2383 unsigned int gchanges); 2378int dev_change_name(struct net_device *, const char *);
2384extern int dev_change_name(struct net_device *, const char *); 2379int dev_set_alias(struct net_device *, const char *, size_t);
2385extern int dev_set_alias(struct net_device *, const char *, size_t); 2380int dev_change_net_namespace(struct net_device *, struct net *, const char *);
2386extern int dev_change_net_namespace(struct net_device *, 2381int dev_set_mtu(struct net_device *, int);
2387 struct net *, const char *); 2382void dev_set_group(struct net_device *, int);
2388extern int dev_set_mtu(struct net_device *, int); 2383int dev_set_mac_address(struct net_device *, struct sockaddr *);
2389extern void dev_set_group(struct net_device *, int); 2384int dev_change_carrier(struct net_device *, bool new_carrier);
2390extern int dev_set_mac_address(struct net_device *, 2385int dev_get_phys_port_id(struct net_device *dev,
2391 struct sockaddr *); 2386 struct netdev_phys_port_id *ppid);
2392extern int dev_change_carrier(struct net_device *, 2387int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
2393 bool new_carrier); 2388 struct netdev_queue *txq);
2394extern int dev_get_phys_port_id(struct net_device *dev, 2389int dev_forward_skb(struct net_device *dev, struct sk_buff *skb);
2395 struct netdev_phys_port_id *ppid);
2396extern int dev_hard_start_xmit(struct sk_buff *skb,
2397 struct net_device *dev,
2398 struct netdev_queue *txq);
2399extern int dev_forward_skb(struct net_device *dev,
2400 struct sk_buff *skb);
2401 2390
2402extern int netdev_budget; 2391extern int netdev_budget;
2403 2392
2404/* Called by rtnetlink.c:rtnl_unlock() */ 2393/* Called by rtnetlink.c:rtnl_unlock() */
2405extern void netdev_run_todo(void); 2394void netdev_run_todo(void);
2406 2395
2407/** 2396/**
2408 * dev_put - release reference to device 2397 * dev_put - release reference to device
@@ -2435,9 +2424,9 @@ static inline void dev_hold(struct net_device *dev)
2435 * kind of lower layer not just hardware media. 2424 * kind of lower layer not just hardware media.
2436 */ 2425 */
2437 2426
2438extern void linkwatch_init_dev(struct net_device *dev); 2427void linkwatch_init_dev(struct net_device *dev);
2439extern void linkwatch_fire_event(struct net_device *dev); 2428void linkwatch_fire_event(struct net_device *dev);
2440extern void linkwatch_forget_dev(struct net_device *dev); 2429void linkwatch_forget_dev(struct net_device *dev);
2441 2430
2442/** 2431/**
2443 * netif_carrier_ok - test if carrier present 2432 * netif_carrier_ok - test if carrier present
@@ -2450,13 +2439,13 @@ static inline bool netif_carrier_ok(const struct net_device *dev)
2450 return !test_bit(__LINK_STATE_NOCARRIER, &dev->state); 2439 return !test_bit(__LINK_STATE_NOCARRIER, &dev->state);
2451} 2440}
2452 2441
2453extern unsigned long dev_trans_start(struct net_device *dev); 2442unsigned long dev_trans_start(struct net_device *dev);
2454 2443
2455extern void __netdev_watchdog_up(struct net_device *dev); 2444void __netdev_watchdog_up(struct net_device *dev);
2456 2445
2457extern void netif_carrier_on(struct net_device *dev); 2446void netif_carrier_on(struct net_device *dev);
2458 2447
2459extern void netif_carrier_off(struct net_device *dev); 2448void netif_carrier_off(struct net_device *dev);
2460 2449
2461/** 2450/**
2462 * netif_dormant_on - mark device as dormant. 2451 * netif_dormant_on - mark device as dormant.
@@ -2524,9 +2513,9 @@ static inline bool netif_device_present(struct net_device *dev)
2524 return test_bit(__LINK_STATE_PRESENT, &dev->state); 2513 return test_bit(__LINK_STATE_PRESENT, &dev->state);
2525} 2514}
2526 2515
2527extern void netif_device_detach(struct net_device *dev); 2516void netif_device_detach(struct net_device *dev);
2528 2517
2529extern void netif_device_attach(struct net_device *dev); 2518void netif_device_attach(struct net_device *dev);
2530 2519
2531/* 2520/*
2532 * Network interface message level settings 2521 * Network interface message level settings
@@ -2735,98 +2724,93 @@ static inline void netif_addr_unlock_bh(struct net_device *dev)
2735 2724
2736/* These functions live elsewhere (drivers/net/net_init.c, but related) */ 2725/* These functions live elsewhere (drivers/net/net_init.c, but related) */
2737 2726
2738extern void ether_setup(struct net_device *dev); 2727void ether_setup(struct net_device *dev);
2739 2728
2740/* Support for loadable net-drivers */ 2729/* Support for loadable net-drivers */
2741extern struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name, 2730struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name,
2742 void (*setup)(struct net_device *), 2731 void (*setup)(struct net_device *),
2743 unsigned int txqs, unsigned int rxqs); 2732 unsigned int txqs, unsigned int rxqs);
2744#define alloc_netdev(sizeof_priv, name, setup) \ 2733#define alloc_netdev(sizeof_priv, name, setup) \
2745 alloc_netdev_mqs(sizeof_priv, name, setup, 1, 1) 2734 alloc_netdev_mqs(sizeof_priv, name, setup, 1, 1)
2746 2735
2747#define alloc_netdev_mq(sizeof_priv, name, setup, count) \ 2736#define alloc_netdev_mq(sizeof_priv, name, setup, count) \
2748 alloc_netdev_mqs(sizeof_priv, name, setup, count, count) 2737 alloc_netdev_mqs(sizeof_priv, name, setup, count, count)
2749 2738
2750extern int register_netdev(struct net_device *dev); 2739int register_netdev(struct net_device *dev);
2751extern void unregister_netdev(struct net_device *dev); 2740void unregister_netdev(struct net_device *dev);
2752 2741
2753/* General hardware address lists handling functions */ 2742/* General hardware address lists handling functions */
2754extern int __hw_addr_add_multiple(struct netdev_hw_addr_list *to_list, 2743int __hw_addr_add_multiple(struct netdev_hw_addr_list *to_list,
2755 struct netdev_hw_addr_list *from_list, 2744 struct netdev_hw_addr_list *from_list,
2756 int addr_len, unsigned char addr_type); 2745 int addr_len, unsigned char addr_type);
2757extern void __hw_addr_del_multiple(struct netdev_hw_addr_list *to_list, 2746void __hw_addr_del_multiple(struct netdev_hw_addr_list *to_list,
2758 struct netdev_hw_addr_list *from_list, 2747 struct netdev_hw_addr_list *from_list,
2759 int addr_len, unsigned char addr_type); 2748 int addr_len, unsigned char addr_type);
2760extern int __hw_addr_sync(struct netdev_hw_addr_list *to_list, 2749int __hw_addr_sync(struct netdev_hw_addr_list *to_list,
2761 struct netdev_hw_addr_list *from_list, 2750 struct netdev_hw_addr_list *from_list, int addr_len);
2762 int addr_len); 2751void __hw_addr_unsync(struct netdev_hw_addr_list *to_list,
2763extern void __hw_addr_unsync(struct netdev_hw_addr_list *to_list, 2752 struct netdev_hw_addr_list *from_list, int addr_len);
2764 struct netdev_hw_addr_list *from_list, 2753void __hw_addr_flush(struct netdev_hw_addr_list *list);
2765 int addr_len); 2754void __hw_addr_init(struct netdev_hw_addr_list *list);
2766extern void __hw_addr_flush(struct netdev_hw_addr_list *list);
2767extern void __hw_addr_init(struct netdev_hw_addr_list *list);
2768 2755
2769/* Functions used for device addresses handling */ 2756/* Functions used for device addresses handling */
2770extern int dev_addr_add(struct net_device *dev, const unsigned char *addr, 2757int dev_addr_add(struct net_device *dev, const unsigned char *addr,
2771 unsigned char addr_type); 2758 unsigned char addr_type);
2772extern int dev_addr_del(struct net_device *dev, const unsigned char *addr, 2759int dev_addr_del(struct net_device *dev, const unsigned char *addr,
2773 unsigned char addr_type); 2760 unsigned char addr_type);
2774extern int dev_addr_add_multiple(struct net_device *to_dev, 2761int dev_addr_add_multiple(struct net_device *to_dev,
2775 struct net_device *from_dev, 2762 struct net_device *from_dev, unsigned char addr_type);
2776 unsigned char addr_type); 2763int dev_addr_del_multiple(struct net_device *to_dev,
2777extern int dev_addr_del_multiple(struct net_device *to_dev, 2764 struct net_device *from_dev, unsigned char addr_type);
2778 struct net_device *from_dev, 2765void dev_addr_flush(struct net_device *dev);
2779 unsigned char addr_type); 2766int dev_addr_init(struct net_device *dev);
2780extern void dev_addr_flush(struct net_device *dev);
2781extern int dev_addr_init(struct net_device *dev);
2782 2767
2783/* Functions used for unicast addresses handling */ 2768/* Functions used for unicast addresses handling */
2784extern int dev_uc_add(struct net_device *dev, const unsigned char *addr); 2769int dev_uc_add(struct net_device *dev, const unsigned char *addr);
2785extern int dev_uc_add_excl(struct net_device *dev, const unsigned char *addr); 2770int dev_uc_add_excl(struct net_device *dev, const unsigned char *addr);
2786extern int dev_uc_del(struct net_device *dev, const unsigned char *addr); 2771int dev_uc_del(struct net_device *dev, const unsigned char *addr);
2787extern int dev_uc_sync(struct net_device *to, struct net_device *from); 2772int dev_uc_sync(struct net_device *to, struct net_device *from);
2788extern int dev_uc_sync_multiple(struct net_device *to, struct net_device *from); 2773int dev_uc_sync_multiple(struct net_device *to, struct net_device *from);
2789extern void dev_uc_unsync(struct net_device *to, struct net_device *from); 2774void dev_uc_unsync(struct net_device *to, struct net_device *from);
2790extern void dev_uc_flush(struct net_device *dev); 2775void dev_uc_flush(struct net_device *dev);
2791extern void dev_uc_init(struct net_device *dev); 2776void dev_uc_init(struct net_device *dev);
2792 2777
2793/* Functions used for multicast addresses handling */ 2778/* Functions used for multicast addresses handling */
2794extern int dev_mc_add(struct net_device *dev, const unsigned char *addr); 2779int dev_mc_add(struct net_device *dev, const unsigned char *addr);
2795extern int dev_mc_add_global(struct net_device *dev, const unsigned char *addr); 2780int dev_mc_add_global(struct net_device *dev, const unsigned char *addr);
2796extern int dev_mc_add_excl(struct net_device *dev, const unsigned char *addr); 2781int dev_mc_add_excl(struct net_device *dev, const unsigned char *addr);
2797extern int dev_mc_del(struct net_device *dev, const unsigned char *addr); 2782int dev_mc_del(struct net_device *dev, const unsigned char *addr);
2798extern int dev_mc_del_global(struct net_device *dev, const unsigned char *addr); 2783int dev_mc_del_global(struct net_device *dev, const unsigned char *addr);
2799extern int dev_mc_sync(struct net_device *to, struct net_device *from); 2784int dev_mc_sync(struct net_device *to, struct net_device *from);
2800extern int dev_mc_sync_multiple(struct net_device *to, struct net_device *from); 2785int dev_mc_sync_multiple(struct net_device *to, struct net_device *from);
2801extern void dev_mc_unsync(struct net_device *to, struct net_device *from); 2786void dev_mc_unsync(struct net_device *to, struct net_device *from);
2802extern void dev_mc_flush(struct net_device *dev); 2787void dev_mc_flush(struct net_device *dev);
2803extern void dev_mc_init(struct net_device *dev); 2788void dev_mc_init(struct net_device *dev);
2804 2789
2805/* Functions used for secondary unicast and multicast support */ 2790/* Functions used for secondary unicast and multicast support */
2806extern void dev_set_rx_mode(struct net_device *dev); 2791void dev_set_rx_mode(struct net_device *dev);
2807extern void __dev_set_rx_mode(struct net_device *dev); 2792void __dev_set_rx_mode(struct net_device *dev);
2808extern int dev_set_promiscuity(struct net_device *dev, int inc); 2793int dev_set_promiscuity(struct net_device *dev, int inc);
2809extern int dev_set_allmulti(struct net_device *dev, int inc); 2794int dev_set_allmulti(struct net_device *dev, int inc);
2810extern void netdev_state_change(struct net_device *dev); 2795void netdev_state_change(struct net_device *dev);
2811extern void netdev_notify_peers(struct net_device *dev); 2796void netdev_notify_peers(struct net_device *dev);
2812extern void netdev_features_change(struct net_device *dev); 2797void netdev_features_change(struct net_device *dev);
2813/* Load a device via the kmod */ 2798/* Load a device via the kmod */
2814extern void dev_load(struct net *net, const char *name); 2799void dev_load(struct net *net, const char *name);
2815extern struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev, 2800struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
2816 struct rtnl_link_stats64 *storage); 2801 struct rtnl_link_stats64 *storage);
2817extern void netdev_stats_to_stats64(struct rtnl_link_stats64 *stats64, 2802void netdev_stats_to_stats64(struct rtnl_link_stats64 *stats64,
2818 const struct net_device_stats *netdev_stats); 2803 const struct net_device_stats *netdev_stats);
2819 2804
2820extern int netdev_max_backlog; 2805extern int netdev_max_backlog;
2821extern int netdev_tstamp_prequeue; 2806extern int netdev_tstamp_prequeue;
2822extern int weight_p; 2807extern int weight_p;
2823extern int bpf_jit_enable; 2808extern int bpf_jit_enable;
2824 2809
2825extern bool netdev_has_upper_dev(struct net_device *dev, 2810bool netdev_has_upper_dev(struct net_device *dev, struct net_device *upper_dev);
2826 struct net_device *upper_dev); 2811bool netdev_has_any_upper_dev(struct net_device *dev);
2827extern bool netdev_has_any_upper_dev(struct net_device *dev); 2812struct net_device *netdev_all_upper_get_next_dev_rcu(struct net_device *dev,
2828extern struct net_device *netdev_all_upper_get_next_dev_rcu(struct net_device *dev, 2813 struct list_head **iter);
2829 struct list_head **iter);
2830 2814
2831/* iterate through upper list, must be called under RCU read lock */ 2815/* iterate through upper list, must be called under RCU read lock */
2832#define netdev_for_each_all_upper_dev_rcu(dev, updev, iter) \ 2816#define netdev_for_each_all_upper_dev_rcu(dev, updev, iter) \
@@ -2835,10 +2819,10 @@ extern struct net_device *netdev_all_upper_get_next_dev_rcu(struct net_device *d
2835 updev; \ 2819 updev; \
2836 updev = netdev_all_upper_get_next_dev_rcu(dev, &(iter))) 2820 updev = netdev_all_upper_get_next_dev_rcu(dev, &(iter)))
2837 2821
2838extern void *netdev_lower_get_next_private(struct net_device *dev, 2822void *netdev_lower_get_next_private(struct net_device *dev,
2839 struct list_head **iter); 2823 struct list_head **iter);
2840extern void *netdev_lower_get_next_private_rcu(struct net_device *dev, 2824void *netdev_lower_get_next_private_rcu(struct net_device *dev,
2841 struct list_head **iter); 2825 struct list_head **iter);
2842 2826
2843#define netdev_for_each_lower_private(dev, priv, iter) \ 2827#define netdev_for_each_lower_private(dev, priv, iter) \
2844 for (iter = (dev)->adj_list.lower.next, \ 2828 for (iter = (dev)->adj_list.lower.next, \
@@ -2852,27 +2836,26 @@ extern void *netdev_lower_get_next_private_rcu(struct net_device *dev,
2852 priv; \ 2836 priv; \
2853 priv = netdev_lower_get_next_private_rcu(dev, &(iter))) 2837 priv = netdev_lower_get_next_private_rcu(dev, &(iter)))
2854 2838
2855extern void *netdev_adjacent_get_private(struct list_head *adj_list); 2839void *netdev_adjacent_get_private(struct list_head *adj_list);
2856extern struct net_device *netdev_master_upper_dev_get(struct net_device *dev); 2840struct net_device *netdev_master_upper_dev_get(struct net_device *dev);
2857extern struct net_device *netdev_master_upper_dev_get_rcu(struct net_device *dev); 2841struct net_device *netdev_master_upper_dev_get_rcu(struct net_device *dev);
2858extern int netdev_upper_dev_link(struct net_device *dev, 2842int netdev_upper_dev_link(struct net_device *dev, struct net_device *upper_dev);
2843int netdev_master_upper_dev_link(struct net_device *dev,
2859 struct net_device *upper_dev); 2844 struct net_device *upper_dev);
2860extern int netdev_master_upper_dev_link(struct net_device *dev, 2845int netdev_master_upper_dev_link_private(struct net_device *dev,
2861 struct net_device *upper_dev); 2846 struct net_device *upper_dev,
2862extern int netdev_master_upper_dev_link_private(struct net_device *dev, 2847 void *private);
2863 struct net_device *upper_dev, 2848void netdev_upper_dev_unlink(struct net_device *dev,
2864 void *private); 2849 struct net_device *upper_dev);
2865extern void netdev_upper_dev_unlink(struct net_device *dev, 2850void *netdev_lower_dev_get_private_rcu(struct net_device *dev,
2866 struct net_device *upper_dev); 2851 struct net_device *lower_dev);
2867extern void *netdev_lower_dev_get_private_rcu(struct net_device *dev, 2852void *netdev_lower_dev_get_private(struct net_device *dev,
2868 struct net_device *lower_dev); 2853 struct net_device *lower_dev);
2869extern void *netdev_lower_dev_get_private(struct net_device *dev, 2854int skb_checksum_help(struct sk_buff *skb);
2870 struct net_device *lower_dev); 2855struct sk_buff *__skb_gso_segment(struct sk_buff *skb,
2871extern int skb_checksum_help(struct sk_buff *skb); 2856 netdev_features_t features, bool tx_path);
2872extern struct sk_buff *__skb_gso_segment(struct sk_buff *skb, 2857struct sk_buff *skb_mac_gso_segment(struct sk_buff *skb,
2873 netdev_features_t features, bool tx_path); 2858 netdev_features_t features);
2874extern struct sk_buff *skb_mac_gso_segment(struct sk_buff *skb,
2875 netdev_features_t features);
2876 2859
2877static inline 2860static inline
2878struct sk_buff *skb_gso_segment(struct sk_buff *skb, netdev_features_t features) 2861struct sk_buff *skb_gso_segment(struct sk_buff *skb, netdev_features_t features)
@@ -2894,30 +2877,30 @@ static inline bool can_checksum_protocol(netdev_features_t features,
2894} 2877}
2895 2878
2896#ifdef CONFIG_BUG 2879#ifdef CONFIG_BUG
2897extern void netdev_rx_csum_fault(struct net_device *dev); 2880void netdev_rx_csum_fault(struct net_device *dev);
2898#else 2881#else
2899static inline void netdev_rx_csum_fault(struct net_device *dev) 2882static inline void netdev_rx_csum_fault(struct net_device *dev)
2900{ 2883{
2901} 2884}
2902#endif 2885#endif
2903/* rx skb timestamps */ 2886/* rx skb timestamps */
2904extern void net_enable_timestamp(void); 2887void net_enable_timestamp(void);
2905extern void net_disable_timestamp(void); 2888void net_disable_timestamp(void);
2906 2889
2907#ifdef CONFIG_PROC_FS 2890#ifdef CONFIG_PROC_FS
2908extern int __init dev_proc_init(void); 2891int __init dev_proc_init(void);
2909#else 2892#else
2910#define dev_proc_init() 0 2893#define dev_proc_init() 0
2911#endif 2894#endif
2912 2895
2913extern int netdev_class_create_file(struct class_attribute *class_attr); 2896int netdev_class_create_file(struct class_attribute *class_attr);
2914extern void netdev_class_remove_file(struct class_attribute *class_attr); 2897void netdev_class_remove_file(struct class_attribute *class_attr);
2915 2898
2916extern struct kobj_ns_type_operations net_ns_type_operations; 2899extern struct kobj_ns_type_operations net_ns_type_operations;
2917 2900
2918extern const char *netdev_drivername(const struct net_device *dev); 2901const char *netdev_drivername(const struct net_device *dev);
2919 2902
2920extern void linkwatch_run_queue(void); 2903void linkwatch_run_queue(void);
2921 2904
2922static inline netdev_features_t netdev_get_wanted_features( 2905static inline netdev_features_t netdev_get_wanted_features(
2923 struct net_device *dev) 2906 struct net_device *dev)
@@ -3009,22 +2992,22 @@ static inline const char *netdev_name(const struct net_device *dev)
3009 return dev->name; 2992 return dev->name;
3010} 2993}
3011 2994
3012extern __printf(3, 4) 2995__printf(3, 4)
3013int netdev_printk(const char *level, const struct net_device *dev, 2996int netdev_printk(const char *level, const struct net_device *dev,
3014 const char *format, ...); 2997 const char *format, ...);
3015extern __printf(2, 3) 2998__printf(2, 3)
3016int netdev_emerg(const struct net_device *dev, const char *format, ...); 2999int netdev_emerg(const struct net_device *dev, const char *format, ...);
3017extern __printf(2, 3) 3000__printf(2, 3)
3018int netdev_alert(const struct net_device *dev, const char *format, ...); 3001int netdev_alert(const struct net_device *dev, const char *format, ...);
3019extern __printf(2, 3) 3002__printf(2, 3)
3020int netdev_crit(const struct net_device *dev, const char *format, ...); 3003int netdev_crit(const struct net_device *dev, const char *format, ...);
3021extern __printf(2, 3) 3004__printf(2, 3)
3022int netdev_err(const struct net_device *dev, const char *format, ...); 3005int netdev_err(const struct net_device *dev, const char *format, ...);
3023extern __printf(2, 3) 3006__printf(2, 3)
3024int netdev_warn(const struct net_device *dev, const char *format, ...); 3007int netdev_warn(const struct net_device *dev, const char *format, ...);
3025extern __printf(2, 3) 3008__printf(2, 3)
3026int netdev_notice(const struct net_device *dev, const char *format, ...); 3009int netdev_notice(const struct net_device *dev, const char *format, ...);
3027extern __printf(2, 3) 3010__printf(2, 3)
3028int netdev_info(const struct net_device *dev, const char *format, ...); 3011int netdev_info(const struct net_device *dev, const char *format, ...);
3029 3012
3030#define MODULE_ALIAS_NETDEV(device) \ 3013#define MODULE_ALIAS_NETDEV(device) \