search for: handle_tx_copy

Displaying 20 results from an estimated 62 matches for "handle_tx_copy".

2019 May 12
2
[PATCH net] vhost_net: fix possible infinite loop
...etions(-) > > > > > > > > diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c > > > > index df51a35..fb46e6b 100644 > > > > --- a/drivers/vhost/net.c > > > > +++ b/drivers/vhost/net.c > > > > @@ -778,8 +778,9 @@ static void handle_tx_copy(struct vhost_net > > > > *net, struct socket *sock) > > > > ????? int err; > > > > ????? int sent_pkts = 0; > > > > ????? bool sock_can_batch = (sock->sk->sk_sndbuf == INT_MAX); > > > > +??? bool next_round = false; > > > &g...
2019 May 12
2
[PATCH net] vhost_net: fix possible infinite loop
...etions(-) > > > > > > > > diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c > > > > index df51a35..fb46e6b 100644 > > > > --- a/drivers/vhost/net.c > > > > +++ b/drivers/vhost/net.c > > > > @@ -778,8 +778,9 @@ static void handle_tx_copy(struct vhost_net > > > > *net, struct socket *sock) > > > > ????? int err; > > > > ????? int sent_pkts = 0; > > > > ????? bool sock_can_batch = (sock->sk->sk_sndbuf == INT_MAX); > > > > +??? bool next_round = false; > > > &g...
2019 May 14
1
[PATCH net] vhost_net: fix possible infinite loop
...> > diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c > > > > > > index df51a35..fb46e6b 100644 > > > > > > --- a/drivers/vhost/net.c > > > > > > +++ b/drivers/vhost/net.c > > > > > > @@ -778,8 +778,9 @@ static void handle_tx_copy(struct vhost_net > > > > > > *net, struct socket *sock) > > > > > > ????? int err; > > > > > > ????? int sent_pkts = 0; > > > > > > ????? bool sock_can_batch = (sock->sk->sk_sndbuf == INT_MAX); > > > > >...
2019 Apr 26
2
[PATCH net] vhost_net: fix possible infinite loop
...--------------- >> 1 file changed, 21 insertions(+), 20 deletions(-) >> >> diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c >> index df51a35..fb46e6b 100644 >> --- a/drivers/vhost/net.c >> +++ b/drivers/vhost/net.c >> @@ -778,8 +778,9 @@ static void handle_tx_copy(struct vhost_net *net, struct socket *sock) >> int err; >> int sent_pkts = 0; >> bool sock_can_batch = (sock->sk->sk_sndbuf == INT_MAX); >> + bool next_round = false; >> >> - for (;;) { >> + do { >> bool busyloop_intr = false; &g...
2019 Apr 26
2
[PATCH net] vhost_net: fix possible infinite loop
...--------------- >> 1 file changed, 21 insertions(+), 20 deletions(-) >> >> diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c >> index df51a35..fb46e6b 100644 >> --- a/drivers/vhost/net.c >> +++ b/drivers/vhost/net.c >> @@ -778,8 +778,9 @@ static void handle_tx_copy(struct vhost_net *net, struct socket *sock) >> int err; >> int sent_pkts = 0; >> bool sock_can_batch = (sock->sk->sk_sndbuf == INT_MAX); >> + bool next_round = false; >> >> - for (;;) { >> + do { >> bool busyloop_intr = false; &g...
2019 May 13
0
[PATCH net] vhost_net: fix possible infinite loop
...s(-) >>>>> >>>>> diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c >>>>> index df51a35..fb46e6b 100644 >>>>> --- a/drivers/vhost/net.c >>>>> +++ b/drivers/vhost/net.c >>>>> @@ -778,8 +778,9 @@ static void handle_tx_copy(struct vhost_net >>>>> *net, struct socket *sock) >>>>> ????? int err; >>>>> ????? int sent_pkts = 0; >>>>> ????? bool sock_can_batch = (sock->sk->sk_sndbuf == INT_MAX); >>>>> +??? bool next_round = false; >>&...
2018 Sep 07
1
[PATCH net-next 11/11] vhost_net: batch submitting XDP buffers to underlayer sockets
On Fri, Sep 07, 2018 at 03:41:52PM +0800, Jason Wang wrote: > > > @@ -556,10 +667,14 @@ static void handle_tx_copy(struct vhost_net *net, struct socket *sock) > > > size_t len, total_len = 0; > > > int err; > > > int sent_pkts = 0; > > > + bool bulking = (sock->sk->sk_sndbuf == INT_MAX); > > What does bulking mean? > > The name is misleading, it me...
2018 May 21
0
[RFC PATCH net-next 12/12] vhost_net: batch submitting XDP buffers to underlayer sockets
...err() */ + vq_err(&nvq->vq, "sendmsg err!\n"); + return; + } + vhost_add_used_and_signal_n(&net->dev, &nvq->vq, nvq->vq.heads, n); +} + +/* Expects to be always run from workqueue - which acts as + * read-size critical section for our kind of RCU. */ static void handle_tx_copy(struct vhost_net *net) { struct vhost_net_virtqueue *nvq = &net->vqs[VHOST_NET_VQ_TX]; struct vhost_virtqueue *vq = &nvq->vq; - struct xdp_buff xdp; unsigned out, in; int head; struct msghdr msg = { @@ -586,7 +613,6 @@ static void handle_tx_copy(struct vhost_net *net) siz...
2019 Apr 25
2
[PATCH net] vhost_net: fix possible infinite loop
...om> --- drivers/vhost/net.c | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c index df51a35..fb46e6b 100644 --- a/drivers/vhost/net.c +++ b/drivers/vhost/net.c @@ -778,8 +778,9 @@ static void handle_tx_copy(struct vhost_net *net, struct socket *sock) int err; int sent_pkts = 0; bool sock_can_batch = (sock->sk->sk_sndbuf == INT_MAX); + bool next_round = false; - for (;;) { + do { bool busyloop_intr = false; if (nvq->done_idx == VHOST_NET_BATCH) @@ -845,11 +846,10 @@ static void...
2019 Apr 25
2
[PATCH net] vhost_net: fix possible infinite loop
...om> --- drivers/vhost/net.c | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c index df51a35..fb46e6b 100644 --- a/drivers/vhost/net.c +++ b/drivers/vhost/net.c @@ -778,8 +778,9 @@ static void handle_tx_copy(struct vhost_net *net, struct socket *sock) int err; int sent_pkts = 0; bool sock_can_batch = (sock->sk->sk_sndbuf == INT_MAX); + bool next_round = false; - for (;;) { + do { bool busyloop_intr = false; if (nvq->done_idx == VHOST_NET_BATCH) @@ -845,11 +846,10 @@ static void...
2018 Sep 06
2
[PATCH net-next 11/11] vhost_net: batch submitting XDP buffers to underlayer sockets
...p->data = buf + pad; > + xdp->data_end = xdp->data + len; > + *(int *)(xdp->data_hard_start) = buflen; > + > + get_page(alloc_frag->page); > + alloc_frag->offset += buflen; > + > + ++nvq->batched_xdp; > + > + return 0; > +} > + > static void handle_tx_copy(struct vhost_net *net, struct socket *sock) > { > struct vhost_net_virtqueue *nvq = &net->vqs[VHOST_NET_VQ_TX]; > @@ -556,10 +667,14 @@ static void handle_tx_copy(struct vhost_net *net, struct socket *sock) > size_t len, total_len = 0; > int err; > int sent_pkts =...
2018 Sep 06
2
[PATCH net-next 11/11] vhost_net: batch submitting XDP buffers to underlayer sockets
...p->data = buf + pad; > + xdp->data_end = xdp->data + len; > + *(int *)(xdp->data_hard_start) = buflen; > + > + get_page(alloc_frag->page); > + alloc_frag->offset += buflen; > + > + ++nvq->batched_xdp; > + > + return 0; > +} > + > static void handle_tx_copy(struct vhost_net *net, struct socket *sock) > { > struct vhost_net_virtqueue *nvq = &net->vqs[VHOST_NET_VQ_TX]; > @@ -556,10 +667,14 @@ static void handle_tx_copy(struct vhost_net *net, struct socket *sock) > size_t len, total_len = 0; > int err; > int sent_pkts =...
2018 May 21
20
[RFC PATCH net-next 00/12] XDP batching for TUN/vhost_net
Hi all: We do not support XDP batching for TUN since it can only receive one packet a time from vhost_net. This series tries to remove this limitation by: - introduce a TUN specific msg_control that can hold a pointer to an array of XDP buffs - try copy and build XDP buff in vhost_net - store XDP buffs in an array and submit them once for every N packets from vhost_net - since TUN can only
2020 Jun 03
1
[PATCH RFC 08/13] vhost/net: convert to new API: heads->bufs
..._tx_get_vq_desc(net, nvq, out, in, msg, busyloop_intr); > + ret = vhost_net_tx_get_vq_desc(net, nvq, buf, out, in, msg, busyloop_intr); > > - if (ret < 0 || ret == vq->num) > + if (ret <= 0) > return ret; > > if (*in) { > @@ -761,7 +775,7 @@ static void handle_tx_copy(struct vhost_net *net, struct socket *sock) > struct vhost_net_virtqueue *nvq = &net->vqs[VHOST_NET_VQ_TX]; > struct vhost_virtqueue *vq = &nvq->vq; > unsigned out, in; > - int head; > + int ret; > struct msghdr msg = { > .msg_name = NULL, >...
2020 Jun 02
0
[PATCH RFC 08/13] vhost/net: convert to new API: heads->bufs
...p;nvq->vq; int ret; - ret = vhost_net_tx_get_vq_desc(net, nvq, out, in, msg, busyloop_intr); + ret = vhost_net_tx_get_vq_desc(net, nvq, buf, out, in, msg, busyloop_intr); - if (ret < 0 || ret == vq->num) + if (ret <= 0) return ret; if (*in) { @@ -761,7 +775,7 @@ static void handle_tx_copy(struct vhost_net *net, struct socket *sock) struct vhost_net_virtqueue *nvq = &net->vqs[VHOST_NET_VQ_TX]; struct vhost_virtqueue *vq = &nvq->vq; unsigned out, in; - int head; + int ret; struct msghdr msg = { .msg_name = NULL, .msg_namelen = 0, @@ -773,6 +787,7 @@ static...
2019 Apr 25
0
[PATCH net] vhost_net: fix possible infinite loop
...1 +++++++++++++++++++++-------------------- > 1 file changed, 21 insertions(+), 20 deletions(-) > > diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c > index df51a35..fb46e6b 100644 > --- a/drivers/vhost/net.c > +++ b/drivers/vhost/net.c > @@ -778,8 +778,9 @@ static void handle_tx_copy(struct vhost_net *net, struct socket *sock) > int err; > int sent_pkts = 0; > bool sock_can_batch = (sock->sk->sk_sndbuf == INT_MAX); > + bool next_round = false; > > - for (;;) { > + do { > bool busyloop_intr = false; > > if (nvq->done_idx ==...
2019 May 05
0
[PATCH net] vhost_net: fix possible infinite loop
...? 1 file changed, 21 insertions(+), 20 deletions(-) >>> >>> diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c >>> index df51a35..fb46e6b 100644 >>> --- a/drivers/vhost/net.c >>> +++ b/drivers/vhost/net.c >>> @@ -778,8 +778,9 @@ static void handle_tx_copy(struct vhost_net >>> *net, struct socket *sock) >>> ????? int err; >>> ????? int sent_pkts = 0; >>> ????? bool sock_can_batch = (sock->sk->sk_sndbuf == INT_MAX); >>> +??? bool next_round = false; >>> ? -??? for (;;) { >>> +??? do...
2018 Sep 06
0
[PATCH net-next 11/11] vhost_net: batch submitting XDP buffers to underlayer sockets
...) + return -EFAULT; + + xdp->data_hard_start = buf; + xdp->data = buf + pad; + xdp->data_end = xdp->data + len; + *(int *)(xdp->data_hard_start) = buflen; + + get_page(alloc_frag->page); + alloc_frag->offset += buflen; + + ++nvq->batched_xdp; + + return 0; +} + static void handle_tx_copy(struct vhost_net *net, struct socket *sock) { struct vhost_net_virtqueue *nvq = &net->vqs[VHOST_NET_VQ_TX]; @@ -556,10 +667,14 @@ static void handle_tx_copy(struct vhost_net *net, struct socket *sock) size_t len, total_len = 0; int err; int sent_pkts = 0; + bool bulking = (sock->...
2018 Sep 12
0
[PATCH net-next V2 11/11] vhost_net: batch submitting XDP buffers to underlayer sockets
...+ if (copied != len) + return -EFAULT; + + xdp->data_hard_start = buf; + xdp->data = buf + pad; + xdp->data_end = xdp->data + len; + hdr->buflen = buflen; + + get_page(alloc_frag->page); + alloc_frag->offset += buflen; + + ++nvq->batched_xdp; + + return 0; +} + static void handle_tx_copy(struct vhost_net *net, struct socket *sock) { struct vhost_net_virtqueue *nvq = &net->vqs[VHOST_NET_VQ_TX]; @@ -556,10 +667,14 @@ static void handle_tx_copy(struct vhost_net *net, struct socket *sock) size_t len, total_len = 0; int err; int sent_pkts = 0; + bool sock_can_batch = (so...
2018 Sep 07
0
[PATCH net-next 11/11] vhost_net: batch submitting XDP buffers to underlayer sockets
...nd = xdp->data + len; >> + *(int *)(xdp->data_hard_start) = buflen; >> + >> + get_page(alloc_frag->page); >> + alloc_frag->offset += buflen; >> + >> + ++nvq->batched_xdp; >> + >> + return 0; >> +} >> + >> static void handle_tx_copy(struct vhost_net *net, struct socket *sock) >> { >> struct vhost_net_virtqueue *nvq = &net->vqs[VHOST_NET_VQ_TX]; >> @@ -556,10 +667,14 @@ static void handle_tx_copy(struct vhost_net *net, struct socket *sock) >> size_t len, total_len = 0; >> int err;...