diff --git a/modules/wowlan.nix b/modules/wowlan.nix index 1394d3c9..ef658bdd 100644 --- a/modules/wowlan.nix +++ b/modules/wowlan.nix @@ -27,6 +27,8 @@ # - CONFIG_SUSPEND_TYPE = 0 (i think this is correct) # - CONFIG_LPS_MODE = 1 (setting to 0 would disable LPS) # - maybe ARP gets disabled as part of the power saving features (iw phy ... power-save; CONFIG_POWER_SAVING=y)? +# - driver code hints that some things like wake on arp are conditional on the state of AP association at the `wowlan enable` call. +# so maybe it's proper to call `iw wowlan enable` immediately before *every* suspend instead of just once at boot # - packet matching happens below the OS, so it's not generic over virtual network devices like tunnels. # Wake On Lan with a VPN effectively requires that you wake on *every* packet routed via that VPN # since the meaning within any packet isn't obvious to the chipset. @@ -44,6 +46,7 @@ # wpa_supplicant: wlan0: CTRL-EVENT-CONNECTED - Connection to xx:xx:xx:xx:xx:xx completed [id=0 id_str=] # ``` # - observed after a suspension of 67 minutes. +# - but also observed after a suspension of just 5 minutes. # - WiFi chip *should* have a way to wake on connection state change, i just need to enable it? # - `iw phy phy0 wowlan enable disconnect` => Invalid argument (-22) # - `iw phy0 wowlan enable net-detect ...` (from man example) => Operation not supported (-95) diff --git a/pkgs/additional/linux-megous/default.nix b/pkgs/additional/linux-megous/default.nix index cdab2c51..58d2d072 100644 --- a/pkgs/additional/linux-megous/default.nix +++ b/pkgs/additional/linux-megous/default.nix @@ -154,6 +154,16 @@ let # hash = "sha256-DnLDseL1Ar5gE31CQUTrGNxxNu88jGCzj8ko99Z8vUA="; # }; # } + { + # experimental: set CONFIG_ARP_KEEP_ALIVE and CONFIG_GTK_OL if CONFIG_WOWLAN=y + # this patch just uncomments some commented-out #defines. + # they were commented out from the first time megi imported this driver, never touched. + name = "enable-wowlan-offloads"; + patch = fetchpatch { + url = "https://git.uninsane.org/colin/linux/commit/c4d2d12e31ae70bb43c6190eccc49e42ad645090.patch"; + hash = "sha256-B1rxeVu6y5hP/iMLSbl3ExwrEIXL7WShWsMFh6ko6yk="; + }; + } ] ++ lib.optionals (!withModemPower) [ { # Drop modem-power from DT to allow eg25-manager to have full control.