summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2013-05-31 14:28:16 -0500
committerDan Williams <dcbw@redhat.com>2014-05-06 14:15:50 -0500
commit5d8197a80bef620d0ce364e9b7b1fd2b85265982 (patch)
tree97a1a3b403276d8a6c14f0113cf93ed9e618d714
parent876ec0c755f83d7fc79af7b7cf61d268a6984464 (diff)
downloadNetworkManager-5d8197a80bef620d0ce364e9b7b1fd2b85265982.tar.gz
core: ignore modem management service state in rfkill handling
rfkill handling should only pay attention to actual rfkill, since rfkill is global but the modem management service state is per-device. Thus calculating a global state from multiple devices is very likely to get things wrong. Remove all of the code that used to handle that sort of thing, which means removing the 'enable-changed' signal from the Modem device, since now nothing external to the modem device should need to care whether it's enabled internally or not.
-rw-r--r--src/devices/wwan/nm-device-modem.c25
-rw-r--r--src/devices/wwan/nm-device-modem.h2
-rw-r--r--src/nm-manager.c64
3 files changed, 6 insertions, 85 deletions
diff --git a/src/devices/wwan/nm-device-modem.c b/src/devices/wwan/nm-device-modem.c
index 39cc06f3f7..5cadbf1014 100644
--- a/src/devices/wwan/nm-device-modem.c
+++ b/src/devices/wwan/nm-device-modem.c
@@ -53,13 +53,6 @@ enum {
PROP_CURRENT_CAPABILITIES,
};
-enum {
- ENABLE_CHANGED,
-
- LAST_SIGNAL
-};
-static guint signals[LAST_SIGNAL] = { 0 };
-
static void set_enabled (NMDevice *device, gboolean enabled);
/*****************************************************************************/
@@ -175,13 +168,8 @@ data_port_changed_cb (NMModem *modem, GParamSpec *pspec, gpointer user_data)
static void
modem_enabled_cb (NMModem *modem, GParamSpec *pspec, gpointer user_data)
{
- NMDeviceModem *self = NM_DEVICE_MODEM (user_data);
- NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (self);
-
- set_enabled (NM_DEVICE (self), nm_modem_get_mm_enabled (priv->modem));
-
- g_signal_emit (G_OBJECT (self), signals[ENABLE_CHANGED], 0);
- nm_device_emit_recheck_auto_activate (NM_DEVICE (self));
+ set_enabled (NM_DEVICE (user_data), nm_modem_get_mm_enabled (modem));
+ nm_device_emit_recheck_auto_activate (NM_DEVICE (user_data));
}
static void
@@ -530,15 +518,6 @@ nm_device_modem_class_init (NMDeviceModemClass *mclass)
0, G_MAXUINT32, NM_DEVICE_MODEM_CAPABILITY_NONE,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
- /* Signals */
- signals[ENABLE_CHANGED] =
- g_signal_new (NM_DEVICE_MODEM_ENABLE_CHANGED,
- G_OBJECT_CLASS_TYPE (object_class),
- G_SIGNAL_RUN_FIRST,
- 0, NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
-
nm_dbus_manager_register_exported_type (nm_dbus_manager_get (),
G_TYPE_FROM_CLASS (mclass),
&dbus_glib_nm_device_modem_object_info);
diff --git a/src/devices/wwan/nm-device-modem.h b/src/devices/wwan/nm-device-modem.h
index 1147b57be3..7751ce6bbd 100644
--- a/src/devices/wwan/nm-device-modem.h
+++ b/src/devices/wwan/nm-device-modem.h
@@ -38,8 +38,6 @@
#define NM_DEVICE_MODEM_CAPABILITIES "modem-capabilities"
#define NM_DEVICE_MODEM_CURRENT_CAPABILITIES "current-capabilities"
-#define NM_DEVICE_MODEM_ENABLE_CHANGED "enable-changed"
-
typedef struct {
NMDevice parent;
} NMDeviceModem;
diff --git a/src/nm-manager.c b/src/nm-manager.c
index d685dbe2c5..d41fe2a4d6 100644
--- a/src/nm-manager.c
+++ b/src/nm-manager.c
@@ -163,7 +163,6 @@ static void nm_manager_update_state (NMManager *manager);
typedef struct {
gboolean user_enabled;
- gboolean daemon_enabled;
gboolean sw_enabled;
gboolean hw_enabled;
RfKillType rtype;
@@ -172,7 +171,6 @@ typedef struct {
const char *prop;
const char *hw_prop;
RfKillState (*other_enabled_func) (NMManager *);
- RfKillState (*daemon_enabled_func) (NMManager *);
} RadioState;
typedef struct {
@@ -1282,11 +1280,8 @@ radio_enabled_for_rstate (RadioState *rstate, gboolean check_changeable)
gboolean enabled;
enabled = rstate->user_enabled && rstate->hw_enabled;
- if (check_changeable) {
+ if (check_changeable)
enabled &= rstate->sw_enabled;
- if (rstate->daemon_enabled_func)
- enabled &= rstate->daemon_enabled;
- }
return enabled;
}
@@ -1384,29 +1379,6 @@ nm_manager_get_ipw_rfkill_state (NMManager *self)
return ipw_state;
}
-static RfKillState
-nm_manager_get_modem_enabled_state (NMManager *self)
-{
- NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
- GSList *iter;
- RfKillState wwan_state = RFKILL_UNBLOCKED;
-
- for (iter = priv->devices; iter; iter = g_slist_next (iter)) {
- NMDevice *candidate = NM_DEVICE (iter->data);
- RfKillState candidate_state = RFKILL_UNBLOCKED;
-
- if (nm_device_get_rfkill_type (candidate) == RFKILL_TYPE_WWAN) {
- if (!nm_device_get_enabled (candidate))
- candidate_state = RFKILL_SOFT_BLOCKED;
-
- if (candidate_state > wwan_state)
- wwan_state = candidate_state;
- }
- }
-
- return wwan_state;
-}
-
static void
update_rstate_from_rfkill (RadioState *rstate, RfKillState rfkill)
{
@@ -1431,8 +1403,7 @@ manager_rfkill_update_one_type (NMManager *self,
RfKillState udev_state = RFKILL_UNBLOCKED;
RfKillState other_state = RFKILL_UNBLOCKED;
RfKillState composite;
- gboolean old_enabled, new_enabled, old_rfkilled, new_rfkilled;
- gboolean old_hwe, old_daemon_enabled = FALSE;
+ gboolean old_enabled, new_enabled, old_rfkilled, new_rfkilled, old_hwe;
old_enabled = radio_enabled_for_rstate (rstate, TRUE);
old_rfkilled = rstate->hw_enabled && rstate->sw_enabled;
@@ -1453,26 +1424,10 @@ manager_rfkill_update_one_type (NMManager *self,
update_rstate_from_rfkill (rstate, composite);
- /* If the device has a management daemon that can affect enabled state, check that now */
- if (rstate->daemon_enabled_func) {
- old_daemon_enabled = rstate->daemon_enabled;
- rstate->daemon_enabled = (rstate->daemon_enabled_func (self) == RFKILL_UNBLOCKED);
- if (old_daemon_enabled != rstate->daemon_enabled) {
- nm_log_info (LOGD_RFKILL, "%s now %s by management service",
- rstate->desc,
- rstate->daemon_enabled ? "enabled" : "disabled");
- }
- }
-
/* Print out all states affecting device enablement */
if (rstate->desc) {
- if (rstate->daemon_enabled_func) {
- nm_log_dbg (LOGD_RFKILL, "%s hw-enabled %d sw-enabled %d daemon-enabled %d",
- rstate->desc, rstate->hw_enabled, rstate->sw_enabled, rstate->daemon_enabled);
- } else {
- nm_log_dbg (LOGD_RFKILL, "%s hw-enabled %d sw-enabled %d",
- rstate->desc, rstate->hw_enabled, rstate->sw_enabled);
- }
+ nm_log_dbg (LOGD_RFKILL, "%s hw-enabled %d sw-enabled %d",
+ rstate->desc, rstate->hw_enabled, rstate->sw_enabled);
}
/* Log new killswitch state */
@@ -1523,12 +1478,6 @@ manager_ipw_rfkill_state_changed (NMDeviceWifi *device,
}
static void
-manager_modem_enabled_changed (NMDevice *device, gpointer user_data)
-{
- nm_manager_rfkill_update (NM_MANAGER (user_data), RFKILL_TYPE_WWAN);
-}
-
-static void
device_auth_done_cb (NMAuthChain *chain,
GError *auth_error,
DBusGMethodInvocation *context,
@@ -1807,10 +1756,6 @@ add_device (NMManager *self, NMDevice *device, gboolean generate_con)
g_signal_connect (device, "notify::" NM_DEVICE_WIFI_IPW_RFKILL_STATE,
G_CALLBACK (manager_ipw_rfkill_state_changed),
self);
- } else if (devtype == NM_DEVICE_TYPE_MODEM) {
- g_signal_connect (device, "enable-changed",
- G_CALLBACK (manager_modem_enabled_changed),
- self);
}
/* Update global rfkill state for this device type with the device's
@@ -4807,7 +4752,6 @@ nm_manager_init (NMManager *manager)
priv->radio_states[RFKILL_TYPE_WWAN].prop = NM_MANAGER_WWAN_ENABLED;
priv->radio_states[RFKILL_TYPE_WWAN].hw_prop = NM_MANAGER_WWAN_HARDWARE_ENABLED;
priv->radio_states[RFKILL_TYPE_WWAN].desc = "WWAN";
- priv->radio_states[RFKILL_TYPE_WWAN].daemon_enabled_func = nm_manager_get_modem_enabled_state;
priv->radio_states[RFKILL_TYPE_WWAN].rtype = RFKILL_TYPE_WWAN;
priv->radio_states[RFKILL_TYPE_WIMAX].user_enabled = TRUE;