From patchwork Thu Nov 9 09:03:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linus Walleij X-Patchwork-Id: 13450825 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3CA71C4332F for ; Thu, 9 Nov 2023 09:03:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=O4G6er/huQvgzBW/OEPphJLrfYZbpwmU4Vwsj7I6hAw=; b=Z+O/nwoAy5u4SS fdp/4GGURAbMYbKp2MI95dJunrVyVD+ojOK1uso5mSMtqjLiE0EPVbJpzjAaQ3qKqVdyGM/dvHHJa dThrCfAb8k6XisIBaKT9CfjbzN54E38cIF2gbvX2CrrpJ00KP6RfrGSlNm9Fe/vGHxnFBGAp8g0D5 7Qg1yXmXrImatZzS0awJ8NtT6sWNESjhMJubQ4CIM0XPwhq/p0CWk619lkmT33bYw1KjgmytxI8w1 edjoyIB4IuuBBV8X8NRE43PgA2MnK9ddcSo4nAn4WkgwiZLHIMOK0sheqnfmlgNKR5TqqO7EjQUYr x4hENM8mVAYUKEqzeqqw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r10wg-005iP3-0H; Thu, 09 Nov 2023 09:03:26 +0000 Received: from mail-lj1-x22a.google.com ([2a00:1450:4864:20::22a]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r10wY-005iK4-26 for linux-arm-kernel@lists.infradead.org; Thu, 09 Nov 2023 09:03:21 +0000 Received: by mail-lj1-x22a.google.com with SMTP id 38308e7fff4ca-2c509d5ab43so8202951fa.0 for ; Thu, 09 Nov 2023 01:03:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1699520597; x=1700125397; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=3LORq79d2KWiO2zsyhGNgwevjLWkh4YlRcW/4qVJO5g=; b=CHIFKcIRX2m7SUbdV7I49X9E3/C0j3FLOCHpeRb2h6Nh6lUh6Gksheoll0hfPJvxXo T0BnF18UZhGdDBLemUW+3dmCigG7HfyqfdZAK6oIpAA3Evs7x826t/mdGlqY0irLZrTH uqMJdSpP16J6jiMBKLSgwm3rsUSWbKU+RimKWmEtHrWtlYPiRFx/hir69NDEo1hlCZgW w6XuHihxWYQLQMUpWEk79xwiIxF4O45evDWxbplsBFn5rxnKk5dEx+No7uaT6HLRButp y42QIeSKeDtmjPSqiKXq1/nI6w7U6R4B+5cQLYGd3Rjp8hyAKkOnYQlQdnbLrqM1/gd2 /qUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699520597; x=1700125397; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3LORq79d2KWiO2zsyhGNgwevjLWkh4YlRcW/4qVJO5g=; b=REwy0MXgfbgwsBODs8OBfEYstm3rKvkqnQY5cWb2Y5hBnwApFqZie+DoLAxNH1PvA4 ezj7wvEmGHGZPp/BumR5IM1fXYtGWbbumqauAJC8hSezFZgyiMQZPBbGuEXdYkgfmJK/ X0mpFA8NUUIDgwqNzfFvyw9buQWBrbyw2/EwIeb01xWNdEqv7TwHgEU/dzO1KoazTiTs ym95FbfssFrr/7t1FbQC5EmV0UtJk+fYWwkRXqpfPZUfGNyGgkVP9z4/9MjAdOwg/8C/ OxEDgMCfW0ItzQHig9/J8CUcoK59WMdnyI+evAVHFb48a4T+SqUMoAESnab4B38kim0H v3PA== X-Gm-Message-State: AOJu0YybvyfTE47etafGQLKdUymRKxPlvhBNvlzAv6z7wZVxuEJDsauF a2wAeQrerStXO8ERnfeNl7WmYr8t9wIXYgzmYp0= X-Google-Smtp-Source: AGHT+IF2mb2GZBOKU5NXn4xWX1KfmPMioQ/7KZHFjewuwHxEgnC77hOGACXU+QAP8LrJWhu2BAZcXw== X-Received: by 2002:a2e:80d6:0:b0:2c5:a21:8388 with SMTP id r22-20020a2e80d6000000b002c50a218388mr3713516ljg.29.1699520596806; Thu, 09 Nov 2023 01:03:16 -0800 (PST) Received: from [127.0.1.1] ([85.235.12.238]) by smtp.gmail.com with ESMTPSA id h19-20020a05651c159300b002bbacc6c523sm2212383ljq.49.2023.11.09.01.03.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Nov 2023 01:03:16 -0800 (PST) From: Linus Walleij Date: Thu, 09 Nov 2023 10:03:14 +0100 Subject: [PATCH net v4 3/3] net: ethernet: cortina: Fix MTU max setting MIME-Version: 1.0 Message-Id: <20231109-gemini-largeframe-fix-v4-3-6e611528db08@linaro.org> References: <20231109-gemini-largeframe-fix-v4-0-6e611528db08@linaro.org> In-Reply-To: <20231109-gemini-largeframe-fix-v4-0-6e611528db08@linaro.org> To: Hans Ulli Kroll , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?utf-8?b?TWljaGHFgiBNaXJvc8WCYXc=?= , Vladimir Oltean , Andrew Lunn Cc: linux-arm-kernel@lists.infradead.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Linus Walleij X-Mailer: b4 0.12.4 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231109_010318_700586_2C8AFEDF X-CRM114-Status: GOOD ( 16.08 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The RX max frame size is over 10000 for the Gemini ethernet, but the TX max frame size is actually just 2047 (0x7ff after checking the datasheet). Reflect this in what we offer to Linux, cap the MTU at the TX max frame minus ethernet headers. We delete the code disabling the hardware checksum for large MTUs as netdev->mtu can no longer be larger than netdev->max_mtu meaning the if()-clause in gmac_fix_features() is never true. Fixes: 4d5ae32f5e1e ("net: ethernet: Add a driver for Gemini gigabit ethernet") Reviewed-by: Andrew Lunn Signed-off-by: Linus Walleij Reviewed-by: Vladimir Oltean --- drivers/net/ethernet/cortina/gemini.c | 17 ++++------------- drivers/net/ethernet/cortina/gemini.h | 2 +- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/drivers/net/ethernet/cortina/gemini.c b/drivers/net/ethernet/cortina/gemini.c index dbbccef86516..636949737d72 100644 --- a/drivers/net/ethernet/cortina/gemini.c +++ b/drivers/net/ethernet/cortina/gemini.c @@ -2000,15 +2000,6 @@ static int gmac_change_mtu(struct net_device *netdev, int new_mtu) return 0; } -static netdev_features_t gmac_fix_features(struct net_device *netdev, - netdev_features_t features) -{ - if (netdev->mtu + ETH_HLEN + VLAN_HLEN > MTU_SIZE_BIT_MASK) - features &= ~GMAC_OFFLOAD_FEATURES; - - return features; -} - static int gmac_set_features(struct net_device *netdev, netdev_features_t features) { @@ -2234,7 +2225,6 @@ static const struct net_device_ops gmac_351x_ops = { .ndo_set_mac_address = gmac_set_mac_address, .ndo_get_stats64 = gmac_get_stats64, .ndo_change_mtu = gmac_change_mtu, - .ndo_fix_features = gmac_fix_features, .ndo_set_features = gmac_set_features, }; @@ -2486,11 +2476,12 @@ static int gemini_ethernet_port_probe(struct platform_device *pdev) netdev->hw_features = GMAC_OFFLOAD_FEATURES; netdev->features |= GMAC_OFFLOAD_FEATURES | NETIF_F_GRO; - /* We can handle jumbo frames up to 10236 bytes so, let's accept - * payloads of 10236 bytes minus VLAN and ethernet header + /* We can receive jumbo frames up to 10236 bytes but only + * transmit 2047 bytes so, let's accept payloads of 2047 + * bytes minus VLAN and ethernet header */ netdev->min_mtu = ETH_MIN_MTU; - netdev->max_mtu = 10236 - VLAN_ETH_HLEN; + netdev->max_mtu = MTU_SIZE_BIT_MASK - VLAN_ETH_HLEN; port->freeq_refill = 0; netif_napi_add(netdev, &port->napi, gmac_napi_poll); diff --git a/drivers/net/ethernet/cortina/gemini.h b/drivers/net/ethernet/cortina/gemini.h index 99efb1155743..24bb989981f2 100644 --- a/drivers/net/ethernet/cortina/gemini.h +++ b/drivers/net/ethernet/cortina/gemini.h @@ -502,7 +502,7 @@ union gmac_txdesc_3 { #define SOF_BIT 0x80000000 #define EOF_BIT 0x40000000 #define EOFIE_BIT BIT(29) -#define MTU_SIZE_BIT_MASK 0x1fff +#define MTU_SIZE_BIT_MASK 0x7ff /* Max MTU 2047 bytes */ /* GMAC Tx Descriptor */ struct gmac_txdesc {