diff --git a/include/bpf.mk b/include/bpf.mk index c68ad74554..967de7a172 100644 --- a/include/bpf.mk +++ b/include/bpf.mk @@ -1,6 +1,8 @@ BPF_DEPENDS := @HAS_BPF_TOOLCHAIN LLVM_VER:= +CLANG_MIN_VER:=12 + ifneq ($(CONFIG_USE_LLVM_HOST),) BPF_TOOLCHAIN_HOST_PATH:=$(call qstrip,$(CONFIG_BPF_TOOLCHAIN_HOST_PATH)) ifneq ($(BPF_TOOLCHAIN_HOST_PATH),) @@ -61,6 +63,14 @@ BPF_CFLAGS := \ -Wno-unused-label \ -O2 -emit-llvm -Xclang -disable-llvm-passes +ifeq ($(DUMP),) + CLANG_VER:=$(shell clang -dM -E - < /dev/null | grep __clang_major__ | cut -d' ' -f3) + CLANG_VER_VALID:=$(shell [ "$(CLANG_VER)" -ge "$(CLANG_MIN_VER)" ] && echo 1 ) + ifeq ($(CLANG_VER_VALID),) + $(error ERROR: LLVM/clang version too old. Minimum required: $(CLANG_MIN_VER), found: $(CLANG_VER)) + endif +endif + define CompileBPF $(CLANG) -g -target $(BPF_ARCH)-linux-gnu $(BPF_CFLAGS) $(2) \ -c $(1) -o $(patsubst %.c,%.bc,$(1)) diff --git a/package/kernel/mac80211/patches/subsys/300-mac80211-drop-check-for-DONT_REORDER-in-__ieee80211_.patch b/package/kernel/mac80211/patches/subsys/300-mac80211-drop-check-for-DONT_REORDER-in-__ieee80211_.patch new file mode 100644 index 0000000000..b55da2b1aa --- /dev/null +++ b/package/kernel/mac80211/patches/subsys/300-mac80211-drop-check-for-DONT_REORDER-in-__ieee80211_.patch @@ -0,0 +1,37 @@ +From: Felix Fietkau +Date: Wed, 10 Nov 2021 22:17:13 +0100 +Subject: [PATCH] mac80211: drop check for DONT_REORDER in + __ieee80211_select_queue + +When __ieee80211_select_queue is called, skb->cb has not been cleared yet, +which means that info->control.flags can contain garbage. +In some cases this leads to IEEE80211_TX_CTRL_DONT_REORDER being set, causing +packets marked for other queues to randomly end up in BE instead. + +This flag only needs to be checked in ieee80211_select_queue_80211, since +the radiotap parser is the only piece of code that sets it + +Fixes: 66d06c84730c ("mac80211: adhere to Tx control flag that prevents frame reordering") +Cc: stable@vger.kernel.org +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/wme.c ++++ b/net/mac80211/wme.c +@@ -143,7 +143,6 @@ u16 ieee80211_select_queue_80211(struct + u16 __ieee80211_select_queue(struct ieee80211_sub_if_data *sdata, + struct sta_info *sta, struct sk_buff *skb) + { +- struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); + struct mac80211_qos_map *qos_map; + bool qos; + +@@ -156,7 +155,7 @@ u16 __ieee80211_select_queue(struct ieee + else + qos = false; + +- if (!qos || (info->control.flags & IEEE80211_TX_CTRL_DONT_REORDER)) { ++ if (!qos) { + skb->priority = 0; /* required for correct WPA/11i MIC */ + return IEEE80211_AC_BE; + } diff --git a/package/kernel/nat46/Makefile b/package/kernel/nat46/Makefile index 7289101037..2329c03411 100644 --- a/package/kernel/nat46/Makefile +++ b/package/kernel/nat46/Makefile @@ -3,11 +3,11 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=nat46 -PKG_MIRROR_HASH:=a74a9a84605bac6186adf37025b3880eb9cf5931791bb61d47e69b8898cac411 +PKG_MIRROR_HASH:=5e7ebe31311a7b79f9eda222e94170611b3e041e3a472f55b6a283d9b0093bd4 PKG_SOURCE_URL:=https://github.com/ayourtch/nat46.git -PKG_SOURCE_DATE:=2021-06-24 +PKG_SOURCE_DATE:=2021-11-08 PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=9b3a8197421d987d77e1b9df4159cfe0b9820ee9 +PKG_SOURCE_VERSION:=1fdf2a3cf90843ef65b8e84ff25d5e0507eaa3fe PKG_MAINTAINER:=Hans Dedecker PKG_LICENSE:=GPL-2.0 diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init old mode 100644 new mode 100755 index 51f46490a8..25e6876194 --- a/package/network/services/dnsmasq/files/dnsmasq.init +++ b/package/network/services/dnsmasq/files/dnsmasq.init @@ -332,7 +332,7 @@ dhcp_match_add() { dhcp_host_add() { local cfg="$1" - local hosttag nametime addrs duids macs tags + local hosttag nametime addrs duids macs tags mtags config_get_bool force "$cfg" force 0 @@ -357,6 +357,11 @@ dhcp_host_add() { config_get duid "$cfg" duid config_get tag "$cfg" tag + add_tag() { + mtags="${mtags}tag:$1," + } + config_list_foreach "$cfg" match_tag add_tag + if [ -n "$mac" ]; then # --dhcp-host=00:20:e0:3b:13:af,192.168.0.199,lap # many MAC are possible to track a laptop ON/OFF dock @@ -394,9 +399,9 @@ dhcp_host_add() { if [ $DNSMASQ_DHCP_VER -eq 6 ]; then addrs="${ip:+,$ip}${hostid:+,[::$hostid]}" - xappend "--dhcp-host=$macs${duids:+,$duids}$hosttag$addrs$nametime" + xappend "--dhcp-host=$mtags$macs${duids:+,$duids}$hosttag$addrs$nametime" else - xappend "--dhcp-host=$macs$hosttag${ip:+,$ip}$nametime" + xappend "--dhcp-host=$mtags$macs$hosttag${ip:+,$ip}$nametime" fi } diff --git a/package/network/services/dnsmasq/patches/200-ubus_dns.patch b/package/network/services/dnsmasq/patches/200-ubus_dns.patch index 506a413ae2..03fc5b50b3 100644 --- a/package/network/services/dnsmasq/patches/200-ubus_dns.patch +++ b/package/network/services/dnsmasq/patches/200-ubus_dns.patch @@ -162,7 +162,7 @@ ttl = find_soa(header, qlen, doctored); --- a/src/ubus.c +++ b/src/ubus.c -@@ -72,6 +72,14 @@ static struct ubus_object ubus_object = +@@ -72,6 +72,13 @@ static struct ubus_object ubus_object = .subscribe_cb = ubus_subscribe_cb, }; @@ -170,23 +170,35 @@ + { .name = "dnsmasq.dns" }; + +static struct ubus_object ubus_dns_object = { -+ .name = "dnsmasq.dns", + .type = &ubus_dns_object_type, +}; + static void ubus_subscribe_cb(struct ubus_context *ctx, struct ubus_object *obj) { (void)ctx; -@@ -112,6 +120,8 @@ char *ubus_init() +@@ -105,13 +112,21 @@ static void ubus_disconnect_cb(struct ub + char *ubus_init() + { + struct ubus_context *ubus = NULL; ++ char *dns_name; + int ret = 0; + + if (!(ubus = ubus_connect(NULL))) + return NULL; ++ dns_name = whine_malloc(strlen(daemon->ubus_name) + 5); ++ sprintf(dns_name, "%s.dns", daemon->ubus_name); ++ ubus_object.name = daemon->ubus_name; ++ ubus_dns_object.name = dns_name; ++ ret = ubus_add_object(ubus, &ubus_object); + if (!ret) + ret = ubus_add_object(ubus, &ubus_dns_object); if (ret) { ubus_destroy(ubus); -@@ -181,6 +191,17 @@ void check_ubus_listeners() +@@ -181,6 +196,17 @@ void check_ubus_listeners() } \ } while (0) @@ -204,7 +216,7 @@ static int ubus_handle_metrics(struct ubus_context *ctx, struct ubus_object *obj, struct ubus_request_data *req, const char *method, struct blob_attr *msg) -@@ -328,6 +349,50 @@ fail: +@@ -328,6 +354,50 @@ fail: } \ } while (0) diff --git a/package/system/procd/Makefile b/package/system/procd/Makefile index b831f86639..f87572aef9 100644 --- a/package/system/procd/Makefile +++ b/package/system/procd/Makefile @@ -12,9 +12,9 @@ PKG_RELEASE:=$(AUTORELEASE) PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/procd.git -PKG_MIRROR_HASH:=0d51642d82d7bb4150355a6986e54504dce171c6fcb7eeff312d20a5d106bad8 -PKG_SOURCE_DATE:=2021-11-04 -PKG_SOURCE_VERSION:=0ee8e734a7f67220cf4a3412b60ff674b5fb20dd +PKG_MIRROR_HASH:=0ff42d965b6c07fe9d1731395623b78967b83bbeb85deda900dd430a2883643f +PKG_SOURCE_DATE:=2021-11-11 +PKG_SOURCE_VERSION:=9d1431e1309e1acee06c016acc08cb7650b1d0af CMAKE_INSTALL:=1 PKG_LICENSE:=GPL-2.0