@@ -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
706713static void disable_sub_crqs (struct ibmvnic_adapter * adapter )
0 commit comments