Displaying 20 results from an estimated 35 matches for "txq2vq".
Did you mean:
rxq2vq
2014 Dec 26
0
[RFC PATCH 3/3] virtio-net: using single MSIX irq for each TX/RX queue pair
...;
+ if (!channels)
+ goto err_channels;
/* Parameters for control virtqueue, if any */
if (vi->has_cvq) {
@@ -1555,10 +1568,15 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
sprintf(vi->sq[i].name, "output.%d", i);
names[rxq2vq(i)] = vi->rq[i].name;
names[txq2vq(i)] = vi->sq[i].name;
+ sprintf(vi->sq[i].channel_name, "txrx.%d", i);
+ channel_names[i] = vi->sq[i].channel_name;
+ channels[rxq2vq(i)] = i;
+ channels[txq2vq(i)] = i;
}
ret = vi->vdev->config->find_vqs(vi->vdev, total_vqs, vqs, callbacks,
- names, NU...
2014 Dec 26
0
[RFC PATCH 3/3] virtio-net: using single MSIX irq for each TX/RX queue pair
...;
+ if (!channels)
+ goto err_channels;
/* Parameters for control virtqueue, if any */
if (vi->has_cvq) {
@@ -1555,10 +1568,15 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
sprintf(vi->sq[i].name, "output.%d", i);
names[rxq2vq(i)] = vi->rq[i].name;
names[txq2vq(i)] = vi->sq[i].name;
+ sprintf(vi->sq[i].channel_name, "txrx.%d", i);
+ channel_names[i] = vi->sq[i].channel_name;
+ channels[rxq2vq(i)] = i;
+ channels[txq2vq(i)] = i;
}
ret = vi->vdev->config->find_vqs(vi->vdev, total_vqs, vqs, callbacks,
- names, NU...
2017 Mar 29
2
[PATCH 4/6] virtio_net: allow specifying context for rx
...to err_ctx;
+ } else {
+ ctx = NULL;
+ }
/* Parameters for control virtqueue, if any */
if (vi->has_cvq) {
@@ -2077,9 +2085,12 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
sprintf(vi->sq[i].name, "output.%d", i);
names[rxq2vq(i)] = vi->rq[i].name;
names[txq2vq(i)] = vi->sq[i].name;
+ if (ctx)
+ ctx[rxq2vq(i)] = true;
}
- ret = virtio_find_vqs(vi->vdev, total_vqs, vqs, callbacks, names, NULL);
+ ret = vi->vdev->config->find_vqs(vi->vdev, total_vqs, vqs, callbacks,
+ names, ctx, NULL);
if (ret)
goto err_find;
@@ -2101,6...
2017 Mar 29
2
[PATCH 4/6] virtio_net: allow specifying context for rx
...to err_ctx;
+ } else {
+ ctx = NULL;
+ }
/* Parameters for control virtqueue, if any */
if (vi->has_cvq) {
@@ -2077,9 +2085,12 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
sprintf(vi->sq[i].name, "output.%d", i);
names[rxq2vq(i)] = vi->rq[i].name;
names[txq2vq(i)] = vi->sq[i].name;
+ if (ctx)
+ ctx[rxq2vq(i)] = true;
}
- ret = virtio_find_vqs(vi->vdev, total_vqs, vqs, callbacks, names, NULL);
+ ret = vi->vdev->config->find_vqs(vi->vdev, total_vqs, vqs, callbacks,
+ names, ctx, NULL);
if (ret)
goto err_find;
@@ -2101,6...
2017 Apr 25
0
[vhost:vhost 6/19] drivers/net/virtio_net.c:2089:19: error: assignment of read-only location '*(ctx + (sizetype)rxq2vq(i))'
...drivers/net/virtio_net.c: In function 'virtnet_find_vqs':
>> drivers/net/virtio_net.c:2089:19: error: assignment of read-only location '*(ctx + (sizetype)rxq2vq(i))'
ctx[rxq2vq(i)] = true;
^
vim +2089 drivers/net/virtio_net.c
2083 callbacks[txq2vq(i)] = skb_xmit_done;
2084 sprintf(vi->rq[i].name, "input.%d", i);
2085 sprintf(vi->sq[i].name, "output.%d", i);
2086 names[rxq2vq(i)] = vi->rq[i].name;
2087 names[txq2vq(i)] = vi->sq[i].name;
2088 if (ctx)
> 2089 ctx[rxq2vq(i)] = true;
209...
2017 Apr 25
0
[vhost:vhost 6/19] drivers/net/virtio_net.c:2089:19: error: assignment of read-only location '*(ctx + (sizetype)rxq2vq(i))'
...drivers/net/virtio_net.c: In function 'virtnet_find_vqs':
>> drivers/net/virtio_net.c:2089:19: error: assignment of read-only location '*(ctx + (sizetype)rxq2vq(i))'
ctx[rxq2vq(i)] = true;
^
vim +2089 drivers/net/virtio_net.c
2083 callbacks[txq2vq(i)] = skb_xmit_done;
2084 sprintf(vi->rq[i].name, "input.%d", i);
2085 sprintf(vi->sq[i].name, "output.%d", i);
2086 names[rxq2vq(i)] = vi->rq[i].name;
2087 names[txq2vq(i)] = vi->sq[i].name;
2088 if (ctx)
> 2089 ctx[rxq2vq(i)] = true;
209...
2017 Mar 30
1
[PATCH 4/6] virtio_net: allow specifying context for rx
...arameters for control virtqueue, if any */
> > if (vi->has_cvq) {
> > @@ -2077,9 +2085,12 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
> > sprintf(vi->sq[i].name, "output.%d", i);
> > names[rxq2vq(i)] = vi->rq[i].name;
> > names[txq2vq(i)] = vi->sq[i].name;
> > + if (ctx)
> > + ctx[rxq2vq(i)] = true;
> > }
> >
> > - ret = virtio_find_vqs(vi->vdev, total_vqs, vqs, callbacks, names, NULL);
> > + ret = vi->vdev->config->find_vqs(vi->vdev, total_vqs, vqs, callbacks,
> &g...
2017 Mar 30
1
[PATCH 4/6] virtio_net: allow specifying context for rx
...arameters for control virtqueue, if any */
> > if (vi->has_cvq) {
> > @@ -2077,9 +2085,12 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
> > sprintf(vi->sq[i].name, "output.%d", i);
> > names[rxq2vq(i)] = vi->rq[i].name;
> > names[txq2vq(i)] = vi->sq[i].name;
> > + if (ctx)
> > + ctx[rxq2vq(i)] = true;
> > }
> >
> > - ret = virtio_find_vqs(vi->vdev, total_vqs, vqs, callbacks, names, NULL);
> > + ret = vi->vdev->config->find_vqs(vi->vdev, total_vqs, vqs, callbacks,
> &g...
2017 Mar 29
1
[PATCH] virtio_net: fix support for small rings
...i)
{
vq_callback_t **callbacks;
@@ -2151,6 +2170,7 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
for (i = 0; i < vi->max_queue_pairs; i++) {
vi->rq[i].vq = vqs[rxq2vq(i)];
+ vi->rq[i].min_buf_len = mergeable_min_buf_len(vi, vi->rq[i].vq);
vi->sq[i].vq = vqs[txq2vq(i)];
}
@@ -2237,7 +2257,8 @@ static ssize_t mergeable_rx_buffer_size_show(struct netdev_rx_queue *queue,
BUG_ON(queue_index >= vi->max_queue_pairs);
avg = &vi->rq[queue_index].mrg_avg_pkt_len;
- return sprintf(buf, "%u\n", get_mergeable_buf_len(avg));
+ return sprin...
2017 Mar 29
1
[PATCH] virtio_net: fix support for small rings
...i)
{
vq_callback_t **callbacks;
@@ -2151,6 +2170,7 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
for (i = 0; i < vi->max_queue_pairs; i++) {
vi->rq[i].vq = vqs[rxq2vq(i)];
+ vi->rq[i].min_buf_len = mergeable_min_buf_len(vi, vi->rq[i].vq);
vi->sq[i].vq = vqs[txq2vq(i)];
}
@@ -2237,7 +2257,8 @@ static ssize_t mergeable_rx_buffer_size_show(struct netdev_rx_queue *queue,
BUG_ON(queue_index >= vi->max_queue_pairs);
avg = &vi->rq[queue_index].mrg_avg_pkt_len;
- return sprintf(buf, "%u\n", get_mergeable_buf_len(avg));
+ return sprin...
2017 Mar 29
1
[PATCH v2] virtio_net: fix support for small rings
...i)
{
vq_callback_t **callbacks;
@@ -2151,6 +2171,7 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
for (i = 0; i < vi->max_queue_pairs; i++) {
vi->rq[i].vq = vqs[rxq2vq(i)];
+ vi->rq[i].min_buf_len = mergeable_min_buf_len(vi, vi->rq[i].vq);
vi->sq[i].vq = vqs[txq2vq(i)];
}
@@ -2237,7 +2258,8 @@ static ssize_t mergeable_rx_buffer_size_show(struct netdev_rx_queue *queue,
BUG_ON(queue_index >= vi->max_queue_pairs);
avg = &vi->rq[queue_index].mrg_avg_pkt_len;
- return sprintf(buf, "%u\n", get_mergeable_buf_len(avg));
+ return sprin...
2017 Mar 29
1
[PATCH v2] virtio_net: fix support for small rings
...i)
{
vq_callback_t **callbacks;
@@ -2151,6 +2171,7 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
for (i = 0; i < vi->max_queue_pairs; i++) {
vi->rq[i].vq = vqs[rxq2vq(i)];
+ vi->rq[i].min_buf_len = mergeable_min_buf_len(vi, vi->rq[i].vq);
vi->sq[i].vq = vqs[txq2vq(i)];
}
@@ -2237,7 +2258,8 @@ static ssize_t mergeable_rx_buffer_size_show(struct netdev_rx_queue *queue,
BUG_ON(queue_index >= vi->max_queue_pairs);
avg = &vi->rq[queue_index].mrg_avg_pkt_len;
- return sprintf(buf, "%u\n", get_mergeable_buf_len(avg));
+ return sprin...
2017 Mar 30
0
[PATCH 4/6] virtio_net: allow specifying context for rx
...t; + }
>
> /* Parameters for control virtqueue, if any */
> if (vi->has_cvq) {
> @@ -2077,9 +2085,12 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
> sprintf(vi->sq[i].name, "output.%d", i);
> names[rxq2vq(i)] = vi->rq[i].name;
> names[txq2vq(i)] = vi->sq[i].name;
> + if (ctx)
> + ctx[rxq2vq(i)] = true;
> }
>
> - ret = virtio_find_vqs(vi->vdev, total_vqs, vqs, callbacks, names, NULL);
> + ret = vi->vdev->config->find_vqs(vi->vdev, total_vqs, vqs, callbacks,
> + names, ctx, NULL);
virti...
2017 May 31
1
remove function pointer casts and constify function tables
...in buf = 0x%x expected 0x%x size 0x%x big %d\n",
+ vi->rq[i].min_buf_len, GOOD_PACKET_LEN,
+ virtqueue_get_vring_size(vi->rq[i].vq),
+ (int)vi->big_packets);
vi->sq[i].vq = vqs[txq2vq(i)];
}
2017 May 31
1
remove function pointer casts and constify function tables
...in buf = 0x%x expected 0x%x size 0x%x big %d\n",
+ vi->rq[i].min_buf_len, GOOD_PACKET_LEN,
+ virtqueue_get_vring_size(vi->rq[i].vq),
+ (int)vi->big_packets);
vi->sq[i].vq = vqs[txq2vq(i)];
}
2017 May 26
3
remove function pointer casts and constify function tables
Looks like the culprit is very likely d85b758f72b0 "virtio_net: fix
support for small rings".
After that patch, my NFS server VM stops responding to packets after a
few minutes of testing. Before that patch, my server keeps working.
--b.
2017 Mar 29
5
[PATCH 1/6] virtio: wrap find_vqs
...&vq_cbs, &names, NULL);
if (err)
goto err;
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index ea9890d..6802169 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -2079,8 +2079,7 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
names[txq2vq(i)] = vi->sq[i].name;
}
- ret = vi->vdev->config->find_vqs(vi->vdev, total_vqs, vqs, callbacks,
- names, NULL);
+ ret = virtio_find_vqs(vi->vdev, total_vqs, vqs, callbacks, names, NULL);
if (ret)
goto err_find;
diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/driver...
2017 Mar 29
5
[PATCH 1/6] virtio: wrap find_vqs
...&vq_cbs, &names, NULL);
if (err)
goto err;
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index ea9890d..6802169 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -2079,8 +2079,7 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
names[txq2vq(i)] = vi->sq[i].name;
}
- ret = vi->vdev->config->find_vqs(vi->vdev, total_vqs, vqs, callbacks,
- names, NULL);
+ ret = virtio_find_vqs(vi->vdev, total_vqs, vqs, callbacks, names, NULL);
if (ret)
goto err_find;
diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/driver...
2014 Dec 26
8
[RFC PATCH 0/3] Sharing MSIX irq for tx/rx queue pairs
Hi all:
This series try to share MSIX irq for each tx/rx queue pair. This is
done through:
- introducing virtio pci channel which are group of virtqueues that
sharing a single MSIX irq (Patch 1)
- expose channel setting to virtio core api (Patch 2)
- try to use channel setting in virtio-net (Patch 3)
For the transport that does not support channel, channel paramters
were simply ignored. For
2014 Dec 26
8
[RFC PATCH 0/3] Sharing MSIX irq for tx/rx queue pairs
Hi all:
This series try to share MSIX irq for each tx/rx queue pair. This is
done through:
- introducing virtio pci channel which are group of virtqueues that
sharing a single MSIX irq (Patch 1)
- expose channel setting to virtio core api (Patch 2)
- try to use channel setting in virtio-net (Patch 3)
For the transport that does not support channel, channel paramters
were simply ignored. For