__le32 timer_period;
        __le32 flags;
 } __packed; /* TX_REDUCED_POWER_API_S_VER_7 */
+
+/**
+ * struct iwl_dev_tx_power_cmd_v8 - TX power reduction command version 8
+ * @per_chain: per chain restrictions
+ * @enable_ack_reduction: enable or disable close range ack TX power
+ *     reduction.
+ * @per_chain_restriction_changed: is per_chain_restriction has changed
+ *     from last command. used if set_mode is
+ *     IWL_TX_POWER_MODE_SET_SAR_TIMER.
+ *     note: if not changed, the command is used for keep alive only.
+ * @reserved: reserved (padding)
+ * @timer_period: timer in milliseconds. if expires FW will change to default
+ *     BIOS values. relevant if setMode is IWL_TX_POWER_MODE_SET_SAR_TIMER
+ * @flags: reduce power flags.
+ * @tpc_vlp_backoff_level: user backoff of UNII5,7 VLP channels in USA.
+ *     Not in use.
+ */
+struct iwl_dev_tx_power_cmd_v8 {
+       __le16 per_chain[IWL_NUM_CHAIN_TABLES_V2][IWL_NUM_CHAIN_LIMITS][IWL_NUM_SUB_BANDS_V2];
+       u8 enable_ack_reduction;
+       u8 per_chain_restriction_changed;
+       u8 reserved[2];
+       __le32 timer_period;
+       __le32 flags;
+       __le32 tpc_vlp_backoff_level;
+} __packed; /* TX_REDUCED_POWER_API_S_VER_8 */
+
 /**
  * struct iwl_dev_tx_power_cmd - TX power reduction command (multiversion)
  * @common: common part of the command
  * @v4: version 4 part of the command
  * @v5: version 5 part of the command
  * @v6: version 6 part of the command
+ * @v7: version 7 part of the command
+ * @v8: version 8 part of the command
  */
 struct iwl_dev_tx_power_cmd {
        struct iwl_dev_tx_power_common common;
                struct iwl_dev_tx_power_cmd_v5 v5;
                struct iwl_dev_tx_power_cmd_v6 v6;
                struct iwl_dev_tx_power_cmd_v7 v7;
+               struct iwl_dev_tx_power_cmd_v8 v8;
        };
 };
 
 
        u32 n_subbands;
        u8 cmd_ver = iwl_fw_lookup_cmd_ver(mvm->fw, cmd_id,
                                           IWL_FW_CMD_VER_UNKNOWN);
-       if (cmd_ver == 7) {
+       if (cmd_ver >= 7) {
                len = sizeof(cmd.v7);
                n_subbands = IWL_NUM_SUB_BANDS_V2;
                per_chain = cmd.v7.per_chain[0][0];
                cmd.v7.flags = cpu_to_le32(mvm->fwrt.reduced_power_flags);
+               if (cmd_ver == 8)
+                       len = sizeof(cmd.v8);
        } else if (cmd_ver == 6) {
                len = sizeof(cmd.v6);
                n_subbands = IWL_NUM_SUB_BANDS_V2;