From d1aa0b94d842f99900217e4afad9ea237c93b019 Mon Sep 17 00:00:00 2001 From: Andy Zhou Date: Mon, 25 Jan 2016 18:48:19 -0800 Subject: [PATCH] dpif-netdev: drop swapping 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 Acked-by: Daniele Di Proietto --- lib/dpif-netdev.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 9d399a0cf..661d2b0a2 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -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 @@ -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; } } -- 2.39.2