diff --git a/sonic-xcvrd/tests/test_xcvrd.py b/sonic-xcvrd/tests/test_xcvrd.py index e5b7d3180..36c8a4efa 100644 --- a/sonic-xcvrd/tests/test_xcvrd.py +++ b/sonic-xcvrd/tests/test_xcvrd.py @@ -90,6 +90,8 @@ asic_serdes_si_settings_example5_expected_value_in_db = \ {attr: ','.join(value_dict.values()) for attr, value_dict in asic_serdes_si_settings_example5.items()} +expected_media_settings_output_100G = {'pre1': {'lane0': '0x00000002', 'lane1': '0x00000002'}, 'main': {'lane0': '0x00000020', 'lane1': '0x00000020'}, 'post1': {'lane0': '0x00000006', 'lane1': '0x00000006'}, 'regn_bfm1n': {'lane0': '0x000000aa', 'lane1': '0x000000aa'}} + # Creating instances of media_settings.json for testing purposes # Each instance represents a different possible structure for media_settings.json. media_settings_global_range_media_key_lane_speed_si = copy.deepcopy(media_settings_extended_format_dict) @@ -169,6 +171,71 @@ 'speed:400GAUI-8': asic_serdes_si_settings_example2, } +# Create a media_settings.json with gearbox format +media_settings_gearbox_dict = copy.deepcopy(media_settings_extended_format_dict) +media_settings_values = media_settings_gearbox_dict['GLOBAL_MEDIA_SETTINGS'].pop('0-31') +media_settings_gearbox_dict['GEARBOX_GLOBAL_MEDIA_SETTINGS'] =\ +{ + '0-31': { + 'line': media_settings_values, + 'system': copy.deepcopy(media_settings_values) + } +} +del media_settings_gearbox_dict['GLOBAL_MEDIA_SETTINGS'] + +# Create instances of media_settings.json to test gearbox keys and lookups +media_settings_gb_global_range_media_key_lane_speed_si = copy.deepcopy(media_settings_gearbox_dict) + +media_settings_gb_global_range_media_key_si = copy.deepcopy(media_settings_gearbox_dict) +media_settings_gb_global_range_media_key_si['GEARBOX_GLOBAL_MEDIA_SETTINGS']['0-31']['line']['QSFP-DD-sm_media_interface'] = media_settings_gb_global_range_media_key_si['GEARBOX_GLOBAL_MEDIA_SETTINGS']['0-31']['line']['QSFP-DD-sm_media_interface'].pop('speed:400GAUI-8') +media_settings_gb_global_range_media_key_si['GEARBOX_GLOBAL_MEDIA_SETTINGS']['0-31']['line']['QSFP-DD-active_cable_media_interface'] = media_settings_gb_global_range_media_key_si['GEARBOX_GLOBAL_MEDIA_SETTINGS']['0-31']['line']['QSFP-DD-active_cable_media_interface'].pop('speed:100GAUI-2') +media_settings_gb_global_range_media_key_si['GEARBOX_GLOBAL_MEDIA_SETTINGS']['0-31']['system']['QSFP-DD-sm_media_interface'] = media_settings_gb_global_range_media_key_si['GEARBOX_GLOBAL_MEDIA_SETTINGS']['0-31']['system']['QSFP-DD-sm_media_interface'].pop('speed:400GAUI-8') +media_settings_gb_global_range_media_key_si['GEARBOX_GLOBAL_MEDIA_SETTINGS']['0-31']['system']['QSFP-DD-active_cable_media_interface'] = media_settings_gb_global_range_media_key_si['GEARBOX_GLOBAL_MEDIA_SETTINGS']['0-31']['system']['QSFP-DD-active_cable_media_interface'].pop('speed:100GAUI-2') + +media_settings_gb_global_range_generic_vendor_key_lane_speed_si = copy.deepcopy(media_settings_gearbox_dict) +media_settings_gb_global_range_generic_vendor_key_lane_speed_si['GEARBOX_GLOBAL_MEDIA_SETTINGS']['0-31']['line']['AMPHANOL-1234'] = media_settings_gb_global_range_generic_vendor_key_lane_speed_si['GEARBOX_GLOBAL_MEDIA_SETTINGS']['0-31']['line'].pop('QSFP-DD-sm_media_interface') +media_settings_gb_global_range_generic_vendor_key_lane_speed_si['GEARBOX_GLOBAL_MEDIA_SETTINGS']['0-31']['line']['GENERIC_VENDOR'] = media_settings_gb_global_range_generic_vendor_key_lane_speed_si['GEARBOX_GLOBAL_MEDIA_SETTINGS']['0-31']['line'].pop('QSFP-DD-active_cable_media_interface') + +media_settings_gb_global_list_media_key_lane_speed_si = copy.deepcopy(media_settings_gearbox_dict) +new_key = str(','.join([str(i) for i in range(32)])) +media_settings_gb_global_list_media_key_lane_speed_si['GEARBOX_GLOBAL_MEDIA_SETTINGS'][new_key] = media_settings_gb_global_list_media_key_lane_speed_si['GEARBOX_GLOBAL_MEDIA_SETTINGS'].pop('0-31') + +media_settings_gb_global_list_media_key_si = copy.deepcopy(media_settings_gb_global_range_media_key_si) +media_settings_gb_global_list_media_key_si['GEARBOX_GLOBAL_MEDIA_SETTINGS'][new_key] = media_settings_gb_global_list_media_key_si['GEARBOX_GLOBAL_MEDIA_SETTINGS'].pop('0-31') + +media_settings_gb_global_list_of_ranges_media_key_lane_speed_si = copy.deepcopy(media_settings_gearbox_dict) +media_settings_gb_global_list_of_ranges_media_key_lane_speed_si['GEARBOX_GLOBAL_MEDIA_SETTINGS']['0-15,16-31'] = media_settings_gb_global_list_of_ranges_media_key_lane_speed_si['GEARBOX_GLOBAL_MEDIA_SETTINGS'].pop('0-31') + +media_settings_gb_global_list_of_ranges_media_key_si = copy.deepcopy(media_settings_gb_global_range_media_key_si) +media_settings_gb_global_list_of_ranges_media_key_si['GEARBOX_GLOBAL_MEDIA_SETTINGS']['0-15,16-31'] = media_settings_gb_global_list_of_ranges_media_key_si['GEARBOX_GLOBAL_MEDIA_SETTINGS'].pop('0-31') + +media_settings_gb_port_media_key_lane_speed_si = copy.deepcopy(media_settings_gearbox_dict) +media_settings_gb_port_media_key_lane_speed_si['GEARBOX_PORT_MEDIA_SETTINGS'] = {'7': media_settings_gb_port_media_key_lane_speed_si['GEARBOX_GLOBAL_MEDIA_SETTINGS'].pop('0-31')} +del media_settings_gb_port_media_key_lane_speed_si['GEARBOX_GLOBAL_MEDIA_SETTINGS'] + +media_settings_gb_port_vendor_key_lane_speed_si = copy.deepcopy(media_settings_gb_port_media_key_lane_speed_si) +media_settings_gb_port_vendor_key_lane_speed_si['GEARBOX_PORT_MEDIA_SETTINGS']['7']['line']['AMPHANOL-1234'] = media_settings_gb_port_vendor_key_lane_speed_si['GEARBOX_PORT_MEDIA_SETTINGS']['7']['line'].pop('QSFP-DD-sm_media_interface') +media_settings_gb_port_vendor_key_lane_speed_si['GEARBOX_PORT_MEDIA_SETTINGS']['7']['line']['AMPHANOL-5678'] = media_settings_gb_port_vendor_key_lane_speed_si['GEARBOX_PORT_MEDIA_SETTINGS']['7']['line'].pop('QSFP-DD-active_cable_media_interface') + +media_settings_gb_global_default_port_media_key_lane_speed_si = copy.deepcopy(media_settings_gearbox_dict) +port_media_settings_data = {'7': {'line': media_settings_gb_global_default_port_media_key_lane_speed_si['GEARBOX_GLOBAL_MEDIA_SETTINGS'].pop('0-31')}} +media_settings_gb_global_default_port_media_key_lane_speed_si['GEARBOX_GLOBAL_MEDIA_SETTINGS'] = {'0-31': {'line': {'Default': asic_serdes_si_settings_example}}} +media_settings_gb_global_default_port_media_key_lane_speed_si['GEARBOX_PORT_MEDIA_SETTINGS'] = port_media_settings_data + +media_settings_gb_port_default_media_key_lane_speed_si = copy.deepcopy(media_settings_gb_port_media_key_lane_speed_si) +media_settings_gb_port_default_media_key_lane_speed_si['GEARBOX_PORT_MEDIA_SETTINGS']['7']['line']['Default'] = { + LANE_SPEED_DEFAULT_KEY: asic_serdes_si_settings_example, + 'speed:400GAUI-8': asic_serdes_si_settings_example2, +} + +media_settings_gb_global_missing = copy.deepcopy(media_settings_extended_format_dict) +media_settings_gb_global_missing['GEARBOX_GLOBAL_MEDIA_SETTINGS'] = {'0-31': {'system': {}}} +media_settings_gb_port_missing = copy.deepcopy(media_settings_extended_format_dict) +media_settings_gb_port_missing['GEARBOX_PORT_MEDIA_SETTINGS'] = {'7': {'system': {}}} + +media_settings_gb_global_default = copy.deepcopy(media_settings_extended_format_dict) +media_settings_gb_global_default['GEARBOX_GLOBAL_MEDIA_SETTINGS'] = {'0-31': {'line': {'Default': asic_serdes_si_settings_example}}} + media_settings_optic_copper_si = { 'GLOBAL_MEDIA_SETTINGS': { '0-31': { @@ -192,6 +259,33 @@ } } +media_settings_gb_default = { + 'GEARBOX_GLOBAL_MEDIA_SETTINGS': { + '1-32': { + 'line': { + 'Default': { + 'main': asic_serdes_si_value_dict4, + 'idriver': asic_serdes_si_value_dict3 + } + }, + 'system': { + 'Default': { + 'main': asic_serdes_si_value_dict5, + 'idriver': asic_serdes_si_value_dict3 + } + } + } + } +} + +gb_serdes_si_settings_example = {'line_tx_fir_main': asic_serdes_si_value_dict4, 'system_tx_fir_main': asic_serdes_si_value_dict5} +gb_serdes_si_settings_example_expected_value_in_db = \ + {attr: ','.join(list(value_dict.values())) for attr, value_dict in gb_serdes_si_settings_example.items()} + +media_settings_gb_default_val_str_preset = copy.deepcopy(media_settings_gb_default) +media_settings_gb_default_val_str_preset['GEARBOX_GLOBAL_MEDIA_SETTINGS']['1-32']['line']['Default']['main'] = gb_serdes_si_settings_example_expected_value_in_db['line_tx_fir_main'] +media_settings_gb_default_val_str_preset['GEARBOX_GLOBAL_MEDIA_SETTINGS']['1-32']['system']['Default']['main'] = gb_serdes_si_settings_example_expected_value_in_db['system_tx_fir_main'] + media_settings_empty = {} @@ -929,42 +1023,60 @@ def test_is_si_per_speed_supported(self): result = is_si_per_speed_supported(media_dict) assert result == False - @pytest.mark.parametrize("media_settings_dict, port, key, expected", [ - (media_settings_global_range_media_key_lane_speed_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'speed:100GAUI-2'}, {'pre1': {'lane0': '0x00000002', 'lane1': '0x00000002'}, 'main': {'lane0': '0x00000020', 'lane1': '0x00000020'}, 'post1': {'lane0': '0x00000006', 'lane1': '0x00000006'}, 'regn_bfm1n': {'lane0': '0x000000aa', 'lane1': '0x000000aa'}}), - (media_settings_global_range_media_key_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'UNKOWN'}, {'pre1': {'lane0': '0x00000002', 'lane1': '0x00000002'}, 'main': {'lane0': '0x00000020', 'lane1': '0x00000020'}, 'post1': {'lane0': '0x00000006', 'lane1': '0x00000006'}, 'regn_bfm1n': {'lane0': '0x000000aa', 'lane1': '0x000000aa'}}), - (media_settings_global_range_vendor_key_lane_speed_si, 7, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'UNKOWN', 'lane_speed_key': 'speed:100GAUI-2'}, {'pre1': {'lane0': '0x00000002', 'lane1': '0x00000002'}, 'main': {'lane0': '0x00000020', 'lane1': '0x00000020'}, 'post1': {'lane0': '0x00000006', 'lane1': '0x00000006'}, 'regn_bfm1n': {'lane0': '0x000000aa', 'lane1': '0x000000aa'}}), - (media_settings_global_range_vendor_key_lane_speed_si, 7, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'UNKOWN', 'lane_speed_key': 'MISSING'}, {}), - (media_settings_global_range_vendor_key_si, 7, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'UNKOWN', 'lane_speed_key': 'UNKOWN'}, {'pre1': {'lane0': '0x00000002', 'lane1': '0x00000002'}, 'main': {'lane0': '0x00000020', 'lane1': '0x00000020'}, 'post1': {'lane0': '0x00000006', 'lane1': '0x00000006'}, 'regn_bfm1n': {'lane0': '0x000000aa', 'lane1': '0x000000aa'}}), - (media_settings_global_range_generic_vendor_key_lane_speed_si, 7, {'vendor_key': 'GENERIC_VENDOR-1234', 'media_key': 'UNKOWN', 'lane_speed_key': 'speed:100GAUI-2'}, {'pre1': {'lane0': '0x00000002', 'lane1': '0x00000002'}, 'main': {'lane0': '0x00000020', 'lane1': '0x00000020'}, 'post1': {'lane0': '0x00000006', 'lane1': '0x00000006'}, 'regn_bfm1n': {'lane0': '0x000000aa', 'lane1': '0x000000aa'}}), - (media_settings_global_range_generic_vendor_key_lane_speed_si, 7, {'vendor_key': 'GENERIC_VENDOR-1234', 'media_key': 'UNKOWN', 'lane_speed_key': 'MISSING'}, {}), - (media_settings_global_range_generic_vendor_key_si, 7, {'vendor_key': 'GENERIC_VENDOR-1234', 'media_key': 'UNKOWN', 'lane_speed_key': 'UNKOWN'}, {'pre1': {'lane0': '0x00000002', 'lane1': '0x00000002'}, 'main': {'lane0': '0x00000020', 'lane1': '0x00000020'}, 'post1': {'lane0': '0x00000006', 'lane1': '0x00000006'}, 'regn_bfm1n': {'lane0': '0x000000aa', 'lane1': '0x000000aa'}}), - (media_settings_global_list_media_key_lane_speed_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'speed:100GAUI-2'}, {'pre1': {'lane0': '0x00000002', 'lane1': '0x00000002'}, 'main': {'lane0': '0x00000020', 'lane1': '0x00000020'}, 'post1': {'lane0': '0x00000006', 'lane1': '0x00000006'}, 'regn_bfm1n': {'lane0': '0x000000aa', 'lane1': '0x000000aa'}}), - (media_settings_global_list_media_key_lane_speed_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'MISSING'}, {}), - (media_settings_global_list_media_key_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'UNKOWN'}, {'pre1': {'lane0': '0x00000002', 'lane1': '0x00000002'}, 'main': {'lane0': '0x00000020', 'lane1': '0x00000020'}, 'post1': {'lane0': '0x00000006', 'lane1': '0x00000006'}, 'regn_bfm1n': {'lane0': '0x000000aa', 'lane1': '0x000000aa'}}), - (media_settings_global_list_of_ranges_media_key_lane_speed_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'speed:100GAUI-2'}, {'pre1': {'lane0': '0x00000002', 'lane1': '0x00000002'}, 'main': {'lane0': '0x00000020', 'lane1': '0x00000020'}, 'post1': {'lane0': '0x00000006', 'lane1': '0x00000006'}, 'regn_bfm1n': {'lane0': '0x000000aa', 'lane1': '0x000000aa'}}), - (media_settings_global_list_of_ranges_media_key_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'UNKOWN'}, {'pre1': {'lane0': '0x00000002', 'lane1': '0x00000002'}, 'main': {'lane0': '0x00000020', 'lane1': '0x00000020'}, 'post1': {'lane0': '0x00000006', 'lane1': '0x00000006'}, 'regn_bfm1n': {'lane0': '0x000000aa', 'lane1': '0x000000aa'}}), - (media_settings_global_default_port_media_key_lane_speed_si, 6, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'UNKOWN', 'lane_speed_key': 'speed:100GAUI-2'}, asic_serdes_si_settings_example), - (media_settings_port_vendor_key_lane_speed_si, -1, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'UNKOWN', 'lane_speed_key': 'speed:100GAUI-2'}, {}), - (media_settings_port_media_key_lane_speed_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'speed:100GAUI-2'}, {'pre1': {'lane0': '0x00000002', 'lane1': '0x00000002'}, 'main': {'lane0': '0x00000020', 'lane1': '0x00000020'}, 'post1': {'lane0': '0x00000006', 'lane1': '0x00000006'}, 'regn_bfm1n': {'lane0': '0x000000aa', 'lane1': '0x000000aa'}}), - (media_settings_port_media_key_lane_speed_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'MISSING'}, {}), - (media_settings_port_media_key_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'UNKOWN'}, {'pre1': {'lane0': '0x00000002', 'lane1': '0x00000002'}, 'main': {'lane0': '0x00000020', 'lane1': '0x00000020'}, 'post1': {'lane0': '0x00000006', 'lane1': '0x00000006'}, 'regn_bfm1n': {'lane0': '0x000000aa', 'lane1': '0x000000aa'}}), - (media_settings_port_vendor_key_lane_speed_si, 7, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'UNKOWN', 'lane_speed_key': 'speed:100GAUI-2'}, {'pre1': {'lane0': '0x00000002', 'lane1': '0x00000002'}, 'main': {'lane0': '0x00000020', 'lane1': '0x00000020'}, 'post1': {'lane0': '0x00000006', 'lane1': '0x00000006'}, 'regn_bfm1n': {'lane0': '0x000000aa', 'lane1': '0x000000aa'}}), - (media_settings_port_vendor_key_lane_speed_si, 7, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'UNKOWN', 'lane_speed_key': 'MISSING'}, {}), - (media_settings_port_generic_vendor_key_lane_speed_si, 7, {'vendor_key': 'GENERIC_VENDOR-1234', 'media_key': 'UNKOWN', 'lane_speed_key': 'speed:100GAUI-2'}, {'pre1': {'lane0': '0x00000002', 'lane1': '0x00000002'}, 'main': {'lane0': '0x00000020', 'lane1': '0x00000020'}, 'post1': {'lane0': '0x00000006', 'lane1': '0x00000006'}, 'regn_bfm1n': {'lane0': '0x000000aa', 'lane1': '0x000000aa'}}), - (media_settings_port_generic_vendor_key_lane_speed_si, 7, {'vendor_key': 'GENERIC_VENDOR-1234', 'media_key': 'UNKOWN', 'lane_speed_key': 'MISSING'}, {}), - (media_settings_port_vendor_key_si, 7, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'UNKOWN', 'lane_speed_key': 'UNKOWN'}, {'pre1': {'lane0': '0x00000002', 'lane1': '0x00000002'}, 'main': {'lane0': '0x00000020', 'lane1': '0x00000020'}, 'post1': {'lane0': '0x00000006', 'lane1': '0x00000006'}, 'regn_bfm1n': {'lane0': '0x000000aa', 'lane1': '0x000000aa'}}), - (media_settings_port_generic_vendor_key_si, 7, {'vendor_key': 'GENERIC_VENDOR-1234', 'media_key': 'UNKOWN', 'lane_speed_key': 'UNKOWN'}, {'pre1': {'lane0': '0x00000002', 'lane1': '0x00000002'}, 'main': {'lane0': '0x00000020', 'lane1': '0x00000020'}, 'post1': {'lane0': '0x00000006', 'lane1': '0x00000006'}, 'regn_bfm1n': {'lane0': '0x000000aa', 'lane1': '0x000000aa'}}), - (media_settings_port_default_media_key_lane_speed_si, 7, {'vendor_key': 'MISSING', 'media_key': 'MISSING', 'lane_speed_key': 'MISSING'}, asic_serdes_si_settings_example), - (media_settings_global_default_port_media_key_lane_speed_si, 7, {'vendor_key': 'MISSING', 'media_key': 'MISSING', 'lane_speed_key': 'MISSING'}, asic_serdes_si_settings_example), - (media_settings_global_list_of_ranges_media_key_lane_speed_si_with_default_section, 7, {'vendor_key': 'MISSING', 'media_key': 'MISSING', 'lane_speed_key': 'MISSING'}, asic_serdes_si_settings_example), - (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'}}) + @pytest.mark.parametrize("media_settings_dict, port, key, gearbox_side, expected", [ + (media_settings_global_range_media_key_lane_speed_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'speed:100GAUI-2'}, None, expected_media_settings_output_100G), + (media_settings_global_range_media_key_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'UNKOWN'}, None, expected_media_settings_output_100G), + (media_settings_global_range_vendor_key_lane_speed_si, 7, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'UNKOWN', 'lane_speed_key': 'speed:100GAUI-2'}, None, expected_media_settings_output_100G), + (media_settings_global_range_vendor_key_lane_speed_si, 7, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'UNKOWN', 'lane_speed_key': 'MISSING'}, None, {}), + (media_settings_global_range_vendor_key_si, 7, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'UNKOWN', 'lane_speed_key': 'UNKOWN'}, None, expected_media_settings_output_100G), + (media_settings_global_range_generic_vendor_key_lane_speed_si, 7, {'vendor_key': 'GENERIC_VENDOR-1234', 'media_key': 'UNKOWN', 'lane_speed_key': 'speed:100GAUI-2'}, None, expected_media_settings_output_100G), + (media_settings_global_range_generic_vendor_key_lane_speed_si, 7, {'vendor_key': 'GENERIC_VENDOR-1234', 'media_key': 'UNKOWN', 'lane_speed_key': 'MISSING'}, None, {}), + (media_settings_global_range_generic_vendor_key_si, 7, {'vendor_key': 'GENERIC_VENDOR-1234', 'media_key': 'UNKOWN', 'lane_speed_key': 'UNKOWN'}, None, expected_media_settings_output_100G), + (media_settings_global_list_media_key_lane_speed_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'speed:100GAUI-2'}, None, expected_media_settings_output_100G), + (media_settings_global_list_media_key_lane_speed_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'MISSING'}, None, {}), + (media_settings_global_list_media_key_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'UNKOWN'}, None, expected_media_settings_output_100G), + (media_settings_global_list_of_ranges_media_key_lane_speed_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'speed:100GAUI-2'}, None, expected_media_settings_output_100G), + (media_settings_global_list_of_ranges_media_key_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'UNKOWN'}, None, expected_media_settings_output_100G), + (media_settings_global_default_port_media_key_lane_speed_si, 6, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'UNKOWN', 'lane_speed_key': 'speed:100GAUI-2'}, None, asic_serdes_si_settings_example), + (media_settings_port_vendor_key_lane_speed_si, -1, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'UNKOWN', 'lane_speed_key': 'speed:100GAUI-2'}, None, {}), + (media_settings_port_media_key_lane_speed_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'speed:100GAUI-2'}, None, expected_media_settings_output_100G), + (media_settings_port_media_key_lane_speed_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'MISSING'}, None, {}), + (media_settings_port_media_key_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'UNKOWN'}, None, expected_media_settings_output_100G), + (media_settings_port_vendor_key_lane_speed_si, 7, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'UNKOWN', 'lane_speed_key': 'speed:100GAUI-2'}, None, expected_media_settings_output_100G), + (media_settings_port_vendor_key_lane_speed_si, 7, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'UNKOWN', 'lane_speed_key': 'MISSING'}, None, {}), + (media_settings_port_generic_vendor_key_lane_speed_si, 7, {'vendor_key': 'GENERIC_VENDOR-1234', 'media_key': 'UNKOWN', 'lane_speed_key': 'speed:100GAUI-2'}, None, expected_media_settings_output_100G), + (media_settings_port_generic_vendor_key_lane_speed_si, 7, {'vendor_key': 'GENERIC_VENDOR-1234', 'media_key': 'UNKOWN', 'lane_speed_key': 'MISSING'}, None, {}), + (media_settings_port_vendor_key_si, 7, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'UNKOWN', 'lane_speed_key': 'UNKOWN'}, None, expected_media_settings_output_100G), + (media_settings_port_generic_vendor_key_si, 7, {'vendor_key': 'GENERIC_VENDOR-1234', 'media_key': 'UNKOWN', 'lane_speed_key': 'UNKOWN'}, None, expected_media_settings_output_100G), + (media_settings_port_default_media_key_lane_speed_si, 7, {'vendor_key': 'MISSING', 'media_key': 'MISSING', 'lane_speed_key': 'MISSING'}, None, asic_serdes_si_settings_example), + (media_settings_global_default_port_media_key_lane_speed_si, 7, {'vendor_key': 'MISSING', 'media_key': 'MISSING', 'lane_speed_key': 'MISSING'}, None, asic_serdes_si_settings_example), + (media_settings_global_list_of_ranges_media_key_lane_speed_si_with_default_section, 7, {'vendor_key': 'MISSING', 'media_key': 'MISSING', 'lane_speed_key': 'MISSING'}, None, asic_serdes_si_settings_example), + (media_settings_empty, 7, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'speed:100GAUI-2'}, None, {}), + (media_settings_with_regular_expression_dict, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP28-40GBASE-CR4-1M', 'lane_speed_key': 'UNKOWN'}, None, {'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'}, None, {'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'}, None, {'preemphasis': {'lane0': '0x1A400A', 'lane1': '0x1A400A', 'lane2': '0x1A400A', 'lane3': '0x1A400A'}}), + (media_settings_gb_global_range_media_key_lane_speed_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'speed:100GAUI-2'}, 'line', expected_media_settings_output_100G), + (media_settings_gb_global_range_media_key_lane_speed_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'speed:100GAUI-2'}, 'system', expected_media_settings_output_100G), + (media_settings_gb_global_range_media_key_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'UNKOWN'}, 'line', expected_media_settings_output_100G), + (media_settings_gb_global_range_media_key_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'UNKOWN'}, 'system', expected_media_settings_output_100G), + (media_settings_gb_global_range_generic_vendor_key_lane_speed_si, 7, {'vendor_key': 'GENERIC_VENDOR-1234', 'media_key': 'UNKOWN', 'lane_speed_key': 'MISSING'}, 'line', {}), + (media_settings_gb_global_list_media_key_lane_speed_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'MISSING'}, 'line', {}), + (media_settings_gb_global_list_media_key_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'UNKOWN'}, 'line', expected_media_settings_output_100G), + (media_settings_gb_global_list_of_ranges_media_key_lane_speed_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'speed:100GAUI-2'}, 'line', expected_media_settings_output_100G), + (media_settings_gb_global_list_of_ranges_media_key_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'UNKOWN'}, 'line', expected_media_settings_output_100G), + (media_settings_gb_global_default_port_media_key_lane_speed_si, 6, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'UNKOWN', 'lane_speed_key': 'speed:100GAUI-2'}, 'line', asic_serdes_si_settings_example), + (media_settings_gb_port_vendor_key_lane_speed_si, -1, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'UNKOWN', 'lane_speed_key': 'speed:100GAUI-2'}, 'line', {}), + (media_settings_gb_port_media_key_lane_speed_si, 7, {'vendor_key': 'UNKOWN', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'speed:100GAUI-2'}, 'line', expected_media_settings_output_100G), + (media_settings_gb_port_default_media_key_lane_speed_si, 7, {'vendor_key': 'MISSING', 'media_key': 'MISSING', 'lane_speed_key': 'MISSING'}, 'line', asic_serdes_si_settings_example), + (media_settings_gb_global_default_port_media_key_lane_speed_si, 7, {'vendor_key': 'MISSING', 'media_key': 'MISSING', 'lane_speed_key': 'MISSING'}, 'line', asic_serdes_si_settings_example), + (media_settings_gb_global_missing, 7, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'speed:100GAUI-2'}, 'line', {}), + (media_settings_gb_port_missing, 7, {'vendor_key': 'AMPHANOL-5678', 'media_key': 'QSFP-DD-active_cable_media_interface', 'lane_speed_key': 'speed:100GAUI-2'}, 'line', {}), + (media_settings_gb_global_default, 7, {'vendor_key': 'MISSING', 'media_key': 'MISSING', 'lane_speed_key': 'MISSING'}, 'line', asic_serdes_si_settings_example), ]) - def test_get_media_settings_value(self, media_settings_dict, port, key, expected): + + def test_get_media_settings_value(self, media_settings_dict, port, key, gearbox_side, expected): with patch('xcvrd.xcvrd_utilities.media_settings_parser.g_dict', media_settings_dict): - result = media_settings_parser.get_media_settings_value(port, key) + result = media_settings_parser.get_media_settings_value(port, key, gearbox_side) assert result == expected @patch('xcvrd.xcvrd._wrapper_get_presence', MagicMock(return_value=True)) @@ -1015,6 +1127,14 @@ def test_notify_media_setting(self): with patch('xcvrd.xcvrd._wrapper_get_presence', MagicMock(return_value=False)): self._check_notify_media_setting(1) + # Test setting gearbox tunings and attribute filter + with patch('xcvrd.xcvrd_utilities.media_settings_parser.g_dict', media_settings_gb_default): + self._check_notify_media_setting(1, True, gb_serdes_si_settings_example_expected_value_in_db) + + # Test gearbox tunings with preset value string in media settings + with patch('xcvrd.xcvrd_utilities.media_settings_parser.g_dict', media_settings_gb_default_val_str_preset): + self._check_notify_media_setting(1, True, gb_serdes_si_settings_example_expected_value_in_db) + @patch('xcvrd.xcvrd._wrapper_get_presence', MagicMock(return_value=True)) @patch('xcvrd.xcvrd.XcvrTableHelper', MagicMock()) @patch('xcvrd.xcvrd.XcvrTableHelper.get_cfg_port_tbl', MagicMock()) diff --git a/sonic-xcvrd/xcvrd/xcvrd_utilities/media_settings_parser.py b/sonic-xcvrd/xcvrd/xcvrd_utilities/media_settings_parser.py index 6a746c71f..c9987b657 100644 --- a/sonic-xcvrd/xcvrd/xcvrd_utilities/media_settings_parser.py +++ b/sonic-xcvrd/xcvrd/xcvrd_utilities/media_settings_parser.py @@ -208,9 +208,13 @@ def get_media_settings_for_speed(settings_dict, lane_speed_key): return settings_dict.get(LANE_SPEED_DEFAULT_KEY, {}) -def get_media_settings_value(physical_port, key): +def get_media_settings_value(physical_port, key, gearbox_side=None): GLOBAL_MEDIA_SETTINGS_KEY = 'GLOBAL_MEDIA_SETTINGS' PORT_MEDIA_SETTINGS_KEY = 'PORT_MEDIA_SETTINGS' + GEARBOX_GLOBAL_MEDIA_SETTINGS_KEY = 'GEARBOX_GLOBAL_MEDIA_SETTINGS' + GEARBOX_PORT_MEDIA_SETTINGS_KEY = 'GEARBOX_PORT_MEDIA_SETTINGS' + LINE_SIDE_KEY = 'line' + SYSTEM_SIDE_KEY = 'system' RANGE_SEPARATOR = '-' COMMA_SEPARATOR = ',' media_dict = {} @@ -231,60 +235,133 @@ def get_media_settings(key, media_dict): # 1,2,3,4,5 # 1-4,9-12 - if GLOBAL_MEDIA_SETTINGS_KEY in g_dict: - for keys in g_dict[GLOBAL_MEDIA_SETTINGS_KEY]: - if COMMA_SEPARATOR in keys: - port_list = keys.split(COMMA_SEPARATOR) - for port in port_list: - if RANGE_SEPARATOR in port: - if xcvrd.check_port_in_range(port, physical_port): - media_dict = g_dict[GLOBAL_MEDIA_SETTINGS_KEY][keys] + if gearbox_side: + if GEARBOX_GLOBAL_MEDIA_SETTINGS_KEY in g_dict: + for keys in g_dict[GEARBOX_GLOBAL_MEDIA_SETTINGS_KEY]: + if COMMA_SEPARATOR in keys: + port_list = keys.split(COMMA_SEPARATOR) + for port in port_list: + if RANGE_SEPARATOR in port: + if xcvrd.check_port_in_range(port, physical_port): + media_dict = g_dict[GEARBOX_GLOBAL_MEDIA_SETTINGS_KEY][keys] + break + elif str(physical_port) == port: + media_dict = g_dict[GEARBOX_GLOBAL_MEDIA_SETTINGS_KEY][keys] break - elif str(physical_port) == port: - media_dict = g_dict[GLOBAL_MEDIA_SETTINGS_KEY][keys] - break - elif RANGE_SEPARATOR in keys: - if xcvrd.check_port_in_range(keys, physical_port): - media_dict = g_dict[GLOBAL_MEDIA_SETTINGS_KEY][keys] + elif RANGE_SEPARATOR in keys: + if xcvrd.check_port_in_range(keys, physical_port): + media_dict = g_dict[GEARBOX_GLOBAL_MEDIA_SETTINGS_KEY][keys] + + # gearbox tuning values must be either line-side or system-side + if gearbox_side == LINE_SIDE_KEY and LINE_SIDE_KEY in media_dict: + media_dict = media_dict[LINE_SIDE_KEY] + elif gearbox_side == SYSTEM_SIDE_KEY and SYSTEM_SIDE_KEY in media_dict: + media_dict = media_dict[SYSTEM_SIDE_KEY] + else: + return {} + + # If there is a match in the global profile for a media type, + # fetch those values + media_settings = get_media_settings(key, media_dict) + if media_settings is not None: + return media_settings + # Try to match 'default' key if it does not match any keys + elif DEFAULT_KEY in media_dict: + default_dict = get_media_settings_for_speed(media_dict[DEFAULT_KEY], lane_speed_key) + + media_dict = {} + + if GEARBOX_PORT_MEDIA_SETTINGS_KEY in g_dict: + for keys in g_dict[GEARBOX_PORT_MEDIA_SETTINGS_KEY]: + if int(keys) == physical_port: + media_dict = g_dict[GEARBOX_PORT_MEDIA_SETTINGS_KEY][keys] + break + + if len(media_dict) == 0: + if len(default_dict) != 0: + return default_dict + else: + helper_logger.log_notice("No values for physical port '{}'".format(physical_port)) + return {} + + # gearbox tuning values must be either line-side or system-side + if gearbox_side == LINE_SIDE_KEY and LINE_SIDE_KEY in media_dict: + media_dict = media_dict[LINE_SIDE_KEY] + elif gearbox_side == SYSTEM_SIDE_KEY and SYSTEM_SIDE_KEY in media_dict: + media_dict = media_dict[SYSTEM_SIDE_KEY] + else: + return {} - # If there is a match in the global profile for a media type, - # fetch those values media_settings = get_media_settings(key, media_dict) if media_settings is not None: return media_settings # Try to match 'default' key if it does not match any keys elif DEFAULT_KEY in media_dict: - default_dict = get_media_settings_for_speed(media_dict[DEFAULT_KEY], lane_speed_key) + return get_media_settings_for_speed(media_dict[DEFAULT_KEY], lane_speed_key) + elif len(default_dict) != 0: + return default_dict + else: + if len(default_dict) != 0: + return default_dict - media_dict = {} + return {} - if PORT_MEDIA_SETTINGS_KEY in g_dict: - for keys in g_dict[PORT_MEDIA_SETTINGS_KEY]: - if int(keys) == physical_port: - media_dict = g_dict[PORT_MEDIA_SETTINGS_KEY][keys] - break + else: + if GLOBAL_MEDIA_SETTINGS_KEY in g_dict: + for keys in g_dict[GLOBAL_MEDIA_SETTINGS_KEY]: + if COMMA_SEPARATOR in keys: + port_list = keys.split(COMMA_SEPARATOR) + for port in port_list: + if RANGE_SEPARATOR in port: + if xcvrd.check_port_in_range(port, physical_port): + media_dict = g_dict[GLOBAL_MEDIA_SETTINGS_KEY][keys] + break + elif str(physical_port) == port: + media_dict = g_dict[GLOBAL_MEDIA_SETTINGS_KEY][keys] + break + + elif RANGE_SEPARATOR in keys: + if xcvrd.check_port_in_range(keys, physical_port): + media_dict = g_dict[GLOBAL_MEDIA_SETTINGS_KEY][keys] - if len(media_dict) == 0: + # If there is a match in the global profile for a media type, + # fetch those values + media_settings = get_media_settings(key, media_dict) + if media_settings is not None: + return media_settings + # Try to match 'default' key if it does not match any keys + elif DEFAULT_KEY in media_dict: + default_dict = get_media_settings_for_speed(media_dict[DEFAULT_KEY], lane_speed_key) + + media_dict = {} + + if PORT_MEDIA_SETTINGS_KEY in g_dict: + for keys in g_dict[PORT_MEDIA_SETTINGS_KEY]: + if int(keys) == physical_port: + media_dict = g_dict[PORT_MEDIA_SETTINGS_KEY][keys] + break + + if len(media_dict) == 0: + if len(default_dict) != 0: + return default_dict + else: + helper_logger.log_notice("No values for physical port '{}'".format(physical_port)) + return {} + + media_settings = get_media_settings(key, media_dict) + if media_settings is not None: + return media_settings + # Try to match 'default' key if it does not match any keys + elif DEFAULT_KEY in 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 len(default_dict) != 0: return default_dict - else: - helper_logger.log_notice("No values for physical port '{}'".format(physical_port)) - return {} - - media_settings = get_media_settings(key, media_dict) - if media_settings is not None: - return media_settings - # Try to match 'default' key if it does not match any keys - elif DEFAULT_KEY in 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 len(default_dict) != 0: - return default_dict - return {} + return {} def get_speed_lane_count_and_subport(port, cfg_port_tbl): @@ -323,6 +400,19 @@ def notify_media_setting(logical_port_name, transceiver_dict, ganged_port = False ganged_member_num = 1 + LINE_SIDE_KEY = 'line' + SYSTEM_SIDE_KEY = 'system' + + # list of supported serdes attributes for tx_taps + tx_taps = [ + 'main', + 'post1', + 'post2', + 'post3', + 'pre1', + 'pre2', + 'pre3' + ] physical_port_list = port_mapping.logical_port_name_to_physical_port_list(logical_port_name) if physical_port_list is None: @@ -346,16 +436,33 @@ def notify_media_setting(logical_port_name, transceiver_dict, ganged_member_num += 1 key = get_media_settings_key(physical_port, transceiver_dict, port_speed, lane_count) helper_logger.log_notice("Retrieving media settings for port {} speed {} num_lanes {}, using key {}".format(logical_port_name, port_speed, lane_count, key)) + + # Acquire ASIC tuning values media_dict = get_media_settings_value(physical_port, key) - if len(media_dict) == 0: + # Acquire Line-Side gearbox tuning values + gb_line_media_dict = get_media_settings_value(physical_port, key, LINE_SIDE_KEY) + for media_key in list(gb_line_media_dict): + if media_key not in tx_taps: + gb_line_media_dict.pop(media_key) + + # Acquire System-Side gearbox tuning values + gb_system_media_dict = get_media_settings_value(physical_port, key, SYSTEM_SIDE_KEY) + for media_key in list(gb_system_media_dict): + if media_key not in tx_taps: + gb_system_media_dict.pop(media_key) + + media_dict_len = len(media_dict) + len(gb_line_media_dict) + len(gb_system_media_dict) + + if media_dict_len == 0: helper_logger.log_info("Error in obtaining media setting for {}".format(logical_port_name)) return - fvs = swsscommon.FieldValuePairs(len(media_dict)) + fvs = swsscommon.FieldValuePairs(media_dict_len) index = 0 - helper_logger.log_notice("Publishing ASIC-side SI setting for port {} in APP_DB:".format(logical_port_name)) + if len(media_dict) != 0: + helper_logger.log_notice("Publishing ASIC-side SI setting for port {} in APP_DB:".format(logical_port_name)) for media_key in media_dict: if type(media_dict[media_key]) is dict: val_str = get_serdes_si_setting_val_str(media_dict[media_key], lane_count, subport_num) @@ -365,7 +472,29 @@ def notify_media_setting(logical_port_name, transceiver_dict, fvs[index] = (str(media_key), str(val_str)) index += 1 + if len(gb_line_media_dict) != 0: + helper_logger.log_notice("Publishing line-side gearbox tunings for port {} in APP_DB:".format(logical_port_name)) + for media_key in gb_line_media_dict: + if type(gb_line_media_dict[media_key]) is dict: + val_str = get_serdes_si_setting_val_str(gb_line_media_dict[media_key], lane_count, subport_num) + else: + val_str = gb_line_media_dict[media_key] + helper_logger.log_notice("{}:({},{}) ".format(index, "line_tx_fir_" + str(media_key), str(val_str))) + fvs[index] = ("line_tx_fir_" + str(media_key), str(val_str)) + index += 1 + + if len(gb_system_media_dict) != 0: + helper_logger.log_notice("Publishing system-side gearbox tunings for port {} in APP_DB:".format(logical_port_name)) + for media_key in gb_system_media_dict: + if type(gb_system_media_dict[media_key]) is dict: + val_str = get_serdes_si_setting_val_str(gb_system_media_dict[media_key], lane_count, subport_num) + else: + val_str = gb_system_media_dict[media_key] + helper_logger.log_notice("{}:({},{}) ".format(index, "system_tx_fir_" + str(media_key), str(val_str))) + fvs[index] = ("system_tx_fir_" + str(media_key), str(val_str)) + index += 1 + xcvr_table_helper.get_app_port_tbl(asic_index).set(port_name, fvs) xcvr_table_helper.get_state_port_tbl(asic_index).set(logical_port_name, [(NPU_SI_SETTINGS_SYNC_STATUS_KEY, NPU_SI_SETTINGS_NOTIFIED_VALUE)]) - helper_logger.log_notice("Notify media setting: Published ASIC-side SI setting " + helper_logger.log_notice("Notify media setting: Published SI setting " "for lport {} in APP_DB".format(logical_port_name))