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
> [email protected]
> http://openvswitch.org/mailman/listinfo/dev
>
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev