On Thu, 25 Apr 2024 10:11:55 +0800, Jason Wang <jasowang@xxxxxxxxxx> wrote: > On Wed, Apr 24, 2024 at 4:17 PM Xuan Zhuo <xuanzhuo@xxxxxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxxxxx> > > --- > > 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 > > >