Skip to content

Commit c2c6325

Browse files
Jiri Pirkomstsirkin
authored andcommitted
virtio_net: convert to use virtio_find_vqs_info()
Instead of passing separate names and callbacks arrays to virtio_find_vqs_ctx(), allocate one of virtual_queue_info structs and pass it to virtio_find_vqs_info(). Suggested-by: Xuan Zhuo <[email protected]> Signed-off-by: Jiri Pirko <[email protected]> Message-Id: <[email protected]> Signed-off-by: Michael S. Tsirkin <[email protected]>
1 parent 210a70f commit c2c6325

File tree

1 file changed

+13
-21
lines changed

1 file changed

+13
-21
lines changed

drivers/net/virtio_net.c

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5293,9 +5293,8 @@ static unsigned int mergeable_min_buf_len(struct virtnet_info *vi, struct virtqu
52935293

52945294
static int virtnet_find_vqs(struct virtnet_info *vi)
52955295
{
5296-
vq_callback_t **callbacks;
5296+
struct virtqueue_info *vqs_info;
52975297
struct virtqueue **vqs;
5298-
const char **names;
52995298
int ret = -ENOMEM;
53005299
int total_vqs;
53015300
bool *ctx;
@@ -5312,12 +5311,9 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
53125311
vqs = kcalloc(total_vqs, sizeof(*vqs), GFP_KERNEL);
53135312
if (!vqs)
53145313
goto err_vq;
5315-
callbacks = kmalloc_array(total_vqs, sizeof(*callbacks), GFP_KERNEL);
5316-
if (!callbacks)
5317-
goto err_callback;
5318-
names = kmalloc_array(total_vqs, sizeof(*names), GFP_KERNEL);
5319-
if (!names)
5320-
goto err_names;
5314+
vqs_info = kcalloc(total_vqs, sizeof(*vqs_info), GFP_KERNEL);
5315+
if (!vqs_info)
5316+
goto err_vqs_info;
53215317
if (!vi->big_packets || vi->mergeable_rx_bufs) {
53225318
ctx = kcalloc(total_vqs, sizeof(*ctx), GFP_KERNEL);
53235319
if (!ctx)
@@ -5328,24 +5324,22 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
53285324

53295325
/* Parameters for control virtqueue, if any */
53305326
if (vi->has_cvq) {
5331-
callbacks[total_vqs - 1] = NULL;
5332-
names[total_vqs - 1] = "control";
5327+
vqs_info[total_vqs - 1].name = "control";
53335328
}
53345329

53355330
/* Allocate/initialize parameters for send/receive virtqueues */
53365331
for (i = 0; i < vi->max_queue_pairs; i++) {
5337-
callbacks[rxq2vq(i)] = skb_recv_done;
5338-
callbacks[txq2vq(i)] = skb_xmit_done;
5332+
vqs_info[rxq2vq(i)].callback = skb_recv_done;
5333+
vqs_info[txq2vq(i)].callback = skb_xmit_done;
53395334
sprintf(vi->rq[i].name, "input.%u", i);
53405335
sprintf(vi->sq[i].name, "output.%u", i);
5341-
names[rxq2vq(i)] = vi->rq[i].name;
5342-
names[txq2vq(i)] = vi->sq[i].name;
5336+
vqs_info[rxq2vq(i)].name = vi->rq[i].name;
5337+
vqs_info[txq2vq(i)].name = vi->sq[i].name;
53435338
if (ctx)
5344-
ctx[rxq2vq(i)] = true;
5339+
vqs_info[rxq2vq(i)].ctx = true;
53455340
}
53465341

5347-
ret = virtio_find_vqs_ctx(vi->vdev, total_vqs, vqs, callbacks,
5348-
names, ctx, NULL);
5342+
ret = virtio_find_vqs_info(vi->vdev, total_vqs, vqs, vqs_info, NULL);
53495343
if (ret)
53505344
goto err_find;
53515345

@@ -5367,10 +5361,8 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
53675361
err_find:
53685362
kfree(ctx);
53695363
err_ctx:
5370-
kfree(names);
5371-
err_names:
5372-
kfree(callbacks);
5373-
err_callback:
5364+
kfree(vqs_info);
5365+
err_vqs_info:
53745366
kfree(vqs);
53755367
err_vq:
53765368
return ret;

0 commit comments

Comments
 (0)