Skip to content

Commit 8245ee6

Browse files
authored
Add SAI port attribute to fetch PAM4 eye heights (opencomputeproject#2154)
Signed-off-by: Prince George <[email protected]>
1 parent 28751b9 commit 8245ee6

File tree

5 files changed

+57
-0
lines changed

5 files changed

+57
-0
lines changed

inc/saiport.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2679,6 +2679,14 @@ typedef enum _sai_port_attr_t
26792679
*/
26802680
SAI_PORT_ATTR_PORT_STAT_EXTENDED,
26812681

2682+
/**
2683+
* @brief List of port's PAM4 lanes eye values
2684+
*
2685+
* @type sai_port_pam4_eye_values_list_t
2686+
* @flags READ_ONLY
2687+
*/
2688+
SAI_PORT_ATTR_PAM4_EYE_VALUES,
2689+
26822690
/**
26832691
* @brief End of attributes
26842692
*/

inc/saitypes.h

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1193,6 +1193,39 @@ typedef struct _sai_port_eye_values_list_t
11931193
sai_port_lane_eye_values_t *list;
11941194
} sai_port_eye_values_list_t;
11951195

1196+
/**
1197+
* @brief Defines the eye height and width for PAM4 SerDes lane
1198+
* height is in mV
1199+
* width is in psec. -1 means not available
1200+
*/
1201+
typedef struct _sai_port_pam4_lane_eye_values_t
1202+
{
1203+
uint32_t lane;
1204+
int32_t upper_ht;
1205+
int32_t upper_wd;
1206+
int32_t middle_ht;
1207+
int32_t middle_wd;
1208+
int32_t lower_ht;
1209+
int32_t lower_wd;
1210+
} sai_port_pam4_lane_eye_values_t;
1211+
1212+
/**
1213+
* @brief Defines a port's PAM4 eye values for list of all serdes lanes
1214+
*
1215+
* The count defines the number of objects which will be returned to the
1216+
* caller in the list member. The caller must allocate the buffer for the
1217+
* list member and set the count member to the size of the allocated objects
1218+
* in the list member. If the size is not large enough, the callee must set
1219+
* the count member to the actual number of objects filled in the list member
1220+
* and return #SAI_STATUS_BUFFER_OVERFLOW. Once the caller gets such a return
1221+
* code, it may use the returned count member to re-allocate the list and retry.
1222+
*/
1223+
typedef struct _sai_port_pam4_eye_values_list_t
1224+
{
1225+
uint32_t count;
1226+
sai_port_pam4_lane_eye_values_t *list;
1227+
} sai_port_pam4_eye_values_list_t;
1228+
11961229
/**
11971230
* @brief Defines a lane with its frequency offset ppm
11981231
*/
@@ -1657,6 +1690,8 @@ typedef union _sai_attribute_value_t
16571690
/** @validonly meta->attrvaluetype == SAI_ATTR_VALUE_TYPE_POE_PORT_POWER_CONSUMPTION */
16581691
sai_poe_port_power_consumption_t portpowerconsumption;
16591692

1693+
/** @validonly meta->attrvaluetype == SAI_ATTR_VALUE_TYPE_PORT_PAM4_EYE_VALUES_LIST */
1694+
sai_port_pam4_eye_values_list_t portpam4eyevalues;
16601695
} sai_attribute_value_t;
16611696

16621697
/**

meta/aspell.en.pws

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ nexthop
130130
nexthopgroup
131131
nextrelease
132132
NPUs
133+
NRZ
133134
objlist
134135
offsetof
135136
oid
@@ -150,6 +151,7 @@ Policer
150151
postcursor
151152
pre
152153
precursor
154+
psec
153155
PVID
154156
qos
155157
quantization

meta/saimetadatatypes.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,11 @@ typedef enum _sai_attr_value_type_t
495495
* @brief Attribute value is the POE port consumption data.
496496
*/
497497
SAI_ATTR_VALUE_TYPE_POE_PORT_POWER_CONSUMPTION,
498+
499+
/**
500+
* @brief Attribute value is port PAM4 eye values list.
501+
*/
502+
SAI_ATTR_VALUE_TYPE_PORT_PAM4_EYE_VALUES_LIST,
498503
} sai_attr_value_type_t;
499504

500505
/**

meta/saisanitycheck.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -799,6 +799,7 @@ void check_attr_object_type_provided(
799799
case SAI_ATTR_VALUE_TYPE_SEGMENT_LIST:
800800
case SAI_ATTR_VALUE_TYPE_IP_ADDRESS_LIST:
801801
case SAI_ATTR_VALUE_TYPE_PORT_EYE_VALUES_LIST:
802+
case SAI_ATTR_VALUE_TYPE_PORT_PAM4_EYE_VALUES_LIST:
802803
case SAI_ATTR_VALUE_TYPE_PORT_FREQUENCY_OFFSET_PPM_LIST:
803804
case SAI_ATTR_VALUE_TYPE_PORT_SNR_LIST:
804805
case SAI_ATTR_VALUE_TYPE_LATCH_STATUS:
@@ -1105,6 +1106,7 @@ void check_attr_default_required(
11051106
case SAI_ATTR_VALUE_TYPE_MAP_LIST:
11061107
case SAI_ATTR_VALUE_TYPE_IP_ADDRESS_LIST:
11071108
case SAI_ATTR_VALUE_TYPE_PORT_EYE_VALUES_LIST:
1109+
case SAI_ATTR_VALUE_TYPE_PORT_PAM4_EYE_VALUES_LIST:
11081110
case SAI_ATTR_VALUE_TYPE_PORT_FREQUENCY_OFFSET_PPM_LIST:
11091111
case SAI_ATTR_VALUE_TYPE_PORT_SNR_LIST:
11101112
case SAI_ATTR_VALUE_TYPE_PORT_LANE_LATCH_STATUS_LIST:
@@ -1317,6 +1319,7 @@ void check_attr_default_value_type(
13171319
case SAI_ATTR_VALUE_TYPE_MAP_LIST:
13181320
case SAI_ATTR_VALUE_TYPE_IP_ADDRESS_LIST:
13191321
case SAI_ATTR_VALUE_TYPE_PORT_EYE_VALUES_LIST:
1322+
case SAI_ATTR_VALUE_TYPE_PORT_PAM4_EYE_VALUES_LIST:
13201323
case SAI_ATTR_VALUE_TYPE_PORT_FREQUENCY_OFFSET_PPM_LIST:
13211324
case SAI_ATTR_VALUE_TYPE_PORT_SNR_LIST:
13221325
case SAI_ATTR_VALUE_TYPE_PORT_LANE_LATCH_STATUS_LIST:
@@ -2071,6 +2074,7 @@ void check_attr_allow_flags(
20712074
case SAI_ATTR_VALUE_TYPE_SEGMENT_LIST:
20722075
case SAI_ATTR_VALUE_TYPE_IP_ADDRESS_LIST:
20732076
case SAI_ATTR_VALUE_TYPE_PORT_EYE_VALUES_LIST:
2077+
case SAI_ATTR_VALUE_TYPE_PORT_PAM4_EYE_VALUES_LIST:
20742078
case SAI_ATTR_VALUE_TYPE_PORT_FREQUENCY_OFFSET_PPM_LIST:
20752079
case SAI_ATTR_VALUE_TYPE_PORT_SNR_LIST:
20762080
case SAI_ATTR_VALUE_TYPE_PORT_LANE_LATCH_STATUS_LIST:
@@ -2964,6 +2968,7 @@ void check_attr_is_primitive(
29642968
case SAI_ATTR_VALUE_TYPE_SEGMENT_LIST:
29652969
case SAI_ATTR_VALUE_TYPE_IP_ADDRESS_LIST:
29662970
case SAI_ATTR_VALUE_TYPE_PORT_EYE_VALUES_LIST:
2971+
case SAI_ATTR_VALUE_TYPE_PORT_PAM4_EYE_VALUES_LIST:
29672972
case SAI_ATTR_VALUE_TYPE_PORT_FREQUENCY_OFFSET_PPM_LIST:
29682973
case SAI_ATTR_VALUE_TYPE_PORT_SNR_LIST:
29692974
case SAI_ATTR_VALUE_TYPE_SYSTEM_PORT_CONFIG_LIST:
@@ -6277,6 +6282,8 @@ void check_struct_and_union_size()
62776282
CHECK_STRUCT_SIZE(sai_port_err_status_list_t, 16);
62786283
CHECK_STRUCT_SIZE(sai_port_eye_values_list_t, 16);
62796284
CHECK_STRUCT_SIZE(sai_port_lane_eye_values_t, 20);
6285+
CHECK_STRUCT_SIZE(sai_port_pam4_lane_eye_values_t, 28);
6286+
CHECK_STRUCT_SIZE(sai_port_pam4_eye_values_list_t, 16);
62806287
CHECK_STRUCT_SIZE(sai_port_lane_latch_status_list_t, 16);
62816288
CHECK_STRUCT_SIZE(sai_port_lane_latch_status_t, 8);
62826289
CHECK_STRUCT_SIZE(sai_port_frequency_offset_ppm_list_t, 16);

0 commit comments

Comments
 (0)