* [PATCH ethtool 0/5] Extend uAPI with lanes parameter
@ 2021-01-06 13:10 Danielle Ratson
2021-01-06 13:10 ` [PATCH ethtool 1/5] ethtool: Extend ethtool link modes settings uAPI with lanes Danielle Ratson
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Danielle Ratson @ 2021-01-06 13:10 UTC (permalink / raw)
To: netdev; +Cc: mkubecek, f.fainelli, kuba, andrew, mlxsw, Danielle Ratson
From: Danielle Ratson <danieller@nvidia.com>
Currently, there is no way of knowing how many lanes will be use to
achieve a wanted speed.
For example, 100G speed can be achieved using: 2X50 or 4X25.
In order to solve that, extend ethtool uAPI with lanes as a new link
mode setting so the command below, for example, will be supported:
$ ethtool -s swp5 lanes N
Patch #1: Update headers with the new parameter.
Patch #2: Support lanes in netlink.
Patch #3: Expose the number of lanes in use.
Patch #4: Add auto-completion for lanes.
Patch #5: Add lanes to man page.
Danielle Ratson (5):
ethtool: Extend ethtool link modes settings uAPI with lanes
netlink: settings: Add netlink support for lanes parameter
netlink: settings: Expose the number of lanes in use
shell-completion: Add completion for lanes
man: Add man page for setting lanes parameter
ethtool.8.in | 4 ++++
ethtool.c | 1 +
netlink/desc-ethtool.c | 1 +
netlink/settings.c | 17 +++++++++++++++++
shell-completion/bash/ethtool | 4 ++++
uapi/linux/ethtool.h | 8 ++++++++
uapi/linux/ethtool_netlink.h | 1 +
7 files changed, 36 insertions(+)
--
2.26.2
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH ethtool 1/5] ethtool: Extend ethtool link modes settings uAPI with lanes
2021-01-06 13:10 [PATCH ethtool 0/5] Extend uAPI with lanes parameter Danielle Ratson
@ 2021-01-06 13:10 ` Danielle Ratson
2021-01-06 13:10 ` [PATCH ethtool 2/5] netlink: settings: Add netlink support for lanes parameter Danielle Ratson
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Danielle Ratson @ 2021-01-06 13:10 UTC (permalink / raw)
To: netdev; +Cc: mkubecek, f.fainelli, kuba, andrew, mlxsw, Danielle Ratson
Add ETHTOOL_A_LINKMODES_LANES, expand ethtool_link_settings with
lanes attribute and define valid lanes in order to support a new
lanes-selector.
Signed-off-by: Danielle Ratson <danieller@mellanox.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
---
netlink/desc-ethtool.c | 1 +
uapi/linux/ethtool.h | 8 ++++++++
uapi/linux/ethtool_netlink.h | 1 +
3 files changed, 10 insertions(+)
diff --git a/netlink/desc-ethtool.c b/netlink/desc-ethtool.c
index 96291b9..fe5d7ba 100644
--- a/netlink/desc-ethtool.c
+++ b/netlink/desc-ethtool.c
@@ -87,6 +87,7 @@ static const struct pretty_nla_desc __linkmodes_desc[] = {
NLATTR_DESC_U8(ETHTOOL_A_LINKMODES_DUPLEX),
NLATTR_DESC_U8(ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG),
NLATTR_DESC_U8(ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE),
+ NLATTR_DESC_U32(ETHTOOL_A_LINKMODES_LANES),
};
static const struct pretty_nla_desc __linkstate_desc[] = {
diff --git a/uapi/linux/ethtool.h b/uapi/linux/ethtool.h
index 052689b..85ec9c8 100644
--- a/uapi/linux/ethtool.h
+++ b/uapi/linux/ethtool.h
@@ -1736,6 +1736,14 @@ static __inline__ int ethtool_validate_speed(__u32 speed)
return speed <= INT_MAX || speed == (__u32)SPEED_UNKNOWN;
}
+/* Lanes, 1, 2, 4 or 8. */
+#define ETHTOOL_LANES_1 1
+#define ETHTOOL_LANES_2 2
+#define ETHTOOL_LANES_4 4
+#define ETHTOOL_LANES_8 8
+
+#define ETHTOOL_LANES_UNKNOWN 0
+
/* Duplex, half or full. */
#define DUPLEX_HALF 0x00
#define DUPLEX_FULL 0x01
diff --git a/uapi/linux/ethtool_netlink.h b/uapi/linux/ethtool_netlink.h
index c022883..0cd6906 100644
--- a/uapi/linux/ethtool_netlink.h
+++ b/uapi/linux/ethtool_netlink.h
@@ -227,6 +227,7 @@ enum {
ETHTOOL_A_LINKMODES_DUPLEX, /* u8 */
ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG, /* u8 */
ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE, /* u8 */
+ ETHTOOL_A_LINKMODES_LANES, /* u32 */
/* add new constants above here */
__ETHTOOL_A_LINKMODES_CNT,
--
2.26.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH ethtool 2/5] netlink: settings: Add netlink support for lanes parameter
2021-01-06 13:10 [PATCH ethtool 0/5] Extend uAPI with lanes parameter Danielle Ratson
2021-01-06 13:10 ` [PATCH ethtool 1/5] ethtool: Extend ethtool link modes settings uAPI with lanes Danielle Ratson
@ 2021-01-06 13:10 ` Danielle Ratson
2021-01-06 13:10 ` [PATCH ethtool 3/5] netlink: settings: Expose the number of lanes in use Danielle Ratson
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Danielle Ratson @ 2021-01-06 13:10 UTC (permalink / raw)
To: netdev; +Cc: mkubecek, f.fainelli, kuba, andrew, mlxsw, Danielle Ratson
Add support for "ethtool -s <dev> lanes N ..." for setting a specific
number of lanes.
Signed-off-by: Danielle Ratson <danieller@mellanox.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
---
ethtool.c | 1 +
netlink/settings.c | 8 ++++++++
2 files changed, 9 insertions(+)
diff --git a/ethtool.c b/ethtool.c
index 585aafa..fcb09f7 100644
--- a/ethtool.c
+++ b/ethtool.c
@@ -5620,6 +5620,7 @@ static const struct option args[] = {
.nlfunc = nl_sset,
.help = "Change generic options",
.xhelp = " [ speed %d ]\n"
+ " [ lanes %d ]\n"
" [ duplex half|full ]\n"
" [ port tp|aui|bnc|mii|fibre|da ]\n"
" [ mdix auto|on|off ]\n"
diff --git a/netlink/settings.c b/netlink/settings.c
index 90c28b1..6cb5d5b 100644
--- a/netlink/settings.c
+++ b/netlink/settings.c
@@ -20,6 +20,7 @@
struct link_mode_info {
enum link_mode_class class;
u32 speed;
+ u32 lanes;
u8 duplex;
};
@@ -1067,6 +1068,13 @@ static const struct param_parser sset_params[] = {
.handler = nl_parse_direct_u32,
.min_argc = 1,
},
+ {
+ .arg = "lanes",
+ .group = ETHTOOL_MSG_LINKMODES_SET,
+ .type = ETHTOOL_A_LINKMODES_LANES,
+ .handler = nl_parse_direct_u32,
+ .min_argc = 1,
+ },
{
.arg = "duplex",
.group = ETHTOOL_MSG_LINKMODES_SET,
--
2.26.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH ethtool 3/5] netlink: settings: Expose the number of lanes in use
2021-01-06 13:10 [PATCH ethtool 0/5] Extend uAPI with lanes parameter Danielle Ratson
2021-01-06 13:10 ` [PATCH ethtool 1/5] ethtool: Extend ethtool link modes settings uAPI with lanes Danielle Ratson
2021-01-06 13:10 ` [PATCH ethtool 2/5] netlink: settings: Add netlink support for lanes parameter Danielle Ratson
@ 2021-01-06 13:10 ` Danielle Ratson
2021-01-06 13:10 ` [PATCH ethtool 4/5] shell-completion: Add completion for lanes Danielle Ratson
2021-01-06 13:10 ` [PATCH ethtool 5/5] man: Add man page for setting lanes parameter Danielle Ratson
4 siblings, 0 replies; 6+ messages in thread
From: Danielle Ratson @ 2021-01-06 13:10 UTC (permalink / raw)
To: netdev; +Cc: mkubecek, f.fainelli, kuba, andrew, mlxsw, Danielle Ratson
From: Danielle Ratson <danieller@nvidia.com>
Currently, the user does not have the information regarding how many lanes
are used when the link is up.
After adding a possibility to advertise or force a specific number of
lanes this information becomes helpful.
Expose the number of lanes in use if the information is passed from
kernel.
Signed-off-by: Danielle Ratson <danieller@nvidia.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
---
netlink/settings.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/netlink/settings.c b/netlink/settings.c
index 6cb5d5b..13a080c 100644
--- a/netlink/settings.c
+++ b/netlink/settings.c
@@ -474,6 +474,15 @@ int linkmodes_reply_cb(const struct nlmsghdr *nlhdr, void *data)
else
printf("\tSpeed: %uMb/s\n", val);
}
+ if (tb[ETHTOOL_A_LINKMODES_LANES]) {
+ uint32_t val = mnl_attr_get_u32(tb[ETHTOOL_A_LINKMODES_LANES]);
+
+ print_banner(nlctx);
+ if (val == 0 || val == (uint16_t)(-1) || val == (uint32_t)(-1))
+ printf("\tLanes: Unknown!\n");
+ else
+ printf("\tLanes: %u\n", val);
+ }
if (tb[ETHTOOL_A_LINKMODES_DUPLEX]) {
uint8_t val = mnl_attr_get_u8(tb[ETHTOOL_A_LINKMODES_DUPLEX]);
--
2.26.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH ethtool 4/5] shell-completion: Add completion for lanes
2021-01-06 13:10 [PATCH ethtool 0/5] Extend uAPI with lanes parameter Danielle Ratson
` (2 preceding siblings ...)
2021-01-06 13:10 ` [PATCH ethtool 3/5] netlink: settings: Expose the number of lanes in use Danielle Ratson
@ 2021-01-06 13:10 ` Danielle Ratson
2021-01-06 13:10 ` [PATCH ethtool 5/5] man: Add man page for setting lanes parameter Danielle Ratson
4 siblings, 0 replies; 6+ messages in thread
From: Danielle Ratson @ 2021-01-06 13:10 UTC (permalink / raw)
To: netdev; +Cc: mkubecek, f.fainelli, kuba, andrew, mlxsw, Danielle Ratson
Lanes was added as a new link mode setting in ethtool.
Support completion for lanes when setting parameters.
Signed-off-by: Danielle Ratson <danieller@mellanox.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
---
shell-completion/bash/ethtool | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/shell-completion/bash/ethtool b/shell-completion/bash/ethtool
index 5305559..4557341 100644
--- a/shell-completion/bash/ethtool
+++ b/shell-completion/bash/ethtool
@@ -97,6 +97,7 @@ _ethtool_change()
[speed]=notseen
[wol]=notseen
[xcvr]=notseen
+ [lanes]=notseen
)
local -A msgtypes=(
@@ -175,6 +176,9 @@ _ethtool_change()
xcvr)
COMPREPLY=( $( compgen -W 'internal external' -- "$cur" ) )
return ;;
+ lanes)
+ # Number
+ return ;;
esac
local -a comp_words=()
--
2.26.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH ethtool 5/5] man: Add man page for setting lanes parameter
2021-01-06 13:10 [PATCH ethtool 0/5] Extend uAPI with lanes parameter Danielle Ratson
` (3 preceding siblings ...)
2021-01-06 13:10 ` [PATCH ethtool 4/5] shell-completion: Add completion for lanes Danielle Ratson
@ 2021-01-06 13:10 ` Danielle Ratson
4 siblings, 0 replies; 6+ messages in thread
From: Danielle Ratson @ 2021-01-06 13:10 UTC (permalink / raw)
To: netdev; +Cc: mkubecek, f.fainelli, kuba, andrew, mlxsw, Danielle Ratson
From: Danielle Ratson <danieller@nvidia.com>
Lanes parameter was added for setting using ethtool.
Update the man page to include the new parameter.
Signed-off-by: Danielle Ratson <danieller@nvidia.com>
---
ethtool.8.in | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/ethtool.8.in b/ethtool.8.in
index ba4e245..fe49b66 100644
--- a/ethtool.8.in
+++ b/ethtool.8.in
@@ -251,6 +251,7 @@ ethtool \- query or control network driver and hardware settings
.B ethtool \-s
.I devname
.BN speed
+.BN lanes
.B2 duplex half full
.B4 port tp aui bnc mii fibre da
.B3 mdix auto on off
@@ -685,6 +686,9 @@ Set speed in Mb/s.
.B ethtool
with just the device name as an argument will show you the supported device speeds.
.TP
+.BI lanes \ N
+Set number of lanes.
+.TP
.A2 duplex half full
Sets full or half duplex mode.
.TP
--
2.26.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-01-06 13:12 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-06 13:10 [PATCH ethtool 0/5] Extend uAPI with lanes parameter Danielle Ratson
2021-01-06 13:10 ` [PATCH ethtool 1/5] ethtool: Extend ethtool link modes settings uAPI with lanes Danielle Ratson
2021-01-06 13:10 ` [PATCH ethtool 2/5] netlink: settings: Add netlink support for lanes parameter Danielle Ratson
2021-01-06 13:10 ` [PATCH ethtool 3/5] netlink: settings: Expose the number of lanes in use Danielle Ratson
2021-01-06 13:10 ` [PATCH ethtool 4/5] shell-completion: Add completion for lanes Danielle Ratson
2021-01-06 13:10 ` [PATCH ethtool 5/5] man: Add man page for setting lanes parameter Danielle Ratson
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).