On Wed, Mar 8, 2023 at 10:49 AM Xuan Zhuo <xuanzhuo@xxxxxxxxxxxxxxxxx> wrote: > > The purpose of this is to facilitate the subsequent addition of new > functions without introducing a separate declaration. > > Signed-off-by: Xuan Zhuo <xuanzhuo@xxxxxxxxxxxxxxxxx> Not sure such reordering is suitable for -stable. Thanks > --- > drivers/net/virtio_net.c | 92 ++++++++++++++++++++-------------------- > 1 file changed, 46 insertions(+), 46 deletions(-) > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > index fb5e68ed3ec2..8b31a04052f2 100644 > --- a/drivers/net/virtio_net.c > +++ b/drivers/net/virtio_net.c > @@ -545,6 +545,52 @@ static struct sk_buff *page_to_skb(struct virtnet_info *vi, > return skb; > } > > +static void free_old_xmit_skbs(struct send_queue *sq, bool in_napi) > +{ > + unsigned int len; > + unsigned int packets = 0; > + unsigned int bytes = 0; > + void *ptr; > + > + while ((ptr = virtqueue_get_buf(sq->vq, &len)) != NULL) { > + if (likely(!is_xdp_frame(ptr))) { > + struct sk_buff *skb = ptr; > + > + pr_debug("Sent skb %p\n", skb); > + > + bytes += skb->len; > + napi_consume_skb(skb, in_napi); > + } else { > + struct xdp_frame *frame = ptr_to_xdp(ptr); > + > + bytes += xdp_get_frame_len(frame); > + xdp_return_frame(frame); > + } > + packets++; > + } > + > + /* Avoid overhead when no packets have been processed > + * happens when called speculatively from start_xmit. > + */ > + if (!packets) > + return; > + > + u64_stats_update_begin(&sq->stats.syncp); > + sq->stats.bytes += bytes; > + sq->stats.packets += packets; > + u64_stats_update_end(&sq->stats.syncp); > +} > + > +static bool is_xdp_raw_buffer_queue(struct virtnet_info *vi, int q) > +{ > + if (q < (vi->curr_queue_pairs - vi->xdp_queue_pairs)) > + return false; > + else if (q < vi->curr_queue_pairs) > + return true; > + else > + return false; > +} > + > static int __virtnet_xdp_xmit_one(struct virtnet_info *vi, > struct send_queue *sq, > struct xdp_frame *xdpf) > @@ -1714,52 +1760,6 @@ static int virtnet_receive(struct receive_queue *rq, int budget, > return stats.packets; > } > > -static void free_old_xmit_skbs(struct send_queue *sq, bool in_napi) > -{ > - unsigned int len; > - unsigned int packets = 0; > - unsigned int bytes = 0; > - void *ptr; > - > - while ((ptr = virtqueue_get_buf(sq->vq, &len)) != NULL) { > - if (likely(!is_xdp_frame(ptr))) { > - struct sk_buff *skb = ptr; > - > - pr_debug("Sent skb %p\n", skb); > - > - bytes += skb->len; > - napi_consume_skb(skb, in_napi); > - } else { > - struct xdp_frame *frame = ptr_to_xdp(ptr); > - > - bytes += xdp_get_frame_len(frame); > - xdp_return_frame(frame); > - } > - packets++; > - } > - > - /* Avoid overhead when no packets have been processed > - * happens when called speculatively from start_xmit. > - */ > - if (!packets) > - return; > - > - u64_stats_update_begin(&sq->stats.syncp); > - sq->stats.bytes += bytes; > - sq->stats.packets += packets; > - u64_stats_update_end(&sq->stats.syncp); > -} > - > -static bool is_xdp_raw_buffer_queue(struct virtnet_info *vi, int q) > -{ > - if (q < (vi->curr_queue_pairs - vi->xdp_queue_pairs)) > - return false; > - else if (q < vi->curr_queue_pairs) > - return true; > - else > - return false; > -} > - > static void virtnet_poll_cleantx(struct receive_queue *rq) > { > struct virtnet_info *vi = rq->vq->vdev->priv; > -- > 2.32.0.3.g01195cf9f >