[ovs-dev] [PATCH v4 2/2] dpif-netdev: Exact match cache
Jarno Rajahalme
jrajahalme at nicira.com
Wed Aug 20 14:19:59 UTC 2014
> On Aug 19, 2014, at 5:11 PM, Daniele Di Proietto <ddiproietto at vmware.com> wrote:
(Snip)
> +static inline size_t
> +emc_processing(struct dp_netdev *dp, struct emc_cache *flow_cache,
> + struct dpif_packet **packets, size_t cnt,
> + struct pkt_metadata *md, struct netdev_flow_key *keys)
> +{
> + struct packet_batch batches[4];
> size_t n_batches, i;
> - bool any_miss;
> + size_t notfound_cnt = 0;
>
> + n_batches = 0;
> for (i = 0; i < cnt; i++) {
> + struct netdev_flow_key key;
> + struct dp_netdev_flow *flow;
> + uint32_t hash;
> +
> if (OVS_UNLIKELY(ofpbuf_size(&packets[i]->ofpbuf) < ETH_HEADER_LEN)) {
> dpif_packet_delete(packets[i]);
> - mfs[i] = NULL;
> continue;
> }
>
> - miniflow_initialize(&keys[i].flow, keys[i].buf);
> - miniflow_extract(&packets[i]->ofpbuf, md, &keys[i].flow);
> - mfs[i] = &keys[i].flow;
> + miniflow_initialize(&key.flow, key.buf);
> + miniflow_extract(&packets[i]->ofpbuf, md, &key.flow);
> +
> + hash = dpif_packet_get_dp_hash(packets[i]);
> + if (OVS_UNLIKELY(!hash)) {
> + hash = miniflow_hash_5tuple(&key.flow, 0);
> + dpif_packet_set_dp_hash(packets[i], hash);
> + }
> +
> + flow = emc_lookup(flow_cache, &key.flow, hash);
> + if (!flow || !dp_netdev_queue_batches(packets[i], md, flow, &key.flow,
> + batches, &n_batches, ARRAY_SIZE(batches))) {
> + if (i != notfound_cnt)
> + dpif_packet_swap(&packets[i], &packets[notfound_cnt]);
> +
Missing braces here.
More information about the dev
mailing list