search for: iovcount

Displaying 20 results from an estimated 79 matches for "iovcount".

Did you mean: iov_count
2018 Jul 03
0
[PATCH net-next 1/8] vhost: move get_rx_bufs to vhost.c
...,83 +685,6 @@ static int vhost_net_rx_peek_head_len(struct vhost_net *net, struct sock *sk) return len; } -/* This is a multi-buffer version of vhost_get_desc, that works if - * vq has read descriptors only. - * @vq - the relevant virtqueue - * @datalen - data length we'll be reading - * @iovcount - returned count of io vectors we fill - * @log - vhost log - * @log_num - log offset - * @quota - headcount quota, 1 for big buffer - * returns number of buffer heads allocated, negative on error - */ -static int get_rx_bufs(struct vhost_virtqueue *vq, - struct vring_used_elem *head...
2018 Apr 23
0
[RFC V3 PATCH 1/8] vhost: move get_rx_bufs to vhost.c
...,83 +664,6 @@ static int vhost_net_rx_peek_head_len(struct vhost_net *net, struct sock *sk) return len; } -/* This is a multi-buffer version of vhost_get_desc, that works if - * vq has read descriptors only. - * @vq - the relevant virtqueue - * @datalen - data length we'll be reading - * @iovcount - returned count of io vectors we fill - * @log - vhost log - * @log_num - log offset - * @quota - headcount quota, 1 for big buffer - * returns number of buffer heads allocated, negative on error - */ -static int get_rx_bufs(struct vhost_virtqueue *vq, - struct vring_used_elem *head...
2018 May 02
1
[RFC V3 PATCH 1/8] vhost: move get_rx_bufs to vhost.c
...ek_head_len(struct vhost_net *net, struct sock *sk) > return len; > } > > -/* This is a multi-buffer version of vhost_get_desc, that works if > - * vq has read descriptors only. > - * @vq - the relevant virtqueue > - * @datalen - data length we'll be reading > - * @iovcount - returned count of io vectors we fill > - * @log - vhost log > - * @log_num - log offset > - * @quota - headcount quota, 1 for big buffer > - * returns number of buffer heads allocated, negative on error > - */ > -static int get_rx_bufs(struct vhost_virtqueue *vq, > -...
2010 Apr 28
6
[PATCHv7] add mergeable buffers support to vhost_net
...ers/vhost/net.c 2010-04-28 12:26:18.000000000 -0700 @@ -74,6 +74,23 @@ static int move_iovec_hdr(struct iovec * } return seg; } +/* Copy iovec entries for len bytes from iovec. Return segments used. */ +static int copy_iovec_hdr(const struct iovec *from, struct iovec *to, + size_t len, int iovcount) +{ + int seg = 0; + size_t size; + while (len && seg < iovcount) { + size = min(from->iov_len, len); + to->iov_base = from->iov_base; + to->iov_len = size; + len -= size; + ++from; + ++to; + ++seg; + } + return seg; +} /* Caller must have TX VQ lock */ static void...
2010 Apr 28
6
[PATCHv7] add mergeable buffers support to vhost_net
...ers/vhost/net.c 2010-04-28 12:26:18.000000000 -0700 @@ -74,6 +74,23 @@ static int move_iovec_hdr(struct iovec * } return seg; } +/* Copy iovec entries for len bytes from iovec. Return segments used. */ +static int copy_iovec_hdr(const struct iovec *from, struct iovec *to, + size_t len, int iovcount) +{ + int seg = 0; + size_t size; + while (len && seg < iovcount) { + size = min(from->iov_len, len); + to->iov_base = from->iov_base; + to->iov_len = size; + len -= size; + ++from; + ++to; + ++seg; + } + return seg; +} /* Caller must have TX VQ lock */ static void...
2010 Mar 03
1
[RFC][ PATCH 1/3] vhost-net: support multiple buffer heads in receiver
...ext-p1/drivers/vhost/vhost.c --- net-next-p0/drivers/vhost/vhost.c 2010-02-15 20:08:35.000000000 -0800 +++ net-next-p1/drivers/vhost/vhost.c 2010-03-01 11:44:06.000000000 -0800 @@ -848,6 +848,38 @@ return 0; } +unsigned vhost_get_heads(struct vhost_virtqueue *vq, int datalen, int *iovcount, + struct vhost_log *log, unsigned int *log_num) +{ + struct iovec *heads = vq->heads; + int out, in; + int hc = 0; + + while (datalen > 0) { + if (hc >= VHOST_NET_MAX_SG) { + vhost_discard(vq, hc); + r...
2010 Mar 03
1
[RFC][ PATCH 1/3] vhost-net: support multiple buffer heads in receiver
...ext-p1/drivers/vhost/vhost.c --- net-next-p0/drivers/vhost/vhost.c 2010-02-15 20:08:35.000000000 -0800 +++ net-next-p1/drivers/vhost/vhost.c 2010-03-01 11:44:06.000000000 -0800 @@ -848,6 +848,38 @@ return 0; } +unsigned vhost_get_heads(struct vhost_virtqueue *vq, int datalen, int *iovcount, + struct vhost_log *log, unsigned int *log_num) +{ + struct iovec *heads = vq->heads; + int out, in; + int hc = 0; + + while (datalen > 0) { + if (hc >= VHOST_NET_MAX_SG) { + vhost_discard(vq, hc); + r...
2018 Nov 05
2
[PATCH 2/5] VSOCK: support fill data to mergeable rx buffer in host
...VSOCK_F_MRG_RXBUF), }; /* Used to track all the vhost_vsock instances on the system. */ @@ -80,6 +81,68 @@ static struct vhost_vsock *vhost_vsock_get(u32 guest_cid) return vsock; } +static int get_rx_bufs(struct vhost_virtqueue *vq, + struct vring_used_elem *heads, int datalen, + unsigned *iovcount, unsigned int quota) +{ + unsigned int out, in; + int seg = 0; + int headcount = 0; + unsigned d; + int ret; + /* + * len is always initialized before use since we are always called with + * datalen > 0. + */ + u32 uninitialized_var(len); + + while (datalen > 0 && headcount < qu...
2018 Nov 05
2
[PATCH 2/5] VSOCK: support fill data to mergeable rx buffer in host
...VSOCK_F_MRG_RXBUF), }; /* Used to track all the vhost_vsock instances on the system. */ @@ -80,6 +81,68 @@ static struct vhost_vsock *vhost_vsock_get(u32 guest_cid) return vsock; } +static int get_rx_bufs(struct vhost_virtqueue *vq, + struct vring_used_elem *heads, int datalen, + unsigned *iovcount, unsigned int quota) +{ + unsigned int out, in; + int seg = 0; + int headcount = 0; + unsigned d; + int ret; + /* + * len is always initialized before use since we are always called with + * datalen > 0. + */ + u32 uninitialized_var(len); + + while (datalen > 0 && headcount < qu...
2010 Apr 06
1
[PATCH v3] Add Mergeable receive buffer support to vhost_net
...0700 +++ net-next-v3/drivers/vhost/vhost.c 2010-04-06 12:57:51.000000000 -0700 @@ -856,6 +856,47 @@ static unsigned get_indirect(struct vhos return 0; } +/* This is a multi-buffer version of vhost_get_vq_desc + * @vq - the relevant virtqueue + * datalen - data length we'll be reading + * @iovcount - returned count of io vectors we fill + * @log - vhost log + * @log_num - log offset + * returns number of buffer heads allocated, 0 on error + */ +int vhost_get_desc_n(struct vhost_virtqueue *vq, struct vring_used_elem *heads, + int datalen, int *iovcount, struct vhost_log *log, + un...
2010 Apr 06
1
[PATCH v3] Add Mergeable receive buffer support to vhost_net
...0700 +++ net-next-v3/drivers/vhost/vhost.c 2010-04-06 12:57:51.000000000 -0700 @@ -856,6 +856,47 @@ static unsigned get_indirect(struct vhos return 0; } +/* This is a multi-buffer version of vhost_get_vq_desc + * @vq - the relevant virtqueue + * datalen - data length we'll be reading + * @iovcount - returned count of io vectors we fill + * @log - vhost log + * @log_num - log offset + * returns number of buffer heads allocated, 0 on error + */ +int vhost_get_desc_n(struct vhost_virtqueue *vq, struct vring_used_elem *heads, + int datalen, int *iovcount, struct vhost_log *log, + un...
2010 Mar 03
1
[RFC][ PATCH 2/3] vhost-net: handle vnet_hdr processing for MRG_RX_BUF
...memcpy(iov[0].iov_base, &hdr, vq->guest_hlen); + } + iov[1].iov_base += vq->guest_hlen; + iov[1].iov_len -= vq->guest_hlen; + } + return 1; +} + unsigned vhost_get_heads(struct vhost_virtqueue *vq, int datalen, int *iovcount, struct vhost_log *log, unsigned int *log_num) { struct iovec *heads = vq->heads; - int out, in; + int out, in = 0; + int seg = 0; int hc = 0; + if (vq->guest_hlen != vq->sock_hlen) { + seg = vhost_get_hdr(vq, &in, log, l...
2010 Mar 03
1
[RFC][ PATCH 2/3] vhost-net: handle vnet_hdr processing for MRG_RX_BUF
...memcpy(iov[0].iov_base, &hdr, vq->guest_hlen); + } + iov[1].iov_base += vq->guest_hlen; + iov[1].iov_len -= vq->guest_hlen; + } + return 1; +} + unsigned vhost_get_heads(struct vhost_virtqueue *vq, int datalen, int *iovcount, struct vhost_log *log, unsigned int *log_num) { struct iovec *heads = vq->heads; - int out, in; + int out, in = 0; + int seg = 0; int hc = 0; + if (vq->guest_hlen != vq->sock_hlen) { + seg = vhost_get_hdr(vq, &in, log, l...
2018 Dec 12
4
[PATCH v2 2/5] VSOCK: support fill data to mergeable rx buffer in host
...stances on the system. */ @@ -80,6 +81,69 @@ static struct vhost_vsock *vhost_vsock_get(u32 guest_cid) return vsock; } +/* This segment of codes are copied from drivers/vhost/net.c */ +static int get_rx_bufs(struct vhost_virtqueue *vq, + struct vring_used_elem *heads, int datalen, + unsigned *iovcount, unsigned int quota) +{ + unsigned int out, in; + int seg = 0; + int headcount = 0; + unsigned d; + int ret; + /* + * len is always initialized before use since we are always called with + * datalen > 0. + */ + u32 uninitialized_var(len); + + while (datalen > 0 && headcount < qu...
2018 Dec 12
4
[PATCH v2 2/5] VSOCK: support fill data to mergeable rx buffer in host
...stances on the system. */ @@ -80,6 +81,69 @@ static struct vhost_vsock *vhost_vsock_get(u32 guest_cid) return vsock; } +/* This segment of codes are copied from drivers/vhost/net.c */ +static int get_rx_bufs(struct vhost_virtqueue *vq, + struct vring_used_elem *heads, int datalen, + unsigned *iovcount, unsigned int quota) +{ + unsigned int out, in; + int seg = 0; + int headcount = 0; + unsigned d; + int ret; + /* + * len is always initialized before use since we are always called with + * datalen > 0. + */ + u32 uninitialized_var(len); + + while (datalen > 0 && headcount < qu...
2010 Apr 19
2
[PATCH v4] Add mergeable RX bufs support to vhost
...->private_data = NULL; vq->log_base = NULL; vq->error_ctx = NULL; @@ -856,6 +857,53 @@ static unsigned get_indirect(struct vhos return 0; } +/* This is a multi-buffer version of vhost_get_vq_desc + * @vq - the relevant virtqueue + * datalen - data length we'll be reading + * @iovcount - returned count of io vectors we fill + * @log - vhost log + * @log_num - log offset + * returns number of buffer heads allocated, negative on error + */ +int vhost_get_desc_n(struct vhost_virtqueue *vq, struct vring_used_elem *heads, + int datalen, int *iovcount, struct vhost_log *log, +...
2010 Apr 19
2
[PATCH v4] Add mergeable RX bufs support to vhost
...->private_data = NULL; vq->log_base = NULL; vq->error_ctx = NULL; @@ -856,6 +857,53 @@ static unsigned get_indirect(struct vhos return 0; } +/* This is a multi-buffer version of vhost_get_vq_desc + * @vq - the relevant virtqueue + * datalen - data length we'll be reading + * @iovcount - returned count of io vectors we fill + * @log - vhost log + * @log_num - log offset + * returns number of buffer heads allocated, negative on error + */ +int vhost_get_desc_n(struct vhost_virtqueue *vq, struct vring_used_elem *heads, + int datalen, int *iovcount, struct vhost_log *log, +...
2010 Apr 26
1
[PATCH v6] Add mergeable rx buffer support to vhost_net
...vq->private_data = NULL; vq->log_base = NULL; vq->error_ctx = NULL; @@ -861,6 +862,53 @@ static unsigned get_indirect(struct vhos return 0; } +/* This is a multi-buffer version of vhost_get_desc + * @vq - the relevant virtqueue + * datalen - data length we'll be reading + * @iovcount - returned count of io vectors we fill + * @log - vhost log + * @log_num - log offset + * returns number of buffer heads allocated, negative on error + */ +int vhost_get_desc_n(struct vhost_virtqueue *vq, struct vring_used_elem *heads, + int datalen, unsigned *iovcount, struct vhost_log *log...
2010 Apr 26
1
[PATCH v6] Add mergeable rx buffer support to vhost_net
...vq->private_data = NULL; vq->log_base = NULL; vq->error_ctx = NULL; @@ -861,6 +862,53 @@ static unsigned get_indirect(struct vhos return 0; } +/* This is a multi-buffer version of vhost_get_desc + * @vq - the relevant virtqueue + * datalen - data length we'll be reading + * @iovcount - returned count of io vectors we fill + * @log - vhost log + * @log_num - log offset + * returns number of buffer heads allocated, negative on error + */ +int vhost_get_desc_n(struct vhost_virtqueue *vq, struct vring_used_elem *heads, + int datalen, unsigned *iovcount, struct vhost_log *log...
2014 Feb 12
1
[PATCH net] vhost_net: do not report a used len larger than receive buffer size
...index 9a68409..06268a0 100644 --- a/drivers/vhost/net.c +++ b/drivers/vhost/net.c @@ -525,7 +525,8 @@ static int get_rx_bufs(struct vhost_virtqueue *vq, ++headcount; seg += in; } - heads[headcount - 1].len += datalen; + if (likely(datalen < 0)) + heads[headcount - 1].len += datalen; *iovcount = seg; if (unlikely(log)) *log_num = nlogs; -- 1.8.3.2