On Wed, Feb 08, 2017 at 12:17:56AM -0800, Darrell Ball wrote: > Signed-off-by: Darrell Ball <dlu...@gmail.com>
I miss a comment to why this patch is needed. Thanks Flavio > --- > lib/conntrack.c | 49 ++++++++++--------------------------------------- > 1 file changed, 10 insertions(+), 39 deletions(-) > > diff --git a/lib/conntrack.c b/lib/conntrack.c > index 0a611a2..ee515a0 100644 > --- a/lib/conntrack.c > +++ b/lib/conntrack.c > @@ -284,16 +284,8 @@ conntrack_execute(struct conntrack *ct, struct > dp_packet_batch *pkt_batch, > enum { KEY_ARRAY_SIZE = NETDEV_MAX_BURST }; > #endif > struct conn_lookup_ctx ctxs[KEY_ARRAY_SIZE]; > - int8_t bucket_list[CONNTRACK_BUCKETS]; > - struct { > - unsigned bucket; > - unsigned long maps; > - } arr[KEY_ARRAY_SIZE]; > long long now = time_msec(); > size_t i = 0; > - uint8_t arrcnt = 0; > - > - BUILD_ASSERT_DECL(sizeof arr[0].maps * CHAR_BIT >= NETDEV_MAX_BURST); > > if (helper) { > static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(5, 5); > @@ -302,51 +294,30 @@ conntrack_execute(struct conntrack *ct, struct > dp_packet_batch *pkt_batch, > /* Continue without the helper */ > } > > - memset(bucket_list, INT8_C(-1), sizeof bucket_list); > for (i = 0; i < cnt; i++) { > - unsigned bucket; > - > if (!conn_key_extract(ct, pkts[i], dl_type, &ctxs[i], zone)) { > write_ct_md(pkts[i], CS_INVALID, zone, 0, OVS_U128_ZERO); > continue; > } > > - bucket = hash_to_bucket(ctxs[i].hash); > - if (bucket_list[bucket] == INT8_C(-1)) { > - bucket_list[bucket] = arrcnt; > - > - arr[arrcnt].maps = 0; > - ULLONG_SET1(arr[arrcnt].maps, i); > - arr[arrcnt++].bucket = bucket; > - } else { > - ULLONG_SET1(arr[bucket_list[bucket]].maps, i); > - } > - } > - > - for (i = 0; i < arrcnt; i++) { > - struct conntrack_bucket *ctb = &ct->buckets[arr[i].bucket]; > - size_t j; > + unsigned bucket = hash_to_bucket(ctxs[i].hash); > + struct conntrack_bucket *ctb = &ct->buckets[bucket]; > > ct_lock_lock(&ctb->lock); > + conn_key_lookup(ctb, &ctxs[i], now); > > - ULLONG_FOR_EACH_1(j, arr[i].maps) { > - struct conn *conn; > - > - conn_key_lookup(ctb, &ctxs[j], now); > + struct conn *conn = process_one(ct, pkts[i], &ctxs[i], zone, > + commit, now); > > - conn = process_one(ct, pkts[j], &ctxs[j], zone, commit, now); > - > - if (conn && setmark) { > - set_mark(pkts[j], conn, setmark[0], setmark[1]); > - } > + if (conn && setmark) { > + set_mark(pkts[i], conn, setmark[0], setmark[1]); > + } > > - if (conn && setlabel) { > - set_label(pkts[j], conn, &setlabel[0], &setlabel[1]); > - } > + if (conn && setlabel) { > + set_label(pkts[i], conn, &setlabel[0], &setlabel[1]); > } > ct_lock_unlock(&ctb->lock); > } > - > return 0; > } > > -- > 1.9.1 > > _______________________________________________ > dev mailing list > d...@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev