[ovs-dev] [PATCH v4 4/9] dp-packet: Add flow_mark support for non-DPDK case.

Flavio Leitner fbl at sysclose.org
Fri Feb 15 18:58:30 UTC 2019


On Fri, Feb 15, 2019 at 04:07:03PM +0300, Ilya Maximets wrote:
> Additionally, new API call 'dp_packet_set_flow_mark' is needed
> for packet clone. Mostly for dummy HWOL implementation.
> 
> Signed-off-by: Ilya Maximets <i.maximets at samsung.com>
> ---
>  lib/dp-packet.h | 23 +++++++++++++++++++++--
>  1 file changed, 21 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/dp-packet.h b/lib/dp-packet.h
> index 685edc90c..15c596a91 100644
> --- a/lib/dp-packet.h
> +++ b/lib/dp-packet.h
> @@ -60,7 +60,9 @@ struct dp_packet {
>      uint32_t size_;             /* Number of bytes in use. */
>      uint32_t ol_flags;          /* Offloading flags. */
>  #define DP_PACKET_OL_RSS_HASH_MASK   0x1 /* Is the 'rss_hash' valid? */
> +#define DP_PACKET_OL_FLOW_MARK_MASK  0x2 /* Is the 'flow_mark' valid? */

Perhaps it's time for a enum?

Otherwise it looks good to me.
fbl


>      uint32_t rss_hash;          /* Packet hash. */
> +    uint32_t flow_mark;         /* Packet flow mark. */
>  #endif
>      enum dp_packet_source source;  /* Source of memory allocated as 'base'. */
>  
> @@ -556,6 +558,13 @@ dp_packet_has_flow_mark(const struct dp_packet *p, uint32_t *mark)
>      return false;
>  }
>  
> +static inline void
> +dp_packet_set_flow_mark(struct dp_packet *p, uint32_t mark)
> +{
> +    p->mbuf.hash.fdir.hi = mark;
> +    p->mbuf.ol_flags |= PKT_RX_FDIR_ID;
> +}
> +
>  #else /* DPDK_NETDEV */
>  static inline void *
>  dp_packet_base(const struct dp_packet *b)
> @@ -657,11 +666,21 @@ dp_packet_l4_checksum_bad(const struct dp_packet *p OVS_UNUSED)
>  }
>  
>  static inline bool
> -dp_packet_has_flow_mark(const struct dp_packet *p OVS_UNUSED,
> -                        uint32_t *mark OVS_UNUSED)
> +dp_packet_has_flow_mark(const struct dp_packet *p, uint32_t *mark)
>  {
> +    if (p->ol_flags & DP_PACKET_OL_FLOW_MARK_MASK) {
> +        *mark = p->flow_mark;
> +        return true;
> +    }
>      return false;
>  }
> +
> +static inline void
> +dp_packet_set_flow_mark(struct dp_packet *p, uint32_t mark)
> +{
> +    p->flow_mark = mark;
> +    p->ol_flags |= DP_PACKET_OL_FLOW_MARK_MASK;
> +}
>  #endif /* DPDK_NETDEV */
>  
>  static inline void
> -- 
> 2.17.1
> 
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev



More information about the dev mailing list