From patchwork Tue Jun 13 17:18:27 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Magnus Damm X-Patchwork-Id: 775364 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3wnGmf39cYz9s81 for ; Wed, 14 Jun 2017 03:22:42 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="npMXanBM"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752615AbdFMRWV (ORCPT ); Tue, 13 Jun 2017 13:22:21 -0400 Received: from mail-pf0-f194.google.com ([209.85.192.194]:36421 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751822AbdFMRWU (ORCPT ); Tue, 13 Jun 2017 13:22:20 -0400 Received: by mail-pf0-f194.google.com with SMTP id y7so22715754pfd.3; Tue, 13 Jun 2017 10:22:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:date:message-id:subject; bh=hbcYsF8jt03PSQB7o7ueAIG45P+Dd0k6qNk5VVv1u8w=; b=npMXanBMo2AtvWFh5Dqt2me+eTInGeLTpfe9vzcAZ6XYVFmRNC+flQkNezbS7QHDI5 y2WrPV2ddcguKqqZr/87C4gI1Bvycqbl6mvLwNuhV/syAWMA3opRLXPgpV+T1aBVCrms i+4BoUuDItaoKN4S/Z9zVgu/iMXipxFmGOQAKoJ7boAfqSwsXGgc95rxtD1wNDmr6UlV TALDdwOb/qjG8m+PeGd3hhlmhL1jdBD6gepnz4LSGS1TA8+hsRwnIPoA2ZLI6MkrAY2+ 4b1QY/GytppyQWJKEp8t0Q33lnW+KPnaBuo/udmswJhEwBiiJPaTzV6c0Vo57g9XcFtu s+zg== 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:date:message-id:subject; bh=hbcYsF8jt03PSQB7o7ueAIG45P+Dd0k6qNk5VVv1u8w=; b=MuhUkLpffyP7UAyJzf987VXAD8yvNMdWZhXI2Z7Q1ygWVlFoHGU1QUKy232VaQb1rv AT9uvQL9PJgJU9lhfXvDQnvNe2WKvLW5j4x2Sb2dnrbMTfzUaslX3qlE75OrJCWxcY3a ZkPRSnX2vlyz+5jgEYdbispJT0i4sK1jk3zobR4oEIuiM2fVffCYhM5Ar+PTt/jvbMMk CPj07dQ9Bwez3UJVoJ65TpZZtWGjTquCGxp1beQxQBzNDGV4O9+DdL32NOiapN656d60 5KtmarP2e83r24iVbiZlow9VzKf8lBLeqBgyAxaVAmRvLR7Ji80gw33CT49a3G5IWjVm cqMg== X-Gm-Message-State: AKS2vOwNx/qUfsWjk6Zl0+nkHpGv+WrtIWEVbsn2j6+DPIbBGOep9+KD bZgPeD+XIgq7fTYoFdE= X-Received: by 10.99.129.66 with SMTP id t63mr722669pgd.28.1497374539299; Tue, 13 Jun 2017 10:22:19 -0700 (PDT) Received: from [127.0.0.1] (s214090.ppp.asahi-net.or.jp. [220.157.214.90]) by smtp.gmail.com with ESMTPSA id b82sm28662977pfd.111.2017.06.13.10.22.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 13 Jun 2017 10:22:17 -0700 (PDT) From: Magnus Damm To: netdev@vger.kernel.org Cc: Magnus Damm , linux-kernel@vger.kernel.org, davem@davemloft.net Date: Wed, 14 Jun 2017 02:18:27 +0900 Message-Id: <149737430797.28477.9215445312169809396.sendpatchset@little-apple> Subject: [PATCH] via-rhine: add support for changing MTU Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Magnus Damm Allow adjusting the MTU for via-rhine devices in case of no TX alignment buffer is used. Lightly tested on ALIX2D13 hardware by making use of VXLAN with MTU set to 1500 on top of via-rhine devices with 1550 MTU. Without this patch the VXLAN MTU is limited to less than 1500. Signed-off-by: Magnus Damm --- Developed on top of next-20170613 drivers/net/ethernet/via/via-rhine.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) --- 0001/drivers/net/ethernet/via/via-rhine.c +++ work/drivers/net/ethernet/via/via-rhine.c 2017-06-14 02:05:25.410607110 +0900 @@ -518,6 +518,7 @@ static void rhine_get_stats64(struct net static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); static const struct ethtool_ops netdev_ethtool_ops; static int rhine_close(struct net_device *dev); +static int rhine_change_mtu(struct net_device *dev, int new_mtu); static int rhine_vlan_rx_add_vid(struct net_device *dev, __be16 proto, u16 vid); static int rhine_vlan_rx_kill_vid(struct net_device *dev, @@ -894,6 +895,7 @@ static const struct net_device_ops rhine .ndo_set_mac_address = eth_mac_addr, .ndo_do_ioctl = netdev_ioctl, .ndo_tx_timeout = rhine_tx_timeout, + .ndo_change_mtu = rhine_change_mtu, .ndo_vlan_rx_add_vid = rhine_vlan_rx_add_vid, .ndo_vlan_rx_kill_vid = rhine_vlan_rx_kill_vid, #ifdef CONFIG_NET_POLL_CONTROLLER @@ -981,6 +983,14 @@ static int rhine_init_one_common(struct NETIF_F_HW_VLAN_CTAG_RX | NETIF_F_HW_VLAN_CTAG_FILTER; + /* Allow MTU configuration as long as TX alignment buffer is unused */ + if (!(rp->quirks & rqRhineI)) { + /* Packets less than 64 octets will raise RDES0.RUNT. */ + dev->min_mtu = ETH_ZLEN - ETH_HLEN; + /* Hardware has 11 bits of RDES0.Rx_Length including FCS. */ + dev->max_mtu = 0x1fff - ETH_HLEN - ETH_FCS_LEN; + } + /* dev->name not defined before register_netdev()! */ rc = register_netdev(dev); if (rc) @@ -1399,6 +1409,15 @@ static void rhine_set_carrier(struct mii mii->force_media, netif_carrier_ok(dev)); } +static int rhine_change_mtu(struct net_device *dev, int new_mtu) +{ + if (dev->flags & IFF_UP) + return -EBUSY; + + dev->mtu = new_mtu; + return 0; +} + /** * rhine_set_cam - set CAM multicast filters * @ioaddr: register block of this Rhine