Hello Olivier, > -----Original Message----- > From: dev [mailto:dev-boun...@dpdk.org] On Behalf Of Olivier Matz > Sent: Tuesday, April 3, 2018 6:11 PM > To: dev@dpdk.org > Cc: Thomas Monjalon <tho...@monjalon.net>; Ferruh Yigit > <ferruh.yi...@intel.com>; Adrien Mazarguil <adrien.mazarg...@6wind.com>; > Tomasz Duszynski <t...@semihalf.com>; Andrew Rybchenko > <arybche...@solarflare.com>; Ivan Malov <ivan.ma...@oktetlabs.ru>; Ivan > Malov <ivan.ma...@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.m...@6wind.com> > Signed-off-by: Ivan Malov <ivan.ma...@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.j...@nxp.com> - Shreyansh