Skip to content

Commit de42127

Browse files
committed
Merge commit '1db613149fa0389189898a04edd86c9386433361'
2 parents 77c635f + 1db6131 commit de42127

File tree

4 files changed

+73
-22
lines changed

4 files changed

+73
-22
lines changed

src/fortygbe.py

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,33 @@ def __init__(self, parent, name, address, length_bytes,
3636
'multicast_ip' : 0x20,
3737
'multicast_mask' : 0x24}
3838

39+
@property
40+
def ip_address(self):
41+
ip = self._wbone_rd(self.address + self.reg_map['ip'])
42+
ip_address = IpAddress(ip)
43+
return ip_address
44+
45+
@property
46+
def mac(self):
47+
gbedata = []
48+
for ctr in range(0xC, 0x14, 4):
49+
gbedata.append(self._wbone_rd(self.address + ctr))
50+
gbebytes = []
51+
for d in gbedata:
52+
gbebytes.append((d >> 24) & 0xff)
53+
gbebytes.append((d >> 16) & 0xff)
54+
gbebytes.append((d >> 8) & 0xff)
55+
gbebytes.append((d >> 0) & 0xff)
56+
pd = gbebytes
57+
return Mac('{}:{}:{}:{}:{}:{}'.format(
58+
*pd[2:]))
59+
60+
@property
61+
def port(self):
62+
en_port = self._wbone_rd(self.address + self.reg_map['fabric_port'])
63+
port = en_port & (2 ** 16 - 1)
64+
return port
65+
3966
def post_create_update(self, raw_device_info):
4067
"""
4168
Update the device with information not available at creation.
@@ -99,7 +126,7 @@ def _wbone_wr(self, addr, val):
99126

100127
def fabric_enable(self):
101128
"""
102-
Enables 40G corei fabric interface.
129+
Enables 40G core fabric interface.
103130
:return:
104131
"""
105132
en_port = self._wbone_rd(self.address + self.reg_map['fabric_en'])
@@ -133,17 +160,14 @@ def get_mac(self):
133160
134161
:return: Mac object
135162
"""
136-
details = self.get_gbe_core_details()
137-
return details['mac']
163+
return self.mac
138164

139165
def get_ip(self):
140166
"""
141167
Retrieve core's IP address from HW.
142168
143169
:return: IpAddress object
144170
"""
145-
ip = self._wbone_rd(self.address + self.reg_map['ip'])
146-
self.ip_address = IpAddress(ip)
147171
return self.ip_address
148172

149173
def get_port(self):
@@ -152,8 +176,6 @@ def get_port(self):
152176
153177
:return: int
154178
"""
155-
en_port = self._wbone_rd(self.address + self.reg_map['fabric_port'])
156-
self.port = en_port & (2 ** 16 - 1)
157179
return self.port
158180

159181
def set_port(self, port):
@@ -170,7 +192,6 @@ def set_port(self, port):
170192
errmsg = 'Error setting 40gbe port to 0x%04x' % port
171193
self.logger.error(errmsg)
172194
raise ValueError(errmsg)
173-
self.port = port
174195

175196
def get_gbe_core_details(self, read_arp=False, read_cpu=False):
176197
"""
@@ -230,9 +251,6 @@ def get_gbe_core_details(self, read_arp=False, read_cpu=False):
230251
if read_cpu:
231252
# returnval.update(self.get_cpu_details(gbedata))
232253
self.logger.warn('Retrieving CPU packet buffers not yet implemented.')
233-
self.mac = returnval['mac']
234-
self.ip_address = returnval['ip']
235-
self.port = returnval['fabric_port']
236254
return returnval
237255

238256
def get_arp_details(self, port_dump=None):

src/gbe.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,6 @@ def __init__(self, parent, name, address, length_bytes, device_info=None):
2020
self.name = name
2121
self.address = address
2222
self.length_bytes = length_bytes
23-
self.mac = None
24-
self.ip_address = None
25-
self.port = None
2623
self.fullname = self.parent.host + ':' + self.name
2724
self.block_info = device_info
2825
self.process_device_info(device_info)
@@ -34,6 +31,18 @@ def __init__(self, parent, name, address, length_bytes, device_info=None):
3431
# if self.parent.is_connected():
3532
# self._check()
3633

34+
@property
35+
def mac(self):
36+
return None
37+
38+
@property
39+
def ip_address(self):
40+
return None
41+
42+
@property
43+
def port(self):
44+
return None
45+
3746
@classmethod
3847
def from_device_info(cls, parent, device_name, device_info, memorymap_dict, **kwargs):
3948
"""
@@ -99,7 +108,6 @@ def process_device_info(self, device_info):
99108
if mac is None or ip_address is None or port is None:
100109
raise ValueError('%s: 10Gbe interface must '
101110
'have mac, ip and port.' % self.fullname)
102-
self.setup(mac, ip_address, port)
103111

104112
def setup(self, mac, ipaddress, port):
105113
"""
@@ -109,9 +117,10 @@ def setup(self, mac, ipaddress, port):
109117
:param ipaddress: String or Integer input
110118
:param port: String or Integer input
111119
"""
112-
self.mac = Mac(mac)
113-
self.ip_address = IpAddress(ipaddress)
114-
self.port = port if isinstance(port, int) else int(port)
120+
raise NotImplementedError('This is no longer required as the mac, '
121+
'ip_address and port are no longer stored '
122+
'as attributes. These values are retrieved '
123+
'from the processing node when required.')
115124

116125
def post_create_update(self, raw_device_info):
117126
"""

src/onegbe.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,18 @@ def __init__(self, parent, name, address, length_bytes, device_info=None):
9393
Gbe.__init__(self, parent, name, address, length_bytes, device_info)
9494
self.memmap_compliant = self._check_memmap_compliance()
9595

96+
@property
97+
def mac(self):
98+
return self.get_gbe_core_details()['mac']
99+
100+
@property
101+
def ip_address(self):
102+
return self.get_gbe_core_details()['ip']
103+
104+
@property
105+
def port(self):
106+
return self.get_gbe_core_details()['fabric_port']
107+
96108
def _check_memmap_compliance(self):
97109
"""
98110
Look at the first word of the core's memory map and try to
@@ -162,9 +174,9 @@ def dhcp_start(self):
162174
"""
163175
Configure this interface, then start a DHCP client on ALL interfaces.
164176
"""
165-
if self.mac is None:
177+
#if self.mac is None:
166178
# TODO get MAC from EEPROM serial number and assign here
167-
self.mac = '0'
179+
# self.mac = '0'
168180
reply, _ = self.parent.transport.katcprequest(
169181
name='tap-start', request_timeout=5,
170182
require_ok=True,

src/tengbe.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,18 @@ def __init__(self, parent, name, address, length_bytes, device_info=None):
9393
Gbe.__init__(self, parent, name, address, length_bytes, device_info)
9494
self.memmap_compliant = self._check_memmap_compliance()
9595

96+
@property
97+
def mac(self):
98+
return self.get_gbe_core_details()['mac']
99+
100+
@property
101+
def ip_address(self):
102+
return self.get_gbe_core_details()['ip']
103+
104+
@property
105+
def port(self):
106+
return self.get_gbe_core_details()['fabric_port']
107+
96108
def _check_memmap_compliance(self):
97109
"""
98110
Look at the first word of the core's memory map and try to
@@ -162,9 +174,9 @@ def dhcp_start(self):
162174
"""
163175
Configure this interface, then start a DHCP client on ALL interfaces.
164176
"""
165-
if self.mac is None:
177+
#if self.mac is None:
166178
# TODO get MAC from EEPROM serial number and assign here
167-
self.mac = '0'
179+
#self.mac = '0'
168180
reply, _ = self.parent.transport.katcprequest(
169181
name='tap-start', request_timeout=5,
170182
require_ok=True,

0 commit comments

Comments
 (0)