kernel: bump 6.6 to 6.6.57

1. Update target/linux/generic/config-6.6 for new ksym
2. Refresh patches

Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.57

Added:
	generic/backport-6.6/777-netfilter-xtables-fix-typo-causing-some-targets-to-not-load-on-IPv6.patch[1]

Manually rebased:
	generic/hack-6.6/645-netfilter-connmark-introduce-set-dscpmark.patch

Removed upstreamed:
	gemini/patches-6.6/0001-net-ethernet-cortina-Drop-TSO-support.patch[2]
	gemini/patches-6.6/0004-net-ethernet-cortina-Restore-TSO-support.patch[3]

All other patches automatically rebased.

1. https://lore.kernel.org/all/20241019-xtables-typos-v2-1-6b8b1735dc8e@0upti.me/
2 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.57&id=452c0740d72c6a77a41f6ddc318a48f18c3d2346
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.57&id=611f74b0e7fb93ee2366d9d7edca546806b220e9

Build system: x86/64
Build-tested: x86/64/AMD Cezanne, flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3
Run-tested: x86/64/AMD Cezanne, flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/16726
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
John Audia 2024-10-17 19:46:24 -04:00 committed by Hauke Mehrtens
parent 3c76bed6a9
commit 51bbc8114b
27 changed files with 108 additions and 249 deletions

View File

@ -1,2 +1,2 @@
LINUX_VERSION-6.6 = .56 LINUX_VERSION-6.6 = .57
LINUX_KERNEL_HASH-6.6.56 = f74812f78e88992c416434cb107639e13a551dbaff36bb90d6346ab16ab71a95 LINUX_KERNEL_HASH-6.6.57 = 66ce426ef96f99b8e1ef7ac72e780c730ef8b970f7aa5708501c4274d7abb7b3

View File

@ -751,7 +751,7 @@ SVN-Revision: 35130
EXPORT_SYMBOL(xfrm_parse_spi); EXPORT_SYMBOL(xfrm_parse_spi);
--- a/net/ipv4/tcp_input.c --- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c
@@ -4221,14 +4221,16 @@ static bool tcp_parse_aligned_timestamp( @@ -4262,14 +4262,16 @@ static bool tcp_parse_aligned_timestamp(
{ {
const __be32 *ptr = (const __be32 *)(th + 1); const __be32 *ptr = (const __be32 *)(th + 1);

View File

@ -14,7 +14,7 @@ We don't agree with upstream revert so undo it.
--- a/drivers/usb/host/xhci-pci.c --- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c
@@ -489,8 +489,10 @@ static void xhci_pci_quirks(struct devic @@ -490,8 +490,10 @@ static void xhci_pci_quirks(struct devic
pdev->device == 0x3432) pdev->device == 0x3432)
xhci->quirks |= XHCI_BROKEN_STREAMS; xhci->quirks |= XHCI_BROKEN_STREAMS;

View File

@ -23,7 +23,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
--- a/drivers/hid/hid-ids.h --- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h
@@ -239,6 +239,9 @@ @@ -242,6 +242,9 @@
#define USB_VENDOR_ID_BAANTO 0x2453 #define USB_VENDOR_ID_BAANTO 0x2453
#define USB_DEVICE_ID_BAANTO_MT_190W2 0x0100 #define USB_DEVICE_ID_BAANTO_MT_190W2 0x0100
@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
#define USB_VENDOR_ID_BELKIN 0x050d #define USB_VENDOR_ID_BELKIN 0x050d
#define USB_DEVICE_ID_FLIP_KVM 0x3201 #define USB_DEVICE_ID_FLIP_KVM 0x3201
@@ -1394,6 +1397,9 @@ @@ -1404,6 +1407,9 @@
#define USB_VENDOR_ID_XIAOMI 0x2717 #define USB_VENDOR_ID_XIAOMI 0x2717
#define USB_DEVICE_ID_MI_SILENT_MOUSE 0x5014 #define USB_DEVICE_ID_MI_SILENT_MOUSE 0x5014

View File

@ -24,7 +24,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
--- a/drivers/usb/host/xhci-pci.c --- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c
@@ -492,6 +492,7 @@ static void xhci_pci_quirks(struct devic @@ -493,6 +493,7 @@ static void xhci_pci_quirks(struct devic
if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) { if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) {
xhci->quirks |= XHCI_LPM_SUPPORT; xhci->quirks |= XHCI_LPM_SUPPORT;
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;

View File

@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
--- a/drivers/usb/host/xhci-pci.c --- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c
@@ -493,6 +493,7 @@ static void xhci_pci_quirks(struct devic @@ -494,6 +494,7 @@ static void xhci_pci_quirks(struct devic
xhci->quirks |= XHCI_LPM_SUPPORT; xhci->quirks |= XHCI_LPM_SUPPORT;
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
xhci->quirks |= XHCI_AVOID_DQ_ON_LINK; xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;

View File

@ -90,7 +90,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
/* Allow 3 retries for everything but isoc, set CErr = 3 */ /* Allow 3 retries for everything but isoc, set CErr = 3 */
--- a/drivers/usb/host/xhci-pci.c --- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c
@@ -494,6 +494,7 @@ static void xhci_pci_quirks(struct devic @@ -495,6 +495,7 @@ static void xhci_pci_quirks(struct devic
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
xhci->quirks |= XHCI_AVOID_DQ_ON_LINK; xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;
xhci->quirks |= XHCI_ZHAOXIN_TRB_FETCH; xhci->quirks |= XHCI_ZHAOXIN_TRB_FETCH;

View File

@ -47,7 +47,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
/* Device for a quirk */ /* Device for a quirk */
#define PCI_VENDOR_ID_FRESCO_LOGIC 0x1b73 #define PCI_VENDOR_ID_FRESCO_LOGIC 0x1b73
#define PCI_DEVICE_ID_FRESCO_LOGIC_PDK 0x1000 #define PCI_DEVICE_ID_FRESCO_LOGIC_PDK 0x1000
@@ -294,6 +296,16 @@ static int xhci_pci_reinit(struct xhci_h @@ -295,6 +297,16 @@ static int xhci_pci_reinit(struct xhci_h
return 0; return 0;
} }
@ -64,7 +64,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
{ {
struct pci_dev *pdev = to_pci_dev(dev); struct pci_dev *pdev = to_pci_dev(dev);
@@ -495,6 +507,8 @@ static void xhci_pci_quirks(struct devic @@ -496,6 +508,8 @@ static void xhci_pci_quirks(struct devic
xhci->quirks |= XHCI_AVOID_DQ_ON_LINK; xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;
xhci->quirks |= XHCI_ZHAOXIN_TRB_FETCH; xhci->quirks |= XHCI_ZHAOXIN_TRB_FETCH;
xhci->quirks |= XHCI_VLI_SS_BULK_OUT_BUG; xhci->quirks |= XHCI_VLI_SS_BULK_OUT_BUG;

View File

@ -212,7 +212,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
}, },
--- a/drivers/usb/dwc3/core.c --- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c
@@ -1202,6 +1202,24 @@ static void dwc3_config_threshold(struct @@ -1208,6 +1208,24 @@ static void dwc3_config_threshold(struct
} }
} }
@ -237,7 +237,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
/** /**
* dwc3_core_init - Low-level initialization of DWC3 Core * dwc3_core_init - Low-level initialization of DWC3 Core
* @dwc: Pointer to our controller context structure * @dwc: Pointer to our controller context structure
@@ -1267,6 +1285,8 @@ static int dwc3_core_init(struct dwc3 *d @@ -1273,6 +1291,8 @@ static int dwc3_core_init(struct dwc3 *d
dwc3_set_incr_burst_type(dwc); dwc3_set_incr_burst_type(dwc);
@ -246,7 +246,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
ret = dwc3_phy_power_on(dwc); ret = dwc3_phy_power_on(dwc);
if (ret) if (ret)
goto err_exit_phy; goto err_exit_phy;
@@ -1356,6 +1376,24 @@ static int dwc3_core_init(struct dwc3 *d @@ -1362,6 +1382,24 @@ static int dwc3_core_init(struct dwc3 *d
dwc3_config_threshold(dwc); dwc3_config_threshold(dwc);
@ -271,7 +271,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
return 0; return 0;
err_power_off_phy: err_power_off_phy:
@@ -1499,6 +1537,7 @@ static void dwc3_get_properties(struct d @@ -1505,6 +1543,7 @@ static void dwc3_get_properties(struct d
u8 tx_thr_num_pkt_prd = 0; u8 tx_thr_num_pkt_prd = 0;
u8 tx_max_burst_prd = 0; u8 tx_max_burst_prd = 0;
u8 tx_fifo_resize_max_num; u8 tx_fifo_resize_max_num;
@ -279,7 +279,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
const char *usb_psy_name; const char *usb_psy_name;
int ret; int ret;
@@ -1521,6 +1560,9 @@ static void dwc3_get_properties(struct d @@ -1527,6 +1566,9 @@ static void dwc3_get_properties(struct d
*/ */
tx_fifo_resize_max_num = 6; tx_fifo_resize_max_num = 6;
@ -289,7 +289,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
dwc->maximum_speed = usb_get_maximum_speed(dev); dwc->maximum_speed = usb_get_maximum_speed(dev);
dwc->max_ssp_rate = usb_get_maximum_ssp_rate(dev); dwc->max_ssp_rate = usb_get_maximum_ssp_rate(dev);
dwc->dr_mode = usb_get_dr_mode(dev); dwc->dr_mode = usb_get_dr_mode(dev);
@@ -1642,6 +1684,9 @@ static void dwc3_get_properties(struct d @@ -1648,6 +1690,9 @@ static void dwc3_get_properties(struct d
dwc->dis_split_quirk = device_property_read_bool(dev, dwc->dis_split_quirk = device_property_read_bool(dev,
"snps,dis-split-quirk"); "snps,dis-split-quirk");
@ -299,7 +299,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
dwc->lpm_nyet_threshold = lpm_nyet_threshold; dwc->lpm_nyet_threshold = lpm_nyet_threshold;
dwc->tx_de_emphasis = tx_de_emphasis; dwc->tx_de_emphasis = tx_de_emphasis;
@@ -1659,6 +1704,8 @@ static void dwc3_get_properties(struct d @@ -1665,6 +1710,8 @@ static void dwc3_get_properties(struct d
dwc->tx_thr_num_pkt_prd = tx_thr_num_pkt_prd; dwc->tx_thr_num_pkt_prd = tx_thr_num_pkt_prd;
dwc->tx_max_burst_prd = tx_max_burst_prd; dwc->tx_max_burst_prd = tx_max_burst_prd;
@ -308,7 +308,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
dwc->imod_interval = 0; dwc->imod_interval = 0;
dwc->tx_fifo_resize_max_num = tx_fifo_resize_max_num; dwc->tx_fifo_resize_max_num = tx_fifo_resize_max_num;
@@ -1934,6 +1981,12 @@ static int dwc3_probe(struct platform_de @@ -1940,6 +1987,12 @@ static int dwc3_probe(struct platform_de
dwc3_get_properties(dwc); dwc3_get_properties(dwc);

View File

@ -13,7 +13,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
--- a/drivers/hwmon/Kconfig --- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig
@@ -2367,6 +2367,13 @@ config SENSORS_INTEL_M10_BMC_HWMON @@ -2371,6 +2371,13 @@ config SENSORS_INTEL_M10_BMC_HWMON
sensors monitor various telemetry data of different components on the sensors monitor various telemetry data of different components on the
card, e.g. board temperature, FPGA core temperature/voltage/current. card, e.g. board temperature, FPGA core temperature/voltage/current.

View File

@ -832,7 +832,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
return; return;
mutex_init(&vc4file->perfmon.lock); mutex_init(&vc4file->perfmon.lock);
@@ -126,7 +126,7 @@ void vc4_perfmon_close_file(struct vc4_f @@ -131,7 +131,7 @@ void vc4_perfmon_close_file(struct vc4_f
{ {
struct vc4_dev *vc4 = vc4file->dev; struct vc4_dev *vc4 = vc4file->dev;
@ -841,7 +841,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
return; return;
mutex_lock(&vc4file->perfmon.lock); mutex_lock(&vc4file->perfmon.lock);
@@ -146,7 +146,7 @@ int vc4_perfmon_create_ioctl(struct drm_ @@ -151,7 +151,7 @@ int vc4_perfmon_create_ioctl(struct drm_
unsigned int i; unsigned int i;
int ret; int ret;
@ -850,7 +850,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
return -ENODEV; return -ENODEV;
if (!vc4->v3d) { if (!vc4->v3d) {
@@ -200,7 +200,7 @@ int vc4_perfmon_destroy_ioctl(struct drm @@ -205,7 +205,7 @@ int vc4_perfmon_destroy_ioctl(struct drm
struct drm_vc4_perfmon_destroy *req = data; struct drm_vc4_perfmon_destroy *req = data;
struct vc4_perfmon *perfmon; struct vc4_perfmon *perfmon;
@ -859,7 +859,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
return -ENODEV; return -ENODEV;
if (!vc4->v3d) { if (!vc4->v3d) {
@@ -228,7 +228,7 @@ int vc4_perfmon_get_values_ioctl(struct @@ -233,7 +233,7 @@ int vc4_perfmon_get_values_ioctl(struct
struct vc4_perfmon *perfmon; struct vc4_perfmon *perfmon;
int ret; int ret;

View File

@ -432,7 +432,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
return; return;
mutex_init(&vc4file->perfmon.lock); mutex_init(&vc4file->perfmon.lock);
@@ -126,7 +126,7 @@ void vc4_perfmon_close_file(struct vc4_f @@ -131,7 +131,7 @@ void vc4_perfmon_close_file(struct vc4_f
{ {
struct vc4_dev *vc4 = vc4file->dev; struct vc4_dev *vc4 = vc4file->dev;
@ -441,7 +441,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
return; return;
mutex_lock(&vc4file->perfmon.lock); mutex_lock(&vc4file->perfmon.lock);
@@ -146,7 +146,7 @@ int vc4_perfmon_create_ioctl(struct drm_ @@ -151,7 +151,7 @@ int vc4_perfmon_create_ioctl(struct drm_
unsigned int i; unsigned int i;
int ret; int ret;
@ -450,7 +450,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
return -ENODEV; return -ENODEV;
if (!vc4->v3d) { if (!vc4->v3d) {
@@ -200,7 +200,7 @@ int vc4_perfmon_destroy_ioctl(struct drm @@ -205,7 +205,7 @@ int vc4_perfmon_destroy_ioctl(struct drm
struct drm_vc4_perfmon_destroy *req = data; struct drm_vc4_perfmon_destroy *req = data;
struct vc4_perfmon *perfmon; struct vc4_perfmon *perfmon;
@ -459,7 +459,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
return -ENODEV; return -ENODEV;
if (!vc4->v3d) { if (!vc4->v3d) {
@@ -228,7 +228,7 @@ int vc4_perfmon_get_values_ioctl(struct @@ -233,7 +233,7 @@ int vc4_perfmon_get_values_ioctl(struct
struct vc4_perfmon *perfmon; struct vc4_perfmon *perfmon;
int ret; int ret;

View File

@ -16,7 +16,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
--- a/drivers/usb/dwc3/core.c --- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c
@@ -1366,6 +1366,9 @@ static int dwc3_core_init(struct dwc3 *d @@ -1372,6 +1372,9 @@ static int dwc3_core_init(struct dwc3 *d
if (dwc->parkmode_disable_hs_quirk) if (dwc->parkmode_disable_hs_quirk)
reg |= DWC3_GUCTL1_PARKMODE_DISABLE_HS; reg |= DWC3_GUCTL1_PARKMODE_DISABLE_HS;
@ -26,7 +26,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
if (DWC3_VER_IS_WITHIN(DWC3, 290A, ANY) && if (DWC3_VER_IS_WITHIN(DWC3, 290A, ANY) &&
(dwc->maximum_speed == USB_SPEED_HIGH || (dwc->maximum_speed == USB_SPEED_HIGH ||
dwc->maximum_speed == USB_SPEED_FULL)) dwc->maximum_speed == USB_SPEED_FULL))
@@ -1664,6 +1667,8 @@ static void dwc3_get_properties(struct d @@ -1670,6 +1673,8 @@ static void dwc3_get_properties(struct d
"snps,parkmode-disable-ss-quirk"); "snps,parkmode-disable-ss-quirk");
dwc->parkmode_disable_hs_quirk = device_property_read_bool(dev, dwc->parkmode_disable_hs_quirk = device_property_read_bool(dev,
"snps,parkmode-disable-hs-quirk"); "snps,parkmode-disable-hs-quirk");

View File

@ -25,7 +25,7 @@ Signed-off-by: Dom Cobley <popcornmix@gmail.com>
--- a/fs/ntfs3/fslog.c --- a/fs/ntfs3/fslog.c
+++ b/fs/ntfs3/fslog.c +++ b/fs/ntfs3/fslog.c
@@ -3914,6 +3914,8 @@ check_restart_area: @@ -3929,6 +3929,8 @@ check_restart_area:
log->l_size = log->orig_file_size; log->l_size = log->orig_file_size;
log->page_size = norm_file_page(t32, &log->l_size, log->page_size = norm_file_page(t32, &log->l_size,
t32 == DefaultLogPageSize); t32 == DefaultLogPageSize);

View File

@ -1,78 +0,0 @@
From f8001196455311eb128fcafd98cb2050a70218df Mon Sep 17 00:00:00 2001
From: Linus Walleij <linus.walleij@linaro.org>
Date: Sat, 6 Jan 2024 01:12:22 +0100
Subject: [PATCH 4/4] net: ethernet: cortina: Drop TSO support
The recent change to allow large frames without hardware checksumming
slotted in software checksumming in the driver if hardware could not
do it.
This will however upset TSO (TCP Segment Offloading). Typical
error dumps includes this:
skb len=2961 headroom=222 headlen=66 tailroom=0
(...)
WARNING: CPU: 0 PID: 956 at net/core/dev.c:3259 skb_warn_bad_offload+0x7c/0x108
gemini-ethernet-port: caps=(0x0000010000154813, 0x00002007ffdd7889)
And the packets do not go through.
The TSO implementation is bogus: a TSO enabled driver must propagate
the skb_shinfo(skb)->gso_size value to the TSO engine on the NIC.
Drop the size check and TSO offloading features for now: this
needs to be fixed up properly.
After this ethernet works fine on Gemini devices with a direct connected
PHY such as D-Link DNS-313.
Also tested to still be working with a DSA switch using the Gemini
ethernet as conduit interface.
Link: https://lore.kernel.org/netdev/CANn89iJLfxng1sYL5Zk0mknXpyYQPCp83m3KgD2KJ2_hKCpEUg@mail.gmail.com/
Suggested-by: Eric Dumazet <edumazet@google.com>
Fixes: d4d0c5b4d279 ("net: ethernet: cortina: Handle large frames")
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
drivers/net/ethernet/cortina/gemini.c | 15 ++-------------
1 file changed, 2 insertions(+), 13 deletions(-)
--- a/drivers/net/ethernet/cortina/gemini.c
+++ b/drivers/net/ethernet/cortina/gemini.c
@@ -79,8 +79,7 @@ MODULE_PARM_DESC(debug, "Debug level (0=
#define GMAC0_IRQ4_8 (GMAC0_MIB_INT_BIT | GMAC0_RX_OVERRUN_INT_BIT)
#define GMAC_OFFLOAD_FEATURES (NETIF_F_SG | NETIF_F_IP_CSUM | \
- NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM | \
- NETIF_F_TSO | NETIF_F_TSO_ECN | NETIF_F_TSO6)
+ NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM)
/**
* struct gmac_queue_page - page buffer per-page info
@@ -1148,23 +1147,13 @@ static int gmac_map_tx_bufs(struct net_d
struct gmac_txdesc *txd;
skb_frag_t *skb_frag;
dma_addr_t mapping;
- unsigned short mtu;
void *buffer;
int ret;
- mtu = ETH_HLEN;
- mtu += netdev->mtu;
- if (skb->protocol == htons(ETH_P_8021Q))
- mtu += VLAN_HLEN;
-
+ /* TODO: implement proper TSO using MTU in word3 */
word1 = skb->len;
word3 = SOF_BIT;
- if (word1 > mtu) {
- word1 |= TSS_MTU_ENABLE_BIT;
- word3 |= mtu;
- }
-
if (skb->len >= ETH_FRAME_LEN) {
/* Hardware offloaded checksumming isn't working on frames
* bigger than 1514 bytes. A hypothesis about this is that the

View File

@ -1,124 +0,0 @@
From 30fcba19ed88997a2909e4a68b4d39ff371357c3 Mon Sep 17 00:00:00 2001
From: Linus Walleij <linus.walleij@linaro.org>
Date: Wed, 1 May 2024 21:46:31 +0200
Subject: [PATCH 1/5] net: ethernet: cortina: Restore TSO support
An earlier commit deleted the TSO support in the Cortina Gemini
driver because the driver was confusing gso_size and MTU,
probably because what the Linux kernel calls "gso_size" was
called "MTU" in the datasheet.
Restore the functionality properly reading the gso_size from
the skbuff.
Tested with iperf3, running a server on a different machine
and client on the device with the cortina gemini ethernet:
Connecting to host 192.168.1.2, port 5201
60008000.ethernet-port eth0: segment offloading mss = 05ea len=1c8a
60008000.ethernet-port eth0: segment offloading mss = 05ea len=1c8a
60008000.ethernet-port eth0: segment offloading mss = 05ea len=27da
60008000.ethernet-port eth0: segment offloading mss = 05ea len=0b92
60008000.ethernet-port eth0: segment offloading mss = 05ea len=2bda
(...)
(The hardware MSS 0x05ea here includes the ethernet headers.)
If I disable all segment offloading on the receiving host and
dump packets using tcpdump -xx like this:
ethtool -K enp2s0 gro off gso off tso off
tcpdump -xx -i enp2s0 host 192.168.1.136
I get segmented packages such as this when running iperf3:
23:16:54.024139 IP OpenWrt.lan.59168 > Fecusia.targus-getdata1:
Flags [.], seq 1486:2934, ack 1, win 4198,
options [nop,nop,TS val 3886192908 ecr 3601341877], length 1448
0x0000: fc34 9701 a0c6 14d6 4da8 3c4f 0800 4500
0x0010: 05dc 16a0 4000 4006 9aa1 c0a8 0188 c0a8
0x0020: 0102 e720 1451 ff25 9822 4c52 29cf 8010
0x0030: 1066 ac8c 0000 0101 080a e7a2 990c d6a8
(...)
0x05c0: 5e49 e109 fe8c 4617 5e18 7a82 7eae d647
0x05d0: e8ee ae64 dc88 c897 3f8a 07a4 3a33 6b1b
0x05e0: 3501 a30f 2758 cc44 4b4a
Several such packets often follow after each other verifying
the segmentation into 0x05a8 (1448) byte packages also on the
reveiving end. As can be seen, the ethernet frames are
0x05ea (1514) in size.
Performance with iperf3 before this patch: ~15.5 Mbit/s
Performance with iperf3 after this patch: ~175 Mbit/s
This was running a 60 second test (twice) the best measurement
was 179 Mbit/s.
For comparison if I run iperf3 with UDP I get around 1.05 Mbit/s
both before and after this patch.
While this is a gigabit ethernet interface, the CPU is a cheap
D-Link DIR-685 router (based on the ARMv5 Faraday FA526 at
~50 MHz), and the software is not supposed to drive traffic,
as the device has a DSA chip, so this kind of numbers can be
expected.
Fixes: ac631873c9e7 ("net: ethernet: cortina: Drop TSO support")
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
drivers/net/ethernet/cortina/gemini.c | 23 +++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
--- a/drivers/net/ethernet/cortina/gemini.c
+++ b/drivers/net/ethernet/cortina/gemini.c
@@ -79,7 +79,8 @@ MODULE_PARM_DESC(debug, "Debug level (0=
#define GMAC0_IRQ4_8 (GMAC0_MIB_INT_BIT | GMAC0_RX_OVERRUN_INT_BIT)
#define GMAC_OFFLOAD_FEATURES (NETIF_F_SG | NETIF_F_IP_CSUM | \
- NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM)
+ NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM | \
+ NETIF_F_TSO | NETIF_F_TSO_ECN | NETIF_F_TSO6)
/**
* struct gmac_queue_page - page buffer per-page info
@@ -1148,13 +1149,25 @@ static int gmac_map_tx_bufs(struct net_d
skb_frag_t *skb_frag;
dma_addr_t mapping;
void *buffer;
+ u16 mss;
int ret;
- /* TODO: implement proper TSO using MTU in word3 */
word1 = skb->len;
word3 = SOF_BIT;
- if (skb->len >= ETH_FRAME_LEN) {
+ mss = skb_shinfo(skb)->gso_size;
+ if (mss) {
+ /* This means we are dealing with TCP and skb->len is the
+ * sum total of all the segments. The TSO will deal with
+ * chopping this up for us.
+ */
+ /* The accelerator needs the full frame size here */
+ mss += skb_tcp_all_headers(skb);
+ netdev_dbg(netdev, "segment offloading mss = %04x len=%04x\n",
+ mss, skb->len);
+ word1 |= TSS_MTU_ENABLE_BIT;
+ word3 |= mss;
+ } else if (skb->len >= ETH_FRAME_LEN) {
/* Hardware offloaded checksumming isn't working on frames
* bigger than 1514 bytes. A hypothesis about this is that the
* checksum buffer is only 1518 bytes, so when the frames get
@@ -1169,7 +1182,9 @@ static int gmac_map_tx_bufs(struct net_d
return ret;
}
word1 |= TSS_BYPASS_BIT;
- } else if (skb->ip_summed == CHECKSUM_PARTIAL) {
+ }
+
+ if (skb->ip_summed == CHECKSUM_PARTIAL) {
int tcp = 0;
/* We do not switch off the checksumming on non TCP/UDP

View File

@ -0,0 +1,43 @@
Subject: [PATCH v2] netfilter: xtables: fix typo causing some targets to not load on IPv6
Date: Sat, 19 Oct 2024 08:05:07 +0300 [thread overview]
Message-ID: <20241019-xtables-typos-v2-1-6b8b1735dc8e@0upti.me> (raw)
These were added with the wrong family in 4cdc55e, which seems
to just have been a typo, but now ip6tables rules with --set-mark
don't work anymore, which is pretty bad.
Fixes: 0bfcb7b71e73 ("netfilter: xtables: avoid NFPROTO_UNSPEC where needed")
Reviewed-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: Ilya Katsnelson <me@0upti.me>
---
Changes in v2:
- Fixed a typo in the commit message (that's karma).
- Replaced a reference to backport commit.
- Link to v1: https://lore.kernel.org/r/20241018-xtables-typos-v1-1-02a51789c0ec@0upti.me
---
net/netfilter/xt_NFLOG.c | 2 +-
net/netfilter/xt_mark.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
--- a/net/netfilter/xt_NFLOG.c
+++ b/net/netfilter/xt_NFLOG.c
@@ -79,7 +79,7 @@ static struct xt_target nflog_tg_reg[] _
{
.name = "NFLOG",
.revision = 0,
- .family = NFPROTO_IPV4,
+ .family = NFPROTO_IPV6,
.checkentry = nflog_tg_check,
.destroy = nflog_tg_destroy,
.target = nflog_tg,
--- a/net/netfilter/xt_mark.c
+++ b/net/netfilter/xt_mark.c
@@ -62,7 +62,7 @@ static struct xt_target mark_tg_reg[] __
{
.name = "MARK",
.revision = 2,
- .family = NFPROTO_IPV4,
+ .family = NFPROTO_IPV6,
.target = mark_tg,
.targetsize = sizeof(struct xt_mark_tginfo2),
.me = THIS_MODULE,

View File

@ -28,7 +28,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
--- a/drivers/net/phy/phy_device.c --- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c
@@ -3201,6 +3201,7 @@ static int of_phy_led(struct phy_device @@ -3202,6 +3202,7 @@ static int of_phy_led(struct phy_device
struct device *dev = &phydev->mdio.dev; struct device *dev = &phydev->mdio.dev;
struct led_init_data init_data = {}; struct led_init_data init_data = {};
struct led_classdev *cdev; struct led_classdev *cdev;
@ -36,7 +36,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
struct phy_led *phyled; struct phy_led *phyled;
u32 index; u32 index;
int err; int err;
@@ -3218,6 +3219,21 @@ static int of_phy_led(struct phy_device @@ -3219,6 +3220,21 @@ static int of_phy_led(struct phy_device
if (index > U8_MAX) if (index > U8_MAX)
return -EINVAL; return -EINVAL;

View File

@ -19,7 +19,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
--- a/drivers/net/phy/phy_device.c --- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c
@@ -3219,11 +3219,17 @@ static int of_phy_led(struct phy_device @@ -3220,11 +3220,17 @@ static int of_phy_led(struct phy_device
if (index > U8_MAX) if (index > U8_MAX)
return -EINVAL; return -EINVAL;

View File

@ -2288,6 +2288,7 @@ CONFIG_HARDEN_BRANCH_HISTORY=y
# CONFIG_HID_MAGICMOUSE is not set # CONFIG_HID_MAGICMOUSE is not set
# CONFIG_HID_MALTRON is not set # CONFIG_HID_MALTRON is not set
# CONFIG_HID_MAYFLASH is not set # CONFIG_HID_MAYFLASH is not set
# CONFIG_HID_MCP2200 is not set
# CONFIG_HID_MCP2221 is not set # CONFIG_HID_MCP2221 is not set
# CONFIG_HID_MEGAWORLD_FF is not set # CONFIG_HID_MEGAWORLD_FF is not set
# CONFIG_HID_MICROSOFT is not set # CONFIG_HID_MICROSOFT is not set

View File

@ -195,20 +195,37 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
return connmark_tg_shift(skb, info); return connmark_tg_shift(skb, info);
} }
@@ -167,6 +194,16 @@ static struct xt_target connmark_tg_reg[ @@ -168,6 +195,16 @@ static struct xt_target connmark_tg_reg[
.targetsize = sizeof(struct xt_connmark_tginfo2),
.destroy = connmark_tg_destroy, .destroy = connmark_tg_destroy,
.me = THIS_MODULE, .me = THIS_MODULE,
+ }, },
+ { + {
+ .name = "CONNMARK", + .name = "CONNMARK",
+ .revision = 3, + .revision = 3,
+ .family = NFPROTO_UNSPEC, + .family = NFPROTO_IPV4,
+ .checkentry = connmark_tg_check, + .checkentry = connmark_tg_check,
+ .target = connmark_tg_v3, + .target = connmark_tg_v3,
+ .targetsize = sizeof(struct xt_connmark_tginfo3), + .targetsize = sizeof(struct xt_connmark_tginfo3),
+ .destroy = connmark_tg_destroy, + .destroy = connmark_tg_destroy,
+ .me = THIS_MODULE, + .me = THIS_MODULE,
} + },
#if IS_ENABLED(CONFIG_IP6_NF_IPTABLES)
{
.name = "CONNMARK",
@@ -189,6 +226,16 @@ static struct xt_target connmark_tg_reg[
.destroy = connmark_tg_destroy,
.me = THIS_MODULE,
},
+ {
+ .name = "CONNMARK",
+ .revision = 3,
+ .family = NFPROTO_IPV6,
+ .checkentry = connmark_tg_check,
+ .target = connmark_tg_v3,
+ .targetsize = sizeof(struct xt_connmark_tginfo3),
+ .destroy = connmark_tg_destroy,
+ .me = THIS_MODULE,
+ },
#endif
}; };

View File

@ -161,7 +161,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
struct rtnl_link { struct rtnl_link {
rtnl_doit_func doit; rtnl_doit_func doit;
@@ -4949,7 +4949,9 @@ int ndo_dflt_bridge_getlink(struct sk_bu @@ -4978,7 +4978,9 @@ int ndo_dflt_bridge_getlink(struct sk_bu
brport_nla_put_flag(skb, flags, mask, brport_nla_put_flag(skb, flags, mask,
IFLA_BRPORT_MCAST_FLOOD, BR_MCAST_FLOOD) || IFLA_BRPORT_MCAST_FLOOD, BR_MCAST_FLOOD) ||
brport_nla_put_flag(skb, flags, mask, brport_nla_put_flag(skb, flags, mask,

View File

@ -5535,7 +5535,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
unsigned long type); unsigned long type);
--- a/include/linux/pci_ids.h --- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h
@@ -1108,6 +1108,12 @@ @@ -1110,6 +1110,12 @@
#define PCI_DEVICE_ID_SGI_IOC3 0x0003 #define PCI_DEVICE_ID_SGI_IOC3 0x0003
#define PCI_DEVICE_ID_SGI_LITHIUM 0x1002 #define PCI_DEVICE_ID_SGI_LITHIUM 0x1002

View File

@ -26,7 +26,7 @@ Cc: Robert Marko <robert.marko@sartura.hr>
--- a/drivers/hwmon/Kconfig --- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig
@@ -783,6 +783,14 @@ config SENSORS_IBMPOWERNV @@ -785,6 +785,14 @@ config SENSORS_IBMPOWERNV
This driver can also be built as a module. If so, the module This driver can also be built as a module. If so, the module
will be called ibmpowernv. will be called ibmpowernv.

View File

@ -10,7 +10,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
--- a/drivers/tty/serial/serial_core.c --- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c +++ b/drivers/tty/serial/serial_core.c
@@ -480,6 +480,9 @@ uart_get_baud_rate(struct uart_port *por @@ -482,6 +482,9 @@ uart_get_baud_rate(struct uart_port *por
break; break;
} }

View File

@ -1,6 +1,6 @@
--- a/drivers/usb/dwc2/platform.c --- a/drivers/usb/dwc2/platform.c
+++ b/drivers/usb/dwc2/platform.c +++ b/drivers/usb/dwc2/platform.c
@@ -493,6 +493,12 @@ static int dwc2_driver_probe(struct plat @@ -481,6 +481,12 @@ static int dwc2_driver_probe(struct plat
if (retval) if (retval)
return retval; return retval;

View File

@ -18,7 +18,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
--- a/drivers/usb/dwc3/core.c --- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c
@@ -839,8 +839,20 @@ static int dwc3_clk_enable(struct dwc3 * @@ -845,8 +845,20 @@ static int dwc3_clk_enable(struct dwc3 *
if (ret) if (ret)
goto disable_ref_clk; goto disable_ref_clk;
@ -39,7 +39,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
disable_ref_clk: disable_ref_clk:
clk_disable_unprepare(dwc->ref_clk); clk_disable_unprepare(dwc->ref_clk);
disable_bus_clk: disable_bus_clk:
@@ -850,6 +862,8 @@ disable_bus_clk: @@ -856,6 +868,8 @@ disable_bus_clk:
static void dwc3_clk_disable(struct dwc3 *dwc) static void dwc3_clk_disable(struct dwc3 *dwc)
{ {
@ -48,7 +48,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
clk_disable_unprepare(dwc->susp_clk); clk_disable_unprepare(dwc->susp_clk);
clk_disable_unprepare(dwc->ref_clk); clk_disable_unprepare(dwc->ref_clk);
clk_disable_unprepare(dwc->bus_clk); clk_disable_unprepare(dwc->bus_clk);
@@ -1878,6 +1892,20 @@ static int dwc3_get_clocks(struct dwc3 * @@ -1884,6 +1898,20 @@ static int dwc3_get_clocks(struct dwc3 *
} }
} }