daqiri_bench_raw_gpudirect reports zero TX bursts when the TX packet-buffer memory region is kind: huge (or host). The per-packet fill in tx_worker() (examples/raw_gpudirect_bench.cpp) copies a host template into each buffer with cudaMemcpy(..., cudaMemcpyHostToDevice), but with those kinds the buffers are CPU hugepages, so every copy fails and the fill loop bails out. This blocks measuring a CPU / host-DMA raw-Ethernet TX baseline on the same harness.
Fix: use cudaMemcpyDefault, which infers direction under UVA — identical behavior for the existing kind: device / host_pinned (device destination) and additionally working for CPU destinations.
Repro: point a daqiri_bench_raw_* TX+RX config's TX buffer region at kind: huge and run the bench → TX = 0 (seen on IGX Thor, DPDK raw engine).
daqiri_bench_raw_gpudirectreports zero TX bursts when the TX packet-buffer memory region iskind: huge(orhost). The per-packet fill intx_worker()(examples/raw_gpudirect_bench.cpp) copies a host template into each buffer withcudaMemcpy(..., cudaMemcpyHostToDevice), but with those kinds the buffers are CPU hugepages, so every copy fails and the fill loop bails out. This blocks measuring a CPU / host-DMA raw-Ethernet TX baseline on the same harness.Fix: use
cudaMemcpyDefault, which infers direction under UVA — identical behavior for the existingkind: device/host_pinned(device destination) and additionally working for CPU destinations.Repro: point a
daqiri_bench_raw_*TX+RX config's TX buffer region atkind: hugeand run the bench → TX = 0 (seen on IGX Thor, DPDK raw engine).