From: Lorenzo Bianconi <lorenzo@kernel.org>
To: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Cc: davem@davemloft.net, netdev@vger.kernel.org, lorenzo.bianconi@redhat.com
Subject: Re: [PATCH net] net: socionext: netsec: fix xdp stats accounting
Date: Fri, 11 Oct 2019 17:58:47 +0200 [thread overview]
Message-ID: <20191011155847.GA4220@localhost.localdomain> (raw)
In-Reply-To: <20191011151628.GA12122@apalos.home>
[-- Attachment #1: Type: text/plain, Size: 3067 bytes --]
> On Fri, Oct 11, 2019 at 05:15:03PM +0300, Ilias Apalodimas wrote:
> > Hi Lorenzo,
> >
> > On Fri, Oct 11, 2019 at 03:45:38PM +0200, Lorenzo Bianconi wrote:
> > > Increment netdev rx counters even for XDP_DROP verdict. Moreover report
> > > even tx bytes for xdp buffers (TYPE_NETSEC_XDP_TX or
> > > TYPE_NETSEC_XDP_NDO)
> >
> > The RX counters work fine. The TX change is causing a panic though and i am
> > looking into it since your patch seems harmless. In any case please don't merge
> > this yet
> >
>
> Ok i think i know what's going on.
> Our clean TX routine has a netdev_completed_queue(). This is properly accounted
> for on netsec_netdev_start_xmit() which calls netdev_sent_queue().
>
> Since the XDP never had support for that you need to account for the extra bytes
> in netsec_xdp_queue_one(). That's what triggering the BUG_ON
> (lib/dynamic_queue_limits.c line 27)
Hi Ilias,
yes, right. We need to account pending xdp buffer len on tx side.
>
> Since netdev_completed_queue() enforces barrier() and in some cases smp_mb() i
> think i'd prefer it per function, although it looks uglier.
> Can you send a patch with this call in netsec_xdp_queue_one()? If we cant
> measure any performance difference i am fine with adding it in that only.
If this introduce a performance penalty we can just account netdev tx_bytes
directly (maybe it is ugly)
Regards,
Lorenzo
>
> Thanks
> /Ilias
>
> > Thanks
> > /Ilias
> >
> > > Fixes: ba2b232108d3 ("net: netsec: add XDP support")
> > > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> > > ---
> > > just compiled not tested on a real device
> > > ---
> > > drivers/net/ethernet/socionext/netsec.c | 4 ++--
> > > 1 file changed, 2 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/drivers/net/ethernet/socionext/netsec.c b/drivers/net/ethernet/socionext/netsec.c
> > > index f9e6744d8fd6..b1c2a79899b3 100644
> > > --- a/drivers/net/ethernet/socionext/netsec.c
> > > +++ b/drivers/net/ethernet/socionext/netsec.c
> > > @@ -252,7 +252,6 @@
> > > #define NETSEC_XDP_CONSUMED BIT(0)
> > > #define NETSEC_XDP_TX BIT(1)
> > > #define NETSEC_XDP_REDIR BIT(2)
> > > -#define NETSEC_XDP_RX_OK (NETSEC_XDP_PASS | NETSEC_XDP_TX | NETSEC_XDP_REDIR)
> > >
> > > enum ring_id {
> > > NETSEC_RING_TX = 0,
> > > @@ -661,6 +660,7 @@ static bool netsec_clean_tx_dring(struct netsec_priv *priv)
> > > bytes += desc->skb->len;
> > > dev_kfree_skb(desc->skb);
> > > } else {
> > > + bytes += desc->xdpf->len;
> > > xdp_return_frame(desc->xdpf);
> > > }
> > > next:
> > > @@ -1030,7 +1030,7 @@ static int netsec_process_rx(struct netsec_priv *priv, int budget)
> > >
> > > next:
> > > if ((skb && napi_gro_receive(&priv->napi, skb) != GRO_DROP) ||
> > > - xdp_result & NETSEC_XDP_RX_OK) {
> > > + xdp_result) {
> > > ndev->stats.rx_packets++;
> > > ndev->stats.rx_bytes += xdp.data_end - xdp.data;
> > > }
> > > --
> > > 2.21.0
> > >
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
prev parent reply other threads:[~2019-10-11 15:58 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-11 13:45 [PATCH net] net: socionext: netsec: fix xdp stats accounting Lorenzo Bianconi
2019-10-11 14:15 ` Ilias Apalodimas
2019-10-11 15:16 ` Ilias Apalodimas
2019-10-11 15:58 ` Lorenzo Bianconi [this message]
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=20191011155847.GA4220@localhost.localdomain \
--to=lorenzo@kernel.org \
--cc=davem@davemloft.net \
--cc=ilias.apalodimas@linaro.org \
--cc=lorenzo.bianconi@redhat.com \
--cc=netdev@vger.kernel.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.