Add Marvell platform support for dbmvt9180

This commit is contained in:
builder 2024-02-13 01:01:31 -08:00
parent 34bdfc8b39
commit 55d19fef3f
26 changed files with 2228 additions and 2 deletions

3
.gitmodules vendored
View File

@ -121,3 +121,6 @@
[submodule "platform/marvell-arm64/sonic-platform-marvell"]
path = platform/marvell-arm64/sonic-platform-marvell
url = https://github.com/Marvell-switching/sonic-platform-arm64.git
[submodule "platform/innovium/sonic-platform-marvell"]
path = platform/innovium/sonic-platform-marvell
url = https://github.com/Marvell-switching/sonic-platform-marvell

View File

@ -0,0 +1,162 @@
{# Default values which will be used if no actual configuration 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": "158630302",
"type": "ingress",
"mode": "dynamic",
"xoff": "71577600"
},
"lossy_pool": {
"size": "56012386",
"type": "egress",
"mode": "dynamic",
"xoff": "0"
},
"egress_lossless_pool": {
"size": "214642688",
"type": "egress",
"mode": "static"
}
},
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"ingress_lossless_pool",
"xoff":"135520",
"size":"1518",
"dynamic_th":"1",
"xon_offset":"9408"
},
"egress_lossless_profile": {
"pool":"ingress_lossless_pool",
"size":"0",
"static_th":"22798336"
},
"ingress_lossy_profile": {
"pool":"lossy_pool",
"size":"0",
"static_th":"22798336"
},
"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

@ -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": "182386688",
"type": "egress",
"mode": "dynamic",
"xoff": "0"
}
},
"BUFFER_PROFILE": {
"ingress_lossy_profile": {
"pool":"lossy_pool",
"size":"0",
"static_th":"22798336"
},
"egress_lossy_profile": {
"pool":"lossy_pool",
"size":"1518",
"dynamic_th":"2"
}
},
"BUFFER_PG": {
{% for port in port_names_list %}
"{{ port }}|0-7": {
"profile" : "ingress_lossy_profile"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"BUFFER_QUEUE": {
{% for port in port_names_list %}
"{{ port }}|0-7": {
"profile" : "egress_lossy_profile"
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}

View File

@ -0,0 +1,162 @@
{# Default values which will be used if no actual configuration 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": "158630302",
"type": "ingress",
"mode": "dynamic",
"xoff": "71577600"
},
"lossy_pool": {
"size": "56012386",
"type": "egress",
"mode": "dynamic",
"xoff": "0"
},
"egress_lossless_pool": {
"size": "214642688",
"type": "egress",
"mode": "static"
}
},
"BUFFER_PROFILE": {
"ingress_lossless_profile": {
"pool":"ingress_lossless_pool",
"xoff":"135520",
"size":"1518",
"dynamic_th":"1",
"xon_offset":"9408"
},
"egress_lossless_profile": {
"pool":"ingress_lossless_pool",
"size":"0",
"static_th":"22798336"
},
"ingress_lossy_profile": {
"pool":"lossy_pool",
"size":"0",
"static_th":"22798336"
},
"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

@ -0,0 +1,773 @@
ifcs:
options:
log_level: "error"
nodes:
- node_id: "0"
options:
sku: "configs/sku/teralynx.MVTX9180"
netdev:
- auto_create: "no"
multi_interface: "yes"
buffer_management_mode: "api_driven"
pt01: "256"
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"
led_cfg_sck_rate: "0x5"
led_refresh_precliff_timer: "0x18eec2"
led_refresh_cliff_timer: "0x15e"
led_cfg_pic_stream_mode: "1"
led_refresh_tmr_ctl_enable: "1"
skip_pll_check: "false"
sys_clk: "1800"
ifc_clk: "1800"
mac_clk: "1600"
txring:
- txring_id: "0"
desc_count: "1024"
prio: "1"
netdev: "true"
- txring_id: "1"
desc_count: "1024"
prio: "1"
netdev: "true"
- txring_id: "2"
desc_count: "1024"
prio: "1"
netdev: "true"
- txring_id: "3"
desc_count: "1024"
prio: "1"
netdev: "true"
rxring:
- rxring_id: "0"
desc_count: "1024"
prio: "1"
netdev: "true"
queues: "0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44"
- rxring_id: "1"
desc_count: "1024"
prio: "1"
netdev: "true"
queues: "1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45"
- rxring_id: "2"
desc_count: "1024"
prio: "1"
netdev: "true"
queues: "2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46"
- rxring_id: "3"
desc_count: "1024"
prio: "1"
netdev: "true"
queues: "3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47"
devports:
- id: "0"
sysport: "1000"
type: "cpu"
- fec: "KPFEC"
id: "489"
lanes: "0:4"
serdes_group: "61"
speed: "100G"
sysport: "489"
type: "eth"
- fec: "KPFEC"
id: "505"
lanes: "0:4"
serdes_group: "63"
speed: "100G"
sysport: "505"
type: "eth"
- fec: "KPFEC"
id: "441"
lanes: "0:4"
serdes_group: "55"
speed: "100G"
sysport: "441"
type: "eth"
- fec: "KPFEC"
id: "425"
lanes: "0:4"
serdes_group: "53"
speed: "100G"
sysport: "425"
type: "eth"
- fec: "KPFEC"
id: "41"
lanes: "0:4"
serdes_group: "5"
speed: "100G"
sysport: "41"
type: "eth"
- fec: "KPFEC"
id: "49"
lanes: "0:4"
serdes_group: "6"
speed: "100G"
sysport: "49"
type: "eth"
- fec: "KPFEC"
id: "153"
lanes: "0:4"
serdes_group: "19"
speed: "100G"
sysport: "153"
type: "eth"
- fec: "KPFEC"
id: "137"
lanes: "0:4"
serdes_group: "17"
speed: "100G"
sysport: "137"
type: "eth"
- fec: "KPFEC"
id: "1"
lanes: "0:4"
serdes_group: "0"
speed: "100G"
sysport: "1"
type: "eth"
- fec: "KPFEC"
id: "17"
lanes: "0:4"
serdes_group: "2"
speed: "100G"
sysport: "17"
type: "eth"
- fec: "KPFEC"
id: "81"
lanes: "0:4"
serdes_group: "10"
speed: "100G"
sysport: "81"
type: "eth"
- fec: "KPFEC"
id: "65"
lanes: "0:4"
serdes_group: "8"
speed: "100G"
sysport: "65"
type: "eth"
- fec: "KPFEC"
id: "97"
lanes: "0:4"
serdes_group: "12"
speed: "100G"
sysport: "97"
type: "eth"
- fec: "KPFEC"
id: "113"
lanes: "0:4"
serdes_group: "14"
speed: "100G"
sysport: "113"
type: "eth"
- fec: "KPFEC"
id: "193"
lanes: "0:4"
serdes_group: "24"
speed: "100G"
sysport: "193"
type: "eth"
- fec: "KPFEC"
id: "177"
lanes: "0:4"
serdes_group: "22"
speed: "100G"
sysport: "177"
type: "eth"
- fec: "KPFEC"
id: "33"
lanes: "0:4"
serdes_group: "4"
speed: "100G"
sysport: "33"
type: "eth"
- fec: "KPFEC"
id: "57"
lanes: "0:4"
serdes_group: "7"
speed: "100G"
sysport: "57"
type: "eth"
- fec: "KPFEC"
id: "161"
lanes: "0:4"
serdes_group: "20"
speed: "100G"
sysport: "161"
type: "eth"
- fec: "KPFEC"
id: "129"
lanes: "0:4"
serdes_group: "16"
speed: "100G"
sysport: "129"
type: "eth"
- fec: "KPFEC"
id: "217"
lanes: "0:4"
serdes_group: "27"
speed: "100G"
sysport: "217"
type: "eth"
- fec: "KPFEC"
id: "241"
lanes: "0:4"
serdes_group: "30"
speed: "100G"
sysport: "241"
type: "eth"
- fec: "KPFEC"
id: "233"
lanes: "0:4"
serdes_group: "29"
speed: "100G"
sysport: "233"
type: "eth"
- fec: "KPFEC"
id: "209"
lanes: "0:4"
serdes_group: "26"
speed: "100G"
sysport: "209"
type: "eth"
- fec: "KPFEC"
id: "105"
lanes: "0:4"
serdes_group: "13"
speed: "100G"
sysport: "105"
type: "eth"
- fec: "KPFEC"
id: "121"
lanes: "0:4"
serdes_group: "15"
speed: "100G"
sysport: "121"
type: "eth"
- fec: "KPFEC"
id: "169"
lanes: "0:4"
serdes_group: "21"
speed: "100G"
sysport: "169"
type: "eth"
- fec: "KPFEC"
id: "145"
lanes: "0:4"
serdes_group: "18"
speed: "100G"
sysport: "145"
type: "eth"
- fec: "KPFEC"
id: "265"
lanes: "0:4"
serdes_group: "33"
speed: "100G"
sysport: "265"
type: "eth"
- fec: "KPFEC"
id: "289"
lanes: "0:4"
serdes_group: "36"
speed: "100G"
sysport: "289"
type: "eth"
- fec: "KPFEC"
id: "297"
lanes: "0:4"
serdes_group: "37"
speed: "100G"
sysport: "297"
type: "eth"
- fec: "KPFEC"
id: "273"
lanes: "0:4"
serdes_group: "34"
speed: "100G"
sysport: "273"
type: "eth"
- fec: "KPFEC"
id: "225"
lanes: "0:4"
serdes_group: "28"
speed: "100G"
sysport: "225"
type: "eth"
- fec: "KPFEC"
id: "249"
lanes: "0:4"
serdes_group: "31"
speed: "100G"
sysport: "249"
type: "eth"
- fec: "KPFEC"
id: "201"
lanes: "0:4"
serdes_group: "25"
speed: "100G"
sysport: "201"
type: "eth"
- fec: "KPFEC"
id: "185"
lanes: "0:4"
serdes_group: "23"
speed: "100G"
sysport: "185"
type: "eth"
- fec: "KPFEC"
id: "393"
lanes: "0:4"
serdes_group: "49"
speed: "100G"
sysport: "393"
type: "eth"
- fec: "KPFEC"
id: "409"
lanes: "0:4"
serdes_group: "51"
speed: "100G"
sysport: "409"
type: "eth"
- fec: "KPFEC"
id: "329"
lanes: "0:4"
serdes_group: "41"
speed: "100G"
sysport: "329"
type: "eth"
- fec: "KPFEC"
id: "313"
lanes: "0:4"
serdes_group: "39"
speed: "100G"
sysport: "313"
type: "eth"
- fec: "KPFEC"
id: "257"
lanes: "0:4"
serdes_group: "32"
speed: "100G"
sysport: "257"
type: "eth"
- fec: "KPFEC"
id: "281"
lanes: "0:4"
serdes_group: "35"
speed: "100G"
sysport: "281"
type: "eth"
- fec: "KPFEC"
id: "321"
lanes: "0:4"
serdes_group: "40"
speed: "100G"
sysport: "321"
type: "eth"
- fec: "KPFEC"
id: "305"
lanes: "0:4"
serdes_group: "38"
speed: "100G"
sysport: "305"
type: "eth"
- fec: "KPFEC"
id: "457"
lanes: "0:4"
serdes_group: "57"
speed: "100G"
sysport: "457"
type: "eth"
- fec: "KPFEC"
id: "465"
lanes: "0:4"
serdes_group: "58"
speed: "100G"
sysport: "465"
type: "eth"
- fec: "KPFEC"
id: "369"
lanes: "0:4"
serdes_group: "46"
speed: "100G"
sysport: "369"
type: "eth"
- fec: "KPFEC"
id: "353"
lanes: "0:4"
serdes_group: "44"
speed: "100G"
sysport: "353"
type: "eth"
- fec: "KPFEC"
id: "385"
lanes: "0:4"
serdes_group: "48"
speed: "100G"
sysport: "385"
type: "eth"
- fec: "KPFEC"
id: "401"
lanes: "0:4"
serdes_group: "50"
speed: "100G"
sysport: "401"
type: "eth"
- fec: "KPFEC"
id: "361"
lanes: "0:4"
serdes_group: "45"
speed: "100G"
sysport: "361"
type: "eth"
- fec: "KPFEC"
id: "337"
lanes: "0:4"
serdes_group: "42"
speed: "100G"
sysport: "337"
type: "eth"
- fec: "KPFEC"
id: "481"
lanes: "0:4"
serdes_group: "60"
speed: "100G"
sysport: "481"
type: "eth"
- fec: "KPFEC"
id: "497"
lanes: "0:4"
serdes_group: "62"
speed: "100G"
sysport: "497"
type: "eth"
- fec: "KPFEC"
id: "433"
lanes: "0:4"
serdes_group: "54"
speed: "100G"
sysport: "433"
type: "eth"
- fec: "KPFEC"
id: "417"
lanes: "0:4"
serdes_group: "52"
speed: "100G"
sysport: "417"
type: "eth"
- fec: "KPFEC"
id: "449"
lanes: "0:4"
serdes_group: "56"
speed: "100G"
sysport: "449"
type: "eth"
- fec: "KPFEC"
id: "473"
lanes: "0:4"
serdes_group: "59"
speed: "100G"
sysport: "473"
type: "eth"
- fec: "KPFEC"
id: "377"
lanes: "0:4"
serdes_group: "47"
speed: "100G"
sysport: "377"
type: "eth"
- fec: "KPFEC"
id: "345"
lanes: "0:4"
serdes_group: "43"
speed: "100G"
sysport: "345"
type: "eth"
- fec: "KPFEC"
id: "9"
lanes: "0:4"
serdes_group: "1"
speed: "100G"
sysport: "9"
type: "eth"
- fec: "KPFEC"
id: "25"
lanes: "0:4"
serdes_group: "3"
speed: "100G"
sysport: "25"
type: "eth"
- fec: "KPFEC"
id: "89"
lanes: "0:4"
serdes_group: "11"
speed: "100G"
sysport: "89"
type: "eth"
- fec: "KPFEC"
id: "73"
lanes: "0:4"
serdes_group: "9"
speed: "100G"
sysport: "73"
type: "eth"
isg:
- id: "0"
lane_swap: "74563102"
rx_polarity: "11000001"
tx_polarity: "00011100"
- id: "1"
lane_swap: "74563102"
rx_polarity: "01110111"
tx_polarity: "01111100"
- id: "2"
lane_swap: "20136547"
rx_polarity: "10001110"
tx_polarity: "01110011"
- id: "3"
lane_swap: "20136547"
rx_polarity: "10001100"
tx_polarity: "00101011"
- id: "4"
lane_swap: "74563102"
rx_polarity: "11000001"
tx_polarity: "00011100"
- id: "5"
lane_swap: "47563102"
rx_polarity: "00010111"
tx_polarity: "00111101"
- id: "6"
lane_swap: "02134567"
rx_polarity: "00101110"
tx_polarity: "01000000"
- id: "7"
lane_swap: "02134567"
rx_polarity: "00101110"
tx_polarity: "10010010"
- id: "8"
lane_swap: "67451302"
rx_polarity: "10100010"
tx_polarity: "10011110"
- id: "9"
lane_swap: "67453102"
rx_polarity: "10100010"
tx_polarity: "10111010"
- id: "10"
lane_swap: "20315476"
rx_polarity: "01101101"
tx_polarity: "10010001"
- id: "11"
lane_swap: "20315476"
rx_polarity: "10111111"
tx_polarity: "11010001"
- id: "12"
lane_swap: "76543120"
rx_polarity: "10100101"
tx_polarity: "11101000"
- id: "13"
lane_swap: "76543120"
rx_polarity: "10011110"
tx_polarity: "10100010"
- id: "14"
lane_swap: "02134567"
rx_polarity: "10011110"
tx_polarity: "11110101"
- id: "15"
lane_swap: "02134567"
rx_polarity: "11010001"
tx_polarity: "01101101"
- id: "16"
lane_swap: "67451302"
rx_polarity: "00101010"
tx_polarity: "01100011"
- id: "17"
lane_swap: "54760132"
rx_polarity: "01010100"
tx_polarity: "10010101"
- id: "18"
lane_swap: "54761032"
rx_polarity: "10101011"
tx_polarity: "01011000"
- id: "19"
lane_swap: "23016745"
rx_polarity: "00100000"
tx_polarity: "11111000"
- id: "20"
lane_swap: "20315476"
rx_polarity: "10000101"
tx_polarity: "11011111"
- id: "21"
lane_swap: "23016745"
rx_polarity: "11110100"
tx_polarity: "00010111"
- id: "22"
lane_swap: "54760132"
rx_polarity: "10001011"
tx_polarity: "11010101"
- id: "23"
lane_swap: "54761032"
rx_polarity: "11110100"
tx_polarity: "01011000"
- id: "24"
lane_swap: "23016745"
rx_polarity: "01110000"
tx_polarity: "10111000"
- id: "25"
lane_swap: "23016745"
rx_polarity: "10111011"
tx_polarity: "00000111"
- id: "26"
lane_swap: "02134567"
rx_polarity: "00010101"
tx_polarity: "11001001"
- id: "27"
lane_swap: "20314576"
rx_polarity: "11010110"
tx_polarity: "10110001"
- id: "28"
lane_swap: "20314576"
rx_polarity: "11110011"
tx_polarity: "10110001"
- id: "29"
lane_swap: "76453120"
rx_polarity: "01101101"
tx_polarity: "01001000"
- id: "30"
lane_swap: "67541302"
rx_polarity: "00110111"
tx_polarity: "11110101"
- id: "31"
lane_swap: "67541302"
rx_polarity: "01100111"
tx_polarity: "01000111"
- id: "32"
lane_swap: "67543120"
rx_polarity: "00011110"
tx_polarity: "11111000"
- id: "33"
lane_swap: "67543120"
rx_polarity: "10011010"
tx_polarity: "10011000"
- id: "34"
lane_swap: "67453102"
rx_polarity: "11011001"
tx_polarity: "10100001"
- id: "35"
lane_swap: "02134576"
rx_polarity: "01010101"
tx_polarity: "00110111"
- id: "36"
lane_swap: "02134576"
rx_polarity: "10100001"
tx_polarity: "11100110"
- id: "37"
lane_swap: "20315476"
rx_polarity: "11000100"
tx_polarity: "10001010"
- id: "38"
lane_swap: "23016745"
rx_polarity: "01100101"
tx_polarity: "11101111"
- id: "39"
lane_swap: "23017645"
rx_polarity: "10000101"
tx_polarity: "11111110"
- id: "40"
lane_swap: "54761032"
rx_polarity: "11011111"
tx_polarity: "00001101"
- id: "41"
lane_swap: "54761032"
rx_polarity: "00100100"
tx_polarity: "01001000"
- id: "42"
lane_swap: "23016745"
rx_polarity: "11010101"
tx_polarity: "01000000"
- id: "43"
lane_swap: "20315476"
rx_polarity: "10101101"
tx_polarity: "00010001"
- id: "44"
lane_swap: "23017645"
rx_polarity: "11010101"
tx_polarity: "11101011"
- id: "45"
lane_swap: "54761032"
rx_polarity: "00101111"
tx_polarity: "10110010"
- id: "46"
lane_swap: "54761032"
rx_polarity: "11111011"
tx_polarity: "01011101"
- id: "47"
lane_swap: "67451302"
rx_polarity: "00111000"
tx_polarity: "00010110"
- id: "48"
lane_swap: "02134567"
rx_polarity: "00011111"
tx_polarity: "01000101"
- id: "49"
lane_swap: "02134567"
rx_polarity: "00011110"
tx_polarity: "00001111"
- id: "50"
lane_swap: "76543120"
rx_polarity: "11101011"
tx_polarity: "10110000"
- id: "51"
lane_swap: "76543120"
rx_polarity: "10100100"
tx_polarity: "11010111"
- id: "52"
lane_swap: "20314576"
rx_polarity: "01000101"
tx_polarity: "01011101"
- id: "53"
lane_swap: "20315476"
rx_polarity: "01000101"
tx_polarity: "01011111"
- id: "54"
lane_swap: "67451302"
rx_polarity: "10011101"
tx_polarity: "11101011"
- id: "55"
lane_swap: "67451302"
rx_polarity: "10110000"
tx_polarity: "11101011"
- id: "56"
lane_swap: "02134567"
rx_polarity: "11100000"
tx_polarity: "10111010"
- id: "57"
lane_swap: "02134567"
rx_polarity: "10101110"
tx_polarity: "10111010"
- id: "58"
lane_swap: "47651320"
rx_polarity: "00110110"
tx_polarity: "10101000"
- id: "59"
lane_swap: "47651320"
rx_polarity: "00110110"
tx_polarity: "10101100"
- id: "60"
lane_swap: "02315674"
rx_polarity: "11010101"
tx_polarity: "01111110"
- id: "61"
lane_swap: "02315674"
rx_polarity: "11000100"
tx_polarity: "01011110"
- id: "62"
lane_swap: "47651320"
rx_polarity: "10010000"
tx_polarity: "11101110"
- id: "63"
lane_swap: "47651320"
rx_polarity: "10010110"
tx_polarity: "10100100"

View File

@ -0,0 +1,8 @@
IFCS_INIT_FILE : "/usr/share/sonic/hwsku/config_teralynx_MVTX9180_64x100G.yaml"
IFCS_SKU_FILE : "/usr/share/sonic/hwsku/teralynx.MVTX9180"
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,11 @@
#Queue Type
ISAI_PARAM_A000 : "0"
ISAI_PARAM_P0_0_LS : "2304 2304 2304 2304 2304 2304 2304 2304"
ISAI_PARAM_P0_1_LS : "1728 1608 1608 1584 1584 1584 1584 1584"
ISAI_PARAM_P0_1_ALS : "192 72 72 48 48 48 48 48"
ISAI_PARAM_P1_0_LS : "768 768 768 768 768 768 768 768"
ISAI_PARAM_P1_0_LL : "1536 1536 1536 1536 1536 1536 1536 1536"
ISAI_PARAM_P1_1_LS : "1344 1224 1224 1200 1200 1200 1200 1200"
ISAI_PARAM_P1_1_LL : "3138 3138 3138 3138 3138 3138 3138 3138"
ISAI_PARAM_P1_1_ALS : "192 72 72 48 48 48 48 48"
ISAI_PARAM_P1_1_ALL : "86 86 86 86 86 86 86 86"

View File

@ -0,0 +1,26 @@
# 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
800000 5m 1518 0 197536 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
800000 40m 1518 0 205520 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
800000 100m 1518 0 236688 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
800000 300m 1518 0 468640 1 9408

View File

@ -0,0 +1,65 @@
# name lanes alias fec index speed
Ethernet0 489,490,491,492 Eth1 rs 1 100000
Ethernet8 505,506,507,508 Eth2 rs 2 100000
Ethernet16 441,442,443,444 Eth3 rs 3 100000
Ethernet24 425,426,427,428 Eth4 rs 4 100000
Ethernet32 41,42,43,44 Eth5 rs 5 100000
Ethernet40 49,50,51,52 Eth6 rs 6 100000
Ethernet48 153,154,155,156 Eth7 rs 7 100000
Ethernet56 137,138,139,140 Eth8 rs 8 100000
Ethernet64 1,2,3,4 Eth9 rs 9 100000
Ethernet72 17,18,19,20 Eth10 rs 10 100000
Ethernet80 81,82,83,84 Eth11 rs 11 100000
Ethernet88 65,66,67,68 Eth12 rs 12 100000
Ethernet96 97,98,99,100 Eth13 rs 13 100000
Ethernet104 113,114,115,116 Eth14 rs 14 100000
Ethernet112 193,194,195,196 Eth15 rs 15 100000
Ethernet120 177,178,179,180 Eth16 rs 16 100000
Ethernet128 33,34,35,36 Eth17 rs 17 100000
Ethernet136 57,58,59,60 Eth18 rs 18 100000
Ethernet144 161,162,163,164 Eth19 rs 19 100000
Ethernet152 129,130,131,132 Eth20 rs 20 100000
Ethernet160 217,218,219,220 Eth21 rs 21 100000
Ethernet168 241,242,243,244 Eth22 rs 22 100000
Ethernet176 233,234,235,236 Eth23 rs 23 100000
Ethernet184 209,210,211,212 Eth24 rs 24 100000
Ethernet192 105,106,107,108 Eth25 rs 25 100000
Ethernet200 121,122,123,124 Eth26 rs 26 100000
Ethernet208 169,170,171,172 Eth27 rs 27 100000
Ethernet216 145,146,147,148 Eth28 rs 28 100000
Ethernet224 265,266,267,268 Eth29 rs 29 100000
Ethernet232 289,290,291,292 Eth30 rs 30 100000
Ethernet240 297,298,299,300 Eth31 rs 31 100000
Ethernet248 273,274,275,276 Eth32 rs 32 100000
Ethernet256 225,226,227,228 Eth33 rs 33 100000
Ethernet264 249,250,251,252 Eth34 rs 34 100000
Ethernet272 201,202,203,204 Eth35 rs 35 100000
Ethernet280 185,186,187,188 Eth36 rs 36 100000
Ethernet288 393,394,395,396 Eth37 rs 37 100000
Ethernet296 409,410,411,412 Eth38 rs 38 100000
Ethernet304 329,330,331,332 Eth39 rs 39 100000
Ethernet312 313,314,315,316 Eth40 rs 40 100000
Ethernet320 257,258,259,260 Eth41 rs 41 100000
Ethernet328 281,282,283,284 Eth42 rs 42 100000
Ethernet336 321,322,323,324 Eth43 rs 43 100000
Ethernet344 305,306,307,308 Eth44 rs 44 100000
Ethernet352 457,458,459,460 Eth45 rs 45 100000
Ethernet360 465,466,467,468 Eth46 rs 46 100000
Ethernet368 369,370,371,372 Eth47 rs 47 100000
Ethernet376 353,354,355,356 Eth48 rs 48 100000
Ethernet384 385,386,387,388 Eth49 rs 49 100000
Ethernet392 401,402,403,404 Eth50 rs 50 100000
Ethernet400 361,362,363,364 Eth51 rs 51 100000
Ethernet408 337,338,339,340 Eth52 rs 52 100000
Ethernet416 481,482,483,484 Eth53 rs 53 100000
Ethernet424 497,498,499,500 Eth54 rs 54 100000
Ethernet432 433,434,435,436 Eth55 rs 55 100000
Ethernet440 417,418,419,420 Eth56 rs 56 100000
Ethernet448 449,450,451,452 Eth57 rs 57 100000
Ethernet456 473,474,475,476 Eth58 rs 58 100000
Ethernet464 377,378,379,380 Eth59 rs 59 100000
Ethernet472 345,346,347,348 Eth60 rs 60 100000
Ethernet480 9,10,11,12 Eth61 rs 61 100000
Ethernet488 25,26,27,28 Eth62 rs 62 100000
Ethernet496 89,90,91,92 Eth63 rs 63 100000
Ethernet504 73,74,75,76 Eth64 rs 64 100000

View File

@ -0,0 +1,192 @@
{% 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"
}
},
"MAP_PFC_PRIORITY_TO_QUEUE": {
"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"
}
},
"SCHEDULER": {
"scheduler.0": {
"type" : "DWRR",
"weight": "1"
},
"scheduler.1": {
"type" : "DWRR",
"weight": "1"
}
},
"QUEUE": {
{% for port in port_names_list %}
"{{ port }}|3": {
"scheduler" : "scheduler.1",
"wred_profile" : "AZURE_LOSSLESS"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|4": {
"scheduler" : "scheduler.1",
"wred_profile" : "AZURE_LOSSLESS"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0": {
"scheduler": "scheduler.0"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|1": {
"scheduler": "scheduler.0"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|2": {
"scheduler": "scheduler.0"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5": {
"scheduler": "scheduler.0"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|6": {
"scheduler": "scheduler.0"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"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_to_queue_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": "AZURE",
"tc_to_queue_map": "AZURE",
"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,192 @@
{% 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"
}
},
"MAP_PFC_PRIORITY_TO_QUEUE": {
"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"
}
},
"SCHEDULER": {
"scheduler.0": {
"type" : "DWRR",
"weight": "1"
},
"scheduler.1": {
"type" : "DWRR",
"weight": "1"
}
},
"QUEUE": {
{% for port in port_names_list %}
"{{ port }}|3": {
"scheduler" : "scheduler.1",
"wred_profile" : "AZURE_LOSSLESS"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|4": {
"scheduler" : "scheduler.1",
"wred_profile" : "AZURE_LOSSLESS"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|0": {
"scheduler": "scheduler.0"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|1": {
"scheduler": "scheduler.0"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|2": {
"scheduler": "scheduler.0"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|5": {
"scheduler": "scheduler.0"
},
{% endfor %}
{% for port in port_names_list %}
"{{ port }}|6": {
"scheduler": "scheduler.0"
}{% if not loop.last %},{% endif %}
{% endfor %}
},
"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_to_queue_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 @@
SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml

View File

@ -0,0 +1,170 @@
sku: teralynx.MVTX9180
device_id: 0x6000
# Hardware constraint information
hardware:
num_ibs: 8
ib_active: 0,1,2,3,4,5,6,7
ports_per_ib: 66, 66, 66, 66, 66, 66, 66, 66
recirc_port_num: 64, 64, 64, 64, 64, 64, 64, 64
cpu_port_num: 65
cpu_port_ib: 0
mgmt_port_num: 65, 65
mgmt_port_ibs: 1,2
pics_per_ib: 8, 9, 9, 8, 8, 8, 8, 8
pic_ports_per_pic: 8
max_serdes_speed: 100
num_shared_pics: 0
isg [0-7]:
ib: 0
pic_id: [0-7]
isg [8-15]:
ib: 4
pic_id: [0-7]
isg 16:
ib: 6
pic_id: 7
isg 17:
ib: 6
pic_id: 6
isg 18:
ib: 6
pic_id: 5
isg 19:
ib: 6
pic_id: 4
isg 20:
ib: 6
pic_id: 3
isg 21:
ib: 6
pic_id: 2
isg 22:
ib: 6
pic_id: 1
isg 23:
ib: 6
pic_id: 0
isg 24:
ib: 2
pic_id: 7
isg 25:
ib: 2
pic_id: 6
isg 26:
ib: 2
pic_id: 5
isg 27:
ib: 2
pic_id: 4
isg 28:
ib: 2
pic_id: 3
isg 29:
ib: 2
pic_id: 2
isg 30:
ib: 2
pic_id: 1
isg 31:
ib: 2
pic_id: 0
isg [32-39]:
ib: 3
pic_id: [0-7]
isg [40-47]:
ib: 7
pic_id: [0-7]
isg 48:
ib: 5
pic_id: 7
isg 49:
ib: 5
pic_id: 6
isg 50:
ib: 5
pic_id: 5
isg 51:
ib: 5
pic_id: 4
isg 52:
ib: 5
pic_id: 3
isg 53:
ib: 5
pic_id: 2
isg 54:
ib: 5
pic_id: 1
isg 55:
ib: 5
pic_id: 0
isg 56:
ib: 1
pic_id: 7
isg 57:
ib: 1
pic_id: 6
isg 58:
ib: 1
pic_id: 5
isg 59:
ib: 1
pic_id: 4
isg 60:
ib: 1
pic_id: 3
isg 61:
ib: 1
pic_id: 2
isg 62:
ib: 1
pic_id: 1
isg 63:
ib: 1
pic_id: 0
isg 64:
mode: 1:1
ib: 1, 2
pic_id: 8

View File

@ -0,0 +1 @@
dbmvtx9180_64x100G t1

View File

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

View File

@ -0,0 +1 @@
innovium

View File

@ -0,0 +1,26 @@
#!/usr/bin/env python
try:
import os
from sonic_eeprom import eeprom_tlvinfo
except ImportError as e:
raise ImportError (str(e) + "- required module not found")
def eeprom_check():
filepath="/sys/bus/i2c/devices/0-0056/eeprom"
if os.path.isfile(filepath):
return 1 #now board, 0x56
else:
return 0 #now board, 0x57
class board(eeprom_tlvinfo.TlvInfoDecoder):
_TLV_INFO_MAX_LEN = 256
def __init__(self, name, path, cpld_root, ro):
ret=eeprom_check()
if ret==1:
self.eeprom_path = "/sys/bus/i2c/devices/0-0056/eeprom"
else:
self.eeprom_path = "/sys/bus/i2c/devices/47-0057/eeprom"
super(board, self).__init__(self.eeprom_path, 0, '', True)

View File

@ -0,0 +1,59 @@
#!/usr/bin/env python
#############################################################################
# Accton
#
# Module contains an implementation of SONiC PSU Base API and
# provides the PSUs status which are available in the platform
#
#############################################################################
try:
from sonic_psu.psu_base import PsuBase
except ImportError as e:
raise ImportError (str(e) + "- required module not found")
class PsuUtil(PsuBase):
"""Platform-specific PSUutil class"""
def __init__(self):
PsuBase.__init__(self)
self.psu_path = "/sys/bus/i2c/devices/"
self.psu_presence = "/psu_present"
self.psu_oper_status = "/psu_power_good"
self.psu_mapping = {
2: "0-0051",
1: "0-0052",
}
def get_num_psus(self):
return len(self.psu_mapping)
def get_psu_status(self, index):
if index is None:
return False
status = 0
node = self.psu_path + self.psu_mapping[index]+self.psu_oper_status
try:
with open(node, 'r') as power_status:
status = int(power_status.read())
except IOError:
return False
return status == 1
def get_psu_presence(self, index):
if index is None:
return False
status = 0
node = self.psu_path + self.psu_mapping[index] + self.psu_presence
try:
with open(node, 'r') as presence_status:
status = int(presence_status.read())
except IOError:
return False
return status == 1

View File

@ -0,0 +1,186 @@
# sfputil.py
#
# Platform-specific SFP transceiver interface for SONiC
#
try:
import time
from sonic_sfp.sfputilbase import SfpUtilBase
except ImportError as e:
raise ImportError("%s - required module not found" % str(e))
class SfpUtil(SfpUtilBase):
"""Platform-specific SfpUtil class"""
SONIC_PORT_NAME_PREFIX = "Ethernet"
PORT_START = 0
PORT_END = 31
PORTS_IN_BLOCK = 32
BASE_OOM_PATH = "/sys/bus/i2c/devices/0-00{0}/"
BASE_CPLD1_PATH = "/sys/bus/i2c/devices/0-0061/"
BASE_CPLD2_PATH = "/sys/bus/i2c/devices/0-0062/"
_port_to_is_present = {}
_port_to_lp_mode = {}
_port_to_eeprom_mapping = {}
_port_to_i2c_mapping = {
0: [1, 10],
1: [2, 11],
2: [3, 12],
3: [4, 13],
4: [5, 14],
5: [6, 15],
6: [7, 16],
7: [8, 17],
8: [9, 18],
9: [10, 19],
10: [11, 20],
11: [12, 21],
12: [13, 22],
13: [14, 23],
14: [15, 24],
15: [16, 25],
16: [17, 26],
17: [18, 27],
18: [19, 28],
19: [20, 29],
20: [21, 30],
21: [22, 31],
22: [23, 32],
23: [24, 33],
24: [25, 34],
25: [26, 35],
26: [27, 36],
27: [28, 37],
28: [29, 38],
29: [30, 39],
30: [31, 40],
31: [32, 41],
}
@property
def port_start(self):
return self.PORT_START
@property
def port_end(self):
return self.PORT_END
@property
def qsfp_ports(self):
return range(self.PORT_START, self.PORTS_IN_BLOCK + 1)
@property
def port_to_eeprom_mapping(self):
return self._port_to_eeprom_mapping
def is_logical_port(self, port_name):
return True
def get_logical_to_physical(self, port_name):
if not port_name.startswith(self.SONIC_PORT_NAME_PREFIX):
return None
port_idx = int(port_name[len(self.SONIC_PORT_NAME_PREFIX):])
port_idx = port_idx // 8
return [port_idx]
def __init__(self):
eeprom_path = self.BASE_OOM_PATH + "eeprom1"
for x in range(0, self.port_end+1):
self.port_to_eeprom_mapping[x] = eeprom_path.format(self._port_to_i2c_mapping[x][1])
self._transceiver_presence = self._get_sfp_presence()
SfpUtilBase.__init__(self)
def get_presence(self, port_num):
# Check for invalid port_num
if port_num < self.port_start or port_num > self.port_end:
return False
if port_num < 16 :
present_path = self.BASE_CPLD1_PATH + "module_present_" + str(port_num+1)
else:
present_path = self.BASE_CPLD2_PATH + "module_present_" + str(port_num+1)
self.__port_to_is_present = present_path
try:
val_file = open(self.__port_to_is_present)
content = val_file.readline().rstrip()
val_file.close()
except IOError as e:
print("Error: unable to access file: %s" % str(e))
return False
if content == "1":
return True
return False
def get_low_power_mode(self, port_num):
raise NotImplementedError
def set_low_power_mode(self, port_num, lpmode):
raise NotImplementedError
def reset(self, port_num):
raise NotImplementedError
def _get_sfp_presence(self):
port_pres = {}
for port in range(0, self.port_end+1):
port_pres[port] = self.get_presence(port)
return port_pres
def get_transceiver_change_event(self, timeout=0):
start_time = time.time()
port_dict = {}
forever = False
if timeout == 0:
forever = True
elif timeout > 0:
timeout = timeout / float(1000) # Convert to secs
else:
print("get_transceiver_change_event:Invalid timeout value", timeout)
return False, {}
end_time = start_time + timeout
if start_time > end_time:
print('get_transceiver_change_event:' \
'time wrap / invalid timeout value', timeout)
return False, {} # Time wrap or possibly incorrect timeout
while timeout >= 0:
change_status = False
cur_presence = self._get_sfp_presence()
for port in range(0, self.port_end+1):
if cur_presence[port] == 1:
port_dict[port]='1'
else:
port_dict[port]='0'
if cur_presence[port] != self._transceiver_presence[port]:
change_status = True
self._transceiver_presence = cur_presence
if change_status:
return True, port_dict
if forever:
time.sleep(1)
else:
timeout = end_time - time.time()
if timeout >= 1:
time.sleep(1) # We poll at 1 second granularity
else:
if timeout > 0:
time.sleep(timeout)
return True, {}
print("get_evt_change_event: Should not reach here.")
return False, {}

View File

@ -0,0 +1,6 @@
{
"skip_ledd": true,
"skip_pcied": true,
"skip_thermalctld": true,
"skip_psud": true
}

View File

@ -0,0 +1 @@
t1

View File

@ -9,6 +9,7 @@ $(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(DELTA_PLATFORM_MODULE)
$(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(NETBERG_AURORA_715_PLATFORM_MODULE)
$(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(SMCI_SSE_T7132S_PLATFORM_MODULE)
$(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(WISTRON_PLATFORM_MODULE)
$(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(TL10_DBMVTX9180_PLATFORM)
$(SONIC_ONE_IMAGE)_INSTALLS += $(INVM_DRV)
$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_IMAGES)
SONIC_INSTALLERS += $(SONIC_ONE_IMAGE)

View File

@ -0,0 +1,13 @@
# Teralynx 10 Platform
TL10_DBMVTX9180_VERSION = 1.0
export TL10_DBMVTX9180_VERSION
TL10_DBMVTX9180_PLATFORM = sonic-platform-marvell-dbmvtx9180_$(TL10_DBMVTX9180_VERSION)_$(CONFIGURED_ARCH).deb
$(TL10_DBMVTX9180_PLATFORM)_SRC_PATH = $(PLATFORM_PATH)/sonic-platform-marvell
$(TL10_DBMVTX9180_PLATFORM)_DEPENDS += $(LINUX_HEADERS) $(LINUX_HEADERS_COMMON)
$(TL10_DBMVTX9180_PLATFORM)_PLATFORM = x86_64-marvell_dbmvtx9180-r0
SONIC_DPKG_DEBS += $(TL10_DBMVTX9180_PLATFORM)

View File

@ -1,9 +1,8 @@
include $(PLATFORM_PATH)/invm-sai.mk
include $(PLATFORM_PATH)/platform-modules-cel.mk
include $(PLATFORM_PATH)/platform-modules-supermicro.mk
#include $(PLATFORM_PATH)/platform-modules-delta.mk
include $(PLATFORM_PATH)/platform-modules-wistron.mk
#include $(PLATFORM_PATH)/platform-modules-netberg.mk
include $(PLATFORM_PATH)/platform-modules-marvell.mk
include $(PLATFORM_PATH)/docker-syncd-invm.mk
include $(PLATFORM_PATH)/docker-syncd-invm-rpc.mk
include $(PLATFORM_PATH)/one-image.mk

@ -0,0 +1 @@
Subproject commit a6e250959b4e98f443e759179ac25f93cc891c9a