All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
To: Sven Auhagen <sven.auhagen@voleatech.de>, Andrew Lunn <andrew@lunn.ch>
Cc: "netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"davem@davemloft.net" <davem@davemloft.net>,
	"thomas.petazzoni@bootlin.com" <thomas.petazzoni@bootlin.com>,
	"brouer@redhat.com" <brouer@redhat.com>,
	"ilias.apalodimas@linaro.org" <ilias.apalodimas@linaro.org>,
	"matteo.croce@redhat.com" <matteo.croce@redhat.com>,
	"mw@semihalf.com" <mw@semihalf.com>,
	"jakub.kicinski@netronome.com" <jakub.kicinski@netronome.com>
Subject: Re: [PATCH] mvneta driver XDP fixes armhf
Date: Mon, 27 Jan 2020 10:37:15 +0100	[thread overview]
Message-ID: <20200127093715.GA2543@localhost.localdomain> (raw)
In-Reply-To: <20200127090454.dmstvqgqltgdyzog@SvensMacbookPro.hq.voleatech.com>

[-- Attachment #1: Type: text/plain, Size: 7965 bytes --]

> On Sat, Jan 25, 2020 at 05:30:16PM +0100, Lorenzo Bianconi wrote:
> > > On Fri, Jan 24, 2020 at 12:03:46PM +0000, Sven Auhagen wrote:
> > > > On Wed, Jan 22, 2020 at 11:57:40PM +0100, lorenzo.bianconi@redhat.com wrote:
> > > > > Hi Sven,
> > > > >
> > 
> > [...]
> > 
> > > 

[...]

> > 
> > Hi Sven,
> > 
> > IIUC how the hw works, I guess we can reduce MVNETA_SKB_HEADROOM and let the hw put the MH
> > header to align the IP header. Could you please try the following patch?
> > 
> > Regards,
> > Lorenzo
> > 
> > diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
> > index 67ad8b8b127d..c032cffa6ae8 100644
> > --- a/drivers/net/ethernet/marvell/mvneta.c
> > +++ b/drivers/net/ethernet/marvell/mvneta.c
> > @@ -324,8 +324,7 @@
> >  	      ETH_HLEN + ETH_FCS_LEN,			     \
> >  	      cache_line_size())
> >  
> > -#define MVNETA_SKB_HEADROOM	(max(XDP_PACKET_HEADROOM, NET_SKB_PAD) + \
> > -				 NET_IP_ALIGN)
> > +#define MVNETA_SKB_HEADROOM	max(XDP_PACKET_HEADROOM, NET_SKB_PAD)
> >  #define MVNETA_SKB_PAD	(SKB_DATA_ALIGN(sizeof(struct skb_shared_info) + \
> >  			 MVNETA_SKB_HEADROOM))
> >  #define MVNETA_SKB_SIZE(len)	(SKB_DATA_ALIGN(len) + MVNETA_SKB_PAD)
> > @@ -1167,6 +1166,7 @@ static void mvneta_bm_update_mtu(struct mvneta_port *pp, int mtu)
> >  	mvneta_bm_pool_destroy(pp->bm_priv, pp->pool_short, 1 << pp->id);
> >  
> >  	pp->bm_priv = NULL;
> > +	pp->rx_offset_correction = MVNETA_SKB_HEADROOM;
> >  	mvreg_write(pp, MVNETA_ACC_MODE, MVNETA_ACC_MODE_EXT1);
> >  	netdev_info(pp->dev, "fail to update MTU, fall back to software BM\n");
> >  }
> > @@ -4942,7 +4942,6 @@ static int mvneta_probe(struct platform_device *pdev)
> >  	SET_NETDEV_DEV(dev, &pdev->dev);
> >  
> >  	pp->id = global_port_id++;
> > -	pp->rx_offset_correction = MVNETA_SKB_HEADROOM;
> >  
> >  	/* Obtain access to BM resources if enabled and already initialized */
> >  	bm_node = of_parse_phandle(dn, "buffer-manager", 0);
> > @@ -4967,6 +4966,10 @@ static int mvneta_probe(struct platform_device *pdev)
> >  	}
> >  	of_node_put(bm_node);
> >  
> > +	/* sw buffer management */
> > +	if (!pp->bm_priv)
> > +		pp->rx_offset_correction = MVNETA_SKB_HEADROOM;
> > +
> >  	err = mvneta_init(&pdev->dev, pp);
> >  	if (err < 0)
> >  		goto err_netdev;
> > @@ -5124,6 +5127,7 @@ static int mvneta_resume(struct device *device)
> >  		err = mvneta_bm_port_init(pdev, pp);
> >  		if (err < 0) {
> >  			dev_info(&pdev->dev, "use SW buffer management\n");
> > +			pp->rx_offset_correction = MVNETA_SKB_HEADROOM;
> >  			pp->bm_priv = NULL;
> >  		}
> >  	}
> 
> This patch works on my armada 388 board, thanks.

cool, thx for testing it. Is XDP support working on your board
following back in sw bm?

> Are you going to send in the patch?

I will test it on my espressobin and then I will post it.
@Andrew: applying this patch, is WRT1900ac working in your configuration?

Regards,
Lorenzo

> 
> Best
> Sven
> 
> > 
> > > 
> > > Best
> > > Sven
> > > 
> > > >
> > > > >
> > > > > >
> > > > > > Attached is a patch that fixes the problem on my armhf platform, as said I am not sure if this is a universal fix or armhf only.
> > > > > >
> > > > > > Any feedback is appreciated.
> > > > > >
> > > > > > Signed-off-by: Sven Auhagen <sven.auhagen@voleatech.de>
> > > > > >
> > > > > > --- a/drivers/net/ethernet/marvell/mvneta.c2020-01-22 08:44:05.611395960 +0000
> > > > > > +++ b/drivers/net/ethernet/marvell/mvneta.c2020-01-22 08:59:27.053739433 +0000
> > > > > > @@ -2158,7 +2158,7 @@ mvneta_swbm_rx_frame(struct mvneta_port
> > > > > >  prefetch(data);
> > > > > >
> > > > > >  xdp->data_hard_start = data;
> > > > > > -xdp->data = data + pp->rx_offset_correction + MVNETA_MH_SIZE;
> > > > > > +xdp->data = data + pp->rx_offset_correction;
> > > > >
> > > > > This will break XDP support for 'real' sw buffer devices like Espressobin.
> > > >
> > > > The current code seems to break real hw buffer devices using sw buffer on armhf though.
> > > >
> > > > Best
> > > > Sven
> > > >
> > > > >
> > > > > Regards,
> > > > > Lorenzo
> > > > >
> > > > > >  xdp->data_end = xdp->data + data_len;
> > > > > >  xdp_set_data_meta_invalid(xdp);
> > > > > >
> > > > > > @@ -4960,7 +4960,8 @@ static int mvneta_probe(struct platform_
> > > > > >   * NET_SKB_PAD, exceeds 64B. It should be 64B for 64-bit
> > > > > >   * platforms and 0B for 32-bit ones.
> > > > > >   */
> > > > > > -pp->rx_offset_correction = max(0,
> > > > > > +if (pp->bm_priv)
> > > > > > +pp->rx_offset_correction = max(0,
> > > > > >         NET_SKB_PAD -
> > > > > >         MVNETA_RX_PKT_OFFSET_CORRECTION);
> > > > > >  }
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > +++ Voleatech auf der E-World, 11. bis 13. Februar 2020, Halle 5, Stand 521 +++
> > > > > >
> > > > > > Beste Grüße/Best regards
> > > > > >
> > > > > > Sven Auhagen
> > > > > > Dipl. Math. oec., M.Sc.
> > > > > > Voleatech GmbH
> > > > > > HRB: B 754643
> > > > > > USTID: DE303643180
> > > > > > Grathwohlstr. 5
> > > > > > 72762 Reutlingen
> > > > > > Tel: +49 7121539550
> > > > > > Fax: +49 7121539551
> > > > > > E-Mail: sven.auhagen@voleatech.de
> > > > > > https://eur03.safelinks.protection.outlook.com/?url=www.voleatech.de&amp;data=02%7C01%7Csven.auhagen%40voleatech.de%7C16ecc6de7670473d7de108d7a0c5cf85%7Cb82a99f679814a7295344d35298f847b%7C0%7C0%7C637154643755759442&amp;sdata=PlhiaiQCqIc9Pmkux%2B8xLf%2FiwP3Nn3UsMRozhbX%2FR%2B0%3D&amp;reserved=0<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.voleatech.de&amp;data=02%7C01%7Csven.auhagen%40voleatech.de%7C16ecc6de7670473d7de108d7a0c5cf85%7Cb82a99f679814a7295344d35298f847b%7C0%7C0%7C637154643755759442&amp;sdata=sSpe8NSqXN8dJOp%2Fb%2FaaHcEPTdtT4jE59ek97VvTtlY%3D&amp;reserved=0>
> > > > > > Diese Information ist ausschließlich für den Adressaten bestimmt und kann vertraulich oder gesetzlich geschützte Informationen enthalten. Wenn Sie nicht der bestimmungsgemäße Adressat sind, unterrichten Sie bitte den Absender und vernichten Sie diese Mail. Anderen als dem bestimmungsgemäßen Adressaten ist es untersagt, diese E-Mail zu lesen, zu speichern, weiterzuleiten oder ihren Inhalt auf welche Weise auch immer zu verwenden. Für den Adressaten sind die Informationen in dieser Mail nur zum persönlichen Gebrauch. Eine Weiterleitung darf nur nach Rücksprache mit dem Absender erfolgen. Wir verwenden aktuelle Virenschutzprogramme. Für Schäden, die dem Empfänger gleichwohl durch von uns zugesandte mit Viren befallene E-Mails entstehen, schließen wir jede Haftung aus.
> > > >
> > > >
> > > >
> > > 
> > > +++ Voleatech auf der E-World, 11. bis 13. Februar 2020, Halle 5, Stand 521 +++
> > > 
> > > Beste Grüße/Best regards
> > > 
> > > Sven Auhagen
> > > Dipl. Math. oec., M.Sc.
> > > Voleatech GmbH
> > > HRB: B 754643
> > > USTID: DE303643180
> > > Grathwohlstr. 5
> > > 72762 Reutlingen
> > > Tel: +49 7121539550
> > > Fax: +49 7121539551
> > > E-Mail: sven.auhagen@voleatech.de
> > > www.voleatech.de<https://www.voleatech.de>
> > > Diese Information ist ausschließlich für den Adressaten bestimmt und kann vertraulich oder gesetzlich geschützte Informationen enthalten. Wenn Sie nicht der bestimmungsgemäße Adressat sind, unterrichten Sie bitte den Absender und vernichten Sie diese Mail. Anderen als dem bestimmungsgemäßen Adressaten ist es untersagt, diese E-Mail zu lesen, zu speichern, weiterzuleiten oder ihren Inhalt auf welche Weise auch immer zu verwenden. Für den Adressaten sind die Informationen in dieser Mail nur zum persönlichen Gebrauch. Eine Weiterleitung darf nur nach Rücksprache mit dem Absender erfolgen. Wir verwenden aktuelle Virenschutzprogramme. Für Schäden, die dem Empfänger gleichwohl durch von uns zugesandte mit Viren befallene E-Mails entstehen, schließen wir jede Haftung aus.
> > > 
> 
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

  reply	other threads:[~2020-01-27  9:37 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-22 10:05 [PATCH] mvneta driver XDP fixes armhf Sven Auhagen
2020-01-22 22:57 ` lorenzo.bianconi
2020-01-24 12:03   ` Sven Auhagen
2020-01-25 11:11     ` Sven Auhagen
2020-01-25 16:30       ` Lorenzo Bianconi
2020-01-27  9:04         ` Sven Auhagen
2020-01-27  9:37           ` Lorenzo Bianconi [this message]
2020-01-27  9:56             ` Sven Auhagen

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=20200127093715.GA2543@localhost.localdomain \
    --to=lorenzo.bianconi@redhat.com \
    --cc=andrew@lunn.ch \
    --cc=brouer@redhat.com \
    --cc=davem@davemloft.net \
    --cc=ilias.apalodimas@linaro.org \
    --cc=jakub.kicinski@netronome.com \
    --cc=matteo.croce@redhat.com \
    --cc=mw@semihalf.com \
    --cc=netdev@vger.kernel.org \
    --cc=sven.auhagen@voleatech.de \
    --cc=thomas.petazzoni@bootlin.com \
    /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.