Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 103 additions & 10 deletions inc/saibuffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,28 @@ typedef enum _sai_ingress_priority_group_attr_t
SAI_INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE,
} sai_ingress_priority_group_attr_t;

/**
* @brief Enum defining statistics for ingress priority group.
*/
typedef enum _sai_ingress_priority_group_stat_counter_t
{
/** get/set rx packets count [uint64_t] */
SAI_INGRESS_PRIORITY_GROUP_STAT_PACKETS = 0x00000000,

/** get/set rx bytes count [uint64_t] */
SAI_INGRESS_PRIORITY_GROUP_STAT_BYTES = 0x00000001,

/** get current pg occupancy in bytes [uint64_t] */
SAI_INGRESS_PRIORITY_GROUP_STAT_CURR_OCCUPANCY_BYTES = 0x00000002,

/** get watermark pg occupancy in bytes [uint64_t] */
SAI_INGRESS_PRIORITY_GROUP_STAT_WATERMARK_BYTES = 0x00000003,

/** -- */
/** Custom range base value */
SAI_INGRESS_PRIORITY_GROUP_STAT_CUSTOM_RANGE_BASE = 0x10000000
} sai_ingress_priority_group_stat_counter_t;

/**
* @brief Set ingress priority group attribute
* @param[in] ingress_pg_id ingress priority group id
Expand Down Expand Up @@ -74,6 +96,40 @@ typedef sai_status_t(*sai_get_ingress_priority_group_attr_fn)(
_Inout_ sai_attribute_t *attr_list
);

/**
* @brief Get ingress priority group statistics counters.
*
* @param[in] ingress_pg_id ingress priority group id
* @param[in] counter_ids specifies the array of counter ids
* @param[in] number_of_counters number of counters in the array
* @param[out] counters array of resulting counter values.
*
* @return SAI_STATUS_SUCCESS on success
* Failure status code on error
*/
typedef sai_status_t(*sai_get_ingress_priority_group_stats_fn)(
_In_ sai_object_id_t ingress_pg_id,
_In_ const sai_ingress_priority_group_stat_counter_t *counter_ids,
_In_ uint32_t number_of_counters,
_Out_ uint64_t* counters
);

/**
* @brief Clear ingress priority group statistics counters.
*
* @param[in] ingress_pg_id ingress priority group id
* @param[in] counter_ids specifies the array of counter ids
* @param[in] number_of_counters number of counters in the array
*
* @return SAI_STATUS_SUCCESS on success
* Failure status code on error
*/
typedef sai_status_t(*sai_clear_ingress_priority_group_stats_fn)(
_In_ sai_object_id_t ingress_pg_id,
_In_ const sai_ingress_priority_group_stat_counter_t *counter_ids,
_In_ uint32_t number_of_counters
);

/**
* @brief Enum defining buffer pool types.
*/
Expand Down Expand Up @@ -126,6 +182,22 @@ typedef enum _sai_buffer_pool_attr_t

} sai_buffer_pool_attr_t;

/**
* @brief Enum defining statistics for buffer pool.
*/
typedef enum _sai_buffer_pool_stat_counter_t
{
/** get current pool occupancy in bytes [uint64_t] */
SAI_BUFFER_POOL_STAT_CURR_OCCUPANCY_BYTES = 0x00000000,

/** get watermark pool occupancy in bytes [uint64_t] */
SAI_BUFFER_POOL_STAT_WATERMARK_BYTES = 0x00000001,

/** -- */
/** Custom range base value */
SAI_BUFFER_POOL_STAT_CUSTOM_RANGE_BASE = 0x10000000
} sai_buffer_pool_stat_counter_t;

/**
* @brief Create buffer pool
* @param[out] pool_id buffer pool id
Expand Down Expand Up @@ -176,6 +248,24 @@ typedef sai_status_t(*sai_get_buffer_pool_attr_fn)(
_Inout_ sai_attribute_t *attr_list
);

/**
* @brief Get buffer pool statistics counters.
*
* @param[in] pool_id buffer pool id
* @param[in] counter_ids specifies the array of counter ids
* @param[in] number_of_counters number of counters in the array
* @param[out] counters array of resulting counter values.
*
* @return SAI_STATUS_SUCCESS on success
* Failure status code on error
*/
typedef sai_status_t(*sai_get_buffer_pool_stats_fn)(
_In_ sai_object_id_t pool_id,
_In_ const sai_buffer_pool_stat_counter_t *counter_ids,
_In_ uint32_t number_of_counters,
_Out_ uint64_t* counters
);

/**
* @brief Enum defining buffer profile attributes.
*/
Expand Down Expand Up @@ -272,16 +362,19 @@ typedef sai_status_t(*sai_get_buffer_profile_attr_fn)(
*/
typedef struct _sai_buffer_api_t
{
sai_create_buffer_pool_fn create_buffer_pool;
sai_remove_buffer_pool_fn remove_buffer_pool;
sai_set_buffer_pool_attr_fn set_buffer_pool_attr;
sai_get_buffer_pool_attr_fn get_buffer_pool_attr;
sai_set_ingress_priority_group_attr_fn set_ingress_priority_group_attr;
sai_get_ingress_priority_group_attr_fn get_ingress_priority_group_attr;
sai_create_buffer_profile_fn create_buffer_profile;
sai_remove_buffer_profile_fn remove_buffer_profile;
sai_set_buffer_profile_attr_fn set_buffer_profile_attr;
sai_get_buffer_profile_attr_fn get_buffer_profile_attr;
sai_create_buffer_pool_fn create_buffer_pool;
sai_remove_buffer_pool_fn remove_buffer_pool;
sai_set_buffer_pool_attr_fn set_buffer_pool_attr;
sai_get_buffer_pool_attr_fn get_buffer_pool_attr;
sai_get_buffer_pool_stats_fn get_buffer_pool_stats;
sai_set_ingress_priority_group_attr_fn set_ingress_priority_group_attr;
sai_get_ingress_priority_group_attr_fn get_ingress_priority_group_attr;
sai_get_ingress_priority_group_stats_fn get_ingress_priority_group_stats;
sai_clear_ingress_priority_group_stats_fn clear_ingress_priority_group_stats;
sai_create_buffer_profile_fn create_buffer_profile;
sai_remove_buffer_profile_fn remove_buffer_profile;
sai_set_buffer_profile_attr_fn set_buffer_profile_attr;
sai_get_buffer_profile_attr_fn get_buffer_profile_attr;
} sai_buffer_api_t;

/**
Expand Down
6 changes: 6 additions & 0 deletions inc/saiqueue.h
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,12 @@ typedef enum _sai_queue_stat_counter_t
/** get/set WRED red dropped bytes count [uint64_t] */
SAI_QUEUE_STAT_DISCARD_DROPPED_BYTES = 0x00000017,

/** get current queue occupancy in bytes [uint64_t] */
SAI_QUEUE_STAT_CURR_OCCUPANCY_BYTES = 0x00000018,

/** get watermark queue occupancy in bytes [uint64_t] */
SAI_QUEUE_STAT_WATERMARK_BYTES = 0x00000019,

/* -- */
/* Custom range base value */
SAI_QUEUE_STAT_CUSTOM_RANGE_BASE = 0x10000000
Expand Down