• M
    vhost: vhost TX zero-copy support · bab632d6
    Michael S. Tsirkin 提交于
    >From: Shirley Ma <mashirle@us.ibm.com>
    
    This adds experimental zero copy support in vhost-net,
    disabled by default. To enable, set
    experimental_zcopytx module option to 1.
    
    This patch maintains the outstanding userspace buffers in the
    sequence it is delivered to vhost. The outstanding userspace buffers
    will be marked as done once the lower device buffers DMA has finished.
    This is monitored through last reference of kfree_skb callback. Two
    buffer indices are used for this purpose.
    
    The vhost-net device passes the userspace buffers info to lower device
    skb through message control. DMA done status check and guest
    notification are handled by handle_tx: in the worst case is all buffers
    in the vq are in pending/done status, so we need to notify guest to
    release DMA done buffers first before we get any new buffers from the
    vq.
    
    One known problem is that if the guest stops submitting
    buffers, buffers might never get used until some
    further action, e.g. device reset. This does not
    seem to affect linux guests.
    Signed-off-by: NShirley <xma@us.ibm.com>
    Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    bab632d6
vhost.c 40.2 KB