search for: tap_queue

Displaying 20 results from an estimated 35 matches for "tap_queue".

2018 Sep 06
1
[PATCH net-next 08/11] tun: switch to new type of msg_control
...gt; --- a/drivers/net/tap.c > +++ b/drivers/net/tap.c > @@ -619,7 +619,7 @@ static inline struct sk_buff *tap_alloc_skb(struct sock *sk, size_t prepad, > #define TAP_RESERVE HH_DATA_OFF(ETH_HLEN) > > /* Get packet from user space buffer */ > -static ssize_t tap_get_user(struct tap_queue *q, struct msghdr *m, > +static ssize_t tap_get_user(struct tap_queue *q, void *msg_control, > struct iov_iter *from, int noblock) > { > int good_linear = SKB_MAX_HEAD(TAP_RESERVE); > @@ -663,7 +663,7 @@ static ssize_t tap_get_user(struct tap_queue *q, struct msghdr *m, &g...
2018 Sep 06
0
[PATCH net-next 08/11] tun: switch to new type of msg_control
...f0f7cd977667..7996ed7cbf18 100644 --- a/drivers/net/tap.c +++ b/drivers/net/tap.c @@ -619,7 +619,7 @@ static inline struct sk_buff *tap_alloc_skb(struct sock *sk, size_t prepad, #define TAP_RESERVE HH_DATA_OFF(ETH_HLEN) /* Get packet from user space buffer */ -static ssize_t tap_get_user(struct tap_queue *q, struct msghdr *m, +static ssize_t tap_get_user(struct tap_queue *q, void *msg_control, struct iov_iter *from, int noblock) { int good_linear = SKB_MAX_HEAD(TAP_RESERVE); @@ -663,7 +663,7 @@ static ssize_t tap_get_user(struct tap_queue *q, struct msghdr *m, if (unlikely(len < ETH...
2018 Sep 06
1
[PATCH net-next 10/11] tap: accept an array of XDP buffs through sendmsg()
...ff --git a/drivers/net/tap.c b/drivers/net/tap.c > index 7996ed7cbf18..50eb7bf22225 100644 > --- a/drivers/net/tap.c > +++ b/drivers/net/tap.c > @@ -1146,14 +1146,83 @@ static const struct file_operations tap_fops = { > #endif > }; > > +static int tap_get_user_xdp(struct tap_queue *q, struct xdp_buff *xdp) > +{ > + struct virtio_net_hdr *gso = xdp->data_hard_start + sizeof(int); > + int buflen = *(int *)xdp->data_hard_start; > + int vnet_hdr_len = 0; > + struct tap_dev *tap; > + struct sk_buff *skb; > + int err, depth; > + > + if (q->flags...
2017 Dec 01
0
[PATCH 3/3] tap: free skb if flags error
...et/tap.c | 14 ++++++++++---- > 1 file changed, 10 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/tap.c b/drivers/net/tap.c > index e9489b8..0a886fda 100644 > --- a/drivers/net/tap.c > +++ b/drivers/net/tap.c > @@ -829,8 +829,11 @@ static ssize_t tap_do_read(struct tap_queue *q, > DEFINE_WAIT(wait); > ssize_t ret = 0; > > - if (!iov_iter_count(to)) > + if (!iov_iter_count(to)) { > + if (skb) > + kfree_skb(skb); > return 0; > + } > > if (skb) > goto put; > @@ -1154,11 +1157,14 @@ static int tap_recvmsg(struct soc...
2017 Dec 01
0
[PATCH 3/3] tap: free skb if flags error
...ux.vnet.ibm.com> --- drivers/net/tap.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/net/tap.c b/drivers/net/tap.c index e9489b8..0a886fda 100644 --- a/drivers/net/tap.c +++ b/drivers/net/tap.c @@ -829,8 +829,11 @@ static ssize_t tap_do_read(struct tap_queue *q, DEFINE_WAIT(wait); ssize_t ret = 0; - if (!iov_iter_count(to)) + if (!iov_iter_count(to)) { + if (skb) + kfree_skb(skb); return 0; + } if (skb) goto put; @@ -1154,11 +1157,14 @@ static int tap_recvmsg(struct socket *sock, struct msghdr *m, size_t total_len, int flag...
2018 Sep 06
0
[PATCH net-next 10/11] tap: accept an array of XDP buffs through sendmsg()
...ed, 71 insertions(+), 2 deletions(-) diff --git a/drivers/net/tap.c b/drivers/net/tap.c index 7996ed7cbf18..50eb7bf22225 100644 --- a/drivers/net/tap.c +++ b/drivers/net/tap.c @@ -1146,14 +1146,83 @@ static const struct file_operations tap_fops = { #endif }; +static int tap_get_user_xdp(struct tap_queue *q, struct xdp_buff *xdp) +{ + struct virtio_net_hdr *gso = xdp->data_hard_start + sizeof(int); + int buflen = *(int *)xdp->data_hard_start; + int vnet_hdr_len = 0; + struct tap_dev *tap; + struct sk_buff *skb; + int err, depth; + + if (q->flags & IFF_VNET_HDR) + vnet_hdr_len = READ_O...
2017 Dec 01
9
[PATCH net,stable v4 0/3] vhost: fix a few skb leaks
From: Wei Xu <wexu at redhat.com> Matthew found a roughly 40% tcp throughput regression with commit c67df11f(vhost_net: try batch dequing from skb array) as discussed in the following thread: https://www.mail-archive.com/netdev at vger.kernel.org/msg187936.html v4: - fix zero iov iterator count in tap/tap_do_read()(Jason) - don't put tun in case of EBADFD(Jason) - Replace
2017 Dec 01
9
[PATCH net,stable v4 0/3] vhost: fix a few skb leaks
From: Wei Xu <wexu at redhat.com> Matthew found a roughly 40% tcp throughput regression with commit c67df11f(vhost_net: try batch dequing from skb array) as discussed in the following thread: https://www.mail-archive.com/netdev at vger.kernel.org/msg187936.html v4: - fix zero iov iterator count in tap/tap_do_read()(Jason) - don't put tun in case of EBADFD(Jason) - Replace
2018 Sep 06
22
[PATCH net-next 00/11] Vhost_net TX batching
Hi all: This series tries to batch submitting packets to underlayer socket through msg_control during sendmsg(). This is done by: 1) Doing userspace copy inside vhost_net 2) Build XDP buff 3) Batch at most 64 (VHOST_NET_BATCH) XDP buffs and submit them once through msg_control during sendmsg(). 4) Underlayer sockets can use XDP buffs directly when XDP is enalbed, or build skb based on XDP
2017 Dec 01
6
[PATCH net,stable v3] vhost: fix a few skb leaks
From: Wei Xu <wexu at redhat.com> Matthew found a roughly 40% tcp throughput regression with commit c67df11f(vhost_net: try batch dequing from skb array) as discussed in the following thread: https://www.mail-archive.com/netdev at vger.kernel.org/msg187936.html This is v3. v3: - move freeing skb from vhost to tun/tap recvmsg() to not confuse the callers. v2: - add Matthew as the
2017 Dec 01
6
[PATCH net,stable v3] vhost: fix a few skb leaks
From: Wei Xu <wexu at redhat.com> Matthew found a roughly 40% tcp throughput regression with commit c67df11f(vhost_net: try batch dequing from skb array) as discussed in the following thread: https://www.mail-archive.com/netdev at vger.kernel.org/msg187936.html This is v3. v3: - move freeing skb from vhost to tun/tap recvmsg() to not confuse the callers. v2: - add Matthew as the
2017 Dec 01
0
[PATCH 3/3] tap: free skb if flags error
...f --git a/drivers/net/tap.c b/drivers/net/tap.c > index e9489b8..1c66b75 100644 > --- a/drivers/net/tap.c > +++ b/drivers/net/tap.c > @@ -1154,9 +1154,13 @@ static int tap_recvmsg(struct socket *sock, struct msghdr *m, > size_t total_len, int flags) > { > struct tap_queue *q = container_of(sock, struct tap_queue, sock); > + struct sk_buff *skb = m->msg_control; > int ret; > - if (flags & ~(MSG_DONTWAIT|MSG_TRUNC)) > + if (flags & ~(MSG_DONTWAIT|MSG_TRUNC)) { > + if (skb) > + kfree_skb(skb); > return -EINVAL; > + } >...
2017 Dec 01
0
[PATCH 3/3] tap: free skb if flags error
...d, 5 insertions(+), 1 deletion(-) diff --git a/drivers/net/tap.c b/drivers/net/tap.c index e9489b8..1c66b75 100644 --- a/drivers/net/tap.c +++ b/drivers/net/tap.c @@ -1154,9 +1154,13 @@ static int tap_recvmsg(struct socket *sock, struct msghdr *m, size_t total_len, int flags) { struct tap_queue *q = container_of(sock, struct tap_queue, sock); + struct sk_buff *skb = m->msg_control; int ret; - if (flags & ~(MSG_DONTWAIT|MSG_TRUNC)) + if (flags & ~(MSG_DONTWAIT|MSG_TRUNC)) { + if (skb) + kfree_skb(skb); return -EINVAL; + } ret = tap_do_read(q, &m->msg_iter, flags...
2018 Sep 12
14
[PATCH net-next V2 00/11] vhost_net TX batching
Hi all: This series tries to batch submitting packets to underlayer socket through msg_control during sendmsg(). This is done by: 1) Doing userspace copy inside vhost_net 2) Build XDP buff 3) Batch at most 64 (VHOST_NET_BATCH) XDP buffs and submit them once through msg_control during sendmsg(). 4) Underlayer sockets can use XDP buffs directly when XDP is enalbed, or build skb based on XDP
2018 Sep 12
14
[PATCH net-next V2 00/11] vhost_net TX batching
Hi all: This series tries to batch submitting packets to underlayer socket through msg_control during sendmsg(). This is done by: 1) Doing userspace copy inside vhost_net 2) Build XDP buff 3) Batch at most 64 (VHOST_NET_BATCH) XDP buffs and submit them once through msg_control during sendmsg(). 4) Underlayer sockets can use XDP buffs directly when XDP is enalbed, or build skb based on XDP
2018 May 02
2
[PATCH V2 net-next 5/6] macvlan/macvtap: Add support for SCTP checksum offload.
...& > - !(features & NETIF_F_CSUM_MASK) && > - skb_checksum_help(skb)) > + skb_csum_hwoffload_help(skb, features)) > goto drop; > if (ptr_ring_produce(&q->ring, skb)) > goto drop; > @@ -945,6 +944,9 @@ static int set_offload(struct tap_queue *q, unsigned long arg) > } > } > > + if (arg & TUN_F_SCTP_CSUM) > + feature_mask |= NETIF_F_SCTP_CRC; > + so this still affects TX, shouldn't this affect RX instead? > /* tun/tap driver inverts the usage for TSO offloads, where > * setting the TSO bit...
2018 May 02
2
[PATCH V2 net-next 5/6] macvlan/macvtap: Add support for SCTP checksum offload.
...& > - !(features & NETIF_F_CSUM_MASK) && > - skb_checksum_help(skb)) > + skb_csum_hwoffload_help(skb, features)) > goto drop; > if (ptr_ring_produce(&q->ring, skb)) > goto drop; > @@ -945,6 +944,9 @@ static int set_offload(struct tap_queue *q, unsigned long arg) > } > } > > + if (arg & TUN_F_SCTP_CSUM) > + feature_mask |= NETIF_F_SCTP_CRC; > + so this still affects TX, shouldn't this affect RX instead? > /* tun/tap driver inverts the usage for TSO offloads, where > * setting the TSO bit...
2018 May 02
2
[PATCH V2 net-next 5/6] macvlan/macvtap: Add support for SCTP checksum offload.
...&& > >> - skb_checksum_help(skb)) > >> + skb_csum_hwoffload_help(skb, features)) > >> goto drop; > >> if (ptr_ring_produce(&q->ring, skb)) > >> goto drop; > >> @@ -945,6 +944,9 @@ static int set_offload(struct tap_queue *q, unsigned long arg) > >> } > >> } > >> > >> + if (arg & TUN_F_SCTP_CSUM) > >> + feature_mask |= NETIF_F_SCTP_CRC; > >> + > > > > so this still affects TX, shouldn't this affect RX instead? > > There is no b...
2018 May 02
2
[PATCH V2 net-next 5/6] macvlan/macvtap: Add support for SCTP checksum offload.
...&& > >> - skb_checksum_help(skb)) > >> + skb_csum_hwoffload_help(skb, features)) > >> goto drop; > >> if (ptr_ring_produce(&q->ring, skb)) > >> goto drop; > >> @@ -945,6 +944,9 @@ static int set_offload(struct tap_queue *q, unsigned long arg) > >> } > >> } > >> > >> + if (arg & TUN_F_SCTP_CSUM) > >> + feature_mask |= NETIF_F_SCTP_CRC; > >> + > > > > so this still affects TX, shouldn't this affect RX instead? > > There is no b...
2017 Mar 21
12
[PATCH net-next 0/8] vhost-net rx batching
Hi all: This series tries to implement rx batching for vhost-net. This is done by batching the dequeuing from skb_array which was exported by underlayer socket and pass the sbk back through msg_control to finish userspace copying. Tests shows at most 19% improvment on rx pps. Please review. Thanks Jason Wang (8): ptr_ring: introduce batch dequeuing skb_array: introduce batch dequeuing