From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F2102C432C3 for ; Thu, 14 Nov 2019 15:04:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CB220206F0 for ; Thu, 14 Nov 2019 15:04:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OCcZmQls" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727031AbfKNPEY (ORCPT ); Thu, 14 Nov 2019 10:04:24 -0500 Received: from mail-wr1-f67.google.com ([209.85.221.67]:45087 "EHLO mail-wr1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727016AbfKNPEW (ORCPT ); Thu, 14 Nov 2019 10:04:22 -0500 Received: by mail-wr1-f67.google.com with SMTP id z10so6817751wrs.12 for ; Thu, 14 Nov 2019 07:04:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=dL1tbTMOxMOwni4mK2EyUD3j/p1IkTd8YUEGJtmDyNA=; b=OCcZmQlsYn56EvgIKslCVKu3um9JIyH6Z4TfirzSJnDfv0+cjWMRiXKBOlSojgEIZg kp1RCzPaYlGjOIR/78yh/TZgNLNAQXHvPihJ3UUtBUqTLfJgBzf0D2BSKSJpgd4wxPyQ X3PWdWMEpXq/TrBo2v7qYdz+hBZAJpABpj4Bmmg1vpi8hNOLusTdQZHLl9BBP4usMQYC rdMwd7cjPypusMlp5kPgBDDaRLP7wfa7a+SeoGAU8ukFtI0m5PH0iY0heD5mrqTZ1Crh XBnaDPXbM5dDBslvSv9Fndlt2WxgrV6fEbghHfV6GGSSPPMv1STBEZfQWGE+b9rLc6AX OuBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=dL1tbTMOxMOwni4mK2EyUD3j/p1IkTd8YUEGJtmDyNA=; b=DyW37BPRLMWqDVfp8ckizitAIKZKBPkaGY1x+VqCue/oPbj3Ku0NtLNBSVBGZJTgIA NvDEW2RxoEwmNjU68VXQO0DIkc35+BKLgIXXM/2yMegJvHHPLK43uvsru/+J/0Ye6Wk1 P07yubpFezR1OUHI5HvzNVQMsTYFCZ+gRwntD11mvhUwbpkYGUBrP3IlSvmxs4MBfGtV sFg8Rb9QKn+brafSeLzxmXaIhGejhdreSsuwlUGjIGdld5aRJIYrp4RLUpDDurFMPv3o L4SXW7fqflFZOTB7ykYgburMztPuIfBBaPXtdjGEydgTCFbklEVbOM3cc/AUIDl9ZRpS T2Sw== X-Gm-Message-State: APjAAAXfnbd74WHuRXHMiTpFNkCMw27f5u3U6cGx4I5bsLSkVUE46gTj PHqIMynOuy1bGHunqzdmTLQ= X-Google-Smtp-Source: APXvYqxYD6o5kALIXsVmJojbD5lcVTAiXVtex14Zz74VMczh0BJ1Ya9zAMzb2bm+oHA/V0VHb/NLWg== X-Received: by 2002:a5d:640b:: with SMTP id z11mr8370357wru.195.1573743859852; Thu, 14 Nov 2019 07:04:19 -0800 (PST) Received: from localhost.localdomain ([86.121.29.241]) by smtp.gmail.com with ESMTPSA id v128sm7600094wmb.14.2019.11.14.07.04.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Nov 2019 07:04:19 -0800 (PST) From: Vladimir Oltean 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 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 Message-Id: <20191114150330.25856-7-olteanv@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191114150330.25856-1-olteanv@gmail.com> References: <20191114150330.25856-1-olteanv@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vladimir Oltean 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 Reviewed-by: Andrew Lunn Reviewed-by: Florian Fainelli --- 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