diff --git a/net/strongswan/files/swanctl.init b/net/strongswan/files/swanctl.init
index f498036d0..2144c5c20 100644
--- a/net/strongswan/files/swanctl.init
+++ b/net/strongswan/files/swanctl.init
@@ -218,6 +218,7 @@ config_child() {
 	local config_name="$1"
 	local mode="$2"
 
+	local hw_offload
 	local local_subnet
 	local local_nat
 	local updown
@@ -239,6 +240,7 @@ config_child() {
 	config_get closeaction "$1" closeaction "none"
 	config_get if_id "$1" if_id ""
 	config_get rekeytime "$1" rekeytime ""
+	config_get hw_offload "$1" hw_offload ""
 
 	config_list_foreach "$1" local_subnet append_var local_subnet ","
 	config_list_foreach "$1" remote_subnet append_var remote_subnet ","
@@ -299,12 +301,23 @@ config_child() {
 		;;
 	esac
 
+	case "$hw_offload" in
+	yes|no|auto|"")
+		;;
+	*)
+		fatal "hw_offload value $hw_offload invalid"
+		hw_offload=""
+		;;
+	esac
+
 	[ -n "$local_nat" ] && local_subnet="$local_nat"
 
 	swanctl_xappend3 "$config_name {"
 
 	[ -n "$local_subnet" ] && swanctl_xappend4 "local_ts = $local_subnet"
 	[ -n "$remote_subnet" ] && swanctl_xappend4 "remote_ts = $remote_subnet"
+
+	[ -n "$hw_offload" ] && swanctl_append4 "hw_offload = $hw_offload"
 	[ -n "$if_id" ] && { swanctl_xappend4 "if_id_in = $if_id" ; swanctl_xappend4 "if_id_out = $if_id" ; }
 	[ -n "$startaction" -a "$startaction" != "none" ] && swanctl_xappend4 "start_action = $startaction"
 	[ -n "$closeaction" -a "$closeaction" != "none" ] && swanctl_xappend4 "close_action = $closeaction"