net/mlx5: fix Tx stats error counter logic
[dpdk.git] / drivers / net / i40e / i40e_ethdev_vf.c
index b6547c9..38c3adc 100644 (file)
@@ -478,7 +478,7 @@ i40evf_get_vf_resource(struct rte_eth_dev *dev)
        len =  sizeof(struct virtchnl_vf_resource) +
                I40E_MAX_VF_VSI * sizeof(struct virtchnl_vsi_resource);
 
-       (void)rte_memcpy(vf->vf_res, args.out_buffer,
+       rte_memcpy(vf->vf_res, args.out_buffer,
                        RTE_MIN(args.out_size, len));
        i40e_vf_parse_hw_config(hw, vf->vf_res);
 
@@ -783,7 +783,7 @@ i40evf_add_mac_addr(struct rte_eth_dev *dev,
        int err;
        struct vf_cmd_info args;
 
-       if (i40e_validate_mac_addr(addr->addr_bytes) != I40E_SUCCESS) {
+       if (is_zero_ether_addr(addr)) {
                PMD_DRV_LOG(ERR, "Invalid mac:%x:%x:%x:%x:%x:%x",
                            addr->addr_bytes[0], addr->addr_bytes[1],
                            addr->addr_bytes[2], addr->addr_bytes[3],
@@ -794,7 +794,7 @@ i40evf_add_mac_addr(struct rte_eth_dev *dev,
        list = (struct virtchnl_ether_addr_list *)cmd_buffer;
        list->vsi_id = vf->vsi_res->vsi_id;
        list->num_elements = 1;
-       (void)rte_memcpy(list->list[0].addr, addr->addr_bytes,
+       rte_memcpy(list->list[0].addr, addr->addr_bytes,
                                        sizeof(addr->addr_bytes));
 
        args.ops = VIRTCHNL_OP_ADD_ETH_ADDR;
@@ -834,7 +834,7 @@ i40evf_del_mac_addr_by_addr(struct rte_eth_dev *dev,
        list = (struct virtchnl_ether_addr_list *)cmd_buffer;
        list->vsi_id = vf->vsi_res->vsi_id;
        list->num_elements = 1;
-       (void)rte_memcpy(list->list[0].addr, addr->addr_bytes,
+       rte_memcpy(list->list[0].addr, addr->addr_bytes,
                        sizeof(addr->addr_bytes));
 
        args.ops = VIRTCHNL_OP_DEL_ETH_ADDR;
@@ -1144,29 +1144,29 @@ i40evf_init_vf(struct rte_eth_dev *dev)
        /* VF reset, shutdown admin queue and initialize again */
        if (i40e_shutdown_adminq(hw) != I40E_SUCCESS) {
                PMD_INIT_LOG(ERR, "i40e_shutdown_adminq failed");
-               return -1;
+               goto err;
        }
 
        i40e_init_adminq_parameter(hw);
        if (i40e_init_adminq(hw) != I40E_SUCCESS) {
                PMD_INIT_LOG(ERR, "init_adminq failed");
-               return -1;
+               goto err;
        }
        vf->aq_resp = rte_zmalloc("vf_aq_resp", I40E_AQ_BUF_SZ, 0);
        if (!vf->aq_resp) {
                PMD_INIT_LOG(ERR, "unable to allocate vf_aq_resp memory");
-                       goto err_aq;
+               goto err_aq;
        }
        if (i40evf_check_api_version(dev) != 0) {
                PMD_INIT_LOG(ERR, "check_api version failed");
-               goto err_aq;
+               goto err_api;
        }
        bufsz = sizeof(struct virtchnl_vf_resource) +
                (I40E_MAX_VF_VSI * sizeof(struct virtchnl_vsi_resource));
        vf->vf_res = rte_zmalloc("vf_res", bufsz, 0);
        if (!vf->vf_res) {
                PMD_INIT_LOG(ERR, "unable to allocate vf_res memory");
-                       goto err_aq;
+               goto err_api;
        }
 
        if (i40evf_get_vf_resource(dev) != 0) {
@@ -1209,6 +1209,9 @@ i40evf_init_vf(struct rte_eth_dev *dev)
 
 err_alloc:
        rte_free(vf->vf_res);
+       vf->vsi_res = NULL;
+err_api:
+       rte_free(vf->aq_resp);
 err_aq:
        i40e_shutdown_adminq(hw); /* ignore error */
 err:
@@ -1885,7 +1888,7 @@ i40evf_add_del_all_mac_addr(struct rte_eth_dev *dev, bool add)
                        addr = &dev->data->mac_addrs[i];
                        if (is_zero_ether_addr(addr))
                                continue;
-                       (void)rte_memcpy(list->list[j].addr, addr->addr_bytes,
+                       rte_memcpy(list->list[j].addr, addr->addr_bytes,
                                         sizeof(addr->addr_bytes));
                        PMD_DRV_LOG(DEBUG, "add/rm mac:%x:%x:%x:%x:%x:%x",
                                    addr->addr_bytes[0], addr->addr_bytes[1],