search for: mrg_rxbuf_hdr

Displaying 20 results from an estimated 26 matches for "mrg_rxbuf_hdr".

2018 Nov 05
2
[PATCH 2/5] VSOCK: support fill data to mergeable rx buffer in host
...fers, got %u\n", out); - break; - } - len = iov_length(&vq->iov[out], in); iov_iter_init(&iov_iter, READ, &vq->iov[out], in, len); @@ -156,6 +218,19 @@ static struct vhost_vsock *vhost_vsock_get(u32 guest_cid) break; } + if (likely(mergeable)) { + pkt->mrg_rxbuf_hdr.num_buffers = cpu_to_le16(headcount); + nbytes = copy_to_iter(&pkt->mrg_rxbuf_hdr, + sizeof(pkt->mrg_rxbuf_hdr), &iov_iter); + if (nbytes != sizeof(pkt->mrg_rxbuf_hdr)) { + virtio_transport_free_pkt(pkt); + vq_err(vq, "Faulted on copying rxbuf hdr\n"); +...
2018 Nov 05
2
[PATCH 2/5] VSOCK: support fill data to mergeable rx buffer in host
...fers, got %u\n", out); - break; - } - len = iov_length(&vq->iov[out], in); iov_iter_init(&iov_iter, READ, &vq->iov[out], in, len); @@ -156,6 +218,19 @@ static struct vhost_vsock *vhost_vsock_get(u32 guest_cid) break; } + if (likely(mergeable)) { + pkt->mrg_rxbuf_hdr.num_buffers = cpu_to_le16(headcount); + nbytes = copy_to_iter(&pkt->mrg_rxbuf_hdr, + sizeof(pkt->mrg_rxbuf_hdr), &iov_iter); + if (nbytes != sizeof(pkt->mrg_rxbuf_hdr)) { + virtio_transport_free_pkt(pkt); + vq_err(vq, "Faulted on copying rxbuf hdr\n"); +...
2018 Nov 05
2
[PATCH 3/5] VSOCK: support receive mergeable rx buffer in guest
...*/ #define VIRTIO_VSOCK_F_MRG_RXBUF 0 /* Host can merge receive buffers. */ @@ -48,6 +50,11 @@ struct virtio_vsock_sock { struct list_head rx_queue; }; +struct virtio_vsock_mrg_rxbuf { + void *buf; + u32 len; +}; + struct virtio_vsock_pkt { struct virtio_vsock_hdr hdr; struct virtio_vsock_mrg_rxbuf_hdr mrg_rxbuf_hdr; @@ -59,6 +66,8 @@ struct virtio_vsock_pkt { u32 len; u32 off; bool reply; + bool mergeable; + struct virtio_vsock_mrg_rxbuf mrg_rxbuf[VIRTIO_VSOCK_MAX_MRG_BUF_NUM]; }; struct virtio_vsock_pkt_info { diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transpo...
2018 Nov 05
2
[PATCH 3/5] VSOCK: support receive mergeable rx buffer in guest
...*/ #define VIRTIO_VSOCK_F_MRG_RXBUF 0 /* Host can merge receive buffers. */ @@ -48,6 +50,11 @@ struct virtio_vsock_sock { struct list_head rx_queue; }; +struct virtio_vsock_mrg_rxbuf { + void *buf; + u32 len; +}; + struct virtio_vsock_pkt { struct virtio_vsock_hdr hdr; struct virtio_vsock_mrg_rxbuf_hdr mrg_rxbuf_hdr; @@ -59,6 +66,8 @@ struct virtio_vsock_pkt { u32 len; u32 off; bool reply; + bool mergeable; + struct virtio_vsock_mrg_rxbuf mrg_rxbuf[VIRTIO_VSOCK_MAX_MRG_BUF_NUM]; }; struct virtio_vsock_pkt_info { diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transpo...
2018 Nov 06
0
[PATCH 2/5] VSOCK: support fill data to mergeable rx buffer in host
...gt; len = iov_length(&vq->iov[out], in); > iov_iter_init(&iov_iter, READ, &vq->iov[out], in, len); > > @@ -156,6 +218,19 @@ static struct vhost_vsock *vhost_vsock_get(u32 guest_cid) > break; > } > > + if (likely(mergeable)) { > + pkt->mrg_rxbuf_hdr.num_buffers = cpu_to_le16(headcount); > + nbytes = copy_to_iter(&pkt->mrg_rxbuf_hdr, > + sizeof(pkt->mrg_rxbuf_hdr), &iov_iter); > + if (nbytes != sizeof(pkt->mrg_rxbuf_hdr)) { > + virtio_transport_free_pkt(pkt); > + vq_err(vq, "Faulted on copying...
2018 Nov 06
2
[PATCH 2/5] VSOCK: support fill data to mergeable rx buffer in host
...iov_iter_init(&iov_iter, READ, &vq->iov[out], in, len); >> >> @@ -156,6 +218,19 @@ static struct vhost_vsock *vhost_vsock_get(u32 guest_cid) >> break; >> } >> >> + if (likely(mergeable)) { >> + pkt->mrg_rxbuf_hdr.num_buffers = cpu_to_le16(headcount); >> + nbytes = copy_to_iter(&pkt->mrg_rxbuf_hdr, >> + sizeof(pkt->mrg_rxbuf_hdr), &iov_iter); >> + if (nbytes != sizeof(pkt->mrg_rxbuf_hdr)) { >> + virtio_transport_...
2018 Nov 06
2
[PATCH 2/5] VSOCK: support fill data to mergeable rx buffer in host
...iov_iter_init(&iov_iter, READ, &vq->iov[out], in, len); >> >> @@ -156,6 +218,19 @@ static struct vhost_vsock *vhost_vsock_get(u32 guest_cid) >> break; >> } >> >> + if (likely(mergeable)) { >> + pkt->mrg_rxbuf_hdr.num_buffers = cpu_to_le16(headcount); >> + nbytes = copy_to_iter(&pkt->mrg_rxbuf_hdr, >> + sizeof(pkt->mrg_rxbuf_hdr), &iov_iter); >> + if (nbytes != sizeof(pkt->mrg_rxbuf_hdr)) { >> + virtio_transport_...
2018 Nov 06
2
[PATCH 3/5] VSOCK: support receive mergeable rx buffer in guest
...{ >> struct list_head rx_queue; >> }; >> >> +struct virtio_vsock_mrg_rxbuf { >> + void *buf; >> + u32 len; >> +}; >> + >> struct virtio_vsock_pkt { >> struct virtio_vsock_hdr hdr; >> struct virtio_vsock_mrg_rxbuf_hdr mrg_rxbuf_hdr; >> @@ -59,6 +66,8 @@ struct virtio_vsock_pkt { >> u32 len; >> u32 off; >> bool reply; >> + bool mergeable; >> + struct virtio_vsock_mrg_rxbuf mrg_rxbuf[VIRTIO_VSOCK_MAX_MRG_BUF_NUM]; >> }; > > > It's b...
2018 Nov 06
2
[PATCH 3/5] VSOCK: support receive mergeable rx buffer in guest
...{ >> struct list_head rx_queue; >> }; >> >> +struct virtio_vsock_mrg_rxbuf { >> + void *buf; >> + u32 len; >> +}; >> + >> struct virtio_vsock_pkt { >> struct virtio_vsock_hdr hdr; >> struct virtio_vsock_mrg_rxbuf_hdr mrg_rxbuf_hdr; >> @@ -59,6 +66,8 @@ struct virtio_vsock_pkt { >> u32 len; >> u32 off; >> bool reply; >> + bool mergeable; >> + struct virtio_vsock_mrg_rxbuf mrg_rxbuf[VIRTIO_VSOCK_MAX_MRG_BUF_NUM]; >> }; > > > It's b...
2018 Nov 06
0
[PATCH 3/5] VSOCK: support receive mergeable rx buffer in guest
...buffers. */ > @@ -48,6 +50,11 @@ struct virtio_vsock_sock { > struct list_head rx_queue; > }; > > +struct virtio_vsock_mrg_rxbuf { > + void *buf; > + u32 len; > +}; > + > struct virtio_vsock_pkt { > struct virtio_vsock_hdr hdr; > struct virtio_vsock_mrg_rxbuf_hdr mrg_rxbuf_hdr; > @@ -59,6 +66,8 @@ struct virtio_vsock_pkt { > u32 len; > u32 off; > bool reply; > + bool mergeable; > + struct virtio_vsock_mrg_rxbuf mrg_rxbuf[VIRTIO_VSOCK_MAX_MRG_BUF_NUM]; > }; It's better to use iov here I think, and drop buf completely. A...
2018 Dec 12
4
[PATCH v2 2/5] VSOCK: support fill data to mergeable rx buffer in host
...out); - break; - } - len = iov_length(&vq->iov[out], in); iov_iter_init(&iov_iter, READ, &vq->iov[out], in, len); - nbytes = copy_to_iter(&pkt->hdr, sizeof(pkt->hdr), &iov_iter); - if (nbytes != sizeof(pkt->hdr)) { + if (likely(mergeable)) + pkt->mrg_rxbuf_hdr.num_buffers = cpu_to_le16(headcount); + nbytes = copy_to_iter(&pkt->hdr, vsock_hlen, &iov_iter); + if (nbytes != vsock_hlen) { virtio_transport_free_pkt(pkt); vq_err(vq, "Faulted on copying pkt hdr\n"); break; @@ -163,7 +228,7 @@ static struct vhost_vsock *vhost_v...
2018 Dec 12
4
[PATCH v2 2/5] VSOCK: support fill data to mergeable rx buffer in host
...out); - break; - } - len = iov_length(&vq->iov[out], in); iov_iter_init(&iov_iter, READ, &vq->iov[out], in, len); - nbytes = copy_to_iter(&pkt->hdr, sizeof(pkt->hdr), &iov_iter); - if (nbytes != sizeof(pkt->hdr)) { + if (likely(mergeable)) + pkt->mrg_rxbuf_hdr.num_buffers = cpu_to_le16(headcount); + nbytes = copy_to_iter(&pkt->hdr, vsock_hlen, &iov_iter); + if (nbytes != vsock_hlen) { virtio_transport_free_pkt(pkt); vq_err(vq, "Faulted on copying pkt hdr\n"); break; @@ -163,7 +228,7 @@ static struct vhost_vsock *vhost_v...
2018 Nov 07
1
[PATCH 3/5] VSOCK: support receive mergeable rx buffer in guest
...>>>> +struct virtio_vsock_mrg_rxbuf { >>>> + void *buf; >>>> + u32 len; >>>> +}; >>>> + >>>> struct virtio_vsock_pkt { >>>> struct virtio_vsock_hdr hdr; >>>> struct virtio_vsock_mrg_rxbuf_hdr mrg_rxbuf_hdr; >>>> @@ -59,6 +66,8 @@ struct virtio_vsock_pkt { >>>> u32 len; >>>> u32 off; >>>> bool reply; >>>> + bool mergeable; >>>> + struct virtio_vsock_mrg_rxbuf mrg_rxbuf[VIRTIO_VSOCK_MAX_MRG_...
2018 Dec 13
4
[PATCH v2 2/5] VSOCK: support fill data to mergeable rx buffer in host
...gt;iov[out], in); >> iov_iter_init(&iov_iter, READ, &vq->iov[out], in, len); >> >> - nbytes = copy_to_iter(&pkt->hdr, sizeof(pkt->hdr), &iov_iter); >> - if (nbytes != sizeof(pkt->hdr)) { >> + if (likely(mergeable)) >> + pkt->mrg_rxbuf_hdr.num_buffers = cpu_to_le16(headcount); >> + nbytes = copy_to_iter(&pkt->hdr, vsock_hlen, &iov_iter); >> + if (nbytes != vsock_hlen) { >> virtio_transport_free_pkt(pkt); >> vq_err(vq, "Faulted on copying pkt hdr\n"); >> break; >>...
2018 Dec 13
4
[PATCH v2 2/5] VSOCK: support fill data to mergeable rx buffer in host
...gt;iov[out], in); >> iov_iter_init(&iov_iter, READ, &vq->iov[out], in, len); >> >> - nbytes = copy_to_iter(&pkt->hdr, sizeof(pkt->hdr), &iov_iter); >> - if (nbytes != sizeof(pkt->hdr)) { >> + if (likely(mergeable)) >> + pkt->mrg_rxbuf_hdr.num_buffers = cpu_to_le16(headcount); >> + nbytes = copy_to_iter(&pkt->hdr, vsock_hlen, &iov_iter); >> + if (nbytes != vsock_hlen) { >> virtio_transport_free_pkt(pkt); >> vq_err(vq, "Faulted on copying pkt hdr\n"); >> break; >>...
2018 Dec 12
0
[PATCH v2 2/5] VSOCK: support fill data to mergeable rx buffer in host
...= iov_length(&vq->iov[out], in); > iov_iter_init(&iov_iter, READ, &vq->iov[out], in, len); > > - nbytes = copy_to_iter(&pkt->hdr, sizeof(pkt->hdr), &iov_iter); > - if (nbytes != sizeof(pkt->hdr)) { > + if (likely(mergeable)) > + pkt->mrg_rxbuf_hdr.num_buffers = cpu_to_le16(headcount); > + nbytes = copy_to_iter(&pkt->hdr, vsock_hlen, &iov_iter); > + if (nbytes != vsock_hlen) { > virtio_transport_free_pkt(pkt); > vq_err(vq, "Faulted on copying pkt hdr\n"); > break; > @@ -163,7 +228,7 @@ stat...
2018 Dec 13
0
[PATCH v2 2/5] VSOCK: support fill data to mergeable rx buffer in host
...; iov_iter_init(&iov_iter, READ, &vq->iov[out], in, len); > >> > >> - nbytes = copy_to_iter(&pkt->hdr, sizeof(pkt->hdr), &iov_iter); > >> - if (nbytes != sizeof(pkt->hdr)) { > >> + if (likely(mergeable)) > >> + pkt->mrg_rxbuf_hdr.num_buffers = cpu_to_le16(headcount); > >> + nbytes = copy_to_iter(&pkt->hdr, vsock_hlen, &iov_iter); > >> + if (nbytes != vsock_hlen) { > >> virtio_transport_free_pkt(pkt); > >> vq_err(vq, "Faulted on copying pkt hdr\n"); > >...
2018 Dec 12
4
[PATCH v2 3/5] VSOCK: support receive mergeable rx buffer in guest
...n = sizeof(struct virtio_vsock_pkt); + + buf = virtqueue_get_buf(vq, &len); + if (!buf) + return NULL; + + *total_len = len; + vsock->rx_buf_nr--; + + if (unlikely(len < vsock_hlen)) { + put_page(virt_to_head_page(buf)); + return NULL; + } + + pkt = buf; + num_buf = le16_to_cpu(pkt->mrg_rxbuf_hdr.num_buffers); + if (!num_buf || num_buf > VIRTIO_VSOCK_MAX_VEC_NUM) { + put_page(virt_to_head_page(buf)); + return NULL; + } + + /* Initialize pkt residual structure */ + memset(&pkt->work, 0, vsock_hlen - sizeof(struct virtio_vsock_hdr) - + sizeof(struct virtio_vsock_mrg_rxbuf_hdr));...
2018 Dec 12
4
[PATCH v2 3/5] VSOCK: support receive mergeable rx buffer in guest
...n = sizeof(struct virtio_vsock_pkt); + + buf = virtqueue_get_buf(vq, &len); + if (!buf) + return NULL; + + *total_len = len; + vsock->rx_buf_nr--; + + if (unlikely(len < vsock_hlen)) { + put_page(virt_to_head_page(buf)); + return NULL; + } + + pkt = buf; + num_buf = le16_to_cpu(pkt->mrg_rxbuf_hdr.num_buffers); + if (!num_buf || num_buf > VIRTIO_VSOCK_MAX_VEC_NUM) { + put_page(virt_to_head_page(buf)); + return NULL; + } + + /* Initialize pkt residual structure */ + memset(&pkt->work, 0, vsock_hlen - sizeof(struct virtio_vsock_hdr) - + sizeof(struct virtio_vsock_mrg_rxbuf_hdr));...
2018 Nov 07
0
[PATCH 3/5] VSOCK: support receive mergeable rx buffer in guest
...>>> }; >>> >>> +struct virtio_vsock_mrg_rxbuf { >>> + void *buf; >>> + u32 len; >>> +}; >>> + >>> struct virtio_vsock_pkt { >>> struct virtio_vsock_hdr hdr; >>> struct virtio_vsock_mrg_rxbuf_hdr mrg_rxbuf_hdr; >>> @@ -59,6 +66,8 @@ struct virtio_vsock_pkt { >>> u32 len; >>> u32 off; >>> bool reply; >>> + bool mergeable; >>> + struct virtio_vsock_mrg_rxbuf mrg_rxbuf[VIRTIO_VSOCK_MAX_MRG_BUF_NUM]; >>>...