2022-08-19 09:27:47

by Wei Fang

[permalink] [raw]
Subject: [PATCH net] net: fec: change the default rx copybreak length to 1518

From: Wei Fang <[email protected]>

Set the default rx copybreak value to 1518 so that improve the
performance when SMMU is enabled. User can change the copybreak
length in dynamically by ethtool.

Signed-off-by: Wei Fang <[email protected]>
---
drivers/net/ethernet/freescale/fec_main.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index e8e2aa1e7f01..f5f34cdba131 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -299,7 +299,15 @@ MODULE_PARM_DESC(macaddr, "FEC Ethernet MAC address");
#define FEC_WOL_FLAG_ENABLE (0x1 << 1)
#define FEC_WOL_FLAG_SLEEP_ON (0x1 << 2)

-#define COPYBREAK_DEFAULT 256
+/* By default, set the copybreak to 1518,
+ * then the RX path always keep DMA memory unchanged, and
+ * allocate one new skb and copy DMA memory data to the new skb
+ * buffer, which can improve the performance when SMMU is enabled.
+ *
+ * The driver support .set_tunable() interface for ethtool, user
+ * can dynamicly change the copybreak value.
+ */
+#define COPYBREAK_DEFAULT 1518

/* Max number of allowed TCP segments for software TSO */
#define FEC_MAX_TSO_SEGS 100
--
2.25.1


2022-08-19 17:39:35

by Andrew Lunn

[permalink] [raw]
Subject: Re: [PATCH net] net: fec: change the default rx copybreak length to 1518

On Fri, Aug 19, 2022 at 05:00:41PM +0800, [email protected] wrote:
> From: Wei Fang <[email protected]>
>
> Set the default rx copybreak value to 1518 so that improve the
> performance when SMMU is enabled. User can change the copybreak
> length in dynamically by ethtool.

Please provide some benchmark for this. And include a range of SoCs
which include the FEC. Maybe this helps for the platform you are
testing on, but is bad for imx25, Vybrid etc?

> + * The driver support .set_tunable() interface for ethtool, user
> + * can dynamicly change the copybreak value.
> + */

Which also means you could change it for your platform. So a patch
like this needs justifying.

Andrew

2022-08-19 22:32:37

by Jakub Kicinski

[permalink] [raw]
Subject: Re: [PATCH net] net: fec: change the default rx copybreak length to 1518

On Fri, 19 Aug 2022 17:57:07 +0200 Andrew Lunn wrote:
> On Fri, Aug 19, 2022 at 05:00:41PM +0800, [email protected] wrote:
> > Set the default rx copybreak value to 1518 so that improve the
> > performance when SMMU is enabled. User can change the copybreak
> > length in dynamically by ethtool.
>
> Please provide some benchmark for this. And include a range of SoCs
> which include the FEC. Maybe this helps for the platform you are
> testing on, but is bad for imx25, Vybrid etc?
>
> > + * The driver support .set_tunable() interface for ethtool, user
> > + * can dynamicly change the copybreak value.
> > + */
>
> Which also means you could change it for your platform. So a patch
> like this needs justifying.

Fully agreed, perhaps if the DMA mapping on the platform is extremely
slow we're better off making the platform use bounce buffers for
everything.

Another though is that you can try to manually sync only the parts
of the buffers that the device actually touched instead of full 2kB,
and tell the DMA core to skip the sync of the full buffer.