X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fmlx5%2Fmlx5_mac.c;h=7bdaa2a392abe37b34eae8975b1f48d7c8237af2;hb=2e715e53deb52cf2c0fee5744702a0340fc8625e;hp=0ffef5c5db583606415078b077c0aacdcf73161a;hpb=35b2d13fd6fdcbd191f2a30d74648faeb1186c65;p=dpdk.git diff --git a/drivers/net/mlx5/mlx5_mac.c b/drivers/net/mlx5/mlx5_mac.c index 0ffef5c5db..7bdaa2a392 100644 --- a/drivers/net/mlx5/mlx5_mac.c +++ b/drivers/net/mlx5/mlx5_mac.c @@ -197,6 +197,26 @@ mlx5_mac_addr_add(struct rte_eth_dev *dev, struct rte_ether_addr *mac, int 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; + + /* Configuring the VF instead of its representor. */ + if (priv->representor) { + DRV_LOG(DEBUG, "VF represented by port %u setting primary MAC address", + dev->data->port_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; + return mlx5_nl_vf_mac_addr_modify + (&rte_eth_devices[port_id], + mac_addr, priv->representor_id); + } + } + rte_errno = -ENOTSUP; + return rte_errno; + } + DRV_LOG(DEBUG, "port %u setting primary MAC address", dev->data->port_id); return mlx5_mac_addr_add(dev, mac_addr, 0, 0);