From d1cac5e5d0dd80f70c4c4088cebf152a7daa3f1e Mon Sep 17 00:00:00 2001 From: philo Date: Thu, 20 Mar 2025 19:17:42 +0800 Subject: [PATCH 01/15] Differentiate between copper cables and optical modules when updating pre-emphasis --- .../xcvrd_utilities/media_settings_parser.py | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/sonic-xcvrd/xcvrd/xcvrd_utilities/media_settings_parser.py b/sonic-xcvrd/xcvrd/xcvrd_utilities/media_settings_parser.py index 6a746c71f..4a3971f45 100644 --- a/sonic-xcvrd/xcvrd/xcvrd_utilities/media_settings_parser.py +++ b/sonic-xcvrd/xcvrd/xcvrd_utilities/media_settings_parser.py @@ -19,6 +19,7 @@ VENDOR_KEY = 'vendor_key' MEDIA_KEY = 'media_key' LANE_SPEED_KEY = 'lane_speed_key' +MEDIA_TYE_KEY = 'media_type_key' DEFAULT_KEY = 'Default' # This is useful if default value is desired when no match is found for lane speed key LANE_SPEED_DEFAULT_KEY = LANE_SPEED_KEY_PREFIX + DEFAULT_KEY @@ -138,12 +139,27 @@ def get_media_settings_key(physical_port, transceiver_dict, port_speed, lane_cou else: media_key += '-' + '*' + media_type_ex = "fiber" + try: + if (type(media_len) != int) and (type(media_len) != float): + media_len = None + for key, value in transceiver_dict[physical_port].items(): + if type(value) != str: + continue + if value.lower().find("copper") >=0: + media_type_ex = "copper" + break + except Exception as e: + helper_logger.log_error("Invalid value for port {}: {}".format(physical_port, str(e))) + helper_logger.log_error("media_type {}".format(media_type_ex)) + lane_speed_key = get_lane_speed_key(physical_port, port_speed, lane_count) # return (vendor_key, media_key, lane_speed_key) return { VENDOR_KEY: vendor_key, MEDIA_KEY: media_key, - LANE_SPEED_KEY: lane_speed_key + LANE_SPEED_KEY: lane_speed_key, + MEDIA_TYE_KEY: media_type_ex } @@ -263,6 +279,7 @@ def get_media_settings(key, media_dict): for keys in g_dict[PORT_MEDIA_SETTINGS_KEY]: if int(keys) == physical_port: media_dict = g_dict[PORT_MEDIA_SETTINGS_KEY][keys] + helper_logger.log_notice("port {} media_dict {}".format(physical_port, media_dict)) break if len(media_dict) == 0: @@ -280,6 +297,14 @@ def get_media_settings(key, media_dict): return get_media_settings_for_speed(media_dict[DEFAULT_KEY], lane_speed_key) elif len(default_dict) != 0: return default_dict + else: + if "copper" in key[MEDIA_TYE_KEY]: + media_dict = media_dict["copper"] + else: + media_dict = media_dict["fiber"] + helper_logger.log_notice("media_settings lane speed {}".format(lane_speed_key)) + helper_logger.log_notice("port {} media_dict {}".format(physical_port, media_dict)) + return get_media_settings_for_speed(media_dict, lane_speed_key) else: if len(default_dict) != 0: return default_dict From 272332ff4112271e1f9391feceaec03222e1b830 Mon Sep 17 00:00:00 2001 From: philo Date: Fri, 21 Mar 2025 12:09:58 +0800 Subject: [PATCH 02/15] fix test_xcvrd.py --- sonic-xcvrd/tests/test_xcvrd.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sonic-xcvrd/tests/test_xcvrd.py b/sonic-xcvrd/tests/test_xcvrd.py index 9149b6e8b..94674aa81 100644 --- a/sonic-xcvrd/tests/test_xcvrd.py +++ b/sonic-xcvrd/tests/test_xcvrd.py @@ -988,12 +988,12 @@ def test_get_media_settings_key(self, mock_is_cmis_api, mock_chassis): # Test a good 'specification_compliance' value result = media_settings_parser.get_media_settings_key(0, xcvr_info_dict, 100000, 2) - assert result == { 'vendor_key': 'MOLEX-1064141421', 'media_key': 'QSFP+-10GBase-SR-255M', 'lane_speed_key': 'speed:50G'} + assert result == { 'vendor_key': 'MOLEX-1064141421', 'media_type_key': 'fiber', 'media_key': 'QSFP+-10GBase-SR-255M', 'lane_speed_key': 'speed:50G'} # Test a bad 'specification_compliance' value xcvr_info_dict[0]['specification_compliance'] = 'N/A' result = media_settings_parser.get_media_settings_key(0, xcvr_info_dict, 100000, 2) - assert result == { 'vendor_key': 'MOLEX-1064141421', 'media_key': 'QSFP+-*', 'lane_speed_key': 'speed:50G'} + assert result == { 'vendor_key': 'MOLEX-1064141421', 'media_type_key': 'fiber', 'media_key': 'QSFP+-*', 'lane_speed_key': 'speed:50G'} # TODO: Ensure that error message was logged xcvr_info_dict_for_qsfp28 = { @@ -1022,6 +1022,7 @@ def test_get_media_settings_key(self, mock_is_cmis_api, mock_chassis): ) assert result == { "vendor_key": "AVAGO-XXX-YYY-ZZZ", + 'media_type_key': 'fiber', "media_key": "QSFP28-100GBASE-SR4 or 25GBASE-SR-50.0M", "lane_speed_key": "speed:25G", } @@ -1051,7 +1052,7 @@ def test_get_media_settings_key(self, mock_is_cmis_api, mock_chassis): mock_api.get_application_advertisement = MagicMock(return_value=mock_app_adv_value) result = media_settings_parser.get_media_settings_key(0, xcvr_info_dict, 100000, 2) - assert result == { 'vendor_key': 'MOLEX-1064141421', 'media_key': 'QSFP-DD-sm_media_interface', 'lane_speed_key': 'speed:100GBASE-CR2' } + assert result == { 'vendor_key': 'MOLEX-1064141421','media_type_key': 'fiber', 'media_key': 'QSFP-DD-sm_media_interface', 'lane_speed_key': 'speed:100GBASE-CR2' } @pytest.mark.parametrize("data_found, data, expected", [ (True, [('speed', '400000'), ('lanes', '1,2,3,4,5,6,7,8'), ('mtu', '9100')], (400000, 8, 0)), From 6f95cdcac5252b6c0d18afeeae44f25008c1f337 Mon Sep 17 00:00:00 2001 From: Philo <135693886+philo-micas@users.noreply.github.com> Date: Fri, 21 Mar 2025 12:47:06 +0800 Subject: [PATCH 03/15] Update test_xcvrd.py --- sonic-xcvrd/tests/test_xcvrd.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sonic-xcvrd/tests/test_xcvrd.py b/sonic-xcvrd/tests/test_xcvrd.py index 94674aa81..6d54145f5 100644 --- a/sonic-xcvrd/tests/test_xcvrd.py +++ b/sonic-xcvrd/tests/test_xcvrd.py @@ -982,18 +982,19 @@ def test_get_media_settings_key(self, mock_is_cmis_api, mock_chassis): 'cable_type': 'Length Cable Assembly(m)', 'cable_length': '255', 'specification_compliance': "{'10/40G Ethernet Compliance Code': '10GBase-SR'}", - 'type_abbrv_name': 'QSFP+' + 'type_abbrv_name': 'QSFP+', + 'media_type_key': 'copper' } } # Test a good 'specification_compliance' value result = media_settings_parser.get_media_settings_key(0, xcvr_info_dict, 100000, 2) - assert result == { 'vendor_key': 'MOLEX-1064141421', 'media_type_key': 'fiber', 'media_key': 'QSFP+-10GBase-SR-255M', 'lane_speed_key': 'speed:50G'} + assert result == { 'vendor_key': 'MOLEX-1064141421', 'media_key': 'QSFP+-10GBase-SR-255M', 'lane_speed_key': 'speed:50G', 'media_type_key': 'copper'} # Test a bad 'specification_compliance' value xcvr_info_dict[0]['specification_compliance'] = 'N/A' result = media_settings_parser.get_media_settings_key(0, xcvr_info_dict, 100000, 2) - assert result == { 'vendor_key': 'MOLEX-1064141421', 'media_type_key': 'fiber', 'media_key': 'QSFP+-*', 'lane_speed_key': 'speed:50G'} + assert result == { 'vendor_key': 'MOLEX-1064141421', 'media_type_key': 'fiber', 'media_key': 'QSFP+-*', 'lane_speed_key': 'speed:50G', 'media_type_key': 'copper'} # TODO: Ensure that error message was logged xcvr_info_dict_for_qsfp28 = { @@ -1025,6 +1026,7 @@ def test_get_media_settings_key(self, mock_is_cmis_api, mock_chassis): 'media_type_key': 'fiber', "media_key": "QSFP28-100GBASE-SR4 or 25GBASE-SR-50.0M", "lane_speed_key": "speed:25G", + 'media_type_key': 'copper', } mock_is_cmis_api.return_value = True @@ -1052,7 +1054,7 @@ def test_get_media_settings_key(self, mock_is_cmis_api, mock_chassis): mock_api.get_application_advertisement = MagicMock(return_value=mock_app_adv_value) result = media_settings_parser.get_media_settings_key(0, xcvr_info_dict, 100000, 2) - assert result == { 'vendor_key': 'MOLEX-1064141421','media_type_key': 'fiber', 'media_key': 'QSFP-DD-sm_media_interface', 'lane_speed_key': 'speed:100GBASE-CR2' } + assert result == { 'vendor_key': 'MOLEX-1064141421','media_type_key': 'fiber', 'media_key': 'QSFP-DD-sm_media_interface', 'lane_speed_key': 'speed:100GBASE-CR2' ,'media_type_key': 'copper'} @pytest.mark.parametrize("data_found, data, expected", [ (True, [('speed', '400000'), ('lanes', '1,2,3,4,5,6,7,8'), ('mtu', '9100')], (400000, 8, 0)), From a6bb6c3fd75d551adc4c39b8f77c488ae1221971 Mon Sep 17 00:00:00 2001 From: Philo <135693886+philo-micas@users.noreply.github.com> Date: Fri, 21 Mar 2025 12:48:33 +0800 Subject: [PATCH 04/15] Update test_xcvrd.py --- sonic-xcvrd/tests/test_xcvrd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonic-xcvrd/tests/test_xcvrd.py b/sonic-xcvrd/tests/test_xcvrd.py index 6d54145f5..739631bdb 100644 --- a/sonic-xcvrd/tests/test_xcvrd.py +++ b/sonic-xcvrd/tests/test_xcvrd.py @@ -994,7 +994,7 @@ def test_get_media_settings_key(self, mock_is_cmis_api, mock_chassis): # Test a bad 'specification_compliance' value xcvr_info_dict[0]['specification_compliance'] = 'N/A' result = media_settings_parser.get_media_settings_key(0, xcvr_info_dict, 100000, 2) - assert result == { 'vendor_key': 'MOLEX-1064141421', 'media_type_key': 'fiber', 'media_key': 'QSFP+-*', 'lane_speed_key': 'speed:50G', 'media_type_key': 'copper'} + assert result == { 'vendor_key': 'MOLEX-1064141421', 'media_key': 'QSFP+-*', 'lane_speed_key': 'speed:50G', 'media_type_key': 'copper'} # TODO: Ensure that error message was logged xcvr_info_dict_for_qsfp28 = { From 5a98f47d429dcae458ec1fe1baa2c9c14dbcffba Mon Sep 17 00:00:00 2001 From: Philo <135693886+philo-micas@users.noreply.github.com> Date: Fri, 21 Mar 2025 12:49:23 +0800 Subject: [PATCH 05/15] Update test_xcvrd.py --- sonic-xcvrd/tests/test_xcvrd.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sonic-xcvrd/tests/test_xcvrd.py b/sonic-xcvrd/tests/test_xcvrd.py index 739631bdb..f72d54248 100644 --- a/sonic-xcvrd/tests/test_xcvrd.py +++ b/sonic-xcvrd/tests/test_xcvrd.py @@ -1023,7 +1023,6 @@ def test_get_media_settings_key(self, mock_is_cmis_api, mock_chassis): ) assert result == { "vendor_key": "AVAGO-XXX-YYY-ZZZ", - 'media_type_key': 'fiber', "media_key": "QSFP28-100GBASE-SR4 or 25GBASE-SR-50.0M", "lane_speed_key": "speed:25G", 'media_type_key': 'copper', @@ -1054,7 +1053,7 @@ def test_get_media_settings_key(self, mock_is_cmis_api, mock_chassis): mock_api.get_application_advertisement = MagicMock(return_value=mock_app_adv_value) result = media_settings_parser.get_media_settings_key(0, xcvr_info_dict, 100000, 2) - assert result == { 'vendor_key': 'MOLEX-1064141421','media_type_key': 'fiber', 'media_key': 'QSFP-DD-sm_media_interface', 'lane_speed_key': 'speed:100GBASE-CR2' ,'media_type_key': 'copper'} + assert result == { 'vendor_key': 'MOLEX-1064141421', 'media_key': 'QSFP-DD-sm_media_interface', 'lane_speed_key': 'speed:100GBASE-CR2' ,'media_type_key': 'copper'} @pytest.mark.parametrize("data_found, data, expected", [ (True, [('speed', '400000'), ('lanes', '1,2,3,4,5,6,7,8'), ('mtu', '9100')], (400000, 8, 0)), From 21931801b8632801262362516c8121fd441be2e3 Mon Sep 17 00:00:00 2001 From: Philo <135693886+philo-micas@users.noreply.github.com> Date: Fri, 21 Mar 2025 14:03:36 +0800 Subject: [PATCH 06/15] Update test_xcvrd.py --- sonic-xcvrd/tests/test_xcvrd.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sonic-xcvrd/tests/test_xcvrd.py b/sonic-xcvrd/tests/test_xcvrd.py index f72d54248..a40ec26a9 100644 --- a/sonic-xcvrd/tests/test_xcvrd.py +++ b/sonic-xcvrd/tests/test_xcvrd.py @@ -1016,6 +1016,7 @@ def test_get_media_settings_key(self, mock_is_cmis_api, mock_chassis): "vendor_date": "2020-11-11", "vendor_oui": "00-77-7a", "application_advertisement": "N/A", + "media_type_key": 'copper', } } result = media_settings_parser.get_media_settings_key( @@ -1036,7 +1037,8 @@ def test_get_media_settings_key(self, mock_is_cmis_api, mock_chassis): 'cable_type': 'Length Cable Assembly(m)', 'cable_length': '255', 'specification_compliance': "sm_media_interface", - 'type_abbrv_name': 'QSFP-DD' + 'type_abbrv_name': 'QSFP-DD', + "media_type_key": 'copper' } } From b097d556e24338c82ab06eb8c038eba1ea20d71c Mon Sep 17 00:00:00 2001 From: Philo <135693886+philo-micas@users.noreply.github.com> Date: Fri, 21 Mar 2025 14:35:16 +0800 Subject: [PATCH 07/15] Update test_xcvrd.py --- sonic-xcvrd/tests/test_xcvrd.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sonic-xcvrd/tests/test_xcvrd.py b/sonic-xcvrd/tests/test_xcvrd.py index a40ec26a9..1dd183f09 100644 --- a/sonic-xcvrd/tests/test_xcvrd.py +++ b/sonic-xcvrd/tests/test_xcvrd.py @@ -983,16 +983,17 @@ def test_get_media_settings_key(self, mock_is_cmis_api, mock_chassis): 'cable_length': '255', 'specification_compliance': "{'10/40G Ethernet Compliance Code': '10GBase-SR'}", 'type_abbrv_name': 'QSFP+', - 'media_type_key': 'copper' + 'media_type_key': 'fiber' } } # Test a good 'specification_compliance' value result = media_settings_parser.get_media_settings_key(0, xcvr_info_dict, 100000, 2) - assert result == { 'vendor_key': 'MOLEX-1064141421', 'media_key': 'QSFP+-10GBase-SR-255M', 'lane_speed_key': 'speed:50G', 'media_type_key': 'copper'} + assert result == { 'vendor_key': 'MOLEX-1064141421', 'media_key': 'QSFP+-10GBase-SR-255M', 'lane_speed_key': 'speed:50G', 'media_type_key': 'fiber'} # Test a bad 'specification_compliance' value xcvr_info_dict[0]['specification_compliance'] = 'N/A' + xcvr_info_dict[0]['media_type_key'] = 'copper' result = media_settings_parser.get_media_settings_key(0, xcvr_info_dict, 100000, 2) assert result == { 'vendor_key': 'MOLEX-1064141421', 'media_key': 'QSFP+-*', 'lane_speed_key': 'speed:50G', 'media_type_key': 'copper'} # TODO: Ensure that error message was logged From 39a787386ae244e1e7a9f75c05bf3a97cf6e8076 Mon Sep 17 00:00:00 2001 From: philo Date: Fri, 21 Mar 2025 15:30:38 +0800 Subject: [PATCH 08/15] update tests/media_settings.json --- sonic-xcvrd/tests/media_settings.json | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/sonic-xcvrd/tests/media_settings.json b/sonic-xcvrd/tests/media_settings.json index 8bdc0e7aa..741429294 100644 --- a/sonic-xcvrd/tests/media_settings.json +++ b/sonic-xcvrd/tests/media_settings.json @@ -436,6 +436,28 @@ "lane3":"0x144808" } } + }, + "33": { + "fiber": { + "speed:50G": { + "preemphasis": { + "lane0":"0x144808", + "lane1":"0x144808", + "lane2":"0x144808", + "lane3":"0x144808" + } + } + }, + "copper": { + "speed:50G": { + "preemphasis": { + "lane0":"0x144808", + "lane1":"0x144808", + "lane2":"0x144808", + "lane3":"0x144808" + } + } + } } } } From e109ca0ec4ffa7348ff9ff3823f1226b4d758821 Mon Sep 17 00:00:00 2001 From: Philo <135693886+philo-micas@users.noreply.github.com> Date: Fri, 21 Mar 2025 17:15:33 +0800 Subject: [PATCH 09/15] Update media_settings.json --- sonic-xcvrd/tests/media_settings.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sonic-xcvrd/tests/media_settings.json b/sonic-xcvrd/tests/media_settings.json index 741429294..46f6d7a99 100644 --- a/sonic-xcvrd/tests/media_settings.json +++ b/sonic-xcvrd/tests/media_settings.json @@ -41,9 +41,9 @@ "lane3":"0x1A400A" } }, - "QSFP28-40GBASE-CR4-7M":{ + "QSFP28-40GBASE-CR4-7M": "preemphasis": { - "lane0":"0x1A400A", + "lane0":"0x1A400A"。 "lane1":"0x1A400A", "lane2":"0x1A400A", "lane3":"0x1A400A" From 57bf84900b5b695fccbd1980acbcd6d746e5927f Mon Sep 17 00:00:00 2001 From: Philo <135693886+philo-micas@users.noreply.github.com> Date: Fri, 21 Mar 2025 17:27:16 +0800 Subject: [PATCH 10/15] Update media_settings.json --- sonic-xcvrd/tests/media_settings.json | 32 +++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/sonic-xcvrd/tests/media_settings.json b/sonic-xcvrd/tests/media_settings.json index 46f6d7a99..35f0313d1 100644 --- a/sonic-xcvrd/tests/media_settings.json +++ b/sonic-xcvrd/tests/media_settings.json @@ -41,9 +41,9 @@ "lane3":"0x1A400A" } }, - "QSFP28-40GBASE-CR4-7M": + "QSFP28-40GBASE-CR4-7M":{ "preemphasis": { - "lane0":"0x1A400A"。 + "lane0":"0x1A400A", "lane1":"0x1A400A", "lane2":"0x1A400A", "lane3":"0x1A400A" @@ -437,25 +437,25 @@ } } }, - "33": { + "33": { "fiber": { "speed:50G": { "preemphasis": { - "lane0":"0x144808", - "lane1":"0x144808", - "lane2":"0x144808", - "lane3":"0x144808" - } - } - }, + "lane0":"0x144808", + "lane1":"0x144808", + "lane2":"0x144808", + "lane3":"0x144808" + } + } + }, "copper": { - "speed:50G": { + "speed:50G": { "preemphasis": { - "lane0":"0x144808", - "lane1":"0x144808", - "lane2":"0x144808", - "lane3":"0x144808" - } + "lane0":"0x144808", + "lane1":"0x144808", + "lane2":"0x144808", + "lane3":"0x144808" + } } } } From b4c98a322fc5a32ba0b358a46dcb735889dc015d Mon Sep 17 00:00:00 2001 From: Philo <135693886+philo-micas@users.noreply.github.com> Date: Fri, 21 Mar 2025 17:51:18 +0800 Subject: [PATCH 11/15] Update test_xcvrd.py --- sonic-xcvrd/tests/test_xcvrd.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sonic-xcvrd/tests/test_xcvrd.py b/sonic-xcvrd/tests/test_xcvrd.py index 1dd183f09..6886c83ca 100644 --- a/sonic-xcvrd/tests/test_xcvrd.py +++ b/sonic-xcvrd/tests/test_xcvrd.py @@ -47,6 +47,10 @@ global_media_settings = media_settings_with_comma_dict['GLOBAL_MEDIA_SETTINGS'].pop('1-32') media_settings_with_comma_dict['GLOBAL_MEDIA_SETTINGS']['1-5,6,7-20,21-32'] = global_media_settings +port_settings_with_comma_dict = copy.deepcopy(media_settings_dict) +port_media_settings = port_settings_with_comma_dict['PORT_MEDIA_SETTINGS'].pop('33') +port_settings_with_comma_dict['GLOBAL_MEDIA_SETTINGS']['33'] = port_media_settings + media_settings_with_regular_expression_dict = copy.deepcopy(media_settings_dict) media_settings_with_regular_expression_dict['GLOBAL_MEDIA_SETTINGS']['1-32'] = {} # Generate regular expression patterns for QSFP28-40GBASE-CR4-xxM and QSFP+-40GBASE-CR4-xxM that have the same pre-emphasis value @@ -1158,7 +1162,8 @@ def test_is_si_per_speed_supported(self): (media_settings_empty, 7, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'speed:100GAUI-2'}, {}), (media_settings_with_regular_expression_dict, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP28-40GBASE-CR4-1M', 'lane_speed_key': 'UNKOWN'}, {'preemphasis': {'lane0': '0x16440A', 'lane1': '0x16440A', 'lane2': '0x16440A', 'lane3': '0x16440A'}}), (media_settings_with_regular_expression_dict, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP+-40GBASE-CR4-2M', 'lane_speed_key': 'UNKOWN'}, {'preemphasis': {'lane0': '0x18420A', 'lane1': '0x18420A', 'lane2': '0x18420A', 'lane3': '0x18420A'}}), - (media_settings_with_regular_expression_dict, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP+-40GBASE-CR4-10M', 'lane_speed_key': 'UNKOWN'}, {'preemphasis': {'lane0': '0x1A400A', 'lane1': '0x1A400A', 'lane2': '0x1A400A', 'lane3': '0x1A400A'}}) + (media_settings_with_regular_expression_dict, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP+-40GBASE-CR4-10M', 'lane_speed_key': 'UNKOWN'}, {'preemphasis': {'lane0': '0x1A400A', 'lane1': '0x1A400A', 'lane2': '0x1A400A', 'lane3': '0x1A400A'}}), + (port_settings_with_comma_dict, 33, {'vendor_key': 'UNKOWN', 'media_key': 'UNKOWN', 'lane_speed_key': 'speed:50G', 'media_type_key': 'fiber'}, {'preemphasis': {'lane0': '0x144808', 'lane1': '0x144808', 'lane2': '0x144808', 'lane3': '0x144808'}}) ]) def test_get_media_settings_value(self, media_settings_dict, port, key, expected): with patch('xcvrd.xcvrd_utilities.media_settings_parser.g_dict', media_settings_dict): From 70dfa5c47043b0f13c47ea16010857f58fdfa4e7 Mon Sep 17 00:00:00 2001 From: Philo <135693886+philo-micas@users.noreply.github.com> Date: Fri, 21 Mar 2025 18:09:14 +0800 Subject: [PATCH 12/15] Update test_xcvrd.py --- sonic-xcvrd/tests/test_xcvrd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonic-xcvrd/tests/test_xcvrd.py b/sonic-xcvrd/tests/test_xcvrd.py index 6886c83ca..8584e1211 100644 --- a/sonic-xcvrd/tests/test_xcvrd.py +++ b/sonic-xcvrd/tests/test_xcvrd.py @@ -49,7 +49,7 @@ port_settings_with_comma_dict = copy.deepcopy(media_settings_dict) port_media_settings = port_settings_with_comma_dict['PORT_MEDIA_SETTINGS'].pop('33') -port_settings_with_comma_dict['GLOBAL_MEDIA_SETTINGS']['33'] = port_media_settings +port_settings_with_comma_dict['PORT_MEDIA_SETTINGS']['33'] = port_media_settings media_settings_with_regular_expression_dict = copy.deepcopy(media_settings_dict) media_settings_with_regular_expression_dict['GLOBAL_MEDIA_SETTINGS']['1-32'] = {} From 9e7065df3c264f1ff34467c858e321ff33924ab6 Mon Sep 17 00:00:00 2001 From: Philo <135693886+micas-net@users.noreply.github.com> Date: Thu, 15 May 2025 09:52:30 +0800 Subject: [PATCH 13/15] Update media_settings_parser.py --- sonic-xcvrd/xcvrd/xcvrd_utilities/media_settings_parser.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sonic-xcvrd/xcvrd/xcvrd_utilities/media_settings_parser.py b/sonic-xcvrd/xcvrd/xcvrd_utilities/media_settings_parser.py index 4a3971f45..8ff2e17f4 100644 --- a/sonic-xcvrd/xcvrd/xcvrd_utilities/media_settings_parser.py +++ b/sonic-xcvrd/xcvrd/xcvrd_utilities/media_settings_parser.py @@ -19,7 +19,7 @@ VENDOR_KEY = 'vendor_key' MEDIA_KEY = 'media_key' LANE_SPEED_KEY = 'lane_speed_key' -MEDIA_TYE_KEY = 'media_type_key' +MEDIA_TYPE_KEY = 'media_type_key' DEFAULT_KEY = 'Default' # This is useful if default value is desired when no match is found for lane speed key LANE_SPEED_DEFAULT_KEY = LANE_SPEED_KEY_PREFIX + DEFAULT_KEY @@ -159,7 +159,7 @@ def get_media_settings_key(physical_port, transceiver_dict, port_speed, lane_cou VENDOR_KEY: vendor_key, MEDIA_KEY: media_key, LANE_SPEED_KEY: lane_speed_key, - MEDIA_TYE_KEY: media_type_ex + MEDIA_TYPE_KEY: media_type_ex } @@ -298,7 +298,7 @@ def get_media_settings(key, media_dict): elif len(default_dict) != 0: return default_dict else: - if "copper" in key[MEDIA_TYE_KEY]: + if "copper" in key[MEDIA_TYPE_KEY]: media_dict = media_dict["copper"] else: media_dict = media_dict["fiber"] From 1d1aaf9bef206f4d75e686f3c067f8703d7931c0 Mon Sep 17 00:00:00 2001 From: Philo <135693886+micas-net@users.noreply.github.com> Date: Thu, 15 May 2025 12:33:18 +0800 Subject: [PATCH 14/15] Update test_xcvrd.py --- sonic-xcvrd/tests/test_xcvrd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonic-xcvrd/tests/test_xcvrd.py b/sonic-xcvrd/tests/test_xcvrd.py index 2839ef63b..3997a5120 100644 --- a/sonic-xcvrd/tests/test_xcvrd.py +++ b/sonic-xcvrd/tests/test_xcvrd.py @@ -1412,7 +1412,7 @@ def test_is_si_per_speed_supported(self): (media_settings_with_regular_expression_dict, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP+-40GBASE-CR4-10M', 'lane_speed_key': 'UNKOWN', 'medium_lane_speed_key': 'COPPER50'}, {'preemphasis': {'lane0': '0x1A400A', 'lane1': '0x1A400A', 'lane2': '0x1A400A', 'lane3': '0x1A400A'}}), (media_settings_global_medium_lane_key, 7, {'vendor_key': 'MISSING', 'media_key': 'MISSING', 'lane_speed_key': 'MISSING', 'medium_lane_speed_key': 'COPPER50'}, {'idriver': {'lane0': '0x0000000d', 'lane1': '0x0000000d', 'lane2': '0x0000000d', 'lane3': '0x0000000d'}, 'pre1': {'lane0': '0x0000000d', 'lane1': '0x0000000d', 'lane2': '0x0000000d', 'lane3': '0x0000000d'}, 'ob_m2lp': {'lane0': '0x0000000d', 'lane1': '0x0000000d', 'lane2': '0x0000000d', 'lane3': '0x0000000d'}}), (media_settings_port_medium_lane_key, 7, {'vendor_key': 'MISSING', 'media_key': 'MISSING', 'lane_speed_key': 'MISSING', 'medium_lane_speed_key': 'COPPER25'}, {'idriver': {'lane0': '0x0000000f', 'lane1': '0x0000000d', 'lane2': '0x0000000d', 'lane3': '0x0000000d'}, 'pre1': {'lane0': '0x0000000d', 'lane1': '0x0000000d', 'lane2': '0x0000000d', 'lane3': '0x0000000d'}, 'ob_m2lp': {'lane0': '0x0000000d', 'lane1': '0x0000000d', 'lane2': '0x0000000d', 'lane3': '0x0000000d'}}), - (port_settings_with_comma_dict, 33, {'vendor_key': 'UNKOWN', 'media_key': 'UNKOWN', 'lane_speed_key': 'speed:50G', 'medium_lane_speed_key': 'COPPER25, 'media_type_key': 'fiber'}, {'preemphasis': {'lane0': '0x144808', 'lane1': '0x144808', 'lane2': '0x144808', 'lane3': '0x144808'}}) + (port_settings_with_comma_dict, 33, {'vendor_key': 'UNKOWN', 'media_key': 'UNKOWN', 'lane_speed_key': 'speed:50G', 'media_type_key': 'fiber'}, {'preemphasis': {'lane0': '0x144808', 'lane1': '0x144808', 'lane2': '0x144808', 'lane3': '0x144808'}}) ]) def test_get_media_settings_value(self, media_settings_dict, port, key, expected): with patch('xcvrd.xcvrd_utilities.media_settings_parser.g_dict', media_settings_dict): From f2aa7c8b4eb0825886d00dcdb1336e6d339febe1 Mon Sep 17 00:00:00 2001 From: Philo <135693886+micas-net@users.noreply.github.com> Date: Thu, 15 May 2025 14:40:06 +0800 Subject: [PATCH 15/15] Update test_xcvrd.py --- sonic-xcvrd/tests/test_xcvrd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonic-xcvrd/tests/test_xcvrd.py b/sonic-xcvrd/tests/test_xcvrd.py index 3997a5120..6cf294015 100644 --- a/sonic-xcvrd/tests/test_xcvrd.py +++ b/sonic-xcvrd/tests/test_xcvrd.py @@ -1412,7 +1412,7 @@ def test_is_si_per_speed_supported(self): (media_settings_with_regular_expression_dict, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP+-40GBASE-CR4-10M', 'lane_speed_key': 'UNKOWN', 'medium_lane_speed_key': 'COPPER50'}, {'preemphasis': {'lane0': '0x1A400A', 'lane1': '0x1A400A', 'lane2': '0x1A400A', 'lane3': '0x1A400A'}}), (media_settings_global_medium_lane_key, 7, {'vendor_key': 'MISSING', 'media_key': 'MISSING', 'lane_speed_key': 'MISSING', 'medium_lane_speed_key': 'COPPER50'}, {'idriver': {'lane0': '0x0000000d', 'lane1': '0x0000000d', 'lane2': '0x0000000d', 'lane3': '0x0000000d'}, 'pre1': {'lane0': '0x0000000d', 'lane1': '0x0000000d', 'lane2': '0x0000000d', 'lane3': '0x0000000d'}, 'ob_m2lp': {'lane0': '0x0000000d', 'lane1': '0x0000000d', 'lane2': '0x0000000d', 'lane3': '0x0000000d'}}), (media_settings_port_medium_lane_key, 7, {'vendor_key': 'MISSING', 'media_key': 'MISSING', 'lane_speed_key': 'MISSING', 'medium_lane_speed_key': 'COPPER25'}, {'idriver': {'lane0': '0x0000000f', 'lane1': '0x0000000d', 'lane2': '0x0000000d', 'lane3': '0x0000000d'}, 'pre1': {'lane0': '0x0000000d', 'lane1': '0x0000000d', 'lane2': '0x0000000d', 'lane3': '0x0000000d'}, 'ob_m2lp': {'lane0': '0x0000000d', 'lane1': '0x0000000d', 'lane2': '0x0000000d', 'lane3': '0x0000000d'}}), - (port_settings_with_comma_dict, 33, {'vendor_key': 'UNKOWN', 'media_key': 'UNKOWN', 'lane_speed_key': 'speed:50G', 'media_type_key': 'fiber'}, {'preemphasis': {'lane0': '0x144808', 'lane1': '0x144808', 'lane2': '0x144808', 'lane3': '0x144808'}}) + (port_settings_with_comma_dict, 33, {'vendor_key': 'UNKOWN', 'media_key': 'UNKOWN', 'lane_speed_key': 'speed:50G', 'medium_lane_speed_key': 'COPPER25', 'media_type_key': 'fiber'}, {'preemphasis': {'lane0': '0x144808', 'lane1': '0x144808', 'lane2': '0x144808', 'lane3': '0x144808'}}) ]) def test_get_media_settings_value(self, media_settings_dict, port, key, expected): with patch('xcvrd.xcvrd_utilities.media_settings_parser.g_dict', media_settings_dict):