mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git
synced 2026-04-05 00:08:32 -04:00
tun: remove unnecessary tun_xdp_hdr structure
With f95f0f95cfb7("net, xdp: Introduce xdp_init_buff utility routine"),
buffer length could be stored as frame size so there's no need to have
a dedicated tun_xdp_hdr structure. We can simply store virtio net
header instead.
Acked-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Link: https://patch.msgid.link/20250701010352.74515-1-jasowang@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
285c895fba
commit
4d313f2bd2
@@ -1044,9 +1044,8 @@ static const struct file_operations tap_fops = {
|
||||
|
||||
static int tap_get_user_xdp(struct tap_queue *q, struct xdp_buff *xdp)
|
||||
{
|
||||
struct tun_xdp_hdr *hdr = xdp->data_hard_start;
|
||||
struct virtio_net_hdr *gso = &hdr->gso;
|
||||
int buflen = hdr->buflen;
|
||||
struct virtio_net_hdr *gso = xdp->data_hard_start;
|
||||
int buflen = xdp->frame_sz;
|
||||
int vnet_hdr_len = 0;
|
||||
struct tap_dev *tap;
|
||||
struct sk_buff *skb;
|
||||
|
||||
@@ -2356,13 +2356,12 @@ static int tun_xdp_one(struct tun_struct *tun,
|
||||
struct tun_page *tpage)
|
||||
{
|
||||
unsigned int datasize = xdp->data_end - xdp->data;
|
||||
struct tun_xdp_hdr *hdr = xdp->data_hard_start;
|
||||
struct virtio_net_hdr *gso = &hdr->gso;
|
||||
struct virtio_net_hdr *gso = xdp->data_hard_start;
|
||||
struct bpf_prog *xdp_prog;
|
||||
struct sk_buff *skb = NULL;
|
||||
struct sk_buff_head *queue;
|
||||
u32 rxhash = 0, act;
|
||||
int buflen = hdr->buflen;
|
||||
int buflen = xdp->frame_sz;
|
||||
int metasize = 0;
|
||||
int ret = 0;
|
||||
bool skb_xdp = false;
|
||||
|
||||
@@ -668,7 +668,6 @@ static int vhost_net_build_xdp(struct vhost_net_virtqueue *nvq,
|
||||
struct socket *sock = vhost_vq_get_backend(vq);
|
||||
struct virtio_net_hdr *gso;
|
||||
struct xdp_buff *xdp = &nvq->xdp[nvq->batched_xdp];
|
||||
struct tun_xdp_hdr *hdr;
|
||||
size_t len = iov_iter_count(from);
|
||||
int headroom = vhost_sock_xdp(sock) ? XDP_PACKET_HEADROOM : 0;
|
||||
int buflen = SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
|
||||
@@ -691,15 +690,13 @@ static int vhost_net_build_xdp(struct vhost_net_virtqueue *nvq,
|
||||
if (unlikely(!buf))
|
||||
return -ENOMEM;
|
||||
|
||||
copied = copy_from_iter(buf + offsetof(struct tun_xdp_hdr, gso),
|
||||
sock_hlen, from);
|
||||
copied = copy_from_iter(buf, sock_hlen, from);
|
||||
if (copied != sock_hlen) {
|
||||
ret = -EFAULT;
|
||||
goto err;
|
||||
}
|
||||
|
||||
hdr = buf;
|
||||
gso = &hdr->gso;
|
||||
gso = buf;
|
||||
|
||||
if (!sock_hlen)
|
||||
memset(buf, 0, pad);
|
||||
@@ -727,7 +724,6 @@ static int vhost_net_build_xdp(struct vhost_net_virtqueue *nvq,
|
||||
|
||||
xdp_init_buff(xdp, buflen, NULL);
|
||||
xdp_prepare_buff(xdp, buf, pad, len, true);
|
||||
hdr->buflen = buflen;
|
||||
|
||||
++nvq->batched_xdp;
|
||||
|
||||
|
||||
@@ -19,11 +19,6 @@ struct tun_msg_ctl {
|
||||
void *ptr;
|
||||
};
|
||||
|
||||
struct tun_xdp_hdr {
|
||||
int buflen;
|
||||
struct virtio_net_hdr gso;
|
||||
};
|
||||
|
||||
#if defined(CONFIG_TUN) || defined(CONFIG_TUN_MODULE)
|
||||
struct socket *tun_get_socket(struct file *);
|
||||
struct ptr_ring *tun_get_tx_ring(struct file *file);
|
||||
|
||||
Reference in New Issue
Block a user