|
|
|
@ -5,20 +5,6 @@ with lib; |
|
|
|
|
let |
|
|
|
|
cfg = config.networking.rxe; |
|
|
|
|
|
|
|
|
|
runRxeCmd = cmd: ifcs: |
|
|
|
|
concatStrings ( map (x: "${pkgs.rdma-core}/bin/rxe_cfg -n ${cmd} ${x};") ifcs); |
|
|
|
|
|
|
|
|
|
startScript = pkgs.writeShellScriptBin "rxe-start" '' |
|
|
|
|
${pkgs.rdma-core}/bin/rxe_cfg -n start |
|
|
|
|
${runRxeCmd "add" cfg.interfaces} |
|
|
|
|
${pkgs.rdma-core}/bin/rxe_cfg |
|
|
|
|
''; |
|
|
|
|
|
|
|
|
|
stopScript = pkgs.writeShellScriptBin "rxe-stop" '' |
|
|
|
|
${runRxeCmd "remove" cfg.interfaces } |
|
|
|
|
${pkgs.rdma-core}/bin/rxe_cfg -n stop |
|
|
|
|
''; |
|
|
|
|
|
|
|
|
|
in { |
|
|
|
|
###### interface |
|
|
|
|
|
|
|
|
@ -31,9 +17,8 @@ in { |
|
|
|
|
example = [ "eth0" ]; |
|
|
|
|
description = '' |
|
|
|
|
Enable RDMA on the listed interfaces. The corresponding virtual |
|
|
|
|
RDMA interfaces will be named rxe0 ... rxeN where the ordering |
|
|
|
|
will be as they are named in the list. UDP port 4791 must be |
|
|
|
|
open on the respective ethernet interfaces. |
|
|
|
|
RDMA interfaces will be named rxe_<interface>. |
|
|
|
|
UDP port 4791 must be open on the respective ethernet interfaces. |
|
|
|
|
''; |
|
|
|
|
}; |
|
|
|
|
}; |
|
|
|
@ -44,7 +29,6 @@ in { |
|
|
|
|
config = mkIf cfg.enable { |
|
|
|
|
|
|
|
|
|
systemd.services.rxe = { |
|
|
|
|
path = with pkgs; [ kmod rdma-core ]; |
|
|
|
|
description = "RoCE interfaces"; |
|
|
|
|
|
|
|
|
|
wantedBy = [ "multi-user.target" ]; |
|
|
|
@ -54,8 +38,13 @@ in { |
|
|
|
|
serviceConfig = { |
|
|
|
|
Type = "oneshot"; |
|
|
|
|
RemainAfterExit = true; |
|
|
|
|
ExecStart = "${startScript}/bin/rxe-start"; |
|
|
|
|
ExecStop = "${stopScript}/bin/rxe-stop"; |
|
|
|
|
ExecStart = map ( x: |
|
|
|
|
"${pkgs.iproute}/bin/rdma link add rxe_${x} type rxe netdev ${x}" |
|
|
|
|
) cfg.interfaces; |
|
|
|
|
|
|
|
|
|
ExecStop = map ( x: |
|
|
|
|
"${pkgs.iproute}/bin/rdma link delete rxe_${x}" |
|
|
|
|
) cfg.interfaces; |
|
|
|
|
}; |
|
|
|
|
}; |
|
|
|
|
}; |
|
|
|
|