Skip to content

Commit bfc32f2

Browse files
nfontdavem330
authored andcommitted
ibmvnic: Move resource initialization to its own routine
Move all of the calls to initialize resources for the driver to a separate routine. Signed-off-by: Nathan Fontenot <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 4d89ac2 commit bfc32f2

1 file changed

Lines changed: 39 additions & 32 deletions

File tree

drivers/net/ethernet/ibm/ibmvnic.c

Lines changed: 39 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -624,30 +624,18 @@ static int set_real_num_queues(struct net_device *netdev)
624624
return rc;
625625
}
626626

627-
static int ibmvnic_open(struct net_device *netdev)
627+
static int init_resources(struct ibmvnic_adapter *adapter)
628628
{
629-
struct ibmvnic_adapter *adapter = netdev_priv(netdev);
630-
struct device *dev = &adapter->vdev->dev;
631-
int rc = 0;
632-
int i;
633-
634-
if (adapter->is_closed) {
635-
rc = ibmvnic_init(adapter);
636-
if (rc)
637-
return rc;
638-
}
639-
640-
rc = ibmvnic_login(netdev);
641-
if (rc)
642-
return rc;
629+
struct net_device *netdev = adapter->netdev;
630+
int i, rc;
643631

644632
rc = set_real_num_queues(netdev);
645633
if (rc)
646634
return rc;
647635

648636
rc = init_sub_crq_irqs(adapter);
649637
if (rc) {
650-
dev_err(dev, "failed to initialize sub crq irqs\n");
638+
netdev_err(netdev, "failed to initialize sub crq irqs\n");
651639
return -1;
652640
}
653641

@@ -659,25 +647,47 @@ static int ibmvnic_open(struct net_device *netdev)
659647
adapter->napi = kcalloc(adapter->req_rx_queues,
660648
sizeof(struct napi_struct), GFP_KERNEL);
661649
if (!adapter->napi)
662-
goto ibmvnic_open_fail;
650+
return -ENOMEM;
651+
663652
for (i = 0; i < adapter->req_rx_queues; i++) {
664653
netif_napi_add(netdev, &adapter->napi[i], ibmvnic_poll,
665654
NAPI_POLL_WEIGHT);
666-
napi_enable(&adapter->napi[i]);
667655
}
668656

669657
send_map_query(adapter);
670658

671659
rc = init_rx_pools(netdev);
672660
if (rc)
673-
goto ibmvnic_open_fail;
661+
return rc;
674662

675663
rc = init_tx_pools(netdev);
664+
return rc;
665+
}
666+
667+
static int ibmvnic_open(struct net_device *netdev)
668+
{
669+
struct ibmvnic_adapter *adapter = netdev_priv(netdev);
670+
int i, rc;
671+
672+
if (adapter->is_closed) {
673+
rc = ibmvnic_init(adapter);
674+
if (rc)
675+
return rc;
676+
}
677+
678+
rc = ibmvnic_login(netdev);
676679
if (rc)
677-
goto ibmvnic_open_fail;
680+
return rc;
681+
682+
rc = init_resources(adapter);
683+
if (rc)
684+
return rc;
678685

679686
replenish_pools(adapter);
680687

688+
for (i = 0; i < adapter->req_rx_queues; i++)
689+
napi_enable(&adapter->napi[i]);
690+
681691
/* We're ready to receive frames, enable the sub-crq interrupts and
682692
* set the logical link state to up
683693
*/
@@ -688,19 +698,16 @@ static int ibmvnic_open(struct net_device *netdev)
688698
enable_scrq_irq(adapter, adapter->tx_scrq[i]);
689699

690700
rc = set_link_state(adapter, IBMVNIC_LOGICAL_LNK_UP);
691-
if (rc)
692-
goto ibmvnic_open_fail;
693-
694-
netif_tx_start_all_queues(netdev);
695-
adapter->is_closed = false;
696-
697-
return 0;
701+
if (rc) {
702+
for (i = 0; i < adapter->req_rx_queues; i++)
703+
napi_disable(&adapter->napi[i]);
704+
release_resources(adapter);
705+
} else {
706+
netif_tx_start_all_queues(netdev);
707+
adapter->is_closed = false;
708+
}
698709

699-
ibmvnic_open_fail:
700-
for (i = 0; i < adapter->req_rx_queues; i++)
701-
napi_disable(&adapter->napi[i]);
702-
release_resources(adapter);
703-
return -ENOMEM;
710+
return rc;
704711
}
705712

706713
static void disable_sub_crqs(struct ibmvnic_adapter *adapter)

0 commit comments

Comments
 (0)