From: Vladimir Oltean <olteanv@gmail.com>
To: davem@davemloft.net, alexandre.belloni@bootlin.com
Cc: andrew@lunn.ch, f.fainelli@gmail.com, vivien.didelot@gmail.com,
joergen.andreasen@microchip.com, allan.nielsen@microchip.com,
horatiu.vultur@microchip.com, claudiu.manoil@nxp.com,
alexandru.marginean@nxp.com, netdev@vger.kernel.org,
Vladimir Oltean <vladimir.oltean@nxp.com>
Subject: [PATCH v2 net-next 06/11] net: mscc: ocelot: adjust MTU on the CPU port in NPI mode
Date: Thu, 14 Nov 2019 17:03:25 +0200 [thread overview]
Message-ID: <20191114150330.25856-7-olteanv@gmail.com> (raw)
In-Reply-To: <20191114150330.25856-1-olteanv@gmail.com>
From: Vladimir Oltean <vladimir.oltean@nxp.com>
When using the NPI port, the DSA tag is passed through Ethernet, so the
switch's MAC needs to accept it as it comes from the DSA master. Increase
the MTU on the external CPU port to account for the length of the
injection header.
Without this patch, MTU-sized frames are dropped by the switch's CPU
port on xmit, which is especially obvious in TCP sessions.
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
---
Changes in v2:
None.
drivers/net/ethernet/mscc/ocelot.c | 9 +++++++++
drivers/net/ethernet/mscc/ocelot.h | 2 ++
2 files changed, 11 insertions(+)
diff --git a/drivers/net/ethernet/mscc/ocelot.c b/drivers/net/ethernet/mscc/ocelot.c
index 8b73d760dfa5..42da193a8240 100644
--- a/drivers/net/ethernet/mscc/ocelot.c
+++ b/drivers/net/ethernet/mscc/ocelot.c
@@ -2230,9 +2230,18 @@ void ocelot_set_cpu_port(struct ocelot *ocelot, int cpu,
* Only one port can be an NPI at the same time.
*/
if (cpu < ocelot->num_phys_ports) {
+ int mtu = VLAN_ETH_FRAME_LEN + OCELOT_TAG_LEN;
+
ocelot_write(ocelot, QSYS_EXT_CPU_CFG_EXT_CPUQ_MSK_M |
QSYS_EXT_CPU_CFG_EXT_CPU_PORT(cpu),
QSYS_EXT_CPU_CFG);
+
+ if (injection == OCELOT_TAG_PREFIX_SHORT)
+ mtu += OCELOT_SHORT_PREFIX_LEN;
+ else if (injection == OCELOT_TAG_PREFIX_LONG)
+ mtu += OCELOT_LONG_PREFIX_LEN;
+
+ ocelot_port_set_mtu(ocelot, cpu, mtu);
}
/* CPU port Injection/Extraction configuration */
diff --git a/drivers/net/ethernet/mscc/ocelot.h b/drivers/net/ethernet/mscc/ocelot.h
index 9159b0adf1e7..bdc9b1d34b81 100644
--- a/drivers/net/ethernet/mscc/ocelot.h
+++ b/drivers/net/ethernet/mscc/ocelot.h
@@ -65,6 +65,8 @@ struct frame_info {
#define IFH_REW_OP_ORIGIN_PTP 0x5
#define OCELOT_TAG_LEN 16
+#define OCELOT_SHORT_PREFIX_LEN 4
+#define OCELOT_LONG_PREFIX_LEN 16
#define OCELOT_SPEED_2500 0
#define OCELOT_SPEED_1000 1
--
2.17.1
next prev parent reply other threads:[~2019-11-14 15:04 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-14 15:03 [PATCH v2 net-next 00/11] DSA driver for Vitesse Felix switch Vladimir Oltean
2019-11-14 15:03 ` [PATCH v2 net-next 01/11] net: mscc: ocelot: move resource ioremap and regmap init to common code Vladimir Oltean
2019-11-14 15:03 ` [PATCH v2 net-next 02/11] net: mscc: ocelot: filter out ocelot SoC specific PCS config from common path Vladimir Oltean
2019-11-14 15:03 ` [PATCH v2 net-next 03/11] net: mscc: ocelot: move invariant configs out of adjust_link Vladimir Oltean
2019-11-14 15:03 ` [PATCH v2 net-next 04/11] net: mscc: ocelot: create a helper for changing the port MTU Vladimir Oltean
2019-11-14 15:03 ` [PATCH v2 net-next 05/11] net: mscc: ocelot: export a constant for the tag length in bytes Vladimir Oltean
2019-11-14 15:03 ` Vladimir Oltean [this message]
2019-11-14 15:03 ` [PATCH v2 net-next 07/11] net: mscc: ocelot: separate the implementation of switch reset Vladimir Oltean
2019-11-14 15:03 ` [PATCH v2 net-next 08/11] net: mscc: ocelot: publish structure definitions to include/soc/mscc/ocelot.h Vladimir Oltean
2019-11-14 15:03 ` [PATCH v2 net-next 09/11] net: mscc: ocelot: publish ocelot_sys.h to include/soc/mscc Vladimir Oltean
2019-11-14 20:11 ` Florian Fainelli
2019-11-14 15:03 ` [PATCH v2 net-next 10/11] net: dsa: ocelot: add tagger for Ocelot/Felix switches Vladimir Oltean
2019-11-14 15:03 ` [PATCH v2 net-next 11/11] net: dsa: ocelot: add driver for Felix switch family Vladimir Oltean
2019-11-15 20:32 ` [PATCH v2 net-next 00/11] DSA driver for Vitesse Felix switch David Miller
2019-11-15 20:39 ` Vladimir Oltean
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=20191114150330.25856-7-olteanv@gmail.com \
--to=olteanv@gmail.com \
--cc=alexandre.belloni@bootlin.com \
--cc=alexandru.marginean@nxp.com \
--cc=allan.nielsen@microchip.com \
--cc=andrew@lunn.ch \
--cc=claudiu.manoil@nxp.com \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=horatiu.vultur@microchip.com \
--cc=joergen.andreasen@microchip.com \
--cc=netdev@vger.kernel.org \
--cc=vivien.didelot@gmail.com \
--cc=vladimir.oltean@nxp.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).