<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div class="elementToProof" style="font-family: "IntelOne Text"; font-size: 10pt; color: rgb(0, 0, 0);">
Acked-by: Kai Ji <kai.ji@intel.com></div>
<div class="elementToProof" style="font-family: "IntelOne Text"; font-size: 10pt; color: rgb(0, 0, 0);">
<br>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Nicolau, Radu <radu.nicolau@intel.com><br>
<b>Sent:</b> 10 November 2026 15:15<br>
<b>To:</b> dev@dpdk.org <dev@dpdk.org><br>
<b>Cc:</b> Nicolau, Radu <radu.nicolau@intel.com>; Ji, Kai <kai.ji@intel.com>; Fan Zhang <fanzhang.oss@gmail.com>; Ashish Gupta <ashishg@marvell.com><br>
<b>Subject:</b> [PATCH] compress/qat: add Gen 6 support</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Add support for Gen 6 QAT compression devices.<br>
<br>
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com><br>
---<br>
doc/guides/compressdevs/qat_comp.rst | 1 +<br>
doc/guides/cryptodevs/qat.rst | 2 +-<br>
doc/guides/rel_notes/release_26_11.rst | 4 +<br>
drivers/common/qat/meson.build | 1 +<br>
drivers/common/qat/qat_adf/icp_qat_fw_comp.h | 5 +<br>
drivers/compress/qat/dev/qat_comp_pmd_gen6.c | 135 +++++++++++++++++++<br>
drivers/compress/qat/dev/qat_comp_pmd_gens.h | 8 ++<br>
drivers/compress/qat/qat_comp.c | 21 ++-<br>
8 files changed, 175 insertions(+), 2 deletions(-)<br>
create mode 100644 drivers/compress/qat/dev/qat_comp_pmd_gen6.c<br>
<br>
diff --git a/doc/guides/compressdevs/qat_comp.rst b/doc/guides/compressdevs/qat_comp.rst<br>
index 78b1ad9c23..7c6c8e1074 100644<br>
--- a/doc/guides/compressdevs/qat_comp.rst<br>
+++ b/doc/guides/compressdevs/qat_comp.rst<br>
@@ -15,6 +15,7 @@ support for the following hardware accelerator devices:<br>
* ``Intel QuickAssist Technology C3xxx``<br>
* ``Intel QuickAssist Technology DH895x``<br>
* ``Intel QuickAssist Technology 300xx``<br>
+* ``Intel QuickAssist Technology 6xxx``<br>
<br>
<br>
Features<br>
diff --git a/doc/guides/cryptodevs/qat.rst b/doc/guides/cryptodevs/qat.rst<br>
index 27713913ae..8c118b3c5f 100644<br>
--- a/doc/guides/cryptodevs/qat.rst<br>
+++ b/doc/guides/cryptodevs/qat.rst<br>
@@ -486,7 +486,7 @@ to see the full table)<br>
+-----+-----+-----+-----+----------+---------------+---------------+------------+--------+------+--------+--------+<br>
| Yes | Yes | Yes | 5 | 420xx | linux/6.8+ | qat_420xx | 420xx | 4946 | 2 | 4947 | 16 |<br>
+-----+-----+-----+-----+----------+---------------+---------------+------------+--------+------+--------+--------+<br>
- | Yes | Yes | No | 6 | 6xxx | linux/6.16+ | qat_6xxx | 6xxx | 4948 | 1 | 4949 | 16 |<br>
+ | Yes | Yes | Yes | 6 | 6xxx | linux/6.16+ | qat_6xxx | 6xxx | 4948 | 1 | 4949 | 16 |<br>
+-----+-----+-----+-----+----------+---------------+---------------+------------+--------+------+--------+--------+<br>
<br>
* Note: Symmetric mixed crypto algorithms feature on Gen 2 works only with IDZ driver version 4.9.0+<br>
diff --git a/doc/guides/rel_notes/release_26_11.rst b/doc/guides/rel_notes/release_26_11.rst<br>
index fdcf155e07..81971ee38a 100644<br>
--- a/doc/guides/rel_notes/release_26_11.rst<br>
+++ b/doc/guides/rel_notes/release_26_11.rst<br>
@@ -59,6 +59,10 @@ New Features<br>
<br>
* Added support for Gen 6 QAT devices.<br>
<br>
+* **Updated Intel QuickAssist Technology (QAT) compression driver.**<br>
+<br>
+ * Added support for Gen 6 QAT devices.<br>
+<br>
<br>
Removed Items<br>
-------------<br>
diff --git a/drivers/common/qat/meson.build b/drivers/common/qat/meson.build<br>
index db792864a2..c7ad535c69 100644<br>
--- a/drivers/common/qat/meson.build<br>
+++ b/drivers/common/qat/meson.build<br>
@@ -123,6 +123,7 @@ if qat_compress<br>
'dev/qat_comp_pmd_gen3.c',<br>
'dev/qat_comp_pmd_gen4.c',<br>
'dev/qat_comp_pmd_gen5.c',<br>
+ 'dev/qat_comp_pmd_gen6.c',<br>
]<br>
sources += files(join_paths(qat_compress_relpath, f))<br>
endforeach<br>
diff --git a/drivers/common/qat/qat_adf/icp_qat_fw_comp.h b/drivers/common/qat/qat_adf/icp_qat_fw_comp.h<br>
index da45cb8f7d..625fdc055f 100644<br>
--- a/drivers/common/qat/qat_adf/icp_qat_fw_comp.h<br>
+++ b/drivers/common/qat/qat_adf/icp_qat_fw_comp.h<br>
@@ -20,6 +20,11 @@ enum icp_qat_fw_comp_cmd_id {<br>
/**< Delimiter type */<br>
};<br>
<br>
+enum icp_qat_fw_comp_cmd_id_gen6 {<br>
+ ICP_QAT_GEN6_FW_COMP_CMD_DEFLATE_COMP = 1,<br>
+ ICP_QAT_GEN6_FW_COMP_CMD_DEFLATE_DECOMP = 2,<br>
+};<br>
+<br>
/**< Flag usage */<br>
<br>
#define ICP_QAT_FW_COMP_STATELESS_SESSION 0<br>
diff --git a/drivers/compress/qat/dev/qat_comp_pmd_gen6.c b/drivers/compress/qat/dev/qat_comp_pmd_gen6.c<br>
new file mode 100644<br>
index 0000000000..40be10b1ea<br>
--- /dev/null<br>
+++ b/drivers/compress/qat/dev/qat_comp_pmd_gen6.c<br>
@@ -0,0 +1,135 @@<br>
+/* SPDX-License-Identifier: BSD-3-Clause<br>
+ * Copyright(c) 2026 Intel Corporation<br>
+ */<br>
+<br>
+#include <rte_memzone.h><br>
+<br>
+#include "qat_logs.h"<br>
+#include "qat_comp.h"<br>
+#include "qat_comp_pmd.h"<br>
+#include "qat_comp_pmd_gens.h"<br>
+#include "icp_qat_hw_gen4_comp.h"<br>
+<br>
+static const struct rte_compressdev_capabilities<br>
+qat_gen6_comp_capabilities[] = {<br>
+ {/* COMPRESSION - deflate */<br>
+ .algo = RTE_COMP_ALGO_DEFLATE,<br>
+ .comp_feature_flags = RTE_COMP_FF_MULTI_PKT_CHECKSUM |<br>
+ RTE_COMP_FF_CRC32_CHECKSUM |<br>
+ RTE_COMP_FF_ADLER32_CHECKSUM |<br>
+ RTE_COMP_FF_CRC32_ADLER32_CHECKSUM |<br>
+ RTE_COMP_FF_SHAREABLE_PRIV_XFORM |<br>
+ RTE_COMP_FF_HUFFMAN_DYNAMIC |<br>
+ RTE_COMP_FF_HUFFMAN_FIXED |<br>
+ RTE_COMP_FF_OOP_SGL_IN_SGL_OUT |<br>
+ RTE_COMP_FF_OOP_SGL_IN_LB_OUT |<br>
+ RTE_COMP_FF_OOP_LB_IN_SGL_OUT,<br>
+ .window_size = {.min = 15, .max = 15, .increment = 0} },<br>
+ RTE_COMP_END_OF_CAPABILITIES_LIST() };<br>
+<br>
+static struct rte_compressdev_ops qat_comp_ops_gen6 = {<br>
+<br>
+ /* Device related operations */<br>
+ .dev_configure = qat_comp_dev_config_gen4,<br>
+ .dev_start = qat_comp_dev_start,<br>
+ .dev_stop = qat_comp_dev_stop,<br>
+ .dev_close = qat_comp_dev_close,<br>
+ .dev_infos_get = qat_comp_dev_info_get,<br>
+<br>
+ .stats_get = qat_comp_stats_get,<br>
+ .stats_reset = qat_comp_stats_reset,<br>
+ .queue_pair_setup = qat_comp_qp_setup,<br>
+ .queue_pair_release = qat_comp_qp_release,<br>
+<br>
+ /* Compression related operations */<br>
+ .private_xform_create = qat_comp_private_xform_create,<br>
+ .private_xform_free = qat_comp_private_xform_free,<br>
+ .stream_create = qat_comp_stream_create,<br>
+ .stream_free = qat_comp_stream_free<br>
+};<br>
+<br>
+/* GEN6 specific. */<br>
+int<br>
+qat_comp_create_templates_gen6(struct qat_comp_xform *qat_xform,<br>
+ __rte_unused const struct rte_memzone *interm_buff_mz,<br>
+ const struct rte_comp_xform *xform,<br>
+ __rte_unused const struct qat_comp_stream *stream,<br>
+ enum rte_comp_op_type op_type,<br>
+ enum qat_device_gen qat_dev_gen)<br>
+{<br>
+ struct icp_qat_fw_comp_req *comp_req;<br>
+ int res;<br>
+<br>
+ if (unlikely(qat_xform == NULL)) {<br>
+ QAT_LOG(ERR, "Session was not created for this device");<br>
+ return -EINVAL;<br>
+ }<br>
+<br>
+ /* Template below carries no stream state, so stateful ops would run stateless. */<br>
+ if (unlikely(op_type == RTE_COMP_OP_STATEFUL)) {<br>
+ QAT_LOG(ERR, "QAT GEN6 PMD does not support stateful operations");<br>
+ return -ENOTSUP;<br>
+ }<br>
+<br>
+ comp_req = &qat_xform->qat_comp_req_tmpl;<br>
+<br>
+ /* Initialize header */<br>
+ if (qat_xform->qat_comp_request_type == QAT_COMP_REQUEST_FIXED_COMP_STATELESS ||<br>
+ qat_xform->qat_comp_request_type == QAT_COMP_REQUEST_DYNAMIC_COMP_STATELESS)<br>
+ comp_req->comn_hdr.service_cmd_id = ICP_QAT_GEN6_FW_COMP_CMD_DEFLATE_COMP;<br>
+ else if (qat_xform->qat_comp_request_type == QAT_COMP_REQUEST_DECOMPRESS)<br>
+ comp_req->comn_hdr.service_cmd_id = ICP_QAT_GEN6_FW_COMP_CMD_DEFLATE_DECOMP;<br>
+<br>
+ comp_req->comn_hdr.service_type = ICP_QAT_FW_COMN_REQ_CPM_FW_COMP;<br>
+<br>
+ comp_req->comn_hdr.hdr_flags =<br>
+ ICP_QAT_FW_COMN_HDR_FLAGS_BUILD(ICP_QAT_FW_COMN_REQ_FLAG_SET);<br>
+<br>
+ comp_req->comn_hdr.serv_specif_flags = 0;<br>
+<br>
+ comp_req->comn_hdr.comn_req_flags = ICP_QAT_FW_COMN_FLAGS_BUILD(<br>
+ QAT_COMN_CD_FLD_TYPE_16BYTE_DATA, QAT_COMN_PTR_TYPE_FLAT);<br>
+<br>
+ res = qat_comp_gen_dev_ops[qat_dev_gen].qat_comp_set_slice_cfg_word(<br>
+ qat_xform, xform, op_type,<br>
+ comp_req->cd_pars.sl.comp_slice_cfg_word);<br>
+ if (res != 0)<br>
+ return res;<br>
+<br>
+ comp_req->comp_pars.initial_adler = 1;<br>
+ comp_req->comp_pars.initial_crc32 = 0;<br>
+ comp_req->comp_pars.req_par_flags =<br>
+ (ICP_QAT_FW_COMP_BFINAL << ICP_QAT_FW_COMP_BFINAL_BITPOS);<br>
+<br>
+#if RTE_LOG_DP_LEVEL >= RTE_LOG_DEBUG<br>
+ QAT_DP_HEXDUMP_LOG(DEBUG, "qat compression message template:", comp_req,<br>
+ sizeof(struct icp_qat_fw_comp_req));<br>
+#endif<br>
+ return 0;<br>
+}<br>
+<br>
+static struct qat_comp_capabilities_info<br>
+qat_comp_cap_get_gen6(struct qat_pci_device *qat_dev __rte_unused)<br>
+{<br>
+ struct qat_comp_capabilities_info capa_info = {<br>
+ .data = qat_gen6_comp_capabilities,<br>
+ .size = sizeof(qat_gen6_comp_capabilities)<br>
+ };<br>
+ return capa_info;<br>
+}<br>
+<br>
+RTE_INIT(qat_comp_pmd_gen6_init)<br>
+{<br>
+ qat_comp_gen_dev_ops[QAT_GEN6].compressdev_ops =<br>
+ &qat_comp_ops_gen6;<br>
+ qat_comp_gen_dev_ops[QAT_GEN6].qat_comp_get_capabilities =<br>
+ qat_comp_cap_get_gen6;<br>
+ qat_comp_gen_dev_ops[QAT_GEN6].qat_comp_get_num_im_bufs_required =<br>
+ qat_comp_get_num_im_bufs_required_gen4;<br>
+ qat_comp_gen_dev_ops[QAT_GEN6].qat_comp_get_ram_bank_flags =<br>
+ qat_comp_get_ram_bank_flags_gen4;<br>
+ qat_comp_gen_dev_ops[QAT_GEN6].qat_comp_set_slice_cfg_word =<br>
+ qat_comp_set_slice_cfg_word_gen4;<br>
+ qat_comp_gen_dev_ops[QAT_GEN6].qat_comp_get_feature_flags =<br>
+ qat_comp_get_features_gen1;<br>
+}<br>
diff --git a/drivers/compress/qat/dev/qat_comp_pmd_gens.h b/drivers/compress/qat/dev/qat_comp_pmd_gens.h<br>
index e329fe3e18..6a0b281abd 100644<br>
--- a/drivers/compress/qat/dev/qat_comp_pmd_gens.h<br>
+++ b/drivers/compress/qat/dev/qat_comp_pmd_gens.h<br>
@@ -41,4 +41,12 @@ qat_comp_dev_config_gen4(struct rte_compressdev *dev,<br>
<br>
extern struct rte_compressdev_ops qat_comp_ops_gen1;<br>
<br>
+int<br>
+qat_comp_create_templates_gen6(struct qat_comp_xform *qat_xform,<br>
+ const struct rte_memzone *interm_buff_mz,<br>
+ const struct rte_comp_xform *xform,<br>
+ const struct qat_comp_stream *stream,<br>
+ enum rte_comp_op_type op_type,<br>
+ enum qat_device_gen qat_dev_gen);<br>
+<br>
#endif /* _QAT_COMP_PMD_GENS_H_ */<br>
diff --git a/drivers/compress/qat/qat_comp.c b/drivers/compress/qat/qat_comp.c<br>
index 559948a46a..35fa513631 100644<br>
--- a/drivers/compress/qat/qat_comp.c<br>
+++ b/drivers/compress/qat/qat_comp.c<br>
@@ -18,6 +18,7 @@<br>
#include "qat_logs.h"<br>
#include "qat_comp.h"<br>
#include "qat_comp_pmd.h"<br>
+#include "dev/qat_comp_pmd_gens.h"<br>
<br>
static void<br>
qat_comp_fallback_to_fixed(struct icp_qat_fw_comp_req *comp_req)<br>
@@ -814,7 +815,7 @@ qat_comp_create_req_hdr(struct icp_qat_fw_comn_req_hdr *header,<br>
}<br>
<br>
static int<br>
-qat_comp_create_templates(struct qat_comp_xform *qat_xform,<br>
+qat_comp_create_templates_genx(struct qat_comp_xform *qat_xform,<br>
const struct rte_memzone *interm_buff_mz,<br>
const struct rte_comp_xform *xform,<br>
const struct qat_comp_stream *stream,<br>
@@ -933,6 +934,24 @@ qat_comp_create_templates(struct qat_comp_xform *qat_xform,<br>
return 0;<br>
}<br>
<br>
+static int<br>
+qat_comp_create_templates(struct qat_comp_xform *qat_xform,<br>
+ const struct rte_memzone *interm_buff_mz,<br>
+ const struct rte_comp_xform *xform,<br>
+ const struct qat_comp_stream *stream,<br>
+ enum rte_comp_op_type op_type,<br>
+ enum qat_device_gen qat_dev_gen)<br>
+{<br>
+ if (qat_dev_gen == QAT_GEN6)<br>
+ return qat_comp_create_templates_gen6(qat_xform,<br>
+ interm_buff_mz, xform, stream, op_type,<br>
+ qat_dev_gen);<br>
+<br>
+ return qat_comp_create_templates_genx(qat_xform,<br>
+ interm_buff_mz, xform, stream, op_type,<br>
+ qat_dev_gen);<br>
+}<br>
+<br>
/**<br>
* Create driver private_xform data.<br>
*<br>
-- <br>
2.52.0<br>
<br>
</div>
</span></font></div>
</body>
</html>