[Ingrasys] update port_config.ini and sfputil for ingrasys platforms (#952)

* [Ingrasys] update port_config.ini and sfputil for ingrasys platforms

- What I did

Update port_config.ini on S8810-32Q/S8900-54XC/S8900-64XC/S9100-C32 platforms

- How I did it

Update alias field and add port field in port_config.ini

- How to verify it

Check with the "sfputil show eeprom" command. If no error occurs, it is passed.

- Description for the changelog

Update port_config.ini on S8810-32Q/S8900-54XC/S8900-64XC/S9100-C32 platforms

* [Ingrasys] remove debug message in sfputil.py on S8810-32Q

- What I did

remove debug message in sfputil.py on S8810-32Q

- How I did it

remove print in get_low_power_mode() and set_low_power_mode()

- How to verify it

There should be no debug message when executing "sfputil show lpmode"
and "sfputil lpmode on Ethernet0"command.

- Description for the changelog

remove debug message in sfputil.py on S8810-32Q

- A picture of a cute animal (not mandatory but encouraged)
This commit is contained in:
cytsai0409 2017-09-14 10:18:26 +08:00 committed by lguohan
parent 686e227dcc
commit e4cae4e889
6 changed files with 534 additions and 251 deletions

View File

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

View File

@ -1,61 +1,147 @@
#!/usr/bin/env python # sfputil.py
#
# Platform-specific SFP transceiver interface for SONiC
#
try: try:
from sonic_sfp.sfputilbase import sfputilbase import time
except ImportError, e: from sonic_sfp.sfputilbase import SfpUtilBase
raise ImportError (str(e) + "- required module not found") except ImportError as e:
raise ImportError("%s - required module not found" % str(e))
class sfputil(sfputilbase): class SfpUtil(SfpUtilBase):
"""Platform specific sfputil class""" """Platform-specific SfpUtil class"""
port_start = 0 PORT_START = 0
port_end = 31 PORT_END = 31
ports_in_block = 32 PORTS_IN_BLOCK = 32
port_to_eeprom_mapping = {} EEPROM_OFFSET = 18
#FIXME
port_to_i2c_mapping = {
0: 18,
1: 19,
2: 20,
3: 21,
4: 22,
5: 23,
6: 24,
7: 25,
8: 26,
9: 27,
10: 28,
11: 29,
12: 30,
13: 31,
14: 32,
15: 33,
16: 34,
17: 35,
18: 36,
19: 37,
20: 38,
21: 39,
22: 40,
23: 41,
24: 42,
25: 43,
26: 44,
27: 45,
28: 46,
29: 47,
30: 48,
31: 49
}
_qsfp_ports = range(0, ports_in_block + 1) ABS_GPIO_BASE = 224
#INT_GPIO_BASE = 192
LP_GPIO_BASE = 160
RST_GPIO_BASE = 128
BASE_DIR_PATH = "/sys/class/gpio/gpio{0}/direction"
BASE_VAL_PATH = "/sys/class/gpio/gpio{0}/value"
def __init__(self, port_num): _port_to_eeprom_mapping = {}
@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(0, self.PORTS_IN_BLOCK + 1)
@property
def port_to_eeprom_mapping(self):
return self._port_to_eeprom_mapping
def __init__(self):
# Override port_to_eeprom_mapping for class initialization # Override port_to_eeprom_mapping for class initialization
eeprom_path = '/sys/class/i2c-adapter/i2c-{0}/{0}-0050/eeprom' eeprom_path = "/sys/class/i2c-adapter/i2c-{0}/{0}-0050/eeprom"
for x in range(self.port_start, self.port_end + 1): for x in range(self.port_start, self.port_end + 1):
port_eeprom_path = eeprom_path.format(self.port_to_i2c_mapping[x]) self._port_to_eeprom_mapping[x] = eeprom_path.format(x + self.EEPROM_OFFSET)
self.port_to_eeprom_mapping[x] = port_eeprom_path
sfputilbase.__init__(self, port_num) 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
try:
abs_device_file = self.BASE_VAL_PATH.format(
port_num + self.ABS_GPIO_BASE)
val_file = open(abs_device_file)
except IOError as e:
print "Error: unable to open file: %s" % str(e)
return False
content = val_file.readline().rstrip()
# content is a string, either "0" or "1"
if content == "1":
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
try:
lpmode_val_device_file = self.BASE_VAL_PATH.format(
port_num + self.LP_GPIO_BASE)
val_file = open(lpmode_val_device_file)
except IOError as e:
print "Error: unable to open file: %s" % str(e)
return False
content = val_file.readline().rstrip()
# content is a string, either "0" or "1"
if content == "1":
return True
return False
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
try:
lpmode_val_device_file = self.BASE_VAL_PATH.format(
port_num + self.LP_GPIO_BASE)
val_file = open(lpmode_val_device_file, "w")
except IOError as e:
print "Error: unable to open file: %s" % str(e)
return False
val_file.write("1" if lpmode is True else "0")
val_file.close()
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
try:
reset_val_device_file = self.BASE_VAL_PATH.format(
port_num + self.RST_GPIO_BASE)
val_file = open(reset_val_device_file, "w")
except IOError as e:
print "Error: unable to open file: %s" % str(e)
return False
val_file.write("1")
val_file.close()
# Sleep 1 second to allow it to settle
time.sleep(1)
try:
reset_val_device_file = self.BASE_VAL_PATH.format(
port_num + self.RST_GPIO_BASE)
val_file = open(reset_val_device_file, "w")
except IOError as e:
print "Error: unable to open file: %s" % str(e)
return False
val_file.write("0")
val_file.close()
return True

View File

@ -1,55 +1,55 @@
# name lanes alias # name lanes alias port
Ethernet0 1 Ethernet0 1 Ethernet1 0
Ethernet1 2 Ethernet1 2 Ethernet2 1
Ethernet2 3 Ethernet2 3 Ethernet3 2
Ethernet3 4 Ethernet3 4 Ethernet4 3
Ethernet4 5 Ethernet4 5 Ethernet5 4
Ethernet5 6 Ethernet5 6 Ethernet6 5
Ethernet6 7 Ethernet6 7 Ethernet7 6
Ethernet7 8 Ethernet7 8 Ethernet8 7
Ethernet8 9 Ethernet8 9 Ethernet9 8
Ethernet9 10 Ethernet9 10 Ethernet10 9
Ethernet10 11 Ethernet10 11 Ethernet11 10
Ethernet11 12 Ethernet11 12 Ethernet12 11
Ethernet12 21 Ethernet12 21 Ethernet13 12
Ethernet13 22 Ethernet13 22 Ethernet14 13
Ethernet14 23 Ethernet14 23 Ethernet15 14
Ethernet15 24 Ethernet15 24 Ethernet16 15
Ethernet16 33 Ethernet16 33 Ethernet17 16
Ethernet17 34 Ethernet17 34 Ethernet18 17
Ethernet18 35 Ethernet18 35 Ethernet19 18
Ethernet19 36 Ethernet19 36 Ethernet20 19
Ethernet20 37 Ethernet20 37 Ethernet21 20
Ethernet21 38 Ethernet21 38 Ethernet22 21
Ethernet22 39 Ethernet22 39 Ethernet23 22
Ethernet23 40 Ethernet23 40 Ethernet24 23
Ethernet24 41 Ethernet24 41 Ethernet25 24
Ethernet25 42 Ethernet25 42 Ethernet26 25
Ethernet26 43 Ethernet26 43 Ethernet27 26
Ethernet27 44 Ethernet27 44 Ethernet28 27
Ethernet28 49 Ethernet28 49 Ethernet29 28
Ethernet29 50 Ethernet29 50 Ethernet30 29
Ethernet30 51 Ethernet30 51 Ethernet31 30
Ethernet31 52 Ethernet31 52 Ethernet32 31
Ethernet32 53 Ethernet32 53 Ethernet33 32
Ethernet33 54 Ethernet33 54 Ethernet34 33
Ethernet34 55 Ethernet34 55 Ethernet35 34
Ethernet35 56 Ethernet35 56 Ethernet36 35
Ethernet36 65 Ethernet36 65 Ethernet37 36
Ethernet37 66 Ethernet37 66 Ethernet38 37
Ethernet38 67 Ethernet38 67 Ethernet39 38
Ethernet39 68 Ethernet39 68 Ethernet40 39
Ethernet40 69 Ethernet40 69 Ethernet41 40
Ethernet41 70 Ethernet41 70 Ethernet42 41
Ethernet42 71 Ethernet42 71 Ethernet43 42
Ethernet43 72 Ethernet43 72 Ethernet44 43
Ethernet44 81 Ethernet44 81 Ethernet45 44
Ethernet45 82 Ethernet45 82 Ethernet46 45
Ethernet46 83 Ethernet46 83 Ethernet47 46
Ethernet47 84 Ethernet47 84 Ethernet48 47
Ethernet48 85,86,87,88 Ethernet48 85,86,87,88 Ethernet49/1 48
Ethernet52 97,98,99,100 Ethernet52 97,98,99,100 Ethernet50/1 49
Ethernet56 101,102,103,104 Ethernet56 101,102,103,104 Ethernet51/1 50
Ethernet60 105,106,107,108 Ethernet60 105,106,107,108 Ethernet52/1 51
Ethernet64 109,110,111,112 Ethernet64 109,110,111,112 Ethernet53/1 52
Ethernet68 117,118,119,120 Ethernet68 117,118,119,120 Ethernet54/1 53

View File

@ -1,19 +1,27 @@
#!/usr/bin/env python # sfputil.py
#
# Platform-specific SFP transceiver interface for SONiC
#
try: try:
from sonic_sfp.sfputilbase import sfputilbase import time
except ImportError, e: from sonic_sfp.sfputilbase import SfpUtilBase
raise ImportError (str(e) + "- required module not found") except ImportError as e:
raise ImportError("%s - required module not found" % str(e))
class sfputil(sfputilbase): class SfpUtil(SfpUtilBase):
"""Platform specific sfputil class""" """Platform-specific SfpUtil class"""
port_start = 0 PORT_START = 0
port_end = 53 PORT_END = 53
ports_in_block = 54 QSFP_PORT_START = 48
PORTS_IN_BLOCK = 54
BASE_DIR_PATH = "/sys/class/gpio/gpio{0}/direction"
BASE_VAL_PATH = "/sys/class/gpio/gpio{0}/value"
port_to_eeprom_mapping = {} _port_to_eeprom_mapping = {}
port_to_i2c_mapping = { port_to_i2c_mapping = {
0: 18, 0: 18,
1: 19, 1: 19,
@ -71,12 +79,201 @@ class sfputil(sfputilbase):
53: 71 53: 71
} }
_qsfp_ports = range(0, ports_in_block + 1) abs_to_gpio_mapping = {
0: 192,
1: 193,
2: 194,
3: 195,
4: 196,
5: 197,
6: 198,
7: 199,
8: 200,
9: 201,
10: 202,
11: 203,
12: 204,
13: 205,
14: 206,
15: 207,
16: 176,
17: 177,
18: 178,
19: 179,
20: 180,
21: 181,
22: 182,
23: 183,
24: 184,
25: 185,
26: 186,
27: 187,
28: 188,
29: 189,
30: 190,
31: 191,
32: 160,
33: 161,
34: 162,
35: 163,
36: 164,
37: 165,
38: 166,
39: 167,
40: 168,
41: 169,
42: 170,
43: 171,
44: 172,
45: 173,
46: 174,
47: 175,
48: 240,
49: 241,
50: 242,
51: 243,
52: 244,
53: 245
}
def __init__(self, port_num): lpmode_to_gpio_mapping = {
48: 224,
49: 225,
50: 226,
51: 227,
52: 228,
53: 229
}
reset_to_gpio_mapping = {
48: 208,
49: 209,
50: 210,
51: 211,
52: 212,
53: 213
}
@property
def port_start(self):
return self.PORT_START
@property
def qsfp_port_start(self):
return self.QSFP_PORT_START
@property
def port_end(self):
return self.PORT_END
@property
def qsfp_ports(self):
return range(0, self.PORTS_IN_BLOCK + 1)
@property
def port_to_eeprom_mapping(self):
return self._port_to_eeprom_mapping
def __init__(self):
# Override port_to_eeprom_mapping for class initialization # Override port_to_eeprom_mapping for class initialization
eeprom_path = '/sys/class/i2c-adapter/i2c-{0}/{0}-0050/eeprom' eeprom_path = "/sys/class/i2c-adapter/i2c-{0}/{0}-0050/eeprom"
for x in range(self.port_start, self.port_end + 1): for x in range(self.port_start, self.port_end + 1):
port_eeprom_path = eeprom_path.format(self.port_to_i2c_mapping[x]) port_eeprom_path = eeprom_path.format(self.port_to_i2c_mapping[x])
self.port_to_eeprom_mapping[x] = port_eeprom_path self.port_to_eeprom_mapping[x] = port_eeprom_path
sfputilbase.__init__(self, port_num)
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
try:
abs_device_file = self.BASE_VAL_PATH.format(
self.abs_to_gpio_mapping[port_num])
val_file = open(abs_device_file)
except IOError as e:
print "Error: unable to open file: %s" % str(e)
return False
content = val_file.readline().rstrip()
# content is a string, either "0" or "1"
if content == "1":
return True
return False
def get_low_power_mode(self, port_num):
# Check for invalid port_num
if port_num < self.qsfp_port_start or port_num > self.port_end:
return False
try:
lpmode_val_device_file = self.BASE_VAL_PATH.format(
self.lpmode_to_gpio_mapping[port_num])
val_file = open(lpmode_val_device_file)
except IOError as e:
print "Error: unable to open file: %s" % str(e)
return False
content = val_file.readline().rstrip()
# content is a string, either "0" or "1"
if content == "1":
return True
return False
def set_low_power_mode(self, port_num, lpmode):
# Check for invalid port_num
if port_num < self.qsfp_port_start or port_num > self.port_end:
return False
try:
lpmode_val_device_file = self.BASE_VAL_PATH.format(
self.lpmode_to_gpio_mapping[port_num])
val_file = open(lpmode_val_device_file, "w")
except IOError as e:
print "Error: unable to open file: %s" % str(e)
return False
val_file.write("1" if lpmode is True else "0")
val_file.close()
return True
def reset(self, port_num):
# Check for invalid port_num
if port_num < self.qsfp_port_start or port_num > self.port_end:
print "Error: unable to reset non-QSFP module: port %s" % str(port_num)
return False
try:
print "port %s" % str(port_num)
reset_val_device_file = self.BASE_VAL_PATH.format(
self.reset_to_gpio_mapping[port_num])
val_file = open(reset_val_device_file, "w")
except IOError as e:
print "Error: unable to open file: %s" % str(e)
return False
val_file.write("1")
val_file.close()
# Sleep 1 second to allow it to settle
time.sleep(1)
try:
reset_val_device_file = self.BASE_VAL_PATH.format(
self.reset_to_gpio_mapping[port_num])
val_file = open(reset_val_device_file, "w")
except IOError as e:
print "Error: unable to open file: %s" % str(e)
return False
val_file.write("0")
val_file.close()
return True

View File

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

View File

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