NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
telem_template_ctxt.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2024 NVIDIA CORPORATION AND AFFILIATES. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without modification, are permitted
5  * provided that the following conditions are met:
6  * * Redistributions of source code must retain the above copyright notice, this list of
7  * conditions and the following disclaimer.
8  * * Redistributions in binary form must reproduce the above copyright notice, this list of
9  * conditions and the following disclaimer in the documentation and/or other materials
10  * provided with the distribution.
11  * * Neither the name of the NVIDIA CORPORATION nor the names of its contributors may be used
12  * to endorse or promote products derived from this software without specific prior written
13  * permission.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
16  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
17  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE
18  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
19  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
20  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
21  * STRICT LIABILITY, OR TOR (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23  *
24  */
25 
26 #ifndef TELEM_TEMPLATE_CTXT_H_
27 #define TELEM_TEMPLATE_CTXT_H_
28 
29 /* context filled by hardware and stored at the end */
30 typedef struct {
31  uint8_t was_nack : 1; /* Signal the reception of a NACK */
32  uint8_t was_cnp : 1; /* Signal the reception of a CNP */
33  uint8_t rtt_req_to_rtt_sent : 3; /* Set between the algorithm's RTT request until the time at which the RTT
34  packet was sent */
35  uint8_t reserved : 3; /* Reserved bits */
37 
38 /* switch telemetry context */
39 typedef struct {
40  uint32_t cur_rate; /* Current rate */
41  uint32_t last_tx_bytes; /* Last switch TX bytes */
42  uint32_t last_switch_tx_timestamp; /* Last switch TX timestamp */
43  telem_template_flags_t flags; /* Flags struct */
44  uint8_t abort_cnt; /* Counter of abort RTT requests */
45  uint8_t rtt_meas_psn; /* RTT request sequence number */
46  uint8_t reserved0; /* Reserved bits */
47  uint32_t start_delay; /* The time at which the RTT packet was sent by the NIC's Tx pipe */
48  uint32_t reserved[7]; /* Reserved bits */
50 
51 /* Switch telemetry format */
52 typedef union {
53  uint32_t _value; /* Value */
54  struct {
55  uint16_t qlen; /* Queue length in cells of 256B */
56  uint8_t index; /* switch index */
57  uint8_t reserved : 5; /* Reserved bits */
58  uint8_t valid : 1; /* Valid flag */
59  uint8_t port_type : 2; /* port type 0 - 25Gbps, 1 - 100Gbps */
60  };
62 
63 #endif /* TELEM_TEMPLATE_CTXT_H_ */
unsigned char reserved[12]
telem_template_flags_t flags