sonic-buildimage/device/mellanox/x86_64-mlnx_msn4600c-r0/Mellanox-SN4600C-D48C40/buffers_defaults_t0.j2

55 lines
2.6 KiB
Plaintext
Raw Normal View History

{#
Copyright (c) 2018-2023 NVIDIA CORPORATION & AFFILIATES.
Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
#}
{% set default_cable = '5m' %}
{%- if ((SYSTEM_DEFAULTS is defined) and ('tunnel_qos_remap' in SYSTEM_DEFAULTS) and (SYSTEM_DEFAULTS['tunnel_qos_remap']['status'] == 'enabled')) -%}
{% set ingress_lossless_pool_size = '55058432' %}
{% set ingress_lossless_pool_xoff = '1712128' %}
{% set egress_lossless_pool_size = '60817392' %}
{% set egress_lossy_pool_size = '55058432' %}
{%- else -%}
{% set ingress_lossless_pool_size = '55902208' %}
{% set ingress_lossless_pool_xoff = '1179648' %}
{% set egress_lossless_pool_size = '60817392' %}
{% set egress_lossy_pool_size = '55902208' %}
{%- endif -%}
[Reclaim buffer] Reclaim unused buffers by applying zero buffer profiles (#8768) Signed-off-by: Stephen Sun stephens@nvidia.com Why I did it Support zero buffer profiles Add buffer profiles and pool definition for zero buffer profiles Support applying zero profiles on INACTIVE PORTS Enable dynamic buffer manager to load zero pools and profiles from a JSON file Dependency: It depends on Azure/sonic-swss#1910 and submodule advancing PR once the former merged. How I did it Add buffer profiles and pool definition for zero buffer profiles If the buffer model is static: Apply normal buffer profiles to admin-up ports Apply zero buffer profiles to admin-down ports If the buffer model is dynamic: Apply normal buffer profiles to all ports buffer manager will take care when a port is shut down Update buffers_config.j2 to support INACTIVE PORTS by extending the existing macros to generate the various buffer objects, including PGs, queues, ingress/egress profile lists Originally, all the macros to generate the above buffer objects took active ports only as an argument Now that buffer items need to be generated on inactive ports as well, an extra argument representing the inactive ports need to be added To be backward compatible, a new series of macros are introduced to take both active and inactive ports as arguments The original version (with active ports only) will be checked first. If it is not defined, then the extended version will be called Only vendors who support zero profiles need to change their buffer templates Enable buffer manager to load zero pools and profiles from a JSON file: The JSON file is provided on a per-platform basis It is copied from platform/<vendor> folder to /usr/share/sonic/temlates folder in compiling time and rendered when the swss container is being created. To make code clean and reduce redundant code, extract common macros from buffer_defaults_t{0,1}.j2 of all SKUs to two common files: One in Mellanox-SN2700-D48C8 for single ingress pool mode The other in ACS-MSN2700 for double ingress pool mode Those files of all other SKUs will be symbol link to the above files Update sonic-cfggen test accordingly: Adjust example output file of JSON template for unit test Add unit test in for Mellanox's new buffer templates. How to verify it Regression test. Unit test in sonic-cfggen Run regression test and manually test.
2021-11-29 10:04:01 -06:00
{% import 'buffers_defaults_objects.j2' as defs with context %}
[Reclaim buffer] Reclaim unused buffers by applying zero buffer profiles (#8768) Signed-off-by: Stephen Sun stephens@nvidia.com Why I did it Support zero buffer profiles Add buffer profiles and pool definition for zero buffer profiles Support applying zero profiles on INACTIVE PORTS Enable dynamic buffer manager to load zero pools and profiles from a JSON file Dependency: It depends on Azure/sonic-swss#1910 and submodule advancing PR once the former merged. How I did it Add buffer profiles and pool definition for zero buffer profiles If the buffer model is static: Apply normal buffer profiles to admin-up ports Apply zero buffer profiles to admin-down ports If the buffer model is dynamic: Apply normal buffer profiles to all ports buffer manager will take care when a port is shut down Update buffers_config.j2 to support INACTIVE PORTS by extending the existing macros to generate the various buffer objects, including PGs, queues, ingress/egress profile lists Originally, all the macros to generate the above buffer objects took active ports only as an argument Now that buffer items need to be generated on inactive ports as well, an extra argument representing the inactive ports need to be added To be backward compatible, a new series of macros are introduced to take both active and inactive ports as arguments The original version (with active ports only) will be checked first. If it is not defined, then the extended version will be called Only vendors who support zero profiles need to change their buffer templates Enable buffer manager to load zero pools and profiles from a JSON file: The JSON file is provided on a per-platform basis It is copied from platform/<vendor> folder to /usr/share/sonic/temlates folder in compiling time and rendered when the swss container is being created. To make code clean and reduce redundant code, extract common macros from buffer_defaults_t{0,1}.j2 of all SKUs to two common files: One in Mellanox-SN2700-D48C8 for single ingress pool mode The other in ACS-MSN2700 for double ingress pool mode Those files of all other SKUs will be symbol link to the above files Update sonic-cfggen test accordingly: Adjust example output file of JSON template for unit test Add unit test in for Mellanox's new buffer templates. How to verify it Regression test. Unit test in sonic-cfggen Run regression test and manually test.
2021-11-29 10:04:01 -06:00
{%- macro generate_buffer_pool_and_profiles_with_inactive_ports(port_names_inactive) %}
{{ defs.generate_buffer_pool_and_profiles_with_inactive_ports(port_names_inactive) }}
{%- endmacro %}
[Reclaim buffer] Reclaim unused buffers by applying zero buffer profiles (#8768) Signed-off-by: Stephen Sun stephens@nvidia.com Why I did it Support zero buffer profiles Add buffer profiles and pool definition for zero buffer profiles Support applying zero profiles on INACTIVE PORTS Enable dynamic buffer manager to load zero pools and profiles from a JSON file Dependency: It depends on Azure/sonic-swss#1910 and submodule advancing PR once the former merged. How I did it Add buffer profiles and pool definition for zero buffer profiles If the buffer model is static: Apply normal buffer profiles to admin-up ports Apply zero buffer profiles to admin-down ports If the buffer model is dynamic: Apply normal buffer profiles to all ports buffer manager will take care when a port is shut down Update buffers_config.j2 to support INACTIVE PORTS by extending the existing macros to generate the various buffer objects, including PGs, queues, ingress/egress profile lists Originally, all the macros to generate the above buffer objects took active ports only as an argument Now that buffer items need to be generated on inactive ports as well, an extra argument representing the inactive ports need to be added To be backward compatible, a new series of macros are introduced to take both active and inactive ports as arguments The original version (with active ports only) will be checked first. If it is not defined, then the extended version will be called Only vendors who support zero profiles need to change their buffer templates Enable buffer manager to load zero pools and profiles from a JSON file: The JSON file is provided on a per-platform basis It is copied from platform/<vendor> folder to /usr/share/sonic/temlates folder in compiling time and rendered when the swss container is being created. To make code clean and reduce redundant code, extract common macros from buffer_defaults_t{0,1}.j2 of all SKUs to two common files: One in Mellanox-SN2700-D48C8 for single ingress pool mode The other in ACS-MSN2700 for double ingress pool mode Those files of all other SKUs will be symbol link to the above files Update sonic-cfggen test accordingly: Adjust example output file of JSON template for unit test Add unit test in for Mellanox's new buffer templates. How to verify it Regression test. Unit test in sonic-cfggen Run regression test and manually test.
2021-11-29 10:04:01 -06:00
{%- macro generate_profile_lists_with_inactive_ports(port_names_active, port_names_inactive) %}
{{ defs.generate_profile_lists(port_names_active, port_names_inactive) }}
{%- endmacro %}
{%- macro generate_queue_buffers_with_extra_lossless_queues_with_inactive_ports(port_names_active, port_names_extra_queues, port_names_inactive) %}
{{ defs.generate_queue_buffers_with_extra_lossless_queues(port_names_active, port_names_extra_queues, port_names_inactive) }}
{%- endmacro %}
[Reclaim buffer] Reclaim unused buffers by applying zero buffer profiles (#8768) Signed-off-by: Stephen Sun stephens@nvidia.com Why I did it Support zero buffer profiles Add buffer profiles and pool definition for zero buffer profiles Support applying zero profiles on INACTIVE PORTS Enable dynamic buffer manager to load zero pools and profiles from a JSON file Dependency: It depends on Azure/sonic-swss#1910 and submodule advancing PR once the former merged. How I did it Add buffer profiles and pool definition for zero buffer profiles If the buffer model is static: Apply normal buffer profiles to admin-up ports Apply zero buffer profiles to admin-down ports If the buffer model is dynamic: Apply normal buffer profiles to all ports buffer manager will take care when a port is shut down Update buffers_config.j2 to support INACTIVE PORTS by extending the existing macros to generate the various buffer objects, including PGs, queues, ingress/egress profile lists Originally, all the macros to generate the above buffer objects took active ports only as an argument Now that buffer items need to be generated on inactive ports as well, an extra argument representing the inactive ports need to be added To be backward compatible, a new series of macros are introduced to take both active and inactive ports as arguments The original version (with active ports only) will be checked first. If it is not defined, then the extended version will be called Only vendors who support zero profiles need to change their buffer templates Enable buffer manager to load zero pools and profiles from a JSON file: The JSON file is provided on a per-platform basis It is copied from platform/<vendor> folder to /usr/share/sonic/temlates folder in compiling time and rendered when the swss container is being created. To make code clean and reduce redundant code, extract common macros from buffer_defaults_t{0,1}.j2 of all SKUs to two common files: One in Mellanox-SN2700-D48C8 for single ingress pool mode The other in ACS-MSN2700 for double ingress pool mode Those files of all other SKUs will be symbol link to the above files Update sonic-cfggen test accordingly: Adjust example output file of JSON template for unit test Add unit test in for Mellanox's new buffer templates. How to verify it Regression test. Unit test in sonic-cfggen Run regression test and manually test.
2021-11-29 10:04:01 -06:00
{%- macro generate_queue_buffers_with_inactive_ports(port_names_active, port_names_inactive) %}
{{ defs.generate_queue_buffers(port_names_active, port_names_inactive) }}
{%- endmacro %}
{%- macro generate_pg_profiles_with_extra_lossless_pgs_with_inactive_ports(port_names_active, port_names_extra_pgs, port_names_inactive) %}
{{ defs.generate_pg_profiles_with_extra_lossless_pgs(port_names_active, port_names_extra_pgs, port_names_inactive) }}
{%- endmacro %}
[Reclaim buffer] Reclaim unused buffers by applying zero buffer profiles (#8768) Signed-off-by: Stephen Sun stephens@nvidia.com Why I did it Support zero buffer profiles Add buffer profiles and pool definition for zero buffer profiles Support applying zero profiles on INACTIVE PORTS Enable dynamic buffer manager to load zero pools and profiles from a JSON file Dependency: It depends on Azure/sonic-swss#1910 and submodule advancing PR once the former merged. How I did it Add buffer profiles and pool definition for zero buffer profiles If the buffer model is static: Apply normal buffer profiles to admin-up ports Apply zero buffer profiles to admin-down ports If the buffer model is dynamic: Apply normal buffer profiles to all ports buffer manager will take care when a port is shut down Update buffers_config.j2 to support INACTIVE PORTS by extending the existing macros to generate the various buffer objects, including PGs, queues, ingress/egress profile lists Originally, all the macros to generate the above buffer objects took active ports only as an argument Now that buffer items need to be generated on inactive ports as well, an extra argument representing the inactive ports need to be added To be backward compatible, a new series of macros are introduced to take both active and inactive ports as arguments The original version (with active ports only) will be checked first. If it is not defined, then the extended version will be called Only vendors who support zero profiles need to change their buffer templates Enable buffer manager to load zero pools and profiles from a JSON file: The JSON file is provided on a per-platform basis It is copied from platform/<vendor> folder to /usr/share/sonic/temlates folder in compiling time and rendered when the swss container is being created. To make code clean and reduce redundant code, extract common macros from buffer_defaults_t{0,1}.j2 of all SKUs to two common files: One in Mellanox-SN2700-D48C8 for single ingress pool mode The other in ACS-MSN2700 for double ingress pool mode Those files of all other SKUs will be symbol link to the above files Update sonic-cfggen test accordingly: Adjust example output file of JSON template for unit test Add unit test in for Mellanox's new buffer templates. How to verify it Regression test. Unit test in sonic-cfggen Run regression test and manually test.
2021-11-29 10:04:01 -06:00
{%- macro generate_pg_profiles_with_inactive_ports(port_names_active, port_names_inactive) %}
{{ defs.generate_pg_profiles(port_names_active, port_names_inactive) }}
{%- endmacro %}