Commit cb178190 authored by David S. Miller's avatar David S. Miller

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: default avatarDavid S. Miller <davem@davemloft.net>
parents 7b77d161 f629d208
...@@ -28,27 +28,24 @@ ...@@ -28,27 +28,24 @@
#include <asm/unaligned.h> #include <asm/unaligned.h>
#ifdef __KERNEL__ #ifdef __KERNEL__
extern __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev); __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev);
extern const struct header_ops eth_header_ops; extern const struct header_ops eth_header_ops;
extern int eth_header(struct sk_buff *skb, struct net_device *dev, int eth_header(struct sk_buff *skb, struct net_device *dev, unsigned short type,
unsigned short type, const void *daddr, const void *saddr, unsigned len);
const void *daddr, const void *saddr, unsigned len); int eth_rebuild_header(struct sk_buff *skb);
extern int eth_rebuild_header(struct sk_buff *skb); int eth_header_parse(const struct sk_buff *skb, unsigned char *haddr);
extern int eth_header_parse(const struct sk_buff *skb, unsigned char *haddr); int eth_header_cache(const struct neighbour *neigh, struct hh_cache *hh,
extern int eth_header_cache(const struct neighbour *neigh, struct hh_cache *hh, __be16 type); __be16 type);
extern void eth_header_cache_update(struct hh_cache *hh, void eth_header_cache_update(struct hh_cache *hh, const struct net_device *dev,
const struct net_device *dev, const unsigned char *haddr);
const unsigned char *haddr); int eth_prepare_mac_addr_change(struct net_device *dev, void *p);
extern int eth_prepare_mac_addr_change(struct net_device *dev, void *p); void eth_commit_mac_addr_change(struct net_device *dev, void *p);
extern void eth_commit_mac_addr_change(struct net_device *dev, void *p); int eth_mac_addr(struct net_device *dev, void *p);
extern int eth_mac_addr(struct net_device *dev, void *p); int eth_change_mtu(struct net_device *dev, int new_mtu);
extern int eth_change_mtu(struct net_device *dev, int new_mtu); int eth_validate_addr(struct net_device *dev);
extern int eth_validate_addr(struct net_device *dev);
struct net_device *alloc_etherdev_mqs(int sizeof_priv, unsigned int txqs,
extern struct net_device *alloc_etherdev_mqs(int sizeof_priv, unsigned int txqs,
unsigned int rxqs); unsigned int rxqs);
#define alloc_etherdev(sizeof_priv) alloc_etherdev_mq(sizeof_priv, 1) #define alloc_etherdev(sizeof_priv) alloc_etherdev_mq(sizeof_priv, 1)
#define alloc_etherdev_mq(sizeof_priv, count) alloc_etherdev_mqs(sizeof_priv, count, count) #define alloc_etherdev_mq(sizeof_priv, count) alloc_etherdev_mqs(sizeof_priv, count, count)
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
#include <linux/if_fc.h> #include <linux/if_fc.h>
#ifdef __KERNEL__ #ifdef __KERNEL__
extern struct net_device *alloc_fcdev(int sizeof_priv); struct net_device *alloc_fcdev(int sizeof_priv);
#endif #endif
#endif /* _LINUX_FCDEVICE_H */ #endif /* _LINUX_FCDEVICE_H */
...@@ -25,10 +25,9 @@ ...@@ -25,10 +25,9 @@
#include <linux/if_fddi.h> #include <linux/if_fddi.h>
#ifdef __KERNEL__ #ifdef __KERNEL__
extern __be16 fddi_type_trans(struct sk_buff *skb, __be16 fddi_type_trans(struct sk_buff *skb, struct net_device *dev);
struct net_device *dev); int fddi_change_mtu(struct net_device *dev, int new_mtu);
extern int fddi_change_mtu(struct net_device *dev, int new_mtu); struct net_device *alloc_fddidev(int sizeof_priv);
extern struct net_device *alloc_fddidev(int sizeof_priv);
#endif #endif
#endif /* _LINUX_FDDIDEVICE_H */ #endif /* _LINUX_FDDIDEVICE_H */
...@@ -31,11 +31,11 @@ struct hippi_cb { ...@@ -31,11 +31,11 @@ struct hippi_cb {
__u32 ifield; __u32 ifield;
}; };
extern __be16 hippi_type_trans(struct sk_buff *skb, struct net_device *dev); __be16 hippi_type_trans(struct sk_buff *skb, struct net_device *dev);
extern int hippi_change_mtu(struct net_device *dev, int new_mtu); int hippi_change_mtu(struct net_device *dev, int new_mtu);
extern int hippi_mac_addr(struct net_device *dev, void *p); int hippi_mac_addr(struct net_device *dev, void *p);
extern int hippi_neigh_setup_dev(struct net_device *dev, struct neigh_parms *p); int hippi_neigh_setup_dev(struct net_device *dev, struct neigh_parms *p);
extern struct net_device *alloc_hippi_dev(int sizeof_priv); struct net_device *alloc_hippi_dev(int sizeof_priv);
#endif #endif
#endif /* _LINUX_HIPPIDEVICE_H */ #endif /* _LINUX_HIPPIDEVICE_H */
...@@ -147,25 +147,27 @@ struct in_ifaddr { ...@@ -147,25 +147,27 @@ struct in_ifaddr {
unsigned long ifa_tstamp; /* updated timestamp */ unsigned long ifa_tstamp; /* updated timestamp */
}; };
extern int register_inetaddr_notifier(struct notifier_block *nb); int register_inetaddr_notifier(struct notifier_block *nb);
extern int unregister_inetaddr_notifier(struct notifier_block *nb); int unregister_inetaddr_notifier(struct notifier_block *nb);
extern void inet_netconf_notify_devconf(struct net *net, int type, int ifindex, void inet_netconf_notify_devconf(struct net *net, int type, int ifindex,
struct ipv4_devconf *devconf); struct ipv4_devconf *devconf);
extern struct net_device *__ip_dev_find(struct net *net, __be32 addr, bool devref); struct net_device *__ip_dev_find(struct net *net, __be32 addr, bool devref);
static inline struct net_device *ip_dev_find(struct net *net, __be32 addr) static inline struct net_device *ip_dev_find(struct net *net, __be32 addr)
{ {
return __ip_dev_find(net, addr, true); return __ip_dev_find(net, addr, true);
} }
extern int inet_addr_onlink(struct in_device *in_dev, __be32 a, __be32 b); int inet_addr_onlink(struct in_device *in_dev, __be32 a, __be32 b);
extern int devinet_ioctl(struct net *net, unsigned int cmd, void __user *); int devinet_ioctl(struct net *net, unsigned int cmd, void __user *);
extern void devinet_init(void); void devinet_init(void);
extern struct in_device *inetdev_by_index(struct net *, int); struct in_device *inetdev_by_index(struct net *, int);
extern __be32 inet_select_addr(const struct net_device *dev, __be32 dst, int scope); __be32 inet_select_addr(const struct net_device *dev, __be32 dst, int scope);
extern __be32 inet_confirm_addr(struct in_device *in_dev, __be32 dst, __be32 local, int scope); __be32 inet_confirm_addr(struct in_device *in_dev, __be32 dst, __be32 local,
extern struct in_ifaddr *inet_ifa_byprefix(struct in_device *in_dev, __be32 prefix, __be32 mask); int scope);
struct in_ifaddr *inet_ifa_byprefix(struct in_device *in_dev, __be32 prefix,
__be32 mask);
static __inline__ int inet_ifa_match(__be32 addr, struct in_ifaddr *ifa) static __inline__ int inet_ifa_match(__be32 addr, struct in_ifaddr *ifa)
{ {
...@@ -218,7 +220,7 @@ static inline struct in_device *__in_dev_get_rtnl(const struct net_device *dev) ...@@ -218,7 +220,7 @@ static inline struct in_device *__in_dev_get_rtnl(const struct net_device *dev)
return rtnl_dereference(dev->ip_ptr); return rtnl_dereference(dev->ip_ptr);
} }
extern void in_dev_finish_destroy(struct in_device *idev); void in_dev_finish_destroy(struct in_device *idev);
static inline void in_dev_put(struct in_device *idev) static inline void in_dev_put(struct in_device *idev)
{ {
......
...@@ -195,27 +195,23 @@ enum { ...@@ -195,27 +195,23 @@ enum {
SOCK_WAKE_URG, SOCK_WAKE_URG,
}; };
extern int sock_wake_async(struct socket *sk, int how, int band); int sock_wake_async(struct socket *sk, int how, int band);
extern int sock_register(const struct net_proto_family *fam); int sock_register(const struct net_proto_family *fam);
extern void sock_unregister(int family); void sock_unregister(int family);
extern int __sock_create(struct net *net, int family, int type, int proto, int __sock_create(struct net *net, int family, int type, int proto,
struct socket **res, int kern); struct socket **res, int kern);
extern int sock_create(int family, int type, int proto, int sock_create(int family, int type, int proto, struct socket **res);
struct socket **res); int sock_create_kern(int family, int type, int proto, struct socket **res);
extern int sock_create_kern(int family, int type, int proto, int sock_create_lite(int family, int type, int proto, struct socket **res);
struct socket **res); void sock_release(struct socket *sock);
extern int sock_create_lite(int family, int type, int proto, int sock_sendmsg(struct socket *sock, struct msghdr *msg, size_t len);
struct socket **res); int sock_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
extern void sock_release(struct socket *sock); int flags);
extern int sock_sendmsg(struct socket *sock, struct msghdr *msg, struct file *sock_alloc_file(struct socket *sock, int flags, const char *dname);
size_t len); struct socket *sockfd_lookup(int fd, int *err);
extern int sock_recvmsg(struct socket *sock, struct msghdr *msg, struct socket *sock_from_file(struct file *file, int *err);
size_t size, int flags);
extern struct file *sock_alloc_file(struct socket *sock, int flags, const char *dname);
extern struct socket *sockfd_lookup(int fd, int *err);
extern struct socket *sock_from_file(struct file *file, int *err);
#define sockfd_put(sock) fput(sock->file) #define sockfd_put(sock) fput(sock->file)
extern int net_ratelimit(void); int net_ratelimit(void);
#define net_ratelimited_function(function, ...) \ #define net_ratelimited_function(function, ...) \
do { \ do { \
...@@ -243,32 +239,28 @@ do { \ ...@@ -243,32 +239,28 @@ do { \
#define net_random() prandom_u32() #define net_random() prandom_u32()
#define net_srandom(seed) prandom_seed((__force u32)(seed)) #define net_srandom(seed) prandom_seed((__force u32)(seed))
extern int kernel_sendmsg(struct socket *sock, struct msghdr *msg, int kernel_sendmsg(struct socket *sock, struct msghdr *msg, struct kvec *vec,
struct kvec *vec, size_t num, size_t len); size_t num, size_t len);
extern int kernel_recvmsg(struct socket *sock, struct msghdr *msg, int kernel_recvmsg(struct socket *sock, struct msghdr *msg, struct kvec *vec,
struct kvec *vec, size_t num, size_t num, size_t len, int flags);
size_t len, int flags);
extern int kernel_bind(struct socket *sock, struct sockaddr *addr, int kernel_bind(struct socket *sock, struct sockaddr *addr, int addrlen);
int addrlen); int kernel_listen(struct socket *sock, int backlog);
extern int kernel_listen(struct socket *sock, int backlog); int kernel_accept(struct socket *sock, struct socket **newsock, int flags);
extern int kernel_accept(struct socket *sock, struct socket **newsock, int kernel_connect(struct socket *sock, struct sockaddr *addr, int addrlen,
int flags); int flags);
extern int kernel_connect(struct socket *sock, struct sockaddr *addr, int kernel_getsockname(struct socket *sock, struct sockaddr *addr,
int addrlen, int flags); int *addrlen);
extern int kernel_getsockname(struct socket *sock, struct sockaddr *addr, int kernel_getpeername(struct socket *sock, struct sockaddr *addr,
int *addrlen); int *addrlen);
extern int kernel_getpeername(struct socket *sock, struct sockaddr *addr, int kernel_getsockopt(struct socket *sock, int level, int optname, char *optval,
int *addrlen); int *optlen);
extern int kernel_getsockopt(struct socket *sock, int level, int optname, int kernel_setsockopt(struct socket *sock, int level, int optname, char *optval,
char *optval, int *optlen); unsigned int optlen);
extern int kernel_setsockopt(struct socket *sock, int level, int optname, int kernel_sendpage(struct socket *sock, struct page *page, int offset,
char *optval, unsigned int optlen); size_t size, int flags);
extern int kernel_sendpage(struct socket *sock, struct page *page, int offset, int kernel_sock_ioctl(struct socket *sock, int cmd, unsigned long arg);
size_t size, int flags); int kernel_sock_shutdown(struct socket *sock, enum sock_shutdown_cmd how);
extern int kernel_sock_ioctl(struct socket *sock, int cmd, unsigned long arg);
extern int kernel_sock_shutdown(struct socket *sock,
enum sock_shutdown_cmd how);
#define MODULE_ALIAS_NETPROTO(proto) \ #define MODULE_ALIAS_NETPROTO(proto) \
MODULE_ALIAS("net-pf-" __stringify(proto)) MODULE_ALIAS("net-pf-" __stringify(proto))
......
...@@ -60,8 +60,8 @@ struct wireless_dev; ...@@ -60,8 +60,8 @@ struct wireless_dev;
#define SET_ETHTOOL_OPS(netdev,ops) \ #define SET_ETHTOOL_OPS(netdev,ops) \
( (netdev)->ethtool_ops = (ops) ) ( (netdev)->ethtool_ops = (ops) )
extern void netdev_set_default_ethtool_ops(struct net_device *dev, void netdev_set_default_ethtool_ops(struct net_device *dev,
const struct ethtool_ops *ops); const struct ethtool_ops *ops);
/* hardware address assignment types */ /* hardware address assignment types */
#define NET_ADDR_PERM 0 /* address is permanent (default) */ #define NET_ADDR_PERM 0 /* address is permanent (default) */
...@@ -298,7 +298,7 @@ struct netdev_boot_setup { ...@@ -298,7 +298,7 @@ struct netdev_boot_setup {
}; };
#define NETDEV_BOOT_SETUP_MAX 8 #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 * Structure for NAPI scheduling similar to tasklet but with weighting
...@@ -394,7 +394,7 @@ enum rx_handler_result { ...@@ -394,7 +394,7 @@ enum rx_handler_result {
typedef enum rx_handler_result rx_handler_result_t; typedef enum rx_handler_result rx_handler_result_t;
typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **pskb); 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) static inline bool napi_disable_pending(struct napi_struct *n)
{ {
...@@ -445,8 +445,8 @@ static inline bool napi_reschedule(struct napi_struct *napi) ...@@ -445,8 +445,8 @@ static inline bool napi_reschedule(struct napi_struct *napi)
* *
* Mark NAPI processing as complete. * Mark NAPI processing as complete.
*/ */
extern void __napi_complete(struct napi_struct *n); void __napi_complete(struct napi_struct *n);
extern void napi_complete(struct napi_struct *n); void napi_complete(struct napi_struct *n);
/** /**
* napi_by_id - lookup a NAPI by napi_id * napi_by_id - lookup a NAPI by napi_id
...@@ -455,7 +455,7 @@ extern void napi_complete(struct napi_struct *n); ...@@ -455,7 +455,7 @@ extern void napi_complete(struct napi_struct *n);
* lookup @napi_id in napi_hash table * lookup @napi_id in napi_hash table
* must be called under rcu_read_lock() * 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 * 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,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 * 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 * napi_hash_del - remove a NAPI from global table
...@@ -472,7 +472,7 @@ extern void napi_hash_add(struct napi_struct *napi); ...@@ -472,7 +472,7 @@ extern void napi_hash_add(struct napi_struct *napi);
* Warning: caller must observe rcu grace period * Warning: caller must observe rcu grace period
* before freeing memory containing @napi * 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 * napi_disable - prevent NAPI from scheduling
...@@ -664,8 +664,8 @@ static inline void rps_reset_sock_flow(struct rps_sock_flow_table *table, ...@@ -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; extern struct rps_sock_flow_table __rcu *rps_sock_flow_table;
#ifdef CONFIG_RFS_ACCEL #ifdef CONFIG_RFS_ACCEL
extern bool rps_may_expire_flow(struct net_device *dev, u16 rxq_index, bool rps_may_expire_flow(struct net_device *dev, u16 rxq_index, u32 flow_id,
u32 flow_id, u16 filter_id); u16 filter_id);
#endif #endif
/* This structure contains an instance of an RX queue. */ /* 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,9 +1497,9 @@ static inline void netdev_for_each_tx_queue(struct net_device *dev,
f(dev, &dev->_tx[i], arg); f(dev, &dev->_tx[i], arg);
} }
extern struct netdev_queue *netdev_pick_tx(struct net_device *dev, struct netdev_queue *netdev_pick_tx(struct net_device *dev,
struct sk_buff *skb); struct sk_buff *skb);
extern u16 __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 * Net namespace inlines
...@@ -1683,8 +1683,8 @@ struct packet_offload { ...@@ -1683,8 +1683,8 @@ struct packet_offload {
#define NETDEV_CHANGEUPPER 0x0015 #define NETDEV_CHANGEUPPER 0x0015
#define NETDEV_RESEND_IGMP 0x0016 #define NETDEV_RESEND_IGMP 0x0016
extern int register_netdevice_notifier(struct notifier_block *nb); int register_netdevice_notifier(struct notifier_block *nb);
extern int unregister_netdevice_notifier(struct notifier_block *nb); int unregister_netdevice_notifier(struct notifier_block *nb);
struct netdev_notifier_info { struct netdev_notifier_info {
struct net_device *dev; struct net_device *dev;
...@@ -1707,9 +1707,9 @@ netdev_notifier_info_to_dev(const struct netdev_notifier_info *info) ...@@ -1707,9 +1707,9 @@ netdev_notifier_info_to_dev(const struct netdev_notifier_info *info)
return info->dev; return info->dev;
} }
extern int call_netdevice_notifiers_info(unsigned long val, struct net_device *dev, int call_netdevice_notifiers_info(unsigned long val, struct net_device *dev,
struct netdev_notifier_info *info); struct netdev_notifier_info *info);
extern int call_netdevice_notifiers(unsigned long val, struct net_device *dev); int call_netdevice_notifiers(unsigned long val, struct net_device *dev);
extern rwlock_t dev_base_lock; /* Device list lock */ 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) ...@@ -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); return lh == &net->dev_base_head ? NULL : net_device_entry(lh);
} }
extern int netdev_boot_setup_check(struct net_device *dev); int netdev_boot_setup_check(struct net_device *dev);
extern unsigned long netdev_boot_base(const char *prefix, int unit); unsigned long netdev_boot_base(const char *prefix, int unit);
extern struct net_device *dev_getbyhwaddr_rcu(struct net *net, unsigned short type, struct net_device *dev_getbyhwaddr_rcu(struct net *net, unsigned short type,
const char *hwaddr); const char *hwaddr);
extern struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type); struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type);
extern struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short type); struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short type);
extern void dev_add_pack(struct packet_type *pt); void dev_add_pack(struct packet_type *pt);
extern void dev_remove_pack(struct packet_type *pt); void dev_remove_pack(struct packet_type *pt);
extern void __dev_remove_pack(struct packet_type *pt); void __dev_remove_pack(struct packet_type *pt);
extern void dev_add_offload(struct packet_offload *po); void dev_add_offload(struct packet_offload *po);
extern void dev_remove_offload(struct packet_offload *po); void dev_remove_offload(struct packet_offload *po);
extern void __dev_remove_offload(struct packet_offload *po); void __dev_remove_offload(struct packet_offload *po);
extern struct net_device *dev_get_by_flags_rcu(struct net *net, unsigned short flags, struct net_device *dev_get_by_flags_rcu(struct net *net, unsigned short flags,
unsigned short mask); unsigned short mask);
extern struct net_device *dev_get_by_name(struct net *net, const char *name); 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); 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); 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); int dev_alloc_name(struct net_device *dev, const char *name);
extern int dev_open(struct net_device *dev); int dev_open(struct net_device *dev);
extern int dev_close(struct net_device *dev); int dev_close(struct net_device *dev);
extern void dev_disable_lro(struct net_device *dev); void dev_disable_lro(struct net_device *dev);
extern int dev_loopback_xmit(struct sk_buff *newskb); int dev_loopback_xmit(struct sk_buff *newskb);
extern int dev_queue_xmit(struct sk_buff *skb); int dev_queue_xmit(struct sk_buff *skb);
extern int register_netdevice(struct net_device *dev); int register_netdevice(struct net_device *dev);
extern void unregister_netdevice_queue(struct net_device *dev, void unregister_netdevice_queue(struct net_device *dev, struct list_head *head);
struct list_head *head); void unregister_netdevice_many(struct list_head *head);
extern void unregister_netdevice_many(struct list_head *head);
static inline void unregister_netdevice(struct net_device *dev) static inline void unregister_netdevice(struct net_device *dev)
{ {
unregister_netdevice_queue(dev, NULL); unregister_netdevice_queue(dev, NULL);
} }
extern int netdev_refcnt_read(const struct net_device *dev); int netdev_refcnt_read(const struct net_device *dev);
extern void free_netdev(struct net_device *dev); void free_netdev(struct net_device *dev);
extern void synchronize_net(void); void synchronize_net(void);
extern int init_dummy_netdev(struct net_device *dev); int init_dummy_netdev(struct net_device *dev);
extern struct net_device *dev_get_by_index(struct net *net, int ifindex); 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); 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); 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); int netdev_get_name(struct net *net, char *name, int ifindex);
extern int dev_restart(struct net_device *dev); int dev_restart(struct net_device *dev);
#ifdef CONFIG_NETPOLL_TRAP #ifdef CONFIG_NETPOLL_TRAP
extern int netpoll_trap(void); int netpoll_trap(void);
#endif #endif
extern int skb_gro_receive(struct sk_buff **head, int skb_gro_receive(struct sk_buff **head, struct sk_buff *skb);
struct sk_buff *skb);
static inline unsigned int skb_gro_offset(const 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, ...@@ -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); 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) static inline int unregister_gifconf(unsigned int family)
{ {
return register_gifconf(family, NULL); return register_gifconf(family, NULL);
...@@ -1954,7 +1952,7 @@ static inline void input_queue_tail_incr_save(struct softnet_data *sd, ...@@ -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); 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) 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) ...@@ -2274,8 +2272,8 @@ static inline void netif_wake_subqueue(struct net_device *dev, u16 queue_index)
} }
#ifdef CONFIG_XPS #ifdef CONFIG_XPS
extern int netif_set_xps_queue(struct net_device *dev, struct cpumask *mask, int netif_set_xps_queue(struct net_device *dev, struct cpumask *mask,
u16 index); u16 index);
#else #else
static inline int netif_set_xps_queue(struct net_device *dev, static inline int netif_set_xps_queue(struct net_device *dev,
struct cpumask *mask, struct cpumask *mask,
...@@ -2306,12 +2304,10 @@ static inline bool netif_is_multiqueue(const struct net_device *dev) ...@@ -2306,12 +2304,10 @@ static inline bool netif_is_multiqueue(const struct net_device *dev)
return dev->num_tx_queues > 1; return dev->num_tx_queues > 1;
} }
extern int netif_set_real_num_tx_queues(struct net_device *dev, int netif_set_real_num_tx_queues(struct net_device *dev, unsigned int txq);
unsigned int txq);
#ifdef CONFIG_RPS #ifdef CONFIG_RPS
extern int netif_set_real_num_rx_queues(struct net_device *dev, int netif_set_real_num_rx_queues(struct net_device *dev, unsigned int rxq);
unsigned int rxq);
#else #else
static inline int netif_set_real_num_rx_queues(struct net_device *dev, static inline int netif_set_real_num_rx_queues(struct net_device *dev,
unsigned int rxq) unsigned int rxq)
...@@ -2338,28 +2334,27 @@ static inline int netif_copy_real_num_queues(struct net_device *to_dev, ...@@ -2338,28 +2334,27 @@ static inline int netif_copy_real_num_queues(struct net_device *to_dev,
} }
#define DEFAULT_MAX_NUM_RSS_QUEUES (8) #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 /* Use this variant when it is known for sure that it
* is executing from hardware interrupt context or with hardware interrupts * is executing from hardware interrupt context or with hardware interrupts
* disabled. * 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 /* Use this variant in places where it could be invoked
* from either hardware interrupt or other context, with hardware interrupts * from either hardware interrupt or other context, with hardware interrupts
* either disabled or enabled. * 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); int netif_rx(struct sk_buff *skb);
extern int netif_rx_ni(struct sk_buff *skb); int netif_rx_ni(struct sk_buff *skb);
extern int netif_receive_skb(struct sk_buff *skb); int netif_receive_skb(struct sk_buff *skb);
extern gro_result_t napi_gro_receive(struct napi_struct *napi, gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb);
struct sk_buff *skb); void napi_gro_flush(struct napi_struct *napi, bool flush_old);
extern void napi_gro_flush(struct napi_struct *napi, bool flush_old); struct sk_buff *napi_get_frags(struct napi_struct *napi);
extern struct sk_buff * napi_get_frags(struct napi_struct *napi); gro_result_t napi_gro_frags(struct napi_struct *napi);
extern gro_result_t napi_gro_frags(struct napi_struct *napi);
static inline void napi_free_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) ...@@ -2367,42 +2362,36 @@ static inline void napi_free_frags(struct napi_struct *napi)
napi->skb = NULL; napi->skb = NULL;
} }
extern int netdev_rx_handler_register(struct net_device *dev, int netdev_rx_handler_register(struct net_device *dev,
rx_handler_func_t *rx_handler, rx_handler_func_t *rx_handler,
void *rx_handler_data); void *rx_handler_data);
extern void netdev_rx_handler_unregister(struct net_device *dev); void netdev_rx_handler_unregister(struct net_device *dev);
extern bool dev_valid_name(const char *name); bool dev_valid_name(const char *name);
extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *); int dev_ioctl(struct net *net, unsigned int cmd, void __user *);
extern int dev_ethtool(struct net *net, struct ifreq *); int dev_ethtool(struct net *net, struct ifreq *);
extern unsigned int dev_get_flags(const struct net_device *); unsigned int dev_get_flags(const struct net_device *);
extern int __dev_change_flags(struct net_device *, unsigned int flags); int __dev_change_flags(struct net_device *, unsigned int flags);
extern int dev_change_flags(struct net_device *, unsigned int); int dev_change_flags(struct net_device *, unsigned int);
void __dev_notify_flags(struct net_device *, void __dev_notify_flags(struct net_device *, unsigned int old_flags,
unsigned int old_flags, unsigned int gchanges);
unsigned int gchanges); int dev_change_name(struct net_device *, const char *);
extern int dev_change_name(struct net_device *, const char *); int dev_set_alias(struct net_device *, const char *, size_t);
extern int dev_set_alias(struct net_device *, const char *, size_t); int dev_change_net_namespace(struct net_device *, struct net *, const char *);
extern int dev_change_net_namespace(struct net_device *, int dev_set_mtu(struct net_device *, int);
struct net *, const char *); void dev_set_group(struct net_device *, int);
extern int dev_set_mtu(struct net_device *, int); int dev_set_mac_address(struct net_device *, struct sockaddr *);
extern void dev_set_group(struct net_device *, int); int dev_change_carrier(struct net_device *, bool new_carrier);
extern int dev_set_mac_address(struct net_device *, int dev_get_phys_port_id(struct net_device *dev,
struct sockaddr *); struct netdev_phys_port_id *ppid);
extern int dev_change_carrier(struct net_device *, int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
bool new_carrier); struct netdev_queue *txq);
extern int dev_get_phys_port_id(struct net_device *dev, int dev_forward_skb(struct net_device *dev, struct sk_buff *skb);
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);
extern int netdev_budget; extern int netdev_budget;
/* Called by rtnetlink.c:rtnl_unlock() */ /* Called by rtnetlink.c:rtnl_unlock() */
extern void netdev_run_todo(void); void netdev_run_todo(void);
/** /**
* dev_put - release reference to device * dev_put - release reference to device
...@@ -2435,9 +2424,9 @@ static inline void dev_hold(struct net_device *dev) ...@@ -2435,9 +2424,9 @@ static inline void dev_hold(struct net_device *dev)
* kind of lower layer not just hardware media. * kind of lower layer not just hardware media.
*/ */
extern void linkwatch_init_dev(struct net_device *dev); void linkwatch_init_dev(struct net_device *dev);
extern void linkwatch_fire_event(struct net_device *dev); void linkwatch_fire_event(struct net_device *dev);
extern void linkwatch_forget_dev(struct net_device *dev); void linkwatch_forget_dev(struct net_device *dev);
/** /**
* netif_carrier_ok - test if carrier present * netif_carrier_ok - test if carrier present
...@@ -2450,13 +2439,13 @@ static inline bool netif_carrier_ok(const struct net_device *dev) ...@@ -2450,13 +2439,13 @@ static inline bool netif_carrier_ok(const struct net_device *dev)
return !test_bit(__LINK_STATE_NOCARRIER, &dev->state); 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. * netif_dormant_on - mark device as dormant.
...@@ -2524,9 +2513,9 @@ static inline bool netif_device_present(struct net_device *dev) ...@@ -2524,9 +2513,9 @@ static inline bool netif_device_present(struct net_device *dev)
return test_bit(__LINK_STATE_PRESENT, &dev->state); 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 * Network interface message level settings
...@@ -2735,98 +2724,93 @@ static inline void netif_addr_unlock_bh(struct net_device *dev) ...@@ -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) */ /* 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 */ /* Support for loadable net-drivers */
extern struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name, struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name,
void (*setup)(struct net_device *), void (*setup)(struct net_device *),
unsigned int txqs, unsigned int rxqs); unsigned int txqs, unsigned int rxqs);
#define alloc_netdev(sizeof_priv, name, setup) \ #define alloc_netdev(sizeof_priv, name, setup) \
alloc_netdev_mqs(sizeof_priv, name, setup, 1, 1) alloc_netdev_mqs(sizeof_priv, name, setup, 1, 1)
#define alloc_netdev_mq(sizeof_priv, name, setup, count) \ #define alloc_netdev_mq(sizeof_priv, name, setup, count) \
alloc_netdev_mqs(sizeof_priv, name, setup, count, count) alloc_netdev_mqs(sizeof_priv, name, setup, count, count)
extern int register_netdev(struct net_device *dev); int register_netdev(struct net_device *dev);
extern void unregister_netdev(struct net_device *dev); void unregister_netdev(struct net_device *dev);
/* General hardware address lists handling functions */ /* General hardware address lists handling functions */
extern int __hw_addr_add_multiple(struct netdev_hw_addr_list *to_list, int __hw_addr_add_multiple(struct netdev_hw_addr_list *to_list,
struct netdev_hw_addr_list *from_list, struct netdev_hw_addr_list *from_list,
int addr_len, unsigned char addr_type); int addr_len, unsigned char addr_type);
extern void __hw_addr_del_multiple(struct netdev_hw_addr_list *to_list, void __hw_addr_del_multiple(struct netdev_hw_addr_list *to_list,
struct netdev_hw_addr_list *from_list, struct netdev_hw_addr_list *from_list,
int addr_len, unsigned char addr_type); int addr_len, unsigned char addr_type);
extern int __hw_addr_sync(struct netdev_hw_addr_list *to_list, int __hw_addr_sync(struct netdev_hw_addr_list *to_list,
struct netdev_hw_addr_list *from_list, struct netdev_hw_addr_list *from_list, int addr_len);
int addr_len); void __hw_addr_unsync(struct netdev_hw_addr_list *to_list,
extern void __hw_addr_unsync(struct netdev_hw_addr_list *to_list, struct netdev_hw_addr_list *from_list, int addr_len);
struct netdev_hw_addr_list *from_list, void __hw_addr_flush(struct netdev_hw_addr_list *list);
int addr_len); void __hw_addr_init(struct netdev_hw_addr_list *list);
extern void __hw_addr_flush(struct netdev_hw_addr_list *list);
extern void __hw_addr_init(struct netdev_hw_addr_list *list);
/* Functions used for device addresses handling */ /* Functions used for device addresses handling */
extern int dev_addr_add(struct net_device *dev, const unsigned char *addr, int dev_addr_add(struct net_device *dev, const unsigned char *addr,
unsigned char addr_type); unsigned char addr_type);
extern int dev_addr_del(struct net_device *dev, const unsigned char *addr, int dev_addr_del(struct net_device *dev, const unsigned char *addr,
unsigned char addr_type); unsigned char addr_type);
extern int dev_addr_add_multiple(struct net_device *to_dev, int dev_addr_add_multiple(struct net_device *to_dev,
struct net_device *from_dev, struct net_device *from_dev, unsigned char addr_type);
unsigned char addr_type); int dev_addr_del_multiple(struct net_device *to_dev,
extern int dev_addr_del_multiple(struct net_device *to_dev, struct net_device *from_dev, unsigned char addr_type);
struct net_device *from_dev, void dev_addr_flush(struct net_device *dev);
unsigned char addr_type); int dev_addr_init(struct net_device *dev);
extern void dev_addr_flush(struct net_device *dev);
extern int dev_addr_init(struct net_device *dev);
/* Functions used for unicast addresses handling */ /* Functions used for unicast addresses handling */
extern int dev_uc_add(struct net_device *dev, const unsigned char *addr); 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); 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); 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); 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); 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); void dev_uc_unsync(struct net_device *to, struct net_device *from);
extern void dev_uc_flush(struct net_device *dev); void dev_uc_flush(struct net_device *dev);
extern void dev_uc_init(struct net_device *dev); void dev_uc_init(struct net_device *dev);
/* Functions used for multicast addresses handling */ /* Functions used for multicast addresses handling */
extern int dev_mc_add(struct net_device *dev, const unsigned char *addr); 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); 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); 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); 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); 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); 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); 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); void dev_mc_unsync(struct net_device *to, struct net_device *from);
extern void dev_mc_flush(struct net_device *dev); void dev_mc_flush(struct net_device *dev);
extern void dev_mc_init(struct net_device *dev); void dev_mc_init(struct net_device *dev);
/* Functions used for secondary unicast and multicast support */ /* Functions used for secondary unicast and multicast support */
extern void dev_set_rx_mode(struct net_device *dev); void dev_set_rx_mode(struct net_device *dev);
extern void __dev_set_rx_mode(struct net_device *dev); void __dev_set_rx_mode(struct net_device *dev);
extern int dev_set_promiscuity(struct net_device *dev, int inc); int dev_set_promiscuity(struct net_device *dev, int inc);
extern int dev_set_allmulti(struct net_device *dev, int inc); int dev_set_allmulti(struct net_device *dev, int inc);
extern void netdev_state_change(struct net_device *dev); void netdev_state_change(struct net_device *dev);
extern void netdev_notify_peers(struct net_device *dev); void netdev_notify_peers(struct net_device *dev);
extern void netdev_features_change(struct net_device *dev); void netdev_features_change(struct net_device *dev);
/* Load a device via the kmod */ /* Load a device via the kmod */
extern void dev_load(struct net *net, const char *name); 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 *dev_get_stats(struct net_device *dev,
struct rtnl_link_stats64 *storage); struct rtnl_link_stats64 *storage);
extern void netdev_stats_to_stats64(struct rtnl_link_stats64 *stats64, void netdev_stats_to_stats64(struct rtnl_link_stats64 *stats64,
const struct net_device_stats *netdev_stats); const struct net_device_stats *netdev_stats);
extern int netdev_max_backlog; extern int netdev_max_backlog;
extern int netdev_tstamp_prequeue; extern int netdev_tstamp_prequeue;
extern int weight_p; extern int weight_p;
extern int bpf_jit_enable; extern int bpf_jit_enable;
extern bool netdev_has_upper_dev(struct net_device *dev, bool netdev_has_upper_dev(struct net_device *dev, struct net_device *upper_dev);
struct net_device *upper_dev); bool netdev_has_any_upper_dev(struct net_device *dev);
extern bool netdev_has_any_upper_dev(struct net_device *dev); struct net_device *netdev_all_upper_get_next_dev_rcu(struct net_device *dev,
extern struct net_device *netdev_all_upper_get_next_dev_rcu(struct net_device *dev, struct list_head **iter);
struct list_head **iter);
/* iterate through upper list, must be called under RCU read lock */ /* iterate through upper list, must be called under RCU read lock */
#define netdev_for_each_all_upper_dev_rcu(dev, updev, iter) \ #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,10 +2819,10 @@ extern struct net_device *netdev_all_upper_get_next_dev_rcu(struct net_device *d
updev; \ updev; \
updev = netdev_all_upper_get_next_dev_rcu(dev, &(iter))) updev = netdev_all_upper_get_next_dev_rcu(dev, &(iter)))
extern void *netdev_lower_get_next_private(struct net_device *dev, void *netdev_lower_get_next_private(struct net_device *dev,
struct list_head **iter); struct list_head **iter);
extern void *netdev_lower_get_next_private_rcu(struct net_device *dev, void *netdev_lower_get_next_private_rcu(struct net_device *dev,
struct list_head **iter); struct list_head **iter);
#define netdev_for_each_lower_private(dev, priv, iter) \ #define netdev_for_each_lower_private(dev, priv, iter) \
for (iter = (dev)->adj_list.lower.next, \ for (iter = (dev)->adj_list.lower.next, \
...@@ -2852,27 +2836,26 @@ extern void *netdev_lower_get_next_private_rcu(struct net_device *dev, ...@@ -2852,27 +2836,26 @@ extern void *netdev_lower_get_next_private_rcu(struct net_device *dev,
priv; \ priv; \
priv = netdev_lower_get_next_private_rcu(dev, &(iter))) priv = netdev_lower_get_next_private_rcu(dev, &(iter)))
extern void *netdev_adjacent_get_private(struct list_head *adj_list); void *netdev_adjacent_get_private(struct list_head *adj_list);
extern struct net_device *netdev_master_upper_dev_get(struct net_device *dev); 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); struct net_device *netdev_master_upper_dev_get_rcu(struct net_device *dev);
extern int netdev_upper_dev_link(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); struct net_device *upper_dev);
extern int netdev_master_upper_dev_link(struct net_device *dev, int netdev_master_upper_dev_link_private(struct net_device *dev,
struct net_device *upper_dev); struct net_device *upper_dev,
extern int netdev_master_upper_dev_link_private(struct net_device *dev, void *private);
struct net_device *upper_dev, void netdev_upper_dev_unlink(struct net_device *dev,
void *private); struct net_device *upper_dev);
extern void netdev_upper_dev_unlink(struct net_device *dev, void *netdev_lower_dev_get_private_rcu(struct net_device *dev,
struct net_device *upper_dev); struct net_device *lower_dev);
extern void *netdev_lower_dev_get_private_rcu(struct net_device *dev, void *netdev_lower_dev_get_private(struct net_device *dev,
struct net_device *lower_dev); struct net_device *lower_dev);
extern void *netdev_lower_dev_get_private(struct net_device *dev, int skb_checksum_help(struct sk_buff *skb);
struct net_device *lower_dev); struct sk_buff *__skb_gso_segment(struct sk_buff *skb,
extern int skb_checksum_help(struct sk_buff *skb); netdev_features_t features, bool tx_path);
extern struct sk_buff *__skb_gso_segment(struct sk_buff *skb, struct sk_buff *skb_mac_gso_segment(struct sk_buff *skb,
netdev_features_t features, bool tx_path); netdev_features_t features);
extern struct sk_buff *skb_mac_gso_segment(struct sk_buff *skb,
netdev_features_t features);
static inline static inline
struct sk_buff *skb_gso_segment(struct sk_buff *skb, netdev_features_t features) 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, ...@@ -2894,30 +2877,30 @@ static inline bool can_checksum_protocol(netdev_features_t features,
} }
#ifdef CONFIG_BUG #ifdef CONFIG_BUG
extern void netdev_rx_csum_fault(struct net_device *dev); void netdev_rx_csum_fault(struct net_device *dev);
#else #else
static inline void netdev_rx_csum_fault(struct net_device *dev) static inline void netdev_rx_csum_fault(struct net_device *dev)
{ {
} }
#endif #endif
/* rx skb timestamps */ /* rx skb timestamps */
extern void net_enable_timestamp(void); void net_enable_timestamp(void);
extern void net_disable_timestamp(void); void net_disable_timestamp(void);
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
extern int __init dev_proc_init(void); int __init dev_proc_init(void);
#else #else
#define dev_proc_init() 0 #define dev_proc_init() 0
#endif #endif
extern int netdev_class_create_file(struct class_attribute *class_attr); int netdev_class_create_file(struct class_attribute *class_attr);
extern void netdev_class_remove_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 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( static inline netdev_features_t netdev_get_wanted_features(
struct net_device *dev) struct net_device *dev)
...@@ -3009,22 +2992,22 @@ static inline const char *netdev_name(const struct net_device *dev) ...@@ -3009,22 +2992,22 @@ static inline const char *netdev_name(const struct net_device *dev)
return dev->name; return dev->name;
} }
extern __printf(3, 4) __printf(3, 4)
int netdev_printk(const char *level, const struct net_device *dev, int netdev_printk(const char *level, const struct net_device *dev,
const char *format, ...); const char *format, ...);
extern __printf(2, 3) __printf(2, 3)
int netdev_emerg(const struct net_device *dev, const char *format, ...); 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, ...); 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, ...); 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, ...); 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, ...); 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, ...); 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, ...); int netdev_info(const struct net_device *dev, const char *format, ...);
#define MODULE_ALIAS_NETDEV(device) \ #define MODULE_ALIAS_NETDEV(device) \
......
...@@ -35,7 +35,7 @@ static inline void nf_inet_addr_mask(const union nf_inet_addr *a1, ...@@ -35,7 +35,7 @@ static inline void nf_inet_addr_mask(const union nf_inet_addr *a1,
result->all[3] = a1->all[3] & mask->all[3]; result->all[3] = a1->all[3] & mask->all[3];
} }
extern int netfilter_init(void); int netfilter_init(void);
/* Largest hook number + 1 */ /* Largest hook number + 1 */
#define NF_MAX_HOOKS 8 #define NF_MAX_HOOKS 8
...@@ -208,7 +208,7 @@ int compat_nf_getsockopt(struct sock *sk, u_int8_t pf, int optval, ...@@ -208,7 +208,7 @@ int compat_nf_getsockopt(struct sock *sk, u_int8_t pf, int optval,
/* Call this before modifying an existing packet: ensures it is /* Call this before modifying an existing packet: ensures it is
modifiable and linear to the point you care about (writable_len). modifiable and linear to the point you care about (writable_len).
Returns true or false. */ Returns true or false. */
extern int skb_make_writable(struct sk_buff *skb, unsigned int writable_len); int skb_make_writable(struct sk_buff *skb, unsigned int writable_len);
struct flowi; struct flowi;
struct nf_queue_entry; struct nf_queue_entry;
...@@ -269,8 +269,8 @@ nf_checksum_partial(struct sk_buff *skb, unsigned int hook, ...@@ -269,8 +269,8 @@ nf_checksum_partial(struct sk_buff *skb, unsigned int hook,
return csum; return csum;
} }
extern int nf_register_afinfo(const struct nf_afinfo *afinfo); int nf_register_afinfo(const struct nf_afinfo *afinfo);
extern void nf_unregister_afinfo(const struct nf_afinfo *afinfo); void nf_unregister_afinfo(const struct nf_afinfo *afinfo);
#include <net/flow.h> #include <net/flow.h>
extern void (*nf_nat_decode_session_hook)(struct sk_buff *, struct flowi *); extern void (*nf_nat_decode_session_hook)(struct sk_buff *, struct flowi *);
...@@ -315,7 +315,7 @@ nf_nat_decode_session(struct sk_buff *skb, struct flowi *fl, u_int8_t family) ...@@ -315,7 +315,7 @@ nf_nat_decode_session(struct sk_buff *skb, struct flowi *fl, u_int8_t family)
#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
extern void (*ip_ct_attach)(struct sk_buff *, const struct sk_buff *) __rcu; extern void (*ip_ct_attach)(struct sk_buff *, const struct sk_buff *) __rcu;
extern void nf_ct_attach(struct sk_buff *, const struct sk_buff *); void nf_ct_attach(struct sk_buff *, const struct sk_buff *);
extern void (*nf_ct_destroy)(struct nf_conntrack *) __rcu; extern void (*nf_ct_destroy)(struct nf_conntrack *) __rcu;
struct nf_conn; struct nf_conn;
......
...@@ -23,6 +23,6 @@ struct ip_conntrack_stat { ...@@ -23,6 +23,6 @@ struct ip_conntrack_stat {
}; };
/* call to create an explicit dependency on nf_conntrack. */ /* call to create an explicit dependency on nf_conntrack. */
extern void need_conntrack(void); void need_conntrack(void);
#endif /* _NF_CONNTRACK_COMMON_H */ #endif /* _NF_CONNTRACK_COMMON_H */
...@@ -29,13 +29,13 @@ struct nf_ct_h323_master { ...@@ -29,13 +29,13 @@ struct nf_ct_h323_master {
struct nf_conn; struct nf_conn;
extern int get_h225_addr(struct nf_conn *ct, unsigned char *data, int get_h225_addr(struct nf_conn *ct, unsigned char *data,
TransportAddress *taddr, TransportAddress *taddr, union nf_inet_addr *addr,
union nf_inet_addr *addr, __be16 *port); __be16 *port);
extern void nf_conntrack_h245_expect(struct nf_conn *new, void nf_conntrack_h245_expect(struct nf_conn *new,
struct nf_conntrack_expect *this); struct nf_conntrack_expect *this);
extern void nf_conntrack_q931_expect(struct nf_conn *new, void nf_conntrack_q931_expect(struct nf_conn *new,
struct nf_conntrack_expect *this); struct nf_conntrack_expect *this);
extern int (*set_h245_addr_hook) (struct sk_buff *skb, unsigned int protoff, extern int (*set_h245_addr_hook) (struct sk_buff *skb, unsigned int protoff,
unsigned char **data, int dataoff, unsigned char **data, int dataoff,
H245_TransportAddress *taddr, H245_TransportAddress *taddr,
......
...@@ -87,8 +87,8 @@ int nf_ct_gre_keymap_add(struct nf_conn *ct, enum ip_conntrack_dir dir, ...@@ -87,8 +87,8 @@ int nf_ct_gre_keymap_add(struct nf_conn *ct, enum ip_conntrack_dir dir,
/* delete keymap entries */ /* delete keymap entries */
void nf_ct_gre_keymap_destroy(struct nf_conn *ct); void nf_ct_gre_keymap_destroy(struct nf_conn *ct);
extern void nf_ct_gre_keymap_flush(struct net *net); void nf_ct_gre_keymap_flush(struct net *net);
extern void nf_nat_need_gre(void); void nf_nat_need_gre(void);
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#endif /* _CONNTRACK_PROTO_GRE_H */ #endif /* _CONNTRACK_PROTO_GRE_H */
...@@ -157,35 +157,34 @@ extern unsigned int (*nf_nat_sdp_media_hook)(struct sk_buff *skb, ...@@ -157,35 +157,34 @@ extern unsigned int (*nf_nat_sdp_media_hook)(struct sk_buff *skb,
unsigned int medialen, unsigned int medialen,
union nf_inet_addr *rtp_addr); union nf_inet_addr *rtp_addr);
extern int ct_sip_parse_request(const struct nf_conn *ct, int ct_sip_parse_request(const struct nf_conn *ct, const char *dptr,
const char *dptr, unsigned int datalen, unsigned int datalen, unsigned int *matchoff,
unsigned int *matchoff, unsigned int *matchlen, unsigned int *matchlen, union nf_inet_addr *addr,
union nf_inet_addr *addr, __be16 *port); __be16 *port);
extern int ct_sip_get_header(const struct nf_conn *ct, const char *dptr, int ct_sip_get_header(const struct nf_conn *ct, const char *dptr,
unsigned int dataoff, unsigned int datalen, unsigned int dataoff, unsigned int datalen,
enum sip_header_types type, enum sip_header_types type, unsigned int *matchoff,
unsigned int *matchoff, unsigned int *matchlen); unsigned int *matchlen);
extern int ct_sip_parse_header_uri(const struct nf_conn *ct, const char *dptr, int ct_sip_parse_header_uri(const struct nf_conn *ct, const char *dptr,
unsigned int *dataoff, unsigned int datalen, unsigned int *dataoff, unsigned int datalen,
enum sip_header_types type, int *in_header, enum sip_header_types type, int *in_header,
unsigned int *matchoff, unsigned int *matchlen, unsigned int *matchoff, unsigned int *matchlen,
union nf_inet_addr *addr, __be16 *port); union nf_inet_addr *addr, __be16 *port);
extern int ct_sip_parse_address_param(const struct nf_conn *ct, const char *dptr, int ct_sip_parse_address_param(const struct nf_conn *ct, const char *dptr,
unsigned int dataoff, unsigned int datalen, unsigned int dataoff, unsigned int datalen,
const char *name, const char *name, unsigned int *matchoff,
unsigned int *matchoff, unsigned int *matchlen, unsigned int *matchlen, union nf_inet_addr *addr,
union nf_inet_addr *addr, bool delim); bool delim);
extern int ct_sip_parse_numerical_param(const struct nf_conn *ct, const char *dptr, int ct_sip_parse_numerical_param(const struct nf_conn *ct, const char *dptr,
unsigned int off, unsigned int datalen, unsigned int off, unsigned int datalen,
const char *name, const char *name, unsigned int *matchoff,
unsigned int *matchoff, unsigned int *matchen, unsigned int *matchen, unsigned int *val);
unsigned int *val);
int ct_sip_get_sdp_header(const struct nf_conn *ct, const char *dptr,
extern int ct_sip_get_sdp_header(const struct nf_conn *ct, const char *dptr, unsigned int dataoff, unsigned int datalen,
unsigned int dataoff, unsigned int datalen, enum sdp_header_types type,
enum sdp_header_types type, enum sdp_header_types term,
enum sdp_header_types term, unsigned int *matchoff, unsigned int *matchlen);
unsigned int *matchoff, unsigned int *matchlen);
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#endif /* __NF_CONNTRACK_SIP_H__ */ #endif /* __NF_CONNTRACK_SIP_H__ */
...@@ -25,20 +25,20 @@ struct nfnetlink_subsystem { ...@@ -25,20 +25,20 @@ struct nfnetlink_subsystem {
const struct nfnl_callback *cb; /* callback for individual types */ const struct nfnl_callback *cb; /* callback for individual types */
}; };
extern int nfnetlink_subsys_register(const struct nfnetlink_subsystem *n); int nfnetlink_subsys_register(const struct nfnetlink_subsystem *n);
extern int nfnetlink_subsys_unregister(const struct nfnetlink_subsystem *n); int nfnetlink_subsys_unregister(const struct nfnetlink_subsystem *n);
extern int nfnetlink_has_listeners(struct net *net, unsigned int group); int nfnetlink_has_listeners(struct net *net, unsigned int group);
extern struct sk_buff *nfnetlink_alloc_skb(struct net *net, unsigned int size, struct sk_buff *nfnetlink_alloc_skb(struct net *net, unsigned int size,
u32 dst_portid, gfp_t gfp_mask); u32 dst_portid, gfp_t gfp_mask);
extern int nfnetlink_send(struct sk_buff *skb, struct net *net, u32 portid, int nfnetlink_send(struct sk_buff *skb, struct net *net, u32 portid,
unsigned int group, int echo, gfp_t flags); unsigned int group, int echo, gfp_t flags);
extern int nfnetlink_set_err(struct net *net, u32 portid, u32 group, int error); int nfnetlink_set_err(struct net *net, u32 portid, u32 group, int error);
extern int nfnetlink_unicast(struct sk_buff *skb, struct net *net, int nfnetlink_unicast(struct sk_buff *skb, struct net *net, u32 portid,
u32 portid, int flags); int flags);
extern void nfnl_lock(__u8 subsys_id); void nfnl_lock(__u8 subsys_id);
extern void nfnl_unlock(__u8 subsys_id); void nfnl_unlock(__u8 subsys_id);
#define MODULE_ALIAS_NFNL_SUBSYS(subsys) \ #define MODULE_ALIAS_NFNL_SUBSYS(subsys) \
MODULE_ALIAS("nfnetlink-subsys-" __stringify(subsys)) MODULE_ALIAS("nfnetlink-subsys-" __stringify(subsys))
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
struct nf_acct; struct nf_acct;
extern struct nf_acct *nfnl_acct_find_get(const char *filter_name); struct nf_acct *nfnl_acct_find_get(const char *filter_name);
extern void nfnl_acct_put(struct nf_acct *acct); void nfnl_acct_put(struct nf_acct *acct);
extern void nfnl_acct_update(const struct sk_buff *skb, struct nf_acct *nfacct); void nfnl_acct_update(const struct sk_buff *skb, struct nf_acct *nfacct);
#endif /* _NFNL_ACCT_H */ #endif /* _NFNL_ACCT_H */
...@@ -229,50 +229,48 @@ struct xt_table_info { ...@@ -229,50 +229,48 @@ struct xt_table_info {
#define XT_TABLE_INFO_SZ (offsetof(struct xt_table_info, entries) \ #define XT_TABLE_INFO_SZ (offsetof(struct xt_table_info, entries) \
+ nr_cpu_ids * sizeof(char *)) + nr_cpu_ids * sizeof(char *))
extern int xt_register_target(struct xt_target *target); int xt_register_target(struct xt_target *target);
extern void xt_unregister_target(struct xt_target *target); void xt_unregister_target(struct xt_target *target);
extern int xt_register_targets(struct xt_target *target, unsigned int n); int xt_register_targets(struct xt_target *target, unsigned int n);
extern void xt_unregister_targets(struct xt_target *target, unsigned int n); void xt_unregister_targets(struct xt_target *target, unsigned int n);
extern int xt_register_match(struct xt_match *target); int xt_register_match(struct xt_match *target);
extern void xt_unregister_match(struct xt_match *target); void xt_unregister_match(struct xt_match *target);
extern int xt_register_matches(struct xt_match *match, unsigned int n); int xt_register_matches(struct xt_match *match, unsigned int n);
extern void xt_unregister_matches(struct xt_match *match, unsigned int n); void xt_unregister_matches(struct xt_match *match, unsigned int n);
extern int xt_check_match(struct xt_mtchk_param *, int xt_check_match(struct xt_mtchk_param *, unsigned int size, u_int8_t proto,
unsigned int size, u_int8_t proto, bool inv_proto); bool inv_proto);
extern int xt_check_target(struct xt_tgchk_param *, int xt_check_target(struct xt_tgchk_param *, unsigned int size, u_int8_t proto,
unsigned int size, u_int8_t proto, bool inv_proto); bool inv_proto);
extern struct xt_table *xt_register_table(struct net *net, struct xt_table *xt_register_table(struct net *net,
const struct xt_table *table, const struct xt_table *table,
struct xt_table_info *bootstrap, struct xt_table_info *bootstrap,
struct xt_table_info *newinfo); struct xt_table_info *newinfo);
extern void *xt_unregister_table(struct xt_table *table); void *xt_unregister_table(struct xt_table *table);
extern struct xt_table_info *xt_replace_table(struct xt_table *table, struct xt_table_info *xt_replace_table(struct xt_table *table,
unsigned int num_counters, unsigned int num_counters,
struct xt_table_info *newinfo, struct xt_table_info *newinfo,
int *error); int *error);
extern struct xt_match *xt_find_match(u8 af, const char *name, u8 revision); struct xt_match *xt_find_match(u8 af, const char *name, u8 revision);
extern struct xt_target *xt_find_target(u8 af, const char *name, u8 revision); struct xt_target *xt_find_target(u8 af, const char *name, u8 revision);
extern struct xt_match *xt_request_find_match(u8 af, const char *name, struct xt_match *xt_request_find_match(u8 af, const char *name, u8 revision);
u8 revision); struct xt_target *xt_request_find_target(u8 af, const char *name, u8 revision);
extern struct xt_target *xt_request_find_target(u8 af, const char *name, int xt_find_revision(u8 af, const char *name, u8 revision, int target,
u8 revision); int *err);
extern int xt_find_revision(u8 af, const char *name, u8 revision,
int target, int *err); struct xt_table *xt_find_table_lock(struct net *net, u_int8_t af,
const char *name);
extern struct xt_table *xt_find_table_lock(struct net *net, u_int8_t af, void xt_table_unlock(struct xt_table *t);
const char *name);
extern void xt_table_unlock(struct xt_table *t); int xt_proto_init(struct net *net, u_int8_t af);
void xt_proto_fini(struct net *net, u_int8_t af);
extern int xt_proto_init(struct net *net, u_int8_t af);
extern void xt_proto_fini(struct net *net, u_int8_t af); struct xt_table_info *xt_alloc_table_info(unsigned int size);
void xt_free_table_info(struct xt_table_info *info);
extern struct xt_table_info *xt_alloc_table_info(unsigned int size);
extern void xt_free_table_info(struct xt_table_info *info);
/** /**
* xt_recseq - recursive seqcount for netfilter use * xt_recseq - recursive seqcount for netfilter use
...@@ -353,8 +351,8 @@ static inline unsigned long ifname_compare_aligned(const char *_a, ...@@ -353,8 +351,8 @@ static inline unsigned long ifname_compare_aligned(const char *_a,
return ret; return ret;
} }
extern struct nf_hook_ops *xt_hook_link(const struct xt_table *, nf_hookfn *); struct nf_hook_ops *xt_hook_link(const struct xt_table *, nf_hookfn *);
extern void xt_hook_unlink(const struct xt_table *, struct nf_hook_ops *); void xt_hook_unlink(const struct xt_table *, struct nf_hook_ops *);
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
#include <net/compat.h> #include <net/compat.h>
...@@ -414,25 +412,25 @@ struct _compat_xt_align { ...@@ -414,25 +412,25 @@ struct _compat_xt_align {
#define COMPAT_XT_ALIGN(s) __ALIGN_KERNEL((s), __alignof__(struct _compat_xt_align)) #define COMPAT_XT_ALIGN(s) __ALIGN_KERNEL((s), __alignof__(struct _compat_xt_align))
extern void xt_compat_lock(u_int8_t af); void xt_compat_lock(u_int8_t af);
extern void xt_compat_unlock(u_int8_t af); void xt_compat_unlock(u_int8_t af);
extern int xt_compat_add_offset(u_int8_t af, unsigned int offset, int delta); int xt_compat_add_offset(u_int8_t af, unsigned int offset, int delta);
extern void xt_compat_flush_offsets(u_int8_t af); void xt_compat_flush_offsets(u_int8_t af);
extern void xt_compat_init_offsets(u_int8_t af, unsigned int number); void xt_compat_init_offsets(u_int8_t af, unsigned int number);
extern int xt_compat_calc_jump(u_int8_t af, unsigned int offset); int xt_compat_calc_jump(u_int8_t af, unsigned int offset);
extern int xt_compat_match_offset(const struct xt_match *match); int xt_compat_match_offset(const struct xt_match *match);
extern int xt_compat_match_from_user(struct xt_entry_match *m, int xt_compat_match_from_user(struct xt_entry_match *m, void **dstptr,
void **dstptr, unsigned int *size); unsigned int *size);
extern int xt_compat_match_to_user(const struct xt_entry_match *m, int xt_compat_match_to_user(const struct xt_entry_match *m,
void __user **dstptr, unsigned int *size); void __user **dstptr, unsigned int *size);
extern int xt_compat_target_offset(const struct xt_target *target); int xt_compat_target_offset(const struct xt_target *target);
extern void xt_compat_target_from_user(struct xt_entry_target *t, void xt_compat_target_from_user(struct xt_entry_target *t, void **dstptr,
void **dstptr, unsigned int *size); unsigned int *size);
extern int xt_compat_target_to_user(const struct xt_entry_target *t, int xt_compat_target_to_user(const struct xt_entry_target *t,
void __user **dstptr, unsigned int *size); void __user **dstptr, unsigned int *size);
#endif /* CONFIG_COMPAT */ #endif /* CONFIG_COMPAT */
#endif /* _X_TABLES_H */ #endif /* _X_TABLES_H */
...@@ -25,7 +25,7 @@ enum nf_br_hook_priorities { ...@@ -25,7 +25,7 @@ enum nf_br_hook_priorities {
#define BRNF_PPPoE 0x20 #define BRNF_PPPoE 0x20
/* Only used in br_forward.c */ /* Only used in br_forward.c */
extern int nf_bridge_copy_header(struct sk_buff *skb); int nf_bridge_copy_header(struct sk_buff *skb);
static inline int nf_bridge_maybe_copy_header(struct sk_buff *skb) static inline int nf_bridge_maybe_copy_header(struct sk_buff *skb)
{ {
if (skb->nf_bridge && if (skb->nf_bridge &&
...@@ -53,7 +53,7 @@ static inline unsigned int nf_bridge_mtu_reduction(const struct sk_buff *skb) ...@@ -53,7 +53,7 @@ static inline unsigned int nf_bridge_mtu_reduction(const struct sk_buff *skb)
return 0; return 0;
} }
extern int br_handle_frame_finish(struct sk_buff *skb); int br_handle_frame_finish(struct sk_buff *skb);
/* Only used in br_device.c */ /* Only used in br_device.c */
static inline int br_nf_pre_routing_finish_bridge_slow(struct sk_buff *skb) static inline int br_nf_pre_routing_finish_bridge_slow(struct sk_buff *skb)
{ {
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
#include <uapi/linux/netfilter_ipv4.h> #include <uapi/linux/netfilter_ipv4.h>
extern int ip_route_me_harder(struct sk_buff *skb, unsigned addr_type); int ip_route_me_harder(struct sk_buff *skb, unsigned addr_type);
extern __sum16 nf_ip_checksum(struct sk_buff *skb, unsigned int hook, __sum16 nf_ip_checksum(struct sk_buff *skb, unsigned int hook,
unsigned int dataoff, u_int8_t protocol); unsigned int dataoff, u_int8_t protocol);
#endif /*__LINUX_IP_NETFILTER_H*/ #endif /*__LINUX_IP_NETFILTER_H*/
...@@ -11,12 +11,12 @@ ...@@ -11,12 +11,12 @@
#ifdef CONFIG_NETFILTER #ifdef CONFIG_NETFILTER
extern int ip6_route_me_harder(struct sk_buff *skb); int ip6_route_me_harder(struct sk_buff *skb);
extern __sum16 nf_ip6_checksum(struct sk_buff *skb, unsigned int hook, __sum16 nf_ip6_checksum(struct sk_buff *skb, unsigned int hook,
unsigned int dataoff, u_int8_t protocol); unsigned int dataoff, u_int8_t protocol);
extern int ipv6_netfilter_init(void); int ipv6_netfilter_init(void);
extern void ipv6_netfilter_fini(void); void ipv6_netfilter_fini(void);
/* /*
* Hook functions for ipv6 to allow xt_* modules to be built-in even * Hook functions for ipv6 to allow xt_* modules to be built-in even
......
...@@ -585,8 +585,8 @@ static inline void skb_dst_set(struct sk_buff *skb, struct dst_entry *dst) ...@@ -585,8 +585,8 @@ static inline void skb_dst_set(struct sk_buff *skb, struct dst_entry *dst)
skb->_skb_refdst = (unsigned long)dst; skb->_skb_refdst = (unsigned long)dst;
} }
extern void __skb_dst_set_noref(struct sk_buff *skb, struct dst_entry *dst, void __skb_dst_set_noref(struct sk_buff *skb, struct dst_entry *dst,
bool force); bool force);
/** /**
* skb_dst_set_noref - sets skb dst, hopefully, without taking reference * skb_dst_set_noref - sets skb dst, hopefully, without taking reference
...@@ -634,20 +634,20 @@ static inline struct rtable *skb_rtable(const struct sk_buff *skb) ...@@ -634,20 +634,20 @@ static inline struct rtable *skb_rtable(const struct sk_buff *skb)
return (struct rtable *)skb_dst(skb); return (struct rtable *)skb_dst(skb);
} }
extern void kfree_skb(struct sk_buff *skb); void kfree_skb(struct sk_buff *skb);
extern void kfree_skb_list(struct sk_buff *segs); void kfree_skb_list(struct sk_buff *segs);
extern void skb_tx_error(struct sk_buff *skb); void skb_tx_error(struct sk_buff *skb);
extern void consume_skb(struct sk_buff *skb); void consume_skb(struct sk_buff *skb);
extern void __kfree_skb(struct sk_buff *skb); void __kfree_skb(struct sk_buff *skb);
extern struct kmem_cache *skbuff_head_cache; extern struct kmem_cache *skbuff_head_cache;
extern void kfree_skb_partial(struct sk_buff *skb, bool head_stolen); void kfree_skb_partial(struct sk_buff *skb, bool head_stolen);
extern bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from, bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,
bool *fragstolen, int *delta_truesize); bool *fragstolen, int *delta_truesize);
extern struct sk_buff *__alloc_skb(unsigned int size, struct sk_buff *__alloc_skb(unsigned int size, gfp_t priority, int flags,
gfp_t priority, int flags, int node); int node);
extern struct sk_buff *build_skb(void *data, unsigned int frag_size); struct sk_buff *build_skb(void *data, unsigned int frag_size);
static inline struct sk_buff *alloc_skb(unsigned int size, static inline struct sk_buff *alloc_skb(unsigned int size,
gfp_t priority) gfp_t priority)
{ {
...@@ -660,41 +660,33 @@ static inline struct sk_buff *alloc_skb_fclone(unsigned int size, ...@@ -660,41 +660,33 @@ static inline struct sk_buff *alloc_skb_fclone(unsigned int size,
return __alloc_skb(size, priority, SKB_ALLOC_FCLONE, NUMA_NO_NODE); return __alloc_skb(size, priority, SKB_ALLOC_FCLONE, NUMA_NO_NODE);
} }
extern struct sk_buff *__alloc_skb_head(gfp_t priority, int node); struct sk_buff *__alloc_skb_head(gfp_t priority, int node);
static inline struct sk_buff *alloc_skb_head(gfp_t priority) static inline struct sk_buff *alloc_skb_head(gfp_t priority)
{ {
return __alloc_skb_head(priority, -1); return __alloc_skb_head(priority, -1);
} }
extern struct sk_buff *skb_morph(struct sk_buff *dst, struct sk_buff *src); struct sk_buff *skb_morph(struct sk_buff *dst, struct sk_buff *src);
extern int skb_copy_ubufs(struct sk_buff *skb, gfp_t gfp_mask); int skb_copy_ubufs(struct sk_buff *skb, gfp_t gfp_mask);
extern struct sk_buff *skb_clone(struct sk_buff *skb, struct sk_buff *skb_clone(struct sk_buff *skb, gfp_t priority);
gfp_t priority); struct sk_buff *skb_copy(const struct sk_buff *skb, gfp_t priority);
extern struct sk_buff *skb_copy(const struct sk_buff *skb, struct sk_buff *__pskb_copy(struct sk_buff *skb, int headroom, gfp_t gfp_mask);
gfp_t priority);
extern struct sk_buff *__pskb_copy(struct sk_buff *skb, int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail, gfp_t gfp_mask);
int headroom, gfp_t gfp_mask); struct sk_buff *skb_realloc_headroom(struct sk_buff *skb,
unsigned int headroom);
extern int pskb_expand_head(struct sk_buff *skb, struct sk_buff *skb_copy_expand(const struct sk_buff *skb, int newheadroom,
int nhead, int ntail, int newtailroom, gfp_t priority);
gfp_t gfp_mask); int skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset,
extern struct sk_buff *skb_realloc_headroom(struct sk_buff *skb, int len);
unsigned int headroom); int skb_cow_data(struct sk_buff *skb, int tailbits, struct sk_buff **trailer);
extern struct sk_buff *skb_copy_expand(const struct sk_buff *skb, int skb_pad(struct sk_buff *skb, int pad);
int newheadroom, int newtailroom,
gfp_t priority);
extern int skb_to_sgvec(struct sk_buff *skb,
struct scatterlist *sg, int offset,
int len);
extern int skb_cow_data(struct sk_buff *skb, int tailbits,
struct sk_buff **trailer);
extern int skb_pad(struct sk_buff *skb, int pad);
#define dev_kfree_skb(a) consume_skb(a) #define dev_kfree_skb(a) consume_skb(a)
extern int skb_append_datato_frags(struct sock *sk, struct sk_buff *skb, int skb_append_datato_frags(struct sock *sk, struct sk_buff *skb,
int getfrag(void *from, char *to, int offset, int getfrag(void *from, char *to, int offset,
int len,int odd, struct sk_buff *skb), int len, int odd, struct sk_buff *skb),
void *from, int length); void *from, int length);
struct skb_seq_state { struct skb_seq_state {
__u32 lower_offset; __u32 lower_offset;
...@@ -706,18 +698,17 @@ struct skb_seq_state { ...@@ -706,18 +698,17 @@ struct skb_seq_state {
__u8 *frag_data; __u8 *frag_data;
}; };
extern void skb_prepare_seq_read(struct sk_buff *skb, void skb_prepare_seq_read(struct sk_buff *skb, unsigned int from,
unsigned int from, unsigned int to, unsigned int to, struct skb_seq_state *st);
struct skb_seq_state *st); unsigned int skb_seq_read(unsigned int consumed, const u8 **data,
extern unsigned int skb_seq_read(unsigned int consumed, const u8 **data, struct skb_seq_state *st);
struct skb_seq_state *st); void skb_abort_seq_read(struct skb_seq_state *st);
extern void skb_abort_seq_read(struct skb_seq_state *st);
extern unsigned int skb_find_text(struct sk_buff *skb, unsigned int from, unsigned int skb_find_text(struct sk_buff *skb, unsigned int from,
unsigned int to, struct ts_config *config, unsigned int to, struct ts_config *config,
struct ts_state *state); struct ts_state *state);
extern void __skb_get_rxhash(struct sk_buff *skb); void __skb_get_rxhash(struct sk_buff *skb);
static inline __u32 skb_get_rxhash(struct sk_buff *skb) static inline __u32 skb_get_rxhash(struct sk_buff *skb)
{ {
if (!skb->l4_rxhash) if (!skb->l4_rxhash)
...@@ -1095,7 +1086,8 @@ static inline void skb_queue_head_init_class(struct sk_buff_head *list, ...@@ -1095,7 +1086,8 @@ static inline void skb_queue_head_init_class(struct sk_buff_head *list,
* The "__skb_xxxx()" functions are the non-atomic ones that * The "__skb_xxxx()" functions are the non-atomic ones that
* can only be called with interrupts disabled. * can only be called with interrupts disabled.
*/ */
extern void skb_insert(struct sk_buff *old, struct sk_buff *newsk, struct sk_buff_head *list); void skb_insert(struct sk_buff *old, struct sk_buff *newsk,
struct sk_buff_head *list);
static inline void __skb_insert(struct sk_buff *newsk, static inline void __skb_insert(struct sk_buff *newsk,
struct sk_buff *prev, struct sk_buff *next, struct sk_buff *prev, struct sk_buff *next,
struct sk_buff_head *list) struct sk_buff_head *list)
...@@ -1201,8 +1193,8 @@ static inline void __skb_queue_after(struct sk_buff_head *list, ...@@ -1201,8 +1193,8 @@ static inline void __skb_queue_after(struct sk_buff_head *list,
__skb_insert(newsk, prev, prev->next, list); __skb_insert(newsk, prev, prev->next, list);
} }
extern void skb_append(struct sk_buff *old, struct sk_buff *newsk, void skb_append(struct sk_buff *old, struct sk_buff *newsk,
struct sk_buff_head *list); struct sk_buff_head *list);
static inline void __skb_queue_before(struct sk_buff_head *list, static inline void __skb_queue_before(struct sk_buff_head *list,
struct sk_buff *next, struct sk_buff *next,
...@@ -1221,7 +1213,7 @@ static inline void __skb_queue_before(struct sk_buff_head *list, ...@@ -1221,7 +1213,7 @@ static inline void __skb_queue_before(struct sk_buff_head *list,
* *
* A buffer cannot be placed on two lists at the same time. * A buffer cannot be placed on two lists at the same time.
*/ */
extern void skb_queue_head(struct sk_buff_head *list, struct sk_buff *newsk); void skb_queue_head(struct sk_buff_head *list, struct sk_buff *newsk);
static inline void __skb_queue_head(struct sk_buff_head *list, static inline void __skb_queue_head(struct sk_buff_head *list,
struct sk_buff *newsk) struct sk_buff *newsk)
{ {
...@@ -1238,7 +1230,7 @@ static inline void __skb_queue_head(struct sk_buff_head *list, ...@@ -1238,7 +1230,7 @@ static inline void __skb_queue_head(struct sk_buff_head *list,
* *
* A buffer cannot be placed on two lists at the same time. * A buffer cannot be placed on two lists at the same time.
*/ */
extern void skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk); void skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk);
static inline void __skb_queue_tail(struct sk_buff_head *list, static inline void __skb_queue_tail(struct sk_buff_head *list,
struct sk_buff *newsk) struct sk_buff *newsk)
{ {
...@@ -1249,7 +1241,7 @@ static inline void __skb_queue_tail(struct sk_buff_head *list, ...@@ -1249,7 +1241,7 @@ static inline void __skb_queue_tail(struct sk_buff_head *list,
* remove sk_buff from list. _Must_ be called atomically, and with * remove sk_buff from list. _Must_ be called atomically, and with
* the list known.. * the list known..
*/ */
extern void skb_unlink(struct sk_buff *skb, struct sk_buff_head *list); void skb_unlink(struct sk_buff *skb, struct sk_buff_head *list);
static inline void __skb_unlink(struct sk_buff *skb, struct sk_buff_head *list) static inline void __skb_unlink(struct sk_buff *skb, struct sk_buff_head *list)
{ {
struct sk_buff *next, *prev; struct sk_buff *next, *prev;
...@@ -1270,7 +1262,7 @@ static inline void __skb_unlink(struct sk_buff *skb, struct sk_buff_head *list) ...@@ -1270,7 +1262,7 @@ static inline void __skb_unlink(struct sk_buff *skb, struct sk_buff_head *list)
* so must be used with appropriate locks held only. The head item is * so must be used with appropriate locks held only. The head item is
* returned or %NULL if the list is empty. * returned or %NULL if the list is empty.
*/ */
extern struct sk_buff *skb_dequeue(struct sk_buff_head *list); struct sk_buff *skb_dequeue(struct sk_buff_head *list);
static inline struct sk_buff *__skb_dequeue(struct sk_buff_head *list) static inline struct sk_buff *__skb_dequeue(struct sk_buff_head *list)
{ {
struct sk_buff *skb = skb_peek(list); struct sk_buff *skb = skb_peek(list);
...@@ -1287,7 +1279,7 @@ static inline struct sk_buff *__skb_dequeue(struct sk_buff_head *list) ...@@ -1287,7 +1279,7 @@ static inline struct sk_buff *__skb_dequeue(struct sk_buff_head *list)
* so must be used with appropriate locks held only. The tail item is * so must be used with appropriate locks held only. The tail item is
* returned or %NULL if the list is empty. * returned or %NULL if the list is empty.
*/ */
extern struct sk_buff *skb_dequeue_tail(struct sk_buff_head *list); struct sk_buff *skb_dequeue_tail(struct sk_buff_head *list);
static inline struct sk_buff *__skb_dequeue_tail(struct sk_buff_head *list) static inline struct sk_buff *__skb_dequeue_tail(struct sk_buff_head *list)
{ {
struct sk_buff *skb = skb_peek_tail(list); struct sk_buff *skb = skb_peek_tail(list);
...@@ -1373,8 +1365,8 @@ static inline void skb_fill_page_desc(struct sk_buff *skb, int i, ...@@ -1373,8 +1365,8 @@ static inline void skb_fill_page_desc(struct sk_buff *skb, int i,
skb_shinfo(skb)->nr_frags = i + 1; skb_shinfo(skb)->nr_frags = i + 1;
} }
extern void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, int off,
int off, int size, unsigned int truesize); int size, unsigned int truesize);
#define SKB_PAGE_ASSERT(skb) BUG_ON(skb_shinfo(skb)->nr_frags) #define SKB_PAGE_ASSERT(skb) BUG_ON(skb_shinfo(skb)->nr_frags)
#define SKB_FRAG_ASSERT(skb) BUG_ON(skb_has_frag_list(skb)) #define SKB_FRAG_ASSERT(skb) BUG_ON(skb_has_frag_list(skb))
...@@ -1418,7 +1410,7 @@ static inline void skb_set_tail_pointer(struct sk_buff *skb, const int offset) ...@@ -1418,7 +1410,7 @@ static inline void skb_set_tail_pointer(struct sk_buff *skb, const int offset)
/* /*
* Add data to an sk_buff * Add data to an sk_buff
*/ */
extern unsigned char *skb_put(struct sk_buff *skb, unsigned int len); unsigned char *skb_put(struct sk_buff *skb, unsigned int len);
static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len) static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len)
{ {
unsigned char *tmp = skb_tail_pointer(skb); unsigned char *tmp = skb_tail_pointer(skb);
...@@ -1428,7 +1420,7 @@ static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len) ...@@ -1428,7 +1420,7 @@ static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len)
return tmp; return tmp;
} }
extern unsigned char *skb_push(struct sk_buff *skb, unsigned int len); unsigned char *skb_push(struct sk_buff *skb, unsigned int len);
static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len) static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len)
{ {
skb->data -= len; skb->data -= len;
...@@ -1436,7 +1428,7 @@ static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len) ...@@ -1436,7 +1428,7 @@ static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len)
return skb->data; return skb->data;
} }
extern unsigned char *skb_pull(struct sk_buff *skb, unsigned int len); unsigned char *skb_pull(struct sk_buff *skb, unsigned int len);
static inline unsigned char *__skb_pull(struct sk_buff *skb, unsigned int len) static inline unsigned char *__skb_pull(struct sk_buff *skb, unsigned int len)
{ {
skb->len -= len; skb->len -= len;
...@@ -1449,7 +1441,7 @@ static inline unsigned char *skb_pull_inline(struct sk_buff *skb, unsigned int l ...@@ -1449,7 +1441,7 @@ static inline unsigned char *skb_pull_inline(struct sk_buff *skb, unsigned int l
return unlikely(len > skb->len) ? NULL : __skb_pull(skb, len); return unlikely(len > skb->len) ? NULL : __skb_pull(skb, len);
} }
extern unsigned char *__pskb_pull_tail(struct sk_buff *skb, int delta); unsigned char *__pskb_pull_tail(struct sk_buff *skb, int delta);
static inline unsigned char *__pskb_pull(struct sk_buff *skb, unsigned int len) static inline unsigned char *__pskb_pull(struct sk_buff *skb, unsigned int len)
{ {
...@@ -1753,7 +1745,7 @@ static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len) ...@@ -1753,7 +1745,7 @@ static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len)
#define NET_SKB_PAD max(32, L1_CACHE_BYTES) #define NET_SKB_PAD max(32, L1_CACHE_BYTES)
#endif #endif
extern int ___pskb_trim(struct sk_buff *skb, unsigned int len); int ___pskb_trim(struct sk_buff *skb, unsigned int len);
static inline void __skb_trim(struct sk_buff *skb, unsigned int len) static inline void __skb_trim(struct sk_buff *skb, unsigned int len)
{ {
...@@ -1765,7 +1757,7 @@ static inline void __skb_trim(struct sk_buff *skb, unsigned int len) ...@@ -1765,7 +1757,7 @@ static inline void __skb_trim(struct sk_buff *skb, unsigned int len)
skb_set_tail_pointer(skb, len); skb_set_tail_pointer(skb, len);
} }
extern void skb_trim(struct sk_buff *skb, unsigned int len); void skb_trim(struct sk_buff *skb, unsigned int len);
static inline int __pskb_trim(struct sk_buff *skb, unsigned int len) static inline int __pskb_trim(struct sk_buff *skb, unsigned int len)
{ {
...@@ -1838,7 +1830,7 @@ static inline int skb_orphan_frags(struct sk_buff *skb, gfp_t gfp_mask) ...@@ -1838,7 +1830,7 @@ static inline int skb_orphan_frags(struct sk_buff *skb, gfp_t gfp_mask)
* the list and one reference dropped. This function does not take the * the list and one reference dropped. This function does not take the
* list lock and the caller must hold the relevant locks to use it. * list lock and the caller must hold the relevant locks to use it.
*/ */
extern void skb_queue_purge(struct sk_buff_head *list); void skb_queue_purge(struct sk_buff_head *list);
static inline void __skb_queue_purge(struct sk_buff_head *list) static inline void __skb_queue_purge(struct sk_buff_head *list)
{ {
struct sk_buff *skb; struct sk_buff *skb;
...@@ -1850,11 +1842,10 @@ static inline void __skb_queue_purge(struct sk_buff_head *list) ...@@ -1850,11 +1842,10 @@ static inline void __skb_queue_purge(struct sk_buff_head *list)
#define NETDEV_FRAG_PAGE_MAX_SIZE (PAGE_SIZE << NETDEV_FRAG_PAGE_MAX_ORDER) #define NETDEV_FRAG_PAGE_MAX_SIZE (PAGE_SIZE << NETDEV_FRAG_PAGE_MAX_ORDER)
#define NETDEV_PAGECNT_MAX_BIAS NETDEV_FRAG_PAGE_MAX_SIZE #define NETDEV_PAGECNT_MAX_BIAS NETDEV_FRAG_PAGE_MAX_SIZE
extern void *netdev_alloc_frag(unsigned int fragsz); void *netdev_alloc_frag(unsigned int fragsz);
extern struct sk_buff *__netdev_alloc_skb(struct net_device *dev, struct sk_buff *__netdev_alloc_skb(struct net_device *dev, unsigned int length,
unsigned int length, gfp_t gfp_mask);
gfp_t gfp_mask);
/** /**
* netdev_alloc_skb - allocate an skbuff for rx on a specific device * netdev_alloc_skb - allocate an skbuff for rx on a specific device
...@@ -2342,60 +2333,42 @@ static inline void skb_frag_add_head(struct sk_buff *skb, struct sk_buff *frag) ...@@ -2342,60 +2333,42 @@ static inline void skb_frag_add_head(struct sk_buff *skb, struct sk_buff *frag)
#define skb_walk_frags(skb, iter) \ #define skb_walk_frags(skb, iter) \
for (iter = skb_shinfo(skb)->frag_list; iter; iter = iter->next) for (iter = skb_shinfo(skb)->frag_list; iter; iter = iter->next)
extern struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned flags, struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned flags,
int *peeked, int *off, int *err); int *peeked, int *off, int *err);
extern struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, int noblock,
int noblock, int *err); int *err);
extern unsigned int datagram_poll(struct file *file, struct socket *sock, unsigned int datagram_poll(struct file *file, struct socket *sock,
struct poll_table_struct *wait); struct poll_table_struct *wait);
extern int skb_copy_datagram_iovec(const struct sk_buff *from, int skb_copy_datagram_iovec(const struct sk_buff *from, int offset,
int offset, struct iovec *to, struct iovec *to, int size);
int size); int skb_copy_and_csum_datagram_iovec(struct sk_buff *skb, int hlen,
extern int skb_copy_and_csum_datagram_iovec(struct sk_buff *skb, struct iovec *iov);
int hlen, int skb_copy_datagram_from_iovec(struct sk_buff *skb, int offset,
struct iovec *iov); const struct iovec *from, int from_offset,
extern int skb_copy_datagram_from_iovec(struct sk_buff *skb, int len);
int offset, int zerocopy_sg_from_iovec(struct sk_buff *skb, const struct iovec *frm,
const struct iovec *from, int offset, size_t count);
int from_offset, int skb_copy_datagram_const_iovec(const struct sk_buff *from, int offset,
int len); const struct iovec *to, int to_offset,
extern int zerocopy_sg_from_iovec(struct sk_buff *skb, int size);
const struct iovec *frm, void skb_free_datagram(struct sock *sk, struct sk_buff *skb);
int offset, void skb_free_datagram_locked(struct sock *sk, struct sk_buff *skb);
size_t count); int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags);
extern int skb_copy_datagram_const_iovec(const struct sk_buff *from, __wsum skb_checksum(const struct sk_buff *skb, int offset, int len,
int offset, __wsum csum);
const struct iovec *to, int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len);
int to_offset, int skb_store_bits(struct sk_buff *skb, int offset, const void *from, int len);
int size); __wsum skb_copy_and_csum_bits(const struct sk_buff *skb, int offset, u8 *to,
extern void skb_free_datagram(struct sock *sk, struct sk_buff *skb); int len, __wsum csum);
extern void skb_free_datagram_locked(struct sock *sk, int skb_splice_bits(struct sk_buff *skb, unsigned int offset,
struct sk_buff *skb); struct pipe_inode_info *pipe, unsigned int len,
extern int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags);
unsigned int flags); void skb_copy_and_csum_dev(const struct sk_buff *skb, u8 *to);
extern __wsum skb_checksum(const struct sk_buff *skb, int offset, void skb_split(struct sk_buff *skb, struct sk_buff *skb1, const u32 len);
int len, __wsum csum); int skb_shift(struct sk_buff *tgt, struct sk_buff *skb, int shiftlen);
extern int skb_copy_bits(const struct sk_buff *skb, int offset, void skb_scrub_packet(struct sk_buff *skb, bool xnet);
void *to, int len);
extern int skb_store_bits(struct sk_buff *skb, int offset, struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features);
const void *from, int len);
extern __wsum skb_copy_and_csum_bits(const struct sk_buff *skb,
int offset, u8 *to, int len,
__wsum csum);
extern int skb_splice_bits(struct sk_buff *skb,
unsigned int offset,
struct pipe_inode_info *pipe,
unsigned int len,
unsigned int flags);
extern void skb_copy_and_csum_dev(const struct sk_buff *skb, u8 *to);
extern void skb_split(struct sk_buff *skb,
struct sk_buff *skb1, const u32 len);
extern int skb_shift(struct sk_buff *tgt, struct sk_buff *skb,
int shiftlen);
extern void skb_scrub_packet(struct sk_buff *skb, bool xnet);
extern struct sk_buff *skb_segment(struct sk_buff *skb,
netdev_features_t features);
static inline void *skb_header_pointer(const struct sk_buff *skb, int offset, static inline void *skb_header_pointer(const struct sk_buff *skb, int offset,
int len, void *buffer) int len, void *buffer)
...@@ -2440,7 +2413,7 @@ static inline void skb_copy_to_linear_data_offset(struct sk_buff *skb, ...@@ -2440,7 +2413,7 @@ static inline void skb_copy_to_linear_data_offset(struct sk_buff *skb,
memcpy(skb->data + offset, from, len); memcpy(skb->data + offset, from, len);
} }
extern void skb_init(void); void skb_init(void);
static inline ktime_t skb_get_ktime(const struct sk_buff *skb) static inline ktime_t skb_get_ktime(const struct sk_buff *skb)
{ {
...@@ -2483,12 +2456,12 @@ static inline ktime_t net_invalid_timestamp(void) ...@@ -2483,12 +2456,12 @@ static inline ktime_t net_invalid_timestamp(void)
return ktime_set(0, 0); return ktime_set(0, 0);
} }
extern void skb_timestamping_init(void); void skb_timestamping_init(void);
#ifdef CONFIG_NETWORK_PHY_TIMESTAMPING #ifdef CONFIG_NETWORK_PHY_TIMESTAMPING
extern void skb_clone_tx_timestamp(struct sk_buff *skb); void skb_clone_tx_timestamp(struct sk_buff *skb);
extern bool skb_defer_rx_timestamp(struct sk_buff *skb); bool skb_defer_rx_timestamp(struct sk_buff *skb);
#else /* CONFIG_NETWORK_PHY_TIMESTAMPING */ #else /* CONFIG_NETWORK_PHY_TIMESTAMPING */
...@@ -2529,8 +2502,8 @@ void skb_complete_tx_timestamp(struct sk_buff *skb, ...@@ -2529,8 +2502,8 @@ void skb_complete_tx_timestamp(struct sk_buff *skb,
* generates a software time stamp (otherwise), then queues the clone * generates a software time stamp (otherwise), then queues the clone
* to the error queue of the socket. Errors are silently ignored. * to the error queue of the socket. Errors are silently ignored.
*/ */
extern void skb_tstamp_tx(struct sk_buff *orig_skb, void skb_tstamp_tx(struct sk_buff *orig_skb,
struct skb_shared_hwtstamps *hwtstamps); struct skb_shared_hwtstamps *hwtstamps);
static inline void sw_tx_timestamp(struct sk_buff *skb) static inline void sw_tx_timestamp(struct sk_buff *skb)
{ {
...@@ -2562,8 +2535,8 @@ static inline void skb_tx_timestamp(struct sk_buff *skb) ...@@ -2562,8 +2535,8 @@ static inline void skb_tx_timestamp(struct sk_buff *skb)
*/ */
void skb_complete_wifi_ack(struct sk_buff *skb, bool acked); void skb_complete_wifi_ack(struct sk_buff *skb, bool acked);
extern __sum16 __skb_checksum_complete_head(struct sk_buff *skb, int len); __sum16 __skb_checksum_complete_head(struct sk_buff *skb, int len);
extern __sum16 __skb_checksum_complete(struct sk_buff *skb); __sum16 __skb_checksum_complete(struct sk_buff *skb);
static inline int skb_csum_unnecessary(const struct sk_buff *skb) static inline int skb_csum_unnecessary(const struct sk_buff *skb)
{ {
...@@ -2593,7 +2566,7 @@ static inline __sum16 skb_checksum_complete(struct sk_buff *skb) ...@@ -2593,7 +2566,7 @@ static inline __sum16 skb_checksum_complete(struct sk_buff *skb)
} }
#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
extern void nf_conntrack_destroy(struct nf_conntrack *nfct); void nf_conntrack_destroy(struct nf_conntrack *nfct);
static inline void nf_conntrack_put(struct nf_conntrack *nfct) static inline void nf_conntrack_put(struct nf_conntrack *nfct)
{ {
if (nfct && atomic_dec_and_test(&nfct->use)) if (nfct && atomic_dec_and_test(&nfct->use))
...@@ -2732,9 +2705,8 @@ static inline bool skb_rx_queue_recorded(const struct sk_buff *skb) ...@@ -2732,9 +2705,8 @@ static inline bool skb_rx_queue_recorded(const struct sk_buff *skb)
return skb->queue_mapping != 0; return skb->queue_mapping != 0;
} }
extern u16 __skb_tx_hash(const struct net_device *dev, u16 __skb_tx_hash(const struct net_device *dev, const struct sk_buff *skb,
const struct sk_buff *skb, unsigned int num_tx_queues);
unsigned int num_tx_queues);
#ifdef CONFIG_XFRM #ifdef CONFIG_XFRM
static inline struct sec_path *skb_sec_path(struct sk_buff *skb) static inline struct sec_path *skb_sec_path(struct sk_buff *skb)
...@@ -2788,7 +2760,7 @@ static inline bool skb_is_gso_v6(const struct sk_buff *skb) ...@@ -2788,7 +2760,7 @@ static inline bool skb_is_gso_v6(const struct sk_buff *skb)
return skb_shinfo(skb)->gso_type & SKB_GSO_TCPV6; return skb_shinfo(skb)->gso_type & SKB_GSO_TCPV6;
} }
extern void __skb_warn_lro_forwarding(const struct sk_buff *skb); void __skb_warn_lro_forwarding(const struct sk_buff *skb);
static inline bool skb_warn_if_lro(const struct sk_buff *skb) static inline bool skb_warn_if_lro(const struct sk_buff *skb)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment