On 2/28/2020 3:22 AM, Xiao Zhang wrote: > Return ENOTSUP error code when configuring i40evf promiscuous mode to > fix port start hang issue on platforms which are unsupported to configure > promiscuous mode.
Hi Xiao, What is the cause of the hang, was the application keep trying because of the "-EAGAIN" error? > > Fixes: ddc7cb0d9453 ("net/i40e: re-program promiscuous mode on VF > interface") > Cc: sta...@dpdk.org > > Signed-off-by: Xiao Zhang <xiao.zh...@intel.com> > --- > drivers/net/i40e/i40e_ethdev_vf.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/net/i40e/i40e_ethdev_vf.c > b/drivers/net/i40e/i40e_ethdev_vf.c > index c34f520..244397e 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; > >