diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/buffers.json.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/buffers.json.j2
index 45cebf3b7144..ada7dca895ce 100644
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/buffers.json.j2
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/buffers.json.j2
@@ -1,6 +1,5 @@
{# Default values which will be used if no actual configura available #}
-{% set default_cable = '300m' %}
-{% set default_ports_num = 64 -%}
+{% set default_cable = '40m' %}
{# Port configuration to cable length look-up table #}
{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #}
@@ -12,44 +11,53 @@
}
%}
-{%- 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 -%}
+{%- 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 -%}
- {%- 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 -%}
+ {%- 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 %}
+ {%- else %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- 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 %}
@@ -57,6 +65,15 @@
{% 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": "47218432",
@@ -64,7 +81,7 @@
"mode": "dynamic",
"xoff": "17708800"
},
- "egress_lossy_pool": {
+ "lossy_pool": {
"size": "18874368",
"type": "egress",
"mode": "dynamic",
@@ -74,46 +91,46 @@
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
- "xoff":"1433600",
+ "xoff":"38816",
"size":"1518",
- "dynamic_th":"-4",
- "xon_offset":"6272"
+ "dynamic_th":"3",
+ "xon_offset":"13440"
},
- "ingress_lossy_profile": {
+ "egress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
- "egress_lossless_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
"egress_lossy_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"1518",
"dynamic_th":"3"
}
},
"BUFFER_PG": {
- "{{ port_names }}|0-3": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
- "{{ port_names }}|4-5": {
+ "{{ port_names }}|3-4": {
"profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
},
- "{{ port_names }}|6-7": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}
},
"BUFFER_QUEUE": {
- "{{ port_names }}|4-5": {
- "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
},
- "{{ port_names }}|0-3": {
+ "{{ port_names }}|0-2": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
},
- "{{ port_names }}|6-7": {
+ "{{ port_names }}|5-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}
}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/buffers_defaults_def_lossy.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/buffers_defaults_def_lossy.j2
new file mode 100644
index 000000000000..fa2b49e6340a
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/buffers_defaults_def_lossy.j2
@@ -0,0 +1,38 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+{
+ "BUFFER_POOL": {
+ "lossy_pool": {
+ "size": "56985600",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/buffers_defaults_t1.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/buffers_defaults_t1.j2
new file mode 100644
index 000000000000..ada7dca895ce
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/buffers_defaults_t1.j2
@@ -0,0 +1,137 @@
+{# Default values which will be used if no actual configura available #}
+{% set default_cable = '40m' %}
+
+{# 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 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 %}
+ {%- 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 %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- endif %}
+{%- endmacro %}
+
+{%- if DEVICE_METADATA is defined %}
+{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
+{%- 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": "47218432",
+ "type": "ingress",
+ "mode": "dynamic",
+ "xoff": "17708800"
+ },
+ "lossy_pool": {
+ "size": "18874368",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "xoff":"38816",
+ "size":"1518",
+ "dynamic_th":"3",
+ "xon_offset":"13440"
+ },
+ "egress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ },
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ },
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/config_64x100G_midstone200i.yaml b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/config_64x100G_midstone200i.yaml
index 0b7e1a2db9d6..e55efe3c88b9 100755
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/config_64x100G_midstone200i.yaml
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/config_64x100G_midstone200i.yaml
@@ -10,6 +10,11 @@ nodes:
multi_interface: "yes"
buffer_management_mode: "api_driven"
max_lossless_tc: "2"
+ pcie_attn: "14"
+ pcie_post: "18"
+ pcie_pre1: "0"
+ ilpm_enable: "1"
+ forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E"
txring:
- txring_id: "0"
desc_count: "1024"
@@ -57,452 +62,452 @@ nodes:
sysport: "128"
type: "cpu"
- fec: "KRFEC"
- id: "1"
+ id: "249"
lanes: "0:4"
serdes_group: "31"
speed: "100G"
- sysport: "1"
+ sysport: "249"
type: "eth"
- fec: "KRFEC"
- id: "2"
+ id: "253"
lanes: "4:4"
serdes_group: "31"
speed: "100G"
- sysport: "2"
+ sysport: "253"
type: "eth"
- fec: "KRFEC"
- id: "3"
+ id: "245"
lanes: "4:4"
serdes_group: "30"
speed: "100G"
- sysport: "3"
+ sysport: "245"
type: "eth"
- fec: "KRFEC"
- id: "4"
+ id: "241"
lanes: "0:4"
serdes_group: "30"
speed: "100G"
- sysport: "4"
+ sysport: "241"
type: "eth"
- fec: "KRFEC"
- id: "5"
+ id: "233"
lanes: "0:4"
serdes_group: "29"
speed: "100G"
- sysport: "5"
+ sysport: "233"
type: "eth"
- fec: "KRFEC"
- id: "6"
+ id: "237"
lanes: "4:4"
serdes_group: "29"
speed: "100G"
- sysport: "6"
+ sysport: "237"
type: "eth"
- fec: "KRFEC"
- id: "7"
+ id: "229"
lanes: "4:4"
serdes_group: "28"
speed: "100G"
- sysport: "7"
+ sysport: "229"
type: "eth"
- fec: "KRFEC"
- id: "8"
+ id: "225"
lanes: "0:4"
serdes_group: "28"
speed: "100G"
- sysport: "8"
+ sysport: "225"
type: "eth"
- fec: "KRFEC"
- id: "9"
+ id: "217"
lanes: "0:4"
serdes_group: "27"
speed: "100G"
- sysport: "9"
+ sysport: "217"
type: "eth"
- fec: "KRFEC"
- id: "10"
+ id: "221"
lanes: "4:4"
serdes_group: "27"
speed: "100G"
- sysport: "10"
+ sysport: "221"
type: "eth"
- fec: "KRFEC"
- id: "11"
+ id: "213"
lanes: "4:4"
serdes_group: "26"
speed: "100G"
- sysport: "11"
+ sysport: "213"
type: "eth"
- fec: "KRFEC"
- id: "12"
+ id: "209"
lanes: "0:4"
serdes_group: "26"
speed: "100G"
- sysport: "12"
+ sysport: "209"
type: "eth"
- fec: "KRFEC"
- id: "13"
+ id: "201"
lanes: "0:4"
serdes_group: "25"
speed: "100G"
- sysport: "13"
+ sysport: "201"
type: "eth"
- fec: "KRFEC"
- id: "14"
+ id: "205"
lanes: "4:4"
serdes_group: "25"
speed: "100G"
- sysport: "14"
+ sysport: "205"
type: "eth"
- fec: "KRFEC"
- id: "15"
+ id: "197"
lanes: "4:4"
serdes_group: "24"
speed: "100G"
- sysport: "15"
+ sysport: "197"
type: "eth"
- fec: "KRFEC"
- id: "16"
+ id: "193"
lanes: "0:4"
serdes_group: "24"
speed: "100G"
- sysport: "16"
+ sysport: "193"
type: "eth"
- fec: "KRFEC"
- id: "17"
+ id: "185"
lanes: "0:4"
serdes_group: "23"
speed: "100G"
- sysport: "17"
+ sysport: "185"
type: "eth"
- fec: "KRFEC"
- id: "18"
+ id: "189"
lanes: "4:4"
serdes_group: "23"
speed: "100G"
- sysport: "18"
+ sysport: "189"
type: "eth"
- fec: "KRFEC"
- id: "19"
+ id: "181"
lanes: "4:4"
serdes_group: "22"
speed: "100G"
- sysport: "19"
+ sysport: "181"
type: "eth"
- fec: "KRFEC"
- id: "20"
+ id: "177"
lanes: "0:4"
serdes_group: "22"
speed: "100G"
- sysport: "20"
+ sysport: "177"
type: "eth"
- fec: "KRFEC"
- id: "21"
+ id: "169"
lanes: "0:4"
serdes_group: "21"
speed: "100G"
- sysport: "21"
+ sysport: "169"
type: "eth"
- fec: "KRFEC"
- id: "22"
+ id: "173"
lanes: "4:4"
serdes_group: "21"
speed: "100G"
- sysport: "22"
+ sysport: "173"
type: "eth"
- fec: "KRFEC"
- id: "23"
+ id: "165"
lanes: "4:4"
serdes_group: "20"
speed: "100G"
- sysport: "23"
+ sysport: "165"
type: "eth"
- fec: "KRFEC"
- id: "24"
+ id: "161"
lanes: "0:4"
serdes_group: "20"
speed: "100G"
- sysport: "24"
+ sysport: "161"
type: "eth"
- fec: "KRFEC"
- id: "25"
+ id: "153"
lanes: "0:4"
serdes_group: "19"
speed: "100G"
- sysport: "25"
+ sysport: "153"
type: "eth"
- fec: "KRFEC"
- id: "26"
+ id: "157"
lanes: "4:4"
serdes_group: "19"
speed: "100G"
- sysport: "26"
+ sysport: "157"
type: "eth"
- fec: "KRFEC"
- id: "27"
+ id: "149"
lanes: "4:4"
serdes_group: "18"
speed: "100G"
- sysport: "27"
+ sysport: "149"
type: "eth"
- fec: "KRFEC"
- id: "28"
+ id: "145"
lanes: "0:4"
serdes_group: "18"
speed: "100G"
- sysport: "28"
+ sysport: "145"
type: "eth"
- fec: "KRFEC"
- id: "29"
+ id: "137"
lanes: "0:4"
serdes_group: "17"
speed: "100G"
- sysport: "29"
+ sysport: "137"
type: "eth"
- fec: "KRFEC"
- id: "30"
+ id: "141"
lanes: "4:4"
serdes_group: "17"
speed: "100G"
- sysport: "30"
+ sysport: "141"
type: "eth"
- fec: "KRFEC"
- id: "31"
+ id: "133"
lanes: "4:4"
serdes_group: "16"
speed: "100G"
- sysport: "31"
+ sysport: "133"
type: "eth"
- fec: "KRFEC"
- id: "32"
+ id: "129"
lanes: "0:4"
serdes_group: "16"
speed: "100G"
- sysport: "32"
+ sysport: "129"
type: "eth"
- fec: "KRFEC"
- id: "33"
+ id: "121"
lanes: "0:4"
serdes_group: "15"
speed: "100G"
- sysport: "33"
+ sysport: "121"
type: "eth"
- fec: "KRFEC"
- id: "34"
+ id: "125"
lanes: "4:4"
serdes_group: "15"
speed: "100G"
- sysport: "34"
+ sysport: "125"
type: "eth"
- fec: "KRFEC"
- id: "35"
+ id: "117"
lanes: "4:4"
serdes_group: "14"
speed: "100G"
- sysport: "35"
+ sysport: "117"
type: "eth"
- fec: "KRFEC"
- id: "36"
+ id: "113"
lanes: "0:4"
serdes_group: "14"
speed: "100G"
- sysport: "36"
+ sysport: "113"
type: "eth"
- fec: "KRFEC"
- id: "37"
+ id: "105"
lanes: "0:4"
serdes_group: "13"
speed: "100G"
- sysport: "37"
+ sysport: "105"
type: "eth"
- fec: "KRFEC"
- id: "38"
+ id: "109"
lanes: "4:4"
serdes_group: "13"
speed: "100G"
- sysport: "38"
+ sysport: "109"
type: "eth"
- fec: "KRFEC"
- id: "39"
+ id: "101"
lanes: "4:4"
serdes_group: "12"
speed: "100G"
- sysport: "39"
+ sysport: "101"
type: "eth"
- fec: "KRFEC"
- id: "40"
+ id: "97"
lanes: "0:4"
serdes_group: "12"
speed: "100G"
- sysport: "40"
+ sysport: "97"
type: "eth"
- fec: "KRFEC"
- id: "41"
+ id: "89"
lanes: "0:4"
serdes_group: "11"
speed: "100G"
- sysport: "41"
+ sysport: "89"
type: "eth"
- fec: "KRFEC"
- id: "42"
+ id: "93"
lanes: "4:4"
serdes_group: "11"
speed: "100G"
- sysport: "42"
+ sysport: "93"
type: "eth"
- fec: "KRFEC"
- id: "43"
+ id: "85"
lanes: "4:4"
serdes_group: "10"
speed: "100G"
- sysport: "43"
+ sysport: "85"
type: "eth"
- fec: "KRFEC"
- id: "44"
+ id: "81"
lanes: "0:4"
serdes_group: "10"
speed: "100G"
- sysport: "44"
+ sysport: "81"
type: "eth"
- fec: "KRFEC"
- id: "45"
+ id: "73"
lanes: "0:4"
serdes_group: "9"
speed: "100G"
- sysport: "45"
+ sysport: "73"
type: "eth"
- fec: "KRFEC"
- id: "46"
+ id: "77"
lanes: "4:4"
serdes_group: "9"
speed: "100G"
- sysport: "46"
+ sysport: "77"
type: "eth"
- fec: "KRFEC"
- id: "47"
+ id: "69"
lanes: "4:4"
serdes_group: "8"
speed: "100G"
- sysport: "47"
+ sysport: "69"
type: "eth"
- fec: "KRFEC"
- id: "48"
+ id: "65"
lanes: "0:4"
serdes_group: "8"
speed: "100G"
- sysport: "48"
+ sysport: "65"
type: "eth"
- fec: "KRFEC"
- id: "49"
+ id: "57"
lanes: "0:4"
serdes_group: "7"
speed: "100G"
- sysport: "49"
+ sysport: "57"
type: "eth"
- fec: "KRFEC"
- id: "50"
+ id: "61"
lanes: "4:4"
serdes_group: "7"
speed: "100G"
- sysport: "50"
+ sysport: "61"
type: "eth"
- fec: "KRFEC"
- id: "51"
+ id: "53"
lanes: "4:4"
serdes_group: "6"
speed: "100G"
- sysport: "51"
+ sysport: "53"
type: "eth"
- fec: "KRFEC"
- id: "52"
+ id: "49"
lanes: "0:4"
serdes_group: "6"
speed: "100G"
- sysport: "52"
+ sysport: "49"
type: "eth"
- fec: "KRFEC"
- id: "53"
+ id: "41"
lanes: "0:4"
serdes_group: "5"
speed: "100G"
- sysport: "53"
+ sysport: "41"
type: "eth"
- fec: "KRFEC"
- id: "54"
+ id: "45"
lanes: "4:4"
serdes_group: "5"
speed: "100G"
- sysport: "54"
+ sysport: "45"
type: "eth"
- fec: "KRFEC"
- id: "55"
+ id: "37"
lanes: "4:4"
serdes_group: "4"
speed: "100G"
- sysport: "55"
+ sysport: "37"
type: "eth"
- fec: "KRFEC"
- id: "56"
+ id: "33"
lanes: "0:4"
serdes_group: "4"
speed: "100G"
- sysport: "56"
+ sysport: "33"
type: "eth"
- fec: "KRFEC"
- id: "57"
+ id: "25"
lanes: "0:4"
serdes_group: "3"
speed: "100G"
- sysport: "57"
+ sysport: "25"
type: "eth"
- fec: "KRFEC"
- id: "58"
+ id: "29"
lanes: "4:4"
serdes_group: "3"
speed: "100G"
- sysport: "58"
+ sysport: "29"
type: "eth"
- fec: "KRFEC"
- id: "59"
+ id: "21"
lanes: "4:4"
serdes_group: "2"
speed: "100G"
- sysport: "59"
+ sysport: "21"
type: "eth"
- fec: "KRFEC"
- id: "60"
+ id: "17"
lanes: "0:4"
serdes_group: "2"
speed: "100G"
- sysport: "60"
+ sysport: "17"
type: "eth"
- fec: "KRFEC"
- id: "61"
+ id: "9"
lanes: "0:4"
serdes_group: "1"
speed: "100G"
- sysport: "61"
+ sysport: "9"
type: "eth"
- fec: "KRFEC"
- id: "62"
+ id: "13"
lanes: "4:4"
serdes_group: "1"
speed: "100G"
- sysport: "62"
+ sysport: "13"
type: "eth"
- fec: "KRFEC"
- id: "63"
+ id: "5"
lanes: "4:4"
serdes_group: "0"
speed: "100G"
- sysport: "63"
+ sysport: "5"
type: "eth"
- fec: "KRFEC"
- id: "64"
+ id: "1"
lanes: "0:4"
serdes_group: "0"
speed: "100G"
- sysport: "64"
+ sysport: "1"
type: "eth"
isg:
- id: "0"
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/ivm.sai.config.yaml b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/ivm.sai.config.yaml
new file mode 100755
index 000000000000..1cc93db620b0
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/ivm.sai.config.yaml
@@ -0,0 +1,9 @@
+IFCS_INIT_FILE : "/usr/share/sonic/hwsku/config_64x100G_midstone200i.yaml"
+IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_B"
+IFCS_INNO_CLI_PORT : "9999"
+IFCS_TARGET : "device"
+INNOVIUM_DIR : "/innovium"
+PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes"
+AVG_IPG_RESERVED_SIZE: "1518"
+AVG_QUEUE_RESERVED_SIZE: "1518"
+IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/ivm.sai.datapath.config.yaml b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/ivm.sai.datapath.config.yaml
new file mode 100644
index 000000000000..891b0b3e2834
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/ivm.sai.datapath.config.yaml
@@ -0,0 +1,9 @@
+ISAI_PARAM_P0_0_LS : "4608 4608 4608 4608 2880 2880"
+ISAI_PARAM_P0_1_LS : "2226 1946 1946 1890 1218 1218"
+ISAI_PARAM_P0_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_0_LS : "1536 1536 1536 1536 960 960"
+ISAI_PARAM_P1_0_LL : "3072 3072 3072 3072 1920 1920"
+ISAI_PARAM_P1_1_LS : "1778 1498 1498 1442 938 938"
+ISAI_PARAM_P1_1_LL : "2478 2478 2478 2478 2478 2478"
+ISAI_PARAM_P1_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_1_ALL : "126 126 126 126 126 126"
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/pg_profile_lookup.ini b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/pg_profile_lookup.ini
new file mode 100644
index 000000000000..27775dfff78d
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/pg_profile_lookup.ini
@@ -0,0 +1,14 @@
+# PG lossless profiles.
+# speed cable size xon xoff threshold xon_offset
+ 25000 5m 1518 0 15680 3 13440
+ 50000 5m 1518 0 21152 3 13440
+ 100000 5m 1518 0 34336 3 13440
+ 400000 5m 1518 0 117376 3 13440
+ 25000 40m 1518 0 16800 3 13440
+ 50000 40m 1518 0 23392 3 13440
+ 100000 40m 1518 0 38816 3 13440
+ 400000 40m 1518 0 135296 3 13440
+ 25000 300m 1518 0 25120 3 13440
+ 50000 300m 1518 0 40032 3 13440
+ 100000 300m 1518 0 72096 3 13440
+ 400000 300m 1518 0 268416 3 13440
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/port_config.ini b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/port_config.ini
index c9b30d768d57..0aa3bf802030 100755
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/port_config.ini
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/port_config.ini
@@ -1,65 +1,65 @@
# name lanes speed index mtu
-Ethernet0 249,250,251,252 100000 1 9126
-Ethernet4 253,254,255,256 100000 2 9126
-Ethernet8 245,246,247,248 100000 3 9126
-Ethernet12 241,242,243,244 100000 4 9126
-Ethernet16 233,234,235,236 100000 5 9126
-Ethernet20 237,238,239,240 100000 6 9126
-Ethernet24 229,230,231,232 100000 7 9126
-Ethernet28 225,226,227,228 100000 8 9126
-Ethernet32 217,218,219,220 100000 9 9126
-Ethernet36 221,222,223,224 100000 10 9126
-Ethernet40 213,214,215,216 100000 11 9126
-Ethernet44 209,210,211,212 100000 12 9126
-Ethernet48 201,202,203,204 100000 13 9126
-Ethernet52 205,206,207,208 100000 14 9126
-Ethernet56 197,198,199,200 100000 15 9126
-Ethernet60 193,194,195,196 100000 16 9126
-Ethernet64 185,186,187,188 100000 17 9126
-Ethernet68 189,190,191,192 100000 18 9126
-Ethernet72 181,182,183,184 100000 19 9126
-Ethernet76 177,178,179,180 100000 20 9126
-Ethernet80 169,170,171,172 100000 21 9126
-Ethernet84 173,174,175,176 100000 22 9126
-Ethernet88 165,166,167,168 100000 23 9126
-Ethernet92 161,162,163,164 100000 24 9126
-Ethernet96 153,154,155,156 100000 25 9126
-Ethernet100 157,158,159,160 100000 26 9126
-Ethernet104 149,150,151,152 100000 27 9126
-Ethernet108 145,146,147,148 100000 28 9126
-Ethernet112 137,138,139,140 100000 29 9126
-Ethernet116 141,142,143,144 100000 30 9126
-Ethernet120 133,134,135,136 100000 31 9126
-Ethernet124 129,130,131,132 100000 32 9126
-Ethernet128 121,122,123,124 100000 33 9126
-Ethernet132 125,126,127,128 100000 34 9126
-Ethernet136 117,118,119,120 100000 35 9126
-Ethernet140 113,114,115,116 100000 36 9126
-Ethernet144 105,106,107,108 100000 37 9126
-Ethernet148 109,110,111,112 100000 38 9126
-Ethernet152 101,102,103,104 100000 39 9126
-Ethernet156 97,98,99,100 100000 40 9126
-Ethernet160 89,90,91,92 100000 41 9126
-Ethernet164 93,94,95,96 100000 42 9126
-Ethernet168 85,86,87,88 100000 43 9126
-Ethernet172 81,82,83,84 100000 44 9126
-Ethernet176 73,74,75,76 100000 45 9126
-Ethernet180 77,78,79,80 100000 46 9126
-Ethernet184 69,70,71,72 100000 47 9126
-Ethernet188 65,66,67,68 100000 48 9126
-Ethernet192 57,58,59,60 100000 49 9126
-Ethernet196 61,62,63,64 100000 50 9126
-Ethernet200 53,54,55,56 100000 51 9126
-Ethernet204 49,50,51,52 100000 52 9126
-Ethernet208 41,42,43,44 100000 53 9126
-Ethernet212 45,46,47,48 100000 54 9126
-Ethernet216 37,38,39,40 100000 55 9126
-Ethernet220 33,34,35,36 100000 56 9126
-Ethernet224 25,26,27,28 100000 57 9126
-Ethernet228 29,30,31,32 100000 58 9126
-Ethernet232 21,22,23,24 100000 59 9126
-Ethernet236 17,18,19,20 100000 60 9126
-Ethernet240 9,10,11,12 100000 61 9126
-Ethernet244 13,14,15,16 100000 62 9126
-Ethernet248 5,6,7,8 100000 63 9126
-Ethernet252 1,2,3,4 100000 64 9126
+Ethernet0 249,250,251,252 100000 0 9126
+Ethernet4 253,254,255,256 100000 1 9126
+Ethernet8 245,246,247,248 100000 2 9126
+Ethernet12 241,242,243,244 100000 3 9126
+Ethernet16 233,234,235,236 100000 4 9126
+Ethernet20 237,238,239,240 100000 5 9126
+Ethernet24 229,230,231,232 100000 6 9126
+Ethernet28 225,226,227,228 100000 7 9126
+Ethernet32 217,218,219,220 100000 8 9126
+Ethernet36 221,222,223,224 100000 9 9126
+Ethernet40 213,214,215,216 100000 10 9126
+Ethernet44 209,210,211,212 100000 11 9126
+Ethernet48 201,202,203,204 100000 12 9126
+Ethernet52 205,206,207,208 100000 13 9126
+Ethernet56 197,198,199,200 100000 14 9126
+Ethernet60 193,194,195,196 100000 15 9126
+Ethernet64 185,186,187,188 100000 16 9126
+Ethernet68 189,190,191,192 100000 17 9126
+Ethernet72 181,182,183,184 100000 18 9126
+Ethernet76 177,178,179,180 100000 19 9126
+Ethernet80 169,170,171,172 100000 20 9126
+Ethernet84 173,174,175,176 100000 21 9126
+Ethernet88 165,166,167,168 100000 22 9126
+Ethernet92 161,162,163,164 100000 23 9126
+Ethernet96 153,154,155,156 100000 24 9126
+Ethernet100 157,158,159,160 100000 25 9126
+Ethernet104 149,150,151,152 100000 26 9126
+Ethernet108 145,146,147,148 100000 27 9126
+Ethernet112 137,138,139,140 100000 28 9126
+Ethernet116 141,142,143,144 100000 29 9126
+Ethernet120 133,134,135,136 100000 30 9126
+Ethernet124 129,130,131,132 100000 31 9126
+Ethernet128 121,122,123,124 100000 32 9126
+Ethernet132 125,126,127,128 100000 33 9126
+Ethernet136 117,118,119,120 100000 34 9126
+Ethernet140 113,114,115,116 100000 35 9126
+Ethernet144 105,106,107,108 100000 36 9126
+Ethernet148 109,110,111,112 100000 37 9126
+Ethernet152 101,102,103,104 100000 38 9126
+Ethernet156 97,98,99,100 100000 39 9126
+Ethernet160 89,90,91,92 100000 40 9126
+Ethernet164 93,94,95,96 100000 41 9126
+Ethernet168 85,86,87,88 100000 42 9126
+Ethernet172 81,82,83,84 100000 43 9126
+Ethernet176 73,74,75,76 100000 44 9126
+Ethernet180 77,78,79,80 100000 45 9126
+Ethernet184 69,70,71,72 100000 46 9126
+Ethernet188 65,66,67,68 100000 47 9126
+Ethernet192 57,58,59,60 100000 48 9126
+Ethernet196 61,62,63,64 100000 49 9126
+Ethernet200 53,54,55,56 100000 50 9126
+Ethernet204 49,50,51,52 100000 51 9126
+Ethernet208 41,42,43,44 100000 52 9126
+Ethernet212 45,46,47,48 100000 53 9126
+Ethernet216 37,38,39,40 100000 54 9126
+Ethernet220 33,34,35,36 100000 55 9126
+Ethernet224 25,26,27,28 100000 56 9126
+Ethernet228 29,30,31,32 100000 57 9126
+Ethernet232 21,22,23,24 100000 58 9126
+Ethernet236 17,18,19,20 100000 59 9126
+Ethernet240 9,10,11,12 100000 60 9126
+Ethernet244 13,14,15,16 100000 61 9126
+Ethernet248 5,6,7,8 100000 62 9126
+Ethernet252 1,2,3,4 100000 63 9126
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/qos.json.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/qos.json.j2
index 16f9b42a2166..3938fc1a05c4 100755
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/qos.json.j2
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/qos.json.j2
@@ -1,14 +1,3 @@
-{# Default values which will be used if no actual configura available #}
-
-{% set default_ports_num = 64 -%}
-{# 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 %}
@@ -19,24 +8,24 @@
{
"TC_TO_QUEUE_MAP":{
"AZURE":{
- "1":"1",
"0":"0",
- "3":"3",
+ "1":"1",
"2":"2",
- "5":"5",
+ "3":"3",
"4":"4",
- "7":"7",
- "6":"6"
+ "5":"5",
+ "6":"6",
+ "7":"7"
}
},
"TC_TO_PRIORITY_GROUP_MAP": {
"AZURE": {
- "1": "0",
"0": "0",
- "3": "0",
+ "1": "0",
"2": "0",
- "4": "1",
- "5": "2",
+ "3": "1",
+ "4": "2",
+ "5": "0",
"6": "0",
"7": "0"
}
@@ -46,9 +35,9 @@
"0":"0",
"1":"0",
"2":"0",
- "3":"0",
+ "3":"3",
"4":"4",
- "5":"5",
+ "5":"0",
"6":"0",
"7":"0",
"8":"1",
@@ -114,7 +103,12 @@
"tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
"tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
"dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
- "pfc_enable": "4,5"
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
}
}
}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/qos_defaults_def_lossy.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/qos_defaults_def_lossy.j2
new file mode 100755
index 000000000000..205242d82910
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/qos_defaults_def_lossy.j2
@@ -0,0 +1,118 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"0",
+ "4":"0",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"0",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]"
+ }
+ },
+ "SCHEDULER": {
+ "scheduler.7": {
+ "type": "STRICT"
+ }
+ },
+ "QUEUE": {
+ "{{ port_names }}|7": {
+ "scheduler": "[SCHEDULER|scheduler.7]"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/qos_defaults_t1.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/qos_defaults_t1.j2
new file mode 100755
index 000000000000..3938fc1a05c4
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/qos_defaults_t1.j2
@@ -0,0 +1,114 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"3",
+ "4":"4",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"1",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/sai.profile b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/sai.profile
index 0769b3063a12..aba4fc81fb17 100755
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/sai.profile
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i/sai.profile
@@ -1 +1 @@
-SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/inno.config.yaml
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/buffers.json.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/buffers.json.j2
index 9529fbf52fb5..ada7dca895ce 100644
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/buffers.json.j2
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/buffers.json.j2
@@ -1,6 +1,5 @@
{# Default values which will be used if no actual configura available #}
-{% set default_cable = '300m' %}
-{% set default_ports_num = 128 -%}
+{% set default_cable = '40m' %}
{# Port configuration to cable length look-up table #}
{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #}
@@ -12,44 +11,53 @@
}
%}
-{%- 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 -%}
+{%- 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 -%}
- {%- 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 -%}
+ {%- 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 %}
+ {%- else %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- 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*2)) %}{% endif %}
- {% endfor %}
-{% endif -%}
-
{% set port_names_list = [] %}
{% for port in PORT %}
{%- if port_names_list.append(port) %}{% endif %}
@@ -57,6 +65,15 @@
{% 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": "47218432",
@@ -64,7 +81,7 @@
"mode": "dynamic",
"xoff": "17708800"
},
- "egress_lossy_pool": {
+ "lossy_pool": {
"size": "18874368",
"type": "egress",
"mode": "dynamic",
@@ -74,46 +91,46 @@
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
- "xoff":"1433600",
+ "xoff":"38816",
"size":"1518",
- "dynamic_th":"-4",
- "xon_offset":"6272"
+ "dynamic_th":"3",
+ "xon_offset":"13440"
},
- "ingress_lossy_profile": {
+ "egress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
- "egress_lossless_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
"egress_lossy_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"1518",
"dynamic_th":"3"
}
},
"BUFFER_PG": {
- "{{ port_names }}|0-3": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
- "{{ port_names }}|4-5": {
+ "{{ port_names }}|3-4": {
"profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
},
- "{{ port_names }}|6-7": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}
},
"BUFFER_QUEUE": {
- "{{ port_names }}|4-5": {
- "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
},
- "{{ port_names }}|0-3": {
+ "{{ port_names }}|0-2": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
},
- "{{ port_names }}|6-7": {
+ "{{ port_names }}|5-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}
}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/buffers_defaults_def_lossy.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/buffers_defaults_def_lossy.j2
new file mode 100644
index 000000000000..fa2b49e6340a
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/buffers_defaults_def_lossy.j2
@@ -0,0 +1,38 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+{
+ "BUFFER_POOL": {
+ "lossy_pool": {
+ "size": "56985600",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/buffers_defaults_t1.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/buffers_defaults_t1.j2
new file mode 100644
index 000000000000..ada7dca895ce
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/buffers_defaults_t1.j2
@@ -0,0 +1,137 @@
+{# Default values which will be used if no actual configura available #}
+{% set default_cable = '40m' %}
+
+{# 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 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 %}
+ {%- 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 %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- endif %}
+{%- endmacro %}
+
+{%- if DEVICE_METADATA is defined %}
+{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
+{%- 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": "47218432",
+ "type": "ingress",
+ "mode": "dynamic",
+ "xoff": "17708800"
+ },
+ "lossy_pool": {
+ "size": "18874368",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "xoff":"38816",
+ "size":"1518",
+ "dynamic_th":"3",
+ "xon_offset":"13440"
+ },
+ "egress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ },
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ },
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/config_128x100G_midstone200i.yaml b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/config_128x100G_midstone200i.yaml
index 342d223a96e1..b4b1c4fe8479 100644
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/config_128x100G_midstone200i.yaml
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/config_128x100G_midstone200i.yaml
@@ -10,6 +10,8 @@ nodes:
multi_interface: "yes"
buffer_management_mode: "api_driven"
max_lossless_tc: "2"
+ ilpm_enable: "1"
+ forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E"
txring:
- txring_id: "0"
desc_count: "1024"
@@ -951,20 +953,6 @@ nodes:
speed: "100G"
sysport: "3"
type: "eth"
- - fec: "NONE"
- id: "257"
- lanes: "0:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "257"
- type: "mgmt 0"
- - fec: "NONE"
- id: "258"
- lanes: "1:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "258"
- type: "mgmt 1"
isg:
- id: "0"
lane_swap: "01234567"
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/ivm.sai.config.yaml b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/ivm.sai.config.yaml
new file mode 100755
index 000000000000..81b706e922d5
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/ivm.sai.config.yaml
@@ -0,0 +1,9 @@
+IFCS_INIT_FILE : "/usr/share/sonic/hwsku/config_128x100G_midstone200i.yaml"
+IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_B"
+IFCS_INNO_CLI_PORT : "9999"
+IFCS_TARGET : "device"
+INNOVIUM_DIR : "/innovium"
+PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes"
+AVG_IPG_RESERVED_SIZE: "1518"
+AVG_QUEUE_RESERVED_SIZE: "1518"
+IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/ivm.sai.datapath.config.yaml b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/ivm.sai.datapath.config.yaml
new file mode 100644
index 000000000000..891b0b3e2834
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/ivm.sai.datapath.config.yaml
@@ -0,0 +1,9 @@
+ISAI_PARAM_P0_0_LS : "4608 4608 4608 4608 2880 2880"
+ISAI_PARAM_P0_1_LS : "2226 1946 1946 1890 1218 1218"
+ISAI_PARAM_P0_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_0_LS : "1536 1536 1536 1536 960 960"
+ISAI_PARAM_P1_0_LL : "3072 3072 3072 3072 1920 1920"
+ISAI_PARAM_P1_1_LS : "1778 1498 1498 1442 938 938"
+ISAI_PARAM_P1_1_LL : "2478 2478 2478 2478 2478 2478"
+ISAI_PARAM_P1_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_1_ALL : "126 126 126 126 126 126"
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/pg_profile_lookup.ini b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/pg_profile_lookup.ini
new file mode 100644
index 000000000000..27775dfff78d
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/pg_profile_lookup.ini
@@ -0,0 +1,14 @@
+# PG lossless profiles.
+# speed cable size xon xoff threshold xon_offset
+ 25000 5m 1518 0 15680 3 13440
+ 50000 5m 1518 0 21152 3 13440
+ 100000 5m 1518 0 34336 3 13440
+ 400000 5m 1518 0 117376 3 13440
+ 25000 40m 1518 0 16800 3 13440
+ 50000 40m 1518 0 23392 3 13440
+ 100000 40m 1518 0 38816 3 13440
+ 400000 40m 1518 0 135296 3 13440
+ 25000 300m 1518 0 25120 3 13440
+ 50000 300m 1518 0 40032 3 13440
+ 100000 300m 1518 0 72096 3 13440
+ 400000 300m 1518 0 268416 3 13440
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/port_config.ini b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/port_config.ini
index 9366905c4eba..512edc536d7e 100644
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/port_config.ini
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/port_config.ini
@@ -1,131 +1,129 @@
-# name lanes speed index mtu
-Ethernet0 249,250 100000 0 9126
-Ethernet2 251,252 100000 0 9126
-Ethernet4 253,254 100000 1 9126
-Ethernet6 255,256 100000 1 9126
-Ethernet8 245,246 100000 2 9126
-Ethernet10 247,248 100000 2 9126
-Ethernet12 241,242 100000 3 9126
-Ethernet14 243,244 100000 3 9126
-Ethernet16 233,234 100000 4 9126
-Ethernet18 235,236 100000 4 9126
-Ethernet20 237,238 100000 5 9126
-Ethernet22 239,240 100000 5 9126
-Ethernet24 229,230 100000 6 9126
-Ethernet26 231,232 100000 6 9126
-Ethernet28 225,226 100000 7 9126
-Ethernet30 227,228 100000 7 9126
-Ethernet32 217,218 100000 8 9126
-Ethernet34 219,220 100000 8 9126
-Ethernet36 221,222 100000 9 9126
-Ethernet38 223,224 100000 9 9126
-Ethernet40 213,214 100000 10 9126
-Ethernet42 215,216 100000 10 9126
-Ethernet44 209,210 100000 11 9126
-Ethernet46 211,212 100000 11 9126
-Ethernet48 201,202 100000 12 9126
-Ethernet50 203,204 100000 12 9126
-Ethernet52 205,206 100000 13 9126
-Ethernet54 207,208 100000 13 9126
-Ethernet56 197,198 100000 14 9126
-Ethernet58 199,200 100000 14 9126
-Ethernet60 193,194 100000 15 9126
-Ethernet62 195,196 100000 15 9126
-Ethernet64 185,186 100000 16 9126
-Ethernet66 187,188 100000 16 9126
-Ethernet68 189,190 100000 17 9126
-Ethernet70 191,192 100000 17 9126
-Ethernet72 181,182 100000 18 9126
-Ethernet74 183,184 100000 18 9126
-Ethernet76 177,178 100000 19 9126
-Ethernet78 179,180 100000 19 9126
-Ethernet80 169,170 100000 20 9126
-Ethernet82 171,172 100000 20 9126
-Ethernet84 173,174 100000 21 9126
-Ethernet86 175,176 100000 21 9126
-Ethernet88 165,166 100000 22 9126
-Ethernet90 167,168 100000 22 9126
-Ethernet92 161,162 100000 23 9126
-Ethernet94 163,164 100000 23 9126
-Ethernet96 153,154 100000 24 9126
-Ethernet98 155,156 100000 24 9126
-Ethernet100 157,158 100000 25 9126
-Ethernet102 159,160 100000 25 9126
-Ethernet104 149,150 100000 26 9126
-Ethernet106 151,152 100000 26 9126
-Ethernet108 145,146 100000 27 9126
-Ethernet110 147,148 100000 27 9126
-Ethernet112 137,138 100000 28 9126
-Ethernet114 139,140 100000 28 9126
-Ethernet116 141,142 100000 29 9126
-Ethernet118 143,144 100000 29 9126
-Ethernet120 133,134 100000 30 9126
-Ethernet122 135,136 100000 30 9126
-Ethernet124 129,130 100000 31 9126
-Ethernet126 131,132 100000 31 9126
-Ethernet128 121,122 100000 32 9126
-Ethernet130 123,124 100000 32 9126
-Ethernet132 125,126 100000 33 9126
-Ethernet134 127,128 100000 33 9126
-Ethernet136 117,118 100000 34 9126
-Ethernet138 119,120 100000 34 9126
-Ethernet140 113,114 100000 35 9126
-Ethernet142 115,116 100000 35 9126
-Ethernet144 105,106 100000 36 9126
-Ethernet146 107,108 100000 36 9126
-Ethernet148 109,110 100000 37 9126
-Ethernet150 111,112 100000 37 9126
-Ethernet152 101,102 100000 38 9126
-Ethernet154 103,104 100000 38 9126
-Ethernet156 97,98 100000 39 9126
-Ethernet158 99,100 100000 39 9126
-Ethernet160 89,90 100000 40 9126
-Ethernet162 91,92 100000 40 9126
-Ethernet164 93,94 100000 41 9126
-Ethernet166 95,96 100000 41 9126
-Ethernet168 85,86 100000 42 9126
-Ethernet170 87,88 100000 42 9126
-Ethernet172 81,82 100000 43 9126
-Ethernet174 83,84 100000 43 9126
-Ethernet176 73,74 100000 44 9126
-Ethernet178 75,76 100000 44 9126
-Ethernet180 77,78 100000 45 9126
-Ethernet182 79,80 100000 45 9126
-Ethernet184 69,70 100000 46 9126
-Ethernet186 71,72 100000 46 9126
-Ethernet188 65,66 100000 47 9126
-Ethernet190 67,68 100000 47 9126
-Ethernet192 57,58 100000 48 9126
-Ethernet194 59,60 100000 48 9126
-Ethernet196 61,62 100000 49 9126
-Ethernet198 63,64 100000 49 9126
-Ethernet200 53,54 100000 50 9126
-Ethernet202 55,56 100000 50 9126
-Ethernet204 49,50 100000 51 9126
-Ethernet206 51,52 100000 51 9126
-Ethernet208 41,42 100000 52 9126
-Ethernet210 43,44 100000 52 9126
-Ethernet212 45,46 100000 53 9126
-Ethernet214 47,48 100000 53 9126
-Ethernet216 37,38 100000 54 9126
-Ethernet218 39,40 100000 54 9126
-Ethernet220 33,34 100000 55 9126
-Ethernet222 35,36 100000 55 9126
-Ethernet224 25,26 100000 56 9126
-Ethernet226 27,28 100000 56 9126
-Ethernet228 29,30 100000 57 9126
-Ethernet230 31,32 100000 57 9126
-Ethernet232 21,22 100000 58 9126
-Ethernet234 23,24 100000 58 9126
-Ethernet236 17,18 100000 59 9126
-Ethernet238 19,20 100000 59 9126
-Ethernet240 9,10 100000 60 9126
-Ethernet242 11,12 100000 60 9126
-Ethernet244 13,14 100000 61 9126
-Ethernet246 15,16 100000 61 9126
-Ethernet248 5,6 100000 62 9126
-Ethernet250 7,8 100000 62 9126
-Ethernet252 1,2 100000 63 9126
-Ethernet254 3,4 100000 63 9126
-Ethernet256 257 10000 64 9126
-Ethernet257 258 10000 65 9126
+# name lanes alias speed index mtu
+Ethernet0 249,250 Eth1/1 100000 0 9126
+Ethernet2 251,252 Eth1/2 100000 0 9126
+Ethernet4 253,254 Eth2/1 100000 1 9126
+Ethernet6 255,256 Eth2/2 100000 1 9126
+Ethernet8 245,246 Eth3/1 100000 2 9126
+Ethernet10 247,248 Eth3/2 100000 2 9126
+Ethernet12 241,242 Eth4/1 100000 3 9126
+Ethernet14 243,244 Eth4/2 100000 3 9126
+Ethernet16 233,234 Eth5/1 100000 4 9126
+Ethernet18 235,236 Eth5/2 100000 4 9126
+Ethernet20 237,238 Eth6/1 100000 5 9126
+Ethernet22 239,240 Eth6/2 100000 5 9126
+Ethernet24 229,230 Eth7/1 100000 6 9126
+Ethernet26 231,232 Eth7/2 100000 6 9126
+Ethernet28 225,226 Eth8/1 100000 7 9126
+Ethernet30 227,228 Eth8/2 100000 7 9126
+Ethernet32 217,218 Eth9/1 100000 8 9126
+Ethernet34 219,220 Eth9/2 100000 8 9126
+Ethernet36 221,222 Eth10/1 100000 9 9126
+Ethernet38 223,224 Eth10/2 100000 9 9126
+Ethernet40 213,214 Eth11/1 100000 10 9126
+Ethernet42 215,216 Eth11/2 100000 10 9126
+Ethernet44 209,210 Eth12/1 100000 11 9126
+Ethernet46 211,212 Eth12/2 100000 11 9126
+Ethernet48 201,202 Eth13/1 100000 12 9126
+Ethernet50 203,204 Eth13/2 100000 12 9126
+Ethernet52 205,206 Eth14/1 100000 13 9126
+Ethernet54 207,208 Eth14/2 100000 13 9126
+Ethernet56 197,198 Eth15/1 100000 14 9126
+Ethernet58 199,200 Eth15/2 100000 14 9126
+Ethernet60 193,194 Eth16/1 100000 15 9126
+Ethernet62 195,196 Eth16/2 100000 15 9126
+Ethernet64 185,186 Eth17/1 100000 16 9126
+Ethernet66 187,188 Eth17/2 100000 16 9126
+Ethernet68 189,190 Eth18/1 100000 17 9126
+Ethernet70 191,192 Eth18/2 100000 17 9126
+Ethernet72 181,182 Eth19/1 100000 18 9126
+Ethernet74 183,184 Eth19/2 100000 18 9126
+Ethernet76 177,178 Eth20/1 100000 19 9126
+Ethernet78 179,180 Eth20/2 100000 19 9126
+Ethernet80 169,170 Eth21/1 100000 20 9126
+Ethernet82 171,172 Eth21/2 100000 20 9126
+Ethernet84 173,174 Eth22/1 100000 21 9126
+Ethernet86 175,176 Eth22/2 100000 21 9126
+Ethernet88 165,166 Eth23/1 100000 22 9126
+Ethernet90 167,168 Eth23/2 100000 22 9126
+Ethernet92 161,162 Eth24/1 100000 23 9126
+Ethernet94 163,164 Eth24/2 100000 23 9126
+Ethernet96 153,154 Eth25/1 100000 24 9126
+Ethernet98 155,156 Eth25/2 100000 24 9126
+Ethernet100 157,158 Eth26/1 100000 25 9126
+Ethernet102 159,160 Eth26/2 100000 25 9126
+Ethernet104 149,150 Eth27/1 100000 26 9126
+Ethernet106 151,152 Eth27/2 100000 26 9126
+Ethernet108 145,146 Eth28/1 100000 27 9126
+Ethernet110 147,148 Eth28/2 100000 27 9126
+Ethernet112 137,138 Eth29/1 100000 28 9126
+Ethernet114 139,140 Eth29/2 100000 28 9126
+Ethernet116 141,142 Eth30/1 100000 29 9126
+Ethernet118 143,144 Eth30/2 100000 29 9126
+Ethernet120 133,134 Eth31/1 100000 30 9126
+Ethernet122 135,136 Eth31/2 100000 30 9126
+Ethernet124 129,130 Eth32/1 100000 31 9126
+Ethernet126 131,132 Eth32/2 100000 31 9126
+Ethernet128 121,122 Eth33/1 100000 32 9126
+Ethernet130 123,124 Eth33/2 100000 32 9126
+Ethernet132 125,126 Eth34/1 100000 33 9126
+Ethernet134 127,128 Eth34/2 100000 33 9126
+Ethernet136 117,118 Eth35/1 100000 34 9126
+Ethernet138 119,120 Eth35/2 100000 34 9126
+Ethernet140 113,114 Eth36/1 100000 35 9126
+Ethernet142 115,116 Eth36/2 100000 35 9126
+Ethernet144 105,106 Eth37/1 100000 36 9126
+Ethernet146 107,108 Eth37/2 100000 36 9126
+Ethernet148 109,110 Eth38/1 100000 37 9126
+Ethernet150 111,112 Eth38/2 100000 37 9126
+Ethernet152 101,102 Eth39/1 100000 38 9126
+Ethernet154 103,104 Eth39/2 100000 38 9126
+Ethernet156 97,98 Eth40/1 100000 39 9126
+Ethernet158 99,100 Eth40/2 100000 39 9126
+Ethernet160 89,90 Eth41/1 100000 40 9126
+Ethernet162 91,92 Eth41/2 100000 40 9126
+Ethernet164 93,94 Eth42/1 100000 41 9126
+Ethernet166 95,96 Eth42/2 100000 41 9126
+Ethernet168 85,86 Eth43/1 100000 42 9126
+Ethernet170 87,88 Eth43/2 100000 42 9126
+Ethernet172 81,82 Eth44/1 100000 43 9126
+Ethernet174 83,84 Eth44/2 100000 43 9126
+Ethernet176 73,74 Eth45/1 100000 44 9126
+Ethernet178 75,76 Eth45/2 100000 44 9126
+Ethernet180 77,78 Eth46/1 100000 45 9126
+Ethernet182 79,80 Eth46/2 100000 45 9126
+Ethernet184 69,70 Eth47/1 100000 46 9126
+Ethernet186 71,72 Eth47/2 100000 46 9126
+Ethernet188 65,66 Eth48/1 100000 47 9126
+Ethernet190 67,68 Eth48/2 100000 47 9126
+Ethernet192 57,58 Eth49/1 100000 48 9126
+Ethernet194 59,60 Eth49/2 100000 48 9126
+Ethernet196 61,62 Eth50/1 100000 49 9126
+Ethernet198 63,64 Eth50/2 100000 49 9126
+Ethernet200 53,54 Eth51/1 100000 50 9126
+Ethernet202 55,56 Eth51/2 100000 50 9126
+Ethernet204 49,50 Eth52/1 100000 51 9126
+Ethernet206 51,52 Eth52/2 100000 51 9126
+Ethernet208 41,42 Eth53/1 100000 52 9126
+Ethernet210 43,44 Eth53/2 100000 52 9126
+Ethernet212 45,46 Eth54/1 100000 53 9126
+Ethernet214 47,48 Eth54/2 100000 53 9126
+Ethernet216 37,38 Eth55/1 100000 54 9126
+Ethernet218 39,40 Eth55/2 100000 54 9126
+Ethernet220 33,34 Eth56/1 100000 55 9126
+Ethernet222 35,36 Eth56/2 100000 55 9126
+Ethernet224 25,26 Eth57/1 100000 56 9126
+Ethernet226 27,28 Eth57/2 100000 56 9126
+Ethernet228 29,30 Eth58/1 100000 57 9126
+Ethernet230 31,32 Eth58/2 100000 57 9126
+Ethernet232 21,22 Eth59/1 100000 58 9126
+Ethernet234 23,24 Eth59/2 100000 58 9126
+Ethernet236 17,18 Eth60/1 100000 59 9126
+Ethernet238 19,20 Eth60/2 100000 59 9126
+Ethernet240 9,10 Eth61/1 100000 60 9126
+Ethernet242 11,12 Eth61/2 100000 60 9126
+Ethernet244 13,14 Eth62/1 100000 61 9126
+Ethernet246 15,16 Eth62/2 100000 61 9126
+Ethernet248 5,6 Eth63/1 100000 62 9126
+Ethernet250 7,8 Eth63/2 100000 62 9126
+Ethernet252 1,2 Eth64/1 100000 63 9126
+Ethernet254 3,4 Eth64/2 100000 63 9126
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/qos.json.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/qos.json.j2
index 733bd51dc86f..3938fc1a05c4 100755
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/qos.json.j2
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/qos.json.j2
@@ -1,14 +1,3 @@
-{# Default values which will be used if no actual configura available #}
-
-{% set default_ports_num = 128 -%}
-{# 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*2)) %}{% endif %}
- {% endfor %}
-{% endif -%}
-
{% set port_names_list = [] %}
{% for port in PORT %}
{%- if port_names_list.append(port) %}{% endif %}
@@ -19,24 +8,24 @@
{
"TC_TO_QUEUE_MAP":{
"AZURE":{
- "1":"1",
"0":"0",
- "3":"3",
+ "1":"1",
"2":"2",
- "5":"5",
+ "3":"3",
"4":"4",
- "7":"7",
- "6":"6"
+ "5":"5",
+ "6":"6",
+ "7":"7"
}
},
"TC_TO_PRIORITY_GROUP_MAP": {
"AZURE": {
- "1": "0",
"0": "0",
- "3": "0",
+ "1": "0",
"2": "0",
- "4": "1",
- "5": "2",
+ "3": "1",
+ "4": "2",
+ "5": "0",
"6": "0",
"7": "0"
}
@@ -46,9 +35,9 @@
"0":"0",
"1":"0",
"2":"0",
- "3":"0",
+ "3":"3",
"4":"4",
- "5":"5",
+ "5":"0",
"6":"0",
"7":"0",
"8":"1",
@@ -111,10 +100,15 @@
},
"PORT_QOS_MAP": {
"{{ port_names }}": {
- "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
"tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
- "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
- "pfc_enable": "4,5"
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
}
}
}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/qos_defaults_def_lossy.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/qos_defaults_def_lossy.j2
new file mode 100755
index 000000000000..205242d82910
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/qos_defaults_def_lossy.j2
@@ -0,0 +1,118 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"0",
+ "4":"0",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"0",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]"
+ }
+ },
+ "SCHEDULER": {
+ "scheduler.7": {
+ "type": "STRICT"
+ }
+ },
+ "QUEUE": {
+ "{{ port_names }}|7": {
+ "scheduler": "[SCHEDULER|scheduler.7]"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/qos_defaults_t1.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/qos_defaults_t1.j2
new file mode 100755
index 000000000000..3938fc1a05c4
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/qos_defaults_t1.j2
@@ -0,0 +1,114 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"3",
+ "4":"4",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"1",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/sai.profile b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/sai.profile
index 0769b3063a12..aba4fc81fb17 100755
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/sai.profile
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_128x100/sai.profile
@@ -1 +1 @@
-SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/inno.config.yaml
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/buffers.json.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/buffers.json.j2
index 4fca9cbcd156..ada7dca895ce 100644
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/buffers.json.j2
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/buffers.json.j2
@@ -1,6 +1,5 @@
{# Default values which will be used if no actual configura available #}
-{% set default_cable = '300m' %}
-{% set default_ports_num = 32 -%}
+{% set default_cable = '40m' %}
{# Port configuration to cable length look-up table #}
{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #}
@@ -12,44 +11,53 @@
}
%}
-{%- 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 -%}
+{%- 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 -%}
- {%- 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 -%}
+ {%- 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 %}
+ {%- else %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- 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 %}
@@ -57,6 +65,15 @@
{% 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": "47218432",
@@ -64,7 +81,7 @@
"mode": "dynamic",
"xoff": "17708800"
},
- "egress_lossy_pool": {
+ "lossy_pool": {
"size": "18874368",
"type": "egress",
"mode": "dynamic",
@@ -74,46 +91,46 @@
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
- "xoff":"1433600",
+ "xoff":"38816",
"size":"1518",
- "dynamic_th":"-4",
- "xon_offset":"6272"
+ "dynamic_th":"3",
+ "xon_offset":"13440"
},
- "ingress_lossy_profile": {
+ "egress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
- "egress_lossless_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
"egress_lossy_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"1518",
"dynamic_th":"3"
}
},
"BUFFER_PG": {
- "{{ port_names }}|0-3": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
- "{{ port_names }}|4-5": {
+ "{{ port_names }}|3-4": {
"profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
},
- "{{ port_names }}|6-7": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}
},
"BUFFER_QUEUE": {
- "{{ port_names }}|4-5": {
- "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
},
- "{{ port_names }}|0-3": {
+ "{{ port_names }}|0-2": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
},
- "{{ port_names }}|6-7": {
+ "{{ port_names }}|5-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}
}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/buffers_defaults_def_lossy.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/buffers_defaults_def_lossy.j2
new file mode 100644
index 000000000000..fa2b49e6340a
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/buffers_defaults_def_lossy.j2
@@ -0,0 +1,38 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+{
+ "BUFFER_POOL": {
+ "lossy_pool": {
+ "size": "56985600",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/buffers_defaults_t1.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/buffers_defaults_t1.j2
new file mode 100644
index 000000000000..ada7dca895ce
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/buffers_defaults_t1.j2
@@ -0,0 +1,137 @@
+{# Default values which will be used if no actual configura available #}
+{% set default_cable = '40m' %}
+
+{# 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 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 %}
+ {%- 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 %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- endif %}
+{%- endmacro %}
+
+{%- if DEVICE_METADATA is defined %}
+{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
+{%- 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": "47218432",
+ "type": "ingress",
+ "mode": "dynamic",
+ "xoff": "17708800"
+ },
+ "lossy_pool": {
+ "size": "18874368",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "xoff":"38816",
+ "size":"1518",
+ "dynamic_th":"3",
+ "xon_offset":"13440"
+ },
+ "egress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ },
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ },
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/config_32x400G_midstone200i.yaml b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/config_32x400G_midstone200i.yaml
index 6c387ee17c23..2028451c75bd 100644
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/config_32x400G_midstone200i.yaml
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/config_32x400G_midstone200i.yaml
@@ -10,6 +10,8 @@ nodes:
multi_interface: "yes"
buffer_management_mode: "api_driven"
max_lossless_tc: "2"
+ ilpm_enable: "1"
+ forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E"
txring:
- txring_id: "0"
desc_count: "1024"
@@ -280,20 +282,6 @@ nodes:
speed: "400G"
sysport: "1"
type: "eth"
- - fec: "NONE"
- id: "257"
- lanes: "0:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "257"
- type: "mgmt 0"
- - fec: "NONE"
- id: "258"
- lanes: "1:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "258"
- type: "mgmt 1"
isg:
- id: "0"
lane_swap: "01234567"
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/ivm.sai.config.yaml b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/ivm.sai.config.yaml
new file mode 100755
index 000000000000..175196280538
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/ivm.sai.config.yaml
@@ -0,0 +1,9 @@
+IFCS_INIT_FILE : "/usr/share/sonic/hwsku/config_32x400G_midstone200i.yaml"
+IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_A"
+IFCS_INNO_CLI_PORT : "9999"
+IFCS_TARGET : "device"
+INNOVIUM_DIR : "/innovium"
+PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes"
+AVG_IPG_RESERVED_SIZE: "1518"
+AVG_QUEUE_RESERVED_SIZE: "1518"
+IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/ivm.sai.datapath.config.yaml b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/ivm.sai.datapath.config.yaml
new file mode 100644
index 000000000000..891b0b3e2834
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/ivm.sai.datapath.config.yaml
@@ -0,0 +1,9 @@
+ISAI_PARAM_P0_0_LS : "4608 4608 4608 4608 2880 2880"
+ISAI_PARAM_P0_1_LS : "2226 1946 1946 1890 1218 1218"
+ISAI_PARAM_P0_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_0_LS : "1536 1536 1536 1536 960 960"
+ISAI_PARAM_P1_0_LL : "3072 3072 3072 3072 1920 1920"
+ISAI_PARAM_P1_1_LS : "1778 1498 1498 1442 938 938"
+ISAI_PARAM_P1_1_LL : "2478 2478 2478 2478 2478 2478"
+ISAI_PARAM_P1_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_1_ALL : "126 126 126 126 126 126"
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/pg_profile_lookup.ini b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/pg_profile_lookup.ini
new file mode 100644
index 000000000000..27775dfff78d
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/pg_profile_lookup.ini
@@ -0,0 +1,14 @@
+# PG lossless profiles.
+# speed cable size xon xoff threshold xon_offset
+ 25000 5m 1518 0 15680 3 13440
+ 50000 5m 1518 0 21152 3 13440
+ 100000 5m 1518 0 34336 3 13440
+ 400000 5m 1518 0 117376 3 13440
+ 25000 40m 1518 0 16800 3 13440
+ 50000 40m 1518 0 23392 3 13440
+ 100000 40m 1518 0 38816 3 13440
+ 400000 40m 1518 0 135296 3 13440
+ 25000 300m 1518 0 25120 3 13440
+ 50000 300m 1518 0 40032 3 13440
+ 100000 300m 1518 0 72096 3 13440
+ 400000 300m 1518 0 268416 3 13440
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/port_config.ini b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/port_config.ini
index c8ded273cca8..28aab327c1a1 100644
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/port_config.ini
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/port_config.ini
@@ -1,35 +1,33 @@
-# name lanes speed index mtu fec
-Ethernet0 249,250,251,252 400000 0 9126 rs
-Ethernet8 241,242,243,244 400000 2 9126 rs
-Ethernet16 233,234,235,236 400000 4 9126 rs
-Ethernet24 225,226,227,228 400000 6 9126 rs
-Ethernet32 217,218,219,220 400000 8 9126 rs
-Ethernet40 209,210,211,212 400000 10 9126 rs
-Ethernet48 201,202,203,204 400000 12 9126 rs
-Ethernet56 193,194,195,196 400000 14 9126 rs
-Ethernet64 185,186,187,188 400000 16 9126 rs
-Ethernet72 177,178,179,180 400000 18 9126 rs
-Ethernet80 169,170,171,172 400000 20 9126 rs
-Ethernet88 161,162,163,164 400000 22 9126 rs
-Ethernet96 153,154,155,156 400000 24 9126 rs
-Ethernet104 145,146,147,148 400000 26 9126 rs
-Ethernet112 137,138,139,140 400000 28 9126 rs
-Ethernet120 129,130,131,132 400000 30 9126 rs
-Ethernet128 121,122,123,124 400000 32 9126 rs
-Ethernet136 113,114,115,116 400000 34 9126 rs
-Ethernet144 105,106,107,108 400000 36 9126 rs
-Ethernet152 97,98,99,100 400000 38 9126 rs
-Ethernet160 89,90,91,92 400000 40 9126 rs
-Ethernet168 81,82,83,84 400000 42 9126 rs
-Ethernet176 73,74,75,76 400000 44 9126 rs
-Ethernet184 65,66,67,68 400000 46 9126 rs
-Ethernet192 57,58,59,60 400000 48 9126 rs
-Ethernet200 49,50,51,52 400000 50 9126 rs
-Ethernet208 41,42,43,44 400000 52 9126 rs
-Ethernet216 33,34,35,36 400000 54 9126 rs
-Ethernet224 25,26,27,28 400000 56 9126 rs
-Ethernet232 17,18,19,20 400000 58 9126 rs
-Ethernet240 9,10,11,12 400000 60 9126 rs
-Ethernet248 1,2,3,4 400000 62 9126 rs
-Ethernet256 257 10000 64 9126 none
-Ethernet257 258 10000 65 9126 none
+# name lanes alias speed index mtu fec
+Ethernet0 249,250,251,252,253,254,255,256 Ethernet0 400000 0 9126 rs
+Ethernet8 241,242,243,244,245,246,247,248 Ethernet8 400000 2 9126 rs
+Ethernet16 233,234,235,236,237,238,239,240 Ethernet6 400000 4 9126 rs
+Ethernet24 225,226,227,228,229,230,231,232 Ethernet24 400000 6 9126 rs
+Ethernet32 217,218,219,220,221,222,223,224 Ethernet32 400000 8 9126 rs
+Ethernet40 209,210,211,212,213,214,215,216 Ethernet40 400000 10 9126 rs
+Ethernet48 201,202,203,204,205,206,207,208 Ethernet48 400000 12 9126 rs
+Ethernet56 193,194,195,196,197,198,199,200 Ethernet56 400000 14 9126 rs
+Ethernet64 185,186,187,188,189,190,191,192 Ethernet64 400000 16 9126 rs
+Ethernet72 177,178,179,180,181,182,183,184 Ethernet72 400000 18 9126 rs
+Ethernet80 169,170,171,172,173,174,175,176 Ethernet80 400000 20 9126 rs
+Ethernet88 161,162,163,164,165,166,167,168 Ethernet88 400000 22 9126 rs
+Ethernet96 153,154,155,156,157,158,159,160 Ethernet96 400000 24 9126 rs
+Ethernet104 145,146,147,148,149,150,151,152 Ethernet104 400000 26 9126 rs
+Ethernet112 137,138,139,140,141,142,143,144 Ethernet112 400000 28 9126 rs
+Ethernet120 129,130,131,132,133,134,135,136 Ethernet120 400000 30 9126 rs
+Ethernet128 121,122,123,124,125,126,127,128 Ethernet128 400000 32 9126 rs
+Ethernet136 113,114,115,116,117,118,119,120 Ethernet136 400000 34 9126 rs
+Ethernet144 105,106,107,108,109,110,111,112 Ethernet144 400000 36 9126 rs
+Ethernet152 97,98,99,100,101,102,103,104 Ethernet152 400000 38 9126 rs
+Ethernet160 89,90,91,92,93,94,95,96 Ethernet160 400000 40 9126 rs
+Ethernet168 81,82,83,84,85,86,87,88 Ethernet168 400000 42 9126 rs
+Ethernet176 73,74,75,76,77,78,79,80 Ethernet176 400000 44 9126 rs
+Ethernet184 65,66,67,68,69,70,71,72 Ethernet184 400000 46 9126 rs
+Ethernet192 57,58,59,60,61,62,63,64 Ethernet192 400000 48 9126 rs
+Ethernet200 49,50,51,52,53,54,55,56 Ethernet200 400000 50 9126 rs
+Ethernet208 41,42,43,44,45,46,47,48 Ethernet208 400000 52 9126 rs
+Ethernet216 33,34,35,36,37,38,39,40 Ethernet216 400000 54 9126 rs
+Ethernet224 25,26,27,28,29,30,31,32 Ethernet224 400000 56 9126 rs
+Ethernet232 17,18,19,20,21,22,23,24 Ethernet232 400000 58 9126 rs
+Ethernet240 9,10,11,12,13,14,15,16 Ethernet240 400000 60 9126 rs
+Ethernet248 1,2,3,4,5,6,7,8 Ethernet248 400000 62 9126 rs
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/qos.json.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/qos.json.j2
index 6c734d46ff2f..3938fc1a05c4 100755
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/qos.json.j2
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/qos.json.j2
@@ -1,14 +1,3 @@
-{# Default values which will be used if no actual configura available #}
-
-{% set default_ports_num = 32 -%}
-{# 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 %}
@@ -19,24 +8,24 @@
{
"TC_TO_QUEUE_MAP":{
"AZURE":{
- "1":"1",
"0":"0",
- "3":"3",
+ "1":"1",
"2":"2",
- "5":"5",
+ "3":"3",
"4":"4",
- "7":"7",
- "6":"6"
+ "5":"5",
+ "6":"6",
+ "7":"7"
}
},
"TC_TO_PRIORITY_GROUP_MAP": {
"AZURE": {
- "1": "0",
"0": "0",
- "3": "0",
+ "1": "0",
"2": "0",
- "4": "1",
- "5": "2",
+ "3": "1",
+ "4": "2",
+ "5": "0",
"6": "0",
"7": "0"
}
@@ -46,9 +35,9 @@
"0":"0",
"1":"0",
"2":"0",
- "3":"0",
+ "3":"3",
"4":"4",
- "5":"5",
+ "5":"0",
"6":"0",
"7":"0",
"8":"1",
@@ -114,7 +103,12 @@
"tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
"tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
"dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
- "pfc_enable": "4,5"
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
}
}
}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/qos_defaults_def_lossy.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/qos_defaults_def_lossy.j2
new file mode 100755
index 000000000000..205242d82910
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/qos_defaults_def_lossy.j2
@@ -0,0 +1,118 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"0",
+ "4":"0",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"0",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]"
+ }
+ },
+ "SCHEDULER": {
+ "scheduler.7": {
+ "type": "STRICT"
+ }
+ },
+ "QUEUE": {
+ "{{ port_names }}|7": {
+ "scheduler": "[SCHEDULER|scheduler.7]"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/qos_defaults_t1.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/qos_defaults_t1.j2
new file mode 100755
index 000000000000..3938fc1a05c4
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/qos_defaults_t1.j2
@@ -0,0 +1,114 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"3",
+ "4":"4",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"1",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/sai.profile b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/sai.profile
index 0769b3063a12..aba4fc81fb17 100755
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/sai.profile
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_32x400/sai.profile
@@ -1 +1 @@
-SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/inno.config.yaml
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/buffers.json.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/buffers.json.j2
index 45cebf3b7144..ada7dca895ce 100644
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/buffers.json.j2
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/buffers.json.j2
@@ -1,6 +1,5 @@
{# Default values which will be used if no actual configura available #}
-{% set default_cable = '300m' %}
-{% set default_ports_num = 64 -%}
+{% set default_cable = '40m' %}
{# Port configuration to cable length look-up table #}
{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #}
@@ -12,44 +11,53 @@
}
%}
-{%- 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 -%}
+{%- 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 -%}
- {%- 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 -%}
+ {%- 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 %}
+ {%- else %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- 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 %}
@@ -57,6 +65,15 @@
{% 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": "47218432",
@@ -64,7 +81,7 @@
"mode": "dynamic",
"xoff": "17708800"
},
- "egress_lossy_pool": {
+ "lossy_pool": {
"size": "18874368",
"type": "egress",
"mode": "dynamic",
@@ -74,46 +91,46 @@
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
- "xoff":"1433600",
+ "xoff":"38816",
"size":"1518",
- "dynamic_th":"-4",
- "xon_offset":"6272"
+ "dynamic_th":"3",
+ "xon_offset":"13440"
},
- "ingress_lossy_profile": {
+ "egress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
- "egress_lossless_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
"egress_lossy_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"1518",
"dynamic_th":"3"
}
},
"BUFFER_PG": {
- "{{ port_names }}|0-3": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
- "{{ port_names }}|4-5": {
+ "{{ port_names }}|3-4": {
"profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
},
- "{{ port_names }}|6-7": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}
},
"BUFFER_QUEUE": {
- "{{ port_names }}|4-5": {
- "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
},
- "{{ port_names }}|0-3": {
+ "{{ port_names }}|0-2": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
},
- "{{ port_names }}|6-7": {
+ "{{ port_names }}|5-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}
}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/buffers_defaults_def_lossy.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/buffers_defaults_def_lossy.j2
new file mode 100644
index 000000000000..fa2b49e6340a
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/buffers_defaults_def_lossy.j2
@@ -0,0 +1,38 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+{
+ "BUFFER_POOL": {
+ "lossy_pool": {
+ "size": "56985600",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/buffers_defaults_t1.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/buffers_defaults_t1.j2
new file mode 100644
index 000000000000..ada7dca895ce
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/buffers_defaults_t1.j2
@@ -0,0 +1,137 @@
+{# Default values which will be used if no actual configura available #}
+{% set default_cable = '40m' %}
+
+{# 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 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 %}
+ {%- 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 %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- endif %}
+{%- endmacro %}
+
+{%- if DEVICE_METADATA is defined %}
+{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
+{%- 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": "47218432",
+ "type": "ingress",
+ "mode": "dynamic",
+ "xoff": "17708800"
+ },
+ "lossy_pool": {
+ "size": "18874368",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "xoff":"38816",
+ "size":"1518",
+ "dynamic_th":"3",
+ "xon_offset":"13440"
+ },
+ "egress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ },
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ },
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/config_64x100G_nrz_midstone200i.yaml b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/config_64x100G_nrz_midstone200i.yaml
index 813d012ca3d5..7c75d19cfa0c 100644
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/config_64x100G_nrz_midstone200i.yaml
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/config_64x100G_nrz_midstone200i.yaml
@@ -10,6 +10,8 @@ nodes:
multi_interface: "yes"
buffer_management_mode: "api_driven"
max_lossless_tc: "2"
+ ilpm_enable: "1"
+ forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E"
txring:
- txring_id: "0"
desc_count: "1024"
@@ -632,24 +634,6 @@ nodes:
type: "eth"
admin_state: "true"
loopback: "none"
- - fec: "NONE"
- id: "257"
- lanes: "0:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "257"
- type: "mgmt 0"
- admin_state: "true"
- loopback: "none"
- - fec: "NONE"
- id: "258"
- lanes: "1:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "258"
- type: "mgmt 1"
- admin_state: "true"
- loopback: "none"
isg:
- id: "0"
lane_swap: "01234567"
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/ivm.sai.config.yaml b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/ivm.sai.config.yaml
new file mode 100755
index 000000000000..bb55cd03a60b
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/ivm.sai.config.yaml
@@ -0,0 +1,9 @@
+IFCS_INIT_FILE : "/usr/share/sonic/hwsku/config_64x100G_nrz_midstone200i.yaml"
+IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_B"
+IFCS_INNO_CLI_PORT : "9999"
+IFCS_TARGET : "device"
+INNOVIUM_DIR : "/innovium"
+PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes"
+AVG_IPG_RESERVED_SIZE: "1518"
+AVG_QUEUE_RESERVED_SIZE: "1518"
+IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/ivm.sai.datapath.config.yaml b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/ivm.sai.datapath.config.yaml
new file mode 100644
index 000000000000..891b0b3e2834
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/ivm.sai.datapath.config.yaml
@@ -0,0 +1,9 @@
+ISAI_PARAM_P0_0_LS : "4608 4608 4608 4608 2880 2880"
+ISAI_PARAM_P0_1_LS : "2226 1946 1946 1890 1218 1218"
+ISAI_PARAM_P0_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_0_LS : "1536 1536 1536 1536 960 960"
+ISAI_PARAM_P1_0_LL : "3072 3072 3072 3072 1920 1920"
+ISAI_PARAM_P1_1_LS : "1778 1498 1498 1442 938 938"
+ISAI_PARAM_P1_1_LL : "2478 2478 2478 2478 2478 2478"
+ISAI_PARAM_P1_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_1_ALL : "126 126 126 126 126 126"
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/pg_profile_lookup.ini b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/pg_profile_lookup.ini
new file mode 100644
index 000000000000..27775dfff78d
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/pg_profile_lookup.ini
@@ -0,0 +1,14 @@
+# PG lossless profiles.
+# speed cable size xon xoff threshold xon_offset
+ 25000 5m 1518 0 15680 3 13440
+ 50000 5m 1518 0 21152 3 13440
+ 100000 5m 1518 0 34336 3 13440
+ 400000 5m 1518 0 117376 3 13440
+ 25000 40m 1518 0 16800 3 13440
+ 50000 40m 1518 0 23392 3 13440
+ 100000 40m 1518 0 38816 3 13440
+ 400000 40m 1518 0 135296 3 13440
+ 25000 300m 1518 0 25120 3 13440
+ 50000 300m 1518 0 40032 3 13440
+ 100000 300m 1518 0 72096 3 13440
+ 400000 300m 1518 0 268416 3 13440
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/port_config.ini b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/port_config.ini
index cb862ff9b523..6ac13773d8ca 100644
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/port_config.ini
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/port_config.ini
@@ -1,67 +1,65 @@
-# name lanes speed index mtu
-Ethernet0 249,250,251,252 100000 0 9126
-Ethernet4 253,254,255,256 100000 1 9126
-Ethernet8 245,246,247,248 100000 2 9126
-Ethernet12 241,242,243,244 100000 3 9126
-Ethernet16 233,234,235,236 100000 4 9126
-Ethernet20 237,238,239,240 100000 5 9126
-Ethernet24 229,230,231,232 100000 6 9126
-Ethernet28 225,226,227,228 100000 7 9126
-Ethernet32 217,218,219,220 100000 8 9126
-Ethernet36 221,222,223,224 100000 9 9126
-Ethernet40 213,214,215,216 100000 10 9126
-Ethernet44 209,210,211,212 100000 11 9126
-Ethernet48 201,202,203,204 100000 12 9126
-Ethernet52 205,206,207,208 100000 13 9126
-Ethernet56 197,198,199,200 100000 14 9126
-Ethernet60 193,194,195,196 100000 15 9126
-Ethernet64 185,186,187,188 100000 16 9126
-Ethernet68 189,190,191,192 100000 17 9126
-Ethernet72 181,182,183,184 100000 18 9126
-Ethernet76 177,178,179,180 100000 19 9126
-Ethernet80 169,170,171,172 100000 20 9126
-Ethernet84 173,174,175,176 100000 21 9126
-Ethernet88 165,166,167,168 100000 22 9126
-Ethernet92 161,162,163,164 100000 23 9126
-Ethernet96 153,154,155,156 100000 24 9126
-Ethernet100 157,158,159,160 100000 25 9126
-Ethernet104 149,150,151,152 100000 26 9126
-Ethernet108 145,146,147,148 100000 27 9126
-Ethernet112 137,138,139,140 100000 28 9126
-Ethernet116 141,142,143,144 100000 29 9126
-Ethernet120 133,134,135,136 100000 30 9126
-Ethernet124 129,130,131,132 100000 31 9126
-Ethernet128 121,122,123,124 100000 32 9126
-Ethernet132 125,126,127,128 100000 33 9126
-Ethernet136 117,118,119,120 100000 34 9126
-Ethernet140 113,114,115,116 100000 35 9126
-Ethernet144 105,106,107,108 100000 36 9126
-Ethernet148 109,110,111,112 100000 37 9126
-Ethernet152 101,102,103,104 100000 38 9126
-Ethernet156 97,98,99,100 100000 39 9126
-Ethernet160 89,90,91,92 100000 40 9126
-Ethernet164 93,94,95,96 100000 41 9126
-Ethernet168 85,86,87,88 100000 42 9126
-Ethernet172 81,82,83,84 100000 43 9126
-Ethernet176 73,74,75,76 100000 44 9126
-Ethernet180 77,78,79,80 100000 45 9126
-Ethernet184 69,70,71,72 100000 46 9126
-Ethernet188 65,66,67,68 100000 47 9126
-Ethernet192 57,58,59,60 100000 48 9126
-Ethernet196 61,62,63,64 100000 49 9126
-Ethernet200 53,54,55,56 100000 50 9126
-Ethernet204 49,50,51,52 100000 51 9126
-Ethernet208 41,42,43,44 100000 52 9126
-Ethernet212 45,46,47,48 100000 53 9126
-Ethernet216 37,38,39,40 100000 54 9126
-Ethernet220 33,34,35,36 100000 55 9126
-Ethernet224 25,26,27,28 100000 56 9126
-Ethernet228 29,30,31,32 100000 57 9126
-Ethernet232 21,22,23,24 100000 58 9126
-Ethernet236 17,18,19,20 100000 59 9126
-Ethernet240 9,10,11,12 100000 60 9126
-Ethernet244 13,14,15,16 100000 61 9126
-Ethernet248 5,6,7,8 100000 62 9126
-Ethernet252 1,2,3,4 100000 63 9126
-Ethernet256 257 10000 64 9126
-Ethernet257 258 10000 65 9126
+# name lanes alias speed index mtu
+Ethernet0 249,250,251,252 Eth1 100000 0 9126
+Ethernet4 253,254,255,256 Eth2 100000 1 9126
+Ethernet8 245,246,247,248 Eth3 100000 2 9126
+Ethernet12 241,242,243,244 Eth4 100000 3 9126
+Ethernet16 233,234,235,236 Eth5 100000 4 9126
+Ethernet20 237,238,239,240 Eth6 100000 5 9126
+Ethernet24 229,230,231,232 Eth7 100000 6 9126
+Ethernet28 225,226,227,228 Eth8 100000 7 9126
+Ethernet32 217,218,219,220 Eth9 100000 8 9126
+Ethernet36 221,222,223,224 Eth10 100000 9 9126
+Ethernet40 213,214,215,216 Eth11 100000 10 9126
+Ethernet44 209,210,211,212 Eth12 100000 11 9126
+Ethernet48 201,202,203,204 Eth13 100000 12 9126
+Ethernet52 205,206,207,208 Eth14 100000 13 9126
+Ethernet56 197,198,199,200 Eth15 100000 14 9126
+Ethernet60 193,194,195,196 Eth16 100000 15 9126
+Ethernet64 185,186,187,188 Eth17 100000 16 9126
+Ethernet68 189,190,191,192 Eth18 100000 17 9126
+Ethernet72 181,182,183,184 Eth19 100000 18 9126
+Ethernet76 177,178,179,180 Eth20 100000 19 9126
+Ethernet80 169,170,171,172 Eth21 100000 20 9126
+Ethernet84 173,174,175,176 Eth22 100000 21 9126
+Ethernet88 165,166,167,168 Eth23 100000 22 9126
+Ethernet92 161,162,163,164 Eth24 100000 23 9126
+Ethernet96 153,154,155,156 Eth25 100000 24 9126
+Ethernet100 157,158,159,160 Eth26 100000 25 9126
+Ethernet104 149,150,151,152 Eth27 100000 26 9126
+Ethernet108 145,146,147,148 Eth28 100000 27 9126
+Ethernet112 137,138,139,140 Eth29 100000 28 9126
+Ethernet116 141,142,143,144 Eth30 100000 29 9126
+Ethernet120 133,134,135,136 Eth31 100000 30 9126
+Ethernet124 129,130,131,132 Eth32 100000 31 9126
+Ethernet128 121,122,123,124 Eth33 100000 32 9126
+Ethernet132 125,126,127,128 Eth34 100000 33 9126
+Ethernet136 117,118,119,120 Eth35 100000 34 9126
+Ethernet140 113,114,115,116 Eth36 100000 35 9126
+Ethernet144 105,106,107,108 Eth37 100000 36 9126
+Ethernet148 109,110,111,112 Eth38 100000 37 9126
+Ethernet152 101,102,103,104 Eth39 100000 38 9126
+Ethernet156 97,98,99,100 Eth40 100000 39 9126
+Ethernet160 89,90,91,92 Eth41 100000 40 9126
+Ethernet164 93,94,95,96 Eth42 100000 41 9126
+Ethernet168 85,86,87,88 Eth43 100000 42 9126
+Ethernet172 81,82,83,84 Eth44 100000 43 9126
+Ethernet176 73,74,75,76 Eth45 100000 44 9126
+Ethernet180 77,78,79,80 Eth46 100000 45 9126
+Ethernet184 69,70,71,72 Eth47 100000 46 9126
+Ethernet188 65,66,67,68 Eth48 100000 47 9126
+Ethernet192 57,58,59,60 Eth49 100000 48 9126
+Ethernet196 61,62,63,64 Eth50 100000 49 9126
+Ethernet200 53,54,55,56 Eth51 100000 50 9126
+Ethernet204 49,50,51,52 Eth52 100000 51 9126
+Ethernet208 41,42,43,44 Eth53 100000 52 9126
+Ethernet212 45,46,47,48 Eth54 100000 53 9126
+Ethernet216 37,38,39,40 Eth55 100000 54 9126
+Ethernet220 33,34,35,36 Eth56 100000 55 9126
+Ethernet224 25,26,27,28 Eth57 100000 56 9126
+Ethernet228 29,30,31,32 Eth58 100000 57 9126
+Ethernet232 21,22,23,24 Eth59 100000 58 9126
+Ethernet236 17,18,19,20 Eth60 100000 59 9126
+Ethernet240 9,10,11,12 Eth61 100000 60 9126
+Ethernet244 13,14,15,16 Eth62 100000 61 9126
+Ethernet248 5,6,7,8 Eth63 100000 62 9126
+Ethernet252 1,2,3,4 Eth64 100000 63 9126
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/qos.json.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/qos.json.j2
index 16f9b42a2166..3938fc1a05c4 100755
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/qos.json.j2
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/qos.json.j2
@@ -1,14 +1,3 @@
-{# Default values which will be used if no actual configura available #}
-
-{% set default_ports_num = 64 -%}
-{# 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 %}
@@ -19,24 +8,24 @@
{
"TC_TO_QUEUE_MAP":{
"AZURE":{
- "1":"1",
"0":"0",
- "3":"3",
+ "1":"1",
"2":"2",
- "5":"5",
+ "3":"3",
"4":"4",
- "7":"7",
- "6":"6"
+ "5":"5",
+ "6":"6",
+ "7":"7"
}
},
"TC_TO_PRIORITY_GROUP_MAP": {
"AZURE": {
- "1": "0",
"0": "0",
- "3": "0",
+ "1": "0",
"2": "0",
- "4": "1",
- "5": "2",
+ "3": "1",
+ "4": "2",
+ "5": "0",
"6": "0",
"7": "0"
}
@@ -46,9 +35,9 @@
"0":"0",
"1":"0",
"2":"0",
- "3":"0",
+ "3":"3",
"4":"4",
- "5":"5",
+ "5":"0",
"6":"0",
"7":"0",
"8":"1",
@@ -114,7 +103,12 @@
"tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
"tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
"dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
- "pfc_enable": "4,5"
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
}
}
}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/qos_defaults_def_lossy.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/qos_defaults_def_lossy.j2
new file mode 100755
index 000000000000..205242d82910
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/qos_defaults_def_lossy.j2
@@ -0,0 +1,118 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"0",
+ "4":"0",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"0",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]"
+ }
+ },
+ "SCHEDULER": {
+ "scheduler.7": {
+ "type": "STRICT"
+ }
+ },
+ "QUEUE": {
+ "{{ port_names }}|7": {
+ "scheduler": "[SCHEDULER|scheduler.7]"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/qos_defaults_t1.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/qos_defaults_t1.j2
new file mode 100755
index 000000000000..3938fc1a05c4
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/qos_defaults_t1.j2
@@ -0,0 +1,114 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"3",
+ "4":"4",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"1",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/sai.profile b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/sai.profile
index 0769b3063a12..aba4fc81fb17 100755
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/sai.profile
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100/sai.profile
@@ -1 +1 @@
-SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/inno.config.yaml
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100nrz/buffers.json.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100nrz/buffers.json.j2
index 0285e389fd63..7e537dddd12c 100644
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100nrz/buffers.json.j2
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100nrz/buffers.json.j2
@@ -75,10 +75,10 @@
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
- "xoff":"1433600",
+ "xoff":"38166",
"size":"1518",
"dynamic_th":"-4",
- "xon_offset":"6272"
+ "xon_offset":"13440"
},
"ingress_lossy_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100nrz/ivm.sai.config.yaml b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100nrz/ivm.sai.config.yaml
new file mode 100755
index 000000000000..f7a9a79067e0
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100nrz/ivm.sai.config.yaml
@@ -0,0 +1,9 @@
+IFCS_INIT_FILE : "/usr/share/sonic/hwsku/config_64x100G_nrz_midstone200i.yaml"
+IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_B"
+IFCS_INNO_CLI_PORT : "9999"
+IFCS_TARGET : "device"
+INNOVIUM_DIR : "/innovium"
+PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils"
+AVG_IPG_RESERVED_SIZE: "1518"
+AVG_QUEUE_RESERVED_SIZE: "1518"
+IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100nrz/ivm.sai.datapath.config.yaml b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100nrz/ivm.sai.datapath.config.yaml
new file mode 100644
index 000000000000..891b0b3e2834
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100nrz/ivm.sai.datapath.config.yaml
@@ -0,0 +1,9 @@
+ISAI_PARAM_P0_0_LS : "4608 4608 4608 4608 2880 2880"
+ISAI_PARAM_P0_1_LS : "2226 1946 1946 1890 1218 1218"
+ISAI_PARAM_P0_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_0_LS : "1536 1536 1536 1536 960 960"
+ISAI_PARAM_P1_0_LL : "3072 3072 3072 3072 1920 1920"
+ISAI_PARAM_P1_1_LS : "1778 1498 1498 1442 938 938"
+ISAI_PARAM_P1_1_LL : "2478 2478 2478 2478 2478 2478"
+ISAI_PARAM_P1_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_1_ALL : "126 126 126 126 126 126"
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100nrz/sai.profile b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100nrz/sai.profile
index 0769b3063a12..aba4fc81fb17 100755
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100nrz/sai.profile
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x100nrz/sai.profile
@@ -1 +1 @@
-SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/inno.config.yaml
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/buffers.json.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/buffers.json.j2
index 45cebf3b7144..ada7dca895ce 100644
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/buffers.json.j2
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/buffers.json.j2
@@ -1,6 +1,5 @@
{# Default values which will be used if no actual configura available #}
-{% set default_cable = '300m' %}
-{% set default_ports_num = 64 -%}
+{% set default_cable = '40m' %}
{# Port configuration to cable length look-up table #}
{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #}
@@ -12,44 +11,53 @@
}
%}
-{%- 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 -%}
+{%- 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 -%}
- {%- 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 -%}
+ {%- 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 %}
+ {%- else %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- 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 %}
@@ -57,6 +65,15 @@
{% 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": "47218432",
@@ -64,7 +81,7 @@
"mode": "dynamic",
"xoff": "17708800"
},
- "egress_lossy_pool": {
+ "lossy_pool": {
"size": "18874368",
"type": "egress",
"mode": "dynamic",
@@ -74,46 +91,46 @@
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
- "xoff":"1433600",
+ "xoff":"38816",
"size":"1518",
- "dynamic_th":"-4",
- "xon_offset":"6272"
+ "dynamic_th":"3",
+ "xon_offset":"13440"
},
- "ingress_lossy_profile": {
+ "egress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
- "egress_lossless_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
"egress_lossy_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"1518",
"dynamic_th":"3"
}
},
"BUFFER_PG": {
- "{{ port_names }}|0-3": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
- "{{ port_names }}|4-5": {
+ "{{ port_names }}|3-4": {
"profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
},
- "{{ port_names }}|6-7": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}
},
"BUFFER_QUEUE": {
- "{{ port_names }}|4-5": {
- "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
},
- "{{ port_names }}|0-3": {
+ "{{ port_names }}|0-2": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
},
- "{{ port_names }}|6-7": {
+ "{{ port_names }}|5-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}
}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/buffers_defaults_def_lossy.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/buffers_defaults_def_lossy.j2
new file mode 100644
index 000000000000..fa2b49e6340a
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/buffers_defaults_def_lossy.j2
@@ -0,0 +1,38 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+{
+ "BUFFER_POOL": {
+ "lossy_pool": {
+ "size": "56985600",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/buffers_defaults_t1.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/buffers_defaults_t1.j2
new file mode 100644
index 000000000000..ada7dca895ce
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/buffers_defaults_t1.j2
@@ -0,0 +1,137 @@
+{# Default values which will be used if no actual configura available #}
+{% set default_cable = '40m' %}
+
+{# 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 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 %}
+ {%- 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 %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- endif %}
+{%- endmacro %}
+
+{%- if DEVICE_METADATA is defined %}
+{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
+{%- 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": "47218432",
+ "type": "ingress",
+ "mode": "dynamic",
+ "xoff": "17708800"
+ },
+ "lossy_pool": {
+ "size": "18874368",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "xoff":"38816",
+ "size":"1518",
+ "dynamic_th":"3",
+ "xon_offset":"13440"
+ },
+ "egress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ },
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ },
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/config_64x200G_midstone200i.yaml b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/config_64x200G_midstone200i.yaml
index 7133de54e493..850a0f565e1e 100644
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/config_64x200G_midstone200i.yaml
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/config_64x200G_midstone200i.yaml
@@ -10,6 +10,8 @@ nodes:
multi_interface: "yes"
buffer_management_mode: "api_driven"
max_lossless_tc: "2"
+ ilpm_enable: "1"
+ forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E"
txring:
- txring_id: "0"
desc_count: "1024"
@@ -504,20 +506,6 @@ nodes:
speed: "200G"
sysport: "1"
type: "eth"
- - fec: "NONE"
- id: "257"
- lanes: "0:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "257"
- type: "mgmt 0"
- - fec: "NONE"
- id: "258"
- lanes: "1:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "258"
- type: "mgmt 0"
isg:
- id: "0"
lane_swap: "01234567"
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/ivm.sai.config.yaml b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/ivm.sai.config.yaml
new file mode 100755
index 000000000000..e762aafe397f
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/ivm.sai.config.yaml
@@ -0,0 +1,9 @@
+IFCS_INIT_FILE : "/usr/share/sonic/hwsku/config_64x200G_midstone200i.yaml"
+IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_B"
+IFCS_INNO_CLI_PORT : "9999"
+IFCS_TARGET : "device"
+INNOVIUM_DIR : "/innovium"
+PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes"
+AVG_IPG_RESERVED_SIZE: "1518"
+AVG_QUEUE_RESERVED_SIZE: "1518"
+IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/ivm.sai.datapath.config.yaml b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/ivm.sai.datapath.config.yaml
new file mode 100644
index 000000000000..891b0b3e2834
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/ivm.sai.datapath.config.yaml
@@ -0,0 +1,9 @@
+ISAI_PARAM_P0_0_LS : "4608 4608 4608 4608 2880 2880"
+ISAI_PARAM_P0_1_LS : "2226 1946 1946 1890 1218 1218"
+ISAI_PARAM_P0_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_0_LS : "1536 1536 1536 1536 960 960"
+ISAI_PARAM_P1_0_LL : "3072 3072 3072 3072 1920 1920"
+ISAI_PARAM_P1_1_LS : "1778 1498 1498 1442 938 938"
+ISAI_PARAM_P1_1_LL : "2478 2478 2478 2478 2478 2478"
+ISAI_PARAM_P1_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_1_ALL : "126 126 126 126 126 126"
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/pg_profile_lookup.ini b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/pg_profile_lookup.ini
new file mode 100644
index 000000000000..27775dfff78d
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/pg_profile_lookup.ini
@@ -0,0 +1,14 @@
+# PG lossless profiles.
+# speed cable size xon xoff threshold xon_offset
+ 25000 5m 1518 0 15680 3 13440
+ 50000 5m 1518 0 21152 3 13440
+ 100000 5m 1518 0 34336 3 13440
+ 400000 5m 1518 0 117376 3 13440
+ 25000 40m 1518 0 16800 3 13440
+ 50000 40m 1518 0 23392 3 13440
+ 100000 40m 1518 0 38816 3 13440
+ 400000 40m 1518 0 135296 3 13440
+ 25000 300m 1518 0 25120 3 13440
+ 50000 300m 1518 0 40032 3 13440
+ 100000 300m 1518 0 72096 3 13440
+ 400000 300m 1518 0 268416 3 13440
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/port_config.ini b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/port_config.ini
index 3dcbf72bc324..a45a17b5268f 100644
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/port_config.ini
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/port_config.ini
@@ -1,67 +1,65 @@
-# name lanes speed index mtu fec
-Ethernet0 249,250,251,252 200000 0 9126 rs
-Ethernet4 253,254,255,256 200000 1 9126 rs
-Ethernet8 245,246,247,248 200000 2 9126 rs
-Ethernet12 241,242,243,244 200000 3 9126 rs
-Ethernet16 233,234,235,236 200000 4 9126 rs
-Ethernet20 237,238,239,240 200000 5 9126 rs
-Ethernet24 229,230,231,232 200000 6 9126 rs
-Ethernet28 225,226,227,228 200000 7 9126 rs
-Ethernet32 217,218,219,220 200000 8 9126 rs
-Ethernet36 221,222,223,224 200000 9 9126 rs
-Ethernet40 213,214,215,216 200000 10 9126 rs
-Ethernet44 209,210,211,212 200000 11 9126 rs
-Ethernet48 201,202,203,204 200000 12 9126 rs
-Ethernet52 205,206,207,208 200000 13 9126 rs
-Ethernet56 197,198,199,200 200000 14 9126 rs
-Ethernet60 193,194,195,196 200000 15 9126 rs
-Ethernet64 185,186,187,188 200000 16 9126 rs
-Ethernet68 189,190,191,192 200000 17 9126 rs
-Ethernet72 181,182,183,184 200000 18 9126 rs
-Ethernet76 177,178,179,180 200000 19 9126 rs
-Ethernet80 169,170,171,172 200000 20 9126 rs
-Ethernet84 173,174,175,176 200000 21 9126 rs
-Ethernet88 165,166,167,168 200000 22 9126 rs
-Ethernet92 161,162,163,164 200000 23 9126 rs
-Ethernet96 153,154,155,156 200000 24 9126 rs
-Ethernet100 157,158,159,160 200000 25 9126 rs
-Ethernet104 149,150,151,152 200000 26 9126 rs
-Ethernet108 145,146,147,148 200000 27 9126 rs
-Ethernet112 137,138,139,140 200000 28 9126 rs
-Ethernet116 141,142,143,144 200000 29 9126 rs
-Ethernet120 133,134,135,136 200000 30 9126 rs
-Ethernet124 129,130,131,132 200000 31 9126 rs
-Ethernet128 121,122,123,124 200000 32 9126 rs
-Ethernet132 125,126,127,128 200000 33 9126 rs
-Ethernet136 117,118,119,120 200000 34 9126 rs
-Ethernet140 113,114,115,116 200000 35 9126 rs
-Ethernet144 105,106,107,108 200000 36 9126 rs
-Ethernet148 109,110,111,112 200000 37 9126 rs
-Ethernet152 101,102,103,104 200000 38 9126 rs
-Ethernet156 97,98,99,100 200000 39 9126 rs
-Ethernet160 89,90,91,92 200000 40 9126 rs
-Ethernet164 93,94,95,96 200000 41 9126 rs
-Ethernet168 85,86,87,88 200000 42 9126 rs
-Ethernet172 81,82,83,84 200000 43 9126 rs
-Ethernet176 73,74,75,76 200000 44 9126 rs
-Ethernet180 77,78,79,80 200000 45 9126 rs
-Ethernet184 69,70,71,72 200000 46 9126 rs
-Ethernet188 65,66,67,68 200000 47 9126 rs
-Ethernet192 57,58,59,60 200000 48 9126 rs
-Ethernet196 61,62,63,64 200000 49 9126 rs
-Ethernet200 53,54,55,56 200000 50 9126 rs
-Ethernet204 49,50,51,52 200000 51 9126 rs
-Ethernet208 41,42,43,44 200000 52 9126 rs
-Ethernet212 45,46,47,48 200000 53 9126 rs
-Ethernet216 37,38,39,40 200000 54 9126 rs
-Ethernet220 33,34,35,36 200000 55 9126 rs
-Ethernet224 25,26,27,28 200000 56 9126 rs
-Ethernet228 29,30,31,32 200000 57 9126 rs
-Ethernet232 21,22,23,24 200000 58 9126 rs
-Ethernet236 17,18,19,20 200000 59 9126 rs
-Ethernet240 9,10,11,12 200000 60 9126 rs
-Ethernet244 13,14,15,16 200000 61 9126 rs
-Ethernet248 5,6,7,8 200000 62 9126 rs
-Ethernet252 1,2,3,4 200000 63 9126 rs
-Ethernet256 257 10000 64 9126 none
-Ethernet257 258 10000 65 9126 none
+# name lanes alias speed index mtu fec
+Ethernet0 249,250,251,252 Eth1 200000 0 9126 rs
+Ethernet4 253,254,255,256 Eth2 200000 1 9126 rs
+Ethernet8 245,246,247,248 Eth3 200000 2 9126 rs
+Ethernet12 241,242,243,244 Eth4 200000 3 9126 rs
+Ethernet16 233,234,235,236 Eth5 200000 4 9126 rs
+Ethernet20 237,238,239,240 Eth6 200000 5 9126 rs
+Ethernet24 229,230,231,232 Eth7 200000 6 9126 rs
+Ethernet28 225,226,227,228 Eth8 200000 7 9126 rs
+Ethernet32 217,218,219,220 Eth9 200000 8 9126 rs
+Ethernet36 221,222,223,224 Eth10 200000 9 9126 rs
+Ethernet40 213,214,215,216 Eth11 200000 10 9126 rs
+Ethernet44 209,210,211,212 Eth12 200000 11 9126 rs
+Ethernet48 201,202,203,204 Eth13 200000 12 9126 rs
+Ethernet52 205,206,207,208 Eth14 200000 13 9126 rs
+Ethernet56 197,198,199,200 Eth15 200000 14 9126 rs
+Ethernet60 193,194,195,196 Eth16 200000 15 9126 rs
+Ethernet64 185,186,187,188 Eth17 200000 16 9126 rs
+Ethernet68 189,190,191,192 Eth18 200000 17 9126 rs
+Ethernet72 181,182,183,184 Eth19 200000 18 9126 rs
+Ethernet76 177,178,179,180 Eth20 200000 19 9126 rs
+Ethernet80 169,170,171,172 Eth21 200000 20 9126 rs
+Ethernet84 173,174,175,176 Eth22 200000 21 9126 rs
+Ethernet88 165,166,167,168 Eth23 200000 22 9126 rs
+Ethernet92 161,162,163,164 Eth24 200000 23 9126 rs
+Ethernet96 153,154,155,156 Eth25 200000 24 9126 rs
+Ethernet100 157,158,159,160 Eth26 200000 25 9126 rs
+Ethernet104 149,150,151,152 Eth27 200000 26 9126 rs
+Ethernet108 145,146,147,148 Eth28 200000 27 9126 rs
+Ethernet112 137,138,139,140 Eth29 200000 28 9126 rs
+Ethernet116 141,142,143,144 Eth30 200000 29 9126 rs
+Ethernet120 133,134,135,136 Eth31 200000 30 9126 rs
+Ethernet124 129,130,131,132 Eth32 200000 31 9126 rs
+Ethernet128 121,122,123,124 Eth33 200000 32 9126 rs
+Ethernet132 125,126,127,128 Eth34 200000 33 9126 rs
+Ethernet136 117,118,119,120 Eth35 200000 34 9126 rs
+Ethernet140 113,114,115,116 Eth36 200000 35 9126 rs
+Ethernet144 105,106,107,108 Eth37 200000 36 9126 rs
+Ethernet148 109,110,111,112 Eth38 200000 37 9126 rs
+Ethernet152 101,102,103,104 Eth39 200000 38 9126 rs
+Ethernet156 97,98,99,100 Eth40 200000 39 9126 rs
+Ethernet160 89,90,91,92 Eth41 200000 40 9126 rs
+Ethernet164 93,94,95,96 Eth42 200000 41 9126 rs
+Ethernet168 85,86,87,88 Eth43 200000 42 9126 rs
+Ethernet172 81,82,83,84 Eth44 200000 43 9126 rs
+Ethernet176 73,74,75,76 Eth45 200000 44 9126 rs
+Ethernet180 77,78,79,80 Eth46 200000 45 9126 rs
+Ethernet184 69,70,71,72 Eth47 200000 46 9126 rs
+Ethernet188 65,66,67,68 Eth48 200000 47 9126 rs
+Ethernet192 57,58,59,60 Eth49 200000 48 9126 rs
+Ethernet196 61,62,63,64 Eth50 200000 49 9126 rs
+Ethernet200 53,54,55,56 Eth51 200000 50 9126 rs
+Ethernet204 49,50,51,52 Eth52 200000 51 9126 rs
+Ethernet208 41,42,43,44 Eth53 200000 52 9126 rs
+Ethernet212 45,46,47,48 Eth54 200000 53 9126 rs
+Ethernet216 37,38,39,40 Eth55 200000 54 9126 rs
+Ethernet220 33,34,35,36 Eth56 200000 55 9126 rs
+Ethernet224 25,26,27,28 Eth57 200000 56 9126 rs
+Ethernet228 29,30,31,32 Eth58 200000 57 9126 rs
+Ethernet232 21,22,23,24 Eth59 200000 58 9126 rs
+Ethernet236 17,18,19,20 Eth60 200000 59 9126 rs
+Ethernet240 9,10,11,12 Eth61 200000 60 9126 rs
+Ethernet244 13,14,15,16 Eth62 200000 61 9126 rs
+Ethernet248 5,6,7,8 Eth63 200000 62 9126 rs
+Ethernet252 1,2,3,4 Eth64 200000 63 9126 rs
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/qos.json.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/qos.json.j2
index 16f9b42a2166..3938fc1a05c4 100755
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/qos.json.j2
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/qos.json.j2
@@ -1,14 +1,3 @@
-{# Default values which will be used if no actual configura available #}
-
-{% set default_ports_num = 64 -%}
-{# 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 %}
@@ -19,24 +8,24 @@
{
"TC_TO_QUEUE_MAP":{
"AZURE":{
- "1":"1",
"0":"0",
- "3":"3",
+ "1":"1",
"2":"2",
- "5":"5",
+ "3":"3",
"4":"4",
- "7":"7",
- "6":"6"
+ "5":"5",
+ "6":"6",
+ "7":"7"
}
},
"TC_TO_PRIORITY_GROUP_MAP": {
"AZURE": {
- "1": "0",
"0": "0",
- "3": "0",
+ "1": "0",
"2": "0",
- "4": "1",
- "5": "2",
+ "3": "1",
+ "4": "2",
+ "5": "0",
"6": "0",
"7": "0"
}
@@ -46,9 +35,9 @@
"0":"0",
"1":"0",
"2":"0",
- "3":"0",
+ "3":"3",
"4":"4",
- "5":"5",
+ "5":"0",
"6":"0",
"7":"0",
"8":"1",
@@ -114,7 +103,12 @@
"tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
"tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
"dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
- "pfc_enable": "4,5"
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
}
}
}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/qos_defaults_def_lossy.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/qos_defaults_def_lossy.j2
new file mode 100755
index 000000000000..205242d82910
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/qos_defaults_def_lossy.j2
@@ -0,0 +1,118 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"0",
+ "4":"0",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"0",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]"
+ }
+ },
+ "SCHEDULER": {
+ "scheduler.7": {
+ "type": "STRICT"
+ }
+ },
+ "QUEUE": {
+ "{{ port_names }}|7": {
+ "scheduler": "[SCHEDULER|scheduler.7]"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/qos_defaults_t1.j2 b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/qos_defaults_t1.j2
new file mode 100755
index 000000000000..3938fc1a05c4
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/qos_defaults_t1.j2
@@ -0,0 +1,114 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"3",
+ "4":"4",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"1",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
+ }
+ }
+}
diff --git a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/sai.profile b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/sai.profile
index 0769b3063a12..aba4fc81fb17 100755
--- a/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/sai.profile
+++ b/device/celestica/x86_64-cel_midstone-r0/Midstone-200i_64x200/sai.profile
@@ -1 +1 @@
-SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/inno.config.yaml
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml
diff --git a/device/celestica/x86_64-cel_midstone-r0/minigraph.xml b/device/celestica/x86_64-cel_midstone-r0/minigraph.xml
new file mode 100755
index 000000000000..780fbcd0b54d
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/minigraph.xml
@@ -0,0 +1,1723 @@
+
+
+
+
+
+ false
+ switch1
+ 10.0.0.56
+ ARISTA01T1
+ 10.0.0.57
+ 1
+ 10
+ 3
+
+
+ switch1
+ FC00::71
+ ARISTA01T1
+ FC00::72
+ 1
+ 10
+ 3
+
+
+ false
+ switch1
+ 10.0.0.58
+ ARISTA02T1
+ 10.0.0.59
+ 1
+ 10
+ 3
+
+
+ switch1
+ FC00::75
+ ARISTA02T1
+ FC00::76
+ 1
+ 10
+ 3
+
+
+ false
+ switch1
+ 10.0.0.60
+ ARISTA03T1
+ 10.0.0.61
+ 1
+ 10
+ 3
+
+
+ switch1
+ FC00::79
+ ARISTA03T1
+ FC00::7A
+ 1
+ 10
+ 3
+
+
+ false
+ switch1
+ 10.0.0.62
+ ARISTA04T1
+ 10.0.0.63
+ 1
+ 10
+ 3
+
+
+ switch1
+ FC00::7D
+ ARISTA04T1
+ FC00::7E
+ 1
+ 10
+ 3
+
+
+
+
+ 65100
+ switch1
+
+
+ 10.0.0.57
+
+
+
+
+
+ 10.0.0.59
+
+
+
+
+
+ 10.0.0.61
+
+
+
+
+
+ 10.0.0.63
+
+
+
+
+
+ BGPPeer
+ 10.1.0.32
+
+
+
+ BGPSLBPassive
+ 10.250.0.0/25
+
+
+ BGPPeer
+ 10.1.0.32
+
+
+
+ BGPVac
+ 192.168.0.0/21
+
+
+
+
+
+ 64600
+ ARISTA01T1
+
+
+
+ 64600
+ ARISTA02T1
+
+
+
+ 64600
+ ARISTA03T1
+
+
+
+ 64600
+ ARISTA04T1
+
+
+
+
+
+
+
+
+
+ HostIP
+ Loopback0
+
+ 10.1.0.32/32
+
+ 10.1.0.32/32
+
+
+ HostIP1
+ Loopback0
+
+ FC00:1::32/128
+
+ FC00:1::32/128
+
+
+
+
+
+ HostIP
+ eth0
+
+ 10.60.60.60/16
+
+ 10.60.60.60/16
+
+
+ V6HostIP
+ eth0
+
+ FC00:2::32/64
+
+ FC00:2::32/64
+
+
+ HostIP
+ usb0
+
+ 10.42.0.1/24
+
+ 10.42.0.1/24
+
+
+
+
+
+
+ switch1
+
+
+
+
+
+
+
+ Ethernet64
+ 10.0.0.32/31
+
+
+
+ Ethernet64
+ FC00::41/126
+
+
+
+ Ethernet0
+ 10.0.0.0/31
+
+
+
+ Ethernet0
+ FC00::1/126
+
+
+
+ Ethernet68
+ 10.0.0.34/31
+
+
+
+ Ethernet68
+ FC00::45/126
+
+
+
+ Ethernet4
+ 10.0.0.2/31
+
+
+
+ Ethernet4
+ FC00::5/126
+
+
+
+ Ethernet72
+ 10.0.0.36/31
+
+
+
+ Ethernet72
+ FC00::49/126
+
+
+
+ Ethernet8
+ 10.0.0.4/31
+
+
+
+ Ethernet8
+ FC00::9/126
+
+
+
+ Ethernet76
+ 10.0.0.38/31
+
+
+
+ Ethernet76
+ FC00::4D/126
+
+
+
+ Ethernet12
+ 10.0.0.6/31
+
+
+
+ Ethernet12
+ FC00::D/126
+
+
+
+ Ethernet80
+ 10.0.0.40/31
+
+
+
+ Ethernet80
+ FC00::51/126
+
+
+
+ Ethernet16
+ 10.0.0.8/31
+
+
+
+ Ethernet16
+ FC00::11/126
+
+
+
+ Ethernet84
+ 10.0.0.42/31
+
+
+
+ Ethernet84
+ FC00::55/126
+
+
+
+ Ethernet20
+ 10.0.0.10/31
+
+
+
+ Ethernet20
+ FC00::15/126
+
+
+
+ Ethernet88
+ 10.0.0.44/31
+
+
+
+ Ethernet88
+ FC00::59/126
+
+
+
+ Ethernet24
+ 10.0.0.12/31
+
+
+
+ Ethernet24
+ FC00::19/126
+
+
+
+ Ethernet92
+ 10.0.0.46/31
+
+
+
+ Ethernet92
+ FC00::5D/126
+
+
+
+ Ethernet28
+ 10.0.0.14/31
+
+
+
+ Ethernet28
+ FC00::1D/126
+
+
+
+ Ethernet96
+ 10.0.0.48/31
+
+
+
+ Ethernet96
+ FC00::61/126
+
+
+
+ Ethernet32
+ 10.0.0.16/31
+
+
+
+ Ethernet32
+ FC00::21/126
+
+
+
+ Ethernet100
+ 10.0.0.50/31
+
+
+
+ Ethernet100
+ FC00::65/126
+
+
+
+ Ethernet36
+ 10.0.0.18/31
+
+
+
+ Ethernet36
+ FC00::25/126
+
+
+
+ Ethernet104
+ 10.0.0.52/31
+
+
+
+ Ethernet104
+ FC00::69/126
+
+
+
+ Ethernet40
+ 10.0.0.20/31
+
+
+
+ Ethernet40
+ FC00::29/126
+
+
+
+ Ethernet108
+ 10.0.0.54/31
+
+
+
+ Ethernet108
+ FC00::6D/126
+
+
+
+ Ethernet44
+ 10.0.0.22/31
+
+
+
+ Ethernet44
+ FC00::2D/126
+
+
+
+ Ethernet112
+ 10.0.0.56/31
+
+
+
+ Ethernet112
+ FC00::71/126
+
+
+
+ Ethernet48
+ 10.0.0.24/31
+
+
+
+ Ethernet48
+ FC00::31/126
+
+
+
+ Ethernet116
+ 10.0.0.58/31
+
+
+
+ Ethernet116
+ FC00::75/126
+
+
+
+ Ethernet52
+ 10.0.0.26/31
+
+
+
+ Ethernet52
+ FC00::35/126
+
+
+
+ Ethernet120
+ 10.0.0.60/31
+
+
+
+ Ethernet120
+ FC00::79/126
+
+
+
+ Ethernet56
+ 10.0.0.28/31
+
+
+
+ Ethernet56
+ FC00::39/126
+
+
+
+ Ethernet124
+ 10.0.0.62/31
+
+
+
+ Ethernet124
+ FC00::7D/126
+
+
+
+ Ethernet60
+ 10.0.0.30/31
+
+
+
+ Ethernet60
+ FC00::3D/126
+
+
+
+
+
+ SNMP_ACL
+ SNMP
+ SNMP
+
+
+ ERSPAN
+ Everflow
+ Everflow
+
+
+ VTY_LINE
+ ssh-only
+ SSH
+
+
+ Ethernet64;Ethernet0;Ethernet68;Ethernet4;Ethernet72;Ethernet8;Ethernet76;Ethernet12;Ethernet80;Ethernet16;Ethernet84;Ethernet20;Ethernet88;Ethernet24;Ethernet92;Ethernet28;Ethernet96;Ethernet32;Ethernet100;Ethernet36;Ethernet104;Ethernet40;Ethernet108;Ethernet44;Ethernet112;Ethernet48;Ethernet116;Ethernet52;Ethernet120;Ethernet56;Ethernet124;Ethernet60
+ DataAcl
+ DataPlane
+
+
+
+
+
+
+
+
+ true
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet0
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet4
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet8
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet12
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet16
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet20
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet24
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet28
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet32
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet36
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet40
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet44
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet48
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet52
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet56
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet60
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet64
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet68
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet72
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet76
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet80
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet84
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet88
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet92
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet96
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet100
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet104
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet108
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet112
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet116
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet120
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet124
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet128
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet132
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet136
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet140
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet144
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet148
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet152
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet156
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet160
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet164
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet168
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet172
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet176
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet180
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet184
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet188
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet192
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet196
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet200
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet204
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet208
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet212
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet216
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet220
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet224
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet228
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet232
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet236
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet240
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet244
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet248
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet252
+
+ false
+ 0
+ 0
+ 100000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet256
+
+ false
+ 0
+ 0
+ 10000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet260
+
+ false
+ 0
+ 0
+ 10000
+
+
+ true
+ 0
+ Midstone-200i
+
+
+
+
+
+
+ DeviceInterfaceLink
+ ARISTA01T0
+ Ethernet1
+ switch1
+ Ethernet64
+
+
+ DeviceInterfaceLink
+ ARISTA01T2
+ Ethernet1
+ switch1
+ Ethernet0
+
+
+ DeviceInterfaceLink
+ ARISTA02T0
+ Ethernet1
+ switch1
+ Ethernet68
+
+
+ DeviceInterfaceLink
+ ARISTA02T2
+ Ethernet1
+ switch1
+ Ethernet4
+
+
+ DeviceInterfaceLink
+ ARISTA03T0
+ Ethernet1
+ switch1
+ Ethernet72
+
+
+ DeviceInterfaceLink
+ ARISTA03T2
+ Ethernet1
+ switch1
+ Ethernet8
+
+
+ DeviceInterfaceLink
+ ARISTA04T0
+ Ethernet1
+ switch1
+ Ethernet76
+
+
+ DeviceInterfaceLink
+ ARISTA04T2
+ Ethernet1
+ switch1
+ Ethernet12
+
+
+ DeviceInterfaceLink
+ ARISTA05T0
+ Ethernet1
+ switch1
+ Ethernet80
+
+
+ DeviceInterfaceLink
+ ARISTA05T2
+ Ethernet1
+ switch1
+ Ethernet16
+
+
+ DeviceInterfaceLink
+ ARISTA06T0
+ Ethernet1
+ switch1
+ Ethernet84
+
+
+ DeviceInterfaceLink
+ ARISTA06T2
+ Ethernet1
+ switch1
+ Ethernet20
+
+
+ DeviceInterfaceLink
+ ARISTA07T0
+ Ethernet1
+ switch1
+ Ethernet88
+
+
+ DeviceInterfaceLink
+ ARISTA07T2
+ Ethernet1
+ switch1
+ Ethernet24
+
+
+ DeviceInterfaceLink
+ ARISTA08T0
+ Ethernet1
+ switch1
+ Ethernet92
+
+
+ DeviceInterfaceLink
+ ARISTA08T2
+ Ethernet1
+ switch1
+ Ethernet28
+
+
+ DeviceInterfaceLink
+ ARISTA09T0
+ Ethernet1
+ switch1
+ Ethernet96
+
+
+ DeviceInterfaceLink
+ ARISTA09T2
+ Ethernet1
+ switch1
+ Ethernet32
+
+
+ DeviceInterfaceLink
+ ARISTA10T0
+ Ethernet1
+ switch1
+ Ethernet100
+
+
+ DeviceInterfaceLink
+ ARISTA10T2
+ Ethernet1
+ switch1
+ Ethernet36
+
+
+ DeviceInterfaceLink
+ ARISTA11T0
+ Ethernet1
+ switch1
+ Ethernet104
+
+
+ DeviceInterfaceLink
+ ARISTA11T2
+ Ethernet1
+ switch1
+ Ethernet40
+
+
+ DeviceInterfaceLink
+ ARISTA12T0
+ Ethernet1
+ switch1
+ Ethernet108
+
+
+ DeviceInterfaceLink
+ ARISTA12T2
+ Ethernet1
+ switch1
+ Ethernet44
+
+
+ DeviceInterfaceLink
+ ARISTA13T0
+ Ethernet1
+ switch1
+ Ethernet112
+
+
+ DeviceInterfaceLink
+ ARISTA13T2
+ Ethernet1
+ switch1
+ Ethernet48
+
+
+ DeviceInterfaceLink
+ ARISTA14T0
+ Ethernet1
+ switch1
+ Ethernet116
+
+
+ DeviceInterfaceLink
+ ARISTA14T2
+ Ethernet1
+ switch1
+ Ethernet52
+
+
+ DeviceInterfaceLink
+ ARISTA15T0
+ Ethernet1
+ switch1
+ Ethernet120
+
+
+ DeviceInterfaceLink
+ ARISTA15T2
+ Ethernet1
+ switch1
+ Ethernet56
+
+
+ DeviceInterfaceLink
+ ARISTA16T0
+ Ethernet1
+ switch1
+ Ethernet124
+
+
+ DeviceInterfaceLink
+ ARISTA16T2
+ Ethernet1
+ switch1
+ Ethernet60
+
+
+
+
+ switch1
+ Midstone-200i
+
+ 10.60.60.60
+
+
+
+
+
+
+
+ switch1
+
+
+ DeploymentId
+
+ 1
+
+
+ QosProfile
+
+ Profile0
+
+
+ NtpResources
+
+ 10.0.0.1;10.0.0.2
+
+
+ SnmpResources
+
+ 10.0.0.9
+
+
+ SyslogResources
+
+ 10.0.0.5;10.0.0.6
+
+
+ TacacsGroup
+
+ testlab
+
+
+ TacacsServer
+
+ 10.0.0.9;10.0.0.8
+
+
+ ForcedMgmtRoutes
+
+ 10.0.0.100/31;10.250.0.8;10.255.0.0/28
+
+
+ ErspanDestinationIpv4
+
+ 10.0.0.7
+
+
+
+
+
+
+ switch1
+ Midstone-200i
+
diff --git a/device/celestica/x86_64-cel_midstone-r0/pmon_daemon_control.json b/device/celestica/x86_64-cel_midstone-r0/pmon_daemon_control.json
index 94592fa8cebc..479364248109 100644
--- a/device/celestica/x86_64-cel_midstone-r0/pmon_daemon_control.json
+++ b/device/celestica/x86_64-cel_midstone-r0/pmon_daemon_control.json
@@ -1,3 +1,5 @@
{
- "skip_ledd": true
+ "skip_ledd": true,
+ "skip_psud": true,
+ "skip_thermalctld": true
}
diff --git a/device/celestica/x86_64-cel_midstone-r0/topo.conf b/device/celestica/x86_64-cel_midstone-r0/topo.conf
new file mode 100644
index 000000000000..795ea43143eb
--- /dev/null
+++ b/device/celestica/x86_64-cel_midstone-r0/topo.conf
@@ -0,0 +1 @@
+t1
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/alt_cfg/config_32x400G_Delta-et-c032if_aux.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/alt_cfg/config_32x400G_Delta-et-c032if_aux.yaml
new file mode 100755
index 000000000000..2ba23d2a5a67
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/alt_cfg/config_32x400G_Delta-et-c032if_aux.yaml
@@ -0,0 +1,429 @@
+ifcs:
+ options:
+ log_level: "info"
+nodes:
+- node_id: "0"
+ options:
+ sku: "configs/sku/innovium.77700_A"
+ netdev:
+ - auto_create: "no"
+ multi_interface: "yes"
+ buffer_management_mode: "api_driven"
+ max_lossless_tc: "2"
+ txring:
+ - txring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ rxring:
+ - rxring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44"
+ - rxring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45"
+ - rxring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46"
+ - rxring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47"
+ sys_clk: "1720"
+ ifc_clk: "1200"
+ mac_clk: "1340"
+
+ devports:
+ - id: "0"
+ sysport: "1000"
+ type: "cpu"
+ - fec: "KPFEC"
+ id: "249"
+ lanes: "0:8"
+ serdes_group: "31"
+ speed: "400G"
+ sysport: "249"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "241"
+ lanes: "0:8"
+ serdes_group: "30"
+ speed: "400G"
+ sysport: "241"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "233"
+ lanes: "0:8"
+ serdes_group: "29"
+ speed: "400G"
+ sysport: "233"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "225"
+ lanes: "0:8"
+ serdes_group: "28"
+ speed: "400G"
+ sysport: "225"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "217"
+ lanes: "0:8"
+ serdes_group: "27"
+ speed: "400G"
+ sysport: "217"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "209"
+ lanes: "0:8"
+ serdes_group: "26"
+ speed: "400G"
+ sysport: "209"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "201"
+ lanes: "0:8"
+ serdes_group: "25"
+ speed: "400G"
+ sysport: "201"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "193"
+ lanes: "0:8"
+ serdes_group: "24"
+ speed: "400G"
+ sysport: "193"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "185"
+ lanes: "0:8"
+ serdes_group: "23"
+ speed: "400G"
+ sysport: "185"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "177"
+ lanes: "0:8"
+ serdes_group: "22"
+ speed: "400G"
+ sysport: "177"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "169"
+ lanes: "0:8"
+ serdes_group: "21"
+ speed: "400G"
+ sysport: "169"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "161"
+ lanes: "0:8"
+ serdes_group: "20"
+ speed: "400G"
+ sysport: "161"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "153"
+ lanes: "0:8"
+ serdes_group: "19"
+ speed: "400G"
+ sysport: "153"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "145"
+ lanes: "0:8"
+ serdes_group: "18"
+ speed: "400G"
+ sysport: "145"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "137"
+ lanes: "0:8"
+ serdes_group: "17"
+ speed: "400G"
+ sysport: "137"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "129"
+ lanes: "0:8"
+ serdes_group: "16"
+ speed: "400G"
+ sysport: "129"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "121"
+ lanes: "0:8"
+ serdes_group: "15"
+ speed: "400G"
+ sysport: "121"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "113"
+ lanes: "0:8"
+ serdes_group: "14"
+ speed: "400G"
+ sysport: "113"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "97"
+ lanes: "0:8"
+ serdes_group: "12"
+ speed: "400G"
+ sysport: "97"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "105"
+ lanes: "0:8"
+ serdes_group: "13"
+ speed: "400G"
+ sysport: "105"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "81"
+ lanes: "0:8"
+ serdes_group: "10"
+ speed: "400G"
+ sysport: "81"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "89"
+ lanes: "0:8"
+ serdes_group: "11"
+ speed: "400G"
+ sysport: "89"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "65"
+ lanes: "0:8"
+ serdes_group: "8"
+ speed: "400G"
+ sysport: "65"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "73"
+ lanes: "0:8"
+ serdes_group: "9"
+ speed: "400G"
+ sysport: "73"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "49"
+ lanes: "0:8"
+ serdes_group: "6"
+ speed: "400G"
+ sysport: "49"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "57"
+ lanes: "0:8"
+ serdes_group: "7"
+ speed: "400G"
+ sysport: "57"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "33"
+ lanes: "0:8"
+ serdes_group: "4"
+ speed: "400G"
+ sysport: "33"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "41"
+ lanes: "0:8"
+ serdes_group: "5"
+ speed: "400G"
+ sysport: "41"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "17"
+ lanes: "0:8"
+ serdes_group: "2"
+ speed: "400G"
+ sysport: "17"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "25"
+ lanes: "0:8"
+ serdes_group: "3"
+ speed: "400G"
+ sysport: "25"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "1"
+ lanes: "0:8"
+ serdes_group: "0"
+ speed: "400G"
+ sysport: "1"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "9"
+ lanes: "0:8"
+ serdes_group: "1"
+ speed: "400G"
+ sysport: "9"
+ type: "eth"
+ - fec: "NONE"
+ id: "257"
+ lanes: "0:1"
+ serdes_group: "32"
+ speed: "10G"
+ sysport: "257"
+ type: "mgmt 0"
+ - fec: "NONE"
+ id: "258"
+ lanes: "1:1"
+ serdes_group: "32"
+ speed: "10G"
+ sysport: "258"
+ type: "mgmt 1"
+ isg:
+ - id: "0"
+ tx_polarity: "01010101"
+ rx_polarity: "01100000"
+ lane_swap: "23641075"
+ - id: "1"
+ tx_polarity: "10110000"
+ rx_polarity: "11111111"
+ lane_swap: "64317520"
+ - id: "2"
+ tx_polarity: "00000000"
+ rx_polarity: "00000011"
+ lane_swap: "63147520"
+ - id: "3"
+ tx_polarity: "01101000"
+ rx_polarity: "00001110"
+ lane_swap: "31572046"
+ - id: "4"
+ tx_polarity: "00111000"
+ rx_polarity: "00001000"
+ lane_swap: "46105732"
+ - id: "5"
+ tx_polarity: "10111111"
+ rx_polarity: "11101000"
+ lane_swap: "27153604"
+ - id: "6"
+ tx_polarity: "01101110"
+ rx_polarity: "00001101"
+ lane_swap: "46503721"
+ - id: "7"
+ tx_polarity: "01000100"
+ rx_polarity: "10000101"
+ lane_swap: "03671245"
+ - id: "8"
+ tx_polarity: "01110101"
+ rx_polarity: "00010000"
+ lane_swap: "12640375"
+ - id: "9"
+ tx_polarity: "01011100"
+ rx_polarity: "11001111"
+ lane_swap: "02561347"
+ - id: "10"
+ tx_polarity: "01110110"
+ rx_polarity: "11000000"
+ lane_swap: "12740365"
+ - id: "11"
+ tx_polarity: "00111000"
+ rx_polarity: "00010111"
+ lane_swap: "01572436"
+ - id: "12"
+ tx_polarity: "00001111"
+ rx_polarity: "10111001"
+ lane_swap: "54320176"
+ - id: "13"
+ tx_polarity: "10011101"
+ rx_polarity: "00111011"
+ lane_swap: "26153704"
+ - id: "14"
+ tx_polarity: "00110000"
+ rx_polarity: "11010000"
+ lane_swap: "37452601"
+ - id: "15"
+ tx_polarity: "11100010"
+ rx_polarity: "01110011"
+ lane_swap: "51370462"
+ - id: "16"
+ tx_polarity: "10111010"
+ rx_polarity: "11010011"
+ lane_swap: "36152704"
+ - id: "17"
+ tx_polarity: "01011101"
+ rx_polarity: "00110001"
+ lane_swap: "45621073"
+ - id: "18"
+ tx_polarity: "11011111"
+ rx_polarity: "11001011"
+ lane_swap: "26143705"
+ - id: "19"
+ tx_polarity: "00100110"
+ rx_polarity: "00001001"
+ lane_swap: "42730165"
+ - id: "20"
+ tx_polarity: "10011011"
+ rx_polarity: "01101101"
+ lane_swap: "54217603"
+ - id: "21"
+ tx_polarity: "00101110"
+ rx_polarity: "10111111"
+ lane_swap: "26031745"
+ - id: "22"
+ tx_polarity: "01001110"
+ rx_polarity: "00111001"
+ lane_swap: "36024715"
+ - id: "23"
+ tx_polarity: "10101101"
+ rx_polarity: "01010011"
+ lane_swap: "45621370"
+ - id: "24"
+ tx_polarity: "11001110"
+ rx_polarity: "00011111"
+ lane_swap: "65234701"
+ - id: "25"
+ tx_polarity: "01110001"
+ rx_polarity: "01010111"
+ lane_swap: "37601452"
+ - id: "26"
+ tx_polarity: "01000100"
+ rx_polarity: "00001111"
+ lane_swap: "65034721"
+ - id: "27"
+ tx_polarity: "10111101"
+ rx_polarity: "11000101"
+ lane_swap: "34501672"
+ - id: "28"
+ tx_polarity: "01111000"
+ rx_polarity: "01110110"
+ lane_swap: "43061275"
+ - id: "29"
+ tx_polarity: "11110111"
+ rx_polarity: "11100111"
+ lane_swap: "57304621"
+ - id: "30"
+ tx_polarity: "10000100"
+ rx_polarity: "00101111"
+ lane_swap: "47125603"
+ - id: "31"
+ tx_polarity: "11111111"
+ rx_polarity: "11100010"
+ lane_swap: "13460275"
+ - id: "32"
+ tx_polarity: "00000000"
+ rx_polarity: "00000000"
+ lane_swap: "01234567"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/alt_cfg/port_config_aux.ini b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/alt_cfg/port_config_aux.ini
new file mode 100755
index 000000000000..b02a938b34ff
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/alt_cfg/port_config_aux.ini
@@ -0,0 +1,35 @@
+# name lanes alias speed index mtu fec
+Ethernet0 249,250,251,252 Eth1 400000 0 9126 rs
+Ethernet8 241,242,243,244 Eth2 400000 1 9126 rs
+Ethernet16 233,234,235,236 Eth3 400000 2 9126 rs
+Ethernet24 225,226,227,228 Eth4 400000 3 9126 rs
+Ethernet32 217,218,219,220 Eth5 400000 4 9126 rs
+Ethernet40 209,210,211,212 Eth6 400000 5 9126 rs
+Ethernet48 201,202,203,204 Eth7 400000 6 9126 rs
+Ethernet56 193,194,195,196 Eth8 400000 7 9126 rs
+Ethernet64 185,186,187,188 Eth9 400000 8 9126 rs
+Ethernet72 177,178,179,180 Eth10 400000 9 9126 rs
+Ethernet80 169,170,171,172 Eth11 400000 10 9126 rs
+Ethernet88 161,162,163,164 Eth12 400000 11 9126 rs
+Ethernet96 153,154,155,156 Eth13 400000 12 9126 rs
+Ethernet104 145,146,147,148 Eth14 400000 13 9126 rs
+Ethernet112 137,138,139,140 Eth15 400000 14 9126 rs
+Ethernet120 129,130,131,132 Eth16 400000 15 9126 rs
+Ethernet128 121,122,123,124 Eth17 400000 16 9126 rs
+Ethernet136 113,114,115,116 Eth18 400000 17 9126 rs
+Ethernet144 97,98,99,100 Eth19 400000 18 9126 rs
+Ethernet152 105,106,107,108 Eth20 400000 19 9126 rs
+Ethernet160 81,82,83,84 Eth21 400000 20 9126 rs
+Ethernet168 89,90,91,92 Eth22 400000 21 9126 rs
+Ethernet176 65,66,67,68 Eth23 400000 22 9126 rs
+Ethernet184 73,74,75,76 Eth24 400000 23 9126 rs
+Ethernet192 49,50,51,52 Eth25 400000 24 9126 rs
+Ethernet200 57,58,59,60 Eth26 400000 25 9126 rs
+Ethernet208 33,34,35,36 Eth27 400000 26 9126 rs
+Ethernet216 41,42,43,44 Eth28 400000 27 9126 rs
+Ethernet224 17,18,19,20 Eth29 400000 28 9126 rs
+Ethernet232 25,26,27,28 Eth30 400000 29 9126 rs
+Ethernet240 1,2,3,4 Eth31 400000 30 9126 rs
+Ethernet248 9,10,11,12 Eth32 400000 31 9126 rs
+Ethernet256 257 Aux1 10000 32 9126 none
+Ethernet257 258 Aux2 10000 33 9126 none
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/buffers.json.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/buffers.json.j2
index 4fca9cbcd156..ada7dca895ce 100644
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/buffers.json.j2
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/buffers.json.j2
@@ -1,6 +1,5 @@
{# Default values which will be used if no actual configura available #}
-{% set default_cable = '300m' %}
-{% set default_ports_num = 32 -%}
+{% set default_cable = '40m' %}
{# Port configuration to cable length look-up table #}
{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #}
@@ -12,44 +11,53 @@
}
%}
-{%- 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 -%}
+{%- 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 -%}
- {%- 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 -%}
+ {%- 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 %}
+ {%- else %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- 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 %}
@@ -57,6 +65,15 @@
{% 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": "47218432",
@@ -64,7 +81,7 @@
"mode": "dynamic",
"xoff": "17708800"
},
- "egress_lossy_pool": {
+ "lossy_pool": {
"size": "18874368",
"type": "egress",
"mode": "dynamic",
@@ -74,46 +91,46 @@
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
- "xoff":"1433600",
+ "xoff":"38816",
"size":"1518",
- "dynamic_th":"-4",
- "xon_offset":"6272"
+ "dynamic_th":"3",
+ "xon_offset":"13440"
},
- "ingress_lossy_profile": {
+ "egress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
- "egress_lossless_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
"egress_lossy_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"1518",
"dynamic_th":"3"
}
},
"BUFFER_PG": {
- "{{ port_names }}|0-3": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
- "{{ port_names }}|4-5": {
+ "{{ port_names }}|3-4": {
"profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
},
- "{{ port_names }}|6-7": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}
},
"BUFFER_QUEUE": {
- "{{ port_names }}|4-5": {
- "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
},
- "{{ port_names }}|0-3": {
+ "{{ port_names }}|0-2": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
},
- "{{ port_names }}|6-7": {
+ "{{ port_names }}|5-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}
}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/buffers_defaults_def_lossy.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/buffers_defaults_def_lossy.j2
new file mode 100644
index 000000000000..fa2b49e6340a
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/buffers_defaults_def_lossy.j2
@@ -0,0 +1,38 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+{
+ "BUFFER_POOL": {
+ "lossy_pool": {
+ "size": "56985600",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/buffers_defaults_t1.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/buffers_defaults_t1.j2
new file mode 100644
index 000000000000..ada7dca895ce
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/buffers_defaults_t1.j2
@@ -0,0 +1,137 @@
+{# Default values which will be used if no actual configura available #}
+{% set default_cable = '40m' %}
+
+{# 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 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 %}
+ {%- 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 %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- endif %}
+{%- endmacro %}
+
+{%- if DEVICE_METADATA is defined %}
+{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
+{%- 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": "47218432",
+ "type": "ingress",
+ "mode": "dynamic",
+ "xoff": "17708800"
+ },
+ "lossy_pool": {
+ "size": "18874368",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "xoff":"38816",
+ "size":"1518",
+ "dynamic_th":"3",
+ "xon_offset":"13440"
+ },
+ "egress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ },
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ },
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/config_32x400G_Delta-et-c032if.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/config_32x400G_Delta-et-c032if.yaml
index 2ba23d2a5a67..76cf0dc36ba8 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/config_32x400G_Delta-et-c032if.yaml
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/config_32x400G_Delta-et-c032if.yaml
@@ -10,6 +10,8 @@ nodes:
multi_interface: "yes"
buffer_management_mode: "api_driven"
max_lossless_tc: "2"
+ ilpm_enable: "1"
+ forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E"
txring:
- txring_id: "0"
desc_count: "1024"
@@ -280,20 +282,6 @@ nodes:
speed: "400G"
sysport: "9"
type: "eth"
- - fec: "NONE"
- id: "257"
- lanes: "0:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "257"
- type: "mgmt 0"
- - fec: "NONE"
- id: "258"
- lanes: "1:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "258"
- type: "mgmt 1"
isg:
- id: "0"
tx_polarity: "01010101"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/ivm.sai.config.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/ivm.sai.config.yaml
new file mode 100755
index 000000000000..30a83d145ebd
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/ivm.sai.config.yaml
@@ -0,0 +1,9 @@
+IFCS_INIT_FILE : "/usr/share/sonic/hwsku/config_32x400G_Delta-et-c032if.yaml"
+IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_A"
+IFCS_INNO_CLI_PORT : "9999"
+IFCS_TARGET : "device"
+INNOVIUM_DIR : "/innovium"
+PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes"
+AVG_IPG_RESERVED_SIZE: "1518"
+AVG_QUEUE_RESERVED_SIZE: "1518"
+IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/ivm.sai.datapath.config.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/ivm.sai.datapath.config.yaml
new file mode 100644
index 000000000000..891b0b3e2834
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/ivm.sai.datapath.config.yaml
@@ -0,0 +1,9 @@
+ISAI_PARAM_P0_0_LS : "4608 4608 4608 4608 2880 2880"
+ISAI_PARAM_P0_1_LS : "2226 1946 1946 1890 1218 1218"
+ISAI_PARAM_P0_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_0_LS : "1536 1536 1536 1536 960 960"
+ISAI_PARAM_P1_0_LL : "3072 3072 3072 3072 1920 1920"
+ISAI_PARAM_P1_1_LS : "1778 1498 1498 1442 938 938"
+ISAI_PARAM_P1_1_LL : "2478 2478 2478 2478 2478 2478"
+ISAI_PARAM_P1_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_1_ALL : "126 126 126 126 126 126"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/pg_profile_lookup.ini b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/pg_profile_lookup.ini
new file mode 100644
index 000000000000..27775dfff78d
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/pg_profile_lookup.ini
@@ -0,0 +1,14 @@
+# PG lossless profiles.
+# speed cable size xon xoff threshold xon_offset
+ 25000 5m 1518 0 15680 3 13440
+ 50000 5m 1518 0 21152 3 13440
+ 100000 5m 1518 0 34336 3 13440
+ 400000 5m 1518 0 117376 3 13440
+ 25000 40m 1518 0 16800 3 13440
+ 50000 40m 1518 0 23392 3 13440
+ 100000 40m 1518 0 38816 3 13440
+ 400000 40m 1518 0 135296 3 13440
+ 25000 300m 1518 0 25120 3 13440
+ 50000 300m 1518 0 40032 3 13440
+ 100000 300m 1518 0 72096 3 13440
+ 400000 300m 1518 0 268416 3 13440
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/port_config.ini b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/port_config.ini
index 360e363f485b..64d07a4eecdb 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/port_config.ini
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/port_config.ini
@@ -1,35 +1,33 @@
-# name lanes speed index mtu fec
-Ethernet0 249,250,251,252 400000 0 9126 rs
-Ethernet8 241,242,243,244 400000 1 9126 rs
-Ethernet16 233,234,235,236 400000 2 9126 rs
-Ethernet24 225,226,227,228 400000 3 9126 rs
-Ethernet32 217,218,219,220 400000 4 9126 rs
-Ethernet40 209,210,211,212 400000 5 9126 rs
-Ethernet48 201,202,203,204 400000 6 9126 rs
-Ethernet56 193,194,195,196 400000 7 9126 rs
-Ethernet64 185,186,187,188 400000 8 9126 rs
-Ethernet72 177,178,179,180 400000 9 9126 rs
-Ethernet80 169,170,171,172 400000 10 9126 rs
-Ethernet88 161,162,163,164 400000 11 9126 rs
-Ethernet96 153,154,155,156 400000 12 9126 rs
-Ethernet104 145,146,147,148 400000 13 9126 rs
-Ethernet112 137,138,139,140 400000 14 9126 rs
-Ethernet120 129,130,131,132 400000 15 9126 rs
-Ethernet128 121,122,123,124 400000 16 9126 rs
-Ethernet136 113,114,115,116 400000 17 9126 rs
-Ethernet144 97,98,99,100 400000 18 9126 rs
-Ethernet152 105,106,107,108 400000 19 9126 rs
-Ethernet160 81,82,83,84 400000 20 9126 rs
-Ethernet168 89,90,91,92 400000 21 9126 rs
-Ethernet176 65,66,67,68 400000 22 9126 rs
-Ethernet184 73,74,75,76 400000 23 9126 rs
-Ethernet192 49,50,51,52 400000 24 9126 rs
-Ethernet200 57,58,59,60 400000 25 9126 rs
-Ethernet208 33,34,35,36 400000 26 9126 rs
-Ethernet216 41,42,43,44 400000 27 9126 rs
-Ethernet224 17,18,19,20 400000 28 9126 rs
-Ethernet232 25,26,27,28 400000 29 9126 rs
-Ethernet240 1,2,3,4 400000 30 9126 rs
-Ethernet248 9,10,11,12 400000 31 9126 rs
-Ethernet256 257 10000 32 9126 none
-Ethernet257 258 10000 33 9126 none
+# name lanes alias speed index mtu fec
+Ethernet0 249,250,251,252,253,254,255,256 Ethernet0 400000 0 9126 rs
+Ethernet8 241,242,243,244,245,246,247,248 Ethernet8 400000 1 9126 rs
+Ethernet16 233,234,235,236,237,238,239,240 Ethernet16 400000 2 9126 rs
+Ethernet24 225,226,227,228,229,230,231,232 Ethernet24 400000 3 9126 rs
+Ethernet32 217,218,219,220,221,222,223,224 Ethernet32 400000 4 9126 rs
+Ethernet40 209,210,211,212,213,214,215,216 Ethernet40 400000 5 9126 rs
+Ethernet48 201,202,203,204,205,206,207,208 Ethernet48 400000 6 9126 rs
+Ethernet56 193,194,195,196,197,198,199,200 Ethernet56 400000 7 9126 rs
+Ethernet64 185,186,187,188,189,190,191,192 Ethernet64 400000 8 9126 rs
+Ethernet72 177,178,179,180,181,182,183,184 Ethernet72 400000 9 9126 rs
+Ethernet80 169,170,171,172,173,174,175,176 Ethernet80 400000 10 9126 rs
+Ethernet88 161,162,163,164,165,166,167,168 Ethernet88 400000 11 9126 rs
+Ethernet96 153,154,155,156,157,158,159,160 Ethernet96 400000 12 9126 rs
+Ethernet104 145,146,147,148,149,150,151,152 Ethernet104 400000 13 9126 rs
+Ethernet112 137,138,139,140,141,142,143,144 Ethernet112 400000 14 9126 rs
+Ethernet120 129,130,131,132,133,134,135,136 Ethernet120 400000 15 9126 rs
+Ethernet128 121,122,123,124,125,126,127,128 Ethernet128 400000 16 9126 rs
+Ethernet136 113,114,115,116,117,118,119,120 Ethernet136 400000 17 9126 rs
+Ethernet144 97,98,99,100,101,102,103,104 Ethernet144 400000 18 9126 rs
+Ethernet152 105,106,107,108,109,110,111,112 Ethernet152 400000 19 9126 rs
+Ethernet160 81,82,83,84,85,86,87,88 Ethernet160 400000 20 9126 rs
+Ethernet168 89,90,91,92,93,94,95,96 Ethernet168 400000 21 9126 rs
+Ethernet176 65,66,67,68,69,70,71,72 Ethernet176 400000 22 9126 rs
+Ethernet184 73,74,75,76,77,78,79,80 Ethernet184 400000 23 9126 rs
+Ethernet192 49,50,51,52,53,54,55,56 Ethernet192 400000 24 9126 rs
+Ethernet200 57,58,59,60,61,62,63,64 Ethernet200 400000 25 9126 rs
+Ethernet208 33,34,35,36,37,38,39,40 Ethernet208 400000 26 9126 rs
+Ethernet216 41,42,43,44,45,46,47,48 Ethernet216 400000 27 9126 rs
+Ethernet224 17,18,19,20,21,22,23,24 Ethernet224 400000 28 9126 rs
+Ethernet232 25,26,27,28,29,30,31,32 Ethernet232 400000 29 9126 rs
+Ethernet240 1,2,3,4,5,6,7,8 Ethernet240 400000 30 9126 rs
+Ethernet248 9,10,11,12,13,14,15,16 Ethernet248 400000 31 9126 rs
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/qos.json.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/qos.json.j2
index 6c734d46ff2f..3938fc1a05c4 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/qos.json.j2
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/qos.json.j2
@@ -1,14 +1,3 @@
-{# Default values which will be used if no actual configura available #}
-
-{% set default_ports_num = 32 -%}
-{# 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 %}
@@ -19,24 +8,24 @@
{
"TC_TO_QUEUE_MAP":{
"AZURE":{
- "1":"1",
"0":"0",
- "3":"3",
+ "1":"1",
"2":"2",
- "5":"5",
+ "3":"3",
"4":"4",
- "7":"7",
- "6":"6"
+ "5":"5",
+ "6":"6",
+ "7":"7"
}
},
"TC_TO_PRIORITY_GROUP_MAP": {
"AZURE": {
- "1": "0",
"0": "0",
- "3": "0",
+ "1": "0",
"2": "0",
- "4": "1",
- "5": "2",
+ "3": "1",
+ "4": "2",
+ "5": "0",
"6": "0",
"7": "0"
}
@@ -46,9 +35,9 @@
"0":"0",
"1":"0",
"2":"0",
- "3":"0",
+ "3":"3",
"4":"4",
- "5":"5",
+ "5":"0",
"6":"0",
"7":"0",
"8":"1",
@@ -114,7 +103,12 @@
"tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
"tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
"dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
- "pfc_enable": "4,5"
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
}
}
}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/qos_defaults_def_lossy.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/qos_defaults_def_lossy.j2
new file mode 100755
index 000000000000..205242d82910
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/qos_defaults_def_lossy.j2
@@ -0,0 +1,118 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"0",
+ "4":"0",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"0",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]"
+ }
+ },
+ "SCHEDULER": {
+ "scheduler.7": {
+ "type": "STRICT"
+ }
+ },
+ "QUEUE": {
+ "{{ port_names }}|7": {
+ "scheduler": "[SCHEDULER|scheduler.7]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/qos_defaults_t1.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/qos_defaults_t1.j2
new file mode 100755
index 000000000000..3938fc1a05c4
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/qos_defaults_t1.j2
@@ -0,0 +1,114 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"3",
+ "4":"4",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"1",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/sai.profile b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/sai.profile
index 0769b3063a12..aba4fc81fb17 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/sai.profile
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if/sai.profile
@@ -1 +1 @@
-SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/inno.config.yaml
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/alt_cfg/config_128x100G_Delta-et-c032if_aux.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/alt_cfg/config_128x100G_Delta-et-c032if_aux.yaml
new file mode 100755
index 000000000000..ad50fd04c2a0
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/alt_cfg/config_128x100G_Delta-et-c032if_aux.yaml
@@ -0,0 +1,1102 @@
+ifcs:
+ options:
+ log_level: "info"
+nodes:
+- node_id: "0"
+ options:
+ sku: "configs/sku/innovium.77700_B"
+ netdev:
+ - auto_create: "no"
+ multi_interface: "yes"
+ buffer_management_mode: "api_driven"
+ max_lossless_tc: "2"
+ txring:
+ - txring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ rxring:
+ - rxring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44"
+ - rxring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45"
+ - rxring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46"
+ - rxring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47"
+ sys_clk: "1720"
+ ifc_clk: "1200"
+ mac_clk: "1340"
+
+ devports:
+ - id: "0"
+ sysport: "1000"
+ type: "cpu"
+ - fec: "KPFEC"
+ id: "249"
+ lanes: "0:2"
+ serdes_group: "31"
+ speed: "100G"
+ sysport: "249"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "251"
+ lanes: "2:2"
+ serdes_group: "31"
+ speed: "100G"
+ sysport: "251"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "253"
+ lanes: "4:2"
+ serdes_group: "31"
+ speed: "100G"
+ sysport: "253"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "255"
+ lanes: "6:2"
+ serdes_group: "31"
+ speed: "100G"
+ sysport: "255"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "241"
+ lanes: "0:2"
+ serdes_group: "30"
+ speed: "100G"
+ sysport: "241"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "243"
+ lanes: "2:2"
+ serdes_group: "30"
+ speed: "100G"
+ sysport: "243"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "245"
+ lanes: "4:2"
+ serdes_group: "30"
+ speed: "100G"
+ sysport: "245"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "247"
+ lanes: "6:2"
+ serdes_group: "30"
+ speed: "100G"
+ sysport: "247"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "233"
+ lanes: "0:2"
+ serdes_group: "29"
+ speed: "100G"
+ sysport: "233"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "235"
+ lanes: "2:2"
+ serdes_group: "29"
+ speed: "100G"
+ sysport: "235"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "237"
+ lanes: "4:2"
+ serdes_group: "29"
+ speed: "100G"
+ sysport: "237"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "239"
+ lanes: "6:2"
+ serdes_group: "29"
+ speed: "100G"
+ sysport: "239"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "225"
+ lanes: "0:2"
+ serdes_group: "28"
+ speed: "100G"
+ sysport: "225"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "227"
+ lanes: "2:2"
+ serdes_group: "28"
+ speed: "100G"
+ sysport: "227"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "229"
+ lanes: "4:2"
+ serdes_group: "28"
+ speed: "100G"
+ sysport: "229"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "231"
+ lanes: "6:2"
+ serdes_group: "28"
+ speed: "100G"
+ sysport: "231"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "217"
+ lanes: "0:2"
+ serdes_group: "27"
+ speed: "100G"
+ sysport: "217"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "219"
+ lanes: "2:2"
+ serdes_group: "27"
+ speed: "100G"
+ sysport: "219"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "221"
+ lanes: "4:2"
+ serdes_group: "27"
+ speed: "100G"
+ sysport: "221"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "223"
+ lanes: "6:2"
+ serdes_group: "27"
+ speed: "100G"
+ sysport: "223"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "209"
+ lanes: "0:2"
+ serdes_group: "26"
+ speed: "100G"
+ sysport: "209"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "211"
+ lanes: "2:2"
+ serdes_group: "26"
+ speed: "100G"
+ sysport: "211"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "213"
+ lanes: "4:2"
+ serdes_group: "26"
+ speed: "100G"
+ sysport: "213"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "215"
+ lanes: "6:2"
+ serdes_group: "26"
+ speed: "100G"
+ sysport: "215"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "201"
+ lanes: "0:2"
+ serdes_group: "25"
+ speed: "100G"
+ sysport: "201"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "203"
+ lanes: "2:2"
+ serdes_group: "25"
+ speed: "100G"
+ sysport: "203"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "205"
+ lanes: "4:2"
+ serdes_group: "25"
+ speed: "100G"
+ sysport: "205"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "207"
+ lanes: "6:2"
+ serdes_group: "25"
+ speed: "100G"
+ sysport: "207"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "193"
+ lanes: "0:2"
+ serdes_group: "24"
+ speed: "100G"
+ sysport: "193"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "195"
+ lanes: "2:2"
+ serdes_group: "24"
+ speed: "100G"
+ sysport: "195"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "197"
+ lanes: "4:2"
+ serdes_group: "24"
+ speed: "100G"
+ sysport: "197"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "199"
+ lanes: "6:2"
+ serdes_group: "24"
+ speed: "100G"
+ sysport: "199"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "185"
+ lanes: "0:2"
+ serdes_group: "23"
+ speed: "100G"
+ sysport: "185"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "187"
+ lanes: "2:2"
+ serdes_group: "23"
+ speed: "100G"
+ sysport: "187"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "189"
+ lanes: "4:2"
+ serdes_group: "23"
+ speed: "100G"
+ sysport: "189"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "191"
+ lanes: "6:2"
+ serdes_group: "23"
+ speed: "100G"
+ sysport: "191"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "177"
+ lanes: "0:2"
+ serdes_group: "22"
+ speed: "100G"
+ sysport: "177"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "179"
+ lanes: "2:2"
+ serdes_group: "22"
+ speed: "100G"
+ sysport: "179"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "181"
+ lanes: "4:2"
+ serdes_group: "22"
+ speed: "100G"
+ sysport: "181"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "183"
+ lanes: "6:2"
+ serdes_group: "22"
+ speed: "100G"
+ sysport: "183"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "169"
+ lanes: "0:2"
+ serdes_group: "21"
+ speed: "100G"
+ sysport: "169"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "171"
+ lanes: "2:2"
+ serdes_group: "21"
+ speed: "100G"
+ sysport: "171"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "173"
+ lanes: "4:2"
+ serdes_group: "21"
+ speed: "100G"
+ sysport: "173"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "175"
+ lanes: "6:2"
+ serdes_group: "21"
+ speed: "100G"
+ sysport: "175"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "161"
+ lanes: "0:2"
+ serdes_group: "20"
+ speed: "100G"
+ sysport: "161"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "163"
+ lanes: "2:2"
+ serdes_group: "20"
+ speed: "100G"
+ sysport: "163"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "165"
+ lanes: "4:2"
+ serdes_group: "20"
+ speed: "100G"
+ sysport: "165"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "167"
+ lanes: "6:2"
+ serdes_group: "20"
+ speed: "100G"
+ sysport: "167"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "153"
+ lanes: "0:2"
+ serdes_group: "19"
+ speed: "100G"
+ sysport: "153"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "155"
+ lanes: "2:2"
+ serdes_group: "19"
+ speed: "100G"
+ sysport: "155"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "157"
+ lanes: "4:2"
+ serdes_group: "19"
+ speed: "100G"
+ sysport: "157"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "159"
+ lanes: "6:2"
+ serdes_group: "19"
+ speed: "100G"
+ sysport: "159"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "145"
+ lanes: "0:2"
+ serdes_group: "18"
+ speed: "100G"
+ sysport: "145"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "147"
+ lanes: "2:2"
+ serdes_group: "18"
+ speed: "100G"
+ sysport: "147"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "149"
+ lanes: "4:2"
+ serdes_group: "18"
+ speed: "100G"
+ sysport: "149"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "151"
+ lanes: "6:2"
+ serdes_group: "18"
+ speed: "100G"
+ sysport: "151"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "137"
+ lanes: "0:2"
+ serdes_group: "17"
+ speed: "100G"
+ sysport: "137"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "139"
+ lanes: "2:2"
+ serdes_group: "17"
+ speed: "100G"
+ sysport: "139"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "141"
+ lanes: "4:2"
+ serdes_group: "17"
+ speed: "100G"
+ sysport: "141"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "143"
+ lanes: "6:2"
+ serdes_group: "17"
+ speed: "100G"
+ sysport: "143"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "129"
+ lanes: "0:2"
+ serdes_group: "16"
+ speed: "100G"
+ sysport: "129"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "131"
+ lanes: "2:2"
+ serdes_group: "16"
+ speed: "100G"
+ sysport: "131"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "133"
+ lanes: "4:2"
+ serdes_group: "16"
+ speed: "100G"
+ sysport: "133"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "135"
+ lanes: "6:2"
+ serdes_group: "16"
+ speed: "100G"
+ sysport: "135"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "121"
+ lanes: "0:2"
+ serdes_group: "15"
+ speed: "100G"
+ sysport: "121"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "123"
+ lanes: "2:2"
+ serdes_group: "15"
+ speed: "100G"
+ sysport: "123"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "125"
+ lanes: "4:2"
+ serdes_group: "15"
+ speed: "100G"
+ sysport: "125"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "127"
+ lanes: "6:2"
+ serdes_group: "15"
+ speed: "100G"
+ sysport: "127"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "113"
+ lanes: "0:2"
+ serdes_group: "14"
+ speed: "100G"
+ sysport: "113"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "115"
+ lanes: "2:2"
+ serdes_group: "14"
+ speed: "100G"
+ sysport: "115"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "117"
+ lanes: "4:2"
+ serdes_group: "14"
+ speed: "100G"
+ sysport: "117"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "119"
+ lanes: "6:2"
+ serdes_group: "14"
+ speed: "100G"
+ sysport: "119"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "97"
+ lanes: "0:2"
+ serdes_group: "12"
+ speed: "100G"
+ sysport: "97"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "99"
+ lanes: "2:2"
+ serdes_group: "12"
+ speed: "100G"
+ sysport: "99"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "101"
+ lanes: "4:2"
+ serdes_group: "12"
+ speed: "100G"
+ sysport: "101"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "103"
+ lanes: "6:2"
+ serdes_group: "12"
+ speed: "100G"
+ sysport: "103"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "105"
+ lanes: "0:2"
+ serdes_group: "13"
+ speed: "100G"
+ sysport: "105"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "107"
+ lanes: "2:2"
+ serdes_group: "13"
+ speed: "100G"
+ sysport: "107"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "109"
+ lanes: "4:2"
+ serdes_group: "13"
+ speed: "100G"
+ sysport: "109"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "111"
+ lanes: "6:2"
+ serdes_group: "13"
+ speed: "100G"
+ sysport: "111"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "81"
+ lanes: "0:2"
+ serdes_group: "10"
+ speed: "100G"
+ sysport: "81"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "83"
+ lanes: "2:2"
+ serdes_group: "10"
+ speed: "100G"
+ sysport: "83"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "85"
+ lanes: "4:2"
+ serdes_group: "10"
+ speed: "100G"
+ sysport: "85"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "87"
+ lanes: "6:2"
+ serdes_group: "10"
+ speed: "100G"
+ sysport: "87"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "89"
+ lanes: "0:2"
+ serdes_group: "11"
+ speed: "100G"
+ sysport: "89"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "91"
+ lanes: "2:2"
+ serdes_group: "11"
+ speed: "100G"
+ sysport: "91"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "93"
+ lanes: "4:2"
+ serdes_group: "11"
+ speed: "100G"
+ sysport: "93"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "95"
+ lanes: "6:2"
+ serdes_group: "11"
+ speed: "100G"
+ sysport: "95"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "65"
+ lanes: "0:2"
+ serdes_group: "8"
+ speed: "100G"
+ sysport: "65"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "67"
+ lanes: "2:2"
+ serdes_group: "8"
+ speed: "100G"
+ sysport: "67"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "69"
+ lanes: "4:2"
+ serdes_group: "8"
+ speed: "100G"
+ sysport: "69"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "71"
+ lanes: "6:2"
+ serdes_group: "8"
+ speed: "100G"
+ sysport: "71"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "73"
+ lanes: "0:2"
+ serdes_group: "9"
+ speed: "100G"
+ sysport: "73"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "75"
+ lanes: "2:2"
+ serdes_group: "9"
+ speed: "100G"
+ sysport: "75"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "77"
+ lanes: "4:2"
+ serdes_group: "9"
+ speed: "100G"
+ sysport: "77"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "79"
+ lanes: "6:2"
+ serdes_group: "9"
+ speed: "100G"
+ sysport: "79"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "49"
+ lanes: "0:2"
+ serdes_group: "6"
+ speed: "100G"
+ sysport: "49"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "51"
+ lanes: "2:2"
+ serdes_group: "6"
+ speed: "100G"
+ sysport: "51"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "53"
+ lanes: "4:2"
+ serdes_group: "6"
+ speed: "100G"
+ sysport: "53"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "55"
+ lanes: "6:2"
+ serdes_group: "6"
+ speed: "100G"
+ sysport: "55"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "57"
+ lanes: "0:2"
+ serdes_group: "7"
+ speed: "100G"
+ sysport: "57"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "59"
+ lanes: "2:2"
+ serdes_group: "7"
+ speed: "100G"
+ sysport: "59"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "61"
+ lanes: "4:2"
+ serdes_group: "7"
+ speed: "100G"
+ sysport: "61"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "63"
+ lanes: "6:2"
+ serdes_group: "7"
+ speed: "100G"
+ sysport: "63"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "33"
+ lanes: "0:2"
+ serdes_group: "4"
+ speed: "100G"
+ sysport: "33"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "35"
+ lanes: "2:2"
+ serdes_group: "4"
+ speed: "100G"
+ sysport: "35"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "37"
+ lanes: "4:2"
+ serdes_group: "4"
+ speed: "100G"
+ sysport: "37"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "39"
+ lanes: "6:2"
+ serdes_group: "4"
+ speed: "100G"
+ sysport: "39"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "41"
+ lanes: "0:2"
+ serdes_group: "5"
+ speed: "100G"
+ sysport: "41"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "43"
+ lanes: "2:2"
+ serdes_group: "5"
+ speed: "100G"
+ sysport: "43"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "45"
+ lanes: "4:2"
+ serdes_group: "5"
+ speed: "100G"
+ sysport: "45"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "47"
+ lanes: "6:2"
+ serdes_group: "5"
+ speed: "100G"
+ sysport: "47"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "17"
+ lanes: "0:2"
+ serdes_group: "2"
+ speed: "100G"
+ sysport: "17"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "19"
+ lanes: "2:2"
+ serdes_group: "2"
+ speed: "100G"
+ sysport: "19"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "21"
+ lanes: "4:2"
+ serdes_group: "2"
+ speed: "100G"
+ sysport: "21"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "23"
+ lanes: "6:2"
+ serdes_group: "2"
+ speed: "100G"
+ sysport: "23"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "25"
+ lanes: "0:2"
+ serdes_group: "3"
+ speed: "100G"
+ sysport: "25"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "27"
+ lanes: "2:2"
+ serdes_group: "3"
+ speed: "100G"
+ sysport: "27"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "29"
+ lanes: "4:2"
+ serdes_group: "3"
+ speed: "100G"
+ sysport: "29"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "31"
+ lanes: "6:2"
+ serdes_group: "3"
+ speed: "100G"
+ sysport: "31"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "1"
+ lanes: "0:2"
+ serdes_group: "0"
+ speed: "100G"
+ sysport: "1"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "3"
+ lanes: "2:2"
+ serdes_group: "0"
+ speed: "100G"
+ sysport: "3"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "5"
+ lanes: "4:2"
+ serdes_group: "0"
+ speed: "100G"
+ sysport: "5"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "7"
+ lanes: "6:2"
+ serdes_group: "0"
+ speed: "100G"
+ sysport: "7"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "9"
+ lanes: "0:2"
+ serdes_group: "1"
+ speed: "100G"
+ sysport: "9"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "11"
+ lanes: "2:2"
+ serdes_group: "1"
+ speed: "100G"
+ sysport: "11"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "13"
+ lanes: "4:2"
+ serdes_group: "1"
+ speed: "100G"
+ sysport: "13"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "15"
+ lanes: "6:2"
+ serdes_group: "1"
+ speed: "100G"
+ sysport: "15"
+ type: "eth"
+ - fec: "NONE"
+ id: "257"
+ lanes: "0:1"
+ serdes_group: "32"
+ speed: "10G"
+ sysport: "257"
+ type: "mgmt 0"
+ - fec: "NONE"
+ id: "258"
+ lanes: "1:1"
+ serdes_group: "32"
+ speed: "10G"
+ sysport: "258"
+ type: "mgmt 1"
+
+ isg:
+ - id: "0"
+ tx_polarity: "01010101"
+ rx_polarity: "01100000"
+ lane_swap: "23641075"
+ - id: "1"
+ tx_polarity: "10110000"
+ rx_polarity: "11111111"
+ lane_swap: "64317520"
+ - id: "2"
+ tx_polarity: "00000000"
+ rx_polarity: "00000011"
+ lane_swap: "63147520"
+ - id: "3"
+ tx_polarity: "01101000"
+ rx_polarity: "00001110"
+ lane_swap: "31572046"
+ - id: "4"
+ tx_polarity: "00111000"
+ rx_polarity: "00001000"
+ lane_swap: "46105732"
+ - id: "5"
+ tx_polarity: "10111111"
+ rx_polarity: "11101000"
+ lane_swap: "27153604"
+ - id: "6"
+ tx_polarity: "01101110"
+ rx_polarity: "00001101"
+ lane_swap: "46503721"
+ - id: "7"
+ tx_polarity: "01000100"
+ rx_polarity: "10000101"
+ lane_swap: "03671245"
+ - id: "8"
+ tx_polarity: "01110101"
+ rx_polarity: "00010000"
+ lane_swap: "12640375"
+ - id: "9"
+ tx_polarity: "01011100"
+ rx_polarity: "11001111"
+ lane_swap: "02561347"
+ - id: "10"
+ tx_polarity: "01110110"
+ rx_polarity: "11000000"
+ lane_swap: "12740365"
+ - id: "11"
+ tx_polarity: "00111000"
+ rx_polarity: "00010111"
+ lane_swap: "01572436"
+ - id: "12"
+ tx_polarity: "00001111"
+ rx_polarity: "10111001"
+ lane_swap: "54320176"
+ - id: "13"
+ tx_polarity: "10011101"
+ rx_polarity: "00111011"
+ lane_swap: "26153704"
+ - id: "14"
+ tx_polarity: "00110000"
+ rx_polarity: "11010000"
+ lane_swap: "37452601"
+ - id: "15"
+ tx_polarity: "11100010"
+ rx_polarity: "01110011"
+ lane_swap: "51370462"
+ - id: "16"
+ tx_polarity: "10111010"
+ rx_polarity: "11010011"
+ lane_swap: "36152704"
+ - id: "17"
+ tx_polarity: "01011101"
+ rx_polarity: "00110001"
+ lane_swap: "45621073"
+ - id: "18"
+ tx_polarity: "11011111"
+ rx_polarity: "11001011"
+ lane_swap: "26143705"
+ - id: "19"
+ tx_polarity: "00100110"
+ rx_polarity: "00001001"
+ lane_swap: "42730165"
+ - id: "20"
+ tx_polarity: "10011011"
+ rx_polarity: "01101101"
+ lane_swap: "54217603"
+ - id: "21"
+ tx_polarity: "00101110"
+ rx_polarity: "10111111"
+ lane_swap: "26031745"
+ - id: "22"
+ tx_polarity: "01001110"
+ rx_polarity: "00111001"
+ lane_swap: "36024715"
+ - id: "23"
+ tx_polarity: "10101101"
+ rx_polarity: "01010011"
+ lane_swap: "45621370"
+ - id: "24"
+ tx_polarity: "11001110"
+ rx_polarity: "00011111"
+ lane_swap: "65234701"
+ - id: "25"
+ tx_polarity: "01110001"
+ rx_polarity: "01010111"
+ lane_swap: "37601452"
+ - id: "26"
+ tx_polarity: "01000100"
+ rx_polarity: "00001111"
+ lane_swap: "65034721"
+ - id: "27"
+ tx_polarity: "10111101"
+ rx_polarity: "11000101"
+ lane_swap: "34501672"
+ - id: "28"
+ tx_polarity: "01111000"
+ rx_polarity: "01110110"
+ lane_swap: "43061275"
+ - id: "29"
+ tx_polarity: "11110111"
+ rx_polarity: "11100111"
+ lane_swap: "57304621"
+ - id: "30"
+ tx_polarity: "10000100"
+ rx_polarity: "00101111"
+ lane_swap: "47125603"
+ - id: "31"
+ tx_polarity: "11111111"
+ rx_polarity: "11100010"
+ lane_swap: "13460275"
+ - id: "32"
+ tx_polarity: "00000000"
+ rx_polarity: "00000000"
+ lane_swap: "01234567"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/alt_cfg/port_config_aux.ini b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/alt_cfg/port_config_aux.ini
new file mode 100644
index 000000000000..b2e5a267f42d
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/alt_cfg/port_config_aux.ini
@@ -0,0 +1,131 @@
+# name lanes alias speed index mtu
+Ethernet0 249,250 Eth1/1 100000 0 9126
+Ethernet2 251,252 Eth1/2 100000 0 9126
+Ethernet4 253,254 Eth1/3 100000 0 9126
+Ethernet6 255,256 Eth1/4 100000 0 9126
+Ethernet8 241,242 Eth2/1 100000 1 9126
+Ethernet10 243,244 Eth2/2 100000 1 9126
+Ethernet12 245,246 Eth2/3 100000 1 9126
+Ethernet14 247,248 Eth2/4 100000 1 9126
+Ethernet16 233,234 Eth3/1 100000 2 9126
+Ethernet18 235,236 Eth3/2 100000 2 9126
+Ethernet20 237,238 Eth3/3 100000 2 9126
+Ethernet22 239,240 Eth3/4 100000 2 9126
+Ethernet24 225,226 Eth4/1 100000 3 9126
+Ethernet26 227,228 Eth4/2 100000 3 9126
+Ethernet28 229,230 Eth4/3 100000 3 9126
+Ethernet30 231,232 Eth4/4 100000 3 9126
+Ethernet32 217,218 Eth5/1 100000 4 9126
+Ethernet34 219,220 Eth5/2 100000 4 9126
+Ethernet36 221,222 Eth5/3 100000 4 9126
+Ethernet38 223,224 Eth5/4 100000 4 9126
+Ethernet40 209,210 Eth6/1 100000 5 9126
+Ethernet42 211,212 Eth6/2 100000 5 9126
+Ethernet44 213,214 Eth6/3 100000 5 9126
+Ethernet46 215,216 Eth6/4 100000 5 9126
+Ethernet48 201,202 Eth7/1 100000 6 9126
+Ethernet50 203,204 Eth7/2 100000 6 9126
+Ethernet52 205,206 Eth7/3 100000 6 9126
+Ethernet54 207,208 Eth7/4 100000 6 9126
+Ethernet56 193,194 Eth8/1 100000 7 9126
+Ethernet58 195,196 Eth8/2 100000 7 9126
+Ethernet60 197,198 Eth8/3 100000 7 9126
+Ethernet62 199,200 Eth8/4 100000 7 9126
+Ethernet64 185,186 Eth9/1 100000 8 9126
+Ethernet66 187,188 Eth9/2 100000 8 9126
+Ethernet68 189,190 Eth9/3 100000 8 9126
+Ethernet70 191,192 Eth9/4 100000 8 9126
+Ethernet72 177,178 Eth10/1 100000 9 9126
+Ethernet74 179,180 Eth10/2 100000 9 9126
+Ethernet76 181,182 Eth10/3 100000 9 9126
+Ethernet78 183,184 Eth10/4 100000 9 9126
+Ethernet80 169,170 Eth11/1 100000 10 9126
+Ethernet82 171,172 Eth11/2 100000 10 9126
+Ethernet84 173,174 Eth11/3 100000 10 9126
+Ethernet86 175,176 Eth11/4 100000 10 9126
+Ethernet88 161,162 Eth12/1 100000 11 9126
+Ethernet90 163,164 Eth12/2 100000 11 9126
+Ethernet92 165,166 Eth12/3 100000 11 9126
+Ethernet94 167,168 Eth12/4 100000 11 9126
+Ethernet96 153,154 Eth13/1 100000 12 9126
+Ethernet98 155,156 Eth13/2 100000 12 9126
+Ethernet100 157,158 Eth13/3 100000 12 9126
+Ethernet102 159,160 Eth13/4 100000 12 9126
+Ethernet104 145,146 Eth14/1 100000 13 9126
+Ethernet106 147,148 Eth14/2 100000 13 9126
+Ethernet108 149,150 Eth14/3 100000 13 9126
+Ethernet110 151,152 Eth14/4 100000 13 9126
+Ethernet112 137,138 Eth15/1 100000 14 9126
+Ethernet114 139,140 Eth15/2 100000 14 9126
+Ethernet116 141,142 Eth15/3 100000 14 9126
+Ethernet118 143,144 Eth15/4 100000 14 9126
+Ethernet120 129,130 Eth16/1 100000 15 9126
+Ethernet122 131,132 Eth16/2 100000 15 9126
+Ethernet124 133,134 Eth16/3 100000 15 9126
+Ethernet126 135,136 Eth16/4 100000 15 9126
+Ethernet128 121,122 Eth17/1 100000 16 9126
+Ethernet130 123,124 Eth17/2 100000 16 9126
+Ethernet132 125,126 Eth17/3 100000 16 9126
+Ethernet134 127,128 Eth17/4 100000 16 9126
+Ethernet136 113,114 Eth18/1 100000 17 9126
+Ethernet138 115,116 Eth18/2 100000 17 9126
+Ethernet140 117,118 Eth18/3 100000 17 9126
+Ethernet142 119,120 Eth18/4 100000 17 9126
+Ethernet144 97,98 Eth19/1 100000 18 9126
+Ethernet146 99,100 Eth19/2 100000 18 9126
+Ethernet148 101,102 Eth19/3 100000 18 9126
+Ethernet150 103,104 Eth19/4 100000 18 9126
+Ethernet152 105,106 Eth20/1 100000 19 9126
+Ethernet154 107,108 Eth20/2 100000 19 9126
+Ethernet156 109,110 Eth20/3 100000 19 9126
+Ethernet158 111,112 Eth20/4 100000 19 9126
+Ethernet160 81,82 Eth21/1 100000 20 9126
+Ethernet162 83,84 Eth21/2 100000 20 9126
+Ethernet164 85,86 Eth21/3 100000 20 9126
+Ethernet166 87,88 Eth21/4 100000 20 9126
+Ethernet168 89,90 Eth22/1 100000 21 9126
+Ethernet170 91,92 Eth22/2 100000 21 9126
+Ethernet172 93,94 Eth22/3 100000 21 9126
+Ethernet174 95,96 Eth22/4 100000 21 9126
+Ethernet176 65,66 Eth23/1 100000 22 9126
+Ethernet178 67,68 Eth23/2 100000 22 9126
+Ethernet180 69,70 Eth23/3 100000 22 9126
+Ethernet182 71,72 Eth23/4 100000 22 9126
+Ethernet184 73,74 Eth24/1 100000 23 9126
+Ethernet186 75,76 Eth24/2 100000 23 9126
+Ethernet188 77,78 Eth24/3 100000 23 9126
+Ethernet190 79,80 Eth24/4 100000 23 9126
+Ethernet192 49,50 Eth25/1 100000 24 9126
+Ethernet194 51,52 Eth25/2 100000 24 9126
+Ethernet196 53,54 Eth25/3 100000 24 9126
+Ethernet198 55,56 Eth25/4 100000 24 9126
+Ethernet200 57,58 Eth26/1 100000 25 9126
+Ethernet202 59,60 Eth26/2 100000 25 9126
+Ethernet204 61,62 Eth26/3 100000 25 9126
+Ethernet206 63,64 Eth26/4 100000 25 9126
+Ethernet208 33,34 Eth27/1 100000 26 9126
+Ethernet210 35,36 Eth27/2 100000 26 9126
+Ethernet212 37,38 Eth27/3 100000 26 9126
+Ethernet214 39,40 Eth27/4 100000 26 9126
+Ethernet216 41,42 Eth28/1 100000 27 9126
+Ethernet218 43,44 Eth28/2 100000 27 9126
+Ethernet220 45,46 Eth28/3 100000 27 9126
+Ethernet222 47,48 Eth28/4 100000 27 9126
+Ethernet224 17,18 Eth29/1 100000 28 9126
+Ethernet226 19,20 Eth29/2 100000 28 9126
+Ethernet228 21,22 Eth29/3 100000 28 9126
+Ethernet230 23,24 Eth29/4 100000 28 9126
+Ethernet232 25,26 Eth30/1 100000 29 9126
+Ethernet234 27,28 Eth30/2 100000 29 9126
+Ethernet236 29,30 Eth30/3 100000 29 9126
+Ethernet238 31,32 Eth30/4 100000 29 9126
+Ethernet240 1,2 Eth31/1 100000 30 9126
+Ethernet242 3,4 Eth31/2 100000 30 9126
+Ethernet244 5,6 Eth31/3 100000 30 9126
+Ethernet246 7,8 Eth31/4 100000 30 9126
+Ethernet248 9,10 Eth32/1 100000 31 9126
+Ethernet250 11,12 Eth32/2 100000 31 9126
+Ethernet252 13,14 Eth32/3 100000 31 9126
+Ethernet254 15,16 Eth32/4 100000 31 9126
+Ethernet256 257 Aux1 10000 32 9126
+Ethernet257 258 Aux2 10000 33 9126
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/buffers.json.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/buffers.json.j2
index 9529fbf52fb5..ada7dca895ce 100644
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/buffers.json.j2
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/buffers.json.j2
@@ -1,6 +1,5 @@
{# Default values which will be used if no actual configura available #}
-{% set default_cable = '300m' %}
-{% set default_ports_num = 128 -%}
+{% set default_cable = '40m' %}
{# Port configuration to cable length look-up table #}
{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #}
@@ -12,44 +11,53 @@
}
%}
-{%- 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 -%}
+{%- 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 -%}
- {%- 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 -%}
+ {%- 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 %}
+ {%- else %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- 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*2)) %}{% endif %}
- {% endfor %}
-{% endif -%}
-
{% set port_names_list = [] %}
{% for port in PORT %}
{%- if port_names_list.append(port) %}{% endif %}
@@ -57,6 +65,15 @@
{% 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": "47218432",
@@ -64,7 +81,7 @@
"mode": "dynamic",
"xoff": "17708800"
},
- "egress_lossy_pool": {
+ "lossy_pool": {
"size": "18874368",
"type": "egress",
"mode": "dynamic",
@@ -74,46 +91,46 @@
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
- "xoff":"1433600",
+ "xoff":"38816",
"size":"1518",
- "dynamic_th":"-4",
- "xon_offset":"6272"
+ "dynamic_th":"3",
+ "xon_offset":"13440"
},
- "ingress_lossy_profile": {
+ "egress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
- "egress_lossless_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
"egress_lossy_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"1518",
"dynamic_th":"3"
}
},
"BUFFER_PG": {
- "{{ port_names }}|0-3": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
- "{{ port_names }}|4-5": {
+ "{{ port_names }}|3-4": {
"profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
},
- "{{ port_names }}|6-7": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}
},
"BUFFER_QUEUE": {
- "{{ port_names }}|4-5": {
- "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
},
- "{{ port_names }}|0-3": {
+ "{{ port_names }}|0-2": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
},
- "{{ port_names }}|6-7": {
+ "{{ port_names }}|5-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}
}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/buffers_defaults_def_lossy.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/buffers_defaults_def_lossy.j2
new file mode 100644
index 000000000000..fa2b49e6340a
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/buffers_defaults_def_lossy.j2
@@ -0,0 +1,38 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+{
+ "BUFFER_POOL": {
+ "lossy_pool": {
+ "size": "56985600",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/buffers_defaults_t1.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/buffers_defaults_t1.j2
new file mode 100644
index 000000000000..ada7dca895ce
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/buffers_defaults_t1.j2
@@ -0,0 +1,137 @@
+{# Default values which will be used if no actual configura available #}
+{% set default_cable = '40m' %}
+
+{# 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 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 %}
+ {%- 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 %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- endif %}
+{%- endmacro %}
+
+{%- if DEVICE_METADATA is defined %}
+{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
+{%- 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": "47218432",
+ "type": "ingress",
+ "mode": "dynamic",
+ "xoff": "17708800"
+ },
+ "lossy_pool": {
+ "size": "18874368",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "xoff":"38816",
+ "size":"1518",
+ "dynamic_th":"3",
+ "xon_offset":"13440"
+ },
+ "egress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ },
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ },
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/config_128x100G_Delta-et-c032if.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/config_128x100G_Delta-et-c032if.yaml
index ad50fd04c2a0..61e01852e18d 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/config_128x100G_Delta-et-c032if.yaml
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/config_128x100G_Delta-et-c032if.yaml
@@ -10,6 +10,8 @@ nodes:
multi_interface: "yes"
buffer_management_mode: "api_driven"
max_lossless_tc: "2"
+ ilpm_enable: "1"
+ forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E"
txring:
- txring_id: "0"
desc_count: "1024"
@@ -952,20 +954,6 @@ nodes:
speed: "100G"
sysport: "15"
type: "eth"
- - fec: "NONE"
- id: "257"
- lanes: "0:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "257"
- type: "mgmt 0"
- - fec: "NONE"
- id: "258"
- lanes: "1:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "258"
- type: "mgmt 1"
isg:
- id: "0"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/ivm.sai.config.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/ivm.sai.config.yaml
new file mode 100755
index 000000000000..fdc892f31572
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/ivm.sai.config.yaml
@@ -0,0 +1,9 @@
+IFCS_INIT_FILE : "/usr/share/sonic/hwsku/config_128x100G_Delta-et-c032if.yaml"
+IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_B"
+IFCS_INNO_CLI_PORT : "9999"
+IFCS_TARGET : "device"
+INNOVIUM_DIR : "/innovium"
+PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes"
+AVG_IPG_RESERVED_SIZE: "1518"
+AVG_QUEUE_RESERVED_SIZE: "1518"
+IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/ivm.sai.datapath.config.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/ivm.sai.datapath.config.yaml
new file mode 100644
index 000000000000..891b0b3e2834
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/ivm.sai.datapath.config.yaml
@@ -0,0 +1,9 @@
+ISAI_PARAM_P0_0_LS : "4608 4608 4608 4608 2880 2880"
+ISAI_PARAM_P0_1_LS : "2226 1946 1946 1890 1218 1218"
+ISAI_PARAM_P0_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_0_LS : "1536 1536 1536 1536 960 960"
+ISAI_PARAM_P1_0_LL : "3072 3072 3072 3072 1920 1920"
+ISAI_PARAM_P1_1_LS : "1778 1498 1498 1442 938 938"
+ISAI_PARAM_P1_1_LL : "2478 2478 2478 2478 2478 2478"
+ISAI_PARAM_P1_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_1_ALL : "126 126 126 126 126 126"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/pg_profile_lookup.ini b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/pg_profile_lookup.ini
new file mode 100644
index 000000000000..27775dfff78d
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/pg_profile_lookup.ini
@@ -0,0 +1,14 @@
+# PG lossless profiles.
+# speed cable size xon xoff threshold xon_offset
+ 25000 5m 1518 0 15680 3 13440
+ 50000 5m 1518 0 21152 3 13440
+ 100000 5m 1518 0 34336 3 13440
+ 400000 5m 1518 0 117376 3 13440
+ 25000 40m 1518 0 16800 3 13440
+ 50000 40m 1518 0 23392 3 13440
+ 100000 40m 1518 0 38816 3 13440
+ 400000 40m 1518 0 135296 3 13440
+ 25000 300m 1518 0 25120 3 13440
+ 50000 300m 1518 0 40032 3 13440
+ 100000 300m 1518 0 72096 3 13440
+ 400000 300m 1518 0 268416 3 13440
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/port_config.ini b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/port_config.ini
index cd4dbc611ec1..271caf81886d 100644
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/port_config.ini
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/port_config.ini
@@ -1,131 +1,129 @@
-# name lanes speed index mtu
-Ethernet0 249,250 100000 0 9126
-Ethernet2 251,252 100000 0 9126
-Ethernet4 253,254 100000 0 9126
-Ethernet6 255,256 100000 0 9126
-Ethernet8 241,242 100000 1 9126
-Ethernet10 243,244 100000 1 9126
-Ethernet12 245,246 100000 1 9126
-Ethernet14 247,248 100000 1 9126
-Ethernet16 233,234 100000 2 9126
-Ethernet18 235,236 100000 2 9126
-Ethernet20 237,238 100000 2 9126
-Ethernet22 239,240 100000 2 9126
-Ethernet24 225,226 100000 3 9126
-Ethernet26 227,228 100000 3 9126
-Ethernet28 229,230 100000 3 9126
-Ethernet30 231,232 100000 3 9126
-Ethernet32 217,218 100000 4 9126
-Ethernet34 219,220 100000 4 9126
-Ethernet36 221,222 100000 4 9126
-Ethernet38 223,224 100000 4 9126
-Ethernet40 209,210 100000 5 9126
-Ethernet42 211,212 100000 5 9126
-Ethernet44 213,214 100000 5 9126
-Ethernet46 215,216 100000 5 9126
-Ethernet48 201,202 100000 6 9126
-Ethernet50 203,204 100000 6 9126
-Ethernet52 205,206 100000 6 9126
-Ethernet54 207,208 100000 6 9126
-Ethernet56 193,194 100000 7 9126
-Ethernet58 195,196 100000 7 9126
-Ethernet60 197,198 100000 7 9126
-Ethernet62 199,200 100000 7 9126
-Ethernet64 185,186 100000 8 9126
-Ethernet66 187,188 100000 8 9126
-Ethernet68 189,190 100000 8 9126
-Ethernet70 191,192 100000 8 9126
-Ethernet72 177,178 100000 9 9126
-Ethernet74 179,180 100000 9 9126
-Ethernet76 181,182 100000 9 9126
-Ethernet78 183,184 100000 9 9126
-Ethernet80 169,170 100000 10 9126
-Ethernet82 171,172 100000 10 9126
-Ethernet84 173,174 100000 10 9126
-Ethernet86 175,176 100000 10 9126
-Ethernet88 161,162 100000 11 9126
-Ethernet90 163,164 100000 11 9126
-Ethernet92 165,166 100000 11 9126
-Ethernet94 167,168 100000 11 9126
-Ethernet96 153,154 100000 12 9126
-Ethernet98 155,156 100000 12 9126
-Ethernet100 157,158 100000 12 9126
-Ethernet102 159,160 100000 12 9126
-Ethernet104 145,146 100000 13 9126
-Ethernet106 147,148 100000 13 9126
-Ethernet108 149,150 100000 13 9126
-Ethernet110 151,152 100000 13 9126
-Ethernet112 137,138 100000 14 9126
-Ethernet114 139,140 100000 14 9126
-Ethernet116 141,142 100000 14 9126
-Ethernet118 143,144 100000 14 9126
-Ethernet120 129,130 100000 15 9126
-Ethernet122 131,132 100000 15 9126
-Ethernet124 133,134 100000 15 9126
-Ethernet126 135,136 100000 15 9126
-Ethernet128 121,122 100000 16 9126
-Ethernet130 123,124 100000 16 9126
-Ethernet132 125,126 100000 16 9126
-Ethernet134 127,128 100000 16 9126
-Ethernet136 113,114 100000 17 9126
-Ethernet138 115,116 100000 17 9126
-Ethernet140 117,118 100000 17 9126
-Ethernet142 119,120 100000 17 9126
-Ethernet144 97,98 100000 18 9126
-Ethernet146 99,100 100000 18 9126
-Ethernet148 101,102 100000 18 9126
-Ethernet150 103,104 100000 18 9126
-Ethernet152 105,106 100000 19 9126
-Ethernet154 107,108 100000 19 9126
-Ethernet156 109,110 100000 19 9126
-Ethernet158 111,112 100000 19 9126
-Ethernet160 81,82 100000 20 9126
-Ethernet162 83,84 100000 20 9126
-Ethernet164 85,86 100000 20 9126
-Ethernet166 87,88 100000 20 9126
-Ethernet168 89,90 100000 21 9126
-Ethernet170 91,92 100000 21 9126
-Ethernet172 93,94 100000 21 9126
-Ethernet174 95,96 100000 21 9126
-Ethernet176 65,66 100000 22 9126
-Ethernet178 67,68 100000 22 9126
-Ethernet180 69,70 100000 22 9126
-Ethernet182 71,72 100000 22 9126
-Ethernet184 73,74 100000 23 9126
-Ethernet186 75,76 100000 23 9126
-Ethernet188 77,78 100000 23 9126
-Ethernet190 79,80 100000 23 9126
-Ethernet192 49,50 100000 24 9126
-Ethernet194 51,52 100000 24 9126
-Ethernet196 53,54 100000 24 9126
-Ethernet198 55,56 100000 24 9126
-Ethernet200 57,58 100000 25 9126
-Ethernet202 59,60 100000 25 9126
-Ethernet204 61,62 100000 25 9126
-Ethernet206 63,64 100000 25 9126
-Ethernet208 33,34 100000 26 9126
-Ethernet210 35,36 100000 26 9126
-Ethernet212 37,38 100000 26 9126
-Ethernet214 39,40 100000 26 9126
-Ethernet216 41,42 100000 27 9126
-Ethernet218 43,44 100000 27 9126
-Ethernet220 45,46 100000 27 9126
-Ethernet222 47,48 100000 27 9126
-Ethernet224 17,18 100000 28 9126
-Ethernet226 19,20 100000 28 9126
-Ethernet228 21,22 100000 28 9126
-Ethernet230 23,24 100000 28 9126
-Ethernet232 25,26 100000 29 9126
-Ethernet234 27,28 100000 29 9126
-Ethernet236 29,30 100000 29 9126
-Ethernet238 31,32 100000 29 9126
-Ethernet240 1,2 100000 30 9126
-Ethernet242 3,4 100000 30 9126
-Ethernet244 5,6 100000 30 9126
-Ethernet246 7,8 100000 30 9126
-Ethernet248 9,10 100000 31 9126
-Ethernet250 11,12 100000 31 9126
-Ethernet252 13,14 100000 31 9126
-Ethernet254 15,16 100000 31 9126
-Ethernet256 257 10000 32 9126
-Ethernet257 258 10000 33 9126
+# name lanes alias speed index mtu
+Ethernet0 249,250 Eth1/1 100000 0 9126
+Ethernet2 251,252 Eth1/2 100000 0 9126
+Ethernet4 253,254 Eth1/3 100000 0 9126
+Ethernet6 255,256 Eth1/4 100000 0 9126
+Ethernet8 241,242 Eth2/1 100000 1 9126
+Ethernet10 243,244 Eth2/2 100000 1 9126
+Ethernet12 245,246 Eth2/3 100000 1 9126
+Ethernet14 247,248 Eth2/4 100000 1 9126
+Ethernet16 233,234 Eth3/1 100000 2 9126
+Ethernet18 235,236 Eth3/2 100000 2 9126
+Ethernet20 237,238 Eth3/3 100000 2 9126
+Ethernet22 239,240 Eth3/4 100000 2 9126
+Ethernet24 225,226 Eth4/1 100000 3 9126
+Ethernet26 227,228 Eth4/2 100000 3 9126
+Ethernet28 229,230 Eth4/3 100000 3 9126
+Ethernet30 231,232 Eth4/4 100000 3 9126
+Ethernet32 217,218 Eth5/1 100000 4 9126
+Ethernet34 219,220 Eth5/2 100000 4 9126
+Ethernet36 221,222 Eth5/3 100000 4 9126
+Ethernet38 223,224 Eth5/4 100000 4 9126
+Ethernet40 209,210 Eth6/1 100000 5 9126
+Ethernet42 211,212 Eth6/2 100000 5 9126
+Ethernet44 213,214 Eth6/3 100000 5 9126
+Ethernet46 215,216 Eth6/4 100000 5 9126
+Ethernet48 201,202 Eth7/1 100000 6 9126
+Ethernet50 203,204 Eth7/2 100000 6 9126
+Ethernet52 205,206 Eth7/3 100000 6 9126
+Ethernet54 207,208 Eth7/4 100000 6 9126
+Ethernet56 193,194 Eth8/1 100000 7 9126
+Ethernet58 195,196 Eth8/2 100000 7 9126
+Ethernet60 197,198 Eth8/3 100000 7 9126
+Ethernet62 199,200 Eth8/4 100000 7 9126
+Ethernet64 185,186 Eth9/1 100000 8 9126
+Ethernet66 187,188 Eth9/2 100000 8 9126
+Ethernet68 189,190 Eth9/3 100000 8 9126
+Ethernet70 191,192 Eth9/4 100000 8 9126
+Ethernet72 177,178 Eth10/1 100000 9 9126
+Ethernet74 179,180 Eth10/2 100000 9 9126
+Ethernet76 181,182 Eth10/3 100000 9 9126
+Ethernet78 183,184 Eth10/4 100000 9 9126
+Ethernet80 169,170 Eth11/1 100000 10 9126
+Ethernet82 171,172 Eth11/2 100000 10 9126
+Ethernet84 173,174 Eth11/3 100000 10 9126
+Ethernet86 175,176 Eth11/4 100000 10 9126
+Ethernet88 161,162 Eth12/1 100000 11 9126
+Ethernet90 163,164 Eth12/2 100000 11 9126
+Ethernet92 165,166 Eth12/3 100000 11 9126
+Ethernet94 167,168 Eth12/4 100000 11 9126
+Ethernet96 153,154 Eth13/1 100000 12 9126
+Ethernet98 155,156 Eth13/2 100000 12 9126
+Ethernet100 157,158 Eth13/3 100000 12 9126
+Ethernet102 159,160 Eth13/4 100000 12 9126
+Ethernet104 145,146 Eth14/1 100000 13 9126
+Ethernet106 147,148 Eth14/2 100000 13 9126
+Ethernet108 149,150 Eth14/3 100000 13 9126
+Ethernet110 151,152 Eth14/4 100000 13 9126
+Ethernet112 137,138 Eth15/1 100000 14 9126
+Ethernet114 139,140 Eth15/2 100000 14 9126
+Ethernet116 141,142 Eth15/3 100000 14 9126
+Ethernet118 143,144 Eth15/4 100000 14 9126
+Ethernet120 129,130 Eth16/1 100000 15 9126
+Ethernet122 131,132 Eth16/2 100000 15 9126
+Ethernet124 133,134 Eth16/3 100000 15 9126
+Ethernet126 135,136 Eth16/4 100000 15 9126
+Ethernet128 121,122 Eth17/1 100000 16 9126
+Ethernet130 123,124 Eth17/2 100000 16 9126
+Ethernet132 125,126 Eth17/3 100000 16 9126
+Ethernet134 127,128 Eth17/4 100000 16 9126
+Ethernet136 113,114 Eth18/1 100000 17 9126
+Ethernet138 115,116 Eth18/2 100000 17 9126
+Ethernet140 117,118 Eth18/3 100000 17 9126
+Ethernet142 119,120 Eth18/4 100000 17 9126
+Ethernet144 97,98 Eth19/1 100000 18 9126
+Ethernet146 99,100 Eth19/2 100000 18 9126
+Ethernet148 101,102 Eth19/3 100000 18 9126
+Ethernet150 103,104 Eth19/4 100000 18 9126
+Ethernet152 105,106 Eth20/1 100000 19 9126
+Ethernet154 107,108 Eth20/2 100000 19 9126
+Ethernet156 109,110 Eth20/3 100000 19 9126
+Ethernet158 111,112 Eth20/4 100000 19 9126
+Ethernet160 81,82 Eth21/1 100000 20 9126
+Ethernet162 83,84 Eth21/2 100000 20 9126
+Ethernet164 85,86 Eth21/3 100000 20 9126
+Ethernet166 87,88 Eth21/4 100000 20 9126
+Ethernet168 89,90 Eth22/1 100000 21 9126
+Ethernet170 91,92 Eth22/2 100000 21 9126
+Ethernet172 93,94 Eth22/3 100000 21 9126
+Ethernet174 95,96 Eth22/4 100000 21 9126
+Ethernet176 65,66 Eth23/1 100000 22 9126
+Ethernet178 67,68 Eth23/2 100000 22 9126
+Ethernet180 69,70 Eth23/3 100000 22 9126
+Ethernet182 71,72 Eth23/4 100000 22 9126
+Ethernet184 73,74 Eth24/1 100000 23 9126
+Ethernet186 75,76 Eth24/2 100000 23 9126
+Ethernet188 77,78 Eth24/3 100000 23 9126
+Ethernet190 79,80 Eth24/4 100000 23 9126
+Ethernet192 49,50 Eth25/1 100000 24 9126
+Ethernet194 51,52 Eth25/2 100000 24 9126
+Ethernet196 53,54 Eth25/3 100000 24 9126
+Ethernet198 55,56 Eth25/4 100000 24 9126
+Ethernet200 57,58 Eth26/1 100000 25 9126
+Ethernet202 59,60 Eth26/2 100000 25 9126
+Ethernet204 61,62 Eth26/3 100000 25 9126
+Ethernet206 63,64 Eth26/4 100000 25 9126
+Ethernet208 33,34 Eth27/1 100000 26 9126
+Ethernet210 35,36 Eth27/2 100000 26 9126
+Ethernet212 37,38 Eth27/3 100000 26 9126
+Ethernet214 39,40 Eth27/4 100000 26 9126
+Ethernet216 41,42 Eth28/1 100000 27 9126
+Ethernet218 43,44 Eth28/2 100000 27 9126
+Ethernet220 45,46 Eth28/3 100000 27 9126
+Ethernet222 47,48 Eth28/4 100000 27 9126
+Ethernet224 17,18 Eth29/1 100000 28 9126
+Ethernet226 19,20 Eth29/2 100000 28 9126
+Ethernet228 21,22 Eth29/3 100000 28 9126
+Ethernet230 23,24 Eth29/4 100000 28 9126
+Ethernet232 25,26 Eth30/1 100000 29 9126
+Ethernet234 27,28 Eth30/2 100000 29 9126
+Ethernet236 29,30 Eth30/3 100000 29 9126
+Ethernet238 31,32 Eth30/4 100000 29 9126
+Ethernet240 1,2 Eth31/1 100000 30 9126
+Ethernet242 3,4 Eth31/2 100000 30 9126
+Ethernet244 5,6 Eth31/3 100000 30 9126
+Ethernet246 7,8 Eth31/4 100000 30 9126
+Ethernet248 9,10 Eth32/1 100000 31 9126
+Ethernet250 11,12 Eth32/2 100000 31 9126
+Ethernet252 13,14 Eth32/3 100000 31 9126
+Ethernet254 15,16 Eth32/4 100000 31 9126
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/qos.json.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/qos.json.j2
index 733bd51dc86f..3938fc1a05c4 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/qos.json.j2
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/qos.json.j2
@@ -1,14 +1,3 @@
-{# Default values which will be used if no actual configura available #}
-
-{% set default_ports_num = 128 -%}
-{# 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*2)) %}{% endif %}
- {% endfor %}
-{% endif -%}
-
{% set port_names_list = [] %}
{% for port in PORT %}
{%- if port_names_list.append(port) %}{% endif %}
@@ -19,24 +8,24 @@
{
"TC_TO_QUEUE_MAP":{
"AZURE":{
- "1":"1",
"0":"0",
- "3":"3",
+ "1":"1",
"2":"2",
- "5":"5",
+ "3":"3",
"4":"4",
- "7":"7",
- "6":"6"
+ "5":"5",
+ "6":"6",
+ "7":"7"
}
},
"TC_TO_PRIORITY_GROUP_MAP": {
"AZURE": {
- "1": "0",
"0": "0",
- "3": "0",
+ "1": "0",
"2": "0",
- "4": "1",
- "5": "2",
+ "3": "1",
+ "4": "2",
+ "5": "0",
"6": "0",
"7": "0"
}
@@ -46,9 +35,9 @@
"0":"0",
"1":"0",
"2":"0",
- "3":"0",
+ "3":"3",
"4":"4",
- "5":"5",
+ "5":"0",
"6":"0",
"7":"0",
"8":"1",
@@ -111,10 +100,15 @@
},
"PORT_QOS_MAP": {
"{{ port_names }}": {
- "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
"tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
- "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
- "pfc_enable": "4,5"
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
}
}
}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/qos_defaults_def_lossy.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/qos_defaults_def_lossy.j2
new file mode 100755
index 000000000000..205242d82910
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/qos_defaults_def_lossy.j2
@@ -0,0 +1,118 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"0",
+ "4":"0",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"0",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]"
+ }
+ },
+ "SCHEDULER": {
+ "scheduler.7": {
+ "type": "STRICT"
+ }
+ },
+ "QUEUE": {
+ "{{ port_names }}|7": {
+ "scheduler": "[SCHEDULER|scheduler.7]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/qos_defaults_t1.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/qos_defaults_t1.j2
new file mode 100755
index 000000000000..3938fc1a05c4
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/qos_defaults_t1.j2
@@ -0,0 +1,114 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"3",
+ "4":"4",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"1",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/sai.profile b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/sai.profile
index 0769b3063a12..aba4fc81fb17 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/sai.profile
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_128x100/sai.profile
@@ -1 +1 @@
-SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/inno.config.yaml
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/buffers.json.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/buffers.json.j2
index 4fca9cbcd156..ada7dca895ce 100644
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/buffers.json.j2
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/buffers.json.j2
@@ -1,6 +1,5 @@
{# Default values which will be used if no actual configura available #}
-{% set default_cable = '300m' %}
-{% set default_ports_num = 32 -%}
+{% set default_cable = '40m' %}
{# Port configuration to cable length look-up table #}
{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #}
@@ -12,44 +11,53 @@
}
%}
-{%- 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 -%}
+{%- 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 -%}
- {%- 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 -%}
+ {%- 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 %}
+ {%- else %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- 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 %}
@@ -57,6 +65,15 @@
{% 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": "47218432",
@@ -64,7 +81,7 @@
"mode": "dynamic",
"xoff": "17708800"
},
- "egress_lossy_pool": {
+ "lossy_pool": {
"size": "18874368",
"type": "egress",
"mode": "dynamic",
@@ -74,46 +91,46 @@
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
- "xoff":"1433600",
+ "xoff":"38816",
"size":"1518",
- "dynamic_th":"-4",
- "xon_offset":"6272"
+ "dynamic_th":"3",
+ "xon_offset":"13440"
},
- "ingress_lossy_profile": {
+ "egress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
- "egress_lossless_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
"egress_lossy_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"1518",
"dynamic_th":"3"
}
},
"BUFFER_PG": {
- "{{ port_names }}|0-3": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
- "{{ port_names }}|4-5": {
+ "{{ port_names }}|3-4": {
"profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
},
- "{{ port_names }}|6-7": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}
},
"BUFFER_QUEUE": {
- "{{ port_names }}|4-5": {
- "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
},
- "{{ port_names }}|0-3": {
+ "{{ port_names }}|0-2": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
},
- "{{ port_names }}|6-7": {
+ "{{ port_names }}|5-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}
}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/buffers_defaults_def_lossy.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/buffers_defaults_def_lossy.j2
new file mode 100644
index 000000000000..fa2b49e6340a
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/buffers_defaults_def_lossy.j2
@@ -0,0 +1,38 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+{
+ "BUFFER_POOL": {
+ "lossy_pool": {
+ "size": "56985600",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/buffers_defaults_t1.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/buffers_defaults_t1.j2
new file mode 100644
index 000000000000..ada7dca895ce
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/buffers_defaults_t1.j2
@@ -0,0 +1,137 @@
+{# Default values which will be used if no actual configura available #}
+{% set default_cable = '40m' %}
+
+{# 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 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 %}
+ {%- 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 %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- endif %}
+{%- endmacro %}
+
+{%- if DEVICE_METADATA is defined %}
+{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
+{%- 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": "47218432",
+ "type": "ingress",
+ "mode": "dynamic",
+ "xoff": "17708800"
+ },
+ "lossy_pool": {
+ "size": "18874368",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "xoff":"38816",
+ "size":"1518",
+ "dynamic_th":"3",
+ "xon_offset":"13440"
+ },
+ "egress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ },
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ },
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/config_32x100G_Delta-et-c032if.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/config_32x100G_Delta-et-c032if.yaml
index 4b4f02da4895..d6319406d116 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/config_32x100G_Delta-et-c032if.yaml
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/config_32x100G_Delta-et-c032if.yaml
@@ -10,6 +10,8 @@ nodes:
multi_interface: "yes"
buffer_management_mode: "api_driven"
max_lossless_tc: "2"
+ ilpm_enable: "1"
+ forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E"
txring:
- txring_id: "0"
desc_count: "1024"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/ivm.sai.config.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/ivm.sai.config.yaml
new file mode 100755
index 000000000000..6c5b9018195a
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/ivm.sai.config.yaml
@@ -0,0 +1,9 @@
+IFCS_INIT_FILE : "/usr/share/sonic/hwsku/config_32x100G_Delta-et-c032if.yaml"
+IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_B"
+IFCS_INNO_CLI_PORT : "9999"
+IFCS_TARGET : "device"
+INNOVIUM_DIR : "/innovium"
+PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes"
+AVG_IPG_RESERVED_SIZE: "1518"
+AVG_QUEUE_RESERVED_SIZE: "1518"
+IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/ivm.sai.datapath.config.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/ivm.sai.datapath.config.yaml
new file mode 100644
index 000000000000..891b0b3e2834
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/ivm.sai.datapath.config.yaml
@@ -0,0 +1,9 @@
+ISAI_PARAM_P0_0_LS : "4608 4608 4608 4608 2880 2880"
+ISAI_PARAM_P0_1_LS : "2226 1946 1946 1890 1218 1218"
+ISAI_PARAM_P0_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_0_LS : "1536 1536 1536 1536 960 960"
+ISAI_PARAM_P1_0_LL : "3072 3072 3072 3072 1920 1920"
+ISAI_PARAM_P1_1_LS : "1778 1498 1498 1442 938 938"
+ISAI_PARAM_P1_1_LL : "2478 2478 2478 2478 2478 2478"
+ISAI_PARAM_P1_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_1_ALL : "126 126 126 126 126 126"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/pg_profile_lookup.ini b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/pg_profile_lookup.ini
new file mode 100644
index 000000000000..27775dfff78d
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/pg_profile_lookup.ini
@@ -0,0 +1,14 @@
+# PG lossless profiles.
+# speed cable size xon xoff threshold xon_offset
+ 25000 5m 1518 0 15680 3 13440
+ 50000 5m 1518 0 21152 3 13440
+ 100000 5m 1518 0 34336 3 13440
+ 400000 5m 1518 0 117376 3 13440
+ 25000 40m 1518 0 16800 3 13440
+ 50000 40m 1518 0 23392 3 13440
+ 100000 40m 1518 0 38816 3 13440
+ 400000 40m 1518 0 135296 3 13440
+ 25000 300m 1518 0 25120 3 13440
+ 50000 300m 1518 0 40032 3 13440
+ 100000 300m 1518 0 72096 3 13440
+ 400000 300m 1518 0 268416 3 13440
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/port_config.ini b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/port_config.ini
index 45fbfd346c9f..f905242d9a0c 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/port_config.ini
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/port_config.ini
@@ -1,33 +1,33 @@
-# name lanes speed index mtu fec
-Ethernet0 249,250,251,252 100000 0 9126 rs
-Ethernet8 241,242,243,244 100000 1 9126 rs
-Ethernet16 233,234,235,236 100000 2 9126 rs
-Ethernet24 225,226,227,228 100000 3 9126 rs
-Ethernet32 217,218,219,220 100000 4 9126 rs
-Ethernet40 209,210,211,212 100000 5 9126 rs
-Ethernet48 201,202,203,204 100000 6 9126 rs
-Ethernet56 193,194,195,196 100000 7 9126 rs
-Ethernet64 185,186,187,188 100000 8 9126 rs
-Ethernet72 177,178,179,180 100000 9 9126 rs
-Ethernet80 169,170,171,172 100000 10 9126 rs
-Ethernet88 161,162,163,164 100000 11 9126 rs
-Ethernet96 153,154,155,156 100000 12 9126 rs
-Ethernet104 145,146,147,148 100000 13 9126 rs
-Ethernet112 137,138,139,140 100000 14 9126 rs
-Ethernet120 129,130,131,132 100000 15 9126 rs
-Ethernet128 121,122,123,124 100000 16 9126 rs
-Ethernet136 113,114,115,116 100000 17 9126 rs
-Ethernet144 97,98,99,100 100000 18 9126 rs
-Ethernet152 105,106,107,108 100000 19 9126 rs
-Ethernet160 81,82,83,84 100000 20 9126 rs
-Ethernet168 89,90,91,92 100000 21 9126 rs
-Ethernet176 65,66,67,68 100000 22 9126 rs
-Ethernet184 73,74,75,76 100000 23 9126 rs
-Ethernet192 49,50,51,52 100000 24 9126 rs
-Ethernet200 57,58,59,60 100000 25 9126 rs
-Ethernet208 33,34,35,36 100000 26 9126 rs
-Ethernet216 41,42,43,44 100000 27 9126 rs
-Ethernet224 17,18,19,20 100000 28 9126 rs
-Ethernet232 25,26,27,28 100000 29 9126 rs
-Ethernet240 1,2,3,4 100000 30 9126 rs
-Ethernet248 9,10,11,12 100000 31 9126 rs
+# name lanes alias speed index mtu fec
+Ethernet0 249,250,251,252 Eth1 100000 0 9126 rs
+Ethernet8 241,242,243,244 Eth2 100000 1 9126 rs
+Ethernet16 233,234,235,236 Eth3 100000 2 9126 rs
+Ethernet24 225,226,227,228 Eth4 100000 3 9126 rs
+Ethernet32 217,218,219,220 Eth5 100000 4 9126 rs
+Ethernet40 209,210,211,212 Eth6 100000 5 9126 rs
+Ethernet48 201,202,203,204 Eth7 100000 6 9126 rs
+Ethernet56 193,194,195,196 Eth8 100000 7 9126 rs
+Ethernet64 185,186,187,188 Eth9 100000 8 9126 rs
+Ethernet72 177,178,179,180 Eth10 100000 9 9126 rs
+Ethernet80 169,170,171,172 Eth11 100000 10 9126 rs
+Ethernet88 161,162,163,164 Eth12 100000 11 9126 rs
+Ethernet96 153,154,155,156 Eth13 100000 12 9126 rs
+Ethernet104 145,146,147,148 Eth14 100000 13 9126 rs
+Ethernet112 137,138,139,140 Eth15 100000 14 9126 rs
+Ethernet120 129,130,131,132 Eth16 100000 15 9126 rs
+Ethernet128 121,122,123,124 Eth17 100000 16 9126 rs
+Ethernet136 113,114,115,116 Eth18 100000 17 9126 rs
+Ethernet144 97,98,99,100 Eth19 100000 18 9126 rs
+Ethernet152 105,106,107,108 Eth20 100000 19 9126 rs
+Ethernet160 81,82,83,84 Eth21 100000 20 9126 rs
+Ethernet168 89,90,91,92 Eth22 100000 21 9126 rs
+Ethernet176 65,66,67,68 Eth23 100000 22 9126 rs
+Ethernet184 73,74,75,76 Eth24 100000 23 9126 rs
+Ethernet192 49,50,51,52 Eth25 100000 24 9126 rs
+Ethernet200 57,58,59,60 Eth26 100000 25 9126 rs
+Ethernet208 33,34,35,36 Eth27 100000 26 9126 rs
+Ethernet216 41,42,43,44 Eth28 100000 27 9126 rs
+Ethernet224 17,18,19,20 Eth29 100000 28 9126 rs
+Ethernet232 25,26,27,28 Eth30 100000 29 9126 rs
+Ethernet240 1,2,3,4 Eth31 100000 30 9126 rs
+Ethernet248 9,10,11,12 Eth32 100000 31 9126 rs
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/qos.json.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/qos.json.j2
index 6c734d46ff2f..3938fc1a05c4 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/qos.json.j2
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/qos.json.j2
@@ -1,14 +1,3 @@
-{# Default values which will be used if no actual configura available #}
-
-{% set default_ports_num = 32 -%}
-{# 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 %}
@@ -19,24 +8,24 @@
{
"TC_TO_QUEUE_MAP":{
"AZURE":{
- "1":"1",
"0":"0",
- "3":"3",
+ "1":"1",
"2":"2",
- "5":"5",
+ "3":"3",
"4":"4",
- "7":"7",
- "6":"6"
+ "5":"5",
+ "6":"6",
+ "7":"7"
}
},
"TC_TO_PRIORITY_GROUP_MAP": {
"AZURE": {
- "1": "0",
"0": "0",
- "3": "0",
+ "1": "0",
"2": "0",
- "4": "1",
- "5": "2",
+ "3": "1",
+ "4": "2",
+ "5": "0",
"6": "0",
"7": "0"
}
@@ -46,9 +35,9 @@
"0":"0",
"1":"0",
"2":"0",
- "3":"0",
+ "3":"3",
"4":"4",
- "5":"5",
+ "5":"0",
"6":"0",
"7":"0",
"8":"1",
@@ -114,7 +103,12 @@
"tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
"tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
"dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
- "pfc_enable": "4,5"
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
}
}
}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/qos_defaults_def_lossy.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/qos_defaults_def_lossy.j2
new file mode 100755
index 000000000000..205242d82910
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/qos_defaults_def_lossy.j2
@@ -0,0 +1,118 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"0",
+ "4":"0",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"0",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]"
+ }
+ },
+ "SCHEDULER": {
+ "scheduler.7": {
+ "type": "STRICT"
+ }
+ },
+ "QUEUE": {
+ "{{ port_names }}|7": {
+ "scheduler": "[SCHEDULER|scheduler.7]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/qos_defaults_t1.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/qos_defaults_t1.j2
new file mode 100755
index 000000000000..3938fc1a05c4
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/qos_defaults_t1.j2
@@ -0,0 +1,114 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"3",
+ "4":"4",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"1",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/sai.profile b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/sai.profile
index 0769b3063a12..aba4fc81fb17 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/sai.profile
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x100/sai.profile
@@ -1 +1 @@
-SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/inno.config.yaml
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/alt_cfg/config_32x200G_Delta-et-c032if_aux.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/alt_cfg/config_32x200G_Delta-et-c032if_aux.yaml
new file mode 100755
index 000000000000..0a76811110e8
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/alt_cfg/config_32x200G_Delta-et-c032if_aux.yaml
@@ -0,0 +1,429 @@
+ifcs:
+ options:
+ log_level: "info"
+nodes:
+- node_id: "0"
+ options:
+ sku: "configs/sku/innovium.77700_B"
+ netdev:
+ - auto_create: "no"
+ multi_interface: "yes"
+ buffer_management_mode: "api_driven"
+ max_lossless_tc: "2"
+ txring:
+ - txring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ rxring:
+ - rxring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44"
+ - rxring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45"
+ - rxring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46"
+ - rxring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47"
+ sys_clk: "1720"
+ ifc_clk: "1200"
+ mac_clk: "1340"
+
+ devports:
+ - id: "0"
+ sysport: "1000"
+ type: "cpu"
+ - fec: "KPFEC"
+ id: "249"
+ lanes: "0:4"
+ serdes_group: "31"
+ speed: "200G"
+ sysport: "249"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "241"
+ lanes: "0:4"
+ serdes_group: "30"
+ speed: "200G"
+ sysport: "241"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "233"
+ lanes: "0:4"
+ serdes_group: "29"
+ speed: "200G"
+ sysport: "233"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "225"
+ lanes: "0:4"
+ serdes_group: "28"
+ speed: "200G"
+ sysport: "225"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "217"
+ lanes: "0:4"
+ serdes_group: "27"
+ speed: "200G"
+ sysport: "217"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "209"
+ lanes: "0:4"
+ serdes_group: "26"
+ speed: "200G"
+ sysport: "209"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "201"
+ lanes: "0:4"
+ serdes_group: "25"
+ speed: "200G"
+ sysport: "201"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "193"
+ lanes: "0:4"
+ serdes_group: "24"
+ speed: "200G"
+ sysport: "193"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "185"
+ lanes: "0:4"
+ serdes_group: "23"
+ speed: "200G"
+ sysport: "185"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "177"
+ lanes: "0:4"
+ serdes_group: "22"
+ speed: "200G"
+ sysport: "177"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "169"
+ lanes: "0:4"
+ serdes_group: "21"
+ speed: "200G"
+ sysport: "169"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "161"
+ lanes: "0:4"
+ serdes_group: "20"
+ speed: "200G"
+ sysport: "161"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "153"
+ lanes: "0:4"
+ serdes_group: "19"
+ speed: "200G"
+ sysport: "153"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "145"
+ lanes: "0:4"
+ serdes_group: "18"
+ speed: "200G"
+ sysport: "145"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "137"
+ lanes: "0:4"
+ serdes_group: "17"
+ speed: "200G"
+ sysport: "137"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "129"
+ lanes: "0:4"
+ serdes_group: "16"
+ speed: "200G"
+ sysport: "129"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "121"
+ lanes: "0:4"
+ serdes_group: "15"
+ speed: "200G"
+ sysport: "121"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "113"
+ lanes: "0:4"
+ serdes_group: "14"
+ speed: "200G"
+ sysport: "113"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "97"
+ lanes: "0:4"
+ serdes_group: "12"
+ speed: "200G"
+ sysport: "97"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "105"
+ lanes: "0:4"
+ serdes_group: "13"
+ speed: "200G"
+ sysport: "105"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "81"
+ lanes: "0:4"
+ serdes_group: "10"
+ speed: "200G"
+ sysport: "81"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "89"
+ lanes: "0:4"
+ serdes_group: "11"
+ speed: "200G"
+ sysport: "89"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "65"
+ lanes: "0:4"
+ serdes_group: "8"
+ speed: "200G"
+ sysport: "65"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "73"
+ lanes: "0:4"
+ serdes_group: "9"
+ speed: "200G"
+ sysport: "73"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "49"
+ lanes: "0:4"
+ serdes_group: "6"
+ speed: "200G"
+ sysport: "49"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "57"
+ lanes: "0:4"
+ serdes_group: "7"
+ speed: "200G"
+ sysport: "57"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "33"
+ lanes: "0:4"
+ serdes_group: "4"
+ speed: "200G"
+ sysport: "33"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "41"
+ lanes: "0:4"
+ serdes_group: "5"
+ speed: "200G"
+ sysport: "41"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "17"
+ lanes: "0:4"
+ serdes_group: "2"
+ speed: "200G"
+ sysport: "17"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "25"
+ lanes: "0:4"
+ serdes_group: "3"
+ speed: "200G"
+ sysport: "25"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "1"
+ lanes: "0:4"
+ serdes_group: "0"
+ speed: "200G"
+ sysport: "1"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "9"
+ lanes: "0:4"
+ serdes_group: "1"
+ speed: "200G"
+ sysport: "9"
+ type: "eth"
+ - fec: "NONE"
+ id: "257"
+ lanes: "0:1"
+ serdes_group: "32"
+ speed: "10G"
+ sysport: "257"
+ type: "mgmt 0"
+ - fec: "NONE"
+ id: "258"
+ lanes: "1:1"
+ serdes_group: "32"
+ speed: "10G"
+ sysport: "258"
+ type: "mgmt 1"
+ isg:
+ - id: "0"
+ tx_polarity: "01010101"
+ rx_polarity: "01100000"
+ lane_swap: "23641075"
+ - id: "1"
+ tx_polarity: "10110000"
+ rx_polarity: "11111111"
+ lane_swap: "64317520"
+ - id: "2"
+ tx_polarity: "00000000"
+ rx_polarity: "00000011"
+ lane_swap: "63147520"
+ - id: "3"
+ tx_polarity: "01101000"
+ rx_polarity: "00001110"
+ lane_swap: "31572046"
+ - id: "4"
+ tx_polarity: "00111000"
+ rx_polarity: "00001000"
+ lane_swap: "46105732"
+ - id: "5"
+ tx_polarity: "10111111"
+ rx_polarity: "11101000"
+ lane_swap: "27153604"
+ - id: "6"
+ tx_polarity: "01101110"
+ rx_polarity: "00001101"
+ lane_swap: "46503721"
+ - id: "7"
+ tx_polarity: "01000100"
+ rx_polarity: "10000101"
+ lane_swap: "03671245"
+ - id: "8"
+ tx_polarity: "01110101"
+ rx_polarity: "00010000"
+ lane_swap: "12640375"
+ - id: "9"
+ tx_polarity: "01011100"
+ rx_polarity: "11001111"
+ lane_swap: "02561347"
+ - id: "10"
+ tx_polarity: "01110110"
+ rx_polarity: "11000000"
+ lane_swap: "12740365"
+ - id: "11"
+ tx_polarity: "00111000"
+ rx_polarity: "00010111"
+ lane_swap: "01572436"
+ - id: "12"
+ tx_polarity: "00001111"
+ rx_polarity: "10111001"
+ lane_swap: "54320176"
+ - id: "13"
+ tx_polarity: "10011101"
+ rx_polarity: "00111011"
+ lane_swap: "26153704"
+ - id: "14"
+ tx_polarity: "00110000"
+ rx_polarity: "11010000"
+ lane_swap: "37452601"
+ - id: "15"
+ tx_polarity: "11100010"
+ rx_polarity: "01110011"
+ lane_swap: "51370462"
+ - id: "16"
+ tx_polarity: "10111010"
+ rx_polarity: "11010011"
+ lane_swap: "36152704"
+ - id: "17"
+ tx_polarity: "01011101"
+ rx_polarity: "00110001"
+ lane_swap: "45621073"
+ - id: "18"
+ tx_polarity: "11011111"
+ rx_polarity: "11001011"
+ lane_swap: "26143705"
+ - id: "19"
+ tx_polarity: "00100110"
+ rx_polarity: "00001001"
+ lane_swap: "42730165"
+ - id: "20"
+ tx_polarity: "10011011"
+ rx_polarity: "01101101"
+ lane_swap: "54217603"
+ - id: "21"
+ tx_polarity: "00101110"
+ rx_polarity: "10111111"
+ lane_swap: "26031745"
+ - id: "22"
+ tx_polarity: "01001110"
+ rx_polarity: "00111001"
+ lane_swap: "36024715"
+ - id: "23"
+ tx_polarity: "10101101"
+ rx_polarity: "01010011"
+ lane_swap: "45621370"
+ - id: "24"
+ tx_polarity: "11001110"
+ rx_polarity: "00011111"
+ lane_swap: "65234701"
+ - id: "25"
+ tx_polarity: "01110001"
+ rx_polarity: "01010111"
+ lane_swap: "37601452"
+ - id: "26"
+ tx_polarity: "01000100"
+ rx_polarity: "00001111"
+ lane_swap: "65034721"
+ - id: "27"
+ tx_polarity: "10111101"
+ rx_polarity: "11000101"
+ lane_swap: "34501672"
+ - id: "28"
+ tx_polarity: "01111000"
+ rx_polarity: "01110110"
+ lane_swap: "43061275"
+ - id: "29"
+ tx_polarity: "11110111"
+ rx_polarity: "11100111"
+ lane_swap: "57304621"
+ - id: "30"
+ tx_polarity: "10000100"
+ rx_polarity: "00101111"
+ lane_swap: "47125603"
+ - id: "31"
+ tx_polarity: "11111111"
+ rx_polarity: "11100010"
+ lane_swap: "13460275"
+ - id: "32"
+ tx_polarity: "00000000"
+ rx_polarity: "00000000"
+ lane_swap: "01234567"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/alt_cfg/port_config_aux.ini b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/alt_cfg/port_config_aux.ini
new file mode 100755
index 000000000000..ab7873fb07d0
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/alt_cfg/port_config_aux.ini
@@ -0,0 +1,35 @@
+# name lanes alias speed index mtu fec
+Ethernet0 249,250,251,252 Eth1 200000 0 9126 rs
+Ethernet8 241,242,243,244 Eth2 200000 1 9126 rs
+Ethernet16 233,234,235,236 Eth3 200000 2 9126 rs
+Ethernet24 225,226,227,228 Eth4 200000 3 9126 rs
+Ethernet32 217,218,219,220 Eth5 200000 4 9126 rs
+Ethernet40 209,210,211,212 Eth6 200000 5 9126 rs
+Ethernet48 201,202,203,204 Eth7 200000 6 9126 rs
+Ethernet56 193,194,195,196 Eth8 200000 7 9126 rs
+Ethernet64 185,186,187,188 Eth9 200000 8 9126 rs
+Ethernet72 177,178,179,180 Eth10 200000 9 9126 rs
+Ethernet80 169,170,171,172 Eth11 200000 10 9126 rs
+Ethernet88 161,162,163,164 Eth12 200000 11 9126 rs
+Ethernet96 153,154,155,156 Eth13 200000 12 9126 rs
+Ethernet104 145,146,147,148 Eth14 200000 13 9126 rs
+Ethernet112 137,138,139,140 Eth15 200000 14 9126 rs
+Ethernet120 129,130,131,132 Eth16 200000 15 9126 rs
+Ethernet128 121,122,123,124 Eth17 200000 16 9126 rs
+Ethernet136 113,114,115,116 Eth18 200000 17 9126 rs
+Ethernet144 97,98,99,100 Eth19 200000 18 9126 rs
+Ethernet152 105,106,107,108 Eth20 200000 19 9126 rs
+Ethernet160 81,82,83,84 Eth21 200000 20 9126 rs
+Ethernet168 89,90,91,92 Eth22 200000 21 9126 rs
+Ethernet176 65,66,67,68 Eth23 200000 22 9126 rs
+Ethernet184 73,74,75,76 Eth24 200000 23 9126 rs
+Ethernet192 49,50,51,52 Eth25 200000 24 9126 rs
+Ethernet200 57,58,59,60 Eth26 200000 25 9126 rs
+Ethernet208 33,34,35,36 Eth27 200000 26 9126 rs
+Ethernet216 41,42,43,44 Eth28 200000 27 9126 rs
+Ethernet224 17,18,19,20 Eth29 200000 28 9126 rs
+Ethernet232 25,26,27,28 Eth30 200000 29 9126 rs
+Ethernet240 1,2,3,4 Eth31 200000 30 9126 rs
+Ethernet248 9,10,11,12 Eth32 200000 31 9126 rs
+Ethernet256 257 Aux1 10000 32 9126 none
+Ethernet257 258 Aux2 10000 33 9126 none
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/buffers.json.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/buffers.json.j2
index 4fca9cbcd156..ada7dca895ce 100644
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/buffers.json.j2
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/buffers.json.j2
@@ -1,6 +1,5 @@
{# Default values which will be used if no actual configura available #}
-{% set default_cable = '300m' %}
-{% set default_ports_num = 32 -%}
+{% set default_cable = '40m' %}
{# Port configuration to cable length look-up table #}
{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #}
@@ -12,44 +11,53 @@
}
%}
-{%- 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 -%}
+{%- 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 -%}
- {%- 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 -%}
+ {%- 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 %}
+ {%- else %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- 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 %}
@@ -57,6 +65,15 @@
{% 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": "47218432",
@@ -64,7 +81,7 @@
"mode": "dynamic",
"xoff": "17708800"
},
- "egress_lossy_pool": {
+ "lossy_pool": {
"size": "18874368",
"type": "egress",
"mode": "dynamic",
@@ -74,46 +91,46 @@
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
- "xoff":"1433600",
+ "xoff":"38816",
"size":"1518",
- "dynamic_th":"-4",
- "xon_offset":"6272"
+ "dynamic_th":"3",
+ "xon_offset":"13440"
},
- "ingress_lossy_profile": {
+ "egress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
- "egress_lossless_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
"egress_lossy_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"1518",
"dynamic_th":"3"
}
},
"BUFFER_PG": {
- "{{ port_names }}|0-3": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
- "{{ port_names }}|4-5": {
+ "{{ port_names }}|3-4": {
"profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
},
- "{{ port_names }}|6-7": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}
},
"BUFFER_QUEUE": {
- "{{ port_names }}|4-5": {
- "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
},
- "{{ port_names }}|0-3": {
+ "{{ port_names }}|0-2": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
},
- "{{ port_names }}|6-7": {
+ "{{ port_names }}|5-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}
}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/buffers_defaults_def_lossy.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/buffers_defaults_def_lossy.j2
new file mode 100644
index 000000000000..fa2b49e6340a
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/buffers_defaults_def_lossy.j2
@@ -0,0 +1,38 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+{
+ "BUFFER_POOL": {
+ "lossy_pool": {
+ "size": "56985600",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/buffers_defaults_t1.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/buffers_defaults_t1.j2
new file mode 100644
index 000000000000..ada7dca895ce
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/buffers_defaults_t1.j2
@@ -0,0 +1,137 @@
+{# Default values which will be used if no actual configura available #}
+{% set default_cable = '40m' %}
+
+{# 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 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 %}
+ {%- 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 %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- endif %}
+{%- endmacro %}
+
+{%- if DEVICE_METADATA is defined %}
+{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
+{%- 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": "47218432",
+ "type": "ingress",
+ "mode": "dynamic",
+ "xoff": "17708800"
+ },
+ "lossy_pool": {
+ "size": "18874368",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "xoff":"38816",
+ "size":"1518",
+ "dynamic_th":"3",
+ "xon_offset":"13440"
+ },
+ "egress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ },
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ },
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/config_32x200G_Delta-et-c032if.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/config_32x200G_Delta-et-c032if.yaml
index 0a76811110e8..44920a242b89 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/config_32x200G_Delta-et-c032if.yaml
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/config_32x200G_Delta-et-c032if.yaml
@@ -10,6 +10,8 @@ nodes:
multi_interface: "yes"
buffer_management_mode: "api_driven"
max_lossless_tc: "2"
+ ilpm_enable: "1"
+ forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E"
txring:
- txring_id: "0"
desc_count: "1024"
@@ -280,20 +282,6 @@ nodes:
speed: "200G"
sysport: "9"
type: "eth"
- - fec: "NONE"
- id: "257"
- lanes: "0:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "257"
- type: "mgmt 0"
- - fec: "NONE"
- id: "258"
- lanes: "1:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "258"
- type: "mgmt 1"
isg:
- id: "0"
tx_polarity: "01010101"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/ivm.sai.config.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/ivm.sai.config.yaml
new file mode 100755
index 000000000000..e5dd8271b2ac
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/ivm.sai.config.yaml
@@ -0,0 +1,9 @@
+IFCS_INIT_FILE : "/usr/share/sonic/hwsku/config_32x200G_Delta-et-c032if.yaml"
+IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_B"
+IFCS_INNO_CLI_PORT : "9999"
+IFCS_TARGET : "device"
+INNOVIUM_DIR : "/innovium"
+PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes"
+AVG_IPG_RESERVED_SIZE: "1518"
+AVG_QUEUE_RESERVED_SIZE: "1518"
+IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/ivm.sai.datapath.config.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/ivm.sai.datapath.config.yaml
new file mode 100644
index 000000000000..891b0b3e2834
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/ivm.sai.datapath.config.yaml
@@ -0,0 +1,9 @@
+ISAI_PARAM_P0_0_LS : "4608 4608 4608 4608 2880 2880"
+ISAI_PARAM_P0_1_LS : "2226 1946 1946 1890 1218 1218"
+ISAI_PARAM_P0_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_0_LS : "1536 1536 1536 1536 960 960"
+ISAI_PARAM_P1_0_LL : "3072 3072 3072 3072 1920 1920"
+ISAI_PARAM_P1_1_LS : "1778 1498 1498 1442 938 938"
+ISAI_PARAM_P1_1_LL : "2478 2478 2478 2478 2478 2478"
+ISAI_PARAM_P1_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_1_ALL : "126 126 126 126 126 126"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/pg_profile_lookup.ini b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/pg_profile_lookup.ini
new file mode 100644
index 000000000000..27775dfff78d
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/pg_profile_lookup.ini
@@ -0,0 +1,14 @@
+# PG lossless profiles.
+# speed cable size xon xoff threshold xon_offset
+ 25000 5m 1518 0 15680 3 13440
+ 50000 5m 1518 0 21152 3 13440
+ 100000 5m 1518 0 34336 3 13440
+ 400000 5m 1518 0 117376 3 13440
+ 25000 40m 1518 0 16800 3 13440
+ 50000 40m 1518 0 23392 3 13440
+ 100000 40m 1518 0 38816 3 13440
+ 400000 40m 1518 0 135296 3 13440
+ 25000 300m 1518 0 25120 3 13440
+ 50000 300m 1518 0 40032 3 13440
+ 100000 300m 1518 0 72096 3 13440
+ 400000 300m 1518 0 268416 3 13440
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/port_config.ini b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/port_config.ini
index 48091f5e3674..f5dbb41e45ce 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/port_config.ini
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/port_config.ini
@@ -1,35 +1,33 @@
-# name lanes speed index mtu fec
-Ethernet0 249,250,251,252 200000 0 9126 rs
-Ethernet8 241,242,243,244 200000 1 9126 rs
-Ethernet16 233,234,235,236 200000 2 9126 rs
-Ethernet24 225,226,227,228 200000 3 9126 rs
-Ethernet32 217,218,219,220 200000 4 9126 rs
-Ethernet40 209,210,211,212 200000 5 9126 rs
-Ethernet48 201,202,203,204 200000 6 9126 rs
-Ethernet56 193,194,195,196 200000 7 9126 rs
-Ethernet64 185,186,187,188 200000 8 9126 rs
-Ethernet72 177,178,179,180 200000 9 9126 rs
-Ethernet80 169,170,171,172 200000 10 9126 rs
-Ethernet88 161,162,163,164 200000 11 9126 rs
-Ethernet96 153,154,155,156 200000 12 9126 rs
-Ethernet104 145,146,147,148 200000 13 9126 rs
-Ethernet112 137,138,139,140 200000 14 9126 rs
-Ethernet120 129,130,131,132 200000 15 9126 rs
-Ethernet128 121,122,123,124 200000 16 9126 rs
-Ethernet136 113,114,115,116 200000 17 9126 rs
-Ethernet144 97,98,99,100 200000 18 9126 rs
-Ethernet152 105,106,107,108 200000 19 9126 rs
-Ethernet160 81,82,83,84 200000 20 9126 rs
-Ethernet168 89,90,91,92 200000 21 9126 rs
-Ethernet176 65,66,67,68 200000 22 9126 rs
-Ethernet184 73,74,75,76 200000 23 9126 rs
-Ethernet192 49,50,51,52 200000 24 9126 rs
-Ethernet200 57,58,59,60 200000 25 9126 rs
-Ethernet208 33,34,35,36 200000 26 9126 rs
-Ethernet216 41,42,43,44 200000 27 9126 rs
-Ethernet224 17,18,19,20 200000 28 9126 rs
-Ethernet232 25,26,27,28 200000 29 9126 rs
-Ethernet240 1,2,3,4 200000 30 9126 rs
-Ethernet248 9,10,11,12 200000 31 9126 rs
-Ethernet256 257 10000 32 9126 none
-Ethernet257 258 10000 33 9126 none
+# name lanes alias speed index mtu fec
+Ethernet0 249,250,251,252 Eth1 200000 0 9126 rs
+Ethernet8 241,242,243,244 Eth2 200000 1 9126 rs
+Ethernet16 233,234,235,236 Eth3 200000 2 9126 rs
+Ethernet24 225,226,227,228 Eth4 200000 3 9126 rs
+Ethernet32 217,218,219,220 Eth5 200000 4 9126 rs
+Ethernet40 209,210,211,212 Eth6 200000 5 9126 rs
+Ethernet48 201,202,203,204 Eth7 200000 6 9126 rs
+Ethernet56 193,194,195,196 Eth8 200000 7 9126 rs
+Ethernet64 185,186,187,188 Eth9 200000 8 9126 rs
+Ethernet72 177,178,179,180 Eth10 200000 9 9126 rs
+Ethernet80 169,170,171,172 Eth11 200000 10 9126 rs
+Ethernet88 161,162,163,164 Eth12 200000 11 9126 rs
+Ethernet96 153,154,155,156 Eth13 200000 12 9126 rs
+Ethernet104 145,146,147,148 Eth14 200000 13 9126 rs
+Ethernet112 137,138,139,140 Eth15 200000 14 9126 rs
+Ethernet120 129,130,131,132 Eth16 200000 15 9126 rs
+Ethernet128 121,122,123,124 Eth17 200000 16 9126 rs
+Ethernet136 113,114,115,116 Eth18 200000 17 9126 rs
+Ethernet144 97,98,99,100 Eth19 200000 18 9126 rs
+Ethernet152 105,106,107,108 Eth20 200000 19 9126 rs
+Ethernet160 81,82,83,84 Eth21 200000 20 9126 rs
+Ethernet168 89,90,91,92 Eth22 200000 21 9126 rs
+Ethernet176 65,66,67,68 Eth23 200000 22 9126 rs
+Ethernet184 73,74,75,76 Eth24 200000 23 9126 rs
+Ethernet192 49,50,51,52 Eth25 200000 24 9126 rs
+Ethernet200 57,58,59,60 Eth26 200000 25 9126 rs
+Ethernet208 33,34,35,36 Eth27 200000 26 9126 rs
+Ethernet216 41,42,43,44 Eth28 200000 27 9126 rs
+Ethernet224 17,18,19,20 Eth29 200000 28 9126 rs
+Ethernet232 25,26,27,28 Eth30 200000 29 9126 rs
+Ethernet240 1,2,3,4 Eth31 200000 30 9126 rs
+Ethernet248 9,10,11,12 Eth32 200000 31 9126 rs
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/qos.json.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/qos.json.j2
index 6c734d46ff2f..3938fc1a05c4 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/qos.json.j2
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/qos.json.j2
@@ -1,14 +1,3 @@
-{# Default values which will be used if no actual configura available #}
-
-{% set default_ports_num = 32 -%}
-{# 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 %}
@@ -19,24 +8,24 @@
{
"TC_TO_QUEUE_MAP":{
"AZURE":{
- "1":"1",
"0":"0",
- "3":"3",
+ "1":"1",
"2":"2",
- "5":"5",
+ "3":"3",
"4":"4",
- "7":"7",
- "6":"6"
+ "5":"5",
+ "6":"6",
+ "7":"7"
}
},
"TC_TO_PRIORITY_GROUP_MAP": {
"AZURE": {
- "1": "0",
"0": "0",
- "3": "0",
+ "1": "0",
"2": "0",
- "4": "1",
- "5": "2",
+ "3": "1",
+ "4": "2",
+ "5": "0",
"6": "0",
"7": "0"
}
@@ -46,9 +35,9 @@
"0":"0",
"1":"0",
"2":"0",
- "3":"0",
+ "3":"3",
"4":"4",
- "5":"5",
+ "5":"0",
"6":"0",
"7":"0",
"8":"1",
@@ -114,7 +103,12 @@
"tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
"tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
"dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
- "pfc_enable": "4,5"
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
}
}
}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/qos_defaults_def_lossy.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/qos_defaults_def_lossy.j2
new file mode 100755
index 000000000000..205242d82910
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/qos_defaults_def_lossy.j2
@@ -0,0 +1,118 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"0",
+ "4":"0",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"0",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]"
+ }
+ },
+ "SCHEDULER": {
+ "scheduler.7": {
+ "type": "STRICT"
+ }
+ },
+ "QUEUE": {
+ "{{ port_names }}|7": {
+ "scheduler": "[SCHEDULER|scheduler.7]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/qos_defaults_t1.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/qos_defaults_t1.j2
new file mode 100755
index 000000000000..3938fc1a05c4
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/qos_defaults_t1.j2
@@ -0,0 +1,114 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"3",
+ "4":"4",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"1",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/sai.profile b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/sai.profile
index 0769b3063a12..aba4fc81fb17 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/sai.profile
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x200/sai.profile
@@ -1 +1 @@
-SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/inno.config.yaml
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/alt_cfg/config_32x400G_Delta-et-c032if_aux.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/alt_cfg/config_32x400G_Delta-et-c032if_aux.yaml
new file mode 100755
index 000000000000..2ba23d2a5a67
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/alt_cfg/config_32x400G_Delta-et-c032if_aux.yaml
@@ -0,0 +1,429 @@
+ifcs:
+ options:
+ log_level: "info"
+nodes:
+- node_id: "0"
+ options:
+ sku: "configs/sku/innovium.77700_A"
+ netdev:
+ - auto_create: "no"
+ multi_interface: "yes"
+ buffer_management_mode: "api_driven"
+ max_lossless_tc: "2"
+ txring:
+ - txring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ rxring:
+ - rxring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44"
+ - rxring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45"
+ - rxring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46"
+ - rxring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47"
+ sys_clk: "1720"
+ ifc_clk: "1200"
+ mac_clk: "1340"
+
+ devports:
+ - id: "0"
+ sysport: "1000"
+ type: "cpu"
+ - fec: "KPFEC"
+ id: "249"
+ lanes: "0:8"
+ serdes_group: "31"
+ speed: "400G"
+ sysport: "249"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "241"
+ lanes: "0:8"
+ serdes_group: "30"
+ speed: "400G"
+ sysport: "241"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "233"
+ lanes: "0:8"
+ serdes_group: "29"
+ speed: "400G"
+ sysport: "233"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "225"
+ lanes: "0:8"
+ serdes_group: "28"
+ speed: "400G"
+ sysport: "225"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "217"
+ lanes: "0:8"
+ serdes_group: "27"
+ speed: "400G"
+ sysport: "217"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "209"
+ lanes: "0:8"
+ serdes_group: "26"
+ speed: "400G"
+ sysport: "209"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "201"
+ lanes: "0:8"
+ serdes_group: "25"
+ speed: "400G"
+ sysport: "201"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "193"
+ lanes: "0:8"
+ serdes_group: "24"
+ speed: "400G"
+ sysport: "193"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "185"
+ lanes: "0:8"
+ serdes_group: "23"
+ speed: "400G"
+ sysport: "185"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "177"
+ lanes: "0:8"
+ serdes_group: "22"
+ speed: "400G"
+ sysport: "177"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "169"
+ lanes: "0:8"
+ serdes_group: "21"
+ speed: "400G"
+ sysport: "169"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "161"
+ lanes: "0:8"
+ serdes_group: "20"
+ speed: "400G"
+ sysport: "161"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "153"
+ lanes: "0:8"
+ serdes_group: "19"
+ speed: "400G"
+ sysport: "153"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "145"
+ lanes: "0:8"
+ serdes_group: "18"
+ speed: "400G"
+ sysport: "145"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "137"
+ lanes: "0:8"
+ serdes_group: "17"
+ speed: "400G"
+ sysport: "137"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "129"
+ lanes: "0:8"
+ serdes_group: "16"
+ speed: "400G"
+ sysport: "129"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "121"
+ lanes: "0:8"
+ serdes_group: "15"
+ speed: "400G"
+ sysport: "121"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "113"
+ lanes: "0:8"
+ serdes_group: "14"
+ speed: "400G"
+ sysport: "113"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "97"
+ lanes: "0:8"
+ serdes_group: "12"
+ speed: "400G"
+ sysport: "97"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "105"
+ lanes: "0:8"
+ serdes_group: "13"
+ speed: "400G"
+ sysport: "105"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "81"
+ lanes: "0:8"
+ serdes_group: "10"
+ speed: "400G"
+ sysport: "81"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "89"
+ lanes: "0:8"
+ serdes_group: "11"
+ speed: "400G"
+ sysport: "89"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "65"
+ lanes: "0:8"
+ serdes_group: "8"
+ speed: "400G"
+ sysport: "65"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "73"
+ lanes: "0:8"
+ serdes_group: "9"
+ speed: "400G"
+ sysport: "73"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "49"
+ lanes: "0:8"
+ serdes_group: "6"
+ speed: "400G"
+ sysport: "49"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "57"
+ lanes: "0:8"
+ serdes_group: "7"
+ speed: "400G"
+ sysport: "57"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "33"
+ lanes: "0:8"
+ serdes_group: "4"
+ speed: "400G"
+ sysport: "33"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "41"
+ lanes: "0:8"
+ serdes_group: "5"
+ speed: "400G"
+ sysport: "41"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "17"
+ lanes: "0:8"
+ serdes_group: "2"
+ speed: "400G"
+ sysport: "17"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "25"
+ lanes: "0:8"
+ serdes_group: "3"
+ speed: "400G"
+ sysport: "25"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "1"
+ lanes: "0:8"
+ serdes_group: "0"
+ speed: "400G"
+ sysport: "1"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "9"
+ lanes: "0:8"
+ serdes_group: "1"
+ speed: "400G"
+ sysport: "9"
+ type: "eth"
+ - fec: "NONE"
+ id: "257"
+ lanes: "0:1"
+ serdes_group: "32"
+ speed: "10G"
+ sysport: "257"
+ type: "mgmt 0"
+ - fec: "NONE"
+ id: "258"
+ lanes: "1:1"
+ serdes_group: "32"
+ speed: "10G"
+ sysport: "258"
+ type: "mgmt 1"
+ isg:
+ - id: "0"
+ tx_polarity: "01010101"
+ rx_polarity: "01100000"
+ lane_swap: "23641075"
+ - id: "1"
+ tx_polarity: "10110000"
+ rx_polarity: "11111111"
+ lane_swap: "64317520"
+ - id: "2"
+ tx_polarity: "00000000"
+ rx_polarity: "00000011"
+ lane_swap: "63147520"
+ - id: "3"
+ tx_polarity: "01101000"
+ rx_polarity: "00001110"
+ lane_swap: "31572046"
+ - id: "4"
+ tx_polarity: "00111000"
+ rx_polarity: "00001000"
+ lane_swap: "46105732"
+ - id: "5"
+ tx_polarity: "10111111"
+ rx_polarity: "11101000"
+ lane_swap: "27153604"
+ - id: "6"
+ tx_polarity: "01101110"
+ rx_polarity: "00001101"
+ lane_swap: "46503721"
+ - id: "7"
+ tx_polarity: "01000100"
+ rx_polarity: "10000101"
+ lane_swap: "03671245"
+ - id: "8"
+ tx_polarity: "01110101"
+ rx_polarity: "00010000"
+ lane_swap: "12640375"
+ - id: "9"
+ tx_polarity: "01011100"
+ rx_polarity: "11001111"
+ lane_swap: "02561347"
+ - id: "10"
+ tx_polarity: "01110110"
+ rx_polarity: "11000000"
+ lane_swap: "12740365"
+ - id: "11"
+ tx_polarity: "00111000"
+ rx_polarity: "00010111"
+ lane_swap: "01572436"
+ - id: "12"
+ tx_polarity: "00001111"
+ rx_polarity: "10111001"
+ lane_swap: "54320176"
+ - id: "13"
+ tx_polarity: "10011101"
+ rx_polarity: "00111011"
+ lane_swap: "26153704"
+ - id: "14"
+ tx_polarity: "00110000"
+ rx_polarity: "11010000"
+ lane_swap: "37452601"
+ - id: "15"
+ tx_polarity: "11100010"
+ rx_polarity: "01110011"
+ lane_swap: "51370462"
+ - id: "16"
+ tx_polarity: "10111010"
+ rx_polarity: "11010011"
+ lane_swap: "36152704"
+ - id: "17"
+ tx_polarity: "01011101"
+ rx_polarity: "00110001"
+ lane_swap: "45621073"
+ - id: "18"
+ tx_polarity: "11011111"
+ rx_polarity: "11001011"
+ lane_swap: "26143705"
+ - id: "19"
+ tx_polarity: "00100110"
+ rx_polarity: "00001001"
+ lane_swap: "42730165"
+ - id: "20"
+ tx_polarity: "10011011"
+ rx_polarity: "01101101"
+ lane_swap: "54217603"
+ - id: "21"
+ tx_polarity: "00101110"
+ rx_polarity: "10111111"
+ lane_swap: "26031745"
+ - id: "22"
+ tx_polarity: "01001110"
+ rx_polarity: "00111001"
+ lane_swap: "36024715"
+ - id: "23"
+ tx_polarity: "10101101"
+ rx_polarity: "01010011"
+ lane_swap: "45621370"
+ - id: "24"
+ tx_polarity: "11001110"
+ rx_polarity: "00011111"
+ lane_swap: "65234701"
+ - id: "25"
+ tx_polarity: "01110001"
+ rx_polarity: "01010111"
+ lane_swap: "37601452"
+ - id: "26"
+ tx_polarity: "01000100"
+ rx_polarity: "00001111"
+ lane_swap: "65034721"
+ - id: "27"
+ tx_polarity: "10111101"
+ rx_polarity: "11000101"
+ lane_swap: "34501672"
+ - id: "28"
+ tx_polarity: "01111000"
+ rx_polarity: "01110110"
+ lane_swap: "43061275"
+ - id: "29"
+ tx_polarity: "11110111"
+ rx_polarity: "11100111"
+ lane_swap: "57304621"
+ - id: "30"
+ tx_polarity: "10000100"
+ rx_polarity: "00101111"
+ lane_swap: "47125603"
+ - id: "31"
+ tx_polarity: "11111111"
+ rx_polarity: "11100010"
+ lane_swap: "13460275"
+ - id: "32"
+ tx_polarity: "00000000"
+ rx_polarity: "00000000"
+ lane_swap: "01234567"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/alt_cfg/port_config_aux.ini b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/alt_cfg/port_config_aux.ini
new file mode 100755
index 000000000000..b02a938b34ff
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/alt_cfg/port_config_aux.ini
@@ -0,0 +1,35 @@
+# name lanes alias speed index mtu fec
+Ethernet0 249,250,251,252 Eth1 400000 0 9126 rs
+Ethernet8 241,242,243,244 Eth2 400000 1 9126 rs
+Ethernet16 233,234,235,236 Eth3 400000 2 9126 rs
+Ethernet24 225,226,227,228 Eth4 400000 3 9126 rs
+Ethernet32 217,218,219,220 Eth5 400000 4 9126 rs
+Ethernet40 209,210,211,212 Eth6 400000 5 9126 rs
+Ethernet48 201,202,203,204 Eth7 400000 6 9126 rs
+Ethernet56 193,194,195,196 Eth8 400000 7 9126 rs
+Ethernet64 185,186,187,188 Eth9 400000 8 9126 rs
+Ethernet72 177,178,179,180 Eth10 400000 9 9126 rs
+Ethernet80 169,170,171,172 Eth11 400000 10 9126 rs
+Ethernet88 161,162,163,164 Eth12 400000 11 9126 rs
+Ethernet96 153,154,155,156 Eth13 400000 12 9126 rs
+Ethernet104 145,146,147,148 Eth14 400000 13 9126 rs
+Ethernet112 137,138,139,140 Eth15 400000 14 9126 rs
+Ethernet120 129,130,131,132 Eth16 400000 15 9126 rs
+Ethernet128 121,122,123,124 Eth17 400000 16 9126 rs
+Ethernet136 113,114,115,116 Eth18 400000 17 9126 rs
+Ethernet144 97,98,99,100 Eth19 400000 18 9126 rs
+Ethernet152 105,106,107,108 Eth20 400000 19 9126 rs
+Ethernet160 81,82,83,84 Eth21 400000 20 9126 rs
+Ethernet168 89,90,91,92 Eth22 400000 21 9126 rs
+Ethernet176 65,66,67,68 Eth23 400000 22 9126 rs
+Ethernet184 73,74,75,76 Eth24 400000 23 9126 rs
+Ethernet192 49,50,51,52 Eth25 400000 24 9126 rs
+Ethernet200 57,58,59,60 Eth26 400000 25 9126 rs
+Ethernet208 33,34,35,36 Eth27 400000 26 9126 rs
+Ethernet216 41,42,43,44 Eth28 400000 27 9126 rs
+Ethernet224 17,18,19,20 Eth29 400000 28 9126 rs
+Ethernet232 25,26,27,28 Eth30 400000 29 9126 rs
+Ethernet240 1,2,3,4 Eth31 400000 30 9126 rs
+Ethernet248 9,10,11,12 Eth32 400000 31 9126 rs
+Ethernet256 257 Aux1 10000 32 9126 none
+Ethernet257 258 Aux2 10000 33 9126 none
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/buffers.json.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/buffers.json.j2
index 4fca9cbcd156..ada7dca895ce 100644
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/buffers.json.j2
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/buffers.json.j2
@@ -1,6 +1,5 @@
{# Default values which will be used if no actual configura available #}
-{% set default_cable = '300m' %}
-{% set default_ports_num = 32 -%}
+{% set default_cable = '40m' %}
{# Port configuration to cable length look-up table #}
{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #}
@@ -12,44 +11,53 @@
}
%}
-{%- 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 -%}
+{%- 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 -%}
- {%- 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 -%}
+ {%- 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 %}
+ {%- else %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- 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 %}
@@ -57,6 +65,15 @@
{% 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": "47218432",
@@ -64,7 +81,7 @@
"mode": "dynamic",
"xoff": "17708800"
},
- "egress_lossy_pool": {
+ "lossy_pool": {
"size": "18874368",
"type": "egress",
"mode": "dynamic",
@@ -74,46 +91,46 @@
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
- "xoff":"1433600",
+ "xoff":"38816",
"size":"1518",
- "dynamic_th":"-4",
- "xon_offset":"6272"
+ "dynamic_th":"3",
+ "xon_offset":"13440"
},
- "ingress_lossy_profile": {
+ "egress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
- "egress_lossless_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
"egress_lossy_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"1518",
"dynamic_th":"3"
}
},
"BUFFER_PG": {
- "{{ port_names }}|0-3": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
- "{{ port_names }}|4-5": {
+ "{{ port_names }}|3-4": {
"profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
},
- "{{ port_names }}|6-7": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}
},
"BUFFER_QUEUE": {
- "{{ port_names }}|4-5": {
- "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
},
- "{{ port_names }}|0-3": {
+ "{{ port_names }}|0-2": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
},
- "{{ port_names }}|6-7": {
+ "{{ port_names }}|5-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}
}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/buffers_defaults_def_lossy.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/buffers_defaults_def_lossy.j2
new file mode 100644
index 000000000000..fa2b49e6340a
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/buffers_defaults_def_lossy.j2
@@ -0,0 +1,38 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+{
+ "BUFFER_POOL": {
+ "lossy_pool": {
+ "size": "56985600",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/buffers_defaults_t1.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/buffers_defaults_t1.j2
new file mode 100644
index 000000000000..ada7dca895ce
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/buffers_defaults_t1.j2
@@ -0,0 +1,137 @@
+{# Default values which will be used if no actual configura available #}
+{% set default_cable = '40m' %}
+
+{# 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 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 %}
+ {%- 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 %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- endif %}
+{%- endmacro %}
+
+{%- if DEVICE_METADATA is defined %}
+{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
+{%- 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": "47218432",
+ "type": "ingress",
+ "mode": "dynamic",
+ "xoff": "17708800"
+ },
+ "lossy_pool": {
+ "size": "18874368",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "xoff":"38816",
+ "size":"1518",
+ "dynamic_th":"3",
+ "xon_offset":"13440"
+ },
+ "egress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ },
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ },
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/config_32x400G_Delta-et-c032if.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/config_32x400G_Delta-et-c032if.yaml
index 2ba23d2a5a67..76cf0dc36ba8 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/config_32x400G_Delta-et-c032if.yaml
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/config_32x400G_Delta-et-c032if.yaml
@@ -10,6 +10,8 @@ nodes:
multi_interface: "yes"
buffer_management_mode: "api_driven"
max_lossless_tc: "2"
+ ilpm_enable: "1"
+ forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E"
txring:
- txring_id: "0"
desc_count: "1024"
@@ -280,20 +282,6 @@ nodes:
speed: "400G"
sysport: "9"
type: "eth"
- - fec: "NONE"
- id: "257"
- lanes: "0:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "257"
- type: "mgmt 0"
- - fec: "NONE"
- id: "258"
- lanes: "1:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "258"
- type: "mgmt 1"
isg:
- id: "0"
tx_polarity: "01010101"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/ivm.sai.config.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/ivm.sai.config.yaml
new file mode 100755
index 000000000000..30a83d145ebd
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/ivm.sai.config.yaml
@@ -0,0 +1,9 @@
+IFCS_INIT_FILE : "/usr/share/sonic/hwsku/config_32x400G_Delta-et-c032if.yaml"
+IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_A"
+IFCS_INNO_CLI_PORT : "9999"
+IFCS_TARGET : "device"
+INNOVIUM_DIR : "/innovium"
+PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes"
+AVG_IPG_RESERVED_SIZE: "1518"
+AVG_QUEUE_RESERVED_SIZE: "1518"
+IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/ivm.sai.datapath.config.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/ivm.sai.datapath.config.yaml
new file mode 100644
index 000000000000..891b0b3e2834
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/ivm.sai.datapath.config.yaml
@@ -0,0 +1,9 @@
+ISAI_PARAM_P0_0_LS : "4608 4608 4608 4608 2880 2880"
+ISAI_PARAM_P0_1_LS : "2226 1946 1946 1890 1218 1218"
+ISAI_PARAM_P0_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_0_LS : "1536 1536 1536 1536 960 960"
+ISAI_PARAM_P1_0_LL : "3072 3072 3072 3072 1920 1920"
+ISAI_PARAM_P1_1_LS : "1778 1498 1498 1442 938 938"
+ISAI_PARAM_P1_1_LL : "2478 2478 2478 2478 2478 2478"
+ISAI_PARAM_P1_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_1_ALL : "126 126 126 126 126 126"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/pg_profile_lookup.ini b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/pg_profile_lookup.ini
new file mode 100644
index 000000000000..27775dfff78d
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/pg_profile_lookup.ini
@@ -0,0 +1,14 @@
+# PG lossless profiles.
+# speed cable size xon xoff threshold xon_offset
+ 25000 5m 1518 0 15680 3 13440
+ 50000 5m 1518 0 21152 3 13440
+ 100000 5m 1518 0 34336 3 13440
+ 400000 5m 1518 0 117376 3 13440
+ 25000 40m 1518 0 16800 3 13440
+ 50000 40m 1518 0 23392 3 13440
+ 100000 40m 1518 0 38816 3 13440
+ 400000 40m 1518 0 135296 3 13440
+ 25000 300m 1518 0 25120 3 13440
+ 50000 300m 1518 0 40032 3 13440
+ 100000 300m 1518 0 72096 3 13440
+ 400000 300m 1518 0 268416 3 13440
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/port_config.ini b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/port_config.ini
index 360e363f485b..64d07a4eecdb 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/port_config.ini
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/port_config.ini
@@ -1,35 +1,33 @@
-# name lanes speed index mtu fec
-Ethernet0 249,250,251,252 400000 0 9126 rs
-Ethernet8 241,242,243,244 400000 1 9126 rs
-Ethernet16 233,234,235,236 400000 2 9126 rs
-Ethernet24 225,226,227,228 400000 3 9126 rs
-Ethernet32 217,218,219,220 400000 4 9126 rs
-Ethernet40 209,210,211,212 400000 5 9126 rs
-Ethernet48 201,202,203,204 400000 6 9126 rs
-Ethernet56 193,194,195,196 400000 7 9126 rs
-Ethernet64 185,186,187,188 400000 8 9126 rs
-Ethernet72 177,178,179,180 400000 9 9126 rs
-Ethernet80 169,170,171,172 400000 10 9126 rs
-Ethernet88 161,162,163,164 400000 11 9126 rs
-Ethernet96 153,154,155,156 400000 12 9126 rs
-Ethernet104 145,146,147,148 400000 13 9126 rs
-Ethernet112 137,138,139,140 400000 14 9126 rs
-Ethernet120 129,130,131,132 400000 15 9126 rs
-Ethernet128 121,122,123,124 400000 16 9126 rs
-Ethernet136 113,114,115,116 400000 17 9126 rs
-Ethernet144 97,98,99,100 400000 18 9126 rs
-Ethernet152 105,106,107,108 400000 19 9126 rs
-Ethernet160 81,82,83,84 400000 20 9126 rs
-Ethernet168 89,90,91,92 400000 21 9126 rs
-Ethernet176 65,66,67,68 400000 22 9126 rs
-Ethernet184 73,74,75,76 400000 23 9126 rs
-Ethernet192 49,50,51,52 400000 24 9126 rs
-Ethernet200 57,58,59,60 400000 25 9126 rs
-Ethernet208 33,34,35,36 400000 26 9126 rs
-Ethernet216 41,42,43,44 400000 27 9126 rs
-Ethernet224 17,18,19,20 400000 28 9126 rs
-Ethernet232 25,26,27,28 400000 29 9126 rs
-Ethernet240 1,2,3,4 400000 30 9126 rs
-Ethernet248 9,10,11,12 400000 31 9126 rs
-Ethernet256 257 10000 32 9126 none
-Ethernet257 258 10000 33 9126 none
+# name lanes alias speed index mtu fec
+Ethernet0 249,250,251,252,253,254,255,256 Ethernet0 400000 0 9126 rs
+Ethernet8 241,242,243,244,245,246,247,248 Ethernet8 400000 1 9126 rs
+Ethernet16 233,234,235,236,237,238,239,240 Ethernet16 400000 2 9126 rs
+Ethernet24 225,226,227,228,229,230,231,232 Ethernet24 400000 3 9126 rs
+Ethernet32 217,218,219,220,221,222,223,224 Ethernet32 400000 4 9126 rs
+Ethernet40 209,210,211,212,213,214,215,216 Ethernet40 400000 5 9126 rs
+Ethernet48 201,202,203,204,205,206,207,208 Ethernet48 400000 6 9126 rs
+Ethernet56 193,194,195,196,197,198,199,200 Ethernet56 400000 7 9126 rs
+Ethernet64 185,186,187,188,189,190,191,192 Ethernet64 400000 8 9126 rs
+Ethernet72 177,178,179,180,181,182,183,184 Ethernet72 400000 9 9126 rs
+Ethernet80 169,170,171,172,173,174,175,176 Ethernet80 400000 10 9126 rs
+Ethernet88 161,162,163,164,165,166,167,168 Ethernet88 400000 11 9126 rs
+Ethernet96 153,154,155,156,157,158,159,160 Ethernet96 400000 12 9126 rs
+Ethernet104 145,146,147,148,149,150,151,152 Ethernet104 400000 13 9126 rs
+Ethernet112 137,138,139,140,141,142,143,144 Ethernet112 400000 14 9126 rs
+Ethernet120 129,130,131,132,133,134,135,136 Ethernet120 400000 15 9126 rs
+Ethernet128 121,122,123,124,125,126,127,128 Ethernet128 400000 16 9126 rs
+Ethernet136 113,114,115,116,117,118,119,120 Ethernet136 400000 17 9126 rs
+Ethernet144 97,98,99,100,101,102,103,104 Ethernet144 400000 18 9126 rs
+Ethernet152 105,106,107,108,109,110,111,112 Ethernet152 400000 19 9126 rs
+Ethernet160 81,82,83,84,85,86,87,88 Ethernet160 400000 20 9126 rs
+Ethernet168 89,90,91,92,93,94,95,96 Ethernet168 400000 21 9126 rs
+Ethernet176 65,66,67,68,69,70,71,72 Ethernet176 400000 22 9126 rs
+Ethernet184 73,74,75,76,77,78,79,80 Ethernet184 400000 23 9126 rs
+Ethernet192 49,50,51,52,53,54,55,56 Ethernet192 400000 24 9126 rs
+Ethernet200 57,58,59,60,61,62,63,64 Ethernet200 400000 25 9126 rs
+Ethernet208 33,34,35,36,37,38,39,40 Ethernet208 400000 26 9126 rs
+Ethernet216 41,42,43,44,45,46,47,48 Ethernet216 400000 27 9126 rs
+Ethernet224 17,18,19,20,21,22,23,24 Ethernet224 400000 28 9126 rs
+Ethernet232 25,26,27,28,29,30,31,32 Ethernet232 400000 29 9126 rs
+Ethernet240 1,2,3,4,5,6,7,8 Ethernet240 400000 30 9126 rs
+Ethernet248 9,10,11,12,13,14,15,16 Ethernet248 400000 31 9126 rs
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/qos.json.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/qos.json.j2
index 6c734d46ff2f..3938fc1a05c4 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/qos.json.j2
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/qos.json.j2
@@ -1,14 +1,3 @@
-{# Default values which will be used if no actual configura available #}
-
-{% set default_ports_num = 32 -%}
-{# 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 %}
@@ -19,24 +8,24 @@
{
"TC_TO_QUEUE_MAP":{
"AZURE":{
- "1":"1",
"0":"0",
- "3":"3",
+ "1":"1",
"2":"2",
- "5":"5",
+ "3":"3",
"4":"4",
- "7":"7",
- "6":"6"
+ "5":"5",
+ "6":"6",
+ "7":"7"
}
},
"TC_TO_PRIORITY_GROUP_MAP": {
"AZURE": {
- "1": "0",
"0": "0",
- "3": "0",
+ "1": "0",
"2": "0",
- "4": "1",
- "5": "2",
+ "3": "1",
+ "4": "2",
+ "5": "0",
"6": "0",
"7": "0"
}
@@ -46,9 +35,9 @@
"0":"0",
"1":"0",
"2":"0",
- "3":"0",
+ "3":"3",
"4":"4",
- "5":"5",
+ "5":"0",
"6":"0",
"7":"0",
"8":"1",
@@ -114,7 +103,12 @@
"tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
"tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
"dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
- "pfc_enable": "4,5"
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
}
}
}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/qos_defaults_def_lossy.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/qos_defaults_def_lossy.j2
new file mode 100755
index 000000000000..205242d82910
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/qos_defaults_def_lossy.j2
@@ -0,0 +1,118 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"0",
+ "4":"0",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"0",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]"
+ }
+ },
+ "SCHEDULER": {
+ "scheduler.7": {
+ "type": "STRICT"
+ }
+ },
+ "QUEUE": {
+ "{{ port_names }}|7": {
+ "scheduler": "[SCHEDULER|scheduler.7]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/qos_defaults_t1.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/qos_defaults_t1.j2
new file mode 100755
index 000000000000..3938fc1a05c4
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/qos_defaults_t1.j2
@@ -0,0 +1,114 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"3",
+ "4":"4",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"1",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/sai.profile b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/sai.profile
index 0769b3063a12..aba4fc81fb17 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/sai.profile
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_32x400/sai.profile
@@ -1 +1 @@
-SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/inno.config.yaml
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/alt_cfg/config_64x100G_Delta-et-c032if_aux.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/alt_cfg/config_64x100G_Delta-et-c032if_aux.yaml
new file mode 100755
index 000000000000..e5fbcc93543d
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/alt_cfg/config_64x100G_Delta-et-c032if_aux.yaml
@@ -0,0 +1,653 @@
+ifcs:
+ options:
+ log_level: "info"
+nodes:
+- node_id: "0"
+ options:
+ sku: "configs/sku/innovium.77700_B"
+ netdev:
+ - auto_create: "no"
+ multi_interface: "yes"
+ buffer_management_mode: "api_driven"
+ max_lossless_tc: "2"
+ txring:
+ - txring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ rxring:
+ - rxring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44"
+ - rxring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45"
+ - rxring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46"
+ - rxring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47"
+ sys_clk: "1720"
+ ifc_clk: "1200"
+ mac_clk: "1340"
+
+ devports:
+ - id: "0"
+ sysport: "1000"
+ type: "cpu"
+ - fec: "KRFEC"
+ id: "249"
+ lanes: "0:4"
+ serdes_group: "31"
+ speed: "100G"
+ sysport: "249"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "253"
+ lanes: "4:4"
+ serdes_group: "31"
+ speed: "100G"
+ sysport: "253"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "241"
+ lanes: "0:4"
+ serdes_group: "30"
+ speed: "100G"
+ sysport: "241"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "245"
+ lanes: "4:4"
+ serdes_group: "30"
+ speed: "100G"
+ sysport: "245"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "233"
+ lanes: "0:4"
+ serdes_group: "29"
+ speed: "100G"
+ sysport: "233"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "237"
+ lanes: "4:4"
+ serdes_group: "29"
+ speed: "100G"
+ sysport: "237"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "225"
+ lanes: "0:4"
+ serdes_group: "28"
+ speed: "100G"
+ sysport: "225"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "229"
+ lanes: "4:4"
+ serdes_group: "28"
+ speed: "100G"
+ sysport: "229"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "217"
+ lanes: "0:4"
+ serdes_group: "27"
+ speed: "100G"
+ sysport: "217"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "221"
+ lanes: "4:4"
+ serdes_group: "27"
+ speed: "100G"
+ sysport: "221"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "209"
+ lanes: "0:4"
+ serdes_group: "26"
+ speed: "100G"
+ sysport: "209"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "213"
+ lanes: "4:4"
+ serdes_group: "26"
+ speed: "100G"
+ sysport: "213"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "201"
+ lanes: "0:4"
+ serdes_group: "25"
+ speed: "100G"
+ sysport: "201"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "205"
+ lanes: "4:4"
+ serdes_group: "25"
+ speed: "100G"
+ sysport: "205"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "193"
+ lanes: "0:4"
+ serdes_group: "24"
+ speed: "100G"
+ sysport: "193"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "197"
+ lanes: "4:4"
+ serdes_group: "24"
+ speed: "100G"
+ sysport: "197"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "185"
+ lanes: "0:4"
+ serdes_group: "23"
+ speed: "100G"
+ sysport: "185"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "189"
+ lanes: "4:4"
+ serdes_group: "23"
+ speed: "100G"
+ sysport: "189"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "177"
+ lanes: "0:4"
+ serdes_group: "22"
+ speed: "100G"
+ sysport: "177"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "181"
+ lanes: "4:4"
+ serdes_group: "22"
+ speed: "100G"
+ sysport: "181"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "169"
+ lanes: "0:4"
+ serdes_group: "21"
+ speed: "100G"
+ sysport: "169"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "173"
+ lanes: "4:4"
+ serdes_group: "21"
+ speed: "100G"
+ sysport: "173"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "161"
+ lanes: "0:4"
+ serdes_group: "20"
+ speed: "100G"
+ sysport: "161"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "165"
+ lanes: "4:4"
+ serdes_group: "20"
+ speed: "100G"
+ sysport: "165"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "153"
+ lanes: "0:4"
+ serdes_group: "19"
+ speed: "100G"
+ sysport: "153"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "157"
+ lanes: "4:4"
+ serdes_group: "19"
+ speed: "100G"
+ sysport: "157"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "145"
+ lanes: "0:4"
+ serdes_group: "18"
+ speed: "100G"
+ sysport: "145"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "149"
+ lanes: "4:4"
+ serdes_group: "18"
+ speed: "100G"
+ sysport: "149"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "137"
+ lanes: "0:4"
+ serdes_group: "17"
+ speed: "100G"
+ sysport: "137"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "141"
+ lanes: "4:4"
+ serdes_group: "17"
+ speed: "100G"
+ sysport: "141"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "129"
+ lanes: "0:4"
+ serdes_group: "16"
+ speed: "100G"
+ sysport: "129"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "133"
+ lanes: "4:4"
+ serdes_group: "16"
+ speed: "100G"
+ sysport: "133"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "121"
+ lanes: "0:4"
+ serdes_group: "15"
+ speed: "100G"
+ sysport: "121"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "125"
+ lanes: "4:4"
+ serdes_group: "15"
+ speed: "100G"
+ sysport: "125"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "113"
+ lanes: "0:4"
+ serdes_group: "14"
+ speed: "100G"
+ sysport: "113"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "117"
+ lanes: "4:4"
+ serdes_group: "14"
+ speed: "100G"
+ sysport: "117"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "97"
+ lanes: "0:4"
+ serdes_group: "12"
+ speed: "100G"
+ sysport: "97"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "101"
+ lanes: "4:4"
+ serdes_group: "12"
+ speed: "100G"
+ sysport: "101"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "105"
+ lanes: "0:4"
+ serdes_group: "13"
+ speed: "100G"
+ sysport: "105"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "109"
+ lanes: "4:4"
+ serdes_group: "13"
+ speed: "100G"
+ sysport: "109"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "81"
+ lanes: "0:4"
+ serdes_group: "10"
+ speed: "100G"
+ sysport: "81"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "85"
+ lanes: "4:4"
+ serdes_group: "10"
+ speed: "100G"
+ sysport: "85"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "89"
+ lanes: "0:4"
+ serdes_group: "11"
+ speed: "100G"
+ sysport: "89"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "93"
+ lanes: "4:4"
+ serdes_group: "11"
+ speed: "100G"
+ sysport: "93"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "65"
+ lanes: "0:4"
+ serdes_group: "8"
+ speed: "100G"
+ sysport: "65"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "69"
+ lanes: "4:4"
+ serdes_group: "8"
+ speed: "100G"
+ sysport: "69"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "73"
+ lanes: "0:4"
+ serdes_group: "9"
+ speed: "100G"
+ sysport: "73"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "77"
+ lanes: "4:4"
+ serdes_group: "9"
+ speed: "100G"
+ sysport: "77"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "49"
+ lanes: "0:4"
+ serdes_group: "6"
+ speed: "100G"
+ sysport: "49"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "53"
+ lanes: "4:4"
+ serdes_group: "6"
+ speed: "100G"
+ sysport: "53"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "57"
+ lanes: "0:4"
+ serdes_group: "7"
+ speed: "100G"
+ sysport: "57"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "61"
+ lanes: "4:4"
+ serdes_group: "7"
+ speed: "100G"
+ sysport: "61"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "33"
+ lanes: "0:4"
+ serdes_group: "4"
+ speed: "100G"
+ sysport: "33"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "37"
+ lanes: "4:4"
+ serdes_group: "4"
+ speed: "100G"
+ sysport: "37"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "41"
+ lanes: "0:4"
+ serdes_group: "5"
+ speed: "100G"
+ sysport: "41"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "45"
+ lanes: "4:4"
+ serdes_group: "5"
+ speed: "100G"
+ sysport: "45"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "17"
+ lanes: "0:4"
+ serdes_group: "2"
+ speed: "100G"
+ sysport: "17"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "21"
+ lanes: "4:4"
+ serdes_group: "2"
+ speed: "100G"
+ sysport: "21"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "25"
+ lanes: "0:4"
+ serdes_group: "3"
+ speed: "100G"
+ sysport: "25"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "29"
+ lanes: "4:4"
+ serdes_group: "3"
+ speed: "100G"
+ sysport: "29"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "1"
+ lanes: "0:4"
+ serdes_group: "0"
+ speed: "100G"
+ sysport: "1"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "5"
+ lanes: "4:4"
+ serdes_group: "0"
+ speed: "100G"
+ sysport: "5"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "9"
+ lanes: "0:4"
+ serdes_group: "1"
+ speed: "100G"
+ sysport: "9"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "13"
+ lanes: "4:4"
+ serdes_group: "1"
+ speed: "100G"
+ sysport: "13"
+ type: "eth"
+ - fec: "NONE"
+ id: "257"
+ lanes: "0:1"
+ serdes_group: "32"
+ speed: "10G"
+ sysport: "257"
+ type: "mgmt 0"
+ - fec: "NONE"
+ id: "258"
+ lanes: "1:1"
+ serdes_group: "32"
+ speed: "10G"
+ sysport: "258"
+ type: "mgmt 1"
+ isg:
+ - id: "0"
+ tx_polarity: "01010101"
+ rx_polarity: "01100000"
+ lane_swap: "23641075"
+ - id: "1"
+ tx_polarity: "10110000"
+ rx_polarity: "11111111"
+ lane_swap: "64317520"
+ - id: "2"
+ tx_polarity: "00000000"
+ rx_polarity: "00000011"
+ lane_swap: "63147520"
+ - id: "3"
+ tx_polarity: "01101000"
+ rx_polarity: "00001110"
+ lane_swap: "31572046"
+ - id: "4"
+ tx_polarity: "00111000"
+ rx_polarity: "00001000"
+ lane_swap: "46105732"
+ - id: "5"
+ tx_polarity: "10111111"
+ rx_polarity: "11101000"
+ lane_swap: "27153604"
+ - id: "6"
+ tx_polarity: "01101110"
+ rx_polarity: "00001101"
+ lane_swap: "46503721"
+ - id: "7"
+ tx_polarity: "01000100"
+ rx_polarity: "10000101"
+ lane_swap: "03671245"
+ - id: "8"
+ tx_polarity: "01110101"
+ rx_polarity: "00010000"
+ lane_swap: "12640375"
+ - id: "9"
+ tx_polarity: "01011100"
+ rx_polarity: "11001111"
+ lane_swap: "02561347"
+ - id: "10"
+ tx_polarity: "01110110"
+ rx_polarity: "11000000"
+ lane_swap: "12740365"
+ - id: "11"
+ tx_polarity: "00111000"
+ rx_polarity: "00010111"
+ lane_swap: "01572436"
+ - id: "12"
+ tx_polarity: "00001111"
+ rx_polarity: "10111001"
+ lane_swap: "54320176"
+ - id: "13"
+ tx_polarity: "10011101"
+ rx_polarity: "00111011"
+ lane_swap: "26153704"
+ - id: "14"
+ tx_polarity: "00110000"
+ rx_polarity: "11010000"
+ lane_swap: "37452601"
+ - id: "15"
+ tx_polarity: "11100010"
+ rx_polarity: "01110011"
+ lane_swap: "51370462"
+ - id: "16"
+ tx_polarity: "10111010"
+ rx_polarity: "11010011"
+ lane_swap: "36152704"
+ - id: "17"
+ tx_polarity: "01011101"
+ rx_polarity: "00110001"
+ lane_swap: "45621073"
+ - id: "18"
+ tx_polarity: "11011111"
+ rx_polarity: "11001011"
+ lane_swap: "26143705"
+ - id: "19"
+ tx_polarity: "00100110"
+ rx_polarity: "00001001"
+ lane_swap: "42730165"
+ - id: "20"
+ tx_polarity: "10011011"
+ rx_polarity: "01101101"
+ lane_swap: "54217603"
+ - id: "21"
+ tx_polarity: "00101110"
+ rx_polarity: "10111111"
+ lane_swap: "26031745"
+ - id: "22"
+ tx_polarity: "01001110"
+ rx_polarity: "00111001"
+ lane_swap: "36024715"
+ - id: "23"
+ tx_polarity: "10101101"
+ rx_polarity: "01010011"
+ lane_swap: "45621370"
+ - id: "24"
+ tx_polarity: "11001110"
+ rx_polarity: "00011111"
+ lane_swap: "65234701"
+ - id: "25"
+ tx_polarity: "01110001"
+ rx_polarity: "01010111"
+ lane_swap: "37601452"
+ - id: "26"
+ tx_polarity: "01000100"
+ rx_polarity: "00001111"
+ lane_swap: "65034721"
+ - id: "27"
+ tx_polarity: "10111101"
+ rx_polarity: "11000101"
+ lane_swap: "34501672"
+ - id: "28"
+ tx_polarity: "01111000"
+ rx_polarity: "01110110"
+ lane_swap: "43061275"
+ - id: "29"
+ tx_polarity: "11110111"
+ rx_polarity: "11100111"
+ lane_swap: "57304621"
+ - id: "30"
+ tx_polarity: "10000100"
+ rx_polarity: "00101111"
+ lane_swap: "47125603"
+ - id: "31"
+ tx_polarity: "11111111"
+ rx_polarity: "11100010"
+ lane_swap: "13460275"
+ - id: "32"
+ tx_polarity: "00000000"
+ rx_polarity: "00000000"
+ lane_swap: "01234567"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/alt_cfg/port_config_aux.ini b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/alt_cfg/port_config_aux.ini
new file mode 100644
index 000000000000..50df2f775f91
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/alt_cfg/port_config_aux.ini
@@ -0,0 +1,67 @@
+# name lanes alias speed index mtu
+Ethernet0 249,250,251,252 Eth1/1 100000 0 9126
+Ethernet4 253,254,255,256 Eth1/2 100000 0 9126
+Ethernet8 241,242,243,244 Eth2/1 100000 1 9126
+Ethernet12 245,246,247,248 Eth2/2 100000 1 9126
+Ethernet16 233,234,235,236 Eth3/1 100000 2 9126
+Ethernet20 237,238,239,240 Eth3/2 100000 2 9126
+Ethernet24 225,226,227,228 Eth4/1 100000 3 9126
+Ethernet28 229,230,231,232 Eth4/2 100000 3 9126
+Ethernet32 217,218,219,220 Eth5/1 100000 4 9126
+Ethernet36 221,222,223,224 Eth5/2 100000 4 9126
+Ethernet40 209,210,211,212 Eth6/1 100000 5 9126
+Ethernet44 213,214,215,216 Eth6/1 100000 5 9126
+Ethernet48 201,202,203,204 Eth7/1 100000 6 9126
+Ethernet52 205,206,207,208 Eth7/2 100000 6 9126
+Ethernet56 193,194,195,196 Eth8/1 100000 7 9126
+Ethernet60 197,198,199,200 Eth8/2 100000 7 9126
+Ethernet64 185,186,187,188 Eth9/2 100000 8 9126
+Ethernet68 189,190,191,192 Eth9/2 100000 8 9126
+Ethernet72 177,178,179,180 Eth10/1 100000 9 9126
+Ethernet76 181,182,183,184 Eth10/2 100000 9 9126
+Ethernet80 169,170,171,172 Eth11/1 100000 10 9126
+Ethernet84 173,174,175,176 Eth11/2 100000 10 9126
+Ethernet88 161,162,163,164 Eth12/1 100000 11 9126
+Ethernet92 165,166,167,168 Eth12/2 100000 11 9126
+Ethernet96 153,154,155,156 Eth13/1 100000 12 9126
+Ethernet100 157,158,159,160 Eth13/2 100000 12 9126
+Ethernet104 145,146,147,148 Eth14/1 100000 13 9126
+Ethernet108 149,150,151,152 Eth14/2 100000 13 9126
+Ethernet112 137,138,139,140 Eth15/1 100000 14 9126
+Ethernet116 141,142,143,144 Eth15/2 100000 14 9126
+Ethernet120 129,130,131,132 Eth16/1 100000 15 9126
+Ethernet124 133,134,135,136 Eth16/2 100000 15 9126
+Ethernet128 121,122,123,124 Eth17/1 100000 16 9126
+Ethernet132 125,126,127,128 Eth17/2 100000 16 9126
+Ethernet136 113,114,115,116 Eth18/1 100000 17 9126
+Ethernet140 117,118,119,120 Eth18/2 100000 17 9126
+Ethernet144 97,98,99,100 Eth19/1 100000 18 9126
+Ethernet148 101,102,103,104 Eth19/2 100000 18 9126
+Ethernet152 105,106,107,108 Eth20/1 100000 19 9126
+Ethernet156 109,110,111,112 Eth20/2 100000 19 9126
+Ethernet160 81,82,83,84 Eth21/1 100000 20 9126
+Ethernet164 85,86,87,88 Eth21/2 100000 20 9126
+Ethernet168 89,90,91,92 Eth22/1 100000 21 9126
+Ethernet172 93,94,95,96 Eth22/2 100000 21 9126
+Ethernet176 65,66,67,68 Eth23/1 100000 22 9126
+Ethernet180 69,70,71,72 Eth23/2 100000 22 9126
+Ethernet184 73,74,75,76 Eth24/1 100000 23 9126
+Ethernet188 77,78,79,80 Eth24/2 100000 23 9126
+Ethernet192 49,50,51,52 Eth25/1 100000 24 9126
+Ethernet196 53,54,55,56 Eth25/2 100000 24 9126
+Ethernet200 57,58,59,60 Eth26/1 100000 25 9126
+Ethernet204 61,62,63,64 Eth26/2 100000 25 9126
+Ethernet208 33,34,35,36 Eth27/1 100000 26 9126
+Ethernet212 37,38,39,40 Eth27/2 100000 26 9126
+Ethernet216 41,42,43,44 Eth28/1 100000 27 9126
+Ethernet220 45,46,47,48 Eth28/2 100000 27 9126
+Ethernet224 17,18,19,20 Eth29/1 100000 28 9126
+Ethernet228 21,22,23,24 Eth29/2 100000 28 9126
+Ethernet232 25,26,27,28 Eth30/1 100000 29 9126
+Ethernet236 29,30,31,32 Eth30/2 100000 29 9126
+Ethernet240 1,2,3,4 Eth31/1 100000 30 9126
+Ethernet244 5,6,7,8 Eth31/2 100000 30 9126
+Ethernet248 9,10,11,12 Eth32/1 100000 31 9126
+Ethernet252 13,14,15,16 Eth32/2 100000 31 9126
+Ethernet256 257 Aux1 10000 32 9126
+Ethernet257 258 Aux2 10000 33 9126
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/buffers.json.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/buffers.json.j2
index 45cebf3b7144..ada7dca895ce 100644
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/buffers.json.j2
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/buffers.json.j2
@@ -1,6 +1,5 @@
{# Default values which will be used if no actual configura available #}
-{% set default_cable = '300m' %}
-{% set default_ports_num = 64 -%}
+{% set default_cable = '40m' %}
{# Port configuration to cable length look-up table #}
{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #}
@@ -12,44 +11,53 @@
}
%}
-{%- 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 -%}
+{%- 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 -%}
- {%- 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 -%}
+ {%- 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 %}
+ {%- else %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- 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 %}
@@ -57,6 +65,15 @@
{% 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": "47218432",
@@ -64,7 +81,7 @@
"mode": "dynamic",
"xoff": "17708800"
},
- "egress_lossy_pool": {
+ "lossy_pool": {
"size": "18874368",
"type": "egress",
"mode": "dynamic",
@@ -74,46 +91,46 @@
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
- "xoff":"1433600",
+ "xoff":"38816",
"size":"1518",
- "dynamic_th":"-4",
- "xon_offset":"6272"
+ "dynamic_th":"3",
+ "xon_offset":"13440"
},
- "ingress_lossy_profile": {
+ "egress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
- "egress_lossless_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
"egress_lossy_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"1518",
"dynamic_th":"3"
}
},
"BUFFER_PG": {
- "{{ port_names }}|0-3": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
- "{{ port_names }}|4-5": {
+ "{{ port_names }}|3-4": {
"profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
},
- "{{ port_names }}|6-7": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}
},
"BUFFER_QUEUE": {
- "{{ port_names }}|4-5": {
- "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
},
- "{{ port_names }}|0-3": {
+ "{{ port_names }}|0-2": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
},
- "{{ port_names }}|6-7": {
+ "{{ port_names }}|5-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}
}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/buffers_defaults_def_lossy.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/buffers_defaults_def_lossy.j2
new file mode 100644
index 000000000000..fa2b49e6340a
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/buffers_defaults_def_lossy.j2
@@ -0,0 +1,38 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+{
+ "BUFFER_POOL": {
+ "lossy_pool": {
+ "size": "56985600",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/buffers_defaults_t1.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/buffers_defaults_t1.j2
new file mode 100644
index 000000000000..ada7dca895ce
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/buffers_defaults_t1.j2
@@ -0,0 +1,137 @@
+{# Default values which will be used if no actual configura available #}
+{% set default_cable = '40m' %}
+
+{# 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 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 %}
+ {%- 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 %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- endif %}
+{%- endmacro %}
+
+{%- if DEVICE_METADATA is defined %}
+{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
+{%- 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": "47218432",
+ "type": "ingress",
+ "mode": "dynamic",
+ "xoff": "17708800"
+ },
+ "lossy_pool": {
+ "size": "18874368",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "xoff":"38816",
+ "size":"1518",
+ "dynamic_th":"3",
+ "xon_offset":"13440"
+ },
+ "egress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ },
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ },
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/config_64x100G_Delta-et-c032if.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/config_64x100G_Delta-et-c032if.yaml
index e5fbcc93543d..28f4f6dd9f55 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/config_64x100G_Delta-et-c032if.yaml
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/config_64x100G_Delta-et-c032if.yaml
@@ -10,6 +10,8 @@ nodes:
multi_interface: "yes"
buffer_management_mode: "api_driven"
max_lossless_tc: "2"
+ ilpm_enable: "1"
+ forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E"
txring:
- txring_id: "0"
desc_count: "1024"
@@ -504,20 +506,6 @@ nodes:
speed: "100G"
sysport: "13"
type: "eth"
- - fec: "NONE"
- id: "257"
- lanes: "0:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "257"
- type: "mgmt 0"
- - fec: "NONE"
- id: "258"
- lanes: "1:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "258"
- type: "mgmt 1"
isg:
- id: "0"
tx_polarity: "01010101"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/ivm.sai.config.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/ivm.sai.config.yaml
new file mode 100755
index 000000000000..9d2cc0dd6099
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/ivm.sai.config.yaml
@@ -0,0 +1,9 @@
+IFCS_INIT_FILE : "/usr/share/sonic/hwsku/config_64x100G_Delta-et-c032if.yaml"
+IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_B"
+IFCS_INNO_CLI_PORT : "9999"
+IFCS_TARGET : "device"
+INNOVIUM_DIR : "/innovium"
+PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes"
+AVG_IPG_RESERVED_SIZE: "1518"
+AVG_QUEUE_RESERVED_SIZE: "1518"
+IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/ivm.sai.datapath.config.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/ivm.sai.datapath.config.yaml
new file mode 100644
index 000000000000..891b0b3e2834
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/ivm.sai.datapath.config.yaml
@@ -0,0 +1,9 @@
+ISAI_PARAM_P0_0_LS : "4608 4608 4608 4608 2880 2880"
+ISAI_PARAM_P0_1_LS : "2226 1946 1946 1890 1218 1218"
+ISAI_PARAM_P0_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_0_LS : "1536 1536 1536 1536 960 960"
+ISAI_PARAM_P1_0_LL : "3072 3072 3072 3072 1920 1920"
+ISAI_PARAM_P1_1_LS : "1778 1498 1498 1442 938 938"
+ISAI_PARAM_P1_1_LL : "2478 2478 2478 2478 2478 2478"
+ISAI_PARAM_P1_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_1_ALL : "126 126 126 126 126 126"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/pg_profile_lookup.ini b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/pg_profile_lookup.ini
new file mode 100644
index 000000000000..27775dfff78d
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/pg_profile_lookup.ini
@@ -0,0 +1,14 @@
+# PG lossless profiles.
+# speed cable size xon xoff threshold xon_offset
+ 25000 5m 1518 0 15680 3 13440
+ 50000 5m 1518 0 21152 3 13440
+ 100000 5m 1518 0 34336 3 13440
+ 400000 5m 1518 0 117376 3 13440
+ 25000 40m 1518 0 16800 3 13440
+ 50000 40m 1518 0 23392 3 13440
+ 100000 40m 1518 0 38816 3 13440
+ 400000 40m 1518 0 135296 3 13440
+ 25000 300m 1518 0 25120 3 13440
+ 50000 300m 1518 0 40032 3 13440
+ 100000 300m 1518 0 72096 3 13440
+ 400000 300m 1518 0 268416 3 13440
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/port_config.ini b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/port_config.ini
index 9999a677da49..f1cb943a12a7 100644
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/port_config.ini
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/port_config.ini
@@ -1,67 +1,65 @@
-# name lanes speed index mtu
-Ethernet0 249,250,251,252 100000 0 9126
-Ethernet4 253,254,255,256 100000 0 9126
-Ethernet8 241,242,243,244 100000 1 9126
-Ethernet12 245,246,247,248 100000 1 9126
-Ethernet16 233,234,235,236 100000 2 9126
-Ethernet20 237,238,239,240 100000 2 9126
-Ethernet24 225,226,227,228 100000 3 9126
-Ethernet28 229,230,231,232 100000 3 9126
-Ethernet32 217,218,219,220 100000 4 9126
-Ethernet36 221,222,223,224 100000 4 9126
-Ethernet40 209,210,211,212 100000 5 9126
-Ethernet44 213,214,215,216 100000 5 9126
-Ethernet48 201,202,203,204 100000 6 9126
-Ethernet52 205,206,207,208 100000 6 9126
-Ethernet56 193,194,195,196 100000 7 9126
-Ethernet60 197,198,199,200 100000 7 9126
-Ethernet64 185,186,187,188 100000 8 9126
-Ethernet68 189,190,191,192 100000 8 9126
-Ethernet72 177,178,179,180 100000 9 9126
-Ethernet76 181,182,183,184 100000 9 9126
-Ethernet80 169,170,171,172 100000 10 9126
-Ethernet84 173,174,175,176 100000 10 9126
-Ethernet88 161,162,163,164 100000 11 9126
-Ethernet92 165,166,167,168 100000 11 9126
-Ethernet96 153,154,155,156 100000 12 9126
-Ethernet100 157,158,159,160 100000 12 9126
-Ethernet104 145,146,147,148 100000 13 9126
-Ethernet108 149,150,151,152 100000 13 9126
-Ethernet112 137,138,139,140 100000 14 9126
-Ethernet116 141,142,143,144 100000 14 9126
-Ethernet120 129,130,131,132 100000 15 9126
-Ethernet124 133,134,135,136 100000 15 9126
-Ethernet128 121,122,123,124 100000 16 9126
-Ethernet132 125,126,127,128 100000 16 9126
-Ethernet136 113,114,115,116 100000 17 9126
-Ethernet140 117,118,119,120 100000 17 9126
-Ethernet144 97,98,99,100 100000 18 9126
-Ethernet148 101,102,103,104 100000 18 9126
-Ethernet152 105,106,107,108 100000 19 9126
-Ethernet156 109,110,111,112 100000 19 9126
-Ethernet160 81,82,83,84 100000 20 9126
-Ethernet164 85,86,87,88 100000 20 9126
-Ethernet168 89,90,91,92 100000 21 9126
-Ethernet172 93,94,95,96 100000 21 9126
-Ethernet176 65,66,67,68 100000 22 9126
-Ethernet180 69,70,71,72 100000 22 9126
-Ethernet184 73,74,75,76 100000 23 9126
-Ethernet188 77,78,79,80 100000 23 9126
-Ethernet192 49,50,51,52 100000 24 9126
-Ethernet196 53,54,55,56 100000 24 9126
-Ethernet200 57,58,59,60 100000 25 9126
-Ethernet204 61,62,63,64 100000 25 9126
-Ethernet208 33,34,35,36 100000 26 9126
-Ethernet212 37,38,39,40 100000 26 9126
-Ethernet216 41,42,43,44 100000 27 9126
-Ethernet220 45,46,47,48 100000 27 9126
-Ethernet224 17,18,19,20 100000 28 9126
-Ethernet228 21,22,23,24 100000 28 9126
-Ethernet232 25,26,27,28 100000 29 9126
-Ethernet236 29,30,31,32 100000 29 9126
-Ethernet240 1,2,3,4 100000 30 9126
-Ethernet244 5,6,7,8 100000 30 9126
-Ethernet248 9,10,11,12 100000 31 9126
-Ethernet252 13,14,15,16 100000 31 9126
-Ethernet256 257 10000 32 9126
-Ethernet257 258 10000 33 9126
+# name lanes alias speed index mtu
+Ethernet0 249,250,251,252 Eth1/1 100000 0 9126
+Ethernet4 253,254,255,256 Eth1/2 100000 0 9126
+Ethernet8 241,242,243,244 Eth2/1 100000 1 9126
+Ethernet12 245,246,247,248 Eth2/2 100000 1 9126
+Ethernet16 233,234,235,236 Eth3/1 100000 2 9126
+Ethernet20 237,238,239,240 Eth3/2 100000 2 9126
+Ethernet24 225,226,227,228 Eth4/1 100000 3 9126
+Ethernet28 229,230,231,232 Eth4/2 100000 3 9126
+Ethernet32 217,218,219,220 Eth5/1 100000 4 9126
+Ethernet36 221,222,223,224 Eth5/2 100000 4 9126
+Ethernet40 209,210,211,212 Eth6/1 100000 5 9126
+Ethernet44 213,214,215,216 Eth6/1 100000 5 9126
+Ethernet48 201,202,203,204 Eth7/1 100000 6 9126
+Ethernet52 205,206,207,208 Eth7/2 100000 6 9126
+Ethernet56 193,194,195,196 Eth8/1 100000 7 9126
+Ethernet60 197,198,199,200 Eth8/2 100000 7 9126
+Ethernet64 185,186,187,188 Eth9/2 100000 8 9126
+Ethernet68 189,190,191,192 Eth9/2 100000 8 9126
+Ethernet72 177,178,179,180 Eth10/1 100000 9 9126
+Ethernet76 181,182,183,184 Eth10/2 100000 9 9126
+Ethernet80 169,170,171,172 Eth11/1 100000 10 9126
+Ethernet84 173,174,175,176 Eth11/2 100000 10 9126
+Ethernet88 161,162,163,164 Eth12/1 100000 11 9126
+Ethernet92 165,166,167,168 Eth12/2 100000 11 9126
+Ethernet96 153,154,155,156 Eth13/1 100000 12 9126
+Ethernet100 157,158,159,160 Eth13/2 100000 12 9126
+Ethernet104 145,146,147,148 Eth14/1 100000 13 9126
+Ethernet108 149,150,151,152 Eth14/2 100000 13 9126
+Ethernet112 137,138,139,140 Eth15/1 100000 14 9126
+Ethernet116 141,142,143,144 Eth15/2 100000 14 9126
+Ethernet120 129,130,131,132 Eth16/1 100000 15 9126
+Ethernet124 133,134,135,136 Eth16/2 100000 15 9126
+Ethernet128 121,122,123,124 Eth17/1 100000 16 9126
+Ethernet132 125,126,127,128 Eth17/2 100000 16 9126
+Ethernet136 113,114,115,116 Eth18/1 100000 17 9126
+Ethernet140 117,118,119,120 Eth18/2 100000 17 9126
+Ethernet144 97,98,99,100 Eth19/1 100000 18 9126
+Ethernet148 101,102,103,104 Eth19/2 100000 18 9126
+Ethernet152 105,106,107,108 Eth20/1 100000 19 9126
+Ethernet156 109,110,111,112 Eth20/2 100000 19 9126
+Ethernet160 81,82,83,84 Eth21/1 100000 20 9126
+Ethernet164 85,86,87,88 Eth21/2 100000 20 9126
+Ethernet168 89,90,91,92 Eth22/1 100000 21 9126
+Ethernet172 93,94,95,96 Eth22/2 100000 21 9126
+Ethernet176 65,66,67,68 Eth23/1 100000 22 9126
+Ethernet180 69,70,71,72 Eth23/2 100000 22 9126
+Ethernet184 73,74,75,76 Eth24/1 100000 23 9126
+Ethernet188 77,78,79,80 Eth24/2 100000 23 9126
+Ethernet192 49,50,51,52 Eth25/1 100000 24 9126
+Ethernet196 53,54,55,56 Eth25/2 100000 24 9126
+Ethernet200 57,58,59,60 Eth26/1 100000 25 9126
+Ethernet204 61,62,63,64 Eth26/2 100000 25 9126
+Ethernet208 33,34,35,36 Eth27/1 100000 26 9126
+Ethernet212 37,38,39,40 Eth27/2 100000 26 9126
+Ethernet216 41,42,43,44 Eth28/1 100000 27 9126
+Ethernet220 45,46,47,48 Eth28/2 100000 27 9126
+Ethernet224 17,18,19,20 Eth29/1 100000 28 9126
+Ethernet228 21,22,23,24 Eth29/2 100000 28 9126
+Ethernet232 25,26,27,28 Eth30/1 100000 29 9126
+Ethernet236 29,30,31,32 Eth30/2 100000 29 9126
+Ethernet240 1,2,3,4 Eth31/1 100000 30 9126
+Ethernet244 5,6,7,8 Eth31/2 100000 30 9126
+Ethernet248 9,10,11,12 Eth32/1 100000 31 9126
+Ethernet252 13,14,15,16 Eth32/2 100000 31 9126
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/qos.json.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/qos.json.j2
index 16f9b42a2166..3938fc1a05c4 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/qos.json.j2
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/qos.json.j2
@@ -1,14 +1,3 @@
-{# Default values which will be used if no actual configura available #}
-
-{% set default_ports_num = 64 -%}
-{# 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 %}
@@ -19,24 +8,24 @@
{
"TC_TO_QUEUE_MAP":{
"AZURE":{
- "1":"1",
"0":"0",
- "3":"3",
+ "1":"1",
"2":"2",
- "5":"5",
+ "3":"3",
"4":"4",
- "7":"7",
- "6":"6"
+ "5":"5",
+ "6":"6",
+ "7":"7"
}
},
"TC_TO_PRIORITY_GROUP_MAP": {
"AZURE": {
- "1": "0",
"0": "0",
- "3": "0",
+ "1": "0",
"2": "0",
- "4": "1",
- "5": "2",
+ "3": "1",
+ "4": "2",
+ "5": "0",
"6": "0",
"7": "0"
}
@@ -46,9 +35,9 @@
"0":"0",
"1":"0",
"2":"0",
- "3":"0",
+ "3":"3",
"4":"4",
- "5":"5",
+ "5":"0",
"6":"0",
"7":"0",
"8":"1",
@@ -114,7 +103,12 @@
"tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
"tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
"dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
- "pfc_enable": "4,5"
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
}
}
}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/qos_defaults_def_lossy.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/qos_defaults_def_lossy.j2
new file mode 100755
index 000000000000..205242d82910
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/qos_defaults_def_lossy.j2
@@ -0,0 +1,118 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"0",
+ "4":"0",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"0",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]"
+ }
+ },
+ "SCHEDULER": {
+ "scheduler.7": {
+ "type": "STRICT"
+ }
+ },
+ "QUEUE": {
+ "{{ port_names }}|7": {
+ "scheduler": "[SCHEDULER|scheduler.7]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/qos_defaults_t1.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/qos_defaults_t1.j2
new file mode 100755
index 000000000000..3938fc1a05c4
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/qos_defaults_t1.j2
@@ -0,0 +1,114 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"3",
+ "4":"4",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"1",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/sai.profile b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/sai.profile
index 0769b3063a12..aba4fc81fb17 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/sai.profile
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x100/sai.profile
@@ -1 +1 @@
-SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/inno.config.yaml
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/alt_cfg/config_64x200G_Delta-et-c032if_aux.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/alt_cfg/config_64x200G_Delta-et-c032if_aux.yaml
new file mode 100755
index 000000000000..4b75a205ab5c
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/alt_cfg/config_64x200G_Delta-et-c032if_aux.yaml
@@ -0,0 +1,653 @@
+ifcs:
+ options:
+ log_level: "info"
+nodes:
+- node_id: "0"
+ options:
+ sku: "configs/sku/innovium.77700_B"
+ netdev:
+ - auto_create: "no"
+ multi_interface: "yes"
+ buffer_management_mode: "api_driven"
+ max_lossless_tc: "2"
+ txring:
+ - txring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ rxring:
+ - rxring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44"
+ - rxring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45"
+ - rxring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46"
+ - rxring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47"
+ sys_clk: "1720"
+ ifc_clk: "1200"
+ mac_clk: "1340"
+
+ devports:
+ - id: "0"
+ sysport: "1000"
+ type: "cpu"
+ - fec: "KPFEC"
+ id: "249"
+ lanes: "0:4"
+ serdes_group: "31"
+ speed: "200G"
+ sysport: "249"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "253"
+ lanes: "4:4"
+ serdes_group: "31"
+ speed: "200G"
+ sysport: "253"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "241"
+ lanes: "0:4"
+ serdes_group: "30"
+ speed: "200G"
+ sysport: "241"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "245"
+ lanes: "4:4"
+ serdes_group: "30"
+ speed: "200G"
+ sysport: "245"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "233"
+ lanes: "0:4"
+ serdes_group: "29"
+ speed: "200G"
+ sysport: "233"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "237"
+ lanes: "4:4"
+ serdes_group: "29"
+ speed: "200G"
+ sysport: "237"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "225"
+ lanes: "0:4"
+ serdes_group: "28"
+ speed: "200G"
+ sysport: "225"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "229"
+ lanes: "4:4"
+ serdes_group: "28"
+ speed: "200G"
+ sysport: "229"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "217"
+ lanes: "0:4"
+ serdes_group: "27"
+ speed: "200G"
+ sysport: "217"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "221"
+ lanes: "4:4"
+ serdes_group: "27"
+ speed: "200G"
+ sysport: "221"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "209"
+ lanes: "0:4"
+ serdes_group: "26"
+ speed: "200G"
+ sysport: "209"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "213"
+ lanes: "4:4"
+ serdes_group: "26"
+ speed: "200G"
+ sysport: "213"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "201"
+ lanes: "0:4"
+ serdes_group: "25"
+ speed: "200G"
+ sysport: "201"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "205"
+ lanes: "4:4"
+ serdes_group: "25"
+ speed: "200G"
+ sysport: "205"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "193"
+ lanes: "0:4"
+ serdes_group: "24"
+ speed: "200G"
+ sysport: "193"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "197"
+ lanes: "4:4"
+ serdes_group: "24"
+ speed: "200G"
+ sysport: "197"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "185"
+ lanes: "0:4"
+ serdes_group: "23"
+ speed: "200G"
+ sysport: "185"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "189"
+ lanes: "4:4"
+ serdes_group: "23"
+ speed: "200G"
+ sysport: "189"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "177"
+ lanes: "0:4"
+ serdes_group: "22"
+ speed: "200G"
+ sysport: "177"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "181"
+ lanes: "4:4"
+ serdes_group: "22"
+ speed: "200G"
+ sysport: "181"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "169"
+ lanes: "0:4"
+ serdes_group: "21"
+ speed: "200G"
+ sysport: "169"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "173"
+ lanes: "4:4"
+ serdes_group: "21"
+ speed: "200G"
+ sysport: "173"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "161"
+ lanes: "0:4"
+ serdes_group: "20"
+ speed: "200G"
+ sysport: "161"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "165"
+ lanes: "4:4"
+ serdes_group: "20"
+ speed: "200G"
+ sysport: "165"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "153"
+ lanes: "0:4"
+ serdes_group: "19"
+ speed: "200G"
+ sysport: "153"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "157"
+ lanes: "4:4"
+ serdes_group: "19"
+ speed: "200G"
+ sysport: "157"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "145"
+ lanes: "0:4"
+ serdes_group: "18"
+ speed: "200G"
+ sysport: "145"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "149"
+ lanes: "4:4"
+ serdes_group: "18"
+ speed: "200G"
+ sysport: "149"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "137"
+ lanes: "0:4"
+ serdes_group: "17"
+ speed: "200G"
+ sysport: "137"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "141"
+ lanes: "4:4"
+ serdes_group: "17"
+ speed: "200G"
+ sysport: "141"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "129"
+ lanes: "0:4"
+ serdes_group: "16"
+ speed: "200G"
+ sysport: "129"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "133"
+ lanes: "4:4"
+ serdes_group: "16"
+ speed: "200G"
+ sysport: "133"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "121"
+ lanes: "0:4"
+ serdes_group: "15"
+ speed: "200G"
+ sysport: "121"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "125"
+ lanes: "4:4"
+ serdes_group: "15"
+ speed: "200G"
+ sysport: "125"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "113"
+ lanes: "0:4"
+ serdes_group: "14"
+ speed: "200G"
+ sysport: "113"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "117"
+ lanes: "4:4"
+ serdes_group: "14"
+ speed: "200G"
+ sysport: "117"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "97"
+ lanes: "0:4"
+ serdes_group: "12"
+ speed: "200G"
+ sysport: "97"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "101"
+ lanes: "4:4"
+ serdes_group: "12"
+ speed: "200G"
+ sysport: "101"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "105"
+ lanes: "0:4"
+ serdes_group: "13"
+ speed: "200G"
+ sysport: "105"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "109"
+ lanes: "4:4"
+ serdes_group: "13"
+ speed: "200G"
+ sysport: "109"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "81"
+ lanes: "0:4"
+ serdes_group: "10"
+ speed: "200G"
+ sysport: "81"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "85"
+ lanes: "4:4"
+ serdes_group: "10"
+ speed: "200G"
+ sysport: "85"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "89"
+ lanes: "0:4"
+ serdes_group: "11"
+ speed: "200G"
+ sysport: "89"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "93"
+ lanes: "4:4"
+ serdes_group: "11"
+ speed: "200G"
+ sysport: "93"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "65"
+ lanes: "0:4"
+ serdes_group: "8"
+ speed: "200G"
+ sysport: "65"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "69"
+ lanes: "4:4"
+ serdes_group: "8"
+ speed: "200G"
+ sysport: "69"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "73"
+ lanes: "0:4"
+ serdes_group: "9"
+ speed: "200G"
+ sysport: "73"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "77"
+ lanes: "4:4"
+ serdes_group: "9"
+ speed: "200G"
+ sysport: "77"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "49"
+ lanes: "0:4"
+ serdes_group: "6"
+ speed: "200G"
+ sysport: "49"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "53"
+ lanes: "4:4"
+ serdes_group: "6"
+ speed: "200G"
+ sysport: "53"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "57"
+ lanes: "0:4"
+ serdes_group: "7"
+ speed: "200G"
+ sysport: "57"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "61"
+ lanes: "4:4"
+ serdes_group: "7"
+ speed: "200G"
+ sysport: "61"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "33"
+ lanes: "0:4"
+ serdes_group: "4"
+ speed: "200G"
+ sysport: "33"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "37"
+ lanes: "4:4"
+ serdes_group: "4"
+ speed: "200G"
+ sysport: "37"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "41"
+ lanes: "0:4"
+ serdes_group: "5"
+ speed: "200G"
+ sysport: "41"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "45"
+ lanes: "4:4"
+ serdes_group: "5"
+ speed: "200G"
+ sysport: "45"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "17"
+ lanes: "0:4"
+ serdes_group: "2"
+ speed: "200G"
+ sysport: "17"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "21"
+ lanes: "4:4"
+ serdes_group: "2"
+ speed: "200G"
+ sysport: "21"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "25"
+ lanes: "0:4"
+ serdes_group: "3"
+ speed: "200G"
+ sysport: "25"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "29"
+ lanes: "4:4"
+ serdes_group: "3"
+ speed: "200G"
+ sysport: "29"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "1"
+ lanes: "0:4"
+ serdes_group: "0"
+ speed: "200G"
+ sysport: "1"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "5"
+ lanes: "4:4"
+ serdes_group: "0"
+ speed: "200G"
+ sysport: "5"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "9"
+ lanes: "0:4"
+ serdes_group: "1"
+ speed: "200G"
+ sysport: "9"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "13"
+ lanes: "4:4"
+ serdes_group: "1"
+ speed: "200G"
+ sysport: "13"
+ type: "eth"
+ - fec: "NONE"
+ id: "257"
+ lanes: "0:1"
+ serdes_group: "32"
+ speed: "10G"
+ sysport: "257"
+ type: "mgmt 0"
+ - fec: "NONE"
+ id: "258"
+ lanes: "1:1"
+ serdes_group: "32"
+ speed: "10G"
+ sysport: "258"
+ type: "mgmt 1"
+ isg:
+ - id: "0"
+ tx_polarity: "01010101"
+ rx_polarity: "01100000"
+ lane_swap: "23641075"
+ - id: "1"
+ tx_polarity: "10110000"
+ rx_polarity: "11111111"
+ lane_swap: "64317520"
+ - id: "2"
+ tx_polarity: "00000000"
+ rx_polarity: "00000011"
+ lane_swap: "63147520"
+ - id: "3"
+ tx_polarity: "01101000"
+ rx_polarity: "00001110"
+ lane_swap: "31572046"
+ - id: "4"
+ tx_polarity: "00111000"
+ rx_polarity: "00001000"
+ lane_swap: "46105732"
+ - id: "5"
+ tx_polarity: "10111111"
+ rx_polarity: "11101000"
+ lane_swap: "27153604"
+ - id: "6"
+ tx_polarity: "01101110"
+ rx_polarity: "00001101"
+ lane_swap: "46503721"
+ - id: "7"
+ tx_polarity: "01000100"
+ rx_polarity: "10000101"
+ lane_swap: "03671245"
+ - id: "8"
+ tx_polarity: "01110101"
+ rx_polarity: "00010000"
+ lane_swap: "12640375"
+ - id: "9"
+ tx_polarity: "01011100"
+ rx_polarity: "11001111"
+ lane_swap: "02561347"
+ - id: "10"
+ tx_polarity: "01110110"
+ rx_polarity: "11000000"
+ lane_swap: "12740365"
+ - id: "11"
+ tx_polarity: "00111000"
+ rx_polarity: "00010111"
+ lane_swap: "01572436"
+ - id: "12"
+ tx_polarity: "00001111"
+ rx_polarity: "10111001"
+ lane_swap: "54320176"
+ - id: "13"
+ tx_polarity: "10011101"
+ rx_polarity: "00111011"
+ lane_swap: "26153704"
+ - id: "14"
+ tx_polarity: "00110000"
+ rx_polarity: "11010000"
+ lane_swap: "37452601"
+ - id: "15"
+ tx_polarity: "11100010"
+ rx_polarity: "01110011"
+ lane_swap: "51370462"
+ - id: "16"
+ tx_polarity: "10111010"
+ rx_polarity: "11010011"
+ lane_swap: "36152704"
+ - id: "17"
+ tx_polarity: "01011101"
+ rx_polarity: "00110001"
+ lane_swap: "45621073"
+ - id: "18"
+ tx_polarity: "11011111"
+ rx_polarity: "11001011"
+ lane_swap: "26143705"
+ - id: "19"
+ tx_polarity: "00100110"
+ rx_polarity: "00001001"
+ lane_swap: "42730165"
+ - id: "20"
+ tx_polarity: "10011011"
+ rx_polarity: "01101101"
+ lane_swap: "54217603"
+ - id: "21"
+ tx_polarity: "00101110"
+ rx_polarity: "10111111"
+ lane_swap: "26031745"
+ - id: "22"
+ tx_polarity: "01001110"
+ rx_polarity: "00111001"
+ lane_swap: "36024715"
+ - id: "23"
+ tx_polarity: "10101101"
+ rx_polarity: "01010011"
+ lane_swap: "45621370"
+ - id: "24"
+ tx_polarity: "11001110"
+ rx_polarity: "00011111"
+ lane_swap: "65234701"
+ - id: "25"
+ tx_polarity: "01110001"
+ rx_polarity: "01010111"
+ lane_swap: "37601452"
+ - id: "26"
+ tx_polarity: "01000100"
+ rx_polarity: "00001111"
+ lane_swap: "65034721"
+ - id: "27"
+ tx_polarity: "10111101"
+ rx_polarity: "11000101"
+ lane_swap: "34501672"
+ - id: "28"
+ tx_polarity: "01111000"
+ rx_polarity: "01110110"
+ lane_swap: "43061275"
+ - id: "29"
+ tx_polarity: "11110111"
+ rx_polarity: "11100111"
+ lane_swap: "57304621"
+ - id: "30"
+ tx_polarity: "10000100"
+ rx_polarity: "00101111"
+ lane_swap: "47125603"
+ - id: "31"
+ tx_polarity: "11111111"
+ rx_polarity: "11100010"
+ lane_swap: "13460275"
+ - id: "32"
+ tx_polarity: "00000000"
+ rx_polarity: "00000000"
+ lane_swap: "01234567"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/alt_cfg/port_config_aux b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/alt_cfg/port_config_aux
new file mode 100644
index 000000000000..48971bbb7c16
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/alt_cfg/port_config_aux
@@ -0,0 +1,67 @@
+# name lanes alias speed index mtu
+Ethernet0 249,250,251,252 Eth1/1 200000 0 9126
+Ethernet4 253,254,255,256 Eth1/2 200000 0 9126
+Ethernet8 241,242,243,244 Eth2/1 200000 1 9126
+Ethernet12 245,246,247,248 Eth2/2 200000 1 9126
+Ethernet16 233,234,235,236 Eth3/1 200000 2 9126
+Ethernet20 237,238,239,240 Eth3/2 200000 2 9126
+Ethernet24 225,226,227,228 Eth4/1 200000 3 9126
+Ethernet28 229,230,231,232 Eth4/2 200000 3 9126
+Ethernet32 217,218,219,220 Eth5/1 200000 4 9126
+Ethernet36 221,222,223,224 Eth5/2 200000 4 9126
+Ethernet40 209,210,211,212 Eth6/1 200000 5 9126
+Ethernet44 213,214,215,216 Eth6/1 200000 5 9126
+Ethernet48 201,202,203,204 Eth7/1 200000 6 9126
+Ethernet52 205,206,207,208 Eth7/2 200000 6 9126
+Ethernet56 193,194,195,196 Eth8/1 200000 7 9126
+Ethernet60 197,198,199,200 Eth8/2 200000 7 9126
+Ethernet64 185,186,187,188 Eth9/2 200000 8 9126
+Ethernet68 189,190,191,192 Eth9/2 200000 8 9126
+Ethernet72 177,178,179,180 Eth10/1 200000 9 9126
+Ethernet76 181,182,183,184 Eth10/2 200000 9 9126
+Ethernet80 169,170,171,172 Eth11/1 200000 10 9126
+Ethernet84 173,174,175,176 Eth11/2 200000 10 9126
+Ethernet88 161,162,163,164 Eth12/1 200000 11 9126
+Ethernet92 165,166,167,168 Eth12/2 200000 11 9126
+Ethernet96 153,154,155,156 Eth13/1 200000 12 9126
+Ethernet100 157,158,159,160 Eth13/2 200000 12 9126
+Ethernet104 145,146,147,148 Eth14/1 200000 13 9126
+Ethernet108 149,150,151,152 Eth14/2 200000 13 9126
+Ethernet112 137,138,139,140 Eth15/1 200000 14 9126
+Ethernet116 141,142,143,144 Eth15/2 200000 14 9126
+Ethernet120 129,130,131,132 Eth16/1 200000 15 9126
+Ethernet124 133,134,135,136 Eth16/2 200000 15 9126
+Ethernet128 121,122,123,124 Eth17/1 200000 16 9126
+Ethernet132 125,126,127,128 Eth17/2 200000 16 9126
+Ethernet136 113,114,115,116 Eth18/1 200000 17 9126
+Ethernet140 117,118,119,120 Eth18/2 200000 17 9126
+Ethernet144 97,98,99,100 Eth19/1 200000 18 9126
+Ethernet148 101,102,103,104 Eth19/2 200000 18 9126
+Ethernet152 105,106,107,108 Eth20/1 200000 19 9126
+Ethernet156 109,110,111,112 Eth20/2 200000 19 9126
+Ethernet160 81,82,83,84 Eth21/1 200000 20 9126
+Ethernet164 85,86,87,88 Eth21/2 200000 20 9126
+Ethernet168 89,90,91,92 Eth22/1 200000 21 9126
+Ethernet172 93,94,95,96 Eth22/2 200000 21 9126
+Ethernet176 65,66,67,68 Eth23/1 200000 22 9126
+Ethernet180 69,70,71,72 Eth23/2 200000 22 9126
+Ethernet184 73,74,75,76 Eth24/1 200000 23 9126
+Ethernet188 77,78,79,80 Eth24/2 200000 23 9126
+Ethernet192 49,50,51,52 Eth25/1 200000 24 9126
+Ethernet196 53,54,55,56 Eth25/2 200000 24 9126
+Ethernet200 57,58,59,60 Eth26/1 200000 25 9126
+Ethernet204 61,62,63,64 Eth26/2 200000 25 9126
+Ethernet208 33,34,35,36 Eth27/1 200000 26 9126
+Ethernet212 37,38,39,40 Eth27/2 200000 26 9126
+Ethernet216 41,42,43,44 Eth28/1 200000 27 9126
+Ethernet220 45,46,47,48 Eth28/2 200000 27 9126
+Ethernet224 17,18,19,20 Eth29/1 200000 28 9126
+Ethernet228 21,22,23,24 Eth29/2 200000 28 9126
+Ethernet232 25,26,27,28 Eth30/1 200000 29 9126
+Ethernet236 29,30,31,32 Eth30/2 200000 29 9126
+Ethernet240 1,2,3,4 Eth31/1 200000 30 9126
+Ethernet244 5,6,7,8 Eth31/2 200000 30 9126
+Ethernet248 9,10,11,12 Eth32/1 200000 31 9126
+Ethernet252 13,14,15,16 Eth32/2 200000 31 9126
+Ethernet256 257 Aux1 10000 32 9126
+Ethernet257 258 Aux2 10000 33 9126
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/buffers.json.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/buffers.json.j2
index 45cebf3b7144..ada7dca895ce 100644
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/buffers.json.j2
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/buffers.json.j2
@@ -1,6 +1,5 @@
{# Default values which will be used if no actual configura available #}
-{% set default_cable = '300m' %}
-{% set default_ports_num = 64 -%}
+{% set default_cable = '40m' %}
{# Port configuration to cable length look-up table #}
{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #}
@@ -12,44 +11,53 @@
}
%}
-{%- 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 -%}
+{%- 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 -%}
- {%- 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 -%}
+ {%- 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 %}
+ {%- else %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- 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 %}
@@ -57,6 +65,15 @@
{% 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": "47218432",
@@ -64,7 +81,7 @@
"mode": "dynamic",
"xoff": "17708800"
},
- "egress_lossy_pool": {
+ "lossy_pool": {
"size": "18874368",
"type": "egress",
"mode": "dynamic",
@@ -74,46 +91,46 @@
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
- "xoff":"1433600",
+ "xoff":"38816",
"size":"1518",
- "dynamic_th":"-4",
- "xon_offset":"6272"
+ "dynamic_th":"3",
+ "xon_offset":"13440"
},
- "ingress_lossy_profile": {
+ "egress_lossless_profile": {
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
- "egress_lossless_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"0",
- "static_th":"9721600"
+ "static_th":"9497600"
},
"egress_lossy_profile": {
- "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "pool":"[BUFFER_POOL|lossy_pool]",
"size":"1518",
"dynamic_th":"3"
}
},
"BUFFER_PG": {
- "{{ port_names }}|0-3": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
- "{{ port_names }}|4-5": {
+ "{{ port_names }}|3-4": {
"profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
},
- "{{ port_names }}|6-7": {
- "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}
},
"BUFFER_QUEUE": {
- "{{ port_names }}|4-5": {
- "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
},
- "{{ port_names }}|0-3": {
+ "{{ port_names }}|0-2": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
},
- "{{ port_names }}|6-7": {
+ "{{ port_names }}|5-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}
}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/buffers_defaults_def_lossy.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/buffers_defaults_def_lossy.j2
new file mode 100644
index 000000000000..fa2b49e6340a
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/buffers_defaults_def_lossy.j2
@@ -0,0 +1,38 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+{
+ "BUFFER_POOL": {
+ "lossy_pool": {
+ "size": "56985600",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/buffers_defaults_t1.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/buffers_defaults_t1.j2
new file mode 100644
index 000000000000..ada7dca895ce
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/buffers_defaults_t1.j2
@@ -0,0 +1,137 @@
+{# Default values which will be used if no actual configura available #}
+{% set default_cable = '40m' %}
+
+{# 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 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 %}
+ {%- 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 %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- endif %}
+{%- endmacro %}
+
+{%- if DEVICE_METADATA is defined %}
+{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
+{%- 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": "47218432",
+ "type": "ingress",
+ "mode": "dynamic",
+ "xoff": "17708800"
+ },
+ "lossy_pool": {
+ "size": "18874368",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "xoff":"38816",
+ "size":"1518",
+ "dynamic_th":"3",
+ "xon_offset":"13440"
+ },
+ "egress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"9497600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ },
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ },
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/config_64x200G_Delta-et-c032if.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/config_64x200G_Delta-et-c032if.yaml
index 4b75a205ab5c..cbf750c1c18a 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/config_64x200G_Delta-et-c032if.yaml
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/config_64x200G_Delta-et-c032if.yaml
@@ -10,6 +10,8 @@ nodes:
multi_interface: "yes"
buffer_management_mode: "api_driven"
max_lossless_tc: "2"
+ ilpm_enable: "1"
+ forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E"
txring:
- txring_id: "0"
desc_count: "1024"
@@ -504,20 +506,6 @@ nodes:
speed: "200G"
sysport: "13"
type: "eth"
- - fec: "NONE"
- id: "257"
- lanes: "0:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "257"
- type: "mgmt 0"
- - fec: "NONE"
- id: "258"
- lanes: "1:1"
- serdes_group: "32"
- speed: "10G"
- sysport: "258"
- type: "mgmt 1"
isg:
- id: "0"
tx_polarity: "01010101"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/ivm.sai.config.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/ivm.sai.config.yaml
new file mode 100755
index 000000000000..1f34d882ff82
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/ivm.sai.config.yaml
@@ -0,0 +1,9 @@
+IFCS_INIT_FILE : "/usr/share/sonic/hwsku/config_64x200G_Delta-et-c032if.yaml"
+IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_B"
+IFCS_INNO_CLI_PORT : "9999"
+IFCS_TARGET : "device"
+INNOVIUM_DIR : "/innovium"
+PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes"
+AVG_IPG_RESERVED_SIZE: "1518"
+AVG_QUEUE_RESERVED_SIZE: "1518"
+IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/ivm.sai.datapath.config.yaml b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/ivm.sai.datapath.config.yaml
new file mode 100644
index 000000000000..891b0b3e2834
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/ivm.sai.datapath.config.yaml
@@ -0,0 +1,9 @@
+ISAI_PARAM_P0_0_LS : "4608 4608 4608 4608 2880 2880"
+ISAI_PARAM_P0_1_LS : "2226 1946 1946 1890 1218 1218"
+ISAI_PARAM_P0_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_0_LS : "1536 1536 1536 1536 960 960"
+ISAI_PARAM_P1_0_LL : "3072 3072 3072 3072 1920 1920"
+ISAI_PARAM_P1_1_LS : "1778 1498 1498 1442 938 938"
+ISAI_PARAM_P1_1_LL : "2478 2478 2478 2478 2478 2478"
+ISAI_PARAM_P1_1_ALS : "434 154 154 98 98 98"
+ISAI_PARAM_P1_1_ALL : "126 126 126 126 126 126"
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/pg_profile_lookup.ini b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/pg_profile_lookup.ini
new file mode 100644
index 000000000000..27775dfff78d
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/pg_profile_lookup.ini
@@ -0,0 +1,14 @@
+# PG lossless profiles.
+# speed cable size xon xoff threshold xon_offset
+ 25000 5m 1518 0 15680 3 13440
+ 50000 5m 1518 0 21152 3 13440
+ 100000 5m 1518 0 34336 3 13440
+ 400000 5m 1518 0 117376 3 13440
+ 25000 40m 1518 0 16800 3 13440
+ 50000 40m 1518 0 23392 3 13440
+ 100000 40m 1518 0 38816 3 13440
+ 400000 40m 1518 0 135296 3 13440
+ 25000 300m 1518 0 25120 3 13440
+ 50000 300m 1518 0 40032 3 13440
+ 100000 300m 1518 0 72096 3 13440
+ 400000 300m 1518 0 268416 3 13440
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/port_config.ini b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/port_config.ini
index 726e1a377d83..0a569b459510 100644
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/port_config.ini
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/port_config.ini
@@ -1,67 +1,65 @@
-# name lanes speed index mtu
-Ethernet0 249,250,251,252 200000 0 9126
-Ethernet4 253,254,255,256 200000 0 9126
-Ethernet8 241,242,243,244 200000 1 9126
-Ethernet12 245,246,247,248 200000 1 9126
-Ethernet16 233,234,235,236 200000 2 9126
-Ethernet20 237,238,239,240 200000 2 9126
-Ethernet24 225,226,227,228 200000 3 9126
-Ethernet28 229,230,231,232 200000 3 9126
-Ethernet32 217,218,219,220 200000 4 9126
-Ethernet36 221,222,223,224 200000 4 9126
-Ethernet40 209,210,211,212 200000 5 9126
-Ethernet44 213,214,215,216 200000 5 9126
-Ethernet48 201,202,203,204 200000 6 9126
-Ethernet52 205,206,207,208 200000 6 9126
-Ethernet56 193,194,195,196 200000 7 9126
-Ethernet60 197,198,199,200 200000 7 9126
-Ethernet64 185,186,187,188 200000 8 9126
-Ethernet68 189,190,191,192 200000 8 9126
-Ethernet72 177,178,179,180 200000 9 9126
-Ethernet76 181,182,183,184 200000 9 9126
-Ethernet80 169,170,171,172 200000 10 9126
-Ethernet84 173,174,175,176 200000 10 9126
-Ethernet88 161,162,163,164 200000 11 9126
-Ethernet92 165,166,167,168 200000 11 9126
-Ethernet96 153,154,155,156 200000 12 9126
-Ethernet100 157,158,159,160 200000 12 9126
-Ethernet104 145,146,147,148 200000 13 9126
-Ethernet108 149,150,151,152 200000 13 9126
-Ethernet112 137,138,139,140 200000 14 9126
-Ethernet116 141,142,143,144 200000 14 9126
-Ethernet120 129,130,131,132 200000 15 9126
-Ethernet124 133,134,135,136 200000 15 9126
-Ethernet128 121,122,123,124 200000 16 9126
-Ethernet132 125,126,127,128 200000 16 9126
-Ethernet136 113,114,115,116 200000 17 9126
-Ethernet140 117,118,119,120 200000 17 9126
-Ethernet144 97,98,99,100 200000 18 9126
-Ethernet148 101,102,103,104 200000 18 9126
-Ethernet152 105,106,107,108 200000 19 9126
-Ethernet156 109,110,111,112 200000 19 9126
-Ethernet160 81,82,83,84 200000 20 9126
-Ethernet164 85,86,87,88 200000 20 9126
-Ethernet168 89,90,91,92 200000 21 9126
-Ethernet172 93,94,95,96 200000 21 9126
-Ethernet176 65,66,67,68 200000 22 9126
-Ethernet180 69,70,71,72 200000 22 9126
-Ethernet184 73,74,75,76 200000 23 9126
-Ethernet188 77,78,79,80 200000 23 9126
-Ethernet192 49,50,51,52 200000 24 9126
-Ethernet196 53,54,55,56 200000 24 9126
-Ethernet200 57,58,59,60 200000 25 9126
-Ethernet204 61,62,63,64 200000 25 9126
-Ethernet208 33,34,35,36 200000 26 9126
-Ethernet212 37,38,39,40 200000 26 9126
-Ethernet216 41,42,43,44 200000 27 9126
-Ethernet220 45,46,47,48 200000 27 9126
-Ethernet224 17,18,19,20 200000 28 9126
-Ethernet228 21,22,23,24 200000 28 9126
-Ethernet232 25,26,27,28 200000 29 9126
-Ethernet236 29,30,31,32 200000 29 9126
-Ethernet240 1,2,3,4 200000 30 9126
-Ethernet244 5,6,7,8 200000 30 9126
-Ethernet248 9,10,11,12 200000 31 9126
-Ethernet252 13,14,15,16 200000 31 9126
-Ethernet256 257 10000 32 9126
-Ethernet257 258 10000 33 9126
+# name lanes alias speed index mtu
+Ethernet0 249,250,251,252 Eth1/1 200000 0 9126
+Ethernet4 253,254,255,256 Eth1/2 200000 0 9126
+Ethernet8 241,242,243,244 Eth2/1 200000 1 9126
+Ethernet12 245,246,247,248 Eth2/2 200000 1 9126
+Ethernet16 233,234,235,236 Eth3/1 200000 2 9126
+Ethernet20 237,238,239,240 Eth3/2 200000 2 9126
+Ethernet24 225,226,227,228 Eth4/1 200000 3 9126
+Ethernet28 229,230,231,232 Eth4/2 200000 3 9126
+Ethernet32 217,218,219,220 Eth5/1 200000 4 9126
+Ethernet36 221,222,223,224 Eth5/2 200000 4 9126
+Ethernet40 209,210,211,212 Eth6/1 200000 5 9126
+Ethernet44 213,214,215,216 Eth6/1 200000 5 9126
+Ethernet48 201,202,203,204 Eth7/1 200000 6 9126
+Ethernet52 205,206,207,208 Eth7/2 200000 6 9126
+Ethernet56 193,194,195,196 Eth8/1 200000 7 9126
+Ethernet60 197,198,199,200 Eth8/2 200000 7 9126
+Ethernet64 185,186,187,188 Eth9/2 200000 8 9126
+Ethernet68 189,190,191,192 Eth9/2 200000 8 9126
+Ethernet72 177,178,179,180 Eth10/1 200000 9 9126
+Ethernet76 181,182,183,184 Eth10/2 200000 9 9126
+Ethernet80 169,170,171,172 Eth11/1 200000 10 9126
+Ethernet84 173,174,175,176 Eth11/2 200000 10 9126
+Ethernet88 161,162,163,164 Eth12/1 200000 11 9126
+Ethernet92 165,166,167,168 Eth12/2 200000 11 9126
+Ethernet96 153,154,155,156 Eth13/1 200000 12 9126
+Ethernet100 157,158,159,160 Eth13/2 200000 12 9126
+Ethernet104 145,146,147,148 Eth14/1 200000 13 9126
+Ethernet108 149,150,151,152 Eth14/2 200000 13 9126
+Ethernet112 137,138,139,140 Eth15/1 200000 14 9126
+Ethernet116 141,142,143,144 Eth15/2 200000 14 9126
+Ethernet120 129,130,131,132 Eth16/1 200000 15 9126
+Ethernet124 133,134,135,136 Eth16/2 200000 15 9126
+Ethernet128 121,122,123,124 Eth17/1 200000 16 9126
+Ethernet132 125,126,127,128 Eth17/2 200000 16 9126
+Ethernet136 113,114,115,116 Eth18/1 200000 17 9126
+Ethernet140 117,118,119,120 Eth18/2 200000 17 9126
+Ethernet144 97,98,99,100 Eth19/1 200000 18 9126
+Ethernet148 101,102,103,104 Eth19/2 200000 18 9126
+Ethernet152 105,106,107,108 Eth20/1 200000 19 9126
+Ethernet156 109,110,111,112 Eth20/2 200000 19 9126
+Ethernet160 81,82,83,84 Eth21/1 200000 20 9126
+Ethernet164 85,86,87,88 Eth21/2 200000 20 9126
+Ethernet168 89,90,91,92 Eth22/1 200000 21 9126
+Ethernet172 93,94,95,96 Eth22/2 200000 21 9126
+Ethernet176 65,66,67,68 Eth23/1 200000 22 9126
+Ethernet180 69,70,71,72 Eth23/2 200000 22 9126
+Ethernet184 73,74,75,76 Eth24/1 200000 23 9126
+Ethernet188 77,78,79,80 Eth24/2 200000 23 9126
+Ethernet192 49,50,51,52 Eth25/1 200000 24 9126
+Ethernet196 53,54,55,56 Eth25/2 200000 24 9126
+Ethernet200 57,58,59,60 Eth26/1 200000 25 9126
+Ethernet204 61,62,63,64 Eth26/2 200000 25 9126
+Ethernet208 33,34,35,36 Eth27/1 200000 26 9126
+Ethernet212 37,38,39,40 Eth27/2 200000 26 9126
+Ethernet216 41,42,43,44 Eth28/1 200000 27 9126
+Ethernet220 45,46,47,48 Eth28/2 200000 27 9126
+Ethernet224 17,18,19,20 Eth29/1 200000 28 9126
+Ethernet228 21,22,23,24 Eth29/2 200000 28 9126
+Ethernet232 25,26,27,28 Eth30/1 200000 29 9126
+Ethernet236 29,30,31,32 Eth30/2 200000 29 9126
+Ethernet240 1,2,3,4 Eth31/1 200000 30 9126
+Ethernet244 5,6,7,8 Eth31/2 200000 30 9126
+Ethernet248 9,10,11,12 Eth32/1 200000 31 9126
+Ethernet252 13,14,15,16 Eth32/2 200000 31 9126
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/qos.json.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/qos.json.j2
index 16f9b42a2166..3938fc1a05c4 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/qos.json.j2
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/qos.json.j2
@@ -1,14 +1,3 @@
-{# Default values which will be used if no actual configura available #}
-
-{% set default_ports_num = 64 -%}
-{# 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 %}
@@ -19,24 +8,24 @@
{
"TC_TO_QUEUE_MAP":{
"AZURE":{
- "1":"1",
"0":"0",
- "3":"3",
+ "1":"1",
"2":"2",
- "5":"5",
+ "3":"3",
"4":"4",
- "7":"7",
- "6":"6"
+ "5":"5",
+ "6":"6",
+ "7":"7"
}
},
"TC_TO_PRIORITY_GROUP_MAP": {
"AZURE": {
- "1": "0",
"0": "0",
- "3": "0",
+ "1": "0",
"2": "0",
- "4": "1",
- "5": "2",
+ "3": "1",
+ "4": "2",
+ "5": "0",
"6": "0",
"7": "0"
}
@@ -46,9 +35,9 @@
"0":"0",
"1":"0",
"2":"0",
- "3":"0",
+ "3":"3",
"4":"4",
- "5":"5",
+ "5":"0",
"6":"0",
"7":"0",
"8":"1",
@@ -114,7 +103,12 @@
"tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
"tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
"dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
- "pfc_enable": "4,5"
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
}
}
}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/qos_defaults_def_lossy.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/qos_defaults_def_lossy.j2
new file mode 100755
index 000000000000..205242d82910
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/qos_defaults_def_lossy.j2
@@ -0,0 +1,118 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"0",
+ "4":"0",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"0",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]"
+ }
+ },
+ "SCHEDULER": {
+ "scheduler.7": {
+ "type": "STRICT"
+ }
+ },
+ "QUEUE": {
+ "{{ port_names }}|7": {
+ "scheduler": "[SCHEDULER|scheduler.7]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/qos_defaults_t1.j2 b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/qos_defaults_t1.j2
new file mode 100755
index 000000000000..3938fc1a05c4
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/qos_defaults_t1.j2
@@ -0,0 +1,114 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"3",
+ "4":"4",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"1",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/sai.profile b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/sai.profile
index 0769b3063a12..aba4fc81fb17 100755
--- a/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/sai.profile
+++ b/device/delta/x86_64-delta_et-c032if-r0/Delta-et-c032if_64x200/sai.profile
@@ -1 +1 @@
-SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/inno.config.yaml
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml
diff --git a/device/delta/x86_64-delta_et-c032if-r0/pmon_daemon_control.json b/device/delta/x86_64-delta_et-c032if-r0/pmon_daemon_control.json
new file mode 100644
index 000000000000..f490a4dc0f39
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/pmon_daemon_control.json
@@ -0,0 +1,3 @@
+{
+ "skip_thermalctld": true
+}
diff --git a/device/delta/x86_64-delta_et-c032if-r0/topo.conf b/device/delta/x86_64-delta_et-c032if-r0/topo.conf
new file mode 100644
index 000000000000..795ea43143eb
--- /dev/null
+++ b/device/delta/x86_64-delta_et-c032if-r0/topo.conf
@@ -0,0 +1 @@
+t1
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/buffers.json.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/buffers.json.j2
new file mode 100644
index 000000000000..f81abfcfc53f
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/buffers.json.j2
@@ -0,0 +1,120 @@
+{# 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(',') -%}
+
+{
+ "BUFFER_POOL": {
+ "ingress_lossless_pool": {
+ "size": "34056960",
+ "type": "ingress",
+ "mode": "dynamic",
+ "xoff": "4185600"
+ },
+ "egress_lossy_pool": {
+ "size": "14595840",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "xoff":"1433600",
+ "size":"1518",
+ "dynamic_th":"-4",
+ "xon_offset":"6272"
+ },
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "size":"0",
+ "static_th":"23001600"
+ },
+ "egress_lossless_profile": {
+ "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "size":"0",
+ "static_th":"23001600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|egress_lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-3": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ },
+ "{{ port_names }}|4-5": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
+ },
+ "{{ port_names }}|6-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|4-5": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ },
+ "{{ port_names }}|0-3": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ },
+ "{{ port_names }}|6-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/config_32x200G_Delta-evs-a-32q56.yaml b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/config_32x200G_Delta-evs-a-32q56.yaml
new file mode 100755
index 000000000000..2ba23d2a5a67
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/config_32x200G_Delta-evs-a-32q56.yaml
@@ -0,0 +1,429 @@
+ifcs:
+ options:
+ log_level: "info"
+nodes:
+- node_id: "0"
+ options:
+ sku: "configs/sku/innovium.77700_A"
+ netdev:
+ - auto_create: "no"
+ multi_interface: "yes"
+ buffer_management_mode: "api_driven"
+ max_lossless_tc: "2"
+ txring:
+ - txring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ rxring:
+ - rxring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44"
+ - rxring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45"
+ - rxring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46"
+ - rxring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47"
+ sys_clk: "1720"
+ ifc_clk: "1200"
+ mac_clk: "1340"
+
+ devports:
+ - id: "0"
+ sysport: "1000"
+ type: "cpu"
+ - fec: "KPFEC"
+ id: "249"
+ lanes: "0:8"
+ serdes_group: "31"
+ speed: "400G"
+ sysport: "249"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "241"
+ lanes: "0:8"
+ serdes_group: "30"
+ speed: "400G"
+ sysport: "241"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "233"
+ lanes: "0:8"
+ serdes_group: "29"
+ speed: "400G"
+ sysport: "233"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "225"
+ lanes: "0:8"
+ serdes_group: "28"
+ speed: "400G"
+ sysport: "225"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "217"
+ lanes: "0:8"
+ serdes_group: "27"
+ speed: "400G"
+ sysport: "217"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "209"
+ lanes: "0:8"
+ serdes_group: "26"
+ speed: "400G"
+ sysport: "209"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "201"
+ lanes: "0:8"
+ serdes_group: "25"
+ speed: "400G"
+ sysport: "201"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "193"
+ lanes: "0:8"
+ serdes_group: "24"
+ speed: "400G"
+ sysport: "193"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "185"
+ lanes: "0:8"
+ serdes_group: "23"
+ speed: "400G"
+ sysport: "185"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "177"
+ lanes: "0:8"
+ serdes_group: "22"
+ speed: "400G"
+ sysport: "177"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "169"
+ lanes: "0:8"
+ serdes_group: "21"
+ speed: "400G"
+ sysport: "169"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "161"
+ lanes: "0:8"
+ serdes_group: "20"
+ speed: "400G"
+ sysport: "161"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "153"
+ lanes: "0:8"
+ serdes_group: "19"
+ speed: "400G"
+ sysport: "153"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "145"
+ lanes: "0:8"
+ serdes_group: "18"
+ speed: "400G"
+ sysport: "145"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "137"
+ lanes: "0:8"
+ serdes_group: "17"
+ speed: "400G"
+ sysport: "137"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "129"
+ lanes: "0:8"
+ serdes_group: "16"
+ speed: "400G"
+ sysport: "129"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "121"
+ lanes: "0:8"
+ serdes_group: "15"
+ speed: "400G"
+ sysport: "121"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "113"
+ lanes: "0:8"
+ serdes_group: "14"
+ speed: "400G"
+ sysport: "113"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "97"
+ lanes: "0:8"
+ serdes_group: "12"
+ speed: "400G"
+ sysport: "97"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "105"
+ lanes: "0:8"
+ serdes_group: "13"
+ speed: "400G"
+ sysport: "105"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "81"
+ lanes: "0:8"
+ serdes_group: "10"
+ speed: "400G"
+ sysport: "81"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "89"
+ lanes: "0:8"
+ serdes_group: "11"
+ speed: "400G"
+ sysport: "89"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "65"
+ lanes: "0:8"
+ serdes_group: "8"
+ speed: "400G"
+ sysport: "65"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "73"
+ lanes: "0:8"
+ serdes_group: "9"
+ speed: "400G"
+ sysport: "73"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "49"
+ lanes: "0:8"
+ serdes_group: "6"
+ speed: "400G"
+ sysport: "49"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "57"
+ lanes: "0:8"
+ serdes_group: "7"
+ speed: "400G"
+ sysport: "57"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "33"
+ lanes: "0:8"
+ serdes_group: "4"
+ speed: "400G"
+ sysport: "33"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "41"
+ lanes: "0:8"
+ serdes_group: "5"
+ speed: "400G"
+ sysport: "41"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "17"
+ lanes: "0:8"
+ serdes_group: "2"
+ speed: "400G"
+ sysport: "17"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "25"
+ lanes: "0:8"
+ serdes_group: "3"
+ speed: "400G"
+ sysport: "25"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "1"
+ lanes: "0:8"
+ serdes_group: "0"
+ speed: "400G"
+ sysport: "1"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "9"
+ lanes: "0:8"
+ serdes_group: "1"
+ speed: "400G"
+ sysport: "9"
+ type: "eth"
+ - fec: "NONE"
+ id: "257"
+ lanes: "0:1"
+ serdes_group: "32"
+ speed: "10G"
+ sysport: "257"
+ type: "mgmt 0"
+ - fec: "NONE"
+ id: "258"
+ lanes: "1:1"
+ serdes_group: "32"
+ speed: "10G"
+ sysport: "258"
+ type: "mgmt 1"
+ isg:
+ - id: "0"
+ tx_polarity: "01010101"
+ rx_polarity: "01100000"
+ lane_swap: "23641075"
+ - id: "1"
+ tx_polarity: "10110000"
+ rx_polarity: "11111111"
+ lane_swap: "64317520"
+ - id: "2"
+ tx_polarity: "00000000"
+ rx_polarity: "00000011"
+ lane_swap: "63147520"
+ - id: "3"
+ tx_polarity: "01101000"
+ rx_polarity: "00001110"
+ lane_swap: "31572046"
+ - id: "4"
+ tx_polarity: "00111000"
+ rx_polarity: "00001000"
+ lane_swap: "46105732"
+ - id: "5"
+ tx_polarity: "10111111"
+ rx_polarity: "11101000"
+ lane_swap: "27153604"
+ - id: "6"
+ tx_polarity: "01101110"
+ rx_polarity: "00001101"
+ lane_swap: "46503721"
+ - id: "7"
+ tx_polarity: "01000100"
+ rx_polarity: "10000101"
+ lane_swap: "03671245"
+ - id: "8"
+ tx_polarity: "01110101"
+ rx_polarity: "00010000"
+ lane_swap: "12640375"
+ - id: "9"
+ tx_polarity: "01011100"
+ rx_polarity: "11001111"
+ lane_swap: "02561347"
+ - id: "10"
+ tx_polarity: "01110110"
+ rx_polarity: "11000000"
+ lane_swap: "12740365"
+ - id: "11"
+ tx_polarity: "00111000"
+ rx_polarity: "00010111"
+ lane_swap: "01572436"
+ - id: "12"
+ tx_polarity: "00001111"
+ rx_polarity: "10111001"
+ lane_swap: "54320176"
+ - id: "13"
+ tx_polarity: "10011101"
+ rx_polarity: "00111011"
+ lane_swap: "26153704"
+ - id: "14"
+ tx_polarity: "00110000"
+ rx_polarity: "11010000"
+ lane_swap: "37452601"
+ - id: "15"
+ tx_polarity: "11100010"
+ rx_polarity: "01110011"
+ lane_swap: "51370462"
+ - id: "16"
+ tx_polarity: "10111010"
+ rx_polarity: "11010011"
+ lane_swap: "36152704"
+ - id: "17"
+ tx_polarity: "01011101"
+ rx_polarity: "00110001"
+ lane_swap: "45621073"
+ - id: "18"
+ tx_polarity: "11011111"
+ rx_polarity: "11001011"
+ lane_swap: "26143705"
+ - id: "19"
+ tx_polarity: "00100110"
+ rx_polarity: "00001001"
+ lane_swap: "42730165"
+ - id: "20"
+ tx_polarity: "10011011"
+ rx_polarity: "01101101"
+ lane_swap: "54217603"
+ - id: "21"
+ tx_polarity: "00101110"
+ rx_polarity: "10111111"
+ lane_swap: "26031745"
+ - id: "22"
+ tx_polarity: "01001110"
+ rx_polarity: "00111001"
+ lane_swap: "36024715"
+ - id: "23"
+ tx_polarity: "10101101"
+ rx_polarity: "01010011"
+ lane_swap: "45621370"
+ - id: "24"
+ tx_polarity: "11001110"
+ rx_polarity: "00011111"
+ lane_swap: "65234701"
+ - id: "25"
+ tx_polarity: "01110001"
+ rx_polarity: "01010111"
+ lane_swap: "37601452"
+ - id: "26"
+ tx_polarity: "01000100"
+ rx_polarity: "00001111"
+ lane_swap: "65034721"
+ - id: "27"
+ tx_polarity: "10111101"
+ rx_polarity: "11000101"
+ lane_swap: "34501672"
+ - id: "28"
+ tx_polarity: "01111000"
+ rx_polarity: "01110110"
+ lane_swap: "43061275"
+ - id: "29"
+ tx_polarity: "11110111"
+ rx_polarity: "11100111"
+ lane_swap: "57304621"
+ - id: "30"
+ tx_polarity: "10000100"
+ rx_polarity: "00101111"
+ lane_swap: "47125603"
+ - id: "31"
+ tx_polarity: "11111111"
+ rx_polarity: "11100010"
+ lane_swap: "13460275"
+ - id: "32"
+ tx_polarity: "00000000"
+ rx_polarity: "00000000"
+ lane_swap: "01234567"
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/innovium.77700_A b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/innovium.77700_A
new file mode 100644
index 000000000000..84aa41983606
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/innovium.77700_A
@@ -0,0 +1,59 @@
+sku: innovium.77700_A
+
+device_id: 0x1b58
+
+# Hardware constraint information
+hardware:
+ num_ibs: 6
+
+ ports_per_ib: 32, 32, 32, 32, 20, 20
+ recirc_port_num: 32, 32, 32, 32, 32, 32
+ cpu_port_num: 33
+ cpu_port_ib: 0
+ mgmt_port_num: 33
+ mgmt_port_ibs: 1,2
+
+ pics_per_ib: 6, 7, 6, 5, 5, 5
+ pic_ports_per_pic: 8
+ max_serdes_speed: 50
+
+ num_shared_pics: 2
+
+ isg [0-4]:
+ ib: 0
+ pic_id: [0-4]
+
+ isg [5-9]:
+ ib: 5
+ pic_id: [0-4]
+
+ isg [10-14]:
+ ib: 1
+ pic_id: [0-4]
+
+ isg [16-20]:
+ ib: 3
+ pic_id: [0-4]
+
+ isg [21-25]:
+ ib: 4
+ pic_id: [0-4]
+
+ isg [26-30]:
+ ib: 2
+ pic_id: [0-4]
+
+ isg 15:
+ mode: 8:0
+ ib: 1
+ pic_id: 5
+
+ isg 31:
+ mode: 8:0
+ ib: 0
+ pic_id: 5
+
+ isg 32:
+ mode: 1:1
+ ib: 1, 2
+ pic_id: 6
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/ivm.sai.config.yaml b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/ivm.sai.config.yaml
new file mode 100755
index 000000000000..607e2da93126
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/ivm.sai.config.yaml
@@ -0,0 +1,9 @@
+IFCS_INIT_FILE : "/usr/share/sonic/hwsku/config_32x100G_Delta-evs-a-32q56.yaml"
+IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.55300"
+IFCS_INNO_CLI_PORT : "9999"
+IFCS_TARGET : "device"
+INNOVIUM_DIR : "/innovium"
+PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes"
+AVG_IPG_RESERVED_SIZE: "1518"
+AVG_QUEUE_RESERVED_SIZE: "1518"
+IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/ivm.sai.datapath.config.yaml b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/ivm.sai.datapath.config.yaml
new file mode 100644
index 000000000000..2dcf88fc9555
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/ivm.sai.datapath.config.yaml
@@ -0,0 +1,10 @@
+ISAI_PARAM_A000 : "0"
+ISAI_PARAM_P0_0_LS : "9216 9216"
+ISAI_PARAM_P0_1_LS : "2850 2650"
+ISAI_PARAM_P0_1_ALS : "290 90"
+ISAI_PARAM_P1_0_LS : "3072 3072"
+ISAI_PARAM_P1_0_LL : "6144 6144"
+ISAI_PARAM_P1_1_LS : "2210 2010"
+ISAI_PARAM_P1_1_LL : "1330 1330"
+ISAI_PARAM_P1_1_ALS : "290 90"
+ISAI_PARAM_P1_1_ALL : "50 50"
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/port_config.ini b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/port_config.ini
new file mode 100755
index 000000000000..7e9fc331edf7
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/port_config.ini
@@ -0,0 +1,35 @@
+# name lanes speed index mtu fec
+Ethernet0 249,250,251,252 200000 0 9126 rs
+Ethernet4 241,242,243,244 200000 1 9126 rs
+Ethernet8 233,234,235,236 200000 2 9126 rs
+Ethernet12 225,226,227,228 200000 3 9126 rs
+Ethernet16 217,218,219,220 200000 4 9126 rs
+Ethernet20 209,210,211,212 200000 5 9126 rs
+Ethernet24 201,202,203,204 200000 6 9126 rs
+Ethernet28 193,194,195,196 200000 7 9126 rs
+Ethernet32 185,186,187,188 200000 8 9126 rs
+Ethernet36 177,178,179,180 200000 9 9126 rs
+Ethernet40 169,170,171,172 200000 10 9126 rs
+Ethernet44 161,162,163,164 200000 11 9126 rs
+Ethernet48 153,154,155,156 200000 12 9126 rs
+Ethernet52 145,146,147,148 200000 13 9126 rs
+Ethernet56 137,138,139,140 200000 14 9126 rs
+Ethernet60 129,130,131,132 200000 15 9126 rs
+Ethernet64 121,122,123,124 200000 16 9126 rs
+Ethernet68 113,114,115,116 200000 17 9126 rs
+Ethernet72 97,98,99,100 200000 18 9126 rs
+Ethernet76 105,106,107,108 200000 19 9126 rs
+Ethernet80 81,82,83,84 200000 20 9126 rs
+Ethernet84 89,90,91,92 200000 21 9126 rs
+Ethernet88 65,66,67,68 200000 22 9126 rs
+Ethernet92 73,74,75,76 200000 23 9126 rs
+Ethernet96 49,50,51,52 200000 24 9126 rs
+Ethernet100 57,58,59,60 200000 25 9126 rs
+Ethernet104 33,34,35,36 200000 26 9126 rs
+Ethernet108 41,42,43,44 200000 27 9126 rs
+Ethernet112 17,18,19,20 200000 28 9126 rs
+Ethernet116 25,26,27,28 200000 29 9126 rs
+Ethernet120 1,2,3,4 200000 30 9126 rs
+Ethernet124 9,10,11,12 200000 31 9126 rs
+Ethernet256 257 10000 32 9126 none
+Ethernet257 258 10000 33 9126 none
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/qos.json.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/qos.json.j2
new file mode 100755
index 000000000000..6c734d46ff2f
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/qos.json.j2
@@ -0,0 +1,120 @@
+{# Default values which will be used if no actual configura available #}
+
+{% set default_ports_num = 32 -%}
+{# 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(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "1":"1",
+ "0":"0",
+ "3":"3",
+ "2":"2",
+ "5":"5",
+ "4":"4",
+ "7":"7",
+ "6":"6"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "1": "0",
+ "0": "0",
+ "3": "0",
+ "2": "0",
+ "4": "1",
+ "5": "2",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"0",
+ "4":"4",
+ "5":"5",
+ "6":"0",
+ "7":"0",
+ "8":"1",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "4,5"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/sai.profile b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/sai.profile
new file mode 100755
index 000000000000..aba4fc81fb17
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/Delta-evs-a-32q56/sai.profile
@@ -0,0 +1 @@
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/buffers.json.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/buffers.json.j2
new file mode 100644
index 000000000000..1ab009be2dce
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/buffers.json.j2
@@ -0,0 +1,137 @@
+{# Default values which will be used if no actual configura available #}
+{% set default_cable = '40m' %}
+
+{# 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 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 %}
+ {%- 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 %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- endif %}
+{%- endmacro %}
+
+{%- if DEVICE_METADATA is defined %}
+{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
+{%- 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": "34056960",
+ "type": "ingress",
+ "mode": "dynamic",
+ "xoff": "4185600"
+ },
+ "lossy_pool": {
+ "size": "14595840",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "xoff":"38816",
+ "size":"1518",
+ "dynamic_th":"3",
+ "xon_offset":"13440"
+ },
+ "egress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "size":"0",
+ "static_th":"23001600"
+ },
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"23001600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ },
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ },
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/buffers_defaults_def_lossy.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/buffers_defaults_def_lossy.j2
new file mode 100644
index 000000000000..c61ec1d14988
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/buffers_defaults_def_lossy.j2
@@ -0,0 +1,38 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+{
+ "BUFFER_POOL": {
+ "lossy_pool": {
+ "size": "46003200",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"23001600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/buffers_defaults_t1.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/buffers_defaults_t1.j2
new file mode 100644
index 000000000000..1ab009be2dce
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/buffers_defaults_t1.j2
@@ -0,0 +1,137 @@
+{# Default values which will be used if no actual configura available #}
+{% set default_cable = '40m' %}
+
+{# 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 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 %}
+ {%- 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 %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- endif %}
+{%- endmacro %}
+
+{%- if DEVICE_METADATA is defined %}
+{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
+{%- 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": "34056960",
+ "type": "ingress",
+ "mode": "dynamic",
+ "xoff": "4185600"
+ },
+ "lossy_pool": {
+ "size": "14595840",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "xoff":"38816",
+ "size":"1518",
+ "dynamic_th":"3",
+ "xon_offset":"13440"
+ },
+ "egress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "size":"0",
+ "static_th":"23001600"
+ },
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"23001600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ },
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ },
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/config_32x200G_Delta-evs-a-32q56.yaml b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/config_32x200G_Delta-evs-a-32q56.yaml
new file mode 100755
index 000000000000..2ba23d2a5a67
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/config_32x200G_Delta-evs-a-32q56.yaml
@@ -0,0 +1,429 @@
+ifcs:
+ options:
+ log_level: "info"
+nodes:
+- node_id: "0"
+ options:
+ sku: "configs/sku/innovium.77700_A"
+ netdev:
+ - auto_create: "no"
+ multi_interface: "yes"
+ buffer_management_mode: "api_driven"
+ max_lossless_tc: "2"
+ txring:
+ - txring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ rxring:
+ - rxring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44"
+ - rxring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45"
+ - rxring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46"
+ - rxring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47"
+ sys_clk: "1720"
+ ifc_clk: "1200"
+ mac_clk: "1340"
+
+ devports:
+ - id: "0"
+ sysport: "1000"
+ type: "cpu"
+ - fec: "KPFEC"
+ id: "249"
+ lanes: "0:8"
+ serdes_group: "31"
+ speed: "400G"
+ sysport: "249"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "241"
+ lanes: "0:8"
+ serdes_group: "30"
+ speed: "400G"
+ sysport: "241"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "233"
+ lanes: "0:8"
+ serdes_group: "29"
+ speed: "400G"
+ sysport: "233"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "225"
+ lanes: "0:8"
+ serdes_group: "28"
+ speed: "400G"
+ sysport: "225"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "217"
+ lanes: "0:8"
+ serdes_group: "27"
+ speed: "400G"
+ sysport: "217"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "209"
+ lanes: "0:8"
+ serdes_group: "26"
+ speed: "400G"
+ sysport: "209"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "201"
+ lanes: "0:8"
+ serdes_group: "25"
+ speed: "400G"
+ sysport: "201"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "193"
+ lanes: "0:8"
+ serdes_group: "24"
+ speed: "400G"
+ sysport: "193"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "185"
+ lanes: "0:8"
+ serdes_group: "23"
+ speed: "400G"
+ sysport: "185"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "177"
+ lanes: "0:8"
+ serdes_group: "22"
+ speed: "400G"
+ sysport: "177"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "169"
+ lanes: "0:8"
+ serdes_group: "21"
+ speed: "400G"
+ sysport: "169"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "161"
+ lanes: "0:8"
+ serdes_group: "20"
+ speed: "400G"
+ sysport: "161"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "153"
+ lanes: "0:8"
+ serdes_group: "19"
+ speed: "400G"
+ sysport: "153"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "145"
+ lanes: "0:8"
+ serdes_group: "18"
+ speed: "400G"
+ sysport: "145"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "137"
+ lanes: "0:8"
+ serdes_group: "17"
+ speed: "400G"
+ sysport: "137"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "129"
+ lanes: "0:8"
+ serdes_group: "16"
+ speed: "400G"
+ sysport: "129"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "121"
+ lanes: "0:8"
+ serdes_group: "15"
+ speed: "400G"
+ sysport: "121"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "113"
+ lanes: "0:8"
+ serdes_group: "14"
+ speed: "400G"
+ sysport: "113"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "97"
+ lanes: "0:8"
+ serdes_group: "12"
+ speed: "400G"
+ sysport: "97"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "105"
+ lanes: "0:8"
+ serdes_group: "13"
+ speed: "400G"
+ sysport: "105"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "81"
+ lanes: "0:8"
+ serdes_group: "10"
+ speed: "400G"
+ sysport: "81"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "89"
+ lanes: "0:8"
+ serdes_group: "11"
+ speed: "400G"
+ sysport: "89"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "65"
+ lanes: "0:8"
+ serdes_group: "8"
+ speed: "400G"
+ sysport: "65"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "73"
+ lanes: "0:8"
+ serdes_group: "9"
+ speed: "400G"
+ sysport: "73"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "49"
+ lanes: "0:8"
+ serdes_group: "6"
+ speed: "400G"
+ sysport: "49"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "57"
+ lanes: "0:8"
+ serdes_group: "7"
+ speed: "400G"
+ sysport: "57"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "33"
+ lanes: "0:8"
+ serdes_group: "4"
+ speed: "400G"
+ sysport: "33"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "41"
+ lanes: "0:8"
+ serdes_group: "5"
+ speed: "400G"
+ sysport: "41"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "17"
+ lanes: "0:8"
+ serdes_group: "2"
+ speed: "400G"
+ sysport: "17"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "25"
+ lanes: "0:8"
+ serdes_group: "3"
+ speed: "400G"
+ sysport: "25"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "1"
+ lanes: "0:8"
+ serdes_group: "0"
+ speed: "400G"
+ sysport: "1"
+ type: "eth"
+ - fec: "KPFEC"
+ id: "9"
+ lanes: "0:8"
+ serdes_group: "1"
+ speed: "400G"
+ sysport: "9"
+ type: "eth"
+ - fec: "NONE"
+ id: "257"
+ lanes: "0:1"
+ serdes_group: "32"
+ speed: "10G"
+ sysport: "257"
+ type: "mgmt 0"
+ - fec: "NONE"
+ id: "258"
+ lanes: "1:1"
+ serdes_group: "32"
+ speed: "10G"
+ sysport: "258"
+ type: "mgmt 1"
+ isg:
+ - id: "0"
+ tx_polarity: "01010101"
+ rx_polarity: "01100000"
+ lane_swap: "23641075"
+ - id: "1"
+ tx_polarity: "10110000"
+ rx_polarity: "11111111"
+ lane_swap: "64317520"
+ - id: "2"
+ tx_polarity: "00000000"
+ rx_polarity: "00000011"
+ lane_swap: "63147520"
+ - id: "3"
+ tx_polarity: "01101000"
+ rx_polarity: "00001110"
+ lane_swap: "31572046"
+ - id: "4"
+ tx_polarity: "00111000"
+ rx_polarity: "00001000"
+ lane_swap: "46105732"
+ - id: "5"
+ tx_polarity: "10111111"
+ rx_polarity: "11101000"
+ lane_swap: "27153604"
+ - id: "6"
+ tx_polarity: "01101110"
+ rx_polarity: "00001101"
+ lane_swap: "46503721"
+ - id: "7"
+ tx_polarity: "01000100"
+ rx_polarity: "10000101"
+ lane_swap: "03671245"
+ - id: "8"
+ tx_polarity: "01110101"
+ rx_polarity: "00010000"
+ lane_swap: "12640375"
+ - id: "9"
+ tx_polarity: "01011100"
+ rx_polarity: "11001111"
+ lane_swap: "02561347"
+ - id: "10"
+ tx_polarity: "01110110"
+ rx_polarity: "11000000"
+ lane_swap: "12740365"
+ - id: "11"
+ tx_polarity: "00111000"
+ rx_polarity: "00010111"
+ lane_swap: "01572436"
+ - id: "12"
+ tx_polarity: "00001111"
+ rx_polarity: "10111001"
+ lane_swap: "54320176"
+ - id: "13"
+ tx_polarity: "10011101"
+ rx_polarity: "00111011"
+ lane_swap: "26153704"
+ - id: "14"
+ tx_polarity: "00110000"
+ rx_polarity: "11010000"
+ lane_swap: "37452601"
+ - id: "15"
+ tx_polarity: "11100010"
+ rx_polarity: "01110011"
+ lane_swap: "51370462"
+ - id: "16"
+ tx_polarity: "10111010"
+ rx_polarity: "11010011"
+ lane_swap: "36152704"
+ - id: "17"
+ tx_polarity: "01011101"
+ rx_polarity: "00110001"
+ lane_swap: "45621073"
+ - id: "18"
+ tx_polarity: "11011111"
+ rx_polarity: "11001011"
+ lane_swap: "26143705"
+ - id: "19"
+ tx_polarity: "00100110"
+ rx_polarity: "00001001"
+ lane_swap: "42730165"
+ - id: "20"
+ tx_polarity: "10011011"
+ rx_polarity: "01101101"
+ lane_swap: "54217603"
+ - id: "21"
+ tx_polarity: "00101110"
+ rx_polarity: "10111111"
+ lane_swap: "26031745"
+ - id: "22"
+ tx_polarity: "01001110"
+ rx_polarity: "00111001"
+ lane_swap: "36024715"
+ - id: "23"
+ tx_polarity: "10101101"
+ rx_polarity: "01010011"
+ lane_swap: "45621370"
+ - id: "24"
+ tx_polarity: "11001110"
+ rx_polarity: "00011111"
+ lane_swap: "65234701"
+ - id: "25"
+ tx_polarity: "01110001"
+ rx_polarity: "01010111"
+ lane_swap: "37601452"
+ - id: "26"
+ tx_polarity: "01000100"
+ rx_polarity: "00001111"
+ lane_swap: "65034721"
+ - id: "27"
+ tx_polarity: "10111101"
+ rx_polarity: "11000101"
+ lane_swap: "34501672"
+ - id: "28"
+ tx_polarity: "01111000"
+ rx_polarity: "01110110"
+ lane_swap: "43061275"
+ - id: "29"
+ tx_polarity: "11110111"
+ rx_polarity: "11100111"
+ lane_swap: "57304621"
+ - id: "30"
+ tx_polarity: "10000100"
+ rx_polarity: "00101111"
+ lane_swap: "47125603"
+ - id: "31"
+ tx_polarity: "11111111"
+ rx_polarity: "11100010"
+ lane_swap: "13460275"
+ - id: "32"
+ tx_polarity: "00000000"
+ rx_polarity: "00000000"
+ lane_swap: "01234567"
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/innovium.77700_A b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/innovium.77700_A
new file mode 100644
index 000000000000..84aa41983606
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/innovium.77700_A
@@ -0,0 +1,59 @@
+sku: innovium.77700_A
+
+device_id: 0x1b58
+
+# Hardware constraint information
+hardware:
+ num_ibs: 6
+
+ ports_per_ib: 32, 32, 32, 32, 20, 20
+ recirc_port_num: 32, 32, 32, 32, 32, 32
+ cpu_port_num: 33
+ cpu_port_ib: 0
+ mgmt_port_num: 33
+ mgmt_port_ibs: 1,2
+
+ pics_per_ib: 6, 7, 6, 5, 5, 5
+ pic_ports_per_pic: 8
+ max_serdes_speed: 50
+
+ num_shared_pics: 2
+
+ isg [0-4]:
+ ib: 0
+ pic_id: [0-4]
+
+ isg [5-9]:
+ ib: 5
+ pic_id: [0-4]
+
+ isg [10-14]:
+ ib: 1
+ pic_id: [0-4]
+
+ isg [16-20]:
+ ib: 3
+ pic_id: [0-4]
+
+ isg [21-25]:
+ ib: 4
+ pic_id: [0-4]
+
+ isg [26-30]:
+ ib: 2
+ pic_id: [0-4]
+
+ isg 15:
+ mode: 8:0
+ ib: 1
+ pic_id: 5
+
+ isg 31:
+ mode: 8:0
+ ib: 0
+ pic_id: 5
+
+ isg 32:
+ mode: 1:1
+ ib: 1, 2
+ pic_id: 6
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/ivm.sai.config.yaml b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/ivm.sai.config.yaml
new file mode 100755
index 000000000000..607e2da93126
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/ivm.sai.config.yaml
@@ -0,0 +1,9 @@
+IFCS_INIT_FILE : "/usr/share/sonic/hwsku/config_32x100G_Delta-evs-a-32q56.yaml"
+IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.55300"
+IFCS_INNO_CLI_PORT : "9999"
+IFCS_TARGET : "device"
+INNOVIUM_DIR : "/innovium"
+PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes"
+AVG_IPG_RESERVED_SIZE: "1518"
+AVG_QUEUE_RESERVED_SIZE: "1518"
+IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/ivm.sai.datapath.config.yaml b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/ivm.sai.datapath.config.yaml
new file mode 100644
index 000000000000..2dcf88fc9555
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/ivm.sai.datapath.config.yaml
@@ -0,0 +1,10 @@
+ISAI_PARAM_A000 : "0"
+ISAI_PARAM_P0_0_LS : "9216 9216"
+ISAI_PARAM_P0_1_LS : "2850 2650"
+ISAI_PARAM_P0_1_ALS : "290 90"
+ISAI_PARAM_P1_0_LS : "3072 3072"
+ISAI_PARAM_P1_0_LL : "6144 6144"
+ISAI_PARAM_P1_1_LS : "2210 2010"
+ISAI_PARAM_P1_1_LL : "1330 1330"
+ISAI_PARAM_P1_1_ALS : "290 90"
+ISAI_PARAM_P1_1_ALL : "50 50"
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/pg_profile_lookup.ini b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/pg_profile_lookup.ini
new file mode 100644
index 000000000000..36c3bb0a484e
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/pg_profile_lookup.ini
@@ -0,0 +1,14 @@
+# PG lossless profiles.
+# speed cable size xon xoff threshold xon_offset
+ 25000 5m 1518 0 17600 3 13440
+ 50000 5m 1518 0 23456 3 13440
+ 100000 5m 1518 0 36064 3 13440
+ 400000 5m 1518 0 118464 3 13440
+ 25000 40m 1518 0 18720 3 13440
+ 50000 40m 1518 0 25696 3 13440
+ 100000 40m 1518 0 40544 3 13440
+ 400000 40m 1518 0 136384 3 13440
+ 25000 300m 1518 0 27040 3 13440
+ 50000 300m 1518 0 42336 3 13440
+ 100000 300m 1518 0 73824 3 13440
+ 400000 300m 1518 0 269504 3 13440
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/port_config.ini b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/port_config.ini
new file mode 100755
index 000000000000..7e9fc331edf7
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/port_config.ini
@@ -0,0 +1,35 @@
+# name lanes speed index mtu fec
+Ethernet0 249,250,251,252 200000 0 9126 rs
+Ethernet4 241,242,243,244 200000 1 9126 rs
+Ethernet8 233,234,235,236 200000 2 9126 rs
+Ethernet12 225,226,227,228 200000 3 9126 rs
+Ethernet16 217,218,219,220 200000 4 9126 rs
+Ethernet20 209,210,211,212 200000 5 9126 rs
+Ethernet24 201,202,203,204 200000 6 9126 rs
+Ethernet28 193,194,195,196 200000 7 9126 rs
+Ethernet32 185,186,187,188 200000 8 9126 rs
+Ethernet36 177,178,179,180 200000 9 9126 rs
+Ethernet40 169,170,171,172 200000 10 9126 rs
+Ethernet44 161,162,163,164 200000 11 9126 rs
+Ethernet48 153,154,155,156 200000 12 9126 rs
+Ethernet52 145,146,147,148 200000 13 9126 rs
+Ethernet56 137,138,139,140 200000 14 9126 rs
+Ethernet60 129,130,131,132 200000 15 9126 rs
+Ethernet64 121,122,123,124 200000 16 9126 rs
+Ethernet68 113,114,115,116 200000 17 9126 rs
+Ethernet72 97,98,99,100 200000 18 9126 rs
+Ethernet76 105,106,107,108 200000 19 9126 rs
+Ethernet80 81,82,83,84 200000 20 9126 rs
+Ethernet84 89,90,91,92 200000 21 9126 rs
+Ethernet88 65,66,67,68 200000 22 9126 rs
+Ethernet92 73,74,75,76 200000 23 9126 rs
+Ethernet96 49,50,51,52 200000 24 9126 rs
+Ethernet100 57,58,59,60 200000 25 9126 rs
+Ethernet104 33,34,35,36 200000 26 9126 rs
+Ethernet108 41,42,43,44 200000 27 9126 rs
+Ethernet112 17,18,19,20 200000 28 9126 rs
+Ethernet116 25,26,27,28 200000 29 9126 rs
+Ethernet120 1,2,3,4 200000 30 9126 rs
+Ethernet124 9,10,11,12 200000 31 9126 rs
+Ethernet256 257 10000 32 9126 none
+Ethernet257 258 10000 33 9126 none
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/qos.json.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/qos.json.j2
new file mode 100755
index 000000000000..3938fc1a05c4
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/qos.json.j2
@@ -0,0 +1,114 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"3",
+ "4":"4",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"1",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/qos_defaults_def_lossy.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/qos_defaults_def_lossy.j2
new file mode 100755
index 000000000000..205242d82910
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/qos_defaults_def_lossy.j2
@@ -0,0 +1,118 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"0",
+ "4":"0",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"0",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]"
+ }
+ },
+ "SCHEDULER": {
+ "scheduler.7": {
+ "type": "STRICT"
+ }
+ },
+ "QUEUE": {
+ "{{ port_names }}|7": {
+ "scheduler": "[SCHEDULER|scheduler.7]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/qos_defaults_t1.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/qos_defaults_t1.j2
new file mode 100644
index 000000000000..3938fc1a05c4
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/qos_defaults_t1.j2
@@ -0,0 +1,114 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"3",
+ "4":"4",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"1",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/sai.profile b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/sai.profile
new file mode 100755
index 000000000000..aba4fc81fb17
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56/sai.profile
@@ -0,0 +1 @@
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/buffers.json.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/buffers.json.j2
new file mode 100644
index 000000000000..1ab009be2dce
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/buffers.json.j2
@@ -0,0 +1,137 @@
+{# Default values which will be used if no actual configura available #}
+{% set default_cable = '40m' %}
+
+{# 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 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 %}
+ {%- 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 %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- endif %}
+{%- endmacro %}
+
+{%- if DEVICE_METADATA is defined %}
+{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
+{%- 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": "34056960",
+ "type": "ingress",
+ "mode": "dynamic",
+ "xoff": "4185600"
+ },
+ "lossy_pool": {
+ "size": "14595840",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "xoff":"38816",
+ "size":"1518",
+ "dynamic_th":"3",
+ "xon_offset":"13440"
+ },
+ "egress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "size":"0",
+ "static_th":"23001600"
+ },
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"23001600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ },
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ },
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/buffers_defaults_def_lossy.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/buffers_defaults_def_lossy.j2
new file mode 100644
index 000000000000..c61ec1d14988
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/buffers_defaults_def_lossy.j2
@@ -0,0 +1,38 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+{
+ "BUFFER_POOL": {
+ "lossy_pool": {
+ "size": "46003200",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"23001600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/buffers_defaults_t1.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/buffers_defaults_t1.j2
new file mode 100644
index 000000000000..1ab009be2dce
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/buffers_defaults_t1.j2
@@ -0,0 +1,137 @@
+{# Default values which will be used if no actual configura available #}
+{% set default_cable = '40m' %}
+
+{# 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 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 %}
+ {%- 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 %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- endif %}
+{%- endmacro %}
+
+{%- if DEVICE_METADATA is defined %}
+{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
+{%- 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": "34056960",
+ "type": "ingress",
+ "mode": "dynamic",
+ "xoff": "4185600"
+ },
+ "lossy_pool": {
+ "size": "14595840",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "xoff":"38816",
+ "size":"1518",
+ "dynamic_th":"3",
+ "xon_offset":"13440"
+ },
+ "egress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "size":"0",
+ "static_th":"23001600"
+ },
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"23001600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ },
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ },
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/config_32x100G_Delta-evs-a-32q56.yaml b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/config_32x100G_Delta-evs-a-32q56.yaml
new file mode 100755
index 000000000000..1f6d6b48e61a
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/config_32x100G_Delta-evs-a-32q56.yaml
@@ -0,0 +1,394 @@
+ifcs:
+ options:
+ log_level: "info"
+nodes:
+- node_id: "0"
+ options:
+ sku: "configs/sku/innovium.55300"
+ netdev:
+ - auto_create: "no"
+ multi_interface: "yes"
+ buffer_management_mode: "api_driven"
+ max_lossless_tc: "2"
+ skip_pll_check: "false"
+ mac_clk: "750"
+ sys_clk: "1300"
+ ifc_clk: "675"
+ txring:
+ - txring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ rxring:
+ - rxring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ queues: "0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44"
+ netdev: "true"
+ - rxring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ queues: "1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45"
+ netdev: "true"
+ - rxring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ queues: "2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46"
+ netdev: "true"
+ - rxring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ queues: "3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47"
+ netdev: "true"
+ devports:
+ - id: "0"
+ sysport: "129"
+ type: "cpu"
+ - id: "121"
+ fec: "KRFEC"
+ lanes: "0:4"
+ serdes_group: "15"
+ speed: "100G"
+ sysport: "121"
+ type: "eth"
+ - id: "125"
+ fec: "KRFEC"
+ lanes: "4:4"
+ serdes_group: "15"
+ speed: "100G"
+ sysport: "125"
+ type: "eth"
+ - id: "113"
+ fec: "KRFEC"
+ lanes: "0:4"
+ serdes_group: "14"
+ speed: "100G"
+ sysport: "113"
+ type: "eth"
+ - id: "117"
+ fec: "KRFEC"
+ lanes: "4:4"
+ serdes_group: "14"
+ speed: "100G"
+ sysport: "117"
+ type: "eth"
+ - id: "105"
+ fec: "KRFEC"
+ lanes: "0:4"
+ serdes_group: "13"
+ speed: "100G"
+ sysport: "105"
+ type: "eth"
+ - id: "109"
+ fec: "KRFEC"
+ lanes: "4:4"
+ serdes_group: "13"
+ speed: "100G"
+ sysport: "109"
+ type: "eth"
+ - id: "97"
+ fec: "KRFEC"
+ lanes: "0:4"
+ serdes_group: "12"
+ speed: "100G"
+ sysport: "97"
+ type: "eth"
+ - id: "101"
+ fec: "KRFEC"
+ lanes: "4:4"
+ serdes_group: "12"
+ speed: "100G"
+ sysport: "101"
+ type: "eth"
+ - id: "89"
+ fec: "KRFEC"
+ lanes: "0:4"
+ serdes_group: "11"
+ speed: "100G"
+ sysport: "89"
+ type: "eth"
+ - id: "93"
+ fec: "KRFEC"
+ lanes: "4:4"
+ serdes_group: "11"
+ speed: "100G"
+ sysport: "93"
+ type: "eth"
+ - id: "81"
+ fec: "KRFEC"
+ lanes: "0:4"
+ serdes_group: "10"
+ speed: "100G"
+ sysport: "81"
+ type: "eth"
+ - id: "85"
+ fec: "KRFEC"
+ lanes: "4:4"
+ serdes_group: "10"
+ speed: "100G"
+ sysport: "85"
+ type: "eth"
+ - id: "73"
+ fec: "KRFEC"
+ lanes: "0:4"
+ serdes_group: "9"
+ speed: "100G"
+ sysport: "73"
+ type: "eth"
+ - id: "77"
+ fec: "KRFEC"
+ lanes: "4:4"
+ serdes_group: "9"
+ speed: "100G"
+ sysport: "77"
+ type: "eth"
+ - id: "65"
+ fec: "KRFEC"
+ lanes: "0:4"
+ serdes_group: "8"
+ speed: "100G"
+ sysport: "65"
+ type: "eth"
+ - id: "69"
+ fec: "KRFEC"
+ lanes: "4:4"
+ serdes_group: "8"
+ speed: "100G"
+ sysport: "69"
+ type: "eth"
+ - id: "57"
+ fec: "KRFEC"
+ lanes: "0:4"
+ serdes_group: "7"
+ speed: "100G"
+ sysport: "57"
+ type: "eth"
+ - id: "61"
+ fec: "KRFEC"
+ lanes: "4:4"
+ serdes_group: "7"
+ speed: "100G"
+ sysport: "61"
+ type: "eth"
+ - id: "49"
+ fec: "KRFEC"
+ lanes: "0:4"
+ serdes_group: "6"
+ speed: "100G"
+ sysport: "49"
+ type: "eth"
+ - id: "53"
+ fec: "KRFEC"
+ lanes: "4:4"
+ serdes_group: "6"
+ speed: "100G"
+ sysport: "53"
+ type: "eth"
+ - id: "41"
+ fec: "KRFEC"
+ lanes: "0:4"
+ serdes_group: "5"
+ speed: "100G"
+ sysport: "41"
+ type: "eth"
+ - id: "45"
+ fec: "KRFEC"
+ lanes: "4:4"
+ serdes_group: "5"
+ speed: "100G"
+ sysport: "45"
+ type: "eth"
+ - id: "33"
+ fec: "KRFEC"
+ lanes: "0:4"
+ serdes_group: "4"
+ speed: "100G"
+ sysport: "33"
+ type: "eth"
+ - id: "37"
+ fec: "KRFEC"
+ lanes: "4:4"
+ serdes_group: "4"
+ speed: "100G"
+ sysport: "37"
+ type: "eth"
+ - id: "25"
+ fec: "KRFEC"
+ lanes: "0:4"
+ serdes_group: "3"
+ speed: "100G"
+ sysport: "25"
+ type: "eth"
+ - id: "29"
+ fec: "KRFEC"
+ lanes: "4:4"
+ serdes_group: "3"
+ speed: "100G"
+ sysport: "29"
+ type: "eth"
+ - id: "17"
+ fec: "KRFEC"
+ lanes: "0:4"
+ serdes_group: "2"
+ speed: "100G"
+ sysport: "17"
+ type: "eth"
+ - id: "21"
+ fec: "KRFEC"
+ lanes: "4:4"
+ serdes_group: "2"
+ speed: "100G"
+ sysport: "21"
+ type: "eth"
+ - id: "9"
+ fec: "KRFEC"
+ lanes: "0:4"
+ serdes_group: "1"
+ speed: "100G"
+ sysport: "9"
+ type: "eth"
+ - id: "13"
+ fec: "KRFEC"
+ lanes: "4:4"
+ serdes_group: "1"
+ speed: "100G"
+ sysport: "13"
+ type: "eth"
+ - id: "1"
+ fec: "KRFEC"
+ lanes: "0:4"
+ serdes_group: "0"
+ speed: "100G"
+ sysport: "1"
+ type: "eth"
+ - id: "5"
+ fec: "KRFEC"
+ lanes: "4:4"
+ serdes_group: "0"
+ speed: "100G"
+ sysport: "5"
+ type: "eth"
+# Aux ports to be enabled later
+# - id: "33"
+# fec: "NONE"
+# lanes: "0:1"
+# serdes_group: "16"
+# speed: "10G"
+# sysport: "33"
+# type: "mgmt 0"
+# - id: "34"
+# fec: "NONE"
+# lanes: "1:1"
+# serdes_group: "16"
+# speed: "10G"
+# sysport: "34"
+# type: "mgmt 1"
+ isg:
+ - id: "0"
+ lane_swap: "01234567"
+ rx_polarity: "00000111"
+ tx_polarity: "10011110"
+ pre1: "-3, -3, -3, -3, -3, -3, -3, -3"
+ main: "20, 20, 20, 20, 20, 20, 20, 20"
+ - id: "1"
+ lane_swap: "01234567"
+ rx_polarity: "00000111"
+ tx_polarity: "00010001"
+ pre1: "-3, -3, -3, -3, -3, -3, -3, -3"
+ main: "20, 20, 20, 20, 20, 20, 20, 20"
+ - id: "2"
+ lane_swap: "01234567"
+ rx_polarity: "00100000"
+ tx_polarity: "01101111"
+ pre1: "-3, -3, -3, -3, -3, -3, -3, -3"
+ main: "20, 20, 20, 20, 20, 20, 20, 20"
+ - id: "3"
+ lane_swap: "01234567"
+ rx_polarity: "01000001"
+ tx_polarity: "10101000"
+ pre1: "-3, -3, -3, -3, -3, -3, -3, -3"
+ main: "20, 20, 20, 20, 20, 20, 20, 20"
+ - id: "4"
+ lane_swap: "01234567"
+ rx_polarity: "00010000"
+ tx_polarity: "10100000"
+ pre1: "-3, -3, -3, -3, -3, -3, -3, -3"
+ main: "20, 20, 20, 20, 20, 20, 20, 20"
+ - id: "5"
+ lane_swap: "01234567"
+ rx_polarity: "10100000"
+ tx_polarity: "01100100"
+ pre1: "-3, -3, -3, -3, -3, -3, -3, -3"
+ main: "20, 20, 20, 20, 20, 20, 20, 20"
+ - id: "6"
+ lane_swap: "01234567"
+ rx_polarity: "01010000"
+ tx_polarity: "00000100"
+ pre1: "-3, -3, -3, -3, -3, -3, -3, -3"
+ main: "20, 20, 20, 20, 20, 20, 20, 20"
+ - id: "7"
+ lane_swap: "01234567"
+ rx_polarity: "10000011"
+ tx_polarity: "00010110"
+ pre1: "-3, -3, -3, -3, -3, -3, -3, -3"
+ main: "20, 20, 20, 20, 20, 20, 20, 20"
+ - id: "8"
+ lane_swap: "01234567"
+ rx_polarity: "00001000"
+ tx_polarity: "00001000"
+ pre1: "-3, -3, -3, -3, -3, -3, -3, -3"
+ main: "20, 20, 20, 20, 20, 20, 20, 20"
+ - id: "9"
+ lane_swap: "01234567"
+ rx_polarity: "00000000"
+ tx_polarity: "10100100"
+ pre1: "-3, -3, -3, -3, -3, -3, -3, -3"
+ main: "20, 20, 20, 20, 20, 20, 20, 20"
+ - id: "10"
+ lane_swap: "01234567"
+ rx_polarity: "00000000"
+ tx_polarity: "00100011"
+ pre1: "-3, -3, -3, -3, -3, -3, -3, -3"
+ main: "20, 20, 20, 20, 20, 20, 20, 20"
+ - id: "11"
+ lane_swap: "01234567"
+ rx_polarity: "01000001"
+ tx_polarity: "00100000"
+ pre1: "-3, -3, -3, -3, -3, -3, -3, -3"
+ main: "20, 20, 20, 20, 20, 20, 20, 20"
+ - id: "12"
+ lane_swap: "01234567"
+ rx_polarity: "00001010"
+ tx_polarity: "01010111"
+ pre1: "-3, -3, -3, -3, -3, -3, -3, -3"
+ main: "20, 20, 20, 20, 20, 20, 20, 20"
+ - id: "13"
+ lane_swap: "01234567"
+ rx_polarity: "01001011"
+ tx_polarity: "00111010"
+ pre1: "-3, -3, -3, -3, -3, -3, -3, -3"
+ main: "20, 20, 20, 20, 20, 20, 20, 20"
+ - id: "14"
+ lane_swap: "01234567"
+ rx_polarity: "01000000"
+ tx_polarity: "11010111"
+ pre1: "-3, -3, -3, -3, -3, -3, -3, -3"
+ main: "20, 20, 20, 20, 20, 20, 20, 20"
+ - id: "15"
+ lane_swap: "01234567"
+ rx_polarity: "01000010"
+ tx_polarity: "11011000"
+ pre1: "-3, -3, -3, -3, -3, -3, -3, -3"
+ main: "20, 20, 20, 20, 20, 20, 20, 20"
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/innovium.55300 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/innovium.55300
new file mode 100644
index 000000000000..59383ec30ec1
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/innovium.55300
@@ -0,0 +1,62 @@
+sku: innovium.55300
+
+device_id: 0x1b59
+
+# Hardware constraint information
+hardware:
+ num_ibs: 2
+ ib_active: 0, 1
+
+ ports_per_ib: 64, 64
+ recirc_port_num: 64, 64
+ cpu_port_num: 65
+ cpu_port_ib: 0
+ mgmt_port_num: 65, 66
+ mgmt_port_ibs: 1, 1
+
+ pics_per_ib: 9, 9
+ pic_ports_per_pic: 8
+ max_serdes_speed: 25
+
+ num_shared_pics: 0
+
+ isg [0-7]:
+ ib: 0
+ pic_id: [0-7]
+
+ isg 8:
+ ib: 1
+ pic_id: 7
+
+ isg 9:
+ ib: 1
+ pic_id: 6
+
+ isg 10:
+ ib: 1
+ pic_id: 5
+
+ isg 11:
+ ib: 1
+ pic_id: 4
+
+ isg 12:
+ ib: 1
+ pic_id: 3
+
+ isg 13:
+ ib: 1
+ pic_id: 2
+
+ isg 14:
+ ib: 1
+ pic_id: 1
+
+ isg 15:
+ ib: 1
+ pic_id: 0
+
+ isg 16:
+ mode: 0:2
+ ib: 1
+ pic_id: 8
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/ivm.sai.config.yaml b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/ivm.sai.config.yaml
new file mode 100755
index 000000000000..607e2da93126
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/ivm.sai.config.yaml
@@ -0,0 +1,9 @@
+IFCS_INIT_FILE : "/usr/share/sonic/hwsku/config_32x100G_Delta-evs-a-32q56.yaml"
+IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.55300"
+IFCS_INNO_CLI_PORT : "9999"
+IFCS_TARGET : "device"
+INNOVIUM_DIR : "/innovium"
+PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes"
+AVG_IPG_RESERVED_SIZE: "1518"
+AVG_QUEUE_RESERVED_SIZE: "1518"
+IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/ivm.sai.datapath.config.yaml b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/ivm.sai.datapath.config.yaml
new file mode 100644
index 000000000000..ef4bc6d129ce
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/ivm.sai.datapath.config.yaml
@@ -0,0 +1,9 @@
+ISAI_PARAM_P0_0_LS : "9216 9216"
+ISAI_PARAM_P0_1_LS : "2850 2650"
+ISAI_PARAM_P0_1_ALS : "290 90"
+ISAI_PARAM_P1_0_LS : "3072 3072"
+ISAI_PARAM_P1_0_LL : "6144 6144"
+ISAI_PARAM_P1_1_LS : "2210 2010"
+ISAI_PARAM_P1_1_LL : "1330 1330"
+ISAI_PARAM_P1_1_ALS : "290 90"
+ISAI_PARAM_P1_1_ALL : "50 50"
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/pg_profile_lookup.ini b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/pg_profile_lookup.ini
new file mode 100644
index 000000000000..36c3bb0a484e
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/pg_profile_lookup.ini
@@ -0,0 +1,14 @@
+# PG lossless profiles.
+# speed cable size xon xoff threshold xon_offset
+ 25000 5m 1518 0 17600 3 13440
+ 50000 5m 1518 0 23456 3 13440
+ 100000 5m 1518 0 36064 3 13440
+ 400000 5m 1518 0 118464 3 13440
+ 25000 40m 1518 0 18720 3 13440
+ 50000 40m 1518 0 25696 3 13440
+ 100000 40m 1518 0 40544 3 13440
+ 400000 40m 1518 0 136384 3 13440
+ 25000 300m 1518 0 27040 3 13440
+ 50000 300m 1518 0 42336 3 13440
+ 100000 300m 1518 0 73824 3 13440
+ 400000 300m 1518 0 269504 3 13440
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/port_config.ini b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/port_config.ini
new file mode 100755
index 000000000000..7cb58b4120c7
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/port_config.ini
@@ -0,0 +1,33 @@
+# name lanes speed index mtu fec
+Ethernet0 121,122,123,124 100000 0 9126 rs
+Ethernet4 125,126,127,128 100000 1 9126 rs
+Ethernet8 113,114,115,116 100000 2 9126 rs
+Ethernet12 117,118,119,120 100000 3 9126 rs
+Ethernet16 105,106,107,108 100000 4 9126 rs
+Ethernet20 109,110,111,112 100000 5 9126 rs
+Ethernet24 97,98,99,100 100000 6 9126 rs
+Ethernet28 101,102,103,104 100000 7 9126 rs
+Ethernet32 89,90,91,92 100000 8 9126 rs
+Ethernet36 93,94,95,96 100000 9 9126 rs
+Ethernet40 81,82,83,84 100000 10 9126 rs
+Ethernet44 85,86,87,88 100000 11 9126 rs
+Ethernet48 73,74,75,76 100000 12 9126 rs
+Ethernet52 77,78,79,80 100000 13 9126 rs
+Ethernet56 65,66,67,68 100000 14 9126 rs
+Ethernet60 69,70,71,72 100000 15 9126 rs
+Ethernet64 57,58,59,60 100000 16 9126 rs
+Ethernet68 61,62,63,64 100000 17 9126 rs
+Ethernet72 49,50,51,52 100000 18 9126 rs
+Ethernet76 53,54,55,56 100000 19 9126 rs
+Ethernet80 41,42,43,44 100000 20 9126 rs
+Ethernet84 45,46,47,48 100000 21 9126 rs
+Ethernet88 33,34,35,36 100000 22 9126 rs
+Ethernet92 37,38,39,40 100000 23 9126 rs
+Ethernet96 25,26,27,28 100000 24 9126 rs
+Ethernet100 29,30,31,32 100000 25 9126 rs
+Ethernet104 17,18,19,20 100000 26 9126 rs
+Ethernet108 21,22,23,24 100000 27 9126 rs
+Ethernet112 9,10,11,12 100000 28 9126 rs
+Ethernet116 13,14,15,16 100000 29 9126 rs
+Ethernet120 1,2,3,4 100000 30 9126 rs
+Ethernet124 5,6,7,8 100000 31 9126 rs
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/qos.json.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/qos.json.j2
new file mode 100755
index 000000000000..3938fc1a05c4
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/qos.json.j2
@@ -0,0 +1,114 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"3",
+ "4":"4",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"1",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/qos_defaults_def_lossy.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/qos_defaults_def_lossy.j2
new file mode 100755
index 000000000000..205242d82910
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/qos_defaults_def_lossy.j2
@@ -0,0 +1,118 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"0",
+ "4":"0",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"0",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]"
+ }
+ },
+ "SCHEDULER": {
+ "scheduler.7": {
+ "type": "STRICT"
+ }
+ },
+ "QUEUE": {
+ "{{ port_names }}|7": {
+ "scheduler": "[SCHEDULER|scheduler.7]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/qos_defaults_t1.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/qos_defaults_t1.j2
new file mode 100644
index 000000000000..3938fc1a05c4
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/qos_defaults_t1.j2
@@ -0,0 +1,114 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"3",
+ "4":"4",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"1",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/sai.profile b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/sai.profile
new file mode 100755
index 000000000000..aba4fc81fb17
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_32x100/sai.profile
@@ -0,0 +1 @@
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/buffers.json.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/buffers.json.j2
new file mode 100644
index 000000000000..1ab009be2dce
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/buffers.json.j2
@@ -0,0 +1,137 @@
+{# Default values which will be used if no actual configura available #}
+{% set default_cable = '40m' %}
+
+{# 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 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 %}
+ {%- 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 %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- endif %}
+{%- endmacro %}
+
+{%- if DEVICE_METADATA is defined %}
+{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
+{%- 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": "34056960",
+ "type": "ingress",
+ "mode": "dynamic",
+ "xoff": "4185600"
+ },
+ "lossy_pool": {
+ "size": "14595840",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "xoff":"38816",
+ "size":"1518",
+ "dynamic_th":"3",
+ "xon_offset":"13440"
+ },
+ "egress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "size":"0",
+ "static_th":"23001600"
+ },
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"23001600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ },
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ },
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/buffers_defaults_def_lossy.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/buffers_defaults_def_lossy.j2
new file mode 100644
index 000000000000..c61ec1d14988
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/buffers_defaults_def_lossy.j2
@@ -0,0 +1,38 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+{
+ "BUFFER_POOL": {
+ "lossy_pool": {
+ "size": "46003200",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"23001600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|0-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/buffers_defaults_t1.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/buffers_defaults_t1.j2
new file mode 100644
index 000000000000..1ab009be2dce
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/buffers_defaults_t1.j2
@@ -0,0 +1,137 @@
+{# Default values which will be used if no actual configura available #}
+{% set default_cable = '40m' %}
+
+{# 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 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 %}
+ {%- 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 %}
+ {%- if switch_role.lower() == 'torrouter' %}
+ {%- for local_port in VLAN_MEMBER %}
+ {%- if local_port[1] == port_name %}
+ {%- set roles3 = switch_role + '_' + 'server' %}
+ {%- set roles3 = roles3 | lower %}
+ {%- if roles3 in ports2cable %}
+ {%- if cable_len.append(ports2cable[roles3]) %}{% endif %}
+ {%- endif %}
+ {%- endif %}
+ {%- endfor %}
+ {%- if cable_len -%}
+ {{ cable_len.0 }}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- else -%}
+ {{ default_cable }}
+ {%- endif %}
+ {%- endif %}
+{%- endmacro %}
+
+{%- if DEVICE_METADATA is defined %}
+{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
+{%- 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": "34056960",
+ "type": "ingress",
+ "mode": "dynamic",
+ "xoff": "4185600"
+ },
+ "lossy_pool": {
+ "size": "14595840",
+ "type": "egress",
+ "mode": "dynamic",
+ "xoff": "0"
+ }
+ },
+ "BUFFER_PROFILE": {
+ "ingress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "xoff":"38816",
+ "size":"1518",
+ "dynamic_th":"3",
+ "xon_offset":"13440"
+ },
+ "egress_lossless_profile": {
+ "pool":"[BUFFER_POOL|ingress_lossless_pool]",
+ "size":"0",
+ "static_th":"23001600"
+ },
+ "ingress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"0",
+ "static_th":"23001600"
+ },
+ "egress_lossy_profile": {
+ "pool":"[BUFFER_POOL|lossy_pool]",
+ "size":"1518",
+ "dynamic_th":"3"
+ }
+ },
+ "BUFFER_PG": {
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ },
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
+ }
+ },
+ "BUFFER_QUEUE": {
+ "{{ port_names }}|3-4": {
+ "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
+ },
+ "{{ port_names }}|0-2": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ },
+ "{{ port_names }}|5-7": {
+ "profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/config_64x100G_Delta-evs-a-32q56.yaml b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/config_64x100G_Delta-evs-a-32q56.yaml
new file mode 100755
index 000000000000..e5fbcc93543d
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/config_64x100G_Delta-evs-a-32q56.yaml
@@ -0,0 +1,653 @@
+ifcs:
+ options:
+ log_level: "info"
+nodes:
+- node_id: "0"
+ options:
+ sku: "configs/sku/innovium.77700_B"
+ netdev:
+ - auto_create: "no"
+ multi_interface: "yes"
+ buffer_management_mode: "api_driven"
+ max_lossless_tc: "2"
+ txring:
+ - txring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ - txring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ rxring:
+ - rxring_id: "0"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44"
+ - rxring_id: "1"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45"
+ - rxring_id: "2"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46"
+ - rxring_id: "3"
+ desc_count: "1024"
+ prio: "1"
+ netdev: "true"
+ queues: "3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47"
+ sys_clk: "1720"
+ ifc_clk: "1200"
+ mac_clk: "1340"
+
+ devports:
+ - id: "0"
+ sysport: "1000"
+ type: "cpu"
+ - fec: "KRFEC"
+ id: "249"
+ lanes: "0:4"
+ serdes_group: "31"
+ speed: "100G"
+ sysport: "249"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "253"
+ lanes: "4:4"
+ serdes_group: "31"
+ speed: "100G"
+ sysport: "253"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "241"
+ lanes: "0:4"
+ serdes_group: "30"
+ speed: "100G"
+ sysport: "241"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "245"
+ lanes: "4:4"
+ serdes_group: "30"
+ speed: "100G"
+ sysport: "245"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "233"
+ lanes: "0:4"
+ serdes_group: "29"
+ speed: "100G"
+ sysport: "233"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "237"
+ lanes: "4:4"
+ serdes_group: "29"
+ speed: "100G"
+ sysport: "237"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "225"
+ lanes: "0:4"
+ serdes_group: "28"
+ speed: "100G"
+ sysport: "225"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "229"
+ lanes: "4:4"
+ serdes_group: "28"
+ speed: "100G"
+ sysport: "229"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "217"
+ lanes: "0:4"
+ serdes_group: "27"
+ speed: "100G"
+ sysport: "217"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "221"
+ lanes: "4:4"
+ serdes_group: "27"
+ speed: "100G"
+ sysport: "221"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "209"
+ lanes: "0:4"
+ serdes_group: "26"
+ speed: "100G"
+ sysport: "209"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "213"
+ lanes: "4:4"
+ serdes_group: "26"
+ speed: "100G"
+ sysport: "213"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "201"
+ lanes: "0:4"
+ serdes_group: "25"
+ speed: "100G"
+ sysport: "201"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "205"
+ lanes: "4:4"
+ serdes_group: "25"
+ speed: "100G"
+ sysport: "205"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "193"
+ lanes: "0:4"
+ serdes_group: "24"
+ speed: "100G"
+ sysport: "193"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "197"
+ lanes: "4:4"
+ serdes_group: "24"
+ speed: "100G"
+ sysport: "197"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "185"
+ lanes: "0:4"
+ serdes_group: "23"
+ speed: "100G"
+ sysport: "185"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "189"
+ lanes: "4:4"
+ serdes_group: "23"
+ speed: "100G"
+ sysport: "189"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "177"
+ lanes: "0:4"
+ serdes_group: "22"
+ speed: "100G"
+ sysport: "177"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "181"
+ lanes: "4:4"
+ serdes_group: "22"
+ speed: "100G"
+ sysport: "181"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "169"
+ lanes: "0:4"
+ serdes_group: "21"
+ speed: "100G"
+ sysport: "169"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "173"
+ lanes: "4:4"
+ serdes_group: "21"
+ speed: "100G"
+ sysport: "173"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "161"
+ lanes: "0:4"
+ serdes_group: "20"
+ speed: "100G"
+ sysport: "161"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "165"
+ lanes: "4:4"
+ serdes_group: "20"
+ speed: "100G"
+ sysport: "165"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "153"
+ lanes: "0:4"
+ serdes_group: "19"
+ speed: "100G"
+ sysport: "153"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "157"
+ lanes: "4:4"
+ serdes_group: "19"
+ speed: "100G"
+ sysport: "157"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "145"
+ lanes: "0:4"
+ serdes_group: "18"
+ speed: "100G"
+ sysport: "145"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "149"
+ lanes: "4:4"
+ serdes_group: "18"
+ speed: "100G"
+ sysport: "149"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "137"
+ lanes: "0:4"
+ serdes_group: "17"
+ speed: "100G"
+ sysport: "137"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "141"
+ lanes: "4:4"
+ serdes_group: "17"
+ speed: "100G"
+ sysport: "141"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "129"
+ lanes: "0:4"
+ serdes_group: "16"
+ speed: "100G"
+ sysport: "129"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "133"
+ lanes: "4:4"
+ serdes_group: "16"
+ speed: "100G"
+ sysport: "133"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "121"
+ lanes: "0:4"
+ serdes_group: "15"
+ speed: "100G"
+ sysport: "121"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "125"
+ lanes: "4:4"
+ serdes_group: "15"
+ speed: "100G"
+ sysport: "125"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "113"
+ lanes: "0:4"
+ serdes_group: "14"
+ speed: "100G"
+ sysport: "113"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "117"
+ lanes: "4:4"
+ serdes_group: "14"
+ speed: "100G"
+ sysport: "117"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "97"
+ lanes: "0:4"
+ serdes_group: "12"
+ speed: "100G"
+ sysport: "97"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "101"
+ lanes: "4:4"
+ serdes_group: "12"
+ speed: "100G"
+ sysport: "101"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "105"
+ lanes: "0:4"
+ serdes_group: "13"
+ speed: "100G"
+ sysport: "105"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "109"
+ lanes: "4:4"
+ serdes_group: "13"
+ speed: "100G"
+ sysport: "109"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "81"
+ lanes: "0:4"
+ serdes_group: "10"
+ speed: "100G"
+ sysport: "81"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "85"
+ lanes: "4:4"
+ serdes_group: "10"
+ speed: "100G"
+ sysport: "85"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "89"
+ lanes: "0:4"
+ serdes_group: "11"
+ speed: "100G"
+ sysport: "89"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "93"
+ lanes: "4:4"
+ serdes_group: "11"
+ speed: "100G"
+ sysport: "93"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "65"
+ lanes: "0:4"
+ serdes_group: "8"
+ speed: "100G"
+ sysport: "65"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "69"
+ lanes: "4:4"
+ serdes_group: "8"
+ speed: "100G"
+ sysport: "69"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "73"
+ lanes: "0:4"
+ serdes_group: "9"
+ speed: "100G"
+ sysport: "73"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "77"
+ lanes: "4:4"
+ serdes_group: "9"
+ speed: "100G"
+ sysport: "77"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "49"
+ lanes: "0:4"
+ serdes_group: "6"
+ speed: "100G"
+ sysport: "49"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "53"
+ lanes: "4:4"
+ serdes_group: "6"
+ speed: "100G"
+ sysport: "53"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "57"
+ lanes: "0:4"
+ serdes_group: "7"
+ speed: "100G"
+ sysport: "57"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "61"
+ lanes: "4:4"
+ serdes_group: "7"
+ speed: "100G"
+ sysport: "61"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "33"
+ lanes: "0:4"
+ serdes_group: "4"
+ speed: "100G"
+ sysport: "33"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "37"
+ lanes: "4:4"
+ serdes_group: "4"
+ speed: "100G"
+ sysport: "37"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "41"
+ lanes: "0:4"
+ serdes_group: "5"
+ speed: "100G"
+ sysport: "41"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "45"
+ lanes: "4:4"
+ serdes_group: "5"
+ speed: "100G"
+ sysport: "45"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "17"
+ lanes: "0:4"
+ serdes_group: "2"
+ speed: "100G"
+ sysport: "17"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "21"
+ lanes: "4:4"
+ serdes_group: "2"
+ speed: "100G"
+ sysport: "21"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "25"
+ lanes: "0:4"
+ serdes_group: "3"
+ speed: "100G"
+ sysport: "25"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "29"
+ lanes: "4:4"
+ serdes_group: "3"
+ speed: "100G"
+ sysport: "29"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "1"
+ lanes: "0:4"
+ serdes_group: "0"
+ speed: "100G"
+ sysport: "1"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "5"
+ lanes: "4:4"
+ serdes_group: "0"
+ speed: "100G"
+ sysport: "5"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "9"
+ lanes: "0:4"
+ serdes_group: "1"
+ speed: "100G"
+ sysport: "9"
+ type: "eth"
+ - fec: "KRFEC"
+ id: "13"
+ lanes: "4:4"
+ serdes_group: "1"
+ speed: "100G"
+ sysport: "13"
+ type: "eth"
+ - fec: "NONE"
+ id: "257"
+ lanes: "0:1"
+ serdes_group: "32"
+ speed: "10G"
+ sysport: "257"
+ type: "mgmt 0"
+ - fec: "NONE"
+ id: "258"
+ lanes: "1:1"
+ serdes_group: "32"
+ speed: "10G"
+ sysport: "258"
+ type: "mgmt 1"
+ isg:
+ - id: "0"
+ tx_polarity: "01010101"
+ rx_polarity: "01100000"
+ lane_swap: "23641075"
+ - id: "1"
+ tx_polarity: "10110000"
+ rx_polarity: "11111111"
+ lane_swap: "64317520"
+ - id: "2"
+ tx_polarity: "00000000"
+ rx_polarity: "00000011"
+ lane_swap: "63147520"
+ - id: "3"
+ tx_polarity: "01101000"
+ rx_polarity: "00001110"
+ lane_swap: "31572046"
+ - id: "4"
+ tx_polarity: "00111000"
+ rx_polarity: "00001000"
+ lane_swap: "46105732"
+ - id: "5"
+ tx_polarity: "10111111"
+ rx_polarity: "11101000"
+ lane_swap: "27153604"
+ - id: "6"
+ tx_polarity: "01101110"
+ rx_polarity: "00001101"
+ lane_swap: "46503721"
+ - id: "7"
+ tx_polarity: "01000100"
+ rx_polarity: "10000101"
+ lane_swap: "03671245"
+ - id: "8"
+ tx_polarity: "01110101"
+ rx_polarity: "00010000"
+ lane_swap: "12640375"
+ - id: "9"
+ tx_polarity: "01011100"
+ rx_polarity: "11001111"
+ lane_swap: "02561347"
+ - id: "10"
+ tx_polarity: "01110110"
+ rx_polarity: "11000000"
+ lane_swap: "12740365"
+ - id: "11"
+ tx_polarity: "00111000"
+ rx_polarity: "00010111"
+ lane_swap: "01572436"
+ - id: "12"
+ tx_polarity: "00001111"
+ rx_polarity: "10111001"
+ lane_swap: "54320176"
+ - id: "13"
+ tx_polarity: "10011101"
+ rx_polarity: "00111011"
+ lane_swap: "26153704"
+ - id: "14"
+ tx_polarity: "00110000"
+ rx_polarity: "11010000"
+ lane_swap: "37452601"
+ - id: "15"
+ tx_polarity: "11100010"
+ rx_polarity: "01110011"
+ lane_swap: "51370462"
+ - id: "16"
+ tx_polarity: "10111010"
+ rx_polarity: "11010011"
+ lane_swap: "36152704"
+ - id: "17"
+ tx_polarity: "01011101"
+ rx_polarity: "00110001"
+ lane_swap: "45621073"
+ - id: "18"
+ tx_polarity: "11011111"
+ rx_polarity: "11001011"
+ lane_swap: "26143705"
+ - id: "19"
+ tx_polarity: "00100110"
+ rx_polarity: "00001001"
+ lane_swap: "42730165"
+ - id: "20"
+ tx_polarity: "10011011"
+ rx_polarity: "01101101"
+ lane_swap: "54217603"
+ - id: "21"
+ tx_polarity: "00101110"
+ rx_polarity: "10111111"
+ lane_swap: "26031745"
+ - id: "22"
+ tx_polarity: "01001110"
+ rx_polarity: "00111001"
+ lane_swap: "36024715"
+ - id: "23"
+ tx_polarity: "10101101"
+ rx_polarity: "01010011"
+ lane_swap: "45621370"
+ - id: "24"
+ tx_polarity: "11001110"
+ rx_polarity: "00011111"
+ lane_swap: "65234701"
+ - id: "25"
+ tx_polarity: "01110001"
+ rx_polarity: "01010111"
+ lane_swap: "37601452"
+ - id: "26"
+ tx_polarity: "01000100"
+ rx_polarity: "00001111"
+ lane_swap: "65034721"
+ - id: "27"
+ tx_polarity: "10111101"
+ rx_polarity: "11000101"
+ lane_swap: "34501672"
+ - id: "28"
+ tx_polarity: "01111000"
+ rx_polarity: "01110110"
+ lane_swap: "43061275"
+ - id: "29"
+ tx_polarity: "11110111"
+ rx_polarity: "11100111"
+ lane_swap: "57304621"
+ - id: "30"
+ tx_polarity: "10000100"
+ rx_polarity: "00101111"
+ lane_swap: "47125603"
+ - id: "31"
+ tx_polarity: "11111111"
+ rx_polarity: "11100010"
+ lane_swap: "13460275"
+ - id: "32"
+ tx_polarity: "00000000"
+ rx_polarity: "00000000"
+ lane_swap: "01234567"
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/innovium.77700_B b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/innovium.77700_B
new file mode 100644
index 000000000000..27297b313959
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/innovium.77700_B
@@ -0,0 +1,59 @@
+sku: innovium.77700_B
+
+device_id: 0x1b58
+
+# Hardware constraint information
+hardware:
+ num_ibs: 6
+
+ ports_per_ib: 32, 32, 32, 32, 20, 20
+ recirc_port_num: 32, 32, 32, 32, 32, 32
+ cpu_port_num: 33
+ cpu_port_ib: 0
+ mgmt_port_num: 33
+ mgmt_port_ibs: 1,2
+
+ pics_per_ib: 6, 7, 7, 6, 5, 5
+ pic_ports_per_pic: 8
+ max_serdes_speed: 50
+
+ num_shared_pics: 2
+
+ isg [0-4]:
+ ib: 0
+ pic_id: [0-4]
+
+ isg [5-9]:
+ ib: 5
+ pic_id: [0-4]
+
+ isg [10-14]:
+ ib: 1
+ pic_id: [0-4]
+
+ isg [16-20]:
+ ib: 3
+ pic_id: [0-4]
+
+ isg [21-25]:
+ ib: 4
+ pic_id: [0-4]
+
+ isg [26-30]:
+ ib: 2
+ pic_id: [0-4]
+
+ isg 15:
+ mode: 4:4
+ ib: 1, 3
+ pic_id: 5
+
+ isg 31:
+ mode: 4:4
+ ib: 0, 2
+ pic_id: 5
+
+ isg 32:
+ mode: 1:1
+ ib: 1, 2
+ pic_id: 6
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/ivm.sai.config.yaml b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/ivm.sai.config.yaml
new file mode 100755
index 000000000000..607e2da93126
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/ivm.sai.config.yaml
@@ -0,0 +1,9 @@
+IFCS_INIT_FILE : "/usr/share/sonic/hwsku/config_32x100G_Delta-evs-a-32q56.yaml"
+IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.55300"
+IFCS_INNO_CLI_PORT : "9999"
+IFCS_TARGET : "device"
+INNOVIUM_DIR : "/innovium"
+PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes"
+AVG_IPG_RESERVED_SIZE: "1518"
+AVG_QUEUE_RESERVED_SIZE: "1518"
+IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/ivm.sai.datapath.config.yaml b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/ivm.sai.datapath.config.yaml
new file mode 100644
index 000000000000..2dcf88fc9555
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/ivm.sai.datapath.config.yaml
@@ -0,0 +1,10 @@
+ISAI_PARAM_A000 : "0"
+ISAI_PARAM_P0_0_LS : "9216 9216"
+ISAI_PARAM_P0_1_LS : "2850 2650"
+ISAI_PARAM_P0_1_ALS : "290 90"
+ISAI_PARAM_P1_0_LS : "3072 3072"
+ISAI_PARAM_P1_0_LL : "6144 6144"
+ISAI_PARAM_P1_1_LS : "2210 2010"
+ISAI_PARAM_P1_1_LL : "1330 1330"
+ISAI_PARAM_P1_1_ALS : "290 90"
+ISAI_PARAM_P1_1_ALL : "50 50"
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/pg_profile_lookup.ini b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/pg_profile_lookup.ini
new file mode 100644
index 000000000000..36c3bb0a484e
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/pg_profile_lookup.ini
@@ -0,0 +1,14 @@
+# PG lossless profiles.
+# speed cable size xon xoff threshold xon_offset
+ 25000 5m 1518 0 17600 3 13440
+ 50000 5m 1518 0 23456 3 13440
+ 100000 5m 1518 0 36064 3 13440
+ 400000 5m 1518 0 118464 3 13440
+ 25000 40m 1518 0 18720 3 13440
+ 50000 40m 1518 0 25696 3 13440
+ 100000 40m 1518 0 40544 3 13440
+ 400000 40m 1518 0 136384 3 13440
+ 25000 300m 1518 0 27040 3 13440
+ 50000 300m 1518 0 42336 3 13440
+ 100000 300m 1518 0 73824 3 13440
+ 400000 300m 1518 0 269504 3 13440
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/port_config.ini b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/port_config.ini
new file mode 100644
index 000000000000..9999a677da49
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/port_config.ini
@@ -0,0 +1,67 @@
+# name lanes speed index mtu
+Ethernet0 249,250,251,252 100000 0 9126
+Ethernet4 253,254,255,256 100000 0 9126
+Ethernet8 241,242,243,244 100000 1 9126
+Ethernet12 245,246,247,248 100000 1 9126
+Ethernet16 233,234,235,236 100000 2 9126
+Ethernet20 237,238,239,240 100000 2 9126
+Ethernet24 225,226,227,228 100000 3 9126
+Ethernet28 229,230,231,232 100000 3 9126
+Ethernet32 217,218,219,220 100000 4 9126
+Ethernet36 221,222,223,224 100000 4 9126
+Ethernet40 209,210,211,212 100000 5 9126
+Ethernet44 213,214,215,216 100000 5 9126
+Ethernet48 201,202,203,204 100000 6 9126
+Ethernet52 205,206,207,208 100000 6 9126
+Ethernet56 193,194,195,196 100000 7 9126
+Ethernet60 197,198,199,200 100000 7 9126
+Ethernet64 185,186,187,188 100000 8 9126
+Ethernet68 189,190,191,192 100000 8 9126
+Ethernet72 177,178,179,180 100000 9 9126
+Ethernet76 181,182,183,184 100000 9 9126
+Ethernet80 169,170,171,172 100000 10 9126
+Ethernet84 173,174,175,176 100000 10 9126
+Ethernet88 161,162,163,164 100000 11 9126
+Ethernet92 165,166,167,168 100000 11 9126
+Ethernet96 153,154,155,156 100000 12 9126
+Ethernet100 157,158,159,160 100000 12 9126
+Ethernet104 145,146,147,148 100000 13 9126
+Ethernet108 149,150,151,152 100000 13 9126
+Ethernet112 137,138,139,140 100000 14 9126
+Ethernet116 141,142,143,144 100000 14 9126
+Ethernet120 129,130,131,132 100000 15 9126
+Ethernet124 133,134,135,136 100000 15 9126
+Ethernet128 121,122,123,124 100000 16 9126
+Ethernet132 125,126,127,128 100000 16 9126
+Ethernet136 113,114,115,116 100000 17 9126
+Ethernet140 117,118,119,120 100000 17 9126
+Ethernet144 97,98,99,100 100000 18 9126
+Ethernet148 101,102,103,104 100000 18 9126
+Ethernet152 105,106,107,108 100000 19 9126
+Ethernet156 109,110,111,112 100000 19 9126
+Ethernet160 81,82,83,84 100000 20 9126
+Ethernet164 85,86,87,88 100000 20 9126
+Ethernet168 89,90,91,92 100000 21 9126
+Ethernet172 93,94,95,96 100000 21 9126
+Ethernet176 65,66,67,68 100000 22 9126
+Ethernet180 69,70,71,72 100000 22 9126
+Ethernet184 73,74,75,76 100000 23 9126
+Ethernet188 77,78,79,80 100000 23 9126
+Ethernet192 49,50,51,52 100000 24 9126
+Ethernet196 53,54,55,56 100000 24 9126
+Ethernet200 57,58,59,60 100000 25 9126
+Ethernet204 61,62,63,64 100000 25 9126
+Ethernet208 33,34,35,36 100000 26 9126
+Ethernet212 37,38,39,40 100000 26 9126
+Ethernet216 41,42,43,44 100000 27 9126
+Ethernet220 45,46,47,48 100000 27 9126
+Ethernet224 17,18,19,20 100000 28 9126
+Ethernet228 21,22,23,24 100000 28 9126
+Ethernet232 25,26,27,28 100000 29 9126
+Ethernet236 29,30,31,32 100000 29 9126
+Ethernet240 1,2,3,4 100000 30 9126
+Ethernet244 5,6,7,8 100000 30 9126
+Ethernet248 9,10,11,12 100000 31 9126
+Ethernet252 13,14,15,16 100000 31 9126
+Ethernet256 257 10000 32 9126
+Ethernet257 258 10000 33 9126
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/qos.json.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/qos.json.j2
new file mode 100755
index 000000000000..3938fc1a05c4
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/qos.json.j2
@@ -0,0 +1,114 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"3",
+ "4":"4",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"1",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/qos_defaults_def_lossy.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/qos_defaults_def_lossy.j2
new file mode 100755
index 000000000000..205242d82910
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/qos_defaults_def_lossy.j2
@@ -0,0 +1,118 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"0",
+ "4":"0",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"0",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]"
+ }
+ },
+ "SCHEDULER": {
+ "scheduler.7": {
+ "type": "STRICT"
+ }
+ },
+ "QUEUE": {
+ "{{ port_names }}|7": {
+ "scheduler": "[SCHEDULER|scheduler.7]"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/qos_defaults_t1.j2 b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/qos_defaults_t1.j2
new file mode 100644
index 000000000000..3938fc1a05c4
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/qos_defaults_t1.j2
@@ -0,0 +1,114 @@
+{% set port_names_list = [] %}
+{% for port in PORT %}
+ {%- if port_names_list.append(port) %}{% endif %}
+{% endfor %}
+{% set port_names = port_names_list | join(',') -%}
+
+
+{
+ "TC_TO_QUEUE_MAP":{
+ "AZURE":{
+ "0":"0",
+ "1":"1",
+ "2":"2",
+ "3":"3",
+ "4":"4",
+ "5":"5",
+ "6":"6",
+ "7":"7"
+ }
+ },
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "1",
+ "4": "2",
+ "5": "0",
+ "6": "0",
+ "7": "0"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0":"0",
+ "1":"0",
+ "2":"0",
+ "3":"3",
+ "4":"4",
+ "5":"0",
+ "6":"0",
+ "7":"0",
+ "8":"1",
+ "9":"0",
+ "10":"0",
+ "11":"0",
+ "12":"0",
+ "13":"0",
+ "14":"0",
+ "15":"0",
+ "16":"0",
+ "17":"0",
+ "18":"0",
+ "19":"0",
+ "20":"0",
+ "21":"0",
+ "22":"0",
+ "23":"0",
+ "24":"0",
+ "25":"0",
+ "26":"0",
+ "27":"0",
+ "28":"0",
+ "29":"0",
+ "30":"0",
+ "31":"0",
+ "32":"0",
+ "33":"0",
+ "34":"0",
+ "35":"0",
+ "36":"0",
+ "37":"0",
+ "38":"0",
+ "39":"0",
+ "40":"0",
+ "41":"0",
+ "42":"0",
+ "43":"0",
+ "44":"0",
+ "45":"0",
+ "46":"0",
+ "47":"0",
+ "48":"0",
+ "49":"0",
+ "50":"0",
+ "51":"0",
+ "52":"0",
+ "53":"0",
+ "54":"0",
+ "55":"0",
+ "56":"0",
+ "57":"0",
+ "58":"0",
+ "59":"0",
+ "60":"0",
+ "61":"0",
+ "62":"0",
+ "63":"0"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "{{ port_names }}": {
+ "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP:AZURE]",
+ "tc_to_queue_map": "[TC_TO_QUEUE_MAP:AZURE]",
+ "dscp_to_tc_map": "[DSCP_TO_TC_MAP:AZURE]",
+ "pfc_enable": "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "red_min_threshold":"50000"
+ }
+ }
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/sai.profile b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/sai.profile
new file mode 100755
index 000000000000..aba4fc81fb17
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/Delta-evs-a-32q56_64x100/sai.profile
@@ -0,0 +1 @@
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/default_sku b/device/delta/x86_64-delta_evs-a-32q56-r0/default_sku
new file mode 100644
index 000000000000..c52a1e4d3fcc
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/default_sku
@@ -0,0 +1 @@
+Delta-evs-a-32q56_32x100 t1
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/installer.conf b/device/delta/x86_64-delta_evs-a-32q56-r0/installer.conf
new file mode 100644
index 000000000000..925a32fc0c3a
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/installer.conf
@@ -0,0 +1,3 @@
+CONSOLE_PORT=0x3f8
+CONSOLE_DEV=0
+CONSOLE_SPEED=115200
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/plugins/eeprom.py b/device/delta/x86_64-delta_evs-a-32q56-r0/plugins/eeprom.py
new file mode 100644
index 000000000000..667673239950
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/plugins/eeprom.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python
+
+#############################################################################
+# Mellanox
+#
+# Platform and model specific eeprom subclass, inherits from the base class,
+# and provides the followings:
+# - the eeprom format definition
+# - specific encoder/decoder if there is special need
+#############################################################################
+
+try:
+ from sonic_eeprom import eeprom_tlvinfo
+except ImportError, e:
+ raise ImportError (str(e) + "- required module not found")
+
+class board(eeprom_tlvinfo.TlvInfoDecoder):
+
+ def __init__(self, name, path, cpld_root, ro):
+ self.eeprom_path = "/sys/class/i2c-adapter/i2c-0/0-0056/eeprom"
+ super(board, self).__init__(self.eeprom_path, 2048, '', True)
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/plugins/psuutil.py b/device/delta/x86_64-delta_evs-a-32q56-r0/plugins/psuutil.py
new file mode 100644
index 000000000000..88300af1a2ce
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/plugins/psuutil.py
@@ -0,0 +1,75 @@
+#
+# Module contains an implementation of SONiC PSU Base API and
+# provides the PSUs status which are available in the platform
+#
+
+try:
+ import os.path
+ from sonic_psu.psu_base import PsuBase
+except ImportError as e:
+ raise ImportError (str(e) + "- required module not found")
+
+class PsuUtil(PsuBase):
+ """Platform-specific PSUutil class"""
+
+ def __init__(self):
+ PsuBase.__init__(self)
+ self.psu_status = "ipmitool raw 0x06 0x52 0x07 0x62 0x01 0x21"
+
+ def get_num_psus(self):
+ """
+ Retrieves the number of PSUs available on the device
+
+ :return: An integer, the number of PSUs available on the device
+ """
+ return 2
+
+ def get_psu_status(self, index):
+ """
+ Retrieves the oprational status of power supply unit (PSU) defined
+ by 1-based index
+
+ :param index: An integer, 1-based index of the PSU of which to query status
+ :return: Boolean, True if PSU is operating properly, False if PSU is faulty
+ """
+ if index is None:
+ return False
+
+ status = 0
+ try:
+ content = os.popen("ipmitool raw 0x06 0x52 0x07 0x62 0x01 0x23").readline().strip()
+ reg_value = int(content, 16)
+ mask = (1 << (index - 1))
+ if reg_value & mask == 0:
+ status = 0
+ else:
+ status = 1
+ except IOError:
+ return False
+ return status == 1
+
+
+ def get_psu_presence(self, index):
+ """
+ Retrieves the presence status of power supply unit (PSU) defined
+ by 1-based index
+
+ :param index: An integer, 1-based index of the PSU of which to query status
+ :return: Boolean, True if PSU is plugged, False if not
+ """
+ if index is None:
+ return False
+
+ status = 0
+ try:
+ content = os.popen("ipmitool raw 0x06 0x52 0x07 0x62 0x01 0x21").readline().strip()
+ reg_value = int(content, 16)
+ mask = (1 << (index - 1))
+ if reg_value & mask != 0:
+ status = 0
+ else:
+ status = 1
+ except IOError:
+ return False
+ return status == 1
+
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/plugins/sfputil.py b/device/delta/x86_64-delta_evs-a-32q56-r0/plugins/sfputil.py
new file mode 100644
index 000000000000..d0ed79f45ba0
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/plugins/sfputil.py
@@ -0,0 +1,260 @@
+# sfputil.py
+#
+# Platform-specific SFP transceiver interface for SONiC
+#
+
+try:
+ import os.path
+ import time
+ from sonic_sfp.sfputilbase import SfpUtilBase
+except ImportError as e:
+ raise ImportError("%s - required module not found" % str(e))
+
+
+class SfpUtil(SfpUtilBase):
+ """Platform-specific SfpUtil class"""
+
+ PORT_START = 0
+ PORT_START_SFP = 32
+ PORT_END = 33
+ PORTS_IN_BLOCK = 34
+
+ _port_to_eeprom_mapping = {}
+ port_dict = {}
+
+ @property
+ def port_start(self):
+ return self.PORT_START
+
+ @property
+ def port_end(self):
+ return self.PORT_END
+
+ @property
+ def port_start_sfp(self):
+ return self.PORT_START_SFP
+
+ @property
+ def qsfp_ports(self):
+ return range(0, self.PORTS_IN_BLOCK + 1)
+
+ @property
+ def port_to_eeprom_mapping(self):
+ return self._port_to_eeprom_mapping
+
+ @property
+ def get_transceiver_status(self):
+
+ try:
+ reg_file = open("/sys/kernel/sfp/sfp_is_present")
+
+ except IOError as e:
+ print "Error: unable to open file: %s" % str(e)
+ return False
+
+ content = reg_file.readline().rstrip()
+ reg_file.close()
+
+ return int(content, 16)
+
+ def __init__(self):
+ eeprom_path = "/sys/bus/i2c/devices/{0}-0050/eeprom"
+
+ for x in range(0, self.port_end + 1):
+ if x >= self.port_start_sfp:
+ # SFP1: 41-0050, SFP2: 42-0050
+ self.port_to_eeprom_mapping[x] = eeprom_path.format(x + 9)
+ else:
+ # QSFP1: 51-0050 ~ QSFP32: 82-0050
+ self.port_to_eeprom_mapping[x] = eeprom_path.format(x + 51)
+
+ self.modprs_register = self.get_transceiver_status
+ SfpUtilBase.__init__(self)
+
+ def get_presence(self, port_num):
+ # Check for invalid port_num
+ if port_num < self.port_start or port_num > self.port_end:
+ return False
+
+ if port_num < 16 or port_num >= self.port_start_sfp:
+ os.popen("ipmitool raw 0x06 0x52 0x07 0xe2 0x01 0x01")
+ else:
+ os.popen("ipmitool raw 0x06 0x52 0x07 0xe2 0x01 0x10")
+
+ if port_num >= self.port_start_sfp:
+ content = os.popen("ipmitool raw 0x06 0x52 0x07 0x64 0x01 0x01").readline().strip()
+ else:
+ if ((port_num / 8) % 2 == 0):
+ content = os.popen("ipmitool raw 0x06 0x52 0x07 0x64 0x01 0x08").readline().strip()
+ else:
+ content = os.popen("ipmitool raw 0x06 0x52 0x07 0x64 0x01 0x09").readline().strip()
+
+ # content is a string containing the hex representation of the register
+ reg_value = int(content, 16)
+
+ # Mask off the bit corresponding to our port
+ mask = (1 << (port_num % 8))
+
+ # ModPrsL is active low
+ if reg_value & mask == 0:
+ return True
+
+ return False
+
+ def get_low_power_mode(self, port_num):
+ # Check for invalid port_num
+ if port_num < self.port_start or port_num > self.port_end - 2:
+ return False
+
+ if port_num < 16:
+ os.popen("ipmitool raw 0x06 0x52 0x07 0xe2 0x01 0x01")
+ else:
+ os.popen("ipmitool raw 0x06 0x52 0x07 0xe2 0x01 0x10")
+
+ if ((port_num / 8) % 2 == 0):
+ content = os.popen("ipmitool raw 0x06 0x52 0x07 0x64 0x01 0x12").readline().strip()
+ else:
+ content = os.popen("ipmitool raw 0x06 0x52 0x07 0x64 0x01 0x13").readline().strip()
+
+ # content is a string containing the hex representation of the register
+ reg_value = int(content, 16)
+
+ # Mask off the bit corresponding to our port
+ mask = (1 << (port_num % 8))
+
+ # LPMode is active high
+ if reg_value & mask == 0:
+ return False
+
+ return True
+
+ def set_low_power_mode(self, port_num, lpmode):
+ # Check for invalid port_num
+ if port_num < self.port_start or port_num > self.port_end - 2:
+ return False
+
+ if port_num < 16:
+ os.popen("ipmitool raw 0x06 0x52 0x07 0xe2 0x01 0x01")
+ else:
+ os.popen("ipmitool raw 0x06 0x52 0x07 0xe2 0x01 0x10")
+
+ if ((port_num / 8) % 2 == 0):
+ content = os.popen("ipmitool raw 0x06 0x52 0x07 0x64 0x01 0x12").readline().strip()
+ else:
+ content = os.popen("ipmitool raw 0x06 0x52 0x07 0x64 0x01 0x13").readline().strip()
+
+ # content is a string containing the hex representation of the register
+ reg_value = int(content, 16)
+
+ # Mask off the bit corresponding to our port
+ mask = (1 << (port_num % 8))
+
+ # LPMode is active high; set or clear the bit accordingly
+ if lpmode is True:
+ reg_value = reg_value | mask
+ else:
+ reg_value = reg_value & ~mask
+
+ # Convert our register value back to a hex string and write back
+ content = hex(reg_value).rstrip("L") or "0"
+ if ((port_num / 8) % 2 == 0):
+ os.popen("ipmitool raw 0x06 0x52 0x07 0x64 0x00 0x12 {0}".format(content))
+ else:
+ os.popen("ipmitool raw 0x06 0x52 0x07 0x64 0x00 0x13 {0}".format(content))
+
+ return True
+
+ def reset(self, port_num):
+ # Check for invalid port_num
+ if port_num < self.port_start or port_num > self.port_end - 2:
+ return False
+
+ if port_num < 16:
+ os.popen("ipmitool raw 0x06 0x52 0x07 0xe2 0x01 0x01")
+ else:
+ os.popen("ipmitool raw 0x06 0x52 0x07 0xe2 0x01 0x10")
+
+ if ((port_num / 8) % 2 == 0):
+ content = os.popen("ipmitool raw 0x06 0x52 0x07 0x64 0x01 0x06").readline().strip()
+ else:
+ content = os.popen("ipmitool raw 0x06 0x52 0x07 0x64 0x01 0x07").readline().strip()
+
+ # File content is a string containing the hex representation of the register
+ reg_value = int(content, 16)
+
+ # Mask off the bit corresponding to our port
+ mask = (1 << (port_num % 8))
+
+ # ResetL is active low
+ reg_value = reg_value & ~mask
+
+ # Convert our register value back to a hex string and write back
+ if ((port_num / 8) % 2 == 0):
+ os.popen("ipmitool raw 0x06 0x52 0x07 0x64 0x00 0x06 {0}".format(hex(reg_value)))
+ else:
+ os.popen("ipmitool raw 0x06 0x52 0x07 0x64 0x00 0x07 {0}".format(hex(reg_value)))
+
+ # Sleep 1 second to allow it to settle
+ time.sleep(1)
+
+ # Flip the bit back high and write back to the register to take port out of reset
+ reg_value = reg_value | mask
+ if ((port_num / 8) % 2 == 0):
+ os.popen("ipmitool raw 0x06 0x52 0x07 0x64 0x00 0x06 {0}".format(hex(reg_value)))
+ else:
+ os.popen("ipmitool raw 0x06 0x52 0x07 0x64 0x00 0x07 {0}".format(hex(reg_value)))
+
+ return True
+
+ def get_transceiver_change_event(self, timeout=2000):
+ start_time = time.time()
+ port_dict = {}
+ port = self.port_start
+ forever = False
+ if timeout == 0:
+ forever = True
+ elif timeout > 0:
+ timeout = timeout / float(1000) # Convert to secs
+ else:
+ print "get_transceiver_change_event:Invalid timeout value", timeout
+ return False, {}
+
+ end_time = start_time + timeout
+ if start_time > end_time:
+ print 'get_transceiver_change_event:' \
+ 'time wrap / invalid timeout value', timeout
+
+ return False, {} # Time wrap or possibly incorrect timeout
+ while timeout >= 0:
+ # Check for OIR events and return updated port_dict
+ reg_value = self.get_transceiver_status
+ if reg_value != self.modprs_register:
+ changed_ports = self.modprs_register ^ reg_value
+ while port >= self.port_start and port <= self.port_end:
+
+ # Mask off the bit corresponding to our port
+ mask = (1 << port)
+ if changed_ports & mask:
+ # ModPrsL is active low
+ if reg_value & mask == 0:
+ port_dict[port] = '1'
+ else:
+ port_dict[port] = '0'
+
+ port += 1
+
+ # Update reg value
+ self.modprs_register = reg_value
+ return True, port_dict
+ if forever:
+ time.sleep(1)
+ else:
+ timeout = end_time - time.time()
+ if timeout >= 1:
+ time.sleep(1) # We poll at 1 second granularity
+ else:
+ if timeout > 0:
+ time.sleep(timeout)
+ return True, {}
+ print "get_transceiver_change_event: Should not reach here."
+ return False, {}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/pmon_daemon_control.json b/device/delta/x86_64-delta_evs-a-32q56-r0/pmon_daemon_control.json
new file mode 100644
index 000000000000..f490a4dc0f39
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/pmon_daemon_control.json
@@ -0,0 +1,3 @@
+{
+ "skip_thermalctld": true
+}
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/sensors.conf b/device/delta/x86_64-delta_evs-a-32q56-r0/sensors.conf
new file mode 100644
index 000000000000..db34a541b26f
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/sensors.conf
@@ -0,0 +1,4 @@
+# libsensors configuration file for DELTA-ET-C032IF
+# ------------------------------------------------
+#
+
diff --git a/device/delta/x86_64-delta_evs-a-32q56-r0/topo.conf b/device/delta/x86_64-delta_evs-a-32q56-r0/topo.conf
new file mode 100644
index 000000000000..795ea43143eb
--- /dev/null
+++ b/device/delta/x86_64-delta_evs-a-32q56-r0/topo.conf
@@ -0,0 +1 @@
+t1
diff --git a/platform/innovium/docker-syncd-invm-rpc.mk b/platform/innovium/docker-syncd-invm-rpc.mk
index 62d6891bbc21..313f0d12ac20 100755
--- a/platform/innovium/docker-syncd-invm-rpc.mk
+++ b/platform/innovium/docker-syncd-invm-rpc.mk
@@ -2,7 +2,7 @@
DOCKER_SYNCD_INVM_RPC = docker-syncd-invm-rpc.gz
$(DOCKER_SYNCD_INVM_RPC)_PATH = $(PLATFORM_PATH)/docker-syncd-invm-rpc
-$(DOCKER_SYNCD_INVM_RPC)_DEPENDS += $(SYNCD_RPC) $(LIBTHRIFT) $(INVM_LIBSAI) $(PTF)
+$(DOCKER_SYNCD_INVM_RPC)_DEPENDS += $(SYNCD_RPC) $(LIBTHRIFT) $(INVM_LIBSAI)
$(DOCKER_SYNCD_INVM_RPC)_LOAD_DOCKERS += $(DOCKER_SYNCD_BASE)
SONIC_DOCKER_IMAGES += $(DOCKER_SYNCD_INVM_RPC)
ifeq ($(ENABLE_SYNCD_RPC),y)
diff --git a/platform/innovium/docker-syncd-invm-rpc/Dockerfile.j2 b/platform/innovium/docker-syncd-invm-rpc/Dockerfile.j2
index af31d587b90a..2a9c692b4b06 100755
--- a/platform/innovium/docker-syncd-invm-rpc/Dockerfile.j2
+++ b/platform/innovium/docker-syncd-invm-rpc/Dockerfile.j2
@@ -42,6 +42,8 @@ RUN apt-get update \
&& pip install cffi==1.7.0 \
&& pip install --upgrade cffi==1.7.0 \
&& pip install nnpy \
+ && pip install numpy \
+ && pip install scipy \
&& mkdir -p /opt \
&& cd /opt \
&& wget https://raw.githubusercontent.com/p4lang/ptf/master/ptf_nn/ptf_nn_agent.py \
diff --git a/platform/innovium/docker-syncd-invm/Dockerfile.j2 b/platform/innovium/docker-syncd-invm/Dockerfile.j2
index 27054e23e472..6f6f5eca9b60 100755
--- a/platform/innovium/docker-syncd-invm/Dockerfile.j2
+++ b/platform/innovium/docker-syncd-invm/Dockerfile.j2
@@ -24,6 +24,7 @@ RUN dpkg -i \
debs/{{ deb }}{{' '}}
{%- endfor %}
+COPY ["start.sh", "/usr/bin/"]
COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
## Clean up
diff --git a/platform/innovium/docker-syncd-invm/start.sh b/platform/innovium/docker-syncd-invm/start.sh
new file mode 100755
index 000000000000..32bdb12ebfc0
--- /dev/null
+++ b/platform/innovium/docker-syncd-invm/start.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+
+if [ -f /usr/bin/ivm_start.sh ];
+then
+ /usr/bin/ivm_start.sh
+fi
diff --git a/platform/innovium/docker-syncd-invm/supervisord.conf b/platform/innovium/docker-syncd-invm/supervisord.conf
index 2a2413b30098..c5541518f861 100755
--- a/platform/innovium/docker-syncd-invm/supervisord.conf
+++ b/platform/innovium/docker-syncd-invm/supervisord.conf
@@ -21,6 +21,17 @@ stdout_logfile=syslog
stderr_logfile=syslog
dependent_startup=true
+[program:start]
+command=/usr/bin/start.sh
+priority=1
+autostart=false
+autorestart=false
+startsecs=0
+stdout_logfile=syslog
+stderr_logfile=syslog
+dependent_startup=true
+dependent_startup_wait_for=rsyslogd:running
+
[program:syncd]
command=/usr/bin/syncd_start.sh
priority=2
diff --git a/platform/innovium/libsaithrift-dev.mk b/platform/innovium/libsaithrift-dev.mk
index 5357705bac98..2f2ed91d511d 100755
--- a/platform/innovium/libsaithrift-dev.mk
+++ b/platform/innovium/libsaithrift-dev.mk
@@ -1,7 +1,20 @@
# libsaithrift-dev package
-LIBSAITHRIFT_DEV_INVM = libsaithrift-dev_0.9.4_$(CONFIGURED_ARCH).deb
-$(LIBSAITHRIFT_DEV_INVM)_SRC_PATH = $(SRC_PATH)/sonic-sairedis/SAI
-$(LIBSAITHRIFT_DEV_INVM)_DEPENDS += $(LIBTHRIFT) $(LIBTHRIFT_DEV) $(THRIFT_COMPILER) $(INVM_LIBSAI) $(INVM_HSAI)
-$(LIBSAITHRIFT_DEV_INVM)_RDEPENDS += $(LIBTHRIFT) $(INVM_HSAI)
-SONIC_DPKG_DEBS += $(LIBSAITHRIFT_DEV_INVM)
+SAI_VER = 0.9.4
+
+LIBSAITHRIFT_DEV = libsaithrift-dev_${SAI_VER}_$(CONFIGURED_ARCH).deb
+$(LIBSAITHRIFT_DEV)_SRC_PATH = $(SRC_PATH)/sonic-sairedis/SAI
+$(LIBSAITHRIFT_DEV)_DEPENDS += $(LIBTHRIFT) $(LIBTHRIFT_DEV) $(PYTHON_THRIFT) $(THRIFT_COMPILER) $(INVM_LIBSAI) $(INVM_HSAI)
+$(LIBSAITHRIFT_DEV)_RDEPENDS += $(LIBTHRIFT) $(INVM_HSAI)
+SONIC_DPKG_DEBS += $(LIBSAITHRIFT_DEV)
+
+PYTHON_SAITHRIFT = python-saithrift_$(SAI_VER)_amd64.deb
+$(eval $(call add_extra_package,$(LIBSAITHRIFT_DEV),$(PYTHON_SAITHRIFT)))
+
+SAISERVER = saiserver_$(SAI_VER)_amd64.deb
+$(SAISERVER)_RDEPENDS += $(LIBTHRIFT) $(BRCM_SAI)
+$(eval $(call add_extra_package,$(LIBSAITHRIFT_DEV),$(SAISERVER)))
+
+SAISERVER_DBG = saiserver-dbg_$(SAI_VER)_amd64.deb
+$(SAISERVER_DBG)_RDEPENDS += $(SAISERVER)
+$(eval $(call add_extra_package,$(LIBSAITHRIFT_DEV),$(SAISERVER_DBG)))
diff --git a/platform/innovium/one-image.mk b/platform/innovium/one-image.mk
index c88ec5e65cdf..daf38d9d86f1 100755
--- a/platform/innovium/one-image.mk
+++ b/platform/innovium/one-image.mk
@@ -2,10 +2,11 @@
SONIC_ONE_IMAGE = sonic-innovium.bin
$(SONIC_ONE_IMAGE)_MACHINE = innovium
-$(SONIC_ONE_IMAGE)_INSTALLS += $(SYSTEMD_SONIC_GENERATOR)
$(SONIC_ONE_IMAGE)_IMAGE_TYPE = onie
+$(SONIC_ONE_IMAGE)_INSTALLS += $(SYSTEMD_SONIC_GENERATOR)
$(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(CEL_MIDSTONE_200I_PLATFORM_MODULE)
-$(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(DELTA_PLATFORM_MODULE)
+$(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(DELTA_ETC032IF_PLATFORM_MODULE)
+$(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(DELTA_EVSA32Q56_PLATFORM_MODULE)
$(SONIC_ONE_IMAGE)_INSTALLS += $(INVM_DRV)
$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_IMAGES)
SONIC_INSTALLERS += $(SONIC_ONE_IMAGE)
diff --git a/platform/innovium/platform-modules-delta.mk b/platform/innovium/platform-modules-delta.mk
index 68e13fb8a8a4..e580f18c4ec7 100644
--- a/platform/innovium/platform-modules-delta.mk
+++ b/platform/innovium/platform-modules-delta.mk
@@ -1,13 +1,19 @@
# Delta Platform modules
DELTA_ETC032IF_PLATFORM_MODULE_VERSION = 1.1
+DELTA_EVSA32Q56_PLATFORM_MODULE_VERSION = 1.1
export DELTA_ETC032IF_PLATFORM_MODULE_VERSION
+export DELTA_EVSA32Q56_PLATFORM_MODULE_VERSION
-DELTA_PLATFORM_MODULE = platform-modules-et-c032if_$(DELTA_ETC032IF_PLATFORM_MODULE_VERSION)_$(CONFIGURED_ARCH).deb
-$(DELTA_PLATFORM_MODULE)_SRC_PATH = $(PLATFORM_PATH)/sonic-platform-modules-delta
-$(DELTA_PLATFORM_MODULE)_DEPENDS += $(LINUX_HEADERS) $(LINUX_HEADERS_COMMON)
-$(DELTA_PLATFORM_MODULE)_PLATFORM = x86_64-delta_et-c032if-r0
+DELTA_ETC032IF_PLATFORM_MODULE = platform-modules-et-c032if_$(DELTA_ETC032IF_PLATFORM_MODULE_VERSION)_$(CONFIGURED_ARCH).deb
+$(DELTA_ETC032IF_PLATFORM_MODULE)_SRC_PATH = $(PLATFORM_PATH)/sonic-platform-modules-delta
+$(DELTA_ETC032IF_PLATFORM_MODULE)_DEPENDS += $(LINUX_HEADERS) $(LINUX_HEADERS_COMMON)
+$(DELTA_ETC032IF_PLATFORM_MODULE)_PLATFORM = x86_64-delta_et-c032if-r0
+SONIC_DPKG_DEBS += $(DELTA_ETC032IF_PLATFORM_MODULE)
-SONIC_DPKG_DEBS += $(DELTA_PLATFORM_MODULE)
-SONIC_STRETCH_DEBS += $(DELTA_PLATFORM_MODULE)
+DELTA_EVSA32Q56_PLATFORM_MODULE = platform-modules-evs-a-32q56_$(DELTA_EVSA32Q56_PLATFORM_MODULE_VERSION)_$(CONFIGURED_ARCH).deb
+$(DELTA_EVSA32Q56_PLATFORM_MODULE)_PLATFORM = x86_64-delta_evs-a-32q56-r0
+$(eval $(call add_extra_package,$(DELTA_ETC032IF_PLATFORM_MODULE),$(DELTA_EVSA32Q56_PLATFORM_MODULE)))
+
+SONIC_STRETCH_DEBS += $(DELTA_ETC032IF_PLATFORM_MODULE)
diff --git a/platform/innovium/rules.mk b/platform/innovium/rules.mk
index 68a9dbb41040..5e8b72393538 100755
--- a/platform/innovium/rules.mk
+++ b/platform/innovium/rules.mk
@@ -5,7 +5,6 @@ include $(PLATFORM_PATH)/docker-syncd-invm.mk
include $(PLATFORM_PATH)/docker-syncd-invm-rpc.mk
include $(PLATFORM_PATH)/one-image.mk
include $(PLATFORM_PATH)/libsaithrift-dev.mk
-include $(PLATFORM_PATH)/python-saithrift.mk
include $(PLATFORM_PATH)/docker-ptf-invm.mk
SONIC_ALL += $(SONIC_INVM_ONE_IMAGE) \
@@ -14,7 +13,7 @@ SONIC_ALL += $(SONIC_INVM_ONE_IMAGE) \
$(DOCKER_SYNCD_INVM_RPC)
# Inject invm sai into sairedis
-$(LIBSAIREDIS)_DEPENDS += $(INVM_HSAI) $(INVM_LIBSAI) $(LIBSAITHRIFT_DEV_INVM)
+$(LIBSAIREDIS)_DEPENDS += $(INVM_HSAI) $(INVM_LIBSAI) $(LIBSAITHRIFT_DEV)
# Runtime dependency on invm sai is set only for syncd
$(SYNCD)_RDEPENDS += $(INVM_HSAI)
diff --git a/platform/innovium/sonic-platform-modules-delta/debian/control b/platform/innovium/sonic-platform-modules-delta/debian/control
index 3fe3ffc9f526..9f3f4931bfa0 100644
--- a/platform/innovium/sonic-platform-modules-delta/debian/control
+++ b/platform/innovium/sonic-platform-modules-delta/debian/control
@@ -10,4 +10,7 @@ Architecture: amd64
Depends: linux-image-4.9.0-11-2-amd64
Description: kernel modules for platform devices such as fan, led, sfp
-
+Package: platform-modules-evs-a-32q56
+Architecture: amd64
+Depends: linux-image-4.9.0-11-2-amd64
+Description: kernel modules for platform devices such as fan, led, sfp
diff --git a/platform/innovium/sonic-platform-modules-delta/debian/rules b/platform/innovium/sonic-platform-modules-delta/debian/rules
index a84c235e5480..cc45ac570330 100755
--- a/platform/innovium/sonic-platform-modules-delta/debian/rules
+++ b/platform/innovium/sonic-platform-modules-delta/debian/rules
@@ -5,7 +5,7 @@ export INSTALL_MOD_DIR:=extra
KVERSION ?= $(shell uname -r)
KERNEL_SRC := /lib/modules/$(KVERSION)
MOD_SRC_DIR:= $(shell pwd)
-MODULE_DIRS:= et-c032if
+MODULE_DIRS:= et-c032if evs-a-32q56
%:
dh $@ --with=systemd
diff --git a/platform/innovium/sonic-platform-modules-delta/evs-a-32q56/cfg/evs-a-32q56-modules.conf b/platform/innovium/sonic-platform-modules-delta/evs-a-32q56/cfg/evs-a-32q56-modules.conf
new file mode 100644
index 000000000000..552b4103ed02
--- /dev/null
+++ b/platform/innovium/sonic-platform-modules-delta/evs-a-32q56/cfg/evs-a-32q56-modules.conf
@@ -0,0 +1,13 @@
+# /etc/modules: kernel modules to load at boot time.
+#
+# This file contains the names of kernel modules that should be loaded
+# at boot time, one per line. Lines beginning with "#" are ignored.
+
+i2c-i801
+i2c-isch
+i2c-ismt
+i2c-dev
+i2c-mux
+i2c-smbus
+i2c-mux-gpio
+i2c-mux-pca954x
diff --git a/platform/innovium/sonic-platform-modules-delta/evs-a-32q56/modules/Makefile b/platform/innovium/sonic-platform-modules-delta/evs-a-32q56/modules/Makefile
new file mode 100644
index 000000000000..4c0c1375c998
--- /dev/null
+++ b/platform/innovium/sonic-platform-modules-delta/evs-a-32q56/modules/Makefile
@@ -0,0 +1,2 @@
+obj-m := delta_evs-a-32q56_platform.o delta_at24.o
+
diff --git a/platform/innovium/sonic-platform-modules-delta/evs-a-32q56/modules/delta_at24.c b/platform/innovium/sonic-platform-modules-delta/evs-a-32q56/modules/delta_at24.c
new file mode 100644
index 000000000000..447f2432776d
--- /dev/null
+++ b/platform/innovium/sonic-platform-modules-delta/evs-a-32q56/modules/delta_at24.c
@@ -0,0 +1,641 @@
+/*
+ * at24.c - handle most I2C EEPROMs
+ *
+ * Copyright (C) 2005-2007 David Brownell
+ * Copyright (C) 2008 Wolfram Sang, Pengutronix
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+/*
+ * I2C EEPROMs from most vendors are inexpensive and mostly interchangeable.
+ * Differences between different vendor product lines (like Atmel AT24C or
+ * MicroChip 24LC, etc) won't much matter for typical read/write access.
+ * There are also I2C RAM chips, likewise interchangeable. One example
+ * would be the PCF8570, which acts like a 24c02 EEPROM (256 bytes).
+ *
+ * However, misconfiguration can lose data. "Set 16-bit memory address"
+ * to a part with 8-bit addressing will overwrite data. Writing with too
+ * big a page size also loses data. And it's not safe to assume that the
+ * conventional addresses 0x50..0x57 only hold eeproms; a PCF8563 RTC
+ * uses 0x51, for just one example.
+ *
+ * Accordingly, explicit board-specific configuration data should be used
+ * in almost all cases. (One partial exception is an SMBus used to access
+ * "SPD" data for DRAM sticks. Those only use 24c02 EEPROMs.)
+ *
+ * So this driver uses "new style" I2C driver binding, expecting to be
+ * told what devices exist. That may be in arch/X/mach-Y/board-Z.c or
+ * similar kernel-resident tables; or, configuration data coming from
+ * a bootloader.
+ *
+ * Other than binding model, current differences from "eeprom" driver are
+ * that this one handles write access and isn't restricted to 24c02 devices.
+ * It also handles larger devices (32 kbit and up) with two-byte addresses,
+ * which won't work on pure SMBus systems.
+ */
+
+struct at24_data {
+ struct at24_platform_data chip;
+ int use_smbus;
+
+ /*
+ * Lock protects against activities from other Linux tasks,
+ * but not from changes by other I2C masters.
+ */
+ struct mutex lock;
+ struct bin_attribute bin;
+
+ u8 *writebuf;
+ unsigned write_max;
+ unsigned num_addresses;
+
+ /*
+ * Some chips tie up multiple I2C addresses; dummy devices reserve
+ * them for us, and we'll use them with SMBus calls.
+ */
+ struct i2c_client *client[];
+};
+
+/*
+ * This parameter is to help this driver avoid blocking other drivers out
+ * of I2C for potentially troublesome amounts of time. With a 100 kHz I2C
+ * clock, one 256 byte read takes about 1/43 second which is excessive;
+ * but the 1/170 second it takes at 400 kHz may be quite reasonable; and
+ * at 1 MHz (Fm+) a 1/430 second delay could easily be invisible.
+ *
+ * This value is forced to be a power of two so that writes align on pages.
+ */
+static unsigned io_limit = 128;
+module_param(io_limit, uint, 0);
+MODULE_PARM_DESC(io_limit, "Maximum bytes per I/O (default 128)");
+
+/*
+ * Specs often allow 5 msec for a page write, sometimes 20 msec;
+ * it's important to recover from write timeouts.
+ */
+static unsigned write_timeout = 25;
+module_param(write_timeout, uint, 0);
+MODULE_PARM_DESC(write_timeout, "Time (in ms) to try writes (default 25)");
+
+#define AT24_SIZE_BYTELEN 5
+#define AT24_SIZE_FLAGS 8
+
+#define AT24_BITMASK(x) (BIT(x) - 1)
+
+/* create non-zero magic value for given eeprom parameters */
+#define AT24_DEVICE_MAGIC(_len, _flags) \
+ ((1 << AT24_SIZE_FLAGS | (_flags)) \
+ << AT24_SIZE_BYTELEN | ilog2(_len))
+
+static const struct i2c_device_id delta_at24_ids[] = {
+ /* needs 8 addresses as A0-A2 are ignored */
+ { "24c00-delta", AT24_DEVICE_MAGIC(128 / 8, AT24_FLAG_TAKE8ADDR) },
+ /* old variants can't be handled with this generic entry! */
+ { "24c01-delta", AT24_DEVICE_MAGIC(1024 / 8, 0) },
+ { "24cs01-delta", AT24_DEVICE_MAGIC(16,
+ AT24_FLAG_SERIAL | AT24_FLAG_READONLY) },
+ { "24c02-delta", AT24_DEVICE_MAGIC(2048 / 8, 0) },
+ { "24cs02-delta", AT24_DEVICE_MAGIC(16,
+ AT24_FLAG_SERIAL | AT24_FLAG_READONLY) },
+ { "24mac402-delta", AT24_DEVICE_MAGIC(48 / 8,
+ AT24_FLAG_MAC | AT24_FLAG_READONLY) },
+ { "24mac602-delta", AT24_DEVICE_MAGIC(64 / 8,
+ AT24_FLAG_MAC | AT24_FLAG_READONLY) },
+ /* spd is a 24c02 in memory DIMMs */
+ { "spd-delta", AT24_DEVICE_MAGIC(2048 / 8,
+ AT24_FLAG_READONLY | AT24_FLAG_IRUGO) },
+ { "24c04-delta", AT24_DEVICE_MAGIC(4096 / 8, 0) },
+ { "24cs04-delta", AT24_DEVICE_MAGIC(16,
+ AT24_FLAG_SERIAL | AT24_FLAG_READONLY) },
+ /* 24rf08 quirk is handled at i2c-core */
+ { "24c08-delta", AT24_DEVICE_MAGIC(8192 / 8, 0) },
+ { "24cs08-delta", AT24_DEVICE_MAGIC(16,
+ AT24_FLAG_SERIAL | AT24_FLAG_READONLY) },
+ { "24c16-delta", AT24_DEVICE_MAGIC(16384 / 8, 0) },
+ { "24cs16-delta", AT24_DEVICE_MAGIC(16,
+ AT24_FLAG_SERIAL | AT24_FLAG_READONLY) },
+ { "24c32-delta", AT24_DEVICE_MAGIC(32768 / 8, AT24_FLAG_ADDR16) },
+ { "24cs32-delta", AT24_DEVICE_MAGIC(16,
+ AT24_FLAG_ADDR16 |
+ AT24_FLAG_SERIAL |
+ AT24_FLAG_READONLY) },
+ { "24c64-delta", AT24_DEVICE_MAGIC(65536 / 8, AT24_FLAG_ADDR16) },
+ { "24cs64-delta", AT24_DEVICE_MAGIC(16,
+ AT24_FLAG_ADDR16 |
+ AT24_FLAG_SERIAL |
+ AT24_FLAG_READONLY) },
+ { "24c128-delta", AT24_DEVICE_MAGIC(131072 / 8, AT24_FLAG_ADDR16) },
+ { "24c256-delta", AT24_DEVICE_MAGIC(262144 / 8, AT24_FLAG_ADDR16) },
+ { "24c512-delta", AT24_DEVICE_MAGIC(524288 / 8, AT24_FLAG_ADDR16) },
+ { "24c1024-delta", AT24_DEVICE_MAGIC(1048576 / 8, AT24_FLAG_ADDR16) },
+ { "24c2048-delta", AT24_DEVICE_MAGIC(2097152 / 8, AT24_FLAG_ADDR16) },
+ { "at24-delta", 0 },
+ { /* END OF LIST */ }
+};
+MODULE_DEVICE_TABLE(i2c, delta_at24_ids);
+
+/*-------------------------------------------------------------------------*/
+
+/*
+ * This routine supports chips which consume multiple I2C addresses. It
+ * computes the addressing information to be used for a given r/w request.
+ * Assumes that sanity checks for offset happened at sysfs-layer.
+ */
+static struct i2c_client *at24_translate_offset(struct at24_data *at24,
+ unsigned *offset)
+{
+ unsigned i = 0;
+
+ if (at24->chip.flags & AT24_FLAG_ADDR16) {
+ i = *offset >> 16;
+ *offset &= 0xffff;
+ } else {
+ i = *offset >> 8;
+ *offset &= 0xff;
+ }
+
+ return at24->client[i];
+}
+
+static ssize_t at24_eeprom_read(struct at24_data *at24, char *buf,
+ unsigned offset, size_t count)
+{
+ struct i2c_msg msg[2];
+ struct i2c_client *client;
+ unsigned long timeout, read_time;
+ int status;
+
+ memset(msg, 0, sizeof(msg));
+
+ /*
+ * REVISIT some multi-address chips don't rollover page reads to
+ * the next slave address, so we may need to truncate the count.
+ * Those chips might need another quirk flag.
+ *
+ * If the real hardware used four adjacent 24c02 chips and that
+ * were misconfigured as one 24c08, that would be a similar effect:
+ * one "eeprom" file not four, but larger reads would fail when
+ * they crossed certain pages.
+ */
+
+ /*
+ * Slave address and byte offset derive from the offset. Always
+ * set the byte address; on a multi-master board, another master
+ * may have changed the chip's "current" address pointer.
+ */
+ client = at24_translate_offset(at24, &offset);
+
+ if (count > io_limit)
+ count = io_limit;
+
+ count = 1;
+
+ /*
+ * Reads fail if the previous write didn't complete yet. We may
+ * loop a few times until this one succeeds, waiting at least
+ * long enough for one entire page write to work.
+ */
+ timeout = jiffies + msecs_to_jiffies(write_timeout);
+ do {
+ read_time = jiffies;
+
+ status = i2c_smbus_write_byte_data(client, (offset >> 8) & 0x0ff, offset & 0x0ff );
+ status = i2c_smbus_read_byte(client);
+ if (status >= 0) {
+ buf[0] = status;
+ status = count;
+ }
+
+ dev_dbg(&client->dev, "read %zu@%d --> %d (%ld)\n", count, offset, status, jiffies);
+
+ if (status == count)
+ return count;
+
+ /* REVISIT: at HZ=100, this is sloooow */
+ msleep(1);
+ } while (time_before(read_time, timeout));
+
+ return -ETIMEDOUT;
+}
+
+static ssize_t at24_read(struct at24_data *at24,
+ char *buf, loff_t off, size_t count)
+{
+ ssize_t retval = 0;
+
+ if (unlikely(!count))
+ return count;
+
+ memset(buf, 0, count);
+
+ /*
+ * Read data from chip, protecting against concurrent updates
+ * from this host, but not from other I2C masters.
+ */
+ mutex_lock(&at24->lock);
+
+ while (count) {
+ ssize_t status;
+
+ status = at24_eeprom_read(at24, buf, off, count);
+ if (status <= 0) {
+ if (retval == 0)
+ retval = status;
+ break;
+ }
+ buf += status;
+ off += status;
+ count -= status;
+ retval += status;
+ }
+
+ mutex_unlock(&at24->lock);
+
+ return retval;
+}
+
+static ssize_t at24_bin_read(struct file *filp, struct kobject *kobj,
+ struct bin_attribute *attr,
+ char *buf, loff_t off, size_t count)
+{
+ struct at24_data *at24;
+
+ at24 = dev_get_drvdata(container_of(kobj, struct device, kobj));
+ return at24_read(at24, buf, off, count);
+}
+
+
+/*
+ * Note that if the hardware write-protect pin is pulled high, the whole
+ * chip is normally write protected. But there are plenty of product
+ * variants here, including OTP fuses and partial chip protect.
+ *
+ * We only use page mode writes; the alternative is sloooow. This routine
+ * writes at most one page.
+ */
+static ssize_t at24_eeprom_write(struct at24_data *at24, const char *buf,
+ unsigned offset, size_t count)
+{
+ struct i2c_client *client;
+ ssize_t status;
+ unsigned long timeout, write_time;
+ unsigned next_page;
+
+ /* Get corresponding I2C address and adjust offset */
+ client = at24_translate_offset(at24, &offset);
+
+ /* write_max is at most a page */
+ if (count > at24->write_max)
+ count = at24->write_max;
+
+ /* Never roll over backwards, to the start of this page */
+ next_page = roundup(offset + 1, at24->chip.page_size);
+ if (offset + count > next_page)
+ count = next_page - offset;
+
+ /*
+ * Writes fail if the previous one didn't complete yet. We may
+ * loop a few times until this one succeeds, waiting at least
+ * long enough for one entire page write to work.
+ */
+ timeout = jiffies + msecs_to_jiffies(write_timeout);
+ do {
+ write_time = jiffies;
+
+ status = i2c_smbus_write_word_data(client, (offset >> 8) & 0x0ff, (offset & 0xFF) | buf[0]);
+ if (status == 0)
+ status = count;
+
+ dev_dbg(&client->dev, "write %zu@%d --> %zd (%ld)\n", count, offset, status, jiffies);
+
+ if (status == count)
+ return count;
+
+ /* REVISIT: at HZ=100, this is sloooow */
+ msleep(1);
+ } while (time_before(write_time, timeout));
+
+ return -ETIMEDOUT;
+}
+
+static ssize_t at24_write(struct at24_data *at24, const char *buf, loff_t off,
+ size_t count)
+{
+ ssize_t retval = 0;
+
+ if (unlikely(!count))
+ return count;
+
+ /*
+ * Write data to chip, protecting against concurrent updates
+ * from this host, but not from other I2C masters.
+ */
+ mutex_lock(&at24->lock);
+
+ while (count) {
+ ssize_t status;
+
+ status = at24_eeprom_write(at24, buf, off, 1); /* only one-byte to write; TODO page wirte */
+ if (status <= 0) {
+ if (retval == 0)
+ retval = status;
+ break;
+ }
+ buf += status;
+ off += status;
+ count -= status;
+ retval += status;
+ }
+
+ mutex_unlock(&at24->lock);
+
+ return retval;
+}
+
+static ssize_t at24_bin_write(struct file *filp, struct kobject *kobj,
+ struct bin_attribute *attr,
+ char *buf, loff_t off, size_t count)
+{
+ struct at24_data *at24;
+
+ if (unlikely(off >= attr->size))
+ return -EFBIG;
+
+ at24 = dev_get_drvdata(container_of(kobj, struct device, kobj));
+ return at24_write(at24, buf, off, count);
+}
+
+/*-------------------------------------------------------------------------*/
+
+#ifdef CONFIG_OF
+static void at24_get_ofdata(struct i2c_client *client,
+ struct at24_platform_data *chip)
+{
+ const __be32 *val;
+ struct device_node *node = client->dev.of_node;
+
+ if (node) {
+ if (of_get_property(node, "read-only", NULL))
+ chip->flags |= AT24_FLAG_READONLY;
+ val = of_get_property(node, "pagesize", NULL);
+ if (val)
+ chip->page_size = be32_to_cpup(val);
+ }
+}
+#else
+static void at24_get_ofdata(struct i2c_client *client,
+ struct at24_platform_data *chip)
+{ }
+#endif /* CONFIG_OF */
+
+static int at24_probe(struct i2c_client *client, const struct i2c_device_id *id)
+{
+ struct at24_platform_data chip;
+ bool writable;
+ int use_smbus = 0;
+ struct at24_data *at24;
+ int err;
+ unsigned i, num_addresses;
+ kernel_ulong_t magic;
+
+ if (client->dev.platform_data) {
+ chip = *(struct at24_platform_data *)client->dev.platform_data;
+ } else {
+ if (!id->driver_data)
+ return -ENODEV;
+
+ magic = id->driver_data;
+ chip.byte_len = BIT(magic & AT24_BITMASK(AT24_SIZE_BYTELEN));
+ magic >>= AT24_SIZE_BYTELEN;
+ chip.flags = magic & AT24_BITMASK(AT24_SIZE_FLAGS);
+
+ /*
+ * This is slow, but we can't know all eeproms, so we better
+ * play safe. Specifying custom eeprom-types via platform_data
+ * is recommended anyhow.
+ */
+ chip.page_size = 1;
+
+ /* update chipdata if OF is present */
+ at24_get_ofdata(client, &chip);
+
+ chip.setup = NULL;
+ chip.context = NULL;
+ }
+
+ if (!is_power_of_2(chip.byte_len))
+ dev_warn(&client->dev,
+ "byte_len looks suspicious (no power of 2)!\n");
+ if (!chip.page_size) {
+ dev_err(&client->dev, "page_size must not be 0!\n");
+ return -EINVAL;
+ }
+ if (!is_power_of_2(chip.page_size))
+ dev_warn(&client->dev,
+ "page_size looks suspicious (no power of 2)!\n");
+
+ /* Use I2C operations unless we're stuck with SMBus extensions. */
+ if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
+ if (i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_READ_I2C_BLOCK)) {
+ use_smbus = I2C_SMBUS_I2C_BLOCK_DATA;
+ } else if (i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_READ_WORD_DATA)) {
+ use_smbus = I2C_SMBUS_WORD_DATA;
+ } else if (i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_READ_BYTE_DATA)) {
+ use_smbus = I2C_SMBUS_BYTE_DATA;
+ } else {
+ return -EPFNOSUPPORT;
+ }
+ use_smbus = I2C_SMBUS_BYTE_DATA;
+ }
+
+ if (chip.flags & AT24_FLAG_TAKE8ADDR)
+ num_addresses = 8;
+ else
+ num_addresses = DIV_ROUND_UP(chip.byte_len, (chip.flags & AT24_FLAG_ADDR16) ? 65536 : 256);
+
+ at24 = devm_kzalloc(&client->dev, sizeof(struct at24_data) + num_addresses * sizeof(struct i2c_client *), GFP_KERNEL);
+ if (!at24)
+ return -ENOMEM;
+
+ mutex_init(&at24->lock);
+ at24->use_smbus = use_smbus;
+ at24->chip = chip;
+ at24->num_addresses = num_addresses;
+
+ printk(KERN_ALERT "at24_probe chip.byte_len = 0x%x\n", chip.byte_len);
+ printk(KERN_ALERT "at24_probe chip.flags = 0x%x\n", chip.flags);
+ printk(KERN_ALERT "at24_probe chip.magic = 0x%lx\n", id->driver_data);
+ printk(KERN_ALERT "at24_probe use_smbus = %d\n", at24->use_smbus);
+ printk(KERN_ALERT "at24_probe num_addresses = %d\n", at24->num_addresses);
+
+ /*
+ * Export the EEPROM bytes through sysfs, since that's convenient.
+ * By default, only root should see the data (maybe passwords etc)
+ */
+ sysfs_bin_attr_init(&at24->bin);
+ at24->bin.attr.name = "eeprom";
+ at24->bin.attr.mode = chip.flags & AT24_FLAG_IRUGO ? S_IRUGO : S_IRUSR;
+ at24->bin.read = at24_bin_read;
+ at24->bin.size = chip.byte_len;
+
+ writable = !(chip.flags & AT24_FLAG_READONLY);
+ if (writable) {
+ if (!use_smbus || i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_WRITE_I2C_BLOCK)) {
+ unsigned write_max = chip.page_size;
+
+ at24->bin.write = at24_bin_write;
+ at24->bin.attr.mode |= S_IWUSR;
+
+ if (write_max > io_limit)
+ write_max = io_limit;
+ if (use_smbus && write_max > I2C_SMBUS_BLOCK_MAX)
+ write_max = I2C_SMBUS_BLOCK_MAX;
+ at24->write_max = write_max;
+
+ /* buffer (data + address at the beginning) */
+ at24->writebuf = devm_kzalloc(&client->dev, write_max + 2, GFP_KERNEL);
+ if (!at24->writebuf)
+ return -ENOMEM;
+ } else {
+ dev_warn(&client->dev, "cannot write due to controller restrictions.");
+ }
+ }
+
+ at24->client[0] = client;
+
+ /* use dummy devices for multiple-address chips */
+ for (i = 1; i < num_addresses; i++) {
+ at24->client[i] = i2c_new_dummy(client->adapter, client->addr + i);
+ if (!at24->client[i]) {
+ dev_err(&client->dev, "address 0x%02x unavailable\n", client->addr + i);
+ err = -EADDRINUSE;
+ goto err_clients;
+ }
+ }
+
+ err = sysfs_create_bin_file(&client->dev.kobj, &at24->bin);
+ if (err)
+ goto err_clients;
+
+ i2c_set_clientdata(client, at24);
+
+ printk(KERN_ALERT "at24_probe %s done\n", client->name);
+
+ return 0;
+
+err_clients:
+ for (i = 1; i < num_addresses; i++)
+ if (at24->client[i])
+ i2c_unregister_device(at24->client[i]);
+
+ return err;
+}
+
+static int at24_remove(struct i2c_client *client)
+{
+ struct at24_data *at24;
+ int i;
+
+ at24 = i2c_get_clientdata(client);
+ sysfs_remove_bin_file(&client->dev.kobj, &at24->bin);
+
+ for (i = 1; i < at24->num_addresses; i++)
+ i2c_unregister_device(at24->client[i]);
+
+ return 0;
+}
+
+/*-------------------------------------------------------------------------*/
+
+// static struct i2c_board_info i2c_devs = {
+// I2C_BOARD_INFO("24c128-delta", 0x56),
+// };
+
+// static struct i2c_adapter *adapter = NULL;
+// static struct i2c_client *client = NULL;
+
+// static int delta_at24c128_dev_init(void)
+// {
+// printk(KERN_ALERT "delta_at24c128_dev_init\n");
+
+// adapter = i2c_get_adapter(0);
+// if(adapter == NULL){
+// printk(KERN_ALERT "i2c_get_adapter == NULL\n");
+// return -1;
+// }
+
+// client = i2c_new_device(adapter, &i2c_devs);
+// if(client == NULL){
+// printk(KERN_ALERT "i2c_new_device == NULL\n");
+// i2c_put_adapter(adapter);
+// adapter = NULL;
+// return -1;
+// }
+
+// return 0;
+// }
+
+// static void delta_at24c128_dev_exit(void)
+// {
+// printk(KERN_ALERT "delta_at24c128_dev_exit\n");
+// if(client){
+// i2c_unregister_device(client);
+// }
+// if(adapter){
+// i2c_put_adapter(adapter);
+// }
+// }
+
+static struct i2c_driver delta_at24_driver = {
+ .driver = {
+ .name = "delta-at24",
+ .owner = THIS_MODULE,
+ },
+ .probe = at24_probe,
+ .remove = at24_remove,
+ .id_table = delta_at24_ids,
+};
+
+static int __init delta_at24_init(void)
+{
+ if (!io_limit) {
+ pr_err("delta-at24: io_limit must not be 0!\n");
+ return -EINVAL;
+ }
+
+ io_limit = rounddown_pow_of_two(io_limit);
+
+ // delta_at24c128_dev_init();
+
+ return i2c_add_driver(&delta_at24_driver);
+}
+module_init(delta_at24_init);
+
+static void __exit delta_at24_exit(void)
+{
+ // delta_at24c128_dev_exit();
+ i2c_del_driver(&delta_at24_driver);
+}
+module_exit(delta_at24_exit);
+
+MODULE_DESCRIPTION("Driver for most I2C EEPROMs");
+MODULE_AUTHOR("David Brownell and Wolfram Sang");
+MODULE_LICENSE("GPL");
diff --git a/platform/innovium/sonic-platform-modules-delta/evs-a-32q56/modules/delta_evs-a-32q56_platform.c b/platform/innovium/sonic-platform-modules-delta/evs-a-32q56/modules/delta_evs-a-32q56_platform.c
new file mode 100644
index 000000000000..235cdb20d53d
--- /dev/null
+++ b/platform/innovium/sonic-platform-modules-delta/evs-a-32q56/modules/delta_evs-a-32q56_platform.c
@@ -0,0 +1,1158 @@
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#define SYSTEM_CPLD_ADDR 0x30
+#define PORT_CPLD0_ADDR 0x32
+#define PORT_CPLD1_ADDR 0x32
+#define DEFAULT_CPLD 0
+
+#define DEF_DEV_NUM 1
+
+#define PORT_SFP_DEV_NUM 2
+#define PORT_SFP_BASE_NUM 41
+#define PORT_QSFP_DEV_NUM 32
+#define PORT_QSFP_BASE_NUM 51
+#define PORT_QSFP_GROUP1_BASE_NUM 51
+#define PORT_QSFP_GROUP2_BASE_NUM 59
+#define PORT_QSFP_GROUP3_BASE_NUM 67
+#define PORT_QSFP_GROUP4_BASE_NUM 75
+#define PORT_QSFP_GROUP1_DEV_NUM 8
+#define PORT_QSFP_GROUP2_DEV_NUM 8
+#define PORT_QSFP_GROUP3_DEV_NUM 8
+#define PORT_QSFP_GROUP4_DEV_NUM 8
+#define PORT_QSFP_GROUP1_MUX_SEL_REG 0x0c
+#define PORT_QSFP_GROUP2_MUX_SEL_REG 0x0d
+#define PORT_QSFP_GROUP3_MUX_SEL_REG 0x0c
+#define PORT_QSFP_GROUP4_MUX_SEL_REG 0x0d
+#define PORT_QSFP_GROUP1_PRESENT_REG 0x08
+#define PORT_QSFP_GROUP2_PRESENT_REG 0x09
+#define PORT_QSFP_GROUP3_PRESENT_REG 0x08
+#define PORT_QSFP_GROUP4_PRESENT_REG 0x09
+#define PORT_SFP_PRESENT_REG 0x01
+#define PORT_QSFP_GROUP1_LOW_POWER_REG 0x12
+#define PORT_QSFP_GROUP2_LOW_POWER_REG 0x13
+#define PORT_QSFP_GROUP3_LOW_POWER_REG 0x12
+#define PORT_QSFP_GROUP4_LOW_POWER_REG 0x13
+#define PORT_QSFP_GROUP1_RESET_REG 0x06
+#define PORT_QSFP_GROUP2_RESET_REG 0x07
+#define PORT_QSFP_GROUP3_RESET_REG 0x06
+#define PORT_QSFP_GROUP4_RESET_REG 0x07
+
+/* BMC IMPI CMD */
+#define IPMI_MAX_INTF (4)
+
+#define BMC_I2C_BUS0 ((0x00 << 1) | 0x01)
+#define BMC_I2C_BUS1 ((0x01 << 1) | 0x01)
+#define BMC_I2C_BUS2 ((0x02 << 1) | 0x01)
+#define BMC_I2C_BUS3 ((0x03 << 1) | 0x01)
+#define BMC_I2C_BUS4 ((0x04 << 1) | 0x01)
+#define BMC_I2C_BUS5 ((0x05 << 1) | 0x01)
+#define BMC_I2C_BUS6 ((0x06 << 1) | 0x01)
+#define BMC_I2C_BUS7 ((0x07 << 1) | 0x01)
+
+#define PCA9548_0_MUX_ADDR (0x71 << 1)
+#define PCA9546_0_MUX_ADDR (0x72 << 1)
+
+#define PCA9548_0_MUX_REG 0x00
+#define PCA9546_0_MUX_REG 0x00
+
+#define PCA954X_MUX_OFF 0x00
+#define PCA954X_MUX_CH0 (0x01 << 0)
+#define PCA954X_MUX_CH1 (0x01 << 1)
+#define PCA954X_MUX_CH2 (0x01 << 2)
+#define PCA954X_MUX_CH3 (0x01 << 3)
+#define PCA954X_MUX_CH4 (0x01 << 4)
+#define PCA954X_MUX_CH5 (0x01 << 5)
+#define PCA954X_MUX_CH6 (0x01 << 6)
+#define PCA954X_MUX_CH7 (0x01 << 7)
+
+/* Check cpld read results */
+#define VALIDATED_READ(_buf, _rv, _read, _invert) \
+ do { \
+ _rv = _read; \
+ if (_rv < 0) { \
+ return sprintf(_buf, "READ ERROR\n"); \
+ } \
+ if (_invert) { \
+ _rv = ~_rv; \
+ } \
+ _rv &= 0xFF; \
+ } while(0) \
+
+enum bus_index {
+ BUS0 = 0,
+};
+
+struct mutex dni_lock;
+static struct kobject *kobj_sfp;
+
+extern int dni_ipmi_create_user(void);
+extern int dni_ipmi_i2c_read_byte(uint8_t dev_bus, uint8_t dev_addr, uint8_t dev_reg);
+extern int dni_ipmi_i2c_write_byte(uint8_t dev_bus, uint8_t dev_addr, uint8_t dev_reg, uint8_t write_data);
+extern unsigned char dni_log2(unsigned char num);
+extern void device_release(struct device *dev);
+extern void msg_handler(struct ipmi_recv_msg *recv_msg,void* handler_data);
+extern void dummy_smi_free(struct ipmi_smi_msg *msg);
+extern void dummy_recv_free(struct ipmi_recv_msg *msg);
+
+static atomic_t dummy_count = ATOMIC_INIT(0);
+static ipmi_user_t ipmi_mh_user = NULL;
+static struct ipmi_user_hndl ipmi_hndlrs = {
+ .ipmi_recv_hndl = msg_handler
+};
+
+static struct ipmi_smi_msg halt_smi_msg = {
+ .done = dummy_smi_free
+};
+
+static struct ipmi_recv_msg halt_recv_msg = {
+ .done = dummy_recv_free
+};
+
+void device_release(struct device *dev)
+{
+ return;
+}
+EXPORT_SYMBOL(device_release);
+
+void msg_handler(struct ipmi_recv_msg *recv_msg, void* handler_data)
+{
+ struct completion *comp = recv_msg->user_msg_data;
+ if (comp)
+ complete(comp);
+ else
+ ipmi_free_recv_msg(recv_msg);
+ return;
+}
+EXPORT_SYMBOL(msg_handler);
+
+void dummy_smi_free(struct ipmi_smi_msg *msg)
+{
+ atomic_dec(&dummy_count);
+}
+EXPORT_SYMBOL(dummy_smi_free);
+
+void dummy_recv_free(struct ipmi_recv_msg *msg)
+{
+ atomic_dec(&dummy_count);
+}
+EXPORT_SYMBOL(dummy_recv_free);
+
+unsigned char dni_log2 (unsigned char num)
+{
+ unsigned char num_log2 = 0;
+ while(num > 0){
+ num = num >> 1;
+ num_log2 += 1;
+ }
+ return num_log2 -1;
+}
+EXPORT_SYMBOL(dni_log2);
+
+
+/* ---------------- IPMI - start ------------- */
+int dni_ipmi_create_user(void)
+{
+ int rv, i;
+
+ for (i = 0, rv = 1; i < IPMI_MAX_INTF && rv; i++)
+ {
+ rv = ipmi_create_user(i, &ipmi_hndlrs, NULL, &ipmi_mh_user);
+ }
+ if (rv == 0)
+ printk(KERN_INFO "Enable IPMI protocol.\n");
+
+ return rv;
+}
+EXPORT_SYMBOL(dni_ipmi_create_user);
+
+int dni_ipmi_i2c_read_byte(uint8_t dev_bus, uint8_t dev_addr, uint8_t dev_reg)
+{
+ int rv;
+ struct ipmi_system_interface_addr addr;
+ struct kernel_ipmi_msg msg;
+ struct completion comp;
+ uint8_t cmd_data[4] = {0};
+
+ cmd_data[0] = dev_bus;
+ cmd_data[1] = dev_addr;
+ cmd_data[2] = 0x01;
+ cmd_data[3] = dev_reg;
+
+ addr.addr_type = IPMI_SYSTEM_INTERFACE_ADDR_TYPE;
+ addr.channel = IPMI_BMC_CHANNEL;
+ addr.lun = 0;
+
+ msg.netfn = IPMI_NETFN_APP_REQUEST;
+ msg.cmd = 0x52;
+ msg.data_len = sizeof(cmd_data);;
+ msg.data = cmd_data;
+
+ init_completion(&comp);
+ rv = ipmi_request_supply_msgs(ipmi_mh_user, (struct ipmi_addr*)&addr, 0, &msg, &comp, &halt_smi_msg, &halt_recv_msg, 0);
+ wait_for_completion(&comp);
+ if(rv)
+ {
+ printk(KERN_ERR "IPMI i2c read byte command Error!\n");
+ ipmi_free_recv_msg(&halt_recv_msg);
+ return rv;
+ }
+
+ return halt_recv_msg.msg.data[1];
+}
+EXPORT_SYMBOL(dni_ipmi_i2c_read_byte);
+
+int dni_ipmi_i2c_write_byte(uint8_t dev_bus, uint8_t dev_addr, uint8_t dev_reg, uint8_t write_data)
+{
+ int rv;
+ struct ipmi_system_interface_addr addr;
+ struct kernel_ipmi_msg msg;
+ struct completion comp;
+ uint8_t cmd_data[5] = {0};
+
+ cmd_data[0] = dev_bus;
+ cmd_data[1] = dev_addr;
+ cmd_data[2] = 0x00;
+ cmd_data[3] = dev_reg;
+ cmd_data[4] = write_data;
+
+ addr.addr_type = IPMI_SYSTEM_INTERFACE_ADDR_TYPE;
+ addr.channel = IPMI_BMC_CHANNEL;
+ addr.lun = 0;
+
+ msg.netfn = IPMI_NETFN_APP_REQUEST;
+ msg.cmd = 0x52;
+ msg.data_len = sizeof(cmd_data);;
+ msg.data = cmd_data;
+
+ init_completion(&comp);
+ rv = ipmi_request_supply_msgs(ipmi_mh_user, (struct ipmi_addr*)&addr, 0, &msg, &comp, &halt_smi_msg, &halt_recv_msg, 0);
+ wait_for_completion(&comp);
+ if(rv)
+ {
+ printk(KERN_ERR "IPMI i2c write byte command Error!\n");
+ ipmi_free_recv_msg(&halt_recv_msg);
+ return rv;
+ }
+
+ return rv;
+}
+EXPORT_SYMBOL(dni_ipmi_i2c_write_byte);
+
+/* ---------------- IPMI - stop ------------- */
+
+/* ---------------- I2C device - start ------------- */
+struct i2c_device_platform_data {
+ int parent;
+ struct i2c_board_info info;
+ struct i2c_client *client;
+};
+
+static struct i2c_device_platform_data evs_a_32q56_i2c_device_platform_data[] = {
+ {
+ // id eeprom (0x56)
+ .parent = 0,
+ .info = { I2C_BOARD_INFO("24c128-delta", 0x56) },
+ .client = NULL,
+ },
+ {
+ // sfp 1 (0x50)
+ .parent = 41,
+ .info = { .type = "optoe2", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // sfp 2 (0x50)
+ .parent = 42,
+ .info = { .type = "optoe2", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 1 (0x50)
+ .parent = 51,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 2 (0x50)
+ .parent = 52,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 3 (0x50)
+ .parent = 53,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 4 (0x50)
+ .parent = 54,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 5 (0x50)
+ .parent = 55,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 6 (0x50)
+ .parent = 56,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 7 (0x50)
+ .parent = 57,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 8 (0x50)
+ .parent = 58,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 9 (0x50)
+ .parent = 59,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 10 (0x50)
+ .parent = 60,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 11 (0x50)
+ .parent = 61,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 12 (0x50)
+ .parent = 62,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 13 (0x50)
+ .parent = 63,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 14 (0x50)
+ .parent = 64,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 15 (0x50)
+ .parent = 65,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 16 (0x50)
+ .parent = 66,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 17 (0x50)
+ .parent = 67,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 18 (0x50)
+ .parent = 68,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 19 (0x50)
+ .parent = 69,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 20 (0x50)
+ .parent = 70,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 21 (0x50)
+ .parent = 71,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 22 (0x50)
+ .parent = 72,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 23 (0x50)
+ .parent = 73,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 24 (0x50)
+ .parent = 74,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 25 (0x50)
+ .parent = 75,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 26 (0x50)
+ .parent = 76,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 27 (0x50)
+ .parent = 77,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 28 (0x50)
+ .parent = 78,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 29 (0x50)
+ .parent = 79,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 30 (0x50)
+ .parent = 80,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 31 (0x50)
+ .parent = 81,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+ {
+ // qsfp 32 (0x50)
+ .parent = 82,
+ .info = { .type = "optoe1", .addr = 0x50 },
+ .client = NULL,
+ },
+};
+
+#define evs_a_32q56_i2c_device_num(NUM){ \
+ .name = "delta-evs-a-32q56-i2c-device", \
+ .id = NUM, \
+ .dev = { \
+ .platform_data = &evs_a_32q56_i2c_device_platform_data[NUM], \
+ .release = device_release, \
+ }, \
+}
+
+static struct platform_device evs_a_32q56_i2c_device[] = {
+ evs_a_32q56_i2c_device_num(0),
+ evs_a_32q56_i2c_device_num(1),
+ evs_a_32q56_i2c_device_num(2),
+ evs_a_32q56_i2c_device_num(3),
+ evs_a_32q56_i2c_device_num(4),
+ evs_a_32q56_i2c_device_num(5),
+ evs_a_32q56_i2c_device_num(6),
+ evs_a_32q56_i2c_device_num(7),
+ evs_a_32q56_i2c_device_num(8),
+ evs_a_32q56_i2c_device_num(9),
+ evs_a_32q56_i2c_device_num(10),
+ evs_a_32q56_i2c_device_num(11),
+ evs_a_32q56_i2c_device_num(12),
+ evs_a_32q56_i2c_device_num(13),
+ evs_a_32q56_i2c_device_num(14),
+ evs_a_32q56_i2c_device_num(15),
+ evs_a_32q56_i2c_device_num(16),
+ evs_a_32q56_i2c_device_num(17),
+ evs_a_32q56_i2c_device_num(18),
+ evs_a_32q56_i2c_device_num(19),
+ evs_a_32q56_i2c_device_num(20),
+ evs_a_32q56_i2c_device_num(21),
+ evs_a_32q56_i2c_device_num(22),
+ evs_a_32q56_i2c_device_num(23),
+ evs_a_32q56_i2c_device_num(24),
+ evs_a_32q56_i2c_device_num(25),
+ evs_a_32q56_i2c_device_num(26),
+ evs_a_32q56_i2c_device_num(27),
+ evs_a_32q56_i2c_device_num(28),
+ evs_a_32q56_i2c_device_num(29),
+ evs_a_32q56_i2c_device_num(30),
+ evs_a_32q56_i2c_device_num(31),
+ evs_a_32q56_i2c_device_num(32),
+ evs_a_32q56_i2c_device_num(33),
+ evs_a_32q56_i2c_device_num(34),
+};
+/* ---------------- I2C device - end ------------- */
+
+/* ---------------- I2C driver - start ------------- */
+static int __init i2c_device_probe(struct platform_device *pdev)
+{
+ struct i2c_device_platform_data *pdata;
+ struct i2c_adapter *parent;
+
+ pdata = pdev->dev.platform_data;
+ if (!pdata) {
+ dev_err(&pdev->dev, "Missing platform data\n");
+ return -ENODEV;
+ }
+
+ parent = i2c_get_adapter(pdata->parent);
+ if (!parent) {
+ dev_err(&pdev->dev, "Parent adapter (%d) not found\n",
+ pdata->parent);
+ return -ENODEV;
+ }
+
+ pdata->client = i2c_new_device(parent, &pdata->info);
+ if (!pdata->client) {
+ dev_err(&pdev->dev, "Failed to create i2c client %s at %d\n",
+ pdata->info.type, pdata->parent);
+ return -ENODEV;
+ }
+
+ return 0;
+}
+
+static int __exit i2c_deivce_remove(struct platform_device *pdev)
+{
+ struct i2c_adapter *parent;
+ struct i2c_device_platform_data *pdata;
+
+ pdata = pdev->dev.platform_data;
+ if (!pdata) {
+ dev_err(&pdev->dev, "Missing platform data\n");
+ return -ENODEV;
+ }
+
+ if (pdata->client) {
+ parent = (pdata->client)->adapter;
+ i2c_unregister_device(pdata->client);
+ i2c_put_adapter(parent);
+ }
+
+ return 0;
+}
+static struct platform_driver i2c_device_driver = {
+ .probe = i2c_device_probe,
+ .remove = __exit_p(i2c_deivce_remove),
+ .driver = {
+ .owner = THIS_MODULE,
+ .name = "delta-evs-a-32q56-i2c-device",
+ }
+};
+/* ---------------- I2C driver - end ------------- */
+
+/* ---------------- CPLD - start ------------- */
+
+/* ---------------- CPLD - end ------------- */
+
+/* ---------------- MUX - start ------------- */
+struct virtual_mux_platform_data {
+ int parent;
+ int base_nr;
+ int reg_addr;
+ struct i2c_client *cpld;
+};
+
+struct virtual_mux {
+ struct i2c_adapter *parent;
+ struct i2c_adapter **child;
+ struct virtual_mux_platform_data data;
+};
+
+static struct virtual_mux_platform_data evs_a_32q56_port_mux_platform_data[] = {
+ {
+ .parent = BUS0,
+ .base_nr = PORT_SFP_BASE_NUM,
+ .reg_addr = 0,
+ .cpld = NULL,
+ },
+ {
+ .parent = BUS0,
+ .base_nr = PORT_QSFP_GROUP1_BASE_NUM,
+ .reg_addr = PORT_QSFP_GROUP1_MUX_SEL_REG,
+ .cpld = NULL,
+ },
+ {
+ .parent = BUS0,
+ .base_nr = PORT_QSFP_GROUP2_BASE_NUM,
+ .reg_addr = PORT_QSFP_GROUP2_MUX_SEL_REG,
+ .cpld = NULL,
+ },
+ {
+ .parent = BUS0,
+ .base_nr = PORT_QSFP_GROUP3_BASE_NUM,
+ .reg_addr = PORT_QSFP_GROUP3_MUX_SEL_REG,
+ .cpld = NULL,
+ },
+ {
+ .parent = BUS0,
+ .base_nr = PORT_QSFP_GROUP4_BASE_NUM,
+ .reg_addr = PORT_QSFP_GROUP4_MUX_SEL_REG,
+ .cpld = NULL,
+ },
+};
+
+static struct platform_device port_mux_device[] =
+{
+ {
+ .name = "delta-evs-a-32q56-port-mux",
+ .id = 0,
+ .dev = {
+ .platform_data = &evs_a_32q56_port_mux_platform_data[0],
+ .release = device_release,
+ },
+ },
+ {
+ .name = "delta-evs-a-32q56-port-mux",
+ .id = 1,
+ .dev = {
+ .platform_data = &evs_a_32q56_port_mux_platform_data[1],
+ .release = device_release,
+ },
+ },
+ {
+ .name = "delta-evs-a-32q56-port-mux",
+ .id = 2,
+ .dev = {
+ .platform_data = &evs_a_32q56_port_mux_platform_data[2],
+ .release = device_release,
+ },
+ },
+ {
+ .name = "delta-evs-a-32q56-port-mux",
+ .id = 3,
+ .dev = {
+ .platform_data = &evs_a_32q56_port_mux_platform_data[3],
+ .release = device_release,
+ },
+ },
+ {
+ .name = "delta-evs-a-32q56-port-mux",
+ .id = 4,
+ .dev = {
+ .platform_data = &evs_a_32q56_port_mux_platform_data[4],
+ .release = device_release,
+ },
+ },
+};
+
+static int port_mux_select(struct i2c_mux_core *muxc, u32 chan)
+{
+ int ret;
+ struct virtual_mux *mux;
+
+ mux = i2c_mux_priv(muxc);
+ if (mux->data.base_nr == PORT_SFP_BASE_NUM)
+ {
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_OFF);
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9546_0_MUX_ADDR, PCA9546_0_MUX_REG, (chan + 1));
+ }
+ else if (mux->data.base_nr == PORT_QSFP_GROUP1_BASE_NUM)
+ {
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH0);
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, (PORT_CPLD0_ADDR << 1), PORT_QSFP_GROUP1_MUX_SEL_REG, ~(0x01 << chan));
+ if (chan / 4)
+ {
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH1);
+ }
+ else
+ {
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH0);
+ }
+ }
+ else if (mux->data.base_nr == PORT_QSFP_GROUP2_BASE_NUM)
+ {
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH0);
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, (PORT_CPLD0_ADDR << 1), PORT_QSFP_GROUP2_MUX_SEL_REG, ~(0x01 << chan));
+ if (chan / 4)
+ {
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH3);
+ }
+ else
+ {
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH2);
+ }
+ }
+ else if (mux->data.base_nr == PORT_QSFP_GROUP3_BASE_NUM)
+ {
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH4);
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, (PORT_CPLD1_ADDR << 1), PORT_QSFP_GROUP3_MUX_SEL_REG, ~(0x01 << chan));
+ if (chan / 4)
+ {
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH5);
+ }
+ else
+ {
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH4);
+ }
+ }
+ else if (mux->data.base_nr == PORT_QSFP_GROUP4_BASE_NUM)
+ {
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH4);
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, (PORT_CPLD1_ADDR << 1), PORT_QSFP_GROUP4_MUX_SEL_REG, ~(0x01 << chan));
+ if (chan / 4)
+ {
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH7);
+ }
+ else
+ {
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH6);
+ }
+ }
+ return ret;
+}
+
+static int port_mux_deselect(struct i2c_mux_core *muxc, u32 chan)
+{
+ int ret;
+ struct virtual_mux *mux;
+
+ mux = i2c_mux_priv(muxc);
+ if (mux->data.base_nr == PORT_SFP_BASE_NUM)
+ {
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9546_0_MUX_ADDR, PCA9546_0_MUX_REG, PCA954X_MUX_OFF);
+
+ }
+ else if (mux->data.base_nr == PORT_QSFP_GROUP1_BASE_NUM)
+ {
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH0);
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, (PORT_CPLD0_ADDR << 1), PORT_QSFP_GROUP1_MUX_SEL_REG, 0xff);
+ }
+ else if (mux->data.base_nr == PORT_QSFP_GROUP2_BASE_NUM)
+ {
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH0);
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, (PORT_CPLD0_ADDR << 1), PORT_QSFP_GROUP2_MUX_SEL_REG, 0xff);
+ }
+ else if (mux->data.base_nr == PORT_QSFP_GROUP3_BASE_NUM)
+ {
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH4);
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, (PORT_CPLD1_ADDR << 1), PORT_QSFP_GROUP3_MUX_SEL_REG, 0xff);
+ }
+ else if (mux->data.base_nr == PORT_QSFP_GROUP4_BASE_NUM)
+ {
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH4);
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, (PORT_CPLD1_ADDR << 1), PORT_QSFP_GROUP4_MUX_SEL_REG, 0xff);
+ }
+ return ret;
+}
+
+static int __init port_mux_probe(struct platform_device *pdev)
+{
+ struct i2c_mux_core *muxc;
+ struct virtual_mux *mux;
+ struct virtual_mux_platform_data *pdata;
+ struct i2c_adapter *parent;
+ int i, ret, dev_num;
+
+ pdata = pdev->dev.platform_data;
+ if (!pdata) {
+ dev_err(&pdev->dev, "Port MUX platform data not found\n");
+ return -ENODEV;
+ }
+ mux = kzalloc(sizeof(*mux), GFP_KERNEL);
+ if (!mux) {
+ printk(KERN_ERR "Failed to allocate memory for mux\n");
+ return -ENOMEM;
+ }
+ mux->data = *pdata;
+ parent = i2c_get_adapter(pdata->parent);
+ if (!parent) {
+ kfree(mux);
+ dev_err(&pdev->dev, "Parent adapter (%d) not found\n", pdata->parent);
+ return -ENODEV;
+ }
+ /* Judge bus number to decide how many devices*/
+ switch (pdata->base_nr) {
+ case PORT_SFP_BASE_NUM:
+ dev_num = PORT_SFP_DEV_NUM;
+ break;
+ case PORT_QSFP_GROUP1_BASE_NUM:
+ dev_num = PORT_QSFP_GROUP1_DEV_NUM;
+ break;
+ case PORT_QSFP_GROUP2_BASE_NUM:
+ dev_num = PORT_QSFP_GROUP2_DEV_NUM;
+ break;
+ case PORT_QSFP_GROUP3_BASE_NUM:
+ dev_num = PORT_QSFP_GROUP3_DEV_NUM;
+ break;
+ case PORT_QSFP_GROUP4_BASE_NUM:
+ dev_num = PORT_QSFP_GROUP4_DEV_NUM;
+ break;
+ default :
+ dev_num = DEF_DEV_NUM;
+ break;
+ }
+
+ muxc = i2c_mux_alloc(parent, &pdev->dev, dev_num, 0, 0, port_mux_select, port_mux_deselect);
+ if (!muxc) {
+ ret = -ENOMEM;
+ goto alloc_failed;
+ }
+ muxc->priv = mux;
+ platform_set_drvdata(pdev, muxc);
+ for (i = 0; i < dev_num; i++)
+ {
+ int nr = pdata->base_nr + i;
+ unsigned int class = 0;
+ ret = i2c_mux_add_adapter(muxc, nr, i, class);
+ if (ret) {
+ dev_err(&pdev->dev, "Failed to add adapter %d\n", i);
+ goto add_adapter_failed;
+ }
+ }
+ dev_info(&pdev->dev, "%d port mux on %s adapter\n", dev_num, parent->name);
+ return 0;
+
+add_adapter_failed:
+ i2c_mux_del_adapters(muxc);
+alloc_failed:
+ kfree(mux);
+ i2c_put_adapter(parent);
+
+ return ret;
+}
+
+static int __exit port_mux_remove(struct platform_device *pdev)
+{
+ struct i2c_mux_core *muxc = platform_get_drvdata(pdev);
+ struct i2c_adapter *parent = muxc->parent;
+
+ i2c_mux_del_adapters(muxc);
+ i2c_put_adapter(parent);
+
+ return 0;
+}
+
+static struct platform_driver port_mux_driver = {
+ .probe = port_mux_probe,
+ .remove = __exit_p(port_mux_remove), /* TODO */
+ .driver = {
+ .owner = THIS_MODULE,
+ .name = "delta-evs-a-32q56-port-mux",
+ },
+};
+/* ---------------- MUX - end ------------- */
+
+/* ---------------- SFP - start ------------- */
+
+enum delta_evs_a_32q56_sfp_sysfs_attributes
+{
+ SFP_IS_PRESENT,
+ QSFP_LOW_POWER,
+ QSFP_RESET,
+};
+
+static ssize_t for_status(struct device *dev, struct device_attribute *dev_attr, char *buf){
+ struct sensor_device_attribute *attr = to_sensor_dev_attr(dev_attr);
+ int ret;
+ int ret_sfp;
+ u64 data = 0;
+
+ mutex_lock(&dni_lock);
+ switch (attr->index) {
+ case SFP_IS_PRESENT:
+ /*QSFP1~8*/
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH0);
+ ret = dni_ipmi_i2c_read_byte(BMC_I2C_BUS3, (PORT_CPLD0_ADDR << 1), PORT_QSFP_GROUP1_PRESENT_REG);
+ data = (u32)ret & 0xff;
+ /*QSFP9~16*/
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH0);
+ ret = dni_ipmi_i2c_read_byte(BMC_I2C_BUS3, (PORT_CPLD0_ADDR << 1), PORT_QSFP_GROUP2_PRESENT_REG);
+ data |= ((u32)ret & 0xff) << 8;
+ /*QSFP17~24*/
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH4);
+ ret = dni_ipmi_i2c_read_byte(BMC_I2C_BUS3, (PORT_CPLD1_ADDR << 1), PORT_QSFP_GROUP3_PRESENT_REG);
+ data |= (u32)(ret & 0xff) << 16;
+ /*QSFP25~32*/
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH4);
+ ret = dni_ipmi_i2c_read_byte(BMC_I2C_BUS3, (PORT_CPLD1_ADDR << 1), PORT_QSFP_GROUP4_PRESENT_REG);
+ data |= (u32)(ret & 0xff) << 24;
+ /*SFP*/
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH0);
+ ret = dni_ipmi_i2c_read_byte(BMC_I2C_BUS3, (PORT_CPLD0_ADDR << 1), PORT_SFP_PRESENT_REG);
+ ret_sfp = (ret & (0x03));
+ mutex_unlock(&dni_lock);
+ return sprintf(buf, "0x%02x%x\n", ret_sfp, data);
+
+ case QSFP_LOW_POWER:
+ /*QSFP1~8*/
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH0);
+ ret = dni_ipmi_i2c_read_byte(BMC_I2C_BUS3, (PORT_CPLD0_ADDR << 1), PORT_QSFP_GROUP1_LOW_POWER_REG);
+ data = (u32)(ret & 0xff);
+ /*QSFP9~16*/
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH0);
+ ret = dni_ipmi_i2c_read_byte(BMC_I2C_BUS3, (PORT_CPLD0_ADDR << 1), PORT_QSFP_GROUP2_LOW_POWER_REG);
+ data |= (u32)(ret & 0xff) << 8;
+ /*QSFP17~24*/
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH4);
+ ret = dni_ipmi_i2c_read_byte(BMC_I2C_BUS3, (PORT_CPLD1_ADDR << 1), PORT_QSFP_GROUP3_LOW_POWER_REG);
+ data |= (u32)(ret & 0xff) << 16;
+ /*QSFP25~32*/
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH4);
+ ret = dni_ipmi_i2c_read_byte(BMC_I2C_BUS3, (PORT_CPLD1_ADDR << 1), PORT_QSFP_GROUP4_LOW_POWER_REG);
+ data |= (u32)(ret & 0xff) << 24;
+
+ mutex_unlock(&dni_lock);
+ return sprintf(buf, "0x%x\n", data);
+
+ case QSFP_RESET:
+ /*QSFP1~8*/
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH0);
+ ret = dni_ipmi_i2c_read_byte(BMC_I2C_BUS3, (PORT_CPLD0_ADDR << 1), PORT_QSFP_GROUP1_RESET_REG);
+ data = (u32)(ret & 0xff);
+ /*QSFP9~16*/
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH0);
+ ret = dni_ipmi_i2c_read_byte(BMC_I2C_BUS3, (PORT_CPLD0_ADDR << 1), PORT_QSFP_GROUP2_RESET_REG);
+ data |= (u32)(ret & 0xff) << 8;
+ /*QSFP17~24*/
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH4);
+ ret = dni_ipmi_i2c_read_byte(BMC_I2C_BUS3, (PORT_CPLD1_ADDR << 1), PORT_QSFP_GROUP3_RESET_REG);
+ data |= (u32)(ret & 0xff) << 16;
+ /*QSFP25~32*/
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH4);
+ ret = dni_ipmi_i2c_read_byte(BMC_I2C_BUS3, (PORT_CPLD1_ADDR << 1), PORT_QSFP_GROUP4_RESET_REG);
+ data |= (u32)(ret & 0xff) << 24;
+
+ mutex_unlock(&dni_lock);
+ return sprintf(buf, "0x%x\n", data);
+
+ default:
+ mutex_unlock(&dni_lock);
+ return sprintf(buf, "%d not found", attr->index);
+ }
+}
+
+static ssize_t set_qsfp_low_power(struct device *dev, struct device_attribute *dev_attr, const char *buf, size_t count)
+{
+ unsigned long long set_data;
+ int err;
+ int status = 0;
+ unsigned char set_bytes;
+
+ err = kstrtoull(buf, 16, &set_data);
+ if (err){
+ return err;
+ }
+ mutex_lock(&dni_lock);
+ /*QSFP1~8*/
+ set_bytes = set_data & 0xff;
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH0);
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, (PORT_CPLD0_ADDR << 1), PORT_QSFP_GROUP1_LOW_POWER_REG, set_bytes);
+ /*QSFP9~16*/
+ set_bytes = (set_data >> 8 ) & 0xff;
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH0);
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, (PORT_CPLD0_ADDR << 1), PORT_QSFP_GROUP2_LOW_POWER_REG, set_bytes);
+ /*QSFP17~24*/
+ set_bytes = (set_data >> 16 ) & 0xff;
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH4);
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, (PORT_CPLD1_ADDR << 1), PORT_QSFP_GROUP3_LOW_POWER_REG, set_bytes);
+ /*QSFP25~32*/
+ set_bytes = (set_data >> 24 ) & 0xff;
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH4);
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, (PORT_CPLD1_ADDR << 1), PORT_QSFP_GROUP4_LOW_POWER_REG, set_bytes);
+
+ mutex_unlock(&dni_lock);
+ return count;
+
+}
+
+static ssize_t set_qsfp_reset(struct device *dev, struct device_attribute *dev_attr, const char *buf, size_t count)
+{
+ unsigned long long set_data;
+ int err;
+ int status = 0;
+ unsigned char set_bytes;
+
+ err = kstrtoull(buf, 16, &set_data);
+ if (err){
+ return err;
+ }
+
+ mutex_lock(&dni_lock);
+ /*QSFP1~8*/
+ set_bytes = set_data & 0xff;
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH0);
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, (PORT_CPLD0_ADDR << 1), PORT_QSFP_GROUP1_RESET_REG, set_bytes);
+ /*QSFP9~16*/
+ set_bytes = (set_data >> 8 ) & 0xff;
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH0);
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, (PORT_CPLD0_ADDR << 1), PORT_QSFP_GROUP2_RESET_REG, set_bytes);
+ /*QSFP17~24*/
+ set_bytes = (set_data >> 16 ) & 0xff;
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH4);
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, (PORT_CPLD1_ADDR << 1), PORT_QSFP_GROUP3_RESET_REG, set_bytes);
+ /*QSFP25~32*/
+ set_bytes = (set_data >> 24 ) & 0xff;
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, PCA9548_0_MUX_ADDR, PCA9548_0_MUX_REG, PCA954X_MUX_CH4);
+ dni_ipmi_i2c_write_byte(BMC_I2C_BUS3, (PORT_CPLD1_ADDR << 1), PORT_QSFP_GROUP4_RESET_REG, set_bytes);
+ mutex_unlock(&dni_lock);
+ return count;
+}
+
+//QSFP/SFP
+static SENSOR_DEVICE_ATTR(sfp_is_present, S_IRUGO, for_status, NULL, SFP_IS_PRESENT);
+static SENSOR_DEVICE_ATTR(qsfp_low_power, S_IRUGO | S_IWUSR, for_status, set_qsfp_low_power, QSFP_LOW_POWER);
+static SENSOR_DEVICE_ATTR(qsfp_reset, S_IRUGO | S_IWUSR, for_status, set_qsfp_reset, QSFP_RESET);
+
+static struct attribute *delta_evs_a_32q56_sfp_attrs[] = {
+ &sensor_dev_attr_sfp_is_present.dev_attr.attr,
+ &sensor_dev_attr_qsfp_low_power.dev_attr.attr,
+ &sensor_dev_attr_qsfp_reset.dev_attr.attr,
+ NULL,
+};
+
+static struct attribute_group sfp_attr_grp = {
+ .attrs = delta_evs_a_32q56_sfp_attrs,
+};
+/* ---------------- SFP - end ------------- */
+
+/* ---------------- module initialization ------------- */
+static int __init delta_evs_a_32q56_platform_init(void)
+{
+ int ret,i = 0;
+
+ mutex_init(&dni_lock);
+ printk(KERN_INFO "delta-evs-a-32q56-platform module initialization\n");
+
+ ret = dni_ipmi_create_user();
+ if (ret != 0) {
+ printk(KERN_WARNING "Fail to create IPMI user\n");
+ }
+
+ // register the mux prob which call the port cpld by ipmi
+ ret = platform_driver_register(&port_mux_driver);
+ if (ret) {
+ printk(KERN_WARNING "Fail to register port mux driver\n");
+ goto error_port_mux_driver;
+ }
+
+ // register the i2c devices
+ ret = platform_driver_register(&i2c_device_driver);
+ if (ret) {
+ printk(KERN_WARNING "Fail to register i2c device driver\n");
+ goto error_i2c_device_driver;
+ }
+
+ // link the port cpld and the Mux
+ for (i = 0; i < ARRAY_SIZE(port_mux_device); i++)
+ {
+ ret = platform_device_register(&port_mux_device[i]);
+ if (ret) {
+ printk(KERN_WARNING "Fail to create port mux %d\n", i);
+ goto error_evs_a_32q56_port_mux;
+ }
+ }
+
+ for (i = 0; i < ARRAY_SIZE(evs_a_32q56_i2c_device); i++)
+ {
+ ret = platform_device_register(&evs_a_32q56_i2c_device[i]);
+ if (ret)
+ {
+ printk(KERN_WARNING "Fail to create i2c device %d\n", i);
+ goto error_evs_a_32q56_i2c_device;
+ }
+ }
+
+ // create sfp attributes
+ kobj_sfp = kobject_create_and_add("sfp", kernel_kobj);
+ if(!kobj_sfp)
+ {
+ return -ENOMEM;
+ }
+ ret = sysfs_create_group(kobj_sfp, &sfp_attr_grp);
+ if (ret)
+ {
+ printk(KERN_WARNING "Fail to create sysfs of sfp group\n");
+ goto error_create_sfp_group;
+ }
+
+ printk("Initial delta_evs_a_32q56_platform driver......[Success]\n");
+
+ return 0;
+
+error_create_sfp_group:
+ kobject_put(kobj_sfp);
+error_evs_a_32q56_i2c_device:
+ i--;
+ for (; i >= 0; i--) {
+ platform_device_unregister(&evs_a_32q56_i2c_device[i]);
+ }
+ i = ARRAY_SIZE(port_mux_device);
+error_evs_a_32q56_port_mux:
+ i--;
+ for (; i >= 0; i--) {
+ platform_device_unregister(&port_mux_device[i]);
+ }
+ platform_driver_unregister(&i2c_device_driver);
+error_i2c_device_driver:
+ platform_driver_unregister(&port_mux_driver);
+error_port_mux_driver:
+ printk("Initial delta_evs_a_32q56_platform driver......[Fail]\n");
+ return ret;
+}
+
+static void __exit delta_evs_a_32q56_platform_exit(void)
+{
+ int i = 0;
+
+ for (i = 0; i < ARRAY_SIZE(evs_a_32q56_i2c_device); i++) {
+ platform_device_unregister(&evs_a_32q56_i2c_device[i]);
+ }
+
+ for (i = 0; i < ARRAY_SIZE(port_mux_device); i++) {
+ platform_device_unregister(&port_mux_device[i]);
+ }
+
+ platform_driver_unregister(&i2c_device_driver);
+ platform_driver_unregister(&port_mux_driver);
+ kobject_put(kobj_sfp);
+
+ printk("Remove delta_evs_a_32q56_platform driver......[Success]\n");
+}
+
+module_init(delta_evs_a_32q56_platform_init);
+module_exit(delta_evs_a_32q56_platform_exit);
+
+MODULE_DESCRIPTION("DELTA EVS-A-32Q56 Platform Support");
+MODULE_AUTHOR("Jim Lee ");
+MODULE_LICENSE("GPL");
diff --git a/platform/innovium/sonic-platform-modules-delta/evs-a-32q56/scripts/evs-a-32q56_platform_init.sh b/platform/innovium/sonic-platform-modules-delta/evs-a-32q56/scripts/evs-a-32q56_platform_init.sh
new file mode 100644
index 000000000000..3497b46aeb98
--- /dev/null
+++ b/platform/innovium/sonic-platform-modules-delta/evs-a-32q56/scripts/evs-a-32q56_platform_init.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+#platform init script for Delta EVS-A-32Q56
+
+
+
+exit 0
+
+
diff --git a/platform/innovium/sonic-platform-modules-delta/systemd/platform-modules-evs-a-32q56.service b/platform/innovium/sonic-platform-modules-delta/systemd/platform-modules-evs-a-32q56.service
new file mode 100644
index 000000000000..1805209c82df
--- /dev/null
+++ b/platform/innovium/sonic-platform-modules-delta/systemd/platform-modules-evs-a-32q56.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Delta EVS-A-32Q56 Platform modules
+After=local-fs.target
+Before=pmon.service
+
+[Service]
+Type=oneshot
+ExecStart=-/etc/init.d/platform-modules-evs-a-32q56 start
+ExecStop=-/etc/init.d/platform-modules-evs-a-32q56 stop
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target