From: Xiao Zhang Date: Fri, 28 Feb 2020 03:22:04 +0000 (+0800) Subject: net/i40e: fix port start during config restore X-Git-Url: http://git.droids-corp.org/?p=dpdk.git;a=commitdiff_plain;h=496608a079ccc339900f67077d88fd7bcbf56d04 net/i40e: fix port start during config restore If configuring VF promiscuous mode is not supported, return '-ENOTSUP' error code in '.promiscuous_enable/disable' dev_ops. This is to fix the port start during config restore, where if '.promiscuous_enable/disable' dev_ops exists and return any value other than '-ENOTSUP', start will fail. Same is done for '.allmulticast_enable/disable' dev_ops. Fixes: ddc7cb0d9453 ("net/i40e: re-program promiscuous mode on VF interface") Cc: stable@dpdk.org Signed-off-by: Xiao Zhang Reviewed-by: Xiaolong Ye --- diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c index c34f5206c8..244397e0e5 100644 --- a/drivers/net/i40e/i40e_ethdev_vf.c +++ b/drivers/net/i40e/i40e_ethdev_vf.c @@ -2191,6 +2191,8 @@ i40evf_dev_promiscuous_enable(struct rte_eth_dev *dev) ret = i40evf_config_promisc(dev, 1, vf->promisc_multicast_enabled); if (ret == 0) vf->promisc_unicast_enabled = TRUE; + else if (ret == I40E_NOT_SUPPORTED) + ret = -ENOTSUP; else ret = -EAGAIN; @@ -2206,6 +2208,8 @@ i40evf_dev_promiscuous_disable(struct rte_eth_dev *dev) ret = i40evf_config_promisc(dev, 0, vf->promisc_multicast_enabled); if (ret == 0) vf->promisc_unicast_enabled = FALSE; + else if (ret == I40E_NOT_SUPPORTED) + ret = -ENOTSUP; else ret = -EAGAIN; @@ -2221,6 +2225,8 @@ i40evf_dev_allmulticast_enable(struct rte_eth_dev *dev) ret = i40evf_config_promisc(dev, vf->promisc_unicast_enabled, 1); if (ret == 0) vf->promisc_multicast_enabled = TRUE; + else if (ret == I40E_NOT_SUPPORTED) + ret = -ENOTSUP; else ret = -EAGAIN; @@ -2236,6 +2242,8 @@ i40evf_dev_allmulticast_disable(struct rte_eth_dev *dev) ret = i40evf_config_promisc(dev, vf->promisc_unicast_enabled, 0); if (ret == 0) vf->promisc_multicast_enabled = FALSE; + else if (ret == I40E_NOT_SUPPORTED) + ret = -ENOTSUP; else ret = -EAGAIN;