NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
np_switch_telemetry_dev_main.c File Reference
#include <doca_pcc_np_dev.h>
#include "pcc_common_dev.h"
Include dependency graph for np_switch_telemetry_dev_main.c:

Go to the source code of this file.

Data Structures

struct  telemetry_db_entry_t
 
struct  ifa2_md_hdr
 
struct  switch_md
 
struct  int_response
 

Macros

#define TELEMETRY_DB_LOG_MAX_DEVICES   (10)
 
#define TELEMETRY_DB_LOG_MAX_PORTS_PER_DEVICE   (5)
 
#define TELEMETRY_DB_LOG_SIZE   (TELEMETRY_DB_LOG_MAX_DEVICES + TELEMETRY_DB_LOG_MAX_PORTS_PER_DEVICE)
 
#define TELEMETRY_DB_MASK   ((1UL << TELEMETRY_DB_LOG_SIZE) - 1UL)
 
#define TELEMETRY_DB_SIZE   (1UL << TELEMETRY_DB_LOG_SIZE)
 
#define DB_ENTRY_AGING_TIME   (5000000)
 
#define INVALID_MD_TIME_INTERVAL   (2000000000)
 

Functions

struct telemetry_db_entry_t __attribute__ ((aligned(32)))
 
static uint8_t get_md_num_from_md_hdr (struct ifa2_md_hdr *md_hdr)
 
static uint16_t telemetry_db_hash (uint32_t device_id, uint16_t port)
 
static uint32_t telemetry_get_tx_ts_nano (struct switch_md *md)
 
static uint32_t telemetry_get_tx_bytes (struct switch_md *md)
 
static uint32_t telemetry_get_q_len (struct switch_md *md)
 
static int telemetry_process_md (struct switch_md *md, struct int_response *response_pkt)
 
doca_pcc_dev_error_t doca_pcc_dev_np_user_packet_handler (struct doca_pcc_np_dev_request_packet *in, struct doca_pcc_np_dev_response_packet *out)
 Main user function (implemented by the user) Called by the lib upon receiving a packet. The user: More...
 
doca_pcc_dev_error_t doca_pcc_dev_user_mailbox_handle (void *request, uint32_t request_size, uint32_t max_response_size, void *response, uint32_t *response_size)
 User callback to process a request from host to device. More...
 

Variables

uint8_t max_hop_limit
 
uint32_t mailbox_done = 0
 
uint32_t tx_bytes0
 
uint32_t tx_ts_nano0
 
uint32_t tx_bytes1
 
uint32_t tx_ts_nano1
 
uint32_t valid
 
uint32_t last_access_ts
 
uint32_t rsvd0
 
uint32_t rsvd1
 
struct telemetry_db_entry_t telemetry_db [TELEMETRY_DB_SIZE]
 
struct ifa2_md_hdr __attribute__
 

Macro Definition Documentation

◆ DB_ENTRY_AGING_TIME

#define DB_ENTRY_AGING_TIME   (5000000)

Time interval in nanoseconds to filter out metadata that arrived earlier but were processed later due to multithread

Definition at line 42 of file np_switch_telemetry_dev_main.c.

◆ INVALID_MD_TIME_INTERVAL

#define INVALID_MD_TIME_INTERVAL   (2000000000)

Maximum hop limit value for IFA2 header

Definition at line 45 of file np_switch_telemetry_dev_main.c.

◆ TELEMETRY_DB_LOG_MAX_DEVICES

#define TELEMETRY_DB_LOG_MAX_DEVICES   (10)

< Log number of supported switch devices Log number of supported ports per switch device

Definition at line 31 of file np_switch_telemetry_dev_main.c.

◆ TELEMETRY_DB_LOG_MAX_PORTS_PER_DEVICE

#define TELEMETRY_DB_LOG_MAX_PORTS_PER_DEVICE   (5)

Log size of telemetry database

Definition at line 33 of file np_switch_telemetry_dev_main.c.

◆ TELEMETRY_DB_LOG_SIZE

Telemetry database mask

Definition at line 35 of file np_switch_telemetry_dev_main.c.

◆ TELEMETRY_DB_MASK

#define TELEMETRY_DB_MASK   ((1UL << TELEMETRY_DB_LOG_SIZE) - 1UL)

Telemetry database size

Definition at line 37 of file np_switch_telemetry_dev_main.c.

◆ TELEMETRY_DB_SIZE

#define TELEMETRY_DB_SIZE   (1UL << TELEMETRY_DB_LOG_SIZE)

Time in microseconds for aged packet

Definition at line 39 of file np_switch_telemetry_dev_main.c.

Function Documentation

◆ __attribute__()

struct telemetry_db_entry_t __attribute__ ( (aligned(32))  )

Database for storing telemetry metadata for each port and switch

◆ get_md_num_from_md_hdr()

static uint8_t get_md_num_from_md_hdr ( struct ifa2_md_hdr md_hdr)
inlinestatic

Definition at line 123 of file np_switch_telemetry_dev_main.c.

◆ telemetry_db_hash()

static uint16_t telemetry_db_hash ( uint32_t  device_id,
uint16_t  port 
)
inlinestatic

Definition at line 136 of file np_switch_telemetry_dev_main.c.

◆ telemetry_get_q_len()

static uint32_t telemetry_get_q_len ( struct switch_md md)
inlinestatic

Definition at line 172 of file np_switch_telemetry_dev_main.c.

◆ telemetry_get_tx_bytes()

static uint32_t telemetry_get_tx_bytes ( struct switch_md md)
inlinestatic

Definition at line 160 of file np_switch_telemetry_dev_main.c.

◆ telemetry_get_tx_ts_nano()

static uint32_t telemetry_get_tx_ts_nano ( struct switch_md md)
inlinestatic

Definition at line 148 of file np_switch_telemetry_dev_main.c.

◆ telemetry_process_md()

static int telemetry_process_md ( struct switch_md md,
struct int_response response_pkt 
)
inlinestatic

Definition at line 192 of file np_switch_telemetry_dev_main.c.

Variable Documentation

◆ __attribute__

struct ifa2_md_hdr __attribute__

Switch metadata

◆ last_access_ts

uint32_t last_access_ts

Definition at line 5 of file np_switch_telemetry_dev_main.c.

◆ mailbox_done

uint32_t mailbox_done = 0

Definition at line 48 of file np_switch_telemetry_dev_main.c.

◆ max_hop_limit

uint8_t max_hop_limit

Flag to indicate that the mailbox operation has completed

Definition at line 46 of file np_switch_telemetry_dev_main.c.

◆ rsvd0

uint32_t rsvd0

Definition at line 6 of file np_switch_telemetry_dev_main.c.

◆ rsvd1

uint32_t rsvd1

Definition at line 7 of file np_switch_telemetry_dev_main.c.

◆ telemetry_db

IFA2 metadata header

Definition at line 48 of file np_switch_telemetry_dev_main.c.

◆ tx_bytes0

uint32_t tx_bytes0

Definition at line 0 of file np_switch_telemetry_dev_main.c.

◆ tx_bytes1

uint32_t tx_bytes1

Definition at line 2 of file np_switch_telemetry_dev_main.c.

◆ tx_ts_nano0

uint32_t tx_ts_nano0

Definition at line 1 of file np_switch_telemetry_dev_main.c.

◆ tx_ts_nano1

uint32_t tx_ts_nano1

Definition at line 3 of file np_switch_telemetry_dev_main.c.

◆ valid

uint32_t valid

Definition at line 4 of file np_switch_telemetry_dev_main.c.