Message ID | 20240424081636.124029-3-xuanzhuo@linux.alibaba.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | virtio_net: rx enable premapped mode by default | expand |
On Wed, Apr 24, 2024 at 4:17 PM Xuan Zhuo <xuanzhuo@linux.alibaba.com> wrote: > > The virtio-net big mode did not enable premapped mode, > so we did not need to check the unmap. And the subsequent > commit will remove the failover code for failing enable > premapped for merge and small mode. So we need to remove > the checking do_dma code in the big mode path. > > Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com> > --- > drivers/net/virtio_net.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > index c22d1118a133..16d84c95779c 100644 > --- a/drivers/net/virtio_net.c > +++ b/drivers/net/virtio_net.c > @@ -820,7 +820,7 @@ static void virtnet_rq_unmap_free_buf(struct virtqueue *vq, void *buf) > > rq = &vi->rq[i]; > > - if (rq->do_dma) > + if (!vi->big_packets || vi->mergeable_rx_bufs) This seems to be equivalent to if (!vi->big_packets) > virtnet_rq_unmap(rq, buf, 0); > > virtnet_rq_free_buf(vi, rq, buf); > @@ -2128,7 +2128,7 @@ static int virtnet_receive(struct receive_queue *rq, int budget, > } > } else { > while (packets < budget && > - (buf = virtnet_rq_get_buf(rq, &len, NULL)) != NULL) { > + (buf = virtqueue_get_buf(rq->vq, &len)) != NULL) { > receive_buf(vi, rq, buf, len, NULL, xdp_xmit, &stats); > packets++; > } Other part looks good. Thanks > -- > 2.32.0.3.g01195cf9f >
On Thu, 25 Apr 2024 10:11:55 +0800, Jason Wang <jasowang@redhat.com> wrote: > On Wed, Apr 24, 2024 at 4:17 PM Xuan Zhuo <xuanzhuo@linux.alibaba.com> wrote: > > > > The virtio-net big mode did not enable premapped mode, > > so we did not need to check the unmap. And the subsequent > > commit will remove the failover code for failing enable > > premapped for merge and small mode. So we need to remove > > the checking do_dma code in the big mode path. > > > > Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com> > > --- > > drivers/net/virtio_net.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > > index c22d1118a133..16d84c95779c 100644 > > --- a/drivers/net/virtio_net.c > > +++ b/drivers/net/virtio_net.c > > @@ -820,7 +820,7 @@ static void virtnet_rq_unmap_free_buf(struct virtqueue *vq, void *buf) > > > > rq = &vi->rq[i]; > > > > - if (rq->do_dma) > > + if (!vi->big_packets || vi->mergeable_rx_bufs) > > This seems to be equivalent to > > if (!vi->big_packets) If VIRTIO_NET_F_MRG_RXBUF and guest_gso are coexisting, big_packets and mergeable_rx_bufs are all true. !vi->big_packets only means the small. Did I miss something? Thanks. > > > > virtnet_rq_unmap(rq, buf, 0); > > > > virtnet_rq_free_buf(vi, rq, buf); > > @@ -2128,7 +2128,7 @@ static int virtnet_receive(struct receive_queue *rq, int budget, > > } > > } else { > > while (packets < budget && > > - (buf = virtnet_rq_get_buf(rq, &len, NULL)) != NULL) { > > + (buf = virtqueue_get_buf(rq->vq, &len)) != NULL) { > > receive_buf(vi, rq, buf, len, NULL, xdp_xmit, &stats); > > packets++; > > } > > Other part looks good. > > Thanks > > > -- > > 2.32.0.3.g01195cf9f > > >
On Thu, Apr 25, 2024 at 10:37 AM Xuan Zhuo <xuanzhuo@linux.alibaba.com> wrote: > > On Thu, 25 Apr 2024 10:11:55 +0800, Jason Wang <jasowang@redhat.com> wrote: > > On Wed, Apr 24, 2024 at 4:17 PM Xuan Zhuo <xuanzhuo@linux.alibaba.com> wrote: > > > > > > The virtio-net big mode did not enable premapped mode, > > > so we did not need to check the unmap. And the subsequent > > > commit will remove the failover code for failing enable > > > premapped for merge and small mode. So we need to remove > > > the checking do_dma code in the big mode path. > > > > > > Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com> > > > --- > > > drivers/net/virtio_net.c | 4 ++-- > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > > > index c22d1118a133..16d84c95779c 100644 > > > --- a/drivers/net/virtio_net.c > > > +++ b/drivers/net/virtio_net.c > > > @@ -820,7 +820,7 @@ static void virtnet_rq_unmap_free_buf(struct virtqueue *vq, void *buf) > > > > > > rq = &vi->rq[i]; > > > > > > - if (rq->do_dma) > > > + if (!vi->big_packets || vi->mergeable_rx_bufs) > > > > This seems to be equivalent to > > > > if (!vi->big_packets) > > > If VIRTIO_NET_F_MRG_RXBUF and guest_gso are coexisting, > big_packets and mergeable_rx_bufs are all true. > !vi->big_packets only means the small. > > Did I miss something? Nope, you are right. The big_packets are kind of misleading as it doesn't mean big mode. Acked-by: Jason Wang <jasowang@redhat.com> Thanks > > Thanks. > > > > > > > > > virtnet_rq_unmap(rq, buf, 0); > > > > > > virtnet_rq_free_buf(vi, rq, buf); > > > @@ -2128,7 +2128,7 @@ static int virtnet_receive(struct receive_queue *rq, int budget, > > > } > > > } else { > > > while (packets < budget && > > > - (buf = virtnet_rq_get_buf(rq, &len, NULL)) != NULL) { > > > + (buf = virtqueue_get_buf(rq->vq, &len)) != NULL) { > > > receive_buf(vi, rq, buf, len, NULL, xdp_xmit, &stats); > > > packets++; > > > } > > > > Other part looks good. > > > > Thanks > > > > > -- > > > 2.32.0.3.g01195cf9f > > > > > >
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index c22d1118a133..16d84c95779c 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -820,7 +820,7 @@ static void virtnet_rq_unmap_free_buf(struct virtqueue *vq, void *buf) rq = &vi->rq[i]; - if (rq->do_dma) + if (!vi->big_packets || vi->mergeable_rx_bufs) virtnet_rq_unmap(rq, buf, 0); virtnet_rq_free_buf(vi, rq, buf); @@ -2128,7 +2128,7 @@ static int virtnet_receive(struct receive_queue *rq, int budget, } } else { while (packets < budget && - (buf = virtnet_rq_get_buf(rq, &len, NULL)) != NULL) { + (buf = virtqueue_get_buf(rq->vq, &len)) != NULL) { receive_buf(vi, rq, buf, len, NULL, xdp_xmit, &stats); packets++; }
The virtio-net big mode did not enable premapped mode, so we did not need to check the unmap. And the subsequent commit will remove the failover code for failing enable premapped for merge and small mode. So we need to remove the checking do_dma code in the big mode path. Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com> --- drivers/net/virtio_net.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)