Message ID | 18bf1e1e31f0403aabaae66a32a04d67a9bbe7da.1348527749.git.mst@redhat.com |
---|---|
State | New |
Headers | show |
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)". 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). > Signed-off-by: Michael S. Tsirkin<mst@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) {
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<mst@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) {
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) {
There is no out sg for TX, so used buf length for tx should always be 0. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- hw/virtio-net.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)