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)
wip/yesman
Markus Kowalewski 4 years ago
parent 505bccfdc7
commit 2c7f8d56dc
No known key found for this signature in database
GPG Key ID: D865C8A91D7025EB
  1. 29
      nixos/modules/services/networking/rxe.nix
  2. 2
      nixos/tests/rxe.nix

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

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

Loading…
Cancel
Save