Skip to content

Commit

Permalink
dpif-netdev: drop swapping
Browse files Browse the repository at this point in the history
emc_processing() moves all the missed packets towards the beginning of
packet array; matched packets are queued up into flow queues. Since the
remaining of the packet array is not used anymore, don't bother swap
packet pointers to save cycles and simplify logic.

Signed-off-by: Andy Zhou <[email protected]>
Acked-by: Daniele Di Proietto <[email protected]>
  • Loading branch information
azhou-nicira committed Jan 28, 2016
1 parent 3d88a62 commit d1aa0b9
Showing 1 changed file with 3 additions and 12 deletions.
15 changes: 3 additions & 12 deletions lib/dpif-netdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -3285,14 +3285,6 @@ dp_netdev_queue_batches(struct dp_packet *pkt,
packet_batch_update(batch, pkt, mf);
}

static inline void
dp_packet_swap(struct dp_packet **a, struct dp_packet **b)
{
struct dp_packet *tmp = *a;
*a = *b;
*b = tmp;
}

/* Try to process all ('cnt') the 'packets' using only the exact match cache
* 'flow_cache'. If a flow is not found for a packet 'packets[i]', the
* miniflow is copied into 'keys' and the packet pointer is moved at the
Expand Down Expand Up @@ -3333,10 +3325,9 @@ emc_processing(struct dp_netdev_pmd_thread *pmd, struct dp_packet **packets,
dp_netdev_queue_batches(packets[i], flow, &key.mf, batches,
n_batches);
} else {
if (i != n_missed) {
dp_packet_swap(&packets[i], &packets[n_missed]);
}

/* Exact match cache missed. Group missed packets together at
* the beginning of the 'packets' array. */
packets[n_missed] = packets[i];
keys[n_missed++] = key;
}
}
Expand Down

0 comments on commit d1aa0b9

Please sign in to comment.