diff --git a/net/haproxy/pkg-descr b/net/haproxy/pkg-descr
index 18eeccaba..44cb5c952 100644
--- a/net/haproxy/pkg-descr
+++ b/net/haproxy/pkg-descr
@@ -10,6 +10,7 @@ Added:
* add support for built-in OCSP update feature
* add support for forwarded header (RFC7239)
* add option "X-Forwarded-For Header" to backend settings
+* add options for HTTP/2 performance tuning
Fixed:
* fix typo in cert sync script
diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/generalTuning.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/generalTuning.xml
index 364cf6032..f20d662dc 100644
--- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/generalTuning.xml
+++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/generalTuning.xml
@@ -132,4 +132,44 @@
true
+
+
+ header
+
+
+ haproxy.general.tuning.h2_initialWindowSize
+
+ text
+
+
+
+ haproxy.general.tuning.h2_initialWindowSizeOutgoing
+
+ text
+
+
+
+ haproxy.general.tuning.h2_initialWindowSizeIncoming
+
+ text
+
+
+
+ haproxy.general.tuning.h2_maxConcurrentStreams
+
+ text
+
+
+
+ haproxy.general.tuning.h2_maxConcurrentStreamsOutgoing
+
+ text
+
+
+
+ haproxy.general.tuning.h2_maxConcurrentStreamsIncoming
+
+ text
+
+
diff --git a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml
index ed8670c42..3e90be2f2 100644
--- a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml
+++ b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml
@@ -201,6 +201,42 @@
TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
N
+
+ 0
+ 10000000
+ Please specify a value between 0 and 10000000.
+ N
+
+
+ 0
+ 10000000
+ Please specify a value between 0 and 10000000.
+ N
+
+
+ 0
+ 10000000
+ Please specify a value between 0 and 10000000.
+ N
+
+
+ 0
+ 10000000
+ Please specify a value between 0 and 10000000.
+ N
+
+
+ 0
+ 10000000
+ Please specify a value between 0 and 10000000.
+ N
+
+
+ 0
+ 10000000
+ Please specify a value between 0 and 10000000.
+ N
+
diff --git a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
index 571562c8d..4ee933700 100644
--- a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
+++ b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
@@ -1011,6 +1011,24 @@ global
{% if OPNsense.HAProxy.general.tuning.luaMaxMem|default("") != "" %}
tune.lua.maxmem {{OPNsense.HAProxy.general.tuning.luaMaxMem}}
{% endif %}
+{% if OPNsense.HAProxy.general.tuning.h2_initialWindowSize|default("") != "" %}
+ tune.h2.initial-window-size {{OPNsense.HAProxy.general.tuning.h2_initialWindowSize}}
+{% endif %}
+{% if OPNsense.HAProxy.general.tuning.h2_initialWindowSizeOutgoing|default("") != "" %}
+ tune.h2.be.initial-window-size {{OPNsense.HAProxy.general.tuning.h2_initialWindowSizeOutgoing}}
+{% endif %}
+{% if OPNsense.HAProxy.general.tuning.h2_initialWindowSizeIncoming|default("") != "" %}
+ tune.h2.fe.initial-window-size {{OPNsense.HAProxy.general.tuning.h2_initialWindowSizeIncoming}}
+{% endif %}
+{% if OPNsense.HAProxy.general.tuning.h2_maxConcurrentStreams|default("") != "" %}
+ tune.h2.max-concurrent-streams {{OPNsense.HAProxy.general.tuning.h2_maxConcurrentStreams}}
+{% endif %}
+{% if OPNsense.HAProxy.general.tuning.h2_maxConcurrentStreamsOutgoing|default("") != "" %}
+ tune.h2.be.max-concurrent-streams {{OPNsense.HAProxy.general.tuning.h2_maxConcurrentStreamsOutgoing}}
+{% endif %}
+{% if OPNsense.HAProxy.general.tuning.h2_maxConcurrentStreamsIncoming|default("") != "" %}
+ tune.h2.fe.max-concurrent-streams {{OPNsense.HAProxy.general.tuning.h2_maxConcurrentStreamsIncoming}}
+{% endif %}
{# # logging configuration #}
{% set logging = [] %}
{% if OPNsense.HAProxy.general.logging.host != '127.0.0.1' %}