ret = ks7010_sdio_read(priv, INT_PENDING, &rw_data, sizeof(rw_data));
        if (ret) {
                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);
-               return;
+               goto queue_delayed_work;
        }
+       if (rw_data)
+               goto queue_delayed_work;
 
-       if (!rw_data) {
-               rw_data = GCR_B_DOZE;
-               ret = ks7010_sdio_write(priv, GCR_B, &rw_data, sizeof(rw_data));
-               if (ret) {
-                       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);
-                       return;
-               }
-               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);
+       rw_data = GCR_B_DOZE;
+       ret = ks7010_sdio_write(priv, GCR_B, &rw_data, sizeof(rw_data));
+       if (ret) {
+               DPRINTK(1, " error : GCR_B=%02X\n", rw_data);
+               goto queue_delayed_work;
        }
+       DPRINTK(4, "PMG SET!! : GCR_B=%02X\n", rw_data);
+       atomic_set(&priv->psstatus.status, PS_SNOOZE);
+       DPRINTK(3, "psstatus.status=PS_SNOOZE\n");
 
        return;
+
+queue_delayed_work:
+       queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq,
+                          &priv->ks_wlan_hw.rw_wq, 1);
 }
 
 int ks_wlan_hw_power_save(struct ks_wlan_private *priv)