[innovium] Update 202111 Innovium platforms (#10760)

Co-authored-by: Tony Titus <ttitus@innovium.com>

Why I did it
Update 202111 Innovium platform support

How to verify it
Build and PTF test
This commit is contained in:
Tony Titus 2022-06-30 15:12:38 -07:00 committed by GitHub
parent 70e9fc3166
commit 6ab339482f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
144 changed files with 6029 additions and 12633 deletions

View File

@ -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,57 +81,81 @@
"mode": "dynamic",
"xoff": "17708800"
},
"egress_lossy_pool": {
"lossy_pool": {
"size": "18874368",
"type": "egress",
"mode": "dynamic",
"xoff": "0"
},
"egress_lossless_pool": {
"size": "66092800",
"type": "egress"
}
},
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"ingress_lossless_pool",
"xoff":"1433600",
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"xoff":"38816",
"size":"1518",
"dynamic_th":"-4",
"xon_offset":"6272"
},
"ingress_lossy_profile": {
"pool":"ingress_lossless_pool",
"size":"0",
"static_th":"9721600"
"dynamic_th":"1",
"xon_offset":"9408"
},
"egress_lossless_profile": {
"pool":"egress_lossy_pool",
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"size":"0",
"static_th":"9721600"
"static_th":"9497600"
},
"ingress_lossy_profile": {
"pool":"[BUFFER_POOL|lossy_pool]",
"size":"0",
"static_th":"9497600"
},
"egress_lossy_profile": {
"pool":"egress_lossy_pool",
"pool":"[BUFFER_POOL|lossy_pool]",
"size":"1518",
"dynamic_th":"3"
"dynamic_th":"2"
}
},
"BUFFER_PG": {
"{{ port_names }}|0-3": {
"profile" : "egress_lossless_profile"
},
"{{ port_names }}|4-5": {
"profile" : "ingress_lossless_profile"
},
"{{ port_names }}|6-7": {
"profile" : "egress_lossless_profile"
}
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|1-2": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"BUFFER_QUEUE": {
"{{ port_names }}|4-5": {
"profile" : "ingress_lossy_profile"
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
},
"{{ port_names }}|0-3": {
"profile" : "egress_lossy_profile"
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0-2": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
},
"{{ port_names }}|6-7": {
"profile" : "egress_lossy_profile"
}
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}

View File

@ -0,0 +1,42 @@
{% 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":"2"
}
},
"BUFFER_PG": {
{% for port in port_names_list %}
"{{ port }}|0-7": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"BUFFER_QUEUE": {
{% for port in port_names_list %}
"{{ port }}|0-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}

View File

@ -0,0 +1,161 @@
{# 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"
},
"egress_lossless_pool": {
"size": "66092800",
"type": "egress"
}
},
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"ingress_lossless_pool",
"xoff":"38816",
"size":"1518",
"dynamic_th":"1",
"xon_offset":"9408"
},
"egress_lossless_profile": {
"pool":"ingress_lossless_pool",
"size":"0",
"static_th":"9497600"
},
"ingress_lossy_profile": {
"pool":"lossy_pool",
"size":"0",
"static_th":"9497600"
},
"egress_lossy_profile": {
"pool":"lossy_pool",
"size":"1518",
"dynamic_th":"2"
}
},
"BUFFER_PG": {
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "ingress_lossless_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0": {
"profile" : "ingress_lossy_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|1-2": {
"profile" : "ingress_lossy_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "ingress_lossy_profile"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"BUFFER_QUEUE": {
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "egress_lossless_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0-2": {
"profile" : "egress_lossy_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "egress_lossy_profile"
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}

View File

@ -4,12 +4,20 @@ ifcs:
nodes:
- node_id: "0"
options:
sd_low_power_mode_global_default: "true"
sku: "innovium.77700_B"
netdev:
- auto_create: "no"
multi_interface: "yes"
buffer_management_mode: "api_driven"
wred_cr_ip_proto_list: "17"
cr_assignment_mode: "1"
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 +65,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"
type: "eth"
- fec: "KRFEC"
id: "49"
lanes: "0:4"
serdes_group: "7"
speed: "100G"
sysport: "49"
type: "eth"
- fec: "KRFEC"
id: "50"
lanes: "4:4"
serdes_group: "7"
speed: "100G"
sysport: "50"
type: "eth"
- fec: "KRFEC"
id: "51"
lanes: "4:4"
serdes_group: "6"
speed: "100G"
sysport: "51"
type: "eth"
- fec: "KRFEC"
id: "52"
lanes: "0:4"
serdes_group: "6"
speed: "100G"
sysport: "52"
type: "eth"
- fec: "KRFEC"
id: "53"
lanes: "0:4"
serdes_group: "5"
speed: "100G"
sysport: "53"
type: "eth"
- fec: "KRFEC"
id: "54"
lanes: "4:4"
serdes_group: "5"
speed: "100G"
sysport: "54"
type: "eth"
- fec: "KRFEC"
id: "55"
lanes: "4:4"
serdes_group: "4"
speed: "100G"
sysport: "55"
type: "eth"
- fec: "KRFEC"
id: "56"
lanes: "0:4"
serdes_group: "4"
speed: "100G"
sysport: "56"
sysport: "65"
type: "eth"
- fec: "KRFEC"
id: "57"
lanes: "0:4"
serdes_group: "3"
serdes_group: "7"
speed: "100G"
sysport: "57"
type: "eth"
- fec: "KRFEC"
id: "58"
lanes: "4:4"
serdes_group: "3"
speed: "100G"
sysport: "58"
type: "eth"
- fec: "KRFEC"
id: "59"
lanes: "4:4"
serdes_group: "2"
speed: "100G"
sysport: "59"
type: "eth"
- fec: "KRFEC"
id: "60"
lanes: "0:4"
serdes_group: "2"
speed: "100G"
sysport: "60"
type: "eth"
- fec: "KRFEC"
id: "61"
lanes: "0:4"
serdes_group: "1"
lanes: "4:4"
serdes_group: "7"
speed: "100G"
sysport: "61"
type: "eth"
- fec: "KRFEC"
id: "62"
id: "53"
lanes: "4:4"
serdes_group: "6"
speed: "100G"
sysport: "53"
type: "eth"
- fec: "KRFEC"
id: "49"
lanes: "0:4"
serdes_group: "6"
speed: "100G"
sysport: "49"
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: "37"
lanes: "4:4"
serdes_group: "4"
speed: "100G"
sysport: "37"
type: "eth"
- fec: "KRFEC"
id: "33"
lanes: "0:4"
serdes_group: "4"
speed: "100G"
sysport: "33"
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: "21"
lanes: "4:4"
serdes_group: "2"
speed: "100G"
sysport: "21"
type: "eth"
- fec: "KRFEC"
id: "17"
lanes: "0:4"
serdes_group: "2"
speed: "100G"
sysport: "17"
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: "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"

View File

@ -5,6 +5,7 @@ device_id: 0x1b58
# Hardware constraint information
hardware:
num_ibs: 6
ib_active: 0,1,2,3,4,5
ports_per_ib: 32, 32, 32, 32, 20, 20
recirc_port_num: 32, 32, 32, 32, 32, 32

View File

@ -0,0 +1,8 @@
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:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil"
IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
IVM_SAI_PARAM_A0008: "32"

View File

@ -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"

View File

@ -0,0 +1,22 @@
# PG lossless profiles.
# speed cable size xon xoff threshold xon_offset
25000 5m 1518 0 15680 1 9408
50000 5m 1518 0 21248 1 9408
100000 5m 1518 0 34624 1 9408
200000 5m 1518 0 62368 1 9408
400000 5m 1518 0 117536 1 9408
25000 40m 1518 0 16928 1 9408
50000 40m 1518 0 23392 1 9408
100000 40m 1518 0 38816 1 9408
200000 40m 1518 0 71904 1 9408
400000 40m 1518 0 135520 1 9408
25000 100m 1518 0 18848 1 9408
50000 100m 1518 0 27264 1 9408
100000 100m 1518 0 46496 1 9408
200000 100m 1518 0 87168 1 9408
400000 100m 1518 0 166688 1 9408
25000 300m 1518 0 25184 1 9408
50000 300m 1518 0 40128 1 9408
100000 300m 1518 0 72384 1 9408
200000 300m 1518 0 138112 1 9408
400000 300m 1518 0 268640 1 9408

View File

@ -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

View File

@ -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,102 +8,122 @@
{
"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": "3",
"4": "4",
"5": "0",
"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"
"0" : "1",
"1" : "1",
"2" : "1",
"3" : "3",
"4" : "4",
"5" : "2",
"6" : "1",
"7" : "1",
"8" : "0",
"9" : "1",
"10": "1",
"11": "1",
"12": "1",
"13": "1",
"14": "1",
"15": "1",
"16": "1",
"17": "1",
"18": "1",
"19": "1",
"20": "1",
"21": "1",
"22": "1",
"23": "1",
"24": "1",
"25": "1",
"26": "1",
"27": "1",
"28": "1",
"29": "1",
"30": "1",
"31": "1",
"32": "1",
"33": "1",
"34": "1",
"35": "1",
"36": "1",
"37": "1",
"38": "1",
"39": "1",
"40": "1",
"41": "1",
"42": "1",
"43": "1",
"44": "1",
"45": "1",
"46": "5",
"47": "1",
"48": "6",
"49": "1",
"50": "1",
"51": "1",
"52": "1",
"53": "1",
"54": "1",
"55": "1",
"56": "1",
"57": "1",
"58": "1",
"59": "1",
"60": "1",
"61": "1",
"62": "1",
"63": "1"
}
},
"PORT_QOS_MAP": {
"{{ port_names }}": {
"tc_to_pg_map": "AZURE",
"tc_to_queue_map": "AZURE",
"dscp_to_tc_map": "AZURE",
"pfc_enable": "4,5"
{% for port in port_names_list %}
"{{ port }}": {
"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"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"WRED_PROFILE": {
"AZURE_LOSSLESS" : {
"wred_green_enable" : "true",
"wred_yellow_enable" : "true",
"wred_red_enable" : "true",
"ecn" : "ecn_all",
"green_max_threshold" : "2097152",
"green_min_threshold" : "1048576",
"yellow_max_threshold" : "2097152",
"yellow_min_threshold" : "1048576",
"red_max_threshold" : "2097152",
"red_min_threshold" : "1048576",
"green_drop_probability" : "5",
"yellow_drop_probability": "5",
"red_drop_probability" : "5"
}
}
}

View File

@ -0,0 +1,121 @@
{% 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": {
{% for port in port_names_list %}
"{{ port }}": {
"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]"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"SCHEDULER": {
"scheduler.7": {
"type": "STRICT"
}
},
"QUEUE": {
"{{ port_names }}|7": {
"scheduler": "[SCHEDULER|scheduler.7]"
}
}
}

View File

@ -0,0 +1,129 @@
{% 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": "3",
"4": "4",
"5": "0",
"6": "0",
"7": "0"
}
},
"DSCP_TO_TC_MAP": {
"AZURE": {
"0" : "1",
"1" : "1",
"2" : "1",
"3" : "3",
"4" : "4",
"5" : "2",
"6" : "1",
"7" : "1",
"8" : "0",
"9" : "1",
"10": "1",
"11": "1",
"12": "1",
"13": "1",
"14": "1",
"15": "1",
"16": "1",
"17": "1",
"18": "1",
"19": "1",
"20": "1",
"21": "1",
"22": "1",
"23": "1",
"24": "1",
"25": "1",
"26": "1",
"27": "1",
"28": "1",
"29": "1",
"30": "1",
"31": "1",
"32": "1",
"33": "1",
"34": "1",
"35": "1",
"36": "1",
"37": "1",
"38": "1",
"39": "1",
"40": "1",
"41": "1",
"42": "1",
"43": "1",
"44": "1",
"45": "1",
"46": "5",
"47": "1",
"48": "6",
"49": "1",
"50": "1",
"51": "1",
"52": "1",
"53": "1",
"54": "1",
"55": "1",
"56": "1",
"57": "1",
"58": "1",
"59": "1",
"60": "1",
"61": "1",
"62": "1",
"63": "1"
}
},
"PORT_QOS_MAP": {
{% for port in port_names_list %}
"{{ port }}": {
"tc_to_pg_map": "AZURE",
"tc_to_queue_map": "AZURE",
"dscp_to_tc_map": "AZURE",
"pfc_enable": "3,4"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"WRED_PROFILE": {
"AZURE_LOSSLESS" : {
"wred_green_enable" : "true",
"wred_yellow_enable" : "true",
"wred_red_enable" : "true",
"ecn" : "ecn_all",
"green_max_threshold" : "2097152",
"green_min_threshold" : "1048576",
"yellow_max_threshold" : "2097152",
"yellow_min_threshold" : "1048576",
"red_max_threshold" : "2097152",
"red_min_threshold" : "1048576",
"green_drop_probability" : "5",
"yellow_drop_probability": "5",
"red_drop_probability" : "5"
}
}
}

View File

@ -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

View File

@ -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,57 +81,81 @@
"mode": "dynamic",
"xoff": "17708800"
},
"egress_lossy_pool": {
"lossy_pool": {
"size": "18874368",
"type": "egress",
"mode": "dynamic",
"xoff": "0"
},
"egress_lossless_pool": {
"size": "66092800",
"type": "egress"
}
},
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"ingress_lossless_pool",
"xoff":"1433600",
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"xoff":"38816",
"size":"1518",
"dynamic_th":"-4",
"xon_offset":"6272"
},
"ingress_lossy_profile": {
"pool":"ingress_lossless_pool",
"size":"0",
"static_th":"9721600"
"dynamic_th":"1",
"xon_offset":"9408"
},
"egress_lossless_profile": {
"pool":"egress_lossy_pool",
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"size":"0",
"static_th":"9721600"
"static_th":"9497600"
},
"ingress_lossy_profile": {
"pool":"[BUFFER_POOL|lossy_pool]",
"size":"0",
"static_th":"9497600"
},
"egress_lossy_profile": {
"pool":"egress_lossy_pool",
"pool":"[BUFFER_POOL|lossy_pool]",
"size":"1518",
"dynamic_th":"3"
"dynamic_th":"2"
}
},
"BUFFER_PG": {
"{{ port_names }}|0-3": {
"profile" : "egress_lossless_profile"
},
"{{ port_names }}|4-5": {
"profile" : "ingress_lossless_profile"
},
"{{ port_names }}|6-7": {
"profile" : "egress_lossless_profile"
}
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|1-2": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"BUFFER_QUEUE": {
"{{ port_names }}|4-5": {
"profile" : "ingress_lossy_profile"
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
},
"{{ port_names }}|0-3": {
"profile" : "egress_lossy_profile"
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0-2": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
},
"{{ port_names }}|6-7": {
"profile" : "egress_lossy_profile"
}
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}

View File

@ -0,0 +1,42 @@
{% 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":"2"
}
},
"BUFFER_PG": {
{% for port in port_names_list %}
"{{ port }}|0-7": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"BUFFER_QUEUE": {
{% for port in port_names_list %}
"{{ port }}|0-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}

View File

@ -0,0 +1,161 @@
{# 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"
},
"egress_lossless_pool": {
"size": "66092800",
"type": "egress"
}
},
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"ingress_lossless_pool",
"xoff":"38816",
"size":"1518",
"dynamic_th":"1",
"xon_offset":"9408"
},
"egress_lossless_profile": {
"pool":"ingress_lossless_pool",
"size":"0",
"static_th":"9497600"
},
"ingress_lossy_profile": {
"pool":"lossy_pool",
"size":"0",
"static_th":"9497600"
},
"egress_lossy_profile": {
"pool":"lossy_pool",
"size":"1518",
"dynamic_th":"2"
}
},
"BUFFER_PG": {
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "ingress_lossless_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0": {
"profile" : "ingress_lossy_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|1-2": {
"profile" : "ingress_lossy_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "ingress_lossy_profile"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"BUFFER_QUEUE": {
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "egress_lossless_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0-2": {
"profile" : "egress_lossy_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "egress_lossy_profile"
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}

View File

@ -4,12 +4,17 @@ ifcs:
nodes:
- node_id: "0"
options:
sd_low_power_mode_global_default: "true"
sku: "configs/sku/innovium.77700_B"
netdev:
- auto_create: "no"
multi_interface: "yes"
buffer_management_mode: "api_driven"
wred_cr_ip_proto_list: "17"
cr_assignment_mode: "1"
max_lossless_tc: "2"
ilpm_enable: "1"
forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E"
txring:
- txring_id: "0"
desc_count: "1024"
@ -951,20 +956,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"

View File

@ -5,6 +5,7 @@ device_id: 0x1b58
# Hardware constraint information
hardware:
num_ibs: 6
ib_active: 0,1,2,3,4,5
ports_per_ib: 32, 32, 32, 32, 20, 20
recirc_port_num: 32, 32, 32, 32, 32, 32

View File

@ -0,0 +1,8 @@
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:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil"
IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
IVM_SAI_PARAM_A0008: "32"

View File

@ -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"

View File

@ -0,0 +1,22 @@
# PG lossless profiles.
# speed cable size xon xoff threshold xon_offset
25000 5m 1518 0 15680 1 9408
50000 5m 1518 0 21248 1 9408
100000 5m 1518 0 34624 1 9408
200000 5m 1518 0 62368 1 9408
400000 5m 1518 0 117536 1 9408
25000 40m 1518 0 16928 1 9408
50000 40m 1518 0 23392 1 9408
100000 40m 1518 0 38816 1 9408
200000 40m 1518 0 71904 1 9408
400000 40m 1518 0 135520 1 9408
25000 100m 1518 0 18848 1 9408
50000 100m 1518 0 27264 1 9408
100000 100m 1518 0 46496 1 9408
200000 100m 1518 0 87168 1 9408
400000 100m 1518 0 166688 1 9408
25000 300m 1518 0 25184 1 9408
50000 300m 1518 0 40128 1 9408
100000 300m 1518 0 72384 1 9408
200000 300m 1518 0 138112 1 9408
400000 300m 1518 0 268640 1 9408

View File

@ -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

View File

@ -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,102 +8,122 @@
{
"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": "3",
"4": "4",
"5": "0",
"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"
"0" : "1",
"1" : "1",
"2" : "1",
"3" : "3",
"4" : "4",
"5" : "2",
"6" : "1",
"7" : "1",
"8" : "0",
"9" : "1",
"10": "1",
"11": "1",
"12": "1",
"13": "1",
"14": "1",
"15": "1",
"16": "1",
"17": "1",
"18": "1",
"19": "1",
"20": "1",
"21": "1",
"22": "1",
"23": "1",
"24": "1",
"25": "1",
"26": "1",
"27": "1",
"28": "1",
"29": "1",
"30": "1",
"31": "1",
"32": "1",
"33": "1",
"34": "1",
"35": "1",
"36": "1",
"37": "1",
"38": "1",
"39": "1",
"40": "1",
"41": "1",
"42": "1",
"43": "1",
"44": "1",
"45": "1",
"46": "5",
"47": "1",
"48": "6",
"49": "1",
"50": "1",
"51": "1",
"52": "1",
"53": "1",
"54": "1",
"55": "1",
"56": "1",
"57": "1",
"58": "1",
"59": "1",
"60": "1",
"61": "1",
"62": "1",
"63": "1"
}
},
"PORT_QOS_MAP": {
"{{ port_names }}": {
"tc_to_pg_map": "AZURE",
"tc_to_queue_map": "AZURE",
"dscp_to_tc_map": "AZURE",
"pfc_enable": "4,5"
{% for port in port_names_list %}
"{{ port }}": {
"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"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"WRED_PROFILE": {
"AZURE_LOSSLESS" : {
"wred_green_enable" : "true",
"wred_yellow_enable" : "true",
"wred_red_enable" : "true",
"ecn" : "ecn_all",
"green_max_threshold" : "2097152",
"green_min_threshold" : "1048576",
"yellow_max_threshold" : "2097152",
"yellow_min_threshold" : "1048576",
"red_max_threshold" : "2097152",
"red_min_threshold" : "1048576",
"green_drop_probability" : "5",
"yellow_drop_probability": "5",
"red_drop_probability" : "5"
}
}
}

View File

@ -0,0 +1,121 @@
{% 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": {
{% for port in port_names_list %}
"{{ port }}": {
"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]"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"SCHEDULER": {
"scheduler.7": {
"type": "STRICT"
}
},
"QUEUE": {
"{{ port_names }}|7": {
"scheduler": "[SCHEDULER|scheduler.7]"
}
}
}

View File

@ -0,0 +1,129 @@
{% 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": "3",
"4": "4",
"5": "0",
"6": "0",
"7": "0"
}
},
"DSCP_TO_TC_MAP": {
"AZURE": {
"0" : "1",
"1" : "1",
"2" : "1",
"3" : "3",
"4" : "4",
"5" : "2",
"6" : "1",
"7" : "1",
"8" : "0",
"9" : "1",
"10": "1",
"11": "1",
"12": "1",
"13": "1",
"14": "1",
"15": "1",
"16": "1",
"17": "1",
"18": "1",
"19": "1",
"20": "1",
"21": "1",
"22": "1",
"23": "1",
"24": "1",
"25": "1",
"26": "1",
"27": "1",
"28": "1",
"29": "1",
"30": "1",
"31": "1",
"32": "1",
"33": "1",
"34": "1",
"35": "1",
"36": "1",
"37": "1",
"38": "1",
"39": "1",
"40": "1",
"41": "1",
"42": "1",
"43": "1",
"44": "1",
"45": "1",
"46": "5",
"47": "1",
"48": "6",
"49": "1",
"50": "1",
"51": "1",
"52": "1",
"53": "1",
"54": "1",
"55": "1",
"56": "1",
"57": "1",
"58": "1",
"59": "1",
"60": "1",
"61": "1",
"62": "1",
"63": "1"
}
},
"PORT_QOS_MAP": {
{% for port in port_names_list %}
"{{ port }}": {
"tc_to_pg_map": "AZURE",
"tc_to_queue_map": "AZURE",
"dscp_to_tc_map": "AZURE",
"pfc_enable": "3,4"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"WRED_PROFILE": {
"AZURE_LOSSLESS" : {
"wred_green_enable" : "true",
"wred_yellow_enable" : "true",
"wred_red_enable" : "true",
"ecn" : "ecn_all",
"green_max_threshold" : "2097152",
"green_min_threshold" : "1048576",
"yellow_max_threshold" : "2097152",
"yellow_min_threshold" : "1048576",
"red_max_threshold" : "2097152",
"red_min_threshold" : "1048576",
"green_drop_probability" : "5",
"yellow_drop_probability": "5",
"red_drop_probability" : "5"
}
}
}

View File

@ -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

View File

@ -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,57 +81,81 @@
"mode": "dynamic",
"xoff": "17708800"
},
"egress_lossy_pool": {
"lossy_pool": {
"size": "18874368",
"type": "egress",
"mode": "dynamic",
"xoff": "0"
},
"egress_lossless_pool": {
"size": "66092800",
"type": "egress"
}
},
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"ingress_lossless_pool",
"xoff":"1433600",
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"xoff":"38816",
"size":"1518",
"dynamic_th":"-4",
"xon_offset":"6272"
},
"ingress_lossy_profile": {
"pool":"ingress_lossless_pool",
"size":"0",
"static_th":"9721600"
"dynamic_th":"1",
"xon_offset":"9408"
},
"egress_lossless_profile": {
"pool":"egress_lossy_pool",
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"size":"0",
"static_th":"9721600"
"static_th":"9497600"
},
"ingress_lossy_profile": {
"pool":"[BUFFER_POOL|lossy_pool]",
"size":"0",
"static_th":"9497600"
},
"egress_lossy_profile": {
"pool":"egress_lossy_pool",
"pool":"[BUFFER_POOL|lossy_pool]",
"size":"1518",
"dynamic_th":"3"
"dynamic_th":"2"
}
},
"BUFFER_PG": {
"{{ port_names }}|0-3": {
"profile" : "egress_lossless_profile"
},
"{{ port_names }}|4-5": {
"profile" : "ingress_lossless_profile"
},
"{{ port_names }}|6-7": {
"profile" : "egress_lossless_profile"
}
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|1-2": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"BUFFER_QUEUE": {
"{{ port_names }}|4-5": {
"profile" : "ingress_lossy_profile"
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
},
"{{ port_names }}|0-3": {
"profile" : "egress_lossy_profile"
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0-2": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
},
"{{ port_names }}|6-7": {
"profile" : "egress_lossy_profile"
}
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}

View File

@ -0,0 +1,42 @@
{% 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":"2"
}
},
"BUFFER_PG": {
{% for port in port_names_list %}
"{{ port }}|0-7": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"BUFFER_QUEUE": {
{% for port in port_names_list %}
"{{ port }}|0-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}

View File

@ -0,0 +1,161 @@
{# 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"
},
"egress_lossless_pool": {
"size": "66092800",
"type": "egress"
}
},
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"ingress_lossless_pool",
"xoff":"38816",
"size":"1518",
"dynamic_th":"1",
"xon_offset":"9408"
},
"egress_lossless_profile": {
"pool":"ingress_lossless_pool",
"size":"0",
"static_th":"9497600"
},
"ingress_lossy_profile": {
"pool":"lossy_pool",
"size":"0",
"static_th":"9497600"
},
"egress_lossy_profile": {
"pool":"lossy_pool",
"size":"1518",
"dynamic_th":"2"
}
},
"BUFFER_PG": {
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "ingress_lossless_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0": {
"profile" : "ingress_lossy_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|1-2": {
"profile" : "ingress_lossy_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "ingress_lossy_profile"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"BUFFER_QUEUE": {
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "egress_lossless_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0-2": {
"profile" : "egress_lossy_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "egress_lossy_profile"
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}

View File

@ -4,12 +4,17 @@ ifcs:
nodes:
- node_id: "0"
options:
sd_low_power_mode_global_default: "true"
sku: "configs/sku/innovium.77700_A"
netdev:
- auto_create: "no"
multi_interface: "yes"
buffer_management_mode: "api_driven"
wred_cr_ip_proto_list: "17"
cr_assignment_mode: "1"
max_lossless_tc: "2"
ilpm_enable: "1"
forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E"
txring:
- txring_id: "0"
desc_count: "1024"
@ -280,20 +285,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"

View File

@ -5,6 +5,7 @@ device_id: 0x1b58
# Hardware constraint information
hardware:
num_ibs: 6
ib_active: 0,1,2,3,4,5
ports_per_ib: 32, 32, 32, 32, 20, 20
recirc_port_num: 32, 32, 32, 32, 32, 32

View File

@ -0,0 +1,8 @@
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:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil"
IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
IVM_SAI_PARAM_A0008: "32"

View File

@ -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"

View File

@ -0,0 +1,22 @@
# PG lossless profiles.
# speed cable size xon xoff threshold xon_offset
25000 5m 1518 0 15680 1 9408
50000 5m 1518 0 21248 1 9408
100000 5m 1518 0 34624 1 9408
200000 5m 1518 0 62368 1 9408
400000 5m 1518 0 117536 1 9408
25000 40m 1518 0 16928 1 9408
50000 40m 1518 0 23392 1 9408
100000 40m 1518 0 38816 1 9408
200000 40m 1518 0 71904 1 9408
400000 40m 1518 0 135520 1 9408
25000 100m 1518 0 18848 1 9408
50000 100m 1518 0 27264 1 9408
100000 100m 1518 0 46496 1 9408
200000 100m 1518 0 87168 1 9408
400000 100m 1518 0 166688 1 9408
25000 300m 1518 0 25184 1 9408
50000 300m 1518 0 40128 1 9408
100000 300m 1518 0 72384 1 9408
200000 300m 1518 0 138112 1 9408
400000 300m 1518 0 268640 1 9408

View File

@ -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

View File

@ -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,102 +8,122 @@
{
"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": "3",
"4": "4",
"5": "0",
"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"
"0" : "1",
"1" : "1",
"2" : "1",
"3" : "3",
"4" : "4",
"5" : "2",
"6" : "1",
"7" : "1",
"8" : "0",
"9" : "1",
"10": "1",
"11": "1",
"12": "1",
"13": "1",
"14": "1",
"15": "1",
"16": "1",
"17": "1",
"18": "1",
"19": "1",
"20": "1",
"21": "1",
"22": "1",
"23": "1",
"24": "1",
"25": "1",
"26": "1",
"27": "1",
"28": "1",
"29": "1",
"30": "1",
"31": "1",
"32": "1",
"33": "1",
"34": "1",
"35": "1",
"36": "1",
"37": "1",
"38": "1",
"39": "1",
"40": "1",
"41": "1",
"42": "1",
"43": "1",
"44": "1",
"45": "1",
"46": "5",
"47": "1",
"48": "6",
"49": "1",
"50": "1",
"51": "1",
"52": "1",
"53": "1",
"54": "1",
"55": "1",
"56": "1",
"57": "1",
"58": "1",
"59": "1",
"60": "1",
"61": "1",
"62": "1",
"63": "1"
}
},
"PORT_QOS_MAP": {
"{{ port_names }}": {
"tc_to_pg_map": "AZURE",
"tc_to_queue_map": "AZURE",
"dscp_to_tc_map": "AZURE",
"pfc_enable": "4,5"
{% for port in port_names_list %}
"{{ port }}": {
"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"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"WRED_PROFILE": {
"AZURE_LOSSLESS" : {
"wred_green_enable" : "true",
"wred_yellow_enable" : "true",
"wred_red_enable" : "true",
"ecn" : "ecn_all",
"green_max_threshold" : "2097152",
"green_min_threshold" : "1048576",
"yellow_max_threshold" : "2097152",
"yellow_min_threshold" : "1048576",
"red_max_threshold" : "2097152",
"red_min_threshold" : "1048576",
"green_drop_probability" : "5",
"yellow_drop_probability": "5",
"red_drop_probability" : "5"
}
}
}

View File

@ -0,0 +1,121 @@
{% 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": {
{% for port in port_names_list %}
"{{ port }}": {
"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]"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"SCHEDULER": {
"scheduler.7": {
"type": "STRICT"
}
},
"QUEUE": {
"{{ port_names }}|7": {
"scheduler": "[SCHEDULER|scheduler.7]"
}
}
}

View File

@ -0,0 +1,129 @@
{% 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": "3",
"4": "4",
"5": "0",
"6": "0",
"7": "0"
}
},
"DSCP_TO_TC_MAP": {
"AZURE": {
"0" : "1",
"1" : "1",
"2" : "1",
"3" : "3",
"4" : "4",
"5" : "2",
"6" : "1",
"7" : "1",
"8" : "0",
"9" : "1",
"10": "1",
"11": "1",
"12": "1",
"13": "1",
"14": "1",
"15": "1",
"16": "1",
"17": "1",
"18": "1",
"19": "1",
"20": "1",
"21": "1",
"22": "1",
"23": "1",
"24": "1",
"25": "1",
"26": "1",
"27": "1",
"28": "1",
"29": "1",
"30": "1",
"31": "1",
"32": "1",
"33": "1",
"34": "1",
"35": "1",
"36": "1",
"37": "1",
"38": "1",
"39": "1",
"40": "1",
"41": "1",
"42": "1",
"43": "1",
"44": "1",
"45": "1",
"46": "5",
"47": "1",
"48": "6",
"49": "1",
"50": "1",
"51": "1",
"52": "1",
"53": "1",
"54": "1",
"55": "1",
"56": "1",
"57": "1",
"58": "1",
"59": "1",
"60": "1",
"61": "1",
"62": "1",
"63": "1"
}
},
"PORT_QOS_MAP": {
{% for port in port_names_list %}
"{{ port }}": {
"tc_to_pg_map": "AZURE",
"tc_to_queue_map": "AZURE",
"dscp_to_tc_map": "AZURE",
"pfc_enable": "3,4"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"WRED_PROFILE": {
"AZURE_LOSSLESS" : {
"wred_green_enable" : "true",
"wred_yellow_enable" : "true",
"wred_red_enable" : "true",
"ecn" : "ecn_all",
"green_max_threshold" : "2097152",
"green_min_threshold" : "1048576",
"yellow_max_threshold" : "2097152",
"yellow_min_threshold" : "1048576",
"red_max_threshold" : "2097152",
"red_min_threshold" : "1048576",
"green_drop_probability" : "5",
"yellow_drop_probability": "5",
"red_drop_probability" : "5"
}
}
}

View File

@ -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

View File

@ -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,57 +81,81 @@
"mode": "dynamic",
"xoff": "17708800"
},
"egress_lossy_pool": {
"lossy_pool": {
"size": "18874368",
"type": "egress",
"mode": "dynamic",
"xoff": "0"
},
"egress_lossless_pool": {
"size": "66092800",
"type": "egress"
}
},
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"ingress_lossless_pool",
"xoff":"1433600",
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"xoff":"38816",
"size":"1518",
"dynamic_th":"-4",
"xon_offset":"6272"
},
"ingress_lossy_profile": {
"pool":"ingress_lossless_pool",
"size":"0",
"static_th":"9721600"
"dynamic_th":"1",
"xon_offset":"9408"
},
"egress_lossless_profile": {
"pool":"egress_lossy_pool",
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"size":"0",
"static_th":"9721600"
"static_th":"9497600"
},
"ingress_lossy_profile": {
"pool":"[BUFFER_POOL|lossy_pool]",
"size":"0",
"static_th":"9497600"
},
"egress_lossy_profile": {
"pool":"egress_lossy_pool",
"pool":"[BUFFER_POOL|lossy_pool]",
"size":"1518",
"dynamic_th":"3"
"dynamic_th":"2"
}
},
"BUFFER_PG": {
"{{ port_names }}|0-3": {
"profile" : "egress_lossless_profile"
},
"{{ port_names }}|4-5": {
"profile" : "ingress_lossless_profile"
},
"{{ port_names }}|6-7": {
"profile" : "egress_lossless_profile"
}
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|1-2": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"BUFFER_QUEUE": {
"{{ port_names }}|4-5": {
"profile" : "ingress_lossy_profile"
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
},
"{{ port_names }}|0-3": {
"profile" : "egress_lossy_profile"
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0-2": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
},
"{{ port_names }}|6-7": {
"profile" : "egress_lossy_profile"
}
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}

View File

@ -0,0 +1,42 @@
{% 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":"2"
}
},
"BUFFER_PG": {
{% for port in port_names_list %}
"{{ port }}|0-7": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"BUFFER_QUEUE": {
{% for port in port_names_list %}
"{{ port }}|0-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}

View File

@ -0,0 +1,161 @@
{# 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"
},
"egress_lossless_pool": {
"size": "66092800",
"type": "egress"
}
},
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"ingress_lossless_pool",
"xoff":"38816",
"size":"1518",
"dynamic_th":"1",
"xon_offset":"9408"
},
"egress_lossless_profile": {
"pool":"ingress_lossless_pool",
"size":"0",
"static_th":"9497600"
},
"ingress_lossy_profile": {
"pool":"lossy_pool",
"size":"0",
"static_th":"9497600"
},
"egress_lossy_profile": {
"pool":"lossy_pool",
"size":"1518",
"dynamic_th":"2"
}
},
"BUFFER_PG": {
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "ingress_lossless_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0": {
"profile" : "ingress_lossy_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|1-2": {
"profile" : "ingress_lossy_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "ingress_lossy_profile"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"BUFFER_QUEUE": {
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "egress_lossless_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0-2": {
"profile" : "egress_lossy_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "egress_lossy_profile"
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}

View File

@ -4,12 +4,17 @@ ifcs:
nodes:
- node_id: "0"
options:
sd_low_power_mode_global_default: "true"
sku: "configs/sku/innovium.77700_B"
netdev:
- auto_create: "no"
multi_interface: "yes"
buffer_management_mode: "api_driven"
wred_cr_ip_proto_list: "17"
cr_assignment_mode: "1"
max_lossless_tc: "2"
ilpm_enable: "1"
forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E"
txring:
- txring_id: "0"
desc_count: "1024"
@ -632,24 +637,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"

View File

@ -5,6 +5,7 @@ device_id: 0x1b58
# Hardware constraint information
hardware:
num_ibs: 6
ib_active: 0,1,2,3,4,5
ports_per_ib: 32, 32, 32, 32, 20, 20
recirc_port_num: 32, 32, 32, 32, 32, 32

View File

@ -0,0 +1,8 @@
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:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil"
IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
IVM_SAI_PARAM_A0008: "32"

View File

@ -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"

View File

@ -0,0 +1,22 @@
# PG lossless profiles.
# speed cable size xon xoff threshold xon_offset
25000 5m 1518 0 15680 1 9408
50000 5m 1518 0 21248 1 9408
100000 5m 1518 0 34624 1 9408
200000 5m 1518 0 62368 1 9408
400000 5m 1518 0 117536 1 9408
25000 40m 1518 0 16928 1 9408
50000 40m 1518 0 23392 1 9408
100000 40m 1518 0 38816 1 9408
200000 40m 1518 0 71904 1 9408
400000 40m 1518 0 135520 1 9408
25000 100m 1518 0 18848 1 9408
50000 100m 1518 0 27264 1 9408
100000 100m 1518 0 46496 1 9408
200000 100m 1518 0 87168 1 9408
400000 100m 1518 0 166688 1 9408
25000 300m 1518 0 25184 1 9408
50000 300m 1518 0 40128 1 9408
100000 300m 1518 0 72384 1 9408
200000 300m 1518 0 138112 1 9408
400000 300m 1518 0 268640 1 9408

View File

@ -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

View File

@ -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,102 +8,122 @@
{
"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": "3",
"4": "4",
"5": "0",
"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"
"0" : "1",
"1" : "1",
"2" : "1",
"3" : "3",
"4" : "4",
"5" : "2",
"6" : "1",
"7" : "1",
"8" : "0",
"9" : "1",
"10": "1",
"11": "1",
"12": "1",
"13": "1",
"14": "1",
"15": "1",
"16": "1",
"17": "1",
"18": "1",
"19": "1",
"20": "1",
"21": "1",
"22": "1",
"23": "1",
"24": "1",
"25": "1",
"26": "1",
"27": "1",
"28": "1",
"29": "1",
"30": "1",
"31": "1",
"32": "1",
"33": "1",
"34": "1",
"35": "1",
"36": "1",
"37": "1",
"38": "1",
"39": "1",
"40": "1",
"41": "1",
"42": "1",
"43": "1",
"44": "1",
"45": "1",
"46": "5",
"47": "1",
"48": "6",
"49": "1",
"50": "1",
"51": "1",
"52": "1",
"53": "1",
"54": "1",
"55": "1",
"56": "1",
"57": "1",
"58": "1",
"59": "1",
"60": "1",
"61": "1",
"62": "1",
"63": "1"
}
},
"PORT_QOS_MAP": {
"{{ port_names }}": {
"tc_to_pg_map": "AZURE",
"tc_to_queue_map": "AZURE",
"dscp_to_tc_map": "AZURE",
"pfc_enable": "4,5"
{% for port in port_names_list %}
"{{ port }}": {
"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"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"WRED_PROFILE": {
"AZURE_LOSSLESS" : {
"wred_green_enable" : "true",
"wred_yellow_enable" : "true",
"wred_red_enable" : "true",
"ecn" : "ecn_all",
"green_max_threshold" : "2097152",
"green_min_threshold" : "1048576",
"yellow_max_threshold" : "2097152",
"yellow_min_threshold" : "1048576",
"red_max_threshold" : "2097152",
"red_min_threshold" : "1048576",
"green_drop_probability" : "5",
"yellow_drop_probability": "5",
"red_drop_probability" : "5"
}
}
}

View File

@ -0,0 +1,121 @@
{% 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": {
{% for port in port_names_list %}
"{{ port }}": {
"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]"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"SCHEDULER": {
"scheduler.7": {
"type": "STRICT"
}
},
"QUEUE": {
"{{ port_names }}|7": {
"scheduler": "[SCHEDULER|scheduler.7]"
}
}
}

View File

@ -0,0 +1,129 @@
{% 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": "3",
"4": "4",
"5": "0",
"6": "0",
"7": "0"
}
},
"DSCP_TO_TC_MAP": {
"AZURE": {
"0" : "1",
"1" : "1",
"2" : "1",
"3" : "3",
"4" : "4",
"5" : "2",
"6" : "1",
"7" : "1",
"8" : "0",
"9" : "1",
"10": "1",
"11": "1",
"12": "1",
"13": "1",
"14": "1",
"15": "1",
"16": "1",
"17": "1",
"18": "1",
"19": "1",
"20": "1",
"21": "1",
"22": "1",
"23": "1",
"24": "1",
"25": "1",
"26": "1",
"27": "1",
"28": "1",
"29": "1",
"30": "1",
"31": "1",
"32": "1",
"33": "1",
"34": "1",
"35": "1",
"36": "1",
"37": "1",
"38": "1",
"39": "1",
"40": "1",
"41": "1",
"42": "1",
"43": "1",
"44": "1",
"45": "1",
"46": "5",
"47": "1",
"48": "6",
"49": "1",
"50": "1",
"51": "1",
"52": "1",
"53": "1",
"54": "1",
"55": "1",
"56": "1",
"57": "1",
"58": "1",
"59": "1",
"60": "1",
"61": "1",
"62": "1",
"63": "1"
}
},
"PORT_QOS_MAP": {
{% for port in port_names_list %}
"{{ port }}": {
"tc_to_pg_map": "AZURE",
"tc_to_queue_map": "AZURE",
"dscp_to_tc_map": "AZURE",
"pfc_enable": "3,4"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"WRED_PROFILE": {
"AZURE_LOSSLESS" : {
"wred_green_enable" : "true",
"wred_yellow_enable" : "true",
"wred_red_enable" : "true",
"ecn" : "ecn_all",
"green_max_threshold" : "2097152",
"green_min_threshold" : "1048576",
"yellow_max_threshold" : "2097152",
"yellow_min_threshold" : "1048576",
"red_max_threshold" : "2097152",
"red_min_threshold" : "1048576",
"green_drop_probability" : "5",
"yellow_drop_probability": "5",
"red_drop_probability" : "5"
}
}
}

View File

@ -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

View File

@ -1,7 +1,5 @@
{# Default values which will be used if no actual configura available #}
{% set default_cable = '300m' %}
{% set default_speed = '100G' %}
{% 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 #}
@ -13,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 %}
@ -58,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",
@ -65,57 +81,81 @@
"mode": "dynamic",
"xoff": "17708800"
},
"egress_lossy_pool": {
"lossy_pool": {
"size": "18874368",
"type": "egress",
"mode": "dynamic",
"xoff": "0"
},
"egress_lossless_pool": {
"size": "66092800",
"type": "egress"
}
},
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"ingress_lossless_pool",
"xoff":"1433600",
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"xoff":"38816",
"size":"1518",
"dynamic_th":"-4",
"xon_offset":"6272"
},
"ingress_lossy_profile": {
"pool":"ingress_lossless_pool",
"size":"0",
"static_th":"9721600"
"dynamic_th":"1",
"xon_offset":"9408"
},
"egress_lossless_profile": {
"pool":"egress_lossy_pool",
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"size":"0",
"static_th":"9721600"
"static_th":"9497600"
},
"ingress_lossy_profile": {
"pool":"[BUFFER_POOL|lossy_pool]",
"size":"0",
"static_th":"9497600"
},
"egress_lossy_profile": {
"pool":"egress_lossy_pool",
"pool":"[BUFFER_POOL|lossy_pool]",
"size":"1518",
"dynamic_th":"3"
"dynamic_th":"2"
}
},
"BUFFER_PG": {
"{{ port_names }}|0-3": {
"profile" : "egress_lossless_profile"
},
"{{ port_names }}|4-5": {
"profile" : "ingress_lossless_profile"
},
"{{ port_names }}|6-7": {
"profile" : "egress_lossless_profile"
}
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|1-2": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"BUFFER_QUEUE": {
"{{ port_names }}|4-5": {
"profile" : "ingress_lossy_profile"
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
},
"{{ port_names }}|0-3": {
"profile" : "egress_lossy_profile"
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0-2": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
},
"{{ port_names }}|6-7": {
"profile" : "egress_lossy_profile"
}
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}

View File

@ -4,11 +4,14 @@ ifcs:
nodes:
- node_id: "0"
options:
sd_low_power_mode_global_default: "true"
sku: "configs/sku/innovium.77700_B"
netdev:
- auto_create: "no"
multi_interface: "yes"
buffer_management_mode: "bootstrap_lossless"
wred_cr_ip_proto_list: "17"
cr_assignment_mode: "1"
max_lossless_tc: "2"
txring:
- txring_id: "0"

View File

@ -5,6 +5,7 @@ device_id: 0x1b58
# Hardware constraint information
hardware:
num_ibs: 6
ib_active: 0,1,2,3,4,5
ports_per_ib: 32, 32, 32, 32, 20, 20
recirc_port_num: 32, 32, 32, 32, 32, 32

View File

@ -0,0 +1,8 @@
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/ifcs_cmds:$INNOVIUM_DIR/testutil"
IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
IVM_SAI_PARAM_A0008: "32"

View File

@ -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"

View File

@ -1,102 +1,129 @@
{% 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",
"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": "3",
"4": "4",
"5": "0",
"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"
"0" : "1",
"1" : "1",
"2" : "1",
"3" : "3",
"4" : "4",
"5" : "2",
"6" : "1",
"7" : "1",
"8" : "0",
"9" : "1",
"10": "1",
"11": "1",
"12": "1",
"13": "1",
"14": "1",
"15": "1",
"16": "1",
"17": "1",
"18": "1",
"19": "1",
"20": "1",
"21": "1",
"22": "1",
"23": "1",
"24": "1",
"25": "1",
"26": "1",
"27": "1",
"28": "1",
"29": "1",
"30": "1",
"31": "1",
"32": "1",
"33": "1",
"34": "1",
"35": "1",
"36": "1",
"37": "1",
"38": "1",
"39": "1",
"40": "1",
"41": "1",
"42": "1",
"43": "1",
"44": "1",
"45": "1",
"46": "5",
"47": "1",
"48": "6",
"49": "1",
"50": "1",
"51": "1",
"52": "1",
"53": "1",
"54": "1",
"55": "1",
"56": "1",
"57": "1",
"58": "1",
"59": "1",
"60": "1",
"61": "1",
"62": "1",
"63": "1"
}
},
"PORT_QOS_MAP": {
"Ethernet180,Ethernet8,Ethernet44,Ethernet184,Ethernet188,Ethernet0,Ethernet4,Ethernet108,Ethernet248,Ethernet100,Ethernet244,Ethernet128,Ethernet104,Ethernet240,Ethernet40,Ethernet228,Ethernet96,Ethernet168,Ethernet148,Ethernet204,Ethernet120,Ethernet220,Ethernet144,Ethernet208,Ethernet160,Ethernet224,Ethernet140,Ethernet56,Ethernet164,Ethernet76,Ethernet72,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet196,Ethernet28,Ethernet192,Ethernet200,Ethernet124,Ethernet24,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet152,Ethernet136,Ethernet156,Ethernet92,Ethernet132,Ethernet48,Ethernet232,Ethernet172,Ethernet216,Ethernet236,Ethernet176,Ethernet212,Ethernet64,Ethernet88,Ethernet60,Ethernet52,Ethernet20,Ethernet68,Ethernet252": {
"tc_to_pg_map": "AZURE",
"tc_to_queue_map": "AZURE",
"dscp_to_tc_map": "AZURE",
"pfc_enable": "4,5"
{% for port in port_names_list %}
"{{ port }}": {
"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"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"WRED_PROFILE": {
"AZURE_LOSSLESS" : {
"wred_green_enable" : "true",
"wred_yellow_enable" : "true",
"wred_red_enable" : "true",
"ecn" : "ecn_all",
"green_max_threshold" : "2097152",
"green_min_threshold" : "1048576",
"yellow_max_threshold" : "2097152",
"yellow_min_threshold" : "1048576",
"red_max_threshold" : "2097152",
"red_min_threshold" : "1048576",
"green_drop_probability" : "5",
"yellow_drop_probability": "5",
"red_drop_probability" : "5"
}
}
}

View File

@ -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

View File

@ -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,57 +81,81 @@
"mode": "dynamic",
"xoff": "17708800"
},
"egress_lossy_pool": {
"lossy_pool": {
"size": "18874368",
"type": "egress",
"mode": "dynamic",
"xoff": "0"
},
"egress_lossless_pool": {
"size": "66092800",
"type": "egress"
}
},
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"ingress_lossless_pool",
"xoff":"1433600",
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"xoff":"38816",
"size":"1518",
"dynamic_th":"-4",
"xon_offset":"6272"
},
"ingress_lossy_profile": {
"pool":"ingress_lossless_pool",
"size":"0",
"static_th":"9721600"
"dynamic_th":"1",
"xon_offset":"9408"
},
"egress_lossless_profile": {
"pool":"egress_lossy_pool",
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
"size":"0",
"static_th":"9721600"
"static_th":"9497600"
},
"ingress_lossy_profile": {
"pool":"[BUFFER_POOL|lossy_pool]",
"size":"0",
"static_th":"9497600"
},
"egress_lossy_profile": {
"pool":"egress_lossy_pool",
"pool":"[BUFFER_POOL|lossy_pool]",
"size":"1518",
"dynamic_th":"3"
"dynamic_th":"2"
}
},
"BUFFER_PG": {
"{{ port_names }}|0-3": {
"profile" : "egress_lossless_profile"
},
"{{ port_names }}|4-5": {
"profile" : "ingress_lossless_profile"
},
"{{ port_names }}|6-7": {
"profile" : "egress_lossless_profile"
}
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|1-2": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"BUFFER_QUEUE": {
"{{ port_names }}|4-5": {
"profile" : "ingress_lossy_profile"
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
},
"{{ port_names }}|0-3": {
"profile" : "egress_lossy_profile"
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0-2": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
},
"{{ port_names }}|6-7": {
"profile" : "egress_lossy_profile"
}
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}

View File

@ -0,0 +1,42 @@
{% 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":"2"
}
},
"BUFFER_PG": {
{% for port in port_names_list %}
"{{ port }}|0-7": {
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"BUFFER_QUEUE": {
{% for port in port_names_list %}
"{{ port }}|0-7": {
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}

View File

@ -0,0 +1,161 @@
{# 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"
},
"egress_lossless_pool": {
"size": "66092800",
"type": "egress"
}
},
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"ingress_lossless_pool",
"xoff":"38816",
"size":"1518",
"dynamic_th":"1",
"xon_offset":"9408"
},
"egress_lossless_profile": {
"pool":"ingress_lossless_pool",
"size":"0",
"static_th":"9497600"
},
"ingress_lossy_profile": {
"pool":"lossy_pool",
"size":"0",
"static_th":"9497600"
},
"egress_lossy_profile": {
"pool":"lossy_pool",
"size":"1518",
"dynamic_th":"2"
}
},
"BUFFER_PG": {
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "ingress_lossless_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0": {
"profile" : "ingress_lossy_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|1-2": {
"profile" : "ingress_lossy_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "ingress_lossy_profile"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"BUFFER_QUEUE": {
{% for port in port_names_list %}
"{{ port }}|3-4": {
"profile" : "egress_lossless_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0-2": {
"profile" : "egress_lossy_profile"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5-7": {
"profile" : "egress_lossy_profile"
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}

View File

@ -4,12 +4,17 @@ ifcs:
nodes:
- node_id: "0"
options:
sd_low_power_mode_global_default: "true"
sku: "configs/sku/innovium.77700_B"
netdev:
- auto_create: "no"
multi_interface: "yes"
buffer_management_mode: "api_driven"
wred_cr_ip_proto_list: "17"
cr_assignment_mode: "1"
max_lossless_tc: "2"
ilpm_enable: "1"
forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E"
txring:
- txring_id: "0"
desc_count: "1024"
@ -504,20 +509,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"

View File

@ -5,6 +5,7 @@ device_id: 0x1b58
# Hardware constraint information
hardware:
num_ibs: 6
ib_active: 0,1,2,3,4,5
ports_per_ib: 32, 32, 32, 32, 20, 20
recirc_port_num: 32, 32, 32, 32, 32, 32

View File

@ -0,0 +1,8 @@
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:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil"
IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml"
IVM_SAI_PARAM_A0008: "32"

View File

@ -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"

View File

@ -0,0 +1,22 @@
# PG lossless profiles.
# speed cable size xon xoff threshold xon_offset
25000 5m 1518 0 15680 1 9408
50000 5m 1518 0 21248 1 9408
100000 5m 1518 0 34624 1 9408
200000 5m 1518 0 62368 1 9408
400000 5m 1518 0 117536 1 9408
25000 40m 1518 0 16928 1 9408
50000 40m 1518 0 23392 1 9408
100000 40m 1518 0 38816 1 9408
200000 40m 1518 0 71904 1 9408
400000 40m 1518 0 135520 1 9408
25000 100m 1518 0 18848 1 9408
50000 100m 1518 0 27264 1 9408
100000 100m 1518 0 46496 1 9408
200000 100m 1518 0 87168 1 9408
400000 100m 1518 0 166688 1 9408
25000 300m 1518 0 25184 1 9408
50000 300m 1518 0 40128 1 9408
100000 300m 1518 0 72384 1 9408
200000 300m 1518 0 138112 1 9408
400000 300m 1518 0 268640 1 9408

View File

@ -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

View File

@ -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,102 +8,122 @@
{
"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": "3",
"4": "4",
"5": "0",
"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"
"0" : "1",
"1" : "1",
"2" : "1",
"3" : "3",
"4" : "4",
"5" : "2",
"6" : "1",
"7" : "1",
"8" : "0",
"9" : "1",
"10": "1",
"11": "1",
"12": "1",
"13": "1",
"14": "1",
"15": "1",
"16": "1",
"17": "1",
"18": "1",
"19": "1",
"20": "1",
"21": "1",
"22": "1",
"23": "1",
"24": "1",
"25": "1",
"26": "1",
"27": "1",
"28": "1",
"29": "1",
"30": "1",
"31": "1",
"32": "1",
"33": "1",
"34": "1",
"35": "1",
"36": "1",
"37": "1",
"38": "1",
"39": "1",
"40": "1",
"41": "1",
"42": "1",
"43": "1",
"44": "1",
"45": "1",
"46": "5",
"47": "1",
"48": "6",
"49": "1",
"50": "1",
"51": "1",
"52": "1",
"53": "1",
"54": "1",
"55": "1",
"56": "1",
"57": "1",
"58": "1",
"59": "1",
"60": "1",
"61": "1",
"62": "1",
"63": "1"
}
},
"PORT_QOS_MAP": {
"{{ port_names }}": {
"tc_to_pg_map": "AZURE",
"tc_to_queue_map": "AZURE",
"dscp_to_tc_map": "AZURE",
"pfc_enable": "4,5"
{% for port in port_names_list %}
"{{ port }}": {
"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"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"WRED_PROFILE": {
"AZURE_LOSSLESS" : {
"wred_green_enable" : "true",
"wred_yellow_enable" : "true",
"wred_red_enable" : "true",
"ecn" : "ecn_all",
"green_max_threshold" : "2097152",
"green_min_threshold" : "1048576",
"yellow_max_threshold" : "2097152",
"yellow_min_threshold" : "1048576",
"red_max_threshold" : "2097152",
"red_min_threshold" : "1048576",
"green_drop_probability" : "5",
"yellow_drop_probability": "5",
"red_drop_probability" : "5"
}
}
}

View File

@ -0,0 +1,121 @@
{% 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": {
{% for port in port_names_list %}
"{{ port }}": {
"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]"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"SCHEDULER": {
"scheduler.7": {
"type": "STRICT"
}
},
"QUEUE": {
"{{ port_names }}|7": {
"scheduler": "[SCHEDULER|scheduler.7]"
}
}
}

View File

@ -0,0 +1,129 @@
{% 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": "3",
"4": "4",
"5": "0",
"6": "0",
"7": "0"
}
},
"DSCP_TO_TC_MAP": {
"AZURE": {
"0" : "1",
"1" : "1",
"2" : "1",
"3" : "3",
"4" : "4",
"5" : "2",
"6" : "1",
"7" : "1",
"8" : "0",
"9" : "1",
"10": "1",
"11": "1",
"12": "1",
"13": "1",
"14": "1",
"15": "1",
"16": "1",
"17": "1",
"18": "1",
"19": "1",
"20": "1",
"21": "1",
"22": "1",
"23": "1",
"24": "1",
"25": "1",
"26": "1",
"27": "1",
"28": "1",
"29": "1",
"30": "1",
"31": "1",
"32": "1",
"33": "1",
"34": "1",
"35": "1",
"36": "1",
"37": "1",
"38": "1",
"39": "1",
"40": "1",
"41": "1",
"42": "1",
"43": "1",
"44": "1",
"45": "1",
"46": "5",
"47": "1",
"48": "6",
"49": "1",
"50": "1",
"51": "1",
"52": "1",
"53": "1",
"54": "1",
"55": "1",
"56": "1",
"57": "1",
"58": "1",
"59": "1",
"60": "1",
"61": "1",
"62": "1",
"63": "1"
}
},
"PORT_QOS_MAP": {
{% for port in port_names_list %}
"{{ port }}": {
"tc_to_pg_map": "AZURE",
"tc_to_queue_map": "AZURE",
"dscp_to_tc_map": "AZURE",
"pfc_enable": "3,4"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"WRED_PROFILE": {
"AZURE_LOSSLESS" : {
"wred_green_enable" : "true",
"wred_yellow_enable" : "true",
"wred_red_enable" : "true",
"ecn" : "ecn_all",
"green_max_threshold" : "2097152",
"green_min_threshold" : "1048576",
"yellow_max_threshold" : "2097152",
"yellow_min_threshold" : "1048576",
"red_max_threshold" : "2097152",
"red_min_threshold" : "1048576",
"green_drop_probability" : "5",
"yellow_drop_probability": "5",
"red_drop_probability" : "5"
}
}
}

View File

@ -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

View File

@ -1,3 +1,4 @@
ONIE_PLATFORM_EXTRA_CMDLINE_LINUX="intel_iommu=off"
CONSOLE_PORT=0x3f8
CONSOLE_DEV=0
CONSOLE_SPEED=115200

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,5 @@
#!/usr/bin/env python
#############################################################################
# Celestica Midstone-200i
#
@ -9,8 +11,8 @@
try:
from sonic_eeprom import eeprom_tlvinfo
except ImportError as e:
raise ImportError(str(e) + "- required module not found")
except ImportError, e:
raise ImportError (str(e) + "- required module not found")
class board(eeprom_tlvinfo.TlvInfoDecoder):

View File

@ -1,3 +1,5 @@
#!/usr/bin/env python
#############################################################################
# Celestica
#
@ -12,8 +14,7 @@ import subprocess
try:
from sonic_psu.psu_base import PsuBase
except ImportError as e:
raise ImportError(str(e) + "- required module not found")
raise ImportError (str(e) + "- required module not found")
class PsuUtil(PsuBase):
"""Platform-specific PSUutil class"""
@ -43,6 +44,7 @@ class PsuUtil(PsuBase):
status = 1
return status == 1
def get_psu_presence(self, index):
"""
Retrieves the presence status of power supply unit (PSU) defined
@ -56,3 +58,4 @@ class PsuUtil(PsuBase):
status = 1
return status == 1

View File

@ -32,7 +32,7 @@ class SfpUtil(SfpUtilBase):
@property
def qsfp_ports(self):
return list(range(self.QSFP_PORT_START, self.QSFP_PORT_END+1))
return range(self.QSFP_PORT_START, self.QSFP_PORT_END+1)
@property
def port_to_eeprom_mapping(self):
@ -59,7 +59,7 @@ class SfpUtil(SfpUtilBase):
try:
reg_file = open("/sys/devices/platform/ms200i_cpld/qsfp_modprs")
except IOError as e:
print("Error: unable to open file: %s" % str(e))
print "Error: unable to open file: %s" % str(e)
return False
content = reg_file.readline().rstrip()
@ -90,7 +90,7 @@ class SfpUtil(SfpUtilBase):
try:
reg_file = open("/sys/devices/platform/ms200i_cpld/qsfp_lpmode")
except IOError as e:
print("Error: unable to open file: %s" % str(e))
print "Error: unable to open file: %s" % str(e)
content = reg_file.readline().rstrip()
@ -120,7 +120,7 @@ class SfpUtil(SfpUtilBase):
try:
reg_file = open("/sys/devices/platform/ms200i_cpld/qsfp_lpmode", "r+")
except IOError as e:
print("Error: unable to open file: %s" % str(e))
print "Error: unable to open file: %s" % str(e)
return False
content = reg_file.readline().rstrip()
@ -162,7 +162,7 @@ class SfpUtil(SfpUtilBase):
try:
reg_file = open(QSFP_RESET_REGISTER_DEVICE_FILE, "r+")
except IOError as e:
print("Error: unable to open file: %s" % str(e))
print "Error: unable to open file: %s" % str(e)
return False
content = reg_file.readline().rstrip()
@ -194,7 +194,7 @@ class SfpUtil(SfpUtilBase):
try:
reg_file = open(QSFP_RESET_REGISTER_DEVICE_FILE, "w")
except IOError as e:
print("Error: unable to open file: %s" % str(e))
print "Error: unable to open file: %s" % str(e)
return False
reg_value = reg_value | mask

View File

@ -1,3 +1,5 @@
{
"skip_ledd": true
"skip_ledd": true,
"skip_psud": true,
"skip_thermalctld": true
}

View File

@ -0,0 +1 @@
t1

View File

@ -9,19 +9,20 @@ debs/{{ deb }}{{' '}}
{%- endfor -%}
debs/
RUN dpkg -P syncd
RUN apt-get purge -y syncd
## Pre-install the fundamental packages
RUN apt-get update \
&& apt-get -y install \
net-tools \
python-pip \
python-setuptools \
build-essential \
libssl-dev \
libffi-dev \
python-dev \
libpython2.7 \
libjansson4 \
libyaml-dev \
wget \
cmake \
libqt5core5a \
@ -43,9 +44,8 @@ RUN wget https://github.com/nanomsg/nanomsg/archive/1.0.0.tar.gz \
&& cd .. \
&& rm -fr nanomsg-1.0.0 \
&& rm -f 1.0.0.tar.gz \
&& 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 \

View File

@ -10,10 +10,8 @@ $(DOCKER_SYNCD_BASE)_DBG_DEPENDS += $(SYNCD_DBG) \
$(LIBSAIMETADATA_DBG) \
$(LIBSAIREDIS_DBG)
SONIC_STRETCH_DOCKERS += $(DOCKER_SYNCD_BASE)
SONIC_STRETCH_DBG_DOCKERS += $(DOCKER_SYNCD_BASE_DBG)
$(DOCKER_SYNCD_BASE)_VERSION = 1.0.0
$(DOCKER_SYNCD_BASE)_PACKAGE_NAME = syncd
$(DOCKER_SYNCD_BASE)_MACHINE = innovium
$(DOCKER_SYNCD_BASE)_RUN_OPT += -v /host/warmboot:/var/warmboot

View File

@ -1,4 +1,4 @@
FROM docker-config-engine-stretch
FROM docker-config-engine-buster
ARG docker_container_name
@ -17,8 +17,8 @@ debs/
# Needed for Innovium Debug Shell
RUN apt-get install -y net-tools
RUN apt-get install -y libpython2.7
RUN apt-get install -y libjansson4
RUN apt-get install -y libyaml-dev
RUN dpkg -i \
{% for deb in docker_syncd_invm_debs.split(' ') -%}

View File

@ -5,8 +5,11 @@ $(SONIC_ONE_IMAGE)_MACHINE = innovium
$(SONIC_ONE_IMAGE)_INSTALLS += $(SYSTEMD_SONIC_GENERATOR)
$(SONIC_ONE_IMAGE)_IMAGE_TYPE = onie
$(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(CEL_MIDSTONE_200I_PLATFORM_MODULE)
$(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(DELTA_PLATFORM_MODULE)
$(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(NETBERG_AURORA_715_PLATFORM_MODULE)
$(SONIC_ONE_IMAGE)_INSTALLS += $(INVM_DRV)
$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_IMAGES)
ifeq ($(INSTALL_DEBUG_TOOLS),y)
$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_DBG_IMAGES)
$(SONIC_ONE_IMAGE)_DOCKERS += $(filter-out $(patsubst %-$(DBG_IMAGE_MARK).gz,%.gz, $(SONIC_INSTALL_DOCKER_DBG_IMAGES)), $(SONIC_INSTALL_DOCKER_IMAGES))
else
$(SONIC_ONE_IMAGE)_DOCKERS = $(SONIC_INSTALL_DOCKER_IMAGES)
endif
SONIC_INSTALLERS += $(SONIC_ONE_IMAGE)

View File

@ -1,12 +0,0 @@
# Delta Platform modules
DELTA_ETC032IF_PLATFORM_MODULE_VERSION = 1.1
export DELTA_ETC032IF_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
SONIC_DPKG_DEBS += $(DELTA_PLATFORM_MODULE)

View File

@ -1,13 +0,0 @@
# Netberg Platform modules
NETBERG_AURORA_715_PLATFORM_MODULE_VERSION = 1.0.0
export NETBERG_AURORA_715_PLATFORM_MODULE_VERSION
NETBERG_AURORA_715_PLATFORM_MODULE = sonic-platform-netberg-aurora-715_$(NETBERG_AURORA_715_PLATFORM_MODULE_VERSION)_amd64.deb
$(NETBERG_AURORA_715_PLATFORM_MODULE)_SRC_PATH = $(PLATFORM_PATH)/sonic-platform-modules-netberg
$(NETBERG_AURORA_715_PLATFORM_MODULE)_DEPENDS += $(LINUX_HEADERS) $(LINUX_HEADERS_COMMON)
$(NETBERG_AURORA_715_PLATFORM_MODULE)_PLATFORM = x86_64-netberg_aurora_715-r0
SONIC_DPKG_DEBS += $(NETBERG_AURORA_715_PLATFORM_MODULE)
SONIC_STRETCH_DEBS +=$(NETBERG_AURORA_715_PLATFORM_MODULE)

View File

@ -1,7 +1,5 @@
include $(PLATFORM_PATH)/invm-sai.mk
include $(PLATFORM_PATH)/platform-modules-cel.mk
include $(PLATFORM_PATH)/platform-modules-delta.mk
include $(PLATFORM_PATH)/platform-modules-netberg.mk
include $(PLATFORM_PATH)/docker-syncd-invm.mk
include $(PLATFORM_PATH)/docker-syncd-invm-rpc.mk
include $(PLATFORM_PATH)/one-image.mk

View File

@ -7,5 +7,4 @@ Standards-Version: 3.9.3
Package: platform-modules-midstone-200i
Architecture: amd64
Depends: linux-image-4.19.0-12-2-amd64-unsigned
Description: kernel modules for platform devices

View File

@ -94,7 +94,7 @@ static int mc24lc64t_probe(struct i2c_client *client,
sizeof(struct mc24lc64t_data), GFP_KERNEL)))
return -ENOMEM;
drvdata->fake_client = i2c_new_dummy(client->adapter, client->addr + 1);
drvdata->fake_client = i2c_new_dummy_device(client->adapter, client->addr + 1);
if (!drvdata->fake_client)
return -ENOMEM;

View File

@ -1,16 +0,0 @@
Copyright (C) 2016 Microsoft, Inc
Copyright (C) 2017 Delta Networks, Inc.
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.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

View File

@ -1,381 +0,0 @@
/*
* <bsn.cl fy=2013 v=gpl>
*
* Copyright (C) 2017 Delta Networks, Inc.
*
* This program is free software; you can redistribute it
* and/or modify it under the terms ofthe GNU General Public License as
* published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version.
*
*
* </bsn.cl>
*
*
* A hwmon driver for the SMSC EMC2305 fan controller
* Complete datasheet is available (6/2013) at:
* http://www.smsc.com/media/Downloads_Public/Data_Sheets/2305.pdf
*/
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/hwmon.h>
#include <linux/hwmon-sysfs.h>
#include <linux/err.h>
static ssize_t set_pwm(struct device *dev, struct device_attribute *devattr,
const char *buf, size_t count);
static ssize_t show_pwm(struct device *dev, struct device_attribute *devattr,
char *buf);
static ssize_t set_fan(struct device *dev, struct device_attribute *devattr,
const char *buf, size_t count);
static ssize_t show_fan(struct device *dev, struct device_attribute *devattr,
char *buf);
static ssize_t set_fan_percentage(struct device *dev, struct device_attribute *devattr,
const char *buf, size_t count);
static ssize_t show_fan_percentage(struct device *dev, struct device_attribute * devattr,
char *buf);
static const unsigned short normal_i2c[] = { 0x2C, 0x2D, 0x2E, 0x2F, 0x4C,
0x4D, I2C_CLIENT_END
};
#define EMC2305_REG_DEVICE 0xFD
#define EMC2305_REG_VENDOR 0xFE
//#define FAN_MINIMUN 0x33 /*20%*/
#define FAN_MINIMUN 0x0 /*0%*/
#define FAN_RPM_BASED 0xAB
#define EMC2305_REG_FAN_DRIVE(n) (0x30 + 0x10 * n)
#define EMC2305_REG_FAN_MIN_DRIVE(n) (0x38 + 0x10 * n)
#define EMC2305_REG_FAN_TACH(n) (0x3E + 0x10 * n)
#define EMC2305_REG_FAN_CONF(n) (0x32 + 0x10 * n)
#define EMC2305_REG_FAN_REAR_H_RPM(n) (0x3D + 0x10 * n)
#define EMC2305_REG_FAN_REAR_L_RPM(n) (0x3C + 0x10 * n)
#define EMC2305_DEVICE 0x34
#define EMC2305_VENDOR 0x5D
#define MAX_FAN_SPEED 23000
struct emc2305_data
{
struct device *hwmon_dev;
struct attribute_group attrs;
struct mutex lock;
};
static int emc2305_probe(struct i2c_client *client,
const struct i2c_device_id *id);
static int emc2305_detect(struct i2c_client *client,
struct i2c_board_info *info);
static int emc2305_remove(struct i2c_client *client);
static const struct i2c_device_id emc2305_id[] =
{
{ "emc2305", 0 },
{ }
};
MODULE_DEVICE_TABLE(i2c, emc2305_id);
static struct i2c_driver emc2305_driver =
{
.class = I2C_CLASS_HWMON,
.driver = {
.name = "emc2305",
},
.probe = emc2305_probe,
.remove = emc2305_remove,
.id_table = emc2305_id,
.detect = emc2305_detect,
.address_list = normal_i2c,
};
static SENSOR_DEVICE_ATTR(fan1_input, S_IWUSR | S_IRUGO, show_fan, set_fan, 0);
static SENSOR_DEVICE_ATTR(fan2_input, S_IWUSR | S_IRUGO, show_fan, set_fan, 1);
static SENSOR_DEVICE_ATTR(fan3_input, S_IWUSR | S_IRUGO, show_fan, set_fan, 2);
static SENSOR_DEVICE_ATTR(fan4_input, S_IWUSR | S_IRUGO, show_fan, set_fan, 3);
static SENSOR_DEVICE_ATTR(fan5_input, S_IWUSR | S_IRUGO, show_fan, set_fan, 4);
static SENSOR_DEVICE_ATTR(fan1_input_percentage, S_IWUSR | S_IRUGO, show_fan_percentage, set_fan_percentage, 0);
static SENSOR_DEVICE_ATTR(fan2_input_percentage, S_IWUSR | S_IRUGO, show_fan_percentage, set_fan_percentage, 1);
static SENSOR_DEVICE_ATTR(fan3_input_percentage, S_IWUSR | S_IRUGO, show_fan_percentage, set_fan_percentage, 2);
static SENSOR_DEVICE_ATTR(fan4_input_percentage, S_IWUSR | S_IRUGO, show_fan_percentage, set_fan_percentage, 3);
static SENSOR_DEVICE_ATTR(fan5_input_percentage, S_IWUSR | S_IRUGO, show_fan_percentage, set_fan_percentage, 4);
static SENSOR_DEVICE_ATTR(pwm1, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 0);
static SENSOR_DEVICE_ATTR(pwm2, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 1);
static SENSOR_DEVICE_ATTR(pwm3, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 2);
static SENSOR_DEVICE_ATTR(pwm4, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 3);
static SENSOR_DEVICE_ATTR(pwm5, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 4);
static struct attribute *emc2305_attr[] =
{
&sensor_dev_attr_fan1_input.dev_attr.attr,
&sensor_dev_attr_fan2_input.dev_attr.attr,
&sensor_dev_attr_fan3_input.dev_attr.attr,
&sensor_dev_attr_fan4_input.dev_attr.attr,
&sensor_dev_attr_fan5_input.dev_attr.attr,
&sensor_dev_attr_fan1_input_percentage.dev_attr.attr,
&sensor_dev_attr_fan2_input_percentage.dev_attr.attr,
&sensor_dev_attr_fan3_input_percentage.dev_attr.attr,
&sensor_dev_attr_fan4_input_percentage.dev_attr.attr,
&sensor_dev_attr_fan5_input_percentage.dev_attr.attr,
&sensor_dev_attr_pwm1.dev_attr.attr,
&sensor_dev_attr_pwm2.dev_attr.attr,
&sensor_dev_attr_pwm3.dev_attr.attr,
&sensor_dev_attr_pwm4.dev_attr.attr,
&sensor_dev_attr_pwm5.dev_attr.attr,
NULL
};
static ssize_t show_fan_percentage(struct device *dev, struct device_attribute * devattr,
char *buf)
{
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
struct i2c_client *client = to_i2c_client(dev);
struct emc2305_data *data = i2c_get_clientdata(client);
int val;
mutex_lock(&data->lock);
val = i2c_smbus_read_word_swapped(client,
EMC2305_REG_FAN_TACH(attr->index));
mutex_unlock(&data->lock);
/* Left shift 3 bits for showing correct RPM */
val = val >> 3;
if ((int)(3932160 * 2 / (val > 0 ? val : 1) == 960))return sprintf(buf, "%d\n", 0);
return sprintf(buf, "%d\n", (int)(3932160 * 2 / (val > 0 ? val : 1) * 100 / MAX_FAN_SPEED));
}
static ssize_t set_fan_percentage(struct device *dev, struct device_attribute *devattr,
const char *buf, size_t count)
{
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
struct i2c_client *client = to_i2c_client(dev);
struct emc2305_data *data = i2c_get_clientdata(client);
unsigned long hsb, lsb;
unsigned long tech;
unsigned long val;
int ret;
ret = kstrtoul(buf, 10, &val);
if (ret)
{
return ret;
}
if (val > 100)
{
return -EINVAL;
}
if (val <= 5)
{
hsb = 0xff; /*high bit*/
lsb = 0xe0; /*low bit*/
}
else
{
val = val * 230;
tech = (3932160 * 2) / (val > 0 ? val : 1);
hsb = (uint8_t)(((tech << 3) >> 8) & 0x0ff);
lsb = (uint8_t)((tech << 3) & 0x0f8);
}
mutex_lock(&data->lock);
i2c_smbus_write_byte_data(client, EMC2305_REG_FAN_REAR_H_RPM(attr->index), hsb);
i2c_smbus_write_byte_data(client, EMC2305_REG_FAN_REAR_L_RPM(attr->index), lsb);
mutex_unlock(&data->lock);
return count;
}
static ssize_t show_fan(struct device *dev, struct device_attribute *devattr,
char *buf)
{
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
struct i2c_client *client = to_i2c_client(dev);
struct emc2305_data *data = i2c_get_clientdata(client);
int val;
mutex_lock(&data->lock);
val = i2c_smbus_read_word_swapped(client,
EMC2305_REG_FAN_TACH(attr->index));
mutex_unlock(&data->lock);
/* Left shift 3 bits for showing correct RPM */
val = val >> 3;
return sprintf(buf, "%d\n", 3932160 * 2 / (val > 0 ? val : 1));
}
static ssize_t set_fan(struct device *dev, struct device_attribute *devattr,
const char *buf, size_t count)
{
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
struct i2c_client *client = to_i2c_client(dev);
struct emc2305_data *data = i2c_get_clientdata(client);
unsigned long hsb, lsb;
unsigned long tech;
unsigned long val;
int ret;
ret = kstrtoul(buf, 10, &val);
if (ret)
{
return ret;
}
if (val > 23000)
{
return -EINVAL;
}
if (val <= 960)
{
hsb = 0xff; /*high bit*/
lsb = 0xe0; /*low bit*/
}
else
{
tech = (3932160 * 2) / (val > 0 ? val : 1);
hsb = (uint8_t)(((tech << 3) >> 8) & 0x0ff);
lsb = (uint8_t)((tech << 3) & 0x0f8);
}
mutex_lock(&data->lock);
i2c_smbus_write_byte_data(client, EMC2305_REG_FAN_REAR_H_RPM(attr->index), hsb);
i2c_smbus_write_byte_data(client, EMC2305_REG_FAN_REAR_L_RPM(attr->index), lsb);
mutex_unlock(&data->lock);
return count;
}
static ssize_t show_pwm(struct device *dev, struct device_attribute *devattr,
char *buf)
{
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
struct i2c_client *client = to_i2c_client(dev);
struct emc2305_data *data = i2c_get_clientdata(client);
int val;
mutex_lock(&data->lock);
val = i2c_smbus_read_byte_data(client,
EMC2305_REG_FAN_DRIVE(attr->index));
mutex_unlock(&data->lock);
return sprintf(buf, "%d\n", val);
}
static ssize_t set_pwm(struct device *dev, struct device_attribute *devattr,
const char *buf, size_t count)
{
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
struct i2c_client *client = to_i2c_client(dev);
struct emc2305_data *data = i2c_get_clientdata(client);
unsigned long val;
int ret;
ret = kstrtoul(buf, 10, &val);
if (ret)
{
return ret;
}
if (val > 255)
{
return -EINVAL;
}
mutex_lock(&data->lock);
i2c_smbus_write_byte_data(client,
EMC2305_REG_FAN_DRIVE(attr->index),
val);
mutex_unlock(&data->lock);
return count;
}
static int emc2305_detect(struct i2c_client *client,
struct i2c_board_info *info)
{
struct i2c_adapter *adapter = client->adapter;
int vendor, device;
if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA |
I2C_FUNC_SMBUS_WORD_DATA))
{
return -ENODEV;
}
vendor = i2c_smbus_read_byte_data(client, EMC2305_REG_VENDOR);
if (vendor != EMC2305_VENDOR)
{
return -ENODEV;
}
device = i2c_smbus_read_byte_data(client, EMC2305_REG_DEVICE);
if (device != EMC2305_DEVICE)
{
return -ENODEV;
}
strlcpy(info->type, "emc2305", I2C_NAME_SIZE);
return 0;
}
static int emc2305_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
struct emc2305_data *data;
int err;
int i;
data = devm_kzalloc(&client->dev, sizeof(struct emc2305_data),
GFP_KERNEL);
if (!data)
{
return -ENOMEM;
}
i2c_set_clientdata(client, data);
mutex_init(&data->lock);
dev_info(&client->dev, "%s chip found\n", client->name);
data->attrs.attrs = emc2305_attr;
err = sysfs_create_group(&client->dev.kobj, &data->attrs);
if (err)
{
return err;
}
data->hwmon_dev = hwmon_device_register(&client->dev);
if (IS_ERR(data->hwmon_dev))
{
err = PTR_ERR(data->hwmon_dev);
goto exit_remove;
}
for (i = 0; i < 5; i++)
{
/* set minimum drive to 0% */
i2c_smbus_write_byte_data(client, EMC2305_REG_FAN_MIN_DRIVE(i), FAN_MINIMUN);
i2c_smbus_write_byte_data(client, EMC2305_REG_FAN_CONF(i), FAN_RPM_BASED);
}
return 0;
exit_remove:
sysfs_remove_group(&client->dev.kobj, &data->attrs);
return err;
}
static int emc2305_remove(struct i2c_client *client)
{
struct emc2305_data *data = i2c_get_clientdata(client);
hwmon_device_unregister(data->hwmon_dev);
sysfs_remove_group(&client->dev.kobj, &data->attrs);
return 0;
}
module_i2c_driver(emc2305_driver);
MODULE_AUTHOR("Neal Tai<neal.tai@deltaww.com>");
MODULE_DESCRIPTION("SMSC EMC2305 fan controller driver");
MODULE_LICENSE("GPL");

View File

@ -1,5 +0,0 @@
sonic-delta-platform-modules (1.1) unstable; urgency=low
* Initial release
-- Neal Tai <neal.tai@deltaww.com> Fri, 21 APR 2017 11:11:11 -0800

View File

@ -1,13 +0,0 @@
Source: sonic-delta-platform-modules
Section: main
Priority: extra
Maintainer: Neal Tai <neal.tai@deltaww.com>
Build-Depends: debhelper (>= 8.0.0), bzip2
Standards-Version: 3.9.3
Package: platform-modules-et-c032if
Architecture: amd64
Depends: linux-image-4.19.0-12-2-amd64-unsigned
Description: kernel modules for platform devices such as fan, led, sfp

View File

@ -1,39 +0,0 @@
#!/bin/bash
### BEGIN INIT INFO
# Provides: setup-board
# Required-Start:
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: S
# Default-Stop: 0 6
# Short-Description: Setup et-c032if board.
### END INIT INFO
case "$1" in
start)
echo -n "Setting up board... "
modprobe optoe
modprobe delta_et-c032if_platform
/usr/local/bin/et-c032if_platform_init.sh
echo "done."
;;
stop)
echo "done."
;;
force-reload|restart)
echo "Not supported"
;;
*)
echo "Usage: /etc/init.d/platform-modules-et-c032if.init {start|stop}"
exit 1
;;
esac
exit 0

View File

@ -1,3 +0,0 @@
et-c032if/cfg/et-c032if-modules.conf etc/modules-load.d
et-c032if/scripts/et-c032if_platform_init.sh usr/local/bin
systemd/platform-modules-et-c032if.service lib/systemd/system

View File

@ -1,33 +0,0 @@
#!/usr/bin/make -f
export INSTALL_MOD_DIR:=extra
KVERSION ?= $(shell uname -r)
KERNEL_SRC := /lib/modules/$(KVERSION)
MOD_SRC_DIR:= $(shell pwd)
MODULE_DIRS:= et-c032if
%:
dh $@ --with=systemd
override_dh_auto_build:
(for mod in $(MODULE_DIRS); do \
make -C $(KERNEL_SRC)/build M=$(MOD_SRC_DIR)/$${mod}/modules; \
done)
override_dh_auto_install:
(for mod in $(MODULE_DIRS); do \
dh_installdirs -pplatform-modules-$${mod} \
$(KERNEL_SRC)/$(INSTALL_MOD_DIR); \
cp $(MOD_SRC_DIR)/$${mod}/modules/*.ko \
debian/platform-modules-$${mod}/$(KERNEL_SRC)/$(INSTALL_MOD_DIR); \
done)
override_dh_usrlocal:
override_dh_clean:
dh_clean
(for mod in $(MODULE_DIRS); do \
make -C $(KERNEL_SRC)/build M=$(MOD_SRC_DIR)/$${mod}/modules clean; \
done)

View File

@ -1,13 +0,0 @@
# /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

View File

@ -1,2 +0,0 @@
obj-m := delta_et-c032if_platform.o

View File

@ -1,9 +0,0 @@
#!/bin/bash
#platform init script for Delta et-c032if
exit 0

Some files were not shown because too many files have changed in this diff Show More