On Thu, Dec 16, 2021 at 11:12 AM Wenliang Wang <wangwenliang.1995@xxxxxxxxxxxxx> wrote: > > We found the stat of rx drops for small pkts does not increment when > build_skb fail, it's not coherent with other mode's rx drops stat. > > Signed-off-by: Wenliang Wang <wangwenliang.1995@xxxxxxxxxxxxx> Acked-by: Jason Wang <jasowang@xxxxxxxxxx> > --- > drivers/net/virtio_net.c | 9 +++------ > 1 file changed, 3 insertions(+), 6 deletions(-) > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > index 55db6a336f7e..b107835242ad 100644 > --- a/drivers/net/virtio_net.c > +++ b/drivers/net/virtio_net.c > @@ -733,7 +733,7 @@ static struct sk_buff *receive_small(struct net_device *dev, > pr_debug("%s: rx error: len %u exceeds max size %d\n", > dev->name, len, GOOD_PACKET_LEN); > dev->stats.rx_length_errors++; > - goto err_len; > + goto err; > } > > if (likely(!vi->xdp_enabled)) { > @@ -825,10 +825,8 @@ static struct sk_buff *receive_small(struct net_device *dev, > > skip_xdp: > skb = build_skb(buf, buflen); > - if (!skb) { > - put_page(page); > + if (!skb) > goto err; > - } > skb_reserve(skb, headroom - delta); > skb_put(skb, len); > if (!xdp_prog) { > @@ -839,13 +837,12 @@ static struct sk_buff *receive_small(struct net_device *dev, > if (metasize) > skb_metadata_set(skb, metasize); > > -err: > return skb; > > err_xdp: > rcu_read_unlock(); > stats->xdp_drops++; > -err_len: > +err: > stats->drops++; > put_page(page); > xdp_xmit: > -- > 2.30.2 > _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization