From: Leena Gunda Date: Thu, 25 Nov 2010 15:11:38 +0000 (+0530) Subject: device: Support already powered devices X-Git-Tag: 2.0_alpha~2073 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6d3811f1bd54475c0f14e05c48775c7387cded63;p=framework%2Fconnectivity%2Fconnman.git device: Support already powered devices When a device is already powered up, the enable hook will return -EALREADY. In that case, ConnMan should just set it to powered and enable its underlying technology. Fixes BMC#10397 --- diff --git a/src/device.c b/src/device.c index 3fab97c..91806b7 100644 --- a/src/device.c +++ b/src/device.c @@ -192,7 +192,7 @@ int __connman_device_enable(struct connman_device *device) return -ENOLINK; err = device->driver->enable(device); - if (err < 0) { + if (err < 0 && err != -EALREADY) { if (err == -EINPROGRESS) { device->powered_pending = TRUE; device->offlinemode = FALSE; @@ -235,7 +235,7 @@ int __connman_device_disable(struct connman_device *device) g_hash_table_remove_all(device->networks); err = device->driver->disable(device); - if (err < 0) { + if (err < 0 && err != -EALREADY) { if (err == -EINPROGRESS) device->powered_pending = FALSE; return err; @@ -618,6 +618,8 @@ const char *connman_device_get_ident(struct connman_device *device) int connman_device_set_powered(struct connman_device *device, connman_bool_t powered) { + int err; + DBG("driver %p powered %d", device, powered); if (device->powered == powered) { @@ -626,9 +628,12 @@ int connman_device_set_powered(struct connman_device *device, } if (powered == TRUE) - __connman_device_enable(device); + err = __connman_device_enable(device); else - __connman_device_disable(device); + err = __connman_device_disable(device); + + if (err < 0 && err != -EINPROGRESS) + return err; device->powered = powered; device->powered_pending = powered;