? 2016/10/10 16:03, Yuanhan Liu ??: > On Sun, Oct 09, 2016 at 06:46:44PM +0800, linhaifeng wrote: >> ? 2016/8/23 16:10, Yuanhan Liu ??: >>> The basic idea of Tx zero copy is, instead of copying data from the >>> desc buf, here we let the mbuf reference the desc buf addr directly. >> >> Is there problem when push vlan to the mbuf which reference the desc buf >> addr directly? > > Yes, you can't do that when zero copy is enabled, due to following code > piece: > > + if (unlikely(dev->dequeue_zero_copy && (hpa = > gpa_to_hpa(dev, > + desc->addr + desc_offset, > cpy_len)))) { > + cur->data_len = cpy_len; > ==> + cur->data_off = 0; > + cur->buf_addr = (void *)(uintptr_t)desc_addr; > + cur->buf_physaddr = hpa; > > The marked line basically makes the mbuf has no headroom to use. > > --yliu > >> We know if guest use virtio_net(kernel) maybe skb has no headroom. > > . >
It ok to set data_off zero. But we also can use 128 bytes headromm when guest use virtio_net PMD but not for virtio_net kernel driver. I think it's better to add headroom size to desc and kernel dirver support set headroom size.