1754
1798
return lh == &net->dev_base_head ? NULL : net_device_entry(lh);
1757
extern int netdev_boot_setup_check(struct net_device *dev);
1758
extern unsigned long netdev_boot_base(const char *prefix, int unit);
1759
extern struct net_device *dev_getbyhwaddr_rcu(struct net *net, unsigned short type,
1760
const char *hwaddr);
1761
extern struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type);
1762
extern struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short type);
1763
extern void dev_add_pack(struct packet_type *pt);
1764
extern void dev_remove_pack(struct packet_type *pt);
1765
extern void __dev_remove_pack(struct packet_type *pt);
1766
extern void dev_add_offload(struct packet_offload *po);
1767
extern void dev_remove_offload(struct packet_offload *po);
1768
extern void __dev_remove_offload(struct packet_offload *po);
1801
int netdev_boot_setup_check(struct net_device *dev);
1802
unsigned long netdev_boot_base(const char *prefix, int unit);
1803
struct net_device *dev_getbyhwaddr_rcu(struct net *net, unsigned short type,
1804
const char *hwaddr);
1805
struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type);
1806
struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short type);
1807
void dev_add_pack(struct packet_type *pt);
1808
void dev_remove_pack(struct packet_type *pt);
1809
void __dev_remove_pack(struct packet_type *pt);
1810
void dev_add_offload(struct packet_offload *po);
1811
void dev_remove_offload(struct packet_offload *po);
1812
void __dev_remove_offload(struct packet_offload *po);
1770
extern struct net_device *dev_get_by_flags_rcu(struct net *net, unsigned short flags,
1771
unsigned short mask);
1772
extern struct net_device *dev_get_by_name(struct net *net, const char *name);
1773
extern struct net_device *dev_get_by_name_rcu(struct net *net, const char *name);
1774
extern struct net_device *__dev_get_by_name(struct net *net, const char *name);
1775
extern int dev_alloc_name(struct net_device *dev, const char *name);
1776
extern int dev_open(struct net_device *dev);
1777
extern int dev_close(struct net_device *dev);
1778
extern void dev_disable_lro(struct net_device *dev);
1779
extern int dev_loopback_xmit(struct sk_buff *newskb);
1780
extern int dev_queue_xmit(struct sk_buff *skb);
1781
extern int register_netdevice(struct net_device *dev);
1782
extern void unregister_netdevice_queue(struct net_device *dev,
1783
struct list_head *head);
1784
extern void unregister_netdevice_many(struct list_head *head);
1814
struct net_device *dev_get_by_flags_rcu(struct net *net, unsigned short flags,
1815
unsigned short mask);
1816
struct net_device *dev_get_by_name(struct net *net, const char *name);
1817
struct net_device *dev_get_by_name_rcu(struct net *net, const char *name);
1818
struct net_device *__dev_get_by_name(struct net *net, const char *name);
1819
int dev_alloc_name(struct net_device *dev, const char *name);
1820
int dev_open(struct net_device *dev);
1821
int dev_close(struct net_device *dev);
1822
void dev_disable_lro(struct net_device *dev);
1823
int dev_loopback_xmit(struct sk_buff *newskb);
1824
int dev_queue_xmit(struct sk_buff *skb);
1825
int dev_queue_xmit_accel(struct sk_buff *skb, void *accel_priv);
1826
int register_netdevice(struct net_device *dev);
1827
void unregister_netdevice_queue(struct net_device *dev, struct list_head *head);
1828
void unregister_netdevice_many(struct list_head *head);
1785
1829
static inline void unregister_netdevice(struct net_device *dev)
1787
1831
unregister_netdevice_queue(dev, NULL);
1790
extern int netdev_refcnt_read(const struct net_device *dev);
1791
extern void free_netdev(struct net_device *dev);
1792
extern void synchronize_net(void);
1793
extern int init_dummy_netdev(struct net_device *dev);
1834
int netdev_refcnt_read(const struct net_device *dev);
1835
void free_netdev(struct net_device *dev);
1836
void netdev_freemem(struct net_device *dev);
1837
void synchronize_net(void);
1838
int init_dummy_netdev(struct net_device *dev);
1795
extern struct net_device *dev_get_by_index(struct net *net, int ifindex);
1796
extern struct net_device *__dev_get_by_index(struct net *net, int ifindex);
1797
extern struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex);
1798
extern int netdev_get_name(struct net *net, char *name, int ifindex);
1799
extern int dev_restart(struct net_device *dev);
1840
struct net_device *dev_get_by_index(struct net *net, int ifindex);
1841
struct net_device *__dev_get_by_index(struct net *net, int ifindex);
1842
struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex);
1843
int netdev_get_name(struct net *net, char *name, int ifindex);
1844
int dev_restart(struct net_device *dev);
1800
1845
#ifdef CONFIG_NETPOLL_TRAP
1801
extern int netpoll_trap(void);
1846
int netpoll_trap(void);
1803
extern int skb_gro_receive(struct sk_buff **head,
1804
struct sk_buff *skb);
1848
int skb_gro_receive(struct sk_buff **head, struct sk_buff *skb);
1806
1850
static inline unsigned int skb_gro_offset(const struct sk_buff *skb)
2358
2407
napi->skb = NULL;
2361
extern int netdev_rx_handler_register(struct net_device *dev,
2362
rx_handler_func_t *rx_handler,
2363
void *rx_handler_data);
2364
extern void netdev_rx_handler_unregister(struct net_device *dev);
2410
int netdev_rx_handler_register(struct net_device *dev,
2411
rx_handler_func_t *rx_handler,
2412
void *rx_handler_data);
2413
void netdev_rx_handler_unregister(struct net_device *dev);
2366
extern bool dev_valid_name(const char *name);
2367
extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *);
2368
extern int dev_ethtool(struct net *net, struct ifreq *);
2369
extern unsigned int dev_get_flags(const struct net_device *);
2370
extern int __dev_change_flags(struct net_device *, unsigned int flags);
2371
extern int dev_change_flags(struct net_device *, unsigned int);
2372
extern void __dev_notify_flags(struct net_device *, unsigned int old_flags);
2373
extern int dev_change_name(struct net_device *, const char *);
2374
extern int dev_set_alias(struct net_device *, const char *, size_t);
2375
extern int dev_change_net_namespace(struct net_device *,
2376
struct net *, const char *);
2377
extern int dev_set_mtu(struct net_device *, int);
2378
extern void dev_set_group(struct net_device *, int);
2379
extern int dev_set_mac_address(struct net_device *,
2381
extern int dev_change_carrier(struct net_device *,
2383
extern int dev_get_phys_port_id(struct net_device *dev,
2384
struct netdev_phys_port_id *ppid);
2385
extern int dev_hard_start_xmit(struct sk_buff *skb,
2386
struct net_device *dev,
2387
struct netdev_queue *txq);
2388
extern int dev_forward_skb(struct net_device *dev,
2389
struct sk_buff *skb);
2415
bool dev_valid_name(const char *name);
2416
int dev_ioctl(struct net *net, unsigned int cmd, void __user *);
2417
int dev_ethtool(struct net *net, struct ifreq *);
2418
unsigned int dev_get_flags(const struct net_device *);
2419
int __dev_change_flags(struct net_device *, unsigned int flags);
2420
int dev_change_flags(struct net_device *, unsigned int);
2421
void __dev_notify_flags(struct net_device *, unsigned int old_flags,
2422
unsigned int gchanges);
2423
int dev_change_name(struct net_device *, const char *);
2424
int dev_set_alias(struct net_device *, const char *, size_t);
2425
int dev_change_net_namespace(struct net_device *, struct net *, const char *);
2426
int dev_set_mtu(struct net_device *, int);
2427
void dev_set_group(struct net_device *, int);
2428
int dev_set_mac_address(struct net_device *, struct sockaddr *);
2429
int dev_change_carrier(struct net_device *, bool new_carrier);
2430
int dev_get_phys_port_id(struct net_device *dev,
2431
struct netdev_phys_port_id *ppid);
2432
int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
2433
struct netdev_queue *txq);
2434
int dev_forward_skb(struct net_device *dev, struct sk_buff *skb);
2391
2436
extern int netdev_budget;
2393
2438
/* Called by rtnetlink.c:rtnl_unlock() */
2394
extern void netdev_run_todo(void);
2439
void netdev_run_todo(void);
2397
2442
* dev_put - release reference to device
2725
2770
/* These functions live elsewhere (drivers/net/net_init.c, but related) */
2727
extern void ether_setup(struct net_device *dev);
2772
void ether_setup(struct net_device *dev);
2729
2774
/* Support for loadable net-drivers */
2730
extern struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name,
2731
void (*setup)(struct net_device *),
2732
unsigned int txqs, unsigned int rxqs);
2775
struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name,
2776
void (*setup)(struct net_device *),
2777
unsigned int txqs, unsigned int rxqs);
2733
2778
#define alloc_netdev(sizeof_priv, name, setup) \
2734
2779
alloc_netdev_mqs(sizeof_priv, name, setup, 1, 1)
2736
2781
#define alloc_netdev_mq(sizeof_priv, name, setup, count) \
2737
2782
alloc_netdev_mqs(sizeof_priv, name, setup, count, count)
2739
extern int register_netdev(struct net_device *dev);
2740
extern void unregister_netdev(struct net_device *dev);
2784
int register_netdev(struct net_device *dev);
2785
void unregister_netdev(struct net_device *dev);
2742
2787
/* General hardware address lists handling functions */
2743
extern int __hw_addr_add_multiple(struct netdev_hw_addr_list *to_list,
2744
struct netdev_hw_addr_list *from_list,
2745
int addr_len, unsigned char addr_type);
2746
extern void __hw_addr_del_multiple(struct netdev_hw_addr_list *to_list,
2747
struct netdev_hw_addr_list *from_list,
2748
int addr_len, unsigned char addr_type);
2749
extern int __hw_addr_sync(struct netdev_hw_addr_list *to_list,
2750
struct netdev_hw_addr_list *from_list,
2752
extern void __hw_addr_unsync(struct netdev_hw_addr_list *to_list,
2753
struct netdev_hw_addr_list *from_list,
2755
extern void __hw_addr_flush(struct netdev_hw_addr_list *list);
2756
extern void __hw_addr_init(struct netdev_hw_addr_list *list);
2788
int __hw_addr_add_multiple(struct netdev_hw_addr_list *to_list,
2789
struct netdev_hw_addr_list *from_list,
2790
int addr_len, unsigned char addr_type);
2791
void __hw_addr_del_multiple(struct netdev_hw_addr_list *to_list,
2792
struct netdev_hw_addr_list *from_list,
2793
int addr_len, unsigned char addr_type);
2794
int __hw_addr_sync(struct netdev_hw_addr_list *to_list,
2795
struct netdev_hw_addr_list *from_list, int addr_len);
2796
void __hw_addr_unsync(struct netdev_hw_addr_list *to_list,
2797
struct netdev_hw_addr_list *from_list, int addr_len);
2798
void __hw_addr_flush(struct netdev_hw_addr_list *list);
2799
void __hw_addr_init(struct netdev_hw_addr_list *list);
2758
2801
/* Functions used for device addresses handling */
2759
extern int dev_addr_add(struct net_device *dev, const unsigned char *addr,
2760
unsigned char addr_type);
2761
extern int dev_addr_del(struct net_device *dev, const unsigned char *addr,
2762
unsigned char addr_type);
2763
extern int dev_addr_add_multiple(struct net_device *to_dev,
2764
struct net_device *from_dev,
2765
unsigned char addr_type);
2766
extern int dev_addr_del_multiple(struct net_device *to_dev,
2767
struct net_device *from_dev,
2768
unsigned char addr_type);
2769
extern void dev_addr_flush(struct net_device *dev);
2770
extern int dev_addr_init(struct net_device *dev);
2802
int dev_addr_add(struct net_device *dev, const unsigned char *addr,
2803
unsigned char addr_type);
2804
int dev_addr_del(struct net_device *dev, const unsigned char *addr,
2805
unsigned char addr_type);
2806
int dev_addr_add_multiple(struct net_device *to_dev,
2807
struct net_device *from_dev, unsigned char addr_type);
2808
int dev_addr_del_multiple(struct net_device *to_dev,
2809
struct net_device *from_dev, unsigned char addr_type);
2810
void dev_addr_flush(struct net_device *dev);
2811
int dev_addr_init(struct net_device *dev);
2772
2813
/* Functions used for unicast addresses handling */
2773
extern int dev_uc_add(struct net_device *dev, const unsigned char *addr);
2774
extern int dev_uc_add_excl(struct net_device *dev, const unsigned char *addr);
2775
extern int dev_uc_del(struct net_device *dev, const unsigned char *addr);
2776
extern int dev_uc_sync(struct net_device *to, struct net_device *from);
2777
extern int dev_uc_sync_multiple(struct net_device *to, struct net_device *from);
2778
extern void dev_uc_unsync(struct net_device *to, struct net_device *from);
2779
extern void dev_uc_flush(struct net_device *dev);
2780
extern void dev_uc_init(struct net_device *dev);
2814
int dev_uc_add(struct net_device *dev, const unsigned char *addr);
2815
int dev_uc_add_excl(struct net_device *dev, const unsigned char *addr);
2816
int dev_uc_del(struct net_device *dev, const unsigned char *addr);
2817
int dev_uc_sync(struct net_device *to, struct net_device *from);
2818
int dev_uc_sync_multiple(struct net_device *to, struct net_device *from);
2819
void dev_uc_unsync(struct net_device *to, struct net_device *from);
2820
void dev_uc_flush(struct net_device *dev);
2821
void dev_uc_init(struct net_device *dev);
2782
2823
/* Functions used for multicast addresses handling */
2783
extern int dev_mc_add(struct net_device *dev, const unsigned char *addr);
2784
extern int dev_mc_add_global(struct net_device *dev, const unsigned char *addr);
2785
extern int dev_mc_add_excl(struct net_device *dev, const unsigned char *addr);
2786
extern int dev_mc_del(struct net_device *dev, const unsigned char *addr);
2787
extern int dev_mc_del_global(struct net_device *dev, const unsigned char *addr);
2788
extern int dev_mc_sync(struct net_device *to, struct net_device *from);
2789
extern int dev_mc_sync_multiple(struct net_device *to, struct net_device *from);
2790
extern void dev_mc_unsync(struct net_device *to, struct net_device *from);
2791
extern void dev_mc_flush(struct net_device *dev);
2792
extern void dev_mc_init(struct net_device *dev);
2824
int dev_mc_add(struct net_device *dev, const unsigned char *addr);
2825
int dev_mc_add_global(struct net_device *dev, const unsigned char *addr);
2826
int dev_mc_add_excl(struct net_device *dev, const unsigned char *addr);
2827
int dev_mc_del(struct net_device *dev, const unsigned char *addr);
2828
int dev_mc_del_global(struct net_device *dev, const unsigned char *addr);
2829
int dev_mc_sync(struct net_device *to, struct net_device *from);
2830
int dev_mc_sync_multiple(struct net_device *to, struct net_device *from);
2831
void dev_mc_unsync(struct net_device *to, struct net_device *from);
2832
void dev_mc_flush(struct net_device *dev);
2833
void dev_mc_init(struct net_device *dev);
2794
2835
/* Functions used for secondary unicast and multicast support */
2795
extern void dev_set_rx_mode(struct net_device *dev);
2796
extern void __dev_set_rx_mode(struct net_device *dev);
2797
extern int dev_set_promiscuity(struct net_device *dev, int inc);
2798
extern int dev_set_allmulti(struct net_device *dev, int inc);
2799
extern void netdev_state_change(struct net_device *dev);
2800
extern void netdev_notify_peers(struct net_device *dev);
2801
extern void netdev_features_change(struct net_device *dev);
2836
void dev_set_rx_mode(struct net_device *dev);
2837
void __dev_set_rx_mode(struct net_device *dev);
2838
int dev_set_promiscuity(struct net_device *dev, int inc);
2839
int dev_set_allmulti(struct net_device *dev, int inc);
2840
void netdev_state_change(struct net_device *dev);
2841
void netdev_notify_peers(struct net_device *dev);
2842
void netdev_features_change(struct net_device *dev);
2802
2843
/* Load a device via the kmod */
2803
extern void dev_load(struct net *net, const char *name);
2804
extern struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
2805
struct rtnl_link_stats64 *storage);
2806
extern void netdev_stats_to_stats64(struct rtnl_link_stats64 *stats64,
2807
const struct net_device_stats *netdev_stats);
2844
void dev_load(struct net *net, const char *name);
2845
struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
2846
struct rtnl_link_stats64 *storage);
2847
void netdev_stats_to_stats64(struct rtnl_link_stats64 *stats64,
2848
const struct net_device_stats *netdev_stats);
2809
2850
extern int netdev_max_backlog;
2810
2851
extern int netdev_tstamp_prequeue;
2811
2852
extern int weight_p;
2812
2853
extern int bpf_jit_enable;
2814
extern bool netdev_has_upper_dev(struct net_device *dev,
2815
struct net_device *upper_dev);
2816
extern bool netdev_has_any_upper_dev(struct net_device *dev);
2817
extern struct net_device *netdev_upper_get_next_dev_rcu(struct net_device *dev,
2818
struct list_head **iter);
2855
bool netdev_has_upper_dev(struct net_device *dev, struct net_device *upper_dev);
2856
bool netdev_has_any_upper_dev(struct net_device *dev);
2857
struct net_device *netdev_all_upper_get_next_dev_rcu(struct net_device *dev,
2858
struct list_head **iter);
2820
2860
/* iterate through upper list, must be called under RCU read lock */
2821
#define netdev_for_each_upper_dev_rcu(dev, upper, iter) \
2822
for (iter = &(dev)->upper_dev_list, \
2823
upper = netdev_upper_get_next_dev_rcu(dev, &(iter)); \
2825
upper = netdev_upper_get_next_dev_rcu(dev, &(iter)))
2827
extern struct net_device *netdev_master_upper_dev_get(struct net_device *dev);
2828
extern struct net_device *netdev_master_upper_dev_get_rcu(struct net_device *dev);
2829
extern int netdev_upper_dev_link(struct net_device *dev,
2861
#define netdev_for_each_all_upper_dev_rcu(dev, updev, iter) \
2862
for (iter = &(dev)->all_adj_list.upper, \
2863
updev = netdev_all_upper_get_next_dev_rcu(dev, &(iter)); \
2865
updev = netdev_all_upper_get_next_dev_rcu(dev, &(iter)))
2867
void *netdev_lower_get_next_private(struct net_device *dev,
2868
struct list_head **iter);
2869
void *netdev_lower_get_next_private_rcu(struct net_device *dev,
2870
struct list_head **iter);
2872
#define netdev_for_each_lower_private(dev, priv, iter) \
2873
for (iter = (dev)->adj_list.lower.next, \
2874
priv = netdev_lower_get_next_private(dev, &(iter)); \
2876
priv = netdev_lower_get_next_private(dev, &(iter)))
2878
#define netdev_for_each_lower_private_rcu(dev, priv, iter) \
2879
for (iter = &(dev)->adj_list.lower, \
2880
priv = netdev_lower_get_next_private_rcu(dev, &(iter)); \
2882
priv = netdev_lower_get_next_private_rcu(dev, &(iter)))
2884
void *netdev_adjacent_get_private(struct list_head *adj_list);
2885
struct net_device *netdev_master_upper_dev_get(struct net_device *dev);
2886
struct net_device *netdev_master_upper_dev_get_rcu(struct net_device *dev);
2887
int netdev_upper_dev_link(struct net_device *dev, struct net_device *upper_dev);
2888
int netdev_master_upper_dev_link(struct net_device *dev,
2830
2889
struct net_device *upper_dev);
2831
extern int netdev_master_upper_dev_link(struct net_device *dev,
2832
struct net_device *upper_dev);
2833
extern void netdev_upper_dev_unlink(struct net_device *dev,
2834
struct net_device *upper_dev);
2835
extern int skb_checksum_help(struct sk_buff *skb);
2836
extern struct sk_buff *__skb_gso_segment(struct sk_buff *skb,
2837
netdev_features_t features, bool tx_path);
2838
extern struct sk_buff *skb_mac_gso_segment(struct sk_buff *skb,
2839
netdev_features_t features);
2890
int netdev_master_upper_dev_link_private(struct net_device *dev,
2891
struct net_device *upper_dev,
2893
void netdev_upper_dev_unlink(struct net_device *dev,
2894
struct net_device *upper_dev);
2895
void *netdev_lower_dev_get_private_rcu(struct net_device *dev,
2896
struct net_device *lower_dev);
2897
void *netdev_lower_dev_get_private(struct net_device *dev,
2898
struct net_device *lower_dev);
2899
int skb_checksum_help(struct sk_buff *skb);
2900
struct sk_buff *__skb_gso_segment(struct sk_buff *skb,
2901
netdev_features_t features, bool tx_path);
2902
struct sk_buff *skb_mac_gso_segment(struct sk_buff *skb,
2903
netdev_features_t features);
2842
2906
struct sk_buff *skb_gso_segment(struct sk_buff *skb, netdev_features_t features)