[ovs-dev] [PATCH v3 05/12] dpif-netdev: Add comments to dp_netdev_input__().
Bhanuprakash Bodireddy
bhanuprakash.bodireddy at intel.com
Fri Oct 14 14:37:08 UTC 2016
Add comments in dp_netdev_input__() to explain the reason behind
clearing the flow batches before packet_batch_execute().
Signed-off-by: Bhanuprakash Bodireddy <bhanuprakash.bodireddy at intel.com>
Co-authored-by: Antonio Fischetti <antonio.fischetti at intel.com>
Signed-off-by: Antonio Fischetti <antonio.fischetti at intel.com>
Acked-by: Daniele Di Proietto <diproiettod at vmware.com>
---
lib/dpif-netdev.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index 0a4f338..95a04df 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -4182,6 +4182,15 @@ dp_netdev_input__(struct dp_netdev_pmd_thread *pmd,
fast_path_processing(pmd, packets, keys, batches, &n_batches, in_port, now);
}
+ /* All the flow batches need to be reset before any call to
+ * packet_batch_per_flow_execute() as it could potentially trigger
+ * recirculation. When a packet matching flow ‘j’ happens to be
+ * recirculated, the nested call to dp_netdev_input__() could potentially
+ * classify the packet as matching another flow - say 'k'. It could happen
+ * that in the previous call to dp_netdev_input__() that same flow 'k' had
+ * already its own batches[k] still waiting to be served. So if its
+ * ‘batch’ member is not reset, the recirculated packet would be wrongly
+ * appended to batches[k] of the 1st call to dp_netdev_input__(). */
for (i = 0; i < n_batches; i++) {
batches[i].flow->batch = NULL;
}
--
2.4.11
More information about the dev
mailing list