summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDau Do <daudo@yahoo.com>2024-04-29 03:00:55 +0000
committerFan Zhang <fanzhang.oss@gmail.com>2024-06-12 13:02:35 +0000
commitea92116edfd17d0b1762533bd487eb5818f20428 (patch)
tree7e41a7cc53f1e753d650f14a02d98f04a81a7671 /src
parent5c0aa7d0b45dea7d19d12e6d7b12965703a9a053 (diff)
ipsec: Add option to configure the hand-off worker queue size
Type: improvement Change-Id: I252951d3ec01497c049ca0ffb7cb42aaf2efb965 Signed-off-by: Dau Do <daudo@yahoo.com>
Diffstat (limited to 'src')
-rw-r--r--src/vnet/ipsec/ah_decrypt.c8
-rw-r--r--src/vnet/ipsec/ah_encrypt.c8
-rw-r--r--src/vnet/ipsec/esp_decrypt.c16
-rw-r--r--src/vnet/ipsec/esp_encrypt.c20
-rw-r--r--src/vnet/ipsec/ipsec.c6
-rw-r--r--src/vnet/ipsec/ipsec.h2
6 files changed, 34 insertions, 26 deletions
diff --git a/src/vnet/ipsec/ah_decrypt.c b/src/vnet/ipsec/ah_decrypt.c
index 918ebf03f67..ec4db0fed57 100644
--- a/src/vnet/ipsec/ah_decrypt.c
+++ b/src/vnet/ipsec/ah_decrypt.c
@@ -500,10 +500,10 @@ ah_decrypt_init (vlib_main_t *vm)
{
ipsec_main_t *im = &ipsec_main;
- im->ah4_dec_fq_index =
- vlib_frame_queue_main_init (ah4_decrypt_node.index, 0);
- im->ah6_dec_fq_index =
- vlib_frame_queue_main_init (ah6_decrypt_node.index, 0);
+ im->ah4_dec_fq_index = vlib_frame_queue_main_init (ah4_decrypt_node.index,
+ im->handoff_queue_size);
+ im->ah6_dec_fq_index = vlib_frame_queue_main_init (ah6_decrypt_node.index,
+ im->handoff_queue_size);
return 0;
}
diff --git a/src/vnet/ipsec/ah_encrypt.c b/src/vnet/ipsec/ah_encrypt.c
index 960327f071d..86694660878 100644
--- a/src/vnet/ipsec/ah_encrypt.c
+++ b/src/vnet/ipsec/ah_encrypt.c
@@ -490,10 +490,10 @@ ah_encrypt_init (vlib_main_t *vm)
{
ipsec_main_t *im = &ipsec_main;
- im->ah4_enc_fq_index =
- vlib_frame_queue_main_init (ah4_encrypt_node.index, 0);
- im->ah6_enc_fq_index =
- vlib_frame_queue_main_init (ah6_encrypt_node.index, 0);
+ im->ah4_enc_fq_index = vlib_frame_queue_main_init (ah4_encrypt_node.index,
+ im->handoff_queue_size);
+ im->ah6_enc_fq_index = vlib_frame_queue_main_init (ah6_encrypt_node.index,
+ im->handoff_queue_size);
return 0;
}
diff --git a/src/vnet/ipsec/esp_decrypt.c b/src/vnet/ipsec/esp_decrypt.c
index 26d8ca1deee..01b2d2971b0 100644
--- a/src/vnet/ipsec/esp_decrypt.c
+++ b/src/vnet/ipsec/esp_decrypt.c
@@ -1675,14 +1675,14 @@ esp_decrypt_init (vlib_main_t *vm)
{
ipsec_main_t *im = &ipsec_main;
- im->esp4_dec_fq_index =
- vlib_frame_queue_main_init (esp4_decrypt_node.index, 0);
- im->esp6_dec_fq_index =
- vlib_frame_queue_main_init (esp6_decrypt_node.index, 0);
- im->esp4_dec_tun_fq_index =
- vlib_frame_queue_main_init (esp4_decrypt_tun_node.index, 0);
- im->esp6_dec_tun_fq_index =
- vlib_frame_queue_main_init (esp6_decrypt_tun_node.index, 0);
+ im->esp4_dec_fq_index = vlib_frame_queue_main_init (esp4_decrypt_node.index,
+ im->handoff_queue_size);
+ im->esp6_dec_fq_index = vlib_frame_queue_main_init (esp6_decrypt_node.index,
+ im->handoff_queue_size);
+ im->esp4_dec_tun_fq_index = vlib_frame_queue_main_init (
+ esp4_decrypt_tun_node.index, im->handoff_queue_size);
+ im->esp6_dec_tun_fq_index = vlib_frame_queue_main_init (
+ esp6_decrypt_tun_node.index, im->handoff_queue_size);
return 0;
}
diff --git a/src/vnet/ipsec/esp_encrypt.c b/src/vnet/ipsec/esp_encrypt.c
index dd47053874c..544ff7b6aa8 100644
--- a/src/vnet/ipsec/esp_encrypt.c
+++ b/src/vnet/ipsec/esp_encrypt.c
@@ -1445,16 +1445,16 @@ esp_encrypt_init (vlib_main_t *vm)
{
ipsec_main_t *im = &ipsec_main;
- im->esp4_enc_fq_index =
- vlib_frame_queue_main_init (esp4_encrypt_node.index, 0);
- im->esp6_enc_fq_index =
- vlib_frame_queue_main_init (esp6_encrypt_node.index, 0);
- im->esp4_enc_tun_fq_index =
- vlib_frame_queue_main_init (esp4_encrypt_tun_node.index, 0);
- im->esp6_enc_tun_fq_index =
- vlib_frame_queue_main_init (esp6_encrypt_tun_node.index, 0);
- im->esp_mpls_enc_tun_fq_index =
- vlib_frame_queue_main_init (esp_mpls_encrypt_tun_node.index, 0);
+ im->esp4_enc_fq_index = vlib_frame_queue_main_init (esp4_encrypt_node.index,
+ im->handoff_queue_size);
+ im->esp6_enc_fq_index = vlib_frame_queue_main_init (esp6_encrypt_node.index,
+ im->handoff_queue_size);
+ im->esp4_enc_tun_fq_index = vlib_frame_queue_main_init (
+ esp4_encrypt_tun_node.index, im->handoff_queue_size);
+ im->esp6_enc_tun_fq_index = vlib_frame_queue_main_init (
+ esp6_encrypt_tun_node.index, im->handoff_queue_size);
+ im->esp_mpls_enc_tun_fq_index = vlib_frame_queue_main_init (
+ esp_mpls_encrypt_tun_node.index, im->handoff_queue_size);
return 0;
}
diff --git a/src/vnet/ipsec/ipsec.c b/src/vnet/ipsec/ipsec.c
index f8c39c327ed..8b43dd23cc8 100644
--- a/src/vnet/ipsec/ipsec.c
+++ b/src/vnet/ipsec/ipsec.c
@@ -663,6 +663,7 @@ ipsec_config (vlib_main_t *vm, unformat_input_t *input)
u32 ipsec_spd_fp_num_buckets;
bool fp_spd_ip4_enabled = false;
bool fp_spd_ip6_enabled = false;
+ u32 handoff_queue_size;
while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
{
@@ -758,6 +759,11 @@ ipsec_config (vlib_main_t *vm, unformat_input_t *input)
ipsec_tun_table_init (AF_IP6, table_size, n_buckets);
}
+ else if (unformat (input, "async-handoff-queue-size %d",
+ &handoff_queue_size))
+ {
+ im->handoff_queue_size = handoff_queue_size;
+ }
else
return clib_error_return (0, "unknown input `%U'",
format_unformat_error, input);
diff --git a/src/vnet/ipsec/ipsec.h b/src/vnet/ipsec/ipsec.h
index 4aa09d7560e..9ab054cf2a9 100644
--- a/src/vnet/ipsec/ipsec.h
+++ b/src/vnet/ipsec/ipsec.h
@@ -248,6 +248,8 @@ typedef struct
u32 esp4_dec_tun_fq_index;
u32 esp6_dec_tun_fq_index;
+ u32 handoff_queue_size;
+
/* Number of buckets for flow cache */
u32 ipsec4_out_spd_hash_num_buckets;
u32 ipsec4_out_spd_flow_cache_entries;