};
 
 enum iwl_data_path_subcmd_ids {
+       DQA_ENABLE_CMD = 0x0,
        UPDATE_MU_GROUPS_CMD = 0x1,
        TRIGGER_RX_QUEUES_NOTIF_CMD = 0x2,
        MU_GROUP_MGMT_NOTIF = 0xFE,
        __le32 status;
 };
 
+/*
+ * struct iwl_dqa_enable_cmd
+ * @cmd_queue: the TXQ number of the command queue
+ */
+struct iwl_dqa_enable_cmd {
+       __le32 cmd_queue;
+} __packed; /* DQA_CONTROL_CMD_API_S_VER_1 */
+
 /*
  * struct iwl_tx_ant_cfg_cmd
  * @valid: valid antenna configuration
 
        return iwl_mvm_send_cmd_pdu(mvm, RSS_CONFIG_CMD, 0, sizeof(cmd), &cmd);
 }
 
+static int iwl_mvm_send_dqa_cmd(struct iwl_mvm *mvm)
+{
+       struct iwl_dqa_enable_cmd dqa_cmd = {
+               .cmd_queue = cpu_to_le32(IWL_MVM_DQA_CMD_QUEUE),
+       };
+       u32 cmd_id = iwl_cmd_id(DQA_ENABLE_CMD, DATA_PATH_GROUP, 0);
+       int ret;
+
+       ret = iwl_mvm_send_cmd_pdu(mvm, cmd_id, 0, sizeof(dqa_cmd), &dqa_cmd);
+       if (ret)
+               IWL_ERR(mvm, "Failed to send DQA enabling command: %d\n", ret);
+       else
+               IWL_DEBUG_FW(mvm, "Working in DQA mode\n");
+
+       return ret;
+}
+
 void iwl_free_fw_paging(struct iwl_mvm *mvm)
 {
        int i;
        /* reset quota debouncing buffer - 0xff will yield invalid data */
        memset(&mvm->last_quota_cmd, 0xff, sizeof(mvm->last_quota_cmd));
 
+       /* Enable DQA-mode if required */
+       if (iwl_mvm_is_dqa_supported(mvm)) {
+               ret = iwl_mvm_send_dqa_cmd(mvm);
+               if (ret)
+                       goto error;
+       } else {
+               IWL_DEBUG_FW(mvm, "Working in non-DQA mode\n");
+       }
+
        /* Add auxiliary station for scanning */
        ret = iwl_mvm_add_aux_sta(mvm);
        if (ret)