[dpdk-dev] [PATCH v2] ethdev: return diagnostic when setting MAC address

Shreyansh Jain shreyansh.jain at nxp.com
Wed Apr 4 10:19:43 CEST 2018


Hello Olivier,

> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Olivier Matz
> Sent: Tuesday, April 3, 2018 6:11 PM
> To: dev at dpdk.org
> Cc: Thomas Monjalon <thomas at monjalon.net>; Ferruh Yigit
> <ferruh.yigit at intel.com>; Adrien Mazarguil <adrien.mazarguil at 6wind.com>;
> Tomasz Duszynski <tdu at semihalf.com>; Andrew Rybchenko
> <arybchenko at solarflare.com>; Ivan Malov <Ivan.Malov at oktetlabs.ru>; Ivan
> Malov <ivan.malov at oktetlabs.ru>
> Subject: [dpdk-dev] [PATCH v2] ethdev: return diagnostic when setting
> MAC address
> 
> Change the prototype and the behavior of dev_ops->eth_mac_addr_set(): a
> return code is added to notify the caller (librte_ether) if an error
> occurred in the PMD.
> 
> The new default MAC address is now copied in dev->data->mac_addrs[0]
> only if the operation is successful.
> 
> The patch also updates all the PMDs accordingly.
> 
> Signed-off-by: Olivier Matz <olivier.matz at 6wind.com>
> Signed-off-by: Ivan Malov <ivan.malov at oktetlabs.ru>
> ---
> 
> v2:
> * add same change for net/cxgbe
> * mrvl was renamed as mvpp2
> * mvpp2: return success if no ppio as suggested by Tomasz
> * mlx5: update comment as suggested by Adrien
> * sfc: replace by Ivan's patch
> 
>  doc/guides/rel_notes/deprecation.rst    |  8 --------
>  drivers/net/ark/ark_ethdev.c            |  9 ++++++---
>  drivers/net/avf/avf_ethdev.c            | 12 +++++++----
>  drivers/net/bnxt/bnxt_ethdev.c          | 10 ++++++----
>  drivers/net/bonding/rte_eth_bond_pmd.c  |  8 ++++++--
>  drivers/net/cxgbe/cxgbe_ethdev.c        |  5 +++--
>  drivers/net/cxgbe/cxgbe_pfvf.h          |  2 +-
>  drivers/net/dpaa/dpaa_ethdev.c          |  4 +++-
>  drivers/net/dpaa2/dpaa2_ethdev.c        |  6 ++++--
>  drivers/net/e1000/igb_ethdev.c          | 12 ++++++-----
>  drivers/net/failsafe/failsafe_ops.c     | 17 +++++++++++++---
>  drivers/net/i40e/i40e_ethdev.c          | 24 +++++++++++++---------
>  drivers/net/i40e/i40e_ethdev_vf.c       | 12 ++++++-----
>  drivers/net/ixgbe/ixgbe_ethdev.c        | 13 +++++++-----
>  drivers/net/mlx4/mlx4.h                 |  2 +-
>  drivers/net/mlx4/mlx4_ethdev.c          |  7 +++++--
>  drivers/net/mlx5/mlx5.h                 |  2 +-
>  drivers/net/mlx5/mlx5_mac.c             |  7 ++++++-
>  drivers/net/mvpp2/mrvl_ethdev.c         | 15 ++++++++++----
>  drivers/net/null/rte_eth_null.c         |  3 ++-
>  drivers/net/octeontx/octeontx_ethdev.c  |  4 +++-
>  drivers/net/qede/qede_ethdev.c          |  7 +++----
>  drivers/net/sfc/sfc_ethdev.c            | 35 ++++++++++++++++++++++----
> -------
>  drivers/net/szedata2/rte_eth_szedata2.c |  3 ++-
>  drivers/net/tap/rte_eth_tap.c           | 34 +++++++++++++++++++++-----
> ------
>  drivers/net/virtio/virtio_ethdev.c      | 15 +++++++++-----
>  drivers/net/vmxnet3/vmxnet3_ethdev.c    |  5 +++--
>  lib/librte_ether/rte_ethdev.c           |  7 +++++--
>  lib/librte_ether/rte_ethdev_core.h      |  2 +-
>  test/test/virtual_pmd.c                 |  3 ++-
>  30 files changed, 188 insertions(+), 105 deletions(-)
> 

[...]

> diff --git a/drivers/net/dpaa/dpaa_ethdev.c
> b/drivers/net/dpaa/dpaa_ethdev.c
> index db493648a..2e4cb8267 100644
> --- a/drivers/net/dpaa/dpaa_ethdev.c
> +++ b/drivers/net/dpaa/dpaa_ethdev.c
> @@ -813,7 +813,7 @@ dpaa_dev_remove_mac_addr(struct rte_eth_dev *dev,
>  	fman_if_clear_mac_addr(dpaa_intf->fif, index);
>  }
> 
> -static void
> +static int
>  dpaa_dev_set_mac_addr(struct rte_eth_dev *dev,
>  		       struct ether_addr *addr)
>  {
> @@ -825,6 +825,8 @@ dpaa_dev_set_mac_addr(struct rte_eth_dev *dev,
>  	ret = fman_if_add_mac_addr(dpaa_intf->fif, addr->addr_bytes, 0);
>  	if (ret)
>  		RTE_LOG(ERR, PMD, "error: Setting the MAC ADDR failed %d",
> ret);
> +
> +	return 0;

This should be 'return ret' as just above this line there is an error condition.

>  }
> 
>  static struct eth_dev_ops dpaa_devops = {
> diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c
> b/drivers/net/dpaa2/dpaa2_ethdev.c
> index 281483dfd..07d45a11e 100644
> --- a/drivers/net/dpaa2/dpaa2_ethdev.c
> +++ b/drivers/net/dpaa2/dpaa2_ethdev.c
> @@ -1019,7 +1019,7 @@ dpaa2_dev_remove_mac_addr(struct rte_eth_dev *dev,
>  			"error: Removing the MAC ADDR failed: err = %d", ret);
>  }
> 
> -static void
> +static int
>  dpaa2_dev_set_mac_addr(struct rte_eth_dev *dev,
>  		       struct ether_addr *addr)
>  {
> @@ -1031,7 +1031,7 @@ dpaa2_dev_set_mac_addr(struct rte_eth_dev *dev,
> 
>  	if (dpni == NULL) {
>  		DPAA2_PMD_ERR("dpni is NULL");
> -		return;
> +		return -EINVAL;
>  	}
> 
>  	ret = dpni_set_primary_mac_addr(dpni, CMD_PRI_LOW,
> @@ -1040,6 +1040,8 @@ dpaa2_dev_set_mac_addr(struct rte_eth_dev *dev,
>  	if (ret)
>  		DPAA2_PMD_ERR(
>  			"error: Setting the MAC ADDR failed %d", ret);
> +
> +	return 0;

Same is the case here - It should be 'return ret' as there is an error reported just above this line.

>  }
> 
>  static

[...]

For the v3 with the changes above, for dpaa/dpaa2 and generic part:

Acked-by: Shreyansh Jain <shreyansh.jain at nxp.com>


-
Shreyansh


More information about the dev mailing list