> > > > > > OK try replacing the pm_runtime_put_noidle() above with just > > > pm_runtime_put_sync(). The reason why I put noidle there was the > > > wlcore_fw_sleep() call, with that gone put_sync should do the trick. > > > > > > > I have tried that already. Same problem. The last call to: > > ret = wlcore_raw_write32(wl, HW_ACCESS_ELP_CTRL_REG, ELPCTRL_SLEEP) > > > > which allows the firmware to get into ELP state during wowlan suspend is > > only completing after system resume for some unknown reason... > > Hmm maybe try also adding wl1271_power_off(wl) after put_sync()? > No, we don't want to power off the chip in wowlan mode. We power it of only during standard suspend. The trick is that it stays on during suspend and can be used As a wakeup source to the host on specific packets received by The firmware over the air. BR, Eyal