rdma: fix bug related to ring buffer 33/25233/2
authorElias Rudberg <elias.rudberg@bahnhof.net>
Tue, 18 Feb 2020 11:12:25 +0000 (12:12 +0100)
committerDave Barach <openvpp@barachs.net>
Tue, 18 Feb 2020 13:26:10 +0000 (13:26 +0000)
Fix a bug that caused some input packets to be dropped due to errors of
the type 'ip4 length > l2 length'. The change is related to the second
call to the rdma_device_input_bufs() function that happens when the end
of the ring buffer is reached.

Type: fix
Change-Id: I332d69ab22242b3443a0baca6e5dd86349a54765
Signed-off-by: Elias Rudberg <elias.rudberg@bahnhof.net>
src/plugins/rdma/input.c

index 30fae83..95909f4 100644 (file)
@@ -318,8 +318,8 @@ rdma_device_input_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
                            &bt);
   if (n_tail < n_rx_packets)
     n_rx_bytes +=
-      rdma_device_input_bufs (vm, rd, &to_next[n_tail], &rxq->bufs[0], wc,
-                             n_rx_packets - n_tail, &bt);
+      rdma_device_input_bufs (vm, rd, &to_next[n_tail], &rxq->bufs[0],
+                             &wc[n_tail], n_rx_packets - n_tail, &bt);
   rdma_device_input_ethernet (vm, node, rd, next_index);
 
   vlib_put_next_frame (vm, node, next_index, n_left_to_next - n_rx_packets);