From 806f108e60ec0d2f0276cf50be936e61d22ad0db Mon Sep 17 00:00:00 2001 From: hna Date: Mon, 19 Jun 2023 18:17:28 +0000 Subject: [PATCH 01/11] adding PP_PHYRXEQ_EXT message --- xoa_driver/enums.py | 4 ++ xoa_driver/internals/commands/enums.py | 18 +++++++ xoa_driver/internals/commands/pp_commands.py | 53 +++++++++++++++++++- 3 files changed, 74 insertions(+), 1 deletion(-) diff --git a/xoa_driver/enums.py b/xoa_driver/enums.py index d8ebd9d7..795cc759 100644 --- a/xoa_driver/enums.py +++ b/xoa_driver/enums.py @@ -161,6 +161,8 @@ LinkTrainEncoding, LinkTrainPresets, AnLtLogControl, + RxEqExtCap, + RxEqExtCapStatus ) __all__ = ( @@ -324,4 +326,6 @@ "LinkTrainEncoding", "LinkTrainPresets", "AnLtLogControl", + "RxEqExtCap", + "RxEqExtCapStatus" ) diff --git a/xoa_driver/internals/commands/enums.py b/xoa_driver/internals/commands/enums.py index ca1c531f..5b3b08f0 100644 --- a/xoa_driver/internals/commands/enums.py +++ b/xoa_driver/internals/commands/enums.py @@ -2458,5 +2458,23 @@ class AnLtLogControl(IntEnum): LOG_TYPE_FSM_LT_ALG1 = 0x800000 """link training algorithm -1 state machine transitions""" +class RxEqExtCap(IntEnum): + """Rx Equalizer Advanced Capability type.""" + + CTLE_LOW = 0 + """CTLE low frequency.""" + CTLE_HIGH = 1 + """CTLE high frequency.""" + +class RxEqExtCapStatus(IntEnum): + """Status for Rx Equalizer Advanced Capability.""" + + STATUS_AUTO = 0 + """Auto.""" + STATUS_MANUAL = 1 + """Manual.""" + STATUS_FREEZE = 2 + """Freeze.""" + # endregion diff --git a/xoa_driver/internals/commands/pp_commands.py b/xoa_driver/internals/commands/pp_commands.py index ad518529..2a8d6606 100644 --- a/xoa_driver/internals/commands/pp_commands.py +++ b/xoa_driver/internals/commands/pp_commands.py @@ -55,6 +55,8 @@ PRBSPattern, PHYSignalStatus, OnOffDefault, + RxEqExtCap, + RxEqExtCapStatus ) @@ -1803,7 +1805,7 @@ def set(self, link_training_on_off: OnOff, precode_on_off: OnOffDefault, graycod @dataclass class PP_PHYRXEQ: """ - RX EQ parameters. + RX EQ parameters (For non Freya Modules). """ code: typing.ClassVar[int] = 380 @@ -1853,6 +1855,55 @@ def set(self, auto: int, ctle: int, reserved: int) -> Token[None]: return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex], auto=auto, ctle=ctle, reserved=reserved)) +@register_command +@dataclass +class PP_PHYRXEQ_EXT: + """ + GET/SET RX EQ Advanced parameters(Only for Freya Modules). + """ + + code: typing.ClassVar[int] = 397 + pushed: typing.ClassVar[bool] = True + + _connection: 'interfaces.IConnection' + _module: int + _port: int + _serdes_xindex: int + _capability_type: RxEqExtCap + + class GetDataAttr(ResponseBodyStruct): + status: RxEqExtCapStatus = field(XmpInt()) + """The status of the capability""" + value: int = field(XmpInt()) + """The value for the capability""" + + class SetDataAttr(RequestBodyStruct): + status: RxEqExtCapStatus = field(XmpInt()) + """The status of the capability Auto/Manual/Freeze""" + value: int = field(XmpInt()) + """The value for the capability""" + + def get(self) -> Token[GetDataAttr]: + """Get RX EQ Advanced parameters. + + :return: status Auto/Manual/Freeze, value. + :rtype: PP_PHYRXEQ_EXT.GetDataAttr + """ + + return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex, self._capability_type])) + + def set(self, status: RxEqExtCapStatus, value: int) -> Token[None]: + """Set RX EQ Advanced parameters. + The type of the capability(RxEqExtCap) should be passed as the second index. + + :param status: Auto/Manual/Freeze + :type status: RxEqExtCapStatus + :param value: The value for the capability + :type value: int + """ + + return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex, self._capability_type], status=status, value=value)) + @register_command @dataclass class PP_AUTONEG: From 2673f67ca5469d7382ffbe6c543f6a1fcd60d5d2 Mon Sep 17 00:00:00 2001 From: hna Date: Fri, 23 Jun 2023 09:00:50 +0000 Subject: [PATCH 02/11] add precoding and gray coding --- xoa_driver/enums.py | 6 + xoa_driver/internals/commands/enums.py | 29 +++ xoa_driver/internals/commands/pp_commands.py | 187 +++++++++++++++++++ 3 files changed, 222 insertions(+) diff --git a/xoa_driver/enums.py b/xoa_driver/enums.py index d8ebd9d7..035c0643 100644 --- a/xoa_driver/enums.py +++ b/xoa_driver/enums.py @@ -161,6 +161,9 @@ LinkTrainEncoding, LinkTrainPresets, AnLtLogControl, + PreCodingStatus, + GrayCodingStatus, + Endianess ) __all__ = ( @@ -324,4 +327,7 @@ "LinkTrainEncoding", "LinkTrainPresets", "AnLtLogControl", + "PreCodingStatus", + "GrayCodingStatus", + "Endianess" ) diff --git a/xoa_driver/internals/commands/enums.py b/xoa_driver/internals/commands/enums.py index ca1c531f..ec2c44aa 100644 --- a/xoa_driver/internals/commands/enums.py +++ b/xoa_driver/internals/commands/enums.py @@ -2458,5 +2458,34 @@ class AnLtLogControl(IntEnum): LOG_TYPE_FSM_LT_ALG1 = 0x800000 """link training algorithm -1 state machine transitions""" +class PreCodingStatus(IntEnum): + """Rx/Tx Pre-Coding Status.""" + + OFF = 0 + """Off""" + + ON = 1 + """On""" + + AUTO = 2 + """Auto""" + +class GrayCodingStatus(IntEnum): + """Rx/Tx Gray-Coding Status.""" + + OFF = 0 + """Off""" + + ON = 1 + """On""" + +class Endianess(IntEnum): + """Endianess (Big/Little Endian).""" + + NORMAL = 0 + """Normal""" + + REVERTED = 1 + """Reverted""" # endregion diff --git a/xoa_driver/internals/commands/pp_commands.py b/xoa_driver/internals/commands/pp_commands.py index ad518529..b183cd01 100644 --- a/xoa_driver/internals/commands/pp_commands.py +++ b/xoa_driver/internals/commands/pp_commands.py @@ -55,6 +55,9 @@ PRBSPattern, PHYSignalStatus, OnOffDefault, + PreCodingStatus, + GrayCodingStatus, + Endianess ) @@ -2088,3 +2091,187 @@ def get(self) -> Token[GetDataAttr]: """ return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._lane_xindex])) + +@register_command +@dataclass +class PP_RXPRECODING: + """ + GET/SET Rx Pre-Coding Configurations. + """ + + code: typing.ClassVar[int] = 420 + pushed: typing.ClassVar[bool] = False + + _connection: 'interfaces.IConnection' + _module: int + _port: int + + class GetDataAttr(ResponseBodyStruct): + status: PreCodingStatus = field(XmpInt()) + """Status Off/On/Auto""" + endianess: Endianess = field(XmpInt()) + """Endianess Normal/Reverted""" + + class SetDataAttr(RequestBodyStruct): + status: PreCodingStatus = field(XmpInt()) + """Status Off/On/Auto""" + endianess: Endianess = field(XmpInt()) + """Endianess Normal/Reverted""" + + def get(self) -> Token[GetDataAttr]: + """Get the Rx Pre-Coding Configurations. + + :return: Rx Pre-Coding configurations including status, and endianess type. + :rtype: PP_RXPRECODING.GetDataAttr + """ + + return Token(self._connection, build_get_request(self, module=self._module, port=self._port)) + + def set(self, status: PreCodingStatus, endianess: Endianess) -> Token[None]: + """Set the Rx Pre-coding settings of the PHY. + + :param status: The status(Off/On/Auto) + :type status: PreCodingStatus + :param endianess: Endianess type + :type endianess: Endianess + """ + + return Token(self._connection, build_set_request(self, module=self._module, port=self._port, status=status, endianess=endianess)) + +@register_command +@dataclass +class PP_TXPRECODING: + """ + GET/SET Tx Pre-Coding Configurations. + """ + + code: typing.ClassVar[int] = 421 + pushed: typing.ClassVar[bool] = False + + _connection: 'interfaces.IConnection' + _module: int + _port: int + + class GetDataAttr(ResponseBodyStruct): + status: PreCodingStatus = field(XmpInt()) + """Status Off/On/Auto""" + endianess: Endianess = field(XmpInt()) + """Endianess Normal/Reverted""" + + class SetDataAttr(RequestBodyStruct): + status: PreCodingStatus = field(XmpInt()) + """Status Off/On/Auto""" + endianess: Endianess = field(XmpInt()) + """Endianess Normal/Reverted""" + + def get(self) -> Token[GetDataAttr]: + """Get the Tx Pre-Coding Configurations. + + :return: Tx Pre-Coding configurations including status, and endianess type. + :rtype: PP_TXPRECODING.GetDataAttr + """ + + return Token(self._connection, build_get_request(self, module=self._module, port=self._port)) + + def set(self, status: PreCodingStatus, endianess: Endianess) -> Token[None]: + """Set the Tx Pre-coding settings of the PHY. + + :param status: The status(Off/On/Auto) + :type status: PreCodingStatus + :param endianess: Endianess type + :type endianess: Endianess + """ + + return Token(self._connection, build_set_request(self, module=self._module, port=self._port, status=status, endianess=endianess)) + +@register_command +@dataclass +class PP_RXGRAYCODING: + """ + GET/SET Rx Gray-Coding Configurations. + """ + + code: typing.ClassVar[int] = 422 + pushed: typing.ClassVar[bool] = False + + _connection: 'interfaces.IConnection' + _module: int + _port: int + + class GetDataAttr(ResponseBodyStruct): + status: GrayCodingStatus = field(XmpInt()) + """Status Off/On""" + endianess: Endianess = field(XmpInt()) + """Endianess Normal/Reverted""" + + class SetDataAttr(RequestBodyStruct): + status: GrayCodingStatus = field(XmpInt()) + """Status Off/On""" + endianess: Endianess = field(XmpInt()) + """Endianess Normal/Reverted""" + + def get(self) -> Token[GetDataAttr]: + """Get the Rx Gray-Coding Configurations. + + :return: Rx Gray-Coding configurations including status, and endianess type. + :rtype: PP_RXGRAYCODING.GetDataAttr + """ + + return Token(self._connection, build_get_request(self, module=self._module, port=self._port)) + + def set(self, status: GrayCodingStatus, endianess: Endianess) -> Token[None]: + """Set the Rx Gray-coding settings of the PHY. + + :param status: The status(Off/On) + :type status: GrayCodingStatus + :param endianess: Endianess type + :type endianess: Endianess + """ + + return Token(self._connection, build_set_request(self, module=self._module, port=self._port, status=status, endianess=endianess)) + +@register_command +@dataclass +class PP_TXGRAYCODING: + """ + GET/SET Tx Gray-Coding Configurations. + """ + + code: typing.ClassVar[int] = 423 + pushed: typing.ClassVar[bool] = False + + _connection: 'interfaces.IConnection' + _module: int + _port: int + + class GetDataAttr(ResponseBodyStruct): + status: GrayCodingStatus = field(XmpInt()) + """Status Off/On/Auto""" + endianess: Endianess = field(XmpInt()) + """Endianess Normal/Reverted""" + + class SetDataAttr(RequestBodyStruct): + status: GrayCodingStatus = field(XmpInt()) + """Status Off/On/Auto""" + endianess: Endianess = field(XmpInt()) + """Endianess Normal/Reverted""" + + def get(self) -> Token[GetDataAttr]: + """Get the Tx Gray-Coding Configurations. + + :return: Tx Gray-Coding configurations including status, and endianess type. + :rtype: PP_TXGRAYCODING.GetDataAttr + """ + + return Token(self._connection, build_get_request(self, module=self._module, port=self._port)) + + def set(self, status: GrayCodingStatus, endianess: Endianess) -> Token[None]: + """Set the Tx Gray-coding settings of the PHY. + + :param status: The status(Off/On/Auto) + :type status: GrayCodingStatus + :param endianess: Endianess type + :type endianess: Endianess + """ + + return Token(self._connection, build_set_request(self, module=self._module, port=self._port, status=status, endianess=endianess)) \ No newline at end of file From a457be96a63f5a2321fec41ae8e236d408a83a5d Mon Sep 17 00:00:00 2001 From: hna Date: Mon, 26 Jun 2023 16:43:31 +0000 Subject: [PATCH 03/11] add PreCoding and GrayCoding --- xoa_driver/internals/commands/enums.py | 4 +-- xoa_driver/internals/commands/pp_commands.py | 38 +++++++++++--------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/xoa_driver/internals/commands/enums.py b/xoa_driver/internals/commands/enums.py index ec2c44aa..049ad911 100644 --- a/xoa_driver/internals/commands/enums.py +++ b/xoa_driver/internals/commands/enums.py @@ -2483,9 +2483,9 @@ class Endianess(IntEnum): """Endianess (Big/Little Endian).""" NORMAL = 0 - """Normal""" + """Big Endian""" REVERTED = 1 - """Reverted""" + """Little Endian""" # endregion diff --git a/xoa_driver/internals/commands/pp_commands.py b/xoa_driver/internals/commands/pp_commands.py index b183cd01..2b7bab7d 100644 --- a/xoa_driver/internals/commands/pp_commands.py +++ b/xoa_driver/internals/commands/pp_commands.py @@ -2100,23 +2100,24 @@ class PP_RXPRECODING: """ code: typing.ClassVar[int] = 420 - pushed: typing.ClassVar[bool] = False + pushed: typing.ClassVar[bool] = True _connection: 'interfaces.IConnection' _module: int _port: int + _serdes_xindex: int class GetDataAttr(ResponseBodyStruct): status: PreCodingStatus = field(XmpInt()) """Status Off/On/Auto""" endianess: Endianess = field(XmpInt()) - """Endianess Normal/Reverted""" + """Endianess Normal/Reverted(BigEndian/LittleEndian)) """ class SetDataAttr(RequestBodyStruct): status: PreCodingStatus = field(XmpInt()) """Status Off/On/Auto""" endianess: Endianess = field(XmpInt()) - """Endianess Normal/Reverted""" + """Endianess Normal/Reverted(BigEndian/LittleEndian)) """ def get(self) -> Token[GetDataAttr]: """Get the Rx Pre-Coding Configurations. @@ -2125,7 +2126,7 @@ def get(self) -> Token[GetDataAttr]: :rtype: PP_RXPRECODING.GetDataAttr """ - return Token(self._connection, build_get_request(self, module=self._module, port=self._port)) + return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex])) def set(self, status: PreCodingStatus, endianess: Endianess) -> Token[None]: """Set the Rx Pre-coding settings of the PHY. @@ -2136,7 +2137,7 @@ def set(self, status: PreCodingStatus, endianess: Endianess) -> Token[None]: :type endianess: Endianess """ - return Token(self._connection, build_set_request(self, module=self._module, port=self._port, status=status, endianess=endianess)) + return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex], status=status, endianess=endianess)) @register_command @dataclass @@ -2151,18 +2152,19 @@ class PP_TXPRECODING: _connection: 'interfaces.IConnection' _module: int _port: int + _serdes_xindex: int class GetDataAttr(ResponseBodyStruct): status: PreCodingStatus = field(XmpInt()) """Status Off/On/Auto""" endianess: Endianess = field(XmpInt()) - """Endianess Normal/Reverted""" + """Endianess Normal/Reverted(BigEndian/LittleEndian)) """ class SetDataAttr(RequestBodyStruct): status: PreCodingStatus = field(XmpInt()) """Status Off/On/Auto""" endianess: Endianess = field(XmpInt()) - """Endianess Normal/Reverted""" + """Endianess Normal/Reverted(BigEndian/LittleEndian)) """ def get(self) -> Token[GetDataAttr]: """Get the Tx Pre-Coding Configurations. @@ -2171,7 +2173,7 @@ def get(self) -> Token[GetDataAttr]: :rtype: PP_TXPRECODING.GetDataAttr """ - return Token(self._connection, build_get_request(self, module=self._module, port=self._port)) + return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex])) def set(self, status: PreCodingStatus, endianess: Endianess) -> Token[None]: """Set the Tx Pre-coding settings of the PHY. @@ -2182,7 +2184,7 @@ def set(self, status: PreCodingStatus, endianess: Endianess) -> Token[None]: :type endianess: Endianess """ - return Token(self._connection, build_set_request(self, module=self._module, port=self._port, status=status, endianess=endianess)) + return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex], status=status, endianess=endianess)) @register_command @dataclass @@ -2197,18 +2199,19 @@ class PP_RXGRAYCODING: _connection: 'interfaces.IConnection' _module: int _port: int + _serdes_xindex: int class GetDataAttr(ResponseBodyStruct): status: GrayCodingStatus = field(XmpInt()) """Status Off/On""" endianess: Endianess = field(XmpInt()) - """Endianess Normal/Reverted""" + """Endianess Normal/Reverted(BigEndian/LittleEndian)) """ class SetDataAttr(RequestBodyStruct): status: GrayCodingStatus = field(XmpInt()) """Status Off/On""" endianess: Endianess = field(XmpInt()) - """Endianess Normal/Reverted""" + """Endianess Normal/Reverted(BigEndian/LittleEndian)) """ def get(self) -> Token[GetDataAttr]: """Get the Rx Gray-Coding Configurations. @@ -2217,7 +2220,7 @@ def get(self) -> Token[GetDataAttr]: :rtype: PP_RXGRAYCODING.GetDataAttr """ - return Token(self._connection, build_get_request(self, module=self._module, port=self._port)) + return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex])) def set(self, status: GrayCodingStatus, endianess: Endianess) -> Token[None]: """Set the Rx Gray-coding settings of the PHY. @@ -2228,7 +2231,7 @@ def set(self, status: GrayCodingStatus, endianess: Endianess) -> Token[None]: :type endianess: Endianess """ - return Token(self._connection, build_set_request(self, module=self._module, port=self._port, status=status, endianess=endianess)) + return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex], status=status, endianess=endianess)) @register_command @dataclass @@ -2243,18 +2246,19 @@ class PP_TXGRAYCODING: _connection: 'interfaces.IConnection' _module: int _port: int + _serdes_xindex: int class GetDataAttr(ResponseBodyStruct): status: GrayCodingStatus = field(XmpInt()) """Status Off/On/Auto""" endianess: Endianess = field(XmpInt()) - """Endianess Normal/Reverted""" + """Endianess Normal/Reverted(BigEndian/LittleEndian)) """ class SetDataAttr(RequestBodyStruct): status: GrayCodingStatus = field(XmpInt()) """Status Off/On/Auto""" endianess: Endianess = field(XmpInt()) - """Endianess Normal/Reverted""" + """Endianess Normal/Reverted(BigEndian/LittleEndian)) """ def get(self) -> Token[GetDataAttr]: """Get the Tx Gray-Coding Configurations. @@ -2263,7 +2267,7 @@ def get(self) -> Token[GetDataAttr]: :rtype: PP_TXGRAYCODING.GetDataAttr """ - return Token(self._connection, build_get_request(self, module=self._module, port=self._port)) + return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex])) def set(self, status: GrayCodingStatus, endianess: Endianess) -> Token[None]: """Set the Tx Gray-coding settings of the PHY. @@ -2274,4 +2278,4 @@ def set(self, status: GrayCodingStatus, endianess: Endianess) -> Token[None]: :type endianess: Endianess """ - return Token(self._connection, build_set_request(self, module=self._module, port=self._port, status=status, endianess=endianess)) \ No newline at end of file + return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex], status=status, endianess=endianess)) \ No newline at end of file From 17317f0f573c865381f19821f368732ab8f21da5 Mon Sep 17 00:00:00 2001 From: hna Date: Mon, 26 Jun 2023 17:34:55 +0000 Subject: [PATCH 04/11] Change Pushed option to true for Pre/Gray Coding messages --- xoa_driver/internals/commands/pp_commands.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/xoa_driver/internals/commands/pp_commands.py b/xoa_driver/internals/commands/pp_commands.py index 2b7bab7d..a494ed82 100644 --- a/xoa_driver/internals/commands/pp_commands.py +++ b/xoa_driver/internals/commands/pp_commands.py @@ -2147,7 +2147,7 @@ class PP_TXPRECODING: """ code: typing.ClassVar[int] = 421 - pushed: typing.ClassVar[bool] = False + pushed: typing.ClassVar[bool] = True _connection: 'interfaces.IConnection' _module: int @@ -2194,7 +2194,7 @@ class PP_RXGRAYCODING: """ code: typing.ClassVar[int] = 422 - pushed: typing.ClassVar[bool] = False + pushed: typing.ClassVar[bool] = True _connection: 'interfaces.IConnection' _module: int @@ -2241,7 +2241,7 @@ class PP_TXGRAYCODING: """ code: typing.ClassVar[int] = 423 - pushed: typing.ClassVar[bool] = False + pushed: typing.ClassVar[bool] = True _connection: 'interfaces.IConnection' _module: int From 623acb064bc766236d81a3eeab8876f8096558ea Mon Sep 17 00:00:00 2001 From: hna Date: Tue, 27 Jun 2023 09:44:57 +0000 Subject: [PATCH 05/11] Fix spelling error for endianness --- xoa_driver/enums.py | 4 +- xoa_driver/internals/commands/enums.py | 4 +- xoa_driver/internals/commands/pp_commands.py | 74 ++++++++++---------- 3 files changed, 41 insertions(+), 41 deletions(-) diff --git a/xoa_driver/enums.py b/xoa_driver/enums.py index 035c0643..6cb61d3c 100644 --- a/xoa_driver/enums.py +++ b/xoa_driver/enums.py @@ -163,7 +163,7 @@ AnLtLogControl, PreCodingStatus, GrayCodingStatus, - Endianess + Endianness ) __all__ = ( @@ -329,5 +329,5 @@ "AnLtLogControl", "PreCodingStatus", "GrayCodingStatus", - "Endianess" + "Endianness" ) diff --git a/xoa_driver/internals/commands/enums.py b/xoa_driver/internals/commands/enums.py index 049ad911..470a6009 100644 --- a/xoa_driver/internals/commands/enums.py +++ b/xoa_driver/internals/commands/enums.py @@ -2479,8 +2479,8 @@ class GrayCodingStatus(IntEnum): ON = 1 """On""" -class Endianess(IntEnum): - """Endianess (Big/Little Endian).""" +class Endianness(IntEnum): + """Endianness (Big/Little Endian).""" NORMAL = 0 """Big Endian""" diff --git a/xoa_driver/internals/commands/pp_commands.py b/xoa_driver/internals/commands/pp_commands.py index a494ed82..f09bab6c 100644 --- a/xoa_driver/internals/commands/pp_commands.py +++ b/xoa_driver/internals/commands/pp_commands.py @@ -57,7 +57,7 @@ OnOffDefault, PreCodingStatus, GrayCodingStatus, - Endianess + Endianness ) @@ -2110,34 +2110,34 @@ class PP_RXPRECODING: class GetDataAttr(ResponseBodyStruct): status: PreCodingStatus = field(XmpInt()) """Status Off/On/Auto""" - endianess: Endianess = field(XmpInt()) - """Endianess Normal/Reverted(BigEndian/LittleEndian)) """ + endianness: Endianness = field(XmpInt()) + """Endianness Normal/Reverted(BigEndian/LittleEndian)) """ class SetDataAttr(RequestBodyStruct): status: PreCodingStatus = field(XmpInt()) """Status Off/On/Auto""" - endianess: Endianess = field(XmpInt()) - """Endianess Normal/Reverted(BigEndian/LittleEndian)) """ + endianness: Endianness = field(XmpInt()) + """Endianness Normal/Reverted(BigEndian/LittleEndian)) """ def get(self) -> Token[GetDataAttr]: """Get the Rx Pre-Coding Configurations. - :return: Rx Pre-Coding configurations including status, and endianess type. + :return: Rx Pre-Coding configurations including status, and endianness type. :rtype: PP_RXPRECODING.GetDataAttr """ return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex])) - def set(self, status: PreCodingStatus, endianess: Endianess) -> Token[None]: + def set(self, status: PreCodingStatus, endianness: Endianness) -> Token[None]: """Set the Rx Pre-coding settings of the PHY. :param status: The status(Off/On/Auto) :type status: PreCodingStatus - :param endianess: Endianess type - :type endianess: Endianess + :param endianness: Endianness type + :type endianness: Endianness """ - return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex], status=status, endianess=endianess)) + return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex], status=status, endianness=endianness)) @register_command @dataclass @@ -2157,34 +2157,34 @@ class PP_TXPRECODING: class GetDataAttr(ResponseBodyStruct): status: PreCodingStatus = field(XmpInt()) """Status Off/On/Auto""" - endianess: Endianess = field(XmpInt()) - """Endianess Normal/Reverted(BigEndian/LittleEndian)) """ + endianness: Endianness = field(XmpInt()) + """Endianness Normal/Reverted(BigEndian/LittleEndian)) """ class SetDataAttr(RequestBodyStruct): status: PreCodingStatus = field(XmpInt()) """Status Off/On/Auto""" - endianess: Endianess = field(XmpInt()) - """Endianess Normal/Reverted(BigEndian/LittleEndian)) """ + endianness: Endianness = field(XmpInt()) + """Endianness Normal/Reverted(BigEndian/LittleEndian)) """ def get(self) -> Token[GetDataAttr]: """Get the Tx Pre-Coding Configurations. - :return: Tx Pre-Coding configurations including status, and endianess type. + :return: Tx Pre-Coding configurations including status, and endianness type. :rtype: PP_TXPRECODING.GetDataAttr """ return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex])) - def set(self, status: PreCodingStatus, endianess: Endianess) -> Token[None]: + def set(self, status: PreCodingStatus, endianness: Endianness) -> Token[None]: """Set the Tx Pre-coding settings of the PHY. :param status: The status(Off/On/Auto) :type status: PreCodingStatus - :param endianess: Endianess type - :type endianess: Endianess + :param endianness: Endianness type + :type endianness: Endianness """ - return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex], status=status, endianess=endianess)) + return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex], status=status, endianness=endianness)) @register_command @dataclass @@ -2204,34 +2204,34 @@ class PP_RXGRAYCODING: class GetDataAttr(ResponseBodyStruct): status: GrayCodingStatus = field(XmpInt()) """Status Off/On""" - endianess: Endianess = field(XmpInt()) - """Endianess Normal/Reverted(BigEndian/LittleEndian)) """ + endianness: Endianness = field(XmpInt()) + """Endianness Normal/Reverted(BigEndian/LittleEndian)) """ class SetDataAttr(RequestBodyStruct): status: GrayCodingStatus = field(XmpInt()) """Status Off/On""" - endianess: Endianess = field(XmpInt()) - """Endianess Normal/Reverted(BigEndian/LittleEndian)) """ + endianness: Endianness = field(XmpInt()) + """Endianness Normal/Reverted(BigEndian/LittleEndian)) """ def get(self) -> Token[GetDataAttr]: """Get the Rx Gray-Coding Configurations. - :return: Rx Gray-Coding configurations including status, and endianess type. + :return: Rx Gray-Coding configurations including status, and endianness type. :rtype: PP_RXGRAYCODING.GetDataAttr """ return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex])) - def set(self, status: GrayCodingStatus, endianess: Endianess) -> Token[None]: + def set(self, status: GrayCodingStatus, endianness: Endianness) -> Token[None]: """Set the Rx Gray-coding settings of the PHY. :param status: The status(Off/On) :type status: GrayCodingStatus - :param endianess: Endianess type - :type endianess: Endianess + :param endianness: Endianness type + :type endianness: Endianness """ - return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex], status=status, endianess=endianess)) + return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex], status=status, endianness=endianness)) @register_command @dataclass @@ -2251,31 +2251,31 @@ class PP_TXGRAYCODING: class GetDataAttr(ResponseBodyStruct): status: GrayCodingStatus = field(XmpInt()) """Status Off/On/Auto""" - endianess: Endianess = field(XmpInt()) - """Endianess Normal/Reverted(BigEndian/LittleEndian)) """ + endianness: Endianness = field(XmpInt()) + """Endianness Normal/Reverted(BigEndian/LittleEndian)) """ class SetDataAttr(RequestBodyStruct): status: GrayCodingStatus = field(XmpInt()) """Status Off/On/Auto""" - endianess: Endianess = field(XmpInt()) - """Endianess Normal/Reverted(BigEndian/LittleEndian)) """ + endianness: Endianness = field(XmpInt()) + """Endianness Normal/Reverted(BigEndian/LittleEndian)) """ def get(self) -> Token[GetDataAttr]: """Get the Tx Gray-Coding Configurations. - :return: Tx Gray-Coding configurations including status, and endianess type. + :return: Tx Gray-Coding configurations including status, and endianness type. :rtype: PP_TXGRAYCODING.GetDataAttr """ return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex])) - def set(self, status: GrayCodingStatus, endianess: Endianess) -> Token[None]: + def set(self, status: GrayCodingStatus, endianness: Endianness) -> Token[None]: """Set the Tx Gray-coding settings of the PHY. :param status: The status(Off/On/Auto) :type status: GrayCodingStatus - :param endianess: Endianess type - :type endianess: Endianess + :param endianness: Endianness type + :type endianness: Endianness """ - return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex], status=status, endianess=endianess)) \ No newline at end of file + return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex], status=status, endianness=endianness)) \ No newline at end of file From ed2971afd6afc2b3a74b9321d6ecbaacfd86c5b5 Mon Sep 17 00:00:00 2001 From: fpfeng Date: Wed, 28 Jun 2023 16:55:31 +0800 Subject: [PATCH 06/11] fix: remove typing for 3.8 Signed-off-by: fpfeng --- .../hli_v2/ports/port_l23/chimera/pe_custom_distribution.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_custom_distribution.py b/xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_custom_distribution.py index eca79edc..0c212fd8 100644 --- a/xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_custom_distribution.py +++ b/xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_custom_distribution.py @@ -56,7 +56,7 @@ async def delete(self) -> None: self.__observer.notify(observer.IndexEvents.DEL, self) -class CustomDistributions(UserDict[int, "CustomDistribution"]): +class CustomDistributions(UserDict): """Custom distributions""" def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None: From bc4a8b1da388d2d1df1c911e5e994181668002ed Mon Sep 17 00:00:00 2001 From: Artem Constantinov Date: Wed, 28 Jun 2023 17:22:05 +0800 Subject: [PATCH 07/11] format to pep8 --- xoa_driver/internals/commands/enums.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/xoa_driver/internals/commands/enums.py b/xoa_driver/internals/commands/enums.py index 470a6009..18f3a2d9 100644 --- a/xoa_driver/internals/commands/enums.py +++ b/xoa_driver/internals/commands/enums.py @@ -2458,34 +2458,37 @@ class AnLtLogControl(IntEnum): LOG_TYPE_FSM_LT_ALG1 = 0x800000 """link training algorithm -1 state machine transitions""" + class PreCodingStatus(IntEnum): """Rx/Tx Pre-Coding Status.""" - OFF = 0 + OFF = 0 """Off""" - ON = 1 + ON = 1 """On""" - AUTO = 2 + AUTO = 2 """Auto""" + class GrayCodingStatus(IntEnum): """Rx/Tx Gray-Coding Status.""" - OFF = 0 + OFF = 0 """Off""" - ON = 1 + ON = 1 """On""" + class Endianness(IntEnum): """Endianness (Big/Little Endian).""" - NORMAL = 0 + NORMAL = 0 """Big Endian""" - REVERTED = 1 + REVERTED = 1 """Little Endian""" # endregion From e412ec3af9f2973f6b46e09ebe973b2358f1ee34 Mon Sep 17 00:00:00 2001 From: Artem Constantinov Date: Wed, 28 Jun 2023 17:27:11 +0800 Subject: [PATCH 08/11] format to pep8 --- xoa_driver/internals/commands/enums.py | 5 +++++ xoa_driver/internals/commands/pp_commands.py | 1 + 2 files changed, 6 insertions(+) diff --git a/xoa_driver/internals/commands/enums.py b/xoa_driver/internals/commands/enums.py index 5b3b08f0..752c3b5c 100644 --- a/xoa_driver/internals/commands/enums.py +++ b/xoa_driver/internals/commands/enums.py @@ -2458,21 +2458,26 @@ class AnLtLogControl(IntEnum): LOG_TYPE_FSM_LT_ALG1 = 0x800000 """link training algorithm -1 state machine transitions""" + class RxEqExtCap(IntEnum): """Rx Equalizer Advanced Capability type.""" CTLE_LOW = 0 """CTLE low frequency.""" + CTLE_HIGH = 1 """CTLE high frequency.""" + class RxEqExtCapStatus(IntEnum): """Status for Rx Equalizer Advanced Capability.""" STATUS_AUTO = 0 """Auto.""" + STATUS_MANUAL = 1 """Manual.""" + STATUS_FREEZE = 2 """Freeze.""" diff --git a/xoa_driver/internals/commands/pp_commands.py b/xoa_driver/internals/commands/pp_commands.py index 2a8d6606..b70289f9 100644 --- a/xoa_driver/internals/commands/pp_commands.py +++ b/xoa_driver/internals/commands/pp_commands.py @@ -1904,6 +1904,7 @@ def set(self, status: RxEqExtCapStatus, value: int) -> Token[None]: return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex, self._capability_type], status=status, value=value)) + @register_command @dataclass class PP_AUTONEG: From 4b899fe4a12b4d2ec710e8f9bd7a77f526dc2348 Mon Sep 17 00:00:00 2001 From: Leonard Yu Date: Tue, 4 Jul 2023 13:09:22 +0200 Subject: [PATCH 09/11] Unifiy "serdes" param name --- xoa_driver/__init__.py | 2 +- xoa_driver/internals/hli_v1/ports/port_l23/family_i.py | 2 +- xoa_driver/internals/hli_v1/ports/port_l23/family_j.py | 2 +- xoa_driver/internals/hli_v1/ports/port_l23/family_k.py | 2 +- xoa_driver/internals/hli_v1/ports/port_l23/family_l.py | 2 +- xoa_driver/internals/hli_v1/ports/port_l23/family_l1.py | 4 ++-- xoa_driver/internals/hli_v2/ports/port_l23/family_l1.py | 4 ++-- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/xoa_driver/__init__.py b/xoa_driver/__init__.py index 4d969994..2b1ec24b 100644 --- a/xoa_driver/__init__.py +++ b/xoa_driver/__init__.py @@ -1,2 +1,2 @@ -__version__ = "2.1.1" +__version__ = "2.1.2" __short_version__ = "2.0" diff --git a/xoa_driver/internals/hli_v1/ports/port_l23/family_i.py b/xoa_driver/internals/hli_v1/ports/port_l23/family_i.py index 01250142..e7c924ba 100644 --- a/xoa_driver/internals/hli_v1/ports/port_l23/family_i.py +++ b/xoa_driver/internals/hli_v1/ports/port_l23/family_i.py @@ -50,7 +50,7 @@ class FamilyI(BasePortL23Genuine): :type: PcsPma """ - ser_des: Tuple[SerDes, ...] + serdes: Tuple[SerDes, ...] """SerDes index :type: Tuple[SerDes, ...] diff --git a/xoa_driver/internals/hli_v1/ports/port_l23/family_j.py b/xoa_driver/internals/hli_v1/ports/port_l23/family_j.py index b8bc6f64..2b513193 100644 --- a/xoa_driver/internals/hli_v1/ports/port_l23/family_j.py +++ b/xoa_driver/internals/hli_v1/ports/port_l23/family_j.py @@ -33,7 +33,7 @@ class FamilyJ(BasePortL23Genuine): :type: PcsPma """ - ser_des: Tuple[SerDes, ...] + serdes: Tuple[SerDes, ...] """SerDes index :type: Tuple[SerDes, ...] diff --git a/xoa_driver/internals/hli_v1/ports/port_l23/family_k.py b/xoa_driver/internals/hli_v1/ports/port_l23/family_k.py index d49087c1..4c38e837 100644 --- a/xoa_driver/internals/hli_v1/ports/port_l23/family_k.py +++ b/xoa_driver/internals/hli_v1/ports/port_l23/family_k.py @@ -33,7 +33,7 @@ class FamilyK(BasePortL23Genuine): :type: PcsPma """ - ser_des: Tuple[SerDes, ...] + serdes: Tuple[SerDes, ...] """SerDes index :type: Tuple[SerDes, ...] diff --git a/xoa_driver/internals/hli_v1/ports/port_l23/family_l.py b/xoa_driver/internals/hli_v1/ports/port_l23/family_l.py index 3f4020c4..53819ab6 100644 --- a/xoa_driver/internals/hli_v1/ports/port_l23/family_l.py +++ b/xoa_driver/internals/hli_v1/ports/port_l23/family_l.py @@ -35,7 +35,7 @@ class FamilyL(BasePortL23Genuine): :type: PcsPma """ - ser_des: Tuple[SerDes, ...] + serdes: Tuple[SerDes, ...] """SerDes index :type: Tuple[SerDes, ...] diff --git a/xoa_driver/internals/hli_v1/ports/port_l23/family_l1.py b/xoa_driver/internals/hli_v1/ports/port_l23/family_l1.py index 5b0cd241..3fc78ae1 100644 --- a/xoa_driver/internals/hli_v1/ports/port_l23/family_l1.py +++ b/xoa_driver/internals/hli_v1/ports/port_l23/family_l1.py @@ -38,7 +38,7 @@ class FamilyL1(BasePortL23Genuine): :type: PcsPma """ - ser_des: Tuple[SerDes, ...] + serdes: Tuple[SerDes, ...] """SerDes index :type: Tuple[SerDes, ...] @@ -57,7 +57,7 @@ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> Non async def _setup(self) -> Self: await super()._setup() self.pcs_pma = PcsPma(self._conn, self) - self.ser_des = tuple( + self.serdes = tuple( SerDes(self._conn, *self.kind, serdes_xindex=serdes_xindex) for serdes_xindex in range(self.info.capabilities.serdes_count) ) diff --git a/xoa_driver/internals/hli_v2/ports/port_l23/family_l1.py b/xoa_driver/internals/hli_v2/ports/port_l23/family_l1.py index 3cddcc52..16c7f8a9 100644 --- a/xoa_driver/internals/hli_v2/ports/port_l23/family_l1.py +++ b/xoa_driver/internals/hli_v2/ports/port_l23/family_l1.py @@ -31,7 +31,7 @@ def __init__(self, conn: "itf.IConnection", port) -> None: class FamilyL1(BasePortL23Genuine): pcs_pma: PcsPma - ser_des: Tuple[SerDes, ...] + serdes: Tuple[SerDes, ...] def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None: super().__init__(conn, module_id, port_id) @@ -45,7 +45,7 @@ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> Non async def _setup(self) -> Self: await super()._setup() self.pcs_pma = PcsPma(self._conn, self) - self.ser_des = tuple( + self.serdes = tuple( SerDes(self._conn, *self.kind, serdes_xindex=serdes_xindex) for serdes_xindex in range(self.info.capabilities.serdes_count) ) From 183482f518f7db3c9fa4f6bbebbbb3103b657f4f Mon Sep 17 00:00:00 2001 From: Leonard Yu Date: Wed, 5 Jul 2023 23:57:01 +0200 Subject: [PATCH 10/11] Fix PS_PFCPRIORITY and enum PFCMode --- xoa_driver/internals/commands/enums.py | 23 ++++++++++++++++--- xoa_driver/internals/commands/ps_commands.py | 24 ++++++++++---------- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/xoa_driver/internals/commands/enums.py b/xoa_driver/internals/commands/enums.py index ad493fab..f0b16e98 100644 --- a/xoa_driver/internals/commands/enums.py +++ b/xoa_driver/internals/commands/enums.py @@ -1192,10 +1192,27 @@ class MulticastHeaderFormat(IntEnum): class PFCMode(IntEnum): - """Priority Flow Control (PFC) Mode""" - + """The PFC CoS value of the stream""" + ZERO = 0 + """the PFC CoS value = 0""" + ONE = 1 + """the PFC CoS value = 1""" + TWO = 2 + """the PFC CoS value = 2""" + THREE = 3 + """the PFC CoS value = 3""" + FOUR = 4 + """the PFC CoS value = 4""" + FIVE = 5 + """the PFC CoS value = 5""" + SIX = 6 + """the PFC CoS value = 6""" + SEVEN = 7 + """the PFC CoS value = 7""" VLAN_PCP = 128 - """VLAN PCP""" + """PFC CoS value is automatically using the outer VLAN PCP value of the stream. If the VLAN field is missing, the stream won't have a PFC CoS.""" + OFF = 129 + """Remove PFC CoS value of the stream.""" class PRBSOnOff(IntEnum): diff --git a/xoa_driver/internals/commands/ps_commands.py b/xoa_driver/internals/commands/ps_commands.py index 579d4f87..55a20847 100644 --- a/xoa_driver/internals/commands/ps_commands.py +++ b/xoa_driver/internals/commands/ps_commands.py @@ -2078,7 +2078,7 @@ def set(self, hex_data: Hex) -> Token[None]: @dataclass class PS_PFCPRIORITY: """ - Set and get the Priority Flow Control (PFC) mode. + Set and get the Priority Flow Control (PFC) Cos value of a stream. """ code: typing.ClassVar[int] = 219 @@ -2090,27 +2090,27 @@ class PS_PFCPRIORITY: _stream_xindex: int class GetDataAttr(ResponseBodyStruct): - pcp: PFCMode = field(XmpByte()) - """coded byte, Priority Flow Control mode.""" + cos: PFCMode = field(XmpByte()) + """coded byte, the Priority Flow Control (PFC) Cos value of a stream.""" class SetDataAttr(RequestBodyStruct): - pcp: PFCMode = field(XmpByte()) - """coded byte, Priority Flow Control mode.""" + cos: PFCMode = field(XmpByte()) + """coded byte, the Priority Flow Control (PFC) Cos value of a stream.""" def get(self) -> Token[GetDataAttr]: - """Get the Priority Flow Control (PFC) mode of a stream. + """Get the the Priority Flow Control (PFC) Cos value of a stream. - :return: the Priority Flow Control mode of the stream + :return: the Priority Flow Control (PFC) Cos value of a stream. :rtype: PS_PFCPRIORITY.GetDataAttr """ return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._stream_xindex])) - def set(self, pcp: PFCMode) -> Token[None]: - """Set the Priority Flow Control (PFC) mode of a stream. + def set(self, cos: PFCMode) -> Token[None]: + """Set the Priority Flow Control (PFC) Cos value of a stream. - :param pcp: the Priority Flow Control mode of the stream - :type pcp: str + :param cos: the Priority Flow Control (PFC) Cos value of a stream. + :type cos: PFCMode """ - return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._stream_xindex], pcp=pcp)) + return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._stream_xindex], cos=cos)) From b9e6e87fb01806433e72257bc0d3327905c570fb Mon Sep 17 00:00:00 2001 From: ArtemConstantinov Date: Tue, 11 Jul 2023 10:04:20 +0800 Subject: [PATCH 11/11] #189 Hotfix: PR_TPLDS not being created correctly --- .../hli_v1/ports/port_l23/bases/port_reception_statistics.py | 2 +- .../hli_v2/ports/port_l23/bases/port_reception_statistics.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/xoa_driver/internals/hli_v1/ports/port_l23/bases/port_reception_statistics.py b/xoa_driver/internals/hli_v1/ports/port_l23/bases/port_reception_statistics.py index fa46d489..3c92222f 100644 --- a/xoa_driver/internals/hli_v1/ports/port_l23/bases/port_reception_statistics.py +++ b/xoa_driver/internals/hli_v1/ports/port_l23/bases/port_reception_statistics.py @@ -74,7 +74,7 @@ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> Non self.__module_id = module_id self.__port_id = port_id - self.__tpld_ids = PR_TPLDS(conn, module_id, module_id) + self.__tpld_ids = PR_TPLDS(conn, module_id, port_id) self.total = PR_TOTAL(conn, module_id, port_id) """L23 port's total traffic statistics. diff --git a/xoa_driver/internals/hli_v2/ports/port_l23/bases/port_reception_statistics.py b/xoa_driver/internals/hli_v2/ports/port_l23/bases/port_reception_statistics.py index 9d8743bf..e46b0333 100644 --- a/xoa_driver/internals/hli_v2/ports/port_l23/bases/port_reception_statistics.py +++ b/xoa_driver/internals/hli_v2/ports/port_l23/bases/port_reception_statistics.py @@ -60,7 +60,7 @@ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> Non self.__module_id = module_id self.__port_id = port_id - self.__tpld_ids = PR_TPLDS(conn, module_id, module_id) + self.__tpld_ids = PR_TPLDS(conn, module_id, port_id) self.total = PR_TOTAL(conn, module_id, port_id) """L23 port's total traffic statistics.