Fix dpdk_validate_rte-mbuf for chained buffers
[vpp.git] / vnet / vnet / devices / dpdk / device.c
index 242ad79..800a06c 100644 (file)
@@ -160,12 +160,13 @@ dpdk_validate_rte_mbuf (vlib_main_t * vm, vlib_buffer_t * b,
      rte_mbuf header */
   if (PREDICT_FALSE ((b->flags & VNET_BUFFER_RTE_MBUF_VALID) == 0))
     {
-      last_mb = mb = rte_mbuf_from_vlib_buffer (b);
+      vlib_buffer_t *b2 = b;
+      last_mb = mb = rte_mbuf_from_vlib_buffer (b2);
       rte_pktmbuf_reset (mb);
-      while (maybe_multiseg && (b->flags & VLIB_BUFFER_NEXT_PRESENT))
+      while (maybe_multiseg && (b2->flags & VLIB_BUFFER_NEXT_PRESENT))
        {
-         b = vlib_get_buffer (vm, b->next_buffer);
-         mb = rte_mbuf_from_vlib_buffer (b);
+         b2 = vlib_get_buffer (vm, b2->next_buffer);
+         mb = rte_mbuf_from_vlib_buffer (b2);
          last_mb->next = mb;
          last_mb = mb;
          rte_pktmbuf_reset (mb);
@@ -323,7 +324,7 @@ dpdk_buffer_recycle (vlib_main_t * vm, vlib_node_runtime_t * node,
                     vlib_buffer_t * b, u32 bi, struct rte_mbuf **mbp)
 {
   dpdk_main_t *dm = &dpdk_main;
-  u32 my_cpu = my_cpu = vm->cpu_index;
+  u32 my_cpu = vm->cpu_index;
   struct rte_mbuf *mb_new;
 
   if (PREDICT_FALSE (b->flags & VLIB_BUFFER_RECYCLE) == 0)