[dpdk-dev] [PATCH 4/7] ethdev: change allmulticast callbacks to return status
Hyong Youb Kim (hyonkim)
hyonkim at cisco.com
Mon Sep 16 09:03:20 CEST 2019
> -----Original Message-----
> From: Andrew Rybchenko <arybchenko at solarflare.com>
> Sent: Monday, September 9, 2019 9:13 PM
[...]
> Subject: [PATCH 4/7] ethdev: change allmulticast callbacks to return status
>
> From: Ivan Ilchenko <Ivan.Ilchenko at oktetlabs.ru>
>
> Enabling/disabling of allmulticast mode is not always successful and
> it should be taken into account to be able to handle it properly.
>
> When correct return status is unclear from driver code, -EAGAIN is used.
>
> Signed-off-by: Ivan Ilchenko <Ivan.Ilchenko at oktetlabs.ru>
> Signed-off-by: Andrew Rybchenko <arybchenko at solarflare.com>
> ---
[...]
> drivers/net/enic/enic_ethdev.c | 22 +++++++---
[...]
> diff --git a/drivers/net/enic/enic_ethdev.c b/drivers/net/enic/enic_ethdev.c
> index 5d48930a9d..e12ca213ae 100644
> --- a/drivers/net/enic/enic_ethdev.c
> +++ b/drivers/net/enic/enic_ethdev.c
> @@ -638,28 +638,38 @@ static int enicpmd_dev_promiscuous_disable(struct
> rte_eth_dev *eth_dev)
> return ret;
> }
>
> -static void enicpmd_dev_allmulticast_enable(struct rte_eth_dev *eth_dev)
> +static int enicpmd_dev_allmulticast_enable(struct rte_eth_dev *eth_dev)
> {
> struct enic *enic = pmd_priv(eth_dev);
> + int ret;
>
> if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> - return;
> + return -ENOTSUP;
Hi Andrew,
If you are making v2, could you make this to return -E_RTE_SECONDARY,
as in the promisc patch?
>
> ENICPMD_FUNC_TRACE();
> enic->allmulti = 1;
> - enic_add_packet_filter(enic);
> + ret = enic_add_packet_filter(enic);
> + if (ret != 0)
> + enic->allmulti = 0;
> +
> + return ret;
> }
>
> -static void enicpmd_dev_allmulticast_disable(struct rte_eth_dev *eth_dev)
> +static int enicpmd_dev_allmulticast_disable(struct rte_eth_dev *eth_dev)
> {
> struct enic *enic = pmd_priv(eth_dev);
> + int ret;
>
> if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> - return;
> + return -ENOTSUP;
Here too.
I tested all 5 series (promisc, allmulti, ...) with enic, and my test
cases all passed.
Acked-by: Hyong Youb Kim <hyonkim at cisco.com>
Thanks.
-Hyong
>
> ENICPMD_FUNC_TRACE();
> enic->allmulti = 0;
> - enic_add_packet_filter(enic);
> + ret = enic_add_packet_filter(enic);
> + if (ret != 0)
> + enic->allmulti = 1;
> +
> + return ret;
> }
>
> static int enicpmd_add_mac_addr(struct rte_eth_dev *eth_dev,
More information about the dev
mailing list