Looks good to me.

Reviewed-by: Harold Huang <[email protected]>

<[email protected]> 于2022年1月25日周二 13:25写道:
>
> From: Tonghao Zhang <[email protected]>
>
> The old version of openvswitch doesn't remove the padding from
> packet before L3+ conntrack processing and then packets are dropped
> in linux kernel stack. The patch [1] fixes the issue. We fix this
> issue on gateway which running ovs-dpdk as a quick workaround. Padding
> should be removed because tunnel size + inner size > 64B.
> More detailes, see [1]
>
> [1] - 
> https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=9382fe71c0058465e942a633869629929102843d
> Signed-off-by: Tonghao Zhang <[email protected]>
> ---
> v2: add OVS_UNLIKELY
> v1: this version was submitted a year ago
> http://patchwork.ozlabs.org/project/openvswitch/patch/[email protected]/
> ---
>  lib/netdev-native-tnl.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/lib/netdev-native-tnl.c b/lib/netdev-native-tnl.c
> index b89dfdd52a86..e23d71d4aec1 100644
> --- a/lib/netdev-native-tnl.c
> +++ b/lib/netdev-native-tnl.c
> @@ -149,11 +149,15 @@ void *
>  netdev_tnl_push_ip_header(struct dp_packet *packet,
>                 const void *header, int size, int *ip_tot_size)
>  {
> +    int padding = dp_packet_l2_pad_size(packet);
>      struct eth_header *eth;
>      struct ip_header *ip;
>      struct ovs_16aligned_ip6_hdr *ip6;
>
>      eth = dp_packet_push_uninit(packet, size);
> +    if (OVS_UNLIKELY(padding)) {
> +        dp_packet_set_size(packet, dp_packet_size(packet) - padding);
> +    }
>      *ip_tot_size = dp_packet_size(packet) - sizeof (struct eth_header);
>
>      memcpy(eth, header, size);
> --
> 2.27.0
>
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to