How to add backplane interfaces that do not have transceivers in platform.json and hwsku.json?

20 views
Skip to first unread message

Nicolas Blais Miko

unread,
Mar 24, 2023, 5:24:54 PM3/24/23
to sonicproject
Hi,

Hopefully I am sending this question at the right mailing list.

I have been working on adding SONiC support to an Edge computing chassis where two independant switch blades would be running SONiC.

Each of those switch blades have 14 front panel 100G QSFP ports and 12x100G backplane interfaces to the chassis compute blades running their own OS with 100G backplane NICs. Each switch blade has 1 Intel Tofino 32D ASIC to be controlled by SONiC.

We have already implemented our own BSP for this Tofino-based platform and added support to read the QSFP EEPROMs to the sonic-platform python API. When we add the front panel interfaces to the platform.json and hwsku.json files for this platform, the front panel interfaces work properly and we can be use them within SONiC.

However, we have been unable to get the 12 backplane interfaces to be properly integrated in SONiC. According to our investigation, backplane interfaces could be supported by naming the interfaces Ethernet-BPXX instead of EthernetXX in the platform.json and hwsku.json. However, we get this error when compiling SONiC with those interfaces so added.

Error: Unknown Interface Ethernet-BP56 at top level
File ../../../device/lanner/x86_64-lanner_hmb_1100-r0/platform.json failed validity check

"Ethernet52": { <---- QSFP port
"index": "14,14,14,14",
"lanes": "52,53,54,55",
"breakout_modes": {
"1x100G[40G]": ["etp14"],
"4x25G[10G]": ["etp14a", "etp14b", "etp14c", "etp14d"]
}
},
"Ethernet-BP56": { <---- Backplane
"index": "15,15,15,15",
"lanes": "56,57,58,59",
"breakout_modes": {
"1x100G[40G]": ["etp15"]
}
},

If we add them as EthernetXX, we get into python errors when sfputil tries to call SFP methods on the port indexes where there is no QSFP (the platform's chassis.py API returns None to the get_sfp method at those indexes). I was not able to find what I should do here in the documentation.

Therefore, I am trying to ask here if there is a way to add interfaces that do not support QSFPs in platform.json and hwsku.json. In the documentation, I see that port_config.ini is deprecated, but can we still use that file and the Ethernet-BP prefix to mark those interfaces as backplane? Any help or insight as to how we should proceed to add those backplane interfaces is highly appreciated.

For context, we have made all of our changes to support this platform on top of the master branch as it was on march 3rd 2023 (SHA: ad3d124e494be0d4374fef3b94d6ade430243c1).

Best Regards,

TL;DR - We have added SONiC support for a new Tofino-based platform that has front panel and backplane interfaces, but have been unable to add the backplane interfaces to the platform configuration files in a way that works. How should interfaces that do not support transceivers be added to SONiC so that the sonic-platform python APIs don't think that there is a QSFP?
Reply all
Reply to author
Forward
0 new messages