about summary refs log tree commit diff
path: root/pkgs/os-specific
diff options
context:
space:
mode:
authorGuillaume Maudoux <layus.on@gmail.com>2015-11-17 09:48:31 +0100
committerRok Garbas <rok@garbas.si>2016-01-20 02:11:09 +0100
commitf8ff4691ed10a078edb527dea56a7fc788df81a6 (patch)
tree60f53992fcbcdbf7f1350b034326c055188157e4 /pkgs/os-specific
parent1c393cbb3c60b85070950c8abc30a5308015ce3d (diff)
linux-mptcp: init at 0.90 (kernel 3.18.20), fixes #11149
Diffstat (limited to 'pkgs/os-specific')
-rw-r--r--pkgs/os-specific/linux/kernel/linux-mptcp.nix49
1 files changed, 49 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/kernel/linux-mptcp.nix b/pkgs/os-specific/linux/kernel/linux-mptcp.nix
new file mode 100644
index 0000000000000..2b0e3017979f9
--- /dev/null
+++ b/pkgs/os-specific/linux/kernel/linux-mptcp.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchurl, perl, buildLinux, ... } @ args:
+
+import ./generic.nix (args // rec {
+  mptcpVersion = "0.90";
+  modDirVersion = "3.18.20";
+  version = "${modDirVersion}-mptcp_v${mptcpVersion}";
+
+  extraMeta = {
+    branch = "3.18";
+    maintainer = stdenv.lib.maintainers.layus;
+  };
+
+  src = fetchurl {
+    url = "https://github.com/multipath-tcp/mptcp/archive/v${mptcpVersion}.tar.gz";
+    sha256 = "1wzdvd1j1wqjkysj98g451y6mxr9a5hff5kn9inxwbzm9yg4icj5";
+  };
+
+  extraConfig = ''
+    IPV6 y
+    MPTCP y
+    IP_MULTIPLE_TABLES y
+
+    # Enable advanced path-managers...
+    MPTCP_PM_ADVANCED y
+    MPTCP_FULLMESH y
+    MPTCP_NDIFFPORTS y
+    # ... but use none by default.
+    # The default is safer if source policy routing is not setup.
+    DEFAULT_DUMMY y
+    DEFAULT_MPTCP_PM "default"
+
+    # MPTCP scheduler selection.
+    # Disabled as the only non-default is the useless round-robin.
+    MPTCP_SCHED_ADVANCED n
+    DEFAULT_MPTCP_SCHED "default"
+
+    # Smarter TCP congestion controllers
+    TCP_CONG_LIA m
+    TCP_CONG_OLIA m
+    TCP_CONG_WVEGAS m
+    TCP_CONG_BALIA m
+  '';
+
+  features.iwlwifi = true;
+  features.efiBootStub = true;
+  features.needsCifsUtils = true;
+  features.canDisableNetfilterConntrackHelpers = true;
+  features.netfilterRPFilter = true;
+} // (args.argsOverride or {}))