Add gearbox phy device files and a new physyncd docker to support VS gearbox phy feature (#4851)
* buildimage: Add gearbox phy device files and a new physyncd docker to support VS gearbox phy feature
* scripts and configuration needed to support a second syncd docker (physyncd)
* physyncd supports gearbox device and phy SAI APIs and runs multiple instances of syncd, one per phy in the device
* support for VS target (sonic-sairedis vslib has been extended to support a virtual BCM81724 gearbox PHY).
HLD is located at b817a12fd8/doc/gearbox/gearbox_mgr_design.md
**- Why I did it**
This work is part of the gearbox phy joint effort between Microsoft and Broadcom, and is based
on multi-switch support in sonic-sairedis.
**- How I did it**
Overall feature was implemented across several projects. The collective pull requests (some in late stages of review at this point):
https://github.com/Azure/sonic-utilities/pull/931 - CLI (merged)
https://github.com/Azure/sonic-swss-common/pull/347 - Minor changes (merged)
https://github.com/Azure/sonic-swss/pull/1321 - gearsyncd, config parsers, changes to orchargent to create gearbox phy on supported systems
https://github.com/Azure/sonic-sairedis/pull/624 - physyncd, virtual BCM81724 gearbox phy added to vslib
**- How to verify it**
In a vslib build:
root@sonic:/home/admin# show gearbox interfaces status
PHY Id Interface MAC Lanes MAC Lane Speed PHY Lanes PHY Lane Speed Line Lanes Line Lane Speed Oper Admin
-------- ----------- --------------- ---------------- --------------- ---------------- ------------ ----------------- ------ -------
1 Ethernet48 121,122,123,124 25G 200,201,202,203 25G 204,205 50G down down
1 Ethernet49 125,126,127,128 25G 206,207,208,209 25G 210,211 50G down down
1 Ethernet50 69,70,71,72 25G 212,213,214,215 25G 216 100G down down
In addition, docker ps | grep phy should show a physyncd docker running.
Signed-off-by: syd.logan@broadcom.com
This commit is contained in:
parent
584e2223dc
commit
0311a4a037
88
device/virtual/x86_64-kvm_x86_64-r0/README.md
Normal file
88
device/virtual/x86_64-kvm_x86_64-r0/README.md
Normal file
@ -0,0 +1,88 @@
|
||||
# Changing the virtual device
|
||||
|
||||
You can control the hw sku and default factory configuration for the VS image
|
||||
by modifying the content of the file default_sku in this directory.
|
||||
|
||||
The format of default_sku is a single line:
|
||||
|
||||
```
|
||||
<hw_key> <default_preset>
|
||||
```
|
||||
|
||||
## Allowable values for hw_key
|
||||
|
||||
| hw_key | Device |
|
||||
| ------ | ------ |
|
||||
| Force10-S6000 | Dell Force10 S6000|
|
||||
| brcm_gearbox_vs | Similar to Force10-S6000, but implements a virtual BRCM81724 Gearbox Phy |
|
||||
|
||||
## Allowable values for default_preset
|
||||
|
||||
These include "t1", "l2", and "empty". See the file
|
||||
sonic-buildimage/src/sonic-config-engine/config_samples.py for details on how
|
||||
each default_preset value is interpreted.
|
||||
|
||||
# Changing the hwsku of an existing VS switch
|
||||
|
||||
To change the default hwsku for a VS image that has already been built and installed, follow these steps:
|
||||
|
||||
- Edit /usr/share/sonic/device/x86_64-kvm_x86_64-r0/default_sku. For details, see the section below (Device Specific Documentation)
|
||||
- Edit /etc/sonic/config_db.json, and change the "hwsku" key in DEVICE_METADATA:localhost to match the hw_key used in default_sku. Example:
|
||||
|
||||
"DEVICE_METADATA": {
|
||||
"localhost": {
|
||||
...
|
||||
"hwsku": "brcm_gearbox_vs",
|
||||
...
|
||||
}
|
||||
},
|
||||
...
|
||||
- Reboot the switch
|
||||
- Use "show platform summary" to verify, and follow any steps specific to the platform, as needed, such as those described below for the brcm_gearbox_vs hwsku.
|
||||
|
||||
# Device Specific Documentation
|
||||
|
||||
For general info on building, see https://github.com/Azure/sonic-buildimage/blob/master/README.md
|
||||
|
||||
## Force-10-S6000
|
||||
|
||||
This is the default VS for SONiC. To enable, set contents of default_sku to:
|
||||
|
||||
```
|
||||
Force10-S6000 t1
|
||||
```
|
||||
|
||||
To build:
|
||||
|
||||
```
|
||||
make init
|
||||
make configure PLATFORM=vs
|
||||
make target/sonic-vs.img.gz
|
||||
```
|
||||
|
||||
## brcm_gearbox_vs
|
||||
|
||||
This sku simulates a device with a Broadcom BRCM81724 gearbox PHY. To enable,
|
||||
set default_sku to:
|
||||
|
||||
|
||||
```
|
||||
brcm_gearbox_vs t1
|
||||
```
|
||||
|
||||
To build (same as Force-10-S6000):
|
||||
|
||||
```
|
||||
make init
|
||||
make configure PLATFORM=vs
|
||||
make target/sonic-vs.img.gz
|
||||
```
|
||||
|
||||
To verify, install and bring up SONiC. There will be a new gbsyncd docker
|
||||
which is designed to respond to configuration directed towards the gearbox phy
|
||||
"switch". swss will create that gearbox switch on startup after detecting the
|
||||
gearbox is present (this is done by a short lived gearsyncd that runs in the
|
||||
swss docker).
|
||||
|
||||
The commands "show gearbox interfaces status" and "show gearbox phys status" can be
|
||||
used to verify the virtual gearbox phy has been created. See https://github.com/Azure/sonic-utilities/blob/master/doc/Command-Reference.md#gearbox for details.
|
@ -0,0 +1,3 @@
|
||||
{%- set default_topo = 't1' %}
|
||||
{%- include 'buffers_config.j2' %}
|
||||
|
@ -0,0 +1,45 @@
|
||||
{%- set default_cable = '300m' %}
|
||||
|
||||
{%- macro generate_port_lists(PORT_ALL) %}
|
||||
{# Generate list of ports #}
|
||||
{% for port_idx in range(0,32) %}
|
||||
{% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %}
|
||||
{% endfor %}
|
||||
{%- endmacro %}
|
||||
|
||||
{%- macro generate_buffer_pool_and_profiles() %}
|
||||
"BUFFER_POOL": {
|
||||
"ingress_lossless_pool": {
|
||||
"size": "12766208",
|
||||
"type": "ingress",
|
||||
"mode": "dynamic"
|
||||
},
|
||||
"egress_lossless_pool": {
|
||||
"size": "12766208",
|
||||
"type": "egress",
|
||||
"mode": "static"
|
||||
},
|
||||
"egress_lossy_pool": {
|
||||
"size": "7326924",
|
||||
"type": "egress",
|
||||
"mode": "dynamic"
|
||||
}
|
||||
},
|
||||
"BUFFER_PROFILE": {
|
||||
"ingress_lossy_profile": {
|
||||
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
|
||||
"size":"0",
|
||||
"dynamic_th":"3"
|
||||
},
|
||||
"egress_lossless_profile": {
|
||||
"pool":"[BUFFER_POOL|egress_lossless_pool]",
|
||||
"size":"0",
|
||||
"static_th":"12766208"
|
||||
},
|
||||
"egress_lossy_profile": {
|
||||
"pool":"[BUFFER_POOL|egress_lossy_pool]",
|
||||
"size":"1518",
|
||||
"dynamic_th":"3"
|
||||
}
|
||||
},
|
||||
{%- endmacro %}
|
@ -0,0 +1,45 @@
|
||||
{%- set default_cable = '300m' %}
|
||||
|
||||
{%- macro generate_port_lists(PORT_ALL) %}
|
||||
{# Generate list of ports #}
|
||||
{% for port_idx in range(0,32) %}
|
||||
{% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %}
|
||||
{% endfor %}
|
||||
{%- endmacro %}
|
||||
|
||||
{%- macro generate_buffer_pool_and_profiles() %}
|
||||
"BUFFER_POOL": {
|
||||
"ingress_lossless_pool": {
|
||||
"size": "12766208",
|
||||
"type": "ingress",
|
||||
"mode": "dynamic"
|
||||
},
|
||||
"egress_lossless_pool": {
|
||||
"size": "12766208",
|
||||
"type": "egress",
|
||||
"mode": "static"
|
||||
},
|
||||
"egress_lossy_pool": {
|
||||
"size": "7326924",
|
||||
"type": "egress",
|
||||
"mode": "dynamic"
|
||||
}
|
||||
},
|
||||
"BUFFER_PROFILE": {
|
||||
"ingress_lossy_profile": {
|
||||
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
|
||||
"size":"0",
|
||||
"dynamic_th":"3"
|
||||
},
|
||||
"egress_lossless_profile": {
|
||||
"pool":"[BUFFER_POOL|egress_lossless_pool]",
|
||||
"size":"0",
|
||||
"static_th":"12766208"
|
||||
},
|
||||
"egress_lossy_profile": {
|
||||
"pool":"[BUFFER_POOL|egress_lossy_pool]",
|
||||
"size":"1518",
|
||||
"dynamic_th":"3"
|
||||
}
|
||||
},
|
||||
{%- endmacro %}
|
@ -0,0 +1,45 @@
|
||||
{%- set default_cable = '300m' %}
|
||||
|
||||
{%- macro generate_port_lists(PORT_ALL) %}
|
||||
{# Generate list of ports #}
|
||||
{% for port_idx in range(0,32) %}
|
||||
{% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %}
|
||||
{% endfor %}
|
||||
{%- endmacro %}
|
||||
|
||||
{%- macro generate_buffer_pool_and_profiles() %}
|
||||
"BUFFER_POOL": {
|
||||
"ingress_lossless_pool": {
|
||||
"size": "12766208",
|
||||
"type": "ingress",
|
||||
"mode": "dynamic"
|
||||
},
|
||||
"egress_lossless_pool": {
|
||||
"size": "12766208",
|
||||
"type": "egress",
|
||||
"mode": "static"
|
||||
},
|
||||
"egress_lossy_pool": {
|
||||
"size": "7326924",
|
||||
"type": "egress",
|
||||
"mode": "dynamic"
|
||||
}
|
||||
},
|
||||
"BUFFER_PROFILE": {
|
||||
"ingress_lossy_profile": {
|
||||
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
|
||||
"size":"0",
|
||||
"dynamic_th":"3"
|
||||
},
|
||||
"egress_lossless_profile": {
|
||||
"pool":"[BUFFER_POOL|egress_lossless_pool]",
|
||||
"size":"0",
|
||||
"static_th":"12766208"
|
||||
},
|
||||
"egress_lossy_profile": {
|
||||
"pool":"[BUFFER_POOL|egress_lossy_pool]",
|
||||
"size":"1518",
|
||||
"dynamic_th":"3"
|
||||
}
|
||||
},
|
||||
{%- endmacro %}
|
@ -0,0 +1,32 @@
|
||||
{
|
||||
"CONTEXTS": [
|
||||
{
|
||||
"guid" : 0,
|
||||
"name" : "sw0",
|
||||
"dbAsic" : "ASIC_DB",
|
||||
"dbCounters" : "COUNTERS_DB",
|
||||
"dbFlex": "FLEX_COUNTER_DB",
|
||||
"dbState" : "STATE_DB",
|
||||
"switches": [
|
||||
{
|
||||
"index" : 0,
|
||||
"hwinfo" : ""
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"guid" : 1,
|
||||
"name" : "phy1",
|
||||
"dbAsic" : "GB_ASIC_DB",
|
||||
"dbCounters" : "GB_COUNTERS_DB",
|
||||
"dbFlex": "GB_FLEX_COUNTER_DB",
|
||||
"dbState" : "STATE_DB",
|
||||
"switches": [
|
||||
{
|
||||
"index" : 1,
|
||||
"hwinfo" : ""
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
{
|
||||
"phys": [
|
||||
{
|
||||
"phy_id": 1,
|
||||
"name": "sesto-1",
|
||||
"address": "0x1000",
|
||||
"lib_name": "libsai_phy_sesto-1.so",
|
||||
"firmware_path": "/tmp/phy-sesto-1.bin",
|
||||
"config_file": "/usr/share/sonic/hwsku/phy1_config_1.json",
|
||||
"sai_init_config_file": "/usr/share/sonic/hwsku/sesto-1.bcm",
|
||||
"phy_access": "mdio",
|
||||
"bus_id": 0
|
||||
}
|
||||
],
|
||||
"interfaces": [
|
||||
{
|
||||
"name": "Ethernet0",
|
||||
"index": 0,
|
||||
"phy_id" : 1,
|
||||
"system_lanes": [200,201],
|
||||
"line_lanes": [206]
|
||||
},
|
||||
{
|
||||
"name": "Ethernet4",
|
||||
"index": 1,
|
||||
"phy_id" : 1,
|
||||
"system_lanes": [202,203],
|
||||
"line_lanes": [207]
|
||||
},
|
||||
{
|
||||
"name": "Ethernet8",
|
||||
"index": 2,
|
||||
"phy_id" : 1,
|
||||
"system_lanes": [204,205],
|
||||
"line_lanes": [208]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
eth1:25,26,27,28
|
||||
eth2:29,30,31,32
|
||||
eth3:33,34,35,36
|
||||
eth4:37,38,39,40
|
||||
eth5:45,46,47,48
|
||||
eth6:41,42,43,44
|
||||
eth7:1,2,3,4
|
||||
eth8:5,6,7,8
|
||||
eth9:13,14,15,16
|
||||
eth10:9,10,11,12
|
||||
eth11:17,18,19,20
|
||||
eth12:21,22,23,24
|
||||
eth13:53,54,55,56
|
||||
eth14:49,50,51,52
|
||||
eth15:57,58,59,60
|
||||
eth16:61,62,63,64
|
||||
eth17:69,70,71,72
|
||||
eth18:65,66,67,68
|
||||
eth19:73,74,75,76
|
||||
eth20:77,78,79,80
|
||||
eth21:109,110,111,112
|
||||
eth22:105,106,107,108
|
||||
eth23:113,114,115,116
|
||||
eth24:117,118,119,120
|
||||
eth25:125,126,127,128
|
||||
eth26:121,122,123,124
|
||||
eth27:81,82,83,84
|
||||
eth28:85,86,87,88
|
||||
eth29:93,94,95,96
|
||||
eth30:89,90,91,92
|
||||
eth31:101,102,103,104
|
||||
eth32:97,98,99,100
|
@ -0,0 +1,17 @@
|
||||
# PG lossless profiles.
|
||||
# speed cable size xon xoff threshold xon_offset
|
||||
10000 5m 56368 18432 55120 -3 2496
|
||||
25000 5m 56368 18432 55120 -3 2496
|
||||
40000 5m 56368 18432 55120 -3 2496
|
||||
50000 5m 56368 18432 55120 -3 2496
|
||||
100000 5m 56368 18432 55120 -3 2496
|
||||
10000 40m 56368 18432 55120 -3 2496
|
||||
25000 40m 56368 18432 55120 -3 2496
|
||||
40000 40m 56368 18432 55120 -3 2496
|
||||
50000 40m 56368 18432 55120 -3 2496
|
||||
100000 40m 56368 18432 55120 -3 2496
|
||||
10000 300m 56368 18432 55120 -3 2496
|
||||
25000 300m 56368 18432 55120 -3 2496
|
||||
40000 300m 56368 18432 55120 -3 2496
|
||||
50000 300m 56368 18432 55120 -3 2496
|
||||
100000 300m 56368 18432 55120 -3 2496
|
@ -0,0 +1,168 @@
|
||||
{
|
||||
"lanes": [
|
||||
{
|
||||
"index": 200,
|
||||
"local_lane_id": 0,
|
||||
"system_side": true,
|
||||
"tx_polarity": 0,
|
||||
"rx_polarity": 0,
|
||||
"line_tx_lanemap": 0,
|
||||
"line_rx_lanemap": 0,
|
||||
"line_to_system_lanemap": 0,
|
||||
"mdio_addr": "0x0200"
|
||||
},
|
||||
{
|
||||
"index": 201,
|
||||
"local_lane_id": 0,
|
||||
"system_side": true,
|
||||
"tx_polarity": 0,
|
||||
"rx_polarity": 0,
|
||||
"line_tx_lanemap": 0,
|
||||
"line_rx_lanemap": 0,
|
||||
"line_to_system_lanemap": 0,
|
||||
"mdio_addr": "0x0201"
|
||||
},
|
||||
{
|
||||
"index": 202,
|
||||
"local_lane_id": 0,
|
||||
"system_side": true,
|
||||
"tx_polarity": 0,
|
||||
"rx_polarity": 0,
|
||||
"line_tx_lanemap": 0,
|
||||
"line_rx_lanemap": 0,
|
||||
"line_to_system_lanemap": 0,
|
||||
"mdio_addr": "0x0202"
|
||||
},
|
||||
{
|
||||
"index": 203,
|
||||
"local_lane_id": 0,
|
||||
"system_side": true,
|
||||
"tx_polarity": 0,
|
||||
"rx_polarity": 0,
|
||||
"line_tx_lanemap": 0,
|
||||
"line_rx_lanemap": 0,
|
||||
"line_to_system_lanemap": 0,
|
||||
"mdio_addr": "0x0203"
|
||||
},
|
||||
{
|
||||
"index": 204,
|
||||
"local_lane_id": 0,
|
||||
"system_side": false,
|
||||
"tx_polarity": 0,
|
||||
"rx_polarity": 0,
|
||||
"line_tx_lanemap": 0,
|
||||
"line_rx_lanemap": 0,
|
||||
"line_to_system_lanemap": 200,
|
||||
"mdio_addr": "0x0204"
|
||||
},
|
||||
{
|
||||
"index": 205,
|
||||
"local_lane_id": 0,
|
||||
"system_side": false,
|
||||
"tx_polarity": 0,
|
||||
"rx_polarity": 0,
|
||||
"line_tx_lanemap": 0,
|
||||
"line_rx_lanemap": 0,
|
||||
"line_to_system_lanemap": 202,
|
||||
"mdio_addr": "0x0205"
|
||||
},
|
||||
{
|
||||
"index": 206,
|
||||
"local_lane_id": 0,
|
||||
"system_side": true,
|
||||
"tx_polarity": 0,
|
||||
"rx_polarity": 0,
|
||||
"line_tx_lanemap": 0,
|
||||
"line_rx_lanemap": 0,
|
||||
"line_to_system_lanemap": 0,
|
||||
"mdio_addr": "0x0206"
|
||||
},
|
||||
{
|
||||
"index": 207,
|
||||
"local_lane_id": 0,
|
||||
"system_side": false,
|
||||
"tx_polarity": 0,
|
||||
"rx_polarity": 0,
|
||||
"line_tx_lanemap": 0,
|
||||
"line_rx_lanemap": 0,
|
||||
"line_to_system_lanemap": 0,
|
||||
"mdio_addr": "0x0207"
|
||||
},
|
||||
{
|
||||
"index": 208,
|
||||
"local_lane_id": 0,
|
||||
"system_side": true,
|
||||
"tx_polarity": 0,
|
||||
"rx_polarity": 0,
|
||||
"line_tx_lanemap": 0,
|
||||
"line_rx_lanemap": 0,
|
||||
"line_to_system_lanemap": 0,
|
||||
"mdio_addr": "0x0208"
|
||||
}
|
||||
],
|
||||
"ports": [
|
||||
{
|
||||
"index": 0,
|
||||
"mdio_addr": "0x2000",
|
||||
"system_speed": 20000,
|
||||
"system_fec": "none",
|
||||
"system_auto_neg": true,
|
||||
"system_loopback": "none",
|
||||
"system_training": false,
|
||||
"line_speed": 40000,
|
||||
"line_fec": "none",
|
||||
"line_auto_neg": true,
|
||||
"line_media_type": "fiber",
|
||||
"line_intf_type": "none",
|
||||
"line_loopback": "none",
|
||||
"line_training": false,
|
||||
"line_adver_speed": [],
|
||||
"line_adver_fec": [],
|
||||
"line_adver_auto_neg": false,
|
||||
"line_adver_asym_pause": false,
|
||||
"line_adver_media_type": "fiber"
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"mdio_addr": "0x3000",
|
||||
"system_speed": 20000,
|
||||
"system_fec": "none",
|
||||
"system_auto_neg": true,
|
||||
"system_loopback": "none",
|
||||
"system_training": false,
|
||||
"line_speed": 40000,
|
||||
"line_fec": "none",
|
||||
"line_auto_neg": true,
|
||||
"line_media_type": "fiber",
|
||||
"line_intf_type": "none",
|
||||
"line_loopback": "none",
|
||||
"line_training": false,
|
||||
"line_adver_speed": [],
|
||||
"line_adver_fec": [],
|
||||
"line_adver_auto_neg": false,
|
||||
"line_adver_asym_pause": false,
|
||||
"line_adver_media_type": "fiber"
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"mdio_addr": "0x4000",
|
||||
"system_speed": 20000,
|
||||
"system_fec": "none",
|
||||
"system_auto_neg": true,
|
||||
"system_loopback": "none",
|
||||
"system_training": false,
|
||||
"line_speed": 40000,
|
||||
"line_fec": "none",
|
||||
"line_auto_neg": true,
|
||||
"line_media_type": "fiber",
|
||||
"line_intf_type": "none",
|
||||
"line_loopback": "none",
|
||||
"line_training": false,
|
||||
"line_adver_speed": [],
|
||||
"line_adver_fec": [],
|
||||
"line_adver_auto_neg": false,
|
||||
"line_adver_asym_pause": false,
|
||||
"line_adver_media_type": "fiber"
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
# name lanes alias index speed
|
||||
Ethernet0 25,26,27,28 fortyGigE0/0 0 40000
|
||||
Ethernet4 29,30,31,32 fortyGigE0/4 1 40000
|
||||
Ethernet8 33,34,35,36 fortyGigE0/8 2 40000
|
||||
Ethernet12 37,38,39,40 fortyGigE0/12 3 40000
|
||||
Ethernet16 45,46,47,48 fortyGigE0/16 4 40000
|
||||
Ethernet20 41,42,43,44 fortyGigE0/20 5 40000
|
||||
Ethernet24 1,2,3,4 fortyGigE0/24 6 40000
|
||||
Ethernet28 5,6,7,8 fortyGigE0/28 7 40000
|
||||
Ethernet32 13,14,15,16 fortyGigE0/32 8 40000
|
||||
Ethernet36 9,10,11,12 fortyGigE0/36 9 40000
|
||||
Ethernet40 17,18,19,20 fortyGigE0/40 10 40000
|
||||
Ethernet44 21,22,23,24 fortyGigE0/44 11 40000
|
||||
Ethernet48 53,54,55,56 fortyGigE0/48 12 40000
|
||||
Ethernet52 49,50,51,52 fortyGigE0/52 13 40000
|
||||
Ethernet56 57,58,59,60 fortyGigE0/56 14 40000
|
||||
Ethernet60 61,62,63,64 fortyGigE0/60 15 40000
|
||||
Ethernet64 69,70,71,72 fortyGigE0/64 16 40000
|
||||
Ethernet68 65,66,67,68 fortyGigE0/68 17 40000
|
||||
Ethernet72 73,74,75,76 fortyGigE0/72 18 40000
|
||||
Ethernet76 77,78,79,80 fortyGigE0/76 19 40000
|
||||
Ethernet80 109,110,111,112 fortyGigE0/80 20 40000
|
||||
Ethernet84 105,106,107,108 fortyGigE0/84 21 40000
|
||||
Ethernet88 113,114,115,116 fortyGigE0/88 22 40000
|
||||
Ethernet92 117,118,119,120 fortyGigE0/92 23 40000
|
||||
Ethernet96 125,126,127,128 fortyGigE0/96 24 40000
|
||||
Ethernet100 121,122,123,124 fortyGigE0/100 25 40000
|
||||
Ethernet104 81,82,83,84 fortyGigE0/104 26 40000
|
||||
Ethernet108 85,86,87,88 fortyGigE0/108 27 40000
|
||||
Ethernet112 93,94,95,96 fortyGigE0/112 28 40000
|
||||
Ethernet116 89,90,91,92 fortyGigE0/116 29 40000
|
||||
Ethernet120 101,102,103,104 fortyGigE0/120 30 40000
|
||||
Ethernet124 97,98,99,100 fortyGigE0/124 31 40000
|
@ -0,0 +1 @@
|
||||
{%- include 'qos_config.j2' %}
|
@ -0,0 +1,5 @@
|
||||
SAI_WARM_BOOT_READ_FILE=/var/cache/sai_warmboot.bin
|
||||
SAI_WARM_BOOT_WRITE_FILE=/var/cache/sai_warmboot.bin
|
||||
SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_BCM56850
|
||||
SAI_VS_HOSTIF_USE_TAP_DEVICE=true
|
||||
SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini
|
@ -0,0 +1,646 @@
|
||||
# Old LPM only configuration
|
||||
# l2_mem_entries=163840
|
||||
# l3_mem_entries=90112
|
||||
# l3_alpm_enable=0
|
||||
# ipv6_lpm_128b_enable=0
|
||||
#
|
||||
# ALPM enable
|
||||
l3_alpm_enable=2
|
||||
ipv6_lpm_128b_enable=1
|
||||
l2_mem_entries=32768
|
||||
l3_mem_entries=16384
|
||||
|
||||
# From old config file
|
||||
os=unix
|
||||
higig2_hdr_mode=1
|
||||
|
||||
# Parity
|
||||
parity_correction=1
|
||||
parity_enable=1
|
||||
stat_if_parity_enable=0
|
||||
|
||||
#
|
||||
bcm_num_cos=8
|
||||
bcm_stat_interval=2000000
|
||||
l2xmsg_hostbuf_size=8192
|
||||
l2xmsg_mode=1
|
||||
lls_num_l2uc=12
|
||||
max_vp_lags=0
|
||||
miim_intr_enable=0
|
||||
mmu_lossless=0
|
||||
module_64ports=0
|
||||
schan_intr_enable=0
|
||||
stable_size=0x2000000
|
||||
tdma_timeout_usec=5000000
|
||||
|
||||
pbmp_oversubscribe=0x000007fffffffffffffffffffffffffe
|
||||
pbmp_xport_xe=0x000007fffffffffffffffffffffffffe
|
||||
|
||||
# Ports configuration
|
||||
# xe0 (40G)
|
||||
portmap_1=25:40
|
||||
xgxs_rx_lane_map_1=0x213
|
||||
xgxs_tx_lane_map_1=0x2031
|
||||
phy_xaui_rx_polarity_flip_1=0xe
|
||||
phy_xaui_tx_polarity_flip_1=0x2
|
||||
serdes_driver_current_lane0_xe0=0x5
|
||||
serdes_driver_current_lane1_xe0=0x5
|
||||
serdes_driver_current_lane2_xe0=0x5
|
||||
serdes_driver_current_lane3_xe0=0x5
|
||||
serdes_pre_driver_current_lane0_xe0=0x5
|
||||
serdes_pre_driver_current_lane1_xe0=0x5
|
||||
serdes_pre_driver_current_lane2_xe0=0x5
|
||||
serdes_pre_driver_current_lane3_xe0=0x5
|
||||
serdes_preemphasis_lane0_xe0=0xcad0
|
||||
serdes_preemphasis_lane1_xe0=0xc6e0
|
||||
serdes_preemphasis_lane2_xe0=0xc6e0
|
||||
serdes_preemphasis_lane3_xe0=0xd2b0
|
||||
|
||||
# xe1 (40G)
|
||||
portmap_2=29:40
|
||||
xgxs_rx_lane_map_2=0x213
|
||||
xgxs_tx_lane_map_2=0x213
|
||||
phy_xaui_rx_polarity_flip_2=0xc
|
||||
phy_xaui_tx_polarity_flip_2=0x9
|
||||
serdes_driver_current_lane0_xe1=0x6
|
||||
serdes_driver_current_lane1_xe1=0x7
|
||||
serdes_driver_current_lane2_xe1=0x6
|
||||
serdes_driver_current_lane3_xe1=0x6
|
||||
serdes_pre_driver_current_lane0_xe1=0x6
|
||||
serdes_pre_driver_current_lane1_xe1=0x7
|
||||
serdes_pre_driver_current_lane2_xe1=0x6
|
||||
serdes_pre_driver_current_lane3_xe1=0x6
|
||||
serdes_preemphasis_lane0_xe1=0xc2f0
|
||||
serdes_preemphasis_lane1_xe1=0xd2b0
|
||||
serdes_preemphasis_lane2_xe1=0xc6e0
|
||||
serdes_preemphasis_lane3_xe1=0xc2f0
|
||||
|
||||
# xe2 (40G)
|
||||
portmap_3=33:40
|
||||
xgxs_rx_lane_map_3=0x213
|
||||
xgxs_tx_lane_map_3=0x132
|
||||
phy_xaui_rx_polarity_flip_3=0xe
|
||||
phy_xaui_tx_polarity_flip_3=0x2
|
||||
serdes_driver_current_lane0_xe2=0x4
|
||||
serdes_driver_current_lane1_xe2=0x4
|
||||
serdes_driver_current_lane2_xe2=0x4
|
||||
serdes_driver_current_lane3_xe2=0x4
|
||||
serdes_pre_driver_current_lane0_xe2=0x4
|
||||
serdes_pre_driver_current_lane1_xe2=0x4
|
||||
serdes_pre_driver_current_lane2_xe2=0x4
|
||||
serdes_pre_driver_current_lane3_xe2=0x4
|
||||
serdes_preemphasis_lane0_xe2=0xc6e0
|
||||
serdes_preemphasis_lane1_xe2=0xc6e0
|
||||
serdes_preemphasis_lane2_xe2=0xc6e0
|
||||
serdes_preemphasis_lane3_xe2=0xc6e0
|
||||
|
||||
# xe3 (40G)
|
||||
portmap_4=37:40
|
||||
xgxs_rx_lane_map_4=0x213
|
||||
xgxs_tx_lane_map_4=0x1203
|
||||
phy_xaui_rx_polarity_flip_4=0x3
|
||||
phy_xaui_tx_polarity_flip_4=0xe
|
||||
serdes_driver_current_lane0_xe3=0x4
|
||||
serdes_driver_current_lane1_xe3=0x4
|
||||
serdes_driver_current_lane2_xe3=0x4
|
||||
serdes_driver_current_lane3_xe3=0x4
|
||||
serdes_pre_driver_current_lane0_xe3=0x4
|
||||
serdes_pre_driver_current_lane1_xe3=0x4
|
||||
serdes_pre_driver_current_lane2_xe3=0x4
|
||||
serdes_pre_driver_current_lane3_xe3=0x4
|
||||
serdes_preemphasis_lane0_xe3=0xcad0
|
||||
serdes_preemphasis_lane1_xe3=0xcad0
|
||||
serdes_preemphasis_lane2_xe3=0xc2f0
|
||||
serdes_preemphasis_lane3_xe3=0xc2f0
|
||||
|
||||
# xe4 (40G)
|
||||
portmap_5=45:40
|
||||
xgxs_rx_lane_map_5=0x213
|
||||
xgxs_tx_lane_map_5=0x213
|
||||
phy_xaui_rx_polarity_flip_5=0xe
|
||||
phy_xaui_tx_polarity_flip_5=0x8
|
||||
serdes_driver_current_lane0_xe4=0x4
|
||||
serdes_driver_current_lane1_xe4=0x4
|
||||
serdes_driver_current_lane2_xe4=0x4
|
||||
serdes_driver_current_lane3_xe4=0x4
|
||||
serdes_pre_driver_current_lane0_xe4=0x4
|
||||
serdes_pre_driver_current_lane1_xe4=0x4
|
||||
serdes_pre_driver_current_lane2_xe4=0x4
|
||||
serdes_pre_driver_current_lane3_xe4=0x4
|
||||
serdes_preemphasis_lane0_xe4=0xc2f0
|
||||
serdes_preemphasis_lane1_xe4=0xc2f0
|
||||
serdes_preemphasis_lane2_xe4=0xc2f0
|
||||
serdes_preemphasis_lane3_xe4=0xc2f0
|
||||
|
||||
# xe5 (40G)
|
||||
portmap_6=41:40
|
||||
xgxs_rx_lane_map_6=0x213
|
||||
xgxs_tx_lane_map_6=0x3021
|
||||
phy_xaui_rx_polarity_flip_6=0x3
|
||||
phy_xaui_tx_polarity_flip_6=0xb
|
||||
serdes_driver_current_lane0_xe5=0x4
|
||||
serdes_driver_current_lane1_xe5=0x4
|
||||
serdes_driver_current_lane2_xe5=0x4
|
||||
serdes_driver_current_lane3_xe5=0x4
|
||||
serdes_pre_driver_current_lane0_xe5=0x4
|
||||
serdes_pre_driver_current_lane1_xe5=0x4
|
||||
serdes_pre_driver_current_lane2_xe5=0x4
|
||||
serdes_pre_driver_current_lane3_xe5=0x4
|
||||
serdes_preemphasis_lane0_xe5=0xc6e0
|
||||
serdes_preemphasis_lane1_xe5=0xc2f0
|
||||
serdes_preemphasis_lane2_xe5=0xc2f0
|
||||
serdes_preemphasis_lane3_xe5=0xcad0
|
||||
|
||||
# xe6 (40G)
|
||||
portmap_7=1:40
|
||||
xgxs_rx_lane_map_7=0x213
|
||||
xgxs_tx_lane_map_7=0x2031
|
||||
phy_xaui_rx_polarity_flip_7=0xe
|
||||
phy_xaui_tx_polarity_flip_7=0xd
|
||||
serdes_driver_current_lane0_xe6=0x5
|
||||
serdes_driver_current_lane1_xe6=0x5
|
||||
serdes_driver_current_lane2_xe6=0x5
|
||||
serdes_driver_current_lane3_xe6=0x5
|
||||
serdes_pre_driver_current_lane0_xe6=0x5
|
||||
serdes_pre_driver_current_lane1_xe6=0x5
|
||||
serdes_pre_driver_current_lane2_xe6=0x5
|
||||
serdes_pre_driver_current_lane3_xe6=0x5
|
||||
serdes_preemphasis_lane0_xe6=0xc6e0
|
||||
serdes_preemphasis_lane1_xe6=0xcad0
|
||||
serdes_preemphasis_lane2_xe6=0xc6e0
|
||||
serdes_preemphasis_lane3_xe6=0xcad0
|
||||
|
||||
# xe7 (40G)
|
||||
portmap_8=5:40
|
||||
xgxs_rx_lane_map_8=0x213
|
||||
xgxs_tx_lane_map_8=0x1203
|
||||
phy_xaui_rx_polarity_flip_8=0xc
|
||||
phy_xaui_tx_polarity_flip_8=0x1
|
||||
serdes_driver_current_lane0_xe7=0x4
|
||||
serdes_driver_current_lane1_xe7=0x4
|
||||
serdes_driver_current_lane2_xe7=0x4
|
||||
serdes_driver_current_lane3_xe7=0x4
|
||||
serdes_pre_driver_current_lane0_xe7=0x4
|
||||
serdes_pre_driver_current_lane1_xe7=0x4
|
||||
serdes_pre_driver_current_lane2_xe7=0x4
|
||||
serdes_pre_driver_current_lane3_xe7=0x4
|
||||
serdes_preemphasis_lane0_xe7=0xc6e0
|
||||
serdes_preemphasis_lane1_xe7=0xc6e0
|
||||
serdes_preemphasis_lane2_xe7=0xc6e0
|
||||
serdes_preemphasis_lane3_xe7=0xc6e0
|
||||
|
||||
# xe8 (40G)
|
||||
portmap_9=13:40
|
||||
xgxs_rx_lane_map_9=0x213
|
||||
xgxs_tx_lane_map_9=0x132
|
||||
phy_xaui_rx_polarity_flip_9=0xe
|
||||
phy_xaui_tx_polarity_flip_9=0x0
|
||||
serdes_driver_current_lane0_xe8=0x2
|
||||
serdes_driver_current_lane1_xe8=0x3
|
||||
serdes_driver_current_lane2_xe8=0x2
|
||||
serdes_driver_current_lane3_xe8=0x2
|
||||
serdes_pre_driver_current_lane0_xe8=0x2
|
||||
serdes_pre_driver_current_lane1_xe8=0x3
|
||||
serdes_pre_driver_current_lane2_xe8=0x2
|
||||
serdes_pre_driver_current_lane3_xe8=0x2
|
||||
serdes_preemphasis_lane0_xe8=0xb270
|
||||
serdes_preemphasis_lane1_xe8=0xbb10
|
||||
serdes_preemphasis_lane2_xe8=0xb720
|
||||
serdes_preemphasis_lane3_xe8=0xb720
|
||||
|
||||
# xe9 (40G)
|
||||
portmap_10=9:40
|
||||
xgxs_rx_lane_map_10=0x3120
|
||||
xgxs_tx_lane_map_10=0x3021
|
||||
phy_xaui_rx_polarity_flip_10=0x0
|
||||
phy_xaui_tx_polarity_flip_10=0x4
|
||||
serdes_driver_current_lane0_xe9=0x3
|
||||
serdes_driver_current_lane1_xe9=0x3
|
||||
serdes_driver_current_lane2_xe9=0x3
|
||||
serdes_driver_current_lane3_xe9=0x3
|
||||
serdes_pre_driver_current_lane0_xe9=0x3
|
||||
serdes_pre_driver_current_lane1_xe9=0x3
|
||||
serdes_pre_driver_current_lane2_xe9=0x3
|
||||
serdes_pre_driver_current_lane3_xe9=0x3
|
||||
serdes_preemphasis_lane0_xe9=0xc2f0
|
||||
serdes_preemphasis_lane1_xe9=0xc6e0
|
||||
serdes_preemphasis_lane2_xe9=0xbf00
|
||||
serdes_preemphasis_lane3_xe9=0xc2f0
|
||||
|
||||
# xe10 (40G)
|
||||
portmap_11=17:40
|
||||
xgxs_rx_lane_map_11=0x213
|
||||
xgxs_tx_lane_map_11=0x132
|
||||
phy_xaui_rx_polarity_flip_11=0xe
|
||||
phy_xaui_tx_polarity_flip_11=0x0
|
||||
serdes_driver_current_lane0_xe10=0x2
|
||||
serdes_driver_current_lane1_xe10=0x2
|
||||
serdes_driver_current_lane2_xe10=0x2
|
||||
serdes_driver_current_lane3_xe10=0x2
|
||||
serdes_pre_driver_current_lane0_xe10=0x2
|
||||
serdes_pre_driver_current_lane1_xe10=0x2
|
||||
serdes_pre_driver_current_lane2_xe10=0x2
|
||||
serdes_pre_driver_current_lane3_xe10=0x2
|
||||
serdes_preemphasis_lane0_xe10=0xb330
|
||||
serdes_preemphasis_lane1_xe10=0xbb10
|
||||
serdes_preemphasis_lane2_xe10=0xbb10
|
||||
serdes_preemphasis_lane3_xe10=0xbb10
|
||||
|
||||
# xe11 (40G)
|
||||
portmap_12=21:40
|
||||
xgxs_rx_lane_map_12=0x123
|
||||
xgxs_tx_lane_map_12=0x1203
|
||||
phy_xaui_rx_polarity_flip_12=0xc
|
||||
phy_xaui_tx_polarity_flip_12=0xe
|
||||
serdes_driver_current_lane0_xe11=0x2
|
||||
serdes_driver_current_lane1_xe11=0x2
|
||||
serdes_driver_current_lane2_xe11=0x2
|
||||
serdes_driver_current_lane3_xe11=0x2
|
||||
serdes_pre_driver_current_lane0_xe11=0x2
|
||||
serdes_pre_driver_current_lane1_xe11=0x2
|
||||
serdes_pre_driver_current_lane2_xe11=0x2
|
||||
serdes_pre_driver_current_lane3_xe11=0x2
|
||||
serdes_preemphasis_lane0_xe11=0xb330
|
||||
serdes_preemphasis_lane1_xe11=0xb330
|
||||
serdes_preemphasis_lane2_xe11=0xb330
|
||||
serdes_preemphasis_lane3_xe11=0xb330
|
||||
|
||||
# xe12 (40G)
|
||||
portmap_13=53:40
|
||||
xgxs_rx_lane_map_13=0x213
|
||||
xgxs_tx_lane_map_13=0x231
|
||||
phy_xaui_rx_polarity_flip_13=0x1
|
||||
phy_xaui_tx_polarity_flip_13=0x0
|
||||
serdes_driver_current_lane0_xe12=0x2
|
||||
serdes_driver_current_lane1_xe12=0x2
|
||||
serdes_driver_current_lane2_xe12=0x2
|
||||
serdes_driver_current_lane3_xe12=0x2
|
||||
serdes_pre_driver_current_lane0_xe12=0x2
|
||||
serdes_pre_driver_current_lane1_xe12=0x2
|
||||
serdes_pre_driver_current_lane2_xe12=0x2
|
||||
serdes_pre_driver_current_lane3_xe12=0x2
|
||||
serdes_preemphasis_lane0_xe12=0xaf40
|
||||
serdes_preemphasis_lane1_xe12=0xaf40
|
||||
serdes_preemphasis_lane2_xe12=0xaf40
|
||||
serdes_preemphasis_lane3_xe12=0xaf40
|
||||
|
||||
# xe13 (40G)
|
||||
portmap_14=49:40
|
||||
xgxs_rx_lane_map_14=0x1302
|
||||
xgxs_tx_lane_map_14=0x2031
|
||||
phy_xaui_rx_polarity_flip_14=0xb
|
||||
phy_xaui_tx_polarity_flip_14=0x3
|
||||
serdes_driver_current_lane0_xe13=0x2
|
||||
serdes_driver_current_lane1_xe13=0x2
|
||||
serdes_driver_current_lane2_xe13=0x2
|
||||
serdes_driver_current_lane3_xe13=0x2
|
||||
serdes_pre_driver_current_lane0_xe13=0x2
|
||||
serdes_pre_driver_current_lane1_xe13=0x2
|
||||
serdes_pre_driver_current_lane2_xe13=0x2
|
||||
serdes_pre_driver_current_lane3_xe13=0x2
|
||||
serdes_preemphasis_lane0_xe13=0xa760
|
||||
serdes_preemphasis_lane1_xe13=0xa760
|
||||
serdes_preemphasis_lane2_xe13=0xa760
|
||||
serdes_preemphasis_lane3_xe13=0xa760
|
||||
|
||||
# xe14 (40G)
|
||||
portmap_15=57:40
|
||||
xgxs_rx_lane_map_15=0x213
|
||||
xgxs_tx_lane_map_15=0x2031
|
||||
phy_xaui_rx_polarity_flip_15=0x1
|
||||
phy_xaui_tx_polarity_flip_15=0x0
|
||||
serdes_driver_current_lane0_xe14=0x1
|
||||
serdes_driver_current_lane1_xe14=0x1
|
||||
serdes_driver_current_lane2_xe14=0x1
|
||||
serdes_driver_current_lane3_xe14=0x1
|
||||
serdes_pre_driver_current_lane0_xe14=0x1
|
||||
serdes_pre_driver_current_lane1_xe14=0x1
|
||||
serdes_pre_driver_current_lane2_xe14=0x1
|
||||
serdes_pre_driver_current_lane3_xe14=0x1
|
||||
serdes_preemphasis_lane0_xe14=0xa760
|
||||
serdes_preemphasis_lane1_xe14=0xa760
|
||||
serdes_preemphasis_lane2_xe14=0xa760
|
||||
serdes_preemphasis_lane3_xe14=0xa760
|
||||
|
||||
# xe15 (40G)
|
||||
portmap_16=61:40
|
||||
xgxs_rx_lane_map_16=0x132
|
||||
xgxs_tx_lane_map_16=0x213
|
||||
phy_xaui_rx_polarity_flip_16=0x0
|
||||
phy_xaui_tx_polarity_flip_16=0x0
|
||||
serdes_driver_current_lane0_xe15=0x2
|
||||
serdes_driver_current_lane1_xe15=0x2
|
||||
serdes_driver_current_lane2_xe15=0x2
|
||||
serdes_driver_current_lane3_xe15=0x2
|
||||
serdes_pre_driver_current_lane0_xe15=0x2
|
||||
serdes_pre_driver_current_lane1_xe15=0x2
|
||||
serdes_pre_driver_current_lane2_xe15=0x2
|
||||
serdes_pre_driver_current_lane3_xe15=0x2
|
||||
serdes_preemphasis_lane0_xe15=0xa760
|
||||
serdes_preemphasis_lane1_xe15=0xa760
|
||||
serdes_preemphasis_lane2_xe15=0xa760
|
||||
serdes_preemphasis_lane3_xe15=0xa760
|
||||
|
||||
# xe16 (40G)
|
||||
portmap_17=69:40
|
||||
xgxs_rx_lane_map_17=0x213
|
||||
xgxs_tx_lane_map_17=0x2130
|
||||
phy_xaui_rx_polarity_flip_17=0x1
|
||||
phy_xaui_tx_polarity_flip_17=0xf
|
||||
serdes_driver_current_lane0_xe16=0x1
|
||||
serdes_driver_current_lane1_xe16=0x1
|
||||
serdes_driver_current_lane2_xe16=0x1
|
||||
serdes_driver_current_lane3_xe16=0x1
|
||||
serdes_pre_driver_current_lane0_xe16=0x1
|
||||
serdes_pre_driver_current_lane1_xe16=0x1
|
||||
serdes_pre_driver_current_lane2_xe16=0x1
|
||||
serdes_pre_driver_current_lane3_xe16=0x1
|
||||
serdes_preemphasis_lane0_xe16=0xa760
|
||||
serdes_preemphasis_lane1_xe16=0xa760
|
||||
serdes_preemphasis_lane2_xe16=0xa760
|
||||
serdes_preemphasis_lane3_xe16=0xa760
|
||||
|
||||
# xe17 (40G)
|
||||
portmap_18=65:40
|
||||
xgxs_rx_lane_map_18=0x132
|
||||
xgxs_tx_lane_map_18=0x2031
|
||||
phy_xaui_rx_polarity_flip_18=0x3
|
||||
phy_xaui_tx_polarity_flip_18=0x9
|
||||
serdes_driver_current_lane0_xe17=0x1
|
||||
serdes_driver_current_lane1_xe17=0x1
|
||||
serdes_driver_current_lane2_xe17=0x1
|
||||
serdes_driver_current_lane3_xe17=0x1
|
||||
serdes_pre_driver_current_lane0_xe17=0x1
|
||||
serdes_pre_driver_current_lane1_xe17=0x1
|
||||
serdes_pre_driver_current_lane2_xe17=0x1
|
||||
serdes_pre_driver_current_lane3_xe17=0x1
|
||||
serdes_preemphasis_lane0_xe17=0xa370
|
||||
serdes_preemphasis_lane1_xe17=0xa370
|
||||
serdes_preemphasis_lane2_xe17=0xa370
|
||||
serdes_preemphasis_lane3_xe17=0xa370
|
||||
|
||||
# xe18 (40G)
|
||||
portmap_19=73:40
|
||||
xgxs_rx_lane_map_19=0x213
|
||||
xgxs_tx_lane_map_19=0x2031
|
||||
phy_xaui_rx_polarity_flip_19=0x1
|
||||
phy_xaui_tx_polarity_flip_19=0x0
|
||||
serdes_driver_current_lane0_xe18=0x2
|
||||
serdes_driver_current_lane1_xe18=0x2
|
||||
serdes_driver_current_lane2_xe18=0x2
|
||||
serdes_driver_current_lane3_xe18=0x2
|
||||
serdes_pre_driver_current_lane0_xe18=0x2
|
||||
serdes_pre_driver_current_lane1_xe18=0x2
|
||||
serdes_pre_driver_current_lane2_xe18=0x2
|
||||
serdes_pre_driver_current_lane3_xe18=0x2
|
||||
serdes_preemphasis_lane0_xe18=0xa760
|
||||
serdes_preemphasis_lane1_xe18=0xa760
|
||||
serdes_preemphasis_lane2_xe18=0xa760
|
||||
serdes_preemphasis_lane3_xe18=0xa760
|
||||
|
||||
# xe19 (40G)
|
||||
portmap_20=77:40
|
||||
xgxs_rx_lane_map_20=0x123
|
||||
xgxs_tx_lane_map_20=0x1203
|
||||
phy_xaui_rx_polarity_flip_20=0x3
|
||||
phy_xaui_tx_polarity_flip_20=0xe
|
||||
serdes_driver_current_lane0_xe19=0x2
|
||||
serdes_driver_current_lane1_xe19=0x2
|
||||
serdes_driver_current_lane2_xe19=0x2
|
||||
serdes_driver_current_lane3_xe19=0x2
|
||||
serdes_pre_driver_current_lane0_xe19=0x2
|
||||
serdes_pre_driver_current_lane1_xe19=0x2
|
||||
serdes_pre_driver_current_lane2_xe19=0x2
|
||||
serdes_pre_driver_current_lane3_xe19=0x2
|
||||
serdes_preemphasis_lane0_xe19=0xaf40
|
||||
serdes_preemphasis_lane1_xe19=0xaf40
|
||||
serdes_preemphasis_lane2_xe19=0xaf40
|
||||
serdes_preemphasis_lane3_xe19=0xaf40
|
||||
|
||||
# xe20 (40G)
|
||||
portmap_21=109:40
|
||||
xgxs_rx_lane_map_21=0x132
|
||||
xgxs_tx_lane_map_21=0x132
|
||||
phy_xaui_rx_polarity_flip_21=0x8
|
||||
phy_xaui_tx_polarity_flip_21=0x0
|
||||
serdes_driver_current_lane0_xe20=0x1
|
||||
serdes_driver_current_lane1_xe20=0x1
|
||||
serdes_driver_current_lane2_xe20=0x1
|
||||
serdes_driver_current_lane3_xe20=0x2
|
||||
serdes_pre_driver_current_lane0_xe20=0x1
|
||||
serdes_pre_driver_current_lane1_xe20=0x1
|
||||
serdes_pre_driver_current_lane2_xe20=0x1
|
||||
serdes_pre_driver_current_lane3_xe20=0x2
|
||||
serdes_preemphasis_lane0_xe20=0xb330
|
||||
serdes_preemphasis_lane1_xe20=0xb330
|
||||
serdes_preemphasis_lane2_xe20=0xb330
|
||||
serdes_preemphasis_lane3_xe20=0xbff0
|
||||
|
||||
# xe21 (40G)
|
||||
portmap_22=105:40
|
||||
xgxs_rx_lane_map_22=0x1320
|
||||
xgxs_tx_lane_map_22=0x3021
|
||||
phy_xaui_rx_polarity_flip_22=0xd
|
||||
phy_xaui_tx_polarity_flip_22=0xb
|
||||
serdes_driver_current_lane0_xe21=0x1
|
||||
serdes_driver_current_lane1_xe21=0x1
|
||||
serdes_driver_current_lane2_xe21=0x1
|
||||
serdes_driver_current_lane3_xe21=0x1
|
||||
serdes_pre_driver_current_lane0_xe21=0x1
|
||||
serdes_pre_driver_current_lane1_xe21=0x1
|
||||
serdes_pre_driver_current_lane2_xe21=0x1
|
||||
serdes_pre_driver_current_lane3_xe21=0x1
|
||||
serdes_preemphasis_lane0_xe21=0xb330
|
||||
serdes_preemphasis_lane1_xe21=0xb330
|
||||
serdes_preemphasis_lane2_xe21=0xb330
|
||||
serdes_preemphasis_lane3_xe21=0xb330
|
||||
|
||||
# xe22 (40G)
|
||||
portmap_23=113:40
|
||||
xgxs_rx_lane_map_23=0x132
|
||||
xgxs_tx_lane_map_23=0x132
|
||||
phy_xaui_rx_polarity_flip_23=0x8
|
||||
phy_xaui_tx_polarity_flip_23=0x0
|
||||
serdes_driver_current_lane0_xe22=0x1
|
||||
serdes_driver_current_lane1_xe22=0x1
|
||||
serdes_driver_current_lane2_xe22=0x1
|
||||
serdes_driver_current_lane3_xe22=0x1
|
||||
serdes_pre_driver_current_lane0_xe22=0x1
|
||||
serdes_pre_driver_current_lane1_xe22=0x1
|
||||
serdes_pre_driver_current_lane2_xe22=0x1
|
||||
serdes_pre_driver_current_lane3_xe22=0x1
|
||||
serdes_preemphasis_lane0_xe22=0xbb10
|
||||
serdes_preemphasis_lane1_xe22=0xbb10
|
||||
serdes_preemphasis_lane2_xe22=0xbb10
|
||||
serdes_preemphasis_lane3_xe22=0xc2f0
|
||||
|
||||
# xe23 (40G)
|
||||
portmap_24=117:40
|
||||
xgxs_rx_lane_map_24=0x231
|
||||
xgxs_tx_lane_map_24=0x1203
|
||||
phy_xaui_rx_polarity_flip_24=0x3
|
||||
phy_xaui_tx_polarity_flip_24=0xe
|
||||
serdes_driver_current_lane0_xe23=0x3
|
||||
serdes_driver_current_lane1_xe23=0x5
|
||||
serdes_driver_current_lane2_xe23=0x3
|
||||
serdes_driver_current_lane3_xe23=0x3
|
||||
serdes_pre_driver_current_lane0_xe23=0x3
|
||||
serdes_pre_driver_current_lane1_xe23=0x5
|
||||
serdes_pre_driver_current_lane2_xe23=0x3
|
||||
serdes_pre_driver_current_lane3_xe23=0x3
|
||||
serdes_preemphasis_lane0_xe23=0xc6e0
|
||||
serdes_preemphasis_lane1_xe23=0xc6e0
|
||||
serdes_preemphasis_lane2_xe23=0xc6e0
|
||||
serdes_preemphasis_lane3_xe23=0xc6e0
|
||||
|
||||
# xe24 (40G)
|
||||
portmap_25=125:40
|
||||
xgxs_rx_lane_map_25=0x132
|
||||
xgxs_tx_lane_map_25=0x132
|
||||
phy_xaui_rx_polarity_flip_25=0x8
|
||||
phy_xaui_tx_polarity_flip_25=0x0
|
||||
serdes_driver_current_lane0_xe24=0x4
|
||||
serdes_driver_current_lane1_xe24=0x4
|
||||
serdes_driver_current_lane2_xe24=0x4
|
||||
serdes_driver_current_lane3_xe24=0x4
|
||||
serdes_pre_driver_current_lane0_xe24=0x4
|
||||
serdes_pre_driver_current_lane1_xe24=0x4
|
||||
serdes_pre_driver_current_lane2_xe24=0x4
|
||||
serdes_pre_driver_current_lane3_xe24=0x4
|
||||
serdes_preemphasis_lane0_xe24=0xc6e0
|
||||
serdes_preemphasis_lane1_xe24=0xc6e0
|
||||
serdes_preemphasis_lane2_xe24=0xc6e0
|
||||
serdes_preemphasis_lane3_xe24=0xcec0
|
||||
|
||||
# xe25 (40G)
|
||||
portmap_26=121:40
|
||||
xgxs_rx_lane_map_26=0x1320
|
||||
xgxs_tx_lane_map_26=0x3021
|
||||
phy_xaui_rx_polarity_flip_26=0xd
|
||||
phy_xaui_tx_polarity_flip_26=0xb
|
||||
serdes_driver_current_lane0_xe25=0x4
|
||||
serdes_driver_current_lane1_xe25=0x4
|
||||
serdes_driver_current_lane2_xe25=0x4
|
||||
serdes_driver_current_lane3_xe25=0x4
|
||||
serdes_pre_driver_current_lane0_xe25=0x4
|
||||
serdes_pre_driver_current_lane1_xe25=0x4
|
||||
serdes_pre_driver_current_lane2_xe25=0x4
|
||||
serdes_pre_driver_current_lane3_xe25=0x4
|
||||
serdes_preemphasis_lane0_xe25=0xc6e0
|
||||
serdes_preemphasis_lane1_xe25=0xc6e0
|
||||
serdes_preemphasis_lane2_xe25=0xc6e0
|
||||
serdes_preemphasis_lane3_xe25=0xc6e0
|
||||
|
||||
# xe26 (40G)
|
||||
portmap_27=81:40
|
||||
xgxs_rx_lane_map_27=0x1320
|
||||
xgxs_tx_lane_map_27=0x2031
|
||||
phy_xaui_rx_polarity_flip_27=0x1
|
||||
phy_xaui_tx_polarity_flip_27=0x2
|
||||
serdes_driver_current_lane0_xe26=0x2
|
||||
serdes_driver_current_lane1_xe26=0x2
|
||||
serdes_driver_current_lane2_xe26=0x2
|
||||
serdes_driver_current_lane3_xe26=0x2
|
||||
serdes_pre_driver_current_lane0_xe26=0x2
|
||||
serdes_pre_driver_current_lane1_xe26=0x2
|
||||
serdes_pre_driver_current_lane2_xe26=0x2
|
||||
serdes_pre_driver_current_lane3_xe26=0x2
|
||||
serdes_preemphasis_lane0_xe26=0xbb10
|
||||
serdes_preemphasis_lane1_xe26=0xbb10
|
||||
serdes_preemphasis_lane2_xe26=0xbf00
|
||||
serdes_preemphasis_lane3_xe26=0xbb10
|
||||
|
||||
# xe27 (40G)
|
||||
portmap_28=85:40
|
||||
xgxs_rx_lane_map_28=0x213
|
||||
xgxs_tx_lane_map_28=0x1203
|
||||
phy_xaui_rx_polarity_flip_28=0xc
|
||||
phy_xaui_tx_polarity_flip_28=0xe
|
||||
serdes_driver_current_lane0_xe27=0x4
|
||||
serdes_driver_current_lane1_xe27=0x5
|
||||
serdes_driver_current_lane2_xe27=0x4
|
||||
serdes_driver_current_lane3_xe27=0x5
|
||||
serdes_pre_driver_current_lane0_xe27=0x4
|
||||
serdes_pre_driver_current_lane1_xe27=0x5
|
||||
serdes_pre_driver_current_lane2_xe27=0x4
|
||||
serdes_pre_driver_current_lane3_xe27=0x5
|
||||
serdes_preemphasis_lane0_xe27=0xc2f0
|
||||
serdes_preemphasis_lane1_xe27=0xc6e0
|
||||
serdes_preemphasis_lane2_xe27=0xc6e0
|
||||
serdes_preemphasis_lane3_xe27=0xc6e0
|
||||
|
||||
# xe28 (40G)
|
||||
portmap_29=93:40
|
||||
xgxs_rx_lane_map_29=0x1320
|
||||
xgxs_tx_lane_map_29=0x2031
|
||||
phy_xaui_rx_polarity_flip_29=0x1
|
||||
phy_xaui_tx_polarity_flip_29=0x2
|
||||
serdes_driver_current_lane0_xe28=0x4
|
||||
serdes_driver_current_lane1_xe28=0x4
|
||||
serdes_driver_current_lane2_xe28=0x4
|
||||
serdes_driver_current_lane3_xe28=0x4
|
||||
serdes_pre_driver_current_lane0_xe28=0x4
|
||||
serdes_pre_driver_current_lane1_xe28=0x4
|
||||
serdes_pre_driver_current_lane2_xe28=0x4
|
||||
serdes_pre_driver_current_lane3_xe28=0x4
|
||||
serdes_preemphasis_lane0_xe28=0xc2f0
|
||||
serdes_preemphasis_lane1_xe28=0xc2f0
|
||||
serdes_preemphasis_lane2_xe28=0xc2f0
|
||||
serdes_preemphasis_lane3_xe28=0xc2f0
|
||||
|
||||
# xe29 (40G)
|
||||
portmap_30=89:40
|
||||
xgxs_rx_lane_map_30=0x1320
|
||||
xgxs_tx_lane_map_30=0x3021
|
||||
phy_xaui_rx_polarity_flip_30=0x2
|
||||
phy_xaui_tx_polarity_flip_30=0xb
|
||||
serdes_driver_current_lane0_xe29=0x4
|
||||
serdes_driver_current_lane1_xe29=0x4
|
||||
serdes_driver_current_lane2_xe29=0x4
|
||||
serdes_driver_current_lane3_xe29=0x4
|
||||
serdes_pre_driver_current_lane0_xe29=0x4
|
||||
serdes_pre_driver_current_lane1_xe29=0x4
|
||||
serdes_pre_driver_current_lane2_xe29=0x4
|
||||
serdes_pre_driver_current_lane3_xe29=0x4
|
||||
serdes_preemphasis_lane0_xe29=0xcad0
|
||||
serdes_preemphasis_lane1_xe29=0xc6e0
|
||||
serdes_preemphasis_lane2_xe29=0xc6e0
|
||||
serdes_preemphasis_lane3_xe29=0xc6e0
|
||||
|
||||
# xe30 (40G)
|
||||
portmap_31=101:40
|
||||
xgxs_rx_lane_map_31=0x1320
|
||||
xgxs_tx_lane_map_31=0x1203
|
||||
phy_xaui_rx_polarity_flip_31=0x1
|
||||
phy_xaui_tx_polarity_flip_31=0x6
|
||||
serdes_driver_current_lane0_xe30=0x6
|
||||
serdes_driver_current_lane1_xe30=0x6
|
||||
serdes_driver_current_lane2_xe30=0x6
|
||||
serdes_driver_current_lane3_xe30=0x7
|
||||
serdes_pre_driver_current_lane0_xe30=0x6
|
||||
serdes_pre_driver_current_lane1_xe30=0x6
|
||||
serdes_pre_driver_current_lane2_xe30=0x6
|
||||
serdes_pre_driver_current_lane3_xe30=0x7
|
||||
serdes_preemphasis_lane0_xe30=0xcec0
|
||||
serdes_preemphasis_lane1_xe30=0xcec0
|
||||
serdes_preemphasis_lane2_xe30=0xcad0
|
||||
serdes_preemphasis_lane3_xe30=0xc6e0
|
||||
|
||||
# xe31 (40G)
|
||||
portmap_32=97:40
|
||||
xgxs_rx_lane_map_32=0x213
|
||||
xgxs_tx_lane_map_32=0x2031
|
||||
phy_xaui_rx_polarity_flip_32=0xc
|
||||
phy_xaui_tx_polarity_flip_32=0x3
|
||||
serdes_driver_current_lane0_xe31=0x5
|
||||
serdes_driver_current_lane1_xe31=0x5
|
||||
serdes_driver_current_lane2_xe31=0x5
|
||||
serdes_driver_current_lane3_xe31=0x5
|
||||
serdes_pre_driver_current_lane0_xe31=0x5
|
||||
serdes_pre_driver_current_lane1_xe31=0x5
|
||||
serdes_pre_driver_current_lane2_xe31=0x5
|
||||
serdes_pre_driver_current_lane3_xe31=0x5
|
||||
serdes_preemphasis_lane0_xe31=0xcad0
|
||||
serdes_preemphasis_lane1_xe31=0xcad0
|
||||
serdes_preemphasis_lane2_xe31=0xcad0
|
||||
serdes_preemphasis_lane3_xe31=0xcad0
|
@ -57,6 +57,21 @@
|
||||
"id" : 8,
|
||||
"separator": "|",
|
||||
"instance" : "redis"
|
||||
},
|
||||
"GB_ASIC_DB" : {
|
||||
"id" : 9,
|
||||
"separator": "|",
|
||||
"instance" : "redis"
|
||||
},
|
||||
"GB_COUNTERS_DB" : {
|
||||
"id" : 10,
|
||||
"separator": "|",
|
||||
"instance" : "redis"
|
||||
},
|
||||
"GB_FLEX_COUNTER_DB" : {
|
||||
"id" : 11,
|
||||
"separator": "|",
|
||||
"instance" : "redis"
|
||||
}
|
||||
},
|
||||
"VERSION" : "1.0"
|
||||
|
@ -27,6 +27,18 @@ stdout_logfile=syslog
|
||||
stderr_logfile=syslog
|
||||
dependent_startup=true
|
||||
|
||||
[program:gearsyncd]
|
||||
command=/usr/bin/gearsyncd -p /usr/share/sonic/hwsku/gearbox_config.json
|
||||
priority=3
|
||||
autostart=false
|
||||
autorestart=false
|
||||
startsecs=0
|
||||
startretries=0
|
||||
stdout_logfile=syslog
|
||||
stderr_logfile=syslog
|
||||
dependent_startup=true
|
||||
dependent_startup_wait_for=rsyslogd:running
|
||||
|
||||
[program:portsyncd]
|
||||
command=/usr/bin/portsyncd
|
||||
priority=3
|
||||
|
18
files/build_templates/gbsyncd.service.j2
Normal file
18
files/build_templates/gbsyncd.service.j2
Normal file
@ -0,0 +1,18 @@
|
||||
[Unit]
|
||||
Description=gbsyncd service
|
||||
Requires=database.service updategraph.service
|
||||
ConditionPathExists=!/usr/share/sonic/hwsku/gearbox_config.json
|
||||
After=database.service updategraph.service
|
||||
After=interfaces-config.service
|
||||
After=swss.service
|
||||
Before=ntp-config.service
|
||||
|
||||
[Service]
|
||||
User=root
|
||||
Environment=sonic_asic_platform={{ sonic_asic_platform }}
|
||||
ExecStartPre=/usr/local/bin/gbsyncd.sh start
|
||||
ExecStart=/usr/local/bin/gbsyncd.sh wait
|
||||
ExecStop=/usr/local/bin/gbsyncd.sh stop
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
## This script is to automate loading of vendor specific docker images
|
||||
## and instalation of configuration files and vendor specific packages
|
||||
## and installation of configuration files and vendor specific packages
|
||||
## to debian file system.
|
||||
##
|
||||
## USAGE:
|
||||
@ -535,6 +535,8 @@ sudo LANG=C chroot $FILESYSTEM_ROOT umount -lf /sys
|
||||
# Copy service scripts (swss, syncd, bgp, radv)
|
||||
sudo LANG=C cp $SCRIPTS_DIR/swss.sh $FILESYSTEM_ROOT/usr/local/bin/swss.sh
|
||||
sudo LANG=C cp $SCRIPTS_DIR/syncd.sh $FILESYSTEM_ROOT/usr/local/bin/syncd.sh
|
||||
sudo LANG=C cp $SCRIPTS_DIR/syncd_common.sh $FILESYSTEM_ROOT/usr/local/bin/syncd_common.sh
|
||||
sudo LANG=C cp $SCRIPTS_DIR/gbsyncd.sh $FILESYSTEM_ROOT/usr/local/bin/gbsyncd.sh
|
||||
sudo LANG=C cp $SCRIPTS_DIR/bgp.sh $FILESYSTEM_ROOT/usr/local/bin/bgp.sh
|
||||
sudo LANG=C cp $SCRIPTS_DIR/radv.sh $FILESYSTEM_ROOT/usr/local/bin/radv.sh
|
||||
|
||||
|
45
files/scripts/gbsyncd.sh
Executable file
45
files/scripts/gbsyncd.sh
Executable file
@ -0,0 +1,45 @@
|
||||
#!/bin/bash
|
||||
|
||||
. /usr/local/bin/syncd_common.sh
|
||||
|
||||
function startplatform() {
|
||||
:
|
||||
}
|
||||
|
||||
function waitplatform() {
|
||||
:
|
||||
}
|
||||
|
||||
function stopplatform1() {
|
||||
:
|
||||
}
|
||||
|
||||
function stopplatform2() {
|
||||
:
|
||||
}
|
||||
|
||||
OP=$1
|
||||
DEV=$2
|
||||
|
||||
SERVICE="gbsyncd"
|
||||
PEER="swss"
|
||||
DEBUGLOG="/tmp/swss-gbsyncd-debug$DEV.log"
|
||||
LOCKFILE="/tmp/swss-gbsyncd-lock$DEV"
|
||||
NAMESPACE_PREFIX="asic"
|
||||
if [ "$DEV" ]; then
|
||||
NET_NS="$NAMESPACE_PREFIX$DEV" #name of the network namespace
|
||||
SONIC_DB_CLI="sonic-db-cli -n $NET_NS"
|
||||
else
|
||||
NET_NS=""
|
||||
SONIC_DB_CLI="sonic-db-cli"
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
start|wait|stop)
|
||||
$1
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {start|wait|stop}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
@ -1,96 +1,8 @@
|
||||
#!/bin/bash
|
||||
|
||||
. /usr/local/bin/syncd_common.sh
|
||||
|
||||
function debug()
|
||||
{
|
||||
/usr/bin/logger $1
|
||||
/bin/echo `date` "- $1" >> ${DEBUGLOG}
|
||||
}
|
||||
|
||||
function lock_service_state_change()
|
||||
{
|
||||
debug "Locking ${LOCKFILE} from ${SERVICE}$DEV service"
|
||||
|
||||
exec {LOCKFD}>${LOCKFILE}
|
||||
/usr/bin/flock -x ${LOCKFD}
|
||||
trap "/usr/bin/flock -u ${LOCKFD}" 0 2 3 15
|
||||
|
||||
debug "Locked ${LOCKFILE} (${LOCKFD}) from ${SERVICE}$DEV service"
|
||||
}
|
||||
|
||||
function unlock_service_state_change()
|
||||
{
|
||||
debug "Unlocking ${LOCKFILE} (${LOCKFD}) from ${SERVICE}$DEV service"
|
||||
/usr/bin/flock -u ${LOCKFD}
|
||||
}
|
||||
|
||||
function check_warm_boot()
|
||||
{
|
||||
SYSTEM_WARM_START=`$SONIC_DB_CLI STATE_DB hget "WARM_RESTART_ENABLE_TABLE|system" enable`
|
||||
SERVICE_WARM_START=`$SONIC_DB_CLI STATE_DB hget "WARM_RESTART_ENABLE_TABLE|${SERVICE}" enable`
|
||||
# SYSTEM_WARM_START could be empty, always make WARM_BOOT meaningful.
|
||||
if [[ x"$SYSTEM_WARM_START" == x"true" ]] || [[ x"$SERVICE_WARM_START" == x"true" ]]; then
|
||||
WARM_BOOT="true"
|
||||
else
|
||||
WARM_BOOT="false"
|
||||
fi
|
||||
}
|
||||
|
||||
function wait_for_database_service()
|
||||
{
|
||||
# Wait for redis server start before database clean
|
||||
until [[ $($SONIC_DB_CLI PING | grep -c PONG) -gt 0 ]]; do
|
||||
sleep 1;
|
||||
done
|
||||
|
||||
# Wait for configDB initialization
|
||||
until [[ $($SONIC_DB_CLI CONFIG_DB GET "CONFIG_DB_INITIALIZED") ]];
|
||||
do sleep 1;
|
||||
done
|
||||
}
|
||||
|
||||
function getBootType()
|
||||
{
|
||||
# same code snippet in files/build_templates/docker_image_ctl.j2
|
||||
case "$(cat /proc/cmdline)" in
|
||||
*SONIC_BOOT_TYPE=warm*)
|
||||
TYPE='warm'
|
||||
;;
|
||||
*SONIC_BOOT_TYPE=fastfast*)
|
||||
TYPE='fastfast'
|
||||
;;
|
||||
*SONIC_BOOT_TYPE=fast*|*fast-reboot*)
|
||||
# check that the key exists
|
||||
if [[ $($SONIC_DB_CLI STATE_DB GET "FAST_REBOOT|system") == "1" ]]; then
|
||||
TYPE='fast'
|
||||
else
|
||||
TYPE='cold'
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
TYPE='cold'
|
||||
esac
|
||||
echo "${TYPE}"
|
||||
}
|
||||
|
||||
start() {
|
||||
debug "Starting ${SERVICE}$DEV service..."
|
||||
|
||||
lock_service_state_change
|
||||
|
||||
mkdir -p /host/warmboot
|
||||
|
||||
wait_for_database_service
|
||||
check_warm_boot
|
||||
|
||||
debug "Warm boot flag: ${SERVICE}$DEV ${WARM_BOOT}."
|
||||
|
||||
if [[ x"$WARM_BOOT" == x"true" ]]; then
|
||||
# Leave a mark for syncd scripts running inside docker.
|
||||
touch /host/warmboot/warm-starting
|
||||
else
|
||||
rm -f /host/warmboot/warm-starting
|
||||
fi
|
||||
function startplatform() {
|
||||
|
||||
# platform specific tasks
|
||||
|
||||
@ -119,35 +31,18 @@ start() {
|
||||
/etc/init.d/xpnet.sh start
|
||||
fi
|
||||
fi
|
||||
|
||||
# start service docker
|
||||
/usr/bin/${SERVICE}.sh start $DEV
|
||||
debug "Started ${SERVICE} service..."
|
||||
|
||||
unlock_service_state_change
|
||||
}
|
||||
|
||||
wait() {
|
||||
function waitplatform() {
|
||||
|
||||
if [[ x"$sonic_asic_platform" == x"mellanox" ]]; then
|
||||
debug "Starting pmon service..."
|
||||
/bin/systemctl start pmon
|
||||
debug "Started pmon service"
|
||||
fi
|
||||
/usr/bin/${SERVICE}.sh wait $DEV
|
||||
}
|
||||
|
||||
stop() {
|
||||
debug "Stopping ${SERVICE}$DEV service..."
|
||||
|
||||
lock_service_state_change
|
||||
check_warm_boot
|
||||
debug "Warm boot flag: ${SERVICE}$DEV ${WARM_BOOT}."
|
||||
|
||||
if [[ x"$WARM_BOOT" == x"true" ]]; then
|
||||
TYPE=warm
|
||||
else
|
||||
TYPE=cold
|
||||
fi
|
||||
function stopplatform1() {
|
||||
|
||||
if [[ x$sonic_asic_platform == x"mellanox" ]] && [[ x$TYPE == x"cold" ]]; then
|
||||
debug "Stopping pmon service ahead of syncd..."
|
||||
@ -177,10 +72,9 @@ stop() {
|
||||
/usr/bin/docker exec -i syncd$DEV /bin/sync
|
||||
debug "Finished ${TYPE} shutdown syncd process ..."
|
||||
fi
|
||||
}
|
||||
|
||||
/usr/bin/${SERVICE}.sh stop $DEV
|
||||
debug "Stopped ${SERVICE}$DEV service..."
|
||||
|
||||
function stopplatform2() {
|
||||
# platform specific tasks
|
||||
|
||||
if [[ x"$WARM_BOOT" != x"true" ]]; then
|
||||
@ -192,8 +86,6 @@ stop() {
|
||||
/etc/init.d/xpnet.sh start
|
||||
fi
|
||||
fi
|
||||
|
||||
unlock_service_state_change
|
||||
}
|
||||
|
||||
OP=$1
|
||||
|
141
files/scripts/syncd_common.sh
Executable file
141
files/scripts/syncd_common.sh
Executable file
@ -0,0 +1,141 @@
|
||||
#!/bin/bash
|
||||
|
||||
#
|
||||
# common functions used by "syncd" scipts (syncd.sh, gbsyncd.sh, etc..)
|
||||
# scripts using this must provide implementations of the following functions:
|
||||
#
|
||||
# startplatform
|
||||
# waitplatform
|
||||
# stopplatform1 and stopplatform2
|
||||
#
|
||||
# For examples of these, see gbsyncd.sh and syncd.sh.
|
||||
#
|
||||
|
||||
function debug()
|
||||
{
|
||||
/usr/bin/logger $1
|
||||
/bin/echo `date` "- $1" >> ${DEBUGLOG}
|
||||
}
|
||||
|
||||
function lock_service_state_change()
|
||||
{
|
||||
debug "Locking ${LOCKFILE} from ${SERVICE}$DEV service"
|
||||
|
||||
exec {LOCKFD}>${LOCKFILE}
|
||||
/usr/bin/flock -x ${LOCKFD}
|
||||
trap "/usr/bin/flock -u ${LOCKFD}" 0 2 3 15
|
||||
|
||||
debug "Locked ${LOCKFILE} (${LOCKFD}) from ${SERVICE}$DEV service"
|
||||
}
|
||||
|
||||
function unlock_service_state_change()
|
||||
{
|
||||
debug "Unlocking ${LOCKFILE} (${LOCKFD}) from ${SERVICE}$DEV service"
|
||||
/usr/bin/flock -u ${LOCKFD}
|
||||
}
|
||||
|
||||
function check_warm_boot()
|
||||
{
|
||||
SYSTEM_WARM_START=`$SONIC_DB_CLI STATE_DB hget "WARM_RESTART_ENABLE_TABLE|system" enable`
|
||||
SERVICE_WARM_START=`$SONIC_DB_CLI STATE_DB hget "WARM_RESTART_ENABLE_TABLE|${SERVICE}" enable`
|
||||
# SYSTEM_WARM_START could be empty, always make WARM_BOOT meaningful.
|
||||
if [[ x"$SYSTEM_WARM_START" == x"true" ]] || [[ x"$SERVICE_WARM_START" == x"true" ]]; then
|
||||
WARM_BOOT="true"
|
||||
else
|
||||
WARM_BOOT="false"
|
||||
fi
|
||||
}
|
||||
|
||||
function wait_for_database_service()
|
||||
{
|
||||
# Wait for redis server start before database clean
|
||||
until [[ $($SONIC_DB_CLI PING | grep -c PONG) -gt 0 ]]; do
|
||||
sleep 1;
|
||||
done
|
||||
|
||||
# Wait for configDB initialization
|
||||
until [[ $($SONIC_DB_CLI CONFIG_DB GET "CONFIG_DB_INITIALIZED") ]];
|
||||
do sleep 1;
|
||||
done
|
||||
}
|
||||
|
||||
function getBootType()
|
||||
{
|
||||
# same code snippet in files/build_templates/docker_image_ctl.j2
|
||||
case "$(cat /proc/cmdline)" in
|
||||
*SONIC_BOOT_TYPE=warm*)
|
||||
TYPE='warm'
|
||||
;;
|
||||
*SONIC_BOOT_TYPE=fastfast*)
|
||||
TYPE='fastfast'
|
||||
;;
|
||||
*SONIC_BOOT_TYPE=fast*|*fast-reboot*)
|
||||
# check that the key exists
|
||||
if [[ $($SONIC_DB_CLI STATE_DB GET "FAST_REBOOT|system") == "1" ]]; then
|
||||
TYPE='fast'
|
||||
else
|
||||
TYPE='cold'
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
TYPE='cold'
|
||||
esac
|
||||
echo "${TYPE}"
|
||||
}
|
||||
|
||||
start() {
|
||||
debug "Starting ${SERVICE}$DEV service..."
|
||||
|
||||
lock_service_state_change
|
||||
|
||||
mkdir -p /host/warmboot
|
||||
|
||||
wait_for_database_service
|
||||
check_warm_boot
|
||||
|
||||
debug "Warm boot flag: ${SERVICE}$DEV ${WARM_BOOT}."
|
||||
|
||||
if [[ x"$WARM_BOOT" == x"true" ]]; then
|
||||
# Leave a mark for syncd scripts running inside docker.
|
||||
touch /host/warmboot/warm-starting
|
||||
else
|
||||
rm -f /host/warmboot/warm-starting
|
||||
fi
|
||||
|
||||
startplatform
|
||||
|
||||
# start service docker
|
||||
/usr/bin/${SERVICE}.sh start $DEV
|
||||
debug "Started ${SERVICE} service..."
|
||||
|
||||
unlock_service_state_change
|
||||
}
|
||||
|
||||
wait() {
|
||||
waitplatform
|
||||
|
||||
/usr/bin/${SERVICE}.sh wait $DEV
|
||||
}
|
||||
|
||||
stop() {
|
||||
debug "Stopping ${SERVICE}$DEV service..."
|
||||
|
||||
lock_service_state_change
|
||||
check_warm_boot
|
||||
debug "Warm boot flag: ${SERVICE}$DEV ${WARM_BOOT}."
|
||||
|
||||
if [[ x"$WARM_BOOT" == x"true" ]]; then
|
||||
TYPE=warm
|
||||
else
|
||||
TYPE=cold
|
||||
fi
|
||||
|
||||
stopplatform1
|
||||
|
||||
/usr/bin/${SERVICE}.sh stop $DEV
|
||||
debug "Stopped ${SERVICE}$DEV service..."
|
||||
|
||||
stopplatform2
|
||||
|
||||
unlock_service_state_change
|
||||
}
|
30
platform/template/docker-gbsyncd-base.mk
Normal file
30
platform/template/docker-gbsyncd-base.mk
Normal file
@ -0,0 +1,30 @@
|
||||
# docker image for gbsyncd
|
||||
|
||||
|
||||
DOCKER_GBSYNCD_BASE_STEM = docker-gbsyncd-$(DOCKER_GBSYNCD_PLATFORM_CODE)
|
||||
DOCKER_GBSYNCD_BASE = $(DOCKER_GBSYNCD_BASE_STEM).gz
|
||||
DOCKER_GBSYNCD_BASE_DBG = $(DOCKER_GBSYNCD_BASE_STEM)-$(DBG_IMAGE_MARK).gz
|
||||
|
||||
$(DOCKER_GBSYNCD_BASE)_PATH = $(PLATFORM_PATH)/docker-gbsyncd-$(DOCKER_GBSYNCD_PLATFORM_CODE)
|
||||
|
||||
$(DOCKER_GBSYNCD_BASE)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT)
|
||||
|
||||
$(DOCKER_GBSYNCD_BASE)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE_BUSTER)
|
||||
|
||||
$(DOCKER_GBSYNCD_BASE)_DBG_DEPENDS += $($(DOCKER_CONFIG_ENGINE_BUSTER)_DBG_DEPENDS)
|
||||
|
||||
$(DOCKER_GBSYNCD_BASE)_DBG_IMAGE_PACKAGES = $($(DOCKER_CONFIG_ENGINE_BUSTER)_DBG_IMAGE_PACKAGES)
|
||||
|
||||
SONIC_DOCKER_IMAGES += $(DOCKER_GBSYNCD_BASE)
|
||||
SONIC_BUSTER_DOCKERS += $(DOCKER_GBSYNCD_BASE)
|
||||
SONIC_INSTALL_DOCKER_IMAGES += $(DOCKER_GBSYNCD_BASE)
|
||||
|
||||
SONIC_DOCKER_DBG_IMAGES += $(DOCKER_GBSYNCD_BASE_DBG)
|
||||
SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_GBSYNCD_BASE_DBG)
|
||||
SONIC_INSTALL_DOCKER_DBG_IMAGES += $(DOCKER_GBSYNCD_BASE_DBG)
|
||||
|
||||
$(DOCKER_GBSYNCD_BASE)_CONTAINER_NAME = gbsyncd
|
||||
$(DOCKER_GBSYNCD_BASE)_RUN_OPT += --net=host --privileged -t
|
||||
$(DOCKER_GBSYNCD_BASE)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf
|
||||
$(DOCKER_GBSYNCD_BASE)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro
|
||||
|
11
platform/vs/docker-gbsyncd-vs.dep
Normal file
11
platform/vs/docker-gbsyncd-vs.dep
Normal file
@ -0,0 +1,11 @@
|
||||
#DPKG FRK
|
||||
DPATH := $($(DOCKER_GBSYNCD_BASE)_PATH)
|
||||
DEP_FILES := $(SONIC_COMMON_FILES_LIST) platform/vs/docker-gbsyncd-vs.mk platform/vs/docker-gbsyncd-vs.dep
|
||||
DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST)
|
||||
DEP_FILES += $(shell git ls-files $(DPATH))
|
||||
|
||||
$(DOCKER_GBSYNCD_BASE)_CACHE_MODE := GIT_CONTENT_SHA
|
||||
$(DOCKER_GBSYNCD_BASE)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST)
|
||||
$(DOCKER_GBSYNCD_BASE)_DEP_FILES := $(DEP_FILES)
|
||||
|
||||
$(eval $(call add_dbg_docker,$(DOCKER_GBSYNCD_BASE),$(DOCKER_GBSYNCD_BASE_DBG)))
|
14
platform/vs/docker-gbsyncd-vs.mk
Normal file
14
platform/vs/docker-gbsyncd-vs.mk
Normal file
@ -0,0 +1,14 @@
|
||||
# docker image for vs gbsyncd
|
||||
|
||||
DOCKER_GBSYNCD_PLATFORM_CODE = vs
|
||||
include $(PLATFORM_PATH)/../template/docker-gbsyncd-base.mk
|
||||
|
||||
$(DOCKER_GBSYNCD_BASE)_DEPENDS += $(SYNCD_VS)
|
||||
|
||||
$(DOCKER_GBSYNCD_BASE)_DBG_DEPENDS += $(SYNCD_VS_DBG) \
|
||||
$(LIBSWSSCOMMON_DBG) \
|
||||
$(LIBSAIMETADATA_DBG) \
|
||||
$(LIBSAIREDIS_DBG) \
|
||||
$(LIBSAIVS_DBG)
|
||||
|
||||
$(DOCKER_GBSYNCD_BASE)_RUN_OPT += -v /host/warmboot:/var/warmboot
|
34
platform/vs/docker-gbsyncd-vs/Dockerfile.j2
Normal file
34
platform/vs/docker-gbsyncd-vs/Dockerfile.j2
Normal file
@ -0,0 +1,34 @@
|
||||
FROM docker-config-engine-buster
|
||||
|
||||
ARG docker_container_name
|
||||
RUN [ -f /etc/rsyslog.conf ] && sed -ri "s/%syslogtag%/$docker_container_name#%syslogtag%/;" /etc/rsyslog.conf
|
||||
|
||||
## Make apt-get non-interactive
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get update
|
||||
|
||||
RUN apt-get install -f -y iproute2=4.20.0-2 libcap2-bin=1:2.25-2
|
||||
|
||||
COPY \
|
||||
{% for deb in docker_gbsyncd_vs_debs.split(' ') -%}
|
||||
debs/{{ deb }}{{' '}}
|
||||
{%- endfor -%}
|
||||
debs/
|
||||
|
||||
RUN dpkg -i \
|
||||
{% for deb in docker_gbsyncd_vs_debs.split(' ') -%}
|
||||
debs/{{ deb }}{{' '}}
|
||||
{%- endfor %}
|
||||
|
||||
COPY ["start.sh", "/usr/bin/"]
|
||||
|
||||
COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
|
||||
COPY ["files/supervisor-proc-exit-listener", "/usr/bin"]
|
||||
COPY ["critical_processes", "/etc/supervisor/"]
|
||||
|
||||
## Clean up
|
||||
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
|
||||
RUN rm -rf /debs
|
||||
|
||||
ENTRYPOINT ["/usr/bin/supervisord"]
|
1
platform/vs/docker-gbsyncd-vs/critical_processes
Normal file
1
platform/vs/docker-gbsyncd-vs/critical_processes
Normal file
@ -0,0 +1 @@
|
||||
program:syncd
|
21
platform/vs/docker-gbsyncd-vs/start.sh
Executable file
21
platform/vs/docker-gbsyncd-vs/start.sh
Executable file
@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
HWSKU_DIR=/usr/share/sonic/hwsku
|
||||
|
||||
mkdir -p /etc/sai.d/
|
||||
|
||||
# Create/Copy the pai.profile to /etc/sai.d/pai.profile
|
||||
if [ -f $HWSKU_DIR/pai.profile.j2 ]; then
|
||||
sonic-cfggen -d -t $HWSKU_DIR/pai.profile.j2 > /etc/sai.d/pai.profile
|
||||
else
|
||||
if [ -f $HWSKU_DIR/pai.profile ]; then
|
||||
cp $HWSKU_DIR/pai.profile /etc/sai.d/pai.profile
|
||||
fi
|
||||
fi
|
||||
|
||||
# Create/Copy the gearbox configs to /etc/sai.d
|
||||
if [[ x"$sonic_asic_platform" == x"broadcom" ]]; then
|
||||
if [ -d $HWSKU_DIR/gearbox ]; then
|
||||
cp $HWSKU_DIR/gearbox/*.bcm /etc/sai.d/.
|
||||
fi
|
||||
fi
|
48
platform/vs/docker-gbsyncd-vs/supervisord.conf
Normal file
48
platform/vs/docker-gbsyncd-vs/supervisord.conf
Normal file
@ -0,0 +1,48 @@
|
||||
[supervisord]
|
||||
logfile_maxbytes=1MB
|
||||
logfile_backups=2
|
||||
nodaemon=true
|
||||
|
||||
[eventlistener:dependent-startup]
|
||||
command=python -m supervisord_dependent_startup
|
||||
autostart=true
|
||||
autorestart=unexpected
|
||||
startretries=0
|
||||
exitcodes=0,3
|
||||
events=PROCESS_STATE
|
||||
|
||||
[eventlistener:supervisor-proc-exit-listener]
|
||||
command=/usr/bin/supervisor-proc-exit-listener --container-name gbsyncd
|
||||
events=PROCESS_STATE_EXITED
|
||||
autostart=true
|
||||
autorestart=unexpected
|
||||
|
||||
[program:rsyslogd]
|
||||
command=/usr/sbin/rsyslogd -n -iNONE
|
||||
priority=1
|
||||
autostart=false
|
||||
autorestart=unexpected
|
||||
stdout_logfile=syslog
|
||||
stderr_logfile=syslog
|
||||
dependent_startup=true
|
||||
|
||||
[program:start]
|
||||
command=/usr/bin/start.sh
|
||||
priority=2
|
||||
autostart=false
|
||||
autorestart=false
|
||||
startsecs=0
|
||||
stdout_logfile=syslog
|
||||
stderr_logfile=syslog
|
||||
dependent_startup=true
|
||||
dependent_startup_wait_for=rsyslogd:running
|
||||
|
||||
[program:syncd]
|
||||
command=/usr/bin/gbsyncd_start.sh
|
||||
priority=3
|
||||
autostart=false
|
||||
autorestart=false
|
||||
stdout_logfile=syslog
|
||||
stderr_logfile=syslog
|
||||
dependent_startup=true
|
||||
dependent_startup_wait_for=start:exited
|
@ -58,9 +58,24 @@
|
||||
"separator": "|",
|
||||
"instance" : "redis"
|
||||
},
|
||||
"CHASSIS_DB" : {
|
||||
"GB_ASIC_DB" : {
|
||||
"id" : 8,
|
||||
"separator": "|",
|
||||
"instance" : "redis"
|
||||
},
|
||||
"GB_COUNTERS_DB" : {
|
||||
"id" : 9,
|
||||
"separator": "|",
|
||||
"instance" : "redis"
|
||||
},
|
||||
"GB_FLEX_COUNTER_DB" : {
|
||||
"id" : 10,
|
||||
"separator": "|",
|
||||
"instance" : "redis"
|
||||
},
|
||||
"CHASSIS_DB" : {
|
||||
"id" : 11,
|
||||
"separator": "|",
|
||||
"instance" : "redis_chassis"
|
||||
}
|
||||
},
|
||||
|
14
platform/vs/gbsyncd-vs.mk
Normal file
14
platform/vs/gbsyncd-vs.mk
Normal file
@ -0,0 +1,14 @@
|
||||
# docker image for vs gbsyncd
|
||||
|
||||
DOCKER_GBSYNCD_PLATFORM_CODE = vs
|
||||
include $(PLATFORM_PATH)/../template/docker-gbsyncd-base.mk
|
||||
|
||||
$(DOCKER_GBSYNCD_BASE)_DEPENDS += $(SYNCD_VS)
|
||||
|
||||
$(DOCKER_GBSYNCD_BASE)_DBG_DEPENDS += $(SYNCD_VS_DBG) \
|
||||
$(LIBSWSSCOMMON_DBG) \
|
||||
$(LIBSAIMETADATA_DBG) \
|
||||
$(LIBSAIREDIS_DBG) \
|
||||
$(LIBSAIVS_DBG)
|
||||
|
||||
$(DOCKER_GBSYNCD_BASE)_RUN_OPT += -v /host/warmboot:/var/warmboot
|
@ -2,6 +2,7 @@ include $(PLATFORM_PATH)/syncd-vs.mk
|
||||
include $(PLATFORM_PATH)/sonic-version.mk
|
||||
include $(PLATFORM_PATH)/docker-sonic-vs.mk
|
||||
include $(PLATFORM_PATH)/docker-syncd-vs.mk
|
||||
include $(PLATFORM_PATH)/docker-gbsyncd-vs.mk
|
||||
include $(PLATFORM_PATH)/one-image.mk
|
||||
include $(PLATFORM_PATH)/onie.mk
|
||||
include $(PLATFORM_PATH)/kvm-image.mk
|
||||
|
@ -19,6 +19,9 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% :
|
||||
cp -Lr $$d device/x86_64-kvm_x86_64-r0/ ; \
|
||||
cp ./sai.vs_profile device/x86_64-kvm_x86_64-r0/$$(basename $$d)/sai.profile; \
|
||||
grep -v ^# device/x86_64-kvm_x86_64-r0/$$(basename $$d)/port_config.ini | awk '{i=i+1;print "eth"i":"$$2}' > device/x86_64-kvm_x86_64-r0/$$(basename $$d)/lanemap.ini
|
||||
cp ./pai.vs_profile device/x86_64-kvm_x86_64-r0/$$(basename $$d)/pai.profile; \
|
||||
grep -v ^# device/x86_64-kvm_x86_64-r0/$$(basename $$d)/port_config.ini | awk '{i=i+1;print "eth"i":"$$2}' > device/x86_64-kvm_x86_64-r0/$$(basename $$d)/lanemap.ini
|
||||
|
||||
done;
|
||||
|
||||
# Build the package
|
||||
|
7
src/sonic-device-data/src/pai.vs_profile
Normal file
7
src/sonic-device-data/src/pai.vs_profile
Normal file
@ -0,0 +1,7 @@
|
||||
SAI_WARM_BOOT_READ_FILE=/var/cache/sai_warmboot.bin
|
||||
SAI_WARM_BOOT_WRITE_FILE=/var/cache/sai_warmboot.bin
|
||||
SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_BCM81724
|
||||
SAI_VS_SAI_SWITCH_TYPE=SAI_SWITCH_TYPE_PHY
|
||||
SAI_VS_HOSTIF_USE_TAP_DEVICE=false
|
||||
SAI_VS_USE_BCMSIM_LINK_MON=true
|
||||
SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini
|
Loading…
Reference in New Issue
Block a user