diff mbox series

[master] busybox: Use ISO 13400 timings in zcip

Message ID 20240207075127.1247940-1-akash.hadke27@gmail.com
State New
Headers show
Series [master] busybox: Use ISO 13400 timings in zcip | expand

Commit Message

akash hadke Feb. 7, 2024, 7:51 a.m. UTC
From: akash hadke <akash.hadke@kpit.com>

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>
Signed-off-by: Akash Hadke <akash.hadke27@gmail.com>
---
 ...d-support-for-DoIP-ISO-13400-timings.patch | 189 ++++++++++++++++++
 meta/recipes-core/busybox/busybox_1.36.1.bb   |   1 +
 2 files changed, 190 insertions(+)
 create mode 100644 meta/recipes-core/busybox/busybox/0001-zcip-add-support-for-DoIP-ISO-13400-timings.patch

Comments

Alexander Kanavin Feb. 7, 2024, 11:28 a.m. UTC | #1
This doesn’t look like something oe-core should carry, can you provide
justification if you think otherwise?

Alex

On Wed 7. Feb 2024 at 8.51, akash hadke <akash.hadke27@gmail.com> wrote:

> From: akash hadke <akash.hadke@kpit.com>
>
> 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>
> Signed-off-by: Akash Hadke <akash.hadke27@gmail.com>
> ---
>  ...d-support-for-DoIP-ISO-13400-timings.patch | 189 ++++++++++++++++++
>  meta/recipes-core/busybox/busybox_1.36.1.bb   |   1 +
>  2 files changed, 190 insertions(+)
>  create mode 100644
> meta/recipes-core/busybox/busybox/0001-zcip-add-support-for-DoIP-ISO-13400-timings.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..4625ed8b2b
> --- /dev/null
> +++
> b/meta/recipes-core/busybox/busybox/0001-zcip-add-support-for-DoIP-ISO-13400-timings.patch
> @@ -0,0 +1,189 @@
> +From 0fd26ed084f08911ec692f0007542d926d657a66 Mon Sep 17 00:00:00 2001
> +From: akash hadke <akash.hadke@kpit.com>
> +Date: Mon, 5 Feb 2024 14:43:55 +0530
> +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 helpful for the use of zcip in
> +automotive use cases. In practice, 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/2024-February/090611.html]
> +
> +Signed-off-by: Ricardo Leite <ricardo.leite at criticaltechworks.com>
> +Signed-off-by: akash hadke <akash.hadke@kpit.com>
> +Signed-off-by: Akash Hadke <akash.hadke27@gmail.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 61e2c2463..6ed414b76 100644
> +--- a/configs/cygwin_defconfig
> ++++ b/configs/cygwin_defconfig
> +@@ -831,6 +831,7 @@
> + 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 137d46e13..b955d6433 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.25.1
> +
> diff --git a/meta/recipes-core/busybox/busybox_1.36.1.bb
> b/meta/recipes-core/busybox/busybox_1.36.1.bb
> index 06eb9eb999..3cc4796e05 100644
> --- a/meta/recipes-core/busybox/busybox_1.36.1.bb
> +++ b/meta/recipes-core/busybox/busybox_1.36.1.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://start-stop-false.patch \
> +           file://0001-zcip-add-support-for-DoIP-ISO-13400-timings.patch \
>             "
>  SRC_URI:append:libc-musl = " file://musl.cfg "
>  # TODO
> http://lists.busybox.net/pipermail/busybox/2023-January/090078.html
> --
> 2.25.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#195039):
> https://lists.openembedded.org/g/openembedded-core/message/195039
> Mute This Topic: https://lists.openembedded.org/mt/104214735/1686489
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> alex.kanavin@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
akash hadke Feb. 7, 2024, 12:20 p.m. UTC | #2
Hello Alexander,

I thought of having this patch in yocto as it is improving the AutoIP allocation time on the system which uses busybox with zcip.
But if you think this is not a good option to have this patch in yocto we can wait till busybox upstream accepts it.
Alexander Kanavin Feb. 7, 2024, 12:39 p.m. UTC | #3
On Wed, 7 Feb 2024 at 13:20, akash hadke <akash.hadke27@gmail.com> wrote:
> I thought of having this patch in yocto as it is improving the AutoIP allocation time on the system which uses busybox with zcip.
> But if you think this is not a good option to have this patch in yocto we can wait till busybox upstream accepts it.

Basically, you need to justify the usefulness of the patch to the
general yocto community; specific use cases are better dealt with via
bbappends in product/domain layers.

Carrying patches has a maintenance cost: someone needs to understand
what it does, and how to rebase it correctly on version updates. We
can't be experts in all matters that components deal with, and this is
one of the more esoteric areas.

It becomes especially difficult if upstream rejects the patch: should
we remove it as well? Would that break someone's builds badly? Are we
expected to maintain the patch until the end of time? Backports are
far better than merely 'Submitted' patches for that reason.

Alex
Richard Purdie Feb. 9, 2024, 2:17 p.m. UTC | #4
On Wed, 2024-02-07 at 13:21 +0530, akash hadke wrote:
> From: akash hadke <akash.hadke@kpit.com>
> 
> 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>
> Signed-off-by: Akash Hadke <akash.hadke27@gmail.com>
> ---
>  ...d-support-for-DoIP-ISO-13400-timings.patch | 189 ++++++++++++++++++
>  meta/recipes-core/busybox/busybox_1.36.1.bb   |   1 +
>  2 files changed, 190 insertions(+)
>  create mode 100644 meta/recipes-core/busybox/busybox/0001-zcip-add-support-for-DoIP-ISO-13400-timings.patch

I think a few of us are torn on this. If it were accepted upstream, I'd
probably take it. Whilst it is still pending, I'm less sure.

Having "embedded" targeted features in OE-Core is desirable in many
ways. In this case the target usage is probably quite niche.

I'd like to see if anyone else would find this useful? Does AGL want to
use this for example?

If so, I'd probably merge, if not, it is probably something for your
layer. I am happy to see it submitted to upstream though.

Cheers,

Richard
Richard Purdie Feb. 15, 2024, 3:21 p.m. UTC | #5
On Thu, 2024-02-15 at 16:06 +0100, Jan-Simon Möller wrote:
> Am Freitag, 9. Februar 2024, 15:17:13 CET schrieb Richard Purdie via 
> lists.openembedded.org:
> > On Wed, 2024-02-07 at 13:21 +0530, akash hadke wrote:
> > 
> > I think a few of us are torn on this. If it were accepted upstream, I'd
> > probably take it. Whilst it is still pending, I'm less sure.
> > 
> > Having "embedded" targeted features in OE-Core is desirable in many
> > ways. In this case the target usage is probably quite niche.
> > 
> > I'd like to see if anyone else would find this useful? Does AGL want to
> > use this for example?
> 
> We (AGL) would wait for upstream busybox feedback to 
> http://lists.busybox.net/pipermail/busybox/2024-February/090611.html 
> 
> And go from there.

Thanks, in that case I think OE-Core will follow on that as I don't
think this is going to be enabled to tested in most of our userbase.

Cheers,

Richard
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..4625ed8b2b
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox/0001-zcip-add-support-for-DoIP-ISO-13400-timings.patch
@@ -0,0 +1,189 @@ 
+From 0fd26ed084f08911ec692f0007542d926d657a66 Mon Sep 17 00:00:00 2001
+From: akash hadke <akash.hadke@kpit.com>
+Date: Mon, 5 Feb 2024 14:43:55 +0530
+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 helpful for the use of zcip in
+automotive use cases. In practice, 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/2024-February/090611.html]
+
+Signed-off-by: Ricardo Leite <ricardo.leite at criticaltechworks.com>
+Signed-off-by: akash hadke <akash.hadke@kpit.com>
+Signed-off-by: Akash Hadke <akash.hadke27@gmail.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 61e2c2463..6ed414b76 100644
+--- a/configs/cygwin_defconfig
++++ b/configs/cygwin_defconfig
+@@ -831,6 +831,7 @@
+ 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 137d46e13..b955d6433 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.25.1
+
diff --git a/meta/recipes-core/busybox/busybox_1.36.1.bb b/meta/recipes-core/busybox/busybox_1.36.1.bb
index 06eb9eb999..3cc4796e05 100644
--- a/meta/recipes-core/busybox/busybox_1.36.1.bb
+++ b/meta/recipes-core/busybox/busybox_1.36.1.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://start-stop-false.patch \
+           file://0001-zcip-add-support-for-DoIP-ISO-13400-timings.patch \
            "
 SRC_URI:append:libc-musl = " file://musl.cfg "
 # TODO http://lists.busybox.net/pipermail/busybox/2023-January/090078.html