| 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" |