@@ -461,7 +461,7 @@ static void release_rx_pools(struct ibmvnic_adapter *adapter)
461
461
if (!adapter -> rx_pool )
462
462
return ;
463
463
464
- for (i = 0 ; i < adapter -> num_active_rx_scrqs ; i ++ ) {
464
+ for (i = 0 ; i < adapter -> num_active_rx_pools ; i ++ ) {
465
465
rx_pool = & adapter -> rx_pool [i ];
466
466
467
467
netdev_dbg (adapter -> netdev , "Releasing rx_pool[%d]\n" , i );
@@ -484,6 +484,7 @@ static void release_rx_pools(struct ibmvnic_adapter *adapter)
484
484
485
485
kfree (adapter -> rx_pool );
486
486
adapter -> rx_pool = NULL ;
487
+ adapter -> num_active_rx_pools = 0 ;
487
488
}
488
489
489
490
static int init_rx_pools (struct net_device * netdev )
@@ -508,6 +509,8 @@ static int init_rx_pools(struct net_device *netdev)
508
509
return -1 ;
509
510
}
510
511
512
+ adapter -> num_active_rx_pools = rxadd_subcrqs ;
513
+
511
514
for (i = 0 ; i < rxadd_subcrqs ; i ++ ) {
512
515
rx_pool = & adapter -> rx_pool [i ];
513
516
@@ -608,7 +611,7 @@ static void release_tx_pools(struct ibmvnic_adapter *adapter)
608
611
if (!adapter -> tx_pool )
609
612
return ;
610
613
611
- for (i = 0 ; i < adapter -> num_active_tx_scrqs ; i ++ ) {
614
+ for (i = 0 ; i < adapter -> num_active_tx_pools ; i ++ ) {
612
615
netdev_dbg (adapter -> netdev , "Releasing tx_pool[%d]\n" , i );
613
616
tx_pool = & adapter -> tx_pool [i ];
614
617
kfree (tx_pool -> tx_buff );
@@ -619,6 +622,7 @@ static void release_tx_pools(struct ibmvnic_adapter *adapter)
619
622
620
623
kfree (adapter -> tx_pool );
621
624
adapter -> tx_pool = NULL ;
625
+ adapter -> num_active_tx_pools = 0 ;
622
626
}
623
627
624
628
static int init_tx_pools (struct net_device * netdev )
@@ -635,6 +639,8 @@ static int init_tx_pools(struct net_device *netdev)
635
639
if (!adapter -> tx_pool )
636
640
return -1 ;
637
641
642
+ adapter -> num_active_tx_pools = tx_subcrqs ;
643
+
638
644
for (i = 0 ; i < tx_subcrqs ; i ++ ) {
639
645
tx_pool = & adapter -> tx_pool [i ];
640
646
@@ -745,6 +751,7 @@ static int init_napi(struct ibmvnic_adapter *adapter)
745
751
ibmvnic_poll , NAPI_POLL_WEIGHT );
746
752
}
747
753
754
+ adapter -> num_active_rx_napi = adapter -> req_rx_queues ;
748
755
return 0 ;
749
756
}
750
757
@@ -755,7 +762,7 @@ static void release_napi(struct ibmvnic_adapter *adapter)
755
762
if (!adapter -> napi )
756
763
return ;
757
764
758
- for (i = 0 ; i < adapter -> num_active_rx_scrqs ; i ++ ) {
765
+ for (i = 0 ; i < adapter -> num_active_rx_napi ; i ++ ) {
759
766
if (& adapter -> napi [i ]) {
760
767
netdev_dbg (adapter -> netdev ,
761
768
"Releasing napi[%d]\n" , i );
@@ -765,6 +772,7 @@ static void release_napi(struct ibmvnic_adapter *adapter)
765
772
766
773
kfree (adapter -> napi );
767
774
adapter -> napi = NULL ;
775
+ adapter -> num_active_rx_napi = 0 ;
768
776
}
769
777
770
778
static int ibmvnic_login (struct net_device * netdev )
@@ -998,10 +1006,6 @@ static int init_resources(struct ibmvnic_adapter *adapter)
998
1006
return rc ;
999
1007
1000
1008
rc = init_tx_pools (netdev );
1001
-
1002
- adapter -> num_active_tx_scrqs = adapter -> req_tx_queues ;
1003
- adapter -> num_active_rx_scrqs = adapter -> req_rx_queues ;
1004
-
1005
1009
return rc ;
1006
1010
}
1007
1011
@@ -1706,9 +1710,6 @@ static int do_reset(struct ibmvnic_adapter *adapter,
1706
1710
1707
1711
release_napi (adapter );
1708
1712
init_napi (adapter );
1709
-
1710
- adapter -> num_active_tx_scrqs = adapter -> req_tx_queues ;
1711
- adapter -> num_active_rx_scrqs = adapter -> req_rx_queues ;
1712
1713
} else {
1713
1714
rc = reset_tx_pools (adapter );
1714
1715
if (rc )
@@ -2398,19 +2399,10 @@ static struct ibmvnic_sub_crq_queue *init_sub_crq_queue(struct ibmvnic_adapter
2398
2399
2399
2400
static void release_sub_crqs (struct ibmvnic_adapter * adapter , bool do_h_free )
2400
2401
{
2401
- u64 num_tx_scrqs , num_rx_scrqs ;
2402
2402
int i ;
2403
2403
2404
- if (adapter -> state == VNIC_PROBED ) {
2405
- num_tx_scrqs = adapter -> req_tx_queues ;
2406
- num_rx_scrqs = adapter -> req_rx_queues ;
2407
- } else {
2408
- num_tx_scrqs = adapter -> num_active_tx_scrqs ;
2409
- num_rx_scrqs = adapter -> num_active_rx_scrqs ;
2410
- }
2411
-
2412
2404
if (adapter -> tx_scrq ) {
2413
- for (i = 0 ; i < num_tx_scrqs ; i ++ ) {
2405
+ for (i = 0 ; i < adapter -> num_active_tx_scrqs ; i ++ ) {
2414
2406
if (!adapter -> tx_scrq [i ])
2415
2407
continue ;
2416
2408
@@ -2429,10 +2421,11 @@ static void release_sub_crqs(struct ibmvnic_adapter *adapter, bool do_h_free)
2429
2421
2430
2422
kfree (adapter -> tx_scrq );
2431
2423
adapter -> tx_scrq = NULL ;
2424
+ adapter -> num_active_tx_scrqs = 0 ;
2432
2425
}
2433
2426
2434
2427
if (adapter -> rx_scrq ) {
2435
- for (i = 0 ; i < num_rx_scrqs ; i ++ ) {
2428
+ for (i = 0 ; i < adapter -> num_active_rx_scrqs ; i ++ ) {
2436
2429
if (!adapter -> rx_scrq [i ])
2437
2430
continue ;
2438
2431
@@ -2451,6 +2444,7 @@ static void release_sub_crqs(struct ibmvnic_adapter *adapter, bool do_h_free)
2451
2444
2452
2445
kfree (adapter -> rx_scrq );
2453
2446
adapter -> rx_scrq = NULL ;
2447
+ adapter -> num_active_rx_scrqs = 0 ;
2454
2448
}
2455
2449
}
2456
2450
@@ -2718,6 +2712,7 @@ static int init_sub_crqs(struct ibmvnic_adapter *adapter)
2718
2712
for (i = 0 ; i < adapter -> req_tx_queues ; i ++ ) {
2719
2713
adapter -> tx_scrq [i ] = allqueues [i ];
2720
2714
adapter -> tx_scrq [i ]-> pool_index = i ;
2715
+ adapter -> num_active_tx_scrqs ++ ;
2721
2716
}
2722
2717
2723
2718
adapter -> rx_scrq = kcalloc (adapter -> req_rx_queues ,
@@ -2728,6 +2723,7 @@ static int init_sub_crqs(struct ibmvnic_adapter *adapter)
2728
2723
for (i = 0 ; i < adapter -> req_rx_queues ; i ++ ) {
2729
2724
adapter -> rx_scrq [i ] = allqueues [i + adapter -> req_tx_queues ];
2730
2725
adapter -> rx_scrq [i ]-> scrq_num = i ;
2726
+ adapter -> num_active_rx_scrqs ++ ;
2731
2727
}
2732
2728
2733
2729
kfree (allqueues );
0 commit comments