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.