All of lore.kernel.org
 help / color / mirror / Atom feed
* [meta-arago PATCH] iproute2: update recipe for prp and supervision vlan support
@ 2020-07-07 17:02 Murali
  2020-07-07 17:07 ` Denys Dmytriyenko
  0 siblings, 1 reply; 8+ messages in thread
From: Murali @ 2020-07-07 17:02 UTC (permalink / raw)
  To: meta-ti, denys

This recipe includes the patches required in iproute2 to add
PRP ip link support as well as allow use of VLAN for supervision
frames.

Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
---
 ...upport-for-creating-PRP-device-simil.patch | 109 ++++++++++++++++++
 ...dd-support-for-vlan-tagged-supervisi.patch | 108 +++++++++++++++++
 .../iproute2/iproute2_5.5.0.bbappend          |   8 ++
 3 files changed, 225 insertions(+)
 create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
 create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
 create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend

diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
new file mode 100644
index 000000000000..dfeaeb01b485
--- /dev/null
+++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
@@ -0,0 +1,109 @@
+From e3aa94814e9467af5829a04c335a615c0082a362 Mon Sep 17 00:00:00 2001
+From: Murali Karicheri <m-karicheri2@ti.com>
+Date: Fri, 5 Jun 2020 11:02:05 -0400
+Subject: [PATCH 1/2] iplink: hsr: add support for creating PRP device similar
+ to HSR
+
+This patch enhances the iplink command to add a proto parameters to
+create PRP device/interface similar to HSR. Both protocols are
+quite similar and requires a pair of Ethernet interfaces. So re-use
+the existing HSR iplink command to create PRP device/interface as
+well. Use proto parameter to differentiate the two protocols.
+
+Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
+---
+ include/uapi/linux/if_link.h | 12 +++++++++++-
+ ip/iplink_hsr.c              | 19 +++++++++++++++++--
+ 2 files changed, 28 insertions(+), 3 deletions(-)
+
+diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
+index 1c49f436424d..de08704c5862 100644
+--- a/include/uapi/linux/if_link.h
++++ b/include/uapi/linux/if_link.h
+@@ -881,7 +881,14 @@ enum {
+ #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
+ 
+ 
+-/* HSR section */
++/* HSR/PRP section, both uses same interface */
++
++/* Different redundancy protocols for hsr device */
++enum {
++	HSR_PROTOCOL_HSR,
++	HSR_PROTOCOL_PRP,
++	HSR_PROTOCOL_MAX,
++};
+ 
+ enum {
+ 	IFLA_HSR_UNSPEC,
+@@ -891,6 +898,9 @@ enum {
+ 	IFLA_HSR_SUPERVISION_ADDR,	/* Supervision frame multicast addr */
+ 	IFLA_HSR_SEQ_NR,
+ 	IFLA_HSR_VERSION,		/* HSR version */
++	IFLA_HSR_PROTOCOL,		/* Indicate different protocol than
++					 * HSR. For example PRP.
++					 */
+ 	__IFLA_HSR_MAX,
+ };
+ 
+diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
+index 7d9167d4e6a3..6ea138a23cbc 100644
+--- a/ip/iplink_hsr.c
++++ b/ip/iplink_hsr.c
+@@ -25,7 +25,7 @@ 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]\n"
++		"\t[ supervision ADDR-BYTE ] [version VERSION] [proto PROTOCOL]\n"
+ 		"\n"
+ 		"NAME\n"
+ 		"	name of new hsr device (e.g. hsr0)\n"
+@@ -35,7 +35,9 @@ static void print_usage(FILE *f)
+ 		"	0-255; the last byte of the multicast address used for HSR supervision\n"
+ 		"	frames (default = 0)\n"
+ 		"VERSION\n"
+-		"	0,1; the protocol version to be used. (default = 0)\n");
++		"	0,1; the protocol version to be used. (default = 0)\n"
++		"PROTOCOL\n"
++		"	0 - HSR, 1 - PRP. (default = 0 - HSR)\n");
+ }
+ 
+ static void usage(void)
+@@ -49,6 +51,7 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
+ 	int ifindex;
+ 	unsigned char multicast_spec;
+ 	unsigned char protocol_version;
++	unsigned char protocol = HSR_PROTOCOL_HSR;
+ 
+ 	while (argc > 0) {
+ 		if (matches(*argv, "supervision") == 0) {
+@@ -64,6 +67,13 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
+ 				invarg("version is invalid", *argv);
+ 			addattr_l(n, 1024, IFLA_HSR_VERSION,
+ 				  &protocol_version, 1);
++		} else if (matches(*argv, "proto") == 0) {
++			NEXT_ARG();
++			if (!(get_u8(&protocol, *argv, 0) == HSR_PROTOCOL_HSR ||
++			      get_u8(&protocol, *argv, 0) == HSR_PROTOCOL_PRP))
++				invarg("protocol is invalid", *argv);
++			addattr_l(n, 1024, IFLA_HSR_PROTOCOL,
++				  &protocol, 1);
+ 		} else if (matches(*argv, "slave1") == 0) {
+ 			NEXT_ARG();
+ 			ifindex = ll_name_to_index(*argv);
+@@ -140,6 +150,11 @@ static void hsr_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
+ 					 RTA_PAYLOAD(tb[IFLA_HSR_SUPERVISION_ADDR]),
+ 					 ARPHRD_VOID,
+ 					 b1, sizeof(b1)));
++	if (tb[IFLA_HSR_PROTOCOL])
++		print_int(PRINT_ANY,
++			  "proto",
++			  "proto %d ",
++			  rta_getattr_u8(tb[IFLA_HSR_PROTOCOL]));
+ }
+ 
+ static void hsr_print_help(struct link_util *lu, int argc, char **argv,
+-- 
+2.17.1
+
diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
new file mode 100644
index 000000000000..fa0eecccdf59
--- /dev/null
+++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
@@ -0,0 +1,108 @@
+From 6e48ed61da3b03da415a87bfbd3651fde8742647 Mon Sep 17 00:00:00 2001
+From: Murali Karicheri <m-karicheri2@ti.com>
+Date: Fri, 5 Jun 2020 12:07:43 -0400
+Subject: [PATCH 2/2] iplink: hsr/prp: add support for vlan tagged supervision
+ frames
+
+This patch adds support to configure vlan tag information
+(vid, pcp and dei) at the hsr/prp lre device. This tag values
+will be used by the lre device to generate a VLAN tagged
+Supervision frames. This is done by adding 3 additional attributes
+to the hsr/prp link type and passing this to Linux HSR/PRP
+device through the ip link command.
+
+Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
+---
+ include/uapi/linux/if_link.h |  3 +++
+ ip/iplink_hsr.c              | 40 +++++++++++++++++++++++++++++++++++-
+ 2 files changed, 42 insertions(+), 1 deletion(-)
+
+diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
+index de08704c5862..94a381769e5a 100644
+--- a/include/uapi/linux/if_link.h
++++ b/include/uapi/linux/if_link.h
+@@ -901,6 +901,9 @@ enum {
+ 	IFLA_HSR_PROTOCOL,		/* Indicate different protocol than
+ 					 * HSR. For example PRP.
+ 					 */
++	IFLA_HSR_SV_VID,		/* Supervision frames VLAN ID */
++	IFLA_HSR_SV_DEI,		/* Supervision frames VLAN DEI */
++	IFLA_HSR_SV_PCP,		/* Supervision frames VLAN PCP */
+ 	__IFLA_HSR_MAX,
+ };
+ 
+diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
+index 6ea138a23cbc..f38c752c0065 100644
+--- a/ip/iplink_hsr.c
++++ b/ip/iplink_hsr.c
+@@ -26,6 +26,7 @@ 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[ sv_vid SV-VID ] [ sv_pcp SV-PCP ] [ sv_dei SV-DEI ]\n"
+ 		"\n"
+ 		"NAME\n"
+ 		"	name of new hsr device (e.g. hsr0)\n"
+@@ -37,7 +38,15 @@ static void print_usage(FILE *f)
+ 		"VERSION\n"
+ 		"	0,1; the protocol version to be used. (default = 0)\n"
+ 		"PROTOCOL\n"
+-		"	0 - HSR, 1 - PRP. (default = 0 - HSR)\n");
++		"	0 - HSR, 1 - PRP. (default = 0 - HSR)\n"
++		"SV-VID\n"
++		"      0-4094; VLAN ID to be used in the VLAN tag of SV frames (default 0)\n"
++		"SV-PCP\n"
++		"      0-7; PCP value to be used in the VLAN tag of SV frames (default 0)\n"
++		"SV-DEI\n"
++		"      0-1;  DEI value to be used in the VLAN tag of SV frames (default 0)\n"
++		"      Use VLAN tag if one of sv_vid, sv_pcp or sv_dei is specified. Default value\n"
++		"      used for unspecified ones\n");
+ }
+ 
+ static void usage(void)
+@@ -52,6 +61,9 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
+ 	unsigned char multicast_spec;
+ 	unsigned char protocol_version;
+ 	unsigned char protocol = HSR_PROTOCOL_HSR;
++	unsigned short sv_vid;
++	unsigned char sv_dei;
++	unsigned char sv_pcp;
+ 
+ 	while (argc > 0) {
+ 		if (matches(*argv, "supervision") == 0) {
+@@ -86,6 +98,32 @@ 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, "sv_vid") == 0) {
++			NEXT_ARG();
++			if (get_u16(&sv_vid, *argv, 0))
++				invarg("SV-VID is invalid", *argv);
++			/* exclude reserved 4095 */
++			if (sv_vid >= 4095)
++				invarg("SV-VID is invalid", *argv);
++			addattr_l(n, 1024, IFLA_HSR_SV_VID,
++				  &sv_vid, sizeof(sv_vid));
++		} else if (matches(*argv, "sv_pcp") == 0) {
++			NEXT_ARG();
++			if (get_u8(&sv_pcp, *argv, 0))
++				invarg("SV-PCP is invalid", *argv);
++			if (sv_pcp > 7)
++				invarg("SV-PCP is invalid", *argv);
++			addattr_l(n, 1024, IFLA_HSR_SV_PCP,
++				  &sv_pcp, sizeof(sv_pcp));
++		} else if (matches(*argv, "sv_dei") == 0) {
++			NEXT_ARG();
++			if (get_u8(&sv_dei, *argv, 0))
++				invarg("SV-DEI is invalid", *argv);
++			if (sv_dei > 1)
++				invarg("SV-DEI is invalid", *argv);
++			addattr_l(n, 1024, IFLA_HSR_SV_DEI,
++				  &sv_dei, sizeof(sv_dei));
++
+ 		} else if (matches(*argv, "help") == 0) {
+ 			usage();
+ 			return -1;
+-- 
+2.17.1
+
diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend b/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
new file mode 100644
index 000000000000..d6effcd7ca81
--- /dev/null
+++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
@@ -0,0 +1,8 @@
+PR_append = ".arago6"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+SRC_URI_append = " \
+    file://0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch \
+    file://0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch \
+"
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [meta-arago PATCH] iproute2: update recipe for prp and supervision vlan support
  2020-07-07 17:02 [meta-arago PATCH] iproute2: update recipe for prp and supervision vlan support Murali
@ 2020-07-07 17:07 ` Denys Dmytriyenko
  2020-07-07 17:43   ` Murali
       [not found]   ` <161F895730ADC75F.6803@lists.yoctoproject.org>
  0 siblings, 2 replies; 8+ messages in thread
From: Denys Dmytriyenko @ 2020-07-07 17:07 UTC (permalink / raw)
  To: Murali Karicheri; +Cc: meta-ti

Wrong mailing list. Please send this to meta-arago list instead.


On Tue, Jul 07, 2020 at 01:02:07PM -0400, Murali Karicheri wrote:
> This recipe includes the patches required in iproute2 to add
> PRP ip link support as well as allow use of VLAN for supervision
> frames.
> 
> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
> ---
>  ...upport-for-creating-PRP-device-simil.patch | 109 ++++++++++++++++++
>  ...dd-support-for-vlan-tagged-supervisi.patch | 108 +++++++++++++++++
>  .../iproute2/iproute2_5.5.0.bbappend          |   8 ++
>  3 files changed, 225 insertions(+)
>  create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
>  create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
>  create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
> 
> diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
> new file mode 100644
> index 000000000000..dfeaeb01b485
> --- /dev/null
> +++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
> @@ -0,0 +1,109 @@
> +From e3aa94814e9467af5829a04c335a615c0082a362 Mon Sep 17 00:00:00 2001
> +From: Murali Karicheri <m-karicheri2@ti.com>
> +Date: Fri, 5 Jun 2020 11:02:05 -0400
> +Subject: [PATCH 1/2] iplink: hsr: add support for creating PRP device similar
> + to HSR
> +
> +This patch enhances the iplink command to add a proto parameters to
> +create PRP device/interface similar to HSR. Both protocols are
> +quite similar and requires a pair of Ethernet interfaces. So re-use
> +the existing HSR iplink command to create PRP device/interface as
> +well. Use proto parameter to differentiate the two protocols.
> +
> +Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
> +---
> + include/uapi/linux/if_link.h | 12 +++++++++++-
> + ip/iplink_hsr.c              | 19 +++++++++++++++++--
> + 2 files changed, 28 insertions(+), 3 deletions(-)
> +
> +diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
> +index 1c49f436424d..de08704c5862 100644
> +--- a/include/uapi/linux/if_link.h
> ++++ b/include/uapi/linux/if_link.h
> +@@ -881,7 +881,14 @@ enum {
> + #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
> + 
> + 
> +-/* HSR section */
> ++/* HSR/PRP section, both uses same interface */
> ++
> ++/* Different redundancy protocols for hsr device */
> ++enum {
> ++	HSR_PROTOCOL_HSR,
> ++	HSR_PROTOCOL_PRP,
> ++	HSR_PROTOCOL_MAX,
> ++};
> + 
> + enum {
> + 	IFLA_HSR_UNSPEC,
> +@@ -891,6 +898,9 @@ enum {
> + 	IFLA_HSR_SUPERVISION_ADDR,	/* Supervision frame multicast addr */
> + 	IFLA_HSR_SEQ_NR,
> + 	IFLA_HSR_VERSION,		/* HSR version */
> ++	IFLA_HSR_PROTOCOL,		/* Indicate different protocol than
> ++					 * HSR. For example PRP.
> ++					 */
> + 	__IFLA_HSR_MAX,
> + };
> + 
> +diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
> +index 7d9167d4e6a3..6ea138a23cbc 100644
> +--- a/ip/iplink_hsr.c
> ++++ b/ip/iplink_hsr.c
> +@@ -25,7 +25,7 @@ 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]\n"
> ++		"\t[ supervision ADDR-BYTE ] [version VERSION] [proto PROTOCOL]\n"
> + 		"\n"
> + 		"NAME\n"
> + 		"	name of new hsr device (e.g. hsr0)\n"
> +@@ -35,7 +35,9 @@ static void print_usage(FILE *f)
> + 		"	0-255; the last byte of the multicast address used for HSR supervision\n"
> + 		"	frames (default = 0)\n"
> + 		"VERSION\n"
> +-		"	0,1; the protocol version to be used. (default = 0)\n");
> ++		"	0,1; the protocol version to be used. (default = 0)\n"
> ++		"PROTOCOL\n"
> ++		"	0 - HSR, 1 - PRP. (default = 0 - HSR)\n");
> + }
> + 
> + static void usage(void)
> +@@ -49,6 +51,7 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
> + 	int ifindex;
> + 	unsigned char multicast_spec;
> + 	unsigned char protocol_version;
> ++	unsigned char protocol = HSR_PROTOCOL_HSR;
> + 
> + 	while (argc > 0) {
> + 		if (matches(*argv, "supervision") == 0) {
> +@@ -64,6 +67,13 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
> + 				invarg("version is invalid", *argv);
> + 			addattr_l(n, 1024, IFLA_HSR_VERSION,
> + 				  &protocol_version, 1);
> ++		} else if (matches(*argv, "proto") == 0) {
> ++			NEXT_ARG();
> ++			if (!(get_u8(&protocol, *argv, 0) == HSR_PROTOCOL_HSR ||
> ++			      get_u8(&protocol, *argv, 0) == HSR_PROTOCOL_PRP))
> ++				invarg("protocol is invalid", *argv);
> ++			addattr_l(n, 1024, IFLA_HSR_PROTOCOL,
> ++				  &protocol, 1);
> + 		} else if (matches(*argv, "slave1") == 0) {
> + 			NEXT_ARG();
> + 			ifindex = ll_name_to_index(*argv);
> +@@ -140,6 +150,11 @@ static void hsr_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
> + 					 RTA_PAYLOAD(tb[IFLA_HSR_SUPERVISION_ADDR]),
> + 					 ARPHRD_VOID,
> + 					 b1, sizeof(b1)));
> ++	if (tb[IFLA_HSR_PROTOCOL])
> ++		print_int(PRINT_ANY,
> ++			  "proto",
> ++			  "proto %d ",
> ++			  rta_getattr_u8(tb[IFLA_HSR_PROTOCOL]));
> + }
> + 
> + static void hsr_print_help(struct link_util *lu, int argc, char **argv,
> +-- 
> +2.17.1
> +
> diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
> new file mode 100644
> index 000000000000..fa0eecccdf59
> --- /dev/null
> +++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
> @@ -0,0 +1,108 @@
> +From 6e48ed61da3b03da415a87bfbd3651fde8742647 Mon Sep 17 00:00:00 2001
> +From: Murali Karicheri <m-karicheri2@ti.com>
> +Date: Fri, 5 Jun 2020 12:07:43 -0400
> +Subject: [PATCH 2/2] iplink: hsr/prp: add support for vlan tagged supervision
> + frames
> +
> +This patch adds support to configure vlan tag information
> +(vid, pcp and dei) at the hsr/prp lre device. This tag values
> +will be used by the lre device to generate a VLAN tagged
> +Supervision frames. This is done by adding 3 additional attributes
> +to the hsr/prp link type and passing this to Linux HSR/PRP
> +device through the ip link command.
> +
> +Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
> +---
> + include/uapi/linux/if_link.h |  3 +++
> + ip/iplink_hsr.c              | 40 +++++++++++++++++++++++++++++++++++-
> + 2 files changed, 42 insertions(+), 1 deletion(-)
> +
> +diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
> +index de08704c5862..94a381769e5a 100644
> +--- a/include/uapi/linux/if_link.h
> ++++ b/include/uapi/linux/if_link.h
> +@@ -901,6 +901,9 @@ enum {
> + 	IFLA_HSR_PROTOCOL,		/* Indicate different protocol than
> + 					 * HSR. For example PRP.
> + 					 */
> ++	IFLA_HSR_SV_VID,		/* Supervision frames VLAN ID */
> ++	IFLA_HSR_SV_DEI,		/* Supervision frames VLAN DEI */
> ++	IFLA_HSR_SV_PCP,		/* Supervision frames VLAN PCP */
> + 	__IFLA_HSR_MAX,
> + };
> + 
> +diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
> +index 6ea138a23cbc..f38c752c0065 100644
> +--- a/ip/iplink_hsr.c
> ++++ b/ip/iplink_hsr.c
> +@@ -26,6 +26,7 @@ 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[ sv_vid SV-VID ] [ sv_pcp SV-PCP ] [ sv_dei SV-DEI ]\n"
> + 		"\n"
> + 		"NAME\n"
> + 		"	name of new hsr device (e.g. hsr0)\n"
> +@@ -37,7 +38,15 @@ static void print_usage(FILE *f)
> + 		"VERSION\n"
> + 		"	0,1; the protocol version to be used. (default = 0)\n"
> + 		"PROTOCOL\n"
> +-		"	0 - HSR, 1 - PRP. (default = 0 - HSR)\n");
> ++		"	0 - HSR, 1 - PRP. (default = 0 - HSR)\n"
> ++		"SV-VID\n"
> ++		"      0-4094; VLAN ID to be used in the VLAN tag of SV frames (default 0)\n"
> ++		"SV-PCP\n"
> ++		"      0-7; PCP value to be used in the VLAN tag of SV frames (default 0)\n"
> ++		"SV-DEI\n"
> ++		"      0-1;  DEI value to be used in the VLAN tag of SV frames (default 0)\n"
> ++		"      Use VLAN tag if one of sv_vid, sv_pcp or sv_dei is specified. Default value\n"
> ++		"      used for unspecified ones\n");
> + }
> + 
> + static void usage(void)
> +@@ -52,6 +61,9 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
> + 	unsigned char multicast_spec;
> + 	unsigned char protocol_version;
> + 	unsigned char protocol = HSR_PROTOCOL_HSR;
> ++	unsigned short sv_vid;
> ++	unsigned char sv_dei;
> ++	unsigned char sv_pcp;
> + 
> + 	while (argc > 0) {
> + 		if (matches(*argv, "supervision") == 0) {
> +@@ -86,6 +98,32 @@ 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, "sv_vid") == 0) {
> ++			NEXT_ARG();
> ++			if (get_u16(&sv_vid, *argv, 0))
> ++				invarg("SV-VID is invalid", *argv);
> ++			/* exclude reserved 4095 */
> ++			if (sv_vid >= 4095)
> ++				invarg("SV-VID is invalid", *argv);
> ++			addattr_l(n, 1024, IFLA_HSR_SV_VID,
> ++				  &sv_vid, sizeof(sv_vid));
> ++		} else if (matches(*argv, "sv_pcp") == 0) {
> ++			NEXT_ARG();
> ++			if (get_u8(&sv_pcp, *argv, 0))
> ++				invarg("SV-PCP is invalid", *argv);
> ++			if (sv_pcp > 7)
> ++				invarg("SV-PCP is invalid", *argv);
> ++			addattr_l(n, 1024, IFLA_HSR_SV_PCP,
> ++				  &sv_pcp, sizeof(sv_pcp));
> ++		} else if (matches(*argv, "sv_dei") == 0) {
> ++			NEXT_ARG();
> ++			if (get_u8(&sv_dei, *argv, 0))
> ++				invarg("SV-DEI is invalid", *argv);
> ++			if (sv_dei > 1)
> ++				invarg("SV-DEI is invalid", *argv);
> ++			addattr_l(n, 1024, IFLA_HSR_SV_DEI,
> ++				  &sv_dei, sizeof(sv_dei));
> ++
> + 		} else if (matches(*argv, "help") == 0) {
> + 			usage();
> + 			return -1;
> +-- 
> +2.17.1
> +
> diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend b/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
> new file mode 100644
> index 000000000000..d6effcd7ca81
> --- /dev/null
> +++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
> @@ -0,0 +1,8 @@
> +PR_append = ".arago6"
> +
> +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
> +
> +SRC_URI_append = " \
> +    file://0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch \
> +    file://0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch \
> +"
> -- 
> 2.17.1
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [meta-arago PATCH] iproute2: update recipe for prp and supervision vlan support
  2020-07-07 17:07 ` Denys Dmytriyenko
@ 2020-07-07 17:43   ` Murali
       [not found]   ` <161F895730ADC75F.6803@lists.yoctoproject.org>
  1 sibling, 0 replies; 8+ messages in thread
From: Murali @ 2020-07-07 17:43 UTC (permalink / raw)
  To: Denys Dmytriyenko; +Cc: meta-ti

Denys,

What is the email id for meta-arago. I am subscribed to it, but my mail 
bounced.

I tried meta-arago@lists.yoctoproject.org

Thanks

Murali

On 7/7/20 1:07 PM, Denys Dmytriyenko wrote:
> Wrong mailing list. Please send this to meta-arago list instead.
> 
> 
> On Tue, Jul 07, 2020 at 01:02:07PM -0400, Murali Karicheri wrote:
>> This recipe includes the patches required in iproute2 to add
>> PRP ip link support as well as allow use of VLAN for supervision
>> frames.
>>
>> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>> ---
>>   ...upport-for-creating-PRP-device-simil.patch | 109 ++++++++++++++++++
>>   ...dd-support-for-vlan-tagged-supervisi.patch | 108 +++++++++++++++++
>>   .../iproute2/iproute2_5.5.0.bbappend          |   8 ++
>>   3 files changed, 225 insertions(+)
>>   create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
>>   create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
>>   create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
>>
>> diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
>> new file mode 100644
>> index 000000000000..dfeaeb01b485
>> --- /dev/null
>> +++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
>> @@ -0,0 +1,109 @@
>> +From e3aa94814e9467af5829a04c335a615c0082a362 Mon Sep 17 00:00:00 2001
>> +From: Murali Karicheri <m-karicheri2@ti.com>
>> +Date: Fri, 5 Jun 2020 11:02:05 -0400
>> +Subject: [PATCH 1/2] iplink: hsr: add support for creating PRP device similar
>> + to HSR
>> +
>> +This patch enhances the iplink command to add a proto parameters to
>> +create PRP device/interface similar to HSR. Both protocols are
>> +quite similar and requires a pair of Ethernet interfaces. So re-use
>> +the existing HSR iplink command to create PRP device/interface as
>> +well. Use proto parameter to differentiate the two protocols.
>> +
>> +Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>> +---
>> + include/uapi/linux/if_link.h | 12 +++++++++++-
>> + ip/iplink_hsr.c              | 19 +++++++++++++++++--
>> + 2 files changed, 28 insertions(+), 3 deletions(-)
>> +
>> +diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
>> +index 1c49f436424d..de08704c5862 100644
>> +--- a/include/uapi/linux/if_link.h
>> ++++ b/include/uapi/linux/if_link.h
>> +@@ -881,7 +881,14 @@ enum {
>> + #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
>> +
>> +
>> +-/* HSR section */
>> ++/* HSR/PRP section, both uses same interface */
>> ++
>> ++/* Different redundancy protocols for hsr device */
>> ++enum {
>> ++	HSR_PROTOCOL_HSR,
>> ++	HSR_PROTOCOL_PRP,
>> ++	HSR_PROTOCOL_MAX,
>> ++};
>> +
>> + enum {
>> + 	IFLA_HSR_UNSPEC,
>> +@@ -891,6 +898,9 @@ enum {
>> + 	IFLA_HSR_SUPERVISION_ADDR,	/* Supervision frame multicast addr */
>> + 	IFLA_HSR_SEQ_NR,
>> + 	IFLA_HSR_VERSION,		/* HSR version */
>> ++	IFLA_HSR_PROTOCOL,		/* Indicate different protocol than
>> ++					 * HSR. For example PRP.
>> ++					 */
>> + 	__IFLA_HSR_MAX,
>> + };
>> +
>> +diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
>> +index 7d9167d4e6a3..6ea138a23cbc 100644
>> +--- a/ip/iplink_hsr.c
>> ++++ b/ip/iplink_hsr.c
>> +@@ -25,7 +25,7 @@ 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]\n"
>> ++		"\t[ supervision ADDR-BYTE ] [version VERSION] [proto PROTOCOL]\n"
>> + 		"\n"
>> + 		"NAME\n"
>> + 		"	name of new hsr device (e.g. hsr0)\n"
>> +@@ -35,7 +35,9 @@ static void print_usage(FILE *f)
>> + 		"	0-255; the last byte of the multicast address used for HSR supervision\n"
>> + 		"	frames (default = 0)\n"
>> + 		"VERSION\n"
>> +-		"	0,1; the protocol version to be used. (default = 0)\n");
>> ++		"	0,1; the protocol version to be used. (default = 0)\n"
>> ++		"PROTOCOL\n"
>> ++		"	0 - HSR, 1 - PRP. (default = 0 - HSR)\n");
>> + }
>> +
>> + static void usage(void)
>> +@@ -49,6 +51,7 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
>> + 	int ifindex;
>> + 	unsigned char multicast_spec;
>> + 	unsigned char protocol_version;
>> ++	unsigned char protocol = HSR_PROTOCOL_HSR;
>> +
>> + 	while (argc > 0) {
>> + 		if (matches(*argv, "supervision") == 0) {
>> +@@ -64,6 +67,13 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
>> + 				invarg("version is invalid", *argv);
>> + 			addattr_l(n, 1024, IFLA_HSR_VERSION,
>> + 				  &protocol_version, 1);
>> ++		} else if (matches(*argv, "proto") == 0) {
>> ++			NEXT_ARG();
>> ++			if (!(get_u8(&protocol, *argv, 0) == HSR_PROTOCOL_HSR ||
>> ++			      get_u8(&protocol, *argv, 0) == HSR_PROTOCOL_PRP))
>> ++				invarg("protocol is invalid", *argv);
>> ++			addattr_l(n, 1024, IFLA_HSR_PROTOCOL,
>> ++				  &protocol, 1);
>> + 		} else if (matches(*argv, "slave1") == 0) {
>> + 			NEXT_ARG();
>> + 			ifindex = ll_name_to_index(*argv);
>> +@@ -140,6 +150,11 @@ static void hsr_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
>> + 					 RTA_PAYLOAD(tb[IFLA_HSR_SUPERVISION_ADDR]),
>> + 					 ARPHRD_VOID,
>> + 					 b1, sizeof(b1)));
>> ++	if (tb[IFLA_HSR_PROTOCOL])
>> ++		print_int(PRINT_ANY,
>> ++			  "proto",
>> ++			  "proto %d ",
>> ++			  rta_getattr_u8(tb[IFLA_HSR_PROTOCOL]));
>> + }
>> +
>> + static void hsr_print_help(struct link_util *lu, int argc, char **argv,
>> +--
>> +2.17.1
>> +
>> diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
>> new file mode 100644
>> index 000000000000..fa0eecccdf59
>> --- /dev/null
>> +++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
>> @@ -0,0 +1,108 @@
>> +From 6e48ed61da3b03da415a87bfbd3651fde8742647 Mon Sep 17 00:00:00 2001
>> +From: Murali Karicheri <m-karicheri2@ti.com>
>> +Date: Fri, 5 Jun 2020 12:07:43 -0400
>> +Subject: [PATCH 2/2] iplink: hsr/prp: add support for vlan tagged supervision
>> + frames
>> +
>> +This patch adds support to configure vlan tag information
>> +(vid, pcp and dei) at the hsr/prp lre device. This tag values
>> +will be used by the lre device to generate a VLAN tagged
>> +Supervision frames. This is done by adding 3 additional attributes
>> +to the hsr/prp link type and passing this to Linux HSR/PRP
>> +device through the ip link command.
>> +
>> +Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>> +---
>> + include/uapi/linux/if_link.h |  3 +++
>> + ip/iplink_hsr.c              | 40 +++++++++++++++++++++++++++++++++++-
>> + 2 files changed, 42 insertions(+), 1 deletion(-)
>> +
>> +diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
>> +index de08704c5862..94a381769e5a 100644
>> +--- a/include/uapi/linux/if_link.h
>> ++++ b/include/uapi/linux/if_link.h
>> +@@ -901,6 +901,9 @@ enum {
>> + 	IFLA_HSR_PROTOCOL,		/* Indicate different protocol than
>> + 					 * HSR. For example PRP.
>> + 					 */
>> ++	IFLA_HSR_SV_VID,		/* Supervision frames VLAN ID */
>> ++	IFLA_HSR_SV_DEI,		/* Supervision frames VLAN DEI */
>> ++	IFLA_HSR_SV_PCP,		/* Supervision frames VLAN PCP */
>> + 	__IFLA_HSR_MAX,
>> + };
>> +
>> +diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
>> +index 6ea138a23cbc..f38c752c0065 100644
>> +--- a/ip/iplink_hsr.c
>> ++++ b/ip/iplink_hsr.c
>> +@@ -26,6 +26,7 @@ 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[ sv_vid SV-VID ] [ sv_pcp SV-PCP ] [ sv_dei SV-DEI ]\n"
>> + 		"\n"
>> + 		"NAME\n"
>> + 		"	name of new hsr device (e.g. hsr0)\n"
>> +@@ -37,7 +38,15 @@ static void print_usage(FILE *f)
>> + 		"VERSION\n"
>> + 		"	0,1; the protocol version to be used. (default = 0)\n"
>> + 		"PROTOCOL\n"
>> +-		"	0 - HSR, 1 - PRP. (default = 0 - HSR)\n");
>> ++		"	0 - HSR, 1 - PRP. (default = 0 - HSR)\n"
>> ++		"SV-VID\n"
>> ++		"      0-4094; VLAN ID to be used in the VLAN tag of SV frames (default 0)\n"
>> ++		"SV-PCP\n"
>> ++		"      0-7; PCP value to be used in the VLAN tag of SV frames (default 0)\n"
>> ++		"SV-DEI\n"
>> ++		"      0-1;  DEI value to be used in the VLAN tag of SV frames (default 0)\n"
>> ++		"      Use VLAN tag if one of sv_vid, sv_pcp or sv_dei is specified. Default value\n"
>> ++		"      used for unspecified ones\n");
>> + }
>> +
>> + static void usage(void)
>> +@@ -52,6 +61,9 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
>> + 	unsigned char multicast_spec;
>> + 	unsigned char protocol_version;
>> + 	unsigned char protocol = HSR_PROTOCOL_HSR;
>> ++	unsigned short sv_vid;
>> ++	unsigned char sv_dei;
>> ++	unsigned char sv_pcp;
>> +
>> + 	while (argc > 0) {
>> + 		if (matches(*argv, "supervision") == 0) {
>> +@@ -86,6 +98,32 @@ 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, "sv_vid") == 0) {
>> ++			NEXT_ARG();
>> ++			if (get_u16(&sv_vid, *argv, 0))
>> ++				invarg("SV-VID is invalid", *argv);
>> ++			/* exclude reserved 4095 */
>> ++			if (sv_vid >= 4095)
>> ++				invarg("SV-VID is invalid", *argv);
>> ++			addattr_l(n, 1024, IFLA_HSR_SV_VID,
>> ++				  &sv_vid, sizeof(sv_vid));
>> ++		} else if (matches(*argv, "sv_pcp") == 0) {
>> ++			NEXT_ARG();
>> ++			if (get_u8(&sv_pcp, *argv, 0))
>> ++				invarg("SV-PCP is invalid", *argv);
>> ++			if (sv_pcp > 7)
>> ++				invarg("SV-PCP is invalid", *argv);
>> ++			addattr_l(n, 1024, IFLA_HSR_SV_PCP,
>> ++				  &sv_pcp, sizeof(sv_pcp));
>> ++		} else if (matches(*argv, "sv_dei") == 0) {
>> ++			NEXT_ARG();
>> ++			if (get_u8(&sv_dei, *argv, 0))
>> ++				invarg("SV-DEI is invalid", *argv);
>> ++			if (sv_dei > 1)
>> ++				invarg("SV-DEI is invalid", *argv);
>> ++			addattr_l(n, 1024, IFLA_HSR_SV_DEI,
>> ++				  &sv_dei, sizeof(sv_dei));
>> ++
>> + 		} else if (matches(*argv, "help") == 0) {
>> + 			usage();
>> + 			return -1;
>> +--
>> +2.17.1
>> +
>> diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend b/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
>> new file mode 100644
>> index 000000000000..d6effcd7ca81
>> --- /dev/null
>> +++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
>> @@ -0,0 +1,8 @@
>> +PR_append = ".arago6"
>> +
>> +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
>> +
>> +SRC_URI_append = " \
>> +    file://0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch \
>> +    file://0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch \
>> +"
>> -- 
>> 2.17.1
>>

-- 
Murali Karicheri
Texas Instruments

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [meta-arago PATCH] iproute2: update recipe for prp and supervision vlan support
@ 2020-07-07 17:44 Murali Karicheri
  2020-07-08 15:28 ` Denys Dmytriyenko
  0 siblings, 1 reply; 8+ messages in thread
From: Murali Karicheri @ 2020-07-07 17:44 UTC (permalink / raw)
  To: meta-arago, denys

This recipe includes the patches required in iproute2 to add
PRP ip link support as well as allow use of VLAN for supervision
frames.

Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
---
 ...upport-for-creating-PRP-device-simil.patch | 109 ++++++++++++++++++
 ...dd-support-for-vlan-tagged-supervisi.patch | 108 +++++++++++++++++
 .../iproute2/iproute2_5.5.0.bbappend          |   8 ++
 3 files changed, 225 insertions(+)
 create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
 create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
 create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend

diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
new file mode 100644
index 000000000000..dfeaeb01b485
--- /dev/null
+++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
@@ -0,0 +1,109 @@
+From e3aa94814e9467af5829a04c335a615c0082a362 Mon Sep 17 00:00:00 2001
+From: Murali Karicheri <m-karicheri2@ti.com>
+Date: Fri, 5 Jun 2020 11:02:05 -0400
+Subject: [PATCH 1/2] iplink: hsr: add support for creating PRP device similar
+ to HSR
+
+This patch enhances the iplink command to add a proto parameters to
+create PRP device/interface similar to HSR. Both protocols are
+quite similar and requires a pair of Ethernet interfaces. So re-use
+the existing HSR iplink command to create PRP device/interface as
+well. Use proto parameter to differentiate the two protocols.
+
+Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
+---
+ include/uapi/linux/if_link.h | 12 +++++++++++-
+ ip/iplink_hsr.c              | 19 +++++++++++++++++--
+ 2 files changed, 28 insertions(+), 3 deletions(-)
+
+diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
+index 1c49f436424d..de08704c5862 100644
+--- a/include/uapi/linux/if_link.h
++++ b/include/uapi/linux/if_link.h
+@@ -881,7 +881,14 @@ enum {
+ #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
+ 
+ 
+-/* HSR section */
++/* HSR/PRP section, both uses same interface */
++
++/* Different redundancy protocols for hsr device */
++enum {
++	HSR_PROTOCOL_HSR,
++	HSR_PROTOCOL_PRP,
++	HSR_PROTOCOL_MAX,
++};
+ 
+ enum {
+ 	IFLA_HSR_UNSPEC,
+@@ -891,6 +898,9 @@ enum {
+ 	IFLA_HSR_SUPERVISION_ADDR,	/* Supervision frame multicast addr */
+ 	IFLA_HSR_SEQ_NR,
+ 	IFLA_HSR_VERSION,		/* HSR version */
++	IFLA_HSR_PROTOCOL,		/* Indicate different protocol than
++					 * HSR. For example PRP.
++					 */
+ 	__IFLA_HSR_MAX,
+ };
+ 
+diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
+index 7d9167d4e6a3..6ea138a23cbc 100644
+--- a/ip/iplink_hsr.c
++++ b/ip/iplink_hsr.c
+@@ -25,7 +25,7 @@ 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]\n"
++		"\t[ supervision ADDR-BYTE ] [version VERSION] [proto PROTOCOL]\n"
+ 		"\n"
+ 		"NAME\n"
+ 		"	name of new hsr device (e.g. hsr0)\n"
+@@ -35,7 +35,9 @@ static void print_usage(FILE *f)
+ 		"	0-255; the last byte of the multicast address used for HSR supervision\n"
+ 		"	frames (default = 0)\n"
+ 		"VERSION\n"
+-		"	0,1; the protocol version to be used. (default = 0)\n");
++		"	0,1; the protocol version to be used. (default = 0)\n"
++		"PROTOCOL\n"
++		"	0 - HSR, 1 - PRP. (default = 0 - HSR)\n");
+ }
+ 
+ static void usage(void)
+@@ -49,6 +51,7 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
+ 	int ifindex;
+ 	unsigned char multicast_spec;
+ 	unsigned char protocol_version;
++	unsigned char protocol = HSR_PROTOCOL_HSR;
+ 
+ 	while (argc > 0) {
+ 		if (matches(*argv, "supervision") == 0) {
+@@ -64,6 +67,13 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
+ 				invarg("version is invalid", *argv);
+ 			addattr_l(n, 1024, IFLA_HSR_VERSION,
+ 				  &protocol_version, 1);
++		} else if (matches(*argv, "proto") == 0) {
++			NEXT_ARG();
++			if (!(get_u8(&protocol, *argv, 0) == HSR_PROTOCOL_HSR ||
++			      get_u8(&protocol, *argv, 0) == HSR_PROTOCOL_PRP))
++				invarg("protocol is invalid", *argv);
++			addattr_l(n, 1024, IFLA_HSR_PROTOCOL,
++				  &protocol, 1);
+ 		} else if (matches(*argv, "slave1") == 0) {
+ 			NEXT_ARG();
+ 			ifindex = ll_name_to_index(*argv);
+@@ -140,6 +150,11 @@ static void hsr_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
+ 					 RTA_PAYLOAD(tb[IFLA_HSR_SUPERVISION_ADDR]),
+ 					 ARPHRD_VOID,
+ 					 b1, sizeof(b1)));
++	if (tb[IFLA_HSR_PROTOCOL])
++		print_int(PRINT_ANY,
++			  "proto",
++			  "proto %d ",
++			  rta_getattr_u8(tb[IFLA_HSR_PROTOCOL]));
+ }
+ 
+ static void hsr_print_help(struct link_util *lu, int argc, char **argv,
+-- 
+2.17.1
+
diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
new file mode 100644
index 000000000000..fa0eecccdf59
--- /dev/null
+++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
@@ -0,0 +1,108 @@
+From 6e48ed61da3b03da415a87bfbd3651fde8742647 Mon Sep 17 00:00:00 2001
+From: Murali Karicheri <m-karicheri2@ti.com>
+Date: Fri, 5 Jun 2020 12:07:43 -0400
+Subject: [PATCH 2/2] iplink: hsr/prp: add support for vlan tagged supervision
+ frames
+
+This patch adds support to configure vlan tag information
+(vid, pcp and dei) at the hsr/prp lre device. This tag values
+will be used by the lre device to generate a VLAN tagged
+Supervision frames. This is done by adding 3 additional attributes
+to the hsr/prp link type and passing this to Linux HSR/PRP
+device through the ip link command.
+
+Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
+---
+ include/uapi/linux/if_link.h |  3 +++
+ ip/iplink_hsr.c              | 40 +++++++++++++++++++++++++++++++++++-
+ 2 files changed, 42 insertions(+), 1 deletion(-)
+
+diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
+index de08704c5862..94a381769e5a 100644
+--- a/include/uapi/linux/if_link.h
++++ b/include/uapi/linux/if_link.h
+@@ -901,6 +901,9 @@ enum {
+ 	IFLA_HSR_PROTOCOL,		/* Indicate different protocol than
+ 					 * HSR. For example PRP.
+ 					 */
++	IFLA_HSR_SV_VID,		/* Supervision frames VLAN ID */
++	IFLA_HSR_SV_DEI,		/* Supervision frames VLAN DEI */
++	IFLA_HSR_SV_PCP,		/* Supervision frames VLAN PCP */
+ 	__IFLA_HSR_MAX,
+ };
+ 
+diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
+index 6ea138a23cbc..f38c752c0065 100644
+--- a/ip/iplink_hsr.c
++++ b/ip/iplink_hsr.c
+@@ -26,6 +26,7 @@ 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[ sv_vid SV-VID ] [ sv_pcp SV-PCP ] [ sv_dei SV-DEI ]\n"
+ 		"\n"
+ 		"NAME\n"
+ 		"	name of new hsr device (e.g. hsr0)\n"
+@@ -37,7 +38,15 @@ static void print_usage(FILE *f)
+ 		"VERSION\n"
+ 		"	0,1; the protocol version to be used. (default = 0)\n"
+ 		"PROTOCOL\n"
+-		"	0 - HSR, 1 - PRP. (default = 0 - HSR)\n");
++		"	0 - HSR, 1 - PRP. (default = 0 - HSR)\n"
++		"SV-VID\n"
++		"      0-4094; VLAN ID to be used in the VLAN tag of SV frames (default 0)\n"
++		"SV-PCP\n"
++		"      0-7; PCP value to be used in the VLAN tag of SV frames (default 0)\n"
++		"SV-DEI\n"
++		"      0-1;  DEI value to be used in the VLAN tag of SV frames (default 0)\n"
++		"      Use VLAN tag if one of sv_vid, sv_pcp or sv_dei is specified. Default value\n"
++		"      used for unspecified ones\n");
+ }
+ 
+ static void usage(void)
+@@ -52,6 +61,9 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
+ 	unsigned char multicast_spec;
+ 	unsigned char protocol_version;
+ 	unsigned char protocol = HSR_PROTOCOL_HSR;
++	unsigned short sv_vid;
++	unsigned char sv_dei;
++	unsigned char sv_pcp;
+ 
+ 	while (argc > 0) {
+ 		if (matches(*argv, "supervision") == 0) {
+@@ -86,6 +98,32 @@ 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, "sv_vid") == 0) {
++			NEXT_ARG();
++			if (get_u16(&sv_vid, *argv, 0))
++				invarg("SV-VID is invalid", *argv);
++			/* exclude reserved 4095 */
++			if (sv_vid >= 4095)
++				invarg("SV-VID is invalid", *argv);
++			addattr_l(n, 1024, IFLA_HSR_SV_VID,
++				  &sv_vid, sizeof(sv_vid));
++		} else if (matches(*argv, "sv_pcp") == 0) {
++			NEXT_ARG();
++			if (get_u8(&sv_pcp, *argv, 0))
++				invarg("SV-PCP is invalid", *argv);
++			if (sv_pcp > 7)
++				invarg("SV-PCP is invalid", *argv);
++			addattr_l(n, 1024, IFLA_HSR_SV_PCP,
++				  &sv_pcp, sizeof(sv_pcp));
++		} else if (matches(*argv, "sv_dei") == 0) {
++			NEXT_ARG();
++			if (get_u8(&sv_dei, *argv, 0))
++				invarg("SV-DEI is invalid", *argv);
++			if (sv_dei > 1)
++				invarg("SV-DEI is invalid", *argv);
++			addattr_l(n, 1024, IFLA_HSR_SV_DEI,
++				  &sv_dei, sizeof(sv_dei));
++
+ 		} else if (matches(*argv, "help") == 0) {
+ 			usage();
+ 			return -1;
+-- 
+2.17.1
+
diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend b/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
new file mode 100644
index 000000000000..d6effcd7ca81
--- /dev/null
+++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
@@ -0,0 +1,8 @@
+PR_append = ".arago6"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+SRC_URI_append = " \
+    file://0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch \
+    file://0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch \
+"
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [meta-ti] [meta-arago PATCH] iproute2: update recipe for prp and supervision vlan support
       [not found]   ` <161F895730ADC75F.6803@lists.yoctoproject.org>
@ 2020-07-07 17:45     ` Murali
  2020-07-07 21:24       ` Denys Dmytriyenko
  0 siblings, 1 reply; 8+ messages in thread
From: Murali @ 2020-07-07 17:45 UTC (permalink / raw)
  To: Denys Dmytriyenko; +Cc: meta-ti



On 7/7/20 1:43 PM, Murali via lists.yoctoproject.org wrote:
> Denys,
> 
> What is the email id for meta-arago. I am subscribed to it, but my mail 
> bounced.
> 
> I tried meta-arago@lists.yoctoproject.org
> 
I think I got it. Is it meta-arago@arago-project.org ?

> Thanks
> 
> Murali
> 
> On 7/7/20 1:07 PM, Denys Dmytriyenko wrote:
>> Wrong mailing list. Please send this to meta-arago list instead.
>>
>>
>> On Tue, Jul 07, 2020 at 01:02:07PM -0400, Murali Karicheri wrote:
>>> This recipe includes the patches required in iproute2 to add
>>> PRP ip link support as well as allow use of VLAN for supervision
>>> frames.
>>>
>>> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>>> ---
>>>   ...upport-for-creating-PRP-device-simil.patch | 109 ++++++++++++++++++
>>>   ...dd-support-for-vlan-tagged-supervisi.patch | 108 +++++++++++++++++
>>>   .../iproute2/iproute2_5.5.0.bbappend          |   8 ++
>>>   3 files changed, 225 insertions(+)
>>>   create mode 100644 
>>> meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch 
>>>
>>>   create mode 100644 
>>> meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch 
>>>
>>>   create mode 100644 
>>> meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
>>>
>>> diff --git 
>>> a/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch 
>>> b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch 
>>>
>>> new file mode 100644
>>> index 000000000000..dfeaeb01b485
>>> --- /dev/null
>>> +++ 
>>> b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch 
>>>
>>> @@ -0,0 +1,109 @@
>>> +From e3aa94814e9467af5829a04c335a615c0082a362 Mon Sep 17 00:00:00 2001
>>> +From: Murali Karicheri <m-karicheri2@ti.com>
>>> +Date: Fri, 5 Jun 2020 11:02:05 -0400
>>> +Subject: [PATCH 1/2] iplink: hsr: add support for creating PRP 
>>> device similar
>>> + to HSR
>>> +
>>> +This patch enhances the iplink command to add a proto parameters to
>>> +create PRP device/interface similar to HSR. Both protocols are
>>> +quite similar and requires a pair of Ethernet interfaces. So re-use
>>> +the existing HSR iplink command to create PRP device/interface as
>>> +well. Use proto parameter to differentiate the two protocols.
>>> +
>>> +Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>>> +---
>>> + include/uapi/linux/if_link.h | 12 +++++++++++-
>>> + ip/iplink_hsr.c              | 19 +++++++++++++++++--
>>> + 2 files changed, 28 insertions(+), 3 deletions(-)
>>> +
>>> +diff --git a/include/uapi/linux/if_link.h 
>>> b/include/uapi/linux/if_link.h
>>> +index 1c49f436424d..de08704c5862 100644
>>> +--- a/include/uapi/linux/if_link.h
>>> ++++ b/include/uapi/linux/if_link.h
>>> +@@ -881,7 +881,14 @@ enum {
>>> + #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
>>> +
>>> +
>>> +-/* HSR section */
>>> ++/* HSR/PRP section, both uses same interface */
>>> ++
>>> ++/* Different redundancy protocols for hsr device */
>>> ++enum {
>>> ++    HSR_PROTOCOL_HSR,
>>> ++    HSR_PROTOCOL_PRP,
>>> ++    HSR_PROTOCOL_MAX,
>>> ++};
>>> +
>>> + enum {
>>> +     IFLA_HSR_UNSPEC,
>>> +@@ -891,6 +898,9 @@ enum {
>>> +     IFLA_HSR_SUPERVISION_ADDR,    /* Supervision frame multicast 
>>> addr */
>>> +     IFLA_HSR_SEQ_NR,
>>> +     IFLA_HSR_VERSION,        /* HSR version */
>>> ++    IFLA_HSR_PROTOCOL,        /* Indicate different protocol than
>>> ++                     * HSR. For example PRP.
>>> ++                     */
>>> +     __IFLA_HSR_MAX,
>>> + };
>>> +
>>> +diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
>>> +index 7d9167d4e6a3..6ea138a23cbc 100644
>>> +--- a/ip/iplink_hsr.c
>>> ++++ b/ip/iplink_hsr.c
>>> +@@ -25,7 +25,7 @@ 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]\n"
>>> ++        "\t[ supervision ADDR-BYTE ] [version VERSION] [proto 
>>> PROTOCOL]\n"
>>> +         "\n"
>>> +         "NAME\n"
>>> +         "    name of new hsr device (e.g. hsr0)\n"
>>> +@@ -35,7 +35,9 @@ static void print_usage(FILE *f)
>>> +         "    0-255; the last byte of the multicast address used for 
>>> HSR supervision\n"
>>> +         "    frames (default = 0)\n"
>>> +         "VERSION\n"
>>> +-        "    0,1; the protocol version to be used. (default = 0)\n");
>>> ++        "    0,1; the protocol version to be used. (default = 0)\n"
>>> ++        "PROTOCOL\n"
>>> ++        "    0 - HSR, 1 - PRP. (default = 0 - HSR)\n");
>>> + }
>>> +
>>> + static void usage(void)
>>> +@@ -49,6 +51,7 @@ static int hsr_parse_opt(struct link_util *lu, int 
>>> argc, char **argv,
>>> +     int ifindex;
>>> +     unsigned char multicast_spec;
>>> +     unsigned char protocol_version;
>>> ++    unsigned char protocol = HSR_PROTOCOL_HSR;
>>> +
>>> +     while (argc > 0) {
>>> +         if (matches(*argv, "supervision") == 0) {
>>> +@@ -64,6 +67,13 @@ static int hsr_parse_opt(struct link_util *lu, 
>>> int argc, char **argv,
>>> +                 invarg("version is invalid", *argv);
>>> +             addattr_l(n, 1024, IFLA_HSR_VERSION,
>>> +                   &protocol_version, 1);
>>> ++        } else if (matches(*argv, "proto") == 0) {
>>> ++            NEXT_ARG();
>>> ++            if (!(get_u8(&protocol, *argv, 0) == HSR_PROTOCOL_HSR ||
>>> ++                  get_u8(&protocol, *argv, 0) == HSR_PROTOCOL_PRP))
>>> ++                invarg("protocol is invalid", *argv);
>>> ++            addattr_l(n, 1024, IFLA_HSR_PROTOCOL,
>>> ++                  &protocol, 1);
>>> +         } else if (matches(*argv, "slave1") == 0) {
>>> +             NEXT_ARG();
>>> +             ifindex = ll_name_to_index(*argv);
>>> +@@ -140,6 +150,11 @@ static void hsr_print_opt(struct link_util *lu, 
>>> FILE *f, struct rtattr *tb[])
>>> +                      RTA_PAYLOAD(tb[IFLA_HSR_SUPERVISION_ADDR]),
>>> +                      ARPHRD_VOID,
>>> +                      b1, sizeof(b1)));
>>> ++    if (tb[IFLA_HSR_PROTOCOL])
>>> ++        print_int(PRINT_ANY,
>>> ++              "proto",
>>> ++              "proto %d ",
>>> ++              rta_getattr_u8(tb[IFLA_HSR_PROTOCOL]));
>>> + }
>>> +
>>> + static void hsr_print_help(struct link_util *lu, int argc, char 
>>> **argv,
>>> +--
>>> +2.17.1
>>> +
>>> diff --git 
>>> a/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch 
>>> b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch 
>>>
>>> new file mode 100644
>>> index 000000000000..fa0eecccdf59
>>> --- /dev/null
>>> +++ 
>>> b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch 
>>>
>>> @@ -0,0 +1,108 @@
>>> +From 6e48ed61da3b03da415a87bfbd3651fde8742647 Mon Sep 17 00:00:00 2001
>>> +From: Murali Karicheri <m-karicheri2@ti.com>
>>> +Date: Fri, 5 Jun 2020 12:07:43 -0400
>>> +Subject: [PATCH 2/2] iplink: hsr/prp: add support for vlan tagged 
>>> supervision
>>> + frames
>>> +
>>> +This patch adds support to configure vlan tag information
>>> +(vid, pcp and dei) at the hsr/prp lre device. This tag values
>>> +will be used by the lre device to generate a VLAN tagged
>>> +Supervision frames. This is done by adding 3 additional attributes
>>> +to the hsr/prp link type and passing this to Linux HSR/PRP
>>> +device through the ip link command.
>>> +
>>> +Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>>> +---
>>> + include/uapi/linux/if_link.h |  3 +++
>>> + ip/iplink_hsr.c              | 40 +++++++++++++++++++++++++++++++++++-
>>> + 2 files changed, 42 insertions(+), 1 deletion(-)
>>> +
>>> +diff --git a/include/uapi/linux/if_link.h 
>>> b/include/uapi/linux/if_link.h
>>> +index de08704c5862..94a381769e5a 100644
>>> +--- a/include/uapi/linux/if_link.h
>>> ++++ b/include/uapi/linux/if_link.h
>>> +@@ -901,6 +901,9 @@ enum {
>>> +     IFLA_HSR_PROTOCOL,        /* Indicate different protocol than
>>> +                      * HSR. For example PRP.
>>> +                      */
>>> ++    IFLA_HSR_SV_VID,        /* Supervision frames VLAN ID */
>>> ++    IFLA_HSR_SV_DEI,        /* Supervision frames VLAN DEI */
>>> ++    IFLA_HSR_SV_PCP,        /* Supervision frames VLAN PCP */
>>> +     __IFLA_HSR_MAX,
>>> + };
>>> +
>>> +diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
>>> +index 6ea138a23cbc..f38c752c0065 100644
>>> +--- a/ip/iplink_hsr.c
>>> ++++ b/ip/iplink_hsr.c
>>> +@@ -26,6 +26,7 @@ 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[ sv_vid SV-VID ] [ sv_pcp SV-PCP ] [ sv_dei SV-DEI ]\n"
>>> +         "\n"
>>> +         "NAME\n"
>>> +         "    name of new hsr device (e.g. hsr0)\n"
>>> +@@ -37,7 +38,15 @@ static void print_usage(FILE *f)
>>> +         "VERSION\n"
>>> +         "    0,1; the protocol version to be used. (default = 0)\n"
>>> +         "PROTOCOL\n"
>>> +-        "    0 - HSR, 1 - PRP. (default = 0 - HSR)\n");
>>> ++        "    0 - HSR, 1 - PRP. (default = 0 - HSR)\n"
>>> ++        "SV-VID\n"
>>> ++        "      0-4094; VLAN ID to be used in the VLAN tag of SV 
>>> frames (default 0)\n"
>>> ++        "SV-PCP\n"
>>> ++        "      0-7; PCP value to be used in the VLAN tag of SV 
>>> frames (default 0)\n"
>>> ++        "SV-DEI\n"
>>> ++        "      0-1;  DEI value to be used in the VLAN tag of SV 
>>> frames (default 0)\n"
>>> ++        "      Use VLAN tag if one of sv_vid, sv_pcp or sv_dei is 
>>> specified. Default value\n"
>>> ++        "      used for unspecified ones\n");
>>> + }
>>> +
>>> + static void usage(void)
>>> +@@ -52,6 +61,9 @@ static int hsr_parse_opt(struct link_util *lu, int 
>>> argc, char **argv,
>>> +     unsigned char multicast_spec;
>>> +     unsigned char protocol_version;
>>> +     unsigned char protocol = HSR_PROTOCOL_HSR;
>>> ++    unsigned short sv_vid;
>>> ++    unsigned char sv_dei;
>>> ++    unsigned char sv_pcp;
>>> +
>>> +     while (argc > 0) {
>>> +         if (matches(*argv, "supervision") == 0) {
>>> +@@ -86,6 +98,32 @@ 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, "sv_vid") == 0) {
>>> ++            NEXT_ARG();
>>> ++            if (get_u16(&sv_vid, *argv, 0))
>>> ++                invarg("SV-VID is invalid", *argv);
>>> ++            /* exclude reserved 4095 */
>>> ++            if (sv_vid >= 4095)
>>> ++                invarg("SV-VID is invalid", *argv);
>>> ++            addattr_l(n, 1024, IFLA_HSR_SV_VID,
>>> ++                  &sv_vid, sizeof(sv_vid));
>>> ++        } else if (matches(*argv, "sv_pcp") == 0) {
>>> ++            NEXT_ARG();
>>> ++            if (get_u8(&sv_pcp, *argv, 0))
>>> ++                invarg("SV-PCP is invalid", *argv);
>>> ++            if (sv_pcp > 7)
>>> ++                invarg("SV-PCP is invalid", *argv);
>>> ++            addattr_l(n, 1024, IFLA_HSR_SV_PCP,
>>> ++                  &sv_pcp, sizeof(sv_pcp));
>>> ++        } else if (matches(*argv, "sv_dei") == 0) {
>>> ++            NEXT_ARG();
>>> ++            if (get_u8(&sv_dei, *argv, 0))
>>> ++                invarg("SV-DEI is invalid", *argv);
>>> ++            if (sv_dei > 1)
>>> ++                invarg("SV-DEI is invalid", *argv);
>>> ++            addattr_l(n, 1024, IFLA_HSR_SV_DEI,
>>> ++                  &sv_dei, sizeof(sv_dei));
>>> ++
>>> +         } else if (matches(*argv, "help") == 0) {
>>> +             usage();
>>> +             return -1;
>>> +--
>>> +2.17.1
>>> +
>>> diff --git 
>>> a/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend 
>>> b/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend 
>>>
>>> new file mode 100644
>>> index 000000000000..d6effcd7ca81
>>> --- /dev/null
>>> +++ 
>>> b/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend 
>>>
>>> @@ -0,0 +1,8 @@
>>> +PR_append = ".arago6"
>>> +
>>> +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
>>> +
>>> +SRC_URI_append = " \
>>> +    
>>> file://0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch \
>>> +    
>>> file://0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch \
>>> +"
>>> -- 
>>> 2.17.1
>>>
> 
> 
> 
> 

-- 
Murali Karicheri
Texas Instruments

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [meta-ti] [meta-arago PATCH] iproute2: update recipe for prp and supervision vlan support
  2020-07-07 17:45     ` [meta-ti] " Murali
@ 2020-07-07 21:24       ` Denys Dmytriyenko
  0 siblings, 0 replies; 8+ messages in thread
From: Denys Dmytriyenko @ 2020-07-07 21:24 UTC (permalink / raw)
  To: Murali Karicheri; +Cc: meta-ti

On Tue, Jul 07, 2020 at 01:45:00PM -0400, Murali Karicheri wrote:
> 
> 
> On 7/7/20 1:43 PM, Murali via lists.yoctoproject.org wrote:
> >Denys,
> >
> >What is the email id for meta-arago. I am subscribed to it, but my mail
> >bounced.
> >
> >I tried meta-arago@lists.yoctoproject.org
> >
> I think I got it. Is it meta-arago@arago-project.org ?

Correct.


> >Thanks
> >
> >Murali
> >
> >On 7/7/20 1:07 PM, Denys Dmytriyenko wrote:
> >>Wrong mailing list. Please send this to meta-arago list instead.
> >>
> >>
> >>On Tue, Jul 07, 2020 at 01:02:07PM -0400, Murali Karicheri wrote:
> >>>This recipe includes the patches required in iproute2 to add
> >>>PRP ip link support as well as allow use of VLAN for supervision
> >>>frames.
> >>>
> >>>Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
> >>>---
> >>>  ...upport-for-creating-PRP-device-simil.patch | 109 ++++++++++++++++++
> >>>  ...dd-support-for-vlan-tagged-supervisi.patch | 108 +++++++++++++++++
> >>>  .../iproute2/iproute2_5.5.0.bbappend          |   8 ++
> >>>  3 files changed, 225 insertions(+)
> >>>  create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
> >>>
> >>>  create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
> >>>
> >>>  create mode 100644
> >>>meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
> >>>
> >>>diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
> >>>
> >>>new file mode 100644
> >>>index 000000000000..dfeaeb01b485
> >>>--- /dev/null
> >>>+++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
> >>>
> >>>@@ -0,0 +1,109 @@
> >>>+From e3aa94814e9467af5829a04c335a615c0082a362 Mon Sep 17 00:00:00 2001
> >>>+From: Murali Karicheri <m-karicheri2@ti.com>
> >>>+Date: Fri, 5 Jun 2020 11:02:05 -0400
> >>>+Subject: [PATCH 1/2] iplink: hsr: add support for creating PRP device
> >>>similar
> >>>+ to HSR
> >>>+
> >>>+This patch enhances the iplink command to add a proto parameters to
> >>>+create PRP device/interface similar to HSR. Both protocols are
> >>>+quite similar and requires a pair of Ethernet interfaces. So re-use
> >>>+the existing HSR iplink command to create PRP device/interface as
> >>>+well. Use proto parameter to differentiate the two protocols.
> >>>+
> >>>+Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
> >>>+---
> >>>+ include/uapi/linux/if_link.h | 12 +++++++++++-
> >>>+ ip/iplink_hsr.c              | 19 +++++++++++++++++--
> >>>+ 2 files changed, 28 insertions(+), 3 deletions(-)
> >>>+
> >>>+diff --git a/include/uapi/linux/if_link.h
> >>>b/include/uapi/linux/if_link.h
> >>>+index 1c49f436424d..de08704c5862 100644
> >>>+--- a/include/uapi/linux/if_link.h
> >>>++++ b/include/uapi/linux/if_link.h
> >>>+@@ -881,7 +881,14 @@ enum {
> >>>+ #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
> >>>+
> >>>+
> >>>+-/* HSR section */
> >>>++/* HSR/PRP section, both uses same interface */
> >>>++
> >>>++/* Different redundancy protocols for hsr device */
> >>>++enum {
> >>>++    HSR_PROTOCOL_HSR,
> >>>++    HSR_PROTOCOL_PRP,
> >>>++    HSR_PROTOCOL_MAX,
> >>>++};
> >>>+
> >>>+ enum {
> >>>+     IFLA_HSR_UNSPEC,
> >>>+@@ -891,6 +898,9 @@ enum {
> >>>+     IFLA_HSR_SUPERVISION_ADDR,    /* Supervision frame multicast
> >>>addr */
> >>>+     IFLA_HSR_SEQ_NR,
> >>>+     IFLA_HSR_VERSION,        /* HSR version */
> >>>++    IFLA_HSR_PROTOCOL,        /* Indicate different protocol than
> >>>++                     * HSR. For example PRP.
> >>>++                     */
> >>>+     __IFLA_HSR_MAX,
> >>>+ };
> >>>+
> >>>+diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
> >>>+index 7d9167d4e6a3..6ea138a23cbc 100644
> >>>+--- a/ip/iplink_hsr.c
> >>>++++ b/ip/iplink_hsr.c
> >>>+@@ -25,7 +25,7 @@ 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]\n"
> >>>++        "\t[ supervision ADDR-BYTE ] [version VERSION] [proto
> >>>PROTOCOL]\n"
> >>>+         "\n"
> >>>+         "NAME\n"
> >>>+         "    name of new hsr device (e.g. hsr0)\n"
> >>>+@@ -35,7 +35,9 @@ static void print_usage(FILE *f)
> >>>+         "    0-255; the last byte of the multicast address used for
> >>>HSR supervision\n"
> >>>+         "    frames (default = 0)\n"
> >>>+         "VERSION\n"
> >>>+-        "    0,1; the protocol version to be used. (default = 0)\n");
> >>>++        "    0,1; the protocol version to be used. (default = 0)\n"
> >>>++        "PROTOCOL\n"
> >>>++        "    0 - HSR, 1 - PRP. (default = 0 - HSR)\n");
> >>>+ }
> >>>+
> >>>+ static void usage(void)
> >>>+@@ -49,6 +51,7 @@ static int hsr_parse_opt(struct link_util *lu, int
> >>>argc, char **argv,
> >>>+     int ifindex;
> >>>+     unsigned char multicast_spec;
> >>>+     unsigned char protocol_version;
> >>>++    unsigned char protocol = HSR_PROTOCOL_HSR;
> >>>+
> >>>+     while (argc > 0) {
> >>>+         if (matches(*argv, "supervision") == 0) {
> >>>+@@ -64,6 +67,13 @@ static int hsr_parse_opt(struct link_util *lu, int
> >>>argc, char **argv,
> >>>+                 invarg("version is invalid", *argv);
> >>>+             addattr_l(n, 1024, IFLA_HSR_VERSION,
> >>>+                   &protocol_version, 1);
> >>>++        } else if (matches(*argv, "proto") == 0) {
> >>>++            NEXT_ARG();
> >>>++            if (!(get_u8(&protocol, *argv, 0) == HSR_PROTOCOL_HSR ||
> >>>++                  get_u8(&protocol, *argv, 0) == HSR_PROTOCOL_PRP))
> >>>++                invarg("protocol is invalid", *argv);
> >>>++            addattr_l(n, 1024, IFLA_HSR_PROTOCOL,
> >>>++                  &protocol, 1);
> >>>+         } else if (matches(*argv, "slave1") == 0) {
> >>>+             NEXT_ARG();
> >>>+             ifindex = ll_name_to_index(*argv);
> >>>+@@ -140,6 +150,11 @@ static void hsr_print_opt(struct link_util *lu,
> >>>FILE *f, struct rtattr *tb[])
> >>>+                      RTA_PAYLOAD(tb[IFLA_HSR_SUPERVISION_ADDR]),
> >>>+                      ARPHRD_VOID,
> >>>+                      b1, sizeof(b1)));
> >>>++    if (tb[IFLA_HSR_PROTOCOL])
> >>>++        print_int(PRINT_ANY,
> >>>++              "proto",
> >>>++              "proto %d ",
> >>>++              rta_getattr_u8(tb[IFLA_HSR_PROTOCOL]));
> >>>+ }
> >>>+
> >>>+ static void hsr_print_help(struct link_util *lu, int argc, char
> >>>**argv,
> >>>+--
> >>>+2.17.1
> >>>+
> >>>diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
> >>>
> >>>new file mode 100644
> >>>index 000000000000..fa0eecccdf59
> >>>--- /dev/null
> >>>+++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
> >>>
> >>>@@ -0,0 +1,108 @@
> >>>+From 6e48ed61da3b03da415a87bfbd3651fde8742647 Mon Sep 17 00:00:00 2001
> >>>+From: Murali Karicheri <m-karicheri2@ti.com>
> >>>+Date: Fri, 5 Jun 2020 12:07:43 -0400
> >>>+Subject: [PATCH 2/2] iplink: hsr/prp: add support for vlan tagged
> >>>supervision
> >>>+ frames
> >>>+
> >>>+This patch adds support to configure vlan tag information
> >>>+(vid, pcp and dei) at the hsr/prp lre device. This tag values
> >>>+will be used by the lre device to generate a VLAN tagged
> >>>+Supervision frames. This is done by adding 3 additional attributes
> >>>+to the hsr/prp link type and passing this to Linux HSR/PRP
> >>>+device through the ip link command.
> >>>+
> >>>+Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
> >>>+---
> >>>+ include/uapi/linux/if_link.h |  3 +++
> >>>+ ip/iplink_hsr.c              | 40 +++++++++++++++++++++++++++++++++++-
> >>>+ 2 files changed, 42 insertions(+), 1 deletion(-)
> >>>+
> >>>+diff --git a/include/uapi/linux/if_link.h
> >>>b/include/uapi/linux/if_link.h
> >>>+index de08704c5862..94a381769e5a 100644
> >>>+--- a/include/uapi/linux/if_link.h
> >>>++++ b/include/uapi/linux/if_link.h
> >>>+@@ -901,6 +901,9 @@ enum {
> >>>+     IFLA_HSR_PROTOCOL,        /* Indicate different protocol than
> >>>+                      * HSR. For example PRP.
> >>>+                      */
> >>>++    IFLA_HSR_SV_VID,        /* Supervision frames VLAN ID */
> >>>++    IFLA_HSR_SV_DEI,        /* Supervision frames VLAN DEI */
> >>>++    IFLA_HSR_SV_PCP,        /* Supervision frames VLAN PCP */
> >>>+     __IFLA_HSR_MAX,
> >>>+ };
> >>>+
> >>>+diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
> >>>+index 6ea138a23cbc..f38c752c0065 100644
> >>>+--- a/ip/iplink_hsr.c
> >>>++++ b/ip/iplink_hsr.c
> >>>+@@ -26,6 +26,7 @@ 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[ sv_vid SV-VID ] [ sv_pcp SV-PCP ] [ sv_dei SV-DEI ]\n"
> >>>+         "\n"
> >>>+         "NAME\n"
> >>>+         "    name of new hsr device (e.g. hsr0)\n"
> >>>+@@ -37,7 +38,15 @@ static void print_usage(FILE *f)
> >>>+         "VERSION\n"
> >>>+         "    0,1; the protocol version to be used. (default = 0)\n"
> >>>+         "PROTOCOL\n"
> >>>+-        "    0 - HSR, 1 - PRP. (default = 0 - HSR)\n");
> >>>++        "    0 - HSR, 1 - PRP. (default = 0 - HSR)\n"
> >>>++        "SV-VID\n"
> >>>++        "      0-4094; VLAN ID to be used in the VLAN tag of SV
> >>>frames (default 0)\n"
> >>>++        "SV-PCP\n"
> >>>++        "      0-7; PCP value to be used in the VLAN tag of SV
> >>>frames (default 0)\n"
> >>>++        "SV-DEI\n"
> >>>++        "      0-1;  DEI value to be used in the VLAN tag of SV
> >>>frames (default 0)\n"
> >>>++        "      Use VLAN tag if one of sv_vid, sv_pcp or sv_dei is
> >>>specified. Default value\n"
> >>>++        "      used for unspecified ones\n");
> >>>+ }
> >>>+
> >>>+ static void usage(void)
> >>>+@@ -52,6 +61,9 @@ static int hsr_parse_opt(struct link_util *lu, int
> >>>argc, char **argv,
> >>>+     unsigned char multicast_spec;
> >>>+     unsigned char protocol_version;
> >>>+     unsigned char protocol = HSR_PROTOCOL_HSR;
> >>>++    unsigned short sv_vid;
> >>>++    unsigned char sv_dei;
> >>>++    unsigned char sv_pcp;
> >>>+
> >>>+     while (argc > 0) {
> >>>+         if (matches(*argv, "supervision") == 0) {
> >>>+@@ -86,6 +98,32 @@ 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, "sv_vid") == 0) {
> >>>++            NEXT_ARG();
> >>>++            if (get_u16(&sv_vid, *argv, 0))
> >>>++                invarg("SV-VID is invalid", *argv);
> >>>++            /* exclude reserved 4095 */
> >>>++            if (sv_vid >= 4095)
> >>>++                invarg("SV-VID is invalid", *argv);
> >>>++            addattr_l(n, 1024, IFLA_HSR_SV_VID,
> >>>++                  &sv_vid, sizeof(sv_vid));
> >>>++        } else if (matches(*argv, "sv_pcp") == 0) {
> >>>++            NEXT_ARG();
> >>>++            if (get_u8(&sv_pcp, *argv, 0))
> >>>++                invarg("SV-PCP is invalid", *argv);
> >>>++            if (sv_pcp > 7)
> >>>++                invarg("SV-PCP is invalid", *argv);
> >>>++            addattr_l(n, 1024, IFLA_HSR_SV_PCP,
> >>>++                  &sv_pcp, sizeof(sv_pcp));
> >>>++        } else if (matches(*argv, "sv_dei") == 0) {
> >>>++            NEXT_ARG();
> >>>++            if (get_u8(&sv_dei, *argv, 0))
> >>>++                invarg("SV-DEI is invalid", *argv);
> >>>++            if (sv_dei > 1)
> >>>++                invarg("SV-DEI is invalid", *argv);
> >>>++            addattr_l(n, 1024, IFLA_HSR_SV_DEI,
> >>>++                  &sv_dei, sizeof(sv_dei));
> >>>++
> >>>+         } else if (matches(*argv, "help") == 0) {
> >>>+             usage();
> >>>+             return -1;
> >>>+--
> >>>+2.17.1
> >>>+
> >>>diff --git
> >>>a/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
> >>>b/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
> >>>
> >>>new file mode 100644
> >>>index 000000000000..d6effcd7ca81
> >>>--- /dev/null
> >>>+++
> >>>b/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
> >>>
> >>>@@ -0,0 +1,8 @@
> >>>+PR_append = ".arago6"
> >>>+
> >>>+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
> >>>+
> >>>+SRC_URI_append = " \
> >>>+
> >>>file://0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
> >>>\
> >>>+
> >>>file://0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
> >>>\
> >>>+"
> >>>-- 
> >>>2.17.1
> >>>
> >
> >
> >
> >
> 
> -- 
> Murali Karicheri
> Texas Instruments

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [meta-arago PATCH] iproute2: update recipe for prp and supervision vlan support
  2020-07-07 17:44 Murali Karicheri
@ 2020-07-08 15:28 ` Denys Dmytriyenko
  2020-07-08 15:55   ` Murali Karicheri
  0 siblings, 1 reply; 8+ messages in thread
From: Denys Dmytriyenko @ 2020-07-08 15:28 UTC (permalink / raw)
  To: Murali Karicheri; +Cc: meta-arago

On Tue, Jul 07, 2020 at 01:44:02PM -0400, Murali Karicheri wrote:
> This recipe includes the patches required in iproute2 to add
> PRP ip link support as well as allow use of VLAN for supervision
> frames.

What is the Upstream-status for both of these patches?


> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
> ---
>  ...upport-for-creating-PRP-device-simil.patch | 109 ++++++++++++++++++
>  ...dd-support-for-vlan-tagged-supervisi.patch | 108 +++++++++++++++++
>  .../iproute2/iproute2_5.5.0.bbappend          |   8 ++
>  3 files changed, 225 insertions(+)
>  create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
>  create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
>  create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
> 
> diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
> new file mode 100644
> index 000000000000..dfeaeb01b485
> --- /dev/null
> +++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
> @@ -0,0 +1,109 @@
> +From e3aa94814e9467af5829a04c335a615c0082a362 Mon Sep 17 00:00:00 2001
> +From: Murali Karicheri <m-karicheri2@ti.com>
> +Date: Fri, 5 Jun 2020 11:02:05 -0400
> +Subject: [PATCH 1/2] iplink: hsr: add support for creating PRP device similar
> + to HSR
> +
> +This patch enhances the iplink command to add a proto parameters to
> +create PRP device/interface similar to HSR. Both protocols are
> +quite similar and requires a pair of Ethernet interfaces. So re-use
> +the existing HSR iplink command to create PRP device/interface as
> +well. Use proto parameter to differentiate the two protocols.
> +
> +Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
> +---
> + include/uapi/linux/if_link.h | 12 +++++++++++-
> + ip/iplink_hsr.c              | 19 +++++++++++++++++--
> + 2 files changed, 28 insertions(+), 3 deletions(-)
> +
> +diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
> +index 1c49f436424d..de08704c5862 100644
> +--- a/include/uapi/linux/if_link.h
> ++++ b/include/uapi/linux/if_link.h
> +@@ -881,7 +881,14 @@ enum {
> + #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
> + 
> + 
> +-/* HSR section */
> ++/* HSR/PRP section, both uses same interface */
> ++
> ++/* Different redundancy protocols for hsr device */
> ++enum {
> ++	HSR_PROTOCOL_HSR,
> ++	HSR_PROTOCOL_PRP,
> ++	HSR_PROTOCOL_MAX,
> ++};
> + 
> + enum {
> + 	IFLA_HSR_UNSPEC,
> +@@ -891,6 +898,9 @@ enum {
> + 	IFLA_HSR_SUPERVISION_ADDR,	/* Supervision frame multicast addr */
> + 	IFLA_HSR_SEQ_NR,
> + 	IFLA_HSR_VERSION,		/* HSR version */
> ++	IFLA_HSR_PROTOCOL,		/* Indicate different protocol than
> ++					 * HSR. For example PRP.
> ++					 */
> + 	__IFLA_HSR_MAX,
> + };
> + 
> +diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
> +index 7d9167d4e6a3..6ea138a23cbc 100644
> +--- a/ip/iplink_hsr.c
> ++++ b/ip/iplink_hsr.c
> +@@ -25,7 +25,7 @@ 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]\n"
> ++		"\t[ supervision ADDR-BYTE ] [version VERSION] [proto PROTOCOL]\n"
> + 		"\n"
> + 		"NAME\n"
> + 		"	name of new hsr device (e.g. hsr0)\n"
> +@@ -35,7 +35,9 @@ static void print_usage(FILE *f)
> + 		"	0-255; the last byte of the multicast address used for HSR supervision\n"
> + 		"	frames (default = 0)\n"
> + 		"VERSION\n"
> +-		"	0,1; the protocol version to be used. (default = 0)\n");
> ++		"	0,1; the protocol version to be used. (default = 0)\n"
> ++		"PROTOCOL\n"
> ++		"	0 - HSR, 1 - PRP. (default = 0 - HSR)\n");
> + }
> + 
> + static void usage(void)
> +@@ -49,6 +51,7 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
> + 	int ifindex;
> + 	unsigned char multicast_spec;
> + 	unsigned char protocol_version;
> ++	unsigned char protocol = HSR_PROTOCOL_HSR;
> + 
> + 	while (argc > 0) {
> + 		if (matches(*argv, "supervision") == 0) {
> +@@ -64,6 +67,13 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
> + 				invarg("version is invalid", *argv);
> + 			addattr_l(n, 1024, IFLA_HSR_VERSION,
> + 				  &protocol_version, 1);
> ++		} else if (matches(*argv, "proto") == 0) {
> ++			NEXT_ARG();
> ++			if (!(get_u8(&protocol, *argv, 0) == HSR_PROTOCOL_HSR ||
> ++			      get_u8(&protocol, *argv, 0) == HSR_PROTOCOL_PRP))
> ++				invarg("protocol is invalid", *argv);
> ++			addattr_l(n, 1024, IFLA_HSR_PROTOCOL,
> ++				  &protocol, 1);
> + 		} else if (matches(*argv, "slave1") == 0) {
> + 			NEXT_ARG();
> + 			ifindex = ll_name_to_index(*argv);
> +@@ -140,6 +150,11 @@ static void hsr_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
> + 					 RTA_PAYLOAD(tb[IFLA_HSR_SUPERVISION_ADDR]),
> + 					 ARPHRD_VOID,
> + 					 b1, sizeof(b1)));
> ++	if (tb[IFLA_HSR_PROTOCOL])
> ++		print_int(PRINT_ANY,
> ++			  "proto",
> ++			  "proto %d ",
> ++			  rta_getattr_u8(tb[IFLA_HSR_PROTOCOL]));
> + }
> + 
> + static void hsr_print_help(struct link_util *lu, int argc, char **argv,
> +-- 
> +2.17.1
> +
> diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
> new file mode 100644
> index 000000000000..fa0eecccdf59
> --- /dev/null
> +++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
> @@ -0,0 +1,108 @@
> +From 6e48ed61da3b03da415a87bfbd3651fde8742647 Mon Sep 17 00:00:00 2001
> +From: Murali Karicheri <m-karicheri2@ti.com>
> +Date: Fri, 5 Jun 2020 12:07:43 -0400
> +Subject: [PATCH 2/2] iplink: hsr/prp: add support for vlan tagged supervision
> + frames
> +
> +This patch adds support to configure vlan tag information
> +(vid, pcp and dei) at the hsr/prp lre device. This tag values
> +will be used by the lre device to generate a VLAN tagged
> +Supervision frames. This is done by adding 3 additional attributes
> +to the hsr/prp link type and passing this to Linux HSR/PRP
> +device through the ip link command.
> +
> +Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
> +---
> + include/uapi/linux/if_link.h |  3 +++
> + ip/iplink_hsr.c              | 40 +++++++++++++++++++++++++++++++++++-
> + 2 files changed, 42 insertions(+), 1 deletion(-)
> +
> +diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
> +index de08704c5862..94a381769e5a 100644
> +--- a/include/uapi/linux/if_link.h
> ++++ b/include/uapi/linux/if_link.h
> +@@ -901,6 +901,9 @@ enum {
> + 	IFLA_HSR_PROTOCOL,		/* Indicate different protocol than
> + 					 * HSR. For example PRP.
> + 					 */
> ++	IFLA_HSR_SV_VID,		/* Supervision frames VLAN ID */
> ++	IFLA_HSR_SV_DEI,		/* Supervision frames VLAN DEI */
> ++	IFLA_HSR_SV_PCP,		/* Supervision frames VLAN PCP */
> + 	__IFLA_HSR_MAX,
> + };
> + 
> +diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
> +index 6ea138a23cbc..f38c752c0065 100644
> +--- a/ip/iplink_hsr.c
> ++++ b/ip/iplink_hsr.c
> +@@ -26,6 +26,7 @@ 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[ sv_vid SV-VID ] [ sv_pcp SV-PCP ] [ sv_dei SV-DEI ]\n"
> + 		"\n"
> + 		"NAME\n"
> + 		"	name of new hsr device (e.g. hsr0)\n"
> +@@ -37,7 +38,15 @@ static void print_usage(FILE *f)
> + 		"VERSION\n"
> + 		"	0,1; the protocol version to be used. (default = 0)\n"
> + 		"PROTOCOL\n"
> +-		"	0 - HSR, 1 - PRP. (default = 0 - HSR)\n");
> ++		"	0 - HSR, 1 - PRP. (default = 0 - HSR)\n"
> ++		"SV-VID\n"
> ++		"      0-4094; VLAN ID to be used in the VLAN tag of SV frames (default 0)\n"
> ++		"SV-PCP\n"
> ++		"      0-7; PCP value to be used in the VLAN tag of SV frames (default 0)\n"
> ++		"SV-DEI\n"
> ++		"      0-1;  DEI value to be used in the VLAN tag of SV frames (default 0)\n"
> ++		"      Use VLAN tag if one of sv_vid, sv_pcp or sv_dei is specified. Default value\n"
> ++		"      used for unspecified ones\n");
> + }
> + 
> + static void usage(void)
> +@@ -52,6 +61,9 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
> + 	unsigned char multicast_spec;
> + 	unsigned char protocol_version;
> + 	unsigned char protocol = HSR_PROTOCOL_HSR;
> ++	unsigned short sv_vid;
> ++	unsigned char sv_dei;
> ++	unsigned char sv_pcp;
> + 
> + 	while (argc > 0) {
> + 		if (matches(*argv, "supervision") == 0) {
> +@@ -86,6 +98,32 @@ 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, "sv_vid") == 0) {
> ++			NEXT_ARG();
> ++			if (get_u16(&sv_vid, *argv, 0))
> ++				invarg("SV-VID is invalid", *argv);
> ++			/* exclude reserved 4095 */
> ++			if (sv_vid >= 4095)
> ++				invarg("SV-VID is invalid", *argv);
> ++			addattr_l(n, 1024, IFLA_HSR_SV_VID,
> ++				  &sv_vid, sizeof(sv_vid));
> ++		} else if (matches(*argv, "sv_pcp") == 0) {
> ++			NEXT_ARG();
> ++			if (get_u8(&sv_pcp, *argv, 0))
> ++				invarg("SV-PCP is invalid", *argv);
> ++			if (sv_pcp > 7)
> ++				invarg("SV-PCP is invalid", *argv);
> ++			addattr_l(n, 1024, IFLA_HSR_SV_PCP,
> ++				  &sv_pcp, sizeof(sv_pcp));
> ++		} else if (matches(*argv, "sv_dei") == 0) {
> ++			NEXT_ARG();
> ++			if (get_u8(&sv_dei, *argv, 0))
> ++				invarg("SV-DEI is invalid", *argv);
> ++			if (sv_dei > 1)
> ++				invarg("SV-DEI is invalid", *argv);
> ++			addattr_l(n, 1024, IFLA_HSR_SV_DEI,
> ++				  &sv_dei, sizeof(sv_dei));
> ++
> + 		} else if (matches(*argv, "help") == 0) {
> + 			usage();
> + 			return -1;
> +-- 
> +2.17.1
> +
> diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend b/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
> new file mode 100644
> index 000000000000..d6effcd7ca81
> --- /dev/null
> +++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
> @@ -0,0 +1,8 @@
> +PR_append = ".arago6"
> +
> +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
> +
> +SRC_URI_append = " \
> +    file://0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch \
> +    file://0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch \
> +"
> -- 
> 2.17.1
> 


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [meta-arago PATCH] iproute2: update recipe for prp and supervision vlan support
  2020-07-08 15:28 ` Denys Dmytriyenko
@ 2020-07-08 15:55   ` Murali Karicheri
  0 siblings, 0 replies; 8+ messages in thread
From: Murali Karicheri @ 2020-07-08 15:55 UTC (permalink / raw)
  To: Denys Dmytriyenko; +Cc: meta-arago

Denys,

On 7/8/20 11:28 AM, Denys Dmytriyenko wrote:
> On Tue, Jul 07, 2020 at 01:44:02PM -0400, Murali Karicheri wrote:
>> This recipe includes the patches required in iproute2 to add
>> PRP ip link support as well as allow use of VLAN for supervision
>> frames.
> 
> What is the Upstream-status for both of these patches?
> 
RFC patch send to upstream and can be viewed at
https://www.spinics.net/lists/netdev/msg650413.html

> 
>> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>> ---
>>   ...upport-for-creating-PRP-device-simil.patch | 109 ++++++++++++++++++
>>   ...dd-support-for-vlan-tagged-supervisi.patch | 108 +++++++++++++++++
>>   .../iproute2/iproute2_5.5.0.bbappend          |   8 ++
>>   3 files changed, 225 insertions(+)
>>   create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
>>   create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
>>   create mode 100644 meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
>>
>> diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
>> new file mode 100644
>> index 000000000000..dfeaeb01b485
>> --- /dev/null
>> +++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch
>> @@ -0,0 +1,109 @@
>> +From e3aa94814e9467af5829a04c335a615c0082a362 Mon Sep 17 00:00:00 2001
>> +From: Murali Karicheri <m-karicheri2@ti.com>
>> +Date: Fri, 5 Jun 2020 11:02:05 -0400
>> +Subject: [PATCH 1/2] iplink: hsr: add support for creating PRP device similar
>> + to HSR
>> +
>> +This patch enhances the iplink command to add a proto parameters to
>> +create PRP device/interface similar to HSR. Both protocols are
>> +quite similar and requires a pair of Ethernet interfaces. So re-use
>> +the existing HSR iplink command to create PRP device/interface as
>> +well. Use proto parameter to differentiate the two protocols.
>> +
>> +Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>> +---
>> + include/uapi/linux/if_link.h | 12 +++++++++++-
>> + ip/iplink_hsr.c              | 19 +++++++++++++++++--
>> + 2 files changed, 28 insertions(+), 3 deletions(-)
>> +
>> +diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
>> +index 1c49f436424d..de08704c5862 100644
>> +--- a/include/uapi/linux/if_link.h
>> ++++ b/include/uapi/linux/if_link.h
>> +@@ -881,7 +881,14 @@ enum {
>> + #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
>> +
>> +
>> +-/* HSR section */
>> ++/* HSR/PRP section, both uses same interface */
>> ++
>> ++/* Different redundancy protocols for hsr device */
>> ++enum {
>> ++	HSR_PROTOCOL_HSR,
>> ++	HSR_PROTOCOL_PRP,
>> ++	HSR_PROTOCOL_MAX,
>> ++};
>> +
>> + enum {
>> + 	IFLA_HSR_UNSPEC,
>> +@@ -891,6 +898,9 @@ enum {
>> + 	IFLA_HSR_SUPERVISION_ADDR,	/* Supervision frame multicast addr */
>> + 	IFLA_HSR_SEQ_NR,
>> + 	IFLA_HSR_VERSION,		/* HSR version */
>> ++	IFLA_HSR_PROTOCOL,		/* Indicate different protocol than
>> ++					 * HSR. For example PRP.
>> ++					 */
>> + 	__IFLA_HSR_MAX,
>> + };
>> +
>> +diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
>> +index 7d9167d4e6a3..6ea138a23cbc 100644
>> +--- a/ip/iplink_hsr.c
>> ++++ b/ip/iplink_hsr.c
>> +@@ -25,7 +25,7 @@ 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]\n"
>> ++		"\t[ supervision ADDR-BYTE ] [version VERSION] [proto PROTOCOL]\n"
>> + 		"\n"
>> + 		"NAME\n"
>> + 		"	name of new hsr device (e.g. hsr0)\n"
>> +@@ -35,7 +35,9 @@ static void print_usage(FILE *f)
>> + 		"	0-255; the last byte of the multicast address used for HSR supervision\n"
>> + 		"	frames (default = 0)\n"
>> + 		"VERSION\n"
>> +-		"	0,1; the protocol version to be used. (default = 0)\n");
>> ++		"	0,1; the protocol version to be used. (default = 0)\n"
>> ++		"PROTOCOL\n"
>> ++		"	0 - HSR, 1 - PRP. (default = 0 - HSR)\n");
>> + }
>> +
>> + static void usage(void)
>> +@@ -49,6 +51,7 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
>> + 	int ifindex;
>> + 	unsigned char multicast_spec;
>> + 	unsigned char protocol_version;
>> ++	unsigned char protocol = HSR_PROTOCOL_HSR;
>> +
>> + 	while (argc > 0) {
>> + 		if (matches(*argv, "supervision") == 0) {
>> +@@ -64,6 +67,13 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
>> + 				invarg("version is invalid", *argv);
>> + 			addattr_l(n, 1024, IFLA_HSR_VERSION,
>> + 				  &protocol_version, 1);
>> ++		} else if (matches(*argv, "proto") == 0) {
>> ++			NEXT_ARG();
>> ++			if (!(get_u8(&protocol, *argv, 0) == HSR_PROTOCOL_HSR ||
>> ++			      get_u8(&protocol, *argv, 0) == HSR_PROTOCOL_PRP))
>> ++				invarg("protocol is invalid", *argv);
>> ++			addattr_l(n, 1024, IFLA_HSR_PROTOCOL,
>> ++				  &protocol, 1);
>> + 		} else if (matches(*argv, "slave1") == 0) {
>> + 			NEXT_ARG();
>> + 			ifindex = ll_name_to_index(*argv);
>> +@@ -140,6 +150,11 @@ static void hsr_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
>> + 					 RTA_PAYLOAD(tb[IFLA_HSR_SUPERVISION_ADDR]),
>> + 					 ARPHRD_VOID,
>> + 					 b1, sizeof(b1)));
>> ++	if (tb[IFLA_HSR_PROTOCOL])
>> ++		print_int(PRINT_ANY,
>> ++			  "proto",
>> ++			  "proto %d ",
>> ++			  rta_getattr_u8(tb[IFLA_HSR_PROTOCOL]));
>> + }
>> +
>> + static void hsr_print_help(struct link_util *lu, int argc, char **argv,
>> +--
>> +2.17.1
>> +
>> diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
>> new file mode 100644
>> index 000000000000..fa0eecccdf59
>> --- /dev/null
>> +++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2/0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch
>> @@ -0,0 +1,108 @@
>> +From 6e48ed61da3b03da415a87bfbd3651fde8742647 Mon Sep 17 00:00:00 2001
>> +From: Murali Karicheri <m-karicheri2@ti.com>
>> +Date: Fri, 5 Jun 2020 12:07:43 -0400
>> +Subject: [PATCH 2/2] iplink: hsr/prp: add support for vlan tagged supervision
>> + frames
>> +
>> +This patch adds support to configure vlan tag information
>> +(vid, pcp and dei) at the hsr/prp lre device. This tag values
>> +will be used by the lre device to generate a VLAN tagged
>> +Supervision frames. This is done by adding 3 additional attributes
>> +to the hsr/prp link type and passing this to Linux HSR/PRP
>> +device through the ip link command.
>> +
>> +Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>> +---
>> + include/uapi/linux/if_link.h |  3 +++
>> + ip/iplink_hsr.c              | 40 +++++++++++++++++++++++++++++++++++-
>> + 2 files changed, 42 insertions(+), 1 deletion(-)
>> +
>> +diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
>> +index de08704c5862..94a381769e5a 100644
>> +--- a/include/uapi/linux/if_link.h
>> ++++ b/include/uapi/linux/if_link.h
>> +@@ -901,6 +901,9 @@ enum {
>> + 	IFLA_HSR_PROTOCOL,		/* Indicate different protocol than
>> + 					 * HSR. For example PRP.
>> + 					 */
>> ++	IFLA_HSR_SV_VID,		/* Supervision frames VLAN ID */
>> ++	IFLA_HSR_SV_DEI,		/* Supervision frames VLAN DEI */
>> ++	IFLA_HSR_SV_PCP,		/* Supervision frames VLAN PCP */
>> + 	__IFLA_HSR_MAX,
>> + };
>> +
>> +diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
>> +index 6ea138a23cbc..f38c752c0065 100644
>> +--- a/ip/iplink_hsr.c
>> ++++ b/ip/iplink_hsr.c
>> +@@ -26,6 +26,7 @@ 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[ sv_vid SV-VID ] [ sv_pcp SV-PCP ] [ sv_dei SV-DEI ]\n"
>> + 		"\n"
>> + 		"NAME\n"
>> + 		"	name of new hsr device (e.g. hsr0)\n"
>> +@@ -37,7 +38,15 @@ static void print_usage(FILE *f)
>> + 		"VERSION\n"
>> + 		"	0,1; the protocol version to be used. (default = 0)\n"
>> + 		"PROTOCOL\n"
>> +-		"	0 - HSR, 1 - PRP. (default = 0 - HSR)\n");
>> ++		"	0 - HSR, 1 - PRP. (default = 0 - HSR)\n"
>> ++		"SV-VID\n"
>> ++		"      0-4094; VLAN ID to be used in the VLAN tag of SV frames (default 0)\n"
>> ++		"SV-PCP\n"
>> ++		"      0-7; PCP value to be used in the VLAN tag of SV frames (default 0)\n"
>> ++		"SV-DEI\n"
>> ++		"      0-1;  DEI value to be used in the VLAN tag of SV frames (default 0)\n"
>> ++		"      Use VLAN tag if one of sv_vid, sv_pcp or sv_dei is specified. Default value\n"
>> ++		"      used for unspecified ones\n");
>> + }
>> +
>> + static void usage(void)
>> +@@ -52,6 +61,9 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
>> + 	unsigned char multicast_spec;
>> + 	unsigned char protocol_version;
>> + 	unsigned char protocol = HSR_PROTOCOL_HSR;
>> ++	unsigned short sv_vid;
>> ++	unsigned char sv_dei;
>> ++	unsigned char sv_pcp;
>> +
>> + 	while (argc > 0) {
>> + 		if (matches(*argv, "supervision") == 0) {
>> +@@ -86,6 +98,32 @@ 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, "sv_vid") == 0) {
>> ++			NEXT_ARG();
>> ++			if (get_u16(&sv_vid, *argv, 0))
>> ++				invarg("SV-VID is invalid", *argv);
>> ++			/* exclude reserved 4095 */
>> ++			if (sv_vid >= 4095)
>> ++				invarg("SV-VID is invalid", *argv);
>> ++			addattr_l(n, 1024, IFLA_HSR_SV_VID,
>> ++				  &sv_vid, sizeof(sv_vid));
>> ++		} else if (matches(*argv, "sv_pcp") == 0) {
>> ++			NEXT_ARG();
>> ++			if (get_u8(&sv_pcp, *argv, 0))
>> ++				invarg("SV-PCP is invalid", *argv);
>> ++			if (sv_pcp > 7)
>> ++				invarg("SV-PCP is invalid", *argv);
>> ++			addattr_l(n, 1024, IFLA_HSR_SV_PCP,
>> ++				  &sv_pcp, sizeof(sv_pcp));
>> ++		} else if (matches(*argv, "sv_dei") == 0) {
>> ++			NEXT_ARG();
>> ++			if (get_u8(&sv_dei, *argv, 0))
>> ++				invarg("SV-DEI is invalid", *argv);
>> ++			if (sv_dei > 1)
>> ++				invarg("SV-DEI is invalid", *argv);
>> ++			addattr_l(n, 1024, IFLA_HSR_SV_DEI,
>> ++				  &sv_dei, sizeof(sv_dei));
>> ++
>> + 		} else if (matches(*argv, "help") == 0) {
>> + 			usage();
>> + 			return -1;
>> +--
>> +2.17.1
>> +
>> diff --git a/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend b/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
>> new file mode 100644
>> index 000000000000..d6effcd7ca81
>> --- /dev/null
>> +++ b/meta-arago-distro/recipes-connectivity/iproute2/iproute2_5.5.0.bbappend
>> @@ -0,0 +1,8 @@
>> +PR_append = ".arago6"
>> +
>> +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
>> +
>> +SRC_URI_append = " \
>> +    file://0013-iplink-hsr-add-support-for-creating-PRP-device-simil.patch \
>> +    file://0014-iplink-hsr-prp-add-support-for-vlan-tagged-supervisi.patch \
>> +"
>> -- 
>> 2.17.1
>>

-- 
Murali Karicheri
Texas Instruments


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-07-08 15:57 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-07-07 17:02 [meta-arago PATCH] iproute2: update recipe for prp and supervision vlan support Murali
2020-07-07 17:07 ` Denys Dmytriyenko
2020-07-07 17:43   ` Murali
     [not found]   ` <161F895730ADC75F.6803@lists.yoctoproject.org>
2020-07-07 17:45     ` [meta-ti] " Murali
2020-07-07 21:24       ` Denys Dmytriyenko
  -- strict thread matches above, loose matches on Subject: below --
2020-07-07 17:44 Murali Karicheri
2020-07-08 15:28 ` Denys Dmytriyenko
2020-07-08 15:55   ` Murali Karicheri

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.