@@ -5293,9 +5293,8 @@ static unsigned int mergeable_min_buf_len(struct virtnet_info *vi, struct virtqu
52935293
52945294static 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)
53675361err_find :
53685362 kfree (ctx );
53695363err_ctx :
5370- kfree (names );
5371- err_names :
5372- kfree (callbacks );
5373- err_callback :
5364+ kfree (vqs_info );
5365+ err_vqs_info :
53745366 kfree (vqs );
53755367err_vq :
53765368 return ret ;
0 commit comments