diff options
Diffstat (limited to 'include/linux/netdevice.h')
| -rw-r--r-- | include/linux/netdevice.h | 54 | 
1 files changed, 36 insertions, 18 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index ef789e1d679e..4c77f39ebd65 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -44,6 +44,7 @@  #include <net/dcbnl.h>  #endif  #include <net/netprio_cgroup.h> +#include <net/xdp.h>  #include <linux/netdev_features.h>  #include <linux/neighbour.h> @@ -686,6 +687,7 @@ struct netdev_rx_queue {  #endif  	struct kobject			kobj;  	struct net_device		*dev; +	struct xdp_rxq_info		xdp_rxq;  } ____cacheline_aligned_in_smp;  /* @@ -778,6 +780,7 @@ enum tc_setup_type {  	TC_SETUP_BLOCK,  	TC_SETUP_QDISC_CBS,  	TC_SETUP_QDISC_RED, +	TC_SETUP_QDISC_PRIO,  };  /* These structures hold the attributes of bpf state that are being passed @@ -802,9 +805,11 @@ enum bpf_netdev_command {  	BPF_OFFLOAD_VERIFIER_PREP,  	BPF_OFFLOAD_TRANSLATE,  	BPF_OFFLOAD_DESTROY, +	BPF_OFFLOAD_MAP_ALLOC, +	BPF_OFFLOAD_MAP_FREE,  }; -struct bpf_ext_analyzer_ops; +struct bpf_prog_offload_ops;  struct netlink_ext_ack;  struct netdev_bpf { @@ -820,16 +825,22 @@ struct netdev_bpf {  		struct {  			u8 prog_attached;  			u32 prog_id; +			/* flags with which program was installed */ +			u32 prog_flags;  		};  		/* BPF_OFFLOAD_VERIFIER_PREP */  		struct {  			struct bpf_prog *prog; -			const struct bpf_ext_analyzer_ops *ops; /* callee set */ +			const struct bpf_prog_offload_ops *ops; /* callee set */  		} verifier;  		/* BPF_OFFLOAD_TRANSLATE, BPF_OFFLOAD_DESTROY */  		struct {  			struct bpf_prog *prog;  		} offload; +		/* BPF_OFFLOAD_MAP_ALLOC, BPF_OFFLOAD_MAP_FREE */ +		struct { +			struct bpf_offloaded_map *offmap; +		};  	};  }; @@ -840,6 +851,7 @@ struct xfrmdev_ops {  	void	(*xdo_dev_state_free) (struct xfrm_state *x);  	bool	(*xdo_dev_offload_ok) (struct sk_buff *skb,  				       struct xfrm_state *x); +	void	(*xdo_dev_state_advance_esn) (struct xfrm_state *x);  };  #endif @@ -1458,8 +1470,6 @@ enum netdev_priv_flags {   *	@base_addr:	Device I/O address   *	@irq:		Device IRQ number   * - *	@carrier_changes:	Stats to monitor carrier on<->off transitions - *   *	@state:		Generic network queuing layer state, see netdev_state_t   *	@dev_list:	The global list of network devices   *	@napi_list:	List entry used for polling NAPI devices @@ -1495,6 +1505,8 @@ enum netdev_priv_flags {   *			do not use this in drivers   *	@rx_nohandler:	nohandler dropped packets by core network on   *			inactive devices, do not use this in drivers + *	@carrier_up_count:	Number of times the carrier has been up + *	@carrier_down_count:	Number of times the carrier has been down   *   *	@wireless_handlers:	List of functions to handle Wireless Extensions,   *				instead of ioctl, @@ -1669,8 +1681,6 @@ struct net_device {  	unsigned long		base_addr;  	int			irq; -	atomic_t		carrier_changes; -  	/*  	 *	Some hardware also needs these fields (state,dev_list,  	 *	napi_list,unreg_list,close_list) but they are not @@ -1708,6 +1718,10 @@ struct net_device {  	atomic_long_t		tx_dropped;  	atomic_long_t		rx_nohandler; +	/* Stats to monitor link on/off, flapping */ +	atomic_t		carrier_up_count; +	atomic_t		carrier_down_count; +  #ifdef CONFIG_WIRELESS_EXT  	const struct iw_handler_def *wireless_handlers;  	struct iw_public_data	*wireless_data; @@ -1724,7 +1738,7 @@ struct net_device {  	const struct ndisc_ops *ndisc_ops;  #endif -#ifdef CONFIG_XFRM +#ifdef CONFIG_XFRM_OFFLOAD  	const struct xfrmdev_ops *xfrmdev_ops;  #endif @@ -1801,12 +1815,9 @@ struct net_device {  	/* Interface address info used in eth_type_trans() */  	unsigned char		*dev_addr; -#ifdef CONFIG_SYSFS  	struct netdev_rx_queue	*_rx; -  	unsigned int		num_rx_queues;  	unsigned int		real_num_rx_queues; -#endif  	struct bpf_prog __rcu	*xdp_prog;  	unsigned long		gro_flush_timeout; @@ -2751,7 +2762,8 @@ static inline bool dev_validate_header(const struct net_device *dev,  	return false;  } -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, int size);  int register_gifconf(unsigned int family, gifconf_func_t *gifconf);  static inline int unregister_gifconf(unsigned int family)  { @@ -2791,7 +2803,9 @@ struct softnet_data {  	struct Qdisc		*output_queue;  	struct Qdisc		**output_queue_tailp;  	struct sk_buff		*completion_queue; - +#ifdef CONFIG_XFRM_OFFLOAD +	struct sk_buff_head	xfrm_backlog; +#endif  #ifdef CONFIG_RPS  	/* input_queue_head should be written by cpu owning this struct,  	 * and only read by other cpus. Worth using a cache line. @@ -3302,7 +3316,9 @@ int netdev_rx_handler_register(struct net_device *dev,  void netdev_rx_handler_unregister(struct net_device *dev);  bool dev_valid_name(const char *name); -int dev_ioctl(struct net *net, unsigned int cmd, void __user *); +int dev_ioctl(struct net *net, unsigned int cmd, struct ifreq *ifr, +		bool *need_copyout); +int dev_ifconf(struct net *net, struct ifconf *, int);  int dev_ethtool(struct net *net, struct ifreq *);  unsigned int dev_get_flags(const struct net_device *);  int __dev_change_flags(struct net_device *, unsigned int flags); @@ -3315,6 +3331,7 @@ int dev_get_alias(const struct net_device *, char *, size_t);  int dev_change_net_namespace(struct net_device *, struct net *, const char *);  int __dev_set_mtu(struct net_device *, int);  int dev_set_mtu(struct net_device *, int); +int dev_change_tx_queue_len(struct net_device *, unsigned long);  void dev_set_group(struct net_device *, int);  int dev_set_mac_address(struct net_device *, struct sockaddr *);  int dev_change_carrier(struct net_device *, bool new_carrier); @@ -3323,14 +3340,15 @@ int dev_get_phys_port_id(struct net_device *dev,  int dev_get_phys_port_name(struct net_device *dev,  			   char *name, size_t len);  int dev_change_proto_down(struct net_device *dev, bool proto_down); -struct sk_buff *validate_xmit_skb_list(struct sk_buff *skb, struct net_device *dev); +struct sk_buff *validate_xmit_skb_list(struct sk_buff *skb, struct net_device *dev, bool *again);  struct sk_buff *dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,  				    struct netdev_queue *txq, int *ret);  typedef int (*bpf_op_t)(struct net_device *dev, struct netdev_bpf *bpf);  int dev_change_xdp_fd(struct net_device *dev, struct netlink_ext_ack *extack,  		      int fd, u32 flags); -u8 __dev_xdp_attached(struct net_device *dev, bpf_op_t xdp_op, u32 *prog_id); +void __dev_xdp_query(struct net_device *dev, bpf_op_t xdp_op, +		     struct netdev_bpf *xdp);  int __dev_forward_skb(struct net_device *dev, struct sk_buff *skb);  int dev_forward_skb(struct net_device *dev, struct sk_buff *skb); @@ -4399,11 +4417,11 @@ do {								\   * file/line information and a backtrace.   */  #define netdev_WARN(dev, format, args...)			\ -	WARN(1, "netdevice: %s%s\n" format, netdev_name(dev),	\ +	WARN(1, "netdevice: %s%s: " format, netdev_name(dev),	\  	     netdev_reg_state(dev), ##args) -#define netdev_WARN_ONCE(dev, condition, format, arg...)		\ -	WARN_ONCE(1, "netdevice: %s%s\n" format, netdev_name(dev)	\ +#define netdev_WARN_ONCE(dev, format, args...)				\ +	WARN_ONCE(1, "netdevice: %s%s: " format, netdev_name(dev),	\  		  netdev_reg_state(dev), ##args)  /* netif printk helpers, similar to netdev_printk */  |