Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp185897pxb; Wed, 3 Nov 2021 02:23:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw1mCQtLe11+pubk4hvnrMVreOKwSH+UFNUQC9SaMH247W/d4lUOHHK4oY8nb76Ywfcjx27 X-Received: by 2002:a05:6e02:164d:: with SMTP id v13mr6284302ilu.167.1635931380297; Wed, 03 Nov 2021 02:23:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635931380; cv=none; d=google.com; s=arc-20160816; b=kaFrfHEgcze+v4YXJ67+JKRD27N3UELUixSolbI8aEYeJ9eAY0QVEZRZyW9gD3avsz ZzxLK+z3Tbbcixs4RhiO3jxsK+9fSJLJyi5V1YkTfo8xMxYOby+ulhDo3iUYJ0leJfpK N+Y0zjL1/kfWmJwOSOsXvKoLbn6q8vsvF9NAvia/6VCfBCaciVbDG+QM+W3Rx1kyAQLb mSI9dwHZRpAcmaAIQ8yeI5fA0TTFzlB0Il2Jq9xYcrgGC2IlHxy9O0Y+FrQt6sZAeNQP 0xk4cqxfCRrklH9kDyCGsImvAHeYKbUZDAjm6YqYPJuDjUM8X8qfJ4g9Zn7clXLk70SJ fxlw== 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; bh=ut5cMKKYQw+bqq3hWJVhff7i/0Hqrh+VJBO+4KS8p68=; b=mtzAAFKmOSyV9ZiZ/MENIG2B9liNajHOjlshQJo/fnaGTONy/2cTDaCubjeaLyKSGR +u73E81jMicIZ4RvwZ7H/Xa36VdIU9IGDugy63+50o7JVn5N9RUMtCi0efyXo/+bKqA8 E6+FYCm2l9v1vlQVRuhT9Y/qdB6v8MVka0NVOI7r58SUnaaBjI6sCGTLhdffp+5r6Zus JHRb8HU/eLy2DWh83JZrJL1ji61Hxu8ADVku/YOJQyreQwkW60uL4R6Hnp5kCZv7vFfs MHqmOcwri7qq+IrbKYalK8gaA639wb26SA20pYQuLhMkXDeknZXkFoV66AwslUckvVk/ dosQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g14si3608999ioo.113.2021.11.03.02.22.45; Wed, 03 Nov 2021 02:23:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232174AbhKCJXS (ORCPT + 99 others); Wed, 3 Nov 2021 05:23:18 -0400 Received: from relay11.mail.gandi.net ([217.70.178.231]:43141 "EHLO relay11.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232100AbhKCJXH (ORCPT ); Wed, 3 Nov 2021 05:23:07 -0400 Received: (Authenticated sender: clement.leger@bootlin.com) by relay11.mail.gandi.net (Postfix) with ESMTPSA id 9A87F100003; Wed, 3 Nov 2021 09:20:29 +0000 (UTC) From: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= To: "David S. Miller" , Jakub Kicinski , Rob Herring , Vladimir Oltean , Claudiu Manoil , Alexandre Belloni , UNGLinuxDriver@microchip.com, Andrew Lunn Cc: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= , netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Thomas Petazzoni Subject: [PATCH v2 4/6] net: ocelot: add support for ndo_change_mtu Date: Wed, 3 Nov 2021 10:19:41 +0100 Message-Id: <20211103091943.3878621-5-clement.leger@bootlin.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211103091943.3878621-1-clement.leger@bootlin.com> References: <20211103091943.3878621-1-clement.leger@bootlin.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This commit adds support for changing MTU for the ocelot register based interface. For ocelot, JUMBO frame size can be set up to 25000 bytes but has been set to 9000 which is a saner value and allow for maximum gain of performances. Frames larger than 9000 bytes do not yield a noticeable improvement. Signed-off-by: Clément Léger --- drivers/net/ethernet/mscc/ocelot.h | 2 ++ drivers/net/ethernet/mscc/ocelot_net.c | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/drivers/net/ethernet/mscc/ocelot.h b/drivers/net/ethernet/mscc/ocelot.h index e43da09b8f91..ba0dec7dd64f 100644 --- a/drivers/net/ethernet/mscc/ocelot.h +++ b/drivers/net/ethernet/mscc/ocelot.h @@ -32,6 +32,8 @@ #define OCELOT_PTP_QUEUE_SZ 128 +#define OCELOT_JUMBO_MTU 9000 + struct ocelot_port_tc { bool block_shared; unsigned long offload_cnt; diff --git a/drivers/net/ethernet/mscc/ocelot_net.c b/drivers/net/ethernet/mscc/ocelot_net.c index d76def435b23..5916492fd6d0 100644 --- a/drivers/net/ethernet/mscc/ocelot_net.c +++ b/drivers/net/ethernet/mscc/ocelot_net.c @@ -482,6 +482,18 @@ static netdev_tx_t ocelot_port_xmit(struct sk_buff *skb, struct net_device *dev) return NETDEV_TX_OK; } +static int ocelot_change_mtu(struct net_device *dev, int new_mtu) +{ + struct ocelot_port_private *priv = netdev_priv(dev); + struct ocelot_port *ocelot_port = &priv->port; + struct ocelot *ocelot = ocelot_port->ocelot; + + ocelot_port_set_maxlen(ocelot, priv->chip_port, new_mtu); + WRITE_ONCE(dev->mtu, new_mtu); + + return 0; +} + enum ocelot_action_type { OCELOT_MACT_LEARN, OCELOT_MACT_FORGET, @@ -768,6 +780,7 @@ static const struct net_device_ops ocelot_port_netdev_ops = { .ndo_open = ocelot_port_open, .ndo_stop = ocelot_port_stop, .ndo_start_xmit = ocelot_port_xmit, + .ndo_change_mtu = ocelot_change_mtu, .ndo_set_rx_mode = ocelot_set_rx_mode, .ndo_set_mac_address = ocelot_port_set_mac_address, .ndo_get_stats64 = ocelot_get_stats64, @@ -1699,6 +1712,7 @@ int ocelot_probe_port(struct ocelot *ocelot, int port, struct regmap *target, dev->netdev_ops = &ocelot_port_netdev_ops; dev->ethtool_ops = &ocelot_ethtool_ops; + dev->max_mtu = OCELOT_JUMBO_MTU; dev->hw_features |= NETIF_F_HW_VLAN_CTAG_FILTER | NETIF_F_RXFCS | NETIF_F_HW_TC; -- 2.33.0