@@ -1804,8 +1804,7 @@ static void config_work_handler(struct work_struct *work)
1804
1804
1805
1805
static int init_vqs (struct ports_device * portdev )
1806
1806
{
1807
- vq_callback_t * * io_callbacks ;
1808
- char * * io_names ;
1807
+ struct virtqueue_info * vqs_info ;
1809
1808
struct virtqueue * * vqs ;
1810
1809
u32 i , j , nr_ports , nr_queues ;
1811
1810
int err ;
@@ -1814,15 +1813,12 @@ static int init_vqs(struct ports_device *portdev)
1814
1813
nr_queues = use_multiport (portdev ) ? (nr_ports + 1 ) * 2 : 2 ;
1815
1814
1816
1815
vqs = kmalloc_array (nr_queues , sizeof (struct virtqueue * ), GFP_KERNEL );
1817
- io_callbacks = kmalloc_array (nr_queues , sizeof (vq_callback_t * ),
1818
- GFP_KERNEL );
1819
- io_names = kmalloc_array (nr_queues , sizeof (char * ), GFP_KERNEL );
1816
+ vqs_info = kcalloc (nr_queues , sizeof (* vqs_info ), GFP_KERNEL );
1820
1817
portdev -> in_vqs = kmalloc_array (nr_ports , sizeof (struct virtqueue * ),
1821
1818
GFP_KERNEL );
1822
1819
portdev -> out_vqs = kmalloc_array (nr_ports , sizeof (struct virtqueue * ),
1823
1820
GFP_KERNEL );
1824
- if (!vqs || !io_callbacks || !io_names || !portdev -> in_vqs ||
1825
- !portdev -> out_vqs ) {
1821
+ if (!vqs || !vqs_info || !portdev -> in_vqs || !portdev -> out_vqs ) {
1826
1822
err = - ENOMEM ;
1827
1823
goto free ;
1828
1824
}
@@ -1833,30 +1829,28 @@ static int init_vqs(struct ports_device *portdev)
1833
1829
* 0 before others.
1834
1830
*/
1835
1831
j = 0 ;
1836
- io_callbacks [j ] = in_intr ;
1837
- io_callbacks [j + 1 ] = out_intr ;
1838
- io_names [j ] = "input" ;
1839
- io_names [j + 1 ] = "output" ;
1832
+ vqs_info [j ]. callback = in_intr ;
1833
+ vqs_info [j + 1 ]. callback = out_intr ;
1834
+ vqs_info [j ]. name = "input" ;
1835
+ vqs_info [j + 1 ]. name = "output" ;
1840
1836
j += 2 ;
1841
1837
1842
1838
if (use_multiport (portdev )) {
1843
- io_callbacks [j ] = control_intr ;
1844
- io_callbacks [j + 1 ] = NULL ;
1845
- io_names [j ] = "control-i" ;
1846
- io_names [j + 1 ] = "control-o" ;
1839
+ vqs_info [j ].callback = control_intr ;
1840
+ vqs_info [j ].name = "control-i" ;
1841
+ vqs_info [j + 1 ].name = "control-o" ;
1847
1842
1848
1843
for (i = 1 ; i < nr_ports ; i ++ ) {
1849
1844
j += 2 ;
1850
- io_callbacks [j ] = in_intr ;
1851
- io_callbacks [j + 1 ] = out_intr ;
1852
- io_names [j ] = "input" ;
1853
- io_names [j + 1 ] = "output" ;
1845
+ vqs_info [j ]. callback = in_intr ;
1846
+ vqs_info [j + 1 ]. callback = out_intr ;
1847
+ vqs_info [j ]. name = "input" ;
1848
+ vqs_info [j + 1 ]. name = "output" ;
1854
1849
}
1855
1850
}
1856
1851
/* Find the queues. */
1857
- err = virtio_find_vqs (portdev -> vdev , nr_queues , vqs ,
1858
- io_callbacks ,
1859
- (const char * * )io_names , NULL );
1852
+ err = virtio_find_vqs_info (portdev -> vdev , nr_queues , vqs ,
1853
+ vqs_info , NULL );
1860
1854
if (err )
1861
1855
goto free ;
1862
1856
@@ -1874,17 +1868,15 @@ static int init_vqs(struct ports_device *portdev)
1874
1868
portdev -> out_vqs [i ] = vqs [j + 1 ];
1875
1869
}
1876
1870
}
1877
- kfree (io_names );
1878
- kfree (io_callbacks );
1871
+ kfree (vqs_info );
1879
1872
kfree (vqs );
1880
1873
1881
1874
return 0 ;
1882
1875
1883
1876
free :
1884
1877
kfree (portdev -> out_vqs );
1885
1878
kfree (portdev -> in_vqs );
1886
- kfree (io_names );
1887
- kfree (io_callbacks );
1879
+ kfree (vqs_info );
1888
1880
kfree (vqs );
1889
1881
1890
1882
return err ;
0 commit comments