When installing the master version on Broadcom's Trident 4 and Tomahawk 4 chipset devices, there is an abnormality in reading module information. Upon investigating the code, we found the following:
if (rpllen is None) or (rpl_chkcode is None):
return {'status': False, 'info': "Interface fail", 'result': 0} # Return result 0 for distinguishing CDB is maybe in busy or failure.
In practice, there may be situations where rpllen == 0, rpl_chkcode == 0, and rpl == None. This scenario can lead to abnormal exits of xcvrd.
Steps to reproduce the issue:
sfputil show eeprom -d
show interfaces status
Describe the results you received:
root@sonic:/sys/bus/spi/devices/spi0.0# sfputil show eeprom -d
Traceback (most recent call last):
File "/usr/local/bin/sfputil", line 8, in <module>
sys.exit(cli())
^^^^^
File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 764, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 717, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/sfputil/main.py", line 668, in eeprom
xcvr_info = platform_chassis.get_sfp(physical_port).get_transceiver_info()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/sonic_platform/sfp.py", line 100, in get_transceiver_info
api_get = self._sfp_api.get_transceiver_info(SfpOptoeBase, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/sonic_platform/sfp.py", line 300, in get_transceiver_info
transceiver_info = class_optoeBase.get_transceiver_info(class_sfp)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/sonic_platform_base/sonic_xcvr/sfp_optoe_base.py", line 24, in get_transceiver_info
return api.get_transceiver_info() if api is not None else None
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/sonic_platform_base/sonic_xcvr/api/public/cmis.py", line 184, in get_transceiver_info
xcvr_info['active_firmware'], xcvr_info['inactive_firmware'] = self.get_transceiver_info_firmware_versions()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/sonic_platform_base/sonic_xcvr/api/public/cmis.py", line 197, in get_transceiver_info_firmware_versions
result = self.get_module_fw_info()
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/sonic_platform_base/sonic_xcvr/api/public/cmis.py", line 1303, in get_module_fw_info
if self.cdb.cdb_chkcode(rpl) != rpl_chkcode:
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/sonic_platform_base/sonic_xcvr/api/public/cmisCDB.py", line 73, in cdb_chkcode
for byte in cmd:
TypeError: 'NoneType' object is not iterable
root@sonic:/home/admin# show interfaces status
Interface Lanes Speed MTU FEC Alias Vlan Oper Admin Type Asym PFC
----------- --------------- ------- ----- ----- ------- ------ ------ ------- ----------------------------------------------- ----------
Ethernet1 65,66,67,68 400G 9100 N/A Eth1 trunk up up N/A N/A
Ethernet9 69,70,71,72 400G 9100 N/A Eth2 trunk up up N/A N/A
Ethernet17 25,26,27,28 400G 9100 N/A Eth3 trunk up up QSFP-DD Double Density 8X Pluggable Transceiver N/A
Ethernet25 21,22,23,24 400G 9100 N/A Eth4 trunk up up N/A N/A
Ethernet33 73,74,75,76 400G 9100 N/A Eth5 trunk down up N/A N/A
Ethernet41 77,78,79,80 400G 9100 N/A Eth6 trunk up up N/A N/A
Ethernet49 33,34,35,36 400G 9100 N/A Eth7 trunk down up N/A N/A
Ethernet57 29,30,31,32 400G 9100 N/A Eth8 trunk down up N/A N/A
Ethernet65 81,82,83,84 400G 9100 N/A Eth9 trunk up up QSFP-DD Double Density 8X Pluggable Transceiver N/A
Ethernet73 85,86,87,88 400G 9100 N/A Eth10 trunk up up N/A N/A
Ethernet81 41,42,43,44 400G 9100 N/A Eth11 trunk down up N/A N/A
Ethernet89 37,38,39,40 400G 9100 N/A Eth12 trunk down up N/A N/A
Ethernet97 89,90,91,92 400G 9100 N/A Eth13 trunk down up N/A N/A
Ethernet105 93,94,95,96 400G 9100 N/A Eth14 trunk down up N/A N/A
Ethernet113 49,50,51,52 400G 9100 N/A Eth15 trunk down up N/A N/A
Ethernet121 45,46,47,48 400G 9100 N/A Eth16 trunk down up N/A N/A
Ethernet129 97,98,99,100 400G 9100 N/A Eth17 trunk down up N/A N/A
Ethernet137 101,102,103,104 400G 9100 N/A Eth18 trunk down up N/A N/A
Ethernet145 57,58,59,60 400G 9100 N/A Eth19 trunk down up N/A N/A
Ethernet153 53,54,55,56 400G 9100 N/A Eth20 trunk down up N/A N/A
Ethernet161 105,106,107,108 400G 9100 N/A Eth21 trunk down up N/A N/A
Ethernet169 109,110,111,112 400G 9100 N/A Eth22 trunk down up N/A N/A
Ethernet177 17,18,19,20 400G 9100 N/A Eth23 trunk down up N/A N/A
Ethernet185 61,62,63,64 400G 9100 N/A Eth24 trunk down up N/A N/A
Ethernet193 113,114,115,116 400G 9100 N/A Eth25 trunk up up N/A N/A
Ethernet201 117,118,119,120 400G 9100 N/A Eth26 trunk down up N/A N/A
Ethernet209 9,10,11,12 400G 9100 N/A Eth27 trunk down up N/A N/A
Ethernet217 13,14,15,16 400G 9100 N/A Eth28 trunk down up N/A N/A
Ethernet225 121,122,123,124 400G 9100 N/A Eth29 trunk up up N/A N/A
Ethernet233 125,126,127,128 400G 9100 N/A Eth30 trunk up up N/A N/A
Ethernet241 1,2,3,4 400G 9100 N/A Eth31 trunk up up N/A N/A
Ethernet249 5,6,7,8 400G 9100 N/A Eth32 trunk up up N/A N/A
Ethernet257 133,134,135,136 400G 9100 N/A Eth33 trunk up up N/A N/A
Ethernet265 129,130,131,132 400G 9100 N/A Eth34 trunk down up N/A N/A
Ethernet273 249,250,251,252 400G 9100 N/A Eth35 trunk down up N/A N/A
Ethernet281 253,254,255,256 400G 9100 N/A Eth36 trunk down up N/A N/A
Ethernet289 141,142,143,144 400G 9100 N/A Eth37 trunk up up N/A N/A
Ethernet297 137,138,139,140 400G 9100 N/A Eth38 trunk down up N/A N/A
Ethernet305 241,242,243,244 400G 9100 N/A Eth39 trunk down up N/A N/A
Ethernet313 245,246,247,248 400G 9100 N/A Eth40 trunk down up N/A N/A
Ethernet321 149,150,151,152 400G 9100 N/A Eth41 trunk up up QSFP-DD Double Density 8X Pluggable Transceiver N/A
Ethernet329 145,146,147,148 400G 9100 N/A Eth42 trunk down up N/A N/A
Ethernet337 237,238,239,240 400G 9100 N/A Eth43 trunk down up N/A N/A
Ethernet345 197,198,199,200 400G 9100 N/A Eth44 trunk down up N/A N/A
Ethernet353 157,158,159,160 400G 9100 N/A Eth45 trunk up up N/A N/A
Ethernet361 153,154,155,156 400G 9100 N/A Eth46 trunk down up N/A N/A
Ethernet369 193,194,195,196 400G 9100 N/A Eth47 trunk down up N/A N/A
Ethernet377 205,206,207,208 400G 9100 N/A Eth48 trunk down up N/A N/A
Ethernet385 165,166,167,168 400G 9100 N/A Eth49 trunk up up N/A N/A
Ethernet393 161,162,163,164 400G 9100 N/A Eth50 trunk down up N/A N/A
Ethernet401 201,202,203,204 400G 9100 N/A Eth51 trunk down up N/A N/A
Ethernet409 213,214,215,216 400G 9100 N/A Eth52 trunk down up N/A N/A
Ethernet417 173,174,175,176 400G 9100 N/A Eth53 trunk up up N/A N/A
Ethernet425 169,170,171,172 400G 9100 N/A Eth54 trunk down up N/A N/A
Ethernet433 209,210,211,212 400G 9100 N/A Eth55 trunk down up N/A N/A
Ethernet441 221,222,223,224 400G 9100 N/A Eth56 trunk down up N/A N/A
Ethernet449 181,182,183,184 400G 9100 N/A Eth57 trunk up up N/A N/A
Ethernet457 177,178,179,180 400G 9100 N/A Eth58 trunk down up N/A N/A
Ethernet465 217,218,219,220 400G 9100 N/A Eth59 trunk down up N/A N/A
Ethernet473 229,230,231,232 400G 9100 N/A Eth60 trunk down up N/A N/A
Ethernet481 189,190,191,192 400G 9100 N/A Eth61 trunk up up N/A N/A
Ethernet489 185,186,187,188 400G 9100 N/A Eth62 trunk down up N/A N/A
Ethernet497 225,226,227,228 400G 9100 N/A Eth63 trunk down up N/A N/A
Ethernet505 233,234,235,236 400G 9100 N/A Eth64 trunk down up N/A N/A
Describe the results you expected:
The information of the inserted optical modules or copper cables display normally.
The sfputil commands needs to support by the platform drivers. Can you please triage if there are any issues in your platform. If you think this is generic sonic issue please provide more details
Description
When installing the master version on Broadcom's Trident 4 and Tomahawk 4 chipset devices, there is an abnormality in reading module information. Upon investigating the code, we found the following:
In practice, there may be situations where rpllen == 0, rpl_chkcode == 0, and rpl == None. This scenario can lead to abnormal exits of xcvrd.
Steps to reproduce the issue:
Describe the results you received:
Describe the results you expected:
The information of the inserted optical modules or copper cables display normally.
Output of
show version
:Output of
show techsupport
:sonic_dump_M2-W6930_20240222_084815.tar.gz
Additional information you deem important (e.g. issue happens only occasionally):