So NM 1.1.93-0ubuntu1 includes the patch default_powersave_on.patch, which is pretty simple, it just modifies the NMSettingWireless code to default powersave to 1:
=================================================================== --- a/libnm-util/nm-setting-wireless.c +++ b/libnm-util/nm-setting-wireless.c @@ -675,7 +675,7 @@ nm_setting_wireless_get_hidden (NMSettin guint32 nm_setting_wireless_get_powersave (NMSettingWireless *setting) { - g_return_val_if_fail (NM_IS_SETTING_WIRELESS (setting), 0); + g_return_val_if_fail (NM_IS_SETTING_WIRELESS (setting), 1);
return NM_SETTING_WIRELESS_GET_PRIVATE (setting)->powersave; } @@ -885,6 +885,9 @@ verify (NMSetting *setting, GSList *all_ static void nm_setting_wireless_init (NMSettingWireless *setting) { + NMSettingWirelessPrivate *priv = NM_SETTING_WIRELESS_GET_PRIVATE (setting); + + priv->powersave = 1; }
static void @@ -1283,7 +1286,7 @@ nm_setting_wireless_class_init (NMSettin g_object_class_install_property (object_class, PROP_POWERSAVE, g_param_spec_uint (NM_SETTING_WIRELESS_POWERSAVE, "", "", - 0, G_MAXUINT32, 0, + 0, G_MAXUINT32, 1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); }
...unfortunately, the NM1.2 treats powersave=1 as IGNORE:
/** * NMSettingWirelessPowersave: * @NM_SETTING_WIRELESS_POWERSAVE_DEFAULT: use the default value * @NM_SETTING_WIRELESS_POWERSAVE_IGNORE: don't touch existing setting * @NM_SETTING_WIRELESS_POWERSAVE_DISABLE: disable powersave * @NM_SETTING_WIRELESS_POWERSAVE_ENABLE: enable powersave * * These flags indicate whether wireless powersave must be enabled. **/ typedef enum { NM_SETTING_WIRELESS_POWERSAVE_DEFAULT = 0, NM_SETTING_WIRELESS_POWERSAVE_IGNORE = 1, NM_SETTING_WIRELESS_POWERSAVE_DISABLE = 2, NM_SETTING_WIRELESS_POWERSAVE_ENABLE = 3, _NM_SETTING_WIRELESS_POWERSAVE_NUM, /*< skip >*/ NM_SETTING_WIRELESS_POWERSAVE_LAST = _NM_SETTING_WIRELESS_POWERSAVE_NUM - 1, /*< skip >*/ } NMSettingWirelessPowersave;
...and the code in NMDeviceWiFi will only enable powersave if the value returned from NMSettingWireless is 3:
if (powersave == NM_SETTING_WIRELESS_POWERSAVE_IGNORE) return;
nm_platform_wifi_set_powersave (NM_PLATFORM_GET, nm_device_get_ifindex (device), powersave == NM_SETTING_WIRELESS_POWERSAVE_ENABLE);
So NM 1.1.93-0ubuntu1 includes the patch default_ powersave_ on.patch, which is pretty simple, it just modifies the NMSettingWireless code to default powersave to 1:
======= ======= ======= ======= ======= ======= ======= ======= ======= ==== util/nm- setting- wireless. c util/nm- setting- wireless. c wireless_ get_hidden (NMSettin wireless_ get_powersave (NMSettingWireless *setting) val_if_ fail (NM_IS_ SETTING_ WIRELESS (setting), 0); val_if_ fail (NM_IS_ SETTING_ WIRELESS (setting), 1);
--- a/libnm-
+++ b/libnm-
@@ -675,7 +675,7 @@ nm_setting_
guint32
nm_setting_
{
- g_return_
+ g_return_
return NM_SETTING_ WIRELESS_ GET_PRIVATE (setting) ->powersave; wireless_ init (NMSettingWireless *setting) ssPrivate *priv = NM_SETTING_ WIRELESS_ GET_PRIVATE (setting);
}
@@ -885,6 +885,9 @@ verify (NMSetting *setting, GSList *all_
static void
nm_setting_
{
+ NMSettingWirele
+
+ priv->powersave = 1;
}
static void wireless_ class_init (NMSettin class_install_ property spec_uint (NM_SETTING_ WIRELESS_ POWERSAVE, "", "",
G_PARAM_ READWRITE |
G_PARAM_ STATIC_ STRINGS) );
@@ -1283,7 +1286,7 @@ nm_setting_
g_object_
(object_class, PROP_POWERSAVE,
g_param_
- 0, G_MAXUINT32, 0,
+ 0, G_MAXUINT32, 1,
}
...unfortunately, the NM1.2 treats powersave=1 as IGNORE:
/** ssPowersave: WIRELESS_ POWERSAVE_ DEFAULT: use the default value WIRELESS_ POWERSAVE_ IGNORE: don't touch existing setting WIRELESS_ POWERSAVE_ DISABLE: disable powersave WIRELESS_ POWERSAVE_ ENABLE: enable powersave SETTING_ WIRELESS_ POWERSAVE_ DEFAULT = 0, SETTING_ WIRELESS_ POWERSAVE_ IGNORE = 1, SETTING_ WIRELESS_ POWERSAVE_ DISABLE = 2, SETTING_ WIRELESS_ POWERSAVE_ ENABLE = 3, SETTING_ WIRELESS_ POWERSAVE_ NUM, /*< skip >*/ SETTING_ WIRELESS_ POWERSAVE_ LAST = _NM_SETTING_ WIRELESS_ POWERSAVE_ NUM - 1, /*< skip >*/ ssPowersave;
* NMSettingWirele
* @NM_SETTING_
* @NM_SETTING_
* @NM_SETTING_
* @NM_SETTING_
*
* These flags indicate whether wireless powersave must be enabled.
**/
typedef enum {
NM_
NM_
NM_
NM_
_NM_
NM_
} NMSettingWirele
...and the code in NMDeviceWiFi will only enable powersave if the value returned from NMSettingWireless is 3:
if (powersave == NM_SETTING_ WIRELESS_ POWERSAVE_ IGNORE)
return;
nm_platform_ wifi_set_ powersave (NM_PLATFORM_GET,
nm_ device_ get_ifindex (device),
powersave == NM_SETTING_ WIRELESS_ POWERSAVE_ ENABLE) ;