From d711aed2ef884dcbe5afad7da6673fca7caa37c5 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Tue, 21 Aug 2007 02:01:52 +0000 Subject: [PATCH] 2007-08-20 Dan Williams * src/nm-device-802-11-wireless.c src/nm-device-802-3-ethernet.c - (real_is_up): move device-specific tests before generic IFF_UP test, because when the card is pulled or the module removed, the device is already !IFF_UP and then device-specific cleanup (removing the supplicant interface, periodic checks, etc) never gets done git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2721 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 9 +++++++++ src/nm-device-802-11-wireless.c | 7 ++++--- src/nm-device-802-3-ethernet.c | 7 ++++--- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index ef6a493a8..5f1b86152 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2007-08-20 Dan Williams + + * src/nm-device-802-11-wireless.c + src/nm-device-802-3-ethernet.c + - (real_is_up): move device-specific tests before generic IFF_UP test, + because when the card is pulled or the module removed, the device + is already !IFF_UP and then device-specific cleanup (removing + the supplicant interface, periodic checks, etc) never gets done + 2007-08-20 Dan Williams * src/nm-manager.c diff --git a/src/nm-device-802-11-wireless.c b/src/nm-device-802-11-wireless.c index bd0ef7db1..0c4d7c1df 100644 --- a/src/nm-device-802-11-wireless.c +++ b/src/nm-device-802-11-wireless.c @@ -564,10 +564,11 @@ nm_device_802_11_periodic_update (gpointer data) static gboolean real_is_up (NMDevice *device) { - if (!NM_DEVICE_CLASS (nm_device_802_11_wireless_parent_class)->is_up (device)) - return FALSE; + /* Try device-specific tests first */ + if (NM_DEVICE_802_11_WIRELESS_GET_PRIVATE (device)->periodic_source_id) + return TRUE; - return NM_DEVICE_802_11_WIRELESS_GET_PRIVATE (device)->periodic_source_id != 0; + return NM_DEVICE_CLASS (nm_device_802_11_wireless_parent_class)->is_up (device); } static gboolean diff --git a/src/nm-device-802-3-ethernet.c b/src/nm-device-802-3-ethernet.c index a93a88dcb..228272204 100644 --- a/src/nm-device-802-3-ethernet.c +++ b/src/nm-device-802-3-ethernet.c @@ -157,10 +157,11 @@ out: static gboolean real_is_up (NMDevice *device) { - if (!NM_DEVICE_CLASS (nm_device_802_3_ethernet_parent_class)->is_up (device)) - return FALSE; + /* Try device-specific tests first */ + if (NM_DEVICE_802_3_ETHERNET_GET_PRIVATE (device)->sup_iface) + return TRUE; - return !!NM_DEVICE_802_3_ETHERNET_GET_PRIVATE (device)->sup_iface; + return NM_DEVICE_CLASS (nm_device_802_3_ethernet_parent_class)->is_up (device); } static gboolean