On 5/16/23 07:33, Nobuhiro MIKI wrote:
> For tunnels such as SRv6, some popular vendor appliances support
> IPv6 flowlabel based load balancing. In preparation for OVS to
> support it, this patch modifies the encapsulation to allow IPv6
> flowlabel to be configured.
> 
> Signed-off-by: Nobuhiro MIKI <nm...@yahoo-corp.jp>
> ---
>  lib/netdev-native-tnl.c | 23 +++++++++++++----------
>  lib/netdev-native-tnl.h |  4 ++--
>  lib/packets.c           |  2 +-
>  lib/packets.h           |  2 ++
>  4 files changed, 18 insertions(+), 13 deletions(-)
> 
> diff --git a/lib/netdev-native-tnl.c b/lib/netdev-native-tnl.c
> index 9abdf51076a8..db1c4c6d9bfc 100644
> --- a/lib/netdev-native-tnl.c
> +++ b/lib/netdev-native-tnl.c
> @@ -146,8 +146,8 @@ netdev_tnl_ip_extract_tnl_md(struct dp_packet *packet, 
> struct flow_tnl *tnl,
>   *
>   * Return pointer to the L4 header added to 'packet'. */
>  void *
> -netdev_tnl_push_ip_header(struct dp_packet *packet,
> -               const void *header, int size, int *ip_tot_size)
> +netdev_tnl_push_ip_header(struct dp_packet *packet, const void *header,
> +                          int size, int *ip_tot_size, ovs_be32 ipv6_label)
>  {
>      struct eth_header *eth;
>      struct ip_header *ip;
> @@ -166,6 +166,7 @@ netdev_tnl_push_ip_header(struct dp_packet *packet,
>          ip6 = netdev_tnl_ipv6_hdr(eth);
>          *ip_tot_size -= IPV6_HEADER_LEN;
>          ip6->ip6_plen = htons(*ip_tot_size);
> +        packet_set_ipv6_flow_label(&ip6->ip6_flow, ipv6_label);

This function is on a hot path.  It might make sense to update
the flow label only if it is non-zero, to save some cycles.

Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to