Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions ansible/library/generate_golden_config_db.py
Original file line number Diff line number Diff line change
Expand Up @@ -588,6 +588,23 @@ def generate_lt2_ft2_golden_config_db(self):

return json.dumps({"PORT": port_config}, indent=4)

def generate_t0_f2_golden_config_db(self):
"""
Generate golden_config for t0-f2 to enable link_training on server facing ports.
"""
SUPPORTED_TOPO = ["t0-f2-d40u8"]
if self.topo_name not in SUPPORTED_TOPO:
return "{}"
ori_config = json.loads(self.get_config_from_minigraph())
golden_config = ori_config
golden_config["PORT"] = ori_config.get("PORT", {})
for _, config in golden_config["PORT"].items():
# Enable link_training for server facing ports
if "Server" in config.get("description", ""):
config["link_training"] = "on"

return json.dumps({'PORT': golden_config['PORT']}, indent=4)

def generate(self):
module_msg = "Success to generate golden_config_db.json"
# topo check
Expand All @@ -600,6 +617,9 @@ def generate(self):
config = self.generate_smartswitch_golden_config_db()
module_msg = module_msg + " for smartswitch"
self.module.run_command("sudo rm -f {}".format(TEMP_SMARTSWITCH_CONFIG_PATH))
elif "t0-f2" in self.topo_name:
config = self.generate_t0_f2_golden_config_db()
module_msg = module_msg + " for t0-f2"
elif "ft2" in self.topo_name or "lt2" in self.topo_name:
config = self.generate_lt2_ft2_golden_config_db()
elif "t2" in self.topo_name and self.macsec_profile:
Expand Down
5 changes: 5 additions & 0 deletions ansible/module_utils/graph_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,7 @@ def csv_to_graph_facts(self):
end_port_mac = link.get("EndPortMac", None)
autoneg_mode = link.get("AutoNeg")
fec_disable = link.get("FECDisable", False)
linktraining_mode = link.get("LinkTraining", "")

links.setdefault(start_device, {})
links.setdefault(end_device, {})
Expand Down Expand Up @@ -242,6 +243,10 @@ def csv_to_graph_facts(self):
start_port_linked_port.update({"autoneg": autoneg_mode})
end_port_linked_port.update({"autoneg": autoneg_mode})

if linktraining_mode:
start_port_linked_port.update({"linktraining": linktraining_mode})
end_port_linked_port.update({"linktraining": linktraining_mode})

if start_port_mac:
start_port_linked_port.update({"mac": start_port_mac})

Expand Down
7 changes: 6 additions & 1 deletion ansible/roles/fanout/templates/sonic_deploy_202405.j2
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,15 @@
{% if fanout_hwsku == "Arista-720DT-G48S4" and (fanout_port_config[port_name]['lanes'] | int) <= 24 %}
"autoneg": "on",
{% endif %}
{% if fanout_port_config[port_name]['speed'] | default('100000') in ["100000", "400000", "800000"] %}
{% if fanout_port_config[port_name]['speed'] | default('100000') in ["100000", "200000", "400000", "800000"] %}
"fec" : "rs",
{% endif %}
{% if port_name in device_conn[inventory_hostname] %}
{% if 'linktraining' in device_conn[inventory_hostname][port_name] %}
{% if 'on' in device_conn[inventory_hostname][port_name]['linktraining'] %}
"link_training": "on",
{% endif %}
{% endif %}
{% if 'autoneg' in device_conn[inventory_hostname][port_name] %}
{% if 'on' in device_conn[inventory_hostname][port_name]['autoneg'] %}
"autoneg": "on",
Expand Down
9 changes: 8 additions & 1 deletion ansible/roles/fanout/templates/sonic_deploy_202505.j2
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,17 @@
{% if fanout_hwsku == "Arista-720DT-G48S4" and (fanout_port_config[port_name]['lanes'] | int) <= 24 %}
"autoneg": "on",
{% endif %}
{% if fanout_port_config[port_name]['speed'] | default('100000') == "100000" %}
{% if fanout_port_config[port_name]['speed'] | default('100000') in ["100000", "200000", "400000", "800000"] %}
"fec" : "rs",
{% endif %}
{% if port_name in device_conn[inventory_hostname] %}
{% if 'linktraining' in device_conn[inventory_hostname][port_name] %}
{% if 'on' in device_conn[inventory_hostname][port_name]['linktraining'] %}
"link_training": "on",
{% elif 'off' in device_conn[inventory_hostname][port_name]['linktraining'] %}
"link_training": "off",
{% endif %}
{% endif %}
{% if 'autoneg' in device_conn[inventory_hostname][port_name] %}
{% if 'on' in device_conn[inventory_hostname][port_name]['autoneg'] %}
"autoneg": "on",
Expand Down
Loading