svm: fix fifo growth on dequeue with drop 68/21068/3
authorFlorin Coras <fcoras@cisco.com>
Mon, 5 Aug 2019 16:39:47 +0000 (09:39 -0700)
committerFlorin Coras <fcoras@cisco.com>
Mon, 5 Aug 2019 17:07:09 +0000 (10:07 -0700)
Type:fix

Change-Id: I39c339abf1b51105ef1bcf3d6f0f4f6ded54f32d
Signed-off-by: Florin Coras <fcoras@cisco.com>
src/svm/svm_fifo.c

index 56f53a3..b6f0df7 100644 (file)
@@ -967,6 +967,9 @@ svm_fifo_dequeue_drop (svm_fifo_t * f, u32 len)
   if (!svm_fifo_chunk_includes_pos (f->head_chunk, head))
     f->head_chunk = svm_fifo_find_chunk (f, head);
 
+  if (PREDICT_FALSE (f->flags & SVM_FIFO_F_GROW))
+    svm_fifo_try_grow (f, head);
+
   /* store-rel: consumer owned index (paired with load-acq in producer) */
   clib_atomic_store_rel_n (&f->head, head);
 
@@ -982,6 +985,9 @@ svm_fifo_dequeue_drop_all (svm_fifo_t * f)
   if (!svm_fifo_chunk_includes_pos (f->head_chunk, tail))
     f->head_chunk = svm_fifo_find_chunk (f, tail);
 
+  if (PREDICT_FALSE (f->flags & SVM_FIFO_F_GROW))
+    svm_fifo_try_grow (f, tail);
+
   /* store-rel: consumer owned index (paired with load-acq in producer) */
   clib_atomic_store_rel_n (&f->head, tail);
 }