Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enforce another toggle after config mux to active first toggle failed #95

Merged
merged 1 commit into from
Jul 2, 2022

Conversation

lolyu
Copy link
Contributor

@lolyu lolyu commented Jun 30, 2022

Description of PR

Summary:
Fixes # (issue)

Type of change

  • Bug fix
  • New feature
  • Doc/Design
  • Unit test

Approach

What is the motivation for this PR?

After config mux state active EthernetXX, the first toggle might not be able to be succeeded as xcvrd has a chance to fail to setup the gRPC connection as the route changed by muxorch needs time to work.

Signed-off-by: Longxiang Lyu lolv@microsoft.com

How did you do it?

The state change sequence after linkmgrd boots up and receives a mux config active:

(unknown, unknown, up) --> config mux active --> (unknown, active, up) --> mux state unknown[as xcvrd could not setup gRPC connection] --> (unknown, unknown, up) --> probe mux state, return unknown --> (unknown, unknown, up)

Once linkmgrd reaches (unknown, unknown, up), it will keep probing the mux till xcvrd returns either active or standby:
if the probe result is active, we need an extra toggle to active to let show mux status shows active.
if the probe result is standby, we also need an extra toggle to active to notify the gRPC server the port is standby and let show mux status shows active.

How did you verify/test it?

Any platform specific information?

Documentation

Signed-off-by: Longxiang Lyu <lolv@microsoft.com>
@lolyu lolyu changed the title Enforce switch after config mux to active Enforce switch after config mux to active first toggle failed Jun 30, 2022
@lolyu lolyu changed the title Enforce switch after config mux to active first toggle failed Enforce another toggle after config mux to active first toggle failed Jun 30, 2022
@lolyu lolyu requested review from zjswhhh and yxieca June 30, 2022 09:02
@lolyu lolyu merged commit 58d8aae into sonic-net:master Jul 2, 2022
zjswhhh added a commit to sonic-net/sonic-buildimage that referenced this pull request Jul 12, 2022
[master][sonic-linkmgrd] submodule update

58d8aae Longxiang Lyu Sat Jul 2 10:14:50 2022 +0800 Enforce switch after config mux to active (sonic-net/sonic-linkmgrd#95)
600df46 Longxiang Lyu Thu Jun 30 15:09:10 2022 +0800 Add unittest to verify mux toggle active (sonic-net/sonic-linkmgrd#94)
400b1b8 gregshpit Wed Jun 29 21:32:45 2022 +0300 For Sonic cross-compilation build. CC variable is used as gcc compiler. CXX variable is used as g++ compiler. (sonic-net/sonic-linkmgrd#91)
a516668 Jing Zhang Tue Jun 28 11:07:23 2022 -0700 Use Vlan MAC as src MAC for link prober by default (sonic-net/sonic-linkmgrd#93)
6b5d739 Longxiang Lyu Tue Jun 28 22:46:12 2022 +0800 Fix inconsistent mux state (sonic-net/sonic-linkmgrd#92)
9265497 Jing Zhang Fri Jun 24 09:10:12 2022 -0700 Remove exception throwing when initializing missing loopback interface (sonic-net/sonic-linkmgrd#90)

sign-off: Jing Zhang zhangjing@microsoft.com
yxieca pushed a commit that referenced this pull request Aug 11, 2022
Approach
What is the motivation for this PR?
After config mux state active EthernetXX, the first toggle might not be able to be succeeded as xcvrd has a chance to fail to setup the gRPC connection as the route changed by muxorch needs time to work.

Signed-off-by: Longxiang Lyu lolv@microsoft.com

How did you do it?
The state change sequence after linkmgrd boots up and receives a mux config active:

(unknown, unknown, up) --> config mux active --> (unknown, active, up) --> mux state unknown[as xcvrd could not setup gRPC connection] --> (unknown, unknown, up) --> probe mux state, return unknown --> (unknown, unknown, up)

Once linkmgrd reaches (unknown, unknown, up), it will keep probing the mux till xcvrd returns either active or standby:
if the probe result is active, we need an extra toggle to active to let show mux status shows active.
if the probe result is standby, we also need an extra toggle to active to notify the gRPC server the port is standby and let show mux status shows active.

How did you verify/test it?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants