add support for Arista-7050-Q16S64 (#798)

This commit is contained in:
lguohan 2017-07-12 01:27:53 -07:00 committed by GitHub
parent c95d4e9ceb
commit 1b5255d583
3 changed files with 70 additions and 4 deletions

View File

@ -0,0 +1,57 @@
# name lanes alias
Ethernet0 125,126,127,128 Ethernet1/1
Ethernet4 121,122,123,124 Ethernet2/1
Ethernet8 13,14,15,16 Ethernet3/1
Ethernet12 9,10,11,12 Ethernet4/1
Ethernet16 17,18,19,20 Ethernet5/1
Ethernet20 21,22,23,24 Ethernet6/1
Ethernet24 25,26,27,28 Ethernet7/1
Ethernet28 29,30,31,32 Ethernet8/1
Ethernet32 37,38,39,40 Ethernet9/1
Ethernet36 33,34,35,36 Ethernet10/1
Ethernet40 45,46,47,48 Ethernet11/1
Ethernet44 41,42,43,44 Ethernet12/1
Ethernet48 53,54,55,56 Ethernet13/1
Ethernet52 49,50,51,52 Ethernet14/1
Ethernet56 69,70,71,72 Ethernet15/1
Ethernet60 65,66,67,68 Ethernet16/1
Ethernet64 77 Ethernet17/1
Ethernet65 78 Ethernet17/2
Ethernet66 79 Ethernet17/3
Ethernet67 80 Ethernet17/4
Ethernet68 73 Ethernet18/1
Ethernet69 74 Ethernet18/2
Ethernet70 75 Ethernet18/3
Ethernet71 76 Ethernet18/4
Ethernet72 93 Ethernet19/1
Ethernet73 94 Ethernet19/2
Ethernet74 95 Ethernet19/3
Ethernet75 96 Ethernet19/4
Ethernet76 89 Ethernet20/1
Ethernet77 90 Ethernet20/2
Ethernet78 91 Ethernet20/3
Ethernet79 92 Ethernet20/4
Ethernet80 101 Ethernet21/1
Ethernet81 102 Ethernet21/2
Ethernet82 103 Ethernet21/3
Ethernet83 104 Ethernet21/4
Ethernet84 97 Ethernet22/1
Ethernet85 98 Ethernet22/2
Ethernet86 99 Ethernet22/3
Ethernet87 100 Ethernet22/4
Ethernet88 109 Ethernet23/1
Ethernet89 110 Ethernet23/2
Ethernet90 111 Ethernet23/3
Ethernet91 112 Ethernet23/4
Ethernet92 105 Ethernet24/1
Ethernet93 106 Ethernet24/2
Ethernet94 107 Ethernet24/3
Ethernet95 108 Ethernet24/4
Ethernet96 61,62,63,64 Ethernet25
Ethernet100 57,58,59,60 Ethernet26
Ethernet104 81,82,83,84 Ethernet27
Ethernet108 85,86,87,88 Ethernet28
Ethernet112 117,118,119,120 Ethernet29
Ethernet116 113,114,115,116 Ethernet30
Ethernet120 5,6,7,8 Ethernet31
Ethernet124 1,2,3,4 Ethernet32

View File

@ -0,0 +1,2 @@
SAI_INIT_CONFIG_FILE=/etc/bcm/td2-a7050-qx32-16x40G+32x10G+8x40G.config.bcm
SAI_NUM_ECMP_MEMBERS=32

View File

@ -7,12 +7,14 @@
try: try:
from sonic_led.led_control_base import LedControlBase from sonic_led.led_control_base import LedControlBase
import swsssdk
except ImportError, e: except ImportError, e:
raise ImportError (str(e) + " - required module not found") raise ImportError (str(e) + " - required module not found")
class LedControl(LedControlBase): class LedControl(LedControlBase):
"""Platform specific LED control class""" """Platform specific LED control class"""
PORT_TABLE_PREFIX = "PORT_TABLE:"
SONIC_PORT_NAME_PREFIX = "Ethernet" SONIC_PORT_NAME_PREFIX = "Ethernet"
@ -36,23 +38,28 @@ class LedControl(LedControlBase):
sonic_port_num = int(port_name[len(self.SONIC_PORT_NAME_PREFIX):]) sonic_port_num = int(port_name[len(self.SONIC_PORT_NAME_PREFIX):])
swss = swsssdk.SonicV2Connector()
swss.connect(swss.APPL_DB)
lanes = swss.get(swss.APPL_DB, self.PORT_TABLE_PREFIX + port_name, 'lanes')
# SONiC port nums are 0-based and increment by 4 # SONiC port nums are 0-based and increment by 4
# Arista QSFP indices are 1-based and increment by 1 # Arista QSFP indices are 1-based and increment by 1
return ((sonic_port_num/4) + 1) return (((sonic_port_num/4) + 1), sonic_port_num%4, len(lanes.split(',')))
# Concrete implementation of port_link_state_change() method # Concrete implementation of port_link_state_change() method
def port_link_state_change(self, port, state): def port_link_state_change(self, port, state):
qsfp_index = self._port_name_to_qsfp_index(port) qsfp_index, lane_index, lanes = self._port_name_to_qsfp_index(port)
# Ignore invalid QSFP indices # Ignore invalid QSFP indices
if qsfp_index <= 0: if qsfp_index <= 0 or lanes <= 0 or lanes > 4:
return return
# QSFP indices 1-24 are breakout-capable and have four LEDs, and each LED indicate one lane. # QSFP indices 1-24 are breakout-capable and have four LEDs, and each LED indicate one lane.
# whereas indices 25-32 are not breakout-capable, and only have one # whereas indices 25-32 are not breakout-capable, and only have one
if qsfp_index <= self.QSFP_BREAKOUT_END_IDX: if qsfp_index <= self.QSFP_BREAKOUT_END_IDX:
# assuming 40G, then we need to control four lanes # assuming 40G, then we need to control four lanes
led_sysfs_paths = [ self.LED_SYSFS_PATH_BREAKOUT_CAPABLE.format(qsfp_index, i) for i in range(1, 5) ] led_sysfs_paths = [ self.LED_SYSFS_PATH_BREAKOUT_CAPABLE.format(qsfp_index, i) for i in range(lane_index + 1, lane_index + 1 + lanes) ]
else: else:
led_sysfs_paths = [ self.LED_SYSFS_PATH_NO_BREAKOUT.format(qsfp_index) ] led_sysfs_paths = [ self.LED_SYSFS_PATH_NO_BREAKOUT.format(qsfp_index) ]