vdpa/mlx5: fix PCI address comparison

A regular memcmp function was used to compare between two objects of
type `struct rte_pci_addr`.

Due to the alignment rules of compiler structure builders, some memory
is not initiated in the structure even though all the fields were
initiated.

Therefore, the comparison may fail even though the PCI addresses are
identical and to cause false failure in probe.

Use the dedicated API to compare 2 PCI addresses.

Fixes: 75dd0ae917 ("vdpa/mlx5: disable RoCE")
Cc: stable@dpdk.org

Signed-off-by: Matan Azrad <matan@mellanox.com>
Tested-by: Noa Ezra <noae@mellanox.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
This commit is contained in:
Matan Azrad 2020-05-04 07:12:09 +00:00 committed by Ferruh Yigit
parent 3fc1d87c2a
commit 11e2ed9e43

View File

@ -305,7 +305,7 @@ mlx5_vdpa_get_ib_device_match(struct rte_pci_addr *addr)
DRV_LOG(DEBUG, "Checking device \"%s\"..", ibv_list[n]->name);
if (mlx5_dev_to_pci_addr(ibv_list[n]->ibdev_path, &pci_addr))
continue;
if (memcmp(addr, &pci_addr, sizeof(pci_addr)))
if (rte_pci_addr_cmp(addr, &pci_addr))
continue;
ibv_match = ibv_list[n];
break;