X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fmlx5%2Fmlx5_mac.c;h=a791fedc9108abeae622c6659bc7d089d632e075;hb=46c6714ffd4326cd9ea884a9812a459a444f464a;hp=88c52b29f44557af6770e8ce3b378210a1fd2082;hpb=753dd70283c772ddcaf20c6f0ccb0ce5de5a5228;p=dpdk.git diff --git a/drivers/net/mlx5/mlx5_mac.c b/drivers/net/mlx5/mlx5_mac.c index 88c52b29f4..a791fedc91 100644 --- a/drivers/net/mlx5/mlx5_mac.c +++ b/drivers/net/mlx5/mlx5_mac.c @@ -8,12 +8,9 @@ #include #include #include -#include -#include -#include #include -#include +#include #include #include "mlx5_defs.h" @@ -156,23 +153,30 @@ mlx5_mac_addr_set(struct rte_eth_dev *dev, struct rte_ether_addr *mac_addr) { uint16_t port_id; struct mlx5_priv *priv = dev->data->dev_private; + struct mlx5_priv *pf_priv; /* * Configuring the VF instead of its representor, * need to skip the special case of HPF on Bluefield. */ - if (priv->representor && priv->representor_id >= 0) { + if (priv->representor && !mlx5_is_hpf(dev) && !mlx5_is_sf_repr(dev)) { DRV_LOG(DEBUG, "VF represented by port %u setting primary MAC address", dev->data->port_id); + if (priv->pf_bond >= 0) { + /* Bonding, get owner PF ifindex from shared data. */ + return mlx5_os_vf_mac_addr_modify + (priv, + priv->sh->bond.ports[priv->pf_bond].ifindex, + mac_addr, + MLX5_REPRESENTOR_REPR(priv->representor_id)); + } RTE_ETH_FOREACH_DEV_SIBLING(port_id, dev->data->port_id) { - priv = rte_eth_devices[port_id].data->dev_private; - if (priv->master == 1) { - priv = dev->data->dev_private; + pf_priv = rte_eth_devices[port_id].data->dev_private; + if (pf_priv->master == 1) return mlx5_os_vf_mac_addr_modify - (priv, - mlx5_ifindex(&rte_eth_devices[port_id]), - mac_addr, priv->representor_id); - } + (priv, pf_priv->if_index, mac_addr, + MLX5_REPRESENTOR_REPR + (priv->representor_id)); } rte_errno = -ENOTSUP; return rte_errno;