X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fsvm%2Fsvm_fifo.c;fp=src%2Fsvm%2Fsvm_fifo.c;h=7197e386dbdbbc0751fff5ddcbb984fe143c566a;hb=95bbbe479eb5179fa61dd691d8d7d726fb71a885;hp=2150694ef46de97488d12abe6315b72df84d9732;hpb=017a676654d9cfd9868374b92ff8ac2741ee05f2;p=vpp.git diff --git a/src/svm/svm_fifo.c b/src/svm/svm_fifo.c index 2150694ef46..7197e386dbd 100644 --- a/src/svm/svm_fifo.c +++ b/src/svm/svm_fifo.c @@ -1010,25 +1010,26 @@ svm_fifo_enqueue_segments (svm_fifo_t * f, const svm_fifo_seg_t segs[], } else { - len = clib_min (free_count, len); + u32 n_left = clib_min (free_count, len); - if (f_pos_gt (tail + len, f_chunk_end (f_end_cptr (f)))) + if (f_pos_gt (tail + n_left, f_chunk_end (f_end_cptr (f)))) { - if (PREDICT_FALSE (f_try_chunk_alloc (f, head, tail, len))) + if (PREDICT_FALSE (f_try_chunk_alloc (f, head, tail, n_left))) { - len = f_chunk_end (f_end_cptr (f)) - tail; - if (!len) + n_left = f_chunk_end (f_end_cptr (f)) - tail; + if (!n_left) return SVM_FIFO_EGROW; } } + len = n_left; i = 0; - while (len) + while (n_left) { - u32 to_copy = clib_min (segs[i].len, len); + u32 to_copy = clib_min (segs[i].len, n_left); svm_fifo_copy_to_chunk (f, f_tail_cptr (f), tail, segs[i].data, to_copy, &f->shr->tail_chunk); - len -= to_copy; + n_left -= to_copy; tail += to_copy; i++; }