net/mlx5: set VF MAC address from host
[dpdk.git] / drivers / net / mlx5 / mlx5_mac.c
index 0ffef5c..7bdaa2a 100644 (file)
@@ -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);