From a6c9e195df4cda11893dce752cd9c313847f0d37 Mon Sep 17 00:00:00 2001 From: "Richard.Yu" Date: Sun, 5 Jun 2022 08:08:36 -0700 Subject: [PATCH 1/9] [Tunnel PFC] Add property for tunnel PFC (#10962) * [Tunnel PFC] Add property for tunnel PFC Replace the config.bcm file with j2 template file - Add 'sai_remap_prio_on_tnl_egress=1' property when device metadata local - Host subtype is 'dualtor' - Change sai.profile foe the new config.bcm.j2 --- ...td3-a7050cx3-32s-32x100G.config.bcm => config.bcm.j2} | 9 +++++++++ .../Arista-7050CX3-32S-C32/sai.profile | 2 +- ...050cx3-32s-48x50G+8x100G.config.bcm => config.bcm.j2} | 9 +++++++++ .../Arista-7050CX3-32S-D48C8/sai.profile | 2 +- .../Arista-7260CX3-C64/config.bcm.j2 | 3 +++ .../Arista-7260CX3-D108C8/config.bcm.j2 | 5 ++++- .../Arista-7260CX3-Q64/config.bcm.j2 | 3 +++ 7 files changed, 30 insertions(+), 3 deletions(-) rename device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-C32/{td3-a7050cx3-32s-32x100G.config.bcm => config.bcm.j2} (97%) rename device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-D48C8/{td3-a7050cx3-32s-48x50G+8x100G.config.bcm => config.bcm.j2} (97%) diff --git a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-C32/td3-a7050cx3-32s-32x100G.config.bcm b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-C32/config.bcm.j2 similarity index 97% rename from device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-C32/td3-a7050cx3-32s-32x100G.config.bcm rename to device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-C32/config.bcm.j2 index 3b37d661f403..89a55175edc8 100644 --- a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-C32/td3-a7050cx3-32s-32x100G.config.bcm +++ b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-C32/config.bcm.j2 @@ -1,6 +1,15 @@ +{# Construct config.bcm to include additional soc properties per specific device metadata requirement #} +{%- set map_prio = '' -%} +{%- if DEVICE_METADATA is defined and DEVICE_METADATA['localhost'] is defined and DEVICE_METADATA['localhost']['subtype'] is defined -%} +{%- set switch_subtype = DEVICE_METADATA['localhost']['subtype'] -%} +{%- if 'dualtor' in switch_subtype.lower() %} +{%- set map_prio = 'sai_remap_prio_on_tnl_egress=1' -%} +{%- endif %} +{%- endif %} sai_load_hw_config=/etc/bcm/flex/bcm56870_a0_premium_issu/b870.6.4.1/ l3_alpm_hit_skip=1 sai_adjust_acl_drop_in_rx_drop=1 +{{ map_prio }} host_as_route_disable=1 use_all_splithorizon_groups=1 riot_enable=1 diff --git a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-C32/sai.profile b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-C32/sai.profile index 7d96f190de73..5163d6140f0e 100644 --- a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-C32/sai.profile +++ b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-C32/sai.profile @@ -1,2 +1,2 @@ -SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/td3-a7050cx3-32s-32x100G.config.bcm +SAI_INIT_CONFIG_FILE=/etc/sai.d/config.bcm SAI_NUM_ECMP_MEMBERS=64 diff --git a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-D48C8/td3-a7050cx3-32s-48x50G+8x100G.config.bcm b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-D48C8/config.bcm.j2 similarity index 97% rename from device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-D48C8/td3-a7050cx3-32s-48x50G+8x100G.config.bcm rename to device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-D48C8/config.bcm.j2 index 267b3bb81a9a..9f523e506660 100644 --- a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-D48C8/td3-a7050cx3-32s-48x50G+8x100G.config.bcm +++ b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-D48C8/config.bcm.j2 @@ -1,6 +1,15 @@ +{# Construct config.bcm to include additional soc properties per specific device metadata requirement #} +{%- set map_prio = '' -%} +{%- if DEVICE_METADATA is defined and DEVICE_METADATA['localhost'] is defined and DEVICE_METADATA['localhost']['subtype'] is defined -%} +{%- set switch_subtype = DEVICE_METADATA['localhost']['subtype'] -%} +{%- if 'dualtor' in switch_subtype.lower() %} +{%- set map_prio = 'sai_remap_prio_on_tnl_egress=1' -%} +{%- endif %} +{%- endif %} sai_load_hw_config=/etc/bcm/flex/bcm56870_a0_premium_issu/b870.6.4.1/ l3_alpm_hit_skip=1 sai_adjust_acl_drop_in_rx_drop=1 +{{ map_prio }} host_as_route_disable=1 use_all_splithorizon_groups=1 riot_enable=1 diff --git a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-D48C8/sai.profile b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-D48C8/sai.profile index 1865041f8d9f..5163d6140f0e 100644 --- a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-D48C8/sai.profile +++ b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-D48C8/sai.profile @@ -1,2 +1,2 @@ -SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/td3-a7050cx3-32s-48x50G+8x100G.config.bcm +SAI_INIT_CONFIG_FILE=/etc/sai.d/config.bcm SAI_NUM_ECMP_MEMBERS=64 diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/config.bcm.j2 b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/config.bcm.j2 index db5b2562cca2..90d57545c099 100644 --- a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/config.bcm.j2 +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/config.bcm.j2 @@ -1,6 +1,7 @@ {# Construct config.bcm to include additional soc properties per specific device metadata requirement #} {%- set mmu_sock = 'mmu_init_config="MSFT-TH2-Tier1"' -%} {%- set IPinIP_sock = '' -%} +{%- set map_prio = '' -%} {%- if DEVICE_METADATA is defined and DEVICE_METADATA['localhost'] is defined -%} {%- if DEVICE_METADATA['localhost']['type'] is defined -%} {%- set switch_role = DEVICE_METADATA['localhost']['type'] -%} @@ -15,6 +16,7 @@ sai_tunnel_underlay_route_mode=1 host_as_route_disable=1 l3_ecmp_levels=2' -%} +{%- set map_prio = 'sai_remap_prio_on_tnl_egress=1' -%} {%- endif %} {%- endif %} {%- endif %} @@ -22,6 +24,7 @@ l3_alpm_hit_skip=1 sai_adjust_acl_drop_in_rx_drop=1 +{{ map_prio }} PHY_AN_ALLOW_PLL_CHANGE=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/config.bcm.j2 b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/config.bcm.j2 index 70512203f206..145426e05915 100644 --- a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/config.bcm.j2 +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/config.bcm.j2 @@ -1,17 +1,20 @@ {# Construct config.bcm to include additional soc properties per specific device metadata requirement #} {%- set IPinIP_sock = '' -%} +{%- set map_prio = '' -%} {%- if DEVICE_METADATA is defined and DEVICE_METADATA['localhost'] is defined and DEVICE_METADATA['localhost']['subtype'] is defined -%} {%- set switch_subtype = DEVICE_METADATA['localhost']['subtype'] -%} {%- if 'dualtor' in switch_subtype.lower() %} {%- set IPinIP_sock = 'sai_tunnel_support=1 sai_tunnel_underlay_route_mode=1 host_as_route_disable=1 - l3_ecmp_levels=2' -%} + l3_ecmp_levels=2' -%} -%} +{%- set map_prio = 'sai_remap_prio_on_tnl_egress=1' -%} {%- endif %} {%- endif %} {# The following is the common soc properties that used to be named "th2-a7260cx3-64-112x50G+8x100G.config.bcm" #} l3_alpm_hit_skip=1 sai_adjust_acl_drop_in_rx_drop=1 +{{ map_prio }} PHY_AN_ALLOW_PLL_CHANGE=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/config.bcm.j2 b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/config.bcm.j2 index ce8efa8572b5..78194a75830e 100644 --- a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/config.bcm.j2 +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/config.bcm.j2 @@ -1,6 +1,7 @@ {# Construct config.bcm to include additional soc properties per specific device metadata requirement #} {%- set mmu_sock = 'mmu_init_config="MSFT-TH2-Tier1"' -%} {%- set IPinIP_sock = '' -%} +{%- set map_prio = '' -%} {%- if DEVICE_METADATA is defined and DEVICE_METADATA['localhost'] is defined -%} {%- if DEVICE_METADATA['localhost']['type'] is defined -%} {%- set switch_role = DEVICE_METADATA['localhost']['type'] -%} @@ -15,12 +16,14 @@ sai_tunnel_underlay_route_mode=1 host_as_route_disable=1 l3_ecmp_levels=2' -%} +{%- set map_prio = 'sai_remap_prio_on_tnl_egress=1' -%} {%- endif %} {%- endif %} {%- endif %} {# The following is the common soc properties that used to be named "th2-a7260cx3-64-64x40G.config.bcm" #} l3_alpm_hit_skip=1 sai_adjust_acl_drop_in_rx_drop=1 +{{ map_prio }} PHY_AN_ALLOW_PLL_CHANGE=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 From 8f47df6ae3b8fb54cee98976a22209a92345e5ec Mon Sep 17 00:00:00 2001 From: Ying Xie Date: Sun, 5 Jun 2022 08:23:02 -0700 Subject: [PATCH 2/9] [pr test] increase T1-lag PR test timeout to 5 hours (#11029) Why I did it Some PR test are timing out on T1-lag kvm test. How I did it Increase the timeout to 5 hours. How to verify it Test on this PR. Signed-off-by: Ying Xie ying.xie@microsoft.com --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 7936f8f4f6f2..a0b1cf54251e 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -184,7 +184,7 @@ stages: - job: pool: sonictest-t1-lag displayName: "kvmtest-t1-lag" - timeoutInMinutes: 240 + timeoutInMinutes: 300 steps: - template: .azure-pipelines/run-test-template.yml From 453504f421234b3f5df935b64fa16e21983bda98 Mon Sep 17 00:00:00 2001 From: Neetha John Date: Sun, 5 Jun 2022 22:20:26 -0700 Subject: [PATCH 3/9] [qos]: Adjust 7260 buffer sizes to accomodate extra lossless queues (#11018) Why I did it As part of PCBB changes, we need to enable 2 extra lossless queues. The changes in this PR are done to adjust only the reserved sizes on Th2 for the additional 2 lossless queues Calculations are done based on 40 downlinks for T1 and 16 uplinks for dual ToR How to verify it Verified that the rendering works fine on Th2 dut Unit tests have been updated to reflect the modified buffer sizes when pcbb is enabled. There are existing testcases that will test the original buffer sizes when pcbb is disabled. With these changes, was able to build sonic-config-engine wheel successfully Signed-off-by: Neetha John --- .../Arista-7260CX3-C64/buffers_defaults_t0.j2 | 10 +++++-- .../Arista-7260CX3-C64/buffers_defaults_t1.j2 | 8 +++-- .../buffers_pool_sizes_t0.j2 | 8 +++++ .../buffers_pool_sizes_t1.j2 | 8 +++++ .../buffers_defaults_t0.j2 | 8 +++-- .../buffers_pool_sizes_t0.j2 | 1 + .../Arista-7260CX3-Q64/buffers_defaults_t0.j2 | 8 +++-- .../Arista-7260CX3-Q64/buffers_defaults_t1.j2 | 8 +++-- .../buffers_pool_sizes_t0.j2 | 1 + .../py3/buffer-arista7260-dualtor.json | 4 +-- .../py3/buffer-arista7260-t1.json | 12 ++++---- src/sonic-config-engine/tests/test_j2files.py | 29 ++++++++++++++++++- 12 files changed, 85 insertions(+), 20 deletions(-) create mode 100644 device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/buffers_pool_sizes_t0.j2 create mode 100644 device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/buffers_pool_sizes_t1.j2 create mode 120000 device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/buffers_pool_sizes_t0.j2 create mode 120000 device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/buffers_pool_sizes_t0.j2 diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/buffers_defaults_t0.j2 b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/buffers_defaults_t0.j2 index 625ca0ab119e..bee86a9b3a85 100644 --- a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/buffers_defaults_t0.j2 +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/buffers_defaults_t0.j2 @@ -7,16 +7,20 @@ {%- endfor %} {%- endmacro %} +{%- import 'buffers_pool_sizes_t0.j2' as defs with context %} +{%- set ingress_lossless_pool_size = defs.ingress_lossless_pool_size %} +{%- set egress_lossy_pool_size = defs.egress_lossy_pool_size %} + {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { "ingress_lossless_pool": { - "size": "33329088", + "size": "{{ ingress_lossless_pool_size }}", "type": "ingress", "mode": "dynamic", "xoff": "7827456" }, "egress_lossy_pool": { - "size": "26663272", + "size": "{{ egress_lossy_pool_size }}", "type": "egress", "mode": "dynamic" }, @@ -49,4 +53,4 @@ {%- macro generate_queue_buffers_with_extra_lossless_queues(port_names, port_names_require_extra_buffer) %} {{ defs.generate_queue_buffers_with_extra_lossless_queues(port_names, port_names_require_extra_buffer) }} -{%- endmacro %} \ No newline at end of file +{%- endmacro %} diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/buffers_defaults_t1.j2 b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/buffers_defaults_t1.j2 index 68af36a27518..c5d390668a33 100644 --- a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/buffers_defaults_t1.j2 +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/buffers_defaults_t1.j2 @@ -7,11 +7,15 @@ {%- endfor %} {%- endmacro %} +{%- import 'buffers_pool_sizes_t1.j2' as defs with context %} +{%- set ingress_lossless_pool_size = defs.ingress_lossless_pool_size %} +{%- set egress_lossy_pool_size = defs.egress_lossy_pool_size %} + {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { "ingress_lossless_pool": { {# SS Tab2 Row 71 #} - "size": "33582016", + "size": "{{ ingress_lossless_pool_size }}", "type": "ingress", "mode": "dynamic", {# SS Tab2 Row 68 #} @@ -19,7 +23,7 @@ }, "egress_lossy_pool": { {# SS Tab2 Row 60 #} - "size": "26866112", + "size": "{{ egress_lossy_pool_size }}", "type": "egress", "mode": "dynamic" }, diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/buffers_pool_sizes_t0.j2 b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/buffers_pool_sizes_t0.j2 new file mode 100644 index 000000000000..bd82c947e4fc --- /dev/null +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/buffers_pool_sizes_t0.j2 @@ -0,0 +1,8 @@ +{%- set ingress_lossless_pool_size = '33329088' %} +{%- set egress_lossy_pool_size = '26663272' %} + +{%- if ((SYSTEM_DEFAULTS is defined) and ('tunnel_qos_remap' in SYSTEM_DEFAULTS) and (SYSTEM_DEFAULTS['tunnel_qos_remap']['status'] == 'enabled')) and +((DEVICE_METADATA is defined) and ('localhost' in DEVICE_METADATA) and ('subtype' in DEVICE_METADATA['localhost']) and (DEVICE_METADATA['localhost']['subtype'] == 'DualToR')) %} + {%- set ingress_lossless_pool_size = '33169344' %} + {%- set egress_lossy_pool_size = '26535808' %} +{%- endif %} diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/buffers_pool_sizes_t1.j2 b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/buffers_pool_sizes_t1.j2 new file mode 100644 index 000000000000..43b31de8ad43 --- /dev/null +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/buffers_pool_sizes_t1.j2 @@ -0,0 +1,8 @@ +{%- set ingress_lossless_pool_size = '33582016' %} +{%- set egress_lossy_pool_size = '26866112' %} + +{%- if ((SYSTEM_DEFAULTS is defined) and ('tunnel_qos_remap' in SYSTEM_DEFAULTS) and (SYSTEM_DEFAULTS['tunnel_qos_remap']['status'] == 'enabled')) and +((DEVICE_METADATA is defined) and ('localhost' in DEVICE_METADATA) and ('type' in DEVICE_METADATA['localhost']) and (DEVICE_METADATA['localhost']['type'] == 'LeafRouter')) %} + {%- set ingress_lossless_pool_size = '33262528' %} + {%- set egress_lossy_pool_size = '26610688' %} +{%- endif %} diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/buffers_defaults_t0.j2 b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/buffers_defaults_t0.j2 index 10b9d70d24bf..5ac1d2d2aef9 100644 --- a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/buffers_defaults_t0.j2 +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/buffers_defaults_t0.j2 @@ -15,16 +15,20 @@ {%- endfor %} {%- endmacro %} +{%- import 'buffers_pool_sizes_t0.j2' as defs with context %} +{%- set ingress_lossless_pool_size = defs.ingress_lossless_pool_size %} +{%- set egress_lossy_pool_size = defs.egress_lossy_pool_size %} + {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { "ingress_lossless_pool": { - "size": "33329088", + "size": "{{ ingress_lossless_pool_size }}", "type": "ingress", "mode": "dynamic", "xoff": "7827456" }, "egress_lossy_pool": { - "size": "26663272", + "size": "{{ egress_lossy_pool_size }}", "type": "egress", "mode": "dynamic" }, diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/buffers_pool_sizes_t0.j2 b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/buffers_pool_sizes_t0.j2 new file mode 120000 index 000000000000..72e16a608268 --- /dev/null +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/buffers_pool_sizes_t0.j2 @@ -0,0 +1 @@ +../Arista-7260CX3-C64/buffers_pool_sizes_t0.j2 \ No newline at end of file diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/buffers_defaults_t0.j2 b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/buffers_defaults_t0.j2 index 01b5a1dd8b3e..bee86a9b3a85 100644 --- a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/buffers_defaults_t0.j2 +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/buffers_defaults_t0.j2 @@ -7,16 +7,20 @@ {%- endfor %} {%- endmacro %} +{%- import 'buffers_pool_sizes_t0.j2' as defs with context %} +{%- set ingress_lossless_pool_size = defs.ingress_lossless_pool_size %} +{%- set egress_lossy_pool_size = defs.egress_lossy_pool_size %} + {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { "ingress_lossless_pool": { - "size": "33329088", + "size": "{{ ingress_lossless_pool_size }}", "type": "ingress", "mode": "dynamic", "xoff": "7827456" }, "egress_lossy_pool": { - "size": "26663272", + "size": "{{ egress_lossy_pool_size }}", "type": "egress", "mode": "dynamic" }, diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/buffers_defaults_t1.j2 b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/buffers_defaults_t1.j2 index 1d8fbb3e852f..f531b5e208e9 100644 --- a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/buffers_defaults_t1.j2 +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/buffers_defaults_t1.j2 @@ -7,16 +7,20 @@ {%- endfor %} {%- endmacro %} +{%- import 'buffers_pool_sizes_t0.j2' as defs with context %} +{%- set ingress_lossless_pool_size = defs.ingress_lossless_pool_size %} +{%- set egress_lossy_pool_size = defs.egress_lossy_pool_size %} + {%- macro generate_buffer_pool_and_profiles() %} "BUFFER_POOL": { "ingress_lossless_pool": { - "size": "33329088", + "size": "{{ ingress_lossless_pool_size }}", "type": "ingress", "mode": "dynamic", "xoff": "7827456" }, "egress_lossy_pool": { - "size": "26663272", + "size": "{{ egress_lossy_pool_size }}", "type": "egress", "mode": "dynamic" }, diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/buffers_pool_sizes_t0.j2 b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/buffers_pool_sizes_t0.j2 new file mode 120000 index 000000000000..72e16a608268 --- /dev/null +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/buffers_pool_sizes_t0.j2 @@ -0,0 +1 @@ +../Arista-7260CX3-C64/buffers_pool_sizes_t0.j2 \ No newline at end of file diff --git a/src/sonic-config-engine/tests/sample_output/py3/buffer-arista7260-dualtor.json b/src/sonic-config-engine/tests/sample_output/py3/buffer-arista7260-dualtor.json index 32fbfe24370a..6b1f4c433fa0 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/buffer-arista7260-dualtor.json +++ b/src/sonic-config-engine/tests/sample_output/py3/buffer-arista7260-dualtor.json @@ -128,13 +128,13 @@ "BUFFER_POOL": { "ingress_lossless_pool": { - "size": "33329088", + "size": "33169344", "type": "ingress", "mode": "dynamic", "xoff": "7827456" }, "egress_lossy_pool": { - "size": "26663272", + "size": "26535808", "type": "egress", "mode": "dynamic" }, diff --git a/src/sonic-config-engine/tests/sample_output/py3/buffer-arista7260-t1.json b/src/sonic-config-engine/tests/sample_output/py3/buffer-arista7260-t1.json index 2491d376c771..702076249ac6 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/buffer-arista7260-t1.json +++ b/src/sonic-config-engine/tests/sample_output/py3/buffer-arista7260-t1.json @@ -72,18 +72,18 @@ "BUFFER_POOL": { "ingress_lossless_pool": { - "size": "33582016", + "size": "33262528", "type": "ingress", "mode": "dynamic", - "xoff": "8965632" + "xoff": "8965632" }, "egress_lossy_pool": { - "size": "26866112", + "size": "26610688", "type": "egress", "mode": "dynamic" }, "egress_lossless_pool": { - "size": "43481152", + "size": "43481152", "type": "egress", "mode": "static" } @@ -92,12 +92,12 @@ "ingress_lossy_profile": { "pool":"ingress_lossless_pool", "size":"0", - "static_th":"44302336" + "static_th":"44302336" }, "egress_lossless_profile": { "pool":"egress_lossless_pool", "size":"0", - "static_th":"43481152" + "static_th":"43481152" }, "egress_lossy_profile": { "pool":"egress_lossy_pool", diff --git a/src/sonic-config-engine/tests/test_j2files.py b/src/sonic-config-engine/tests/test_j2files.py index 2d9ac9d8f474..353dbaed41e1 100644 --- a/src/sonic-config-engine/tests/test_j2files.py +++ b/src/sonic-config-engine/tests/test_j2files.py @@ -43,6 +43,31 @@ def run_script(self, argument): def run_diff(self, file1, file2): return subprocess.check_output('diff -u {} {} || true'.format(file1, file2), shell=True) + def create_machine_conf(self, platform, vendor): + file_exist = True + dir_exist = True + mode = {'arista': 'aboot', + 'dell': 'onie', + 'mellanox': 'onie' + } + echo_cmd = "echo '{}_platform={}' | sudo tee -a /host/machine.conf > /dev/null".format(mode[vendor], platform) + if not os.path.exists('/host/machine.conf'): + file_exist = False + if not os.path.isdir('/host'): + dir_exist = False + os.system('sudo mkdir /host') + os.system('sudo touch /host/machine.conf') + os.system(echo_cmd) + + return file_exist, dir_exist + + def remove_machine_conf(self, file_exist, dir_exist): + if not file_exist: + os.system('sudo rm -f /host/machine.conf') + + if not dir_exist: + os.system('sudo rmdir /host') + def test_interfaces(self): interfaces_template = os.path.join(self.test_dir, '..', '..', '..', 'files', 'image_config', 'interfaces', 'interfaces.j2') argument = '-m ' + self.t0_minigraph + ' -p ' + self.t0_port_config + ' -a \'{\"hwaddr\":\"e4:1d:2d:a5:f3:ad\"}\' -t ' + interfaces_template + ' > ' + self.output_file @@ -340,6 +365,7 @@ def test_qos_dscp_remapping_render_template(self): os.remove(test_output) def _test_buffers_render_template(self, vendor, platform, sku, minigraph, buffer_template, expected): + file_exist, dir_exist = self.create_machine_conf(platform, vendor) dir_path = os.path.join(self.test_dir, '..', '..', '..', 'device', vendor, platform, sku) buffers_file = os.path.join(dir_path, buffer_template) port_config_ini_file = os.path.join(dir_path, 'port_config.ini') @@ -355,6 +381,7 @@ def _test_buffers_render_template(self, vendor, platform, sku, minigraph, buffer # cleanup buffers_config_file_new = os.path.join(dir_path, 'buffers_config.j2') os.remove(buffers_config_file_new) + self.remove_machine_conf(file_exist, dir_exist) sample_output_file = os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, expected) assert utils.cmp(sample_output_file, self.output_file), self.run_diff(sample_output_file, self.output_file) @@ -385,7 +412,7 @@ def test_extra_lossless_buffer_for_tunnel_remapping(self): ('arista', 'x86_64-arista_7260cx3_64', 'Arista-7260CX3-C64', 'sample-arista-7260-t1-minigraph.xml', 'buffers.json.j2', 'buffer-arista7260-t1.json'), ('arista', 'x86_64-arista_7260cx3_64', 'Arista-7260CX3-C64', 'sample-arista-7260-t1-minigraph-remap-disabled.xml', 'buffers.json.j2', 'buffer-arista7260-t1-remap-disabled.json') ] - + for test_data in TEST_DATA: self._test_buffers_render_template(vendor=test_data[0], platform=test_data[1], From 9ead1273072bad5fe48717fe2e8637520e466af0 Mon Sep 17 00:00:00 2001 From: xumia <59720581+xumia@users.noreply.github.com> Date: Mon, 6 Jun 2022 19:35:53 +0800 Subject: [PATCH 4/9] [Build]: Fix the version files for armhf/arm64 not used issue (#11021) Why I did it [Build]: Fix the version files in host-base-image for armhf/arm64 not used issue --- scripts/build_debian_base_system.sh | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/scripts/build_debian_base_system.sh b/scripts/build_debian_base_system.sh index 72e3779ff3e2..0e00eeeac532 100755 --- a/scripts/build_debian_base_system.sh +++ b/scripts/build_debian_base_system.sh @@ -48,11 +48,20 @@ fi ARCH=$(dpkg --print-architecture) DISTRO=$(grep CODENAME /etc/os-release | cut -d= -f2) if [ "$ARCH" != "$CONFIGURED_ARCH" ] || [ "$DISTRO" != "$IMAGE_DISTRO" ]; then - "Not support to build different ARCH/DISTRO ${CONFIGURED_ARCH}:${$IMAGE_DISTRO} in ${ARCH}:${DISTRO}." + "Not support to build different ARCH/DISTRO ${CONFIGURED_ARCH}:${IMAGE_DISTRO} in ${ARCH}:${DISTRO}." exit 1 fi -BASE_VERSIONS=files/build/versions/host-base-image/versions-deb-${IMAGE_DISTRO} +# Generate the version files for the host base image +TEMP_DIR=$(mktemp -d) +./scripts/versions_manager.py generate -t $TEMP_DIR -n host-base-image -d $IMAGE_DISTRO -a $CONFIGURED_ARCH +PACKAGES=$(sed -E 's/=(=[^=]*)$/\1/' $TEMP_DIR/version-deb) +if [ -z "$PACKAGES" ]; then + echo "Not found host-base-image packages, please check the version files in files/build/versions/host-base-image" 2>&1 + exit 1 +fi +rm -rf $TEMP_DIR + BASEIMAGE_TARBALLPATH=$TARGET/baseimage BASEIMAGE_TARBALL=$(realpath -e $TARGET)/baseimage.tgz @@ -69,7 +78,6 @@ DEBOOTSTRAP_REQUIRED=$TARGET_DEBOOTSTRAP/required mkdir -p $ARCHIEVES mkdir -p $APTLIST mkdir -p $TARGET_DEBOOTSTRAP -PACKAGES=$(sed -E 's/=(=[^=]*)$/\1/' $BASE_VERSIONS) URL_ARR=$(apt-get download --print-uris $PACKAGES | cut -d" " -f1 | tr -d "'") PACKAGE_ARR=($PACKAGES) LENGTH=${#PACKAGE_ARR[@]} @@ -80,7 +88,7 @@ do encoded_packagename=$(urlencode $packagename) url=$(echo "$URL_ARR" | grep -i "/${packagename}_\|/${encoded_packagename}_") if [ -z "$url" ] || [[ $(echo "$url" | wc -l) -gt 1 ]]; then - echo "No found package or found multiple package for package $packagename, url: $url" 2>&1 + echo "No found package or found multiple package for package $packagename, url: $url" 1>&2 exit 1 fi filename=$(basename "$url") From 14f6f70ca3cb5a01fe3ce5030678eea16c6140b2 Mon Sep 17 00:00:00 2001 From: Sudharsan Dhamal Gopalarathnam Date: Mon, 6 Jun 2022 08:51:04 -0700 Subject: [PATCH 5/9] [BGP]Adding configuration knob to allow advertise Loopback ipv6 /128 prefix (#10958) * [BGP]Adding configuration knob to allow advertise Loopback ipv6 /128 prefix By default when IPv6 address is configured with /128 as subnet mask in Loopback0 interface, it will be advertised as prefix with /64 subnet. To control this behavior a new field 'bgp_adv_lo_prefix_as_128' is introduced in DEVICE_METADATA table which when set to true will advertise prefix with /128 subnet as it is. --- .../docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 | 10 +++++++ .../staticd/staticd.loopback_route.conf.j2 | 8 +++++- .../bgpd.main.conf.j2/ipv6_lo.conf | 27 +++++++++++++++++++ .../bgpd.main.conf.j2/ipv6_lo.json | 18 +++++++++++++ .../staticd.loopback_ipv6_128_route.conf | 4 +++ .../staticd.loopback_ipv6_128_route.conf.json | 10 +++++++ .../staticd/staticd.loopback_route.conf.json | 4 +++ src/sonic-bgpcfgd/tests/test_sonic-cfggen.py | 12 +++++++++ src/sonic-yang-models/doc/Configuration.md | 4 +++ .../tests/files/sample_config_db.json | 3 ++- .../tests/device_metadata.json | 3 +++ .../tests_config/device_metadata.json | 10 +++++++ .../yang-models/sonic-device_metadata.yang | 6 +++++ 13 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/ipv6_lo.conf create mode 100644 src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/ipv6_lo.json create mode 100644 src/sonic-bgpcfgd/tests/data/sonic-cfggen/staticd/staticd.loopback_ipv6_128_route.conf create mode 100644 src/sonic-bgpcfgd/tests/data/sonic-cfggen/staticd/staticd.loopback_ipv6_128_route.conf.json diff --git a/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 index c6643f185742..b5891b9695ac 100644 --- a/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 +++ b/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 @@ -11,8 +11,13 @@ ip prefix-list PL_LoopbackV4 permit {{ get_ipv4_loopback_address(LOOPBACK_INTERFACE, "Loopback0") | ip }}/32 ! {% if get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback0") != 'None' %} +{% if ( ('localhost' in DEVICE_METADATA) and ('bgp_adv_lo_prefix_as_128' in DEVICE_METADATA['localhost']) and + (DEVICE_METADATA['localhost']['bgp_adv_lo_prefix_as_128'] == 'true') ) %} +ipv6 prefix-list PL_LoopbackV6 permit {{ get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback0") | ip_network }}/128 +{% else %} ipv6 prefix-list PL_LoopbackV6 permit {{ get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback0") | replace('/128', '/64') | ip_network }}/64 {% endif %} +{% endif %} ! {% if VLAN_INTERFACE is defined %} {% set vnet_intfs = get_vnet_interfaces(VLAN_INTERFACE) %} @@ -89,7 +94,12 @@ router bgp {{ DEVICE_METADATA['localhost']['bgp_asn'] }} ! {% if get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback0") != 'None' %} address-family ipv6 +{% if ( ('localhost' in DEVICE_METADATA) and ('bgp_adv_lo_prefix_as_128' in DEVICE_METADATA['localhost']) and + (DEVICE_METADATA['localhost']['bgp_adv_lo_prefix_as_128'] == 'true') ) %} + network {{ get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback0") | ip }}/128 +{% else %} network {{ get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback0") | ip }}/64 +{% endif %} exit-address-family {% endif %} {% if ((multi_asic is defined and DEVICE_METADATA['localhost']['switch_type'] != 'chassis-packet') or (DEVICE_METADATA['localhost']['switch_type'] == 'voq')) %} diff --git a/dockers/docker-fpm-frr/frr/staticd/staticd.loopback_route.conf.j2 b/dockers/docker-fpm-frr/frr/staticd/staticd.loopback_route.conf.j2 index 95c2a901e4a3..35e7c49d575b 100644 --- a/dockers/docker-fpm-frr/frr/staticd/staticd.loopback_route.conf.j2 +++ b/dockers/docker-fpm-frr/frr/staticd/staticd.loopback_route.conf.j2 @@ -2,9 +2,15 @@ {% from "common/functions.conf.j2" import get_ipv4_loopback_address, get_ipv6_loopback_address, get_vnet_interfaces %} ! {% block loopback_route %} -! add static ipv6 /64 loopback route to allow bgpd to advertise the loopback route prefix {% if get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback0") != 'None' %} +{% if ( ('localhost' in DEVICE_METADATA) and ('bgp_adv_lo_prefix_as_128' in DEVICE_METADATA['localhost']) and + (DEVICE_METADATA['localhost']['bgp_adv_lo_prefix_as_128'] == 'true') ) %} +! add static ipv6 /128 loopback route to allow bgpd to advertise the loopback route prefix +ipv6 route {{ get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback0") | ip_network }}/128 Loopback0 +{% else %} +! add static ipv6 /64 loopback route to allow bgpd to advertise the loopback route prefix ipv6 route {{ get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback0") | replace('/128', '/64') | ip_network }}/64 Loopback0 {% endif %} +{% endif %} {% endblock loopback_route %} ! diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/ipv6_lo.conf b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/ipv6_lo.conf new file mode 100644 index 000000000000..50414a89a389 --- /dev/null +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/ipv6_lo.conf @@ -0,0 +1,27 @@ +! +! template: bgpd/bgpd.main.conf.j2 +! +! bgp multiple-instance +! +! BGP configuration +! +! TSA configuration +! +ip prefix-list PL_LoopbackV4 permit 55.55.55.55/32 +! +ipv6 prefix-list PL_LoopbackV6 permit fc00::1/128 +! +router bgp 55555 +! + bgp log-neighbor-changes + no bgp default ipv4-unicast + no bgp ebgp-requires-policy +! + bgp router-id 55.55.55.55 +! + network 55.55.55.55/32 +! + address-family ipv6 + network fc00::1/128 +! end of template: bgpd/bgpd.main.conf.j2 +! diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/ipv6_lo.json b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/ipv6_lo.json new file mode 100644 index 000000000000..f34cc60b0c74 --- /dev/null +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/ipv6_lo.json @@ -0,0 +1,18 @@ +{ + "DEVICE_METADATA": { + "localhost": { + "bgp_asn": "55555", + "bgp_adv_lo_prefix_as_128": "true" + } + }, + "LOOPBACK_INTERFACE": { + "Loopback0|fc00::1/128": {} + }, + "constants": { + "bgp": { + "multipath_relax": {}, + "graceful_restart": {}, + "maximum_paths": {} + } + } +} diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/staticd/staticd.loopback_ipv6_128_route.conf b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/staticd/staticd.loopback_ipv6_128_route.conf new file mode 100644 index 000000000000..a867c4c7309f --- /dev/null +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/staticd/staticd.loopback_ipv6_128_route.conf @@ -0,0 +1,4 @@ +! +! add static ipv6 /128 loopback route to allow bgpd to advertise the loopback route prefix +ipv6 route fc00:1::32/128 Loopback0 +!! diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/staticd/staticd.loopback_ipv6_128_route.conf.json b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/staticd/staticd.loopback_ipv6_128_route.conf.json new file mode 100644 index 000000000000..f825c03f2b9b --- /dev/null +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/staticd/staticd.loopback_ipv6_128_route.conf.json @@ -0,0 +1,10 @@ +{ + "DEVICE_METADATA": { + "localhost": { + "bgp_adv_lo_prefix_as_128": "true" + } + }, + "LOOPBACK_INTERFACE": { + "Loopback0|FC00:1::32/128": {} + } +} diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/staticd/staticd.loopback_route.conf.json b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/staticd/staticd.loopback_route.conf.json index ffd3c2a2a117..b0c8f3176e5b 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/staticd/staticd.loopback_route.conf.json +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/staticd/staticd.loopback_route.conf.json @@ -1,4 +1,8 @@ { + "DEVICE_METADATA": { + "localhost": { + } + }, "LOOPBACK_INTERFACE": { "Loopback0|FC00:1::32/128": {} } diff --git a/src/sonic-bgpcfgd/tests/test_sonic-cfggen.py b/src/sonic-bgpcfgd/tests/test_sonic-cfggen.py index 498ce8f9ff7a..d18bbd058c90 100644 --- a/src/sonic-bgpcfgd/tests/test_sonic-cfggen.py +++ b/src/sonic-bgpcfgd/tests/test_sonic-cfggen.py @@ -57,6 +57,12 @@ def test_bgpd_main_conf_packet_chassis(): "bgpd.main.conf.j2/packet_chassis.json", "bgpd.main.conf.j2/packet_chassis.conf") +def test_bgpd_lo_ipv6_conf_base(): + run_test("IPv6 Loopback bgpd.main.conf.j2", + "bgpd/bgpd.main.conf.j2", + "bgpd.main.conf.j2/base.json", + "bgpd.main.conf.j2/base.conf") + def test_tsa_isolate(): run_test("tsa/bgpd.tsa.isolate.conf.j2", "bgpd/tsa/bgpd.tsa.isolate.conf.j2", @@ -87,6 +93,12 @@ def test_staticd_loopback_route(): "staticd/staticd.loopback_route.conf.json", "staticd/staticd.loopback_route.conf") +def test_staticd_loopback_ipv6_128_route(): + run_test("staticd.loopback_ipv6_128_route.conf.j2", + "staticd/staticd.loopback_route.conf.j2", + "staticd/staticd.loopback_ipv6_128_route.conf.json", + "staticd/staticd.loopback_ipv6_128_route.conf") + def test_staticd(): run_test("staticd.conf.j2", "staticd/staticd.conf.j2", diff --git a/src/sonic-yang-models/doc/Configuration.md b/src/sonic-yang-models/doc/Configuration.md index 3d5bf91db542..dd3c702e630b 100644 --- a/src/sonic-yang-models/doc/Configuration.md +++ b/src/sonic-yang-models/doc/Configuration.md @@ -775,6 +775,7 @@ instance is supported in SONiC. "bgp_asn": "65100", "deployment_id": "1", "type": "ToRRouter", + "bgp_adv_lo_prefix_as_128" : "true", "buffer_model": "traditional" } } @@ -935,6 +936,9 @@ Loopback interface configuration lies in **LOOPBACK_INTERFACE** table and has similar schema with data plane interfaces. The loopback device name and loopback IP prefix act as multi-level key for loopback interface objects. +By default SONiC advertises Loopback interface IPv6 /128 subnet address +as prefix with /64 subnet. To overcome this set "bgp_adv_lo_prefix_as_128" +to true in DEVICE_METADATA ``` { diff --git a/src/sonic-yang-models/tests/files/sample_config_db.json b/src/sonic-yang-models/tests/files/sample_config_db.json index 9be6d29e8922..8a2227ef0804 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -325,7 +325,8 @@ "switch_type": "voq", "max_cores": "8", "sub_role": "FrontEnd", - "dhcp_server": "disabled" + "dhcp_server": "disabled", + "bgp_adv_lo_prefix_as_128": "true" } }, "VLAN": { diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/device_metadata.json b/src/sonic-yang-models/tests/yang_model_tests/tests/device_metadata.json index 1c39661d056e..8a562ef536a5 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests/device_metadata.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/device_metadata.json @@ -113,6 +113,9 @@ "DEVICE_METADATA_INVALID_DHCP_SERVER": { "desc": "Verifying invalid dhcp_server configuration.", "eStrKey": "InvalidValue" + }, + "DEVICE_METADATA_ADVERTISE_LO_PREFIX_AS_128": { + "desc": "Verifying advertising lo prefix as /128." } } diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/device_metadata.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/device_metadata.json index 687a745a24c6..ece046f2afb7 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/device_metadata.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/device_metadata.json @@ -311,5 +311,15 @@ } } } + }, + "DEVICE_METADATA_ADVERTISE_LO_PREFIX_AS_128": { + "sonic-device_metadata:sonic-device_metadata": { + "sonic-device_metadata:DEVICE_METADATA": { + "sonic-device_metadata:localhost": { + "bgp_asn": "65001", + "bgp_adv_lo_prefix_as_128": "true" + } + } + } } } diff --git a/src/sonic-yang-models/yang-models/sonic-device_metadata.yang b/src/sonic-yang-models/yang-models/sonic-device_metadata.yang index 17241005861e..b04f929cddc9 100644 --- a/src/sonic-yang-models/yang-models/sonic-device_metadata.yang +++ b/src/sonic-yang-models/yang-models/sonic-device_metadata.yang @@ -188,6 +188,12 @@ module sonic-device_metadata { type stypes:admin_mode; description "Indicate whether enable the embedded DHCP server."; } + + leaf bgp_adv_lo_prefix_as_128 { + type boolean; + description "Advertise Loopback0 interface IPv6 /128 subnet address as it is with set to true. + By default SONiC advertises /128 subnet prefix in Loopback0 as /64 subnet route"; + } } /* end of container localhost */ } From a3895c31161d01dad4e3d68c27041bbc4292b77f Mon Sep 17 00:00:00 2001 From: Kebo Liu Date: Tue, 7 Jun 2022 20:05:54 +0800 Subject: [PATCH 6/9] [Mellanox] Update SN2201 sai profile and platform reboot script (#10978) - Why I did it 1. SN2201 sai profile needs to be updated according to the latest hardware. 2. In the reboot script, need to use the common symbol link of the power_cycle sysfs instead of directly accessing it due to SN2201 sysfs is different than other platforms. 3. echo 1 > $SYSFS_PWR_CYCLE will trigger the reboot immediately, the following sleep 3 and echo 0 > $SYSFS_PWR_CYCLE will never be executed, can be removed. - How I did it 1. Replace the SN2201 sai profile with the latest one. 2. In the platform_reboot script, replace the direct sysfs path with the symbol link path. 3. Remove the redundant code from platform_reboot - How to verify it Perform reboot on all the Nvidia platforms, and check all can be rebooted successfully. Signed-off-by: Kebo Liu --- .../x86_64-mlnx_msn2700-r0/platform_reboot | 4 +- .../ACS-SN2201/sai_2201.xml | 128 +++++++++--------- 2 files changed, 65 insertions(+), 67 deletions(-) diff --git a/device/mellanox/x86_64-mlnx_msn2700-r0/platform_reboot b/device/mellanox/x86_64-mlnx_msn2700-r0/platform_reboot index 7a38268ff09c..b2188fde6f5d 100755 --- a/device/mellanox/x86_64-mlnx_msn2700-r0/platform_reboot +++ b/device/mellanox/x86_64-mlnx_msn2700-r0/platform_reboot @@ -5,7 +5,7 @@ declare -r EXIT_ERROR="1" declare -r PENDING_COMPONENT_FW="/usr/bin/install-pending-fw.py" declare -r FW_UPGRADE_SCRIPT="/usr/bin/mlnx-fw-upgrade.sh" -declare -r SYSFS_PWR_CYCLE="/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/pwr_cycle" +declare -r SYSFS_PWR_CYCLE="/var/run/hw-management/system/pwr_cycle" FORCE_REBOOT="no" @@ -24,8 +24,6 @@ function SafePwrCycle() { sync ; sync umount -fa > /dev/null 2&>1 echo 1 > $SYSFS_PWR_CYCLE - sleep 3 - echo 0 > $SYSFS_PWR_CYCLE } ParseArguments "$@" diff --git a/device/mellanox/x86_64-nvidia_sn2201-r0/ACS-SN2201/sai_2201.xml b/device/mellanox/x86_64-nvidia_sn2201-r0/ACS-SN2201/sai_2201.xml index d50843270cfd..8c57d2f20b6e 100644 --- a/device/mellanox/x86_64-nvidia_sn2201-r0/ACS-SN2201/sai_2201.xml +++ b/device/mellanox/x86_64-nvidia_sn2201-r0/ACS-SN2201/sai_2201.xml @@ -36,337 +36,337 @@ 0 0 - - 3 + + 131072 62 1 1 0 - 3 + 131072 63 1 2 0 - 3 + 131072 64 1 3 0 - 3 + 131072 57 1 4 0 - 3 + 131072 58 1 5 0 - 3 + 131072 59 1 6 0 - 3 + 131072 60 1 7 0 - 3 + 131072 53 1 8 0 - 3 + 131072 54 1 9 0 - 3 + 131072 55 1 10 0 - 3 + 131072 56 1 11 0 - 3 + 131072 49 1 12 0 - 3 + 131072 50 1 13 0 - 3 + 131072 51 1 14 0 - 3 + 131072 52 1 15 0 - 3 + 131072 45 1 16 0 - 3 + 131072 46 1 17 0 - 3 + 131072 47 1 18 0 - 3 + 131072 48 1 19 0 - 3 + 131072 41 1 20 0 - 3 + 131072 42 1 21 0 - 3 + 131072 43 1 22 0 - 3 + 131072 44 1 23 0 - 3 + 131072 37 1 24 0 - 3 + 131072 38 1 25 0 - 3 + 131072 39 1 26 0 - 3 + 131072 40 1 27 0 - 3 + 131072 33 1 28 0 - 3 + 131072 34 1 29 0 - 3 + 131072 35 1 30 0 - 3 + 131072 36 1 31 0 - 3 + 131072 1 1 32 0 - 3 + 131072 2 1 33 0 - 3 + 131072 3 1 34 0 - 3 + 131072 4 1 35 0 - 3 + 131072 - 5 + 21 1 36 0 - 3 + 131072 - 6 + 22 1 37 0 - 3 + 131072 - 17 + 23 1 38 0 - 3 + 131072 - 18 + 24 1 39 0 - 3 + 131072 - 19 + 25 1 40 0 - 3 + 131072 - 20 + 26 1 41 0 - 3 + 131072 - 21 + 27 1 42 0 - 3 + 131072 - 22 + 28 1 43 0 - 3 + 131072 - 23 + 29 1 44 0 - 3 + 131072 - 24 + 30 1 45 0 - 3 + 131072 - 25 + 31 1 46 0 - 3 + 131072 - 26 + 32 1 47 0 - 3 + 131072 9 @@ -376,21 +376,21 @@ 11534336 - 7 + 5 4 49 3 11534336 - 13 + 17 4 50 3 11534336 - 11 + 13 4 51 3 From 5c869492bda3ab78e30f3eb027521cfa9228b211 Mon Sep 17 00:00:00 2001 From: Volodymyr Samotiy Date: Tue, 7 Jun 2022 15:11:25 +0300 Subject: [PATCH 7/9] [Mellanox] Update SDK/FW to 4.5.2262/xx.2010.2262 (#10882) - Why I did it To include latest fixes: 1. Warmboot | When trying to reconfigure the Flex Parser header and Flex transition parameters after ISSU, the switch will returned an error even if the configuration was identical to that done before performing the ISSU. 2. Link Up | When toggling many ports of the Spectrum devices while raising 10GbE link up and link maintenance is enabled, the switch may get stuck and may need to be rebooted. 3. Shared buffer | While moving from lossless to lossy while shared headroom was used, reduction of the shared headroom can only be done prior to pool type change and when shared headroom is not utilized. - How I did it Updated SDK submodule along with the relevant Makefiles - How to verify it Build an image and run tests from "sonic-mgmt". Signed-off-by: Volodymyr Samotiy --- platform/mellanox/fw.mk | 6 +++--- platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers | 2 +- platform/mellanox/sdk.mk | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/platform/mellanox/fw.mk b/platform/mellanox/fw.mk index e2ccc2ad7dc8..0dc3800155ea 100644 --- a/platform/mellanox/fw.mk +++ b/platform/mellanox/fw.mk @@ -27,17 +27,17 @@ else FW_FROM_URL = n endif -MLNX_SPC_FW_VERSION = 13.2010.1500 +MLNX_SPC_FW_VERSION = 13.2010.2262 MLNX_SPC_FW_FILE = fw-SPC-rel-$(subst .,_,$(MLNX_SPC_FW_VERSION))-EVB.mfa $(MLNX_SPC_FW_FILE)_PATH = $(MLNX_FW_BASE_PATH) $(MLNX_SPC_FW_FILE)_URL = $(MLNX_FW_BASE_URL)/$(MLNX_SPC_FW_FILE) -MLNX_SPC2_FW_VERSION = 29.2010.1500 +MLNX_SPC2_FW_VERSION = 29.2010.2262 MLNX_SPC2_FW_FILE = fw-SPC2-rel-$(subst .,_,$(MLNX_SPC2_FW_VERSION))-EVB.mfa $(MLNX_SPC2_FW_FILE)_PATH = $(MLNX_FW_BASE_PATH) $(MLNX_SPC2_FW_FILE)_URL = $(MLNX_FW_BASE_URL)/$(MLNX_SPC2_FW_FILE) -MLNX_SPC3_FW_VERSION = 30.2010.1500 +MLNX_SPC3_FW_VERSION = 30.2010.2262 MLNX_SPC3_FW_FILE = fw-SPC3-rel-$(subst .,_,$(MLNX_SPC3_FW_VERSION))-EVB.mfa $(MLNX_SPC3_FW_FILE)_PATH = $(MLNX_FW_BASE_PATH) $(MLNX_SPC3_FW_FILE)_URL = $(MLNX_FW_BASE_URL)/$(MLNX_SPC3_FW_FILE) diff --git a/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers b/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers index a0416e20a2b9..9f94bdfc2c7e 160000 --- a/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers +++ b/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers @@ -1 +1 @@ -Subproject commit a0416e20a2b9b304cb2c9b629c071f76db0ca2aa +Subproject commit 9f94bdfc2c7e3670b5b959138f9d61d40e7cc1ea diff --git a/platform/mellanox/sdk.mk b/platform/mellanox/sdk.mk index ba152c953808..0ecc6d6bf041 100644 --- a/platform/mellanox/sdk.mk +++ b/platform/mellanox/sdk.mk @@ -16,7 +16,7 @@ # MLNX_SDK_BASE_PATH = $(PLATFORM_PATH)/sdk-src/sx-kernel/Switch-SDK-drivers/bin/ MLNX_SDK_PKG_BASE_PATH = $(MLNX_SDK_BASE_PATH)/$(BLDENV)/ -MLNX_SDK_VERSION = 4.5.1500 +MLNX_SDK_VERSION = 4.5.2262 MLNX_SDK_ISSU_VERSION = 101 MLNX_SDK_DEB_VERSION = $(subst -,.,$(subst _,.,$(MLNX_SDK_VERSION))) From f135f37a502d99c9c9fcbfd8c9c972e66089071c Mon Sep 17 00:00:00 2001 From: Junchao-Mellanox <57339448+Junchao-Mellanox@users.noreply.github.com> Date: Tue, 7 Jun 2022 20:13:16 +0800 Subject: [PATCH 8/9] [Mellanox] optimize platform API import time (#10815) - Why I did it "import sonic_platform" takes about 600ms ~ 1000ms, it is kind of slow. After this optimization, the time is about 100ms. The benefit is that those CLIs which does not need the slow import sentence would be faster than before. - How I did it Find slow import and call them when need. - How to verify it Measure the import time. --- .../mellanox/mlnx-platform-api/sonic_platform/chassis.py | 7 ++++--- .../mlnx-platform-api/sonic_platform/device_data.py | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py b/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py index c7bafc0d8921..f68d1033f019 100644 --- a/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py +++ b/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py @@ -30,7 +30,6 @@ from . import utils from .device_data import DeviceDataManager - from .sfp import SFP, deinitialize_sdk_handle except ImportError as e: raise ImportError (str(e) + "- required module not found") @@ -113,8 +112,10 @@ def __del__(self): if self.sfp_event: self.sfp_event.deinitialize() - if SFP.shared_sdk_handle: - deinitialize_sdk_handle(SFP.shared_sdk_handle) + if self._sfp_list: + from .sfp import SFP, deinitialize_sdk_handle + if SFP.shared_sdk_handle: + deinitialize_sdk_handle(SFP.shared_sdk_handle) ############################################## # PSU methods diff --git a/platform/mellanox/mlnx-platform-api/sonic_platform/device_data.py b/platform/mellanox/mlnx-platform-api/sonic_platform/device_data.py index cd909231d1bc..17fe88037e06 100644 --- a/platform/mellanox/mlnx-platform-api/sonic_platform/device_data.py +++ b/platform/mellanox/mlnx-platform-api/sonic_platform/device_data.py @@ -17,7 +17,6 @@ import glob import os -from sonic_py_common import device_info from . import utils @@ -173,6 +172,7 @@ class DeviceDataManager: @classmethod @utils.read_only_cache() def get_platform_name(cls): + from sonic_py_common import device_info return device_info.get_platform() @classmethod From 6b70b448d2516cfec37a28cd5e5bf0c504c8f1e9 Mon Sep 17 00:00:00 2001 From: Jing Zhang Date: Tue, 7 Jun 2022 07:52:13 -0700 Subject: [PATCH 9/9] [sonic-linkmgrd][master] Submodule Update (#11035) [sonic-linkmgrd][master] Submodule Update 9c8a16e Jing Zhang Sun Jun 5 08:27:07 2022 -0700 Separate I2C mux state probing and gRPC forwarding state probing (#86) 491c4ee Longxiang Lyu Sun Jun 5 23:26:19 2022 +0800 Fix peer mux wait back off factor (#84) a0b6b14 Jing Zhang Wed Jun 1 10:33:12 2022 -0700 Revert "Update log level for mux probing and mux state chance (#23)" (#85) 3c2b546 Jing Zhang Tue May 31 10:14:42 2022 -0700 Add default route support to active-active state machine (#78) 6fa892e Longxiang Lyu Fri May 27 09:15:06 2022 +0800 Degrade LinkProberStateMachineBase virtual function logging level (#80) 7b695ca Longxiang Lyu Fri May 27 09:14:02 2022 +0800 Fix mux wait timer and peer mux wait timer (#81) --- src/linkmgrd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/linkmgrd b/src/linkmgrd index d744bfb4a694..9c8a16eedbef 160000 --- a/src/linkmgrd +++ b/src/linkmgrd @@ -1 +1 @@ -Subproject commit d744bfb4a6947cacfde744fc73550a7b99d8e0c8 +Subproject commit 9c8a16eedbef795c7d41fbd348152b43988dd6e0