From efe4a7a3706ff6381e0bdd8fbc9c2150d44cba20 Mon Sep 17 00:00:00 2001 From: "Kyale, Eliud" Date: Wed, 27 Sep 2023 13:45:14 -0400 Subject: [PATCH] IF_STATE_MASK fix for SM_FAILOVER_HEARTBEAT_ALIVE The SM_FAILOVER_IF_STATE_MASK change from 0xF to 0x3F mask was clearing the HEARTBEAT ALIVE flag. SM_FAILOVER_HEARTBEAT_ALIVE = (0x1 << 4), // 16 This change restores previous system behavior. Tester performs a cable pull on the oam ports. The expected behavior is an alarm being raised. Instead the standby controller ended up getting rebooted. oam interface testing was simulated by bringing the ip link down for 1 second. For example: sudo ip link set down; sleep 1 ; sudo ip link set up ----------------- Before change ----------------- - Heartbeat loss on oam interface resulted in standby controller reboot ----------------- After change: ----------------- - Heartbeat loss on oam interface resulted in alarm raised - Logs indicate the health score of controller-1 drops by 1 point Test plan: PASS - AIO-SX: iso install PASS - AIO-DX: iso install drop oam interface on standby verify standby controller-1 is not rebooted by active controller-0 restore oam interface PASS - AIO-DX: system host-swact . swact back and forth Closes-Bug: 2037579 Change-Id: I4f1ffc1169d4df090f71377e5aa8247e1cd17fc3 Signed-off-by: Kyale, Eliud --- service-mgmt/sm-common/src/sm_types.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service-mgmt/sm-common/src/sm_types.h b/service-mgmt/sm-common/src/sm_types.h index 4a4cd175..54844cd7 100644 --- a/service-mgmt/sm-common/src/sm_types.h +++ b/service-mgmt/sm-common/src/sm_types.h @@ -734,7 +734,7 @@ typedef enum * - failover state is normal */ #define SM_FAILOVER_STATE_MASK 0x00000F00 // 4 bits in use for failover states -#define SM_FAILOVER_IF_STATE_MASK 0x0000000F // 4 bits in use for interface states +#define SM_FAILOVER_IF_STATE_MASK 0x0000003F // 6 bits in use for interface states #define SM_FAILOVER_NODE_INFO_MASK (SM_FAILOVER_STATE_MASK | SM_FAILOVER_IF_STATE_MASK) /* Extract the failover state from the node info flags */