diff options
Diffstat (limited to 'drivers/net/hyperv/hyperv_net.h')
| -rw-r--r-- | drivers/net/hyperv/hyperv_net.h | 21 | 
1 files changed, 20 insertions, 1 deletions
diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h index dc44819946e6..abda736e7c7d 100644 --- a/drivers/net/hyperv/hyperv_net.h +++ b/drivers/net/hyperv/hyperv_net.h @@ -142,6 +142,8 @@ struct netvsc_device_info {  	u32  send_section_size;  	u32  recv_section_size; +	struct bpf_prog *bprog; +  	u8 rss_key[NETVSC_HASH_KEYLEN];  }; @@ -189,7 +191,8 @@ int netvsc_send(struct net_device *net,  		struct hv_netvsc_packet *packet,  		struct rndis_message *rndis_msg,  		struct hv_page_buffer *page_buffer, -		struct sk_buff *skb); +		struct sk_buff *skb, +		bool xdp_tx);  void netvsc_linkstatus_callback(struct net_device *net,  				struct rndis_message *resp);  int netvsc_recv_callback(struct net_device *net, @@ -198,6 +201,16 @@ int netvsc_recv_callback(struct net_device *net,  void netvsc_channel_cb(void *context);  int netvsc_poll(struct napi_struct *napi, int budget); +u32 netvsc_run_xdp(struct net_device *ndev, struct netvsc_channel *nvchan, +		   struct xdp_buff *xdp); +unsigned int netvsc_xdp_fraglen(unsigned int len); +struct bpf_prog *netvsc_xdp_get(struct netvsc_device *nvdev); +int netvsc_xdp_set(struct net_device *dev, struct bpf_prog *prog, +		   struct netlink_ext_ack *extack, +		   struct netvsc_device *nvdev); +int netvsc_vf_setxdp(struct net_device *vf_netdev, struct bpf_prog *prog); +int netvsc_bpf(struct net_device *dev, struct netdev_bpf *bpf); +  int rndis_set_subchannel(struct net_device *ndev,  			 struct netvsc_device *nvdev,  			 struct netvsc_device_info *dev_info); @@ -832,6 +845,8 @@ struct nvsp_message {  #define RNDIS_MAX_PKT_DEFAULT 8  #define RNDIS_PKT_ALIGN_DEFAULT 8 +#define NETVSC_XDP_HDRM 256 +  struct multi_send_data {  	struct sk_buff *skb; /* skb containing the pkt */  	struct hv_netvsc_packet *pkt; /* netvsc pkt pending */ @@ -867,6 +882,7 @@ struct netvsc_stats {  	u64 bytes;  	u64 broadcast;  	u64 multicast; +	u64 xdp_drop;  	struct u64_stats_sync syncp;  }; @@ -972,6 +988,9 @@ struct netvsc_channel {  	atomic_t queue_sends;  	struct nvsc_rsc rsc; +	struct bpf_prog __rcu *bpf_prog; +	struct xdp_rxq_info xdp_rxq; +  	struct netvsc_stats tx_stats;  	struct netvsc_stats rx_stats;  };  |