[device/dell] Added dynamic sai.profile generation (#1518)

* [device/dell] Added dynamic sai.profile generation

This commit addds new code for generating dynamic sai.profile file.
The sai.profile.j2 will generate the sai.profile dynamically based on
the topology. It will generate the sai.profile under /etc/sai.d/ directory
in syncd. Before syncd is started this J2 file will be run from the start.sh
file from /usr/bin/ directory. Since the sai.profile is dynamically generated
the old sai.profile file is not required so deleted the file for S6100.
It also address couple of more changes for port_config.ini support is added
for speed in the file which can be used later to find the port speed. Also
the buffer_default_t*.j2 file the ports should be from 0 to 64 changed.

Unit tested the code on S6100 for dynamic generation of sai.profile file for
both T0 and T1 and the file was created in /etc/sai.d/sai.profile
Similarly tested the sonic binary on S6000 to make sure that the sai.profile is
copied from the /usr/share/sonic/hwsku/sai.profile to /etc/sai.d/sai.profile.

Signed-off-by: Harish Venkatraman <Harish_Venkatraman@dell.com>

* [sonic-buildimage] Updating module sai-redis

Updating the sonic-sairedis point.

Signed-off-by: Harish Venkatraman <Harish_Venkatraman@dell.com>
This commit is contained in:
Harish Venkatraman 2018-03-21 09:28:23 -07:00 committed by Ying Xie
parent d142f3ceb2
commit 87e942343f
7 changed files with 93 additions and 69 deletions

View File

@ -3,7 +3,7 @@
{%- macro generate_port_lists(PORT_ALL) %}
{# Generate list of ports #}
{%- for port_idx in range(0,63) %}
{%- for port_idx in range(0,64) %}
{%- if PORT_ALL.append("Ethernet%d" % (port_idx)) %}{%- endif %}
{%- endfor %}
{%- endmacro %}

View File

@ -3,7 +3,7 @@
{%- macro generate_port_lists(PORT_ALL) %}
{# Generate list of ports #}
{%- for port_idx in range(0,63) %}
{%- for port_idx in range(0,64) %}
{%- if PORT_ALL.append("Ethernet%d" % (port_idx)) %}{%- endif %}
{%- endfor %}
{%- endmacro %}

View File

@ -1,65 +1,65 @@
# name lanes alias index
Ethernet0 101,102 fortyGigE1/1/1 0
Ethernet1 103,104 fortyGigE1/1/2 1
Ethernet2 97,98 fortyGigE1/1/3 2
Ethernet3 99,100 fortyGigE1/1/4 3
Ethernet4 69,70 fortyGigE1/1/5 4
Ethernet5 71,72 fortyGigE1/1/6 5
Ethernet6 65,66 fortyGigE1/1/7 6
Ethernet7 67,68 fortyGigE1/1/8 7
Ethernet8 53,54 fortyGigE1/1/9 8
Ethernet9 55,56 fortyGigE1/1/10 9
Ethernet10 49,50 fortyGigE1/1/11 10
Ethernet11 51,52 fortyGigE1/1/12 11
Ethernet12 21,22 fortyGigE1/1/13 12
Ethernet13 23,24 fortyGigE1/1/14 13
Ethernet14 17,18 fortyGigE1/1/15 14
Ethernet15 19,20 fortyGigE1/1/16 15
Ethernet16 25,26 fortyGigE1/2/1 16
Ethernet17 27,28 fortyGigE1/2/2 17
Ethernet18 29,30 fortyGigE1/2/3 18
Ethernet19 31,32 fortyGigE1/2/4 19
Ethernet20 57,58 fortyGigE1/2/5 20
Ethernet21 59,60 fortyGigE1/2/6 21
Ethernet22 61,62 fortyGigE1/2/7 22
Ethernet23 63,64 fortyGigE1/2/8 23
Ethernet24 73,74 fortyGigE1/2/9 24
Ethernet25 75,76 fortyGigE1/2/10 25
Ethernet26 77,78 fortyGigE1/2/11 26
Ethernet27 79,80 fortyGigE1/2/12 27
Ethernet28 105,106 fortyGigE1/2/13 28
Ethernet29 107,108 fortyGigE1/2/14 29
Ethernet30 109,110 fortyGigE1/2/15 30
Ethernet31 111,112 fortyGigE1/2/16 31
Ethernet32 13,14 fortyGigE1/3/1 32
Ethernet33 15,16 fortyGigE1/3/2 33
Ethernet34 9,10 fortyGigE1/3/3 34
Ethernet35 11,12 fortyGigE1/3/4 35
Ethernet36 125,126 fortyGigE1/3/5 36
Ethernet37 127,128 fortyGigE1/3/6 37
Ethernet38 121,122 fortyGigE1/3/7 38
Ethernet39 123,124 fortyGigE1/3/8 39
Ethernet40 93,94 fortyGigE1/3/9 40
Ethernet41 95,96 fortyGigE1/3/10 41
Ethernet42 89,90 fortyGigE1/3/11 42
Ethernet43 91,92 fortyGigE1/3/12 43
Ethernet44 45,46 fortyGigE1/3/13 44
Ethernet45 47,48 fortyGigE1/3/14 45
Ethernet46 41,42 fortyGigE1/3/15 46
Ethernet47 43,44 fortyGigE1/3/16 47
Ethernet48 113,114 fortyGigE1/4/1 48
Ethernet49 115,116 fortyGigE1/4/2 49
Ethernet50 117,118 fortyGigE1/4/3 50
Ethernet51 119,120 fortyGigE1/4/4 51
Ethernet52 1,2 fortyGigE1/4/5 52
Ethernet53 3,4 fortyGigE1/4/6 53
Ethernet54 5,6 fortyGigE1/4/7 54
Ethernet55 7,8 fortyGigE1/4/8 55
Ethernet56 33,34 fortyGigE1/4/9 56
Ethernet57 35,36 fortyGigE1/4/10 57
Ethernet58 37,38 fortyGigE1/4/11 58
Ethernet59 39,40 fortyGigE1/4/12 59
Ethernet60 81,82 fortyGigE1/4/13 60
Ethernet61 83,84 fortyGigE1/4/14 61
Ethernet62 85,86 fortyGigE1/4/15 62
Ethernet63 87,88 fortyGigE1/4/16 63
# name lanes alias index speed
Ethernet0 101,102 fortyGigE1/1/1 0 40000
Ethernet1 103,104 fortyGigE1/1/2 1 40000
Ethernet2 97,98 fortyGigE1/1/3 2 40000
Ethernet3 99,100 fortyGigE1/1/4 3 40000
Ethernet4 69,70 fortyGigE1/1/5 4 40000
Ethernet5 71,72 fortyGigE1/1/6 5 40000
Ethernet6 65,66 fortyGigE1/1/7 6 40000
Ethernet7 67,68 fortyGigE1/1/8 7 40000
Ethernet8 53,54 fortyGigE1/1/9 8 40000
Ethernet9 55,56 fortyGigE1/1/10 9 40000
Ethernet10 49,50 fortyGigE1/1/11 10 40000
Ethernet11 51,52 fortyGigE1/1/12 11 40000
Ethernet12 21,22 fortyGigE1/1/13 12 40000
Ethernet13 23,24 fortyGigE1/1/14 13 40000
Ethernet14 17,18 fortyGigE1/1/15 14 40000
Ethernet15 19,20 fortyGigE1/1/16 15 40000
Ethernet16 25,26 fortyGigE1/2/1 16 40000
Ethernet17 27,28 fortyGigE1/2/2 17 40000
Ethernet18 29,30 fortyGigE1/2/3 18 40000
Ethernet19 31,32 fortyGigE1/2/4 19 40000
Ethernet20 57,58 fortyGigE1/2/5 20 40000
Ethernet21 59,60 fortyGigE1/2/6 21 40000
Ethernet22 61,62 fortyGigE1/2/7 22 40000
Ethernet23 63,64 fortyGigE1/2/8 23 40000
Ethernet24 73,74 fortyGigE1/2/9 24 40000
Ethernet25 75,76 fortyGigE1/2/10 25 40000
Ethernet26 77,78 fortyGigE1/2/11 26 40000
Ethernet27 79,80 fortyGigE1/2/12 27 40000
Ethernet28 105,106 fortyGigE1/2/13 28 40000
Ethernet29 107,108 fortyGigE1/2/14 29 40000
Ethernet30 109,110 fortyGigE1/2/15 30 40000
Ethernet31 111,112 fortyGigE1/2/16 31 40000
Ethernet32 13,14 fortyGigE1/3/1 32 40000
Ethernet33 15,16 fortyGigE1/3/2 33 40000
Ethernet34 9,10 fortyGigE1/3/3 34 40000
Ethernet35 11,12 fortyGigE1/3/4 35 40000
Ethernet36 125,126 fortyGigE1/3/5 36 40000
Ethernet37 127,128 fortyGigE1/3/6 37 40000
Ethernet38 121,122 fortyGigE1/3/7 38 40000
Ethernet39 123,124 fortyGigE1/3/8 39 40000
Ethernet40 93,94 fortyGigE1/3/9 40 40000
Ethernet41 95,96 fortyGigE1/3/10 41 40000
Ethernet42 89,90 fortyGigE1/3/11 42 40000
Ethernet43 91,92 fortyGigE1/3/12 43 40000
Ethernet44 45,46 fortyGigE1/3/13 44 40000
Ethernet45 47,48 fortyGigE1/3/14 45 40000
Ethernet46 41,42 fortyGigE1/3/15 46 40000
Ethernet47 43,44 fortyGigE1/3/16 47 40000
Ethernet48 113,114 fortyGigE1/4/1 48 40000
Ethernet49 115,116 fortyGigE1/4/2 49 40000
Ethernet50 117,118 fortyGigE1/4/3 50 40000
Ethernet51 119,120 fortyGigE1/4/4 51 40000
Ethernet52 1,2 fortyGigE1/4/5 52 40000
Ethernet53 3,4 fortyGigE1/4/6 53 40000
Ethernet54 5,6 fortyGigE1/4/7 54 40000
Ethernet55 7,8 fortyGigE1/4/8 55 40000
Ethernet56 33,34 fortyGigE1/4/9 56 40000
Ethernet57 35,36 fortyGigE1/4/10 57 40000
Ethernet58 37,38 fortyGigE1/4/11 58 40000
Ethernet59 39,40 fortyGigE1/4/12 59 40000
Ethernet60 81,82 fortyGigE1/4/13 60 40000
Ethernet61 83,84 fortyGigE1/4/14 61 40000
Ethernet62 85,86 fortyGigE1/4/15 62 40000
Ethernet63 87,88 fortyGigE1/4/16 63 40000

View File

@ -1 +0,0 @@
SAI_INIT_CONFIG_FILE=/etc/bcm/th-s6100-64x40G-t0.config.bcm

View File

@ -0,0 +1,13 @@
{# Get sai.profile based on switch_role #}
{%- if DEVICE_METADATA is defined -%}
{%- set switch_role = DEVICE_METADATA['localhost']['type'] -%}
{%- if switch_role.lower() == 'torrouter' %}
{% set sai_profile_contents = 'SAI_INIT_CONFIG_FILE=/etc/bcm/th-s6100-64x40G-t0.config.bcm' -%}
{%- else %}
{%- set sai_profile_contents = 'SAI_INIT_CONFIG_FILE=/etc/bcm/th-s6100-64x40G-t1.config.bcm' -%}
{%- endif %}
{%- else %}
{%- set sai_profile_contents = 'SAI_INIT_CONFIG_FILE=/etc/bcm/th-s6100-64x40G-t1.config.bcm' -%}
{%- endif %}
{# Write the contents of sai_ profile_filename to sai.profile file #}
{{ sai_profile_contents }}

View File

@ -1,11 +1,23 @@
#!/usr/bin/env bash
PLATFORM_DIR=/usr/share/sonic/platform
HWSKU_DIR=/usr/share/sonic/hwsku
rm -f /var/run/rsyslogd.pid
supervisorctl start rsyslogd
mkdir -p /etc/sai.d/
# Create/Copy the sai.profile to /etc/sai.d/sai.profile
if [ -f $HWSKU_DIR/sai.profile.j2 ]; then
sonic-cfggen -d -t $HWSKU_DIR/sai.profile.j2 > /etc/sai.d/sai.profile
else
if [ -f $HWSKU_DIR/sai.profile ]; then
cp $HWSKU_DIR/sai.profile /etc/sai.d/sai.profile
fi
fi
supervisorctl start syncd
# Function: wait until syncd has created the socket for bcmcmd to connect to

@ -1 +1 @@
Subproject commit e9ad72132f09f37418b9ecd9d0c6708afac6db6f
Subproject commit d35642238905ae4e9a0d259797b578eddd5a7156