From patchwork Sun Oct 23 18:48: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: 8081 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp99750wru; Sun, 23 Oct 2022 11:55:42 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4wggYQj7+5MBoEZV46Gugn5CI8OBGzMHfAVCvMoio24/2mp70edKL5ybJF8Ic8lpp3Vrrt X-Received: by 2002:a17:907:84a:b0:733:735:2b1a with SMTP id ww10-20020a170907084a00b0073307352b1amr24523409ejb.290.1666551342845; Sun, 23 Oct 2022 11:55:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666551342; cv=none; d=google.com; s=arc-20160816; b=Hph/aCdWe9GT8Vi4dSn5SKq0nDZ6sOTlDD0Ty1T5HGsPnVSO4bUGGTrf9TEps+Hpsr omKjdnO/ezJY2rd5KzJE7JF1ReN8GEqxtN3KeiRlBne5fn672TB3BCL5pa0AVeXxpYRg Ej8qV8eqz2zQr5B4z8UexaL9y0jvDJ6IS2A2OWW/j5blTvxdMx9BAylzHjzIIfRcsrMz AfB8Go/Z9ooincSBgYIvpbAbBqK1E/CTcHzz2FaDJk2oLWJg7oL1RLHk7qZoCcAx9CjM 6LVRrwmQfw45BGBW0Xgi4AspK9ovuFDUl+tuiy6vFo34H2hw57JR7tEE83bzuBWB3+jO piAA== 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=XkiCXSkCIJpjdMYcdhSDn/pPIvETvY/6q7bw7UQAwXpFIAabvnWgERT1k6mhljONUQ yJiuBMEv6HoZEywYp7LcNZb9zqK8kvaRgVI9vkhq222tigLE8xDjHHfopQv7HWeLTQ+t 8MpSYc3mhUXEO5KgtPefe1ltMBUyNFlk19TnRIpwraOSaJZ1w6H3V1JdQnPOQ3gGTmMw e+gfYEVA4U6o2aT+CICoSN0Jc3cxRkkYHU/u3vGj1wXI/zlr1XckjC5vmtMcJRFsGElz PmXVM1hOkAnqxRICl0HuKYVk3y6CGyC3D22lDuztCilN7yod5Dr32Dq12kgS4S50/G1s t99Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=cQjek9Db; 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 b9-20020a056402084900b0045d3e06e4d5si28670007edz.389.2022.10.23.11.55.17; Sun, 23 Oct 2022 11:55:42 -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=cQjek9Db; 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 S230430AbiJWSpW (ORCPT + 99 others); Sun, 23 Oct 2022 14:45:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40194 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230369AbiJWSpR (ORCPT ); Sun, 23 Oct 2022 14:45:17 -0400 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A51D5437DD; Sun, 23 Oct 2022 11:45:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1666550716; x=1698086716; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=zO5TaBiovTLxzRxBjR6lBYtEuGdhCJDREHzQQ8LjDVE=; b=cQjek9DboSd3CIAfkP7V4o0RVhwkzdrVR0Yzv4B5v12J7P0afIljoyXY pasetWp6ZBQ37QXRid+unGuyG6iG99glQyJZnG+CDaIeu52P/A6riUbkb MFFaTMOX7B1dvHvgufnbS7dS7IWry+cfLEhwp8PVfTZNWVSv0BRVPnXqy kNCMDLbiHg5PeInXFsSTisD9GhwG4r3d/ygXJ3u+a3AAI8KZS9ixDNXdG t1Sm0hx2ZnzpY8AKQuyPz/uWrTEi9ESuG4SKicIlO0bSebipKbLn285bl MVG9tH8e8/EGCPHZUKH/SqHyN6iYVxMcFKoz5rJ6oTPIe5teIoEF35PDh w==; X-IronPort-AV: E=Sophos;i="5.95,207,1661842800"; d="scan'208";a="180146170" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 23 Oct 2022 11:45:15 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) 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, 23 Oct 2022 11:45:13 -0700 Received: from soft-dev3-1.microsemi.net (10.10.115.15) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.2507.12 via Frontend Transport; Sun, 23 Oct 2022 11:45:12 -0700 From: Horatiu Vultur To: , CC: , , , , , Horatiu Vultur Subject: [PATCH net 1/3] net: lan966x: Fix the MTU calculation Date: Sun, 23 Oct 2022 20:48:36 +0200 Message-ID: <20221023184838.4128061-2-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.38.0 In-Reply-To: <20221023184838.4128061-1-horatiu.vultur@microchip.com> References: <20221023184838.4128061-1-horatiu.vultur@microchip.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.9 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?1747505741032961842?= X-GMAIL-MSGID: =?utf-8?q?1747505741032961842?= 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 23 18:48:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Horatiu Vultur X-Patchwork-Id: 8082 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp100369wru; Sun, 23 Oct 2022 11:57:48 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7aWVCloN1mTQEFYB/afa6/PNORdVs3yI0joQHoz39S9/W7OeGFWB/npg+jL7EzHzAKQS4R X-Received: by 2002:aa7:c78d:0:b0:454:fe1d:8eb1 with SMTP id n13-20020aa7c78d000000b00454fe1d8eb1mr27351042eds.59.1666551468042; Sun, 23 Oct 2022 11:57:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666551468; cv=none; d=google.com; s=arc-20160816; b=vRZcDz4YKLT7jLODpWCl2QvjLaXhRNaUHIqmx95pwT+88PkNhhObpyZAlQ0g+d4R2W QByZJubHyUfgUsZjX1jWhre87Tk4Igz1Es8K+i2mJCfVcVkcCxVjMnde4h6QI5wdCVR7 U7Tob1XVoyrPj7za39rn0ToOQdj2PV3aW+DL83uHESzjjb2SEPdIll+KPSviMbfENZmj mJllqQdU4BjNEFd9Kg4HK0RQOMBRvBqC8CE6ogv0MVFiKJPf3NFbLtp/ov/uh0+UA8bH b/jMBaUn8C3hE07MdalOToRHeeFSq6mFt3DfBp+lu6ltegO8xg1JX/pLBKN6boP2Lufd G7cg== 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=Z6n9MlwphOfC16mihJj57M5hidjJXJbBq++AmuMq+2snxxVxwtnuuqovvos/8lygeh w1ZUzTCKMburphtazi3am34A9Tf+CCT6FjZpsSRnoAE7YcrHw/STTtyHAU60yRgHwjSn zswA5ThxExq+tkFiBUSWwClFMSM0MCHTTpgKmhfscVU3q3+zDQECf48C3/3m6TC3asQX FKNl99zsZoWM3ofJqE0hldu8R4tfIAwHYa8PXUjeBJs8N08Zy93N7ouM/9QU/a1wUpFv lkI9eJSnbXISdgQ7O6lv4i7+/yRRLTa2Sa0uhA8KVMmaHXSWXRYLaiif9QpR5dvjeiQr 080g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=WFiV5Mnf; 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 di22-20020a170906731600b007813594dc31si17177017ejc.523.2022.10.23.11.57.24; Sun, 23 Oct 2022 11:57:48 -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=WFiV5Mnf; 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 S229618AbiJWSp0 (ORCPT + 99 others); Sun, 23 Oct 2022 14:45:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40328 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230353AbiJWSpS (ORCPT ); Sun, 23 Oct 2022 14:45:18 -0400 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A4002481D1; Sun, 23 Oct 2022 11:45:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1666550716; x=1698086716; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=w7uVV0RJ6uV+MAOV6JlyV47tQ54stPcJ90GshRDd7Jk=; b=WFiV5MnfWwAI/vyhWcF/pegvuT+wfuI4OGhengxHs8QVw5iYk4BF0i6r Hat7xo27n4BYkfzdk4XBf6PoW5l0E4j6TC0XN4Bko4SA39rmlYjrnbm+H Megtoq9DoFkfw9RHQzLWPZ5ViHHOwjn/glpSHuVpE+i05JXIs1KxwFFyj yI/kH7Y0KTec0brMUWMgMHl/i6GRf3f3p5/6YO0AckZI13MmpaqSDNHVr 8vdWfE/17mZd1TylP1/Dahu0i9wc+MivQUtpf6vgLUZH2P4lhW6AcgVYL IA+9Ei2L3EkNLcUxKCiRioLHQoL4JiV1RrQUG+jGGpa5VkQ7cLP59EIkB g==; X-IronPort-AV: E=Sophos;i="5.95,207,1661842800"; d="scan'208";a="119978933" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa6.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 23 Oct 2022 11:45:15 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) 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, 23 Oct 2022 11:45:15 -0700 Received: from soft-dev3-1.microsemi.net (10.10.115.15) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.2507.12 via Frontend Transport; Sun, 23 Oct 2022 11:45:14 -0700 From: Horatiu Vultur To: , CC: , , , , , Horatiu Vultur Subject: [PATCH net 2/3] net: lan966x: Adjust maximum frame size when vlan is enabled/disabled Date: Sun, 23 Oct 2022 20:48:37 +0200 Message-ID: <20221023184838.4128061-3-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.38.0 In-Reply-To: <20221023184838.4128061-1-horatiu.vultur@microchip.com> References: <20221023184838.4128061-1-horatiu.vultur@microchip.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.9 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?1747505872309272815?= X-GMAIL-MSGID: =?utf-8?q?1747505872309272815?= 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 23 18:48:38 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Horatiu Vultur X-Patchwork-Id: 8083 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp101170wru; Sun, 23 Oct 2022 12:00:39 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6FjPJb8Lk7+QTn8pv1el9DNHYRXYZ66WH4K7Pgb4jSAnhyvgLJRzmIrlCJr1IBJaUiKyQo X-Received: by 2002:a05:6402:2794:b0:461:d60c:30c7 with SMTP id b20-20020a056402279400b00461d60c30c7mr32009ede.392.1666551639128; Sun, 23 Oct 2022 12:00:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666551639; cv=none; d=google.com; s=arc-20160816; b=vZkNzeE/O0v09zNq5j7NJfwcXWKr0ISDiWhItQ9scbf9+PjwtkEanUswDQinldNcBN pf2tyB2ek02tk74IJRgEITxXi0yigbfL/vdtx+HO2Z647S4f/aCWmdxKIicjJA3agm3R riuQoQnI7bST2kQ404n5uVVdHlFi9i9de+Rfj0Js89h7EkrY0K5+wRm8v2ZG+B2rP4/N WJs8PhaC/z2FjBTn7fPnOkiCaXoiBBhg0BCgn4BB2kMckzg4YhRoQfllOQNXy1BxRQgv CcI5BK4rdJ248vQ4NPZza5nzSgB0GOMavHDpXhy/IXe37J5tOwfZLeDzRBfqDM8ZPKGh KvfQ== 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=6tJvC5dLiRT084RThwz3H0motsvuufXxaUIx4LEWmtI=; b=W947vUc6h2proytwJ8H5LLNL+RXhcwawu20g4nnBqPfs+tx/c8aB+xH2CmowMN8Il/ uMCxcR3qS+6W6TM/pYR5zga9iaDDaqkGaD8m7pubUUj5rHtR4RDbFKAKF5oALGrSQ7JT t5ixr2WDcCI6blARM0ka35sXzEMjC1ZEXe/Yo6rRAfP14Z1RJgc5+V9ZsutD+N6kLJM9 oknx16EhW2is5t5Led7ojoupm+2CwqE8Z6T909vX4ZiZ8UNkMFw1zsgCt7Uqmr26t7kV 2KNccG2tTQRD+Y3LH/cI7OvlcqyRD7wyOV4tw5XikqJYHTA7JDaxIPYAlxhZ/uwEWR3K RzZg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=WUrNW6X8; 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 di22-20020a170906731600b007813594dc31si17177017ejc.523.2022.10.23.12.00.15; Sun, 23 Oct 2022 12:00:39 -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=WUrNW6X8; 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 S230433AbiJWSpb (ORCPT + 99 others); Sun, 23 Oct 2022 14:45:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40378 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230395AbiJWSpT (ORCPT ); Sun, 23 Oct 2022 14:45:19 -0400 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5618E3FEEC; Sun, 23 Oct 2022 11:45:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1666550719; x=1698086719; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=eVE2lQ5w+2D1pFZYr6+909z4xn/w37Zq+2kgclL7XFo=; b=WUrNW6X8J04JeyR55yOjf+DQNgeEAkGx9wjCCcHtw60YaeIiPyyGWOtQ dQdMwhXgFK5G8PsmjoK/dkI/HcJpaZI7iyfcwSq4NRAPZRTx7/ZrJxFKU vKGpBR8JMElASA1gQG/EywrruvyCzowwBfXtWiZcA2/pMi2pwHuq1KHaZ 23ZLI9PL1x4nAUcrSV6CLKAdQ0Sijbx0oa6OmEYeVdQfYJ30JgbSAP7bA 6wk7wNwmb2/oTAkme5tnciEn6gZ+Xn97jXADiLnSKDQPq3X8c0/9E7hCW 2KqBkAMOyP+xDl6VV/jAN06bhqsbF7ys/rJssCiG2IEWCBp4meoiKnYRl A==; X-IronPort-AV: E=Sophos;i="5.95,207,1661842800"; d="scan'208";a="180146172" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 23 Oct 2022 11:45:18 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) 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, 23 Oct 2022 11:45:17 -0700 Received: from soft-dev3-1.microsemi.net (10.10.115.15) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.2507.12 via Frontend Transport; Sun, 23 Oct 2022 11:45:16 -0700 From: Horatiu Vultur To: , CC: , , , , , Horatiu Vultur Subject: [PATCH net 3/3] net: lan966x: Fix FDMA when MTU is changed Date: Sun, 23 Oct 2022 20:48:38 +0200 Message-ID: <20221023184838.4128061-4-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.38.0 In-Reply-To: <20221023184838.4128061-1-horatiu.vultur@microchip.com> References: <20221023184838.4128061-1-horatiu.vultur@microchip.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.9 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?1747506051618136803?= X-GMAIL-MSGID: =?utf-8?q?1747506051618136803?= 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 | 7 +++++-- drivers/net/ethernet/microchip/lan966x/lan966x_main.c | 2 +- 2 files changed, 6 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..5a5603f9e9fd3 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,7 @@ 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)); 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; }