net/mlx5: generate bonding device name
authorViacheslav Ovsiienko <viacheslavo@mellanox.com>
Wed, 25 Sep 2019 07:53:28 +0000 (07:53 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Mon, 7 Oct 2019 13:00:58 +0000 (15:00 +0200)
If device is VF LAG bonding one the port name includes
the bonding Infiniband device name and looks like:

  82:00.0_mlx5_bond_0 - for master device port PF0
  82:00.1_mlx5_bond_0_representor_5 - for representor
                                           VF5 over PF1

where bonding Infiniband device mlx5_bond_0 controls
the 82:00.0 as PF0 and 82:00.1 as PF1 PCI functions.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
drivers/net/mlx5/mlx5.c

index 71e9548..1fe7150 100644 (file)
@@ -1584,11 +1584,23 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
                }
        }
        /* Build device name. */
-       if (!switch_info->representor)
-               strlcpy(name, dpdk_dev->name, sizeof(name));
-       else
-               snprintf(name, sizeof(name), "%s_representor_%u",
-                        dpdk_dev->name, switch_info->port_name);
+       if (spawn->pf_bond <  0) {
+               /* Single device. */
+               if (!switch_info->representor)
+                       strlcpy(name, dpdk_dev->name, sizeof(name));
+               else
+                       snprintf(name, sizeof(name), "%s_representor_%u",
+                                dpdk_dev->name, switch_info->port_name);
+       } else {
+               /* Bonding device. */
+               if (!switch_info->representor)
+                       snprintf(name, sizeof(name), "%s_%s",
+                                dpdk_dev->name, spawn->ibv_dev->name);
+               else
+                       snprintf(name, sizeof(name), "%s_%s_representor_%u",
+                                dpdk_dev->name, spawn->ibv_dev->name,
+                                switch_info->port_name);
+       }
        /* check if the device is already spawned */
        if (rte_eth_dev_get_port_by_name(name, &port_id) == 0) {
                rte_errno = EEXIST;