Message ID | 1569777006-7435-8-git-send-email-xiangxia.m.yue@gmail.com |
---|---|
State | Changes Requested |
Delegated to: | David Miller |
Headers | show |
Series | optimize openvswitch flow looking up | expand |
On Sun, Sep 29, 2019 at 7:09 PM <xiangxia.m.yue@gmail.com> wrote: > > From: Tonghao Zhang <xiangxia.m.yue@gmail.com> > > The most case *index < ma->max, we add likely for performance. > > Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com> > --- > net/openvswitch/flow_table.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/openvswitch/flow_table.c b/net/openvswitch/flow_table.c > index c8e79c1..c21fd52 100644 > --- a/net/openvswitch/flow_table.c > +++ b/net/openvswitch/flow_table.c > @@ -526,7 +526,7 @@ static struct sw_flow *flow_lookup(struct flow_table *tbl, > struct sw_flow_mask *mask; > int i; > > - if (*index < ma->max) { > + if (likely(*index < ma->max)) { After changes from patch 5, ma->count is the limit for mask array. so why not use ma->count here. > mask = rcu_dereference_ovsl(ma->masks[*index]); > if (mask) { > flow = masked_flow_lookup(ti, key, mask, n_mask_hit); > -- > 1.8.3.1 >
On Wed, Oct 2, 2019 at 10:07 AM Pravin Shelar <pshelar@ovn.org> wrote: > > On Sun, Sep 29, 2019 at 7:09 PM <xiangxia.m.yue@gmail.com> wrote: > > > > From: Tonghao Zhang <xiangxia.m.yue@gmail.com> > > > > The most case *index < ma->max, we add likely for performance. > > > > Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com> > > --- > > net/openvswitch/flow_table.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/net/openvswitch/flow_table.c b/net/openvswitch/flow_table.c > > index c8e79c1..c21fd52 100644 > > --- a/net/openvswitch/flow_table.c > > +++ b/net/openvswitch/flow_table.c > > @@ -526,7 +526,7 @@ static struct sw_flow *flow_lookup(struct flow_table *tbl, > > struct sw_flow_mask *mask; > > int i; > > > > - if (*index < ma->max) { > > + if (likely(*index < ma->max)) { > > After changes from patch 5, ma->count is the limit for mask array. so > why not use ma->count here. because we will check the mask is valid, so use the ma->count and ma->max are ok. but i will use the ma->count in v2. > > > mask = rcu_dereference_ovsl(ma->masks[*index]); > > if (mask) { > > flow = masked_flow_lookup(ti, key, mask, n_mask_hit); > > -- > > 1.8.3.1 > >
diff --git a/net/openvswitch/flow_table.c b/net/openvswitch/flow_table.c index c8e79c1..c21fd52 100644 --- a/net/openvswitch/flow_table.c +++ b/net/openvswitch/flow_table.c @@ -526,7 +526,7 @@ static struct sw_flow *flow_lookup(struct flow_table *tbl, struct sw_flow_mask *mask; int i; - if (*index < ma->max) { + if (likely(*index < ma->max)) { mask = rcu_dereference_ovsl(ma->masks[*index]); if (mask) { flow = masked_flow_lookup(ti, key, mask, n_mask_hit);