Merge ~alfonsosanchezbeato/network-manager:backport-wowlan-cosmic into network-manager:cosmic

Proposed by Alfonso Sanchez-Beato
Status: Merged
Approved by: Tony Espy
Approved revision: 8105af2d68d080b3d0b960490a9092888f2e9c9b
Merged at revision: 18fdc4f4648d4ec7d1a6d5d4db110fe3b1aadb75
Proposed branch: ~alfonsosanchezbeato/network-manager:backport-wowlan-cosmic
Merge into: network-manager:cosmic
Diff against target: 384 lines (+362/-0)
3 files modified
debian/changelog (+6/-0)
debian/patches/Import-some-missing-WoWLAN-patches-from-1.14.patch (+355/-0)
debian/patches/series (+1/-0)
Reviewer Review Type Date Requested Status
Sebastien Bacher Needs Information
Tony Espy Approve
Review via email: mp+349468@code.launchpad.net

Commit message

debian/patches/Support-for-WoWLAN.patch: backport WoWLAN support

Import some missing WoWLAN patches from NM upstream 1.14 (LP: #1781597)

To post a comment you must log in.
Revision history for this message
Tony Espy (awe) wrote :

I've compared this to upstream, and the only thing that seems odd is that the last four commits you list are not part of any 1.12.x branch, but only exist in master:

ac1302793 platform: add methods to retrieve current WoWLAN state
c6e40215e devices: restore past WoWLAN when disconnecting wifi
a3289400d wifi: ensure wake-on-wlan restore only acts once
2c3a14fed platform/wifi: drop *_get_wowlan()

Looking closer, the last two are a bug fix and cleanup of unused code submitted by upstream developers, whereas the first two are commits from you. Why didn't these land in 1.12?

Given these differences, your MP description and debian/changelog aren't accurate, as in addition to backporting from 1.12, you've also pulled from master too. I'm not as concerned about the MP description (although it would've been helpful in advance), but you should mention this in the changelog, and maybe in the patch too.

Can you also please update the dates in your debian/changelog and .patch file to be current?

Also have you pushed versions to a PPA anywhere that can be tested, or do you want to just wait and test the version that gets pushed to bionic-proposed?

review: Needs Fixing
Revision history for this message
Alfonso Sanchez-Beato (alfonsosanchezbeato) wrote :

@Tony, better if we comment on the bionic MP only, as cosmic has 1.12 already.

Revision history for this message
Tony Espy (awe) wrote :

@Alfonso

As pointed out in the other MP, not all of the patches landed in 1.12, are you going to re-work this MP, or close it out, and create a new MP for the missing patches?

Revision history for this message
Alfonso Sanchez-Beato (alfonsosanchezbeato) wrote :

@Tony, I will rebase to 1.12. Marking as WIP for the moment.

Revision history for this message
Alfonso Sanchez-Beato (alfonsosanchezbeato) wrote :

@Tony, branch updated to include patches that were not part of 1.12.

Revision history for this message
Tony Espy (awe) wrote :

Thanks for the changes, looks good to me!

review: Approve
Revision history for this message
Sebastien Bacher (seb128) wrote :

Thank you for your work, some small questions

* You didn't reply to Tony about why those didn't get merged in the 1.12 branch upstream?

* 2c3a14fed doesn't seem to have an functional interest/to be only code cleaning, why do we include it in the SRU? We should limit the code changes to what is strictly needed

* why did you delete that commented patch from the series file, that's unrelevant diff for a SRU and not documented in the changelog

review: Needs Information
Revision history for this message
Alfonso Sanchez-Beato (alfonsosanchezbeato) wrote :

Hi Sebastien:

* They were merged, but did not arrive on time for 1.12 and are part of 1.14. It was just a timing issue.

* I can remove that one if you want

* Right, I can put that back too

Revision history for this message
Sebastien Bacher (seb128) wrote :

Ok, not having those commit in 1.12 is fine, but yes it would be better if you could remove the unnecessary changes, thanks!

Revision history for this message
Alfonso Sanchez-Beato (alfonsosanchezbeato) wrote :

@Sebastien, I have refreshed now the MP.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/debian/changelog b/debian/changelog
2index bc81344..d574bef 100644
3--- a/debian/changelog
4+++ b/debian/changelog
5@@ -1,3 +1,9 @@
6+network-manager (1.12.4-1ubuntu2) cosmic; urgency=medium
7+
8+ * Import some missing WoWLAN patches from 1.14 (LP: #1781597)
9+
10+ -- Alfonso Sanchez-Beato (email Canonical) <alfonso.sanchez-beato@canonical.com> Wed, 05 Dec 2018 17:31:16 +0100
11+
12 network-manager (1.12.4-1ubuntu1) cosmic; urgency=medium
13
14 * Merge with Debian (LP: #1795704). Remaining changes:
15diff --git a/debian/patches/Import-some-missing-WoWLAN-patches-from-1.14.patch b/debian/patches/Import-some-missing-WoWLAN-patches-from-1.14.patch
16new file mode 100644
17index 0000000..bd453be
18--- /dev/null
19+++ b/debian/patches/Import-some-missing-WoWLAN-patches-from-1.14.patch
20@@ -0,0 +1,355 @@
21+From: =?utf-8?q?Alfonso_S=C3=A1nchez-Beato?=
22+ <alfonso.sanchez-beato@canonical.com>
23+Date: Wed, 5 Dec 2018 17:28:15 +0100
24+Subject: Import some missing WoWLAN patches from 1.14:
25+
26+ac1302793 platform: add methods to retrieve current WoWLAN state
27+c6e40215e devices: restore past WoWLAN when disconnecting wifi
28+a3289400d wifi: ensure wake-on-wlan restore only acts once
29+---
30+ src/devices/wifi/nm-device-wifi.c | 48 +++++++++++++++++++++++---
31+ src/platform/nm-linux-platform.c | 8 +++++
32+ src/platform/nm-platform.c | 10 ++++++
33+ src/platform/nm-platform.h | 2 ++
34+ src/platform/wifi/wifi-utils-nl80211.c | 62 ++++++++++++++++++++++++++++++++--
35+ src/platform/wifi/wifi-utils-private.h | 3 ++
36+ src/platform/wifi/wifi-utils.c | 10 ++++++
37+ src/platform/wifi/wifi-utils.h | 2 ++
38+ 8 files changed, 137 insertions(+), 8 deletions(-)
39+
40+diff --git a/src/devices/wifi/nm-device-wifi.c b/src/devices/wifi/nm-device-wifi.c
41+index 0dd6fa7..3008ada 100644
42+--- a/src/devices/wifi/nm-device-wifi.c
43++++ b/src/devices/wifi/nm-device-wifi.c
44+@@ -121,6 +121,8 @@ typedef struct {
45+ gint32 hw_addr_scan_expire;
46+
47+ guint wps_timeout_id;
48++
49++ NMSettingWirelessWakeOnWLan wowlan_restore;
50+ } NMDeviceWifiPrivate;
51+
52+ struct _NMDeviceWifi
53+@@ -508,6 +510,22 @@ remove_all_aps (NMDeviceWifi *self)
54+ nm_device_recheck_available_connections (NM_DEVICE (self));
55+ }
56+
57++static gboolean
58++wake_on_wlan_restore (NMDeviceWifi *self)
59++{
60++ NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self);
61++ NMSettingWirelessWakeOnWLan w;
62++
63++ w = priv->wowlan_restore;
64++ if (w == NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE)
65++ return TRUE;
66++
67++ priv->wowlan_restore = NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE;
68++ return nm_platform_wifi_set_wake_on_wlan (NM_PLATFORM_GET,
69++ nm_device_get_ifindex (NM_DEVICE (self)),
70++ w);
71++}
72++
73+ static void
74+ deactivate (NMDevice *device)
75+ {
76+@@ -524,6 +542,9 @@ deactivate (NMDevice *device)
77+
78+ set_current_ap (self, NULL, TRUE);
79+
80++ if (!wake_on_wlan_restore (self))
81++ _LOGW (LOGD_DEVICE | LOGD_WIFI, "Cannot unconfigure WoWLAN.");
82++
83+ /* Clear any critical protocol notification in the Wi-Fi stack */
84+ nm_platform_wifi_indicate_addressing_running (nm_device_get_platform (device), ifindex, FALSE);
85+
86+@@ -2426,6 +2447,7 @@ error:
87+ static gboolean
88+ wake_on_wlan_enable (NMDeviceWifi *self)
89+ {
90++ NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self);
91+ NMSettingWirelessWakeOnWLan wowl;
92+ NMSettingWireless *s_wireless;
93+ gs_free char *value = NULL;
94+@@ -2461,8 +2483,19 @@ wake_on_wlan_enable (NMDeviceWifi *self)
95+ goto found;
96+ }
97+ wowl = NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE;
98++
99+ found:
100+- return nm_platform_wifi_set_wake_on_wlan (NM_PLATFORM_GET, nm_device_get_ifindex (NM_DEVICE (self)), wowl);
101++ if (wowl == NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE) {
102++ priv->wowlan_restore = wowl;
103++ return TRUE;
104++ }
105++
106++ priv->wowlan_restore = nm_platform_wifi_get_wake_on_wlan (NM_PLATFORM_GET,
107++ nm_device_get_ifindex (NM_DEVICE (self)));
108++
109++ return nm_platform_wifi_set_wake_on_wlan (NM_PLATFORM_GET,
110++ nm_device_get_ifindex (NM_DEVICE (self)),
111++ wowl);
112+ }
113+
114+ static NMActStageReturn
115+@@ -2659,8 +2692,6 @@ act_stage2_config (NMDevice *device, NMDeviceStateReason *out_failure_reason)
116+ s_wireless = nm_connection_get_setting_wireless (connection);
117+ g_assert (s_wireless);
118+
119+- wake_on_wlan_enable (self);
120+-
121+ /* If we need secrets, get them */
122+ setting_name = nm_connection_need_secrets (connection, NULL);
123+ if (setting_name) {
124+@@ -2677,6 +2708,9 @@ act_stage2_config (NMDevice *device, NMDeviceStateReason *out_failure_reason)
125+ goto out;
126+ }
127+
128++ if (!wake_on_wlan_enable (self))
129++ _LOGW (LOGD_DEVICE | LOGD_WIFI, "Cannot configure WoWLAN.");
130++
131+ /* have secrets, or no secrets required */
132+ if (nm_connection_get_setting_wireless_security (connection)) {
133+ _LOGI (LOGD_DEVICE | LOGD_WIFI,
134+@@ -2727,8 +2761,10 @@ act_stage2_config (NMDevice *device, NMDeviceStateReason *out_failure_reason)
135+ ret = NM_ACT_STAGE_RETURN_POSTPONE;
136+
137+ out:
138+- if (ret == NM_ACT_STAGE_RETURN_FAILURE)
139++ if (ret == NM_ACT_STAGE_RETURN_FAILURE) {
140+ cleanup_association_attempt (self, TRUE);
141++ wake_on_wlan_restore (self);
142++ }
143+
144+ if (config) {
145+ /* Supplicant interface object refs the config; we no longer care about
146+@@ -3134,7 +3170,8 @@ reapply_connection (NMDevice *device, NMConnection *con_old, NMConnection *con_n
147+
148+ _LOGD (LOGD_DEVICE, "reapplying wireless settings");
149+
150+- wake_on_wlan_enable (self);
151++ if (!wake_on_wlan_enable (self))
152++ _LOGW (LOGD_DEVICE | LOGD_WIFI, "Cannot configure WoWLAN.");
153+ }
154+
155+ /*****************************************************************************/
156+@@ -3207,6 +3244,7 @@ nm_device_wifi_init (NMDeviceWifi *self)
157+ c_list_init (&priv->aps_lst_head);
158+
159+ priv->mode = NM_802_11_MODE_INFRA;
160++ priv->wowlan_restore = NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE;
161+ }
162+
163+ static void
164+diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c
165+index 9bd662a..33a05ab 100644
166+--- a/src/platform/nm-linux-platform.c
167++++ b/src/platform/nm-linux-platform.c
168+@@ -6092,6 +6092,13 @@ wifi_indicate_addressing_running (NMPlatform *platform, int ifindex, gboolean ru
169+ wifi_utils_indicate_addressing_running (wifi_data, running);
170+ }
171+
172++static NMSettingWirelessWakeOnWLan
173++wifi_get_wake_on_wlan (NMPlatform *platform, int ifindex)
174++{
175++ WIFI_GET_WIFI_DATA_NETNS (wifi_data, platform, ifindex, FALSE);
176++ return wifi_utils_get_wake_on_wlan (wifi_data);
177++}
178++
179+ static gboolean
180+ wifi_set_wake_on_wlan (NMPlatform *platform, int ifindex,
181+ NMSettingWirelessWakeOnWLan wowl)
182+@@ -7238,6 +7245,7 @@ nm_linux_platform_class_init (NMLinuxPlatformClass *klass)
183+ platform_class->wifi_set_powersave = wifi_set_powersave;
184+ platform_class->wifi_find_frequency = wifi_find_frequency;
185+ platform_class->wifi_indicate_addressing_running = wifi_indicate_addressing_running;
186++ platform_class->wifi_get_wake_on_wlan = wifi_get_wake_on_wlan;
187+ platform_class->wifi_set_wake_on_wlan = wifi_set_wake_on_wlan;
188+
189+ platform_class->mesh_get_channel = mesh_get_channel;
190+diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c
191+index f75019e..96bb292 100644
192+--- a/src/platform/nm-platform.c
193++++ b/src/platform/nm-platform.c
194+@@ -2888,6 +2888,16 @@ nm_platform_wifi_indicate_addressing_running (NMPlatform *self, int ifindex, gbo
195+ klass->wifi_indicate_addressing_running (self, ifindex, running);
196+ }
197+
198++NMSettingWirelessWakeOnWLan
199++nm_platform_wifi_get_wake_on_wlan (NMPlatform *self, int ifindex)
200++{
201++ _CHECK_SELF (self, klass, FALSE);
202++
203++ g_return_val_if_fail (ifindex > 0, FALSE);
204++
205++ return klass->wifi_get_wake_on_wlan (self, ifindex);
206++}
207++
208+ gboolean
209+ nm_platform_wifi_set_wake_on_wlan (NMPlatform *self, int ifindex, NMSettingWirelessWakeOnWLan wowl)
210+ {
211+diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h
212+index 866df73..84d10d2 100644
213+--- a/src/platform/nm-platform.h
214++++ b/src/platform/nm-platform.h
215+@@ -868,6 +868,7 @@ typedef struct {
216+ void (*wifi_set_powersave) (NMPlatform *, int ifindex, guint32 powersave);
217+ guint32 (*wifi_find_frequency) (NMPlatform *, int ifindex, const guint32 *freqs);
218+ void (*wifi_indicate_addressing_running) (NMPlatform *, int ifindex, gboolean running);
219++ NMSettingWirelessWakeOnWLan (*wifi_get_wake_on_wlan) (NMPlatform *, int ifindex);
220+ gboolean (*wifi_set_wake_on_wlan) (NMPlatform *, int ifindex, NMSettingWirelessWakeOnWLan wowl);
221+
222+ guint32 (*mesh_get_channel) (NMPlatform *, int ifindex);
223+@@ -1247,6 +1248,7 @@ void nm_platform_wifi_set_mode (NMPlatform *self, int ifindex, NM
224+ void nm_platform_wifi_set_powersave (NMPlatform *self, int ifindex, guint32 powersave);
225+ guint32 nm_platform_wifi_find_frequency (NMPlatform *self, int ifindex, const guint32 *freqs);
226+ void nm_platform_wifi_indicate_addressing_running (NMPlatform *self, int ifindex, gboolean running);
227++NMSettingWirelessWakeOnWLan nm_platform_wifi_get_wake_on_wlan (NMPlatform *self, int ifindex);
228+ gboolean nm_platform_wifi_set_wake_on_wlan (NMPlatform *self, int ifindex, NMSettingWirelessWakeOnWLan wowl);
229+
230+ guint32 nm_platform_mesh_get_channel (NMPlatform *self, int ifindex);
231+diff --git a/src/platform/wifi/wifi-utils-nl80211.c b/src/platform/wifi/wifi-utils-nl80211.c
232+index 6c2ff3f..518e39c 100644
233+--- a/src/platform/wifi/wifi-utils-nl80211.c
234++++ b/src/platform/wifi/wifi-utils-nl80211.c
235+@@ -271,6 +271,60 @@ nla_put_failure:
236+ return FALSE;
237+ }
238+
239++static int
240++nl80211_get_wake_on_wlan_handler (struct nl_msg *msg, void *arg)
241++{
242++ NMSettingWirelessWakeOnWLan *wowl = arg;
243++ struct nlattr *attrs[NL80211_ATTR_MAX + 1];
244++ struct nlattr *trig[NUM_NL80211_WOWLAN_TRIG];
245++ struct genlmsghdr *gnlh = nlmsg_data (nlmsg_hdr (msg));
246++
247++ nla_parse (attrs, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0),
248++ genlmsg_attrlen(gnlh, 0), NULL);
249++
250++ if (!attrs[NL80211_ATTR_WOWLAN_TRIGGERS])
251++ return NL_SKIP;
252++
253++ nla_parse (trig, MAX_NL80211_WOWLAN_TRIG,
254++ nla_data (attrs[NL80211_ATTR_WOWLAN_TRIGGERS]),
255++ nla_len (attrs[NL80211_ATTR_WOWLAN_TRIGGERS]),
256++ NULL);
257++
258++ *wowl = NM_SETTING_WIRELESS_WAKE_ON_WLAN_NONE;
259++ if (trig[NL80211_WOWLAN_TRIG_ANY])
260++ *wowl |= NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY;
261++ if (trig[NL80211_WOWLAN_TRIG_DISCONNECT])
262++ *wowl |= NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT;
263++ if (trig[NL80211_WOWLAN_TRIG_MAGIC_PKT])
264++ *wowl |= NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC;
265++ if (trig[NL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE])
266++ *wowl |= NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE;
267++ if (trig[NL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST])
268++ *wowl |= NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST;
269++ if (trig[NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE])
270++ *wowl |= NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE;
271++ if (trig[NL80211_WOWLAN_TRIG_RFKILL_RELEASE])
272++ *wowl |= NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE;
273++ if (trig[NL80211_WOWLAN_TRIG_TCP_CONNECTION])
274++ *wowl |= NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP;
275++
276++ return NL_SKIP;
277++}
278++
279++static NMSettingWirelessWakeOnWLan
280++wifi_nl80211_get_wake_on_wlan (WifiData *data)
281++{
282++ WifiDataNl80211 *nl80211 = (WifiDataNl80211 *) data;
283++ NMSettingWirelessWakeOnWLan wowl = NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE;
284++ nm_auto_nlmsg struct nl_msg *msg = NULL;
285++
286++ msg = nl80211_alloc_msg (nl80211, NL80211_CMD_GET_WOWLAN, 0);
287++
288++ nl80211_send_and_recv (nl80211, msg, nl80211_get_wake_on_wlan_handler, &wowl);
289++
290++ return wowl;
291++}
292++
293+ static gboolean
294+ wifi_nl80211_set_wake_on_wlan (WifiData *data, NMSettingWirelessWakeOnWLan wowl)
295+ {
296+@@ -282,11 +336,11 @@ wifi_nl80211_set_wake_on_wlan (WifiData *data, NMSettingWirelessWakeOnWLan wowl)
297+ if (wowl == NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE)
298+ return TRUE;
299+
300+- msg = nl80211_alloc_msg(nl80211, NL80211_CMD_SET_WOWLAN, 0);
301++ msg = nl80211_alloc_msg (nl80211, NL80211_CMD_SET_WOWLAN, 0);
302+ if (!msg)
303+ return FALSE;
304+
305+- triggers = nla_nest_start(msg, NL80211_ATTR_WOWLAN_TRIGGERS);
306++ triggers = nla_nest_start (msg, NL80211_ATTR_WOWLAN_TRIGGERS);
307+
308+ if (NM_FLAGS_HAS (wowl, NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY))
309+ NLA_PUT_FLAG (msg, NL80211_WOWLAN_TRIG_ANY);
310+@@ -306,7 +360,8 @@ wifi_nl80211_set_wake_on_wlan (WifiData *data, NMSettingWirelessWakeOnWLan wowl)
311+ nla_nest_end(msg, triggers);
312+
313+ err = nl80211_send_and_recv (nl80211, msg, NULL, NULL);
314+- return err ? FALSE : TRUE;
315++
316++ return err >= 0;
317+
318+ nla_put_failure:
319+ return FALSE;
320+@@ -887,6 +942,7 @@ wifi_nl80211_init (int ifindex)
321+ .get_mode = wifi_nl80211_get_mode,
322+ .set_mode = wifi_nl80211_set_mode,
323+ .set_powersave = wifi_nl80211_set_powersave,
324++ .get_wake_on_wlan = wifi_nl80211_get_wake_on_wlan,
325+ .set_wake_on_wlan = wifi_nl80211_set_wake_on_wlan,
326+ .get_freq = wifi_nl80211_get_freq,
327+ .find_freq = wifi_nl80211_find_freq,
328+diff --git a/src/platform/wifi/wifi-utils-private.h b/src/platform/wifi/wifi-utils-private.h
329+index 627108c..dc5dec0 100644
330+--- a/src/platform/wifi/wifi-utils-private.h
331++++ b/src/platform/wifi/wifi-utils-private.h
332+@@ -34,6 +34,9 @@ typedef struct {
333+ /* Set power saving mode on an interface */
334+ gboolean (*set_powersave) (WifiData *data, guint32 powersave);
335+
336++ /* Get WakeOnWLAN configuration on an interface */
337++ NMSettingWirelessWakeOnWLan (*get_wake_on_wlan) (WifiData *data);
338++
339+ /* Set WakeOnWLAN mode on an interface */
340+ gboolean (*set_wake_on_wlan) (WifiData *data, NMSettingWirelessWakeOnWLan wowl);
341+
342+diff --git a/src/platform/wifi/wifi-utils.c b/src/platform/wifi/wifi-utils.c
343+index b3dd92b..b704be1 100644
344+--- a/src/platform/wifi/wifi-utils.c
345++++ b/src/platform/wifi/wifi-utils.c
346+@@ -112,6 +112,16 @@ wifi_utils_set_powersave (WifiData *data, guint32 powersave)
347+ return data->klass->set_powersave ? data->klass->set_powersave (data, powersave) : TRUE;
348+ }
349+
350++NMSettingWirelessWakeOnWLan
351++wifi_utils_get_wake_on_wlan (WifiData *data)
352++{
353++ g_return_val_if_fail (data != NULL, FALSE);
354++
355++ return data->klass->get_wake_on_wlan
356++ ? data->klass->get_wake_on_wlan (data)
357++ : NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE;
358++}
359++
360+ gboolean
361+ wifi_utils_set_wake_on_wlan (WifiData *data, NMSettingWirelessWakeOnWLan wowl)
362+ {
363+diff --git a/src/platform/wifi/wifi-utils.h b/src/platform/wifi/wifi-utils.h
364+index c69561d..e454b71 100644
365+--- a/src/platform/wifi/wifi-utils.h
366++++ b/src/platform/wifi/wifi-utils.h
367+@@ -67,6 +67,8 @@ gboolean wifi_utils_get_wowlan (WifiData *data);
368+
369+ gboolean wifi_utils_set_powersave (WifiData *data, guint32 powersave);
370+
371++NMSettingWirelessWakeOnWLan wifi_utils_get_wake_on_wlan (WifiData *data);
372++
373+ gboolean wifi_utils_set_wake_on_wlan (WifiData *data, NMSettingWirelessWakeOnWLan wowl);
374+
375+ /* OLPC Mesh-only functions */
376diff --git a/debian/patches/series b/debian/patches/series
377index 7e32455..94bb454 100644
378--- a/debian/patches/series
379+++ b/debian/patches/series
380@@ -8,3 +8,4 @@ Disable-general-with-expect.patch
381 libnm-Check-self-still-NMManager-or-not.patch
382 #dns-manager-don-t-merge-split-DNS-search-domains.patch
383 Read-system-connections-from-run.patch
384+Import-some-missing-WoWLAN-patches-from-1.14.patch

Subscribers

People subscribed via source and target branches