When trying to set MAC address of an ethethet device and if it was
a representor, PMD sets the MAC over the corresponding VF instead.

For the case of HPF (Host PF representor on BluueField), PMD shouldn't
attempt to set it, since it doesn't have any corresponding VF and fails.

This will fix the issue by setting the MAC on the dev directly.

Fixes: 0d1d73170820 ("net/mlx5: set VF MAC address from host")
Cc: sta...@dpdk.org

Signed-off-by: Raslan Darawsheh <rasl...@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viachesl...@mellanox.com>
---
 drivers/net/mlx5/mlx5_mac.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_mac.c b/drivers/net/mlx5/mlx5_mac.c
index 2d808d629..c75b1a169 100644
--- a/drivers/net/mlx5/mlx5_mac.c
+++ b/drivers/net/mlx5/mlx5_mac.c
@@ -157,8 +157,11 @@ 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) {
+       /*
+        * Configuring the VF instead of its representor,
+        * need to skip the special case of HPF on Bluefield.
+        */
+       if (priv->representor && priv->representor >= 0) {
                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) {
-- 
2.27.0

Reply via email to