Skip to content

Commit 08bf781

Browse files
Nakrezarlakshm
authored andcommitted
[orchagent/phy]: Add firmware info propagation (sonic-net#1540)
This change updates the initSaiPhyApi() call to properly propagate the firmware_path information coming from gearbox_config.json to the create_switch SAI call. Signed-off-by: Baptiste Covolato <baptiste@arista.com> Signed-off-by: Arvindsrinivasan Lakshmi Narasimhan <arlakshm@microsoft.com>
1 parent 51a9bb5 commit 08bf781

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

orchagent/saihelper.cpp

+25-3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ extern "C" {
1414
#include <set>
1515
#include <tuple>
1616
#include <vector>
17+
#include <linux/limits.h>
1718
#include "timestamp.h"
1819
#include "sai_serialize.h"
1920
#include "saihelper.h"
@@ -269,6 +270,7 @@ sai_status_t initSaiPhyApi(swss::gearbox_phy_t *phy)
269270
sai_attribute_t attr;
270271
vector<sai_attribute_t> attrs;
271272
sai_status_t status;
273+
char fwPath[PATH_MAX];
272274

273275
SWSS_LOG_ENTER();
274276

@@ -289,9 +291,29 @@ sai_status_t initSaiPhyApi(swss::gearbox_phy_t *phy)
289291
attr.value.s8list.list = 0;
290292
attrs.push_back(attr);
291293

292-
attr.id = SAI_SWITCH_ATTR_FIRMWARE_LOAD_METHOD;
293-
attr.value.u32 = SAI_SWITCH_FIRMWARE_LOAD_METHOD_NONE;
294-
attrs.push_back(attr);
294+
if (phy->firmware.length() == 0)
295+
{
296+
attr.id = SAI_SWITCH_ATTR_FIRMWARE_LOAD_METHOD;
297+
attr.value.u32 = SAI_SWITCH_FIRMWARE_LOAD_METHOD_NONE;
298+
attrs.push_back(attr);
299+
}
300+
else
301+
{
302+
attr.id = SAI_SWITCH_ATTR_FIRMWARE_LOAD_METHOD;
303+
attr.value.u32 = SAI_SWITCH_FIRMWARE_LOAD_METHOD_INTERNAL;
304+
attrs.push_back(attr);
305+
306+
strncpy(fwPath, phy->firmware.c_str(), PATH_MAX - 1);
307+
308+
attr.id = SAI_SWITCH_ATTR_FIRMWARE_PATH_NAME;
309+
attr.value.s8list.list = (int8_t *) fwPath;
310+
attr.value.s8list.count = (uint32_t) strlen(fwPath) + 1;
311+
attrs.push_back(attr);
312+
313+
attr.id = SAI_SWITCH_ATTR_FIRMWARE_LOAD_TYPE;
314+
attr.value.u32 = SAI_SWITCH_FIRMWARE_LOAD_TYPE_AUTO;
315+
attrs.push_back(attr);
316+
}
295317

296318
attr.id = SAI_SWITCH_ATTR_REGISTER_READ;
297319
attr.value.ptr = (void *) mdio_read;

0 commit comments

Comments
 (0)