diff --git a/device/barefoot/x86_64-accton_as9516_32d-r0/newport/buffers_defaults_t0.j2 b/device/barefoot/x86_64-accton_as9516_32d-r0/newport/buffers_defaults_t0.j2 index a06f62f733a..89485794926 100644 --- a/device/barefoot/x86_64-accton_as9516_32d-r0/newport/buffers_defaults_t0.j2 +++ b/device/barefoot/x86_64-accton_as9516_32d-r0/newport/buffers_defaults_t0.j2 @@ -1,12 +1,12 @@ {% set default_cable = '5m' %} -{% set ingress_lossless_pool_size = '23850816' %} -{% set ingress_lossy_pool_size = '36222208' %} -{% set egress_lossless_pool_size = '29482816' %} -{% set egress_lossy_pool_size = '26400000' %} +{% set ingress_lossless_pool_size = '43067728' %} +{% set ingress_lossy_pool_size = '3520000' %} +{% set egress_lossless_pool_size = '46749824' %} +{% set egress_lossy_pool_size = '2463824' %} {%- macro generate_port_lists(PORT_ALL) %} {# Generate list of ports #} - {%- for port_idx in range(0,32) %} + {%- for port_idx in range(0, 32) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{%- endif %} {%- endfor %} {%- endmacro %} @@ -15,6 +15,9 @@ "BUFFER_POOL": { "ingress_lossless_pool": { "size": "{{ ingress_lossless_pool_size }}", + {%- if dynamic_mode is defined %} + "xoff": "3153920", + {%- endif %} "type": "ingress", "mode": "dynamic" }, diff --git a/device/barefoot/x86_64-accton_as9516_32d-r0/newport/buffers_defaults_t1.j2 b/device/barefoot/x86_64-accton_as9516_32d-r0/newport/buffers_defaults_t1.j2 index a06f62f733a..89485794926 100644 --- a/device/barefoot/x86_64-accton_as9516_32d-r0/newport/buffers_defaults_t1.j2 +++ b/device/barefoot/x86_64-accton_as9516_32d-r0/newport/buffers_defaults_t1.j2 @@ -1,12 +1,12 @@ {% set default_cable = '5m' %} -{% set ingress_lossless_pool_size = '23850816' %} -{% set ingress_lossy_pool_size = '36222208' %} -{% set egress_lossless_pool_size = '29482816' %} -{% set egress_lossy_pool_size = '26400000' %} +{% set ingress_lossless_pool_size = '43067728' %} +{% set ingress_lossy_pool_size = '3520000' %} +{% set egress_lossless_pool_size = '46749824' %} +{% set egress_lossy_pool_size = '2463824' %} {%- macro generate_port_lists(PORT_ALL) %} {# Generate list of ports #} - {%- for port_idx in range(0,32) %} + {%- for port_idx in range(0, 32) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{%- endif %} {%- endfor %} {%- endmacro %} @@ -15,6 +15,9 @@ "BUFFER_POOL": { "ingress_lossless_pool": { "size": "{{ ingress_lossless_pool_size }}", + {%- if dynamic_mode is defined %} + "xoff": "3153920", + {%- endif %} "type": "ingress", "mode": "dynamic" }, diff --git a/device/barefoot/x86_64-accton_as9516_32d-r0/newport/buffers_dynamic.json.j2 b/device/barefoot/x86_64-accton_as9516_32d-r0/newport/buffers_dynamic.json.j2 new file mode 100644 index 00000000000..426aee9cd8d --- /dev/null +++ b/device/barefoot/x86_64-accton_as9516_32d-r0/newport/buffers_dynamic.json.j2 @@ -0,0 +1,4 @@ +{%- set default_topo = 't0' %} +{%- set dynamic_mode = 'true' %} +{%- set shp = 'true' %} +{%- include 'buffers_config.j2' %} diff --git a/device/barefoot/x86_64-accton_as9516_32d-r0/newport/switch-tna-sai.conf b/device/barefoot/x86_64-accton_as9516_32d-r0/newport/switch-tna-sai.conf index 2789eb0e2c0..9a6ae5b120f 100644 --- a/device/barefoot/x86_64-accton_as9516_32d-r0/newport/switch-tna-sai.conf +++ b/device/barefoot/x86_64-accton_as9516_32d-r0/newport/switch-tna-sai.conf @@ -23,7 +23,7 @@ ], "model_json_path" : "share/switch/aug_model.json", "switchapi_port_add": false, - "non_default_port_ppgs": 5 + "non_default_port_ppgs": 6 } ] } @@ -32,7 +32,7 @@ { "device-id": 0, "model_json_path": "share/switch/aug_model.json", - "non_default_port_ppgs": 5, + "non_default_port_ppgs": 6, "switchapi_port_add": false } ] diff --git a/device/barefoot/x86_64-accton_as9516_32d-r0/port_peripheral_config.j2 b/device/barefoot/x86_64-accton_as9516_32d-r0/port_peripheral_config.j2 new file mode 100644 index 00000000000..c1322ec2cc6 --- /dev/null +++ b/device/barefoot/x86_64-accton_as9516_32d-r0/port_peripheral_config.j2 @@ -0,0 +1,10 @@ +[ + {%- include 'peripheral_table.j2' %} + , + { + "PORT_PERIPHERAL_TABLE:global": { + "gearbox_model": "barefoot" + }, + "OP": "SET" + } +] diff --git a/files/build_templates/buffers_config.j2 b/files/build_templates/buffers_config.j2 index 21d730c74b2..f15e54b5513 100644 --- a/files/build_templates/buffers_config.j2 +++ b/files/build_templates/buffers_config.j2 @@ -226,6 +226,11 @@ def "DEFAULT_LOSSLESS_BUFFER_PARAMETER": { "AZURE": { "default_dynamic_th": "0" + {%- if shp is defined -%} + , + "max_headroom_size" : "0", + "over_subscribe_ratio" : "1" + {%- endif -%} } }, "LOSSLESS_TRAFFIC_PATTERN": { diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index 57438ef785f..c5e76d3c47c 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -530,7 +530,7 @@ sudo cp $BUILD_TEMPLATES/buffers_config.j2 $FILESYSTEM_ROOT_USR_SHARE_SONIC_TEMP sudo cp $BUILD_TEMPLATES/qos_config.j2 $FILESYSTEM_ROOT_USR_SHARE_SONIC_TEMPLATES/ # Copy the templates for dynamically buffer calculation -{% if sonic_asic_platform == "mellanox" or sonic_asic_platform == "vs" %} +{% if sonic_asic_platform == "mellanox" or sonic_asic_platform == "vs" or sonic_asic_platform == "barefoot" %} if [ -f platform/{{ sonic_asic_platform }}/asic_table.j2 ] then sudo cp platform/{{ sonic_asic_platform }}/asic_table.j2 $FILESYSTEM_ROOT/usr/share/sonic/templates/asic_table.j2 diff --git a/platform/barefoot/asic_table.j2 b/platform/barefoot/asic_table.j2 new file mode 100644 index 00000000000..04670dd28e7 --- /dev/null +++ b/platform/barefoot/asic_table.j2 @@ -0,0 +1,24 @@ +{%- if DEVICE_METADATA is defined and DEVICE_METADATA['localhost']['platform'] is defined %} +{%- set platform = DEVICE_METADATA['localhost']['platform'] %} +{%- endif -%} + + +[ +{% set platform2asic = { + 'x86_64-accton_as9516_32d-r0':'BAREFOOT-TOFINO-2', + 'x86_64-accton_as9516bf_32d-r0':'BAREFOOT-TOFINO-2' + } +%} +{% set asic_type = platform2asic[platform] %} +{% if asic_type == 'BAREFOOT-TOFINO-2' %} + { + "ASIC_TABLE:BAREFOOT-TOFINO-2": { + "cell_size": "176", + "pipeline_latency": "68", + "mac_phy_delay": "0.8", + "peer_response_time": "9" + }, + "OP": "SET" + } +{% endif %} +] diff --git a/platform/barefoot/peripheral_table.j2 b/platform/barefoot/peripheral_table.j2 new file mode 100644 index 00000000000..06b33810fb2 --- /dev/null +++ b/platform/barefoot/peripheral_table.j2 @@ -0,0 +1,18 @@ +{%- if DEVICE_METADATA is defined and DEVICE_METADATA['localhost']['platform'] is defined %} +{%- set platform = DEVICE_METADATA['localhost']['platform'] %} +{%- endif -%} + +{% set platform2gearbox = { + 'x86_64-accton_as9516_32d-r0':'barefoot', + 'x86_64-accton_as9516bf_32d-r0':'barefoot' + } +%} +{% set gearbox_type = platform2gearbox[platform] %} +{% if gearbox_type == 'barefoot' %} + { + "PERIPHERAL TABLE:barefoot": { + "gearbox_delay" : "365" + }, + "OP": "SET" + } +{% endif %} diff --git a/platform/barefoot/rules.mk b/platform/barefoot/rules.mk index 7f159da63fc..3eaa35fdb2c 100644 --- a/platform/barefoot/rules.mk +++ b/platform/barefoot/rules.mk @@ -33,3 +33,5 @@ endif # Runtime dependency on sai is set only for syncd #$(SYNCD)_RDEPENDS += $(BFN_SAI) $(WNC_OSW1800_PLATFORM) $(BFN_INGRASYS_PLATFORM) $(BFN_PLATFORM) $(SYNCD)_RDEPENDS += $(BFN_SAI) $(BFN_INGRASYS_PLATFORM) $(BFN_PLATFORM) + +export SONIC_BUFFER_MODEL=dynamic