diff --git a/modules b/modules index 8b77b64deafcd44408e2b579fe895c9d8b75c9f8..d01c0042bc76357ba1a07f30a8aebbc5448ccf5f 100644 --- a/modules +++ b/modules @@ -2,15 +2,15 @@ GLUON_FEEDS='gluon packages routing' OPENWRT_REPO=https://github.com/openwrt/openwrt.git OPENWRT_BRANCH=openwrt-23.05 -OPENWRT_COMMIT=59fd8f08cf544a7f0fcaf700ca9af9292de3adcc +OPENWRT_COMMIT=51881b2eb910d4adc6109b8d5abf0b23635a92ff PACKAGES_GLUON_REPO=https://github.com/freifunk-gluon/packages.git PACKAGES_GLUON_COMMIT=53ea3b89771fc7d7a80f1800ce25e98dfe1633aa PACKAGES_PACKAGES_REPO=https://github.com/openwrt/packages.git PACKAGES_PACKAGES_BRANCH=openwrt-23.05 -PACKAGES_PACKAGES_COMMIT=4e9c89801b8171c5e926aa14eea63af623ae5798 +PACKAGES_PACKAGES_COMMIT=766a5af5d92eaaba0d947176e490241cf06e9659 PACKAGES_ROUTING_REPO=https://github.com/openwrt/routing.git PACKAGES_ROUTING_BRANCH=openwrt-23.05 -PACKAGES_ROUTING_COMMIT=81cdbd3b62ed07834a8cd2203adb73fc358f8271 +PACKAGES_ROUTING_COMMIT=2a3bad8349f1fad631aea8daa4f20343a8cc4457 diff --git a/patches/openwrt/0008-dropbear-increase-default-receive-window-size.patch b/patches/openwrt/0008-dropbear-increase-default-receive-window-size.patch deleted file mode 100644 index 6617b7197cce0bd10c1610ad8875963e2343b085..0000000000000000000000000000000000000000 --- a/patches/openwrt/0008-dropbear-increase-default-receive-window-size.patch +++ /dev/null @@ -1,31 +0,0 @@ -From: David Bauer <mail@david-bauer.net> -Date: Thu, 28 Dec 2023 23:16:02 +0100 -Subject: dropbear: increase default receive window size - -Increasing the receive window size improves throughout on higher-latency -links such as WAN connections. The current default of 24KB caps out at -around 500 KB/s. - -Increasing the receive buffer to 256KB increases the throughput to at -least 11 MB/s. - -Signed-off-by: David Bauer <mail@david-bauer.net> -(cherry picked from commit f95eecfb21ff08662e022accd30e8254028ff63b) - -diff --git a/package/network/services/dropbear/files/dropbear.init b/package/network/services/dropbear/files/dropbear.init -index b82e967cbcedc4564dba6cfccc1383f7b7fa499f..a40b5f7baeea0f3a1e258f1a74aba0eb1ca3adcb 100755 ---- a/package/network/services/dropbear/files/dropbear.init -+++ b/package/network/services/dropbear/files/dropbear.init -@@ -155,6 +155,12 @@ dropbear_instance() - PIDCOUNT="$(( ${PIDCOUNT} + 1))" - local pid_file="/var/run/${NAME}.${PIDCOUNT}.pid" - -+ # Increase default receive window size to increase -+ # throughput on high latency links -+ if [ "${RecvWindowSize}" -eq "0" ]; then -+ RecvWindowSize="262144" -+ fi -+ - procd_open_instance - procd_set_param command "$PROG" -F -P "$pid_file" - [ "${PasswordAuth}" -eq 0 ] && procd_append_param command -s diff --git a/patches/openwrt/0009-netifd-system-linux-fix-race-condition-in-netlink-socket-error-handing.patch b/patches/openwrt/0009-netifd-system-linux-fix-race-condition-in-netlink-socket-error-handing.patch deleted file mode 100644 index 86d1129004c4c8ebda522d154b2aef1a1bfe43c3..0000000000000000000000000000000000000000 --- a/patches/openwrt/0009-netifd-system-linux-fix-race-condition-in-netlink-socket-error-handing.patch +++ /dev/null @@ -1,152 +0,0 @@ -From: David Bauer <mail@david-bauer.net> -Date: Wed, 3 Jan 2024 16:43:09 +0100 -Subject: netifd: system-linux: fix race condition in netlink socket error handing - -The error handling needed for the buffer growth logic relies on -uloop_fd's error flag, which is set based on epoll events. Doing so -without handling recvmsg's error codes is racy, as an error state may be -set between receiving epoll events and the next recvmsg, but calling -recvmsg clears the error state. - -To fix this, add handling for errors returned by nl_recvmsgs_default() -and nl_recv(); checking for u->error and retrieving the error status -using getsockopt() becomes redundant. - -We have observed this issue on Gluon (recent OpenWrt 23.05); on some -devices with DSA switches, the bridge interface's carrier-on event would -consistenly get lost during boot due to insufficient buffer space -(see [1]). - -We have bisected the issue to netifd commit 516ab774cc16 ("system-linux: -fix race condition on bringing up wireless devices"), but that commit only -uncovered the preexisting bug by switching from getting the carrier state -from sysfs to using the netlink messages in cb_rtnl_event(). - -I suspect that other recent issues about netifd missing a carrier state -change like [2] may have the same underlying cause. - -[1] https://github.com/freifunk-gluon/gluon/issues/3130 -[2] https://github.com/openwrt/openwrt/issues/13863 - -Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net> -Signed-off-by: David Bauer <mail@david-bauer.net> - -diff --git a/package/network/config/netifd/patches/0002-netifd-system-linux-fix-race-condition-in-netlink-socket-error-handing.patch b/package/network/config/netifd/patches/0002-netifd-system-linux-fix-race-condition-in-netlink-socket-error-handing.patch -new file mode 100644 -index 0000000000000000000000000000000000000000..1b8dd71da622ef7aa73794bd70c636ab0fe59c4e ---- /dev/null -+++ b/package/network/config/netifd/patches/0002-netifd-system-linux-fix-race-condition-in-netlink-socket-error-handing.patch -@@ -0,0 +1,113 @@ -+From 54eb773cebb74ffecf1f0c4e8ebd4b65812095c0 Mon Sep 17 00:00:00 2001 -+From: Matthias Schiffer <mschiffer@universe-factory.net> -+Date: Tue, 2 Jan 2024 15:58:30 +0100 -+Subject: [PATCH] system-linux: fix race condition in netlink socket error -+ handing -+ -+The error handling needed for the buffer growth logic relies on -+uloop_fd's error flag, which is set based on epoll events. Doing so -+without handling recvmsg's error codes is racy, as an error state may be -+set between receiving epoll events and the next recvmsg, but calling -+recvmsg clears the error state. -+ -+To fix this, add handling for errors returned by nl_recvmsgs_default() -+and nl_recv(); checking for u->error and retrieving the error status -+using getsockopt() becomes redundant. -+ -+We have observed this issue on Gluon (recent OpenWrt 23.05); on some -+devices with DSA switches, the bridge interface's carrier-on event would -+consistenly get lost during boot due to insufficient buffer space -+(see [1]). -+ -+We have bisected the issue to netifd commit 516ab774cc16 ("system-linux: -+fix race condition on bringing up wireless devices"), but that commit only -+uncovered the preexisting bug by switching from getting the carrier state -+from sysfs to using the netlink messages in cb_rtnl_event(). -+ -+I suspect that other recent issues about netifd missing a carrier state -+change like [2] may have the same underlying cause. -+ -+[1] https://github.com/freifunk-gluon/gluon/issues/3130 -+[2] https://github.com/openwrt/openwrt/issues/13863 -+ -+Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net> -+--- -+ system-linux.c | 38 +++++++++++++------------------------- -+ 1 file changed, 13 insertions(+), 25 deletions(-) -+ -+--- a/system-linux.c -++++ b/system-linux.c -+@@ -169,19 +169,14 @@ static void -+ handler_nl_event(struct uloop_fd *u, unsigned int events) -+ { -+ struct event_socket *ev = container_of(u, struct event_socket, uloop); -+- int err; -+- socklen_t errlen = sizeof(err); -++ int ret; -+ -+- if (!u->error) { -+- nl_recvmsgs_default(ev->sock); -++ ret = nl_recvmsgs_default(ev->sock); -++ if (ret >= 0) -+ return; -+- } -+- -+- if (getsockopt(u->fd, SOL_SOCKET, SO_ERROR, (void *)&err, &errlen)) -+- goto abort; -+ -+- switch(err) { -+- case ENOBUFS: -++ switch (-ret) { -++ case NLE_NOMEM: -+ /* Increase rx buffer size on netlink socket */ -+ ev->bufsize *= 2; -+ if (nl_socket_set_buffer_size(ev->sock, ev->bufsize, 0)) -+@@ -195,7 +190,6 @@ handler_nl_event(struct uloop_fd *u, uns -+ default: -+ goto abort; -+ } -+- u->error = false; -+ return; -+ -+ abort: -+@@ -791,24 +785,19 @@ handle_hotplug_event(struct uloop_fd *u, -+ struct sockaddr_nl nla; -+ unsigned char *buf = NULL; -+ int size; -+- int err; -+- socklen_t errlen = sizeof(err); -+ -+- if (!u->error) { -+- while ((size = nl_recv(ev->sock, &nla, &buf, NULL)) > 0) { -+- if (nla.nl_pid == 0) -+- handle_hotplug_msg((char *) buf, size); -++ while ((size = nl_recv(ev->sock, &nla, &buf, NULL)) > 0) { -++ if (nla.nl_pid == 0) -++ handle_hotplug_msg((char *) buf, size); -+ -+- free(buf); -+- } -+- return; -++ free(buf); -+ } -+ -+- if (getsockopt(u->fd, SOL_SOCKET, SO_ERROR, (void *)&err, &errlen)) -+- goto abort; -++ switch (-size) { -++ case 0: -++ return; -+ -+- switch(err) { -+- case ENOBUFS: -++ case NLE_NOMEM: -+ /* Increase rx buffer size on netlink socket */ -+ ev->bufsize *= 2; -+ if (nl_socket_set_buffer_size(ev->sock, ev->bufsize, 0)) -+@@ -818,7 +807,6 @@ handle_hotplug_event(struct uloop_fd *u, -+ default: -+ goto abort; -+ } -+- u->error = false; -+ return; -+ -+ abort: