This is pretty cool !

Do you know how i can try compile for RISC?

One possible issue below:


>  /* The IPv6 flow label is in the lower 20 bits of the first 32-bit word.
> */
> diff --git a/lib/unaligned.h b/lib/unaligned.h
> index 2654a27..154eb13 100644
> --- a/lib/unaligned.h
> +++ b/lib/unaligned.h
> @@ -175,6 +175,21 @@ put_unaligned_u64(uint64_t *p, uint64_t x)
>  }
>
>  /* Returns the value in 'x'. */
> +static inline uint32_t
> +get_16aligned_u32(const ovs_16aligned_u32 *x)
> +{
> +    return ((uint32_t) x->hi << 16) | x->lo;
> +}
> +
> +/* Stores 'value' in 'x'. */
> +static inline void
> +put_16aligned_u32(ovs_16aligned_u32 *x, uint32_t value)
> +{
> +    x->hi = value >> 16;
> +    x->lo = value;
> +}
> +
> +/* Returns the value in 'x'. */
>  static inline uint64_t
>  get_32aligned_u64(const ovs_32aligned_u64 *x)
>  {
> @@ -191,6 +206,30 @@ put_32aligned_u64(ovs_32aligned_u64 *x, uint64_t
> value)
>
>

Why don't we differentiate big/small endian here for "put_16aligned_u32()"?

And why do we differentiate big/small endian here for
"put_16aligned_be32()"? Isn't be32 already big endian?


 #ifndef __CHECKER__
>  /* Returns the value of 'x'. */
> +static inline ovs_be32
> +get_16aligned_be32(const ovs_16aligned_be32 *x)
> +{
> +#ifdef WORDS_BIGENDIAN
> +    return ((ovs_be32) x->hi << 16) | x->lo;
> +#else
> +    return ((ovs_be32) x->lo << 16) | x->hi;
> +#endif
> +}
> +
> +/* Stores network byte order 'value' into 'x'. */
> +static inline void
> +put_16aligned_be32(ovs_16aligned_be32 *x, ovs_be32 value)
> +{
> +#if WORDS_BIGENDIAN
> +    x->hi = value >> 16;
> +    x->lo = value;
> +#else
> +    x->hi = value;
> +    x->lo = value >> 16;
> +#endif
> +}
> +
> +/* Returns the value of 'x'. */
>  static inline ovs_be64
>  get_32aligned_be64(const ovs_32aligned_be64 *x)
>  {
> @@ -216,6 +255,8 @@ put_32aligned_be64(ovs_32aligned_be64 *x, ovs_be64
> value)
>  #else  /* __CHECKER__ */
>  /* Making sparse happy with these functions also makes them unreadable, so
>   * don't bother to show it their implementations. */
> +ovs_be32 get_16aligned_be32(const ovs_16aligned_be32 *);
> +void put_16aligned_be32(ovs_16aligned_be32 *, ovs_be32);
>  ovs_be64 get_32aligned_be64(const ovs_32aligned_be64 *);
>  void put_32aligned_be64(ovs_32aligned_be64 *, ovs_be64);
>  #endif
> --
> 1.7.10.4
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to