desc_data[i] = r->shm + offset;
if (len > max_len)
max_len = len;
- xor_status |= desc_status[i].as_u8;
n_rx_bytes += len;
}
+ xor_status |= desc_status[i].as_u8;
}
ptd->max_desc_len = max_len;
u32 n_buffers = 0;
u32 n_left = ptd->n_packets;
u32 packet_len;
- int i = 0;
+ int i = -1;
/* construct copy and packet vector out of ring slots */
while (n_left)
dst_off = start_offset;
next_slot:
+ i++; /* next descriptor */
n_bytes_left = desc_len[i];
packet_len += n_bytes_left;
}
while (PREDICT_FALSE (n_bytes_left));
- /* next descriptor */
- i++;
-
if (desc_status[i].next)
{
src_off = 0;
vlib_get_buffers (vm, ptd->buffers, buffer_ptrs, n_buffers);
- for (i = 0; i < n_pkts - 8; i++)
+ for (i = 0; i + 8 < n_pkts; i++)
{
clib_prefetch_load (desc_data[i + 8]);
clib_prefetch_store (buffer_ptrs[i + 8]->data);
u32 n_pkts = vec_len (ptd->copy_ops);
co = ptd->copy_ops;
- for (i = 0; i < n_pkts - 8; i++)
+ for (i = 0; i + 8 < n_pkts; i++)
{
clib_prefetch_load (co[i + 8].data);
b = vlib_get_buffer (vm, ptd->buffers[co[i].buffer_vec_index]);