STRUCT ADF_GEN6_TL_DEVICE_DATA_REGS(9)
π struct adf_gen6_tl_device_data_regs(9) π
okay bestie, welcome to the Kernel API Manual β this one's a struct page and honestly it's kind of a baddie. So like, struct adf_gen6_tl_device_data_regs is the place where device telemetry counter values live, and the device just keeps dropping fresh values in there periodically. It's giving "constantly updating group chat" energy fr fr. π«Ά
β¨ SYNOPSIS β¨
no cap, here's the whole thing, character for character:
struct adf_gen6_tl_device_data_regs {
__u64 reg_tl_rd_lat_acc;
__u64 reg_tl_gp_lat_acc;
__u64 reg_tl_at_page_req_lat_acc;
__u64 reg_tl_at_trans_lat_acc;
__u64 reg_tl_re_acc;
__u32 reg_tl_prt_trans_cnt;
__u32 reg_tl_rd_lat_max;
__u32 reg_tl_rd_cmpl_cnt;
__u32 reg_tl_gp_lat_max;
__u32 reg_tl_ae_put_cnt;
__u32 reg_tl_bw_in;
__u32 reg_tl_bw_out;
__u32 reg_tl_at_page_req_cnt;
__u32 reg_tl_at_trans_lat_cnt;
__u32 reg_tl_at_max_utlb_used;
__u32 reg_tl_re_cnt;
__u32 reserved;
struct adf_gen6_tl_slice_data_regs ath_slices[MAX_ATH_SL_COUNT];
struct adf_gen6_tl_slice_data_regs cnv_slices[MAX_CNV_SL_COUNT];
struct adf_gen6_tl_slice_data_regs dcprz_slices[MAX_DCPRZ_SL_COUNT];
struct adf_gen6_tl_slice_data_regs pke_slices[MAX_PKE_SL_COUNT];
struct adf_gen6_tl_slice_data_regs ucs_slices[MAX_UCS_SL_COUNT];
struct adf_gen6_tl_slice_data_regs wat_slices[MAX_WAT_SL_COUNT];
struct adf_gen6_tl_slice_data_regs wcp_slices[MAX_WCP_SL_COUNT];
struct adf_gen6_tl_cmdq_data_regs ath_cmdq[MAX_ATH_CMDQ_COUNT];
struct adf_gen6_tl_cmdq_data_regs cnv_cmdq[MAX_CNV_CMDQ_COUNT];
struct adf_gen6_tl_cmdq_data_regs dcprz_cmdq[MAX_DCPRZ_CMDQ_COUNT];
struct adf_gen6_tl_cmdq_data_regs pke_cmdq[MAX_PKE_CMDQ_COUNT];
struct adf_gen6_tl_cmdq_data_regs ucs_cmdq[MAX_UCS_CMDQ_COUNT];
struct adf_gen6_tl_cmdq_data_regs wat_cmdq[MAX_WAT_CMDQ_COUNT];
struct adf_gen6_tl_cmdq_data_regs wcp_cmdq[MAX_WCP_CMDQ_COUNT];
};
π Members π
okay so, field by field, let's get into it π
reg_tl_rd_lat_accβ the read latency accumulator, just collecting read-latency vibes πΈreg_tl_gp_lat_accβ "get to put" latency accumulator. yes that's the actual name, iykyk β¨reg_tl_at_page_req_lat_accβ AT/DevTLB page request latency accumulator π¦reg_tl_at_trans_lat_accβ DevTLB transaction latency accumulator, stacking up those samples π«Άreg_tl_re_accβ accumulated ring empty time. rings get empty, we keep track πreg_tl_prt_trans_cntβ PCIe partial transactions, counted πreg_tl_rd_lat_maxβ the maximum logged read latency, the record-holder π₯reg_tl_rd_cmpl_cntβ read requests completed count, slay βreg_tl_gp_lat_maxβ maximum logged get to put latency, the peak πreg_tl_ae_put_cntβ Accelerator Engine put counts across all rings. all of them, periodt πreg_tl_bw_inβ PCIe write bandwidth πreg_tl_bw_outβ PCIe read bandwidth πreg_tl_at_page_req_cntβ DevTLB page requests count πreg_tl_at_trans_lat_cntβ DevTLB transaction latency samples count π§reg_tl_at_max_utlb_usedβ maximum uTLB used, the high score πreg_tl_re_cntβ ring empty time samples count βreservedβ reserved. it's reserved. that's it. that's the whole tea π
π¦ the slice arrays π¦
each of these is an array of utilization registers, one per slice, maxed out by their matching count macro β no invented numbers here bestie, the macros speak for themselves:
ath_slicesβ array of Authentication slices utilization registerscnv_slicesβ array of Compression slices utilization registersdcprz_slicesβ array of Decompression slices utilization registerspke_slicesβ array of PKE slices utilization registersucs_slicesβ array of UCS slices utilization registerswat_slicesβ array of Wireless Authentication slices utilization registerswcp_slicesβ array of Wireless Cipher slices utilization registers
π the cmdq arrays π
same deal but for cmdq telemetry registers:
ath_cmdqβ array of Authentication cmdq telemetry registerscnv_cmdqβ array of Compression cmdq telemetry registersdcprz_cmdqβ array of Decomopression cmdq telemetry registers (yes it's spelledDecomopressionin the original and i'm not touching it, that's a heritage typo π«Ά)pke_cmdqβ array of PKE cmdq telemetry registersucs_cmdqβ array of UCS cmdq telemetry registerswat_cmdqβ array of Wireless Authentication cmdq telemetry registerswcp_cmdqβ array of Wireless Cipher cmdq telemetry registers
π SEE ALSO π
all of these live in the kernel file ./drivers/crypto/intel/qat/qat_common/adf_gen6_tl.h β go read the whole family, they're all iconic:
struct adf_gen6_tl_slice_data_regs(9)struct adf_gen6_tl_cmdq_data_regs(9)struct adf_gen6_tl_ring_pair_data_regs(9)struct adf_gen6_tl_layout(9)
ok that's the whole page, nothing skipped, nothing invented π
and for the sign-off: this cutie comes from ./drivers/crypto/intel/qat/qat..., dated October 2026, and yeah the title up top really is struct adf_...ce_data_regs(9) β shortened by the manpage tooling, not by me. bye bestie, go read your telemetry π
β¨π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms