nixos/rxe: use iproute instead of rdma-core

The rdma-core packages dropped rxe_cfg in favour
of iproute's rdma utility (see https://github.com/linux-rdma/rdma-core/pull/678/files)
gstqt5
Markus Kowalewski 2020-02-28 10:06:37 +01:00
parent 505bccfdc7
commit 2c7f8d56dc
No known key found for this signature in database
GPG Key ID: D865C8A91D7025EB
2 changed files with 10 additions and 21 deletions

View File

@ -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;
};
};
};

View File

@ -28,7 +28,7 @@ in {
# Test if rxe interface comes up
server.wait_for_unit("default.target")
server.succeed("systemctl status rxe.service")
server.succeed("ibv_devices | grep rxe0")
server.succeed("ibv_devices | grep rxe_eth1")
client.wait_for_unit("default.target")