@@ -578,13 +578,23 @@ static int ibmvnic_login(struct net_device *netdev)
578578 return 0 ;
579579}
580580
581+ static void release_resources (struct ibmvnic_adapter * adapter )
582+ {
583+ release_bounce_buffer (adapter );
584+ release_tx_pools (adapter );
585+ release_rx_pools (adapter );
586+
587+ release_sub_crqs (adapter );
588+ release_crq_queue (adapter );
589+
590+ release_stats_token (adapter );
591+ }
592+
581593static int ibmvnic_open (struct net_device * netdev )
582594{
583595 struct ibmvnic_adapter * adapter = netdev_priv (netdev );
584596 struct device * dev = & adapter -> vdev -> dev ;
585597 union ibmvnic_crq crq ;
586- int rxadd_subcrqs ;
587- int tx_subcrqs ;
588598 int rc = 0 ;
589599 int i ;
590600
@@ -610,16 +620,11 @@ static int ibmvnic_open(struct net_device *netdev)
610620 return -1 ;
611621 }
612622
613- rxadd_subcrqs =
614- be32_to_cpu (adapter -> login_rsp_buf -> num_rxadd_subcrqs );
615- tx_subcrqs =
616- be32_to_cpu (adapter -> login_rsp_buf -> num_txsubm_subcrqs );
617-
618623 adapter -> map_id = 1 ;
619624 adapter -> napi = kcalloc (adapter -> req_rx_queues ,
620625 sizeof (struct napi_struct ), GFP_KERNEL );
621626 if (!adapter -> napi )
622- goto alloc_napi_failed ;
627+ goto ibmvnic_open_fail ;
623628 for (i = 0 ; i < adapter -> req_rx_queues ; i ++ ) {
624629 netif_napi_add (netdev , & adapter -> napi [i ], ibmvnic_poll ,
625630 NAPI_POLL_WEIGHT );
@@ -630,15 +635,15 @@ static int ibmvnic_open(struct net_device *netdev)
630635
631636 rc = init_rx_pools (netdev );
632637 if (rc )
633- goto rx_pool_failed ;
638+ goto ibmvnic_open_fail ;
634639
635640 rc = init_tx_pools (netdev );
636641 if (rc )
637- goto tx_pool_failed ;
642+ goto ibmvnic_open_fail ;
638643
639644 rc = init_bounce_buffer (netdev );
640645 if (rc )
641- goto bounce_init_failed ;
646+ goto ibmvnic_open_fail ;
642647
643648 replenish_pools (adapter );
644649
@@ -662,31 +667,13 @@ static int ibmvnic_open(struct net_device *netdev)
662667
663668 return 0 ;
664669
665- bounce_init_failed :
666- i = tx_subcrqs - 1 ;
667- kfree (adapter -> tx_pool [i ].free_map );
668- tx_pool_failed :
669- i = rxadd_subcrqs ;
670- rx_pool_failed :
670+ ibmvnic_open_fail :
671671 for (i = 0 ; i < adapter -> req_rx_queues ; i ++ )
672672 napi_disable (& adapter -> napi [i ]);
673- alloc_napi_failed :
674- release_sub_crqs (adapter );
673+ release_resources (adapter );
675674 return - ENOMEM ;
676675}
677676
678- static void ibmvnic_release_resources (struct ibmvnic_adapter * adapter )
679- {
680- release_bounce_buffer (adapter );
681- release_tx_pools (adapter );
682- release_rx_pools (adapter );
683-
684- release_sub_crqs (adapter );
685- release_crq_queue (adapter );
686-
687- release_stats_token (adapter );
688- }
689-
690677static int ibmvnic_close (struct net_device * netdev )
691678{
692679 struct ibmvnic_adapter * adapter = netdev_priv (netdev );
@@ -707,7 +694,7 @@ static int ibmvnic_close(struct net_device *netdev)
707694 crq .logical_link_state .link_state = IBMVNIC_LOGICAL_LNK_DN ;
708695 ibmvnic_send_crq (adapter , & crq );
709696
710- ibmvnic_release_resources (adapter );
697+ release_resources (adapter );
711698
712699 adapter -> is_closed = true;
713700 adapter -> closing = false;
0 commit comments