[ovs-dev] [PATCH] classifier: Replace MINIFLOW_IN_MAP macro by function.
Justin Pettit
jpettit at nicira.com
Fri Aug 21 17:21:40 UTC 2015
Don't let Keith see that comment.
Acked-by: Justin Pettit <jpettit at nicira.com>
--Justin
> On Aug 21, 2015, at 8:26 AM, Ben Pfaff <blp at nicira.com> wrote:
>
> Functions are nicer.
>
> Signed-off-by: Ben Pfaff <blp at nicira.com>
> ---
> lib/classifier.c | 2 +-
> lib/flow.h | 16 ++++++++++------
> 2 files changed, 11 insertions(+), 7 deletions(-)
>
> diff --git a/lib/classifier.c b/lib/classifier.c
> index e6227b9..a91d936 100644
> --- a/lib/classifier.c
> +++ b/lib/classifier.c
> @@ -1680,7 +1680,7 @@ check_tries(struct trie_ctx trie_ctx[CLS_MAX_TRIES], unsigned int n_tries,
> uint8_t be64ofs = be32ofs / 2;
>
> /* Is the trie field within the current range of fields? */
> - if (MINIFLOW_IN_MAP(range_map, be64ofs)) {
> + if (miniflow_in_map(range_map, be64ofs)) {
> /* On-demand trie lookup. */
> if (!ctx->lookup_done) {
> memset(&ctx->match_plens, 0, sizeof ctx->match_plens);
> diff --git a/lib/flow.h b/lib/flow.h
> index d0a354c..da09c90 100644
> --- a/lib/flow.h
> +++ b/lib/flow.h
> @@ -599,15 +599,19 @@ miniflow_get__(const struct miniflow *mf, size_t u64_idx)
> : miniflow_values_get__(miniflow_get_values(mf), mf->tnl_map, u64_idx);
> }
>
> -#define MINIFLOW_IN_MAP(MF, U64_IDX) \
> - (OVS_LIKELY(U64_IDX >= FLOW_TNL_U64S) \
> - ? (MF)->pkt_map & (UINT64_C(1) << ((U64_IDX) - FLOW_TNL_U64S)) \
> - : (MF)->tnl_map & (UINT64_C(1) << (U64_IDX)))
> +static inline bool
> +miniflow_in_map(const struct miniflow *mf, size_t u64_idx)
> +{
> + return (OVS_LIKELY(u64_idx >= FLOW_TNL_U64S)
> + ? mf->pkt_map & (UINT64_C(1) << (u64_idx - FLOW_TNL_U64S))
> + : mf->tnl_map & (UINT64_C(1) << u64_idx)) != 0;
> +
> +}
>
> /* Get the value of 'FIELD' of an up to 8 byte wide integer type 'TYPE' of
> * a miniflow. */
> #define MINIFLOW_GET_TYPE(MF, TYPE, OFS) \
> - (MINIFLOW_IN_MAP(MF, (OFS) / sizeof(uint64_t)) \
> + (miniflow_in_map(MF, (OFS) / sizeof(uint64_t)) \
> ? ((OVS_FORCE const TYPE *)miniflow_get__(MF, (OFS) / sizeof(uint64_t))) \
> [(OFS) % sizeof(uint64_t) / sizeof(TYPE)] \
> : 0)
> @@ -696,7 +700,7 @@ minimask_is_catchall(const struct minimask *mask)
> static inline uint64_t miniflow_get(const struct miniflow *flow,
> unsigned int u64_ofs)
> {
> - return MINIFLOW_IN_MAP(flow, u64_ofs)
> + return miniflow_in_map(flow, u64_ofs)
> ? *miniflow_get__(flow, u64_ofs) : 0;
> }
>
> --
> 2.1.3
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
More information about the dev
mailing list