Reviewed-by: Petri Savolainen <petri.savolai...@nokia.com>

> -----Original Message-----
> From: lng-odp [mailto:lng-odp-boun...@lists.linaro.org] On Behalf Of
> ext Zoltan Kiss
> Sent: Monday, August 24, 2015 7:49 PM
> To: lng-odp@lists.linaro.org
> Subject: [lng-odp] [API-NEXT PATCH v6] api: packet: allow access to
> packet flow hash values
> 
> Applications can read the computed hash (if any) and set it if they
> want
> to store any extra information in it.
> 
> Signed-off-by: Zoltan Kiss <zoltan.k...@linaro.org>
> ---
> 
> v2:
> - focus on RSS hash only
> - use setter/getter's
> 
> v3:
> - do not mention pointers
> - add a note
> - add new patches for implementation and test
> 
> v4: I've accidentally skipped this version
> 
> v5:
> - use separate flag get and clear, as hash can have any value (that
> maps to
> checking ol_flags in DPDK)
> - change terminology to "flow hash", it reflects better what is
> actually hashed
> - add function to generate hash by the platform
> 
> v6:
> - remove stale function definition from the end of packet.h
> - spell out in hash_set that if platform cares about the validity of
> this value,
>   it has to maintain it internally.
> - with the above change OVS doesn't need the hash generator function
> anymore,
>   so remove that too. We can introduce it later on.
> 
>  include/odp/api/packet.h       | 33 +++++++++++++++++++++++++++++++++
>  include/odp/api/packet_flags.h | 18 ++++++++++++++++++
>  2 files changed, 51 insertions(+)
> 
> diff --git a/include/odp/api/packet.h b/include/odp/api/packet.h
> index 3a454b5..c983332 100644
> --- a/include/odp/api/packet.h
> +++ b/include/odp/api/packet.h
> @@ -605,6 +605,39 @@ uint32_t odp_packet_l4_offset(odp_packet_t pkt);
>  int odp_packet_l4_offset_set(odp_packet_t pkt, uint32_t offset);
> 
>  /**
> + * Packet flow hash value
> + *
> + * Returns the hash generated from the packet header. Use
> + * odp_packet_has_flow_hash() to check if packet contains a hash.
> + *
> + * @param      pkt      Packet handle
> + *
> + * @return  Hash value
> + *
> + * @note Zero can be a valid hash value.
> + * @note The hash algorithm and the header fields defining the flow
> (therefore
> + * used for hashing) is platform dependent.
> + */
> +uint32_t odp_packet_flow_hash(odp_packet_t pkt);
> +
> +/**
> + * Set packet flow hash value
> + *
> + * Store the packet flow hash for the packet and sets the flow hash
> flag. This
> + * enables (but does not requires!) application to reflect packet
> header
> + * changes in the hash.
> + *
> + * @param      pkt              Packet handle
> + * @param      flow_hash        Hash value to set
> + *
> + * @note If the platform needs to keep the original hash value, it has
> to
> + * maintain it internally.
> + * @note The application is not required to keep this hash valid for
> new or
> + * modified packets.
> + */
> +void odp_packet_flow_hash_set(odp_packet_t pkt, uint32_t flow_hash);
> +
> +/**
>   * Tests if packet is segmented
>   *
>   * @param pkt  Packet handle
> diff --git a/include/odp/api/packet_flags.h
> b/include/odp/api/packet_flags.h
> index bfbcc94..7c3b247 100644
> --- a/include/odp/api/packet_flags.h
> +++ b/include/odp/api/packet_flags.h
> @@ -191,6 +191,15 @@ int odp_packet_has_sctp(odp_packet_t pkt);
>  int odp_packet_has_icmp(odp_packet_t pkt);
> 
>  /**
> + * Check for packet flow hash
> + *
> + * @param pkt Packet handle
> + * @retval non-zero if packet contains a hash value
> + * @retval 0 if packet does not contain a hash value
> + */
> +int odp_packet_has_flow_hash(odp_packet_t pkt);
> +
> +/**
>   * Set flag for L2 header, e.g. ethernet
>   *
>   * @param pkt Packet handle
> @@ -327,6 +336,15 @@ void odp_packet_has_sctp_set(odp_packet_t pkt, int
> val);
>  void odp_packet_has_icmp_set(odp_packet_t pkt, int val);
> 
>  /**
> + * Clear flag for packet flow hash
> + *
> + * @param pkt Packet handle
> + *
> + * @note Set this flag is only possible through
> odp_packet_flow_hash_set()
> + */
> +void odp_packet_has_flow_hash_clr(odp_packet_t pkt);
> +
> +/**
>   * @}
>   */
> 
> --
> 1.9.1
> 
> _______________________________________________
> lng-odp mailing list
> lng-odp@lists.linaro.org
> https://lists.linaro.org/mailman/listinfo/lng-odp
_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to