search for: txq2vq

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