[devices]: DellEMC new platform support for DellEMC s5296f- 96x25G (#3960)
Added files, driver, npu configs for the DellEMC S5296f platform
This commit is contained in:
parent
29928c93a1
commit
97b33e4da3
@ -0,0 +1,2 @@
|
|||||||
|
{%- set default_topo = 't1' %}
|
||||||
|
{%- include 'buffers_config.j2' %}
|
@ -0,0 +1,46 @@
|
|||||||
|
|
||||||
|
{%- set default_cable = '40m' %}
|
||||||
|
|
||||||
|
{%- macro generate_buffer_pool_and_profiles() %}
|
||||||
|
"BUFFER_POOL": {
|
||||||
|
"ingress_lossless_pool": {
|
||||||
|
"size": "32744448",
|
||||||
|
"type": "ingress",
|
||||||
|
"mode": "static"
|
||||||
|
},
|
||||||
|
"egress_lossy_pool": {
|
||||||
|
"size": "32744448",
|
||||||
|
"type": "egress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PROFILE": {
|
||||||
|
"ingress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"static_th":"32744448"
|
||||||
|
},
|
||||||
|
"egress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossy_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{%- macro generate_pg_profils(port_names_active) %}
|
||||||
|
"BUFFER_PG": {
|
||||||
|
"{{ port_names_active }}|0": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{% macro generate_queue_buffers(port_names_active) %}
|
||||||
|
"BUFFER_QUEUE": {
|
||||||
|
"{{ port_names_active }}|0-6": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{% endmacro %}
|
||||||
|
|
@ -0,0 +1,46 @@
|
|||||||
|
|
||||||
|
{%- set default_cable = '40m' %}
|
||||||
|
|
||||||
|
{%- macro generate_buffer_pool_and_profiles() %}
|
||||||
|
"BUFFER_POOL": {
|
||||||
|
"ingress_lossless_pool": {
|
||||||
|
"size": "32744448",
|
||||||
|
"type": "ingress",
|
||||||
|
"mode": "static"
|
||||||
|
},
|
||||||
|
"egress_lossy_pool": {
|
||||||
|
"size": "32744448",
|
||||||
|
"type": "egress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PROFILE": {
|
||||||
|
"ingress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"static_th":"32744448"
|
||||||
|
},
|
||||||
|
"egress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossy_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{%- macro generate_pg_profils(port_names_active) %}
|
||||||
|
"BUFFER_PG": {
|
||||||
|
"{{ port_names_active }}|0": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{% macro generate_queue_buffers(port_names_active) %}
|
||||||
|
"BUFFER_QUEUE": {
|
||||||
|
"{{ port_names_active }}|0-6": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{% endmacro %}
|
||||||
|
|
BIN
device/dell/x86_64-dellemc_s5296f_c3538-r0/DellEMC-S5296f-P-10G/custom_led.bin
Executable file
BIN
device/dell/x86_64-dellemc_s5296f_c3538-r0/DellEMC-S5296f-P-10G/custom_led.bin
Executable file
Binary file not shown.
Binary file not shown.
@ -0,0 +1,105 @@
|
|||||||
|
# name lanes alias index speed
|
||||||
|
Ethernet0 5 tenGigE1/1/1 1 10000
|
||||||
|
Ethernet1 6 tenGigE1/1/2 2 10000
|
||||||
|
Ethernet2 7 tenGigE1/1/3 3 10000
|
||||||
|
Ethernet3 8 tenGigE1/1/4 4 10000
|
||||||
|
Ethernet4 13 tenGigE1/2/1 5 10000
|
||||||
|
Ethernet5 14 tenGigE1/2/2 6 10000
|
||||||
|
Ethernet6 15 tenGigE1/2/3 7 10000
|
||||||
|
Ethernet7 16 tenGigE1/2/4 8 10000
|
||||||
|
Ethernet8 17 tenGigE1/3/1 9 10000
|
||||||
|
Ethernet9 18 tenGigE1/3/2 10 10000
|
||||||
|
Ethernet10 19 tenGigE1/3/3 11 10000
|
||||||
|
Ethernet11 20 tenGigE1/3/4 12 10000
|
||||||
|
Ethernet12 37 tenGigE1/4/1 13 10000
|
||||||
|
Ethernet13 38 tenGigE1/4/2 14 10000
|
||||||
|
Ethernet14 39 tenGigE1/4/3 15 10000
|
||||||
|
Ethernet15 40 tenGigE1/4/4 16 10000
|
||||||
|
Ethernet16 45 tenGigE1/5/1 17 10000
|
||||||
|
Ethernet17 46 tenGigE1/5/2 18 10000
|
||||||
|
Ethernet18 47 tenGigE1/5/3 19 10000
|
||||||
|
Ethernet19 48 tenGigE1/5/4 20 10000
|
||||||
|
Ethernet20 53 tenGigE1/6/1 21 10000
|
||||||
|
Ethernet21 54 tenGigE1/6/2 22 10000
|
||||||
|
Ethernet22 55 tenGigE1/6/3 23 10000
|
||||||
|
Ethernet23 56 tenGigE1/6/4 24 10000
|
||||||
|
Ethernet24 65 tenGigE1/7/1 25 10000
|
||||||
|
Ethernet25 66 tenGigE1/7/2 26 10000
|
||||||
|
Ethernet26 67 tenGigE1/7/3 27 10000
|
||||||
|
Ethernet27 68 tenGigE1/7/4 28 10000
|
||||||
|
Ethernet28 73 tenGigE1/8/1 29 10000
|
||||||
|
Ethernet29 74 tenGigE1/8/2 30 10000
|
||||||
|
Ethernet30 75 tenGigE1/8/3 31 10000
|
||||||
|
Ethernet31 76 tenGigE1/8/4 32 10000
|
||||||
|
Ethernet32 89 tenGigE1/9/1 33 10000
|
||||||
|
Ethernet33 90 tenGigE1/9/2 34 10000
|
||||||
|
Ethernet34 91 tenGigE1/9/3 35 10000
|
||||||
|
Ethernet35 92 tenGigE1/9/4 36 10000
|
||||||
|
Ethernet36 101 tenGigE1/10/1 37 10000
|
||||||
|
Ethernet37 102 tenGigE1/10/2 38 10000
|
||||||
|
Ethernet38 103 tenGigE1/10/3 39 10000
|
||||||
|
Ethernet39 104 tenGigE1/10/4 40 10000
|
||||||
|
Ethernet40 109 tenGigE1/11/1 41 10000
|
||||||
|
Ethernet41 110 tenGigE1/11/2 42 10000
|
||||||
|
Ethernet42 111 tenGigE1/11/3 43 10000
|
||||||
|
Ethernet43 112 tenGigE1/11/4 44 10000
|
||||||
|
Ethernet44 117 tenGigE1/12/1 45 10000
|
||||||
|
Ethernet45 118 tenGigE1/12/2 46 10000
|
||||||
|
Ethernet46 119 tenGigE1/12/3 47 10000
|
||||||
|
Ethernet47 120 tenGigE1/12/4 48 10000
|
||||||
|
Ethernet48 1 tenGigE1/13/1 49 10000
|
||||||
|
Ethernet49 2 tenGigE1/13/2 50 10000
|
||||||
|
Ethernet50 3 tenGigE1/13/3 51 10000
|
||||||
|
Ethernet51 4 tenGigE1/13/4 52 10000
|
||||||
|
Ethernet52 9 tenGigE1/14/1 53 10000
|
||||||
|
Ethernet53 10 tenGigE1/14/2 54 10000
|
||||||
|
Ethernet54 11 tenGigE1/14/3 55 10000
|
||||||
|
Ethernet55 12 tenGigE1/14/4 56 10000
|
||||||
|
Ethernet56 25 tenGigE1/15/1 57 10000
|
||||||
|
Ethernet57 26 tenGigE1/15/2 58 10000
|
||||||
|
Ethernet58 27 tenGigE1/15/3 59 10000
|
||||||
|
Ethernet59 28 tenGigE1/15/4 60 10000
|
||||||
|
Ethernet60 33 tenGigE1/16/1 61 10000
|
||||||
|
Ethernet61 34 tenGigE1/16/2 62 10000
|
||||||
|
Ethernet62 35 tenGigE1/16/3 63 10000
|
||||||
|
Ethernet63 36 tenGigE1/16/4 64 10000
|
||||||
|
Ethernet64 41 tenGigE1/17/1 65 10000
|
||||||
|
Ethernet65 42 tenGigE1/17/2 66 10000
|
||||||
|
Ethernet66 43 tenGigE1/17/3 67 10000
|
||||||
|
Ethernet67 44 tenGigE1/17/4 68 10000
|
||||||
|
Ethernet68 49 tenGigE1/18/1 69 10000
|
||||||
|
Ethernet69 50 tenGigE1/18/2 70 10000
|
||||||
|
Ethernet70 51 tenGigE1/18/3 71 10000
|
||||||
|
Ethernet71 52 tenGigE1/18/4 72 10000
|
||||||
|
Ethernet72 69 tenGigE1/19/1 73 10000
|
||||||
|
Ethernet73 70 tenGigE1/19/2 74 10000
|
||||||
|
Ethernet74 71 tenGigE1/19/3 75 10000
|
||||||
|
Ethernet75 72 tenGigE1/19/4 76 10000
|
||||||
|
Ethernet76 77 tenGigE1/20/1 77 10000
|
||||||
|
Ethernet77 78 tenGigE1/20/2 78 10000
|
||||||
|
Ethernet78 79 tenGigE1/20/3 79 10000
|
||||||
|
Ethernet79 80 tenGigE1/20/4 80 10000
|
||||||
|
Ethernet80 81 tenGigE1/21/1 81 10000
|
||||||
|
Ethernet81 82 tenGigE1/21/2 82 10000
|
||||||
|
Ethernet82 83 tenGigE1/21/3 83 10000
|
||||||
|
Ethernet83 84 tenGigE1/21/4 84 10000
|
||||||
|
Ethernet84 97 tenGigE1/22/1 85 10000
|
||||||
|
Ethernet85 98 tenGigE1/22/2 86 10000
|
||||||
|
Ethernet86 99 tenGigE1/22/3 87 10000
|
||||||
|
Ethernet87 100 tenGigE1/22/4 88 10000
|
||||||
|
Ethernet88 105 tenGigE1/23/1 89 10000
|
||||||
|
Ethernet89 106 tenGigE1/23/2 90 10000
|
||||||
|
Ethernet90 107 tenGigE1/23/3 91 10000
|
||||||
|
Ethernet91 108 tenGigE1/23/4 92 10000
|
||||||
|
Ethernet92 113 tenGigE1/24/1 93 10000
|
||||||
|
Ethernet93 114 tenGigE1/24/2 94 10000
|
||||||
|
Ethernet94 115 tenGigE1/24/3 95 10000
|
||||||
|
Ethernet95 116 tenGigE1/24/4 96 10000
|
||||||
|
Ethernet96 29,30,31,32 hundredGigE1/49 97 100000
|
||||||
|
Ethernet97 21,22,23,24 hundredGigE1/50 98 100000
|
||||||
|
Ethernet98 125,126,127,128 hundredGigE1/51 99 100000
|
||||||
|
Ethernet99 85,86,87,88 hundredGigE1/52 100 100000
|
||||||
|
Ethernet100 57,58,59,60 hundredGigE1/53 101 100000
|
||||||
|
Ethernet101 61,62,63,64 hundredGigE1/54 102 100000
|
||||||
|
Ethernet102 121,122,123,124 hundredGigE1/55 103 100000
|
||||||
|
Ethernet103 93,94,95,96 hundredGigE1/56 104 100000
|
@ -0,0 +1,226 @@
|
|||||||
|
{%- set PORT_ALL = [] %}
|
||||||
|
{%- for port in PORT %}
|
||||||
|
{%- if PORT_ALL.append(port) %}{% endif %}
|
||||||
|
{%- endfor %}
|
||||||
|
{%- if PORT_ALL | sort_by_port_index %}{% endif %}
|
||||||
|
|
||||||
|
{%- set port_names_list_all = [] %}
|
||||||
|
{%- for port in PORT_ALL %}
|
||||||
|
{%- if port_names_list_all.append(port) %}{% endif %}
|
||||||
|
{%- endfor %}
|
||||||
|
{%- set port_names_all = port_names_list_all | join(',') -%}
|
||||||
|
|
||||||
|
|
||||||
|
{%- set PORT_ACTIVE = [] %}
|
||||||
|
{%- if DEVICE_NEIGHBOR is not defined %}
|
||||||
|
{%- set PORT_ACTIVE = PORT_ALL %}
|
||||||
|
{%- else %}
|
||||||
|
{%- for port in DEVICE_NEIGHBOR.keys() %}
|
||||||
|
{%- if PORT_ACTIVE.append(port) %}{%- endif %}
|
||||||
|
{%- endfor %}
|
||||||
|
{%- endif %}
|
||||||
|
{%- if PORT_ACTIVE | sort_by_port_index %}{% endif %}
|
||||||
|
|
||||||
|
{%- set port_names_list_active = [] %}
|
||||||
|
{%- for port in PORT_ACTIVE %}
|
||||||
|
{%- if port_names_list_active.append(port) %}{%- endif %}
|
||||||
|
{%- endfor %}
|
||||||
|
{%- set port_names_active = port_names_list_active | join(',') -%}
|
||||||
|
|
||||||
|
|
||||||
|
{%- set pfc_to_pg_map_supported_asics = ['mellanox', 'barefoot', 'marvell'] -%}
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
{% if generate_tc_to_pg_map is defined %}
|
||||||
|
{{- generate_tc_to_pg_map() }}
|
||||||
|
{% else %}
|
||||||
|
"TC_TO_PRIORITY_GROUP_MAP": {
|
||||||
|
"DEFAULT": {
|
||||||
|
"0": "0",
|
||||||
|
"1": "0",
|
||||||
|
"2": "0",
|
||||||
|
"3": "0",
|
||||||
|
"4": "0",
|
||||||
|
"5": "0",
|
||||||
|
"6": "0",
|
||||||
|
"7": "7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{% endif %}
|
||||||
|
"MAP_PFC_PRIORITY_TO_QUEUE": {
|
||||||
|
"DEFAULT": {
|
||||||
|
"0": "0",
|
||||||
|
"1": "1",
|
||||||
|
"2": "2",
|
||||||
|
"3": "3",
|
||||||
|
"4": "4",
|
||||||
|
"5": "5",
|
||||||
|
"6": "6",
|
||||||
|
"7": "7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"TC_TO_QUEUE_MAP": {
|
||||||
|
"DEFAULT": {
|
||||||
|
"0": "0",
|
||||||
|
"1": "1",
|
||||||
|
"2": "2",
|
||||||
|
"3": "3",
|
||||||
|
"4": "4",
|
||||||
|
"5": "5",
|
||||||
|
"6": "6",
|
||||||
|
"7": "7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DSCP_TO_TC_MAP": {
|
||||||
|
"DEFAULT": {
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"SCHEDULER": {
|
||||||
|
"scheduler.0": {
|
||||||
|
"type" : "DWRR",
|
||||||
|
"weight": "1"
|
||||||
|
},
|
||||||
|
"scheduler.1": {
|
||||||
|
"type" : "DWRR",
|
||||||
|
"weight": "2"
|
||||||
|
},
|
||||||
|
"scheduler.2": {
|
||||||
|
"type" : "DWRR",
|
||||||
|
"weight": "3"
|
||||||
|
},
|
||||||
|
"scheduler.3": {
|
||||||
|
"type" : "DWRR",
|
||||||
|
"weight": "4"
|
||||||
|
},
|
||||||
|
"scheduler.4": {
|
||||||
|
"type" : "DWRR",
|
||||||
|
"weight": "5"
|
||||||
|
},
|
||||||
|
"scheduler.5": {
|
||||||
|
"type" : "DWRR",
|
||||||
|
"weight": "10"
|
||||||
|
},
|
||||||
|
"scheduler.6": {
|
||||||
|
"type" : "DWRR",
|
||||||
|
"weight": "25"
|
||||||
|
},
|
||||||
|
"scheduler.7": {
|
||||||
|
"type" : "DWRR",
|
||||||
|
"weight": "50"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"PORT_QOS_MAP": {
|
||||||
|
"{{ port_names_active }}": {
|
||||||
|
"dscp_to_tc_map" : "[DSCP_TO_TC_MAP|DEFAULT]",
|
||||||
|
"tc_to_queue_map" : "[TC_TO_QUEUE_MAP|DEFAULT]",
|
||||||
|
"tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|DEFAULT]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"QUEUE": {
|
||||||
|
{% for port in PORT_ACTIVE %}
|
||||||
|
"{{ port }}|0": {
|
||||||
|
"scheduler" : "[SCHEDULER|scheduler.0]"
|
||||||
|
},
|
||||||
|
{% endfor %}
|
||||||
|
{% for port in PORT_ACTIVE %}
|
||||||
|
"{{ port }}|1": {
|
||||||
|
"scheduler" : "[SCHEDULER|scheduler.1]"
|
||||||
|
},
|
||||||
|
{% endfor %}
|
||||||
|
{% for port in PORT_ACTIVE %}
|
||||||
|
"{{ port }}|2": {
|
||||||
|
"scheduler": "[SCHEDULER|scheduler.2]"
|
||||||
|
},
|
||||||
|
{% endfor %}
|
||||||
|
{% for port in PORT_ACTIVE %}
|
||||||
|
"{{ port }}|3": {
|
||||||
|
"scheduler": "[SCHEDULER|scheduler.3]"
|
||||||
|
},
|
||||||
|
{% endfor %}
|
||||||
|
{% for port in PORT_ACTIVE %}
|
||||||
|
"{{ port }}|4": {
|
||||||
|
"scheduler": "[SCHEDULER|scheduler.4]"
|
||||||
|
},
|
||||||
|
{% endfor %}
|
||||||
|
{% for port in PORT_ACTIVE %}
|
||||||
|
"{{ port }}|5": {
|
||||||
|
"scheduler": "[SCHEDULER|scheduler.5]"
|
||||||
|
},
|
||||||
|
{% endfor %}
|
||||||
|
{% for port in PORT_ACTIVE %}
|
||||||
|
"{{ port }}|6": {
|
||||||
|
"scheduler": "[SCHEDULER|scheduler.6]"
|
||||||
|
},
|
||||||
|
{% endfor %}
|
||||||
|
{% for port in PORT_ACTIVE %}
|
||||||
|
"{{ port }}|7": {
|
||||||
|
"scheduler": "[SCHEDULER|scheduler.7]"
|
||||||
|
}{% if not loop.last %},{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/td3-s5296f-10g.config.bcm
|
@ -0,0 +1,2 @@
|
|||||||
|
m0 load 0 0x0 /usr/share/sonic/hwsku/linkscan_led_fw.bin
|
||||||
|
m0 load 0 0x3800 /usr/share/sonic/hwsku/custom_led.bin
|
@ -0,0 +1,595 @@
|
|||||||
|
os=unix
|
||||||
|
portmap_5.0=5:10
|
||||||
|
portmap_6.0=6:10
|
||||||
|
portmap_7.0=7:10
|
||||||
|
portmap_8.0=8:10
|
||||||
|
portmap_13.0=13:10
|
||||||
|
portmap_14.0=14:10
|
||||||
|
portmap_15.0=15:10
|
||||||
|
portmap_16.0=16:10
|
||||||
|
portmap_17.0=17:10
|
||||||
|
portmap_18.0=18:10
|
||||||
|
portmap_19.0=19:10
|
||||||
|
portmap_20.0=20:10
|
||||||
|
portmap_37.0=37:10
|
||||||
|
portmap_38.0=38:10
|
||||||
|
portmap_39.0=39:10
|
||||||
|
portmap_40.0=40:10
|
||||||
|
portmap_45.0=45:10
|
||||||
|
portmap_46.0=46:10
|
||||||
|
portmap_47.0=47:10
|
||||||
|
portmap_48.0=48:10
|
||||||
|
portmap_53.0=53:10
|
||||||
|
portmap_54.0=54:10
|
||||||
|
portmap_55.0=55:10
|
||||||
|
portmap_56.0=56:10
|
||||||
|
portmap_67.0=65:10
|
||||||
|
portmap_68.0=66:10
|
||||||
|
portmap_69.0=67:10
|
||||||
|
portmap_70.0=68:10
|
||||||
|
portmap_75.0=73:10
|
||||||
|
portmap_76.0=74:10
|
||||||
|
portmap_77.0=75:10
|
||||||
|
portmap_78.0=76:10
|
||||||
|
portmap_91.0=89:10
|
||||||
|
portmap_92.0=90:10
|
||||||
|
portmap_93.0=91:10
|
||||||
|
portmap_94.0=92:10
|
||||||
|
portmap_103.0=101:10
|
||||||
|
portmap_104.0=102:10
|
||||||
|
portmap_105.0=103:10
|
||||||
|
portmap_106.0=104:10
|
||||||
|
portmap_111.0=109:10
|
||||||
|
portmap_112.0=110:10
|
||||||
|
portmap_113.0=111:10
|
||||||
|
portmap_114.0=112:10
|
||||||
|
portmap_119.0=117:10
|
||||||
|
portmap_120.0=118:10
|
||||||
|
portmap_121.0=119:10
|
||||||
|
portmap_122.0=120:10
|
||||||
|
portmap_1.0=1:10
|
||||||
|
portmap_2.0=2:10
|
||||||
|
portmap_3.0=3:10
|
||||||
|
portmap_4.0=4:10
|
||||||
|
portmap_9.0=9:10
|
||||||
|
portmap_10.0=10:10
|
||||||
|
portmap_11.0=11:10
|
||||||
|
portmap_12.0=12:10
|
||||||
|
portmap_25.0=25:10
|
||||||
|
portmap_26.0=26:10
|
||||||
|
portmap_27.0=27:10
|
||||||
|
portmap_28.0=28:10
|
||||||
|
portmap_33.0=33:10
|
||||||
|
portmap_34.0=34:10
|
||||||
|
portmap_35.0=35:10
|
||||||
|
portmap_36.0=36:10
|
||||||
|
portmap_41.0=41:10
|
||||||
|
portmap_42.0=42:10
|
||||||
|
portmap_43.0=43:10
|
||||||
|
portmap_44.0=44:10
|
||||||
|
portmap_49.0=49:10
|
||||||
|
portmap_50.0=50:10
|
||||||
|
portmap_51.0=51:10
|
||||||
|
portmap_52.0=52:10
|
||||||
|
portmap_71.0=69:10
|
||||||
|
portmap_72.0=70:10
|
||||||
|
portmap_73.0=71:10
|
||||||
|
portmap_74.0=72:10
|
||||||
|
portmap_79.0=77:10
|
||||||
|
portmap_80.0=78:10
|
||||||
|
portmap_81.0=79:10
|
||||||
|
portmap_82.0=80:10
|
||||||
|
portmap_83.0=81:10
|
||||||
|
portmap_84.0=82:10
|
||||||
|
portmap_85.0=83:10
|
||||||
|
portmap_86.0=84:10
|
||||||
|
portmap_99.0=97:10
|
||||||
|
portmap_100.0=98:10
|
||||||
|
portmap_101.0=99:10
|
||||||
|
portmap_102.0=100:10
|
||||||
|
portmap_107.0=105:10
|
||||||
|
portmap_108.0=106:10
|
||||||
|
portmap_109.0=107:10
|
||||||
|
portmap_110.0=108:10
|
||||||
|
portmap_115.0=113:10
|
||||||
|
portmap_116.0=114:10
|
||||||
|
portmap_117.0=115:10
|
||||||
|
portmap_118.0=116:10
|
||||||
|
portmap_29.0=29:100
|
||||||
|
portmap_21.0=21:100
|
||||||
|
portmap_127.0=125:100
|
||||||
|
portmap_87.0=85:100
|
||||||
|
portmap_57.0=57:100
|
||||||
|
portmap_61.0=61:100
|
||||||
|
portmap_123.0=121:100
|
||||||
|
portmap_95.0=93:100
|
||||||
|
phy_chain_tx_lane_map_physical{5.0}=0x0123
|
||||||
|
phy_chain_rx_lane_map_physical{5.0}=0x0123
|
||||||
|
phy_chain_tx_lane_map_physical{13.0}=0x0123
|
||||||
|
phy_chain_rx_lane_map_physical{13.0}=0x0123
|
||||||
|
phy_chain_tx_lane_map_physical{17.0}=0x0123
|
||||||
|
phy_chain_rx_lane_map_physical{17.0}=0x0123
|
||||||
|
phy_chain_tx_lane_map_physical{37.0}=0x0123
|
||||||
|
phy_chain_rx_lane_map_physical{37.0}=0x0123
|
||||||
|
phy_chain_tx_lane_map_physical{45.0}=0x0123
|
||||||
|
phy_chain_rx_lane_map_physical{45.0}=0x0123
|
||||||
|
phy_chain_tx_lane_map_physical{53.0}=0x0123
|
||||||
|
phy_chain_rx_lane_map_physical{53.0}=0x0123
|
||||||
|
phy_chain_tx_lane_map_physical{65.0}=0x3210
|
||||||
|
phy_chain_rx_lane_map_physical{65.0}=0x3210
|
||||||
|
phy_chain_tx_lane_map_physical{73.0}=0x3210
|
||||||
|
phy_chain_rx_lane_map_physical{73.0}=0x3210
|
||||||
|
phy_chain_tx_lane_map_physical{89.0}=0x3210
|
||||||
|
phy_chain_rx_lane_map_physical{89.0}=0x3210
|
||||||
|
phy_chain_tx_lane_map_physical{101.0}=0x3210
|
||||||
|
phy_chain_rx_lane_map_physical{101.0}=0x3210
|
||||||
|
phy_chain_tx_lane_map_physical{109.0}=0x3210
|
||||||
|
phy_chain_rx_lane_map_physical{109.0}=0x3210
|
||||||
|
phy_chain_tx_lane_map_physical{117.0}=0x3210
|
||||||
|
phy_chain_rx_lane_map_physical{117.0}=0x3210
|
||||||
|
phy_chain_tx_lane_map_physical{1.0}=0x1032
|
||||||
|
phy_chain_rx_lane_map_physical{1.0}=0x1032
|
||||||
|
phy_chain_tx_lane_map_physical{9.0}=0x1032
|
||||||
|
phy_chain_rx_lane_map_physical{9.0}=0x1032
|
||||||
|
phy_chain_tx_lane_map_physical{25.0}=0x1032
|
||||||
|
phy_chain_rx_lane_map_physical{25.0}=0x1032
|
||||||
|
phy_chain_tx_lane_map_physical{33.0}=0x1032
|
||||||
|
phy_chain_rx_lane_map_physical{33.0}=0x1032
|
||||||
|
phy_chain_tx_lane_map_physical{41.0}=0x1032
|
||||||
|
phy_chain_rx_lane_map_physical{41.0}=0x1032
|
||||||
|
phy_chain_tx_lane_map_physical{49.0}=0x2031
|
||||||
|
phy_chain_rx_lane_map_physical{49.0}=0x2031
|
||||||
|
phy_chain_tx_lane_map_physical{69.0}=0x2301
|
||||||
|
phy_chain_rx_lane_map_physical{69.0}=0x2301
|
||||||
|
phy_chain_tx_lane_map_physical{77.0}=0x1302
|
||||||
|
phy_chain_rx_lane_map_physical{77.0}=0x1302
|
||||||
|
phy_chain_tx_lane_map_physical{81.0}=0x2301
|
||||||
|
phy_chain_rx_lane_map_physical{81.0}=0x2301
|
||||||
|
phy_chain_tx_lane_map_physical{97.0}=0x2301
|
||||||
|
phy_chain_rx_lane_map_physical{97.0}=0x2301
|
||||||
|
phy_chain_tx_lane_map_physical{105.0}=0x2301
|
||||||
|
phy_chain_rx_lane_map_physical{105.0}=0x2301
|
||||||
|
phy_chain_tx_lane_map_physical{113.0}=0x2301
|
||||||
|
phy_chain_rx_lane_map_physical{113.0}=0x2301
|
||||||
|
phy_chain_tx_lane_map_physical{29.0}=0x0123
|
||||||
|
phy_chain_rx_lane_map_physical{29.0}=0x3201
|
||||||
|
phy_chain_tx_lane_map_physical{21.0}=0x3021
|
||||||
|
phy_chain_rx_lane_map_physical{21.0}=0x0312
|
||||||
|
phy_chain_tx_lane_map_physical{125.0}=0x3210
|
||||||
|
phy_chain_rx_lane_map_physical{125.0}=0x0132
|
||||||
|
phy_chain_tx_lane_map_physical{85.0}=0x0312
|
||||||
|
phy_chain_rx_lane_map_physical{85.0}=0x3021
|
||||||
|
phy_chain_tx_lane_map_physical{57.0}=0x3021
|
||||||
|
phy_chain_rx_lane_map_physical{57.0}=0x0312
|
||||||
|
phy_chain_tx_lane_map_physical{61.0}=0x3210
|
||||||
|
phy_chain_rx_lane_map_physical{61.0}=0x1230
|
||||||
|
phy_chain_tx_lane_map_physical{121.0}=0x0123
|
||||||
|
phy_chain_rx_lane_map_physical{121.0}=0x2310
|
||||||
|
phy_chain_tx_lane_map_physical{93.0}=0x0123
|
||||||
|
phy_chain_rx_lane_map_physical{93.0}=0x2301
|
||||||
|
phy_chain_tx_polarity_flip_physical{5.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{5.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{6.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{6.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{7.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{7.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{8.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{8.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{13.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{13.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{14.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{14.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{15.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{15.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{16.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{16.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{17.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{17.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{18.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{18.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{19.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{19.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{20.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{20.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{37.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{37.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{38.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{38.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{39.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{39.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{40.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{40.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{45.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{45.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{46.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{46.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{47.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{47.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{48.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{48.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{53.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{53.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{54.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{54.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{55.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{55.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{56.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{56.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{65.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{65.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{66.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{66.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{67.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{67.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{68.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{68.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{73.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{73.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{74.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{74.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{75.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{75.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{76.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{76.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{89.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{89.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{90.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{90.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{91.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{91.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{92.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{92.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{101.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{101.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{102.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{102.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{103.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{103.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{104.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{104.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{109.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{109.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{110.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{110.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{111.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{111.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{112.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{112.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{117.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{117.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{118.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{118.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{119.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{119.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{120.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{120.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{1.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{1.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{2.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{2.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{3.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{3.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{4.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{4.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{9.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{9.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{10.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{10.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{11.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{11.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{12.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{12.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{25.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{25.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{26.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{26.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{27.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{27.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{28.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{28.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{33.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{33.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{34.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{34.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{35.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{35.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{36.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{36.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{41.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{41.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{42.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{42.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{43.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{43.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{44.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{44.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{49.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{49.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{50.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{50.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{51.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{51.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{52.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{52.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{69.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{69.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{70.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{70.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{71.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{71.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{72.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{72.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{77.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{77.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{78.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{78.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{79.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{79.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{80.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{80.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{81.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{81.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{82.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{82.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{83.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{83.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{84.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{84.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{97.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{97.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{98.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{98.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{99.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{99.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{100.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{100.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{105.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{105.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{106.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{106.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{107.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{107.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{108.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{108.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{113.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{113.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{114.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{114.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{115.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{115.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{116.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{116.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{29.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{29.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{30.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{30.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{31.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{31.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{32.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{32.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{21.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{21.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{22.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{22.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{23.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{23.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{24.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{24.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{125.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{125.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{126.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{126.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{127.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{127.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{128.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{128.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{85.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{85.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{86.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{86.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{87.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{87.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{88.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{88.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{57.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{57.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{58.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{58.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{59.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{59.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{60.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{60.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{61.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{61.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{62.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{62.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{63.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{63.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{64.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{64.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{121.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{121.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{122.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{122.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{123.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{123.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{124.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{124.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{93.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{93.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{94.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{94.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{95.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{95.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{96.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{96.0}=0x1
|
||||||
|
dport_map_enable=1
|
||||||
|
dport_map_port_5=1
|
||||||
|
dport_map_port_6=2
|
||||||
|
dport_map_port_7=3
|
||||||
|
dport_map_port_8=4
|
||||||
|
dport_map_port_13=5
|
||||||
|
dport_map_port_14=6
|
||||||
|
dport_map_port_15=7
|
||||||
|
dport_map_port_16=8
|
||||||
|
dport_map_port_17=9
|
||||||
|
dport_map_port_18=10
|
||||||
|
dport_map_port_19=11
|
||||||
|
dport_map_port_20=12
|
||||||
|
dport_map_port_37=13
|
||||||
|
dport_map_port_38=14
|
||||||
|
dport_map_port_39=15
|
||||||
|
dport_map_port_40=16
|
||||||
|
dport_map_port_45=17
|
||||||
|
dport_map_port_46=18
|
||||||
|
dport_map_port_47=19
|
||||||
|
dport_map_port_48=20
|
||||||
|
dport_map_port_53=21
|
||||||
|
dport_map_port_54=22
|
||||||
|
dport_map_port_55=23
|
||||||
|
dport_map_port_56=24
|
||||||
|
dport_map_port_67=25
|
||||||
|
dport_map_port_68=26
|
||||||
|
dport_map_port_69=27
|
||||||
|
dport_map_port_70=28
|
||||||
|
dport_map_port_75=29
|
||||||
|
dport_map_port_76=30
|
||||||
|
dport_map_port_77=31
|
||||||
|
dport_map_port_78=32
|
||||||
|
dport_map_port_91=33
|
||||||
|
dport_map_port_92=34
|
||||||
|
dport_map_port_93=35
|
||||||
|
dport_map_port_94=36
|
||||||
|
dport_map_port_103=37
|
||||||
|
dport_map_port_104=38
|
||||||
|
dport_map_port_105=39
|
||||||
|
dport_map_port_106=40
|
||||||
|
dport_map_port_111=41
|
||||||
|
dport_map_port_112=42
|
||||||
|
dport_map_port_113=43
|
||||||
|
dport_map_port_114=44
|
||||||
|
dport_map_port_119=45
|
||||||
|
dport_map_port_120=46
|
||||||
|
dport_map_port_121=47
|
||||||
|
dport_map_port_122=48
|
||||||
|
dport_map_port_1=49
|
||||||
|
dport_map_port_2=50
|
||||||
|
dport_map_port_3=51
|
||||||
|
dport_map_port_4=52
|
||||||
|
dport_map_port_9=53
|
||||||
|
dport_map_port_10=54
|
||||||
|
dport_map_port_11=55
|
||||||
|
dport_map_port_12=56
|
||||||
|
dport_map_port_25=57
|
||||||
|
dport_map_port_26=58
|
||||||
|
dport_map_port_27=59
|
||||||
|
dport_map_port_28=60
|
||||||
|
dport_map_port_33=61
|
||||||
|
dport_map_port_34=62
|
||||||
|
dport_map_port_35=63
|
||||||
|
dport_map_port_36=64
|
||||||
|
dport_map_port_41=65
|
||||||
|
dport_map_port_42=66
|
||||||
|
dport_map_port_43=67
|
||||||
|
dport_map_port_44=68
|
||||||
|
dport_map_port_49=69
|
||||||
|
dport_map_port_50=70
|
||||||
|
dport_map_port_51=71
|
||||||
|
dport_map_port_52=72
|
||||||
|
dport_map_port_71=73
|
||||||
|
dport_map_port_72=74
|
||||||
|
dport_map_port_73=75
|
||||||
|
dport_map_port_74=76
|
||||||
|
dport_map_port_79=77
|
||||||
|
dport_map_port_80=78
|
||||||
|
dport_map_port_81=79
|
||||||
|
dport_map_port_82=80
|
||||||
|
dport_map_port_83=81
|
||||||
|
dport_map_port_84=82
|
||||||
|
dport_map_port_85=83
|
||||||
|
dport_map_port_86=84
|
||||||
|
dport_map_port_99=85
|
||||||
|
dport_map_port_100=86
|
||||||
|
dport_map_port_101=87
|
||||||
|
dport_map_port_102=88
|
||||||
|
dport_map_port_107=89
|
||||||
|
dport_map_port_108=90
|
||||||
|
dport_map_port_109=91
|
||||||
|
dport_map_port_110=92
|
||||||
|
dport_map_port_115=93
|
||||||
|
dport_map_port_116=94
|
||||||
|
dport_map_port_117=95
|
||||||
|
dport_map_port_118=96
|
||||||
|
dport_map_port_29=97
|
||||||
|
dport_map_port_30=98
|
||||||
|
dport_map_port_31=99
|
||||||
|
dport_map_port_32=100
|
||||||
|
dport_map_port_21=101
|
||||||
|
dport_map_port_22=102
|
||||||
|
dport_map_port_23=103
|
||||||
|
dport_map_port_24=104
|
||||||
|
dport_map_port_127=105
|
||||||
|
dport_map_port_128=106
|
||||||
|
dport_map_port_129=107
|
||||||
|
dport_map_port_130=108
|
||||||
|
dport_map_port_87=109
|
||||||
|
dport_map_port_88=110
|
||||||
|
dport_map_port_89=111
|
||||||
|
dport_map_port_90=112
|
||||||
|
dport_map_port_57=113
|
||||||
|
dport_map_port_58=114
|
||||||
|
dport_map_port_59=115
|
||||||
|
dport_map_port_60=116
|
||||||
|
dport_map_port_61=117
|
||||||
|
dport_map_port_62=118
|
||||||
|
dport_map_port_63=119
|
||||||
|
dport_map_port_64=120
|
||||||
|
dport_map_port_123=121
|
||||||
|
dport_map_port_124=122
|
||||||
|
dport_map_port_125=123
|
||||||
|
dport_map_port_126=124
|
||||||
|
dport_map_port_95=125
|
||||||
|
dport_map_port_96=126
|
||||||
|
dport_map_port_97=127
|
||||||
|
dport_map_port_98=128
|
||||||
|
|
||||||
|
dpp_clock_ratio=2:3
|
||||||
|
oversubscribe_mode=1
|
||||||
|
core_clock_frequency=1525
|
||||||
|
l2xmsg_mode=1
|
||||||
|
pbmp_oversubscribe=0x7fffffffffffffff9fffffffffffffffe
|
||||||
|
pbmp_xport_xe=0x7fffffffffffffff9fffffffffffffffe
|
||||||
|
ifp_inports_support_enable=1
|
||||||
|
port_flex_enable=1
|
||||||
|
phy_an_c73=3
|
||||||
|
l2xmsg_hostbuf_size=8192
|
||||||
|
module_64ports=0
|
||||||
|
tdma_intr_enable=1
|
||||||
|
ipv6_lpm_128b_enable=1
|
||||||
|
stat_if_parity_enable=1
|
||||||
|
bcm_tunnel_term_compatible_mode=1
|
||||||
|
table_dma_enable=1
|
||||||
|
schan_intr_enable=0
|
||||||
|
parity_enable=1
|
||||||
|
parity_correction=1
|
||||||
|
miim_intr_enable=1
|
||||||
|
tdma_timeout_usec=5000000
|
||||||
|
max_vp_lags=0
|
||||||
|
mmu_lossless=0
|
||||||
|
pdma_descriptor_prefetch_enable=1
|
||||||
|
pktdma_poll_mode_channel_bitmap=1
|
||||||
|
l3_max_ecmp_mode.0=1
|
||||||
|
ptp_ts_pll_fref=50000000
|
||||||
|
ptp_bs_fref_0=50000000
|
||||||
|
ptp_bs_fref_1=50000000
|
||||||
|
|
||||||
|
l3_alpm_enable=2
|
||||||
|
l3_alpm_ipv6_128b_bkt_rsvd=1
|
||||||
|
l2_mem_entries=40960
|
||||||
|
l3_mem_entries=40960
|
||||||
|
l3_max_ecmp_mode=1
|
||||||
|
|
||||||
|
stable_size=0x5500000
|
||||||
|
|
||||||
|
mmu_init_config="TD3-DELL-lossless"
|
||||||
|
sai_preinit_cmd_file=/usr/share/sonic/hwsku/sai_preinit_cmd.soc
|
@ -0,0 +1,2 @@
|
|||||||
|
{%- set default_topo = 't1' %}
|
||||||
|
{%- include 'buffers_config.j2' %}
|
@ -0,0 +1,46 @@
|
|||||||
|
|
||||||
|
{%- set default_cable = '40m' %}
|
||||||
|
|
||||||
|
{%- macro generate_buffer_pool_and_profiles() %}
|
||||||
|
"BUFFER_POOL": {
|
||||||
|
"ingress_lossless_pool": {
|
||||||
|
"size": "32744448",
|
||||||
|
"type": "ingress",
|
||||||
|
"mode": "static"
|
||||||
|
},
|
||||||
|
"egress_lossy_pool": {
|
||||||
|
"size": "32744448",
|
||||||
|
"type": "egress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PROFILE": {
|
||||||
|
"ingress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"static_th":"32744448"
|
||||||
|
},
|
||||||
|
"egress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossy_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{%- macro generate_pg_profils(port_names_active) %}
|
||||||
|
"BUFFER_PG": {
|
||||||
|
"{{ port_names_active }}|0": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{% macro generate_queue_buffers(port_names_active) %}
|
||||||
|
"BUFFER_QUEUE": {
|
||||||
|
"{{ port_names_active }}|0-6": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{% endmacro %}
|
||||||
|
|
@ -0,0 +1,46 @@
|
|||||||
|
|
||||||
|
{%- set default_cable = '40m' %}
|
||||||
|
|
||||||
|
{%- macro generate_buffer_pool_and_profiles() %}
|
||||||
|
"BUFFER_POOL": {
|
||||||
|
"ingress_lossless_pool": {
|
||||||
|
"size": "32744448",
|
||||||
|
"type": "ingress",
|
||||||
|
"mode": "static"
|
||||||
|
},
|
||||||
|
"egress_lossy_pool": {
|
||||||
|
"size": "32744448",
|
||||||
|
"type": "egress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PROFILE": {
|
||||||
|
"ingress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"static_th":"32744448"
|
||||||
|
},
|
||||||
|
"egress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossy_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{%- macro generate_pg_profils(port_names_active) %}
|
||||||
|
"BUFFER_PG": {
|
||||||
|
"{{ port_names_active }}|0": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{% macro generate_queue_buffers(port_names_active) %}
|
||||||
|
"BUFFER_QUEUE": {
|
||||||
|
"{{ port_names_active }}|0-6": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{% endmacro %}
|
||||||
|
|
BIN
device/dell/x86_64-dellemc_s5296f_c3538-r0/DellEMC-S5296f-P-25G/custom_led.bin
Executable file
BIN
device/dell/x86_64-dellemc_s5296f_c3538-r0/DellEMC-S5296f-P-25G/custom_led.bin
Executable file
Binary file not shown.
Binary file not shown.
@ -0,0 +1,105 @@
|
|||||||
|
# name lanes alias index speed
|
||||||
|
Ethernet0 5 twentyfiveGigE1/1/1 1 25000
|
||||||
|
Ethernet1 6 twentyfiveGigE1/1/2 2 25000
|
||||||
|
Ethernet2 7 twentyfiveGigE1/1/3 3 25000
|
||||||
|
Ethernet3 8 twentyfiveGigE1/1/4 4 25000
|
||||||
|
Ethernet4 13 twentyfiveGigE1/2/1 5 25000
|
||||||
|
Ethernet5 14 twentyfiveGigE1/2/2 6 25000
|
||||||
|
Ethernet6 15 twentyfiveGigE1/2/3 7 25000
|
||||||
|
Ethernet7 16 twentyfiveGigE1/2/4 8 25000
|
||||||
|
Ethernet8 17 twentyfiveGigE1/3/1 9 25000
|
||||||
|
Ethernet9 18 twentyfiveGigE1/3/2 10 25000
|
||||||
|
Ethernet10 19 twentyfiveGigE1/3/3 11 25000
|
||||||
|
Ethernet11 20 twentyfiveGigE1/3/4 12 25000
|
||||||
|
Ethernet12 37 twentyfiveGigE1/4/1 13 25000
|
||||||
|
Ethernet13 38 twentyfiveGigE1/4/2 14 25000
|
||||||
|
Ethernet14 39 twentyfiveGigE1/4/3 15 25000
|
||||||
|
Ethernet15 40 twentyfiveGigE1/4/4 16 25000
|
||||||
|
Ethernet16 45 twentyfiveGigE1/5/1 17 25000
|
||||||
|
Ethernet17 46 twentyfiveGigE1/5/2 18 25000
|
||||||
|
Ethernet18 47 twentyfiveGigE1/5/3 19 25000
|
||||||
|
Ethernet19 48 twentyfiveGigE1/5/4 20 25000
|
||||||
|
Ethernet20 53 twentyfiveGigE1/6/1 21 25000
|
||||||
|
Ethernet21 54 twentyfiveGigE1/6/2 22 25000
|
||||||
|
Ethernet22 55 twentyfiveGigE1/6/3 23 25000
|
||||||
|
Ethernet23 56 twentyfiveGigE1/6/4 24 25000
|
||||||
|
Ethernet24 65 twentyfiveGigE1/7/1 25 25000
|
||||||
|
Ethernet25 66 twentyfiveGigE1/7/2 26 25000
|
||||||
|
Ethernet26 67 twentyfiveGigE1/7/3 27 25000
|
||||||
|
Ethernet27 68 twentyfiveGigE1/7/4 28 25000
|
||||||
|
Ethernet28 73 twentyfiveGigE1/8/1 29 25000
|
||||||
|
Ethernet29 74 twentyfiveGigE1/8/2 30 25000
|
||||||
|
Ethernet30 75 twentyfiveGigE1/8/3 31 25000
|
||||||
|
Ethernet31 76 twentyfiveGigE1/8/4 32 25000
|
||||||
|
Ethernet32 89 twentyfiveGigE1/9/1 33 25000
|
||||||
|
Ethernet33 90 twentyfiveGigE1/9/2 34 25000
|
||||||
|
Ethernet34 91 twentyfiveGigE1/9/3 35 25000
|
||||||
|
Ethernet35 92 twentyfiveGigE1/9/4 36 25000
|
||||||
|
Ethernet36 101 twentyfiveGigE1/10/1 37 25000
|
||||||
|
Ethernet37 102 twentyfiveGigE1/10/2 38 25000
|
||||||
|
Ethernet38 103 twentyfiveGigE1/10/3 39 25000
|
||||||
|
Ethernet39 104 twentyfiveGigE1/10/4 40 25000
|
||||||
|
Ethernet40 109 twentyfiveGigE1/11/1 41 25000
|
||||||
|
Ethernet41 110 twentyfiveGigE1/11/2 42 25000
|
||||||
|
Ethernet42 111 twentyfiveGigE1/11/3 43 25000
|
||||||
|
Ethernet43 112 twentyfiveGigE1/11/4 44 25000
|
||||||
|
Ethernet44 117 twentyfiveGigE1/12/1 45 25000
|
||||||
|
Ethernet45 118 twentyfiveGigE1/12/2 46 25000
|
||||||
|
Ethernet46 119 twentyfiveGigE1/12/3 47 25000
|
||||||
|
Ethernet47 120 twentyfiveGigE1/12/4 48 25000
|
||||||
|
Ethernet48 1 twentyfiveGigE1/13/1 49 25000
|
||||||
|
Ethernet49 2 twentyfiveGigE1/13/2 50 25000
|
||||||
|
Ethernet50 3 twentyfiveGigE1/13/3 51 25000
|
||||||
|
Ethernet51 4 twentyfiveGigE1/13/4 52 25000
|
||||||
|
Ethernet52 9 twentyfiveGigE1/14/1 53 25000
|
||||||
|
Ethernet53 10 twentyfiveGigE1/14/2 54 25000
|
||||||
|
Ethernet54 11 twentyfiveGigE1/14/3 55 25000
|
||||||
|
Ethernet55 12 twentyfiveGigE1/14/4 56 25000
|
||||||
|
Ethernet56 25 twentyfiveGigE1/15/1 57 25000
|
||||||
|
Ethernet57 26 twentyfiveGigE1/15/2 58 25000
|
||||||
|
Ethernet58 27 twentyfiveGigE1/15/3 59 25000
|
||||||
|
Ethernet59 28 twentyfiveGigE1/15/4 60 25000
|
||||||
|
Ethernet60 33 twentyfiveGigE1/16/1 61 25000
|
||||||
|
Ethernet61 34 twentyfiveGigE1/16/2 62 25000
|
||||||
|
Ethernet62 35 twentyfiveGigE1/16/3 63 25000
|
||||||
|
Ethernet63 36 twentyfiveGigE1/16/4 64 25000
|
||||||
|
Ethernet64 41 twentyfiveGigE1/17/1 65 25000
|
||||||
|
Ethernet65 42 twentyfiveGigE1/17/2 66 25000
|
||||||
|
Ethernet66 43 twentyfiveGigE1/17/3 67 25000
|
||||||
|
Ethernet67 44 twentyfiveGigE1/17/4 68 25000
|
||||||
|
Ethernet68 49 twentyfiveGigE1/18/1 69 25000
|
||||||
|
Ethernet69 50 twentyfiveGigE1/18/2 70 25000
|
||||||
|
Ethernet70 51 twentyfiveGigE1/18/3 71 25000
|
||||||
|
Ethernet71 52 twentyfiveGigE1/18/4 72 25000
|
||||||
|
Ethernet72 69 twentyfiveGigE1/19/1 73 25000
|
||||||
|
Ethernet73 70 twentyfiveGigE1/19/2 74 25000
|
||||||
|
Ethernet74 71 twentyfiveGigE1/19/3 75 25000
|
||||||
|
Ethernet75 72 twentyfiveGigE1/19/4 76 25000
|
||||||
|
Ethernet76 77 twentyfiveGigE1/20/1 77 25000
|
||||||
|
Ethernet77 78 twentyfiveGigE1/20/2 78 25000
|
||||||
|
Ethernet78 79 twentyfiveGigE1/20/3 79 25000
|
||||||
|
Ethernet79 80 twentyfiveGigE1/20/4 80 25000
|
||||||
|
Ethernet80 81 twentyfiveGigE1/21/1 81 25000
|
||||||
|
Ethernet81 82 twentyfiveGigE1/21/2 82 25000
|
||||||
|
Ethernet82 83 twentyfiveGigE1/21/3 83 25000
|
||||||
|
Ethernet83 84 twentyfiveGigE1/21/4 84 25000
|
||||||
|
Ethernet84 97 twentyfiveGigE1/22/1 85 25000
|
||||||
|
Ethernet85 98 twentyfiveGigE1/22/2 86 25000
|
||||||
|
Ethernet86 99 twentyfiveGigE1/22/3 87 25000
|
||||||
|
Ethernet87 100 twentyfiveGigE1/22/4 88 25000
|
||||||
|
Ethernet88 105 twentyfiveGigE1/23/1 89 25000
|
||||||
|
Ethernet89 106 twentyfiveGigE1/23/2 90 25000
|
||||||
|
Ethernet90 107 twentyfiveGigE1/23/3 91 25000
|
||||||
|
Ethernet91 108 twentyfiveGigE1/23/4 92 25000
|
||||||
|
Ethernet92 113 twentyfiveGigE1/24/1 93 25000
|
||||||
|
Ethernet93 114 twentyfiveGigE1/24/2 94 25000
|
||||||
|
Ethernet94 115 twentyfiveGigE1/24/3 95 25000
|
||||||
|
Ethernet95 116 twentyfiveGigE1/24/4 96 25000
|
||||||
|
Ethernet96 29,30,31,32 hundredGigE1/49 97 100000
|
||||||
|
Ethernet97 21,22,23,24 hundredGigE1/50 98 100000
|
||||||
|
Ethernet98 125,126,127,128 hundredGigE1/51 99 100000
|
||||||
|
Ethernet99 85,86,87,88 hundredGigE1/52 100 100000
|
||||||
|
Ethernet100 57,58,59,60 hundredGigE1/53 101 100000
|
||||||
|
Ethernet101 61,62,63,64 hundredGigE1/54 102 100000
|
||||||
|
Ethernet102 121,122,123,124 hundredGigE1/55 103 100000
|
||||||
|
Ethernet103 93,94,95,96 hundredGigE1/56 104 100000
|
@ -0,0 +1,226 @@
|
|||||||
|
{%- set PORT_ALL = [] %}
|
||||||
|
{%- for port in PORT %}
|
||||||
|
{%- if PORT_ALL.append(port) %}{% endif %}
|
||||||
|
{%- endfor %}
|
||||||
|
{%- if PORT_ALL | sort_by_port_index %}{% endif %}
|
||||||
|
|
||||||
|
{%- set port_names_list_all = [] %}
|
||||||
|
{%- for port in PORT_ALL %}
|
||||||
|
{%- if port_names_list_all.append(port) %}{% endif %}
|
||||||
|
{%- endfor %}
|
||||||
|
{%- set port_names_all = port_names_list_all | join(',') -%}
|
||||||
|
|
||||||
|
|
||||||
|
{%- set PORT_ACTIVE = [] %}
|
||||||
|
{%- if DEVICE_NEIGHBOR is not defined %}
|
||||||
|
{%- set PORT_ACTIVE = PORT_ALL %}
|
||||||
|
{%- else %}
|
||||||
|
{%- for port in DEVICE_NEIGHBOR.keys() %}
|
||||||
|
{%- if PORT_ACTIVE.append(port) %}{%- endif %}
|
||||||
|
{%- endfor %}
|
||||||
|
{%- endif %}
|
||||||
|
{%- if PORT_ACTIVE | sort_by_port_index %}{% endif %}
|
||||||
|
|
||||||
|
{%- set port_names_list_active = [] %}
|
||||||
|
{%- for port in PORT_ACTIVE %}
|
||||||
|
{%- if port_names_list_active.append(port) %}{%- endif %}
|
||||||
|
{%- endfor %}
|
||||||
|
{%- set port_names_active = port_names_list_active | join(',') -%}
|
||||||
|
|
||||||
|
|
||||||
|
{%- set pfc_to_pg_map_supported_asics = ['mellanox', 'barefoot', 'marvell'] -%}
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
{% if generate_tc_to_pg_map is defined %}
|
||||||
|
{{- generate_tc_to_pg_map() }}
|
||||||
|
{% else %}
|
||||||
|
"TC_TO_PRIORITY_GROUP_MAP": {
|
||||||
|
"DEFAULT": {
|
||||||
|
"0": "0",
|
||||||
|
"1": "0",
|
||||||
|
"2": "0",
|
||||||
|
"3": "0",
|
||||||
|
"4": "0",
|
||||||
|
"5": "0",
|
||||||
|
"6": "0",
|
||||||
|
"7": "7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{% endif %}
|
||||||
|
"MAP_PFC_PRIORITY_TO_QUEUE": {
|
||||||
|
"DEFAULT": {
|
||||||
|
"0": "0",
|
||||||
|
"1": "1",
|
||||||
|
"2": "2",
|
||||||
|
"3": "3",
|
||||||
|
"4": "4",
|
||||||
|
"5": "5",
|
||||||
|
"6": "6",
|
||||||
|
"7": "7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"TC_TO_QUEUE_MAP": {
|
||||||
|
"DEFAULT": {
|
||||||
|
"0": "0",
|
||||||
|
"1": "1",
|
||||||
|
"2": "2",
|
||||||
|
"3": "3",
|
||||||
|
"4": "4",
|
||||||
|
"5": "5",
|
||||||
|
"6": "6",
|
||||||
|
"7": "7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DSCP_TO_TC_MAP": {
|
||||||
|
"DEFAULT": {
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"SCHEDULER": {
|
||||||
|
"scheduler.0": {
|
||||||
|
"type" : "DWRR",
|
||||||
|
"weight": "1"
|
||||||
|
},
|
||||||
|
"scheduler.1": {
|
||||||
|
"type" : "DWRR",
|
||||||
|
"weight": "2"
|
||||||
|
},
|
||||||
|
"scheduler.2": {
|
||||||
|
"type" : "DWRR",
|
||||||
|
"weight": "3"
|
||||||
|
},
|
||||||
|
"scheduler.3": {
|
||||||
|
"type" : "DWRR",
|
||||||
|
"weight": "4"
|
||||||
|
},
|
||||||
|
"scheduler.4": {
|
||||||
|
"type" : "DWRR",
|
||||||
|
"weight": "5"
|
||||||
|
},
|
||||||
|
"scheduler.5": {
|
||||||
|
"type" : "DWRR",
|
||||||
|
"weight": "10"
|
||||||
|
},
|
||||||
|
"scheduler.6": {
|
||||||
|
"type" : "DWRR",
|
||||||
|
"weight": "25"
|
||||||
|
},
|
||||||
|
"scheduler.7": {
|
||||||
|
"type" : "DWRR",
|
||||||
|
"weight": "50"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"PORT_QOS_MAP": {
|
||||||
|
"{{ port_names_active }}": {
|
||||||
|
"dscp_to_tc_map" : "[DSCP_TO_TC_MAP|DEFAULT]",
|
||||||
|
"tc_to_queue_map" : "[TC_TO_QUEUE_MAP|DEFAULT]",
|
||||||
|
"tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|DEFAULT]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"QUEUE": {
|
||||||
|
{% for port in PORT_ACTIVE %}
|
||||||
|
"{{ port }}|0": {
|
||||||
|
"scheduler" : "[SCHEDULER|scheduler.0]"
|
||||||
|
},
|
||||||
|
{% endfor %}
|
||||||
|
{% for port in PORT_ACTIVE %}
|
||||||
|
"{{ port }}|1": {
|
||||||
|
"scheduler" : "[SCHEDULER|scheduler.1]"
|
||||||
|
},
|
||||||
|
{% endfor %}
|
||||||
|
{% for port in PORT_ACTIVE %}
|
||||||
|
"{{ port }}|2": {
|
||||||
|
"scheduler": "[SCHEDULER|scheduler.2]"
|
||||||
|
},
|
||||||
|
{% endfor %}
|
||||||
|
{% for port in PORT_ACTIVE %}
|
||||||
|
"{{ port }}|3": {
|
||||||
|
"scheduler": "[SCHEDULER|scheduler.3]"
|
||||||
|
},
|
||||||
|
{% endfor %}
|
||||||
|
{% for port in PORT_ACTIVE %}
|
||||||
|
"{{ port }}|4": {
|
||||||
|
"scheduler": "[SCHEDULER|scheduler.4]"
|
||||||
|
},
|
||||||
|
{% endfor %}
|
||||||
|
{% for port in PORT_ACTIVE %}
|
||||||
|
"{{ port }}|5": {
|
||||||
|
"scheduler": "[SCHEDULER|scheduler.5]"
|
||||||
|
},
|
||||||
|
{% endfor %}
|
||||||
|
{% for port in PORT_ACTIVE %}
|
||||||
|
"{{ port }}|6": {
|
||||||
|
"scheduler": "[SCHEDULER|scheduler.6]"
|
||||||
|
},
|
||||||
|
{% endfor %}
|
||||||
|
{% for port in PORT_ACTIVE %}
|
||||||
|
"{{ port }}|7": {
|
||||||
|
"scheduler": "[SCHEDULER|scheduler.7]"
|
||||||
|
}{% if not loop.last %},{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/td3-s5296f-25g.config.bcm
|
@ -0,0 +1,2 @@
|
|||||||
|
m0 load 0 0x0 /usr/share/sonic/hwsku/linkscan_led_fw.bin
|
||||||
|
m0 load 0 0x3800 /usr/share/sonic/hwsku/custom_led.bin
|
@ -0,0 +1,595 @@
|
|||||||
|
os=unix
|
||||||
|
portmap_5.0=5:25
|
||||||
|
portmap_6.0=6:25
|
||||||
|
portmap_7.0=7:25
|
||||||
|
portmap_8.0=8:25
|
||||||
|
portmap_13.0=13:25
|
||||||
|
portmap_14.0=14:25
|
||||||
|
portmap_15.0=15:25
|
||||||
|
portmap_16.0=16:25
|
||||||
|
portmap_17.0=17:25
|
||||||
|
portmap_18.0=18:25
|
||||||
|
portmap_19.0=19:25
|
||||||
|
portmap_20.0=20:25
|
||||||
|
portmap_37.0=37:25
|
||||||
|
portmap_38.0=38:25
|
||||||
|
portmap_39.0=39:25
|
||||||
|
portmap_40.0=40:25
|
||||||
|
portmap_45.0=45:25
|
||||||
|
portmap_46.0=46:25
|
||||||
|
portmap_47.0=47:25
|
||||||
|
portmap_48.0=48:25
|
||||||
|
portmap_53.0=53:25
|
||||||
|
portmap_54.0=54:25
|
||||||
|
portmap_55.0=55:25
|
||||||
|
portmap_56.0=56:25
|
||||||
|
portmap_67.0=65:25
|
||||||
|
portmap_68.0=66:25
|
||||||
|
portmap_69.0=67:25
|
||||||
|
portmap_70.0=68:25
|
||||||
|
portmap_75.0=73:25
|
||||||
|
portmap_76.0=74:25
|
||||||
|
portmap_77.0=75:25
|
||||||
|
portmap_78.0=76:25
|
||||||
|
portmap_91.0=89:25
|
||||||
|
portmap_92.0=90:25
|
||||||
|
portmap_93.0=91:25
|
||||||
|
portmap_94.0=92:25
|
||||||
|
portmap_103.0=101:25
|
||||||
|
portmap_104.0=102:25
|
||||||
|
portmap_105.0=103:25
|
||||||
|
portmap_106.0=104:25
|
||||||
|
portmap_111.0=109:25
|
||||||
|
portmap_112.0=110:25
|
||||||
|
portmap_113.0=111:25
|
||||||
|
portmap_114.0=112:25
|
||||||
|
portmap_119.0=117:25
|
||||||
|
portmap_120.0=118:25
|
||||||
|
portmap_121.0=119:25
|
||||||
|
portmap_122.0=120:25
|
||||||
|
portmap_1.0=1:25
|
||||||
|
portmap_2.0=2:25
|
||||||
|
portmap_3.0=3:25
|
||||||
|
portmap_4.0=4:25
|
||||||
|
portmap_9.0=9:25
|
||||||
|
portmap_10.0=10:25
|
||||||
|
portmap_11.0=11:25
|
||||||
|
portmap_12.0=12:25
|
||||||
|
portmap_25.0=25:25
|
||||||
|
portmap_26.0=26:25
|
||||||
|
portmap_27.0=27:25
|
||||||
|
portmap_28.0=28:25
|
||||||
|
portmap_33.0=33:25
|
||||||
|
portmap_34.0=34:25
|
||||||
|
portmap_35.0=35:25
|
||||||
|
portmap_36.0=36:25
|
||||||
|
portmap_41.0=41:25
|
||||||
|
portmap_42.0=42:25
|
||||||
|
portmap_43.0=43:25
|
||||||
|
portmap_44.0=44:25
|
||||||
|
portmap_49.0=49:25
|
||||||
|
portmap_50.0=50:25
|
||||||
|
portmap_51.0=51:25
|
||||||
|
portmap_52.0=52:25
|
||||||
|
portmap_71.0=69:25
|
||||||
|
portmap_72.0=70:25
|
||||||
|
portmap_73.0=71:25
|
||||||
|
portmap_74.0=72:25
|
||||||
|
portmap_79.0=77:25
|
||||||
|
portmap_80.0=78:25
|
||||||
|
portmap_81.0=79:25
|
||||||
|
portmap_82.0=80:25
|
||||||
|
portmap_83.0=81:25
|
||||||
|
portmap_84.0=82:25
|
||||||
|
portmap_85.0=83:25
|
||||||
|
portmap_86.0=84:25
|
||||||
|
portmap_99.0=97:25
|
||||||
|
portmap_100.0=98:25
|
||||||
|
portmap_101.0=99:25
|
||||||
|
portmap_102.0=100:25
|
||||||
|
portmap_107.0=105:25
|
||||||
|
portmap_108.0=106:25
|
||||||
|
portmap_109.0=107:25
|
||||||
|
portmap_110.0=108:25
|
||||||
|
portmap_115.0=113:25
|
||||||
|
portmap_116.0=114:25
|
||||||
|
portmap_117.0=115:25
|
||||||
|
portmap_118.0=116:25
|
||||||
|
portmap_29.0=29:100
|
||||||
|
portmap_21.0=21:100
|
||||||
|
portmap_127.0=125:100
|
||||||
|
portmap_87.0=85:100
|
||||||
|
portmap_57.0=57:100
|
||||||
|
portmap_61.0=61:100
|
||||||
|
portmap_123.0=121:100
|
||||||
|
portmap_95.0=93:100
|
||||||
|
phy_chain_tx_lane_map_physical{5.0}=0x0123
|
||||||
|
phy_chain_rx_lane_map_physical{5.0}=0x0123
|
||||||
|
phy_chain_tx_lane_map_physical{13.0}=0x0123
|
||||||
|
phy_chain_rx_lane_map_physical{13.0}=0x0123
|
||||||
|
phy_chain_tx_lane_map_physical{17.0}=0x0123
|
||||||
|
phy_chain_rx_lane_map_physical{17.0}=0x0123
|
||||||
|
phy_chain_tx_lane_map_physical{37.0}=0x0123
|
||||||
|
phy_chain_rx_lane_map_physical{37.0}=0x0123
|
||||||
|
phy_chain_tx_lane_map_physical{45.0}=0x0123
|
||||||
|
phy_chain_rx_lane_map_physical{45.0}=0x0123
|
||||||
|
phy_chain_tx_lane_map_physical{53.0}=0x0123
|
||||||
|
phy_chain_rx_lane_map_physical{53.0}=0x0123
|
||||||
|
phy_chain_tx_lane_map_physical{65.0}=0x3210
|
||||||
|
phy_chain_rx_lane_map_physical{65.0}=0x3210
|
||||||
|
phy_chain_tx_lane_map_physical{73.0}=0x3210
|
||||||
|
phy_chain_rx_lane_map_physical{73.0}=0x3210
|
||||||
|
phy_chain_tx_lane_map_physical{89.0}=0x3210
|
||||||
|
phy_chain_rx_lane_map_physical{89.0}=0x3210
|
||||||
|
phy_chain_tx_lane_map_physical{101.0}=0x3210
|
||||||
|
phy_chain_rx_lane_map_physical{101.0}=0x3210
|
||||||
|
phy_chain_tx_lane_map_physical{109.0}=0x3210
|
||||||
|
phy_chain_rx_lane_map_physical{109.0}=0x3210
|
||||||
|
phy_chain_tx_lane_map_physical{117.0}=0x3210
|
||||||
|
phy_chain_rx_lane_map_physical{117.0}=0x3210
|
||||||
|
phy_chain_tx_lane_map_physical{1.0}=0x1032
|
||||||
|
phy_chain_rx_lane_map_physical{1.0}=0x1032
|
||||||
|
phy_chain_tx_lane_map_physical{9.0}=0x1032
|
||||||
|
phy_chain_rx_lane_map_physical{9.0}=0x1032
|
||||||
|
phy_chain_tx_lane_map_physical{25.0}=0x1032
|
||||||
|
phy_chain_rx_lane_map_physical{25.0}=0x1032
|
||||||
|
phy_chain_tx_lane_map_physical{33.0}=0x1032
|
||||||
|
phy_chain_rx_lane_map_physical{33.0}=0x1032
|
||||||
|
phy_chain_tx_lane_map_physical{41.0}=0x1032
|
||||||
|
phy_chain_rx_lane_map_physical{41.0}=0x1032
|
||||||
|
phy_chain_tx_lane_map_physical{49.0}=0x2031
|
||||||
|
phy_chain_rx_lane_map_physical{49.0}=0x2031
|
||||||
|
phy_chain_tx_lane_map_physical{69.0}=0x2301
|
||||||
|
phy_chain_rx_lane_map_physical{69.0}=0x2301
|
||||||
|
phy_chain_tx_lane_map_physical{77.0}=0x1302
|
||||||
|
phy_chain_rx_lane_map_physical{77.0}=0x1302
|
||||||
|
phy_chain_tx_lane_map_physical{81.0}=0x2301
|
||||||
|
phy_chain_rx_lane_map_physical{81.0}=0x2301
|
||||||
|
phy_chain_tx_lane_map_physical{97.0}=0x2301
|
||||||
|
phy_chain_rx_lane_map_physical{97.0}=0x2301
|
||||||
|
phy_chain_tx_lane_map_physical{105.0}=0x2301
|
||||||
|
phy_chain_rx_lane_map_physical{105.0}=0x2301
|
||||||
|
phy_chain_tx_lane_map_physical{113.0}=0x2301
|
||||||
|
phy_chain_rx_lane_map_physical{113.0}=0x2301
|
||||||
|
phy_chain_tx_lane_map_physical{29.0}=0x0123
|
||||||
|
phy_chain_rx_lane_map_physical{29.0}=0x3201
|
||||||
|
phy_chain_tx_lane_map_physical{21.0}=0x3021
|
||||||
|
phy_chain_rx_lane_map_physical{21.0}=0x0312
|
||||||
|
phy_chain_tx_lane_map_physical{125.0}=0x3210
|
||||||
|
phy_chain_rx_lane_map_physical{125.0}=0x0132
|
||||||
|
phy_chain_tx_lane_map_physical{85.0}=0x0312
|
||||||
|
phy_chain_rx_lane_map_physical{85.0}=0x3021
|
||||||
|
phy_chain_tx_lane_map_physical{57.0}=0x3021
|
||||||
|
phy_chain_rx_lane_map_physical{57.0}=0x0312
|
||||||
|
phy_chain_tx_lane_map_physical{61.0}=0x3210
|
||||||
|
phy_chain_rx_lane_map_physical{61.0}=0x1230
|
||||||
|
phy_chain_tx_lane_map_physical{121.0}=0x0123
|
||||||
|
phy_chain_rx_lane_map_physical{121.0}=0x2310
|
||||||
|
phy_chain_tx_lane_map_physical{93.0}=0x0123
|
||||||
|
phy_chain_rx_lane_map_physical{93.0}=0x2301
|
||||||
|
phy_chain_tx_polarity_flip_physical{5.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{5.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{6.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{6.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{7.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{7.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{8.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{8.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{13.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{13.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{14.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{14.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{15.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{15.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{16.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{16.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{17.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{17.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{18.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{18.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{19.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{19.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{20.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{20.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{37.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{37.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{38.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{38.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{39.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{39.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{40.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{40.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{45.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{45.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{46.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{46.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{47.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{47.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{48.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{48.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{53.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{53.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{54.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{54.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{55.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{55.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{56.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{56.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{65.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{65.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{66.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{66.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{67.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{67.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{68.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{68.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{73.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{73.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{74.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{74.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{75.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{75.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{76.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{76.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{89.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{89.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{90.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{90.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{91.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{91.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{92.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{92.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{101.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{101.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{102.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{102.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{103.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{103.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{104.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{104.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{109.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{109.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{110.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{110.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{111.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{111.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{112.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{112.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{117.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{117.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{118.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{118.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{119.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{119.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{120.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{120.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{1.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{1.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{2.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{2.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{3.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{3.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{4.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{4.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{9.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{9.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{10.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{10.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{11.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{11.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{12.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{12.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{25.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{25.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{26.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{26.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{27.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{27.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{28.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{28.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{33.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{33.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{34.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{34.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{35.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{35.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{36.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{36.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{41.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{41.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{42.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{42.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{43.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{43.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{44.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{44.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{49.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{49.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{50.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{50.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{51.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{51.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{52.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{52.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{69.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{69.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{70.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{70.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{71.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{71.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{72.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{72.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{77.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{77.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{78.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{78.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{79.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{79.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{80.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{80.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{81.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{81.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{82.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{82.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{83.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{83.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{84.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{84.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{97.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{97.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{98.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{98.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{99.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{99.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{100.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{100.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{105.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{105.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{106.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{106.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{107.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{107.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{108.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{108.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{113.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{113.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{114.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{114.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{115.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{115.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{116.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{116.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{29.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{29.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{30.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{30.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{31.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{31.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{32.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{32.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{21.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{21.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{22.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{22.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{23.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{23.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{24.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{24.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{125.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{125.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{126.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{126.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{127.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{127.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{128.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{128.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{85.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{85.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{86.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{86.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{87.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{87.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{88.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{88.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{57.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{57.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{58.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{58.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{59.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{59.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{60.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{60.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{61.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{61.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{62.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{62.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{63.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{63.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{64.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{64.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{121.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{121.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{122.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{122.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{123.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{123.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{124.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{124.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{93.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{93.0}=0x1
|
||||||
|
phy_chain_tx_polarity_flip_physical{94.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{94.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{95.0}=0x1
|
||||||
|
phy_chain_rx_polarity_flip_physical{95.0}=0x0
|
||||||
|
phy_chain_tx_polarity_flip_physical{96.0}=0x0
|
||||||
|
phy_chain_rx_polarity_flip_physical{96.0}=0x1
|
||||||
|
dport_map_enable=1
|
||||||
|
dport_map_port_5=1
|
||||||
|
dport_map_port_6=2
|
||||||
|
dport_map_port_7=3
|
||||||
|
dport_map_port_8=4
|
||||||
|
dport_map_port_13=5
|
||||||
|
dport_map_port_14=6
|
||||||
|
dport_map_port_15=7
|
||||||
|
dport_map_port_16=8
|
||||||
|
dport_map_port_17=9
|
||||||
|
dport_map_port_18=10
|
||||||
|
dport_map_port_19=11
|
||||||
|
dport_map_port_20=12
|
||||||
|
dport_map_port_37=13
|
||||||
|
dport_map_port_38=14
|
||||||
|
dport_map_port_39=15
|
||||||
|
dport_map_port_40=16
|
||||||
|
dport_map_port_45=17
|
||||||
|
dport_map_port_46=18
|
||||||
|
dport_map_port_47=19
|
||||||
|
dport_map_port_48=20
|
||||||
|
dport_map_port_53=21
|
||||||
|
dport_map_port_54=22
|
||||||
|
dport_map_port_55=23
|
||||||
|
dport_map_port_56=24
|
||||||
|
dport_map_port_67=25
|
||||||
|
dport_map_port_68=26
|
||||||
|
dport_map_port_69=27
|
||||||
|
dport_map_port_70=28
|
||||||
|
dport_map_port_75=29
|
||||||
|
dport_map_port_76=30
|
||||||
|
dport_map_port_77=31
|
||||||
|
dport_map_port_78=32
|
||||||
|
dport_map_port_91=33
|
||||||
|
dport_map_port_92=34
|
||||||
|
dport_map_port_93=35
|
||||||
|
dport_map_port_94=36
|
||||||
|
dport_map_port_103=37
|
||||||
|
dport_map_port_104=38
|
||||||
|
dport_map_port_105=39
|
||||||
|
dport_map_port_106=40
|
||||||
|
dport_map_port_111=41
|
||||||
|
dport_map_port_112=42
|
||||||
|
dport_map_port_113=43
|
||||||
|
dport_map_port_114=44
|
||||||
|
dport_map_port_119=45
|
||||||
|
dport_map_port_120=46
|
||||||
|
dport_map_port_121=47
|
||||||
|
dport_map_port_122=48
|
||||||
|
dport_map_port_1=49
|
||||||
|
dport_map_port_2=50
|
||||||
|
dport_map_port_3=51
|
||||||
|
dport_map_port_4=52
|
||||||
|
dport_map_port_9=53
|
||||||
|
dport_map_port_10=54
|
||||||
|
dport_map_port_11=55
|
||||||
|
dport_map_port_12=56
|
||||||
|
dport_map_port_25=57
|
||||||
|
dport_map_port_26=58
|
||||||
|
dport_map_port_27=59
|
||||||
|
dport_map_port_28=60
|
||||||
|
dport_map_port_33=61
|
||||||
|
dport_map_port_34=62
|
||||||
|
dport_map_port_35=63
|
||||||
|
dport_map_port_36=64
|
||||||
|
dport_map_port_41=65
|
||||||
|
dport_map_port_42=66
|
||||||
|
dport_map_port_43=67
|
||||||
|
dport_map_port_44=68
|
||||||
|
dport_map_port_49=69
|
||||||
|
dport_map_port_50=70
|
||||||
|
dport_map_port_51=71
|
||||||
|
dport_map_port_52=72
|
||||||
|
dport_map_port_71=73
|
||||||
|
dport_map_port_72=74
|
||||||
|
dport_map_port_73=75
|
||||||
|
dport_map_port_74=76
|
||||||
|
dport_map_port_79=77
|
||||||
|
dport_map_port_80=78
|
||||||
|
dport_map_port_81=79
|
||||||
|
dport_map_port_82=80
|
||||||
|
dport_map_port_83=81
|
||||||
|
dport_map_port_84=82
|
||||||
|
dport_map_port_85=83
|
||||||
|
dport_map_port_86=84
|
||||||
|
dport_map_port_99=85
|
||||||
|
dport_map_port_100=86
|
||||||
|
dport_map_port_101=87
|
||||||
|
dport_map_port_102=88
|
||||||
|
dport_map_port_107=89
|
||||||
|
dport_map_port_108=90
|
||||||
|
dport_map_port_109=91
|
||||||
|
dport_map_port_110=92
|
||||||
|
dport_map_port_115=93
|
||||||
|
dport_map_port_116=94
|
||||||
|
dport_map_port_117=95
|
||||||
|
dport_map_port_118=96
|
||||||
|
dport_map_port_29=97
|
||||||
|
dport_map_port_30=98
|
||||||
|
dport_map_port_31=99
|
||||||
|
dport_map_port_32=100
|
||||||
|
dport_map_port_21=101
|
||||||
|
dport_map_port_22=102
|
||||||
|
dport_map_port_23=103
|
||||||
|
dport_map_port_24=104
|
||||||
|
dport_map_port_127=105
|
||||||
|
dport_map_port_128=106
|
||||||
|
dport_map_port_129=107
|
||||||
|
dport_map_port_130=108
|
||||||
|
dport_map_port_87=109
|
||||||
|
dport_map_port_88=110
|
||||||
|
dport_map_port_89=111
|
||||||
|
dport_map_port_90=112
|
||||||
|
dport_map_port_57=113
|
||||||
|
dport_map_port_58=114
|
||||||
|
dport_map_port_59=115
|
||||||
|
dport_map_port_60=116
|
||||||
|
dport_map_port_61=117
|
||||||
|
dport_map_port_62=118
|
||||||
|
dport_map_port_63=119
|
||||||
|
dport_map_port_64=120
|
||||||
|
dport_map_port_123=121
|
||||||
|
dport_map_port_124=122
|
||||||
|
dport_map_port_125=123
|
||||||
|
dport_map_port_126=124
|
||||||
|
dport_map_port_95=125
|
||||||
|
dport_map_port_96=126
|
||||||
|
dport_map_port_97=127
|
||||||
|
dport_map_port_98=128
|
||||||
|
|
||||||
|
dpp_clock_ratio=2:3
|
||||||
|
oversubscribe_mode=1
|
||||||
|
core_clock_frequency=1525
|
||||||
|
l2xmsg_mode=1
|
||||||
|
pbmp_oversubscribe=0x7fffffffffffffff9fffffffffffffffe
|
||||||
|
pbmp_xport_xe=0x7fffffffffffffff9fffffffffffffffe
|
||||||
|
ifp_inports_support_enable=1
|
||||||
|
port_flex_enable=1
|
||||||
|
phy_an_c73=3
|
||||||
|
l2xmsg_hostbuf_size=8192
|
||||||
|
module_64ports=0
|
||||||
|
tdma_intr_enable=1
|
||||||
|
ipv6_lpm_128b_enable=1
|
||||||
|
stat_if_parity_enable=1
|
||||||
|
bcm_tunnel_term_compatible_mode=1
|
||||||
|
table_dma_enable=1
|
||||||
|
schan_intr_enable=0
|
||||||
|
parity_enable=1
|
||||||
|
parity_correction=1
|
||||||
|
miim_intr_enable=1
|
||||||
|
tdma_timeout_usec=5000000
|
||||||
|
max_vp_lags=0
|
||||||
|
mmu_lossless=0
|
||||||
|
pdma_descriptor_prefetch_enable=1
|
||||||
|
pktdma_poll_mode_channel_bitmap=1
|
||||||
|
l3_max_ecmp_mode.0=1
|
||||||
|
ptp_ts_pll_fref=50000000
|
||||||
|
ptp_bs_fref_0=50000000
|
||||||
|
ptp_bs_fref_1=50000000
|
||||||
|
|
||||||
|
l3_alpm_enable=2
|
||||||
|
l3_alpm_ipv6_128b_bkt_rsvd=1
|
||||||
|
l2_mem_entries=40960
|
||||||
|
l3_mem_entries=40960
|
||||||
|
l3_max_ecmp_mode=1
|
||||||
|
|
||||||
|
stable_size=0x5500000
|
||||||
|
|
||||||
|
mmu_init_config="TD3-DELL-lossless"
|
||||||
|
sai_preinit_cmd_file=/usr/share/sonic/hwsku/sai_preinit_cmd.soc
|
1
device/dell/x86_64-dellemc_s5296f_c3538-r0/default_sku
Normal file
1
device/dell/x86_64-dellemc_s5296f_c3538-r0/default_sku
Normal file
@ -0,0 +1 @@
|
|||||||
|
DellEMC-S5296f-P-25G t1
|
@ -0,0 +1,2 @@
|
|||||||
|
CONSOLE_PORT=0x3f8
|
||||||
|
CONSOLE_DEV=0
|
@ -0,0 +1,6 @@
|
|||||||
|
# LED microprocessor initialization for Dell S5232
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#Led0
|
||||||
|
led auto on
|
||||||
|
led start
|
442
device/dell/x86_64-dellemc_s5296f_c3538-r0/media_settings.json
Normal file
442
device/dell/x86_64-dellemc_s5296f_c3538-r0/media_settings.json
Normal file
@ -0,0 +1,442 @@
|
|||||||
|
{
|
||||||
|
"GLOBAL_MEDIA_SETTINGS": {
|
||||||
|
"1-32": {
|
||||||
|
"QSFP28-40GBASE-CR4-1M":{
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x16440A",
|
||||||
|
"lane1":"0x16440A",
|
||||||
|
"lane2":"0x16440A",
|
||||||
|
"lane3":"0x16440A"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"QSFP28-40GBASE-CR4-2M":{
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x18420A",
|
||||||
|
"lane1":"0x18420A",
|
||||||
|
"lane2":"0x18420A",
|
||||||
|
"lane3":"0x18420A"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"QSFP28-40GBASE-CR4-3M":{
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x1A400A",
|
||||||
|
"lane1":"0x1A400A",
|
||||||
|
"lane2":"0x1A400A",
|
||||||
|
"lane3":"0x1A400A"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"QSFP28-40GBASE-CR4-4M":{
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x1A400A",
|
||||||
|
"lane1":"0x1A400A",
|
||||||
|
"lane2":"0x1A400A",
|
||||||
|
"lane3":"0x1A400A"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"QSFP28-40GBASE-CR4-5M":{
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x1A400A",
|
||||||
|
"lane1":"0x1A400A",
|
||||||
|
"lane2":"0x1A400A",
|
||||||
|
"lane3":"0x1A400A"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"QSFP28-40GBASE-CR4-7M":{
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x1A400A",
|
||||||
|
"lane1":"0x1A400A",
|
||||||
|
"lane2":"0x1A400A",
|
||||||
|
"lane3":"0x1A400A"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"QSFP28-40GBASE-CR4-10M":{
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x1A400A",
|
||||||
|
"lane1":"0x1A400A",
|
||||||
|
"lane2":"0x1A400A",
|
||||||
|
"lane3":"0x1A400A"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"QSFP+-40GBASE-CR4-1M":{
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x16440A",
|
||||||
|
"lane1":"0x16440A",
|
||||||
|
"lane2":"0x16440A",
|
||||||
|
"lane3":"0x16440A"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"QSFP+-40GBASE-CR4-2M":{
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x18420A",
|
||||||
|
"lane1":"0x18420A",
|
||||||
|
"lane2":"0x18420A",
|
||||||
|
"lane3":"0x18420A"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"QSFP+-40GBASE-CR4-3M":{
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x1A400A",
|
||||||
|
"lane1":"0x1A400A",
|
||||||
|
"lane2":"0x1A400A",
|
||||||
|
"lane3":"0x1A400A"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"QSFP+-40GBASE-CR4-4M":{
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x1A400A",
|
||||||
|
"lane1":"0x1A400A",
|
||||||
|
"lane2":"0x1A400A",
|
||||||
|
"lane3":"0x1A400A"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"QSFP+-40GBASE-CR4-5M":{
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x1A400A",
|
||||||
|
"lane1":"0x1A400A",
|
||||||
|
"lane2":"0x1A400A",
|
||||||
|
"lane3":"0x1A400A"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"QSFP+-40GBASE-CR4-7M":{
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x1A400A",
|
||||||
|
"lane1":"0x1A400A",
|
||||||
|
"lane2":"0x1A400A",
|
||||||
|
"lane3":"0x1A400A"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"QSFP+-40GBASE-CR4-10M":{
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x1A400A",
|
||||||
|
"lane1":"0x1A400A",
|
||||||
|
"lane2":"0x1A400A",
|
||||||
|
"lane3":"0x1A400A"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"PORT_MEDIA_SETTINGS": {
|
||||||
|
"1": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x164509",
|
||||||
|
"lane1":"0x164509",
|
||||||
|
"lane2":"0x164509",
|
||||||
|
"lane3":"0x164509"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x164509",
|
||||||
|
"lane1":"0x164509",
|
||||||
|
"lane2":"0x164509",
|
||||||
|
"lane3":"0x164509"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x144808",
|
||||||
|
"lane1":"0x144808",
|
||||||
|
"lane2":"0x144808",
|
||||||
|
"lane3":"0x144808"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x144808",
|
||||||
|
"lane1":"0x144808",
|
||||||
|
"lane2":"0x144808",
|
||||||
|
"lane3":"0x144808"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x144808",
|
||||||
|
"lane1":"0x144808",
|
||||||
|
"lane2":"0x144808",
|
||||||
|
"lane3":"0x144808"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x124A08",
|
||||||
|
"lane1":"0x124A08",
|
||||||
|
"lane2":"0x124A08",
|
||||||
|
"lane3":"0x124A08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x124A08",
|
||||||
|
"lane1":"0x124A08",
|
||||||
|
"lane2":"0x124A08",
|
||||||
|
"lane3":"0x124A08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x124A08",
|
||||||
|
"lane1":"0x124A08",
|
||||||
|
"lane2":"0x124A08",
|
||||||
|
"lane3":"0x124A08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x124A08",
|
||||||
|
"lane1":"0x124A08",
|
||||||
|
"lane2":"0x124A08",
|
||||||
|
"lane3":"0x124A08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x124A08",
|
||||||
|
"lane1":"0x124A08",
|
||||||
|
"lane2":"0x124A08",
|
||||||
|
"lane3":"0x124A08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x124A08",
|
||||||
|
"lane1":"0x124A08",
|
||||||
|
"lane2":"0x124A08",
|
||||||
|
"lane3":"0x124A08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x124A08",
|
||||||
|
"lane1":"0x124A08",
|
||||||
|
"lane2":"0x124A08",
|
||||||
|
"lane3":"0x124A08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"13": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x124A08",
|
||||||
|
"lane1":"0x124A08",
|
||||||
|
"lane2":"0x124A08",
|
||||||
|
"lane3":"0x124A08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"14": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x124A08",
|
||||||
|
"lane1":"0x124A08",
|
||||||
|
"lane2":"0x124A08",
|
||||||
|
"lane3":"0x124A08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"15": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x0E4E08",
|
||||||
|
"lane1":"0x0E4E08",
|
||||||
|
"lane2":"0x0E4E08",
|
||||||
|
"lane3":"0x0E4E08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"16": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x124A08",
|
||||||
|
"lane1":"0x124A08",
|
||||||
|
"lane2":"0x124A08",
|
||||||
|
"lane3":"0x124A08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"17": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x0E4E08",
|
||||||
|
"lane1":"0x0E4E08",
|
||||||
|
"lane2":"0x0E4E08",
|
||||||
|
"lane3":"0x0E4E08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"18": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x0E4E08",
|
||||||
|
"lane1":"0x0E4E08",
|
||||||
|
"lane2":"0x0E4E08",
|
||||||
|
"lane3":"0x0E4E08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"19": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x0E4E08",
|
||||||
|
"lane1":"0x0E4E08",
|
||||||
|
"lane2":"0x0E4E08",
|
||||||
|
"lane3":"0x0E4E08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"20": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x0E4E08",
|
||||||
|
"lane1":"0x0E4E08",
|
||||||
|
"lane2":"0x0E4E08",
|
||||||
|
"lane3":"0x0E4E08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"21": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x124A08",
|
||||||
|
"lane1":"0x124A08",
|
||||||
|
"lane2":"0x124A08",
|
||||||
|
"lane3":"0x124A08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"22": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x124A08",
|
||||||
|
"lane1":"0x124A08",
|
||||||
|
"lane2":"0x124A08",
|
||||||
|
"lane3":"0x124A08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"23": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x124A08",
|
||||||
|
"lane1":"0x124A08",
|
||||||
|
"lane2":"0x124A08",
|
||||||
|
"lane3":"0x124A08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"24": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x124A08",
|
||||||
|
"lane1":"0x124A08",
|
||||||
|
"lane2":"0x124A08",
|
||||||
|
"lane3":"0x124A08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"25": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x124A08",
|
||||||
|
"lane1":"0x124A08",
|
||||||
|
"lane2":"0x124A08",
|
||||||
|
"lane3":"0x124A08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"26": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x124A08",
|
||||||
|
"lane1":"0x124A08",
|
||||||
|
"lane2":"0x124A08",
|
||||||
|
"lane3":"0x124A08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"27": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x124A08",
|
||||||
|
"lane1":"0x124A08",
|
||||||
|
"lane2":"0x124A08",
|
||||||
|
"lane3":"0x124A08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"28": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x124A08",
|
||||||
|
"lane1":"0x124A08",
|
||||||
|
"lane2":"0x124A08",
|
||||||
|
"lane3":"0x124A08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"29": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x124A08",
|
||||||
|
"lane1":"0x124A08",
|
||||||
|
"lane2":"0x124A08",
|
||||||
|
"lane3":"0x124A08"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"30": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x144808",
|
||||||
|
"lane1":"0x144808",
|
||||||
|
"lane2":"0x144808",
|
||||||
|
"lane3":"0x144808"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"31": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x144808",
|
||||||
|
"lane1":"0x144808",
|
||||||
|
"lane2":"0x144808",
|
||||||
|
"lane3":"0x144808"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"32": {
|
||||||
|
"Default": {
|
||||||
|
"preemphasis": {
|
||||||
|
"lane0":"0x144808",
|
||||||
|
"lane1":"0x144808",
|
||||||
|
"lane2":"0x144808",
|
||||||
|
"lane3":"0x144808"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
32
device/dell/x86_64-dellemc_s5296f_c3538-r0/plugins/eeprom.py
Normal file
32
device/dell/x86_64-dellemc_s5296f_c3538-r0/plugins/eeprom.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
# DellEMC S5296f
|
||||||
|
#
|
||||||
|
# Platform and model specific eeprom subclass, inherits from the base class,
|
||||||
|
# and provides the followings:
|
||||||
|
# - the eeprom format definition
|
||||||
|
# - specific encoder/decoder if there is special need
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
import os.path
|
||||||
|
|
||||||
|
try:
|
||||||
|
from sonic_eeprom import eeprom_tlvinfo
|
||||||
|
except ImportError, e:
|
||||||
|
raise ImportError (str(e) + "- required module not found")
|
||||||
|
|
||||||
|
|
||||||
|
class board(eeprom_tlvinfo.TlvInfoDecoder):
|
||||||
|
|
||||||
|
def __init__(self, name, path, cpld_root, ro):
|
||||||
|
self.eeprom_path = None
|
||||||
|
for b in (0, 1):
|
||||||
|
f = '/sys/class/i2c-adapter/i2c-{0}/{0}-0050/eeprom'.format(b)
|
||||||
|
if os.path.exists(f):
|
||||||
|
self.eeprom_path = f
|
||||||
|
break
|
||||||
|
if self.eeprom_path is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
super(board, self).__init__(self.eeprom_path, 0, '', True)
|
@ -0,0 +1,98 @@
|
|||||||
|
#
|
||||||
|
# psuutil.py
|
||||||
|
# Platform-specific PSU status interface for SONiC
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
import logging
|
||||||
|
import commands
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
S5296F_MAX_PSUS = 2
|
||||||
|
IPMI_PSU_DATA = "docker exec -it pmon ipmitool sdr list"
|
||||||
|
IPMI_PSU_DATA_DOCKER = "ipmitool sdr list"
|
||||||
|
PSU_PRESENCE = "PSU{0}_stat"
|
||||||
|
# Use this for older firmware
|
||||||
|
# PSU_PRESENCE="PSU{0}_prsnt"
|
||||||
|
ipmi_sdr_list = ""
|
||||||
|
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
def isDockerEnv(self):
|
||||||
|
num_docker = open('/proc/self/cgroup', 'r').read().count(":/docker")
|
||||||
|
if num_docker > 0:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Fetch a BMC register
|
||||||
|
def get_pmc_register(self, reg_name):
|
||||||
|
|
||||||
|
global ipmi_sdr_list
|
||||||
|
ipmi_cmd = IPMI_PSU_DATA
|
||||||
|
dockerenv = self.isDockerEnv()
|
||||||
|
if dockerenv == True:
|
||||||
|
ipmi_cmd = IPMI_PSU_DATA_DOCKER
|
||||||
|
|
||||||
|
status, ipmi_sdr_list = commands.getstatusoutput(ipmi_cmd)
|
||||||
|
|
||||||
|
if status:
|
||||||
|
logging.error('Failed to execute:' + ipmi_sdr_list)
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
for item in ipmi_sdr_list.split("\n"):
|
||||||
|
if reg_name in item:
|
||||||
|
output = item.strip()
|
||||||
|
|
||||||
|
if not output:
|
||||||
|
print('\nFailed to fetch: ' + reg_name + ' sensor ')
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
output = output.split('|')[1]
|
||||||
|
|
||||||
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
|
return output
|
||||||
|
|
||||||
|
def get_num_psus(self):
|
||||||
|
"""
|
||||||
|
Retrieves the number of PSUs available on the device
|
||||||
|
:return: An integer, the number of PSUs available on the device
|
||||||
|
"""
|
||||||
|
S5296F_MAX_PSUS = 2
|
||||||
|
return S5296F_MAX_PSUS
|
||||||
|
|
||||||
|
def get_psu_status(self, index):
|
||||||
|
"""
|
||||||
|
Retrieves the oprational status of power supply unit (PSU) defined
|
||||||
|
by index <index>
|
||||||
|
:param index: An integer, index of the PSU of which to query status
|
||||||
|
:return: Boolean, True if PSU is operating properly, False if PSU is\
|
||||||
|
faulty
|
||||||
|
"""
|
||||||
|
# Until psu_status is implemented this is hardcoded temporarily
|
||||||
|
|
||||||
|
status = 1
|
||||||
|
return status
|
||||||
|
|
||||||
|
def get_psu_presence(self, index):
|
||||||
|
"""
|
||||||
|
Retrieves the presence status of power supply unit (PSU) defined
|
||||||
|
by index <index>
|
||||||
|
:param index: An integer, index of the PSU of which to query status
|
||||||
|
:return: Boolean, True if PSU is plugged, False if not
|
||||||
|
"""
|
||||||
|
cmd_status, psu_status = commands.getstatusoutput('ipmitool raw 0x04 0x2d ' + hex(0x30 + index) + " | awk '{print substr($0,9,1)}'")
|
||||||
|
return 1 if psu_status == '1' else 0
|
||||||
|
|
554
device/dell/x86_64-dellemc_s5296f_c3538-r0/plugins/sfputil.py
Normal file
554
device/dell/x86_64-dellemc_s5296f_c3538-r0/plugins/sfputil.py
Normal file
@ -0,0 +1,554 @@
|
|||||||
|
# sfputil.py
|
||||||
|
#
|
||||||
|
# Platform-specific SFP transceiver interface for SONiC
|
||||||
|
#
|
||||||
|
# For S5296F-ON, hardware version X01
|
||||||
|
|
||||||
|
try:
|
||||||
|
import struct
|
||||||
|
import time
|
||||||
|
from sonic_sfp.sfputilbase import SfpUtilBase
|
||||||
|
from os import *
|
||||||
|
from mmap import *
|
||||||
|
import io
|
||||||
|
from sonic_sfp.sff8436 import sff8436InterfaceId
|
||||||
|
from sonic_sfp.sff8436 import sff8436Dom
|
||||||
|
from sonic_sfp.sff8472 import sff8472Dom
|
||||||
|
|
||||||
|
except ImportError as e:
|
||||||
|
raise ImportError("%s - required module not found" % str(e))
|
||||||
|
|
||||||
|
|
||||||
|
#definitions of the offset and width for values in DOM info eeprom
|
||||||
|
QSFP_DOM_REV_OFFSET = 1
|
||||||
|
QSFP_DOM_REV_WIDTH = 1
|
||||||
|
QSFP_TEMPE_OFFSET = 22
|
||||||
|
QSFP_TEMPE_WIDTH = 2
|
||||||
|
QSFP_VOLT_OFFSET = 26
|
||||||
|
QSFP_VOLT_WIDTH = 2
|
||||||
|
QSFP_CHANNL_MON_OFFSET = 34
|
||||||
|
QSFP_CHANNL_MON_WIDTH = 16
|
||||||
|
QSFP_CHANNL_MON_WITH_TX_POWER_WIDTH = 24
|
||||||
|
QSFP_MODULE_THRESHOLD_OFFSET = 128
|
||||||
|
QSFP_MODULE_THRESHOLD_WIDTH = 24
|
||||||
|
QSFP_CHANNL_THRESHOLD_OFFSET = 176
|
||||||
|
QSFP_CHANNL_THRESHOLD_WIDTH = 16
|
||||||
|
QSFP_CHANNL_MON_MASK_OFFSET = 242
|
||||||
|
QSFP_CHANNL_MON_MASK_WIDTH = 4
|
||||||
|
|
||||||
|
SFP_TEMPE_OFFSET = 96
|
||||||
|
SFP_TEMPE_WIDTH = 2
|
||||||
|
SFP_VOLT_OFFSET = 98
|
||||||
|
SFP_VOLT_WIDTH = 2
|
||||||
|
SFP_MODULE_THRESHOLD_OFFSET = 0
|
||||||
|
SFP_MODULE_THRESHOLD_WIDTH = 56
|
||||||
|
|
||||||
|
XCVR_DOM_CAPABILITY_OFFSET = 92
|
||||||
|
XCVR_DOM_CAPABILITY_WIDTH = 1
|
||||||
|
|
||||||
|
|
||||||
|
class SfpUtil(SfpUtilBase):
|
||||||
|
"""Platform-specific SfpUtil class"""
|
||||||
|
|
||||||
|
PORT_START = 1
|
||||||
|
PORT_END = 104
|
||||||
|
PORTS_IN_BLOCK = 104
|
||||||
|
|
||||||
|
BASE_RES_PATH = "/sys/bus/pci/devices/0000:04:00.0/resource0"
|
||||||
|
|
||||||
|
_port_to_eeprom_mapping = {}
|
||||||
|
|
||||||
|
|
||||||
|
_global_port_pres_dict = {}
|
||||||
|
|
||||||
|
@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(97, self.PORTS_IN_BLOCK + 1)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def port_to_eeprom_mapping(self):
|
||||||
|
return self._port_to_eeprom_mapping
|
||||||
|
|
||||||
|
def pci_mem_read(self, mm, offset):
|
||||||
|
mm.seek(offset)
|
||||||
|
read_data_stream=mm.read(4)
|
||||||
|
reg_val=struct.unpack('I',read_data_stream)
|
||||||
|
mem_val = str(reg_val)[1:-2]
|
||||||
|
# print "reg_val read:%x"%reg_val
|
||||||
|
return mem_val
|
||||||
|
|
||||||
|
def pci_mem_write(self, mm, offset, data):
|
||||||
|
mm.seek(offset)
|
||||||
|
# print "data to write:%x"%data
|
||||||
|
mm.write(struct.pack('I',data))
|
||||||
|
|
||||||
|
def pci_set_value(self, resource, val, offset):
|
||||||
|
fd = open(resource, O_RDWR)
|
||||||
|
mm = mmap(fd, 0)
|
||||||
|
val = self.pci_mem_write(mm, offset, val)
|
||||||
|
mm.close()
|
||||||
|
close(fd)
|
||||||
|
return val
|
||||||
|
|
||||||
|
def pci_get_value(self, resource, offset):
|
||||||
|
fd = open(resource, O_RDWR)
|
||||||
|
mm = mmap(fd, 0)
|
||||||
|
val = self.pci_mem_read(mm, offset)
|
||||||
|
mm.close()
|
||||||
|
close(fd)
|
||||||
|
return val
|
||||||
|
|
||||||
|
def init_global_port_presence(self):
|
||||||
|
for port_num in range(self.port_start, (self.port_end + 1)):
|
||||||
|
presence = self.get_presence(port_num)
|
||||||
|
if(presence):
|
||||||
|
self._global_port_pres_dict[port_num] = '1'
|
||||||
|
else:
|
||||||
|
self._global_port_pres_dict[port_num] = '0'
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
eeprom_path = "/sys/class/i2c-adapter/i2c-{0}/{0}-0050/eeprom"
|
||||||
|
|
||||||
|
for x in range(self.port_start, self.port_end + 1):
|
||||||
|
self.port_to_eeprom_mapping[x] = eeprom_path.format(x + 1)
|
||||||
|
self.init_global_port_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
|
||||||
|
|
||||||
|
# Port offset starts with 0x4004
|
||||||
|
port_offset = 16388 + ((port_num-1) * 16)
|
||||||
|
|
||||||
|
status = self.pci_get_value(self.BASE_RES_PATH, port_offset)
|
||||||
|
reg_value = int(status)
|
||||||
|
|
||||||
|
# Absence of status throws error
|
||||||
|
if (reg_value == "" ):
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Mask off bit for presence
|
||||||
|
mask = (1 << 1)
|
||||||
|
if (port_num > 96):
|
||||||
|
mask = (1 << 4)
|
||||||
|
|
||||||
|
# ModPrsL is active low
|
||||||
|
if reg_value & mask == 0:
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
def get_low_power_mode(self, port_num):
|
||||||
|
|
||||||
|
# Check for invalid port_num
|
||||||
|
if port_num < self.port_start or port_num > self.port_end:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Port offset starts with 0x4000
|
||||||
|
port_offset = 16384 + ((port_num-1) * 16)
|
||||||
|
|
||||||
|
status = self.pci_get_value(self.BASE_RES_PATH, port_offset)
|
||||||
|
reg_value = int(status)
|
||||||
|
|
||||||
|
# Absence of status throws error
|
||||||
|
if (reg_value == "" ):
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Mask off 4th bit for presence
|
||||||
|
mask = (1 << 6)
|
||||||
|
|
||||||
|
# LPMode is active high
|
||||||
|
if reg_value & mask == 0:
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
def set_low_power_mode(self, port_num, lpmode):
|
||||||
|
|
||||||
|
# Check for invalid port_num
|
||||||
|
if port_num < self.port_start or port_num > self.port_end:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Port offset starts with 0x4000
|
||||||
|
port_offset = 16384 + ((port_num-1) * 16)
|
||||||
|
|
||||||
|
status = self.pci_get_value(self.BASE_RES_PATH, port_offset)
|
||||||
|
reg_value = int(status)
|
||||||
|
|
||||||
|
# Absence of status throws error
|
||||||
|
if (reg_value == "" ):
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Mask off 4th bit for presence
|
||||||
|
mask = (1 << 6)
|
||||||
|
|
||||||
|
# LPMode is active high; set or clear the bit accordingly
|
||||||
|
if lpmode is True:
|
||||||
|
reg_value = reg_value | mask
|
||||||
|
else:
|
||||||
|
reg_value = reg_value & ~mask
|
||||||
|
|
||||||
|
# Convert our register value back to a hex string and write back
|
||||||
|
self.pci_set_value(self.BASE_RES_PATH, reg_value, port_offset)
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
def reset(self, port_num):
|
||||||
|
|
||||||
|
# Check for invalid port_num
|
||||||
|
if port_num < self.port_start or port_num > self.port_end:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Port offset starts with 0x4000
|
||||||
|
port_offset = 16384 + ((port_num-1) * 16)
|
||||||
|
|
||||||
|
status = self.pci_get_value(self.BASE_RES_PATH, port_offset)
|
||||||
|
reg_value = int(status)
|
||||||
|
|
||||||
|
# Absence of status throws error
|
||||||
|
if (reg_value == "" ):
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Mask off 4th bit for presence
|
||||||
|
mask = (1 << 6)
|
||||||
|
|
||||||
|
# ResetL is active low
|
||||||
|
reg_value = reg_value & ~mask
|
||||||
|
|
||||||
|
# Convert our register value back to a hex string and write back
|
||||||
|
self.pci_set_value(self.BASE_RES_PATH, reg_value, port_offset)
|
||||||
|
|
||||||
|
# Sleep 1 second to allow it to settle
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
reg_value = reg_value | mask
|
||||||
|
|
||||||
|
# Convert our register value back to a hex string and write back
|
||||||
|
self.pci_set_value(self.BASE_RES_PATH, reg_value, port_offset)
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
def get_transceiver_change_event(self, timeout=0):
|
||||||
|
port_dict = {}
|
||||||
|
sleep_time_ms = 500 # Poll interval, in milliseconds
|
||||||
|
sleep_time = sleep_time_ms / 1000.0
|
||||||
|
elapsed_time_ms = 0
|
||||||
|
while True:
|
||||||
|
for port_num in range(self.port_start, (self.port_end + 1)):
|
||||||
|
presence = self.get_presence(port_num)
|
||||||
|
if(presence and self._global_port_pres_dict[port_num] == '0'):
|
||||||
|
self._global_port_pres_dict[port_num] = '1'
|
||||||
|
port_dict[port_num] = '1'
|
||||||
|
elif(not presence and
|
||||||
|
self._global_port_pres_dict[port_num] == '1'):
|
||||||
|
self._global_port_pres_dict[port_num] = '0'
|
||||||
|
port_dict[port_num] = '0'
|
||||||
|
|
||||||
|
if(len(port_dict) > 0):
|
||||||
|
break
|
||||||
|
|
||||||
|
if len(port_dict) > 0:
|
||||||
|
break
|
||||||
|
if timeout != 0:
|
||||||
|
elapsed_time_ms += sleep_time_ms
|
||||||
|
if elapsed_time_ms > timeout:
|
||||||
|
break
|
||||||
|
time.sleep(sleep_time)
|
||||||
|
|
||||||
|
return True, port_dict
|
||||||
|
|
||||||
|
|
||||||
|
def get_transceiver_dom_info_dict(self, port_num):
|
||||||
|
transceiver_dom_info_dict = {}
|
||||||
|
|
||||||
|
dom_info_dict_keys = ['temperature', 'voltage', 'rx1power',
|
||||||
|
'rx2power', 'rx3power', 'rx4power',
|
||||||
|
'tx1bias', 'tx2bias', 'tx3bias',
|
||||||
|
'tx4bias', 'tx1power', 'tx2power',
|
||||||
|
'tx3power', 'tx4power',
|
||||||
|
]
|
||||||
|
transceiver_dom_info_dict = dict.fromkeys(dom_info_dict_keys, 'N/A')
|
||||||
|
|
||||||
|
if port_num in self.qsfp_ports:
|
||||||
|
offset = 0
|
||||||
|
offset_xcvr = 128
|
||||||
|
file_path = self._get_port_eeprom_path(port_num, self.IDENTITY_EEPROM_ADDR)
|
||||||
|
if not self._sfp_eeprom_present(file_path, 0):
|
||||||
|
return None
|
||||||
|
|
||||||
|
try:
|
||||||
|
sysfsfile_eeprom = io.open(file_path, mode="rb", buffering=0)
|
||||||
|
except IOError:
|
||||||
|
print("Error: reading sysfs file %s" % file_path)
|
||||||
|
return None
|
||||||
|
|
||||||
|
sfpd_obj = sff8436Dom()
|
||||||
|
if sfpd_obj is None:
|
||||||
|
return transceiver_dom_info_dict
|
||||||
|
|
||||||
|
sfpi_obj = sff8436InterfaceId()
|
||||||
|
if sfpi_obj is None:
|
||||||
|
return transceiver_dom_info_dict
|
||||||
|
|
||||||
|
# QSFP capability byte parse, through this byte can know whether it support tx_power or not.
|
||||||
|
# TODO: in the future when decided to migrate to support SFF-8636 instead of SFF-8436,
|
||||||
|
# need to add more code for determining the capability and version compliance
|
||||||
|
# in SFF-8636 dom capability definitions evolving with the versions.
|
||||||
|
qsfp_dom_capability_raw = self._read_eeprom_specific_bytes(sysfsfile_eeprom, (offset_xcvr + XCVR_DOM_CAPABILITY_OFFSET), XCVR_DOM_CAPABILITY_WIDTH)
|
||||||
|
if qsfp_dom_capability_raw is not None:
|
||||||
|
qspf_dom_capability_data = sfpi_obj.parse_qsfp_dom_capability(qsfp_dom_capability_raw, 0)
|
||||||
|
else:
|
||||||
|
return transceiver_dom_info_dict
|
||||||
|
|
||||||
|
dom_temperature_raw = self._read_eeprom_specific_bytes(sysfsfile_eeprom, (offset + QSFP_TEMPE_OFFSET), QSFP_TEMPE_WIDTH)
|
||||||
|
if dom_temperature_raw is not None:
|
||||||
|
dom_temperature_data = sfpd_obj.parse_temperature(dom_temperature_raw, 0)
|
||||||
|
else:
|
||||||
|
return transceiver_dom_info_dict
|
||||||
|
|
||||||
|
dom_voltage_raw = self._read_eeprom_specific_bytes(sysfsfile_eeprom, (offset + QSFP_VOLT_OFFSET), QSFP_VOLT_WIDTH)
|
||||||
|
if dom_voltage_raw is not None:
|
||||||
|
dom_voltage_data = sfpd_obj.parse_voltage(dom_voltage_raw, 0)
|
||||||
|
else:
|
||||||
|
return transceiver_dom_info_dict
|
||||||
|
|
||||||
|
qsfp_dom_rev_raw = self._read_eeprom_specific_bytes(sysfsfile_eeprom, (offset + QSFP_DOM_REV_OFFSET), QSFP_DOM_REV_WIDTH)
|
||||||
|
if qsfp_dom_rev_raw is not None:
|
||||||
|
qsfp_dom_rev_data = sfpd_obj.parse_sfp_dom_rev(qsfp_dom_rev_raw, 0)
|
||||||
|
else:
|
||||||
|
return transceiver_dom_info_dict
|
||||||
|
|
||||||
|
transceiver_dom_info_dict['temperature'] = dom_temperature_data['data']['Temperature']['value']
|
||||||
|
transceiver_dom_info_dict['voltage'] = dom_voltage_data['data']['Vcc']['value']
|
||||||
|
|
||||||
|
# The tx_power monitoring is only available on QSFP which compliant with SFF-8636
|
||||||
|
# and claimed that it support tx_power with one indicator bit.
|
||||||
|
dom_channel_monitor_data = {}
|
||||||
|
qsfp_dom_rev = qsfp_dom_rev_data['data']['dom_rev']['value']
|
||||||
|
qsfp_tx_power_support = qspf_dom_capability_data['data']['Tx_power_support']['value']
|
||||||
|
if (qsfp_dom_rev[0:8] != 'SFF-8636' or (qsfp_dom_rev[0:8] == 'SFF-8636' and qsfp_tx_power_support != 'on')):
|
||||||
|
dom_channel_monitor_raw = self._read_eeprom_specific_bytes(sysfsfile_eeprom, (offset + QSFP_CHANNL_MON_OFFSET), QSFP_CHANNL_MON_WIDTH)
|
||||||
|
if dom_channel_monitor_raw is not None:
|
||||||
|
dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params(dom_channel_monitor_raw, 0)
|
||||||
|
else:
|
||||||
|
return transceiver_dom_info_dict
|
||||||
|
|
||||||
|
transceiver_dom_info_dict['tx1power'] = 'N/A'
|
||||||
|
transceiver_dom_info_dict['tx2power'] = 'N/A'
|
||||||
|
transceiver_dom_info_dict['tx3power'] = 'N/A'
|
||||||
|
transceiver_dom_info_dict['tx4power'] = 'N/A'
|
||||||
|
try:
|
||||||
|
sysfsfile_eeprom.close()
|
||||||
|
except IOError:
|
||||||
|
print("Error: closing sysfs file %s" % file_path)
|
||||||
|
return None
|
||||||
|
|
||||||
|
transceiver_dom_info_dict['temperature'] = dom_temperature_data['data']['Temperature']['value']
|
||||||
|
transceiver_dom_info_dict['voltage'] = dom_voltage_data['data']['Vcc']['value']
|
||||||
|
transceiver_dom_info_dict['rx1power'] = dom_channel_monitor_data['data']['RX1Power']['value']
|
||||||
|
transceiver_dom_info_dict['rx2power'] = dom_channel_monitor_data['data']['RX2Power']['value']
|
||||||
|
transceiver_dom_info_dict['rx3power'] = dom_channel_monitor_data['data']['RX3Power']['value']
|
||||||
|
transceiver_dom_info_dict['rx4power'] = dom_channel_monitor_data['data']['RX4Power']['value']
|
||||||
|
transceiver_dom_info_dict['tx1bias'] = dom_channel_monitor_data['data']['TX1Bias']['value']
|
||||||
|
transceiver_dom_info_dict['tx2bias'] = dom_channel_monitor_data['data']['TX2Bias']['value']
|
||||||
|
transceiver_dom_info_dict['tx3bias'] = dom_channel_monitor_data['data']['TX3Bias']['value']
|
||||||
|
transceiver_dom_info_dict['tx4bias'] = dom_channel_monitor_data['data']['TX4Bias']['value']
|
||||||
|
|
||||||
|
else:
|
||||||
|
offset = 256
|
||||||
|
file_path = self._get_port_eeprom_path(port_num, self.DOM_EEPROM_ADDR)
|
||||||
|
if not self._sfp_eeprom_present(file_path, 0):
|
||||||
|
return None
|
||||||
|
|
||||||
|
try:
|
||||||
|
sysfsfile_eeprom = io.open(file_path,"rb",0)
|
||||||
|
except IOError:
|
||||||
|
print("Error: reading sysfs file %s" % file_path)
|
||||||
|
return None
|
||||||
|
|
||||||
|
sfpd_obj = sff8472Dom(None,1)
|
||||||
|
if sfpd_obj is None:
|
||||||
|
return None
|
||||||
|
dom_temperature_raw = self._read_eeprom_specific_bytes(sysfsfile_eeprom, (offset + SFP_TEMPE_OFFSET),
|
||||||
|
SFP_TEMPE_WIDTH)
|
||||||
|
if dom_temperature_raw is not None:
|
||||||
|
dom_temperature_data = sfpd_obj.parse_temperature(dom_temperature_raw, 0)
|
||||||
|
else:
|
||||||
|
return transceiver_dom_info_dict
|
||||||
|
|
||||||
|
dom_voltage_raw = self._read_eeprom_specific_bytes(sysfsfile_eeprom, (offset + SFP_VOLT_OFFSET),
|
||||||
|
SFP_VOLT_WIDTH)
|
||||||
|
if dom_voltage_raw is not None:
|
||||||
|
dom_voltage_data = sfpd_obj.parse_voltage(dom_voltage_raw, 0)
|
||||||
|
else:
|
||||||
|
return transceiver_dom_info_dict
|
||||||
|
|
||||||
|
dom_channel_monitor_raw = self._read_eeprom_specific_bytes(sysfsfile_eeprom, (offset + SFP_MODULE_THRESHOLD_OFFSET),
|
||||||
|
SFP_MODULE_THRESHOLD_WIDTH)
|
||||||
|
if dom_channel_monitor_raw is not None:
|
||||||
|
dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params(dom_channel_monitor_raw, 0)
|
||||||
|
else:
|
||||||
|
return transceiver_dom_info_dict
|
||||||
|
|
||||||
|
try:
|
||||||
|
sysfsfile_eeprom.close()
|
||||||
|
except IOError:
|
||||||
|
print("Error: closing sysfs file %s" % file_path)
|
||||||
|
return None
|
||||||
|
|
||||||
|
transceiver_dom_info_dict['temperature'] = dom_temperature_data['data']['Temperature']['value']
|
||||||
|
transceiver_dom_info_dict['voltage'] = dom_voltage_data['data']['Vcc']['value']
|
||||||
|
transceiver_dom_info_dict['rx1power'] = dom_channel_monitor_data['data']['RXPower']['value']
|
||||||
|
transceiver_dom_info_dict['rx2power'] = 'N/A'
|
||||||
|
transceiver_dom_info_dict['rx3power'] = 'N/A'
|
||||||
|
transceiver_dom_info_dict['rx4power'] = 'N/A'
|
||||||
|
transceiver_dom_info_dict['tx1bias'] = dom_channel_monitor_data['data']['TXBias']['value']
|
||||||
|
transceiver_dom_info_dict['tx2bias'] = 'N/A'
|
||||||
|
transceiver_dom_info_dict['tx3bias'] = 'N/A'
|
||||||
|
transceiver_dom_info_dict['tx4bias'] = 'N/A'
|
||||||
|
transceiver_dom_info_dict['tx1power'] = dom_channel_monitor_data['data']['TXPower']['value']
|
||||||
|
transceiver_dom_info_dict['tx2power'] = 'N/A'
|
||||||
|
transceiver_dom_info_dict['tx3power'] = 'N/A'
|
||||||
|
transceiver_dom_info_dict['tx4power'] = 'N/A'
|
||||||
|
|
||||||
|
return transceiver_dom_info_dict
|
||||||
|
|
||||||
|
def get_transceiver_dom_threshold_info_dict(self, port_num):
|
||||||
|
transceiver_dom_threshold_info_dict = {}
|
||||||
|
dom_info_dict_keys = ['temphighalarm', 'temphighwarning',
|
||||||
|
'templowalarm', 'templowwarning',
|
||||||
|
'vcchighalarm', 'vcchighwarning',
|
||||||
|
'vcclowalarm', 'vcclowwarning',
|
||||||
|
'rxpowerhighalarm', 'rxpowerhighwarning',
|
||||||
|
'rxpowerlowalarm', 'rxpowerlowwarning',
|
||||||
|
'txpowerhighalarm', 'txpowerhighwarning',
|
||||||
|
'txpowerlowalarm', 'txpowerlowwarning',
|
||||||
|
'txbiashighalarm', 'txbiashighwarning',
|
||||||
|
'txbiaslowalarm', 'txbiaslowwarning'
|
||||||
|
]
|
||||||
|
transceiver_dom_threshold_info_dict = dict.fromkeys(dom_info_dict_keys, 'N/A')
|
||||||
|
|
||||||
|
if port_num in self.qsfp_ports:
|
||||||
|
file_path = self._get_port_eeprom_path(port_num, self.IDENTITY_EEPROM_ADDR)
|
||||||
|
if not self._sfp_eeprom_present(file_path, 0):
|
||||||
|
return None
|
||||||
|
|
||||||
|
try:
|
||||||
|
sysfsfile_eeprom = io.open(file_path, mode="rb", buffering=0)
|
||||||
|
except IOError:
|
||||||
|
print("Error: reading sysfs file %s" % file_path)
|
||||||
|
return None
|
||||||
|
|
||||||
|
sfpd_obj = sff8436Dom()
|
||||||
|
if sfpd_obj is None:
|
||||||
|
return transceiver_dom_threshold_info_dict
|
||||||
|
|
||||||
|
# Dom Threshold data starts from offset 384
|
||||||
|
# Revert offset back to 0 once data is retrieved
|
||||||
|
offset = 384
|
||||||
|
dom_module_threshold_raw = self._read_eeprom_specific_bytes(
|
||||||
|
sysfsfile_eeprom,
|
||||||
|
(offset + QSFP_MODULE_THRESHOLD_OFFSET),
|
||||||
|
QSFP_MODULE_THRESHOLD_WIDTH)
|
||||||
|
if dom_module_threshold_raw is not None:
|
||||||
|
dom_module_threshold_data = sfpd_obj.parse_module_threshold_values(dom_module_threshold_raw, 0)
|
||||||
|
else:
|
||||||
|
return transceiver_dom_threshold_info_dict
|
||||||
|
|
||||||
|
dom_channel_threshold_raw = self._read_eeprom_specific_bytes(
|
||||||
|
sysfsfile_eeprom,
|
||||||
|
(offset + QSFP_CHANNL_THRESHOLD_OFFSET),
|
||||||
|
QSFP_CHANNL_THRESHOLD_WIDTH)
|
||||||
|
if dom_channel_threshold_raw is not None:
|
||||||
|
dom_channel_threshold_data = sfpd_obj.parse_channel_threshold_values(dom_channel_threshold_raw, 0)
|
||||||
|
else:
|
||||||
|
return transceiver_dom_threshold_info_dict
|
||||||
|
|
||||||
|
try:
|
||||||
|
sysfsfile_eeprom.close()
|
||||||
|
except IOError:
|
||||||
|
print("Error: closing sysfs file %s" % file_path)
|
||||||
|
return None
|
||||||
|
|
||||||
|
# Threshold Data
|
||||||
|
transceiver_dom_threshold_info_dict['temphighalarm'] = dom_module_threshold_data['data']['TempHighAlarm']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['temphighwarning'] = dom_module_threshold_data['data']['TempHighWarning']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['templowalarm'] = dom_module_threshold_data['data']['TempLowAlarm']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['templowwarning'] = dom_module_threshold_data['data']['TempLowWarning']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['vcchighalarm'] = dom_module_threshold_data['data']['VccHighAlarm']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['vcchighwarning'] = dom_module_threshold_data['data']['VccHighWarning']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['vcclowalarm'] = dom_module_threshold_data['data']['VccLowAlarm']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['vcclowwarning'] = dom_module_threshold_data['data']['VccLowWarning']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['rxpowerhighalarm'] = dom_channel_threshold_data['data']['RxPowerHighAlarm']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['rxpowerhighwarning'] = dom_channel_threshold_data['data']['RxPowerHighWarning']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['rxpowerlowalarm'] = dom_channel_threshold_data['data']['RxPowerLowAlarm']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['rxpowerlowwarning'] = dom_channel_threshold_data['data']['RxPowerLowWarning']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['txbiashighalarm'] = dom_channel_threshold_data['data']['TxBiasHighAlarm']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['txbiashighwarning'] = dom_channel_threshold_data['data']['TxBiasHighWarning']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['txbiaslowalarm'] = dom_channel_threshold_data['data']['TxBiasLowAlarm']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['txbiaslowwarning'] = dom_channel_threshold_data['data']['TxBiasLowWarning']['value']
|
||||||
|
|
||||||
|
else:
|
||||||
|
offset = 256
|
||||||
|
file_path = self._get_port_eeprom_path(port_num, self.DOM_EEPROM_ADDR)
|
||||||
|
if not self._sfp_eeprom_present(file_path, 0):
|
||||||
|
return None
|
||||||
|
|
||||||
|
try:
|
||||||
|
sysfsfile_eeprom = io.open(file_path,"rb",0)
|
||||||
|
except IOError:
|
||||||
|
print("Error: reading sysfs file %s" % file_path)
|
||||||
|
return None
|
||||||
|
|
||||||
|
sfpd_obj = sff8472Dom(None,1)
|
||||||
|
if sfpd_obj is None:
|
||||||
|
return transceiver_dom_threshold_info_dict
|
||||||
|
|
||||||
|
dom_module_threshold_raw = self._read_eeprom_specific_bytes(sysfsfile_eeprom,
|
||||||
|
(offset + SFP_MODULE_THRESHOLD_OFFSET), SFP_MODULE_THRESHOLD_WIDTH)
|
||||||
|
|
||||||
|
if dom_module_threshold_raw is not None:
|
||||||
|
dom_module_threshold_data = sfpd_obj.parse_alarm_warning_threshold(dom_module_threshold_raw, 0)
|
||||||
|
else:
|
||||||
|
return transceiver_dom_threshold_info_dict
|
||||||
|
|
||||||
|
try:
|
||||||
|
sysfsfile_eeprom.close()
|
||||||
|
except IOError:
|
||||||
|
print("Error: closing sysfs file %s" % file_path)
|
||||||
|
return None
|
||||||
|
|
||||||
|
#Threshold Data
|
||||||
|
transceiver_dom_threshold_info_dict['temphighalarm'] = dom_module_threshold_data['data']['TempHighAlarm']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['templowalarm'] = dom_module_threshold_data['data']['TempLowAlarm']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['temphighwarning'] = dom_module_threshold_data['data']['TempHighWarning']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['templowwarning'] = dom_module_threshold_data['data']['TempLowWarning']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['vcchighalarm'] = dom_module_threshold_data['data']['VoltageHighAlarm']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['vcclowalarm'] = dom_module_threshold_data['data']['VoltageLowAlarm']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['vcchighwarning'] = dom_module_threshold_data['data']['VoltageHighWarning']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['vcclowwarning'] = dom_module_threshold_data['data']['VoltageLowWarning']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['txbiashighalarm'] = dom_module_threshold_data['data']['BiasHighAlarm']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['txbiaslowalarm'] = dom_module_threshold_data['data']['BiasLowAlarm']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['txbiashighwarning'] = dom_module_threshold_data['data']['BiasHighWarning']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['txbiaslowwarning'] = dom_module_threshold_data['data']['BiasLowWarning']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['txpowerhighalarm'] = dom_module_threshold_data['data']['TXPowerHighAlarm']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['txpowerlowalarm'] = dom_module_threshold_data['data']['TXPowerLowAlarm']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['txpowerhighwarning'] = dom_module_threshold_data['data']['TXPowerHighWarning']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['txpowerlowwarning'] = dom_module_threshold_data['data']['TXPowerLowWarning']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['rxpowerhighalarm'] = dom_module_threshold_data['data']['RXPowerHighAlarm']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['rxpowerlowalarm'] = dom_module_threshold_data['data']['RXPowerLowAlarm']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['rxpowerhighwarning'] = dom_module_threshold_data['data']['RXPowerHighWarning']['value']
|
||||||
|
transceiver_dom_threshold_info_dict['rxpowerlowwarning'] = dom_module_threshold_data['data']['RXPowerLowWarning']['value']
|
||||||
|
|
||||||
|
return transceiver_dom_threshold_info_dict
|
||||||
|
|
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"skip_sensors": true,
|
||||||
|
"skip_fancontrol": true,
|
||||||
|
"skip_ledd": true,
|
||||||
|
"skip_psud": true,
|
||||||
|
"skip_syseepromd": true,
|
||||||
|
"skip_thermalctld": true
|
||||||
|
}
|
@ -10,6 +10,7 @@ $(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(DELL_S6000_PLATFORM_MODULE) \
|
|||||||
$(DELL_S5232F_PLATFORM_MODULE) \
|
$(DELL_S5232F_PLATFORM_MODULE) \
|
||||||
$(DELL_S5248F_PLATFORM_MODULE) \
|
$(DELL_S5248F_PLATFORM_MODULE) \
|
||||||
$(DELL_Z9332F_PLATFORM_MODULE) \
|
$(DELL_Z9332F_PLATFORM_MODULE) \
|
||||||
|
$(DELL_S5296F_PLATFORM_MODULE) \
|
||||||
$(DELL_Z9100_PLATFORM_MODULE) \
|
$(DELL_Z9100_PLATFORM_MODULE) \
|
||||||
$(DELL_S6100_PLATFORM_MODULE) \
|
$(DELL_S6100_PLATFORM_MODULE) \
|
||||||
$(INGRASYS_S8900_54XC_PLATFORM_MODULE) \
|
$(INGRASYS_S8900_54XC_PLATFORM_MODULE) \
|
||||||
|
@ -7,6 +7,7 @@ DELL_Z9264F_PLATFORM_MODULE_VERSION = 1.1
|
|||||||
DELL_S5232F_PLATFORM_MODULE_VERSION = 1.1
|
DELL_S5232F_PLATFORM_MODULE_VERSION = 1.1
|
||||||
DELL_Z9332F_PLATFORM_MODULE_VERSION = 1.1
|
DELL_Z9332F_PLATFORM_MODULE_VERSION = 1.1
|
||||||
DELL_S5248F_PLATFORM_MODULE_VERSION = 1.1
|
DELL_S5248F_PLATFORM_MODULE_VERSION = 1.1
|
||||||
|
DELL_S5296F_PLATFORM_MODULE_VERSION = 1.1
|
||||||
|
|
||||||
export DELL_S6000_PLATFORM_MODULE_VERSION
|
export DELL_S6000_PLATFORM_MODULE_VERSION
|
||||||
export DELL_Z9100_PLATFORM_MODULE_VERSION
|
export DELL_Z9100_PLATFORM_MODULE_VERSION
|
||||||
@ -15,6 +16,7 @@ export DELL_Z9264F_PLATFORM_MODULE_VERSION
|
|||||||
export DELL_S5232F_PLATFORM_MODULE_VERSION
|
export DELL_S5232F_PLATFORM_MODULE_VERSION
|
||||||
export DELL_Z9332F_PLATFORM_MODULE_VERSION
|
export DELL_Z9332F_PLATFORM_MODULE_VERSION
|
||||||
export DELL_S5248F_PLATFORM_MODULE_VERSION
|
export DELL_S5248F_PLATFORM_MODULE_VERSION
|
||||||
|
export DELL_S5296F_PLATFORM_MODULE_VERSION
|
||||||
|
|
||||||
DELL_Z9100_PLATFORM_MODULE = platform-modules-z9100_$(DELL_Z9100_PLATFORM_MODULE_VERSION)_amd64.deb
|
DELL_Z9100_PLATFORM_MODULE = platform-modules-z9100_$(DELL_Z9100_PLATFORM_MODULE_VERSION)_amd64.deb
|
||||||
$(DELL_Z9100_PLATFORM_MODULE)_SRC_PATH = $(PLATFORM_PATH)/sonic-platform-modules-dell
|
$(DELL_Z9100_PLATFORM_MODULE)_SRC_PATH = $(PLATFORM_PATH)/sonic-platform-modules-dell
|
||||||
@ -47,5 +49,9 @@ DELL_S5248F_PLATFORM_MODULE = platform-modules-s5248f_$(DELL_S5248F_PLATFORM_MOD
|
|||||||
$(DELL_S5248F_PLATFORM_MODULE)_PLATFORM = x86_64-dellemc_s5248f_c3538-r0
|
$(DELL_S5248F_PLATFORM_MODULE)_PLATFORM = x86_64-dellemc_s5248f_c3538-r0
|
||||||
$(eval $(call add_extra_package,$(DELL_Z9100_PLATFORM_MODULE),$(DELL_S5248F_PLATFORM_MODULE)))
|
$(eval $(call add_extra_package,$(DELL_Z9100_PLATFORM_MODULE),$(DELL_S5248F_PLATFORM_MODULE)))
|
||||||
|
|
||||||
|
DELL_S5296F_PLATFORM_MODULE = platform-modules-s5296f_$(DELL_S5296F_PLATFORM_MODULE_VERSION)_amd64.deb
|
||||||
|
$(DELL_S5296F_PLATFORM_MODULE)_PLATFORM = x86_64-dellemc_s5296f_c3538-r0
|
||||||
|
$(eval $(call add_extra_package,$(DELL_Z9100_PLATFORM_MODULE),$(DELL_S5296F_PLATFORM_MODULE)))
|
||||||
|
|
||||||
#flashrom tool
|
#flashrom tool
|
||||||
$(shell ./$(PLATFORM_PATH)/sonic-platform-modules-dell/tools/flashrom.sh > /dev/null 2>&1)
|
$(shell ./$(PLATFORM_PATH)/sonic-platform-modules-dell/tools/flashrom.sh > /dev/null 2>&1)
|
||||||
|
@ -39,3 +39,8 @@ Package: platform-modules-z9332f
|
|||||||
Architecture: amd64
|
Architecture: amd64
|
||||||
Depends: linux-image-4.19.0-9-2-amd64-unsigned
|
Depends: linux-image-4.19.0-9-2-amd64-unsigned
|
||||||
Description: kernel modules for platform devices such as fan, led, sfp
|
Description: kernel modules for platform devices such as fan, led, sfp
|
||||||
|
|
||||||
|
Package: platform-modules-s5296f
|
||||||
|
Architecture: amd64
|
||||||
|
Depends: linux-image-4.9.0-9-2-amd64
|
||||||
|
Description: kernel modules for platform devices such as fan, led, sfp
|
||||||
|
@ -0,0 +1,39 @@
|
|||||||
|
#!/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 S5296f board.
|
||||||
|
### END INIT INFO
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
echo -n "Setting up board... "
|
||||||
|
|
||||||
|
# /usr/local/bin/iom_power_on.sh
|
||||||
|
/usr/local/bin/s5296f_platform.sh init
|
||||||
|
|
||||||
|
echo "done."
|
||||||
|
;;
|
||||||
|
|
||||||
|
stop)
|
||||||
|
/usr/local/bin/s5296f_platform.sh deinit
|
||||||
|
echo "done."
|
||||||
|
;;
|
||||||
|
|
||||||
|
force-reload|restart)
|
||||||
|
echo "Not supported"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Usage: /etc/init.d/platform-modules-s5296f.init {start|stop}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
@ -0,0 +1,9 @@
|
|||||||
|
s5296f/scripts/s5296f_platform.sh usr/local/bin
|
||||||
|
s5296f/scripts/platform_sensors.py usr/local/bin
|
||||||
|
s5296f/scripts/sensors usr/bin
|
||||||
|
s5296f/scripts/pcisysfs.py usr/bin
|
||||||
|
s5296f/cfg/s5296f-modules.conf etc/modules-load.d
|
||||||
|
s5296f/systemd/platform-modules-s5296f.service etc/systemd/system
|
||||||
|
common/platform_reboot usr/share/sonic/device/x86_64-dellemc_s5296f_c3538-r0
|
||||||
|
common/fw-updater usr/local/bin
|
||||||
|
common/onie_mode_set usr/local/bin
|
@ -0,0 +1,10 @@
|
|||||||
|
# postinst script for S5296f
|
||||||
|
|
||||||
|
# Enable Dell-S5296f-platform-service
|
||||||
|
depmod -a
|
||||||
|
systemctl enable platform-modules-s5296f.service
|
||||||
|
systemctl start platform-modules-s5296f.service
|
||||||
|
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
|
@ -5,7 +5,7 @@ export INSTALL_MOD_DIR:=extra
|
|||||||
KVERSION ?= $(shell uname -r)
|
KVERSION ?= $(shell uname -r)
|
||||||
KERNEL_SRC := /lib/modules/$(KVERSION)
|
KERNEL_SRC := /lib/modules/$(KVERSION)
|
||||||
MOD_SRC_DIR:= $(shell pwd)
|
MOD_SRC_DIR:= $(shell pwd)
|
||||||
MODULE_DIRS:= s6000 z9100 s6100 z9264f s5232f s5248f z9332f
|
MODULE_DIRS:= s6000 z9100 s6100 z9264f s5232f s5248f z9332f s5296f
|
||||||
COMMON_DIR := common
|
COMMON_DIR := common
|
||||||
|
|
||||||
%:
|
%:
|
||||||
|
@ -0,0 +1,19 @@
|
|||||||
|
# /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
|
||||||
|
|
||||||
|
ipmi_devintf
|
||||||
|
ipmi_si
|
||||||
|
dell_s5296f_fpga_ocores
|
||||||
|
i2c_ocores
|
@ -0,0 +1,2 @@
|
|||||||
|
obj-m := dell_s5296f_fpga_ocores.o
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
102
platform/broadcom/sonic-platform-modules-dell/s5296f/scripts/pcisysfs.py
Executable file
102
platform/broadcom/sonic-platform-modules-dell/s5296f/scripts/pcisysfs.py
Executable file
@ -0,0 +1,102 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# Copyright (c) 2015 Dell Inc.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR
|
||||||
|
# CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT
|
||||||
|
# LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS
|
||||||
|
# FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||||
|
#
|
||||||
|
# See the Apache Version 2.0 License for specific language governing
|
||||||
|
# permissions and limitations under the License.
|
||||||
|
|
||||||
|
import struct
|
||||||
|
import sys
|
||||||
|
import getopt
|
||||||
|
from os import *
|
||||||
|
from mmap import *
|
||||||
|
|
||||||
|
def usage():
|
||||||
|
''' This is the Usage Method '''
|
||||||
|
|
||||||
|
print '\t\t pcisysfs.py --get --offset <offset> --res <resource>'
|
||||||
|
print '\t\t pcisysfs.py --set --val <val> --offset <offset> --res <resource>'
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
def pci_mem_read(mm,offset):
|
||||||
|
mm.seek(offset)
|
||||||
|
read_data_stream=mm.read(4)
|
||||||
|
print ""
|
||||||
|
reg_val=struct.unpack('I',read_data_stream)
|
||||||
|
print "reg_val read:%x"%reg_val
|
||||||
|
return reg_val
|
||||||
|
|
||||||
|
def pci_mem_write(mm,offset,data):
|
||||||
|
mm.seek(offset)
|
||||||
|
print "data to write:%x"%data
|
||||||
|
mm.write(struct.pack('I',data))
|
||||||
|
|
||||||
|
def pci_set_value(resource,val,offset):
|
||||||
|
fd=open(resource,O_RDWR)
|
||||||
|
mm=mmap(fd,0)
|
||||||
|
pci_mem_write(mm,offset,val)
|
||||||
|
|
||||||
|
def pci_get_value(resource,offset):
|
||||||
|
fd=open(resource,O_RDWR)
|
||||||
|
mm=mmap(fd,0)
|
||||||
|
pci_mem_read(mm,offset)
|
||||||
|
|
||||||
|
def main(argv):
|
||||||
|
|
||||||
|
''' The main function will read the user input from the
|
||||||
|
command line argument and process the request '''
|
||||||
|
|
||||||
|
opts = ''
|
||||||
|
val = ''
|
||||||
|
choice = ''
|
||||||
|
resource = ''
|
||||||
|
offset = ''
|
||||||
|
|
||||||
|
try:
|
||||||
|
opts, args = getopt.getopt(argv, "hgsv:" , \
|
||||||
|
["val=","res=","offset=","help", "get", "set"])
|
||||||
|
|
||||||
|
except getopt.GetoptError:
|
||||||
|
usage()
|
||||||
|
|
||||||
|
for opt,arg in opts:
|
||||||
|
|
||||||
|
if opt in ('-h','--help'):
|
||||||
|
choice = 'help'
|
||||||
|
|
||||||
|
elif opt in ('-g', '--get'):
|
||||||
|
choice = 'get'
|
||||||
|
|
||||||
|
elif opt in ('-s', '--set'):
|
||||||
|
choice = 'set'
|
||||||
|
|
||||||
|
elif opt == '--res':
|
||||||
|
resource = arg
|
||||||
|
|
||||||
|
elif opt == '--val':
|
||||||
|
val = int(arg,16)
|
||||||
|
|
||||||
|
elif opt == '--offset':
|
||||||
|
offset = int(arg,16)
|
||||||
|
|
||||||
|
if choice == 'set' and val != '' and offset !='' and resource !='':
|
||||||
|
pci_set_value(resource,val,offset)
|
||||||
|
|
||||||
|
elif choice == 'get' and offset != '' and resource !='':
|
||||||
|
pci_get_value(resource,offset)
|
||||||
|
|
||||||
|
else:
|
||||||
|
usage()
|
||||||
|
|
||||||
|
#Calling the main method
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main(sys.argv[1:])
|
||||||
|
|
242
platform/broadcom/sonic-platform-modules-dell/s5296f/scripts/platform_sensors.py
Executable file
242
platform/broadcom/sonic-platform-modules-dell/s5296f/scripts/platform_sensors.py
Executable file
@ -0,0 +1,242 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# On S5296F, the BaseBoard Management Controller is an
|
||||||
|
# autonomous subsystem provides monitoring and management
|
||||||
|
# facility independent of the host CPU. IPMI standard
|
||||||
|
# protocol is used with ipmitool to fetch sensor details.
|
||||||
|
# Current script support X00 board only. X01 support will
|
||||||
|
# be added soon. This provies support for the
|
||||||
|
# following objects:
|
||||||
|
# * Onboard temperature sensors
|
||||||
|
# * FAN trays
|
||||||
|
# * PSU
|
||||||
|
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import logging
|
||||||
|
import commands
|
||||||
|
|
||||||
|
S5296F_MAX_FAN_TRAYS = 4
|
||||||
|
S5296F_MAX_PSUS = 2
|
||||||
|
IPMI_SENSOR_DATA = "ipmitool sdr list"
|
||||||
|
IPMI_SENSOR_DUMP = "/tmp/sdr"
|
||||||
|
|
||||||
|
FAN_PRESENCE = "FAN{0}_prsnt"
|
||||||
|
PSU_PRESENCE = "PSU{0}_stat"
|
||||||
|
# Use this for older firmware
|
||||||
|
# PSU_PRESENCE="PSU{0}_prsnt"
|
||||||
|
|
||||||
|
IPMI_PSU1_DATA_DOCKER = "ipmitool raw 0x04 0x2d 0x31 | awk '{print substr($0,9,1)}'"
|
||||||
|
IPMI_PSU2_DATA_DOCKER = "ipmitool raw 0x04 0x2d 0x32 | awk '{print substr($0,9,1)}'"
|
||||||
|
ipmi_sdr_list = ""
|
||||||
|
|
||||||
|
# Dump sensor registers
|
||||||
|
|
||||||
|
|
||||||
|
def ipmi_sensor_dump():
|
||||||
|
|
||||||
|
global ipmi_sdr_list
|
||||||
|
ipmi_cmd = IPMI_SENSOR_DATA
|
||||||
|
status, ipmi_sdr_list = commands.getstatusoutput(ipmi_cmd)
|
||||||
|
|
||||||
|
if status:
|
||||||
|
logging.error('Failed to execute:' + ipmi_sdr_list)
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
# Fetch a BMC register
|
||||||
|
|
||||||
|
|
||||||
|
def get_pmc_register(reg_name):
|
||||||
|
|
||||||
|
output = None
|
||||||
|
for item in ipmi_sdr_list.split("\n"):
|
||||||
|
if reg_name in item:
|
||||||
|
output = item.strip()
|
||||||
|
|
||||||
|
if output is None:
|
||||||
|
print('\nFailed to fetch: ' + reg_name + ' sensor ')
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
output = output.split('|')[1]
|
||||||
|
|
||||||
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
|
return output
|
||||||
|
|
||||||
|
|
||||||
|
# Print the information for temperature sensors
|
||||||
|
|
||||||
|
|
||||||
|
def print_temperature_sensors():
|
||||||
|
|
||||||
|
print("\nOnboard Temperature Sensors:")
|
||||||
|
|
||||||
|
print ' PT_Left_temp: ',\
|
||||||
|
(get_pmc_register('PT_Left_temp'))
|
||||||
|
print ' PT_Mid_temp: ',\
|
||||||
|
(get_pmc_register('PT_Mid_temp'))
|
||||||
|
print ' PT_Right_temp: ',\
|
||||||
|
(get_pmc_register('PT_Right_temp'))
|
||||||
|
print ' Broadcom Temp: ',\
|
||||||
|
(get_pmc_register('NPU_Near_temp'))
|
||||||
|
print ' Inlet Airflow Temp: ',\
|
||||||
|
(get_pmc_register('ILET_AF_temp'))
|
||||||
|
print ' CPU Temp: ',\
|
||||||
|
(get_pmc_register('CPU_temp'))
|
||||||
|
|
||||||
|
ipmi_sensor_dump()
|
||||||
|
|
||||||
|
print_temperature_sensors()
|
||||||
|
|
||||||
|
# Print the information for 1 Fan Tray
|
||||||
|
|
||||||
|
|
||||||
|
def print_fan_tray(tray):
|
||||||
|
|
||||||
|
Fan_Status = [' Normal', ' Abnormal']
|
||||||
|
|
||||||
|
print ' Fan Tray ' + str(tray) + ':'
|
||||||
|
|
||||||
|
if (tray == 1):
|
||||||
|
|
||||||
|
fan2_status = int(get_pmc_register('FAN1_Rear_stat'), 16)
|
||||||
|
|
||||||
|
print ' Fan Speed: ',\
|
||||||
|
get_pmc_register('FAN1_Rear_rpm')
|
||||||
|
print ' Fan State: ',\
|
||||||
|
Fan_Status[fan2_status]
|
||||||
|
|
||||||
|
elif (tray == 2):
|
||||||
|
|
||||||
|
fan2_status = int(get_pmc_register('FAN2_Rear_stat'), 16)
|
||||||
|
|
||||||
|
print ' Fan Speed: ',\
|
||||||
|
get_pmc_register('FAN2_Rear_rpm')
|
||||||
|
print ' Fan State: ',\
|
||||||
|
Fan_Status[fan2_status]
|
||||||
|
|
||||||
|
elif (tray == 3):
|
||||||
|
|
||||||
|
fan2_status = int(get_pmc_register('FAN3_Rear_stat'), 16)
|
||||||
|
|
||||||
|
print ' Fan Speed: ',\
|
||||||
|
get_pmc_register('FAN3_Rear_rpm')
|
||||||
|
print ' Fan State: ',\
|
||||||
|
Fan_Status[fan2_status]
|
||||||
|
|
||||||
|
elif (tray == 4):
|
||||||
|
|
||||||
|
fan2_status = int(get_pmc_register('FAN4_Rear_stat'), 16)
|
||||||
|
|
||||||
|
print ' Fan Speed: ',\
|
||||||
|
get_pmc_register('FAN4_Rear_rpm')
|
||||||
|
print ' Fan State: ',\
|
||||||
|
Fan_Status[fan2_status]
|
||||||
|
|
||||||
|
|
||||||
|
print('\nFan Trays:')
|
||||||
|
|
||||||
|
for tray in range(1, S5296F_MAX_FAN_TRAYS + 1):
|
||||||
|
fan_presence = FAN_PRESENCE.format(tray)
|
||||||
|
if (get_pmc_register(fan_presence)):
|
||||||
|
print_fan_tray(tray)
|
||||||
|
else:
|
||||||
|
print '\n Fan Tray ' + str(tray + 1) + ': Not present'
|
||||||
|
|
||||||
|
def get_psu_presence(index):
|
||||||
|
"""
|
||||||
|
Retrieves the presence status of power supply unit (PSU) defined
|
||||||
|
by index <index>
|
||||||
|
:param index: An integer, index of the PSU of which to query status
|
||||||
|
:return: Boolean, True if PSU is plugged, False if not
|
||||||
|
"""
|
||||||
|
status = 0
|
||||||
|
|
||||||
|
if index == 1:
|
||||||
|
status, ipmi_cmd_ret = commands.getstatusoutput(IPMI_PSU1_DATA_DOCKER)
|
||||||
|
elif index == 2:
|
||||||
|
ret_status, ipmi_cmd_ret = commands.getstatusoutput(IPMI_PSU2_DATA_DOCKER)
|
||||||
|
|
||||||
|
#if ret_status:
|
||||||
|
# print ipmi_cmd_ret
|
||||||
|
# logging.error('Failed to execute ipmitool')
|
||||||
|
# sys.exit(0)
|
||||||
|
|
||||||
|
psu_status = ipmi_cmd_ret
|
||||||
|
|
||||||
|
if psu_status == '1':
|
||||||
|
status = 1
|
||||||
|
|
||||||
|
return status
|
||||||
|
|
||||||
|
|
||||||
|
# Print the information for PSU1, PSU2
|
||||||
|
def print_psu(psu):
|
||||||
|
|
||||||
|
# print ' Input: ', Psu_Input_Type[psu_input_type]
|
||||||
|
# print ' Type: ', Psu_Type[psu_type]
|
||||||
|
|
||||||
|
# PSU FAN details
|
||||||
|
if (psu == 1):
|
||||||
|
|
||||||
|
# psu1_fan_status = int(get_pmc_register('PSU1_status'),16)
|
||||||
|
|
||||||
|
print ' PSU1:'
|
||||||
|
print ' FAN Normal Temperature: ',\
|
||||||
|
get_pmc_register('PSU1_temp')
|
||||||
|
print ' FAN AirFlow Temperature: ',\
|
||||||
|
get_pmc_register('PSU1_AF_temp')
|
||||||
|
print ' FAN RPM: ',\
|
||||||
|
get_pmc_register('PSU1_rpm')
|
||||||
|
# print ' FAN Status: ', Psu_Fan_Status[psu1_fan_status]
|
||||||
|
|
||||||
|
# PSU input & output monitors
|
||||||
|
print ' Input Voltage: ',\
|
||||||
|
get_pmc_register('PSU1_In_volt')
|
||||||
|
print ' Output Voltage: ',\
|
||||||
|
get_pmc_register('PSU1_Out_volt')
|
||||||
|
print ' Input Power: ',\
|
||||||
|
get_pmc_register('PSU1_In_watt')
|
||||||
|
print ' Output Power: ',\
|
||||||
|
get_pmc_register('PSU1_Out_watt')
|
||||||
|
print ' Input Current: ',\
|
||||||
|
get_pmc_register('PSU1_In_amp')
|
||||||
|
print ' Output Current: ',\
|
||||||
|
get_pmc_register('PSU1_Out_amp')
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
# psu2_fan_status = int(get_pmc_register('PSU1_status'),16)
|
||||||
|
print ' PSU2:'
|
||||||
|
print ' FAN Normal Temperature: ',\
|
||||||
|
get_pmc_register('PSU2_temp')
|
||||||
|
print ' FAN AirFlow Temperature: ',\
|
||||||
|
get_pmc_register('PSU2_AF_temp')
|
||||||
|
print ' FAN RPM: ',\
|
||||||
|
get_pmc_register('PSU2_rpm')
|
||||||
|
# print ' FAN Status: ', Psu_Fan_Status[psu2_fan_status]
|
||||||
|
|
||||||
|
# PSU input & output monitors
|
||||||
|
print ' Input Voltage: ',\
|
||||||
|
get_pmc_register('PSU2_In_volt')
|
||||||
|
print ' Output Voltage: ',\
|
||||||
|
get_pmc_register('PSU2_Out_volt')
|
||||||
|
print ' Input Power: ',\
|
||||||
|
get_pmc_register('PSU2_In_watt')
|
||||||
|
print ' Output Power: ',\
|
||||||
|
get_pmc_register('PSU2_Out_watt')
|
||||||
|
print ' Input Current: ',\
|
||||||
|
get_pmc_register('PSU2_In_amp')
|
||||||
|
print ' Output Current: ',\
|
||||||
|
get_pmc_register('PSU2_Out_amp')
|
||||||
|
|
||||||
|
|
||||||
|
print('\nPSUs:')
|
||||||
|
for psu in range(1, S5296F_MAX_PSUS + 1):
|
||||||
|
#psu_presence = PSU_PRESENCE.format(psu)
|
||||||
|
if (get_psu_presence(psu)):
|
||||||
|
print_psu(psu)
|
||||||
|
else:
|
||||||
|
print '\n PSU ', psu, 'Not present'
|
||||||
|
|
||||||
|
print '\n Total Power: ',\
|
||||||
|
get_pmc_register('PSU_Total_watt')
|
||||||
|
|
@ -0,0 +1,31 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
try:
|
||||||
|
import struct
|
||||||
|
from os import *
|
||||||
|
from mmap import *
|
||||||
|
|
||||||
|
except ImportError as e:
|
||||||
|
raise ImportError("%s - required module no found" % str(e))
|
||||||
|
|
||||||
|
BASE_RES_PATH = "/sys/bus/pci/devices/0000:04:00.0/resource0"
|
||||||
|
PORT_START = 0
|
||||||
|
PORT_END = 32
|
||||||
|
|
||||||
|
|
||||||
|
def pci_mem_write(mm, offset, data):
|
||||||
|
mm.seek(offset)
|
||||||
|
mm.write(struct.pack('I', data))
|
||||||
|
|
||||||
|
|
||||||
|
def pci_set_value(resource, val, offset):
|
||||||
|
fd = open(resource, O_RDWR)
|
||||||
|
mm = mmap(fd, 0)
|
||||||
|
pci_mem_write(mm, offset, val)
|
||||||
|
mm.close()
|
||||||
|
close(fd)
|
||||||
|
return val
|
||||||
|
|
||||||
|
for port_num in range(PORT_START, PORT_END+1):
|
||||||
|
port_offset = 0x400c + ((port_num) * 16)
|
||||||
|
pci_set_value(BASE_RES_PATH, 0x30, port_offset)
|
176
platform/broadcom/sonic-platform-modules-dell/s5296f/scripts/s5296f_platform.sh
Executable file
176
platform/broadcom/sonic-platform-modules-dell/s5296f/scripts/s5296f_platform.sh
Executable file
@ -0,0 +1,176 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
init_devnum() {
|
||||||
|
found=0
|
||||||
|
for devnum in 0 1; do
|
||||||
|
devname=`cat /sys/bus/i2c/devices/i2c-${devnum}/name`
|
||||||
|
# iSMT adapter can be at either dffd0000 or dfff0000
|
||||||
|
if [[ $devname == 'SMBus iSMT adapter at '* ]]; then
|
||||||
|
found=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
[ $found -eq 0 ] && echo "cannot find iSMT" && exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Attach/Detach syseeprom on CPU board
|
||||||
|
sys_eeprom() {
|
||||||
|
b=''
|
||||||
|
for bb in 0 1; do
|
||||||
|
if [ "$(cat /sys/bus/i2c/devices/i2c-${bb}/name)" = 'SMBus iSMT adapter at dff9f000' ]; then
|
||||||
|
b=$bb
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ "$b" = '' ]; then
|
||||||
|
echo "s5296f_platform: sys_eeprom : cannot find I2C bus!"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
"new_device") echo 24c16 0x50 > /sys/bus/i2c/devices/i2c-${b}/$1
|
||||||
|
;;
|
||||||
|
|
||||||
|
"delete_device") echo 0x50 > /sys/bus/i2c/devices/i2c-${b}/$1
|
||||||
|
;;
|
||||||
|
|
||||||
|
*) echo "s5296f_platform: sys_eeprom : invalid command !"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
#Attach/Detach the MUX connecting all QSFPs
|
||||||
|
switch_board_qsfp_mux() {
|
||||||
|
case $1 in
|
||||||
|
"new_device")
|
||||||
|
for ((i=603;i<=615;i++));
|
||||||
|
do
|
||||||
|
echo "Attaching PCA9548 @ 0x74"
|
||||||
|
echo pca9548 0x74 > /sys/bus/i2c/devices/i2c-$i/$1
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
|
||||||
|
"delete_device")
|
||||||
|
for ((i=603;i<=615;i++));
|
||||||
|
do
|
||||||
|
echo "Detaching PCA9548 @ 0x74"
|
||||||
|
echo 0x74 > /sys/bus/i2c/devices/i2c-$i/$1
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "s5296f_platform: switch_board_qsfp_mux: invalid command !"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
sleep 2
|
||||||
|
}
|
||||||
|
|
||||||
|
#Attach/Detach 64 instances of EEPROM driver QSFP ports
|
||||||
|
#eeprom can dump data using below command
|
||||||
|
switch_board_qsfp() {
|
||||||
|
case $1 in
|
||||||
|
"new_device")
|
||||||
|
for ((i=2;i<=105;i++));
|
||||||
|
do
|
||||||
|
echo sff8436 0x50 > /sys/bus/i2c/devices/i2c-$i/$1
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
|
||||||
|
"delete_device")
|
||||||
|
for ((i=2;i<=105;i++));
|
||||||
|
do
|
||||||
|
echo 0x50 > /sys/bus/i2c/devices/i2c-$i/$1
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
|
||||||
|
*) echo "s5296f_platform: switch_board_qsfp: invalid command !"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
#Modsel 64 ports to applicable QSFP type modules
|
||||||
|
#This enables the adapter to respond for i2c commands
|
||||||
|
switch_board_modsel() {
|
||||||
|
resource="/sys/bus/pci/devices/0000:04:00.0/resource0"
|
||||||
|
for ((i=1;i<=104;i++));
|
||||||
|
do
|
||||||
|
port_addr=$(( 16384 + ((i - 1) * 16)))
|
||||||
|
hex=$( printf "0x%x" $port_addr )
|
||||||
|
python /usr/bin/pcisysfs.py --set --offset $hex --val 0x10 --res $resource > /dev/null 2>&1
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
platform_firmware_versions() {
|
||||||
|
FIRMWARE_VERSION_FILE=/var/log/firmware_versions
|
||||||
|
rm -rf ${FIRMWARE_VERSION_FILE}
|
||||||
|
echo "BIOS: `dmidecode -s system-version `" > $FIRMWARE_VERSION_FILE
|
||||||
|
## Get FPGA version
|
||||||
|
r=`/usr/bin/pcisysfs.py --get --offset 0x00 --res /sys/bus/pci/devices/0000\:04\:00.0/resource0 | sed '1d; s/.*\(....\)$/\1/; s/\(..\{1\}\)/\1./'`
|
||||||
|
r_min=$(echo $r | sed 's/.*\(..\)$/0x\1/')
|
||||||
|
r_maj=$(echo $r | sed 's/^\(..\).*/0x\1/')
|
||||||
|
echo "FPGA: $((r_maj)).$((r_min))" >> $FIRMWARE_VERSION_FILE
|
||||||
|
|
||||||
|
## Get BMC Firmware Revision
|
||||||
|
r=`cat /sys/class/ipmi/ipmi0/device/bmc/firmware_revision`
|
||||||
|
echo "BMC: $r" >> $FIRMWARE_VERSION_FILE
|
||||||
|
|
||||||
|
#System CPLD 0x31 on i2c bus 601 ( physical FPGA I2C-2)
|
||||||
|
r_min=`/usr/sbin/i2cget -y 601 0x31 0x0 | sed ' s/.*\(0x..\)$/\1/'`
|
||||||
|
r_maj=`/usr/sbin/i2cget -y 601 0x31 0x1 | sed ' s/.*\(0x..\)$/\1/'`
|
||||||
|
echo "System CPLD: $((r_maj)).$((r_min))" >> $FIRMWARE_VERSION_FILE
|
||||||
|
|
||||||
|
#Slave CPLD 1 0x30 on i2c bus 600 ( physical FPGA I2C-1)
|
||||||
|
r_min=`/usr/sbin/i2cget -y 600 0x30 0x0 | sed ' s/.*\(0x..\)$/\1/'`
|
||||||
|
r_maj=`/usr/sbin/i2cget -y 600 0x30 0x1 | sed ' s/.*\(0x..\)$/\1/'`
|
||||||
|
echo "Slave CPLD 1: $((r_maj)).$((r_min))" >> $FIRMWARE_VERSION_FILE
|
||||||
|
|
||||||
|
#Slave CPLD 2 0x31 on i2c bus 600 ( physical FPGA I2C-1)
|
||||||
|
r_min=`/usr/sbin/i2cget -y 600 0x31 0x0 | sed ' s/.*\(0x..\)$/\1/'`
|
||||||
|
r_maj=`/usr/sbin/i2cget -y 600 0x31 0x1 | sed ' s/.*\(0x..\)$/\1/'`
|
||||||
|
echo "Slave CPLD 2: $((r_maj)).$((r_min))" >> $FIRMWARE_VERSION_FILE
|
||||||
|
|
||||||
|
#Slave CPLD 3 0x32 on i2c bus 600 ( physical FPGA I2C-1)
|
||||||
|
r_min=`/usr/sbin/i2cget -y 600 0x32 0x0 | sed ' s/.*\(0x..\)$/\1/'`
|
||||||
|
r_maj=`/usr/sbin/i2cget -y 600 0x32 0x1 | sed ' s/.*\(0x..\)$/\1/'`
|
||||||
|
echo "Slave CPLD 3: $((r_maj)).$((r_min))" >> $FIRMWARE_VERSION_FILE
|
||||||
|
|
||||||
|
#Slave CPLD 3 0x32 on i2c bus 600 ( physical FPGA I2C-1)
|
||||||
|
r_min=`/usr/sbin/i2cget -y 600 0x33 0x0 | sed ' s/.*\(0x..\)$/\1/'`
|
||||||
|
r_maj=`/usr/sbin/i2cget -y 600 0x33 0x1 | sed ' s/.*\(0x..\)$/\1/'`
|
||||||
|
echo "Slave CPLD 4: $((r_maj)).$((r_min))" >> $FIRMWARE_VERSION_FILE
|
||||||
|
}
|
||||||
|
|
||||||
|
#This enables the led control for CPU and default states
|
||||||
|
switch_board_led_default() {
|
||||||
|
resource="/sys/bus/pci/devices/0000:04:00.0/resource0"
|
||||||
|
python /usr/bin/pcisysfs.py --set --offset 0x24 --val 0x194 --res $resource > /dev/null 2>&1
|
||||||
|
}
|
||||||
|
init_devnum
|
||||||
|
|
||||||
|
if [ "$1" == "init" ]; then
|
||||||
|
modprobe i2c-dev
|
||||||
|
modprobe i2c-mux-pca954x force_deselect_on_exit=1
|
||||||
|
modprobe ipmi_devintf
|
||||||
|
modprobe ipmi_si
|
||||||
|
modprobe i2c_ocores
|
||||||
|
modprobe dell_s5296f_fpga_ocores
|
||||||
|
sys_eeprom "new_device"
|
||||||
|
switch_board_qsfp_mux "new_device"
|
||||||
|
switch_board_qsfp "new_device"
|
||||||
|
switch_board_modsel
|
||||||
|
switch_board_led_default
|
||||||
|
#python /usr/bin/qsfp_irq_enable.py
|
||||||
|
platform_firmware_versions
|
||||||
|
|
||||||
|
elif [ "$1" == "deinit" ]; then
|
||||||
|
sys_eeprom "delete_device"
|
||||||
|
switch_board_qsfp "delete_device"
|
||||||
|
switch_board_qsfp_mux "delete_device"
|
||||||
|
|
||||||
|
modprobe -r i2c-mux-pca954x
|
||||||
|
modprobe -r i2c-dev
|
||||||
|
else
|
||||||
|
echo "s5296f_platform : Invalid option !"
|
||||||
|
fi
|
||||||
|
|
3
platform/broadcom/sonic-platform-modules-dell/s5296f/scripts/sensors
Executable file
3
platform/broadcom/sonic-platform-modules-dell/s5296f/scripts/sensors
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
docker exec -i pmon sensors "$@"
|
||||||
|
docker exec -i pmon /usr/bin/platform_sensors.py "$@"
|
@ -0,0 +1,13 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Dell S5296f Platform modules
|
||||||
|
Before=pmon.service
|
||||||
|
DefaultDependencies=no
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/local/bin/s5296f_platform.sh init
|
||||||
|
ExecStop=/usr/local/bin/s5296f_platform.sh deinit
|
||||||
|
RemainAfterExit=yes
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
Loading…
Reference in New Issue
Block a user