All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Cc: "David S. Miller" <davem@davemloft.net>,
	Jason Wang <jasowang@redhat.com>,
	netdev@vger.kernel.org,
	virtualization@lists.linux-foundation.org,
	David Ahern <dsahern@gmail.com>
Subject: Re: [PATCH net] virtio_net: Account for tx bytes and packets on sending xdp_frames
Date: Thu, 31 Jan 2019 10:25:17 -0500	[thread overview]
Message-ID: <20190131101516-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <1548934830-2389-1-git-send-email-makita.toshiaki@lab.ntt.co.jp>

On Thu, Jan 31, 2019 at 08:40:30PM +0900, Toshiaki Makita wrote:
> Previously virtnet_xdp_xmit() did not account for device tx counters,
> which caused confusions.
> To be consistent with SKBs, account them on freeing xdp_frames.
> 
> Reported-by: David Ahern <dsahern@gmail.com>
> Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>

Well we count them on receive so I guess it makes sense for consistency

Acked-by: Michael S. Tsirkin <mst@redhat.com>

however, I really wonder whether adding more and more standard net stack
things like this will end up costing most of XDP its speed.

Should we instead make sure *not* to account XDP packets
in any counters at all? XDP programs can use maps
to do their own counting...


> ---
>  drivers/net/virtio_net.c | 20 ++++++++++++++++----
>  1 file changed, 16 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> index 2594481..4cfceb7 100644
> --- a/drivers/net/virtio_net.c
> +++ b/drivers/net/virtio_net.c
> @@ -503,6 +503,8 @@ static int virtnet_xdp_xmit(struct net_device *dev,
>  	struct bpf_prog *xdp_prog;
>  	struct send_queue *sq;
>  	unsigned int len;
> +	int packets = 0;
> +	int bytes = 0;
>  	int drops = 0;
>  	int kicks = 0;
>  	int ret, err;
> @@ -526,10 +528,18 @@ static int virtnet_xdp_xmit(struct net_device *dev,
>  
>  	/* Free up any pending old buffers before queueing new ones. */
>  	while ((ptr = virtqueue_get_buf(sq->vq, &len)) != NULL) {
> -		if (likely(is_xdp_frame(ptr)))
> -			xdp_return_frame(ptr_to_xdp(ptr));
> -		else
> -			napi_consume_skb(ptr, false);
> +		if (likely(is_xdp_frame(ptr))) {
> +			struct xdp_frame *frame = ptr_to_xdp(ptr);
> +
> +			bytes += frame->len;
> +			xdp_return_frame(frame);
> +		} else {
> +			struct sk_buff *skb = ptr;
> +
> +			bytes += skb->len;
> +			napi_consume_skb(skb, false);
> +		}
> +		packets++;
>  	}
>  
>  	for (i = 0; i < n; i++) {
> @@ -549,6 +559,8 @@ static int virtnet_xdp_xmit(struct net_device *dev,
>  	}
>  out:
>  	u64_stats_update_begin(&sq->stats.syncp);
> +	sq->stats.bytes += bytes;
> +	sq->stats.packets += packets;
>  	sq->stats.xdp_tx += n;
>  	sq->stats.xdp_tx_drops += drops;
>  	sq->stats.kicks += kicks;
> -- 
> 1.8.3.1
> 

  reply	other threads:[~2019-01-31 15:25 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-31 11:40 [PATCH net] virtio_net: Account for tx bytes and packets on sending xdp_frames Toshiaki Makita
2019-01-31 15:25 ` Michael S. Tsirkin [this message]
2019-01-31 17:45   ` David Miller
2019-01-31 17:45   ` David Miller
2019-01-31 20:15     ` Jesper Dangaard Brouer
2019-02-01  1:53       ` Toshiaki Makita
2019-02-01  1:53       ` Toshiaki Makita
2019-02-02 21:27       ` David Ahern
2019-02-04 11:53         ` Jesper Dangaard Brouer
2019-02-04 11:53         ` Jesper Dangaard Brouer
2019-02-05  3:13           ` David Ahern
2019-02-06  0:06             ` Saeed Mahameed
2019-02-06 13:48               ` Jesper Dangaard Brouer
2019-02-06 13:48               ` Jesper Dangaard Brouer
2019-02-06 15:52                 ` Jakub Kicinski
2019-02-06 15:52                 ` Jakub Kicinski
2019-02-07  7:48               ` Resource management for ndo_xdp_xmit (Was: [PATCH net] virtio_net: Account for tx bytes and packets on sending xdp_frames) Jesper Dangaard Brouer
2019-02-07  7:48               ` Jesper Dangaard Brouer
2019-02-07 19:08                 ` Saeed Mahameed
2019-02-08 16:55                   ` Toke Høiland-Jørgensen
2019-02-08 22:49                     ` Saeed Mahameed
2019-02-08 23:17                   ` Saeed Mahameed
2019-02-09  0:18                     ` Saeed Mahameed
2019-02-09  2:05                       ` Jakub Kicinski
2019-02-09 16:56                         ` Toke Høiland-Jørgensen
2019-02-09  2:05                       ` Jakub Kicinski
2019-02-09 16:56                       ` Toke Høiland-Jørgensen
2019-02-08 16:02               ` [PATCH net] virtio_net: Account for tx bytes and packets on sending xdp_frames Jesper Dangaard Brouer
2019-02-08 16:02               ` Jesper Dangaard Brouer
2019-04-18 14:24             ` Stats for XDP actions (was: Re: [PATCH net] virtio_net: Account for tx bytes and packets on sending xdp_frames) Toke Høiland-Jørgensen
2019-04-18 14:24             ` Toke Høiland-Jørgensen
2019-04-21  0:16               ` Stats for XDP actions David Ahern
2019-04-21  0:16                 ` David Ahern
2019-06-20 20:42                 ` Toke Høiland-Jørgensen
2019-06-21  0:42                   ` David Ahern
2019-06-21  0:42                     ` David Ahern
2019-06-21 13:57                     ` Toke Høiland-Jørgensen
2019-06-21 13:57                     ` Toke Høiland-Jørgensen
2019-06-20 20:42                 ` Toke Høiland-Jørgensen
2019-01-31 20:15     ` [PATCH net] virtio_net: Account for tx bytes and packets on sending xdp_frames Jesper Dangaard Brouer
2019-01-31 15:25 ` Michael S. Tsirkin
2019-02-04  4:18 ` David Miller
2019-02-04  4:18 ` David Miller
  -- strict thread matches above, loose matches on Subject: below --
2019-01-31 11:40 Toshiaki Makita

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190131101516-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=davem@davemloft.net \
    --cc=dsahern@gmail.com \
    --cc=jasowang@redhat.com \
    --cc=makita.toshiaki@lab.ntt.co.jp \
    --cc=netdev@vger.kernel.org \
    --cc=virtualization@lists.linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.