Skip to content

Conversation

@rminnikanti
Copy link
Contributor

This PR introduces HLD for the Link Layer Retry (LLR) feature

@mssonicbld
Copy link
Collaborator

/azp run

@azure-pipelines
Copy link

No pipelines are associated with this pull request.

Signed-off-by: Ravi Minnikanti <[email protected]>
Signed-off-by: Ravi Minnikanti <[email protected]>
@mssonicbld
Copy link
Collaborator

/azp run

@azure-pipelines
Copy link

No pipelines are associated with this pull request.

`llrmgrd` operates as a daemon within the swss Docker container and is initiated by supervisord, like other swss services.
- `llrmgrd` relies on a vendor-supplied ini file named `llr_buffer_lookup.ini` located in the HWSKU directory to generate LLR profile parameters based on port operating speed and cable length.
- A WARN log is generated if the `llr_buffer_lookup.ini` file is missing or inaccessible.
- Each generated profile is assigned a unique name in the format `llr_buffer_<speed>_<cable_len>_profile`.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems the profile is determined by the speed and cable_len. In the case where port speed is auto, and the speed changes, how can llrmgrd catch and handle such change?

- If the LLR global configuration mode is set to Static, the configuration is driven by the configuration in CONFIG_DB.
- When set to Dynamic, the configuration is driven by the LLDP exchange (This mode is not supported in Phase I of development).
- It subscribes to CABLE_LENGTH table in CONFIG_DB for port cable length information. For operational speed updates, it subscribes to the PORT_TABLE in STATE_DB.
- When LLR is enabled both globally and on a port, `llrmgrd` generates an LLR profile for the port and writes the corresponding profile to CONFIG_DB.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need a ref_count for each LLR profile so it can only be deleted if ref_count is 0?


PORT LLR Local State LLR Remote State LLR PROFILE
---------- ----------------- ------------------ ------------------------------
Ethernet1 enabled disabled llr_buffer_800000_40m_profile
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please help clarify the following questions?

  1. How can we get the LLR remote state, by lldp?
  2. Can LLR still work properly if the remote state is disabled?
  3. Will turn on/off LLR dynamically affect the outgoing traffic on this port?

thanks,

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants