Skip to content

Commit

Permalink
Merge branch 'bananapi4' of github.com:rmandrad/openwrt into bananapi4
Browse files Browse the repository at this point in the history
  • Loading branch information
N-Storm committed Oct 27, 2024
2 parents 8fd666f + 29c49bf commit b2c1ad9
Show file tree
Hide file tree
Showing 150 changed files with 4,603 additions and 632 deletions.
2 changes: 1 addition & 1 deletion config-nstorm-bananapi-bpi-r4
Original file line number Diff line number Diff line change
Expand Up @@ -759,7 +759,7 @@ CONFIG_USE_LTO=y
CONFIG_USE_MOLD=y
CONFIG_VERSIONOPT=y
CONFIG_VERSION_BUG_URL=""
CONFIG_VERSION_CODE="20241024-r37"
CONFIG_VERSION_CODE="20241027-r38"
CONFIG_VERSION_CODE_FILENAMES=y
CONFIG_VERSION_DIST=""
CONFIG_VERSION_FILENAMES=y
Expand Down
14 changes: 14 additions & 0 deletions config/Config-kernel.in
Original file line number Diff line number Diff line change
Expand Up @@ -1204,6 +1204,20 @@ config KERNEL_PAGE_POOL_STATS
bool "Page pool stats support"
depends on KERNEL_PAGE_POOL

config KERNEL_MPTCP
bool "Multi-Path TCP support"
default y if !SMALL_FLASH
help
Select this option to enable support for Multi-Path TCP.
Increases the compressed kernel size by ~214kB (as of Linux 6.6).

if KERNEL_IPV6
config KERNEL_MPTCP_IPV6
bool "IPv6 support for Multipath TCP"
depends on KERNEL_MPTCP
default KERNEL_MPTCP
endif

#
# NFS related symbols
#
Expand Down
4 changes: 3 additions & 1 deletion include/package-pack.mk
Original file line number Diff line number Diff line change
Expand Up @@ -339,10 +339,12 @@ else
$(FAKEROOT) $(STAGING_DIR_HOST)/bin/apk mkpkg \
--info "name:$(1)$$(ABIV_$(1))" \
--info "version:$(VERSION)" \
--info "description: $$(strip $$(Package/$(1)/description))" \
--info "description:$$(strip $$(Package/$(1)/description))" \
--info "arch:$(PKGARCH)" \
--info "license:$(LICENSE)" \
--info "origin:$(SOURCE)" \
--info "url:$(URL)" \
--info "maintainer:$(MAINTAINER)" \
--info "provides:$$(foreach prov,$$(filter-out $(1)$$(ABIV_$(1)),$(PROVIDES)$$(if $$(ABIV_$(1)), \
$(1) $(foreach provide,$(PROVIDES),$(provide)$$(ABIV_$(1))))),$$(prov)=$(VERSION) )" \
--script "post-install:$$(ADIR_$(1))/post-install" \
Expand Down
17 changes: 17 additions & 0 deletions package/kernel/linux/modules/netsupport.mk
Original file line number Diff line number Diff line change
Expand Up @@ -1494,6 +1494,23 @@ endef
$(eval $(call KernelPackage,inet-diag))


define KernelPackage/inet-mptcp-diag
SUBMENU:=$(NETWORK_SUPPORT_MENU)
TITLE:=INET diag support for MultiPath TCP
DEPENDS:=@KERNEL_MPTCP +kmod-inet-diag
KCONFIG:=CONFIG_INET_MPTCP_DIAG
FILES:=$(LINUX_DIR)/net/mptcp/mptcp_diag.ko
AUTOLOAD:=$(call AutoProbe,mptcp_diag)
endef

define KernelPackage/inet-mptcp-diag/description
Support for INET (MultiPath TCP) socket monitoring interface used by
native Linux tools such as ss.
endef

$(eval $(call KernelPackage,inet-mptcp-diag))


define KernelPackage/xdp-sockets-diag
SUBMENU:=$(NETWORK_SUPPORT_MENU)
TITLE:=PF_XDP sockets monitoring interface support for ss utility
Expand Down
4 changes: 2 additions & 2 deletions package/libs/libnftnl/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk

PKG_NAME:=libnftnl
PKG_CPE_ID:=cpe:/a:netfilter:libnftnl
PKG_VERSION:=1.2.6
PKG_VERSION:=1.2.8
PKG_RELEASE:=1

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://netfilter.org/projects/$(PKG_NAME)/files
PKG_HASH:=ceeaea2cd92147da19f13a35a7f1a4bc2767ff897e838e4b479cf54b59c777f4
PKG_HASH:=37fea5d6b5c9b08de7920d298de3cdc942e7ae64b1a3e8b880b2d390ae67ad95

PKG_MAINTAINER:=Steven Barth <steven@midlink.org>
PKG_LICENSE:=GPL-2.0-or-later
Expand Down
4 changes: 2 additions & 2 deletions package/libs/mbedtls/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@
include $(TOPDIR)/rules.mk

PKG_NAME:=mbedtls
PKG_VERSION:=3.6.1
PKG_VERSION:=3.6.2
PKG_RELEASE:=1
PKG_BUILD_FLAGS:=no-mips16 gc-sections no-lto

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL=https://github.com/Mbed-TLS/$(PKG_NAME)/releases/download/$(PKG_NAME)-$(PKG_VERSION)
PKG_HASH:=fc8bef0991b43629b7e5319de6f34f13359011105e08e3e16eed3a9fe6ffd3a3
PKG_HASH:=8b54fb9bcf4d5a7078028e0520acddefb7900b3e66fec7f7175bb5b7d85ccdca

PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=LICENSE
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
From ca7f11ebc4d4a99ccfd44be8555d505b26996c12 Mon Sep 17 00:00:00 2001
From: Arjun Roy <arjunroy@google.com>
Date: Mon, 25 Jul 2022 12:49:35 -0400
Subject: [PATCH 2/2] ss: output TCP BBRv3 diag information

Add logic for printing diag information for TCP BBRv3 congestion
control. This commit leaves in place the support for printing the
earlier TCP BBRv1 congestion control information.

Both BBRv1 and BBRv3 are using the same enum value. The BBRv3 struct
starts with the same data as BBRv1, so it is is backward-compatible
with BBRv1, to allow lder ss binaries to print basic information for
BBRv3. We use the size of the returned data and the version field to
check the version of the data.

Signed-off-by: Arjun Roy <arjunroy@google.com>
Signed-off-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David Morley <morleyd@google.com>
---
include/uapi/linux/inet_diag.h | 23 ++++++++++++
misc/ss.c | 66 +++++++++++++++++++++++++++++++++-
2 files changed, 88 insertions(+), 1 deletion(-)

diff --git a/include/uapi/linux/inet_diag.h b/include/uapi/linux/inet_diag.h
index d81cb69a26a9..dca833ecb783 100644
--- a/include/uapi/linux/inet_diag.h
+++ b/include/uapi/linux/inet_diag.h
@@ -229,6 +229,29 @@ struct tcp_bbr_info {
__u32 bbr_min_rtt; /* min-filtered RTT in uSec */
__u32 bbr_pacing_gain; /* pacing gain shifted left 8 bits */
__u32 bbr_cwnd_gain; /* cwnd gain shifted left 8 bits */
+ __u32 bbr_bw_hi_lsb; /* lower 32 bits of bw_hi */
+ __u32 bbr_bw_hi_msb; /* upper 32 bits of bw_hi */
+ __u32 bbr_bw_lo_lsb; /* lower 32 bits of bw_lo */
+ __u32 bbr_bw_lo_msb; /* upper 32 bits of bw_lo */
+ __u8 bbr_mode; /* current bbr_mode in state machine */
+ __u8 bbr_phase; /* current state machine phase */
+ __u8 unused1; /* alignment padding; not used yet */
+ __u8 bbr_version; /* BBR algorithm version */
+ __u32 bbr_inflight_lo; /* lower short-term data volume bound */
+ __u32 bbr_inflight_hi; /* higher long-term data volume bound */
+ __u32 bbr_extra_acked; /* max excess packets ACKed in epoch */
+};
+
+/* TCP BBR congestion control bbr_phase as reported in netlink/ss stats. */
+enum tcp_bbr_phase {
+ BBR_PHASE_INVALID = 0,
+ BBR_PHASE_STARTUP = 1,
+ BBR_PHASE_DRAIN = 2,
+ BBR_PHASE_PROBE_RTT = 3,
+ BBR_PHASE_PROBE_BW_UP = 4,
+ BBR_PHASE_PROBE_BW_DOWN = 5,
+ BBR_PHASE_PROBE_BW_CRUISE = 6,
+ BBR_PHASE_PROBE_BW_REFILL = 7,
};

union tcp_cc_info {
diff --git a/misc/ss.c b/misc/ss.c
index e9d813596b91..5f413118f0dd 100644
--- a/misc/ss.c
+++ b/misc/ss.c
@@ -912,6 +912,7 @@ struct tcpstat {
bool app_limited;
struct dctcpstat *dctcp;
struct tcp_bbr_info *bbr_info;
+ unsigned int bbr_info_len;
};

/* SCTP assocs share the same inode number with their parent endpoint. So if we
@@ -2585,6 +2586,29 @@ static void sctp_stats_print(struct sctp_info *s)
out(" fraginl:%d", s->sctpi_s_frag_interleave);
}

+static const char* bbr_phase_to_str(enum tcp_bbr_phase phase)
+{
+ switch (phase) {
+ case BBR_PHASE_STARTUP:
+ return "STARTUP";
+ case BBR_PHASE_DRAIN:
+ return "DRAIN";
+ case BBR_PHASE_PROBE_RTT:
+ return "PROBE_RTT";
+ case BBR_PHASE_PROBE_BW_UP:
+ return "PROBE_BW_UP";
+ case BBR_PHASE_PROBE_BW_DOWN:
+ return "PROBE_BW_DOWN";
+ case BBR_PHASE_PROBE_BW_CRUISE:
+ return "PROBE_BW_CRUISE";
+ case BBR_PHASE_PROBE_BW_REFILL:
+ return "PROBE_BW_REFILL";
+ case BBR_PHASE_INVALID:
+ default:
+ return "INVALID";
+ }
+}
+
static void tcp_stats_print(struct tcpstat *s)
{
char b1[64];
@@ -2658,7 +2682,14 @@ static void tcp_stats_print(struct tcpstat *s)
}

if (s->bbr_info) {
- __u64 bw;
+ /* All versions of the BBR algorithm use the INET_DIAG_BBRINFO
+ * enum value. Later versions of the tcp_bbr_info struct are
+ * backward-compatible with earlier versions, to allow older ss
+ * binaries to print basic information for newer versions of
+ * the algorithm. We use the size of the returned tcp_bbr_info
+ * struct to decide how much to print.
+ */
+ __u64 bw, bw_hi, bw_lo;

bw = s->bbr_info->bbr_bw_hi;
bw <<= 32;
@@ -2673,6 +2704,38 @@ static void tcp_stats_print(struct tcpstat *s)
if (s->bbr_info->bbr_cwnd_gain)
out(",cwnd_gain:%g",
(double)s->bbr_info->bbr_cwnd_gain / 256.0);
+
+ if (s->bbr_info_len >=
+ (offsetof(struct tcp_bbr_info, bbr_extra_acked) +
+ sizeof(__u32))) {
+
+ bw_hi = s->bbr_info->bbr_bw_hi_msb;
+ bw_hi <<= 32;
+ bw_hi |= s->bbr_info->bbr_bw_hi_lsb;
+
+ bw_lo = s->bbr_info->bbr_bw_lo_msb;
+ bw_lo <<= 32;
+ bw_lo |= s->bbr_info->bbr_bw_lo_lsb;
+
+ out(",version:%u", s->bbr_info->bbr_version);
+ if (bw_hi != ~0UL)
+ out(",bw_hi:%sbps", sprint_bw(b1, bw_hi * 8.0));
+ if (bw_lo != ~0UL)
+ out(",bw_lo:%sbps", sprint_bw(b1, bw_lo * 8.0));
+ if (s->bbr_info->bbr_inflight_hi != ~0U)
+ out(",inflight_hi:%u",
+ s->bbr_info->bbr_inflight_hi);
+ if (s->bbr_info->bbr_inflight_lo != ~0U)
+ out(",inflight_lo:%u",
+ s->bbr_info->bbr_inflight_lo);
+ out(",extra_acked:%u", s->bbr_info->bbr_extra_acked);
+ out(",mode:%d", (int)s->bbr_info->bbr_mode);
+ out(",phase:%s",
+ bbr_phase_to_str(
+ (enum tcp_bbr_phase)
+ s->bbr_info->bbr_phase));
+ }
+
out(")");
}

@@ -3147,6 +3210,7 @@ static void tcp_show_info(const struct nlmsghdr *nlh, struct inet_diag_msg *r,
s.bbr_info = calloc(1, sizeof(*s.bbr_info));
if (s.bbr_info && bbr_info)
memcpy(s.bbr_info, bbr_info, len);
+ s.bbr_info_len = len;
}

if (rtt > 0 && info->tcpi_snd_mss && info->tcpi_snd_cwnd) {
--
2.41.0.487.g6d72f3e995-goog
4 changes: 2 additions & 2 deletions package/network/utils/nftables/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
include $(TOPDIR)/rules.mk

PKG_NAME:=nftables
PKG_VERSION:=1.0.9
PKG_VERSION:=1.1.1
PKG_RELEASE:=1

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://netfilter.org/projects/$(PKG_NAME)/files
PKG_HASH:=a3c304cd9ba061239ee0474f9afb938a9bb99d89b960246f66f0c3a0a85e14cd
PKG_HASH:=6358830f3a64f31e39b0ad421d7dadcd240b72343ded48d8ef13b8faf204865a

PKG_MAINTAINER:=
PKG_LICENSE:=GPL-2.0
Expand Down
2 changes: 1 addition & 1 deletion target/linux/airoha/an7581/target.mk
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
ARCH:=aarch64
SUBTARGET:=an7581
BOARDNAME:=AN7581
BOARDNAME:=AN7581 / AN7566 / AN7551
CPU_TYPE:=cortex-a53
KERNELNAME:=Image dtbs
FEATURES+=pwm source-only
Expand Down
4 changes: 2 additions & 2 deletions target/linux/airoha/en7523/target.mk
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
ARCH:=arm
SUBTARGET:=en7523
BOARDNAME:=EN7523
BOARDNAME:=EN7523 / EN7529 / EN7562
CPU_TYPE:=cortex-a7
KERNELNAME:=Image dtbs
FEATURES+=source-only
FEATURES+=source-only
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
From 304c6ff637e53c8f3530a0bb50ba95e532d681b8 Mon Sep 17 00:00:00 2001
From: Neal Cardwell <ncardwell@google.com>
Date: Tue, 11 Jun 2019 12:26:55 -0400
Subject: [PATCH 01/19] net-tcp_bbr: broaden app-limited rate sample detection

This commit is a bug fix for the Linux TCP app-limited
(application-limited) logic that is used for collecting rate
(bandwidth) samples.

Previously the app-limited logic only looked for "bubbles" of
silence in between application writes, by checking at the start
of each sendmsg. But "bubbles" of silence can also happen before
retransmits: e.g. bubbles can happen between an application write
and a retransmit, or between two retransmits.

Retransmits are triggered by ACKs or timers. So this commit checks
for bubbles of app-limited silence upon ACKs or timers.

Why does this commit check for app-limited state at the start of
ACKs and timer handling? Because at that point we know whether
inflight was fully using the cwnd. During processing the ACK or
timer event we often change the cwnd; after changing the cwnd we
can't know whether inflight was fully using the old cwnd.

Origin-9xx-SHA1: 3fe9b53291e018407780fb8c356adb5666722cbc
Change-Id: I37221506f5166877c2b110753d39bb0757985e68
---
net/ipv4/tcp_input.c | 1 +
net/ipv4/tcp_timer.c | 1 +
2 files changed, 2 insertions(+)

--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -3915,6 +3915,7 @@ static int tcp_ack(struct sock *sk, cons

prior_fack = tcp_is_sack(tp) ? tcp_highest_sack_seq(tp) : tp->snd_una;
rs.prior_in_flight = tcp_packets_in_flight(tp);
+ tcp_rate_check_app_limited(sk);

/* ts_recent update must be made after we are sure that the packet
* is in window.
--- a/net/ipv4/tcp_timer.c
+++ b/net/ipv4/tcp_timer.c
@@ -677,6 +677,7 @@ void tcp_write_timer_handler(struct sock
return;
}

+ tcp_rate_check_app_limited(sk);
tcp_mstamp_refresh(tcp_sk(sk));
event = icsk->icsk_pending;

Loading

0 comments on commit b2c1ad9

Please sign in to comment.