Skip to content

Commit 9597eb7

Browse files
authored
[autoneg]Fixing adv interface types to be set when AN is disabled (#2638)
1 parent 7d223d3 commit 9597eb7

File tree

2 files changed

+44
-2
lines changed

2 files changed

+44
-2
lines changed

orchagent/portsorch.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -3595,9 +3595,9 @@ void PortsOrch::doPortTask(Consumer &consumer)
35953595
continue;
35963596
}
35973597

3598-
if (adv_interface_types != p.m_adv_interface_types && p.m_autoneg == 1)
3598+
if (adv_interface_types != p.m_adv_interface_types)
35993599
{
3600-
if (p.m_admin_state_up)
3600+
if (p.m_admin_state_up && p.m_autoneg == 1)
36013601
{
36023602
/* Bring port down before applying speed */
36033603
if (!setPortAdminStatus(p, false))

tests/test_port_an.py

+42
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,48 @@ def test_PortAutoNegRemoteAdvSpeeds(self, dvs, testlog):
311311
assert status == True
312312
assert "rmt_adv_speeds" in [fv[0] for fv in fvs]
313313

314+
def test_PortAdvWithoutAutoneg(self, dvs, testlog):
315+
316+
db = swsscommon.DBConnector(0, dvs.redis_sock, 0)
317+
cdb = swsscommon.DBConnector(4, dvs.redis_sock, 0)
318+
sdb = swsscommon.DBConnector(6, dvs.redis_sock, 0)
319+
320+
tbl = swsscommon.ProducerStateTable(db, "PORT_TABLE")
321+
ctbl = swsscommon.Table(cdb, "PORT")
322+
stbl = swsscommon.Table(sdb, "PORT_TABLE")
323+
324+
# set autoneg = off
325+
fvs = swsscommon.FieldValuePairs([("autoneg", "off")])
326+
ctbl.set("Ethernet0", fvs)
327+
328+
time.sleep(1)
329+
fvs = swsscommon.FieldValuePairs([("adv_speeds", "100,1000"),
330+
("adv_interface_types", "CR2,CR4")])
331+
ctbl.set("Ethernet0", fvs)
332+
333+
time.sleep(1)
334+
335+
adb = swsscommon.DBConnector(1, dvs.redis_sock, 0)
336+
337+
atbl = swsscommon.Table(adb, "ASIC_STATE:SAI_OBJECT_TYPE_PORT")
338+
(status, fvs) = atbl.get(dvs.asicdb.portnamemap["Ethernet0"])
339+
assert status == True
340+
341+
assert "SAI_PORT_ATTR_AUTO_NEG_MODE" in [fv[0] for fv in fvs]
342+
assert "SAI_PORT_ATTR_ADVERTISED_SPEED" in [fv[0] for fv in fvs]
343+
assert "SAI_PORT_ATTR_ADVERTISED_INTERFACE_TYPE" in [fv[0] for fv in fvs]
344+
for fv in fvs:
345+
if fv[0] == "SAI_PORT_ATTR_AUTO_NEG_MODE":
346+
assert fv[1] == "false"
347+
elif fv[0] == "SAI_PORT_ATTR_ADVERTISED_SPEED":
348+
assert fv[1] == "2:100,1000"
349+
elif fv[0] == "SAI_PORT_ATTR_ADVERTISED_INTERFACE_TYPE":
350+
assert fv[1] == "2:SAI_PORT_INTERFACE_TYPE_CR2,SAI_PORT_INTERFACE_TYPE_CR4"
351+
352+
# set admin up
353+
cfvs = swsscommon.FieldValuePairs([("admin_status", "up")])
354+
ctbl.set("Ethernet0", cfvs)
355+
314356
# Add Dummy always-pass test at end as workaroud
315357
# for issue when Flaky fail on final test it invokes module tear-down before retrying
316358
def test_nonflaky_dummy():

0 commit comments

Comments
 (0)