diff --git a/src/opnsense/mvc/app/controllers/OPNsense/TrafficShaper/forms/dialogPipe.xml b/src/opnsense/mvc/app/controllers/OPNsense/TrafficShaper/forms/dialogPipe.xml
index 10fa096de..69d6bba1a 100644
--- a/src/opnsense/mvc/app/controllers/OPNsense/TrafficShaper/forms/dialogPipe.xml
+++ b/src/opnsense/mvc/app/controllers/OPNsense/TrafficShaper/forms/dialogPipe.xml
@@ -43,6 +43,13 @@
choose source to provide all connected clients up to a maximum of this pipe configured bandwidth
]]>
+
+ pipe.scheduler
+
+ dropdown
+ true
+ Specify the scheduling algorithm to use
+
pipe.description
diff --git a/src/opnsense/mvc/app/models/OPNsense/TrafficShaper/TrafficShaper.xml b/src/opnsense/mvc/app/models/OPNsense/TrafficShaper/TrafficShaper.xml
index ae163f769..4358aac9a 100644
--- a/src/opnsense/mvc/app/models/OPNsense/TrafficShaper/TrafficShaper.xml
+++ b/src/opnsense/mvc/app/models/OPNsense/TrafficShaper/TrafficShaper.xml
@@ -51,6 +51,16 @@
destination
+
+ N
+
+ Weighted Fair Queueing
+
+ FIFO
+ Deficit Round Robin
+ QFQ
+
+
N
/^([a-z,A-Z,1-9]){0,30}$/
diff --git a/src/opnsense/service/templates/OPNsense/IPFW/ipfw.conf b/src/opnsense/service/templates/OPNsense/IPFW/ipfw.conf
index ab96e8f67..f08a6f5ea 100644
--- a/src/opnsense/service/templates/OPNsense/IPFW/ipfw.conf
+++ b/src/opnsense/service/templates/OPNsense/IPFW/ipfw.conf
@@ -39,7 +39,8 @@ flush
pipe {{ pipe.number }} config bw {{ pipe.bandwidth }}{{ pipe.bandwidthMetric }}/s{% if pipe.burst %} burst {{ pipe.burst }}{% endif %}{%
if pipe.queue %} queue {{ pipe.queue }}{%
if pipe.queueMetric != 'slots' %}{{pipe.queueMetric}}{% endif %}{% endif
- %}{% if pipe.mask != 'none' %} mask {{ pipe.mask }} 0xffffffff {% endif %}
+ %}{% if pipe.mask != 'none' %} mask {{ pipe.mask }} 0xffffffff {% endif %} type {%
+ if pipe.scheduler|default('') != '' %}{{pipe.scheduler}}{% else %}wf2q+{% endif %}
{% endfor %}
{% endif %}