NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
doca_telemetry_diag.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES, ALL RIGHTS RESERVED.
3  *
4  * This software product is a proprietary product of NVIDIA CORPORATION &
5  * AFFILIATES (the "Company") and all right, title, and interest in and to the
6  * software product, including all associated intellectual property rights, are
7  * and shall remain exclusively with the Company.
8  *
9  * This software product is governed by the End User License Agreement
10  * provided with the software product.
11  *
12  */
13 
22 #ifndef DOCA_TELEMETRY_DIAG_H_
23 #define DOCA_TELEMETRY_DIAG_H_
24 
25 #include <doca_error.h>
26 #include <doca_types.h>
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 /**********************************************************************************************************************
33  * DOCA core opaque types
34  *********************************************************************************************************************/
35 struct doca_dev;
36 struct doca_devinfo;
37 
38 /*********************************************************************************************************************
39  * DOCA Telemetry Diagnostics Context
40  *********************************************************************************************************************/
41 
45 struct doca_telemetry_diag;
46 
54 };
55 
64 };
65 
72 };
73 
84 };
85 
90  uint64_t data_id;
91  uint32_t timestamp_h;
93  uint32_t timestamp_l;
94  uint64_t data_value;
96 
103  uint32_t sample_id;
104  uint32_t reserved;
107 
114  uint32_t sample_id;
123  uint64_t data_value[];
127 
134  uint32_t sample_id;
143  uint32_t data_value[];
147 
164 doca_error_t doca_telemetry_diag_cap_is_supported(const struct doca_devinfo *devinfo);
165 
183  uint32_t *max_num_data_ids);
184 
202  uint8_t *log_max_num_samples);
203 
220 doca_error_t doca_telemetry_diag_cap_is_data_clear_supported(const struct doca_devinfo *devinfo, uint8_t *data_clear);
221 
238 doca_error_t doca_telemetry_diag_cap_is_sync_start_supported(const struct doca_devinfo *devinfo, uint8_t *sync_start);
239 
259  enum doca_telemetry_diag_sample_mode sample_mode,
260  uint8_t *sample_mode_supported);
261 
281  const struct doca_devinfo *devinfo,
282  enum doca_telemetry_diag_timestamp_source data_timestamp_source,
283  uint8_t *timestamp_source_supported);
284 
310  uint8_t force_ownership,
311  struct doca_telemetry_diag **diag);
312 
326 doca_error_t doca_telemetry_diag_destroy(struct doca_telemetry_diag *diag);
327 
340 doca_error_t doca_telemetry_diag_apply_config(struct doca_telemetry_diag *diag);
341 
355 doca_error_t doca_telemetry_diag_start(struct doca_telemetry_diag *diag);
356 
376 doca_error_t doca_telemetry_diag_restart(struct doca_telemetry_diag *diag);
377 
392 doca_error_t doca_telemetry_diag_stop(struct doca_telemetry_diag *diag);
393 
409 doca_error_t doca_telemetry_diag_set_output_format(struct doca_telemetry_diag *diag,
410  enum doca_telemetry_diag_output_format output_format);
411 
426 doca_error_t doca_telemetry_diag_get_output_format(struct doca_telemetry_diag *diag,
427  enum doca_telemetry_diag_output_format *output_format);
428 
444 doca_error_t doca_telemetry_diag_set_sample_period(struct doca_telemetry_diag *diag, uint64_t sample_period);
445 
460 doca_error_t doca_telemetry_diag_get_sample_period(struct doca_telemetry_diag *diag, uint64_t *sample_period);
461 
478 doca_error_t doca_telemetry_diag_set_log_max_num_samples(struct doca_telemetry_diag *diag, uint8_t log_max_num_samples);
479 
495  uint8_t *log_max_num_samples);
496 
512 doca_error_t doca_telemetry_diag_set_max_num_data_ids(struct doca_telemetry_diag *diag, uint32_t max_num_data_ids);
513 
528 doca_error_t doca_telemetry_diag_get_max_num_data_ids(struct doca_telemetry_diag *diag, uint32_t *max_num_data_ids);
529 
546 doca_error_t doca_telemetry_diag_set_sync_mode(struct doca_telemetry_diag *diag,
547  enum doca_telemetry_diag_sync_mode sync_mode);
548 
563 doca_error_t doca_telemetry_diag_get_sync_mode(struct doca_telemetry_diag *diag,
564  enum doca_telemetry_diag_sync_mode *sync_mode);
565 
582 doca_error_t doca_telemetry_diag_set_sample_mode(struct doca_telemetry_diag *diag,
583  enum doca_telemetry_diag_sample_mode sample_mode);
584 
599 doca_error_t doca_telemetry_diag_get_sample_mode(struct doca_telemetry_diag *diag,
600  enum doca_telemetry_diag_sample_mode *sample_mode);
601 
618 doca_error_t doca_telemetry_diag_set_data_clear(struct doca_telemetry_diag *diag, uint8_t data_clear);
619 
634 doca_error_t doca_telemetry_diag_get_data_clear(struct doca_telemetry_diag *diag, uint8_t *data_clear);
635 
653  struct doca_telemetry_diag *diag,
654  enum doca_telemetry_diag_timestamp_source data_timestamp_source);
655 
671  struct doca_telemetry_diag *diag,
672  enum doca_telemetry_diag_timestamp_source *data_timestamp_source);
673 
697 doca_error_t doca_telemetry_diag_check_data_id(struct doca_telemetry_diag *diag, uint64_t data_id);
698 
727  const uint64_t *data_ids,
728  uint32_t num_data_ids,
729  uint64_t *counter_id_failure);
730 
747  uint32_t *num_applied_counters);
748 
770  uint32_t num_data_ids,
771  uint64_t *data_ids);
772 
786 doca_error_t doca_telemetry_diag_get_sample_size(struct doca_telemetry_diag *diag, uint32_t *sample_size);
787 
806 doca_error_t doca_telemetry_diag_query_counters(struct doca_telemetry_diag *diag,
807  void *buf,
808  uint32_t max_samples_to_read,
809  uint32_t *num_valid_samples);
810 
811 #ifdef __cplusplus
812 } /* extern "C" */
813 #endif
814 
815 #endif /* DOCA_TELEMETRY_DIAG_H_ */
816 
#define DOCA_EXPERIMENTAL
To set a Symbol (or specifically a function) as experimental.
Definition: doca_compat.h:103
enum doca_error doca_error_t
DOCA API return codes.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_get_data_timestamp_source(struct doca_telemetry_diag *diag, enum doca_telemetry_diag_timestamp_source *data_timestamp_source)
Get data timestamp source.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_destroy(struct doca_telemetry_diag *diag)
Destroy doca_telemetry_diag previously created by doca_telemetry_diag_create().
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_get_log_max_num_samples(struct doca_telemetry_diag *diag, uint8_t *log_max_num_samples)
Get log max of samples.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_get_num_applied_counters(struct doca_telemetry_diag *diag, uint32_t *num_applied_counters)
Get number of currently applied counters.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_create(struct doca_dev *dev, uint8_t force_ownership, struct doca_telemetry_diag **diag)
Create a DOCA Telemetry Diagnostics instance.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_apply_config(struct doca_telemetry_diag *diag)
Apply device configuration.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_get_max_num_data_ids(struct doca_telemetry_diag *diag, uint32_t *max_num_data_ids)
Get max num of data IDs.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_cap_is_data_timestamp_source_supported(const struct doca_devinfo *devinfo, enum doca_telemetry_diag_timestamp_source data_timestamp_source, uint8_t *timestamp_source_supported)
Check if given device supports a given data timestamp source.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_get_data_clear(struct doca_telemetry_diag *diag, uint8_t *data_clear)
Get data clear.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_stop(struct doca_telemetry_diag *diag)
Stop device sampling.
struct doca_telemetry_diag_data_sample_format_0 doca_telemetry_diag_data_sample_format_0
Output format 0 struct.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_cap_get_log_max_num_samples(const struct doca_devinfo *devinfo, uint8_t *log_max_num_samples)
Get the maximal num (in log base 2) of samples that is supported by a given device.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_get_sample_period(struct doca_telemetry_diag *diag, uint64_t *sample_period)
Get sample period.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_get_sample_size(struct doca_telemetry_diag *diag, uint32_t *sample_size)
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_get_sync_mode(struct doca_telemetry_diag *diag, enum doca_telemetry_diag_sync_mode *sync_mode)
Get synchronization mode.
struct doca_telemetry_diag_data_sample_format_0_value doca_telemetry_diag_data_sample_format_0_value
Output format 0 per-ID struct.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_set_sample_period(struct doca_telemetry_diag *diag, uint64_t sample_period)
Set sample period.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_set_data_clear(struct doca_telemetry_diag *diag, uint8_t data_clear)
Set data clear.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_cap_is_supported(const struct doca_devinfo *devinfo)
Check if given device is capable of executing telemetry diagnostics operations.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_set_data_timestamp_source(struct doca_telemetry_diag *diag, enum doca_telemetry_diag_timestamp_source data_timestamp_source)
Set data timestamp source.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_get_sample_mode(struct doca_telemetry_diag *diag, enum doca_telemetry_diag_sample_mode *sample_mode)
Get Sampling mode.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_get_applied_counters_list_by_id(struct doca_telemetry_diag *diag, uint32_t num_data_ids, uint64_t *data_ids)
Get list of currently applied counters, by their ID.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_restart(struct doca_telemetry_diag *diag)
Restart device sampling - trigger device to collect new metrics.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_get_output_format(struct doca_telemetry_diag *diag, enum doca_telemetry_diag_output_format *output_format)
Get output format.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_start(struct doca_telemetry_diag *diag)
Start device sampling - trigger device to collect metrics.
doca_telemetry_diag_timestamp_source
description of the timestamp source of the sample
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_cap_get_max_num_data_ids(const struct doca_devinfo *devinfo, uint32_t *max_num_data_ids)
Get the maximal num of data IDs that is supported by a given device.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_cap_is_sync_start_supported(const struct doca_devinfo *devinfo, uint8_t *sync_start)
Check if given device supports sync start.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_cap_is_sample_mode_supported(const struct doca_devinfo *devinfo, enum doca_telemetry_diag_sample_mode sample_mode, uint8_t *sample_mode_supported)
Check if given device supports a given sample mode.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_set_max_num_data_ids(struct doca_telemetry_diag *diag, uint32_t max_num_data_ids)
Set max num of data IDs.
doca_telemetry_diag_sample_mode
description of data sampling mode
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_apply_counters_list_by_id(struct doca_telemetry_diag *diag, const uint64_t *data_ids, uint32_t num_data_ids, uint64_t *counter_id_failure)
Apply the counters, by their data ID, to be queried.
struct doca_telemetry_diag_data_sample_format_1 doca_telemetry_diag_data_sample_format_1
Output format 1 struct.
doca_telemetry_diag_sync_mode
Synchronization mode of data sampling.
struct doca_telemetry_diag_data_sample_format_2 doca_telemetry_diag_data_sample_format_2
Output format 2 struct.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_query_counters(struct doca_telemetry_diag *diag, void *buf, uint32_t max_samples_to_read, uint32_t *num_valid_samples)
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_set_log_max_num_samples(struct doca_telemetry_diag *diag, uint8_t log_max_num_samples)
Set log max of samples.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_cap_is_data_clear_supported(const struct doca_devinfo *devinfo, uint8_t *data_clear)
Check if given device supports data clear.
doca_telemetry_diag_output_format
Defines the layout of the diagnostic data output:
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_set_sync_mode(struct doca_telemetry_diag *diag, enum doca_telemetry_diag_sync_mode sync_mode)
Set synchronization mode.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_set_output_format(struct doca_telemetry_diag *diag, enum doca_telemetry_diag_output_format output_format)
Set output format.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_check_data_id(struct doca_telemetry_diag *diag, uint64_t data_id)
Check if a counter is supported in current configuration, by it's data ID.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_diag_set_sample_mode(struct doca_telemetry_diag *diag, enum doca_telemetry_diag_sample_mode sample_mode)
Set sampling mode.
@ DOCA_TELEMETRY_DIAG_TIMESTAMP_SOURCE_FRC
@ DOCA_TELEMETRY_DIAG_TIMESTAMP_SOURCE_RTC
@ DOCA_TELEMETRY_DIAG_SAMPLE_MODE_ON_DEMAND
@ DOCA_TELEMETRY_DIAG_SAMPLE_MODE_SINGLE
@ DOCA_TELEMETRY_DIAG_SAMPLE_MODE_REPETITIVE
@ DOCA_TELEMETRY_DIAG_SYNC_MODE_SYNC_START
@ DOCA_TELEMETRY_DIAG_SYNC_MODE_NO_SYNC
@ DOCA_TELEMETRY_DIAG_OUTPUT_FORMAT_2
@ DOCA_TELEMETRY_DIAG_OUTPUT_FORMAT_0
@ DOCA_TELEMETRY_DIAG_OUTPUT_FORMAT_1
doca_telemetry_diag_data_sample_format_0_value value[]