travelping / upg-vpp

User Plane Gateway (UPG) based on VPP
Apache License 2.0
146 stars 51 forks source link

should keep VLIB_BUFFER_IS_TRACED flag #359

Closed hcbwiz closed 9 months ago

hcbwiz commented 10 months ago

Hi, when clearing the checksum offload flags, it should keep VLIB_BUFFER_IS_TRACED for vpp trace plugin:

diff --git a/upf/upf_forward.c b/upf/upf_forward.c
index 585c91e..34581a8 100644
--- a/upf/upf_forward.c
+++ b/upf/upf_forward.c
@@ -218,7 +218,8 @@ upf_forward (vlib_main_t * vm, vlib_node_runtime_t * node,
                    {
                      b->flags &= ~(VNET_BUFFER_OFFLOAD_F_TCP_CKSUM |
                                    VNET_BUFFER_OFFLOAD_F_UDP_CKSUM |
-                                   VNET_BUFFER_OFFLOAD_F_IP_CKSUM);
+                                   VNET_BUFFER_OFFLOAD_F_IP_CKSUM) |
+                                   VLIB_BUFFER_IS_TRACED;
                      upf_nwi_if_and_fib_index
                        (gtm, FIB_PROTOCOL_IP4, far->forward.nwi_index,
                         &vnet_buffer (b)->sw_if_index[VLIB_RX],
@@ -227,7 +228,8 @@ upf_forward (vlib_main_t * vm, vlib_node_runtime_t * node,
                  else
                    {
                      b->flags &= ~(VNET_BUFFER_OFFLOAD_F_TCP_CKSUM |
-                                   VNET_BUFFER_OFFLOAD_F_UDP_CKSUM);
+                                   VNET_BUFFER_OFFLOAD_F_UDP_CKSUM) |
+                                   VLIB_BUFFER_IS_TRACED;
                      upf_nwi_if_and_fib_index
                        (gtm, FIB_PROTOCOL_IP6, far->forward.nwi_index,
                         &vnet_buffer (b)->sw_if_index[VLIB_RX],
diff --git a/upf/upf_gtpu_encap.c b/upf/upf_gtpu_encap.c
index 206ff3a..885ff53 100644
--- a/upf/upf_gtpu_encap.c
+++ b/upf/upf_gtpu_encap.c
@@ -426,7 +426,7 @@ upf_encap_inline (vlib_main_t * vm,

   u32 const csum_mask =
          ~(VNET_BUFFER_OFFLOAD_F_TCP_CKSUM | VNET_BUFFER_OFFLOAD_F_UDP_CKSUM |
-           (is_ip4 ? VNET_BUFFER_OFFLOAD_F_IP_CKSUM : 0));
+           (is_ip4 ? VNET_BUFFER_OFFLOAD_F_IP_CKSUM : 0)) | VLIB_BUFFER_IS_TRACED;

   from = vlib_frame_vector_args (from_frame);
   n_left_from = from_frame->n_vectors;
mitmitmitm commented 10 months ago

See also related https://github.com/travelping/upg-vpp/pull/304

hcbwiz commented 10 months ago

@mitmitmitm Thanks for your patch.

mogaika commented 9 months ago

Hi, thank you both. Merged #304 which fixes this issue