diff options
Diffstat (limited to 'include/linux/netdevice.h')
| -rw-r--r-- | include/linux/netdevice.h | 20 | 
1 files changed, 17 insertions, 3 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 88292953aa6f..9eda1c31d1f7 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -332,6 +332,8 @@ struct napi_struct {  	struct net_device	*dev;  	struct gro_list		gro_hash[GRO_HASH_BUCKETS];  	struct sk_buff		*skb; +	struct list_head	rx_list; /* Pending GRO_NORMAL skbs */ +	int			rx_count; /* length of rx_list */  	struct hrtimer		timer;  	struct list_head	dev_list;  	struct hlist_node	napi_hash_node; @@ -845,6 +847,7 @@ enum tc_setup_type {  	TC_SETUP_QDISC_ETF,  	TC_SETUP_ROOT_QDISC,  	TC_SETUP_QDISC_GRED, +	TC_SETUP_QDISC_TAPRIO,  };  /* These structures hold the attributes of bpf state that are being passed @@ -899,6 +902,10 @@ struct netdev_bpf {  	};  }; +/* Flags for ndo_xsk_wakeup. */ +#define XDP_WAKEUP_RX (1 << 0) +#define XDP_WAKEUP_TX (1 << 1) +  #ifdef CONFIG_XFRM_OFFLOAD  struct xfrmdev_ops {  	int	(*xdo_dev_state_add) (struct xfrm_state *x); @@ -1225,6 +1232,12 @@ struct tlsdev_ops;   *	that got dropped are freed/returned via xdp_return_frame().   *	Returns negative number, means general error invoking ndo, meaning   *	no frames were xmit'ed and core-caller will free all frames. + * int (*ndo_xsk_wakeup)(struct net_device *dev, u32 queue_id, u32 flags); + *      This function is used to wake up the softirq, ksoftirqd or kthread + *	responsible for sending and/or receiving packets on a specific + *	queue id bound to an AF_XDP socket. The flags field specifies if + *	only RX, only Tx, or both should be woken up using the flags + *	XDP_WAKEUP_RX and XDP_WAKEUP_TX.   * struct devlink_port *(*ndo_get_devlink_port)(struct net_device *dev);   *	Get devlink port instance associated with a given netdev.   *	Called with a reference on the netdevice and devlink locks only, @@ -1424,8 +1437,8 @@ struct net_device_ops {  	int			(*ndo_xdp_xmit)(struct net_device *dev, int n,  						struct xdp_frame **xdp,  						u32 flags); -	int			(*ndo_xsk_async_xmit)(struct net_device *dev, -						      u32 queue_id); +	int			(*ndo_xsk_wakeup)(struct net_device *dev, +						  u32 queue_id, u32 flags);  	struct devlink_port *	(*ndo_get_devlink_port)(struct net_device *dev);  }; @@ -3270,7 +3283,7 @@ static inline void netdev_tx_completed_queue(struct netdev_queue *dev_queue,  	 */  	smp_mb(); -	if (dql_avail(&dev_queue->dql) < 0) +	if (unlikely(dql_avail(&dev_queue->dql) < 0))  		return;  	if (test_and_clear_bit(__QUEUE_STATE_STACK_XOFF, &dev_queue->state)) @@ -4239,6 +4252,7 @@ extern int		dev_weight_rx_bias;  extern int		dev_weight_tx_bias;  extern int		dev_rx_weight;  extern int		dev_tx_weight; +extern int		gro_normal_batch;  bool netdev_has_upper_dev(struct net_device *dev, struct net_device *upper_dev);  struct net_device *netdev_upper_get_next_dev_rcu(struct net_device *dev,  |