Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp6757541ybx; Mon, 11 Nov 2019 14:16:38 -0800 (PST) X-Google-Smtp-Source: APXvYqzW7E+LGchIMraJlAv3doOIpB6tD5DA6FW4M9qUFVe9b+lNtczAGEuuJeA5Uwwym1ItM3A0 X-Received: by 2002:a17:906:3e90:: with SMTP id a16mr23741671ejj.265.1573510598525; Mon, 11 Nov 2019 14:16:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573510598; cv=none; d=google.com; s=arc-20160816; b=nWoNu8JD3/JBTn/YyMCirMcVRZe/bu/wCdVmZcy1fluideCewPQw2KoF9w1y1AVlwM VS/rze5Wn3d7khp/N/7G2Ww98Vx6eVq4CBhTsyd9duvvdufFOhq4Yz8gy4gTKUBP2Y2m YREjJuj9oMiLCS2VwhFWUTlYVvbcQ7zt+3XYR29nYhyffn6+wh2LjWJ2zyd37tCqW6zc eA5MO01Jzbsc2Y+wL5S3sLankfUTHcu49tUF51CwXE1zMegC7Ge8ESvb6HK3hxANFURd 6gJ0yG2AVigCjp4bdr4Kyn2JmTutFARTDGOGyLEVwfzMp00x5cdJv9xWyknrMXb6JRhM H5Dg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature; bh=JRXrodVHYhiGAfwYVYOvpqNqKsOaJKtvlzrom6mvWYM=; b=pKBmCcmTpyC3+2WzCMSKgbZm1FctOye6mVWtV5UdenVsqd7RAemVw7J+djy4Zgb6o2 7fNT5y/LAhKkVKnpLXNgL8cSsQDQtp964fnIYd9tez3e3rtZe81uiSLqcFZ+t6Ru16SV Q89hy/zhkS1JULGc/DZbDIR7CLN6ZV4esz45HaaXjNk5oirBkF8bvaAXYQb2U9CCHily iDkKdZMsgCjMz1EZ5Xd25m2HCVOFiME/Oy2dKXm1vHSVGg457Sc7QuIwH5bV8ZF5VpBB QjrNtphpdn1Yx9hzpXekRDabJtZjFmXldkdFVV2zFEtJac9ScsuZJJFuGAxxMmb/qSK6 buKg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cumulusnetworks.com header.s=google header.b=UysnqbJj; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cumulusnetworks.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x31si12350758eda.334.2019.11.11.14.16.14; Mon, 11 Nov 2019 14:16:38 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@cumulusnetworks.com header.s=google header.b=UysnqbJj; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cumulusnetworks.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727102AbfKKWPb (ORCPT + 99 others); Mon, 11 Nov 2019 17:15:31 -0500 Received: from mail-lf1-f68.google.com ([209.85.167.68]:38250 "EHLO mail-lf1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726916AbfKKWPb (ORCPT ); Mon, 11 Nov 2019 17:15:31 -0500 Received: by mail-lf1-f68.google.com with SMTP id q28so11123894lfa.5 for ; Mon, 11 Nov 2019 14:15:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cumulusnetworks.com; s=google; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=JRXrodVHYhiGAfwYVYOvpqNqKsOaJKtvlzrom6mvWYM=; b=UysnqbJjbZklK2plaqyIEe+XW5WofM07UNZ/iralSzFfBCjam7qpOU2k0pD/PSeHMh 6a/D31RBqtZB9pgmEoumiBOjb8orhAaDSK7pXCUApMgFV0LdjwZbELZPs+cxaiPfonUR 2pdP//ukce48f3YrL24RkhoCF99krNL+g2GKY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=JRXrodVHYhiGAfwYVYOvpqNqKsOaJKtvlzrom6mvWYM=; b=GToS+4PIiO3u2pAjsNBO2Q5TxgOh/X1AlTmnmBYISaUTaYxp7lJ+ku+zh5fKvdy5CB BTSclsEC6+vNQhgxFvpG3+LDbYDR+Ek0jN6OmB2tRGmaDoAe1gtEkFlU2oMpDaGq7SeN 70JSP0u8BAziZA9dHo4M+TNMaqXL2PTrXKb9PDImbwZqcu0vM+zTytnN7tFuHHfgu6wc 4udTFwFyX/ZhFXO1AZ0KNTANeeylWp2qGzs1+REbSWPSTumcUGGA+BV1aiMhQulMz6Fy YccuqBYrZcA0P3YS52ciDhS3+ur4VwUEhTGCOVCHmpHpLrZ/XhXZUNhP3knqu4HToe56 E9YQ== X-Gm-Message-State: APjAAAV562LCSQwFy3jWMS1jZGm3vthYlAtD3479u9BN1Qhto/gg8eUi k724jT9L/ooNh3mZiMfcJD0lBBSgBdc= X-Received: by 2002:ac2:4a8a:: with SMTP id l10mr16950312lfp.185.1573510527947; Mon, 11 Nov 2019 14:15:27 -0800 (PST) Received: from [192.168.0.107] (84-238-136-197.ip.btc-net.bg. [84.238.136.197]) by smtp.gmail.com with ESMTPSA id r19sm7432742lfi.13.2019.11.11.14.15.25 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 11 Nov 2019 14:15:27 -0800 (PST) Subject: Re: [PATCH net-next 2/2] bridge: implement get_link_ksettings ethtool method To: Matthias Schiffer , netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org, davem@davemloft.net, roopa@cumulusnetworks.com References: <8e414e98928aba7f11ea997498fb18af05434f5f.1573321597.git.mschiffer@universe-factory.net> From: Nikolay Aleksandrov Message-ID: <5da07a98-bae3-2d67-d60b-2e58be9d8377@cumulusnetworks.com> Date: Tue, 12 Nov 2019 00:15:24 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.1 MIME-Version: 1.0 In-Reply-To: <8e414e98928aba7f11ea997498fb18af05434f5f.1573321597.git.mschiffer@universe-factory.net> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 09/11/2019 19:54, Matthias Schiffer wrote: > We return the maximum speed of all active ports. This matches how the link > speed would give an upper limit for traffic to/from any single peer if the > bridge were replaced with a hardware switch. > > Signed-off-by: Matthias Schiffer > --- > net/bridge/br_device.c | 37 +++++++++++++++++++++++++++++++++++-- > 1 file changed, 35 insertions(+), 2 deletions(-) > > diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c > index e804a3016902..e8a2d0c13592 100644 > --- a/net/bridge/br_device.c > +++ b/net/bridge/br_device.c > @@ -263,6 +263,38 @@ static void br_getinfo(struct net_device *dev, struct ethtool_drvinfo *info) > strlcpy(info->bus_info, "N/A", sizeof(info->bus_info)); > } > > +static int br_get_link_ksettings(struct net_device *dev, > + struct ethtool_link_ksettings *cmd) > +{ > + struct net_bridge *br = netdev_priv(dev); > + struct net_bridge_port *p; > + > + cmd->base.duplex = DUPLEX_UNKNOWN; > + cmd->base.port = PORT_OTHER; > + cmd->base.speed = SPEED_UNKNOWN; > + > + list_for_each_entry(p, &br->port_list, list) { > + struct ethtool_link_ksettings ecmd; > + struct net_device *pdev = p->dev; > + > + if (!netif_running(pdev) || !netif_oper_up(pdev)) > + continue; > + > + if (__ethtool_get_link_ksettings(pdev, &ecmd)) > + continue; > + > + if (ecmd.base.speed == (__u32)SPEED_UNKNOWN) > + continue; > + > + if (cmd->base.speed == (__u32)SPEED_UNKNOWN || > + cmd->base.speed < ecmd.base.speed) { > + cmd->base.speed = ecmd.base.speed; > + } > + } > + > + return 0; > +} > + > static netdev_features_t br_fix_features(struct net_device *dev, > netdev_features_t features) > { > @@ -365,8 +397,9 @@ static int br_del_slave(struct net_device *dev, struct net_device *slave_dev) > } > > static const struct ethtool_ops br_ethtool_ops = { > - .get_drvinfo = br_getinfo, > - .get_link = ethtool_op_get_link, > + .get_drvinfo = br_getinfo, > + .get_link = ethtool_op_get_link, > + .get_link_ksettings = br_get_link_ksettings, > }; > > static const struct net_device_ops br_netdev_ops = { > Code-wise this is ok, but it could cause potential issues because devices will suddenly have speed (without duplex), and macvlan/8021q are examples which use the lowerdev's get_link_ksettings. I searched for potential problems with some user-space software but couldn't find any, so I hope it will be fine. :) Let's see where this goes. Acked-by: Nikolay Aleksandrov