Function _ks_wlan_hw_power_save has 5 levels of indentation. Reducing the amount of indentation may make code clearer to read. Also a number of other checkpatch warnings may be removed if we first reduce the level of indentation in this function. Invert conditional and return from function if new conditional evaluates to true. Repeat on subsequent conditional. Reduce indentation without changing the program logic. Signed-off-by: Tobin C. Harding <me@xxxxxxxx> --- drivers/staging/ks7010/ks7010_sdio.c | 122 ++++++++++++++++++----------------- 1 file changed, 62 insertions(+), 60 deletions(-) diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c index 6f9f746..1cf8b12 100644 --- a/drivers/staging/ks7010/ks7010_sdio.c +++ b/drivers/staging/ks7010/ks7010_sdio.c @@ -176,70 +176,72 @@ static int _ks_wlan_hw_power_save(struct ks_wlan_private *priv) if (priv->reg.powermgt == POWMGT_ACTIVE_MODE) return 0; - if (priv->reg.operation_mode == MODE_INFRASTRUCTURE && - (priv->connect_status & CONNECT_STATUS_MASK) == CONNECT_STATUS) { - if (priv->dev_state == DEVICE_STATE_SLEEP) { - switch (atomic_read(&priv->psstatus.status)) { - case PS_SNOOZE: /* 4 */ + if (priv->reg.operation_mode != MODE_INFRASTRUCTURE || + (priv->connect_status & CONNECT_STATUS_MASK) != CONNECT_STATUS) + return 0; + + if (priv->dev_state != DEVICE_STATE_SLEEP) + return 0; + + switch (atomic_read(&priv->psstatus.status)) { + case PS_SNOOZE: /* 4 */ + break; + default: + DPRINTK(5, "\npsstatus.status=%d\npsstatus.confirm_wait=%d\npsstatus.snooze_guard=%d\ncnt_txqbody=%d\n", + atomic_read(&priv->psstatus.status), + atomic_read(&priv->psstatus.confirm_wait), + atomic_read(&priv->psstatus.snooze_guard), + cnt_txqbody(priv)); + + if (!atomic_read(&priv->psstatus.confirm_wait) + && !atomic_read(&priv->psstatus.snooze_guard) + && !cnt_txqbody(priv)) { + retval = + ks7010_sdio_read(priv, INT_PENDING, + &rw_data, + sizeof(rw_data)); + if (retval) { + DPRINTK(1, + " error : INT_PENDING=%02X\n", + rw_data); + queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, + &priv->ks_wlan_hw.rw_wq, 1); break; - default: - DPRINTK(5, "\npsstatus.status=%d\npsstatus.confirm_wait=%d\npsstatus.snooze_guard=%d\ncnt_txqbody=%d\n", - atomic_read(&priv->psstatus.status), - atomic_read(&priv->psstatus.confirm_wait), - atomic_read(&priv->psstatus.snooze_guard), - cnt_txqbody(priv)); - - if (!atomic_read(&priv->psstatus.confirm_wait) - && !atomic_read(&priv->psstatus.snooze_guard) - && !cnt_txqbody(priv)) { - retval = - ks7010_sdio_read(priv, INT_PENDING, - &rw_data, - sizeof(rw_data)); - if (retval) { - DPRINTK(1, - " error : INT_PENDING=%02X\n", - rw_data); - queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, - &priv->ks_wlan_hw.rw_wq, 1); - break; - } - if (!rw_data) { - rw_data = GCR_B_DOZE; - retval = - ks7010_sdio_write(priv, - GCR_B, - &rw_data, - sizeof(rw_data)); - if (retval) { - DPRINTK(1, - " error : GCR_B=%02X\n", - rw_data); - queue_delayed_work - (priv->ks_wlan_hw.ks7010sdio_wq, - &priv->ks_wlan_hw.rw_wq, 1); - break; - } - DPRINTK(4, - "PMG SET!! : GCR_B=%02X\n", - rw_data); - atomic_set(&priv->psstatus. - status, PS_SNOOZE); - DPRINTK(3, - "psstatus.status=PS_SNOOZE\n"); - } else { - queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, - &priv->ks_wlan_hw.rw_wq, 1); - } - } else { - queue_delayed_work(priv->ks_wlan_hw. - ks7010sdio_wq, - &priv->ks_wlan_hw.rw_wq, - 0); + } + if (!rw_data) { + rw_data = GCR_B_DOZE; + retval = + ks7010_sdio_write(priv, + GCR_B, + &rw_data, + sizeof(rw_data)); + if (retval) { + DPRINTK(1, + " error : GCR_B=%02X\n", + rw_data); + queue_delayed_work + (priv->ks_wlan_hw.ks7010sdio_wq, + &priv->ks_wlan_hw.rw_wq, 1); + break; } - break; + DPRINTK(4, + "PMG SET!! : GCR_B=%02X\n", + rw_data); + atomic_set(&priv->psstatus. + status, PS_SNOOZE); + DPRINTK(3, + "psstatus.status=PS_SNOOZE\n"); + } else { + queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, + &priv->ks_wlan_hw.rw_wq, 1); } + } else { + queue_delayed_work(priv->ks_wlan_hw. + ks7010sdio_wq, + &priv->ks_wlan_hw.rw_wq, + 0); } + break; } return 0; -- 2.7.4 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel