On Tue, Sep 25, 2012 at 02:15:07PM +0800, Jason Wang wrote:
> On 09/25/2012 07:05 AM, Michael S. Tsirkin wrote:
> >There is no out sg for TX, so used buf length for tx
> >should always be 0.
> 
> According to the spec, the len is "Total length of the descriptor
> chain which was used (written to)".

Right. And with TX no bytes are written at all.

> So I wonder if we need to pass
> the len here, it looks useful for guest how many bytes were sent by
> the driver (consider qemu may truncate the packet).

I thik qemu may not truncate packet.

> >Signed-off-by: Michael S. Tsirkin<m...@redhat.com>
> >---
> >  hw/virtio-net.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> >diff --git a/hw/virtio-net.c b/hw/virtio-net.c
> >index 2381ee5..d9a9f8f 100644
> >--- a/hw/virtio-net.c
> >+++ b/hw/virtio-net.c
> >@@ -688,7 +688,7 @@ static void virtio_net_tx_complete(NetClientState *nc, 
> >ssize_t len)
> >  {
> >      VirtIONet *n = DO_UPCAST(NICState, nc, nc)->opaque;
> >
> >-    virtqueue_push(n->tx_vq,&n->async_tx.elem, n->async_tx.len);
> >+    virtqueue_push(n->tx_vq,&n->async_tx.elem, 0);
> >      virtio_notify(&n->vdev, n->tx_vq);
> >
> >      n->async_tx.elem.out_num = n->async_tx.len = 0;
> >@@ -754,7 +754,7 @@ static int32_t virtio_net_flush_tx(VirtIONet *n, 
> >VirtQueue *vq)
> >
> >          len += ret;
> >
> >-        virtqueue_push(vq,&elem, len);
> >+        virtqueue_push(vq,&elem, 0);
> >          virtio_notify(&n->vdev, vq);
> >
> >          if (++num_packets>= n->tx_burst) {

Reply via email to