*
  * @flags:             Power table command flags from POWER_FLAGS_*
  * @keep_alive_seconds: Keep alive period in seconds. Default - 25 sec.
- *                     Minimum allowed:- 3 * DTIM
+ *                     Minimum allowed:- 3 * DTIM. Keep alive period must be
+ *                     set regardless of power scheme or current power state.
+ *                     FW use this value also when PM is disabled.
  * @rx_data_timeout:    Minimum time (usec) from last Rx packet for AM to
  *                     PSM transition - legacy PM
  * @tx_data_timeout:    Minimum time (usec) from last Tx packet for AM to
 
        int keep_alive;
        bool radar_detect = false;
 
+       /*
+        * Regardless of power management state the driver must set
+        * keep alive period. FW will use it for sending keep alive NDPs
+        * immediately after association.
+        */
+       cmd->keep_alive_seconds = POWER_KEEP_ALIVE_PERIOD_SEC;
+
        if ((iwlmvm_mod_params.power_scheme == IWL_POWER_SCHEME_CAM) ||
            !iwlwifi_mod_params.power_save)
                return;
        /* Check that keep alive period is at least 3 * DTIM */
        dtimper_msec = dtimper * vif->bss_conf.beacon_int;
        keep_alive = max_t(int, 3 * dtimper_msec,
-                          MSEC_PER_SEC * POWER_KEEP_ALIVE_PERIOD_SEC);
+                          MSEC_PER_SEC * cmd->keep_alive_seconds);
        keep_alive = DIV_ROUND_UP(keep_alive, MSEC_PER_SEC);
-
        cmd->keep_alive_seconds = keep_alive;
 
        if (iwlmvm_mod_params.power_scheme == IWL_POWER_SCHEME_LP) {