Skip to content

Commit f56f534

Browse files
SAI LPO attributes (#2178)
Signed-off-by: pullarao <[email protected]>
1 parent 114ede5 commit f56f534

File tree

2 files changed

+212
-0
lines changed

2 files changed

+212
-0
lines changed

doc/SAI_LPO_Attributes.md

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
2+
SAI - Linear Pluggable Optics (LPO) support
3+
============================================
4+
5+
| Title | SAI LPO attributes |
6+
|-------------|----------------------------|
7+
| Authors | Pulla Rao, Broadcom Inc |
8+
| Status | In Review |
9+
| Type | Standards Track |
10+
| Created | 06/09/2025 |
11+
| SAI-Version | 1.16 |
12+
13+
### 1. Overview
14+
---------------
15+
LPO optics are designed specifically to meet the data center requirements for low power consumption, low cost, low latency, compact form factor, reach up to 500meters.
16+
17+
This document defines the port serdes attributes used to tune the Linear Pluggable Optics (LPO). At a port level, the attributes define the non-linear compensation percentage values, Error Correcting Decoder (ECD) state and Tx/Rx polarity settings.
18+
19+
### 2. Specification
20+
--------------------
21+
22+
#### 2.1 Changes to saiport.h
23+
-----------------------------
24+
/**
25+
* @brief Serdes Rx Error Correcting Decoder/Maximum Likelihood
26+
* Sequence Estimation control state
27+
*/
28+
typedef enum _sai_port_serdes_rx_ecd_mlse_state_t
29+
{
30+
/** Disable */
31+
SAI_PORT_SERDES_RX_ECD_MLSE_STATE_DISABLE,
32+
/** Enable */
33+
SAI_PORT_SERDES_RX_ECD_MLSE_STATE_ENABLE
34+
35+
} sai_port_serdes_rx_ecd_mlse_state_t;
36+
37+
/**
38+
* @brief Serdes polarity setting value
39+
*/
40+
typedef enum _sai_port_serdes_polarity_t
41+
{
42+
/** Normal polarity */
43+
SAI_PORT_SERDES_POLARITY_NORMAL,
44+
/** Inverted polarity */
45+
SAI_PORT_SERDES_POLARITY_INVERTED
46+
47+
} sai_port_serdes_polarity_t;
48+
49+
50+
The following attributes are added to `sai_port_serdes_attr_t`:
51+
52+
/**
53+
* @brief Port serdes Tx upper eye non linear compensation percentage value
54+
*
55+
* List of port serdes Tx upper eye non linear compensation percentage value
56+
* The values are of type sai_u32_list_t where the count is number of lanes
57+
* in a port and the list specifies list of values to be applied to each
58+
* lane.
59+
*
60+
* @type sai_u32_list_t
61+
* @flags CREATE_AND_SET
62+
* @default internal
63+
*/
64+
SAI_PORT_SERDES_ATTR_TX_NLC_PERCENTAGE,
65+
66+
/**
67+
* @brief Port serdes Tx lower eye non linear compensation percentage value
68+
*
69+
* List of port serdes Tx lower eye non linear compensation percentage value
70+
* The values are of type sai_u32_list_t where the count is number of lanes
71+
* in a port and the list specifies list of values to be applied to each
72+
* lane.
73+
*
74+
* @type sai_u32_list_t
75+
* @flags CREATE_AND_SET
76+
* @default internal
77+
*/
78+
SAI_PORT_SERDES_ATTR_TX_NLC_LOWER_EYE_PERCENTAGE,
79+
80+
/**
81+
* @brief Port serdes Rx Error Correcting Decoder/Maximum Likelihood
82+
* Sequence Estimation control
83+
*
84+
* To enable/disable Rx ECD for a port with back plane media type.
85+
*
86+
* @type sai_s32_list_t sai_port_serdes_rx_ecd_mlse_state_t
87+
* @flags CREATE_AND_SET
88+
* @default empty
89+
*/
90+
SAI_PORT_SERDES_ATTR_RX_ECD_MLSE_STATE,
91+
92+
/**
93+
* @brief Port serdes control for inverted TX polarity setting
94+
*
95+
* TX polarity setting value
96+
* The values are of type sai_s32_list_t where the count is number of lanes in
97+
* a port and the list specifies list of values to be applied to each lane.
98+
* This extension is added to support both create and set operations.
99+
*
100+
* @type sai_s32_list_t sai_port_serdes_polarity_t
101+
* @flags CREATE_AND_SET
102+
* @default internal
103+
*/
104+
SAI_PORT_SERDES_ATTR_TX_POLARITY,
105+
106+
/**
107+
* @brief Port serdes control for inverted RX polarity setting
108+
*
109+
* RX polarity setting value
110+
* The values are of type sai_s32_list_t where the count is number of lanes in
111+
* a port and the list specifies list of values to be applied to each lane.
112+
* This extension is added to support both create and set operations.
113+
*
114+
* @type sai_s32_list_t sai_port_serdes_polarity_t
115+
* @flags CREATE_AND_SET
116+
* @default internal
117+
*/
118+
SAI_PORT_SERDES_ATTR_RX_POLARITY,
119+

inc/saiport.h

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -684,6 +684,31 @@ typedef enum _sai_port_path_tracing_timestamp_type_t
684684

685685
} sai_port_path_tracing_timestamp_type_t;
686686

687+
/**
688+
* @brief Serdes Rx Error Correcting Decoder/Maximum Likelihood
689+
* Sequence Estimation control state
690+
*/
691+
typedef enum _sai_port_serdes_rx_ecd_mlse_state_t
692+
{
693+
/** Disable */
694+
SAI_PORT_SERDES_RX_ECD_MLSE_STATE_DISABLE,
695+
/** Enable */
696+
SAI_PORT_SERDES_RX_ECD_MLSE_STATE_ENABLE
697+
698+
} sai_port_serdes_rx_ecd_mlse_state_t;
699+
700+
/**
701+
* @brief Serdes polarity setting value
702+
*/
703+
typedef enum _sai_port_serdes_polarity_t
704+
{
705+
/** Normal polarity */
706+
SAI_PORT_SERDES_POLARITY_NORMAL,
707+
/** Inverted polarity */
708+
SAI_PORT_SERDES_POLARITY_INVERTED
709+
710+
} sai_port_serdes_polarity_t;
711+
687712
/**
688713
* @brief Attribute Id in sai_set_port_attribute() and
689714
* sai_get_port_attribute() calls
@@ -4184,6 +4209,74 @@ typedef enum _sai_port_serdes_attr_t
41844209
*/
41854210
SAI_PORT_SERDES_ATTR_CUSTOM_COLLECTION,
41864211

4212+
/**
4213+
* @brief Port serdes Tx upper eye non linear compensation percentage value
4214+
*
4215+
* List of port serdes Tx upper eye non linear compensation percentage value
4216+
* The values are of type sai_u32_list_t where the count is number of lanes
4217+
* in a port and the list specifies list of values to be applied to each
4218+
* lane.
4219+
*
4220+
* @type sai_u32_list_t
4221+
* @flags CREATE_AND_SET
4222+
* @default internal
4223+
*/
4224+
SAI_PORT_SERDES_ATTR_TX_NLC_PERCENTAGE,
4225+
4226+
/**
4227+
* @brief Port serdes Tx lower eye non linear compensation percentage value
4228+
*
4229+
* List of port serdes Tx lower eye non linear compensation percentage value
4230+
* The values are of type sai_u32_list_t where the count is number of lanes
4231+
* in a port and the list specifies list of values to be applied to each
4232+
* lane.
4233+
*
4234+
* @type sai_u32_list_t
4235+
* @flags CREATE_AND_SET
4236+
* @default internal
4237+
*/
4238+
SAI_PORT_SERDES_ATTR_TX_NLC_LOWER_EYE_PERCENTAGE,
4239+
4240+
/**
4241+
* @brief Port serdes Rx Error Correcting Decoder/Maximum Likelihood
4242+
* Sequence Estimation control
4243+
*
4244+
* To enable/disable Rx ECD for a port with back plane media type.
4245+
*
4246+
* @type sai_s32_list_t sai_port_serdes_rx_ecd_mlse_state_t
4247+
* @flags CREATE_AND_SET
4248+
* @default empty
4249+
*/
4250+
SAI_PORT_SERDES_ATTR_RX_ECD_MLSE_STATE,
4251+
4252+
/**
4253+
* @brief Port serdes control for inverted TX polarity setting
4254+
*
4255+
* TX polarity setting value
4256+
* The values are of type sai_s32_list_t where the count is number of lanes in
4257+
* a port and the list specifies list of values to be applied to each lane.
4258+
* This extension is added to support both create and set operations.
4259+
*
4260+
* @type sai_s32_list_t sai_port_serdes_polarity_t
4261+
* @flags CREATE_AND_SET
4262+
* @default internal
4263+
*/
4264+
SAI_PORT_SERDES_ATTR_TX_POLARITY,
4265+
4266+
/**
4267+
* @brief Port serdes control for inverted RX polarity setting
4268+
*
4269+
* RX polarity setting value
4270+
* The values are of type sai_s32_list_t where the count is number of lanes in
4271+
* a port and the list specifies list of values to be applied to each lane.
4272+
* This extension is added to support both create and set operations.
4273+
*
4274+
* @type sai_s32_list_t sai_port_serdes_polarity_t
4275+
* @flags CREATE_AND_SET
4276+
* @default internal
4277+
*/
4278+
SAI_PORT_SERDES_ATTR_RX_POLARITY,
4279+
41874280
/**
41884281
* @brief End of attributes
41894282
*/

0 commit comments

Comments
 (0)