On 16 Sep 2022, at 12:12, Cian Ferriter wrote:

> A typical NVGRE encapsulated packet starts with the ETH/IP/GRE
> protocols.  Miniflow extract will parse just the ETH and IP headers. The
> GRE header will be processed later as part of the pop action. Add
> support for parsing the ETH/IP headers in this scenario.
>
> Signed-off-by: Cian Ferriter <[email protected]>
> ---
>  lib/dp-packet.h                   | 58 +++++++++++++++++++++++--------
>  lib/dpif-netdev-extract-avx512.c  | 43 +++++++++++++++++++++--
>  lib/dpif-netdev-private-extract.c | 10 ++++++
>  lib/dpif-netdev-private-extract.h |  5 +++
>  4 files changed, 100 insertions(+), 16 deletions(-)
>
> diff --git a/lib/dp-packet.h b/lib/dp-packet.h
> index 55eeaab2c..230bbec27 100644

Only one small nit, maybe Ilya can change on commit if he finds no other issues.

Acked-by: Eelco Chaudron <[email protected]>

> --- a/lib/dp-packet.h
> +++ b/lib/dp-packet.h
> @@ -1089,8 +1089,28 @@ dp_packet_l4_checksum_bad(const struct dp_packet *p)
>              DP_PACKET_OL_RX_L4_CKSUM_BAD;
>  }
>
> +static inline uint32_t ALWAYS_INLINE
> +dp_packet_calc_hash_ipv4(const uint8_t *pkt, const uint16_t l3_ofs,
> +                         uint32_t hash)
> +{
> +    const void *ipv4_src = &pkt[l3_ofs + offsetof(struct ip_header, ip_src)];
> +    const void *ipv4_dst = &pkt[l3_ofs + offsetof(struct ip_header, ip_dst)];
> +    uint32_t ip_src, ip_dst;
> +
> +    memcpy(&ip_src, ipv4_src, sizeof ip_src);
> +    memcpy(&ip_dst, ipv4_dst, sizeof ip_dst);
> +
> +    /* IPv4 Src and Dst. */
> +    hash = hash_add(hash, ip_src);
> +    hash = hash_add(hash, ip_dst);

Add cr/lf before comments.

> +    /* IPv4 proto. */
> +    hash = hash_add(hash, pkt[l3_ofs + offsetof(struct ip_header, 
> ip_proto)]);

<SNIP>

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to