Thanks Daniele!

Acked-by: Jarno Rajahalme <jrajaha...@nicira.com>

I’ll push this on Monday, have a nice weekend :-)

  Jarno

On Sep 19, 2014, at 4:30 PM, Daniele Di Proietto <ddiproie...@vmware.com> wrote:

> Signed-off-by: Daniele Di Proietto <ddiproie...@vmware.com>
> Signed-off-by: Jarno Rajahalme <jrajaha...@nicira.com>
> ---
> This is based on a previous patch by Jarno
> ---
> lib/dpif-netdev.c |  9 +--------
> lib/flow.h        | 13 +++++++++++++
> 2 files changed, 14 insertions(+), 8 deletions(-)
> 
> diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
> index 90fe01c..20d2cd2 100644
> --- a/lib/dpif-netdev.c
> +++ b/lib/dpif-netdev.c
> @@ -90,16 +90,9 @@ static struct vlog_rate_limit upcall_rl = 
> VLOG_RATE_LIMIT_INIT(600, 600);
> 
> /* Stores a miniflow with inline values */
> 
> -/* There are fields in the flow structure that we never use. Therefore we can
> - * save a few words of memory */
> -#define NETDEV_KEY_BUF_SIZE_U32 (FLOW_U32S                 \
> -                                 - MINI_N_INLINE           \
> -                                 - FLOW_U32_SIZE(regs)     \
> -                                 - FLOW_U32_SIZE(metadata) \
> -                                )
> struct netdev_flow_key {
>     struct miniflow flow;
> -    uint32_t buf[NETDEV_KEY_BUF_SIZE_U32];
> +    uint32_t buf[FLOW_MAX_PACKET_U32S - MINI_N_INLINE];
> };
> 
> /* Exact match cache for frequently used flows
> diff --git a/lib/flow.h b/lib/flow.h
> index 2764916..b4f417c 100644
> --- a/lib/flow.h
> +++ b/lib/flow.h
> @@ -138,6 +138,19 @@ BUILD_ASSERT_DECL(sizeof(struct flow) % 4 == 0);
> 
> #define FLOW_U32S (sizeof(struct flow) / 4)
> 
> +/* Some flow fields are mutually exclusive or only appear within the flow
> + * pipeline.  IPv6 headers are bigger than IPv4 and MPLS, and IPv6 ND packets
> + * are bigger than TCP,UDP and IGMP packets. */
> +#define FLOW_MAX_PACKET_U32S (FLOW_U32S                                   \
> +    /* Unused in datapath */  - FLOW_U32_SIZE(regs)                       \
> +                              - FLOW_U32_SIZE(metadata)                   \
> +    /* L2.5/3 */              - FLOW_U32_SIZE(nw_src)                     \
> +                              - FLOW_U32_SIZE(nw_dst)                     \
> +                              - FLOW_U32_SIZE(mpls_lse)                   \
> +    /* L4 */                  - FLOW_U32_SIZE(tcp_flags) /* incl. pad. */ \
> +                              - FLOW_U32_SIZE(igmp_group_ip4)             \
> +                             )
> +
> /* Remember to update FLOW_WC_SEQ when changing 'struct flow'. */
> BUILD_ASSERT_DECL(offsetof(struct flow, dp_hash) + sizeof(uint32_t)
>                   == sizeof(struct flow_tnl) + 176
> -- 
> 2.1.0.rc1
> 

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to