rte_memcpy((void *)((uintptr_t)(buf_addr)),
rte_pktmbuf_mtod_offset(m, void *, mbuf_offset),
cpy_len);
+ vhost_log_cache_write_iova(dev, vq, buf_iova, cpy_len);
+ PRINT_PACKET(dev, (uintptr_t)(buf_addr), cpy_len, 0);
} else {
rte_memcpy(rte_pktmbuf_mtod_offset(m, void *, mbuf_offset),
(void *)((uintptr_t)(buf_addr)),
cpy_len);
}
- vhost_log_cache_write_iova(dev, vq, buf_iova, cpy_len);
- PRINT_PACKET(dev, (uintptr_t)(buf_addr), cpy_len, 0);
} else {
if (to_desc) {
batch_copy[vq->batch_copy_nb_elems].dst =
(void *)((uintptr_t)(buf_addr));
batch_copy[vq->batch_copy_nb_elems].src =
rte_pktmbuf_mtod_offset(m, void *, mbuf_offset);
+ batch_copy[vq->batch_copy_nb_elems].log_addr = buf_iova;
+ batch_copy[vq->batch_copy_nb_elems].len = cpy_len;
} else {
batch_copy[vq->batch_copy_nb_elems].dst =
rte_pktmbuf_mtod_offset(m, void *, mbuf_offset);
batch_copy[vq->batch_copy_nb_elems].src =
(void *)((uintptr_t)(buf_addr));
}
- batch_copy[vq->batch_copy_nb_elems].log_addr = buf_iova;
- batch_copy[vq->batch_copy_nb_elems].len = cpy_len;
vq->batch_copy_nb_elems++;
}
}
if (async_fill_seg(dev, vq, cur, mbuf_offset,
buf_iova + buf_offset, cpy_len, false) < 0)
goto error;
+ } else if (likely(hdr && cur == m)) {
+ rte_memcpy(rte_pktmbuf_mtod_offset(cur, void *, mbuf_offset),
+ (void *)((uintptr_t)(buf_addr + buf_offset)),
+ cpy_len);
} else {
- if (hdr && cur == m) {
- rte_memcpy(rte_pktmbuf_mtod_offset(cur, void *, mbuf_offset),
- (void *)((uintptr_t)(buf_addr + buf_offset)),
- cpy_len);
- vhost_log_cache_write_iova(dev, vq, buf_iova + buf_offset, cpy_len);
- PRINT_PACKET(dev, (uintptr_t)(buf_addr + buf_offset), cpy_len, 0);
- } else {
- sync_fill_seg(dev, vq, cur, mbuf_offset,
- buf_addr + buf_offset,
- buf_iova + buf_offset, cpy_len, false);
- }
+ sync_fill_seg(dev, vq, cur, mbuf_offset,
+ buf_addr + buf_offset,
+ buf_iova + buf_offset, cpy_len, false);
}
mbuf_avail -= cpy_len;
async_iter_finalize(async);
if (hdr)
pkts_info[slot_idx].nethdr = *hdr;
- } else {
- if (hdr)
- vhost_dequeue_offload(dev, hdr, m, legacy_ol_flags);
+ } else if (hdr) {
+ vhost_dequeue_offload(dev, hdr, m, legacy_ol_flags);
}
return 0;