[NetworkManager/f20] core: diverse fixes

thaller thaller at fedoraproject.org
Tue Apr 8 18:24:34 UTC 2014


commit a24ad21471e3b8e454cc5bfc6cfed48f46863b44
Author: Thomas Haller <thaller at redhat.com>
Date:   Tue Apr 8 19:09:15 2014 +0200

    core: diverse fixes
    
    Resolves: #1054364
    Resolves: #1061911
    Resolves: #1063885
    Resolves: #1080474
    Resolves: #1084556

 0052-rh1054364-fix-nm-online.patch                 |  272 ++++++
 0053-rh1061911-crash-dispose-NMSecretAgent.patch   |   81 ++
 ...3885-extened-address-flags-for-old-kernel.patch |   55 ++
 0055-rh1080474-nmcli-show-mbit-s.patch             |  873 ++++++++++++++++++++
 ...h1084556-pending-action-queued-state-lock.patch |   67 ++
 0057-emit-property-changed-for-active-conn.patch   |   29 +
 NetworkManager.spec                                |   22 +-
 7 files changed, 1398 insertions(+), 1 deletions(-)
---
diff --git a/0052-rh1054364-fix-nm-online.patch b/0052-rh1054364-fix-nm-online.patch
new file mode 100644
index 0000000..6519ceb
--- /dev/null
+++ b/0052-rh1054364-fix-nm-online.patch
@@ -0,0 +1,272 @@
+From fafbc0388636379414caa3b8cb9de14b9a60c551 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= <jklimes at redhat.com>
+Date: Wed, 12 Mar 2014 13:34:13 +0100
+Subject: [PATCH 1/4] nm-online: fix nm-online to report online status
+ correctly (rh #1054364)
+
+This fixes a behaviour change made by 44ac1020daccfeeb1dc88566adda6e5d8bd87aea.
+That commit make nm-online to wait for NM finishing startup instead of waiting
+for a real connection. So for NetworkManager fully initialized, but
+disconnected nm-online would return 0.
+
+$ nmcli -f RUNNING,STATE,STARTUP,CONNECTIVITY gen status
+RUNNING  STATE         STARTUP  CONNECTIVITY
+running  disconnected  started  none
+
+Revert back to the original behaviour of waiting for a connection. And
+introduce a new option '--wait-for-startup' waiting for NetworkManager
+finishing its startup, which is useful in some cases, like
+NetworkManager-wait-online.service.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1054364
+(cherry picked from commit 20fb078dd6b10c10539f62449ac2a0b36f0e67ce)
+---
+ man/nm-online.1.in |  7 +++++--
+ test/nm-online.c   | 50 ++++++++++++++++++++++++++++++++++++++++++++------
+ 2 files changed, 49 insertions(+), 8 deletions(-)
+
+diff --git a/man/nm-online.1.in b/man/nm-online.1.in
+index 941f006..ddb2b17 100644
+--- a/man/nm-online.1.in
++++ b/man/nm-online.1.in
+@@ -19,9 +19,9 @@
+ .\" with this manual; if not, write to the Free Software Foundation, Inc.,
+ .\" 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ .\"
+-.\" Copyright (C) 2010 Red Hat, Inc.
++.\" Copyright (C) 2010 - 2014 Red Hat, Inc.
+ .\"
+-.TH NM-ONLINE "1" "11 July 2013"
++.TH NM-ONLINE "1" "25 March 2014"
+ 
+ .SH NAME
+ nm-online \- ask NetworkManager whether the network is connected
+@@ -47,6 +47,9 @@ Exit immediately if NetworkManager is not running or connecting.
+ .TP
+ .B \-q, \-\-quiet
+ Don't print anything.
++.TP
++.B \-s, \-\-wait-for-startup
++Wait for NetworkManager finishing its startup instead of establishing a connection.
+ 
+ .SH EXIT STATUS
+ 
+diff --git a/test/nm-online.c b/test/nm-online.c
+index 7df66c2..03737b2 100644
+--- a/test/nm-online.c
++++ b/test/nm-online.c
+@@ -15,6 +15,7 @@
+  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+  *
+  * Copyright (C) 2006 - 2008 Novell, Inc.
++ * Copyright (C) 2008 - 2014 Red Hat, Inc.
+  *
+  */
+ 
+@@ -42,6 +43,7 @@
+ #include "nm-client.h"
+ 
+ #define PROGRESS_STEPS 15
++#define WAIT_STARTUP_TAG "wait-startup"
+ 
+ typedef struct
+ {
+@@ -56,11 +58,22 @@ client_properties_changed (GObject *object,
+                            gpointer loop)
+ {
+ 	NMClient *client = NM_CLIENT (object);
++	NMState state;
++	gboolean wait_startup = GPOINTER_TO_UINT (g_object_get_data (object, WAIT_STARTUP_TAG));
+ 
+ 	if (!nm_client_get_manager_running (client))
+ 		return;
+-	if (!nm_client_get_startup (client))
+-		g_main_loop_quit (loop);
++
++	if (wait_startup) {
++		if (!nm_client_get_startup (client))
++			g_main_loop_quit (loop);
++	} else {
++		state = nm_client_get_state (client);
++		if (   state == NM_STATE_CONNECTED_LOCAL
++		    || state == NM_STATE_CONNECTED_SITE
++		    || state == NM_STATE_CONNECTED_GLOBAL)
++			g_main_loop_quit (loop);
++	}
+ }
+ 
+ static gboolean
+@@ -94,16 +107,19 @@ main (int argc, char *argv[])
+ 	gint t_secs = -1;
+ 	gboolean exit_no_nm = FALSE;
+ 	gboolean quiet = FALSE;
++	gboolean wait_startup = FALSE;
+ 	Timeout timeout;
+ 	GOptionContext *opt_ctx = NULL;
+ 	gboolean success;
+ 	NMClient *client;
++	NMState state = NM_STATE_UNKNOWN;
+ 	GMainLoop *loop;
+ 
+ 	GOptionEntry options[] = {
+ 		{"timeout", 't', 0, G_OPTION_ARG_INT, &t_secs, N_("Time to wait for a connection, in seconds (without the option, default value is 30)"), "<timeout>"},
+ 		{"exit", 'x', 0, G_OPTION_ARG_NONE, &exit_no_nm, N_("Exit immediately if NetworkManager is not running"), NULL},
+ 		{"quiet", 'q', 0, G_OPTION_ARG_NONE, &quiet, N_("Don't print anything"), NULL},
++		{"wait-for-startup", 's', 0, G_OPTION_ARG_NONE, &wait_startup, N_("Wait for NetworkManager startup instead of a connection"), NULL},
+ 		{NULL}
+ 	};
+ 
+@@ -147,13 +163,35 @@ main (int argc, char *argv[])
+ 
+ 	client = nm_client_new ();
+ 
++	g_object_set_data (G_OBJECT (client), WAIT_STARTUP_TAG, GUINT_TO_POINTER (wait_startup));
++	state = nm_client_get_state (client);
+ 	if (!nm_client_get_manager_running (client)) {
+-		if (exit_no_nm)
++		if (exit_no_nm) {
++			g_object_unref (client);
+ 			return 1;
+-	} else if (!nm_client_get_startup (client))
+-		return 0;
+-	if (!timeout.value)
++		}
++	} else if (wait_startup) {
++		if (!nm_client_get_startup (client)) {
++			g_object_unref (client);
++			return 0;
++		}
++	} else {
++		if (   state == NM_STATE_CONNECTED_LOCAL
++		    || state == NM_STATE_CONNECTED_SITE
++		    || state == NM_STATE_CONNECTED_GLOBAL) {
++			g_object_unref (client);
++			return 0;
++		}
++	}
++	if (exit_no_nm && (state != NM_STATE_CONNECTING)) {
++		g_object_unref (client);
+ 		return 1;
++	}
++
++	if (!timeout.value) {
++		g_object_unref (client);
++		return 1;
++	}
+ 
+ 	timeout.norm = (double) timeout.value / (double) PROGRESS_STEPS;
+ 	g_timeout_add_seconds (1, handle_timeout, &timeout);
+-- 
+1.9.0
+
+
+From f247a3c86e71d7ae419c3401fff310d2e836a2ab Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= <jklimes at redhat.com>
+Date: Wed, 26 Mar 2014 18:14:04 +0100
+Subject: [PATCH 2/4] systemd: update NetworkManager-wait-online.service to
+ wait for startup
+
+(cherry picked from commit 520d2814ba720cf8aee9d6f91fca4e3ea0d8555f)
+---
+ data/NetworkManager-wait-online-systemd-pre200.service.in | 2 +-
+ data/NetworkManager-wait-online.service.in                | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/data/NetworkManager-wait-online-systemd-pre200.service.in b/data/NetworkManager-wait-online-systemd-pre200.service.in
+index fd9be41..d145a79 100644
+--- a/data/NetworkManager-wait-online-systemd-pre200.service.in
++++ b/data/NetworkManager-wait-online-systemd-pre200.service.in
+@@ -7,7 +7,7 @@ Before=network.target
+ 
+ [Service]
+ Type=oneshot
+-ExecStart=@bindir@/nm-online -q --timeout=30
++ExecStart=@bindir@/nm-online -s -q --timeout=30
+ 
+ [Install]
+ WantedBy=network.target
+diff --git a/data/NetworkManager-wait-online.service.in b/data/NetworkManager-wait-online.service.in
+index b81c5b0..6ad6942 100644
+--- a/data/NetworkManager-wait-online.service.in
++++ b/data/NetworkManager-wait-online.service.in
+@@ -7,7 +7,7 @@ Before=network.target network-online.target
+ 
+ [Service]
+ Type=oneshot
+-ExecStart=@bindir@/nm-online -q --timeout=30
++ExecStart=@bindir@/nm-online -s -q --timeout=30
+ 
+ [Install]
+ WantedBy=multi-user.target
+-- 
+1.9.0
+
+
+From 749647f7ab034eb7eb43877fe957cc71a82d9773 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= <jklimes at redhat.com>
+Date: Tue, 25 Mar 2014 10:13:08 +0100
+Subject: [PATCH 3/4] trivial: correct nm-online's '--exit' option description
+
+(cherry picked from commit ea962ce4112ccf3b25efe5b9661c1a48090dc4e4)
+---
+ test/nm-online.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/nm-online.c b/test/nm-online.c
+index 03737b2..53b0465 100644
+--- a/test/nm-online.c
++++ b/test/nm-online.c
+@@ -117,7 +117,7 @@ main (int argc, char *argv[])
+ 
+ 	GOptionEntry options[] = {
+ 		{"timeout", 't', 0, G_OPTION_ARG_INT, &t_secs, N_("Time to wait for a connection, in seconds (without the option, default value is 30)"), "<timeout>"},
+-		{"exit", 'x', 0, G_OPTION_ARG_NONE, &exit_no_nm, N_("Exit immediately if NetworkManager is not running"), NULL},
++		{"exit", 'x', 0, G_OPTION_ARG_NONE, &exit_no_nm, N_("Exit immediately if NetworkManager is not running or connecting"), NULL},
+ 		{"quiet", 'q', 0, G_OPTION_ARG_NONE, &quiet, N_("Don't print anything"), NULL},
+ 		{"wait-for-startup", 's', 0, G_OPTION_ARG_NONE, &wait_startup, N_("Wait for NetworkManager startup instead of a connection"), NULL},
+ 		{NULL}
+-- 
+1.9.0
+
+
+From f3804ce1e2a0229a6ef32cb1ddb0d750822fb2d8 Mon Sep 17 00:00:00 2001
+From: Thomas Haller <thaller at redhat.com>
+Date: Wed, 12 Mar 2014 14:44:27 +0100
+Subject: [PATCH 4/4] nm-online: fix considering the --quiet option
+
+Signed-off-by: Thomas Haller <thaller at redhat.com>
+(cherry picked from commit 0a85bff70a65d5a205b56bc9f74fc2b0237ad05a)
+---
+ test/nm-online.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/test/nm-online.c b/test/nm-online.c
+index 53b0465..681df18 100644
+--- a/test/nm-online.c
++++ b/test/nm-online.c
+@@ -106,7 +106,6 @@ main (int argc, char *argv[])
+ {
+ 	gint t_secs = -1;
+ 	gboolean exit_no_nm = FALSE;
+-	gboolean quiet = FALSE;
+ 	gboolean wait_startup = FALSE;
+ 	Timeout timeout;
+ 	GOptionContext *opt_ctx = NULL;
+@@ -118,11 +117,13 @@ main (int argc, char *argv[])
+ 	GOptionEntry options[] = {
+ 		{"timeout", 't', 0, G_OPTION_ARG_INT, &t_secs, N_("Time to wait for a connection, in seconds (without the option, default value is 30)"), "<timeout>"},
+ 		{"exit", 'x', 0, G_OPTION_ARG_NONE, &exit_no_nm, N_("Exit immediately if NetworkManager is not running or connecting"), NULL},
+-		{"quiet", 'q', 0, G_OPTION_ARG_NONE, &quiet, N_("Don't print anything"), NULL},
++		{"quiet", 'q', 0, G_OPTION_ARG_NONE, &timeout.quiet, N_("Don't print anything"), NULL},
+ 		{"wait-for-startup", 's', 0, G_OPTION_ARG_NONE, &wait_startup, N_("Wait for NetworkManager startup instead of a connection"), NULL},
+ 		{NULL}
+ 	};
+ 
++	timeout.quiet = FALSE;
++
+ 	/* Set locale to be able to use environment variables */
+ 	setlocale (LC_ALL, "");
+ 
+-- 
+1.9.0
+
diff --git a/0053-rh1061911-crash-dispose-NMSecretAgent.patch b/0053-rh1061911-crash-dispose-NMSecretAgent.patch
new file mode 100644
index 0000000..0190876
--- /dev/null
+++ b/0053-rh1061911-crash-dispose-NMSecretAgent.patch
@@ -0,0 +1,81 @@
+From 2cea29f22882571ac92fedccd3cbe664d31eab10 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= <jklimes at redhat.com>
+Date: Tue, 11 Feb 2014 13:58:17 +0100
+Subject: [PATCH 1/1] settings: free memory in finalize(), not in dispose() in
+ NMSecretAgent (rh #1061911)
+
+Even if the code changed in master compared to the bug report, the issues would
+still occur when we freed members in dispose.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1061911
+(cherry picked from commit 4141e69b3a368f5b450fbc99a37557f77ef2fd08)
+
+Conflicts:
+	src/settings/nm-secret-agent.c
+---
+ src/settings/nm-secret-agent.c | 31 +++++++++++++++----------------
+ 1 file changed, 15 insertions(+), 16 deletions(-)
+
+diff --git a/src/settings/nm-secret-agent.c b/src/settings/nm-secret-agent.c
+index 5a8a73f..c7c1a26 100644
+--- a/src/settings/nm-secret-agent.c
++++ b/src/settings/nm-secret-agent.c
+@@ -40,8 +40,6 @@ G_DEFINE_TYPE (NMSecretAgent, nm_secret_agent, G_TYPE_OBJECT)
+                                         NMSecretAgentPrivate))
+ 
+ typedef struct {
+-	gboolean disposed;
+-
+ 	char *description;
+ 	char *owner;
+ 	char *identifier;
+@@ -499,25 +497,25 @@ nm_secret_agent_init (NMSecretAgent *self)
+ static void
+ dispose (GObject *object)
+ {
+-	NMSecretAgentPrivate *priv = NM_SECRET_AGENT_GET_PRIVATE (object);
+-
+-	if (!priv->disposed) {
+-		priv->disposed = TRUE;
++	proxy_cleanup (NM_SECRET_AGENT (object));
+ 
+-		g_free (priv->description);
+-		g_free (priv->owner);
+-		g_free (priv->identifier);
+-		g_free (priv->owner_username);
++	G_OBJECT_CLASS (nm_secret_agent_parent_class)->dispose (object);
++}
+ 
+-		g_slist_foreach (priv->permissions, (GFunc) g_free, NULL);
+-		g_slist_free (priv->permissions);
++static void
++finalize (GObject *object)
++{
++	NMSecretAgentPrivate *priv = NM_SECRET_AGENT_GET_PRIVATE (object);
+ 
+-		g_hash_table_destroy (priv->requests);
++	g_free (priv->description);
++	g_free (priv->owner);
++	g_free (priv->identifier);
++	g_free (priv->owner_username);
+ 
+-		proxy_cleanup (NM_SECRET_AGENT (object));
+-	}
++	g_slist_free_full (priv->permissions, g_free);
++	g_hash_table_destroy (priv->requests);
+ 
+-	G_OBJECT_CLASS (nm_secret_agent_parent_class)->dispose (object);
++	G_OBJECT_CLASS (nm_secret_agent_parent_class)->finalize (object);
+ }
+ 
+ static void
+@@ -529,5 +527,6 @@ nm_secret_agent_class_init (NMSecretAgentClass *config_class)
+ 
+ 	/* virtual methods */
+ 	object_class->dispose = dispose;
++	object_class->finalize = finalize;
+ }
+ 
+-- 
+1.9.0
+
diff --git a/0054-rh1063885-extened-address-flags-for-old-kernel.patch b/0054-rh1063885-extened-address-flags-for-old-kernel.patch
new file mode 100644
index 0000000..8221512
--- /dev/null
+++ b/0054-rh1063885-extened-address-flags-for-old-kernel.patch
@@ -0,0 +1,55 @@
+From d4e54f22ff4550b27f0c2953191f65a69bdb814c Mon Sep 17 00:00:00 2001
+From: Thomas Haller <thaller at redhat.com>
+Date: Fri, 4 Apr 2014 16:14:46 +0200
+Subject: [PATCH 1/1] platform: workaround older kernels that don't accept
+ extended address flags via netlink
+
+Extended address flags are represented by the additional netlink
+attribute IFA_FLAGS. Older kernels don't know this flag and refuse
+the messages RTM_NEWADDR and RTMDEL_ADDR when it contains unknown
+attributes. See net/core/rtnetlink.c, rtnetlink_rcv_msg(). This was
+fixed by kernel commit 661d2967b3f1b34eeaa7e212e7b9bbe8ee072b59.
+
+libnl was fixed in commit 5206c050504f8676a24854519b9c351470fb7cc6 only to
+send the additional netlink attribute, when there are actually flags
+that make this necessary.
+
+This commit changes nm-platform to strip the flags to &= 0xFF, if we detect
+that the kernel does not understand extended address flags.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1063885
+
+Signed-off-by: Thomas Haller <thaller at redhat.com>
+(cherry picked from commit dac51747ab5853b00557d7d97d4b2eae05968c03)
+---
+ src/platform/nm-linux-platform.c | 13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c
+index b5e3618..dacdc16 100644
+--- a/src/platform/nm-linux-platform.c
++++ b/src/platform/nm-linux-platform.c
+@@ -2405,8 +2405,19 @@ build_rtnl_addr (int family,
+ 		rtnl_addr_set_valid_lifetime (rtnladdr, lifetime);
+ 		rtnl_addr_set_preferred_lifetime (rtnladdr, preferred);
+ 	}
+-	if (flags)
++	if (flags) {
++		if ((flags & ~0xFF) && !check_support_kernel_extended_ifa_flags (nm_platform_get ())) {
++			/* Older kernels don't accept unknown netlink attributes.
++			 *
++			 * With commit libnl commit 5206c050504f8676a24854519b9c351470fb7cc6, libnl will only set
++			 * the extended address flags attribute IFA_FLAGS when necessary (> 8 bit). But it's up to
++			 * us not to shove those extended flags on to older kernels.
++			 *
++			 * Just silently clear them. The kernel should ignore those unknown flags anyway. */
++			flags &= 0xFF;
++		}
+ 		rtnl_addr_set_flags (rtnladdr, flags);
++	}
+ 
+ 	return (struct nl_object *) rtnladdr;
+ }
+-- 
+1.9.0
+
diff --git a/0055-rh1080474-nmcli-show-mbit-s.patch b/0055-rh1080474-nmcli-show-mbit-s.patch
new file mode 100644
index 0000000..ed11a26
--- /dev/null
+++ b/0055-rh1080474-nmcli-show-mbit-s.patch
@@ -0,0 +1,873 @@
+From c1dfa412dccec7ce2a27a1da36b2e0e4679cbc6a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= <jklimes at redhat.com>
+Date: Tue, 1 Apr 2014 14:53:00 +0200
+Subject: [PATCH 1/5] trivial: make clear the maximum bitrate is in kbit/s
+
+(cherry picked from commit 759236681ca1d1a472c136aef4c571a0ee954056)
+---
+ libnm-glib/nm-access-point.c | 6 +++---
+ libnm-glib/nm-device-wifi.c  | 6 +++---
+ src/nm-wifi-ap.c             | 2 +-
+ 3 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/libnm-glib/nm-access-point.c b/libnm-glib/nm-access-point.c
+index 56dcb11..6c090c0 100644
+--- a/libnm-glib/nm-access-point.c
++++ b/libnm-glib/nm-access-point.c
+@@ -236,9 +236,9 @@ nm_access_point_get_mode (NMAccessPoint *ap)
+  * nm_access_point_get_max_bitrate:
+  * @ap: a #NMAccessPoint
+  *
+- * Gets the maximum bit rate of the access point.
++ * Gets the maximum bit rate of the access point in kbit/s.
+  *
+- * Returns: the maximum bit rate
++ * Returns: the maximum bit rate (kbit/s)
+  **/
+ guint32
+ nm_access_point_get_max_bitrate (NMAccessPoint *ap)
+@@ -661,7 +661,7 @@ nm_access_point_class_init (NMAccessPointClass *ap_class)
+ 	/**
+ 	 * NMAccessPoint:max-bitrate:
+ 	 *
+-	 * The maximum bit rate of the access point.
++	 * The maximum bit rate of the access point in kbit/s.
+ 	 **/
+ 	g_object_class_install_property
+ 		(object_class, PROP_MAX_BITRATE,
+diff --git a/libnm-glib/nm-device-wifi.c b/libnm-glib/nm-device-wifi.c
+index cda8eb0..8ffdf42 100644
+--- a/libnm-glib/nm-device-wifi.c
++++ b/libnm-glib/nm-device-wifi.c
+@@ -185,9 +185,9 @@ nm_device_wifi_get_mode (NMDeviceWifi *device)
+  * nm_device_wifi_get_bitrate:
+  * @device: a #NMDeviceWifi
+  *
+- * Gets the bit rate of the #NMDeviceWifi.
++ * Gets the bit rate of the #NMDeviceWifi in kbit/s.
+  *
+- * Returns: the bit rate
++ * Returns: the bit rate (kbit/s)
+  **/
+ guint32
+ nm_device_wifi_get_bitrate (NMDeviceWifi *device)
+@@ -744,7 +744,7 @@ nm_device_wifi_class_init (NMDeviceWifiClass *wifi_class)
+ 	/**
+ 	 * NMDeviceWifi:bitrate:
+ 	 *
+-	 * The bit rate of the device.
++	 * The bit rate of the device in kbit/s.
+ 	 **/
+ 	g_object_class_install_property
+ 		(object_class, PROP_BITRATE,
+diff --git a/src/nm-wifi-ap.c b/src/nm-wifi-ap.c
+index fb12754..06be315 100644
+--- a/src/nm-wifi-ap.c
++++ b/src/nm-wifi-ap.c
+@@ -1023,7 +1023,7 @@ nm_ap_set_freq (NMAccessPoint *ap,
+ 
+ 
+ /*
+- * Get/set functions for max bitrate
++ * Get/set functions for max bitrate (in kbit/s)
+  *
+  */
+ guint32 nm_ap_get_max_bitrate (NMAccessPoint *ap)
+-- 
+1.9.0
+
+
+From 0bcda31fe413ee681b02ce131fa3d47f319861f1 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= <jklimes at redhat.com>
+Date: Tue, 1 Apr 2014 14:56:32 +0200
+Subject: [PATCH 2/5] nmcli: use correct Mbit/s units for maximal bitrate (rh
+ #1080474)
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1080474
+(cherry picked from commit c1e5493117dac1c57e02b0f30c12a0f8903133c3)
+---
+ cli/src/devices.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cli/src/devices.c b/cli/src/devices.c
+index bcbf287..03eefbc 100644
+--- a/cli/src/devices.c
++++ b/cli/src/devices.c
+@@ -433,7 +433,7 @@ fill_output_access_point (gpointer data, gpointer user_data)
+ 	}
+ 	channel_str = g_strdup_printf ("%u", nm_utils_wifi_freq_to_channel (freq));
+ 	freq_str = g_strdup_printf (_("%u MHz"), freq);
+-	bitrate_str = g_strdup_printf (_("%u MB/s"), bitrate/1000);
++	bitrate_str = g_strdup_printf (_("%u Mbit/s"), bitrate/1000);
+ 	strength_str = g_strdup_printf ("%u", strength);
+ 	wpa_flags_str = ap_wpa_rsn_flags_to_string (wpa_flags);
+ 	rsn_flags_str = ap_wpa_rsn_flags_to_string (rsn_flags);
+-- 
+1.9.0
+
+
+From 73abea116465955c64550e49629159ed7098a63f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= <jklimes at redhat.com>
+Date: Tue, 1 Apr 2014 15:07:22 +0200
+Subject: [PATCH 3/5] examples: use correct Mbit/s for bitrates
+
+(cherry picked from commit 7211d82f7726824f7967242a104aa3a1f2fed4b3)
+---
+ examples/C/glib/get-ap-info-libnm-glib.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/examples/C/glib/get-ap-info-libnm-glib.c b/examples/C/glib/get-ap-info-libnm-glib.c
+index e72ce54..c144be2 100644
+--- a/examples/C/glib/get-ap-info-libnm-glib.c
++++ b/examples/C/glib/get-ap-info-libnm-glib.c
+@@ -105,7 +105,7 @@ show_access_point_info (NMAccessPoint *ap)
+ 	/* Convert to strings */
+ 	ssid_str = nm_utils_ssid_to_utf8 (ssid);
+ 	freq_str = g_strdup_printf ("%u MHz", freq);
+-	bitrate_str = g_strdup_printf ("%u MB/s", bitrate/1000);
++	bitrate_str = g_strdup_printf ("%u Mbit/s", bitrate/1000);
+ 	strength_str = g_strdup_printf ("%u", strength);
+ 	wpa_flags_str = ap_wpa_rsn_flags_to_string (wpa_flags);
+ 	rsn_flags_str = ap_wpa_rsn_flags_to_string (rsn_flags);
+@@ -178,7 +178,7 @@ show_wifi_device_info (NMDevice *device)
+ 	speed = nm_device_wifi_get_bitrate (NM_DEVICE_WIFI (device));
+ 	speed /= 1000;
+ 
+-	printf ("Device: %s  ----  Driver: %s  ----  Speed: %d MB/s  ----  Active AP: %s\n",
++	printf ("Device: %s  ----  Driver: %s  ----  Speed: %d Mbit/s  ----  Active AP: %s\n",
+ 	         iface, driver, speed, active_ssid_str ? active_ssid_str : "none");
+ 	printf ("=================================================================================\n");
+ 	g_free (active_ssid_str);
+-- 
+1.9.0
+
+
+From 884fb928636176fd9dc6c6e6bc5e0935c2411e6a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= <jklimes at redhat.com>
+Date: Tue, 1 Apr 2014 15:09:34 +0200
+Subject: [PATCH 4/5] man: use correct Mbit/s for maximum bitrate in
+ nmcli-examples
+
+(cherry picked from commit b3cbb260ef601a37a7d986563f02646e1b00d660)
+
+Conflicts:
+	man/nmcli-examples.xml
+---
+ man/nmcli-examples.5 | 22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/man/nmcli-examples.5 b/man/nmcli-examples.5
+index 9d05ec6..44b5f4e 100644
+--- a/man/nmcli-examples.5
++++ b/man/nmcli-examples.5
+@@ -64,17 +64,17 @@ $ nmcli device wifi list
+ .\}
+ .nf
+ *  SSID               MODE    CHAN  RATE     SIGNAL  BARS  SECURITY
+-   netdatacomm_local  Infra   6     54 MB/s  37      ▂▄__  WEP
+-*  F1                 Infra   11    54 MB/s  98      ▂▄▆█  WPA1
+-   LoremCorp          Infra   1     54 MB/s  62      ▂▄▆_  WPA2 802\&.1X
+-   Internet           Infra   6     54 MB/s  29      ▂___  WPA1
+-   HPB110a\&.F2672A     Ad\-Hoc  6     54 MB/s  22      ▂___  \-\-
+-   Jozinet            Infra   1     54 MB/s  19      ▂___  WEP
+-   VOIP               Infra   1     54 MB/s  20      ▂___  WEP
+-   MARTINA            Infra   4     54 MB/s  32      ▂▄__  WPA2
+-   N24PU1             Infra   7     11 MB/s  22      ▂___  \-\-
+-   alfa               Infra   1     54 MB/s  67      ▂▄▆_  WPA2
+-   bertnet            Infra   5     54 MB/s  20      ▂___  WPA1 WPA2
++   netdatacomm_local  Infra   6     54 MBit/s  37      ▂▄__  WEP
++*  F1                 Infra   11    54 MBit/s  98      ▂▄▆█  WPA1
++   LoremCorp          Infra   1     54 MBit/s  62      ▂▄▆_  WPA2 802\&.1X
++   Internet           Infra   6     54 MBit/s  29      ▂___  WPA1
++   HPB110a\&.F2672A     Ad\-Hoc  6     54 MBit/s  22      ▂___  \-\-
++   Jozinet            Infra   1     54 MBit/s  19      ▂___  WEP
++   VOIP               Infra   1     54 MBit/s  20      ▂___  WEP
++   MARTINA            Infra   4     54 MBit/s  32      ▂▄__  WPA2
++   N24PU1             Infra   7     11 MBit/s  22      ▂___  \-\-
++   alfa               Infra   1     54 MBit/s  67      ▂▄▆_  WPA2
++   bertnet            Infra   5     54 MBit/s  20      ▂___  WPA1 WPA2
+       
+ .fi
+ .if n \{\
+-- 
+1.9.0
+
+
+From 88c40d47437cfa25d7a5075923096ba6c067bcfa Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= <jklimes at redhat.com>
+Date: Tue, 1 Apr 2014 15:12:09 +0200
+Subject: [PATCH 5/5] po: fix "MB/s" -> "Mbit/s"
+
+(cherry picked from commit cb80daa94225b5ef459b503768fa63463b33a5de)
+
+Conflicts:
+	po/as.po
+	po/uk.po
+---
+ po/as.po       | 4 ++--
+ po/bg.po       | 4 ++--
+ po/bn_IN.po    | 2 +-
+ po/ca.po       | 4 ++--
+ po/cs.po       | 4 ++--
+ po/da.po       | 4 ++--
+ po/de.po       | 4 ++--
+ po/el.po       | 4 ++--
+ po/en_GB.po    | 4 ++--
+ po/eo.po       | 4 ++--
+ po/es.po       | 4 ++--
+ po/eu.po       | 4 ++--
+ po/fi.po       | 2 +-
+ po/fr.po       | 2 +-
+ po/gl.po       | 4 ++--
+ po/gu.po       | 4 ++--
+ po/hi.po       | 4 ++--
+ po/hr.po       | 4 ++--
+ po/hu.po       | 4 ++--
+ po/id.po       | 4 ++--
+ po/it.po       | 4 ++--
+ po/ja.po       | 4 ++--
+ po/kn.po       | 4 ++--
+ po/ko.po       | 4 ++--
+ po/lt.po       | 4 ++--
+ po/ml.po       | 4 ++--
+ po/mr.po       | 4 ++--
+ po/or.po       | 4 ++--
+ po/pa.po       | 4 ++--
+ po/pl.po       | 4 ++--
+ po/pt_BR.po    | 4 ++--
+ po/ru.po       | 2 +-
+ po/sl.po       | 4 ++--
+ po/sr.po       | 4 ++--
+ po/sr at latin.po | 4 ++--
+ po/sv.po       | 4 ++--
+ po/ta.po       | 4 ++--
+ po/te.po       | 4 ++--
+ po/tr.po       | 4 ++--
+ po/uk.po       | 2 +-
+ po/zh_CN.po    | 4 ++--
+ po/zh_TW.po    | 4 ++--
+ 42 files changed, 79 insertions(+), 79 deletions(-)
+
+diff --git a/po/as.po b/po/as.po
+index 2e62dff..c6dc17b 100644
+--- a/po/as.po
++++ b/po/as.po
+@@ -1723,8 +1723,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:417
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u MBit/s"
++msgstr "%u MBit/s"
+ 
+ #: ../cli/src/devices.c:426
+ msgid "Encrypted: "
+diff --git a/po/bg.po b/po/bg.po
+index cda45f1..0269643 100644
+--- a/po/bg.po
++++ b/po/bg.po
+@@ -774,8 +774,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:431
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:440
+ msgid "Encrypted: "
+diff --git a/po/bn_IN.po b/po/bn_IN.po
+index 6d3f830..02a511d 100644
+--- a/po/bn_IN.po
++++ b/po/bn_IN.po
+@@ -1170,7 +1170,7 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:401
+ #, c-format
+-msgid "%u MB/s"
++msgid "%u Mbit/s"
+ msgstr "%u মেগাবাইট/সেকেন্ড"
+ 
+ #: ../cli/src/devices.c:410
+diff --git a/po/ca.po b/po/ca.po
+index d4e6c8e..c3940b9 100644
+--- a/po/ca.po
++++ b/po/ca.po
+@@ -766,8 +766,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:431
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:440
+ msgid "Encrypted: "
+diff --git a/po/cs.po b/po/cs.po
+index 0cb1482..25b2be1 100644
+--- a/po/cs.po
++++ b/po/cs.po
+@@ -820,8 +820,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:461
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:470
+ msgid "Encrypted: "
+diff --git a/po/da.po b/po/da.po
+index bbcde42..82f456c 100644
+--- a/po/da.po
++++ b/po/da.po
+@@ -797,8 +797,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:395
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:404
+ msgid "Encrypted: "
+diff --git a/po/de.po b/po/de.po
+index 3eb730e..2162091 100644
+--- a/po/de.po
++++ b/po/de.po
+@@ -2701,8 +2701,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:433
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:452
+ msgid "WPA1"
+diff --git a/po/el.po b/po/el.po
+index 355249d..db8cf54 100644
+--- a/po/el.po
++++ b/po/el.po
+@@ -1160,8 +1160,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:380
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:389
+ msgid "Encrypted: "
+diff --git a/po/en_GB.po b/po/en_GB.po
+index 32235ce..3997ed5 100644
+--- a/po/en_GB.po
++++ b/po/en_GB.po
+@@ -1157,8 +1157,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:380
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:389
+ msgid "Encrypted: "
+diff --git a/po/eo.po b/po/eo.po
+index 0284ae6..c466a5d 100644
+--- a/po/eo.po
++++ b/po/eo.po
+@@ -1122,8 +1122,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:557
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:566
+ msgid "Encrypted: "
+diff --git a/po/es.po b/po/es.po
+index 5c1bde6..7b72529 100644
+--- a/po/es.po
++++ b/po/es.po
+@@ -814,8 +814,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:461
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:470
+ msgid "Encrypted: "
+diff --git a/po/eu.po b/po/eu.po
+index 68b8204..20026f9 100644
+--- a/po/eu.po
++++ b/po/eu.po
+@@ -638,8 +638,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:863
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:869 ../cli/src/devices.c:871
+ msgid "AP parameters"
+diff --git a/po/fi.po b/po/fi.po
+index 8a7517f..b4deae7 100644
+--- a/po/fi.po
++++ b/po/fi.po
+@@ -761,7 +761,7 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:461
+ #, c-format
+-msgid "%u MB/s"
++msgid "%u Mbit/s"
+ msgstr ""
+ 
+ #: ../cli/src/devices.c:470
+diff --git a/po/fr.po b/po/fr.po
+index b56bf3f..378831e 100644
+--- a/po/fr.po
++++ b/po/fr.po
+@@ -787,7 +787,7 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:461
+ #, c-format
+-msgid "%u MB/s"
++msgid "%u Mbit/s"
+ msgstr "%u Mo/s"
+ 
+ #: ../cli/src/devices.c:470
+diff --git a/po/gl.po b/po/gl.po
+index 310b66f..5dc613d 100644
+--- a/po/gl.po
++++ b/po/gl.po
+@@ -1210,8 +1210,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:404
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:413
+ msgid "Encrypted: "
+diff --git a/po/gu.po b/po/gu.po
+index 9459218..eb3a185 100644
+--- a/po/gu.po
++++ b/po/gu.po
+@@ -1713,8 +1713,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:417
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:426
+ msgid "Encrypted: "
+diff --git a/po/hi.po b/po/hi.po
+index aa0b3bf..c6e7938 100644
+--- a/po/hi.po
++++ b/po/hi.po
+@@ -1267,8 +1267,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:418
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:427
+ msgid "Encrypted: "
+diff --git a/po/hr.po b/po/hr.po
+index 4e24565..3cc5e45 100644
+--- a/po/hr.po
++++ b/po/hr.po
+@@ -794,8 +794,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:471
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:480
+ msgid "Encrypted: "
+diff --git a/po/hu.po b/po/hu.po
+index 237cce7..00d95bc 100644
+--- a/po/hu.po
++++ b/po/hu.po
+@@ -1257,8 +1257,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:418
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:427
+ msgid "Encrypted: "
+diff --git a/po/id.po b/po/id.po
+index 42cc406..0288338 100644
+--- a/po/id.po
++++ b/po/id.po
+@@ -1135,8 +1135,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:380
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:389
+ msgid "Encrypted: "
+diff --git a/po/it.po b/po/it.po
+index 6b2eb9e..867109a 100644
+--- a/po/it.po
++++ b/po/it.po
+@@ -2400,8 +2400,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:433
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:452
+ msgid "WPA1"
+diff --git a/po/ja.po b/po/ja.po
+index 02d7515..ddf8578 100644
+--- a/po/ja.po
++++ b/po/ja.po
+@@ -2671,8 +2671,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:433
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:452
+ msgid "WPA1"
+diff --git a/po/kn.po b/po/kn.po
+index e19c121..a1891fd 100644
+--- a/po/kn.po
++++ b/po/kn.po
+@@ -1665,8 +1665,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:433
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:452
+ msgid "WPA1"
+diff --git a/po/ko.po b/po/ko.po
+index ba6bb0b..a5e95b4 100644
+--- a/po/ko.po
++++ b/po/ko.po
+@@ -780,8 +780,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:471
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:480
+ msgid "Encrypted: "
+diff --git a/po/lt.po b/po/lt.po
+index 8b17832..bfa26a1 100644
+--- a/po/lt.po
++++ b/po/lt.po
+@@ -2837,8 +2837,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:433
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:452
+ msgid "WPA1"
+diff --git a/po/ml.po b/po/ml.po
+index f5d6841..7a289a2 100644
+--- a/po/ml.po
++++ b/po/ml.po
+@@ -1211,8 +1211,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:418
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:427
+ msgid "Encrypted: "
+diff --git a/po/mr.po b/po/mr.po
+index 45c81fc..e202592 100644
+--- a/po/mr.po
++++ b/po/mr.po
+@@ -2491,8 +2491,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:433
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:452
+ msgid "WPA1"
+diff --git a/po/or.po b/po/or.po
+index ed220ec..5801d61 100644
+--- a/po/or.po
++++ b/po/or.po
+@@ -1727,8 +1727,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:417
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:426
+ msgid "Encrypted: "
+diff --git a/po/pa.po b/po/pa.po
+index 0fd0275..3b8ee45 100644
+--- a/po/pa.po
++++ b/po/pa.po
+@@ -1213,8 +1213,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:380
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:389
+ msgid "Encrypted: "
+diff --git a/po/pl.po b/po/pl.po
+index 7686ae4..9711670 100644
+--- a/po/pl.po
++++ b/po/pl.po
+@@ -2743,8 +2743,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:433
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:452
+ msgid "WPA1"
+diff --git a/po/pt_BR.po b/po/pt_BR.po
+index e188af3..b4008b5 100644
+--- a/po/pt_BR.po
++++ b/po/pt_BR.po
+@@ -2753,8 +2753,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:433
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:452
+ msgid "WPA1"
+diff --git a/po/ru.po b/po/ru.po
+index 56f3fce..490f69d 100644
+--- a/po/ru.po
++++ b/po/ru.po
+@@ -1165,7 +1165,7 @@ msgstr "%u МГц"
+ 
+ #: ../cli/src/devices.c:400
+ #, c-format
+-msgid "%u MB/s"
++msgid "%u Mbit/s"
+ msgstr "%u МБ/с"
+ 
+ #: ../cli/src/devices.c:409
+diff --git a/po/sl.po b/po/sl.po
+index 744beb3..ddd4e08 100644
+--- a/po/sl.po
++++ b/po/sl.po
+@@ -1274,8 +1274,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:380
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:389
+ msgid "Encrypted: "
+diff --git a/po/sr.po b/po/sr.po
+index 160630c..baefbaf 100644
+--- a/po/sr.po
++++ b/po/sr.po
+@@ -711,8 +711,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:394
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:403
+ msgid "Encrypted: "
+diff --git a/po/sr at latin.po b/po/sr at latin.po
+index 3158fac..b4f9f28 100644
+--- a/po/sr at latin.po
++++ b/po/sr at latin.po
+@@ -711,8 +711,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:394
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:403
+ msgid "Encrypted: "
+diff --git a/po/sv.po b/po/sv.po
+index 9f66eb6..7bcc960 100644
+--- a/po/sv.po
++++ b/po/sv.po
+@@ -1229,8 +1229,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:557
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:566
+ msgid "Encrypted: "
+diff --git a/po/ta.po b/po/ta.po
+index 058b8fd..16ba218 100644
+--- a/po/ta.po
++++ b/po/ta.po
+@@ -1266,8 +1266,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:418
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:427
+ msgid "Encrypted: "
+diff --git a/po/te.po b/po/te.po
+index 5ba12a0..d4fa28d 100644
+--- a/po/te.po
++++ b/po/te.po
+@@ -1753,8 +1753,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:433
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:452
+ msgid "WPA1"
+diff --git a/po/tr.po b/po/tr.po
+index 867c95e..713163b 100644
+--- a/po/tr.po
++++ b/po/tr.po
+@@ -1231,8 +1231,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:418
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:427
+ msgid "Encrypted: "
+diff --git a/po/uk.po b/po/uk.po
+index 8891829..c92e757 100644
+--- a/po/uk.po
++++ b/po/uk.po
+@@ -1215,7 +1215,7 @@ msgstr "%u МГц"
+ 
+ #: ../cli/src/devices.c:418
+ #, c-format
+-msgid "%u MB/s"
++msgid "%u MBit/s"
+ msgstr "%u МБ/с"
+ 
+ #: ../cli/src/devices.c:427
+diff --git a/po/zh_CN.po b/po/zh_CN.po
+index 5f4b64f..742e084 100644
+--- a/po/zh_CN.po
++++ b/po/zh_CN.po
+@@ -708,8 +708,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:394
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:403
+ msgid "Encrypted: "
+diff --git a/po/zh_TW.po b/po/zh_TW.po
+index d6e530f..7d5e1fe 100644
+--- a/po/zh_TW.po
++++ b/po/zh_TW.po
+@@ -698,8 +698,8 @@ msgstr "%u MHz"
+ 
+ #: ../cli/src/devices.c:350
+ #, c-format
+-msgid "%u MB/s"
+-msgstr "%u MB/s"
++msgid "%u Mbit/s"
++msgstr "%u Mbit/s"
+ 
+ #: ../cli/src/devices.c:359
+ msgid "Encrypted: "
+-- 
+1.9.0
+
diff --git a/0056-rh1084556-pending-action-queued-state-lock.patch b/0056-rh1084556-pending-action-queued-state-lock.patch
new file mode 100644
index 0000000..295e693
--- /dev/null
+++ b/0056-rh1084556-pending-action-queued-state-lock.patch
@@ -0,0 +1,67 @@
+From 6e99f5d9850d06cb2743c906843b429cb02173d2 Mon Sep 17 00:00:00 2001
+From: Thomas Haller <thaller at redhat.com>
+Date: Fri, 4 Apr 2014 14:55:37 +0200
+Subject: [PATCH] core: fix hanging pending_action "queued state lock"
+
+This bug caused nm-online to hang because "startup complete" state
+is never reached. Sometimes you also see this error in the logfile:
+
+  <warn> (em1): add_pending_action (3): 'queued state lock' already added
+  file devices/nm-device.c: line 7178 (nm_device_add_pending_action): should not be reached
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1084554
+https://bugzilla.redhat.com/show_bug.cgi?id=1084556
+Related: https://bugzilla.redhat.com/show_bug.cgi?id=1082045
+
+Signed-off-by: Thomas Haller <thaller at redhat.com>
+(cherry picked from commit fc1351504db557b942c121b480fca661162702f7)
+---
+ src/devices/nm-device.c | 22 +++++++++-------------
+ 1 file changed, 9 insertions(+), 13 deletions(-)
+
+diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
+index c7f72b8..9cb79f2 100644
+--- a/src/devices/nm-device.c
++++ b/src/devices/nm-device.c
+@@ -6485,29 +6485,25 @@ nm_device_queue_state (NMDevice *self,
+ 
+ 	priv = NM_DEVICE_GET_PRIVATE (self);
+ 
+-	/* "lock" the pending actions so that if there was a previously
+-	 * queued action that's about to be cleared, that doesn't drop
+-	 * the pending actions to 0 before we add the new pending action.
+-	 */
+-	nm_device_add_pending_action (self, "queued state lock");
++	if (priv->queued_state.id && priv->queued_state.state == state)
++		return;
++
++	/* Add pending action for the new state before clearing the queued states, so
++	 * that we don't accidently pop all pending states and reach 'startup complete'  */
++	nm_device_add_pending_action (self, queued_state_to_string (state));
+ 
+ 	/* We should only ever have one delayed state transition at a time */
+ 	if (priv->queued_state.id) {
+-		if (priv->queued_state.state == state)
+-			return;
+ 		nm_log_warn (LOGD_DEVICE, "(%s): overwriting previously queued state change to %s (%s)",
+-					 nm_device_get_iface (self),
+-					 state_to_string (priv->queued_state.state),
+-					 reason_to_string (priv->queued_state.reason));
++		             nm_device_get_iface (self),
++		             state_to_string (priv->queued_state.state),
++		             reason_to_string (priv->queued_state.reason));
+ 		nm_device_queued_state_clear (self);
+ 	}
+ 
+ 	priv->queued_state.state = state;
+ 	priv->queued_state.reason = reason;
+ 	priv->queued_state.id = g_idle_add (queued_set_state, self);
+-	nm_device_add_pending_action (self, queued_state_to_string (state));
+-
+-	nm_device_remove_pending_action (self, "queued state lock");
+ 
+ 	nm_log_dbg (LOGD_DEVICE, "(%s): queued state change to %s due to %s (id %d)",
+ 	            nm_device_get_iface (self), state_to_string (state), reason_to_string (reason),
+-- 
+1.9.0
+
diff --git a/0057-emit-property-changed-for-active-conn.patch b/0057-emit-property-changed-for-active-conn.patch
new file mode 100644
index 0000000..a76c007
--- /dev/null
+++ b/0057-emit-property-changed-for-active-conn.patch
@@ -0,0 +1,29 @@
+From 12b46b77359115a32ac406794586b886d8cb2587 Mon Sep 17 00:00:00 2001
+From: Dan Williams <dcbw at redhat.com>
+Date: Tue, 18 Mar 2014 15:37:12 -0500
+Subject: [PATCH 1/1] core: emit PropertyChanged signal for ActiveConnection
+ when disconnecting
+
+(cherry picked from commit 73d128bbd17120225bb4986e3f05566f10fab581)
+
+Conflicts:
+	src/devices/nm-device.c
+---
+ src/devices/nm-device.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
+index 9cb79f2..e50e1c2 100644
+--- a/src/devices/nm-device.c
++++ b/src/devices/nm-device.c
+@@ -4364,6 +4364,7 @@ clear_act_request (NMDevice *self)
+ 
+ 	g_object_unref (priv->act_request);
+ 	priv->act_request = NULL;
++	g_object_notify (G_OBJECT (self), NM_DEVICE_ACTIVE_CONNECTION);
+ }
+ 
+ static void
+-- 
+1.9.0
+
diff --git a/NetworkManager.spec b/NetworkManager.spec
index e4dd9a7..b115b3d 100644
--- a/NetworkManager.spec
+++ b/NetworkManager.spec
@@ -42,7 +42,7 @@ Name: NetworkManager
 Summary: Network connection manager and user applications
 Epoch: 1
 Version: 0.9.9.0
-Release: 33%{snapshot}%{?dist}
+Release: 34%{snapshot}%{?dist}
 Group: System Environment/Base
 License: GPLv2+
 URL: http://www.gnome.org/projects/NetworkManager/
@@ -102,6 +102,12 @@ Patch48: 0048-platform-to-string.patch
 Patch49: 0049-dbus-bindings.patch
 Patch50: 0050-backport-div-fixes.patch
 Patch51: 0051-rh1046242-keyfile-crash-fix.patch
+Patch52: 0052-rh1054364-fix-nm-online.patch
+Patch53: 0053-rh1061911-crash-dispose-NMSecretAgent.patch
+Patch54: 0054-rh1063885-extened-address-flags-for-old-kernel.patch
+Patch55: 0055-rh1080474-nmcli-show-mbit-s.patch
+Patch56: 0056-rh1084556-pending-action-queued-state-lock.patch
+Patch57: 0057-emit-property-changed-for-active-conn.patch
 
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
@@ -318,6 +324,12 @@ by nm-connection-editor and nm-applet in a non-graphical environment.
 %patch49 -p1 -b .0049-dbus-bindings.orig
 %patch50 -p1 -b .0050-backport-div-fixes.orig
 %patch51 -p1 -b .0051-rh1046242-keyfile-crash-fix.orig
+%patch52 -p1 -b .0052-rh1054364-fix-nm-online.orig
+%patch53 -p1 -b .0053-rh1061911-crash-dispose-NMSecretAgent.orig
+%patch54 -p1 -b .0054-rh1063885-extened-address-flags.orig
+%patch55 -p1 -b .0055-rh1080474-nmcli-show-mbit-s.orig
+%patch56 -p1 -b .0056-rh1084556-pending-action-queued-state-lock.orig
+%patch57 -p1 -b .0057-emit-property-changed-for-active-conn.orig
 
 %build
 
@@ -542,6 +554,14 @@ fi
 %endif
 
 %changelog
+* Tue Apr  8 2014 Thomas Haller <thaller at redhat.com> - 0.9.9.0-34.git20131003
+- fix nm-online returning success wrongly (rh #1054364)
+- fix crash in NMSecretAgent dispose (rh #1061911)
+- fix adding addresses with extended address flags for older kernels (rh #1063885)
+- cli: show maximum bitrate in MBit/s (rh #1080474)
+- fix hanging pending action queued-state-lock (rh #1084556)
+- core: emit PropertyChanged signal for ActiveConnection when disconnecting
+
 * Fri Mar 21 2014 Jiří Klimeš <jklimes at redhat.com> - 0.9.9.0-33.git20131003
 - keyfile: fix crash on reloading connections (rh #1046242)
 


More information about the scm-commits mailing list