From: Danielle Ratson <danieller@nvidia.com>
To: <netdev@vger.kernel.org>
Cc: <davem@davemloft.net>, <kuba@kernel.org>, <jiri@nvidia.com>,
<andrew@lunn.ch>, <f.fainelli@gmail.com>, <mkubecek@suse.cz>,
<mlxsw@nvidia.com>, <idosch@nvidia.com>,
Danielle Ratson <danieller@nvidia.com>
Subject: [PATCH net-next v3 3/7] ethtool: Expose the number of lanes in use
Date: Wed, 20 Jan 2021 11:37:09 +0200 [thread overview]
Message-ID: <20210120093713.4000363-4-danieller@nvidia.com> (raw)
In-Reply-To: <20210120093713.4000363-1-danieller@nvidia.com>
Currently, ethtool does not expose how many lanes are used when the
link is up.
After adding a possibility to advertise or force a specific number of
lanes, the lanes in use value can be either the maximum width of the port
or below.
Extend ethtool to expose the number of lanes currently in use for
drivers that support it.
For example:
$ ethtool -s swp1 speed 100000 lanes 4
$ ethtool -s swp2 speed 100000 lanes 4
$ ip link set swp1 up
$ ip link set swp2 up
$ ethtool swp1
Settings for swp1:
Supported ports: [ FIBRE Backplane ]
Supported link modes: 1000baseT/Full
10000baseT/Full
1000baseKX/Full
10000baseKR/Full
10000baseR_FEC
40000baseKR4/Full
40000baseCR4/Full
40000baseSR4/Full
40000baseLR4/Full
25000baseCR/Full
25000baseKR/Full
25000baseSR/Full
50000baseCR2/Full
50000baseKR2/Full
100000baseKR4/Full
100000baseSR4/Full
100000baseCR4/Full
100000baseLR4_ER4/Full
50000baseSR2/Full
10000baseCR/Full
10000baseSR/Full
10000baseLR/Full
10000baseER/Full
50000baseKR/Full
50000baseSR/Full
50000baseCR/Full
50000baseLR_ER_FR/Full
50000baseDR/Full
100000baseKR2/Full
100000baseSR2/Full
100000baseCR2/Full
100000baseLR2_ER2_FR2/Full
100000baseDR2/Full
200000baseKR4/Full
200000baseSR4/Full
200000baseLR4_ER4_FR4/Full
200000baseDR4/Full
200000baseCR4/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 1000baseT/Full
10000baseT/Full
1000baseKX/Full
1000baseKX/Full
10000baseKR/Full
10000baseR_FEC
40000baseKR4/Full
40000baseCR4/Full
40000baseSR4/Full
40000baseLR4/Full
25000baseCR/Full
25000baseKR/Full
25000baseSR/Full
50000baseCR2/Full
50000baseKR2/Full
100000baseKR4/Full
100000baseSR4/Full
100000baseCR4/Full
100000baseLR4_ER4/Full
50000baseSR2/Full
10000baseCR/Full
10000baseSR/Full
10000baseLR/Full
10000baseER/Full
200000baseKR4/Full
200000baseSR4/Full
200000baseLR4_ER4_FR4/Full
200000baseDR4/Full
200000baseCR4/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Advertised link modes: 100000baseKR4/Full
100000baseSR4/Full
100000baseCR4/Full
100000baseLR4_ER4/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: 100000Mb/s
Lanes: 4
Duplex: Full
Auto-negotiation: on
Port: Direct Attach Copper
PHYAD: 0
Transceiver: internal
Link detected: yes
Signed-off-by: Danielle Ratson <danieller@nvidia.com>
---
Notes:
v3:
* Change the condition for supporting the lanes parameter.
v2:
* Reword commit message.
* Since now we get a link mode from driver, instead of each
parameter separately, simply derive lanes from it.
net/ethtool/linkmodes.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/net/ethtool/linkmodes.c b/net/ethtool/linkmodes.c
index caf9111c5270..0c18f8eda63d 100644
--- a/net/ethtool/linkmodes.c
+++ b/net/ethtool/linkmodes.c
@@ -45,6 +45,9 @@ static int linkmodes_prepare_data(const struct ethnl_req_info *req_base,
goto out;
}
+ if (!dev->ethtool_ops->cap_link_lanes_supported)
+ data->ksettings.lanes = ETHTOOL_LANES_UNKNOWN;
+
data->peer_empty =
bitmap_empty(data->ksettings.link_modes.lp_advertising,
__ETHTOOL_LINK_MODE_MASK_NBITS);
@@ -65,6 +68,7 @@ static int linkmodes_reply_size(const struct ethnl_req_info *req_base,
len = nla_total_size(sizeof(u8)) /* LINKMODES_AUTONEG */
+ nla_total_size(sizeof(u32)) /* LINKMODES_SPEED */
+ + nla_total_size(sizeof(u32)) /* LINKMODES_LANES */
+ nla_total_size(sizeof(u8)) /* LINKMODES_DUPLEX */
+ 0;
ret = ethnl_bitset_size(ksettings->link_modes.advertising,
@@ -122,6 +126,7 @@ static int linkmodes_fill_reply(struct sk_buff *skb,
}
if (nla_put_u32(skb, ETHTOOL_A_LINKMODES_SPEED, lsettings->speed) ||
+ nla_put_u32(skb, ETHTOOL_A_LINKMODES_LANES, ksettings->lanes) ||
nla_put_u8(skb, ETHTOOL_A_LINKMODES_DUPLEX, lsettings->duplex))
return -EMSGSIZE;
--
2.26.2
next prev parent reply other threads:[~2021-01-20 11:21 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-20 9:37 [PATCH net-next v3 0/7] Support setting lanes via ethtool Danielle Ratson
2021-01-20 9:37 ` [PATCH net-next v3 1/7] ethtool: Extend link modes settings uAPI with lanes Danielle Ratson
2021-01-20 22:35 ` Edwin Peer
2021-02-02 18:08 ` Danielle Ratson
2021-01-22 3:44 ` Jakub Kicinski
2021-01-25 15:53 ` Danielle Ratson
2021-01-25 19:02 ` Jakub Kicinski
2021-01-20 9:37 ` [PATCH net-next v3 2/7] ethtool: Get link mode in use instead of speed and duplex parameters Danielle Ratson
2021-01-20 23:39 ` Edwin Peer
2021-01-24 8:36 ` Danielle Ratson
2021-01-25 18:03 ` Edwin Peer
2021-01-26 17:06 ` Danielle Ratson
2021-01-26 17:14 ` Edwin Peer
2021-01-27 13:22 ` Danielle Ratson
2021-01-28 20:26 ` Michal Kubecek
2021-01-31 15:33 ` Danielle Ratson
2021-01-31 17:39 ` Edwin Peer
2021-02-01 13:49 ` Danielle Ratson
2021-02-01 18:14 ` Edwin Peer
2021-02-01 20:29 ` Jakub Kicinski
2021-02-01 21:05 ` Edwin Peer
2021-02-01 21:41 ` Jakub Kicinski
2021-02-01 21:59 ` Edwin Peer
2021-02-01 22:20 ` Jakub Kicinski
2021-02-02 0:14 ` Edwin Peer
2021-02-02 1:08 ` Jakub Kicinski
2021-01-20 9:37 ` Danielle Ratson [this message]
2021-01-20 9:37 ` [PATCH net-next v3 4/7] mlxsw: ethtool: Remove max lanes filtering Danielle Ratson
2021-01-20 9:37 ` [PATCH net-next v3 5/7] mlxsw: ethtool: Add support for setting lanes when autoneg is off Danielle Ratson
2021-01-20 9:37 ` [PATCH net-next v3 6/7] mlxsw: ethtool: Pass link mode in use to ethtool Danielle Ratson
2021-01-20 9:37 ` [PATCH net-next v3 7/7] net: selftests: Add lanes setting test Danielle Ratson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210120093713.4000363-4-danieller@nvidia.com \
--to=danieller@nvidia.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=idosch@nvidia.com \
--cc=jiri@nvidia.com \
--cc=kuba@kernel.org \
--cc=mkubecek@suse.cz \
--cc=mlxsw@nvidia.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).