From: Stephen Hemminger <stephen@networkplumber.org>
To: Lukasz Majewski <lukma@denx.de>
Cc: Andrew Lunn <andrew@lunn.ch>, Vladimir Oltean <olteanv@gmail.com>,
Eric Dumazet <edumazet@google.com>,
Florian Fainelli <f.fainelli@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
netdev@vger.kernel.org
Subject: Re: [PATCH] ip link: hsr: Add support for passing information about INTERLINK device
Date: Mon, 26 Feb 2024 12:41:10 -0800 [thread overview]
Message-ID: <20240226124110.37892211@hermes.local> (raw)
In-Reply-To: <20240216132114.2606777-1-lukma@denx.de>
On Fri, 16 Feb 2024 14:21:14 +0100
Lukasz Majewski <lukma@denx.de> wrote:
> The HSR capable device can operate in two modes of operations -
> Doubly Attached Node for HSR (DANH) and RedBOX.
>
> The latter one allows connection of non-HSR aware device to HSR network.
> This node is called SAN (Singly Attached Network) and is connected via
> INTERLINK network device.
>
> This patch adds support for passing information about the INTERLINK device,
> so the Linux driver can properly setup it.
>
> Signed-off-by: Lukasz Majewski <lukma@denx.de>
Patch should target iproute2-next since headers come from upstream.
And kernel side needs to be accepted first.
When it is merged to net-next, Dave Ahern can pickup the headers
from there.
>
> diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
> index da2d03d..1f048fd 100644
> --- a/ip/iplink_hsr.c
> +++ b/ip/iplink_hsr.c
> @@ -25,12 +25,15 @@ static void print_usage(FILE *f)
> {
> fprintf(f,
> "Usage:\tip link add name NAME type hsr slave1 SLAVE1-IF slave2 SLAVE2-IF\n"
> - "\t[ supervision ADDR-BYTE ] [version VERSION] [proto PROTOCOL]\n"
> + "\t[ interlink INTERLINK-IF ] [ supervision ADDR-BYTE ] [ version VERSION ]\n"
> + "\t[ proto PROTOCOL ]\n"
> "\n"
> "NAME\n"
> " name of new hsr device (e.g. hsr0)\n"
> "SLAVE1-IF, SLAVE2-IF\n"
> " the two slave devices bound to the HSR device\n"
> + "INTERLINK-IF\n"
> + " the interlink device bound to the HSR network to connect SAN device\n"
> "ADDR-BYTE\n"
> " 0-255; the last byte of the multicast address used for HSR supervision\n"
> " frames (default = 0)\n"
> @@ -86,6 +89,12 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
> if (ifindex == 0)
> invarg("No such interface", *argv);
> addattr_l(n, 1024, IFLA_HSR_SLAVE2, &ifindex, 4);
> + } else if (matches(*argv, "interlink") == 0) {
No new uses of matches() allowed in iproute2.
> + NEXT_ARG();
> + ifindex = ll_name_to_index(*argv);
> + if (ifindex == 0)
> + invarg("No such interface", *argv);
> + addattr_l(n, 1024, IFLA_HSR_INTERLINK, &ifindex, 4);
> } else if (matches(*argv, "help") == 0) {
> usage();
> return -1;
> @@ -113,6 +122,9 @@ static void hsr_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
> if (tb[IFLA_HSR_SLAVE2] &&
> RTA_PAYLOAD(tb[IFLA_HSR_SLAVE2]) < sizeof(__u32))
> return;
> + if (tb[IFLA_HSR_INTERLINK] &&
> + RTA_PAYLOAD(tb[IFLA_HSR_INTERLINK]) < sizeof(__u32))
> + return;
> if (tb[IFLA_HSR_SEQ_NR] &&
> RTA_PAYLOAD(tb[IFLA_HSR_SEQ_NR]) < sizeof(__u16))
> return;
> @@ -136,6 +148,14 @@ static void hsr_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
> else
> print_null(PRINT_ANY, "slave2", "slave2 %s ", "<none>");
>
> + if (tb[IFLA_HSR_INTERLINK])
> + print_string(PRINT_ANY,
> + "interlink",
> + "interlink %s ",
> + ll_index_to_name(rta_getattr_u32(tb[IFLA_HSR_INTERLINK])));
Better to print that in color and pack args on line up to 100 characters.
if (tb[IFLA_HSR_INTERLINK])
print_color_string(PRINT_ANY, COLOR_IFNAME, "interlink", "interlink %s ",
ll_index_to_name(rta_getattr_u32(tb[IFLA_HSR_INTERLINK])));
> + else
> + print_null(PRINT_ANY, "interlink", "interlink %s ", "<none>");
The output from ip show commands should resemble inputs to configuration.
Therefore the else clause should not be there. Only print if interlink is configured.
next prev parent reply other threads:[~2024-02-26 20:41 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-16 13:21 [PATCH] ip link: hsr: Add support for passing information about INTERLINK device Lukasz Majewski
2024-02-23 9:55 ` Lukasz Majewski
2024-02-26 20:41 ` Stephen Hemminger [this message]
2024-02-28 14:20 ` Lukasz Majewski
2024-02-28 16:29 ` Stephen Hemminger
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=20240226124110.37892211@hermes.local \
--to=stephen@networkplumber.org \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=f.fainelli@gmail.com \
--cc=kuba@kernel.org \
--cc=lukma@denx.de \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
/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).