ACTION=="remove", GOTO="rdma_hw_modules_end" SUBSYSTEM!="net", GOTO="rdma_hw_modules_net_end" # For Ethernet cards with RoCE support # Automatically load RDMA specific kernel modules when a multi-function device is installed # These drivers autoload an ethernet driver based on hardware detection and # need userspace to load the module that has their RDMA component to turn on # RDMA. ENV{ID_NET_DRIVER}=="be2net", RUN{builtin}+="kmod load ocrdma" ENV{ID_NET_DRIVER}=="bnxt_en", RUN{builtin}+="kmod load bnxt_re" ENV{ID_NET_DRIVER}=="cxgb4", RUN{builtin}+="kmod load iw_cxgb4" ENV{ID_NET_DRIVER}=="hns", RUN{builtin}+="kmod load hns_roce" ENV{ID_NET_DRIVER}=="i40e", RUN{builtin}+="kmod load i40iw" ENV{ID_NET_DRIVER}=="mlx4_en", RUN{builtin}+="kmod load mlx4_ib" ENV{ID_NET_DRIVER}=="mlx5_core", RUN{builtin}+="kmod load mlx5_ib" ENV{ID_NET_DRIVER}=="qede", RUN{builtin}+="kmod load qedr" # The user must explicitly load these modules via /etc/modules-load.d/ or otherwise # rxe # enic no longer has a userspace verbs driver, this rule should probably be # owned by libfabric ENV{ID_NET_DRIVER}=="enic", RUN{builtin}+="kmod load usnic_verbs" # These providers are single function and autoload RDMA automatically based on # PCI probing # hfi1verbs # ipathverbs # mthca # vmw_pvrdma LABEL="rdma_hw_modules_net_end" SUBSYSTEM!="pci", GOTO="rdma_hw_modules_pci_end" # For InfiniBand cards # Normally the request_module inside the driver will trigger this, but in case that fails due to # missing modules in the initrd, trigger it again. HW that doesn't create a netdevice will not # trigger the net based rules above. ENV{DRIVER}=="mlx4_core", RUN{builtin}+="kmod load mlx4_ib" ENV{DRIVER}=="mlx5_core", RUN{builtin}+="kmod load mlx5_ib" LABEL="rdma_hw_modules_pci_end" LABEL="rdma_hw_modules_end"