diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffers.json.j2 b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffers.json.j2 new file mode 100644 index 0000000000..560cae5dd1 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffers.json.j2 @@ -0,0 +1,135 @@ +{# Default values which will be used if no actual configura available #} +{% set default_cable = '300m' %} +{% set default_speed = '100G' %} +{% set default_ports_num = 32 -%} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) -%} + {%- set cable_len = [] -%} + {%- for local_port in DEVICE_NEIGHBOR -%} + {%- if local_port == port_name -%} + {%- if DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%} + {%- set neighbor_role = neighbor.type -%} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role -%} + {%- set roles1 = roles1 | lower -%} + {%- set roles2 = roles2 | lower -%} + {%- if roles1 in ports2cable -%} + {%- if cable_len.append(ports2cable[roles1]) -%}{%- endif -%} + {%- elif roles2 in ports2cable -%} + {%- if cable_len.append(ports2cable[roles2]) -%}{%- endif -%} + {%- endif -%} + {%- endif -%} + {%- endif -%} + {%- endfor -%} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif -%} +{% endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + +{# Generate list of ports if not defined #} +{% if PORT is not defined %} + {% set PORT = [] %} + {% for port_idx in range(0,default_ports_num) %} + {% if PORT.append("Ethernet%d" % (port_idx*4)) %}{% endif %} + {% endfor %} +{% endif -%} + +{% set port_names_list = [] %} +{% for port in PORT %} + {%- if port_names_list.append(port) %}{% endif %} +{% endfor %} +{% set port_names = port_names_list | join(',') -%} + +{ + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "7274496", + "type": "ingress", + "mode": "static" + }, + "ingress_lossy_pool": { + "size": "5491712", + "type": "ingress", + "mode": "dynamic" + }, + "egress_lossless_pool0": { + "size": "3637248", + "type": "egress", + "mode": "static" + }, + "egress_lossless_pool1": { + "size": "3637248", + "type": "egress", + "mode": "static" + }, + "egress_lossy_pool": { + "size": "5491712", + "type": "egress", + "mode": "dynamic" + } + }, + "BUFFER_PROFILE": { + "ingress_lossy_profile": { + "pool":"[BUFFER_POOL|ingress_lossy_pool]", + "size":"1518", + "dynamic_th":"3" + }, + "egress_lossless_profile0": { + "pool":"[BUFFER_POOL|egress_lossless_pool0]", + "size":"1518", + "static_th":"3637248" + }, + "egress_lossless_profile1": { + "pool":"[BUFFER_POOL|egress_lossless_pool1]", + "size":"1518", + "static_th":"3637248" + }, + "egress_lossy_profile": { + "pool":"[BUFFER_POOL|egress_lossy_pool]", + "size":"1518", + "dynamic_th":"3" + } + }, + "BUFFER_PG": { + "{{ port_names }}|0-1": { + "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" + } + }, + "BUFFER_QUEUE": { + "{{ port_names }}|3": { + "profile" : "[BUFFER_PROFILE|egress_lossless_profile0]" + }, + "{{ port_names }}|4": { + "profile" : "[BUFFER_PROFILE|egress_lossless_profile1]" + }, + "{{ port_names }}|0-1": { + "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" + } + } +} diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/pg_profile_lookup.ini b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/pg_profile_lookup.ini new file mode 100644 index 0000000000..f3a0840558 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/pg_profile_lookup.ini @@ -0,0 +1,17 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold + 10000 5m 113664 18432 76800 0 + 25000 5m 113664 18432 76800 0 + 40000 5m 113664 18432 76800 0 + 50000 5m 113664 18432 76800 0 + 100000 5m 113664 18432 76800 0 + 10000 40m 113664 18432 76800 0 + 25000 40m 113664 18432 76800 0 + 40000 40m 113664 18432 76800 0 + 50000 40m 113664 18432 76800 0 + 100000 40m 113664 18432 76800 0 + 10000 300m 113664 18432 76800 0 + 25000 300m 113664 18432 76800 0 + 40000 300m 113664 18432 76800 0 + 50000 300m 113664 18432 76800 0 + 100000 300m 113664 18432 76800 0 diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffers.json.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffers.json.j2 new file mode 100644 index 0000000000..560cae5dd1 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffers.json.j2 @@ -0,0 +1,135 @@ +{# Default values which will be used if no actual configura available #} +{% set default_cable = '300m' %} +{% set default_speed = '100G' %} +{% set default_ports_num = 32 -%} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) -%} + {%- set cable_len = [] -%} + {%- for local_port in DEVICE_NEIGHBOR -%} + {%- if local_port == port_name -%} + {%- if DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%} + {%- set neighbor_role = neighbor.type -%} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role -%} + {%- set roles1 = roles1 | lower -%} + {%- set roles2 = roles2 | lower -%} + {%- if roles1 in ports2cable -%} + {%- if cable_len.append(ports2cable[roles1]) -%}{%- endif -%} + {%- elif roles2 in ports2cable -%} + {%- if cable_len.append(ports2cable[roles2]) -%}{%- endif -%} + {%- endif -%} + {%- endif -%} + {%- endif -%} + {%- endfor -%} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif -%} +{% endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + +{# Generate list of ports if not defined #} +{% if PORT is not defined %} + {% set PORT = [] %} + {% for port_idx in range(0,default_ports_num) %} + {% if PORT.append("Ethernet%d" % (port_idx*4)) %}{% endif %} + {% endfor %} +{% endif -%} + +{% set port_names_list = [] %} +{% for port in PORT %} + {%- if port_names_list.append(port) %}{% endif %} +{% endfor %} +{% set port_names = port_names_list | join(',') -%} + +{ + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "7274496", + "type": "ingress", + "mode": "static" + }, + "ingress_lossy_pool": { + "size": "5491712", + "type": "ingress", + "mode": "dynamic" + }, + "egress_lossless_pool0": { + "size": "3637248", + "type": "egress", + "mode": "static" + }, + "egress_lossless_pool1": { + "size": "3637248", + "type": "egress", + "mode": "static" + }, + "egress_lossy_pool": { + "size": "5491712", + "type": "egress", + "mode": "dynamic" + } + }, + "BUFFER_PROFILE": { + "ingress_lossy_profile": { + "pool":"[BUFFER_POOL|ingress_lossy_pool]", + "size":"1518", + "dynamic_th":"3" + }, + "egress_lossless_profile0": { + "pool":"[BUFFER_POOL|egress_lossless_pool0]", + "size":"1518", + "static_th":"3637248" + }, + "egress_lossless_profile1": { + "pool":"[BUFFER_POOL|egress_lossless_pool1]", + "size":"1518", + "static_th":"3637248" + }, + "egress_lossy_profile": { + "pool":"[BUFFER_POOL|egress_lossy_pool]", + "size":"1518", + "dynamic_th":"3" + } + }, + "BUFFER_PG": { + "{{ port_names }}|0-1": { + "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" + } + }, + "BUFFER_QUEUE": { + "{{ port_names }}|3": { + "profile" : "[BUFFER_PROFILE|egress_lossless_profile0]" + }, + "{{ port_names }}|4": { + "profile" : "[BUFFER_PROFILE|egress_lossless_profile1]" + }, + "{{ port_names }}|0-1": { + "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" + } + } +} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/pg_profile_lookup.ini b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/pg_profile_lookup.ini new file mode 100644 index 0000000000..f3a0840558 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/pg_profile_lookup.ini @@ -0,0 +1,17 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold + 10000 5m 113664 18432 76800 0 + 25000 5m 113664 18432 76800 0 + 40000 5m 113664 18432 76800 0 + 50000 5m 113664 18432 76800 0 + 100000 5m 113664 18432 76800 0 + 10000 40m 113664 18432 76800 0 + 25000 40m 113664 18432 76800 0 + 40000 40m 113664 18432 76800 0 + 50000 40m 113664 18432 76800 0 + 100000 40m 113664 18432 76800 0 + 10000 300m 113664 18432 76800 0 + 25000 300m 113664 18432 76800 0 + 40000 300m 113664 18432 76800 0 + 50000 300m 113664 18432 76800 0 + 100000 300m 113664 18432 76800 0 diff --git a/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/buffers.json.j2 b/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/buffers.json.j2 new file mode 100644 index 0000000000..b12fc38511 --- /dev/null +++ b/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/buffers.json.j2 @@ -0,0 +1,126 @@ +{# Default values which will be used if no actual configura available #} +{% set default_cable = '300m' %} +{% set default_speed = '100G' %} +{% set default_ports_num = 64 -%} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) -%} + {%- set cable_len = [] -%} + {%- for local_port in DEVICE_NEIGHBOR -%} + {%- if local_port == port_name -%} + {%- if DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%} + {%- set neighbor_role = neighbor.type -%} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role -%} + {%- set roles1 = roles1 | lower -%} + {%- set roles2 = roles2 | lower -%} + {%- if roles1 in ports2cable -%} + {%- if cable_len.append(ports2cable[roles1]) -%}{%- endif -%} + {%- elif roles2 in ports2cable -%} + {%- if cable_len.append(ports2cable[roles2]) -%}{%- endif -%} + {%- endif -%} + {%- endif -%} + {%- endif -%} + {%- endfor -%} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif -%} +{% endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + +{# Generate list of ports if not defined #} +{% if PORT is not defined %} + {% set PORT = [] %} + {% for port_idx in range(0,default_ports_num) %} + {% if PORT.append("Ethernet%d" % port_idx) %}{% endif %} + {% endfor %} +{% endif -%} + +{% set port_names_list = [] %} +{% for port in PORT %} + {%- if port_names_list.append(port) %}{% endif %} +{% endfor %} +{% set port_names = port_names_list | join(',') -%} + +{ + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, + "BUFFER_POOL": { + "ingress_lossless_lossy_pool": { + "size": "10443264", + "type": "ingress", + "mode": "dynamic", + "xoff": "4625920" + }, + "egress_lossy_pool": { + "size": "8877440", + "type": "egress", + "mode": "dynamic" + }, + "egress_lossless_pool": { + "size": "15982592", + "type": "egress", + "mode": "static" + } + }, + "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool": "[BUFFER_POOL|ingress_lossless_lossy_pool]", + "xon": "4096", + "xoff": "58448", + "size": "1248", + "dynamic_th": "-4" + }, + "ingress_lossy_profile": { + "pool":"[BUFFER_POOL|ingress_lossless_lossy_pool]", + "size":"0", + "dynamic_th":"3" + }, + "egress_lossless_profile": { + "pool":"[BUFFER_POOL|egress_lossless_pool]", + "size":"1518", + "static_th":"3995648" + }, + "egress_lossy_profile": { + "pool":"[BUFFER_POOL|egress_lossy_pool]", + "size":"1518", + "dynamic_th":"3" + } + }, + "BUFFER_PG": { + "{{ port_names }}:3-4": { + "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]" + }, + "{{ port_names }}:0-1": { + "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" + }, + "BUFFER_QUEUE_TABLE:{{ port_names }}:3-4": { + "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" + }, + "BUFFER_QUEUE_TABLE:{{ port_names }}:0-1": { + "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" + } + } +} diff --git a/device/mellanox/x86_64-mlnx_msn2700-r0/ACS-MSN2700/buffers.json.j2 b/device/mellanox/x86_64-mlnx_msn2700-r0/ACS-MSN2700/buffers.json.j2 new file mode 100644 index 0000000000..da9c764db9 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn2700-r0/ACS-MSN2700/buffers.json.j2 @@ -0,0 +1,162 @@ +{# Default values which will be used if no actual configura available #} +{% set default_cable = '300m' %} +{% set default_ports_num = 32 -%} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) -%} + {%- set cable_len = [] -%} + {%- for local_port in DEVICE_NEIGHBOR -%} + {%- if local_port == port_name -%} + {%- if DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%} + {%- set neighbor_role = neighbor.type -%} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role -%} + {%- set roles1 = roles1 | lower -%} + {%- set roles2 = roles2 | lower -%} + {%- if roles1 in ports2cable -%} + {%- if cable_len.append(ports2cable[roles1]) -%}{%- endif -%} + {%- elif roles2 in ports2cable -%} + {%- if cable_len.append(ports2cable[roles2]) -%}{%- endif -%} + {%- endif -%} + {%- endif -%} + {%- endif -%} + {%- endfor -%} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif -%} +{% endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + +{# Generate list of ports if not defined #} +{% if PORT is not defined %} + {% set PORT = [] %} + {% for port_idx in range(0,default_ports_num) %} + {% if PORT.append("Ethernet%d" % (port_idx*4)) %}{% endif %} + {% endfor %} +{% endif -%} + +{% set port_names_list = [] %} +{% for port in PORT %} + {%- if port_names_list.append(port) %}{% endif %} +{% endfor %} +{% set port_names = port_names_list | join(',') -%} + +{ + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, +{%if switch_role == 'ToRRouter' %} +{% set ingress_lossless_pool_size = '4194304' %} +{% set ingress_lossy_pool_size = '7340032' %} +{% set egress_lossless_pool_size = '16777152' %} +{% set egress_lossy_pool_size = '7340032' %} +{% else %} +{% set ingress_lossless_pool_size = '2097152' %} +{% set ingress_lossy_pool_size = '5242880' %} +{% set egress_lossless_pool_size = '16777152' %} +{% set egress_lossy_pool_size = '5242880' %} +{%endif %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "{{ ingress_lossless_pool_size }}", + "type": "ingress", + "mode": "dynamic" + }, + "ingress_lossy_pool": { + "size": "{{ ingress_lossy_pool_size }}", + "type": "ingress", + "mode": "dynamic" + }, + "egress_lossless_pool": { + "size": "{{ egress_lossless_pool_size }}", + "type": "egress", + "mode": "dynamic" + }, + "egress_lossy_pool": { + "size": "{{ egress_lossy_pool_size }}", + "type": "egress", + "mode": "dynamic" + } + }, + "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "size":"0", + "dynamic_th":"0" + }, + "ingress_lossy_profile": { + "pool":"[BUFFER_POOL|ingress_lossy_pool]", + "size":"0", + "dynamic_th":"3" + }, + "egress_lossless_profile": { + "pool":"[BUFFER_POOL|egress_lossless_pool]", + "size":"0", + "dynamic_th":"7" + }, + "egress_lossy_profile": { + "pool":"[BUFFER_POOL|egress_lossy_pool]", + "size":"4096", + "dynamic_th":"3" + }, + "pg_lossy_profile": { + "pool":"[BUFFER_POOL|ingress_lossy_pool]", + "size":"0", + "dynamic_th":"3" + }, + "q_lossless_profile": { + "pool":"[BUFFER_POOL|egress_lossless_pool]", + "size":"0", + "dynamic_th":"7" + }, + "q_lossy_profile": { + "pool":"[BUFFER_POOL|egress_lossy_pool]", + "size":"0", + "dynamic_th":"3" + } + }, + "BUFFER_PORT_INGRESS_PROFILE_LIST": { + "{{ port_names }}": { + "profile_list" : "[BUFFER_PROFILE|ingress_lossless_profile],[BUFFER_PROFILE|ingress_lossy_profile]" + } + }, + "BUFFER_PORT_EGRESS_PROFILE_LIST": { + "{{ port_names }}": { + "profile_list" : "[BUFFER_PROFILE|egress_lossless_profile],[BUFFER_PROFILE|egress_lossy_profile]" + } + }, + "BUFFER_PG": { + "{{ port_names }}|0-1": { + "profile" : "[BUFFER_PROFILE|pg_lossy_profile]" + } + }, + "BUFFER_QUEUE": { + "{{ port_names }}|3-4": { + "profile" : "[BUFFER_PROFILE|q_lossless_profile]" + }, + "{{ port_names }}|0-1": { + "profile" : "[BUFFER_PROFILE|q_lossy_profile]" + } + } +} diff --git a/device/mellanox/x86_64-mlnx_msn2700-r0/ACS-MSN2700/pg_profile_lookup.ini b/device/mellanox/x86_64-mlnx_msn2700-r0/ACS-MSN2700/pg_profile_lookup.ini new file mode 100644 index 0000000000..b66b129fe4 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn2700-r0/ACS-MSN2700/pg_profile_lookup.ini @@ -0,0 +1,17 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold + 10000 5m 34816 18432 16384 0 + 25000 5m 34816 18432 16384 0 + 40000 5m 34816 18432 16384 0 + 50000 5m 34816 18432 16384 0 + 100000 5m 36864 18432 18432 0 + 10000 40m 36864 18432 18432 0 + 25000 40m 39936 18432 21504 0 + 40000 40m 41984 18432 23552 0 + 50000 40m 41984 18432 23552 0 + 100000 40m 54272 18432 35840 0 + 10000 300m 49152 18432 30720 0 + 25000 300m 71680 18432 53248 0 + 40000 300m 94208 18432 75776 0 + 50000 300m 94208 18432 75776 0 + 100000 300m 184320 18432 165888 0 diff --git a/device/mellanox/x86_64-mlnx_msn2740-r0/ACS-MSN2740/buffers.json.j2 b/device/mellanox/x86_64-mlnx_msn2740-r0/ACS-MSN2740/buffers.json.j2 new file mode 100644 index 0000000000..da9c764db9 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn2740-r0/ACS-MSN2740/buffers.json.j2 @@ -0,0 +1,162 @@ +{# Default values which will be used if no actual configura available #} +{% set default_cable = '300m' %} +{% set default_ports_num = 32 -%} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) -%} + {%- set cable_len = [] -%} + {%- for local_port in DEVICE_NEIGHBOR -%} + {%- if local_port == port_name -%} + {%- if DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%} + {%- set neighbor_role = neighbor.type -%} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role -%} + {%- set roles1 = roles1 | lower -%} + {%- set roles2 = roles2 | lower -%} + {%- if roles1 in ports2cable -%} + {%- if cable_len.append(ports2cable[roles1]) -%}{%- endif -%} + {%- elif roles2 in ports2cable -%} + {%- if cable_len.append(ports2cable[roles2]) -%}{%- endif -%} + {%- endif -%} + {%- endif -%} + {%- endif -%} + {%- endfor -%} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif -%} +{% endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + +{# Generate list of ports if not defined #} +{% if PORT is not defined %} + {% set PORT = [] %} + {% for port_idx in range(0,default_ports_num) %} + {% if PORT.append("Ethernet%d" % (port_idx*4)) %}{% endif %} + {% endfor %} +{% endif -%} + +{% set port_names_list = [] %} +{% for port in PORT %} + {%- if port_names_list.append(port) %}{% endif %} +{% endfor %} +{% set port_names = port_names_list | join(',') -%} + +{ + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, +{%if switch_role == 'ToRRouter' %} +{% set ingress_lossless_pool_size = '4194304' %} +{% set ingress_lossy_pool_size = '7340032' %} +{% set egress_lossless_pool_size = '16777152' %} +{% set egress_lossy_pool_size = '7340032' %} +{% else %} +{% set ingress_lossless_pool_size = '2097152' %} +{% set ingress_lossy_pool_size = '5242880' %} +{% set egress_lossless_pool_size = '16777152' %} +{% set egress_lossy_pool_size = '5242880' %} +{%endif %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "{{ ingress_lossless_pool_size }}", + "type": "ingress", + "mode": "dynamic" + }, + "ingress_lossy_pool": { + "size": "{{ ingress_lossy_pool_size }}", + "type": "ingress", + "mode": "dynamic" + }, + "egress_lossless_pool": { + "size": "{{ egress_lossless_pool_size }}", + "type": "egress", + "mode": "dynamic" + }, + "egress_lossy_pool": { + "size": "{{ egress_lossy_pool_size }}", + "type": "egress", + "mode": "dynamic" + } + }, + "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "size":"0", + "dynamic_th":"0" + }, + "ingress_lossy_profile": { + "pool":"[BUFFER_POOL|ingress_lossy_pool]", + "size":"0", + "dynamic_th":"3" + }, + "egress_lossless_profile": { + "pool":"[BUFFER_POOL|egress_lossless_pool]", + "size":"0", + "dynamic_th":"7" + }, + "egress_lossy_profile": { + "pool":"[BUFFER_POOL|egress_lossy_pool]", + "size":"4096", + "dynamic_th":"3" + }, + "pg_lossy_profile": { + "pool":"[BUFFER_POOL|ingress_lossy_pool]", + "size":"0", + "dynamic_th":"3" + }, + "q_lossless_profile": { + "pool":"[BUFFER_POOL|egress_lossless_pool]", + "size":"0", + "dynamic_th":"7" + }, + "q_lossy_profile": { + "pool":"[BUFFER_POOL|egress_lossy_pool]", + "size":"0", + "dynamic_th":"3" + } + }, + "BUFFER_PORT_INGRESS_PROFILE_LIST": { + "{{ port_names }}": { + "profile_list" : "[BUFFER_PROFILE|ingress_lossless_profile],[BUFFER_PROFILE|ingress_lossy_profile]" + } + }, + "BUFFER_PORT_EGRESS_PROFILE_LIST": { + "{{ port_names }}": { + "profile_list" : "[BUFFER_PROFILE|egress_lossless_profile],[BUFFER_PROFILE|egress_lossy_profile]" + } + }, + "BUFFER_PG": { + "{{ port_names }}|0-1": { + "profile" : "[BUFFER_PROFILE|pg_lossy_profile]" + } + }, + "BUFFER_QUEUE": { + "{{ port_names }}|3-4": { + "profile" : "[BUFFER_PROFILE|q_lossless_profile]" + }, + "{{ port_names }}|0-1": { + "profile" : "[BUFFER_PROFILE|q_lossy_profile]" + } + } +} diff --git a/device/mellanox/x86_64-mlnx_msn2740-r0/ACS-MSN2740/pg_profile_lookup.ini b/device/mellanox/x86_64-mlnx_msn2740-r0/ACS-MSN2740/pg_profile_lookup.ini new file mode 100644 index 0000000000..b66b129fe4 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn2740-r0/ACS-MSN2740/pg_profile_lookup.ini @@ -0,0 +1,17 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold + 10000 5m 34816 18432 16384 0 + 25000 5m 34816 18432 16384 0 + 40000 5m 34816 18432 16384 0 + 50000 5m 34816 18432 16384 0 + 100000 5m 36864 18432 18432 0 + 10000 40m 36864 18432 18432 0 + 25000 40m 39936 18432 21504 0 + 40000 40m 41984 18432 23552 0 + 50000 40m 41984 18432 23552 0 + 100000 40m 54272 18432 35840 0 + 10000 300m 49152 18432 30720 0 + 25000 300m 71680 18432 53248 0 + 40000 300m 94208 18432 75776 0 + 50000 300m 94208 18432 75776 0 + 100000 300m 184320 18432 165888 0 diff --git a/dockers/docker-orchagent/msn27xx.32ports.buffers.json.j2 b/dockers/docker-orchagent/msn27xx.32ports.buffers.json.j2 deleted file mode 100644 index 579832ecda..0000000000 --- a/dockers/docker-orchagent/msn27xx.32ports.buffers.json.j2 +++ /dev/null @@ -1,292 +0,0 @@ -[ -{% set port_names_list = [] %} -{% for port in PORT %} - {%- if port_names_list.append(port) %}{% endif %} -{% endfor %} -{% set port_names = port_names_list | join(',') %} -{% set switch_role = DEVICE_METADATA['localhost']['type'] %} -{%if switch_role == 'ToRRouter' %} -{% set ingress_lossless_pool_size = '4194304' %} -{% set ingress_lossy_pool_size = '7340032' %} -{% set egress_lossless_pool_size = '16777152' %} -{% set egress_lossy_pool_size = '7340032' %} -{% else %} -{% set ingress_lossless_pool_size = '2097152' %} -{% set ingress_lossy_pool_size = '5242880' %} -{% set egress_lossless_pool_size = '16777152' %} -{% set egress_lossy_pool_size = '5242880' %} -{%endif %} - { - "BUFFER_POOL_TABLE:ingress_lossless_pool": { - "size": "{{ ingress_lossless_pool_size }}", - "type": "ingress", - "mode": "dynamic" - }, - "OP": "SET" - }, - { - "BUFFER_POOL_TABLE:ingress_lossy_pool": { - "size": "{{ ingress_lossy_pool_size }}", - "type": "ingress", - "mode": "dynamic" - }, - "OP": "SET" - }, - { - "BUFFER_POOL_TABLE:egress_lossless_pool": { - "size": "{{ egress_lossless_pool_size }}", - "type": "egress", - "mode": "dynamic" - }, - "OP": "SET" - }, - { - "BUFFER_POOL_TABLE:egress_lossy_pool": { - "size": "{{ egress_lossy_pool_size }}", - "type": "egress", - "mode": "dynamic" - }, - "OP": "SET" - }, - { - "BUFFER_PROFILE_TABLE:ingress_lossless_profile": { - "pool":"[BUFFER_POOL_TABLE:ingress_lossless_pool]", - "size":"0", - "dynamic_th":"0" - }, - "OP": "SET" - }, - { - "BUFFER_PROFILE_TABLE:ingress_lossy_profile": { - "pool":"[BUFFER_POOL_TABLE:ingress_lossy_pool]", - "size":"0", - "dynamic_th":"3" - }, - "OP": "SET" - }, - { - "BUFFER_PROFILE_TABLE:egress_lossless_profile": { - "pool":"[BUFFER_POOL_TABLE:egress_lossless_pool]", - "size":"0", - "dynamic_th":"7" - }, - "OP": "SET" - }, - { - "BUFFER_PROFILE_TABLE:egress_lossy_profile": { - "pool":"[BUFFER_POOL_TABLE:egress_lossy_pool]", - "size":"4096", - "dynamic_th":"3" - }, - "OP": "SET" - }, - { - "BUFFER_PROFILE_TABLE:pg_lossy_profile": { - "pool":"[BUFFER_POOL_TABLE:ingress_lossy_pool]", - "size":"0", - "dynamic_th":"3" - }, - "OP": "SET" - }, - { - "BUFFER_PROFILE_TABLE:q_lossless_profile": { - "pool":"[BUFFER_POOL_TABLE:egress_lossless_pool]", - "size":"0", - "dynamic_th":"7" - }, - "OP": "SET" - }, - { - "BUFFER_PROFILE_TABLE:q_lossy_profile": { - "pool":"[BUFFER_POOL_TABLE:egress_lossy_pool]", - "size":"0", - "dynamic_th":"3" - }, - "OP": "SET" - }, - { - "BUFFER_PORT_INGRESS_PROFILE_LIST:{{ port_names }}": { - "profile_list" : "[BUFFER_PROFILE_TABLE:ingress_lossless_profile],[BUFFER_PROFILE_TABLE:ingress_lossy_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PORT_EGRESS_PROFILE_LIST:{{ port_names }}": { - "profile_list" : "[BUFFER_PROFILE_TABLE:egress_lossless_profile],[BUFFER_PROFILE_TABLE:egress_lossy_profile]" - }, - "OP": "SET" - }, - -{# The following template part is for variable PG profile configuration #} -{% set pg_range = '3-4' %} -{# Lists of supported speed and cable length #} -{% set supported_speed = [10000, 25000, 40000, 50000, 100000] %} -{% set supported_cable = [5, 40, 300] %} - -{# The key in this lictionary consist of two parts: (port speed)_(cable length) #} -{%- set portconfig2profile = { - '10000_5' : 'pg_lossless_10G_5m_profile', - '25000_5' : 'pg_lossless_25G_5m_profile', - '40000_5' : 'pg_lossless_40G_5m_profile', - '50000_5' : 'pg_lossless_50G_5m_profile', - '100000_5' : 'pg_lossless_100G_5m_profile', - - '10000_40' : 'pg_lossless_10G_40m_profile', - '25000_40' : 'pg_lossless_25G_40m_profile', - '40000_40' : 'pg_lossless_40G_40m_profile', - '50000_40' : 'pg_lossless_50G_40m_profile', - '100000_40' : 'pg_lossless_100G_40m_profile', - - '10000_300' : 'pg_lossless_10G_300m_profile', - '25000_300' : 'pg_lossless_25G_300m_profile', - '40000_300' : 'pg_lossless_40G_300m_profile', - '50000_300' : 'pg_lossless_50G_300m_profile', - '100000_300': 'pg_lossless_100G_300m_profile' - } --%} - -{# PG profiles. All profiles reffered in portconfig2profile dictionary should be declared here #} -{# Only those which were actually used will be created in SAI #} -{%- set pg_profiles = { - 'pg_lossless_10G_5m_profile': { 'xon': 18432, 'xoff': 16384, 'size': 34816, 'dynamic_th': 0 }, - 'pg_lossless_25G_5m_profile': { 'xon': 18432, 'xoff': 16384, 'size': 34816, 'dynamic_th': 0 }, - 'pg_lossless_40G_5m_profile': { 'xon': 18432, 'xoff': 16384, 'size': 34816, 'dynamic_th': 0 }, - 'pg_lossless_50G_5m_profile': { 'xon': 18432, 'xoff': 16384, 'size': 34816, 'dynamic_th': 0 }, - 'pg_lossless_100G_5m_profile': { 'xon': 18432, 'xoff': 18432, 'size': 36864, 'dynamic_th': 0 }, - - 'pg_lossless_10G_40m_profile': { 'xon': 18432, 'xoff': 18432, 'size': 36864, 'dynamic_th': 0 }, - 'pg_lossless_25G_40m_profile': { 'xon': 18432, 'xoff': 21504, 'size': 39936, 'dynamic_th': 0 }, - 'pg_lossless_40G_40m_profile': { 'xon': 18432, 'xoff': 23552, 'size': 41984, 'dynamic_th': 0 }, - 'pg_lossless_50G_40m_profile': { 'xon': 18432, 'xoff': 23552, 'size': 41984, 'dynamic_th': 0 }, - 'pg_lossless_100G_40m_profile': { 'xon': 18432, 'xoff': 35840, 'size': 54272, 'dynamic_th': 0 }, - - 'pg_lossless_10G_300m_profile': { 'xon': 18432, 'xoff': 30720, 'size': 49152, 'dynamic_th': 0 }, - 'pg_lossless_25G_300m_profile': { 'xon': 18432, 'xoff': 53248, 'size': 71680, 'dynamic_th': 0 }, - 'pg_lossless_40G_300m_profile': { 'xon': 18432, 'xoff': 75776, 'size': 94208, 'dynamic_th': 0 }, - 'pg_lossless_50G_300m_profile': { 'xon': 18432, 'xoff': 75776, 'size': 94208, 'dynamic_th': 0 }, - 'pg_lossless_100G_300m_profile':{ 'xon': 18432, 'xoff': 165888,'size': 184320,'dynamic_th': 0 }, - } --%} - -{# Port configuration to cable length look-up table #} -{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} -{# Roles described in the minigraph #} -{% set ports2cable = { - 'ToRRouter_Server' : '5', - 'LeafRouter_ToRRouter' : '40', - 'SpineRouter_LeafRouter' : '300' - } -%} - -{% macro cable_length(port_name) -%} - {%- set cable_len = [] -%} - {%- for local_port in DEVICE_NEIGHBOR -%} - {%- if local_port == port_name -%} - {%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%} - {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%} - {%- set neighbor_role = neighbor.type -%} - {%- set roles1 = switch_role + '_' + neighbor_role %} - {%- set roles2 = neighbor_role + '_' + switch_role -%} - {%- if roles1 in ports2cable -%} - {%- if cable_len.append(ports2cable[roles1]) -%}{%- endif -%} - {%- elif roles2 in ports2cable -%} - {%- if cable_len.append(ports2cable[roles2]) -%}{%- endif -%} - {%- endif -%} - {% endif %} - {% endif %} - {%- endfor -%} - {%- if cable_len -%} - {{ cable_len.0 }} - {%- else -%} - {{ supported_cable | last }} - {%- endif -%} -{% endmacro %} - -{%- macro find_closest_greater_config(speed, cable) -%} -{%- set new_speed = [] -%} -{%- for std_speed in supported_speed -%} - {%- if std_speed | int >= speed | int -%} - {%- if new_speed.append(std_speed) -%}{%- endif -%} - {% endif -%} -{%- endfor -%} -{%- set new_cable = [] -%} -{%- for std_cable in supported_cable -%} - {% if std_cable | int >= cable | int -%} - {%- if new_cable.append(std_cable) -%}{%- endif -%} - {% endif %} -{%- endfor -%} -{{ new_speed.0 }}_{{ new_cable.0 }} -{%- endmacro -%} - -{% set used_pg_profiles = [] %} -{% for port in PORT %} - {%- if PORT[port].speed -%} - {%- set speed = PORT[port]['speed'] -%} - {% else %} - {%- set speed = supported_speed|last -%} - {%- endif -%} - {%- set cable = cable_length(port) -%} - {%- set port_config = speed|string + '_' + cable -%} - {%- if not port_config in portconfig2profile -%} - {% set port_config = find_closest_greater_config(speed, cable) -%} - {%- endif -%} - {% set profile = portconfig2profile[port_config] -%} - {# add to list profiles which were actually used #} - {%- if profile not in used_pg_profiles and used_pg_profiles.append(profile) %}{% endif %} - { - "BUFFER_PG_TABLE:{{ port }}:{{ pg_range }}": { - "profile" : "[BUFFER_PROFILE_TABLE:{{ profile }}]" - }, - "OP": "SET" - }, -{% endfor -%} - -{# PG profiles declaration #} - -{% for profile_name in used_pg_profiles %} - {%- set profile_config = pg_profiles[profile_name] %} - { - "BUFFER_PROFILE_TABLE:{{ profile_name }}": { - "pool":"[BUFFER_POOL_TABLE:ingress_lossless_pool]", - "xon":"{{ profile_config['xon'] }}", - "xoff":"{{ profile_config['xoff'] }}", - "size":"{{ profile_config['size'] }}", - "dynamic_th":"{{ profile_config['dynamic_th'] }}" - }, - "OP": "SET" - }, -{% endfor %} - { - "BUFFER_PG_TABLE:{{ port_names }}:0-1": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossy_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_QUEUE_TABLE:{{ port_names }}:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:q_lossless_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_QUEUE_TABLE:{{ port_names }}:0-1": { - "profile" : "[BUFFER_PROFILE_TABLE:q_lossy_profile]" - }, - "OP": "SET" - }, - { - "PFC_PRIORITY_TO_PRIORITY_GROUP_MAP_TABLE:AZURE": { - "0": "0", - "1": "1", - "3": "3", - "4": "4" - }, - "OP": "SET" - }, - { - "PORT_QOS_MAP_TABLE:{{ port_names }}": { - "pfc_to_pg_map" : "[PFC_PRIORITY_TO_PRIORITY_GROUP_MAP_TABLE:AZURE]" - }, - "OP": "SET" - } -] diff --git a/dockers/docker-orchagent/ports.json.j2 b/dockers/docker-orchagent/ports.json.j2 index e043899811..b10d4d58a4 100644 --- a/dockers/docker-orchagent/ports.json.j2 +++ b/dockers/docker-orchagent/ports.json.j2 @@ -1,7 +1,12 @@ [ +{% set ports_with_speed_set=[] %} {% if PORT %} {% for port in PORT %} {% if PORT[port].has_key('speed') %} + {%- if ports_with_speed_set.append(port) -%}{%- endif -%} +{%- endif -%} +{% endfor %} +{% for port in ports_with_speed_set %} { "PORT_TABLE:{{ port }}": { "speed": "{{ PORT[port]['speed'] }}", @@ -10,7 +15,6 @@ "OP": "SET" }{% if not loop.last %},{% endif %} -{% endif %} {% endfor %} {% endif %} ] diff --git a/dockers/docker-orchagent/start.sh b/dockers/docker-orchagent/start.sh index dfdb5b897b..80ccac913f 100755 --- a/dockers/docker-orchagent/start.sh +++ b/dockers/docker-orchagent/start.sh @@ -26,6 +26,8 @@ supervisorctl start vlanmgrd supervisorctl start intfmgrd +supervisorctl start buffermgrd + # Start arp_update when VLAN exists VLAN=`sonic-cfggen -d -v 'VLAN.keys() | join(" ") if VLAN'` if [ "$VLAN" != "" ]; then diff --git a/dockers/docker-orchagent/supervisord.conf b/dockers/docker-orchagent/supervisord.conf index 95e92be622..84beaed440 100644 --- a/dockers/docker-orchagent/supervisord.conf +++ b/dockers/docker-orchagent/supervisord.conf @@ -83,3 +83,11 @@ autostart=false autorestart=false stdout_logfile=syslog stderr_logfile=syslog + +[program:buffermgrd] +command=/usr/bin/buffermgrd -l /usr/share/sonic/hwsku/pg_profile_lookup.ini +priority=10 +autostart=false +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog diff --git a/dockers/docker-orchagent/swssconfig.sh b/dockers/docker-orchagent/swssconfig.sh index 959b6714d2..6dd3486ee3 100755 --- a/dockers/docker-orchagent/swssconfig.sh +++ b/dockers/docker-orchagent/swssconfig.sh @@ -37,9 +37,6 @@ elif [ "$HWSKU" == "Force10-S6100" ]; then SWSSCONFIG_ARGS+="th.64ports.buffers.json th.64ports.qos.json " elif [ "$HWSKU" == "Arista-7050-QX32" ]; then SWSSCONFIG_ARGS+="td2.32ports.buffers.json td2.32ports.qos.json " -elif [[ "$HWSKU" == "ACS-MSN27"* ]] || [[ "$HWSKU" == "Mellanox-SN2700" ]]; then - sonic-cfggen -d -t /usr/share/sonic/templates/msn27xx.32ports.buffers.json.j2 > /etc/swss/config.d/msn27xx.32ports.buffers.json - SWSSCONFIG_ARGS+="msn27xx.32ports.buffers.json " fi for file in $SWSSCONFIG_ARGS; do diff --git a/files/image_config/platform/rc.local b/files/image_config/platform/rc.local index 436a7de907..a78c07d93b 100755 --- a/files/image_config/platform/rc.local +++ b/files/image_config/platform/rc.local @@ -112,15 +112,23 @@ if [ -f /host/image-$sonic_version/platform/firsttime ]; then else # Use default minigraph.xml cp /usr/share/sonic/device/$platform/minigraph.xml /etc/sonic/ - HWSKU=`sonic-cfggen -m /etc/sonic/minigraph.xml -v "DEVICE_METADATA['localhost']['hwsku']"` - if [ -f /usr/share/sonic/device/$platform/$HWSKU/qos.json ]; then - # merge qos configuration into init config file - sonic-cfggen -j /etc/sonic/init_cfg.json -j /usr/share/sonic/device/$platform/$HWSKU/qos.json --print-data > /tmp/init_cfg.json - mv /tmp/init_cfg.json /etc/sonic/init_cfg.json - fi sonic-cfggen -m -j /etc/sonic/init_cfg.json --print-data > /etc/sonic/config_db.json fi + HWSKU=`sonic-cfggen -m /etc/sonic/minigraph.xml -v "DEVICE_METADATA['localhost']['hwsku']"` + if [ -f /usr/share/sonic/device/$platform/$HWSKU/qos.json ]; then + # merge qos configuration into init config file + sonic-cfggen -j /etc/sonic/config_db.json -j /usr/share/sonic/device/$platform/$HWSKU/qos.json --print-data > /tmp/config_db.json + mv /tmp/config_db.json /etc/sonic/config_db.json + fi + + if [ -f /usr/share/sonic/device/$platform/$HWSKU/buffers.json.j2 ]; then + # generate and merge buffers configuration into config file + sonic-cfggen -m -t /usr/share/sonic/device/$platform/$HWSKU/buffers.json.j2 > /tmp/buffers.json + sonic-cfggen -j /etc/sonic/config_db.json -j /tmp/buffers.json --print-data > /tmp/config_db.json + mv /tmp/config_db.json /etc/sonic/config_db.json + fi + if [ -d /host/image-$sonic_version/platform/$platform ]; then dpkg -i /host/image-$sonic_version/platform/$platform/*.deb fi diff --git a/platform/vs/docker-sonic-vs/Dockerfile.j2 b/platform/vs/docker-sonic-vs/Dockerfile.j2 index a26c3f475f..7599059164 100644 --- a/platform/vs/docker-sonic-vs/Dockerfile.j2 +++ b/platform/vs/docker-sonic-vs/Dockerfile.j2 @@ -70,6 +70,8 @@ RUN sed -ri 's/^(save .*$)/# \1/g; COPY ["50-default.conf", "/etc/rsyslog.d/"] COPY ["start.sh", "orchagent.sh", "/usr/bin/"] COPY ["brcm.profile.ini", "/usr/share/sonic/device/vswitch/"] +COPY ["buffers.json.j2", "/usr/share/sonic/device/vswitch/"] +COPY ["pg_profile_lookup.ini", "/usr/share/sonic/device/vswitch/"] COPY ["supervisord.conf", "/etc/supervisor/conf.d/"] COPY ["files/configdb-load.sh", "/usr/bin/"] COPY ["files/arp_update", "/usr/bin"] diff --git a/platform/vs/docker-sonic-vs/buffers.json.j2 b/platform/vs/docker-sonic-vs/buffers.json.j2 new file mode 100644 index 0000000000..da9c764db9 --- /dev/null +++ b/platform/vs/docker-sonic-vs/buffers.json.j2 @@ -0,0 +1,162 @@ +{# Default values which will be used if no actual configura available #} +{% set default_cable = '300m' %} +{% set default_ports_num = 32 -%} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) -%} + {%- set cable_len = [] -%} + {%- for local_port in DEVICE_NEIGHBOR -%} + {%- if local_port == port_name -%} + {%- if DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%} + {%- set neighbor_role = neighbor.type -%} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role -%} + {%- set roles1 = roles1 | lower -%} + {%- set roles2 = roles2 | lower -%} + {%- if roles1 in ports2cable -%} + {%- if cable_len.append(ports2cable[roles1]) -%}{%- endif -%} + {%- elif roles2 in ports2cable -%} + {%- if cable_len.append(ports2cable[roles2]) -%}{%- endif -%} + {%- endif -%} + {%- endif -%} + {%- endif -%} + {%- endfor -%} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif -%} +{% endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + +{# Generate list of ports if not defined #} +{% if PORT is not defined %} + {% set PORT = [] %} + {% for port_idx in range(0,default_ports_num) %} + {% if PORT.append("Ethernet%d" % (port_idx*4)) %}{% endif %} + {% endfor %} +{% endif -%} + +{% set port_names_list = [] %} +{% for port in PORT %} + {%- if port_names_list.append(port) %}{% endif %} +{% endfor %} +{% set port_names = port_names_list | join(',') -%} + +{ + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, +{%if switch_role == 'ToRRouter' %} +{% set ingress_lossless_pool_size = '4194304' %} +{% set ingress_lossy_pool_size = '7340032' %} +{% set egress_lossless_pool_size = '16777152' %} +{% set egress_lossy_pool_size = '7340032' %} +{% else %} +{% set ingress_lossless_pool_size = '2097152' %} +{% set ingress_lossy_pool_size = '5242880' %} +{% set egress_lossless_pool_size = '16777152' %} +{% set egress_lossy_pool_size = '5242880' %} +{%endif %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "{{ ingress_lossless_pool_size }}", + "type": "ingress", + "mode": "dynamic" + }, + "ingress_lossy_pool": { + "size": "{{ ingress_lossy_pool_size }}", + "type": "ingress", + "mode": "dynamic" + }, + "egress_lossless_pool": { + "size": "{{ egress_lossless_pool_size }}", + "type": "egress", + "mode": "dynamic" + }, + "egress_lossy_pool": { + "size": "{{ egress_lossy_pool_size }}", + "type": "egress", + "mode": "dynamic" + } + }, + "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "size":"0", + "dynamic_th":"0" + }, + "ingress_lossy_profile": { + "pool":"[BUFFER_POOL|ingress_lossy_pool]", + "size":"0", + "dynamic_th":"3" + }, + "egress_lossless_profile": { + "pool":"[BUFFER_POOL|egress_lossless_pool]", + "size":"0", + "dynamic_th":"7" + }, + "egress_lossy_profile": { + "pool":"[BUFFER_POOL|egress_lossy_pool]", + "size":"4096", + "dynamic_th":"3" + }, + "pg_lossy_profile": { + "pool":"[BUFFER_POOL|ingress_lossy_pool]", + "size":"0", + "dynamic_th":"3" + }, + "q_lossless_profile": { + "pool":"[BUFFER_POOL|egress_lossless_pool]", + "size":"0", + "dynamic_th":"7" + }, + "q_lossy_profile": { + "pool":"[BUFFER_POOL|egress_lossy_pool]", + "size":"0", + "dynamic_th":"3" + } + }, + "BUFFER_PORT_INGRESS_PROFILE_LIST": { + "{{ port_names }}": { + "profile_list" : "[BUFFER_PROFILE|ingress_lossless_profile],[BUFFER_PROFILE|ingress_lossy_profile]" + } + }, + "BUFFER_PORT_EGRESS_PROFILE_LIST": { + "{{ port_names }}": { + "profile_list" : "[BUFFER_PROFILE|egress_lossless_profile],[BUFFER_PROFILE|egress_lossy_profile]" + } + }, + "BUFFER_PG": { + "{{ port_names }}|0-1": { + "profile" : "[BUFFER_PROFILE|pg_lossy_profile]" + } + }, + "BUFFER_QUEUE": { + "{{ port_names }}|3-4": { + "profile" : "[BUFFER_PROFILE|q_lossless_profile]" + }, + "{{ port_names }}|0-1": { + "profile" : "[BUFFER_PROFILE|q_lossy_profile]" + } + } +} diff --git a/platform/vs/docker-sonic-vs/pg_profile_lookup.ini b/platform/vs/docker-sonic-vs/pg_profile_lookup.ini new file mode 100644 index 0000000000..b66b129fe4 --- /dev/null +++ b/platform/vs/docker-sonic-vs/pg_profile_lookup.ini @@ -0,0 +1,17 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold + 10000 5m 34816 18432 16384 0 + 25000 5m 34816 18432 16384 0 + 40000 5m 34816 18432 16384 0 + 50000 5m 34816 18432 16384 0 + 100000 5m 36864 18432 18432 0 + 10000 40m 36864 18432 18432 0 + 25000 40m 39936 18432 21504 0 + 40000 40m 41984 18432 23552 0 + 50000 40m 41984 18432 23552 0 + 100000 40m 54272 18432 35840 0 + 10000 300m 49152 18432 30720 0 + 25000 300m 71680 18432 53248 0 + 40000 300m 94208 18432 75776 0 + 50000 300m 94208 18432 75776 0 + 100000 300m 184320 18432 165888 0 diff --git a/platform/vs/docker-sonic-vs/start.sh b/platform/vs/docker-sonic-vs/start.sh index 876bfd8357..9df6f9f5ad 100755 --- a/platform/vs/docker-sonic-vs/start.sh +++ b/platform/vs/docker-sonic-vs/start.sh @@ -11,7 +11,9 @@ if [ -f /etc/sonic/config_db.json ]; then sonic-cfggen -j /etc/sonic/config_db.json -j /etc/sonic/init_cfg.json --print-data > /tmp/config_db.json mv /tmp/config_db.json /etc/sonic/config_db.json else - sonic-cfggen -j /etc/sonic/init_cfg.json --print-data > /etc/sonic/config_db.json + # generate and merge buffers configuration into config file + sonic-cfggen -t /usr/share/sonic/device/vswitch/buffers.json.j2 > /tmp/buffers.json + sonic-cfggen -j /etc/sonic/init_cfg.json -j /tmp/buffers.json --print-data > /etc/sonic/config_db.json fi mkdir -p /etc/swss/config.d/ @@ -52,6 +54,8 @@ supervisorctl start vlanmgrd supervisorctl start zebra +supervisorctl start buffermgrd + # Start arp_update when VLAN exists VLAN=`sonic-cfggen -d -v 'VLAN.keys() | join(" ") if VLAN'` if [ "$VLAN" != "" ]; then diff --git a/platform/vs/docker-sonic-vs/supervisord.conf b/platform/vs/docker-sonic-vs/supervisord.conf index 2526aefe3a..fc425142db 100644 --- a/platform/vs/docker-sonic-vs/supervisord.conf +++ b/platform/vs/docker-sonic-vs/supervisord.conf @@ -122,3 +122,11 @@ autostart=false autorestart=true stdout_logfile=syslog stderr_logfile=syslog + +[program:buffermgrd] +command=/usr/bin/buffermgrd -l /usr/share/sonic/device/vswitch/pg_profile_lookup.ini +priority=10 +autostart=false +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog diff --git a/src/sonic-config-engine/tests/sample_output/msn27.32ports.json b/src/sonic-config-engine/tests/sample_output/msn27.32ports.json index a1e8e1486d..2a878c95f2 100644 --- a/src/sonic-config-engine/tests/sample_output/msn27.32ports.json +++ b/src/sonic-config-engine/tests/sample_output/msn27.32ports.json @@ -1,341 +1,120 @@ -[ - { - "BUFFER_POOL_TABLE:ingress_lossless_pool": { +{ + "CABLE_LENGTH": { + "AZURE": { + "Ethernet8": "300m", + "Ethernet0": "300m", + "Ethernet4": "300m", + "Ethernet108": "300m", + "Ethernet100": "300m", + "Ethernet104": "300m", + "Ethernet68": "300m", + "Ethernet96": "300m", + "Ethernet124": "300m", + "Ethernet92": "300m", + "Ethernet120": "300m", + "Ethernet52": "300m", + "Ethernet56": "300m", + "Ethernet76": "300m", + "Ethernet72": "300m", + "Ethernet64": "300m", + "Ethernet32": "300m", + "Ethernet16": "300m", + "Ethernet36": "300m", + "Ethernet12": "300m", + "Ethernet88": "300m", + "Ethernet116": "300m", + "Ethernet80": "300m", + "Ethernet112": "300m", + "Ethernet84": "300m", + "Ethernet48": "300m", + "Ethernet44": "300m", + "Ethernet40": "300m", + "Ethernet28": "300m", + "Ethernet60": "300m", + "Ethernet20": "300m", + "Ethernet24": "300m" + } + }, + "BUFFER_POOL": { + "ingress_lossless_pool": { "size": "2097152", "type": "ingress", "mode": "dynamic" }, - "OP": "SET" - }, - { - "BUFFER_POOL_TABLE:ingress_lossy_pool": { + "ingress_lossy_pool": { "size": "5242880", "type": "ingress", "mode": "dynamic" }, - "OP": "SET" - }, - { - "BUFFER_POOL_TABLE:egress_lossless_pool": { + "egress_lossless_pool": { "size": "16777152", "type": "egress", "mode": "dynamic" }, - "OP": "SET" - }, - { - "BUFFER_POOL_TABLE:egress_lossy_pool": { + "egress_lossy_pool": { "size": "5242880", "type": "egress", "mode": "dynamic" - }, - "OP": "SET" + } }, - { - "BUFFER_PROFILE_TABLE:ingress_lossless_profile": { - "pool":"[BUFFER_POOL_TABLE:ingress_lossless_pool]", + "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"[BUFFER_POOL|ingress_lossless_pool]", "size":"0", "dynamic_th":"0" }, - "OP": "SET" - }, - { - "BUFFER_PROFILE_TABLE:ingress_lossy_profile": { - "pool":"[BUFFER_POOL_TABLE:ingress_lossy_pool]", + "ingress_lossy_profile": { + "pool":"[BUFFER_POOL|ingress_lossy_pool]", "size":"0", "dynamic_th":"3" }, - "OP": "SET" - }, - { - "BUFFER_PROFILE_TABLE:egress_lossless_profile": { - "pool":"[BUFFER_POOL_TABLE:egress_lossless_pool]", + "egress_lossless_profile": { + "pool":"[BUFFER_POOL|egress_lossless_pool]", "size":"0", "dynamic_th":"7" }, - "OP": "SET" - }, - { - "BUFFER_PROFILE_TABLE:egress_lossy_profile": { - "pool":"[BUFFER_POOL_TABLE:egress_lossy_pool]", + "egress_lossy_profile": { + "pool":"[BUFFER_POOL|egress_lossy_pool]", "size":"4096", "dynamic_th":"3" }, - "OP": "SET" - }, - { - "BUFFER_PROFILE_TABLE:pg_lossy_profile": { - "pool":"[BUFFER_POOL_TABLE:ingress_lossy_pool]", + "pg_lossy_profile": { + "pool":"[BUFFER_POOL|ingress_lossy_pool]", "size":"0", "dynamic_th":"3" }, - "OP": "SET" - }, - { - "BUFFER_PROFILE_TABLE:q_lossless_profile": { - "pool":"[BUFFER_POOL_TABLE:egress_lossless_pool]", + "q_lossless_profile": { + "pool":"[BUFFER_POOL|egress_lossless_pool]", "size":"0", "dynamic_th":"7" }, - "OP": "SET" - }, - { - "BUFFER_PROFILE_TABLE:q_lossy_profile": { - "pool":"[BUFFER_POOL_TABLE:egress_lossy_pool]", + "q_lossy_profile": { + "pool":"[BUFFER_POOL|egress_lossy_pool]", "size":"0", "dynamic_th":"3" - }, - "OP": "SET" + } }, - { - "BUFFER_PORT_INGRESS_PROFILE_LIST:Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24": { - "profile_list" : "[BUFFER_PROFILE_TABLE:ingress_lossless_profile],[BUFFER_PROFILE_TABLE:ingress_lossy_profile]" - }, - "OP": "SET" + "BUFFER_PORT_INGRESS_PROFILE_LIST": { + "Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24": { + "profile_list" : "[BUFFER_PROFILE|ingress_lossless_profile],[BUFFER_PROFILE|ingress_lossy_profile]" + } }, - { - "BUFFER_PORT_EGRESS_PROFILE_LIST:Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24": { - "profile_list" : "[BUFFER_PROFILE_TABLE:egress_lossless_profile],[BUFFER_PROFILE_TABLE:egress_lossy_profile]" - }, - "OP": "SET" + "BUFFER_PORT_EGRESS_PROFILE_LIST": { + "Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24": { + "profile_list" : "[BUFFER_PROFILE|egress_lossless_profile],[BUFFER_PROFILE|egress_lossy_profile]" + } }, - - - - { - "BUFFER_PG_TABLE:Ethernet8:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" + "BUFFER_PG": { + "Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24|0-1": { + "profile" : "[BUFFER_PROFILE|pg_lossy_profile]" + } }, - { - "BUFFER_PG_TABLE:Ethernet0:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" + "BUFFER_QUEUE": { + "Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24|3-4": { + "profile" : "[BUFFER_PROFILE|q_lossless_profile]" }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet4:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet108:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet100:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet104:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet68:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet96:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet124:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet92:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet120:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet52:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet56:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet76:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet72:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet64:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet32:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet16:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet36:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet12:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet88:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet116:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet80:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet112:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet84:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet48:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet44:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet40:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet28:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet60:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet20:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet24:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]" - }, - "OP": "SET" - }, - - { - "BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile": { - "pool":"[BUFFER_POOL_TABLE:ingress_lossless_pool]", - "xon":"18432", - "xoff":"75776", - "size":"94208", - "dynamic_th":"0" - }, - "OP": "SET" - }, - { - "BUFFER_PG_TABLE:Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24:0-1": { - "profile" : "[BUFFER_PROFILE_TABLE:pg_lossy_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_QUEUE_TABLE:Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24:3-4": { - "profile" : "[BUFFER_PROFILE_TABLE:q_lossless_profile]" - }, - "OP": "SET" - }, - { - "BUFFER_QUEUE_TABLE:Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24:0-1": { - "profile" : "[BUFFER_PROFILE_TABLE:q_lossy_profile]" - }, - "OP": "SET" - }, - { - "PFC_PRIORITY_TO_PRIORITY_GROUP_MAP_TABLE:AZURE": { - "0": "0", - "1": "1", - "3": "3", - "4": "4" - }, - "OP": "SET" - }, - { - "PORT_QOS_MAP_TABLE:Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24": { - "pfc_to_pg_map" : "[PFC_PRIORITY_TO_PRIORITY_GROUP_MAP_TABLE:AZURE]" - }, - "OP": "SET" + "Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24|0-1": { + "profile" : "[BUFFER_PROFILE|q_lossy_profile]" + } } -] +} diff --git a/src/sonic-config-engine/tests/sample_output/ports.json b/src/sonic-config-engine/tests/sample_output/ports.json index 216627ef34..6536c620f8 100644 --- a/src/sonic-config-engine/tests/sample_output/ports.json +++ b/src/sonic-config-engine/tests/sample_output/ports.json @@ -26,5 +26,5 @@ "description": "Interface description" }, "OP": "SET" - }, + } ] diff --git a/src/sonic-config-engine/tests/test_j2files.py b/src/sonic-config-engine/tests/test_j2files.py index ce96ab425c..5afd114997 100644 --- a/src/sonic-config-engine/tests/test_j2files.py +++ b/src/sonic-config-engine/tests/test_j2files.py @@ -85,7 +85,7 @@ class TestJ2Files(TestCase): assert filecmp.cmp(sample_output_file, self.output_file) def test_msn27xx_32ports_buffers(self): - buffer_file = os.path.join(self.test_dir, '..', '..', '..', 'dockers', 'docker-orchagent', 'msn27xx.32ports.buffers.json.j2') + buffer_file = os.path.join(self.test_dir, '..', '..', '..', 'device', 'mellanox', 'x86_64-mlnx_msn2700-r0', 'ACS-MSN2700', 'buffers.json.j2') argument = '-m ' + self.t1_mlnx_minigraph + ' -p ' + self.mlnx_port_config + ' -t ' + buffer_file + ' > ' + self.output_file self.run_script(argument) @@ -93,7 +93,6 @@ class TestJ2Files(TestCase): self.assertTrue(filecmp.cmp(sample_output_file, self.output_file)) - def tearDown(self): try: os.remove(self.output_file) diff --git a/src/sonic-swss b/src/sonic-swss index fbe781de82..60a90d7628 160000 --- a/src/sonic-swss +++ b/src/sonic-swss @@ -1 +1 @@ -Subproject commit fbe781de82197304d6622736271649d4ac10de67 +Subproject commit 60a90d762876955116f6f4a0ec47b2ca2c6f57ed diff --git a/src/sonic-swss-common b/src/sonic-swss-common index aa55f69a9b..04b8b84ab6 160000 --- a/src/sonic-swss-common +++ b/src/sonic-swss-common @@ -1 +1 @@ -Subproject commit aa55f69a9b53588d1de872f2d6f15384659f1a36 +Subproject commit 04b8b84ab6d66c97d7d727ac80a431b7ba85cf57 diff --git a/src/sonic-utilities b/src/sonic-utilities index 26c3709786..17e0bf9be5 160000 --- a/src/sonic-utilities +++ b/src/sonic-utilities @@ -1 +1 @@ -Subproject commit 26c3709786a4072625d7f3ebb9f2e52d798a3ba0 +Subproject commit 17e0bf9be5f16ba301f30d3354e7554b49fd61e5