Skip to content

Commit 617a6e0

Browse files
committed
SAI LPO attributes
Signed-off-by: pullarao <[email protected]>
1 parent 18841b3 commit 617a6e0

File tree

2 files changed

+257
-0
lines changed

2 files changed

+257
-0
lines changed

doc/SAI_LPO_Attributes.md

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
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, reach mode configuration, 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 reach mode
26+
*/
27+
typedef enum _sai_port_serdes_reach_mode_t
28+
{
29+
/** Normal Reach */
30+
SAI_PORT_SERDES_REACH_MODE_NR,
31+
/** Extended Reach */
32+
SAI_PORT_SERDES_REACH_MODE_ER
33+
34+
} sai_port_serdes_reach_mode_t;
35+
36+
/**
37+
* @brief Serdes Rx Error Correcting Decoder/Maximum Likelihood
38+
* Sequence Estimation control state
39+
*/
40+
typedef enum _sai_port_serdes_rx_ecd_mlse_state_t
41+
{
42+
/** Disable */
43+
SAI_PORT_SERDES_RX_ECD_MLSE_STATE_DISABLE,
44+
/** Enable */
45+
SAI_PORT_SERDES_RX_ECD_MLSE_STATE_ENABLE
46+
47+
} sai_port_serdes_rx_ecd_mlse_state_t;
48+
49+
/**
50+
* @brief Serdes polarity setting value
51+
*/
52+
typedef enum _sai_port_serdes_polarity_t
53+
{
54+
/** Normal polarity */
55+
SAI_PORT_SERDES_POLARITY_NORMAL,
56+
/** Inverted polarity */
57+
SAI_PORT_SERDES_POLARITY_INVERTED
58+
59+
} sai_port_serdes_polarity_t;
60+
61+
62+
The following attributes are added to `sai_port_serdes_attr_t`:
63+
64+
/**
65+
* @brief Port serdes Tx upper eye non linear compensation percentage value
66+
*
67+
* List of port serdes Tx upper eye non linear compensation percentage value
68+
* The values are of type sai_u32_list_t where the count is number of lanes
69+
* in a port and the list specifies list of values to be applied to each
70+
* lane.
71+
*
72+
* @type sai_u32_list_t
73+
* @flags CREATE_AND_SET
74+
* @default internal
75+
*/
76+
SAI_PORT_SERDES_ATTR_TX_NLC_PERCENTAGE,
77+
78+
/**
79+
* @brief Port serdes Tx lower eye non linear compensation percentage value
80+
*
81+
* List of port serdes Tx lower eye non linear compensation percentage value
82+
* The values are of type sai_u32_list_t where the count is number of lanes
83+
* in a port and the list specifies list of values to be applied to each
84+
* lane.
85+
*
86+
* @type sai_u32_list_t
87+
* @flags CREATE_AND_SET
88+
* @default internal
89+
*/
90+
SAI_PORT_SERDES_ATTR_TX_NLC_LOWER_EYE_PERCENTAGE,
91+
92+
/**
93+
* @brief Port serdes reach mode control
94+
*
95+
* To select per port NR/ER mode for a port with back plane media type.
96+
*
97+
* @type sai_s32_list_t sai_port_serdes_reach_mode_t
98+
* @flags CREATE_AND_SET
99+
* @default empty
100+
*/
101+
SAI_PORT_SERDES_ATTR_REACH_MODE,
102+
103+
/**
104+
* @brief Port serdes Rx Error Correcting Decoder/Maximum Likelihood
105+
* Sequence Estimation control
106+
*
107+
* To enable/disable Rx ECD for a port with back plane media type.
108+
*
109+
* @type sai_s32_list_t sai_port_serdes_rx_ecd_mlse_state_t
110+
* @flags CREATE_AND_SET
111+
* @default empty
112+
*/
113+
SAI_PORT_SERDES_ATTR_RX_ECD_MLSE_STATE,
114+
115+
/**
116+
* @brief Port serdes control for inverted TX polarity setting
117+
*
118+
* TX polarity setting value
119+
* The values are of type sai_s32_list_t where the count is number of lanes in
120+
* a port and the list specifies list of values to be applied to each lane.
121+
* This extension is added to support both create and set operations.
122+
*
123+
* @type sai_s32_list_t sai_port_serdes_polarity_t
124+
* @flags CREATE_AND_SET
125+
* @default internal
126+
*/
127+
SAI_PORT_SERDES_ATTR_TX_POLARITY,
128+
129+
/**
130+
* @brief Port serdes control for inverted RX polarity setting
131+
*
132+
* RX polarity setting value
133+
* The values are of type sai_s32_list_t where the count is number of lanes in
134+
* a port and the list specifies list of values to be applied to each lane.
135+
* This extension is added to support both create and set operations.
136+
*
137+
* @type sai_s32_list_t sai_port_serdes_polarity_t
138+
* @flags CREATE_AND_SET
139+
* @default internal
140+
*/
141+
SAI_PORT_SERDES_ATTR_RX_POLARITY,

inc/saiport.h

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

685685
} sai_port_path_tracing_timestamp_type_t;
686686

687+
/**
688+
* @brief Serdes reach mode
689+
*/
690+
typedef enum _sai_port_serdes_reach_mode_t
691+
{
692+
/** Normal Reach */
693+
SAI_PORT_SERDES_REACH_MODE_NR,
694+
/** Extended Reach */
695+
SAI_PORT_SERDES_REACH_MODE_ER
696+
697+
} sai_port_serdes_reach_mode_t;
698+
699+
/**
700+
* @brief Serdes Rx Error Correcting Decoder/Maximum Likelihood
701+
* Sequence Estimation control state
702+
*/
703+
typedef enum _sai_port_serdes_rx_ecd_mlse_state_t
704+
{
705+
/** Disable */
706+
SAI_PORT_SERDES_RX_ECD_MLSE_STATE_DISABLE,
707+
/** Enable */
708+
SAI_PORT_SERDES_RX_ECD_MLSE_STATE_ENABLE
709+
710+
} sai_port_serdes_rx_ecd_mlse_state_t;
711+
712+
/**
713+
* @brief Serdes polarity setting value
714+
*/
715+
typedef enum _sai_port_serdes_polarity_t
716+
{
717+
/** Normal polarity */
718+
SAI_PORT_SERDES_POLARITY_NORMAL,
719+
/** Inverted polarity */
720+
SAI_PORT_SERDES_POLARITY_INVERTED
721+
722+
} sai_port_serdes_polarity_t;
723+
687724
/**
688725
* @brief Attribute Id in sai_set_port_attribute() and
689726
* sai_get_port_attribute() calls
@@ -4178,6 +4215,85 @@ typedef enum _sai_port_serdes_attr_t
41784215
*/
41794216
SAI_PORT_SERDES_ATTR_CUSTOM_COLLECTION,
41804217

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

0 commit comments

Comments
 (0)