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