Merge ~alfonsosanchezbeato/network-manager:backport-wowlan-cosmic into network-manager:cosmic
- Git
- lp:~alfonsosanchezbeato/network-manager
- backport-wowlan-cosmic
- Merge into cosmic
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) |
||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Sebastien Bacher | Needs Information | ||
Tony Espy | Approve | ||
Review via email: mp+349468@code.launchpad.net |
Commit message
debian/
Import some missing WoWLAN patches from NM upstream 1.14 (LP: #1781597)
Description of the change
Alfonso Sanchez-Beato (alfonsosanchezbeato) wrote : | # |
@Tony, better if we comment on the bionic MP only, as cosmic has 1.12 already.
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?
Alfonso Sanchez-Beato (alfonsosanchezbeato) wrote : | # |
@Tony, I will rebase to 1.12. Marking as WIP for the moment.
Alfonso Sanchez-Beato (alfonsosanchezbeato) wrote : | # |
@Tony, branch updated to include patches that were not part of 1.12.
Tony Espy (awe) wrote : | # |
Thanks for the changes, looks good to me!
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
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
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!
Alfonso Sanchez-Beato (alfonsosanchezbeato) wrote : | # |
@Sebastien, I have refreshed now the MP.
Preview Diff
1 | diff --git a/debian/changelog b/debian/changelog |
2 | index 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: |
15 | diff --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 |
16 | new file mode 100644 |
17 | index 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 */ |
376 | diff --git a/debian/patches/series b/debian/patches/series |
377 | index 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 |
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?