From patchwork Sun Oct 30 21:36:34 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Horatiu Vultur X-Patchwork-Id: 13063 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp1978236wru; Sun, 30 Oct 2022 14:53:07 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6o8VpvpghGu2Is/h/fJyLcZdeiP9A4NNl7GafHR1EvEFVCNEeSfq8e7MmH5R0cAfY23POw X-Received: by 2002:a17:906:5dd8:b0:78d:efa7:f78d with SMTP id p24-20020a1709065dd800b0078defa7f78dmr10087609ejv.641.1667166787175; Sun, 30 Oct 2022 14:53:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1667166787; cv=none; d=google.com; s=arc-20160816; b=tMQOvhMyKMXRCorGe9JAWzuWYYFGq7i1zqYPMjmuV8UoBHIVMLHgcAMslDdhu7Hiw7 xKAOpCyOJVmfhJevKR1X4B5mjwMyD0yO374N4aGxNXrEglwY+xY5cVh1uniG4a9vvey4 ZA8DdrQLSGpqTfqAM5Lut7gzu39g5LFi/dsUJwbcysCILSg1LxajIosBPVNI/46g9fd4 Q4jfR0JWVZPZndRQhihDIXoLl+OB+cbrMg0KWYLOFdE87p4JPqEXbzRkwKaNFv32M1fQ vgs/VXIguLNB9nf5IvEKeN4vOkVXe5NZzv3frPLLAmsgOt5L6A9bXyy+6BLcWhKlbKcx RJyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=t9rNZw5qlK+RstzrgBrevoxZ39AMr+X0kHYIa0KisXs=; b=dx/dW3G7bnb687aNx/akS05z8bO2BoZH4diPkmJEU5S4kEC+WGbOOFCqzqRaNMmSCO myl+mMbpViR58yXxaSi+QZ5Cfb7lq24hyNlGbGytVELxjgRQ2h2jmCFihnnCw7UM/xl+ l2/RFq8ZotSYajPzpadKiiwhSLMXgfWkpY6IJ5WzYKjVM4tA0Q9X5wyuSvIh7I88YY/t ihbtAD2xmaQ/j2QNQx0p3/s7YPT4npPptrHT8WP9gJpLrbvUkMcY817SZqwW5r6Y3dfo MxWVIYk+XVgYY/ubSGxzxqfboZo/tlnmzdA51eWTGtg8kv09qehb+8czuT3ez1PMM+JQ /frw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=NjOSvK7h; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c6-20020a50f606000000b00461b0b4f1afsi5581681edn.288.2022.10.30.14.52.37; Sun, 30 Oct 2022 14:53:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=NjOSvK7h; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229923AbiJ3VcS (ORCPT + 99 others); Sun, 30 Oct 2022 17:32:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42736 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229786AbiJ3VcB (ORCPT ); Sun, 30 Oct 2022 17:32:01 -0400 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.153.233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 037BFBC14; Sun, 30 Oct 2022 14:32:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1667165519; x=1698701519; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=zO5TaBiovTLxzRxBjR6lBYtEuGdhCJDREHzQQ8LjDVE=; b=NjOSvK7hzg5A5oAhCAx1w838B65j+a2JTFnrJ7T6AkyWOZ3dAeAWRru/ /mP0F5DoubZKvdeAk7ccTb1THV1n5lJ9t/W7Q96jW76AZYwKeVlNONicY XitKzp867eD6uKvkQLXKcy9ZuMynKRrqum4Gg9gjll7s4Y+U6V/1sa3qt p8+oceexqai4yGwU4sD5hxIA91PQoFU8xGVeqjTnWbuUYm9rTDqlamSjs JbZhfNO4ZX5iHiWCb0/oUhzd+wNFS7G/5hZ7aIxqPT3Ru2zjbz9TTUmiQ V2sl3sI16YVSRkAhEc5wdfCeQgpRz0RLdLQEXOhamNU87jnKmMOnq1F3w Q==; X-IronPort-AV: E=Sophos;i="5.95,226,1661842800"; d="scan'208";a="186969029" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa3.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 30 Oct 2022 14:31:59 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.12; Sun, 30 Oct 2022 14:31:59 -0700 Received: from soft-dev3-1.microsemi.net (10.10.115.15) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server id 15.1.2507.12 via Frontend Transport; Sun, 30 Oct 2022 14:31:57 -0700 From: Horatiu Vultur To: , CC: , , , , , Horatiu Vultur Subject: [PATCH net v2 1/3] net: lan966x: Fix the MTU calculation Date: Sun, 30 Oct 2022 22:36:34 +0100 Message-ID: <20221030213636.1031408-2-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.38.0 In-Reply-To: <20221030213636.1031408-1-horatiu.vultur@microchip.com> References: <20221030213636.1031408-1-horatiu.vultur@microchip.com> MIME-Version: 1.0 X-Spam-Status: No, score=-5.5 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1748151080959768577?= X-GMAIL-MSGID: =?utf-8?q?1748151080959768577?= When the MTU was changed, the lan966x didn't take in consideration the L2 header and the FCS. So the HW was configured with a smaller value than what was desired. Therefore the correct value to configure the HW would be new_mtu + ETH_HLEN + ETH_FCS_LEN. The vlan tag is not considered here, because at the time when the blamed commit was added, there was no vlan filtering support. The vlan fix will be part of the next patch. Fixes: d28d6d2e37d1 ("net: lan966x: add port module support") Signed-off-by: Horatiu Vultur --- drivers/net/ethernet/microchip/lan966x/lan966x_main.c | 2 +- drivers/net/ethernet/microchip/lan966x/lan966x_main.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_main.c b/drivers/net/ethernet/microchip/lan966x/lan966x_main.c index be2fd030cccbe..b3070c3fcad0a 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_main.c +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_main.c @@ -386,7 +386,7 @@ static int lan966x_port_change_mtu(struct net_device *dev, int new_mtu) int old_mtu = dev->mtu; int err; - lan_wr(DEV_MAC_MAXLEN_CFG_MAX_LEN_SET(new_mtu), + lan_wr(DEV_MAC_MAXLEN_CFG_MAX_LEN_SET(LAN966X_HW_MTU(new_mtu)), lan966x, DEV_MAC_MAXLEN_CFG(port->chip_port)); dev->mtu = new_mtu; diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_main.h b/drivers/net/ethernet/microchip/lan966x/lan966x_main.h index 9656071b8289e..4ec33999e4df6 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_main.h +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_main.h @@ -26,6 +26,8 @@ #define LAN966X_BUFFER_MEMORY (160 * 1024) #define LAN966X_BUFFER_MIN_SZ 60 +#define LAN966X_HW_MTU(mtu) ((mtu) + ETH_HLEN + ETH_FCS_LEN) + #define PGID_AGGR 64 #define PGID_SRC 80 #define PGID_ENTRIES 89 From patchwork Sun Oct 30 21:36:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Horatiu Vultur X-Patchwork-Id: 13066 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp1981422wru; Sun, 30 Oct 2022 15:03:02 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5VQorzQ00y95fl+g9wzpds9vo0ISD42LWcuTPsaxqfGq2NY640yz1dtAZ/SN5bvWEawqcn X-Received: by 2002:a62:5543:0:b0:56b:b9ce:aaf6 with SMTP id j64-20020a625543000000b0056bb9ceaaf6mr11036550pfb.48.1667167381977; Sun, 30 Oct 2022 15:03:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1667167381; cv=none; d=google.com; s=arc-20160816; b=hGUWYJ+DvdL76z6rMMdxGYadw91mK/KplSlHJIoc6mpR1WBc1rEyGfI6VQ4aaJjVgj Xsa2yUmDMcGv777J4Xe/9qCtyQhpL/souRtVzaTbpsIalHqC28biZdIoG1Azvq0UIh0u MzWZnQJFCRFS+Yf/qP0Bs84cBlzmtztsXQzpTySNDwYimWJYL3U9UnR3W33w3xrlpLgj BgCI1in3tSDhHq3+O2ge0e2L4ZfZpG91S9NEm7nyn+woXYSOwrm8037AzFa+IV0fzilQ JxglfsYAwl4ShzUtIpu2/8A3Skpd3IIpLj4lVsedhLLBicD2GIJROSSotEuSobmhCyrh PPiw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=wEWGJKsJLBXbOLRXmJZuWZ4jvRDq/q6M8Cj8rfrKLPc=; b=puFrxDkH7WOS/YKC01MHM2vx7MFng94EXnmitBteCK8VllJOozE51YqU6hCgRAu7tD L3c7Q/LVTiTap1YOCxyLHBQhSzKN1XC6wfv53/GTG/N9tpxiCu6Uq2V9PLxtJwTpxKrz 0ZhKNObR8rJtVR1jtxI0CsG+XRzs5bccjVmse7BcPWfa/rIjvBIANvDstbHUAarXFMCH /dlGXPyY+mcgCSJpHbqLoxDGOqvLbHVAULYE1+tTaFhSQ9S5Hmkytfu9OLjDDZYjAZDG WrsGAzv5M4UYpMCPfX+gWXR9YGZiGSYQfl2yUX2URHcp5qsWGMQLYlAcwEB14cyKsv24 GU1w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b="mru/HGiN"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k1-20020a63ff01000000b00456b507fb2asi7027713pgi.446.2022.10.30.15.02.49; Sun, 30 Oct 2022 15:03:01 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b="mru/HGiN"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229862AbiJ3Vcb (ORCPT + 99 others); Sun, 30 Oct 2022 17:32:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43740 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229851AbiJ3VcF (ORCPT ); Sun, 30 Oct 2022 17:32:05 -0400 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 363D3A1A0; Sun, 30 Oct 2022 14:32:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1667165523; x=1698701523; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=w7uVV0RJ6uV+MAOV6JlyV47tQ54stPcJ90GshRDd7Jk=; b=mru/HGiNDdCRAY2bQ6YgL6XaHLUeccM3jbTHVXkgldzPx3szt6LHVSP3 tIDTWnX3VV7D/Ro4EVsqCPeRh/yZfq1Jky7VbFQCmCQb86gMsy1UAOKXy MtaYbqqpVKS0/le7QCDd0FoBLOwv1xeDytcZnJ9X04v9oaPnU0KoTgwSc lzvg+DwO9nZfWhkaG0qav3ncwR5lJTLz1/tD4Ac3DjsJQjFX2hI7BSoSG f1bahWDfVWvcpktCdbbBcULiQKG4Xa3nYQiPItl77mLc11Ntda5CZds40 G546zLB0cQ6o3daToTRkgjq1tIP3+AHLmiov8udXv1HdjQQw/vVRmfdp2 w==; X-IronPort-AV: E=Sophos;i="5.95,226,1661842800"; d="scan'208";a="184552393" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 30 Oct 2022 14:32:02 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.12; Sun, 30 Oct 2022 14:32:01 -0700 Received: from soft-dev3-1.microsemi.net (10.10.115.15) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server id 15.1.2507.12 via Frontend Transport; Sun, 30 Oct 2022 14:31:59 -0700 From: Horatiu Vultur To: , CC: , , , , , Horatiu Vultur Subject: [PATCH net v2 2/3] net: lan966x: Adjust maximum frame size when vlan is enabled/disabled Date: Sun, 30 Oct 2022 22:36:35 +0100 Message-ID: <20221030213636.1031408-3-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.38.0 In-Reply-To: <20221030213636.1031408-1-horatiu.vultur@microchip.com> References: <20221030213636.1031408-1-horatiu.vultur@microchip.com> MIME-Version: 1.0 X-Spam-Status: No, score=-5.5 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1748151704251490758?= X-GMAIL-MSGID: =?utf-8?q?1748151704251490758?= When vlan filtering is enabled/disabled, it is required to adjust the maximum received frame size that it can received. When vlan filtering is enabled, it would all to receive extra 4 bytes, that are the vlan tag. So the maximum frame size would be 1522 with a vlan tag. If vlan filtering is disabled then the maximum frame size would be 1518 regardless if there is or not a vlan tag. Fixes: 6d2c186afa5d ("net: lan966x: Add vlan support.") Signed-off-by: Horatiu Vultur --- .../net/ethernet/microchip/lan966x/lan966x_regs.h | 15 +++++++++++++++ .../net/ethernet/microchip/lan966x/lan966x_vlan.c | 6 ++++++ 2 files changed, 21 insertions(+) diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_regs.h b/drivers/net/ethernet/microchip/lan966x/lan966x_regs.h index 1d90b93dd417a..fb5087fef22e1 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_regs.h +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_regs.h @@ -585,6 +585,21 @@ enum lan966x_target { #define DEV_MAC_MAXLEN_CFG_MAX_LEN_GET(x)\ FIELD_GET(DEV_MAC_MAXLEN_CFG_MAX_LEN, x) +/* DEV:MAC_CFG_STATUS:MAC_TAGS_CFG */ +#define DEV_MAC_TAGS_CFG(t) __REG(TARGET_DEV, t, 8, 28, 0, 1, 44, 12, 0, 1, 4) + +#define DEV_MAC_TAGS_CFG_VLAN_DBL_AWR_ENA BIT(1) +#define DEV_MAC_TAGS_CFG_VLAN_DBL_AWR_ENA_SET(x)\ + FIELD_PREP(DEV_MAC_TAGS_CFG_VLAN_DBL_AWR_ENA, x) +#define DEV_MAC_TAGS_CFG_VLAN_DBL_AWR_ENA_GET(x)\ + FIELD_GET(DEV_MAC_TAGS_CFG_VLAN_DBL_AWR_ENA, x) + +#define DEV_MAC_TAGS_CFG_VLAN_AWR_ENA BIT(0) +#define DEV_MAC_TAGS_CFG_VLAN_AWR_ENA_SET(x)\ + FIELD_PREP(DEV_MAC_TAGS_CFG_VLAN_AWR_ENA, x) +#define DEV_MAC_TAGS_CFG_VLAN_AWR_ENA_GET(x)\ + FIELD_GET(DEV_MAC_TAGS_CFG_VLAN_AWR_ENA, x) + /* DEV:MAC_CFG_STATUS:MAC_IFG_CFG */ #define DEV_MAC_IFG_CFG(t) __REG(TARGET_DEV, t, 8, 28, 0, 1, 44, 20, 0, 1, 4) diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_vlan.c b/drivers/net/ethernet/microchip/lan966x/lan966x_vlan.c index 8d7260cd7da9c..3c44660128dae 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_vlan.c +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_vlan.c @@ -169,6 +169,12 @@ void lan966x_vlan_port_apply(struct lan966x_port *port) ANA_VLAN_CFG_VLAN_POP_CNT, lan966x, ANA_VLAN_CFG(port->chip_port)); + lan_rmw(DEV_MAC_TAGS_CFG_VLAN_AWR_ENA_SET(port->vlan_aware) | + DEV_MAC_TAGS_CFG_VLAN_DBL_AWR_ENA_SET(port->vlan_aware), + DEV_MAC_TAGS_CFG_VLAN_AWR_ENA | + DEV_MAC_TAGS_CFG_VLAN_DBL_AWR_ENA, + lan966x, DEV_MAC_TAGS_CFG(port->chip_port)); + /* Drop frames with multicast source address */ val = ANA_DROP_CFG_DROP_MC_SMAC_ENA_SET(1); if (port->vlan_aware && !pvid) From patchwork Sun Oct 30 21:36:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Horatiu Vultur X-Patchwork-Id: 13067 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp1981545wru; Sun, 30 Oct 2022 15:03:17 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7+fWWNVoLqEMsDav/36eCKfvXHB2TeZ3LPlC+3+H3CmfY0pQk3SJAKCTAwKnnfA1qyzJAB X-Received: by 2002:a05:6a00:1991:b0:565:9912:cbf7 with SMTP id d17-20020a056a00199100b005659912cbf7mr11296569pfl.59.1667167397222; Sun, 30 Oct 2022 15:03:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1667167397; cv=none; d=google.com; s=arc-20160816; b=swX5Uyqh/LxHm1UQho5A33F+8+AWq1UZp/YxJ37TX3Phc7hZSUjp6kGgG6X839COPW BqYXeF8TLtWTsrIISBDilNt+ePgpUpiCoBWrGFwUWj9350LUXcWQnszo9zgjftRRjVVm wJskz0YieS1TeEJ/rhOFuhSjXF1gHIUEUKzdSIExJThxGCLTmV24go9VGzjM1U1n1CHV wNbKpaVqiFWUfnroz6RXK7gUEGuF6/S7YsGgMOQu5BC3uoF0xaKvh9M9IIp3kFdBCpqe APu+kgYgqeyizkRiajDnWd0f1dnHr31BbcZ0vGHfrRZq461eT9Gg5McVZzybHaxFuK41 ohXg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=1r4nbW+QdAwmptU9bXrRE2v9Na05HYB1kR1434H+sTw=; b=Vl1O4XaQF9GTSJbVEq/76YSSmTEqEFpgr3rAAHab9R6EDi2B6bHLIDXG+RsAEcseod a1d0wyFmKW6Q6SPNFZjNRD+gqPx7aD3VsabF6l/q+Mj6/WNv2R2S8qRmuIHGFl8IIGV8 iXmYdjSE30rwgnIzok2aL0W/VdDTCMgFU6gviiQ/wG22wNWooZH9+gXZG4Ja4M/9KEhV BhQCsi6yTWWH2NAgR6bq6C4mixb1F1i2EfmLorMfxEV0psXuh9nMcCv4BvGIPKkoDFkp BfQvYrdRjt2ff9Cb+0vewH5UWzxsicIWerNzJBOLBzZQoFCvUzsMnSloZZ7p0n+5vSky WOvQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b="VP1UqK3/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a14-20020aa78e8e000000b0056cf9ed8f10si6307902pfr.329.2022.10.30.15.03.05; Sun, 30 Oct 2022 15:03:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b="VP1UqK3/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229556AbiJ3Vcd (ORCPT + 99 others); Sun, 30 Oct 2022 17:32:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43746 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229913AbiJ3VcG (ORCPT ); Sun, 30 Oct 2022 17:32:06 -0400 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1C2A6AE47; Sun, 30 Oct 2022 14:32:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1667165525; x=1698701525; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=OdInNG+WtCVFIQyztfsKU1qUG+kc8CesAPbpqzEN/q4=; b=VP1UqK3/E3aV4VHTupjumONAK6a/JbjO7uMI4Ztd7HeFNPv3yFG9k1WF ZutPN3vcwmsN0WUPsbg7jYbRv7rwPIMB7WQfxdPdf0C9Q4iZ4ezIkZYli usntzVljzr2ocC4QKER9afYxjQlfUexET/EXCh2Q67VR5hHZXDrW4DTp1 wo1PX4o/2IZR3WZBHfpfMKkm4NfaPHsAB136WRXAI+MBSlnSLkKNWUR8e 8C5pSluTWEoJN7rO5Gn4H8oLe4uSSdNxKlBuOeaEXLPBaYMquOjpypHOh xGl25BAJ7JQGLSZp4qfWBw1ncQnd9KDtdeArIfq7NsCMZMOtp25rGcMaP w==; X-IronPort-AV: E=Sophos;i="5.95,226,1661842800"; d="scan'208";a="184552394" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 30 Oct 2022 14:32:04 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.12; Sun, 30 Oct 2022 14:32:03 -0700 Received: from soft-dev3-1.microsemi.net (10.10.115.15) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server id 15.1.2507.12 via Frontend Transport; Sun, 30 Oct 2022 14:32:01 -0700 From: Horatiu Vultur To: , CC: , , , , , Horatiu Vultur Subject: [PATCH net v2 3/3] net: lan966x: Fix FDMA when MTU is changed Date: Sun, 30 Oct 2022 22:36:36 +0100 Message-ID: <20221030213636.1031408-4-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.38.0 In-Reply-To: <20221030213636.1031408-1-horatiu.vultur@microchip.com> References: <20221030213636.1031408-1-horatiu.vultur@microchip.com> MIME-Version: 1.0 X-Spam-Status: No, score=-5.5 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1748151720862663621?= X-GMAIL-MSGID: =?utf-8?q?1748151720862663621?= When MTU is changed, FDMA is required to calculate what is the maximum size of the frame that it can received. So it can calculate what is the page order needed to allocate for the received frames. The first problem was that, when the max MTU was calculated it was reading the value from dev and not from HW, so in this way it was missing L2 header + the FCS. The other problem was that once the skb is created using __build_skb_around, it would reserve some space for skb_shared_info. So if we received a frame which size is at the limit of the page order then the creating will failed because it would not have space to put all the data. Fixes: 2ea1cbac267e ("net: lan966x: Update FDMA to change MTU.") Signed-off-by: Horatiu Vultur --- drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c | 8 ++++++-- drivers/net/ethernet/microchip/lan966x/lan966x_main.c | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c b/drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c index a42035cec611c..c235edd2b182a 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c @@ -668,12 +668,14 @@ static int lan966x_fdma_get_max_mtu(struct lan966x *lan966x) int i; for (i = 0; i < lan966x->num_phys_ports; ++i) { + struct lan966x_port *port; int mtu; - if (!lan966x->ports[i]) + port = lan966x->ports[i]; + if (!port) continue; - mtu = lan966x->ports[i]->dev->mtu; + mtu = lan_rd(lan966x, DEV_MAC_MAXLEN_CFG(port->chip_port)); if (mtu > max_mtu) max_mtu = mtu; } @@ -733,6 +735,8 @@ int lan966x_fdma_change_mtu(struct lan966x *lan966x) max_mtu = lan966x_fdma_get_max_mtu(lan966x); max_mtu += IFH_LEN * sizeof(u32); + max_mtu += SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); + max_mtu += VLAN_HLEN * 2; if (round_up(max_mtu, PAGE_SIZE) / PAGE_SIZE - 1 == lan966x->rx.page_order) diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_main.c b/drivers/net/ethernet/microchip/lan966x/lan966x_main.c index b3070c3fcad0a..20ee5b28f70a5 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_main.c +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_main.c @@ -395,7 +395,7 @@ static int lan966x_port_change_mtu(struct net_device *dev, int new_mtu) err = lan966x_fdma_change_mtu(lan966x); if (err) { - lan_wr(DEV_MAC_MAXLEN_CFG_MAX_LEN_SET(old_mtu), + lan_wr(DEV_MAC_MAXLEN_CFG_MAX_LEN_SET(LAN966X_HW_MTU(old_mtu)), lan966x, DEV_MAC_MAXLEN_CFG(port->chip_port)); dev->mtu = old_mtu; }