@@ -5293,9 +5293,8 @@ static unsigned int mergeable_min_buf_len(struct virtnet_info *vi, struct virtqu
5293
5293
5294
5294
static int virtnet_find_vqs (struct virtnet_info * vi )
5295
5295
{
5296
- vq_callback_t * * callbacks ;
5296
+ struct virtqueue_info * vqs_info ;
5297
5297
struct virtqueue * * vqs ;
5298
- const char * * names ;
5299
5298
int ret = - ENOMEM ;
5300
5299
int total_vqs ;
5301
5300
bool * ctx ;
@@ -5312,12 +5311,9 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
5312
5311
vqs = kcalloc (total_vqs , sizeof (* vqs ), GFP_KERNEL );
5313
5312
if (!vqs )
5314
5313
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 ;
5321
5317
if (!vi -> big_packets || vi -> mergeable_rx_bufs ) {
5322
5318
ctx = kcalloc (total_vqs , sizeof (* ctx ), GFP_KERNEL );
5323
5319
if (!ctx )
@@ -5328,24 +5324,22 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
5328
5324
5329
5325
/* Parameters for control virtqueue, if any */
5330
5326
if (vi -> has_cvq ) {
5331
- callbacks [total_vqs - 1 ] = NULL ;
5332
- names [total_vqs - 1 ] = "control" ;
5327
+ vqs_info [total_vqs - 1 ].name = "control" ;
5333
5328
}
5334
5329
5335
5330
/* Allocate/initialize parameters for send/receive virtqueues */
5336
5331
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 ;
5339
5334
sprintf (vi -> rq [i ].name , "input.%u" , i );
5340
5335
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 ;
5343
5338
if (ctx )
5344
- ctx [rxq2vq (i )] = true;
5339
+ vqs_info [rxq2vq (i )]. ctx = true;
5345
5340
}
5346
5341
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 );
5349
5343
if (ret )
5350
5344
goto err_find ;
5351
5345
@@ -5367,10 +5361,8 @@ static int virtnet_find_vqs(struct virtnet_info *vi)
5367
5361
err_find :
5368
5362
kfree (ctx );
5369
5363
err_ctx :
5370
- kfree (names );
5371
- err_names :
5372
- kfree (callbacks );
5373
- err_callback :
5364
+ kfree (vqs_info );
5365
+ err_vqs_info :
5374
5366
kfree (vqs );
5375
5367
err_vq :
5376
5368
return ret ;
0 commit comments