From 1f302afd7350f46ec0fcc4b12b0ad59ac92fe5b6 Mon Sep 17 00:00:00 2001 From: Ansuel Smith Date: Thu, 4 Nov 2021 23:25:50 +0100 Subject: [PATCH] generic: 5.15: rework hack patch Rework hack patch in dir for kernel 5.15. For the specific patch of packet mangeling introduce a new extra_priv_flags as we don't have enough space to add additional flags in priv_flags. Signed-off-by: Ansuel Smith --- .../ath25/files/drivers/net/phy/mvswitch.c | 8 ++++ .../generic/files/drivers/net/phy/ar8216.c | 8 ++++ .../files/drivers/net/phy/b53/b53_common.c | 2 +- .../hack-5.15/212-tools_portability.patch | 4 +- .../hack-5.15/220-arm-gc_sections.patch | 4 +- .../hack-5.15/259-regmap_dynamic.patch | 38 ++++++++++++------- .../321-powerpc_crtsavres_prereq.patch | 2 +- ...don-t-reply-on-mtdblock-device-minor.patch | 33 ++++++++-------- ...rans-call-add-disks-after-mtd-device.patch | 8 ++-- .../410-block-fit-partition-parser.patch | 22 +++++------ .../hack-5.15/600-bridge_offload.patch | 38 ++++++++++--------- .../hack-5.15/660-fq_codel_defaults.patch | 2 +- .../700-swconfig_switch_drivers.patch | 2 +- .../710-net-dsa-mv88e6xxx-default-VID-1.patch | 4 +- ...-dsa-mv88e6xxx-disable-ATU-violation.patch | 2 +- .../721-net-add-packet-mangeling.patch | 25 ++++++++---- .../hack-5.15/773-bgmac-add-srab-switch.patch | 2 +- .../hack-5.15/901-debloat_sock_diag.patch | 10 ++--- .../hack-5.15/904-debloat_dma_buf.patch | 8 ++-- 19 files changed, 131 insertions(+), 91 deletions(-) diff --git a/target/linux/ath25/files/drivers/net/phy/mvswitch.c b/target/linux/ath25/files/drivers/net/phy/mvswitch.c index bd3b9e1ad1267..e3550d55baf88 100644 --- a/target/linux/ath25/files/drivers/net/phy/mvswitch.c +++ b/target/linux/ath25/files/drivers/net/phy/mvswitch.c @@ -312,7 +312,11 @@ mvswitch_config_init(struct phy_device *pdev) priv->orig_features = dev->features; #ifdef HEADER_MODE +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0) + dev->extra_priv_flags |= IFF_NO_IP_ALIGN; +#else dev->priv_flags |= IFF_NO_IP_ALIGN; +#endif dev->features |= NETIF_F_HW_VLAN_CTAG_RX | NETIF_F_HW_VLAN_CTAG_TX; #else dev->features |= NETIF_F_HW_VLAN_CTAG_RX; @@ -372,7 +376,11 @@ mvswitch_detach(struct phy_device *pdev) dev->eth_mangle_rx = NULL; dev->eth_mangle_tx = NULL; dev->features = priv->orig_features; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0) + dev->extra_priv_flags &= ~IFF_NO_IP_ALIGN; +#else dev->priv_flags &= ~IFF_NO_IP_ALIGN; +#endif } static void diff --git a/target/linux/generic/files/drivers/net/phy/ar8216.c b/target/linux/generic/files/drivers/net/phy/ar8216.c index 11cb18e4f3c76..3e6494aebb3d7 100644 --- a/target/linux/generic/files/drivers/net/phy/ar8216.c +++ b/target/linux/generic/files/drivers/net/phy/ar8216.c @@ -2465,7 +2465,11 @@ ar8xxx_phy_config_init(struct phy_device *phydev) /* VID fixup only needed on ar8216 */ if (chip_is_ar8216(priv)) { dev->phy_ptr = priv; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0) + dev->extra_priv_flags |= IFF_NO_IP_ALIGN; +#else dev->priv_flags |= IFF_NO_IP_ALIGN; +#endif dev->eth_mangle_rx = ar8216_mangle_rx; dev->eth_mangle_tx = ar8216_mangle_tx; } @@ -2700,7 +2704,11 @@ ar8xxx_phy_detach(struct phy_device *phydev) #ifdef CONFIG_ETHERNET_PACKET_MANGLE dev->phy_ptr = NULL; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0) + dev->extra_priv_flags &= ~IFF_NO_IP_ALIGN; +#else dev->priv_flags &= ~IFF_NO_IP_ALIGN; +#endif dev->eth_mangle_rx = NULL; dev->eth_mangle_tx = NULL; #endif diff --git a/target/linux/generic/files/drivers/net/phy/b53/b53_common.c b/target/linux/generic/files/drivers/net/phy/b53/b53_common.c index 030c5c86d61ea..87d731ec3e2a8 100644 --- a/target/linux/generic/files/drivers/net/phy/b53/b53_common.c +++ b/target/linux/generic/files/drivers/net/phy/b53/b53_common.c @@ -529,7 +529,7 @@ static int b53_configure_ports_of(struct b53_device *dev) po |= PORT_OVERRIDE_SPEED_2000M; else po |= GMII_PO_SPEED_2000M; - /* fall through */ + fallthrough; case 1000: po |= GMII_PO_SPEED_1000M; break; diff --git a/target/linux/generic/hack-5.15/212-tools_portability.patch b/target/linux/generic/hack-5.15/212-tools_portability.patch index 0d8eb6fb9dc27..54ac04841786d 100644 --- a/target/linux/generic/hack-5.15/212-tools_portability.patch +++ b/target/linux/generic/hack-5.15/212-tools_portability.patch @@ -69,9 +69,9 @@ Signed-off-by: Felix Fietkau --- a/tools/include/linux/types.h +++ b/tools/include/linux/types.h @@ -7,8 +7,12 @@ - #include - #define __SANE_USERSPACE_TYPES__ /* For PPC64, to get LL64 types */ + #endif + +#ifndef __linux__ +#include +#else diff --git a/target/linux/generic/hack-5.15/220-arm-gc_sections.patch b/target/linux/generic/hack-5.15/220-arm-gc_sections.patch index 5b36c5ebaecd7..331368b9fb16a 100644 --- a/target/linux/generic/hack-5.15/220-arm-gc_sections.patch +++ b/target/linux/generic/hack-5.15/220-arm-gc_sections.patch @@ -12,7 +12,7 @@ Signed-off-by: Gabor Juhos --- --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig -@@ -114,6 +114,7 @@ config ARM +@@ -113,6 +113,7 @@ config ARM select HAVE_UID16 select HAVE_VIRT_CPU_ACCOUNTING_GEN select IRQ_FORCED_THREADING @@ -22,7 +22,7 @@ Signed-off-by: Gabor Juhos select OF_EARLY_FLATTREE if OF --- a/arch/arm/boot/compressed/Makefile +++ b/arch/arm/boot/compressed/Makefile -@@ -100,6 +100,7 @@ $(foreach o, $(libfdt_objs) atags_to_fdt +@@ -98,6 +98,7 @@ $(foreach o, $(libfdt_objs) atags_to_fdt ifdef building_out_of_srctree $(shell rm -f $(addprefix $(obj)/, fdt_rw.c fdt_ro.c fdt_wip.c fdt.c)) endif diff --git a/target/linux/generic/hack-5.15/259-regmap_dynamic.patch b/target/linux/generic/hack-5.15/259-regmap_dynamic.patch index bc81a7285c007..1d9e862620207 100644 --- a/target/linux/generic/hack-5.15/259-regmap_dynamic.patch +++ b/target/linux/generic/hack-5.15/259-regmap_dynamic.patch @@ -14,18 +14,19 @@ Signed-off-by: Felix Fietkau --- a/drivers/base/regmap/Kconfig +++ b/drivers/base/regmap/Kconfig -@@ -4,9 +4,8 @@ +@@ -4,10 +4,9 @@ # subsystems should select the appropriate symbols. config REGMAP -- default y if (REGMAP_I2C || REGMAP_SPI || REGMAP_SPMI || REGMAP_W1 || REGMAP_AC97 || REGMAP_MMIO || REGMAP_IRQ || REGMAP_SOUNDWIRE || REGMAP_SCCB || REGMAP_I3C || REGMAP_SPI_AVMM) +- default y if (REGMAP_I2C || REGMAP_SPI || REGMAP_SPMI || REGMAP_W1 || REGMAP_AC97 || REGMAP_MMIO || REGMAP_IRQ || REGMAP_SOUNDWIRE || REGMAP_SOUNDWIRE_MBQ || REGMAP_SCCB || REGMAP_I3C || REGMAP_SPI_AVMM || REGMAP_MDIO) select IRQ_DOMAIN if REGMAP_IRQ + select MDIO_BUS if REGMAP_MDIO - bool + tristate config REGCACHE_COMPRESSED select LZO_COMPRESS -@@ -14,46 +13,59 @@ config REGCACHE_COMPRESSED +@@ -15,53 +14,67 @@ config REGCACHE_COMPRESSED bool config REGMAP_AC97 @@ -33,58 +34,67 @@ Signed-off-by: Felix Fietkau tristate config REGMAP_I2C - tristate + select REGMAP + tristate depends on I2C config REGMAP_SLIMBUS - tristate + select REGMAP + tristate depends on SLIMBUS config REGMAP_SPI - tristate + select REGMAP -+ depends on SPI_MASTER + tristate depends on SPI config REGMAP_SPMI - tristate + select REGMAP + tristate depends on SPMI config REGMAP_W1 - tristate + select REGMAP + tristate depends on W1 - config REGMAP_MMIO + config REGMAP_MDIO ++ select REGMAP tristate + + config REGMAP_MMIO + select REGMAP + tristate config REGMAP_IRQ - bool + select REGMAP + bool config REGMAP_SOUNDWIRE ++ select REGMAP tristate + depends on SOUNDWIRE + + config REGMAP_SOUNDWIRE_MBQ + select REGMAP + tristate depends on SOUNDWIRE config REGMAP_SCCB - tristate + select REGMAP + tristate depends on I2C config REGMAP_I3C - tristate + select REGMAP + tristate depends on I3C config REGMAP_SPI_AVMM - tristate + select REGMAP + tristate depends on SPI + --- a/drivers/base/regmap/Makefile +++ b/drivers/base/regmap/Makefile @@ -2,10 +2,14 @@ diff --git a/target/linux/generic/hack-5.15/321-powerpc_crtsavres_prereq.patch b/target/linux/generic/hack-5.15/321-powerpc_crtsavres_prereq.patch index 4bb438295de23..215528a90c53f 100644 --- a/target/linux/generic/hack-5.15/321-powerpc_crtsavres_prereq.patch +++ b/target/linux/generic/hack-5.15/321-powerpc_crtsavres_prereq.patch @@ -24,7 +24,7 @@ Signed-off-by: Alexandros C. Couloumbis -ifdef CONFIG_PPC32 -KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o -else --ifeq ($(call ld-ifversion, -ge, 225000000, y),y) +-ifeq ($(call ld-ifversion, -ge, 22500, y),y) -# Have the linker provide sfpr if possible. -# There is a corresponding test in arch/powerpc/lib/Makefile -KBUILD_LDFLAGS_MODULE += --save-restore-funcs diff --git a/target/linux/generic/hack-5.15/401-mtd-super-don-t-reply-on-mtdblock-device-minor.patch b/target/linux/generic/hack-5.15/401-mtd-super-don-t-reply-on-mtdblock-device-minor.patch index 04cf52b09650b..8f985c0b8f16e 100644 --- a/target/linux/generic/hack-5.15/401-mtd-super-don-t-reply-on-mtdblock-device-minor.patch +++ b/target/linux/generic/hack-5.15/401-mtd-super-don-t-reply-on-mtdblock-device-minor.patch @@ -28,43 +28,42 @@ Signed-off-by: Daniel Golle #include #include #include -@@ -121,7 +122,8 @@ int get_tree_mtd(struct fs_context *fc, +@@ -120,8 +121,9 @@ int get_tree_mtd(struct fs_context *fc, + struct fs_context *fc)) { #ifdef CONFIG_BLOCK - struct block_device *bdev; -- int ret, major; +- dev_t dev; +- int ret; + struct mtd_blktrans_dev *blktrans_dev; -+ int ret, major, part_bits; ++ struct block_device *bdev; ++ int ret, part_bits; #endif int mtdnr; -@@ -169,21 +171,38 @@ int get_tree_mtd(struct fs_context *fc, +@@ -169,16 +171,36 @@ int get_tree_mtd(struct fs_context *fc, /* try the old way - the hack where we allowed users to mount * /dev/mtdblock$(n) but didn't actually _use_ the blockdev */ -- bdev = lookup_bdev(fc->source); +- ret = lookup_bdev(fc->source, &dev); +- if (ret) { + bdev = blkdev_get_by_path(fc->source, FMODE_READ, NULL); - if (IS_ERR(bdev)) { - ret = PTR_ERR(bdev); ++ if (IS_ERR(bdev)) { ++ ret = PTR_ERR(bdev); errorf(fc, "MTD: Couldn't look up '%s': %d", fc->source, ret); return ret; } - pr_debug("MTDSB: lookup_bdev() returned 0\n"); + pr_debug("MTDSB: blkdev_get_by_path() returned 0\n"); - major = MAJOR(bdev->bd_dev); -- mtdnr = MINOR(bdev->bd_dev); -- bdput(bdev); - -- if (major == MTD_BLOCK_MAJOR) -- return mtd_get_sb_by_nr(fc, mtdnr, fill_super); -+ if (major == MTD_BLOCK_MAJOR) { +- if (MAJOR(dev) == MTD_BLOCK_MAJOR) +- return mtd_get_sb_by_nr(fc, MINOR(dev), fill_super); ++ if (MAJOR(bdev->bd_dev) == MTD_BLOCK_MAJOR) { + if (!bdev->bd_disk) { + blkdev_put(bdev, FMODE_READ); + BUG(); + return -EINVAL; + } -+ + + blktrans_dev = (struct mtd_blktrans_dev *)(bdev->bd_disk->private_data); + if (!blktrans_dev || !blktrans_dev->tr) { + blkdev_put(bdev, FMODE_READ); @@ -76,7 +75,7 @@ Signed-off-by: Daniel Golle + blkdev_put(bdev, FMODE_READ); + if (MINOR(bdev->bd_dev) != (mtdnr << part_bits)) + return -EINVAL; - ++ + return mtd_get_sb_by_nr(fc, mtdnr, fill_super); + } + blkdev_put(bdev, FMODE_READ); diff --git a/target/linux/generic/hack-5.15/402-mtd-blktrans-call-add-disks-after-mtd-device.patch b/target/linux/generic/hack-5.15/402-mtd-blktrans-call-add-disks-after-mtd-device.patch index 988d900b31104..a715d17f3b8e9 100644 --- a/target/linux/generic/hack-5.15/402-mtd-blktrans-call-add-disks-after-mtd-device.patch +++ b/target/linux/generic/hack-5.15/402-mtd-blktrans-call-add-disks-after-mtd-device.patch @@ -51,7 +51,7 @@ Signed-off-by: Daniel Golle + + list_for_each_entry(tr, &blktrans_majors, list) { + list_for_each_entry_safe(dev, next, &tr->devs, list) { -+ if (dev->disk->flags & GENHD_FL_UP) ++ if (disk_live(dev->disk)) + continue; + + device_add_disk(&dev->mtd->dev, dev->disk, NULL); @@ -88,11 +88,11 @@ Signed-off-by: Daniel Golle del_mtd_device(mtd); --- a/include/linux/mtd/blktrans.h +++ b/include/linux/mtd/blktrans.h -@@ -76,6 +76,6 @@ extern int deregister_mtd_blktrans(struc +@@ -76,6 +76,7 @@ extern int deregister_mtd_blktrans(struc extern int add_mtd_blktrans_dev(struct mtd_blktrans_dev *dev); extern int del_mtd_blktrans_dev(struct mtd_blktrans_dev *dev); extern int mtd_blktrans_cease_background(struct mtd_blktrans_dev *dev); -- +extern void register_mtd_blktrans_devs(void); - #endif /* __MTD_TRANS_H__ */ + /** + * module_mtd_blktrans() - Helper macro for registering a mtd blktrans driver diff --git a/target/linux/generic/hack-5.15/410-block-fit-partition-parser.patch b/target/linux/generic/hack-5.15/410-block-fit-partition-parser.patch index 781635622782e..b8cada98e64e2 100644 --- a/target/linux/generic/hack-5.15/410-block-fit-partition-parser.patch +++ b/target/linux/generic/hack-5.15/410-block-fit-partition-parser.patch @@ -6,9 +6,9 @@ #define ADDPART_FLAG_WHOLEDISK 2 +#define ADDPART_FLAG_READONLY 4 +#define ADDPART_FLAG_ROOTDEV 8 - void delete_partition(struct hd_struct *part); - int bdev_add_partition(struct block_device *bdev, int partno, - sector_t start, sector_t length); + int bdev_add_partition(struct gendisk *disk, int partno, sector_t start, + sector_t length); + int bdev_del_partition(struct gendisk *disk, int partno); --- a/block/partitions/Kconfig +++ b/block/partitions/Kconfig @@ -101,6 +101,13 @@ config ATARI_PARTITION @@ -92,17 +92,17 @@ --- a/drivers/mtd/ubi/block.c +++ b/drivers/mtd/ubi/block.c @@ -396,7 +396,11 @@ int ubiblock_create(struct ubi_volume_in - dev->leb_size = vi->usable_leb_size; - /* Initialize the gendisk of this ubiblock device */ + gd->fops = &ubiblock_ops; + gd->major = ubiblock_major; +#ifdef CONFIG_FIT_PARTITION -+ gd = alloc_disk(0); ++ gd->minors = 0; +#else - gd = alloc_disk(1); + gd->minors = 1; +#endif - if (!gd) { - pr_err("UBI: block: alloc_disk failed\n"); - ret = -ENODEV; + gd->first_minor = idr_alloc(&ubiblock_minor_idr, dev, 0, 0, GFP_KERNEL); + if (gd->first_minor < 0) { + dev_err(disk_to_dev(gd), @@ -413,6 +417,9 @@ int ubiblock_create(struct ubi_volume_in goto out_put_disk; } @@ -118,7 +118,7 @@ @@ -706,6 +706,9 @@ int efi_partition(struct parsed_partitio gpt_entry *ptes = NULL; u32 i; - unsigned ssz = bdev_logical_block_size(state->bdev) / 512; + unsigned ssz = queue_logical_block_size(state->disk->queue) / 512; +#ifdef CONFIG_FIT_PARTITION + u32 extra_slot = 64; +#endif diff --git a/target/linux/generic/hack-5.15/600-bridge_offload.patch b/target/linux/generic/hack-5.15/600-bridge_offload.patch index 586353816c2ed..9206722d73f71 100644 --- a/target/linux/generic/hack-5.15/600-bridge_offload.patch +++ b/target/linux/generic/hack-5.15/600-bridge_offload.patch @@ -1,10 +1,10 @@ --- a/include/linux/if_bridge.h +++ b/include/linux/if_bridge.h @@ -57,6 +57,7 @@ struct br_ip_list { - #define BR_MRP_LOST_CONT BIT(18) #define BR_MRP_LOST_IN_CONT BIT(19) - #define BR_BPDU_FILTER BIT(20) -+#define BR_OFFLOAD BIT(21) + #define BR_TX_FWD_OFFLOAD BIT(20) + #define BR_BPDU_FILTER BIT(21) ++#define BR_OFFLOAD BIT(22) #define BR_DEFAULT_AGEING_TIME (300 * HZ) @@ -169,12 +169,12 @@ + if (br_offload_input(p, skb)) + return RX_HANDLER_CONSUMED; + - if (p->flags & BR_VLAN_TUNNEL) { - if (br_handle_ingress_vlan_tunnel(skb, p, - nbp_vlan_group_rcu(p))) + if (p->flags & BR_VLAN_TUNNEL) + br_handle_ingress_vlan_tunnel(skb, p, nbp_vlan_group_rcu(p)) + --- /dev/null +++ b/net/bridge/br_offload.c -@@ -0,0 +1,436 @@ +@@ -0,0 +1,438 @@ +// SPDX-License-Identifier: GPL-2.0-only +#include +#include @@ -580,7 +580,8 @@ +} + + -+int br_offload_set_cache_size(struct net_bridge *br, unsigned long val) ++int br_offload_set_cache_size(struct net_bridge *br, unsigned long val, ++ struct netlink_ext_ack *extack) +{ + br->offload_cache_size = val; + br_offload_check_gc(br); @@ -588,7 +589,8 @@ + return 0; +} + -+int br_offload_set_cache_reserved(struct net_bridge *br, unsigned long val) ++int br_offload_set_cache_reserved(struct net_bridge *br, unsigned long val, ++ struct netlink_ext_ack *extack) +{ + br->offload_cache_reserved = val; + br_offload_check_gc(br); @@ -657,8 +659,8 @@ + u32 offload_cache_reserved; + #ifdef CONFIG_NET_SWITCHDEV - int offload_fwd_mark; - #endif + /* Counter used to make sure that hardware domains get unique + * identifiers in case a bridge spans multiple switchdev instances. @@ -501,6 +517,10 @@ struct br_input_skb_cb { #ifdef CONFIG_NETFILTER_FAMILY_BRIDGE u8 br_netfilter_broute:1; @@ -669,10 +671,10 @@ + int input_ifindex; #ifdef CONFIG_NET_SWITCHDEV - int offload_fwd_mark; + /* Set if TX data plane offloading is used towards at least one --- /dev/null +++ b/net/bridge/br_private_offload.h -@@ -0,0 +1,21 @@ +@@ -0,0 +1,23 @@ +#ifndef __BR_OFFLOAD_H +#define __BR_OFFLOAD_H + @@ -682,8 +684,10 @@ +void br_offload_fdb_update(const struct net_bridge_fdb_entry *fdb); +int br_offload_init(void); +void br_offload_fini(void); -+int br_offload_set_cache_size(struct net_bridge *br, unsigned long val); -+int br_offload_set_cache_reserved(struct net_bridge *br, unsigned long val); ++int br_offload_set_cache_size(struct net_bridge *br, unsigned long val, ++ struct netlink_ext_ack *extack); ++int br_offload_set_cache_reserved(struct net_bridge *br, unsigned long val, ++ struct netlink_ext_ack *extack); + +static inline void br_offload_skb_disable(struct sk_buff *skb) +{ @@ -804,9 +808,9 @@ __vlan_hwaccel_put_tag(skb, p->br->vlan_proto, vlan->vid); + br_offload_skb_disable(skb); - - return 0; } + + int br_handle_egress_vlan_tunnel(struct sk_buff *skb, @@ -203,6 +205,7 @@ int br_handle_egress_vlan_tunnel(struct if (err) return err; diff --git a/target/linux/generic/hack-5.15/660-fq_codel_defaults.patch b/target/linux/generic/hack-5.15/660-fq_codel_defaults.patch index 5541c0bc89ee1..6794349e26188 100644 --- a/target/linux/generic/hack-5.15/660-fq_codel_defaults.patch +++ b/target/linux/generic/hack-5.15/660-fq_codel_defaults.patch @@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau --- a/net/sched/sch_fq_codel.c +++ b/net/sched/sch_fq_codel.c -@@ -469,7 +469,11 @@ static int fq_codel_init(struct Qdisc *s +@@ -461,7 +461,11 @@ static int fq_codel_init(struct Qdisc *s sch->limit = 10*1024; q->flows_cnt = 1024; diff --git a/target/linux/generic/hack-5.15/700-swconfig_switch_drivers.patch b/target/linux/generic/hack-5.15/700-swconfig_switch_drivers.patch index b90e1fc441b3c..560937a7c16ec 100644 --- a/target/linux/generic/hack-5.15/700-swconfig_switch_drivers.patch +++ b/target/linux/generic/hack-5.15/700-swconfig_switch_drivers.patch @@ -38,7 +38,6 @@ Signed-off-by: Felix Fietkau +config AR8216_PHY + tristate "Driver for Atheros AR8216 switches" + select SWCONFIG -+ select ETHERNET_PACKET_MANGLE + +config AR8216_PHY_LEDS + bool "Atheros AR8216 switch LED support" @@ -53,6 +52,7 @@ Signed-off-by: Felix Fietkau +config PSB6970_PHY + tristate "Lantiq XWAY Tantos (PSB6970) Ethernet switch" + select SWCONFIG ++ select ETHERNET_PACKET_MANGLE + +config RTL8306_PHY + tristate "Driver for Realtek RTL8306S switches" diff --git a/target/linux/generic/hack-5.15/710-net-dsa-mv88e6xxx-default-VID-1.patch b/target/linux/generic/hack-5.15/710-net-dsa-mv88e6xxx-default-VID-1.patch index 03725653f9505..f301cc1e2d511 100644 --- a/target/linux/generic/hack-5.15/710-net-dsa-mv88e6xxx-default-VID-1.patch +++ b/target/linux/generic/hack-5.15/710-net-dsa-mv88e6xxx-default-VID-1.patch @@ -1,6 +1,6 @@ --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c -@@ -2097,6 +2097,7 @@ static int mv88e6xxx_port_fdb_add(struct +@@ -2088,6 +2088,7 @@ static int mv88e6xxx_port_fdb_add(struct struct mv88e6xxx_chip *chip = ds->priv; int err; @@ -8,7 +8,7 @@ mv88e6xxx_reg_lock(chip); err = mv88e6xxx_port_db_load_purge(chip, port, addr, vid, MV88E6XXX_G1_ATU_DATA_STATE_UC_STATIC); -@@ -2111,6 +2112,7 @@ static int mv88e6xxx_port_fdb_del(struct +@@ -2102,6 +2103,7 @@ static int mv88e6xxx_port_fdb_del(struct struct mv88e6xxx_chip *chip = ds->priv; int err; diff --git a/target/linux/generic/hack-5.15/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch b/target/linux/generic/hack-5.15/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch index 68cac73935ca6..46a1ba1d965ea 100644 --- a/target/linux/generic/hack-5.15/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch +++ b/target/linux/generic/hack-5.15/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch @@ -1,6 +1,6 @@ --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c -@@ -2659,6 +2659,9 @@ static int mv88e6xxx_setup_port(struct m +@@ -2650,6 +2650,9 @@ static int mv88e6xxx_setup_port(struct m if (dsa_is_cpu_port(ds, port)) reg = 0; diff --git a/target/linux/generic/hack-5.15/721-net-add-packet-mangeling.patch b/target/linux/generic/hack-5.15/721-net-add-packet-mangeling.patch index 67808c35f83d3..e36d829ac58d3 100644 --- a/target/linux/generic/hack-5.15/721-net-add-packet-mangeling.patch +++ b/target/linux/generic/hack-5.15/721-net-add-packet-mangeling.patch @@ -19,22 +19,33 @@ Signed-off-by: Felix Fietkau --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -1618,6 +1618,7 @@ enum netdev_priv_flags { - IFF_FAILOVER_SLAVE = 1<<28, - IFF_L3MDEV_RX_HANDLER = 1<<29, +@@ -1618,6 +1618,10 @@ enum netdev_priv_flags { IFF_LIVE_RENAME_OK = 1<<30, -+ IFF_NO_IP_ALIGN = 1<<31, + IFF_TX_SKB_NO_LINEAR = 1<<31, }; ++ ++enum netdev_extra_priv_flags { ++ IFF_NO_IP_ALIGN = 1<<0, ++}; #define IFF_802_1Q_VLAN IFF_802_1Q_VLAN + #define IFF_EBRIDGE IFF_EBRIDGE @@ -1650,6 +1651,7 @@ enum netdev_priv_flags { - #define IFF_FAILOVER_SLAVE IFF_FAILOVER_SLAVE #define IFF_L3MDEV_RX_HANDLER IFF_L3MDEV_RX_HANDLER #define IFF_LIVE_RENAME_OK IFF_LIVE_RENAME_OK + #define IFF_TX_SKB_NO_LINEAR IFF_TX_SKB_NO_LINEAR +#define IFF_NO_IP_ALIGN IFF_NO_IP_ALIGN /* Specifies the type of the struct net_device::ml_priv pointer */ enum netdev_ml_priv_type { +@@ -1987,6 +1987,7 @@ enum netdev_priv_flags { + /* Read-mostly cache-line for fast-path access */ + unsigned int flags; + unsigned int priv_flags; ++ unsigned int extra_priv_flags; + const struct net_device_ops *netdev_ops; + int ifindex; + unsigned short gflags; @@ -1990,6 +1992,11 @@ struct net_device { const struct tlsdev_ops *tlsdev_ops; #endif @@ -120,9 +131,9 @@ Signed-off-by: Felix Fietkau --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -60,6 +60,7 @@ - #include #include #include + #include +#include #include @@ -137,7 +148,7 @@ Signed-off-by: Felix Fietkau + struct sk_buff *skb = __netdev_alloc_skb(dev, length + NET_IP_ALIGN, gfp); + +#ifdef CONFIG_ETHERNET_PACKET_MANGLE -+ if (dev && (dev->priv_flags & IFF_NO_IP_ALIGN)) ++ if (dev && (dev->extra_priv_flags & IFF_NO_IP_ALIGN)) + return skb; +#endif + diff --git a/target/linux/generic/hack-5.15/773-bgmac-add-srab-switch.patch b/target/linux/generic/hack-5.15/773-bgmac-add-srab-switch.patch index bc377bdd82821..5a7e38516cce6 100644 --- a/target/linux/generic/hack-5.15/773-bgmac-add-srab-switch.patch +++ b/target/linux/generic/hack-5.15/773-bgmac-add-srab-switch.patch @@ -14,7 +14,7 @@ Signed-off-by: Hauke Mehrtens --- a/drivers/net/ethernet/broadcom/bgmac-bcma.c +++ b/drivers/net/ethernet/broadcom/bgmac-bcma.c -@@ -280,6 +280,7 @@ static int bgmac_probe(struct bcma_devic +@@ -266,6 +266,7 @@ static int bgmac_probe(struct bcma_devic bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST; bgmac->feature_flags |= BGMAC_FEAT_NO_RESET; bgmac->feature_flags |= BGMAC_FEAT_FORCE_SPEED_2500; diff --git a/target/linux/generic/hack-5.15/901-debloat_sock_diag.patch b/target/linux/generic/hack-5.15/901-debloat_sock_diag.patch index 247b50d536ee7..b0e1661019922 100644 --- a/target/linux/generic/hack-5.15/901-debloat_sock_diag.patch +++ b/target/linux/generic/hack-5.15/901-debloat_sock_diag.patch @@ -16,7 +16,7 @@ Signed-off-by: Felix Fietkau --- a/net/Kconfig +++ b/net/Kconfig -@@ -104,6 +104,9 @@ source "net/mptcp/Kconfig" +@@ -98,6 +98,9 @@ source "net/mptcp/Kconfig" endif # if INET @@ -74,10 +74,10 @@ Signed-off-by: Felix Fietkau + } +} + - struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie) - { - struct dst_entry *dst = __sk_dst_get(sk); -@@ -1834,9 +1848,11 @@ static void __sk_free(struct sock *sk) + INDIRECT_CALLABLE_DECLARE(struct dst_entry *ip6_dst_check(struct dst_entry *, + u32)); + INDIRECT_CALLABLE_DECLARE(struct dst_entry *ipv4_dst_check(struct dst_entry *, +@@ -1816,9 +1830,11 @@ static void __sk_free(struct sock *sk) if (likely(sk->sk_net_refcnt)) sock_inuse_add(sock_net(sk), -1); diff --git a/target/linux/generic/hack-5.15/904-debloat_dma_buf.patch b/target/linux/generic/hack-5.15/904-debloat_dma_buf.patch index 54e78cedc8f5b..b2fdc0991e82a 100644 --- a/target/linux/generic/hack-5.15/904-debloat_dma_buf.patch +++ b/target/linux/generic/hack-5.15/904-debloat_dma_buf.patch @@ -24,17 +24,15 @@ Signed-off-by: Felix Fietkau help --- a/drivers/dma-buf/heaps/Makefile +++ b/drivers/dma-buf/heaps/Makefile -@@ -1,4 +1,4 @@ +@@ -1,3 +1,3 @@ # SPDX-License-Identifier: GPL-2.0 --obj-y += heap-helpers.o -obj-$(CONFIG_DMABUF_HEAPS_SYSTEM) += system_heap.o -obj-$(CONFIG_DMABUF_HEAPS_CMA) += cma_heap.o -+dma-buf-objs-y += heap-helpers.o +dma-buf-objs-$(CONFIG_DMABUF_HEAPS_SYSTEM) += system_heap.o +dma-buf-objs-$(CONFIG_DMABUF_HEAPS_CMA) += cma_heap.o --- a/drivers/dma-buf/Makefile +++ b/drivers/dma-buf/Makefile -@@ -1,15 +1,19 @@ +@@ -1,16 +1,20 @@ # SPDX-License-Identifier: GPL-2.0-only -obj-y := dma-buf.o dma-fence.o dma-fence-array.o dma-fence-chain.o \ +obj-$(CONFIG_DMA_SHARED_BUFFER) := dma-shared-buffer.o @@ -46,11 +44,13 @@ Signed-off-by: Felix Fietkau -obj-$(CONFIG_SYNC_FILE) += sync_file.o -obj-$(CONFIG_SW_SYNC) += sw_sync.o sync_debug.o -obj-$(CONFIG_UDMABUF) += udmabuf.o +-obj-$(CONFIG_DMABUF_SYSFS_STATS) += dma-buf-sysfs-stats.o +dma-buf-objs-$(CONFIG_DMABUF_HEAPS) += dma-heap.o +obj-$(CONFIG_DMABUF_HEAPS) += heaps/ +dma-buf-objs-$(CONFIG_SYNC_FILE) += sync_file.o +dma-buf-objs-$(CONFIG_SW_SYNC) += sw_sync.o sync_debug.o +dma-buf-objs-$(CONFIG_UDMABUF) += udmabuf.o ++dma-buf-objs-$(CONFIG_DMABUF_SYSFS_STATS) += udmabuf.o dmabuf_selftests-y := \ selftest.o \