@@ -900,8 +900,8 @@ static void idpf_vport_stop(struct idpf_vport *vport)
900
900
901
901
vport -> link_up = false;
902
902
idpf_vport_intr_deinit (vport );
903
- idpf_vport_intr_rel (vport );
904
903
idpf_vport_queues_rel (vport );
904
+ idpf_vport_intr_rel (vport );
905
905
np -> state = __IDPF_VPORT_DOWN ;
906
906
}
907
907
@@ -1335,9 +1335,8 @@ static void idpf_rx_init_buf_tail(struct idpf_vport *vport)
1335
1335
/**
1336
1336
* idpf_vport_open - Bring up a vport
1337
1337
* @vport: vport to bring up
1338
- * @alloc_res: allocate queue resources
1339
1338
*/
1340
- static int idpf_vport_open (struct idpf_vport * vport , bool alloc_res )
1339
+ static int idpf_vport_open (struct idpf_vport * vport )
1341
1340
{
1342
1341
struct idpf_netdev_priv * np = netdev_priv (vport -> netdev );
1343
1342
struct idpf_adapter * adapter = vport -> adapter ;
@@ -1350,45 +1349,43 @@ static int idpf_vport_open(struct idpf_vport *vport, bool alloc_res)
1350
1349
/* we do not allow interface up just yet */
1351
1350
netif_carrier_off (vport -> netdev );
1352
1351
1353
- if (alloc_res ) {
1354
- err = idpf_vport_queues_alloc (vport );
1355
- if (err )
1356
- return err ;
1357
- }
1358
-
1359
1352
err = idpf_vport_intr_alloc (vport );
1360
1353
if (err ) {
1361
1354
dev_err (& adapter -> pdev -> dev , "Failed to allocate interrupts for vport %u: %d\n" ,
1362
1355
vport -> vport_id , err );
1363
- goto queues_rel ;
1356
+ return err ;
1364
1357
}
1365
1358
1359
+ err = idpf_vport_queues_alloc (vport );
1360
+ if (err )
1361
+ goto intr_rel ;
1362
+
1366
1363
err = idpf_vport_queue_ids_init (vport );
1367
1364
if (err ) {
1368
1365
dev_err (& adapter -> pdev -> dev , "Failed to initialize queue ids for vport %u: %d\n" ,
1369
1366
vport -> vport_id , err );
1370
- goto intr_rel ;
1367
+ goto queues_rel ;
1371
1368
}
1372
1369
1373
1370
err = idpf_vport_intr_init (vport );
1374
1371
if (err ) {
1375
1372
dev_err (& adapter -> pdev -> dev , "Failed to initialize interrupts for vport %u: %d\n" ,
1376
1373
vport -> vport_id , err );
1377
- goto intr_rel ;
1374
+ goto queues_rel ;
1378
1375
}
1379
1376
1380
1377
err = idpf_rx_bufs_init_all (vport );
1381
1378
if (err ) {
1382
1379
dev_err (& adapter -> pdev -> dev , "Failed to initialize RX buffers for vport %u: %d\n" ,
1383
1380
vport -> vport_id , err );
1384
- goto intr_rel ;
1381
+ goto queues_rel ;
1385
1382
}
1386
1383
1387
1384
err = idpf_queue_reg_init (vport );
1388
1385
if (err ) {
1389
1386
dev_err (& adapter -> pdev -> dev , "Failed to initialize queue registers for vport %u: %d\n" ,
1390
1387
vport -> vport_id , err );
1391
- goto intr_rel ;
1388
+ goto queues_rel ;
1392
1389
}
1393
1390
1394
1391
idpf_rx_init_buf_tail (vport );
@@ -1455,10 +1452,10 @@ static int idpf_vport_open(struct idpf_vport *vport, bool alloc_res)
1455
1452
idpf_send_map_unmap_queue_vector_msg (vport , false);
1456
1453
intr_deinit :
1457
1454
idpf_vport_intr_deinit (vport );
1458
- intr_rel :
1459
- idpf_vport_intr_rel (vport );
1460
1455
queues_rel :
1461
1456
idpf_vport_queues_rel (vport );
1457
+ intr_rel :
1458
+ idpf_vport_intr_rel (vport );
1462
1459
1463
1460
return err ;
1464
1461
}
@@ -1539,7 +1536,7 @@ void idpf_init_task(struct work_struct *work)
1539
1536
np = netdev_priv (vport -> netdev );
1540
1537
np -> state = __IDPF_VPORT_DOWN ;
1541
1538
if (test_and_clear_bit (IDPF_VPORT_UP_REQUESTED , vport_config -> flags ))
1542
- idpf_vport_open (vport , true );
1539
+ idpf_vport_open (vport );
1543
1540
1544
1541
/* Spawn and return 'idpf_init_task' work queue until all the
1545
1542
* default vports are created
@@ -1898,9 +1895,6 @@ int idpf_initiate_soft_reset(struct idpf_vport *vport,
1898
1895
goto free_vport ;
1899
1896
}
1900
1897
1901
- err = idpf_vport_queues_alloc (new_vport );
1902
- if (err )
1903
- goto free_vport ;
1904
1898
if (current_state <= __IDPF_VPORT_DOWN ) {
1905
1899
idpf_send_delete_queues_msg (vport );
1906
1900
} else {
@@ -1932,17 +1926,23 @@ int idpf_initiate_soft_reset(struct idpf_vport *vport,
1932
1926
1933
1927
err = idpf_set_real_num_queues (vport );
1934
1928
if (err )
1935
- goto err_reset ;
1929
+ goto err_open ;
1936
1930
1937
1931
if (current_state == __IDPF_VPORT_UP )
1938
- err = idpf_vport_open (vport , false );
1932
+ err = idpf_vport_open (vport );
1939
1933
1940
1934
kfree (new_vport );
1941
1935
1942
1936
return err ;
1943
1937
1944
1938
err_reset :
1945
- idpf_vport_queues_rel (new_vport );
1939
+ idpf_send_add_queues_msg (vport , vport -> num_txq , vport -> num_complq ,
1940
+ vport -> num_rxq , vport -> num_bufq );
1941
+
1942
+ err_open :
1943
+ if (current_state == __IDPF_VPORT_UP )
1944
+ idpf_vport_open (vport );
1945
+
1946
1946
free_vport :
1947
1947
kfree (new_vport );
1948
1948
@@ -2171,7 +2171,7 @@ static int idpf_open(struct net_device *netdev)
2171
2171
idpf_vport_ctrl_lock (netdev );
2172
2172
vport = idpf_netdev_to_vport (netdev );
2173
2173
2174
- err = idpf_vport_open (vport , true );
2174
+ err = idpf_vport_open (vport );
2175
2175
2176
2176
idpf_vport_ctrl_unlock (netdev );
2177
2177
0 commit comments