X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Ftxgbe%2Ftxgbe_pf.c;h=e4bd990b962324d60d8c656dca4494ad87f286fb;hb=b7311360fb670319865a89aba4c6220c5fd827d5;hp=67045fb0124c25f9a77d71289a82722b8d58f583;hpb=770a352363b6f8d8e66802c86ecb4dfbe7ea5081;p=dpdk.git diff --git a/drivers/net/txgbe/txgbe_pf.c b/drivers/net/txgbe/txgbe_pf.c index 67045fb012..e4bd990b96 100644 --- a/drivers/net/txgbe/txgbe_pf.c +++ b/drivers/net/txgbe/txgbe_pf.c @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include #include @@ -64,7 +64,7 @@ txgbe_mb_intr_setup(struct rte_eth_dev *dev) return 0; } -void txgbe_pf_host_init(struct rte_eth_dev *eth_dev) +int txgbe_pf_host_init(struct rte_eth_dev *eth_dev) { struct txgbe_vf_info **vfinfo = TXGBE_DEV_VFDATA(eth_dev); struct txgbe_mirror_info *mirror_info = TXGBE_DEV_MR_INFO(eth_dev); @@ -72,20 +72,31 @@ void txgbe_pf_host_init(struct rte_eth_dev *eth_dev) struct txgbe_hw *hw = TXGBE_DEV_HW(eth_dev); uint16_t vf_num; uint8_t nb_queue; + int ret = 0; PMD_INIT_FUNC_TRACE(); RTE_ETH_DEV_SRIOV(eth_dev).active = 0; vf_num = dev_num_vf(eth_dev); if (vf_num == 0) - return; + return ret; *vfinfo = rte_zmalloc("vf_info", sizeof(struct txgbe_vf_info) * vf_num, 0); - if (*vfinfo == NULL) - rte_panic("Cannot allocate memory for private VF data\n"); + if (*vfinfo == NULL) { + PMD_INIT_LOG(ERR, + "Cannot allocate memory for private VF data\n"); + return -ENOMEM; + } - rte_eth_switch_domain_alloc(&(*vfinfo)->switch_domain_id); + ret = rte_eth_switch_domain_alloc(&(*vfinfo)->switch_domain_id); + if (ret) { + PMD_INIT_LOG(ERR, + "failed to allocate switch domain for device %d", ret); + rte_free(*vfinfo); + *vfinfo = NULL; + return ret; + } memset(mirror_info, 0, sizeof(struct txgbe_mirror_info)); memset(uta_info, 0, sizeof(struct txgbe_uta_info)); @@ -114,6 +125,8 @@ void txgbe_pf_host_init(struct rte_eth_dev *eth_dev) /* set mb interrupt mask */ txgbe_mb_intr_setup(eth_dev); + + return ret; } void txgbe_pf_host_uninit(struct rte_eth_dev *eth_dev)