@ -60,8 +60,8 @@ struct wireless_dev;
# define SET_ETHTOOL_OPS(netdev,ops) \
( ( netdev ) - > ethtool_ops = ( ops ) )
extern void netdev_set_default_ethtool_ops ( struct net_device * dev ,
const struct ethtool_ops * ops ) ;
void netdev_set_default_ethtool_ops ( struct net_device * dev ,
const struct ethtool_ops * ops ) ;
/* hardware address assignment types */
# define NET_ADDR_PERM 0 /* address is permanent (default) */
@ -298,7 +298,7 @@ struct netdev_boot_setup {
} ;
# define NETDEV_BOOT_SETUP_MAX 8
extern int __init netdev_boot_setup ( char * str ) ;
int __init netdev_boot_setup ( char * str ) ;
/*
* Structure for NAPI scheduling similar to tasklet but with weighting
@ -394,7 +394,7 @@ enum rx_handler_result {
typedef enum rx_handler_result rx_handler_result_t ;
typedef rx_handler_result_t rx_handler_func_t ( struct sk_buff * * pskb ) ;
extern void __napi_schedule ( struct napi_struct * n ) ;
void __napi_schedule ( struct napi_struct * n ) ;
static inline bool napi_disable_pending ( struct napi_struct * n )
{
@ -445,8 +445,8 @@ static inline bool napi_reschedule(struct napi_struct *napi)
*
* Mark NAPI processing as complete .
*/
extern void __napi_complete ( struct napi_struct * n ) ;
extern void napi_complete ( struct napi_struct * n ) ;
void __napi_complete ( struct napi_struct * n ) ;
void napi_complete ( struct napi_struct * n ) ;
/**
* napi_by_id - lookup a NAPI by napi_id
@ -455,7 +455,7 @@ extern void napi_complete(struct napi_struct *n);
* lookup @ napi_id in napi_hash table
* must be called under rcu_read_lock ( )
*/
extern struct napi_struct * napi_by_id ( unsigned int napi_id ) ;
struct napi_struct * napi_by_id ( unsigned int napi_id ) ;
/**
* napi_hash_add - add a NAPI to global hashtable
@ -463,7 +463,7 @@ extern struct napi_struct *napi_by_id(unsigned int napi_id);
*
* generate a new napi_id and store a @ napi under it in napi_hash
*/
extern void napi_hash_add ( struct napi_struct * napi ) ;
void napi_hash_add ( struct napi_struct * napi ) ;
/**
* napi_hash_del - remove a NAPI from global table
@ -472,7 +472,7 @@ extern void napi_hash_add(struct napi_struct *napi);
* Warning : caller must observe rcu grace period
* before freeing memory containing @ napi
*/
extern void napi_hash_del ( struct napi_struct * napi ) ;
void napi_hash_del ( struct napi_struct * napi ) ;
/**
* napi_disable - prevent NAPI from scheduling
@ -664,8 +664,8 @@ static inline void rps_reset_sock_flow(struct rps_sock_flow_table *table,
extern struct rps_sock_flow_table __rcu * rps_sock_flow_table ;
# ifdef CONFIG_RFS_ACCEL
extern bool rps_may_expire_flow ( struct net_device * dev , u16 rxq_index ,
u32 flow_id , u16 filter_id ) ;
bool rps_may_expire_flow ( struct net_device * dev , u16 rxq_index , u32 flow_id ,
u16 filter_id ) ;
# endif
/* 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,
f ( dev , & dev - > _tx [ i ] , arg ) ;
}
extern struct netdev_queue * netdev_pick_tx ( struct net_device * dev ,
struct sk_buff * skb ) ;
extern u16 __netdev_pick_tx ( struct net_device * dev , struct sk_buff * skb ) ;
struct netdev_queue * netdev_pick_tx ( struct net_device * dev ,
struct sk_buff * skb ) ;
u16 __netdev_pick_tx ( struct net_device * dev , struct sk_buff * skb ) ;
/*
* Net namespace inlines
@ -1683,8 +1683,8 @@ struct packet_offload {
# define NETDEV_CHANGEUPPER 0x0015
# define NETDEV_RESEND_IGMP 0x0016
extern int register_netdevice_notifier ( struct notifier_block * nb ) ;
extern int unregister_netdevice_notifier ( struct notifier_block * nb ) ;
int register_netdevice_notifier ( struct notifier_block * nb ) ;
int unregister_netdevice_notifier ( struct notifier_block * nb ) ;
struct netdev_notifier_info {
struct net_device * dev ;
@ -1707,9 +1707,9 @@ netdev_notifier_info_to_dev(const struct netdev_notifier_info *info)
return info - > dev ;
}
extern int call_netdevice_notifiers_info ( unsigned long val , struct net_device * dev ,
struct netdev_notifier_info * info ) ;
extern int call_netdevice_notifiers ( unsigned long val , struct net_device * dev ) ;
int call_netdevice_notifiers_info ( unsigned long val , struct net_device * dev ,
struct netdev_notifier_info * info ) ;
int call_netdevice_notifiers ( unsigned long val , struct net_device * dev ) ;
extern rwlock_t dev_base_lock ; /* Device list lock */
@ -1764,54 +1764,52 @@ static inline struct net_device *first_net_device_rcu(struct net *net)
return lh = = & net - > dev_base_head ? NULL : net_device_entry ( lh ) ;
}
extern int netdev_boot_setup_check ( struct net_device * dev ) ;
extern unsigned long netdev_boot_base ( const char * prefix , int unit ) ;
extern struct net_device * dev_getbyhwaddr_rcu ( struct net * net , unsigned short type ,
const char * hwaddr ) ;
extern struct net_device * dev_getfirstbyhwtype ( struct net * net , unsigned short type ) ;
extern struct net_device * __dev_getfirstbyhwtype ( struct net * net , unsigned short type ) ;
extern void dev_add_pack ( struct packet_type * pt ) ;
extern void dev_remove_pack ( struct packet_type * pt ) ;
extern void __dev_remove_pack ( struct packet_type * pt ) ;
extern void dev_add_offload ( struct packet_offload * po ) ;
extern void dev_remove_offload ( struct packet_offload * po ) ;
extern void __dev_remove_offload ( struct packet_offload * po ) ;
extern struct net_device * dev_get_by_flags_rcu ( struct net * net , unsigned short flags ,
unsigned short mask ) ;
extern struct net_device * dev_get_by_name ( struct net * net , const char * name ) ;
extern struct net_device * dev_get_by_name_rcu ( struct net * net , const char * name ) ;
extern struct net_device * __dev_get_by_name ( struct net * net , const char * name ) ;
extern int dev_alloc_name ( struct net_device * dev , const char * name ) ;
extern int dev_open ( struct net_device * dev ) ;
extern int dev_close ( struct net_device * dev ) ;
extern void dev_disable_lro ( struct net_device * dev ) ;
extern int dev_loopback_xmit ( struct sk_buff * newskb ) ;
extern int dev_queue_xmit ( struct sk_buff * skb ) ;
extern int register_netdevice ( struct net_device * dev ) ;
extern void unregister_netdevice_queue ( struct net_device * dev ,
struct list_head * head ) ;
extern void unregister_netdevice_many ( struct list_head * head ) ;
int netdev_boot_setup_check ( struct net_device * dev ) ;
unsigned long netdev_boot_base ( const char * prefix , int unit ) ;
struct net_device * dev_getbyhwaddr_rcu ( struct net * net , unsigned short type ,
const char * hwaddr ) ;
struct net_device * dev_getfirstbyhwtype ( struct net * net , unsigned short type ) ;
struct net_device * __dev_getfirstbyhwtype ( struct net * net , unsigned short type ) ;
void dev_add_pack ( struct packet_type * pt ) ;
void dev_remove_pack ( struct packet_type * pt ) ;
void __dev_remove_pack ( struct packet_type * pt ) ;
void dev_add_offload ( struct packet_offload * po ) ;
void dev_remove_offload ( struct packet_offload * po ) ;
void __dev_remove_offload ( struct packet_offload * po ) ;
struct net_device * dev_get_by_flags_rcu ( struct net * net , unsigned short flags ,
unsigned short mask ) ;
struct net_device * dev_get_by_name ( struct net * net , const char * name ) ;
struct net_device * dev_get_by_name_rcu ( struct net * net , const char * name ) ;
struct net_device * __dev_get_by_name ( struct net * net , const char * name ) ;
int dev_alloc_name ( struct net_device * dev , const char * name ) ;
int dev_open ( struct net_device * dev ) ;
int dev_close ( struct net_device * dev ) ;
void dev_disable_lro ( struct net_device * dev ) ;
int dev_loopback_xmit ( struct sk_buff * newskb ) ;
int dev_queue_xmit ( struct sk_buff * skb ) ;
int register_netdevice ( struct net_device * dev ) ;
void unregister_netdevice_queue ( struct net_device * dev , struct list_head * head ) ;
void unregister_netdevice_many ( struct list_head * head ) ;
static inline void unregister_netdevice ( struct net_device * dev )
{
unregister_netdevice_queue ( dev , NULL ) ;
}
extern int netdev_refcnt_read ( const struct net_device * dev ) ;
extern void free_netdev ( struct net_device * dev ) ;
extern void synchronize_net ( void ) ;
extern int init_dummy_netdev ( struct net_device * dev ) ;
int netdev_refcnt_read ( const struct net_device * dev ) ;
void free_netdev ( struct net_device * dev ) ;
void synchronize_net ( void ) ;
int init_dummy_netdev ( struct net_device * dev ) ;
extern struct net_device * dev_get_by_index ( struct net * net , int ifindex ) ;
extern struct net_device * __dev_get_by_index ( struct net * net , int ifindex ) ;
extern struct net_device * dev_get_by_index_rcu ( struct net * net , int ifindex ) ;
extern int netdev_get_name ( struct net * net , char * name , int ifindex ) ;
extern int dev_restart ( struct net_device * dev ) ;
struct net_device * dev_get_by_index ( struct net * net , int ifindex ) ;
struct net_device * __dev_get_by_index ( struct net * net , int ifindex ) ;
struct net_device * dev_get_by_index_rcu ( struct net * net , int ifindex ) ;
int netdev_get_name ( struct net * net , char * name , int ifindex ) ;
int dev_restart ( struct net_device * dev ) ;
# ifdef CONFIG_NETPOLL_TRAP
extern int netpoll_trap ( void ) ;
int netpoll_trap ( void ) ;
# endif
extern int skb_gro_receive ( struct sk_buff * * head ,
struct sk_buff * skb ) ;
int skb_gro_receive ( struct sk_buff * * head , struct sk_buff * skb ) ;
static inline unsigned int skb_gro_offset ( const struct sk_buff * skb )
{
@ -1883,7 +1881,7 @@ static inline int dev_parse_header(const struct sk_buff *skb,
}
typedef int gifconf_func_t ( struct net_device * dev , char __user * bufptr , int len ) ;
extern int register_gifconf ( unsigned int family , gifconf_func_t * gifconf ) ;
int register_gifconf ( unsigned int family , gifconf_func_t * gifconf ) ;
static inline int unregister_gifconf ( unsigned int family )
{
return register_gifconf ( family , NULL ) ;
@ -1954,7 +1952,7 @@ static inline void input_queue_tail_incr_save(struct softnet_data *sd,
DECLARE_PER_CPU_ALIGNED ( struct softnet_data , softnet_data ) ;
extern void __netif_schedule ( struct Qdisc * q ) ;
void __netif_schedule ( struct Qdisc * q ) ;
static inline void netif_schedule_queue ( struct netdev_queue * txq )
{
@ -2274,8 +2272,8 @@ static inline void netif_wake_subqueue(struct net_device *dev, u16 queue_index)
}
# ifdef CONFIG_XPS
extern int netif_set_xps_queue ( struct net_device * dev , struct cpumask * mask ,
u16 index ) ;
int netif_set_xps_queue ( struct net_device * dev , struct cpumask * mask ,
u16 index ) ;
# else
static inline int netif_set_xps_queue ( struct net_device * dev ,
struct cpumask * mask ,
@ -2306,12 +2304,10 @@ static inline bool netif_is_multiqueue(const struct net_device *dev)
return dev - > num_tx_queues > 1 ;
}
extern int netif_set_real_num_tx_queues ( struct net_device * dev ,
unsigned int txq ) ;
int netif_set_real_num_tx_queues ( struct net_device * dev , unsigned int txq ) ;
# ifdef CONFIG_RPS
extern int netif_set_real_num_rx_queues ( struct net_device * dev ,
unsigned int rxq ) ;
int netif_set_real_num_rx_queues ( struct net_device * dev , unsigned int rxq ) ;
# else
static inline int netif_set_real_num_rx_queues ( struct net_device * dev ,
unsigned int rxq )
@ -2338,28 +2334,27 @@ static inline int netif_copy_real_num_queues(struct net_device *to_dev,
}
# define DEFAULT_MAX_NUM_RSS_QUEUES (8)
extern int netif_get_num_default_rss_queues ( void ) ;
int netif_get_num_default_rss_queues ( void ) ;
/* Use this variant when it is known for sure that it
* is executing from hardware interrupt context or with hardware interrupts
* disabled .
*/
extern void dev_kfree_skb_irq ( struct sk_buff * skb ) ;
void dev_kfree_skb_irq ( struct sk_buff * skb ) ;
/* Use this variant in places where it could be invoked
* from either hardware interrupt or other context , with hardware interrupts
* either disabled or enabled .
*/
extern void dev_kfree_skb_any ( struct sk_buff * skb ) ;
void dev_kfree_skb_any ( struct sk_buff * skb ) ;
extern int netif_rx ( struct sk_buff * skb ) ;
extern int netif_rx_ni ( struct sk_buff * skb ) ;
extern int netif_receive_skb ( struct sk_buff * skb ) ;
extern gro_result_t napi_gro_receive ( struct napi_struct * napi ,
struct sk_buff * skb ) ;
extern void napi_gro_flush ( struct napi_struct * napi , bool flush_old ) ;
extern struct sk_buff * napi_get_frags ( struct napi_struct * napi ) ;
extern gro_result_t napi_gro_frags ( struct napi_struct * napi ) ;
int netif_rx ( struct sk_buff * skb ) ;
int netif_rx_ni ( struct sk_buff * skb ) ;
int netif_receive_skb ( struct sk_buff * skb ) ;
gro_result_t napi_gro_receive ( struct napi_struct * napi , struct sk_buff * skb ) ;
void napi_gro_flush ( struct napi_struct * napi , bool flush_old ) ;
struct sk_buff * napi_get_frags ( struct napi_struct * napi ) ;
gro_result_t napi_gro_frags ( struct napi_struct * napi ) ;
static inline void napi_free_frags ( struct napi_struct * napi )
{
@ -2367,42 +2362,36 @@ static inline void napi_free_frags(struct napi_struct *napi)
napi - > skb = NULL ;
}
extern int netdev_rx_handler_register ( struct net_device * dev ,
rx_handler_func_t * rx_handler ,
void * rx_handler_data ) ;
extern void netdev_rx_handler_unregister ( struct net_device * dev ) ;
extern bool dev_valid_name ( const char * name ) ;
extern int dev_ioctl ( struct net * net , unsigned int cmd , void __user * ) ;
extern int dev_ethtool ( struct net * net , struct ifreq * ) ;
extern unsigned int dev_get_flags ( const struct net_device * ) ;
extern int __dev_change_flags ( struct net_device * , unsigned int flags ) ;
extern int dev_change_flags ( struct net_device * , unsigned int ) ;
void __dev_notify_flags ( struct net_device * ,
unsigned int old_flags ,
unsigned int gchanges ) ;
extern int dev_change_name ( struct net_device * , const char * ) ;
extern int dev_set_alias ( struct net_device * , const char * , size_t ) ;
extern int dev_change_net_namespace ( struct net_device * ,
struct net * , const char * ) ;
extern int dev_set_mtu ( struct net_device * , int ) ;
extern void dev_set_group ( struct net_device * , int ) ;
extern int dev_set_mac_address ( struct net_device * ,
struct sockaddr * ) ;
extern int dev_change_carrier ( struct net_device * ,
bool new_carrier ) ;
extern int dev_get_phys_port_id ( struct net_device * dev ,
struct netdev_phys_port_id * ppid ) ;
extern int dev_hard_start_xmit ( struct sk_buff * skb ,
struct net_device * dev ,
struct netdev_queue * txq ) ;
extern int dev_forward_skb ( struct net_device * dev ,
struct sk_buff * skb ) ;
int netdev_rx_handler_register ( struct net_device * dev ,
rx_handler_func_t * rx_handler ,
void * rx_handler_data ) ;
void netdev_rx_handler_unregister ( struct net_device * dev ) ;
bool dev_valid_name ( const char * name ) ;
int dev_ioctl ( struct net * net , unsigned int cmd , void __user * ) ;
int dev_ethtool ( struct net * net , struct ifreq * ) ;
unsigned int dev_get_flags ( const struct net_device * ) ;
int __dev_change_flags ( struct net_device * , unsigned int flags ) ;
int dev_change_flags ( struct net_device * , unsigned int ) ;
void __dev_notify_flags ( struct net_device * , unsigned int old_flags ,
unsigned int gchanges ) ;
int dev_change_name ( struct net_device * , const char * ) ;
int dev_set_alias ( struct net_device * , const char * , size_t ) ;
int dev_change_net_namespace ( struct net_device * , struct net * , const char * ) ;
int dev_set_mtu ( struct net_device * , int ) ;
void dev_set_group ( struct net_device * , int ) ;
int dev_set_mac_address ( struct net_device * , struct sockaddr * ) ;
int dev_change_carrier ( struct net_device * , bool new_carrier ) ;
int dev_get_phys_port_id ( struct net_device * dev ,
struct netdev_phys_port_id * ppid ) ;
int dev_hard_start_xmit ( struct sk_buff * skb , struct net_device * dev ,
struct netdev_queue * txq ) ;
int dev_forward_skb ( struct net_device * dev , struct sk_buff * skb ) ;
extern int netdev_budget ;
/* Called by rtnetlink.c:rtnl_unlock() */
extern void netdev_run_todo ( void ) ;
void netdev_run_todo ( void ) ;
/**
* dev_put - release reference to device
@ -2435,9 +2424,9 @@ static inline void dev_hold(struct net_device *dev)
* kind of lower layer not just hardware media .
*/
extern void linkwatch_init_dev ( struct net_device * dev ) ;
extern void linkwatch_fire_event ( struct net_device * dev ) ;
extern void linkwatch_forget_dev ( struct net_device * dev ) ;
void linkwatch_init_dev ( struct net_device * dev ) ;
void linkwatch_fire_event ( struct net_device * dev ) ;
void linkwatch_forget_dev ( struct net_device * dev ) ;
/**
* netif_carrier_ok - test if carrier present
@ -2450,13 +2439,13 @@ static inline bool netif_carrier_ok(const struct net_device *dev)
return ! test_bit ( __LINK_STATE_NOCARRIER , & dev - > state ) ;
}
extern unsigned long dev_trans_start ( struct net_device * dev ) ;
unsigned long dev_trans_start ( struct net_device * dev ) ;
extern void __netdev_watchdog_up ( struct net_device * dev ) ;
void __netdev_watchdog_up ( struct net_device * dev ) ;
extern void netif_carrier_on ( struct net_device * dev ) ;
void netif_carrier_on ( struct net_device * dev ) ;
extern void netif_carrier_off ( struct net_device * dev ) ;
void netif_carrier_off ( struct net_device * dev ) ;
/**
* netif_dormant_on - mark device as dormant .
@ -2524,9 +2513,9 @@ static inline bool netif_device_present(struct net_device *dev)
return test_bit ( __LINK_STATE_PRESENT , & dev - > state ) ;
}
extern void netif_device_detach ( struct net_device * dev ) ;
void netif_device_detach ( struct net_device * dev ) ;
extern void netif_device_attach ( struct net_device * dev ) ;
void netif_device_attach ( struct net_device * dev ) ;
/*
* Network interface message level settings
@ -2735,98 +2724,93 @@ static inline void netif_addr_unlock_bh(struct net_device *dev)
/* These functions live elsewhere (drivers/net/net_init.c, but related) */
extern void ether_setup ( struct net_device * dev ) ;
void ether_setup ( struct net_device * dev ) ;
/* Support for loadable net-drivers */
extern struct net_device * alloc_netdev_mqs ( int sizeof_priv , const char * name ,
void ( * setup ) ( struct net_device * ) ,
unsigned int txqs , unsigned int rxqs ) ;
struct net_device * alloc_netdev_mqs ( int sizeof_priv , const char * name ,
void ( * setup ) ( struct net_device * ) ,
unsigned int txqs , unsigned int rxqs ) ;
# define alloc_netdev(sizeof_priv, name, setup) \
alloc_netdev_mqs ( sizeof_priv , name , setup , 1 , 1 )
# define alloc_netdev_mq(sizeof_priv, name, setup, count) \
alloc_netdev_mqs ( sizeof_priv , name , setup , count , count )
extern int register_netdev ( struct net_device * dev ) ;
extern void unregister_netdev ( struct net_device * dev ) ;
int register_netdev ( struct net_device * dev ) ;
void unregister_netdev ( struct net_device * dev ) ;
/* General hardware address lists handling functions */
extern int __hw_addr_add_multiple ( struct netdev_hw_addr_list * to_list ,
struct netdev_hw_addr_list * from_list ,
int addr_len , unsigned char addr_type ) ;
extern void __hw_addr_del_multiple ( struct netdev_hw_addr_list * to_list ,
struct netdev_hw_addr_list * from_list ,
int addr_len , unsigned char addr_type ) ;
extern int __hw_addr_sync ( struct netdev_hw_addr_list * to_list ,
struct netdev_hw_addr_list * from_list ,
int addr_len ) ;
extern void __hw_addr_unsync ( struct netdev_hw_addr_list * to_list ,
struct netdev_hw_addr_list * from_list ,
int addr_len ) ;
extern void __hw_addr_flush ( struct netdev_hw_addr_list * list ) ;
extern void __hw_addr_init ( struct netdev_hw_addr_list * list ) ;
int __hw_addr_add_multiple ( struct netdev_hw_addr_list * to_list ,
struct netdev_hw_addr_list * from_list ,
int addr_len , unsigned char addr_type ) ;
void __hw_addr_del_multiple ( struct netdev_hw_addr_list * to_list ,
struct netdev_hw_addr_list * from_list ,
int addr_len , unsigned char addr_type ) ;
int __hw_addr_sync ( struct netdev_hw_addr_list * to_list ,
struct netdev_hw_addr_list * from_list , int addr_len ) ;
void __hw_addr_unsync ( struct netdev_hw_addr_list * to_list ,
struct netdev_hw_addr_list * from_list , int addr_len ) ;
void __hw_addr_flush ( struct netdev_hw_addr_list * list ) ;
void __hw_addr_init ( struct netdev_hw_addr_list * list ) ;
/* Functions used for device addresses handling */
extern int dev_addr_add ( struct net_device * dev , const unsigned char * addr ,
unsigned char addr_type ) ;
extern int dev_addr_del ( struct net_device * dev , const unsigned char * addr ,
unsigned char addr_type ) ;
extern int dev_addr_add_multiple ( struct net_device * to_dev ,
struct net_device * from_dev ,
unsigned char addr_type ) ;
extern int dev_addr_del_multiple ( struct net_device * to_dev ,
struct net_device * from_dev ,
unsigned char addr_type ) ;
extern void dev_addr_flush ( struct net_device * dev ) ;
extern int dev_addr_init ( struct net_device * dev ) ;
int dev_addr_add ( struct net_device * dev , const unsigned char * addr ,
unsigned char addr_type ) ;
int dev_addr_del ( struct net_device * dev , const unsigned char * addr ,
unsigned char addr_type ) ;
int dev_addr_add_multiple ( struct net_device * to_dev ,
struct net_device * from_dev , unsigned char addr_type ) ;
int dev_addr_del_multiple ( struct net_device * to_dev ,
struct net_device * from_dev , unsigned char addr_type ) ;
void dev_addr_flush ( struct net_device * dev ) ;
int dev_addr_init ( struct net_device * dev ) ;
/* Functions used for unicast addresses handling */
extern int dev_uc_add ( struct net_device * dev , const unsigned char * addr ) ;
extern int dev_uc_add_excl ( struct net_device * dev , const unsigned char * addr ) ;
extern int dev_uc_del ( struct net_device * dev , const unsigned char * addr ) ;
extern int dev_uc_sync ( struct net_device * to , struct net_device * from ) ;
extern int dev_uc_sync_multiple ( struct net_device * to , struct net_device * from ) ;
extern void dev_uc_unsync ( struct net_device * to , struct net_device * from ) ;
extern void dev_uc_flush ( struct net_device * dev ) ;
extern void dev_uc_init ( struct net_device * dev ) ;
int dev_uc_add ( struct net_device * dev , const unsigned char * addr ) ;
int dev_uc_add_excl ( struct net_device * dev , const unsigned char * addr ) ;
int dev_uc_del ( struct net_device * dev , const unsigned char * addr ) ;
int dev_uc_sync ( struct net_device * to , struct net_device * from ) ;
int dev_uc_sync_multiple ( struct net_device * to , struct net_device * from ) ;
void dev_uc_unsync ( struct net_device * to , struct net_device * from ) ;
void dev_uc_flush ( struct net_device * dev ) ;
void dev_uc_init ( struct net_device * dev ) ;
/* Functions used for multicast addresses handling */
extern int dev_mc_add ( struct net_device * dev , const unsigned char * addr ) ;
extern int dev_mc_add_global ( struct net_device * dev , const unsigned char * addr ) ;
extern int dev_mc_add_excl ( struct net_device * dev , const unsigned char * addr ) ;
extern int dev_mc_del ( struct net_device * dev , const unsigned char * addr ) ;
extern int dev_mc_del_global ( struct net_device * dev , const unsigned char * addr ) ;
extern int dev_mc_sync ( struct net_device * to , struct net_device * from ) ;
extern int dev_mc_sync_multiple ( struct net_device * to , struct net_device * from ) ;
extern void dev_mc_unsync ( struct net_device * to , struct net_device * from ) ;
extern void dev_mc_flush ( struct net_device * dev ) ;
extern void dev_mc_init ( struct net_device * dev ) ;
int dev_mc_add ( struct net_device * dev , const unsigned char * addr ) ;
int dev_mc_add_global ( struct net_device * dev , const unsigned char * addr ) ;
int dev_mc_add_excl ( struct net_device * dev , const unsigned char * addr ) ;
int dev_mc_del ( struct net_device * dev , const unsigned char * addr ) ;
int dev_mc_del_global ( struct net_device * dev , const unsigned char * addr ) ;
int dev_mc_sync ( struct net_device * to , struct net_device * from ) ;
int dev_mc_sync_multiple ( struct net_device * to , struct net_device * from ) ;
void dev_mc_unsync ( struct net_device * to , struct net_device * from ) ;
void dev_mc_flush ( struct net_device * dev ) ;
void dev_mc_init ( struct net_device * dev ) ;
/* Functions used for secondary unicast and multicast support */
extern void dev_set_rx_mode ( struct net_device * dev ) ;
extern void __dev_set_rx_mode ( struct net_device * dev ) ;
extern int dev_set_promiscuity ( struct net_device * dev , int inc ) ;
extern int dev_set_allmulti ( struct net_device * dev , int inc ) ;
extern void netdev_state_change ( struct net_device * dev ) ;
extern void netdev_notify_peers ( struct net_device * dev ) ;
extern void netdev_features_change ( struct net_device * dev ) ;
void dev_set_rx_mode ( struct net_device * dev ) ;
void __dev_set_rx_mode ( struct net_device * dev ) ;
int dev_set_promiscuity ( struct net_device * dev , int inc ) ;
int dev_set_allmulti ( struct net_device * dev , int inc ) ;
void netdev_state_change ( struct net_device * dev ) ;
void netdev_notify_peers ( struct net_device * dev ) ;
void netdev_features_change ( struct net_device * dev ) ;
/* Load a device via the kmod */
extern void dev_load ( struct net * net , const char * name ) ;
extern struct rtnl_link_stats64 * dev_get_stats ( struct net_device * dev ,
struct rtnl_link_stats64 * storage ) ;
extern void netdev_stats_to_stats64 ( struct rtnl_link_stats64 * stats64 ,
const struct net_device_stats * netdev_stats ) ;
void dev_load ( struct net * net , const char * name ) ;
struct rtnl_link_stats64 * dev_get_stats ( struct net_device * dev ,
struct rtnl_link_stats64 * storage ) ;
void netdev_stats_to_stats64 ( struct rtnl_link_stats64 * stats64 ,
const struct net_device_stats * netdev_stats ) ;
extern int netdev_max_backlog ;
extern int netdev_tstamp_prequeue ;
extern int weight_p ;
extern int bpf_jit_enable ;
extern bool netdev_has_upper_dev ( struct net_device * dev ,
struct net_device * upper_dev ) ;
extern bool netdev_has_any_upper_dev ( struct net_device * dev ) ;
extern struct net_device * netdev_all_upper_get_next_dev_rcu ( struct net_device * dev ,
struct list_head * * iter ) ;
bool netdev_has_upper_dev ( struct net_device * dev , struct net_device * upper_dev ) ;
bool netdev_has_any_upper_dev ( struct net_device * dev ) ;
struct net_device * netdev_all_upper_get_next_dev_rcu ( struct net_device * dev ,
struct list_head * * iter ) ;
/* iterate through upper list, must be called under RCU read lock */
# 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
updev ; \
updev = netdev_all_upper_get_next_dev_rcu ( dev , & ( iter ) ) )
extern void * netdev_lower_get_next_private ( struct net_device * dev ,
struct list_head * * iter ) ;
extern void * netdev_lower_get_next_private_rcu ( struct net_device * dev ,
struct list_head * * iter ) ;
void * netdev_lower_get_next_private ( struct net_device * dev ,
struct list_head * * iter ) ;
void * netdev_lower_get_next_private_rcu ( struct net_device * dev ,
struct list_head * * iter ) ;
# define netdev_for_each_lower_private(dev, priv, iter) \
for ( iter = ( dev ) - > adj_list . lower . next , \
@ -2852,27 +2836,26 @@ extern void *netdev_lower_get_next_private_rcu(struct net_device *dev,
priv ; \
priv = netdev_lower_get_next_private_rcu ( dev , & ( iter ) ) )
extern void * netdev_adjacent_get_private ( struct list_head * adj_list ) ;
extern struct net_device * netdev_master_upper_dev_get ( struct net_device * dev ) ;
extern struct net_device * netdev_master_upper_dev_get_rcu ( struct net_device * dev ) ;
extern int netdev_upper_dev_link ( struct net_device * dev ,
void * netdev_adjacent_get_private ( struct list_head * adj_list ) ;
struct net_device * netdev_master_upper_dev_get ( struct net_device * dev ) ;
struct net_device * netdev_master_upper_dev_get_rcu ( struct net_device * dev ) ;
int netdev_upper_dev_link ( struct net_device * dev , struct net_device * upper_dev ) ;
int netdev_master_upper_dev_link ( struct net_device * dev ,
struct net_device * upper_dev ) ;
extern int netdev_master_upper_dev_link ( struct net_device * dev ,
struct net_device * upper_dev ) ;
extern int netdev_master_upper_dev_link_private ( struct net_device * dev ,
struct net_device * upper_dev ,
void * private ) ;
extern void netdev_upper_dev_unlink ( struct net_device * dev ,
struct net_device * upper_dev ) ;
extern void * netdev_lower_dev_get_private_rcu ( struct net_device * dev ,
struct net_device * lower_dev ) ;
extern void * netdev_lower_dev_get_private ( struct net_device * dev ,
struct net_device * lower_dev ) ;
extern int skb_checksum_help ( struct sk_buff * skb ) ;
extern struct sk_buff * __skb_gso_segment ( struct sk_buff * skb ,
netdev_features_t features , bool tx_path ) ;
extern struct sk_buff * skb_mac_gso_segment ( struct sk_buff * skb ,
netdev_features_t features ) ;
int netdev_master_upper_dev_link_private ( struct net_device * dev ,
struct net_device * upper_dev ,
void * private ) ;
void netdev_upper_dev_unlink ( struct net_device * dev ,
struct net_device * upper_dev ) ;
void * netdev_lower_dev_get_private_rcu ( struct net_device * dev ,
struct net_device * lower_dev ) ;
void * netdev_lower_dev_get_private ( struct net_device * dev ,
struct net_device * lower_dev ) ;
int skb_checksum_help ( struct sk_buff * skb ) ;
struct sk_buff * __skb_gso_segment ( struct sk_buff * skb ,
netdev_features_t features , bool tx_path ) ;
struct sk_buff * skb_mac_gso_segment ( struct sk_buff * skb ,
netdev_features_t features ) ;
static inline
struct 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,
}
# ifdef CONFIG_BUG
extern void netdev_rx_csum_fault ( struct net_device * dev ) ;
void netdev_rx_csum_fault ( struct net_device * dev ) ;
# else
static inline void netdev_rx_csum_fault ( struct net_device * dev )
{
}
# endif
/* rx skb timestamps */
extern void net_enable_timestamp ( void ) ;
extern void net_disable_timestamp ( void ) ;
void net_enable_timestamp ( void ) ;
void net_disable_timestamp ( void ) ;
# ifdef CONFIG_PROC_FS
extern int __init dev_proc_init ( void ) ;
int __init dev_proc_init ( void ) ;
# else
# define dev_proc_init() 0
# endif
extern int netdev_class_create_file ( struct class_attribute * class_attr ) ;
extern void netdev_class_remove_file ( struct class_attribute * class_attr ) ;
int netdev_class_create_file ( struct class_attribute * class_attr ) ;
void netdev_class_remove_file ( struct class_attribute * class_attr ) ;
extern struct kobj_ns_type_operations net_ns_type_operations ;
extern const char * netdev_drivername ( const struct net_device * dev ) ;
const char * netdev_drivername ( const struct net_device * dev ) ;
extern void linkwatch_run_queue ( void ) ;
void linkwatch_run_queue ( void ) ;
static inline netdev_features_t netdev_get_wanted_features (
struct net_device * dev )
@ -3009,22 +2992,22 @@ static inline const char *netdev_name(const struct net_device *dev)
return dev - > name ;
}
extern __printf ( 3 , 4 )
__printf ( 3 , 4 )
int netdev_printk ( const char * level , const struct net_device * dev ,
const char * format , . . . ) ;
extern __printf ( 2 , 3 )
__printf ( 2 , 3 )
int netdev_emerg ( const struct net_device * dev , const char * format , . . . ) ;
extern __printf ( 2 , 3 )
__printf ( 2 , 3 )
int netdev_alert ( const struct net_device * dev , const char * format , . . . ) ;
extern __printf ( 2 , 3 )
__printf ( 2 , 3 )
int netdev_crit ( const struct net_device * dev , const char * format , . . . ) ;
extern __printf ( 2 , 3 )
__printf ( 2 , 3 )
int netdev_err ( const struct net_device * dev , const char * format , . . . ) ;
extern __printf ( 2 , 3 )
__printf ( 2 , 3 )
int netdev_warn ( const struct net_device * dev , const char * format , . . . ) ;
extern __printf ( 2 , 3 )
__printf ( 2 , 3 )
int netdev_notice ( const struct net_device * dev , const char * format , . . . ) ;
extern __printf ( 2 , 3 )
__printf ( 2 , 3 )
int netdev_info ( const struct net_device * dev , const char * format , . . . ) ;
# define MODULE_ALIAS_NETDEV(device) \