[ovs-dev] [PATCH 03/12] flow: Skip invoking expensive count_1bits() with zero input.

Bhanuprakash Bodireddy bhanuprakash.bodireddy at intel.com
Fri Oct 7 16:17:33 UTC 2016


This patch checks if trash is non-zero and only then resets the flowmap
bit and increment the pointer by set bits as found in trash.

Signed-off-by: Bhanuprakash Bodireddy <bhanuprakash.bodireddy at intel.com>
Signed-off-by: Antonio Fischetti <antonio.fischetti at intel.com>
---
 lib/flow.h | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/lib/flow.h b/lib/flow.h
index 4eb19ae..8cfd243 100644
--- a/lib/flow.h
+++ b/lib/flow.h
@@ -609,11 +609,13 @@ mf_get_next_in_map(struct mf_for_each_in_map_aux *aux,
          * corresponding data chunks should be skipped accordingly. */
         map_t trash = *fmap & (rm1bit - 1);
 
-        *fmap -= trash;
+        if (trash) {
+            *fmap -= trash;
         /* count_1bits() is fast for systems where speed matters (e.g.,
          * DPDK), so we don't try avoid using it.
          * Advance 'aux->values' to point to the value for 'rm1bit'. */
-        aux->values += count_1bits(trash);
+            aux->values += count_1bits(trash);
+        }
 
         *value = *aux->values;
     } else {
-- 
2.4.11




More information about the dev mailing list