mlx4: avoid init errors when kernel modules are not loaded
[dpdk.git] / lib / librte_pmd_mlx4 / mlx4.c
index b5774c4..3a45746 100644 (file)
@@ -4423,6 +4423,10 @@ mlx4_pci_devinit(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
        list = ibv_get_device_list(&i);
        if (list == NULL) {
                assert(errno);
+               if (errno == ENOSYS) {
+                       WARN("cannot list devices, is ib_uverbs loaded?");
+                       return 0;
+               }
                return -errno;
        }
        assert(i >= 0);
@@ -4451,9 +4455,15 @@ mlx4_pci_devinit(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
                break;
        }
        if (attr_ctx == NULL) {
-               if (err == 0)
-                       err = ENODEV;
                ibv_free_device_list(list);
+               switch (err) {
+               case 0:
+                       WARN("cannot access device, is mlx4_ib loaded?");
+                       return 0;
+               case EINVAL:
+                       WARN("cannot use device, are drivers up to date?");
+                       return 0;
+               }
                assert(err > 0);
                return -err;
        }