From 6809538e646bf86c000dc1faba60b0a4157ad898 Mon Sep 17 00:00:00 2001 From: Mohsin Kazmi Date: Wed, 10 Feb 2021 11:26:24 +0100 Subject: vlib: refactor checksum offload support Type: refactor This patch refactors the offload flags in vlib_buffer_t. There are two main reasons behind this refactoring. First, offload flags are insufficient to represent outer and inner headers offloads. Second, room for these flags in first cacheline of vlib_buffer_t is also limited. This patch introduces a generic offload flag in first cacheline. And detailed offload flags in 2nd cacheline of the structure for performance optimization. Change-Id: Icc363a142fb9208ec7113ab5bbfc8230181f6004 Signed-off-by: Mohsin Kazmi --- src/vnet/ip/ip4_forward.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/vnet/ip/ip4_forward.c') diff --git a/src/vnet/ip/ip4_forward.c b/src/vnet/ip/ip4_forward.c index 332c483aa9d..9e8d164b51f 100644 --- a/src/vnet/ip/ip4_forward.c +++ b/src/vnet/ip/ip4_forward.c @@ -1417,9 +1417,10 @@ ip4_local_l4_csum_validate (vlib_main_t * vm, vlib_buffer_t * p, } } -#define ip4_local_csum_is_offloaded(_b) \ - _b->flags & VNET_BUFFER_F_OFFLOAD_TCP_CKSUM \ - || _b->flags & VNET_BUFFER_F_OFFLOAD_UDP_CKSUM +#define ip4_local_csum_is_offloaded(_b) \ + ((_b->flags & VNET_BUFFER_F_OFFLOAD) && \ + (vnet_buffer2 (_b)->oflags & \ + (VNET_BUFFER_OFFLOAD_F_TCP_CKSUM | VNET_BUFFER_OFFLOAD_F_UDP_CKSUM))) #define ip4_local_need_csum_check(is_tcp_udp, _b) \ (is_tcp_udp && !(_b->flags & VNET_BUFFER_F_L4_CHECKSUM_COMPUTED \ @@ -2066,7 +2067,7 @@ ip4_ttl_and_checksum_check (vlib_buffer_t * b, ip4_header_t * ip, u16 * next, /* Verify checksum. */ ASSERT (ip4_header_checksum_is_valid (ip) || - (b->flags & VNET_BUFFER_F_OFFLOAD_IP_CKSUM)); + (vnet_buffer2 (b)->oflags & VNET_BUFFER_OFFLOAD_F_IP_CKSUM)); } -- cgit 1.2.3-korg