From 4fd5e838bd23e08d751c0b360834fd8486be74fd Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Fri, 18 Jan 2008 03:01:44 +0000 Subject: [PATCH] 2008-01-17 Dan Williams * src/nm-device-802-3-ethernet.c - (nm_device_802_3_ethernet_carrier_on, nm_device_802_3_ethernet_carrier_off): ignore any spurious netlink carrier events that might come in for devices that don't support carrier detect git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3245 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 8 ++++++++ src/nm-device-802-3-ethernet.c | 18 ++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 84ace704b..7b20901c6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-01-17 Dan Williams + + * src/nm-device-802-3-ethernet.c + - (nm_device_802_3_ethernet_carrier_on, + nm_device_802_3_ethernet_carrier_off): ignore any spurious netlink + carrier events that might come in for devices that don't support + carrier detect + 2008-01-17 Dan Williams * src/nm-device-interface.c diff --git a/src/nm-device-802-3-ethernet.c b/src/nm-device-802-3-ethernet.c index c52fa52af..80d684d8a 100644 --- a/src/nm-device-802-3-ethernet.c +++ b/src/nm-device-802-3-ethernet.c @@ -84,10 +84,17 @@ nm_device_802_3_ethernet_carrier_on (NMNetlinkMonitor *monitor, gpointer user_data) { NMDevice *dev = NM_DEVICE (user_data); + guint32 caps; /* Make sure signal is for us */ - if (nm_netlink_iface_to_index (nm_device_get_iface (dev)) == idx) + if (nm_netlink_iface_to_index (nm_device_get_iface (dev)) == idx) { + /* Ignore spurious netlink messages */ + caps = nm_device_get_capabilities (dev); + if (!(caps & NM_DEVICE_CAP_CARRIER_DETECT)) + return; + nm_device_set_active_link (dev, TRUE); + } } static void @@ -96,10 +103,17 @@ nm_device_802_3_ethernet_carrier_off (NMNetlinkMonitor *monitor, gpointer user_data) { NMDevice *dev = NM_DEVICE (user_data); + guint32 caps; /* Make sure signal is for us */ - if (nm_netlink_iface_to_index (nm_device_get_iface (dev)) == idx) + if (nm_netlink_iface_to_index (nm_device_get_iface (dev)) == idx) { + /* Ignore spurious netlink messages */ + caps = nm_device_get_capabilities (dev); + if (!(caps & NM_DEVICE_CAP_CARRIER_DETECT)) + return; + nm_device_set_active_link (dev, FALSE); + } } static GObject*