From 081d1e3327a12852c279ae306a450476377c4718 Mon Sep 17 00:00:00 2001 From: Stijn Tintel Date: Fri, 17 Apr 2020 00:32:18 +0300 Subject: [PATCH 1/7] bcm27xx: backup /boot/cmdline.txt and restore early If you want to use the Raspberry Pi UART, "console=serial0,115200" needs to be removed from the kernel cmdline. This is done by editing /boot/cmdline.txt. However, this file is not currently backed up during sysupgrade, so this effectively breaks HATs that require the use of the UART every sysupgrade. Backup this file during sysupgrade, and restore it before rebooting. Signed-off-by: Stijn Tintel --- target/linux/bcm27xx/base-files/lib/upgrade/keep.d/platform | 1 + target/linux/bcm27xx/base-files/lib/upgrade/platform.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/target/linux/bcm27xx/base-files/lib/upgrade/keep.d/platform b/target/linux/bcm27xx/base-files/lib/upgrade/keep.d/platform index 786796577d..22f09da43d 100644 --- a/target/linux/bcm27xx/base-files/lib/upgrade/keep.d/platform +++ b/target/linux/bcm27xx/base-files/lib/upgrade/keep.d/platform @@ -1 +1,2 @@ +/boot/cmdline.txt /boot/config.txt diff --git a/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh b/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh index 62eede53d3..f1111fadba 100644 --- a/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh @@ -97,7 +97,7 @@ platform_copy_config() { mkdir -p /boot [ -f /boot/kernel.img ] || mount -t vfat -o rw,noatime "/dev/$partdev" /boot cp -af "$CONF_TAR" /boot/ - tar -C / -zxvf "$CONF_TAR" boot/config.txt + tar -C / -zxvf "$CONF_TAR" boot/cmdline.txt boot/config.txt sync unmount /boot fi From 5d38bc7b6f377578277da13b4b219be9772197f7 Mon Sep 17 00:00:00 2001 From: Stijn Tintel Date: Sun, 7 Jun 2020 05:31:09 +0300 Subject: [PATCH 2/7] bcm27xx: fix unmounting /boot after sysupgrade Due to a typo, /boot is not properly unmounted after copying the backup file to it. Fix the typo to solve this. Fixes: 246916ddf4a1 ("brcm2708: use x86's upgrade scripts for all rpi targets") Signed-off-by: Stijn Tintel --- target/linux/bcm27xx/base-files/lib/upgrade/platform.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh b/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh index f1111fadba..3362899ca0 100644 --- a/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh @@ -99,6 +99,6 @@ platform_copy_config() { cp -af "$CONF_TAR" /boot/ tar -C / -zxvf "$CONF_TAR" boot/cmdline.txt boot/config.txt sync - unmount /boot + umount /boot fi } From 598146524f6f2b7b55b0fbce4f302374cdc384f5 Mon Sep 17 00:00:00 2001 From: Kevin Darbyshire-Bryant Date: Mon, 30 Mar 2020 18:52:09 +0100 Subject: [PATCH 3/7] kmod-sched-cake: rename to kmod-sched-cake-oot In preparation for dropping the out of tree cake module and using in tree cake from upstream, rename the package to kmod-sched-cake-oot (out of tree) Initially add a PROVIDES kmod-sched-cake so that package dependencies can be satisfied. Ultimately this package will be removed when linux 4.14 is removed. Signed-off-by: Kevin Darbyshire-Bryant --- .../Makefile | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) rename package/kernel/{kmod-sched-cake => kmod-sched-cake-oot}/Makefile (70%) diff --git a/package/kernel/kmod-sched-cake/Makefile b/package/kernel/kmod-sched-cake-oot/Makefile similarity index 70% rename from package/kernel/kmod-sched-cake/Makefile rename to package/kernel/kmod-sched-cake-oot/Makefile index 7778d48041..e53e42eb9c 100644 --- a/package/kernel/kmod-sched-cake/Makefile +++ b/package/kernel/kmod-sched-cake-oot/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk -PKG_NAME:=sched-cake +PKG_NAME:=sched-cake-oot PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git @@ -20,23 +20,24 @@ PKG_MAINTAINER:=Kevin Darbyshire-Bryant include $(INCLUDE_DIR)/package.mk -define KernelPackage/sched-cake +define KernelPackage/sched-cake-oot SUBMENU:=Network Support - TITLE:=Cake fq_codel/blue derived shaper + TITLE:=OOT Cake fq_codel/blue derived shaper URL:=https://github.com/dtaht/sch_cake FILES:=$(PKG_BUILD_DIR)/sch_cake.ko AUTOLOAD:=$(call AutoLoad,75,sch_cake) - DEPENDS:=+kmod-ipt-conntrack + DEPENDS:=+kmod-sched-core +kmod-ipt-conntrack + PROVIDES:=kmod-sched-cake endef include $(INCLUDE_DIR)/kernel-defaults.mk define KernelPackage/sched-cake/description - Common Applications Kept Enhanced fq_codel/blue derived shaper + O(ut) O(f) T(ree) Common Applications Kept Enhanced fq_codel/blue derived shaper endef define Build/Compile - $(KERNEL_MAKE) SUBDIRS="$(PKG_BUILD_DIR)" modules + $(KERNEL_MAKE) M="$(PKG_BUILD_DIR)" modules endef -$(eval $(call KernelPackage,sched-cake)) +$(eval $(call KernelPackage,sched-cake-oot)) From 12014000004227df35fc7d7049c31841644dbefc Mon Sep 17 00:00:00 2001 From: Kevin Darbyshire-Bryant Date: Mon, 29 Jul 2019 16:54:02 +0100 Subject: [PATCH 4/7] kmod-sched-cake: switch to in-tree cake for 4.19+ Use in tree version of cake for kernels 4.19+ and backport features from later kernel versions to 4.19. Unfortunately PROVIDES dependency handling produces bogus circular dependency warnings so whilst this package and kmod-sched-cake-oot should be able to PROVIDE kmod-sched-cake this doesn't work. Instead, remove the PROVIDES option and modify package sqm-scripts to depend on the correct module independently. Signed-off-by: Kevin Darbyshire-Bryant --- package/kernel/kmod-sched-cake-oot/Makefile | 3 +- package/kernel/linux/modules/netsupport.mk | 17 +- ...-sch_cake-Make-the-dual-modes-fairer.patch | 217 ++++++++++++++++++ ...-use-of-connmarks-as-tin-classifiers.patch | 118 ++++++++++ ...erpret-fwmark-parameter-as-a-bitmask.patch | 102 ++++++++ ...rop-unused-variable-tin_quantum_prio.patch | 158 +++++++++++++ ...sing-NLA-policy-entry-TCA_CAKE_SPLIT.patch | 30 +++ 7 files changed, 642 insertions(+), 3 deletions(-) create mode 100644 target/linux/generic/backport-4.19/392-v5.1-sch_cake-Make-the-dual-modes-fairer.patch create mode 100644 target/linux/generic/backport-4.19/393-v5.1-sch_cake-Permit-use-of-connmarks-as-tin-classifiers.patch create mode 100644 target/linux/generic/backport-4.19/394-v5.1-sch_cake-Interpret-fwmark-parameter-as-a-bitmask.patch create mode 100644 target/linux/generic/backport-4.19/395-v5.4-sch_cake-drop-unused-variable-tin_quantum_prio.patch create mode 100644 target/linux/generic/backport-4.19/396-v5.4-sch_cake-Add-missing-NLA-policy-entry-TCA_CAKE_SPLIT.patch diff --git a/package/kernel/kmod-sched-cake-oot/Makefile b/package/kernel/kmod-sched-cake-oot/Makefile index e53e42eb9c..963681c1fb 100644 --- a/package/kernel/kmod-sched-cake-oot/Makefile +++ b/package/kernel/kmod-sched-cake-oot/Makefile @@ -26,8 +26,7 @@ define KernelPackage/sched-cake-oot URL:=https://github.com/dtaht/sch_cake FILES:=$(PKG_BUILD_DIR)/sch_cake.ko AUTOLOAD:=$(call AutoLoad,75,sch_cake) - DEPENDS:=+kmod-sched-core +kmod-ipt-conntrack - PROVIDES:=kmod-sched-cake + DEPENDS:=@LINUX_4_14 +kmod-sched-core +kmod-ipt-conntrack endef include $(INCLUDE_DIR)/kernel-defaults.mk diff --git a/package/kernel/linux/modules/netsupport.mk b/package/kernel/linux/modules/netsupport.mk index 8397ee764d..094985b20f 100644 --- a/package/kernel/linux/modules/netsupport.mk +++ b/package/kernel/linux/modules/netsupport.mk @@ -749,7 +749,7 @@ $(eval $(call KernelPackage,mppe)) SCHED_MODULES = $(patsubst $(LINUX_DIR)/net/sched/%.ko,%,$(wildcard $(LINUX_DIR)/net/sched/*.ko)) SCHED_MODULES_CORE = sch_ingress sch_fq_codel sch_hfsc sch_htb sch_tbf cls_basic cls_fw cls_route cls_flow cls_tcindex cls_u32 em_u32 act_mirred act_skbedit cls_matchall -SCHED_MODULES_FILTER = $(SCHED_MODULES_CORE) act_connmark act_ctinfo sch_netem sch_mqprio em_ipset cls_bpf cls_flower act_bpf act_vlan +SCHED_MODULES_FILTER = $(SCHED_MODULES_CORE) act_connmark act_ctinfo sch_cake sch_netem sch_mqprio em_ipset cls_bpf cls_flower act_bpf act_vlan SCHED_MODULES_EXTRA = $(filter-out $(SCHED_MODULES_FILTER),$(SCHED_MODULES)) SCHED_FILES = $(patsubst %,$(LINUX_DIR)/net/sched/%.ko,$(filter $(SCHED_MODULES_CORE),$(SCHED_MODULES))) SCHED_FILES_EXTRA = $(patsubst %,$(LINUX_DIR)/net/sched/%.ko,$(SCHED_MODULES_EXTRA)) @@ -788,6 +788,21 @@ endef $(eval $(call KernelPackage,sched-core)) +define KernelPackage/sched-cake + SUBMENU:=$(NETWORK_SUPPORT_MENU) + TITLE:=Cake fq_codel/blue derived shaper + DEPENDS:=@!LINUX_4_14 +kmod-sched-core + KCONFIG:=CONFIG_NET_SCH_CAKE + FILES:=$(LINUX_DIR)/net/sched/sch_cake.ko + AUTOLOAD:=$(call AutoProbe,sch_cake) +endef + +define KernelPackage/sched-cake/description + Common Applications Kept Enhanced fq_codel/blue derived shaper +endef + +$(eval $(call KernelPackage,sched-cake)) + define KernelPackage/sched-flower SUBMENU:=$(NETWORK_SUPPORT_MENU) TITLE:=Flower traffic classifier diff --git a/target/linux/generic/backport-4.19/392-v5.1-sch_cake-Make-the-dual-modes-fairer.patch b/target/linux/generic/backport-4.19/392-v5.1-sch_cake-Make-the-dual-modes-fairer.patch new file mode 100644 index 0000000000..cd94600152 --- /dev/null +++ b/target/linux/generic/backport-4.19/392-v5.1-sch_cake-Make-the-dual-modes-fairer.patch @@ -0,0 +1,217 @@ +From 712639929912c5eefb09facccb48d55b3f72c9f8 Mon Sep 17 00:00:00 2001 +From: George Amanakis +Date: Fri, 1 Mar 2019 16:04:05 +0100 +Subject: [PATCH] sch_cake: Make the dual modes fairer +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +CAKE host fairness does not work well with TCP flows in dual-srchost and +dual-dsthost setup. The reason is that ACKs generated by TCP flows are +classified as sparse flows, and affect flow isolation from other hosts. Fix +this by calculating host_load based only on the bulk flows a host +generates. In a hash collision the host_bulk_flow_count values must be +decremented on the old hosts and incremented on the new ones *if* the queue +is in the bulk set. + +Reported-by: Pete Heist +Signed-off-by: George Amanakis +Signed-off-by: Toke Høiland-Jørgensen +Signed-off-by: David S. Miller +Signed-off-by: Kevin Darbyshire-Bryant +--- + net/sched/sch_cake.c | 92 ++++++++++++++++++++++++++++++-------------- + 1 file changed, 63 insertions(+), 29 deletions(-) + +--- a/net/sched/sch_cake.c ++++ b/net/sched/sch_cake.c +@@ -138,8 +138,8 @@ struct cake_flow { + struct cake_host { + u32 srchost_tag; + u32 dsthost_tag; +- u16 srchost_refcnt; +- u16 dsthost_refcnt; ++ u16 srchost_bulk_flow_count; ++ u16 dsthost_bulk_flow_count; + }; + + struct cake_heap_entry { +@@ -746,8 +746,10 @@ skip_hash: + * queue, accept the collision, update the host tags. + */ + q->way_collisions++; +- q->hosts[q->flows[reduced_hash].srchost].srchost_refcnt--; +- q->hosts[q->flows[reduced_hash].dsthost].dsthost_refcnt--; ++ if (q->flows[outer_hash + k].set == CAKE_SET_BULK) { ++ q->hosts[q->flows[reduced_hash].srchost].srchost_bulk_flow_count--; ++ q->hosts[q->flows[reduced_hash].dsthost].dsthost_bulk_flow_count--; ++ } + allocate_src = cake_dsrc(flow_mode); + allocate_dst = cake_ddst(flow_mode); + found: +@@ -767,13 +769,14 @@ found: + } + for (i = 0; i < CAKE_SET_WAYS; + i++, k = (k + 1) % CAKE_SET_WAYS) { +- if (!q->hosts[outer_hash + k].srchost_refcnt) ++ if (!q->hosts[outer_hash + k].srchost_bulk_flow_count) + break; + } + q->hosts[outer_hash + k].srchost_tag = srchost_hash; + found_src: + srchost_idx = outer_hash + k; +- q->hosts[srchost_idx].srchost_refcnt++; ++ if (q->flows[reduced_hash].set == CAKE_SET_BULK) ++ q->hosts[srchost_idx].srchost_bulk_flow_count++; + q->flows[reduced_hash].srchost = srchost_idx; + } + +@@ -789,13 +792,14 @@ found_src: + } + for (i = 0; i < CAKE_SET_WAYS; + i++, k = (k + 1) % CAKE_SET_WAYS) { +- if (!q->hosts[outer_hash + k].dsthost_refcnt) ++ if (!q->hosts[outer_hash + k].dsthost_bulk_flow_count) + break; + } + q->hosts[outer_hash + k].dsthost_tag = dsthost_hash; + found_dst: + dsthost_idx = outer_hash + k; +- q->hosts[dsthost_idx].dsthost_refcnt++; ++ if (q->flows[reduced_hash].set == CAKE_SET_BULK) ++ q->hosts[dsthost_idx].dsthost_bulk_flow_count++; + q->flows[reduced_hash].dsthost = dsthost_idx; + } + } +@@ -1793,20 +1797,30 @@ static s32 cake_enqueue(struct sk_buff * + b->sparse_flow_count++; + + if (cake_dsrc(q->flow_mode)) +- host_load = max(host_load, srchost->srchost_refcnt); ++ host_load = max(host_load, srchost->srchost_bulk_flow_count); + + if (cake_ddst(q->flow_mode)) +- host_load = max(host_load, dsthost->dsthost_refcnt); ++ host_load = max(host_load, dsthost->dsthost_bulk_flow_count); + + flow->deficit = (b->flow_quantum * + quantum_div[host_load]) >> 16; + } else if (flow->set == CAKE_SET_SPARSE_WAIT) { ++ struct cake_host *srchost = &b->hosts[flow->srchost]; ++ struct cake_host *dsthost = &b->hosts[flow->dsthost]; ++ + /* this flow was empty, accounted as a sparse flow, but actually + * in the bulk rotation. + */ + flow->set = CAKE_SET_BULK; + b->sparse_flow_count--; + b->bulk_flow_count++; ++ ++ if (cake_dsrc(q->flow_mode)) ++ srchost->srchost_bulk_flow_count++; ++ ++ if (cake_ddst(q->flow_mode)) ++ dsthost->dsthost_bulk_flow_count++; ++ + } + + if (q->buffer_used > q->buffer_max_used) +@@ -1974,23 +1988,8 @@ retry: + dsthost = &b->hosts[flow->dsthost]; + host_load = 1; + +- if (cake_dsrc(q->flow_mode)) +- host_load = max(host_load, srchost->srchost_refcnt); +- +- if (cake_ddst(q->flow_mode)) +- host_load = max(host_load, dsthost->dsthost_refcnt); +- +- WARN_ON(host_load > CAKE_QUEUES); +- + /* flow isolation (DRR++) */ + if (flow->deficit <= 0) { +- /* The shifted prandom_u32() is a way to apply dithering to +- * avoid accumulating roundoff errors +- */ +- flow->deficit += (b->flow_quantum * quantum_div[host_load] + +- (prandom_u32() >> 16)) >> 16; +- list_move_tail(&flow->flowchain, &b->old_flows); +- + /* Keep all flows with deficits out of the sparse and decaying + * rotations. No non-empty flow can go into the decaying + * rotation, so they can't get deficits +@@ -1999,6 +1998,13 @@ retry: + if (flow->head) { + b->sparse_flow_count--; + b->bulk_flow_count++; ++ ++ if (cake_dsrc(q->flow_mode)) ++ srchost->srchost_bulk_flow_count++; ++ ++ if (cake_ddst(q->flow_mode)) ++ dsthost->dsthost_bulk_flow_count++; ++ + flow->set = CAKE_SET_BULK; + } else { + /* we've moved it to the bulk rotation for +@@ -2008,6 +2014,22 @@ retry: + flow->set = CAKE_SET_SPARSE_WAIT; + } + } ++ ++ if (cake_dsrc(q->flow_mode)) ++ host_load = max(host_load, srchost->srchost_bulk_flow_count); ++ ++ if (cake_ddst(q->flow_mode)) ++ host_load = max(host_load, dsthost->dsthost_bulk_flow_count); ++ ++ WARN_ON(host_load > CAKE_QUEUES); ++ ++ /* The shifted prandom_u32() is a way to apply dithering to ++ * avoid accumulating roundoff errors ++ */ ++ flow->deficit += (b->flow_quantum * quantum_div[host_load] + ++ (prandom_u32() >> 16)) >> 16; ++ list_move_tail(&flow->flowchain, &b->old_flows); ++ + goto retry; + } + +@@ -2028,6 +2050,13 @@ retry: + &b->decaying_flows); + if (flow->set == CAKE_SET_BULK) { + b->bulk_flow_count--; ++ ++ if (cake_dsrc(q->flow_mode)) ++ srchost->srchost_bulk_flow_count--; ++ ++ if (cake_ddst(q->flow_mode)) ++ dsthost->dsthost_bulk_flow_count--; ++ + b->decaying_flow_count++; + } else if (flow->set == CAKE_SET_SPARSE || + flow->set == CAKE_SET_SPARSE_WAIT) { +@@ -2041,14 +2070,19 @@ retry: + if (flow->set == CAKE_SET_SPARSE || + flow->set == CAKE_SET_SPARSE_WAIT) + b->sparse_flow_count--; +- else if (flow->set == CAKE_SET_BULK) ++ else if (flow->set == CAKE_SET_BULK) { + b->bulk_flow_count--; +- else ++ ++ if (cake_dsrc(q->flow_mode)) ++ srchost->srchost_bulk_flow_count--; ++ ++ if (cake_ddst(q->flow_mode)) ++ dsthost->dsthost_bulk_flow_count--; ++ ++ } else + b->decaying_flow_count--; + + flow->set = CAKE_SET_NONE; +- srchost->srchost_refcnt--; +- dsthost->dsthost_refcnt--; + } + goto begin; + } diff --git a/target/linux/generic/backport-4.19/393-v5.1-sch_cake-Permit-use-of-connmarks-as-tin-classifiers.patch b/target/linux/generic/backport-4.19/393-v5.1-sch_cake-Permit-use-of-connmarks-as-tin-classifiers.patch new file mode 100644 index 0000000000..9ac1388c98 --- /dev/null +++ b/target/linux/generic/backport-4.19/393-v5.1-sch_cake-Permit-use-of-connmarks-as-tin-classifiers.patch @@ -0,0 +1,118 @@ +From 0b5c7efdfc6e389ec6840579fe90bdb6f42b08dc Mon Sep 17 00:00:00 2001 +From: Kevin Darbyshire-Bryant +Date: Fri, 1 Mar 2019 16:04:05 +0100 +Subject: [PATCH] sch_cake: Permit use of connmarks as tin classifiers +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Add flag 'FWMARK' to enable use of firewall connmarks as tin selector. +The connmark (skbuff->mark) needs to be in the range 1->tin_cnt ie. +for diffserv3 the mark needs to be 1->3. + +Background + +Typically CAKE uses DSCP as the basis for tin selection. DSCP values +are relatively easily changed as part of the egress path, usually with +iptables & the mangle table, ingress is more challenging. CAKE is often +used on the WAN interface of a residential gateway where passthrough of +DSCP from the ISP is either missing or set to unhelpful values thus use +of ingress DSCP values for tin selection isn't helpful in that +environment. + +An approach to solving the ingress tin selection problem is to use +CAKE's understanding of tc filters. Naive tc filters could match on +source/destination port numbers and force tin selection that way, but +multiple filters don't scale particularly well as each filter must be +traversed whether it matches or not. e.g. a simple example to map 3 +firewall marks to tins: + +MAJOR=$( tc qdisc show dev $DEV | head -1 | awk '{print $3}' ) +tc filter add dev $DEV parent $MAJOR protocol all handle 0x01 fw action skbedit priority ${MAJOR}1 +tc filter add dev $DEV parent $MAJOR protocol all handle 0x02 fw action skbedit priority ${MAJOR}2 +tc filter add dev $DEV parent $MAJOR protocol all handle 0x03 fw action skbedit priority ${MAJOR}3 + +Another option is to use eBPF cls_act with tc filters e.g. + +MAJOR=$( tc qdisc show dev $DEV | head -1 | awk '{print $3}' ) +tc filter add dev $DEV parent $MAJOR bpf da obj my-bpf-fwmark-to-class.o + +This has the disadvantages of a) needing someone to write & maintain +the bpf program, b) a bpf toolchain to compile it and c) needing to +hardcode the major number in the bpf program so it matches the cake +instance (or forcing the cake instance to a particular major number) +since the major number cannot be passed to the bpf program via tc +command line. + +As already hinted at by the previous examples, it would be helpful +to associate tins with something that survives the Internet path and +ideally allows tin selection on both egress and ingress. Netfilter's +conntrack permits setting an identifying mark on a connection which +can also be restored to an ingress packet with tc action connmark e.g. + +tc filter add dev eth0 parent ffff: protocol all prio 10 u32 \ + match u32 0 0 flowid 1:1 action connmark action mirred egress redirect dev ifb1 + +Since tc's connmark action has restored any connmark into skb->mark, +any of the previous solutions are based upon it and in one form or +another copy that mark to the skb->priority field where again CAKE +picks this up. + +This change cuts out at least one of the (less intuitive & +non-scalable) middlemen and permit direct access to skb->mark. + +Signed-off-by: Kevin Darbyshire-Bryant +Signed-off-by: Toke Høiland-Jørgensen +Signed-off-by: David S. Miller +--- + include/uapi/linux/pkt_sched.h | 1 + + net/sched/sch_cake.c | 34 +++++++++++++++++++++++++++------- + 2 files changed, 28 insertions(+), 7 deletions(-) + +--- a/include/uapi/linux/pkt_sched.h ++++ b/include/uapi/linux/pkt_sched.h +@@ -991,6 +991,7 @@ enum { + TCA_CAKE_INGRESS, + TCA_CAKE_ACK_FILTER, + TCA_CAKE_SPLIT_GSO, ++ TCA_CAKE_FWMARK, + __TCA_CAKE_MAX + }; + #define TCA_CAKE_MAX (__TCA_CAKE_MAX - 1) +--- a/net/sched/sch_cake.c ++++ b/net/sched/sch_cake.c +@@ -258,7 +258,8 @@ enum { + CAKE_FLAG_AUTORATE_INGRESS = BIT(1), + CAKE_FLAG_INGRESS = BIT(2), + CAKE_FLAG_WASH = BIT(3), +- CAKE_FLAG_SPLIT_GSO = BIT(4) ++ CAKE_FLAG_SPLIT_GSO = BIT(4), ++ CAKE_FLAG_FWMARK = BIT(5) + }; + + /* COBALT operates the Codel and BLUE algorithms in parallel, in order to +@@ -2623,6 +2624,13 @@ static int cake_change(struct Qdisc *sch + q->rate_flags &= ~CAKE_FLAG_SPLIT_GSO; + } + ++ if (tb[TCA_CAKE_FWMARK]) { ++ if (!!nla_get_u32(tb[TCA_CAKE_FWMARK])) ++ q->rate_flags |= CAKE_FLAG_FWMARK; ++ else ++ q->rate_flags &= ~CAKE_FLAG_FWMARK; ++ } ++ + if (q->tins) { + sch_tree_lock(sch); + cake_reconfigure(sch); +@@ -2782,6 +2790,10 @@ static int cake_dump(struct Qdisc *sch, + !!(q->rate_flags & CAKE_FLAG_SPLIT_GSO))) + goto nla_put_failure; + ++ if (nla_put_u32(skb, TCA_CAKE_FWMARK, ++ !!(q->rate_flags & CAKE_FLAG_FWMARK))) ++ goto nla_put_failure; ++ + return nla_nest_end(skb, opts); + + nla_put_failure: diff --git a/target/linux/generic/backport-4.19/394-v5.1-sch_cake-Interpret-fwmark-parameter-as-a-bitmask.patch b/target/linux/generic/backport-4.19/394-v5.1-sch_cake-Interpret-fwmark-parameter-as-a-bitmask.patch new file mode 100644 index 0000000000..325f5719d7 --- /dev/null +++ b/target/linux/generic/backport-4.19/394-v5.1-sch_cake-Interpret-fwmark-parameter-as-a-bitmask.patch @@ -0,0 +1,102 @@ +From eab2fc822af38f31fd5f4e731b5d10b94904d919 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= +Date: Thu, 14 Mar 2019 23:08:22 +0100 +Subject: [PATCH] sch_cake: Interpret fwmark parameter as a bitmask +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +We initially interpreted the fwmark parameter as a flag that simply turned +on the feature, using the whole skb->mark field as the index into the CAKE +tin_order array. However, it is quite common for different applications to +use different parts of the mask field for their own purposes, each using a +different mask. + +Support this use of subsets of the mark by interpreting the TCA_CAKE_FWMARK +parameter as a bitmask to apply to the fwmark field when reading it. The +result will be right-shifted by the number of unset lower bits of the mask +before looking up the tin. + +In the original commit message we also failed to credit Felix Resch with +originally suggesting the fwmark feature back in 2017; so the Suggested-By +in this commit covers the whole fwmark feature. + +Fixes: 0b5c7efdfc6e ("sch_cake: Permit use of connmarks as tin classifiers") +Suggested-by: Felix Resch +Signed-off-by: Toke Høiland-Jørgensen +Signed-off-by: David S. Miller +Signed-off-by: Kevin Darbyshire-Bryant +--- + net/sched/sch_cake.c | 25 ++++++++++++------------- + 1 file changed, 12 insertions(+), 13 deletions(-) + +--- a/net/sched/sch_cake.c ++++ b/net/sched/sch_cake.c +@@ -211,6 +211,9 @@ struct cake_sched_data { + u8 ack_filter; + u8 atm_mode; + ++ u32 fwmark_mask; ++ u16 fwmark_shft; ++ + /* time_next = time_this + ((len * rate_ns) >> rate_shft) */ + u16 rate_shft; + ktime_t time_next_packet; +@@ -258,8 +261,7 @@ enum { + CAKE_FLAG_AUTORATE_INGRESS = BIT(1), + CAKE_FLAG_INGRESS = BIT(2), + CAKE_FLAG_WASH = BIT(3), +- CAKE_FLAG_SPLIT_GSO = BIT(4), +- CAKE_FLAG_FWMARK = BIT(5) ++ CAKE_FLAG_SPLIT_GSO = BIT(4) + }; + + /* COBALT operates the Codel and BLUE algorithms in parallel, in order to +@@ -1554,7 +1556,7 @@ static struct cake_tin_data *cake_select + struct sk_buff *skb) + { + struct cake_sched_data *q = qdisc_priv(sch); +- u32 tin; ++ u32 tin, mark; + u8 dscp; + + /* Tin selection: Default to diffserv-based selection, allow overriding +@@ -1562,6 +1564,7 @@ static struct cake_tin_data *cake_select + */ + dscp = cake_handle_diffserv(skb, + q->rate_flags & CAKE_FLAG_WASH); ++ mark = (skb->mark & q->fwmark_mask) >> q->fwmark_shft; + + if (q->tin_mode == CAKE_DIFFSERV_BESTEFFORT) + tin = 0; +@@ -2178,6 +2181,7 @@ static const struct nla_policy cake_poli + [TCA_CAKE_MPU] = { .type = NLA_U32 }, + [TCA_CAKE_INGRESS] = { .type = NLA_U32 }, + [TCA_CAKE_ACK_FILTER] = { .type = NLA_U32 }, ++ [TCA_CAKE_FWMARK] = { .type = NLA_U32 }, + }; + + static void cake_set_rate(struct cake_tin_data *b, u64 rate, u32 mtu, +@@ -2625,10 +2629,8 @@ static int cake_change(struct Qdisc *sch + } + + if (tb[TCA_CAKE_FWMARK]) { +- if (!!nla_get_u32(tb[TCA_CAKE_FWMARK])) +- q->rate_flags |= CAKE_FLAG_FWMARK; +- else +- q->rate_flags &= ~CAKE_FLAG_FWMARK; ++ q->fwmark_mask = nla_get_u32(tb[TCA_CAKE_FWMARK]); ++ q->fwmark_shft = q->fwmark_mask ? __ffs(q->fwmark_mask) : 0; + } + + if (q->tins) { +@@ -2790,8 +2792,7 @@ static int cake_dump(struct Qdisc *sch, + !!(q->rate_flags & CAKE_FLAG_SPLIT_GSO))) + goto nla_put_failure; + +- if (nla_put_u32(skb, TCA_CAKE_FWMARK, +- !!(q->rate_flags & CAKE_FLAG_FWMARK))) ++ if (nla_put_u32(skb, TCA_CAKE_FWMARK, q->fwmark_mask)) + goto nla_put_failure; + + return nla_nest_end(skb, opts); diff --git a/target/linux/generic/backport-4.19/395-v5.4-sch_cake-drop-unused-variable-tin_quantum_prio.patch b/target/linux/generic/backport-4.19/395-v5.4-sch_cake-drop-unused-variable-tin_quantum_prio.patch new file mode 100644 index 0000000000..33e5c54b8c --- /dev/null +++ b/target/linux/generic/backport-4.19/395-v5.4-sch_cake-drop-unused-variable-tin_quantum_prio.patch @@ -0,0 +1,158 @@ +From d7e1738f0a0b0573ac93cf570ba3df9dee61b68e Mon Sep 17 00:00:00 2001 +From: Kevin 'ldir' Darbyshire-Bryant +Date: Wed, 18 Dec 2019 14:05:13 +0000 +Subject: [PATCH 2/2] sch_cake: drop unused variable tin_quantum_prio +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Turns out tin_quantum_prio isn't used anymore and is a leftover from a +previous implementation of diffserv tins. Since the variable isn't used +in any calculations it can be eliminated. + +Drop variable and places where it was set. Rename remaining variable +and consolidate naming of intermediate variables that set it. + +Signed-off-by: Kevin Darbyshire-Bryant +Acked-by: Toke Høiland-Jørgensen +Signed-off-by: David S. Miller +--- + net/sched/sch_cake.c | 59 ++++++++++++++------------------------------ + 1 file changed, 18 insertions(+), 41 deletions(-) + +--- a/net/sched/sch_cake.c ++++ b/net/sched/sch_cake.c +@@ -173,8 +173,7 @@ struct cake_tin_data { + u64 tin_rate_bps; + u16 tin_rate_shft; + +- u16 tin_quantum_prio; +- u16 tin_quantum_band; ++ u16 tin_quantum; + s32 tin_deficit; + u32 tin_backlog; + u32 tin_dropped; +@@ -1916,7 +1915,7 @@ begin: + while (b->tin_deficit < 0 || + !(b->sparse_flow_count + b->bulk_flow_count)) { + if (b->tin_deficit <= 0) +- b->tin_deficit += b->tin_quantum_band; ++ b->tin_deficit += b->tin_quantum; + if (b->sparse_flow_count + b->bulk_flow_count) + empty = false; + +@@ -2237,8 +2236,7 @@ static int cake_config_besteffort(struct + + cake_set_rate(b, rate, mtu, + us_to_ns(q->target), us_to_ns(q->interval)); +- b->tin_quantum_band = 65535; +- b->tin_quantum_prio = 65535; ++ b->tin_quantum = 65535; + + return 0; + } +@@ -2249,8 +2247,7 @@ static int cake_config_precedence(struct + struct cake_sched_data *q = qdisc_priv(sch); + u32 mtu = psched_mtu(qdisc_dev(sch)); + u64 rate = q->rate_bps; +- u32 quantum1 = 256; +- u32 quantum2 = 256; ++ u32 quantum = 256; + u32 i; + + q->tin_cnt = 8; +@@ -2263,18 +2260,14 @@ static int cake_config_precedence(struct + cake_set_rate(b, rate, mtu, us_to_ns(q->target), + us_to_ns(q->interval)); + +- b->tin_quantum_prio = max_t(u16, 1U, quantum1); +- b->tin_quantum_band = max_t(u16, 1U, quantum2); ++ b->tin_quantum = max_t(u16, 1U, quantum); + + /* calculate next class's parameters */ + rate *= 7; + rate >>= 3; + +- quantum1 *= 3; +- quantum1 >>= 1; +- +- quantum2 *= 7; +- quantum2 >>= 3; ++ quantum *= 7; ++ quantum >>= 3; + } + + return 0; +@@ -2343,8 +2336,7 @@ static int cake_config_diffserv8(struct + struct cake_sched_data *q = qdisc_priv(sch); + u32 mtu = psched_mtu(qdisc_dev(sch)); + u64 rate = q->rate_bps; +- u32 quantum1 = 256; +- u32 quantum2 = 256; ++ u32 quantum = 256; + u32 i; + + q->tin_cnt = 8; +@@ -2360,18 +2352,14 @@ static int cake_config_diffserv8(struct + cake_set_rate(b, rate, mtu, us_to_ns(q->target), + us_to_ns(q->interval)); + +- b->tin_quantum_prio = max_t(u16, 1U, quantum1); +- b->tin_quantum_band = max_t(u16, 1U, quantum2); ++ b->tin_quantum = max_t(u16, 1U, quantum); + + /* calculate next class's parameters */ + rate *= 7; + rate >>= 3; + +- quantum1 *= 3; +- quantum1 >>= 1; +- +- quantum2 *= 7; +- quantum2 >>= 3; ++ quantum *= 7; ++ quantum >>= 3; + } + + return 0; +@@ -2410,17 +2398,11 @@ static int cake_config_diffserv4(struct + cake_set_rate(&q->tins[3], rate >> 2, mtu, + us_to_ns(q->target), us_to_ns(q->interval)); + +- /* priority weights */ +- q->tins[0].tin_quantum_prio = quantum; +- q->tins[1].tin_quantum_prio = quantum >> 4; +- q->tins[2].tin_quantum_prio = quantum << 2; +- q->tins[3].tin_quantum_prio = quantum << 4; +- + /* bandwidth-sharing weights */ +- q->tins[0].tin_quantum_band = quantum; +- q->tins[1].tin_quantum_band = quantum >> 4; +- q->tins[2].tin_quantum_band = quantum >> 1; +- q->tins[3].tin_quantum_band = quantum >> 2; ++ q->tins[0].tin_quantum = quantum; ++ q->tins[1].tin_quantum = quantum >> 4; ++ q->tins[2].tin_quantum = quantum >> 1; ++ q->tins[3].tin_quantum = quantum >> 2; + + return 0; + } +@@ -2451,15 +2433,10 @@ static int cake_config_diffserv3(struct + cake_set_rate(&q->tins[2], rate >> 2, mtu, + us_to_ns(q->target), us_to_ns(q->interval)); + +- /* priority weights */ +- q->tins[0].tin_quantum_prio = quantum; +- q->tins[1].tin_quantum_prio = quantum >> 4; +- q->tins[2].tin_quantum_prio = quantum << 4; +- + /* bandwidth-sharing weights */ +- q->tins[0].tin_quantum_band = quantum; +- q->tins[1].tin_quantum_band = quantum >> 4; +- q->tins[2].tin_quantum_band = quantum >> 2; ++ q->tins[0].tin_quantum = quantum; ++ q->tins[1].tin_quantum = quantum >> 4; ++ q->tins[2].tin_quantum = quantum >> 2; + + return 0; + } diff --git a/target/linux/generic/backport-4.19/396-v5.4-sch_cake-Add-missing-NLA-policy-entry-TCA_CAKE_SPLIT.patch b/target/linux/generic/backport-4.19/396-v5.4-sch_cake-Add-missing-NLA-policy-entry-TCA_CAKE_SPLIT.patch new file mode 100644 index 0000000000..32f0e1ae89 --- /dev/null +++ b/target/linux/generic/backport-4.19/396-v5.4-sch_cake-Add-missing-NLA-policy-entry-TCA_CAKE_SPLIT.patch @@ -0,0 +1,30 @@ +From b3c424eb6a1a3c485de64619418a471dee6ce849 Mon Sep 17 00:00:00 2001 +From: Victorien Molle +Date: Mon, 2 Dec 2019 15:11:38 +0100 +Subject: [PATCH] sch_cake: Add missing NLA policy entry TCA_CAKE_SPLIT_GSO +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This field has never been checked since introduction in mainline kernel + +Signed-off-by: Victorien Molle +Signed-off-by: Florent Fourcot +Fixes: 2db6dc2662ba "sch_cake: Make gso-splitting configurable from userspace" +Acked-by: Toke Høiland-Jørgensen +Signed-off-by: David S. Miller +Signed-off-by: Kevin Darbyshire-Bryant +--- + net/sched/sch_cake.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/net/sched/sch_cake.c ++++ b/net/sched/sch_cake.c +@@ -2180,6 +2180,7 @@ static const struct nla_policy cake_poli + [TCA_CAKE_MPU] = { .type = NLA_U32 }, + [TCA_CAKE_INGRESS] = { .type = NLA_U32 }, + [TCA_CAKE_ACK_FILTER] = { .type = NLA_U32 }, ++ [TCA_CAKE_SPLIT_GSO] = { .type = NLA_U32 }, + [TCA_CAKE_FWMARK] = { .type = NLA_U32 }, + }; + From 66d957691184ab884f104c3d1efe7ae94a10c49f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= Date: Wed, 6 May 2020 21:58:30 +0200 Subject: [PATCH 5/7] kernel: Add kmod-sch-cake-virtual intermediate package MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As reported in https://github.com/openwrt/packages/issues/12072, the imagebuilder fails due to a dependency resolution error when the userspace packages are built using a target that has a different kernel version than that which is being run. To resolve this, add a virtual kernel package with the conditional dependency currently used in sqm-scripts. The idea is to move the sqm-scripts dependency to this virtual package, which hopefully should be consistent with the actual kernel module being built. Signed-off-by: Toke Høiland-Jørgensen --- package/kernel/kmod-sched-cake-oot/Makefile | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/package/kernel/kmod-sched-cake-oot/Makefile b/package/kernel/kmod-sched-cake-oot/Makefile index 963681c1fb..65042ce1f2 100644 --- a/package/kernel/kmod-sched-cake-oot/Makefile +++ b/package/kernel/kmod-sched-cake-oot/Makefile @@ -29,14 +29,26 @@ define KernelPackage/sched-cake-oot DEPENDS:=@LINUX_4_14 +kmod-sched-core +kmod-ipt-conntrack endef -include $(INCLUDE_DIR)/kernel-defaults.mk - -define KernelPackage/sched-cake/description +define KernelPackage/sched-cake-oot/description O(ut) O(f) T(ree) Common Applications Kept Enhanced fq_codel/blue derived shaper endef +define KernelPackage/sched-cake-virtual + SUBMENU:=Network Support + TITLE:=Virtual package for sched-cake + URL:=https://github.com/dtaht/sch_cake + DEPENDS:=+!LINUX_4_14:kmod-sched-cake +LINUX_4_14:kmod-sched-cake-oot +endef + +define KernelPackage/sched-cake-virtual/description + Virtual package for resolving sch_cake dependencies +endef + +include $(INCLUDE_DIR)/kernel-defaults.mk + define Build/Compile $(KERNEL_MAKE) M="$(PKG_BUILD_DIR)" modules endef $(eval $(call KernelPackage,sched-cake-oot)) +$(eval $(call KernelPackage,sched-cake-virtual)) From 056fd846561ec224b44ae1238a872806cd791729 Mon Sep 17 00:00:00 2001 From: Stijn Tintel Date: Sun, 7 Jun 2020 09:18:39 +0300 Subject: [PATCH 6/7] Revert "bcm27xx-gpu-fw: update to latest version" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 9e467a764b4e30a04dd0431ea277f6acd26babe0. The Raspberry Pi firmware recently switched to building from the common firmware branch. This introduces changes in the core clock handling, causing various issues. E.g. enable_uart=1 no longer fixes the core clock frequency to 250MHz. When the disable-bt DT overlay is not loaded, the core clock frequency is increased to 400MHz. As a result, the UART baud rate is no longer correct, and this causes garbled serial console, or communication problems with HATs that use the UART. As a workaround, the core clock could be fixed to 250MHz by adding 'core_freq=250' in /boot/config.txt, but as there appear to be other issues than just the UART being broken, the safer bet is to revert the firmware for now. Upstream bug: https://github.com/raspberrypi/firmware/issues/1376 Signed-off-by: Stijn Tintel Acked-by: Álvaro Fernández Rojas --- package/kernel/bcm27xx-gpu-fw/Makefile | 30 +++++++++++++------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/package/kernel/bcm27xx-gpu-fw/Makefile b/package/kernel/bcm27xx-gpu-fw/Makefile index 80c4c6c6ef..764d17adbb 100644 --- a/package/kernel/bcm27xx-gpu-fw/Makefile +++ b/package/kernel/bcm27xx-gpu-fw/Makefile @@ -2,8 +2,8 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=bcm27xx-gpu-fw -PKG_VERSION:=2020-05-27 -PKG_RELEASE:=62fc8c01165a80021054a430182b504f7b877c2d +PKG_VERSION:=2020-03-26 +PKG_RELEASE:=5574077183389cd4c65077ba18b59144ed6ccd6d PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)/rpi-firmware-$(PKG_RELEASE) @@ -26,7 +26,7 @@ define Download/bootcode_bin FILE:=$(RPI_FIRMWARE_FILE)-bootcode.bin URL:=$(RPI_FIRMWARE_URL) URL_FILE:=bootcode.bin - HASH:=12c6b5fdd893ff60cddbad0fa8aea0ebd5328ed2a9cd39a2a09d7ac99621d5bf + HASH:=1e3582640b97f6a1ba77b66181fe698767d205f5d4c4315f56d03b398a7e55d1 endef $(eval $(call Download,bootcode_bin)) @@ -34,7 +34,7 @@ define Download/fixup_dat FILE:=$(RPI_FIRMWARE_FILE)-fixup.dat URL:=$(RPI_FIRMWARE_URL) URL_FILE:=fixup.dat - HASH:=25d39e703af377ca6412c0ac68e6739d2ffb56634b9a7262140d26d8150fdf23 + HASH:=1b90af0c87d5f705b5b6d921b2b47d37f73af81c5c9fb1d683201e619a00d2df endef $(eval $(call Download,fixup_dat)) @@ -42,7 +42,7 @@ define Download/fixup_cd_dat FILE:=$(RPI_FIRMWARE_FILE)-fixup_cd.dat URL:=$(RPI_FIRMWARE_URL) URL_FILE:=fixup_cd.dat - HASH:=9639f81ad007561048bb3956e88da425a84cef37f307a16734cdcfcdcbd40b4c + HASH:=134c5f3db2de3e5fd285bd4073016f074cf4151cdd1bfe3443b9a14700d48a55 endef $(eval $(call Download,fixup_cd_dat)) @@ -50,7 +50,7 @@ define Download/fixup_x_dat FILE:=$(RPI_FIRMWARE_FILE)-fixup_x.dat URL:=$(RPI_FIRMWARE_URL) URL_FILE:=fixup_x.dat - HASH:=538c4d514b55c09670bbc7bdc092e44ff1f572c4f124a47c5b514f120dff6263 + HASH:=32fd8182a9a603f41acb7d542cbb15aa4e84c2768816ae48e36b68d0d4e1754c endef $(eval $(call Download,fixup_x_dat)) @@ -58,7 +58,7 @@ define Download/fixup4_dat FILE:=$(RPI_FIRMWARE_FILE)-fixup4.dat URL:=$(RPI_FIRMWARE_URL) URL_FILE:=fixup4.dat - HASH:=75312421da0e036f9d451facb848bd439247e4322ee2d36bbfe2f7acc9a6d681 + HASH:=605b28219ba13b73dbf57a45e995e7ea090421ad96a971c950afb34e0d3f7841 endef $(eval $(call Download,fixup4_dat)) @@ -66,7 +66,7 @@ define Download/fixup4cd_dat FILE:=$(RPI_FIRMWARE_FILE)-fixup4cd.dat URL:=$(RPI_FIRMWARE_URL) URL_FILE:=fixup4cd.dat - HASH:=9639f81ad007561048bb3956e88da425a84cef37f307a16734cdcfcdcbd40b4c + HASH:=a3a4c600472032cd6597e774f0b7be2cebbfa918ccfd7fa1cfecdf853c5f61a9 endef $(eval $(call Download,fixup4cd_dat)) @@ -74,7 +74,7 @@ define Download/fixup4x_dat FILE:=$(RPI_FIRMWARE_FILE)-fixup4x.dat URL:=$(RPI_FIRMWARE_URL) URL_FILE:=fixup4x.dat - HASH:=d3d1a044412a22a7c366d57e79433532e137e9b184ea9ea68b0eb7577e70e4f3 + HASH:=c196692b2cac949fdeb354364eb15da83d192d77ab698cf3fe43142401c5281c endef $(eval $(call Download,fixup4x_dat)) @@ -82,7 +82,7 @@ define Download/start_elf FILE:=$(RPI_FIRMWARE_FILE)-start.elf URL:=$(RPI_FIRMWARE_URL) URL_FILE:=start.elf - HASH:=5980340e652491926f263ac89b7bc2ab513246bd3eb27103bba4780d6e8568f8 + HASH:=2364737aade5c6459a0dfd7b5d5070ab6a6139803779d3f94b579744b40731a5 endef $(eval $(call Download,start_elf)) @@ -90,7 +90,7 @@ define Download/start_cd_elf FILE:=$(RPI_FIRMWARE_FILE)-start_cd.elf URL:=$(RPI_FIRMWARE_URL) URL_FILE:=start_cd.elf - HASH:=389a44e371802207ed56fe82a3beaf675eb51176112bde7d77546039d7085572 + HASH:=12b98b6c5336b4f1ee1a61753bd6471ce7ce8ee2644550dc79c8e41d3ee4e719 endef $(eval $(call Download,start_cd_elf)) @@ -98,7 +98,7 @@ define Download/start_x_elf FILE:=$(RPI_FIRMWARE_FILE)-start_x.elf URL:=$(RPI_FIRMWARE_URL) URL_FILE:=start_x.elf - HASH:=32016c544353b285394f0006d57a785239fee0262ed1b0ff80b8028c918f0ad9 + HASH:=d21ece84f1ac70148787578ec7549a01d5fa7453b46119ab230470f8e403c0f9 endef $(eval $(call Download,start_x_elf)) @@ -106,7 +106,7 @@ define Download/start4_elf FILE:=$(RPI_FIRMWARE_FILE)-start4.elf URL:=$(RPI_FIRMWARE_URL) URL_FILE:=start4.elf - HASH:=ec26d746ddf76527b1702fbf7e76c7b036545cc43da81361a2887c92e4965dcc + HASH:=98c4cba6bd4ee03a53b02816c645f783becd9f9899787f7b1bcb8a784eeca4c0 endef $(eval $(call Download,start4_elf)) @@ -114,7 +114,7 @@ define Download/start4cd_elf FILE:=$(RPI_FIRMWARE_FILE)-start4cd.elf URL:=$(RPI_FIRMWARE_URL) URL_FILE:=start4cd.elf - HASH:=ee507a448911a9d82edf632decb160d5712ab43d8d32b1225f1c406d4eb87820 + HASH:=b9ee5a895563b891a74ac4be3e9e11be553aa69d600a196556328db164735f8a endef $(eval $(call Download,start4cd_elf)) @@ -122,7 +122,7 @@ define Download/start4x_elf FILE:=$(RPI_FIRMWARE_FILE)-start4x.elf URL:=$(RPI_FIRMWARE_URL) URL_FILE:=start4x.elf - HASH:=9a32a06aadeb84649ee03a15f067fa9285791488ffe61b82f9788303a1355614 + HASH:=bd2741aca11ecface061fd93d6b412d4f2a777165d780f5a2924569c9417ed92 endef $(eval $(call Download,start4x_elf)) From c7af958a6a6b4e1ae48188e999b3e4668f05ea82 Mon Sep 17 00:00:00 2001 From: Stijn Tintel Date: Sun, 7 Jun 2020 09:56:46 +0300 Subject: [PATCH 7/7] bcm27xx-gpu-fw: bump to most recent good version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This updates to the last firmware version before the switch to building from the common firmware branch, which introduces various issues. Signed-off-by: Stijn Tintel Acked-by: Álvaro Fernández Rojas --- package/kernel/bcm27xx-gpu-fw/Makefile | 28 +++++++++++++------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/package/kernel/bcm27xx-gpu-fw/Makefile b/package/kernel/bcm27xx-gpu-fw/Makefile index 764d17adbb..622d8bb7d2 100644 --- a/package/kernel/bcm27xx-gpu-fw/Makefile +++ b/package/kernel/bcm27xx-gpu-fw/Makefile @@ -2,8 +2,8 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=bcm27xx-gpu-fw -PKG_VERSION:=2020-03-26 -PKG_RELEASE:=5574077183389cd4c65077ba18b59144ed6ccd6d +PKG_VERSION:=2020-04-15 +PKG_RELEASE:=9e3c23ce779e8cf44c33d6a25bba249319207f68 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)/rpi-firmware-$(PKG_RELEASE) @@ -34,7 +34,7 @@ define Download/fixup_dat FILE:=$(RPI_FIRMWARE_FILE)-fixup.dat URL:=$(RPI_FIRMWARE_URL) URL_FILE:=fixup.dat - HASH:=1b90af0c87d5f705b5b6d921b2b47d37f73af81c5c9fb1d683201e619a00d2df + HASH:=ff5aa78aa6fb6202cb6b490d07dda7a844145d4cf82dc005ef8baf8fa936996e endef $(eval $(call Download,fixup_dat)) @@ -42,7 +42,7 @@ define Download/fixup_cd_dat FILE:=$(RPI_FIRMWARE_FILE)-fixup_cd.dat URL:=$(RPI_FIRMWARE_URL) URL_FILE:=fixup_cd.dat - HASH:=134c5f3db2de3e5fd285bd4073016f074cf4151cdd1bfe3443b9a14700d48a55 + HASH:=e21c05b05bb140dbe99cdb45af3e2e60e61772737b006b4c0b5cf8f609eab8e7 endef $(eval $(call Download,fixup_cd_dat)) @@ -50,7 +50,7 @@ define Download/fixup_x_dat FILE:=$(RPI_FIRMWARE_FILE)-fixup_x.dat URL:=$(RPI_FIRMWARE_URL) URL_FILE:=fixup_x.dat - HASH:=32fd8182a9a603f41acb7d542cbb15aa4e84c2768816ae48e36b68d0d4e1754c + HASH:=a9a5269358fd3e1f8cc6d5ac31902d449ba8c06be8c8ae211c92f8a170a552c9 endef $(eval $(call Download,fixup_x_dat)) @@ -58,7 +58,7 @@ define Download/fixup4_dat FILE:=$(RPI_FIRMWARE_FILE)-fixup4.dat URL:=$(RPI_FIRMWARE_URL) URL_FILE:=fixup4.dat - HASH:=605b28219ba13b73dbf57a45e995e7ea090421ad96a971c950afb34e0d3f7841 + HASH:=78137591cc1b0654fc389e83ba59bf1d2a5ce1f8ba971058d9469e20e3c4e4ea endef $(eval $(call Download,fixup4_dat)) @@ -66,7 +66,7 @@ define Download/fixup4cd_dat FILE:=$(RPI_FIRMWARE_FILE)-fixup4cd.dat URL:=$(RPI_FIRMWARE_URL) URL_FILE:=fixup4cd.dat - HASH:=a3a4c600472032cd6597e774f0b7be2cebbfa918ccfd7fa1cfecdf853c5f61a9 + HASH:=bd29b478e6d9c31265e61cf8d663f8bcdf096b7e60423b487bb23f44ac11e6f6 endef $(eval $(call Download,fixup4cd_dat)) @@ -74,7 +74,7 @@ define Download/fixup4x_dat FILE:=$(RPI_FIRMWARE_FILE)-fixup4x.dat URL:=$(RPI_FIRMWARE_URL) URL_FILE:=fixup4x.dat - HASH:=c196692b2cac949fdeb354364eb15da83d192d77ab698cf3fe43142401c5281c + HASH:=608871001d2a849016af64d3d9197ed57f90d5f23a554cde3d739ac7b4f7b560 endef $(eval $(call Download,fixup4x_dat)) @@ -82,7 +82,7 @@ define Download/start_elf FILE:=$(RPI_FIRMWARE_FILE)-start.elf URL:=$(RPI_FIRMWARE_URL) URL_FILE:=start.elf - HASH:=2364737aade5c6459a0dfd7b5d5070ab6a6139803779d3f94b579744b40731a5 + HASH:=d15334b643b34ba1e9fe8ea72d0aff59fb9886b70eee17f05ecfe74c2bcab7de endef $(eval $(call Download,start_elf)) @@ -90,7 +90,7 @@ define Download/start_cd_elf FILE:=$(RPI_FIRMWARE_FILE)-start_cd.elf URL:=$(RPI_FIRMWARE_URL) URL_FILE:=start_cd.elf - HASH:=12b98b6c5336b4f1ee1a61753bd6471ce7ce8ee2644550dc79c8e41d3ee4e719 + HASH:=62054d5b4a1ba58533aa3cb63ec83e6635adfa9093283d462f3bea7eb3d17c80 endef $(eval $(call Download,start_cd_elf)) @@ -98,7 +98,7 @@ define Download/start_x_elf FILE:=$(RPI_FIRMWARE_FILE)-start_x.elf URL:=$(RPI_FIRMWARE_URL) URL_FILE:=start_x.elf - HASH:=d21ece84f1ac70148787578ec7549a01d5fa7453b46119ab230470f8e403c0f9 + HASH:=445f0cf6bdc82a9d8d4d92a4678b72436eba9c1e4155ca1c483aa15271dbc26f endef $(eval $(call Download,start_x_elf)) @@ -106,7 +106,7 @@ define Download/start4_elf FILE:=$(RPI_FIRMWARE_FILE)-start4.elf URL:=$(RPI_FIRMWARE_URL) URL_FILE:=start4.elf - HASH:=98c4cba6bd4ee03a53b02816c645f783becd9f9899787f7b1bcb8a784eeca4c0 + HASH:=e58a0a629a98998a225b6bf837c75256625d313130401c223f052f0a42b4f263 endef $(eval $(call Download,start4_elf)) @@ -114,7 +114,7 @@ define Download/start4cd_elf FILE:=$(RPI_FIRMWARE_FILE)-start4cd.elf URL:=$(RPI_FIRMWARE_URL) URL_FILE:=start4cd.elf - HASH:=b9ee5a895563b891a74ac4be3e9e11be553aa69d600a196556328db164735f8a + HASH:=e90d922916dc61d547eb03fae8f182e16edadf5cf10caad1027e95582bc01a0d endef $(eval $(call Download,start4cd_elf)) @@ -122,7 +122,7 @@ define Download/start4x_elf FILE:=$(RPI_FIRMWARE_FILE)-start4x.elf URL:=$(RPI_FIRMWARE_URL) URL_FILE:=start4x.elf - HASH:=bd2741aca11ecface061fd93d6b412d4f2a777165d780f5a2924569c9417ed92 + HASH:=dae73ce30d491dcf780f817131e215b6a34447fcf346acf11ee9080595304ae0 endef $(eval $(call Download,start4x_elf))