From 1ac7b6c9024b8fce082308be6cc7009abb8e4770 Mon Sep 17 00:00:00 2001 From: code-a1 <68858676+code-a1@users.noreply.github.com> Date: Fri, 20 Feb 2026 17:41:54 +0100 Subject: [PATCH 1/2] Added support for priority queues in switch configuration Signed-off-by: code-a1 <68858676+code-a1@users.noreply.github.com> --- utils/p4runtime_switch.py | 6 ++++++ utils/run_exercise.py | 12 ++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/utils/p4runtime_switch.py b/utils/p4runtime_switch.py index 18ec0ecb..542b41c4 100644 --- a/utils/p4runtime_switch.py +++ b/utils/p4runtime_switch.py @@ -94,6 +94,10 @@ def __init__(self, name, sw_path = None, json_path = None, if "cpu_port" in kwargs: self.cpu_port = kwargs["cpu_port"] + self.priority_queues = None + if "priority_queues" in kwargs: + self.priority_queues = kwargs["priority_queues"] + def check_switch_started(self, pid): for _ in range(SWITCH_START_TIMEOUT * 2): @@ -129,6 +133,8 @@ def start(self, controllers): args.append("-- --grpc-server-addr 0.0.0.0:" + str(self.grpc_port)) if self.cpu_port: args.append("--cpu-port " + str(self.cpu_port)) + if self.priority_queues: + args.append("--priority-queues " + str(self.priority_queues)) cmd = ' '.join(args) info(cmd + "\n") print(cmd + "\n") diff --git a/utils/run_exercise.py b/utils/run_exercise.py index a2169fe9..9ffd9487 100755 --- a/utils/run_exercise.py +++ b/utils/run_exercise.py @@ -93,9 +93,17 @@ def __init__(self, hosts, switches, links, log_dir, bmv2_exe, pcap_dir, **opts): # add default switch switchClass = None if "cpu_port" in params: - self.addSwitch(sw, log_file="%s/%s.log" %(log_dir, sw), cpu_port=params["cpu_port"], cls=switchClass) + if "priority_queues" in params: + self.addSwitch(sw, log_file="%s/%s.log" % (log_dir, sw), cpu_port=params["cpu_port"], + priority_queues=params["priority_queues"], cls=switchClass) + else: + self.addSwitch(sw, log_file="%s/%s.log" % (log_dir, sw), cpu_port=params["cpu_port"], cls=switchClass) else: - self.addSwitch(sw, log_file="%s/%s.log" %(log_dir, sw), cls=switchClass) + if "priority_queues" in params: + self.addSwitch(sw, log_file="%s/%s.log" % (log_dir, sw), priority_queues=params["priority_queues"], + cls=switchClass) + else: + self.addSwitch(sw, log_file="%s/%s.log" % (log_dir, sw), cls=switchClass) for link in host_links: host_name = link['node1'] From cd4c74e59af9e47f34b546863c4a5cb4ee015820 Mon Sep 17 00:00:00 2001 From: code-a1 <68858676+code-a1@users.noreply.github.com> Date: Fri, 20 Feb 2026 18:26:48 +0100 Subject: [PATCH 2/2] Refactored logic to allow better scaling on the number of switch parameters Signed-off-by: code-a1 <68858676+code-a1@users.noreply.github.com> --- utils/run_exercise.py | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/utils/run_exercise.py b/utils/run_exercise.py index 9ffd9487..4c0d8fbc 100755 --- a/utils/run_exercise.py +++ b/utils/run_exercise.py @@ -92,18 +92,17 @@ def __init__(self, hosts, switches, links, log_dir, bmv2_exe, pcap_dir, **opts): else: # add default switch switchClass = None - if "cpu_port" in params: - if "priority_queues" in params: - self.addSwitch(sw, log_file="%s/%s.log" % (log_dir, sw), cpu_port=params["cpu_port"], - priority_queues=params["priority_queues"], cls=switchClass) - else: - self.addSwitch(sw, log_file="%s/%s.log" % (log_dir, sw), cpu_port=params["cpu_port"], cls=switchClass) - else: - if "priority_queues" in params: - self.addSwitch(sw, log_file="%s/%s.log" % (log_dir, sw), priority_queues=params["priority_queues"], - cls=switchClass) - else: - self.addSwitch(sw, log_file="%s/%s.log" % (log_dir, sw), cls=switchClass) + + switch_opts = { + "log_file": "%s/%s.log" % (log_dir, sw), + "cls": switchClass + } + + for key in ("cpu_port", "priority_queues"): + if key in params: + switch_opts[key] = params[key] + + self.addSwitch(sw, **switch_opts) for link in host_links: host_name = link['node1']