X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fmlx5%2Fmlx5_mac.c;h=19981d26d846db52961f1259c401ca206efd5ffd;hb=da573c0e4205d818cd602eaa27c720896f3b6f1c;hp=bd786fd63874db61460e10662cb2af8c8dedc86e;hpb=f2e8b4556f89f8bb940612bfad5602801b5715e4;p=dpdk.git diff --git a/drivers/net/mlx5/mlx5_mac.c b/drivers/net/mlx5/mlx5_mac.c index bd786fd638..19981d26d8 100644 --- a/drivers/net/mlx5/mlx5_mac.c +++ b/drivers/net/mlx5/mlx5_mac.c @@ -8,10 +8,9 @@ #include #include #include -#include #include -#include +#include #include #include "mlx5_defs.h" @@ -154,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)) { 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;