[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:
Srideep 2020-10-21 12:10:50 -06:00 committed by GitHub
parent 29928c93a1
commit 97b33e4da3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
44 changed files with 5474 additions and 1 deletions

View File

@ -0,0 +1,2 @@
{%- set default_topo = 't1' %}
{%- include 'buffers_config.j2' %}

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1 @@
SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/td3-s5296f-10g.config.bcm

View File

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

View File

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

View File

@ -0,0 +1,2 @@
{%- set default_topo = 't1' %}
{%- include 'buffers_config.j2' %}

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1 @@
SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/td3-s5296f-25g.config.bcm

View File

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

View File

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

View File

@ -0,0 +1 @@
DellEMC-S5296f-P-25G t1

View File

@ -0,0 +1,2 @@
CONSOLE_PORT=0x3f8
CONSOLE_DEV=0

View File

@ -0,0 +1,6 @@
# LED microprocessor initialization for Dell S5232
#
#
#Led0
led auto on
led start

View 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"
}
}
}
}
}

View 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)

View File

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

View 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

View File

@ -0,0 +1,8 @@
{
"skip_sensors": true,
"skip_fancontrol": true,
"skip_ledd": true,
"skip_psud": true,
"skip_syseepromd": true,
"skip_thermalctld": true
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View 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:])

View 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')

View File

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

View 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

View File

@ -0,0 +1,3 @@
#!/bin/bash
docker exec -i pmon sensors "$@"
docker exec -i pmon /usr/bin/platform_sensors.py "$@"

View File

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