diff options
| author | Michael Biebl <biebl@debian.org> | 2013-01-30 01:12:02 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2013-01-30 01:12:05 +0100 |
| commit | bb5116b4016d0ce4fe9a3887a7d68fe4c8c0b8de (patch) | |
| tree | cc999fd9335b2511c57b7b2ed6e95f6bbc7c8a2d | |
| parent | 989cceb558d2c8d52b061d1ee214dbae5b056d45 (diff) | |
ensure carrier is always on for devices that don't support detection (rh #816719).
(Closes: #699292) Patch cherry-picked from upstream Git.
| -rw-r--r-- | debian/changelog | 8 | ||||
| -rw-r--r-- | debian/patches/21-carrier-detect.patch | 76 | ||||
| -rw-r--r-- | debian/patches/series | 1 |
3 files changed, 85 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog index 46d0ab24..848f02e6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +network-manager (0.9.4.0-10) UNRELEASED; urgency=low + + * debian/patches/21-carrier-detect.patch: ensure carrier is always on for + devices that don't support detection (rh #816719). (Closes: #699292) + Patch cherry-picked from upstream Git. + + -- Michael Biebl <biebl@debian.org> Wed, 30 Jan 2013 01:10:27 +0100 + network-manager (0.9.4.0-9) unstable; urgency=low * Change the ifupdown dispatcher script and set ADDRFAM to "inet" or "inet6" diff --git a/debian/patches/21-carrier-detect.patch b/debian/patches/21-carrier-detect.patch new file mode 100644 index 00000000..06e2faed --- /dev/null +++ b/debian/patches/21-carrier-detect.patch @@ -0,0 +1,76 @@ +commit a091c7aa0f15ca2eb7a0c3d3e99405aa98855965 +Author: Dan Williams <dcbw@redhat.com> +Date: Sat Apr 28 11:48:01 2012 -0500 + + core: ensure carrier is always on for devices that don't support detection (rh #816719) + + We broke this when splitting NMDeviceWired out of NMDeviceEthernet. + +diff --git a/src/nm-device-wired.c b/src/nm-device-wired.c +index a476faa..e9934fb 100644 +--- a/src/nm-device-wired.c ++++ b/src/nm-device-wired.c +@@ -162,6 +162,7 @@ set_carrier (NMDeviceWired *self, + { + NMDeviceWiredPrivate *priv; + NMDeviceState state; ++ guint32 caps; + + g_return_if_fail (NM_IS_DEVICE (self)); + +@@ -172,6 +173,13 @@ set_carrier (NMDeviceWired *self, + /* Clear any previous deferred action */ + carrier_action_defer_clear (self); + ++ /* Warn if we try to set carrier down on a device that ++ * doesn't support carrier detect. These devices assume ++ * the carrier is always up. ++ */ ++ caps = nm_device_get_capabilities (NM_DEVICE (self)); ++ g_return_if_fail (caps & NM_DEVICE_CAP_CARRIER_DETECT); ++ + priv->carrier = carrier; + g_object_notify (G_OBJECT (self), "carrier"); + +@@ -200,10 +208,8 @@ carrier_on (NMNetlinkMonitor *monitor, + + /* Make sure signal is for us */ + if (idx == nm_device_get_ifindex (device)) { +- /* Ignore spurious netlink messages */ + caps = nm_device_get_capabilities (device); +- if (!(caps & NM_DEVICE_CAP_CARRIER_DETECT)) +- return; ++ g_return_if_fail (caps & NM_DEVICE_CAP_CARRIER_DETECT); + + set_carrier (self, TRUE, FALSE); + set_speed (self, ethtool_get_speed (self)); +@@ -224,10 +230,8 @@ carrier_off (NMNetlinkMonitor *monitor, + NMDeviceState state; + gboolean defer = FALSE; + +- /* Ignore spurious netlink messages */ + caps = nm_device_get_capabilities (device); +- if (!(caps & NM_DEVICE_CAP_CARRIER_DETECT)) +- return; ++ g_return_if_fail (caps & NM_DEVICE_CAP_CARRIER_DETECT); + + /* Defer carrier-off event actions while connected by a few seconds + * so that tripping over a cable, power-cycling a switch, or breaking +@@ -350,11 +354,15 @@ static gboolean + real_hw_bring_up (NMDevice *dev, gboolean *no_firmware) + { + gboolean success, carrier; ++ guint32 caps; + + success = nm_system_iface_set_up (nm_device_get_ip_ifindex (dev), TRUE, no_firmware); + if (success) { +- carrier = get_carrier_sync (NM_DEVICE_WIRED (dev)); +- set_carrier (NM_DEVICE_WIRED (dev), carrier, carrier ? FALSE : TRUE); ++ caps = nm_device_get_capabilities (dev); ++ if (caps & NM_DEVICE_CAP_CARRIER_DETECT) { ++ carrier = get_carrier_sync (NM_DEVICE_WIRED (dev)); ++ set_carrier (NM_DEVICE_WIRED (dev), carrier, carrier ? FALSE : TRUE); ++ } + } + return success; + } diff --git a/debian/patches/series b/debian/patches/series index 3c1f2808..5fdbad7c 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -14,3 +14,4 @@ 18-libnm-glib-NULL-out-priv-fields-on-dispose.patch 19-libnm-glib-discard-devices-and-active-connections-on-stop.patch 20-libnm-glib-clear-object-cache-on-stop.patch +21-carrier-detect.patch |