diff --git a/ChangeLog b/ChangeLog index 84ace704b5..7b20901c66 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 c52fa52af9..80d684d8a2 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*