diff mbox series

[poky,master,kirkstone] busybox: Use ISO 13400 timings in zcip

Message ID 20220906132455.40077-1-akash.hadke@kpit.com
State New, archived
Headers show
Series [poky,master,kirkstone] busybox: Use ISO 13400 timings in zcip | expand

Commit Message

Akash Hadke Sept. 6, 2022, 1:24 p.m. UTC
Add below patch to support DoIP/ISO 13400 timings busybox zcip

0001-zcip-add-support-for-DoIP-ISO-13400-timings.patch

DoIP requires fast IP assignment, faster than what RFC 3927 can
guarantee, and so it defines its' own AutoIP timing parameters

Add a compile-time option to use DoIP timing parameters instead of
default RFC 3927 parameters. This option is useful for use of zcip in
automotive use-cases. In pratice, it decreases AutoIP allocation time
from ~10s to ~2s, at the expense of less resilience to collisions

Signed-off-by: Akash Hadke <akash.hadke@kpit.com>
---
 ...d-support-for-DoIP-ISO-13400-timings.patch | 188 ++++++++++++++++++
 meta/recipes-core/busybox/busybox_1.35.0.bb   |   1 +
 2 files changed, 189 insertions(+)
 create mode 100644 meta/recipes-core/busybox/busybox/0001-zcip-add-support-for-DoIP-ISO-13400-timings.patch
diff mbox series

Patch

diff --git a/meta/recipes-core/busybox/busybox/0001-zcip-add-support-for-DoIP-ISO-13400-timings.patch b/meta/recipes-core/busybox/busybox/0001-zcip-add-support-for-DoIP-ISO-13400-timings.patch
new file mode 100644
index 0000000000..960805af42
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox/0001-zcip-add-support-for-DoIP-ISO-13400-timings.patch
@@ -0,0 +1,188 @@ 
+From 22b3a1a60ce2d42b82381cdc88a01fc98aaf9954 Mon Sep 17 00:00:00 2001
+From: Akash Hadke <akash.hadke@kpit.com>
+Date: Mon, 5 Sep 2022 14:27:02 +0200
+Subject: [PATCH] zcip: add support for DoIP/ISO 13400 timings
+
+DoIP requires fast IP assignment, faster than what RFC 3927 can
+guarantee, and so it defines its' own AutoIP timing parameters
+
+Add a compile-time option to use DoIP timing parameters instead of
+default RFC 3927 parameters. This option is useful for use of zcip in
+automotive use-cases. In pratice, it decreases AutoIP allocation time
+from ~10s to ~2s, at the expense of less resilience to collisions
+
+Upstream-Status: Submitted [http://lists.busybox.net/pipermail/busybox/2022-September/089858.html]
+
+Signed-off-by: Ricardo Leite <ricardo.leite at criticaltechworks.com>
+Signed-off-by: Akash Hadke <akash.hadke@kpit.com>
+---
+ configs/TEST_nommu_defconfig    |  1 +
+ configs/TEST_noprintf_defconfig |  1 +
+ configs/TEST_rh9_defconfig      |  1 +
+ configs/android2_defconfig      |  1 +
+ configs/android_502_defconfig   |  1 +
+ configs/android_defconfig       |  1 +
+ configs/android_ndk_defconfig   |  1 +
+ configs/cygwin_defconfig        |  1 +
+ configs/freebsd_defconfig       |  1 +
+ networking/zcip.c               | 23 +++++++++++++++++++++++
+ 10 files changed, 32 insertions(+)
+
+diff --git a/configs/TEST_nommu_defconfig b/configs/TEST_nommu_defconfig
+index 415f5a802..3f8ca40d7 100644
+--- a/configs/TEST_nommu_defconfig
++++ b/configs/TEST_nommu_defconfig
+@@ -769,6 +769,7 @@ CONFIG_FEATURE_WGET_STATUSBAR=y
+ CONFIG_FEATURE_WGET_AUTHENTICATION=y
+ CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+ CONFIG_ZCIP=y
++# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set
+ CONFIG_TCPSVD=y
+ CONFIG_TUNCTL=y
+ CONFIG_FEATURE_TUNCTL_UG=y
+diff --git a/configs/TEST_noprintf_defconfig b/configs/TEST_noprintf_defconfig
+index 9b378fd55..5cfd5b3d7 100644
+--- a/configs/TEST_noprintf_defconfig
++++ b/configs/TEST_noprintf_defconfig
+@@ -781,6 +781,7 @@ CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS=""
+ # CONFIG_FEATURE_WGET_AUTHENTICATION is not set
+ # CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
+ # CONFIG_ZCIP is not set
++# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set
+ 
+ #
+ # Print Utilities
+diff --git a/configs/TEST_rh9_defconfig b/configs/TEST_rh9_defconfig
+index 4ac62b9da..1fe074e79 100644
+--- a/configs/TEST_rh9_defconfig
++++ b/configs/TEST_rh9_defconfig
+@@ -791,6 +791,7 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y
+ CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+ CONFIG_FEATURE_WGET_TIMEOUT=y
+ CONFIG_ZCIP=y
++# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set
+ 
+ #
+ # Print Utilities
+diff --git a/configs/android2_defconfig b/configs/android2_defconfig
+index d4b8f1616..eceabbc20 100644
+--- a/configs/android2_defconfig
++++ b/configs/android2_defconfig
+@@ -828,6 +828,7 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y
+ # CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
+ CONFIG_FEATURE_WGET_TIMEOUT=y
+ # CONFIG_ZCIP is not set
++# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set
+ 
+ #
+ # Print Utilities
+diff --git a/configs/android_502_defconfig b/configs/android_502_defconfig
+index 104e70f23..0ed60ae61 100644
+--- a/configs/android_502_defconfig
++++ b/configs/android_502_defconfig
+@@ -968,6 +968,7 @@ CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n"
+ CONFIG_UDPSVD=y
+ CONFIG_VCONFIG=y
+ # CONFIG_ZCIP is not set
++# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set
+ 
+ #
+ # Print Utilities
+diff --git a/configs/android_defconfig b/configs/android_defconfig
+index 92a66048a..c1d38328b 100644
+--- a/configs/android_defconfig
++++ b/configs/android_defconfig
+@@ -858,6 +858,7 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y
+ # CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
+ CONFIG_FEATURE_WGET_TIMEOUT=y
+ # CONFIG_ZCIP is not set
++# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set
+ 
+ #
+ # Print Utilities
+diff --git a/configs/android_ndk_defconfig b/configs/android_ndk_defconfig
+index 425593454..384304d46 100644
+--- a/configs/android_ndk_defconfig
++++ b/configs/android_ndk_defconfig
+@@ -884,6 +884,7 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y
+ # CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
+ CONFIG_FEATURE_WGET_TIMEOUT=y
+ # CONFIG_ZCIP is not set
++# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set
+ 
+ #
+ # Print Utilities
+diff --git a/configs/cygwin_defconfig b/configs/cygwin_defconfig
+index c09bc9281..30c90d587 100644
+--- a/configs/cygwin_defconfig
++++ b/configs/cygwin_defconfig
+@@ -831,6 +831,7 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y
+ CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+ CONFIG_FEATURE_WGET_TIMEOUT=y
+ # CONFIG_ZCIP is not set
++# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set
+ 
+ #
+ # Print Utilities
+diff --git a/configs/freebsd_defconfig b/configs/freebsd_defconfig
+index 6cbd54895..c09197be3 100644
+--- a/configs/freebsd_defconfig
++++ b/configs/freebsd_defconfig
+@@ -810,6 +810,7 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y
+ CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+ CONFIG_FEATURE_WGET_TIMEOUT=y
+ # CONFIG_ZCIP is not set
++# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set
+ 
+ #
+ # Print Utilities
+diff --git a/networking/zcip.c b/networking/zcip.c
+index 311dfbe4c..03c904d8a 100644
+--- a/networking/zcip.c
++++ b/networking/zcip.c
+@@ -24,6 +24,15 @@
+ //config:
+ //config:	See http://www.zeroconf.org for further details, and "zcip.script"
+ //config:	in the busybox examples.
++//config:
++//config:config ZCIP_USE_ISO_13400_TIMINGS
++//config:	bool "Use ISO 13400 (DoIP) timings"
++//config:	default y
++//config:	depends on ZCIP
++//config:	help
++//config:	Use timings from ISO 13400-2 (for DoIP) instead of RFC 3927,
++//config:	which dramatically speeds up AutoIP allocation time at the cost
++//config:	of less resilience to collisions.
+ 
+ //applet:IF_ZCIP(APPLET(zcip, BB_DIR_SBIN, BB_SUID_DROP))
+ 
+@@ -73,12 +82,26 @@ struct arp_packet {
+ enum {
+ 	/* 0-1 seconds before sending 1st probe */
+ 	PROBE_WAIT = 1,
++
++#if ENABLE_ZCIP_USE_ISO_13400_TIMINGS
++	/**
++	 * DoIP-specific timings, see ISO 13400-2, Section 9.1.2.2, Table 15
++	 */
++	/* 0-1 seconds between probes */
++	PROBE_MIN = 0,
++	PROBE_MAX = 1,
++	PROBE_NUM = 1,		/* total probes to send */
++	ANNOUNCE_INTERVAL = 1,  /* 1 seconds between announces */
++	ANNOUNCE_NUM = 1,	/* announces to send */
++#else
+ 	/* 1-2 seconds between probes */
+ 	PROBE_MIN = 1,
+ 	PROBE_MAX = 2,
+ 	PROBE_NUM = 3,		/* total probes to send */
+ 	ANNOUNCE_INTERVAL = 2,  /* 2 seconds between announces */
+ 	ANNOUNCE_NUM = 3,	/* announces to send */
++#endif
++
+ 	/* if probe/announce sees a conflict, multiply RANDOM(NUM_CONFLICT) by... */
+ 	CONFLICT_MULTIPLIER = 2,
+ 	/* if we monitor and see a conflict, how long is defend state? */
+-- 
+2.17.1
+
diff --git a/meta/recipes-core/busybox/busybox_1.35.0.bb b/meta/recipes-core/busybox/busybox_1.35.0.bb
index edf896485e..3b42fdb18d 100644
--- a/meta/recipes-core/busybox/busybox_1.35.0.bb
+++ b/meta/recipes-core/busybox/busybox_1.35.0.bb
@@ -50,6 +50,7 @@  SRC_URI = "https://busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
            file://0001-libbb-sockaddr2str-ensure-only-printable-characters-.patch \
            file://0002-nslookup-sanitize-all-printed-strings-with-printable.patch \
            file://CVE-2022-30065.patch \
+           file://0001-zcip-add-support-for-DoIP-ISO-13400-timings.patch \
            "
 SRC_URI:append:libc-musl = " file://musl.cfg "