? 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.