commit 350ddde2605eaabe64c8b973f0585f0e9e4b80a4
parent 13cb8d3692ceb0f9b727f70c558f57c487741dbb
Author: Daniel Barlow <dan@telent.net>
Date: Fri, 3 Jan 2025 23:52:08 +0000
add pkgs.openwrt_24_10
is needed by Belkin RT3200 and might also be handy for OpenWrt One?
this is very copy-pastey, will tidy it up after it
stops being a moving target
Diffstat:
4 files changed, 89 insertions(+), 2 deletions(-)
diff --git a/devices/belkin-rt3200/default.nix b/devices/belkin-rt3200/default.nix
@@ -122,6 +122,7 @@
cp ${pkgs.linux-firmware}/lib/firmware/mediatek/{mt7915,mt7615,mt7622}* $out
'';
};
+ openwrt = pkgs.openwrt_24_10;
in {
imports = [
../../modules/arch/aarch64.nix
@@ -131,8 +132,10 @@
config = {
kernel = {
extraPatchPhase = ''
- ${pkgs.openwrt.applyPatches.mediatek}
+ ${openwrt.applyPatches.mediatek}
'';
+ src = openwrt.kernelSrc;
+ version = openwrt.kernelVersion;
config = {
PCI = "y";
ARCH_MEDIATEK = "y";
@@ -241,7 +244,6 @@
hardware =
let
- openwrt = pkgs.openwrt;
mac80211 = pkgs.kmodloader.override {
targets = ["mt7615e" "mt7915e"];
inherit (config.system.outputs) kernel;
diff --git a/pkgs/default.nix b/pkgs/default.nix
@@ -100,6 +100,7 @@ in {
odhcp-script = callPackage ./odhcp-script { };
odhcp6c = callPackage ./odhcp6c { };
openwrt = callPackage ./openwrt { };
+ openwrt_24_10 = callPackage ./openwrt/2410.nix { };
output-template = callPackage ./output-template { };
ppp = callPackage ./ppp { };
pppoe = callPackage ./pppoe { };
diff --git a/pkgs/openwrt/2410.nix b/pkgs/openwrt/2410.nix
@@ -0,0 +1,68 @@
+{ fetchFromGitHub, pkgsBuildBuild, lib }:
+let
+ src = fetchFromGitHub {
+ name = "openwrt-source";
+ repo = "openwrt";
+ owner = "openwrt";
+ rev = "refs/tags/v24.10.0-rc4";
+ hash = "sha256-7edkUCTfGnZeMWr/aXoQrP4I47iXhMi/gUxO2SR+Ylc=";
+ };
+ kernelVersion = "6.6.67";
+ kernelSeries = lib.versions.majorMinor kernelVersion;
+ doPatch = family: ''
+ cp -av ${src}/target/linux/generic/files/* .
+ chmod -R u+w .
+ cp -av ${src}/target/linux/${family}/files/* .
+ chmod -R u+w .
+ test -d ${src}/target/linux/${family}/files-${kernelSeries}/ && cp -av ${src}/target/linux/${family}/files-${kernelSeries}/* .
+ chmod -R u+w .
+ patches() {
+ for i in $* ; do patch --batch --forward -p1 < $i ;done
+ }
+ patches ${src}/target/linux/generic/backport-${kernelSeries}/*.patch
+ patches ${src}/target/linux/generic/pending-${kernelSeries}/*.patch
+ patches ${src}/target/linux/generic/hack-${kernelSeries}/*.patch
+ patches ${src}/target/linux/${family}/patches-${kernelSeries}/*.patch
+ patches \
+ ${./make-mtdsplit-jffs2-endian-agnostic.patch} \
+ ${./fix-mtk-wed-bm-desc-ptr.patch}
+ '';
+in {
+ inherit src;
+
+ # The kernel sources typically used with this version of openwrt
+ # You can find this in `include/kernel-5.15` or similar in the
+ # openwrt sources
+ kernelSrc = pkgsBuildBuild.fetchurl {
+ name = "linux.tar.gz";
+ url = "https://cdn.kernel.org/pub/linux/kernel/v${lib.versions.major kernelVersion}.x/linux-${kernelVersion}.tar.gz";
+ hash = "sha256-Vj6O6oa83xzAF3FPl6asQK2Zrl7PaBCVjcUDq93caL4=";
+ };
+ inherit kernelVersion;
+
+ applyPatches.ath79 = doPatch "ath79";
+ applyPatches.ramips = doPatch "ramips";
+ applyPatches.mediatek = doPatch "mediatek"; # aarch64
+ applyPatches.mvebu = doPatch "mvebu"; # arm
+
+ applyPatches.rt2x00 = ''
+ PATH=${pkgsBuildBuild.patchutils}/bin:$PATH
+ for i in ${src}/package/kernel/mac80211/patches/rt2x00/6*.patch ; do
+ fixed=$(basename $i).fixed
+ sed '/depends on m/d' < $i | sed 's/CPTCFG_/CONFIG_/g' | recountdiff | filterdiff -x '*/local-symbols' > $fixed
+ case $fixed in
+ 606-*)
+ ;;
+ 611-*)
+ filterdiff -x '*/rt2x00.h' < $fixed | patch --forward -p1
+ ;;
+ 601-*|607-*)
+ filterdiff -x '*/rt2x00_platform.h' < $fixed | patch --forward -p1
+ ;;
+ *)
+ cat $fixed | patch --forward -p1
+ ;;
+ esac
+ done
+ '';
+}
diff --git a/pkgs/openwrt/fix-mtk-wed-bm-desc-ptr.patch b/pkgs/openwrt/fix-mtk-wed-bm-desc-ptr.patch
@@ -0,0 +1,16 @@
+From: Arnout Engelen <arnout@bzzt.net>
+Date: Wed, 18 Dec 2024 14:17:46 +0100
+
+Partial patch from https://gti.telent.net/raboof/liminix/commit/641409230051b82616c6feb35f2c0e730e46f614
+
+--- a/drivers/net/wireless/mediatek/mt76/mt7915/mmio.c 2024-12-18 11:08:00.598231122 +0100
++++ b/drivers/net/wireless/mediatek/mt76/mt7915/mmio.c 2024-12-18 11:08:29.845100034 +0100
+@@ -625,7 +625,7 @@
+
+ static u32 mt7915_mmio_wed_init_rx_buf(struct mtk_wed_device *wed, int size)
+ {
+- struct mtk_rxbm_desc *desc = wed->rx_buf_ring.desc;
++ struct mtk_wed_bm_desc *desc = wed->rx_buf_ring.desc;
+ struct mt76_txwi_cache *t = NULL;
+ struct mt7915_dev *dev;
+ struct mt76_queue *q;