kernel: bump 6.1 to 6.1.94 (#12245)

This commit is contained in:
Beginner 2024-06-17 14:15:10 +08:00 committed by GitHub
parent 5e947a9df9
commit c1573c8ac8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
89 changed files with 306 additions and 365 deletions

View File

@ -1,2 +1,2 @@
LINUX_VERSION-6.1 = .92 LINUX_VERSION-6.1 = .94
LINUX_KERNEL_HASH-6.1.92 = 9019f427bfdc9ced5bc954d760d37ac08c0cdffb45ad28087fc45a73e64336c9 LINUX_KERNEL_HASH-6.1.94 = 38ea71ad22ae0187fd8ee5ff879b33b0d9bd58161ac9a3e868ae0b4c66b95369

View File

@ -1,47 +0,0 @@
From 648c906a27d3713f589717f4be36583fc64f2ba1 Mon Sep 17 00:00:00 2001
From: Steve Glendinning <steve.glendinning@smsc.com>
Date: Thu, 19 Feb 2015 18:47:12 +0000
Subject: [PATCH] smsx95xx: fix crimes against truesize
smsc95xx is adjusting truesize when it shouldn't, and following a recent patch from Eric this is now triggering warnings.
This patch stops smsc95xx from changing truesize.
Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com>
---
drivers/net/usb/smsc95xx.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -79,6 +79,10 @@ static bool turbo_mode = true;
module_param(turbo_mode, bool, 0644);
MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction");
+static bool truesize_mode = false;
+module_param(truesize_mode, bool, 0644);
+MODULE_PARM_DESC(truesize_mode, "Report larger truesize value");
+
static int __must_check smsc95xx_read_reg(struct usbnet *dev, u32 index,
u32 *data)
{
@@ -1870,7 +1874,8 @@ static int smsc95xx_rx_fixup(struct usbn
if (dev->net->features & NETIF_F_RXCSUM)
smsc95xx_rx_csum_offload(skb);
skb_trim(skb, skb->len - 4); /* remove fcs */
- skb->truesize = size + sizeof(struct sk_buff);
+ if (truesize_mode)
+ skb->truesize = size + sizeof(struct sk_buff);
return 1;
}
@@ -1888,7 +1893,8 @@ static int smsc95xx_rx_fixup(struct usbn
if (dev->net->features & NETIF_F_RXCSUM)
smsc95xx_rx_csum_offload(ax_skb);
skb_trim(ax_skb, ax_skb->len - 4); /* remove fcs */
- ax_skb->truesize = size + sizeof(struct sk_buff);
+ if (truesize_mode)
+ ax_skb->truesize = size + sizeof(struct sk_buff);
usbnet_skb_return(dev, ax_skb);
}

View File

@ -11,9 +11,9 @@ See: http://forum.kodi.tv/showthread.php?tid=285288
--- a/drivers/net/usb/smsc95xx.c --- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c +++ b/drivers/net/usb/smsc95xx.c
@@ -83,6 +83,10 @@ static bool truesize_mode = false; @@ -79,6 +79,10 @@ static bool turbo_mode = true;
module_param(truesize_mode, bool, 0644); module_param(turbo_mode, bool, 0644);
MODULE_PARM_DESC(truesize_mode, "Report larger truesize value"); MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction");
+static int packetsize = 2560; +static int packetsize = 2560;
+module_param(packetsize, int, 0644); +module_param(packetsize, int, 0644);
@ -22,7 +22,7 @@ See: http://forum.kodi.tv/showthread.php?tid=285288
static int __must_check smsc95xx_read_reg(struct usbnet *dev, u32 index, static int __must_check smsc95xx_read_reg(struct usbnet *dev, u32 index,
u32 *data) u32 *data)
{ {
@@ -936,13 +940,13 @@ static int smsc95xx_reset(struct usbnet @@ -932,13 +936,13 @@ static int smsc95xx_reset(struct usbnet
if (!turbo_mode) { if (!turbo_mode) {
burst_cap = 0; burst_cap = 0;

View File

@ -22,7 +22,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
--- a/drivers/net/usb/smsc95xx.c --- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c +++ b/drivers/net/usb/smsc95xx.c
@@ -87,6 +87,10 @@ static int packetsize = 2560; @@ -83,6 +83,10 @@ static int packetsize = 2560;
module_param(packetsize, int, 0644); module_param(packetsize, int, 0644);
MODULE_PARM_DESC(packetsize, "Override the RX URB packet size"); MODULE_PARM_DESC(packetsize, "Override the RX URB packet size");
@ -33,7 +33,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
static int __must_check smsc95xx_read_reg(struct usbnet *dev, u32 index, static int __must_check smsc95xx_read_reg(struct usbnet *dev, u32 index,
u32 *data) u32 *data)
{ {
@@ -809,6 +813,52 @@ static int smsc95xx_ioctl(struct net_dev @@ -805,6 +809,52 @@ static int smsc95xx_ioctl(struct net_dev
return phy_mii_ioctl(netdev->phydev, rq, cmd); return phy_mii_ioctl(netdev->phydev, rq, cmd);
} }
@ -86,7 +86,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
static void smsc95xx_init_mac_address(struct usbnet *dev) static void smsc95xx_init_mac_address(struct usbnet *dev)
{ {
u8 addr[ETH_ALEN]; u8 addr[ETH_ALEN];
@@ -832,6 +882,10 @@ static void smsc95xx_init_mac_address(st @@ -828,6 +878,10 @@ static void smsc95xx_init_mac_address(st
} }
} }

View File

@ -27,7 +27,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
--- a/drivers/firmware/raspberrypi.c --- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c
@@ -32,6 +32,8 @@ struct rpi_firmware { @@ -33,6 +33,8 @@ struct rpi_firmware {
struct kref consumers; struct kref consumers;
}; };
@ -36,7 +36,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
static DEFINE_MUTEX(transaction_lock); static DEFINE_MUTEX(transaction_lock);
static void response_callback(struct mbox_client *cl, void *msg) static void response_callback(struct mbox_client *cl, void *msg)
@@ -280,6 +282,7 @@ static int rpi_firmware_probe(struct pla @@ -281,6 +283,7 @@ static int rpi_firmware_probe(struct pla
kref_init(&fw->consumers); kref_init(&fw->consumers);
platform_set_drvdata(pdev, fw); platform_set_drvdata(pdev, fw);
@ -44,7 +44,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
rpi_firmware_print_firmware_revision(fw); rpi_firmware_print_firmware_revision(fw);
rpi_register_hwmon_driver(dev, fw); rpi_register_hwmon_driver(dev, fw);
@@ -308,6 +311,7 @@ static int rpi_firmware_remove(struct pl @@ -309,6 +312,7 @@ static int rpi_firmware_remove(struct pl
rpi_clk = NULL; rpi_clk = NULL;
rpi_firmware_put(fw); rpi_firmware_put(fw);
@ -52,7 +52,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
return 0; return 0;
} }
@@ -382,7 +386,18 @@ static struct platform_driver rpi_firmwa @@ -383,7 +387,18 @@ static struct platform_driver rpi_firmwa
.shutdown = rpi_firmware_shutdown, .shutdown = rpi_firmware_shutdown,
.remove = rpi_firmware_remove, .remove = rpi_firmware_remove,
}; };

View File

@ -156,7 +156,7 @@ See: https://github.com/raspberrypi/linux/issues/1064
+MODULE_LICENSE("GPL"); +MODULE_LICENSE("GPL");
--- a/include/linux/leds.h --- a/include/linux/leds.h
+++ b/include/linux/leds.h +++ b/include/linux/leds.h
@@ -85,6 +85,9 @@ struct led_classdev { @@ -95,6 +95,9 @@ struct led_classdev {
#define LED_BRIGHT_HW_CHANGED BIT(21) #define LED_BRIGHT_HW_CHANGED BIT(21)
#define LED_RETAIN_AT_SHUTDOWN BIT(22) #define LED_RETAIN_AT_SHUTDOWN BIT(22)
#define LED_INIT_DEFAULT_TRIGGER BIT(23) #define LED_INIT_DEFAULT_TRIGGER BIT(23)

View File

@ -13,7 +13,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
--- a/drivers/firmware/raspberrypi.c --- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c
@@ -12,6 +12,7 @@ @@ -13,6 +13,7 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/of_platform.h> #include <linux/of_platform.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
@ -21,7 +21,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
#include <linux/slab.h> #include <linux/slab.h>
#include <soc/bcm2835/raspberrypi-firmware.h> #include <soc/bcm2835/raspberrypi-firmware.h>
@@ -179,6 +180,26 @@ int rpi_firmware_property(struct rpi_fir @@ -180,6 +181,26 @@ int rpi_firmware_property(struct rpi_fir
} }
EXPORT_SYMBOL_GPL(rpi_firmware_property); EXPORT_SYMBOL_GPL(rpi_firmware_property);
@ -48,7 +48,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
static void static void
rpi_firmware_print_firmware_revision(struct rpi_firmware *fw) rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
{ {
@@ -387,15 +408,32 @@ static struct platform_driver rpi_firmwa @@ -388,15 +409,32 @@ static struct platform_driver rpi_firmwa
.remove = rpi_firmware_remove, .remove = rpi_firmware_remove,
}; };

View File

@ -16,7 +16,7 @@ Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
--- a/drivers/firmware/raspberrypi.c --- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c
@@ -31,6 +31,7 @@ struct rpi_firmware { @@ -32,6 +32,7 @@ struct rpi_firmware {
u32 enabled; u32 enabled;
struct kref consumers; struct kref consumers;
@ -24,7 +24,7 @@ Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
}; };
static struct platform_device *g_pdev; static struct platform_device *g_pdev;
@@ -176,6 +177,12 @@ int rpi_firmware_property(struct rpi_fir @@ -177,6 +178,12 @@ int rpi_firmware_property(struct rpi_fir
kfree(data); kfree(data);
@ -37,7 +37,7 @@ Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(rpi_firmware_property); EXPORT_SYMBOL_GPL(rpi_firmware_property);
@@ -200,6 +207,27 @@ static int rpi_firmware_notify_reboot(st @@ -201,6 +208,27 @@ static int rpi_firmware_notify_reboot(st
return 0; return 0;
} }
@ -65,7 +65,7 @@ Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
static void static void
rpi_firmware_print_firmware_revision(struct rpi_firmware *fw) rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
{ {
@@ -229,6 +257,11 @@ rpi_register_hwmon_driver(struct device @@ -230,6 +258,11 @@ rpi_register_hwmon_driver(struct device
rpi_hwmon = platform_device_register_data(dev, "raspberrypi-hwmon", rpi_hwmon = platform_device_register_data(dev, "raspberrypi-hwmon",
-1, NULL, 0); -1, NULL, 0);

View File

@ -26,7 +26,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
--- a/drivers/firmware/raspberrypi.c --- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c
@@ -233,6 +233,15 @@ rpi_firmware_print_firmware_revision(str @@ -234,6 +234,15 @@ rpi_firmware_print_firmware_revision(str
{ {
time64_t date_and_time; time64_t date_and_time;
u32 packet; u32 packet;
@ -42,7 +42,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
int ret = rpi_firmware_property(fw, int ret = rpi_firmware_property(fw,
RPI_FIRMWARE_GET_FIRMWARE_REVISION, RPI_FIRMWARE_GET_FIRMWARE_REVISION,
&packet, sizeof(packet)); &packet, sizeof(packet));
@@ -242,7 +251,35 @@ rpi_firmware_print_firmware_revision(str @@ -243,7 +252,35 @@ rpi_firmware_print_firmware_revision(str
/* This is not compatible with y2038 */ /* This is not compatible with y2038 */
date_and_time = packet; date_and_time = packet;
@ -79,7 +79,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
} }
static void static void
@@ -339,6 +376,7 @@ static int rpi_firmware_probe(struct pla @@ -340,6 +377,7 @@ static int rpi_firmware_probe(struct pla
g_pdev = pdev; g_pdev = pdev;
rpi_firmware_print_firmware_revision(fw); rpi_firmware_print_firmware_revision(fw);

View File

@ -36,7 +36,7 @@ Co-authored-by: Phil Elwell <phil@raspberrypi.org>
MODULE_DESCRIPTION("BCM2835 clock driver"); MODULE_DESCRIPTION("BCM2835 clock driver");
--- a/drivers/firmware/raspberrypi.c --- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c
@@ -499,7 +499,7 @@ out2: @@ -500,7 +500,7 @@ out2:
out1: out1:
return ret; return ret;
} }

View File

@ -32,7 +32,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
--- a/drivers/spi/spi.c --- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c +++ b/drivers/spi/spi.c
@@ -3690,6 +3690,7 @@ static int spi_set_cs_timing(struct spi_ @@ -3694,6 +3694,7 @@ static int spi_set_cs_timing(struct spi_
*/ */
int spi_setup(struct spi_device *spi) int spi_setup(struct spi_device *spi)
{ {
@ -40,7 +40,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
unsigned bad_bits, ugly_bits; unsigned bad_bits, ugly_bits;
int status = 0; int status = 0;
@@ -3710,6 +3711,14 @@ int spi_setup(struct spi_device *spi) @@ -3714,6 +3715,14 @@ int spi_setup(struct spi_device *spi)
(SPI_TX_DUAL | SPI_TX_QUAD | SPI_TX_OCTAL | (SPI_TX_DUAL | SPI_TX_QUAD | SPI_TX_OCTAL |
SPI_RX_DUAL | SPI_RX_QUAD | SPI_RX_OCTAL))) SPI_RX_DUAL | SPI_RX_QUAD | SPI_RX_OCTAL)))
return -EINVAL; return -EINVAL;

View File

@ -19,7 +19,7 @@ mechanism to be implemented for OS upgrades.
--- a/drivers/firmware/raspberrypi.c --- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c
@@ -193,6 +193,7 @@ static int rpi_firmware_notify_reboot(st @@ -194,6 +194,7 @@ static int rpi_firmware_notify_reboot(st
{ {
struct rpi_firmware *fw; struct rpi_firmware *fw;
struct platform_device *pdev = g_pdev; struct platform_device *pdev = g_pdev;
@ -27,7 +27,7 @@ mechanism to be implemented for OS upgrades.
if (!pdev) if (!pdev)
return 0; return 0;
@@ -201,8 +202,28 @@ static int rpi_firmware_notify_reboot(st @@ -202,8 +203,28 @@ static int rpi_firmware_notify_reboot(st
if (!fw) if (!fw)
return 0; return 0;

View File

@ -15,7 +15,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
--- a/drivers/gpu/drm/panel/panel-simple.c --- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -3193,6 +3193,31 @@ static const struct panel_desc qishenglo @@ -3196,6 +3196,31 @@ static const struct panel_desc qishenglo
.connector_type = DRM_MODE_CONNECTOR_DPI, .connector_type = DRM_MODE_CONNECTOR_DPI,
}; };
@ -47,7 +47,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
static const struct display_timing rocktech_rk070er9427_timing = { static const struct display_timing rocktech_rk070er9427_timing = {
.pixelclock = { 26400000, 33300000, 46800000 }, .pixelclock = { 26400000, 33300000, 46800000 },
.hactive = { 800, 800, 800 }, .hactive = { 800, 800, 800 },
@@ -4226,6 +4251,9 @@ static const struct of_device_id platfor @@ -4229,6 +4254,9 @@ static const struct of_device_id platfor
.compatible = "qishenglong,gopher2b-lcd", .compatible = "qishenglong,gopher2b-lcd",
.data = &qishenglong_gopher2b_lcd, .data = &qishenglong_gopher2b_lcd,
}, { }, {

View File

@ -46,7 +46,7 @@ Acked-by: Maxime Ripard <maxime@cerno.tech>
static const struct drm_display_mode giantplus_gpg482739qs5_mode = { static const struct drm_display_mode giantplus_gpg482739qs5_mode = {
.clock = 9000, .clock = 9000,
.hdisplay = 480, .hdisplay = 480,
@@ -4110,6 +4136,9 @@ static const struct of_device_id platfor @@ -4113,6 +4139,9 @@ static const struct of_device_id platfor
.compatible = "friendlyarm,hd702e", .compatible = "friendlyarm,hd702e",
.data = &friendlyarm_hd702e, .data = &friendlyarm_hd702e,
}, { }, {

View File

@ -19,7 +19,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
--- a/drivers/firmware/raspberrypi.c --- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c
@@ -429,6 +429,18 @@ static int rpi_firmware_remove(struct pl @@ -430,6 +430,18 @@ static int rpi_firmware_remove(struct pl
return 0; return 0;
} }
@ -38,7 +38,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
/** /**
* rpi_firmware_get - Get pointer to rpi_firmware structure. * rpi_firmware_get - Get pointer to rpi_firmware structure.
* @firmware_node: Pointer to the firmware Device Tree node. * @firmware_node: Pointer to the firmware Device Tree node.
@@ -484,12 +496,6 @@ struct rpi_firmware *devm_rpi_firmware_g @@ -485,12 +497,6 @@ struct rpi_firmware *devm_rpi_firmware_g
} }
EXPORT_SYMBOL_GPL(devm_rpi_firmware_get); EXPORT_SYMBOL_GPL(devm_rpi_firmware_get);

View File

@ -19,7 +19,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
--- a/drivers/firmware/raspberrypi.c --- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c
@@ -342,6 +342,26 @@ static void rpi_register_clk_driver(stru @@ -343,6 +343,26 @@ static void rpi_register_clk_driver(stru
-1, NULL, 0); -1, NULL, 0);
} }

View File

@ -36,7 +36,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
#include <sound/dmaengine_pcm.h> #include <sound/dmaengine_pcm.h>
#include <sound/hdmi-codec.h> #include <sound/hdmi-codec.h>
#include <sound/pcm_drm_eld.h> #include <sound/pcm_drm_eld.h>
@@ -3695,7 +3696,7 @@ static int vc4_hdmi_bind(struct device * @@ -3697,7 +3698,7 @@ static int vc4_hdmi_bind(struct device *
if (variant->max_pixel_clock == 600000000) { if (variant->max_pixel_clock == 600000000) {
struct vc4_dev *vc4 = to_vc4_dev(drm); struct vc4_dev *vc4 = to_vc4_dev(drm);

View File

@ -91,7 +91,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
return MODE_CLOCK_HIGH; return MODE_CLOCK_HIGH;
if (info->max_tmds_clock && clock > (info->max_tmds_clock * 1000)) if (info->max_tmds_clock && clock > (info->max_tmds_clock * 1000))
@@ -3694,14 +3695,6 @@ static int vc4_hdmi_bind(struct device * @@ -3696,14 +3697,6 @@ static int vc4_hdmi_bind(struct device *
vc4_hdmi->disable_wifi_frequencies = vc4_hdmi->disable_wifi_frequencies =
of_property_read_bool(dev->of_node, "wifi-2.4ghz-coexistence"); of_property_read_bool(dev->of_node, "wifi-2.4ghz-coexistence");

View File

@ -165,7 +165,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
static const struct drm_display_mode innolux_at070tn92_mode = { static const struct drm_display_mode innolux_at070tn92_mode = {
.clock = 33333, .clock = 33333,
.hdisplay = 800, .hdisplay = 800,
@@ -4146,6 +4178,9 @@ static const struct of_device_id platfor @@ -4149,6 +4181,9 @@ static const struct of_device_id platfor
.compatible = "innolux,at043tn24", .compatible = "innolux,at043tn24",
.data = &innolux_at043tn24, .data = &innolux_at043tn24,
}, { }, {

View File

@ -8,8 +8,8 @@ Slave addresses for DMA are meant to be supplied as physical addresses
Signed-off-by: Phil Elwell <phil@raspberrypi.com> Signed-off-by: Phil Elwell <phil@raspberrypi.com>
--- ---
drivers/gpu/drm/vc4/vc4_hdmi.c | 13 ++++--------- drivers/gpu/drm/vc4/vc4_hdmi.c | 15 ++++-----------
1 file changed, 4 insertions(+), 9 deletions(-) 1 file changed, 4 insertions(+), 11 deletions(-)
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@ -22,7 +22,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
int index, len; int index, len;
int ret; int ret;
@@ -2755,20 +2755,15 @@ static int vc4_hdmi_audio_init(struct vc @@ -2755,22 +2755,15 @@ static int vc4_hdmi_audio_init(struct vc
} }
/* /*
@ -40,6 +40,8 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
+ iomem = platform_get_resource(vc4_hdmi->pdev, IORESOURCE_MEM, index); + iomem = platform_get_resource(vc4_hdmi->pdev, IORESOURCE_MEM, index);
- addr = of_get_address(dev->of_node, index, NULL, NULL); - addr = of_get_address(dev->of_node, index, NULL, NULL);
- if (!addr)
- return -EINVAL;
- -
- vc4_hdmi->audio.dma_data.addr = be32_to_cpup(addr) + mai_data->offset; - vc4_hdmi->audio.dma_data.addr = be32_to_cpup(addr) + mai_data->offset;
+ vc4_hdmi->audio.dma_data.addr = iomem->start + mai_data->offset; + vc4_hdmi->audio.dma_data.addr = iomem->start + mai_data->offset;

View File

@ -43,7 +43,7 @@ Signed-off-by: Lukas Wunner <lukas@wunner.de>
--- a/drivers/net/usb/smsc95xx.c --- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c +++ b/drivers/net/usb/smsc95xx.c
@@ -814,49 +814,18 @@ static int smsc95xx_ioctl(struct net_dev @@ -810,49 +810,18 @@ static int smsc95xx_ioctl(struct net_dev
} }
/* Check the macaddr module parameter for a MAC address */ /* Check the macaddr module parameter for a MAC address */
@ -103,7 +103,7 @@ Signed-off-by: Lukas Wunner <lukas@wunner.de>
} }
static void smsc95xx_init_mac_address(struct usbnet *dev) static void smsc95xx_init_mac_address(struct usbnet *dev)
@@ -883,8 +852,12 @@ static void smsc95xx_init_mac_address(st @@ -879,8 +848,12 @@ static void smsc95xx_init_mac_address(st
} }
/* Check module parameters */ /* Check module parameters */

View File

@ -50,7 +50,7 @@ sdhci: remove PYA0_INTR_BUG quirk. Add quirks to disable some of the higher SDR
}; };
/*****************************************************************************\ /*****************************************************************************\
@@ -4605,6 +4615,15 @@ int sdhci_setup_host(struct sdhci_host * @@ -4611,6 +4621,15 @@ int sdhci_setup_host(struct sdhci_host *
!(host->quirks2 & SDHCI_QUIRK2_BROKEN_DDR50)) !(host->quirks2 & SDHCI_QUIRK2_BROKEN_DDR50))
mmc->caps |= MMC_CAP_UHS_DDR50; mmc->caps |= MMC_CAP_UHS_DDR50;
@ -68,7 +68,7 @@ sdhci: remove PYA0_INTR_BUG quirk. Add quirks to disable some of the higher SDR
host->flags |= SDHCI_SDR50_NEEDS_TUNING; host->flags |= SDHCI_SDR50_NEEDS_TUNING;
--- a/drivers/mmc/host/sdhci.h --- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h +++ b/drivers/mmc/host/sdhci.h
@@ -481,6 +481,11 @@ struct sdhci_host { @@ -482,6 +482,11 @@ struct sdhci_host {
/* Issue CMD and DATA reset together */ /* Issue CMD and DATA reset together */
#define SDHCI_QUIRK2_ISSUE_CMD_DAT_RESET_TOGETHER (1<<19) #define SDHCI_QUIRK2_ISSUE_CMD_DAT_RESET_TOGETHER (1<<19)
@ -80,7 +80,7 @@ sdhci: remove PYA0_INTR_BUG quirk. Add quirks to disable some of the higher SDR
int irq; /* Device IRQ */ int irq; /* Device IRQ */
void __iomem *ioaddr; /* Mapped address */ void __iomem *ioaddr; /* Mapped address */
phys_addr_t mapbase; /* physical address base */ phys_addr_t mapbase; /* physical address base */
@@ -663,6 +668,7 @@ struct sdhci_ops { @@ -664,6 +669,7 @@ struct sdhci_ops {
void (*request_done)(struct sdhci_host *host, void (*request_done)(struct sdhci_host *host,
struct mmc_request *mrq); struct mmc_request *mrq);
void (*dump_vendor_regs)(struct sdhci_host *host); void (*dump_vendor_regs)(struct sdhci_host *host);

View File

@ -18,7 +18,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -3625,6 +3625,7 @@ static int vc4_hdmi_runtime_suspend(stru @@ -3627,6 +3627,7 @@ static int vc4_hdmi_runtime_suspend(stru
{ {
struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev); struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
@ -26,7 +26,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
clk_disable_unprepare(vc4_hdmi->hsm_rpm_clock); clk_disable_unprepare(vc4_hdmi->hsm_rpm_clock);
return 0; return 0;
@@ -3666,6 +3667,10 @@ static int vc4_hdmi_runtime_resume(struc @@ -3668,6 +3669,10 @@ static int vc4_hdmi_runtime_resume(struc
goto err_disable_clk; goto err_disable_clk;
} }

View File

@ -73,7 +73,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
VC4_HD_VID_CTL_ENABLE | VC4_HD_VID_CTL_ENABLE |
VC4_HD_VID_CTL_CLRRGB | VC4_HD_VID_CTL_CLRRGB |
VC4_HD_VID_CTL_UNDERFLOW_ENABLE | VC4_HD_VID_CTL_UNDERFLOW_ENABLE |
@@ -3796,7 +3808,9 @@ static int vc4_hdmi_bind(struct device * @@ -3798,7 +3810,9 @@ static int vc4_hdmi_bind(struct device *
return ret; return ret;
if ((of_device_is_compatible(dev->of_node, "brcm,bcm2711-hdmi0") || if ((of_device_is_compatible(dev->of_node, "brcm,bcm2711-hdmi0") ||
@ -84,7 +84,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
HDMI_READ(HDMI_VID_CTL) & VC4_HD_VID_CTL_ENABLE) { HDMI_READ(HDMI_VID_CTL) & VC4_HD_VID_CTL_ENABLE) {
clk_prepare_enable(vc4_hdmi->pixel_clock); clk_prepare_enable(vc4_hdmi->pixel_clock);
clk_prepare_enable(vc4_hdmi->hsm_clock); clk_prepare_enable(vc4_hdmi->hsm_clock);
@@ -3931,10 +3945,66 @@ static const struct vc4_hdmi_variant bcm @@ -3933,10 +3947,66 @@ static const struct vc4_hdmi_variant bcm
.hp_detect = vc5_hdmi_hp_detect, .hp_detect = vc5_hdmi_hp_detect,
}; };

View File

@ -15,7 +15,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
--- a/drivers/gpu/drm/panel/panel-simple.c --- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -3241,11 +3241,11 @@ static const struct panel_desc qishenglo @@ -3244,11 +3244,11 @@ static const struct panel_desc qishenglo
}; };
static const struct drm_display_mode raspberrypi_7inch_mode = { static const struct drm_display_mode raspberrypi_7inch_mode = {

View File

@ -74,7 +74,7 @@ Signed-off-by: Dom Cobley <popcornmix@gmail.com>
}, },
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -3958,7 +3958,7 @@ static const struct vc4_hdmi_variant bcm @@ -3960,7 +3960,7 @@ static const struct vc4_hdmi_variant bcm
PHY_LANE_2, PHY_LANE_2,
PHY_LANE_CK, PHY_LANE_CK,
}, },
@ -83,7 +83,7 @@ Signed-off-by: Dom Cobley <popcornmix@gmail.com>
.external_irq_controller = true, .external_irq_controller = true,
.init_resources = vc5_hdmi_init_resources, .init_resources = vc5_hdmi_init_resources,
@@ -3985,7 +3985,7 @@ static const struct vc4_hdmi_variant bcm @@ -3987,7 +3987,7 @@ static const struct vc4_hdmi_variant bcm
PHY_LANE_2, PHY_LANE_2,
PHY_LANE_CK, PHY_LANE_CK,
}, },

View File

@ -50,7 +50,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
if (!mmc_op_tuning(host->cmd->opcode)) if (!mmc_op_tuning(host->cmd->opcode))
--- a/drivers/mmc/host/sdhci.h --- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h +++ b/drivers/mmc/host/sdhci.h
@@ -486,6 +486,9 @@ struct sdhci_host { @@ -487,6 +487,9 @@ struct sdhci_host {
#define SDHCI_QUIRK2_NO_SDR50 (1<<20) #define SDHCI_QUIRK2_NO_SDR50 (1<<20)
#define SDHCI_QUIRK2_NO_SDR104 (1<<21) #define SDHCI_QUIRK2_NO_SDR104 (1<<21)

View File

@ -23,7 +23,7 @@ Signed-off-by: Timon Skerutsch <kernel@diodes-delight.com>
/** /**
* struct panel_desc - Describes a simple panel. * struct panel_desc - Describes a simple panel.
@@ -4662,6 +4663,9 @@ static const struct panel_desc_dsi osd10 @@ -4665,6 +4666,9 @@ static const struct panel_desc_dsi osd10
.lanes = 4, .lanes = 4,
}; };
@ -33,7 +33,7 @@ Signed-off-by: Timon Skerutsch <kernel@diodes-delight.com>
static const struct of_device_id dsi_of_match[] = { static const struct of_device_id dsi_of_match[] = {
{ {
.compatible = "auo,b080uan01", .compatible = "auo,b080uan01",
@@ -4685,14 +4689,118 @@ static const struct of_device_id dsi_of_ @@ -4688,14 +4692,118 @@ static const struct of_device_id dsi_of_
.compatible = "osddisplays,osd101t2045-53ts", .compatible = "osddisplays,osd101t2045-53ts",
.data = &osd101t2045_53ts .data = &osd101t2045_53ts
}, { }, {
@ -152,7 +152,7 @@ Signed-off-by: Timon Skerutsch <kernel@diodes-delight.com>
const struct of_device_id *id; const struct of_device_id *id;
int err; int err;
@@ -4700,7 +4808,20 @@ static int panel_simple_dsi_probe(struct @@ -4703,7 +4811,20 @@ static int panel_simple_dsi_probe(struct
if (!id) if (!id)
return -ENODEV; return -ENODEV;

View File

@ -17,7 +17,7 @@ Link: https://lore.kernel.org/linux-mtd/20230308082021.870459-4-michael@walle.cc
--- a/drivers/mtd/mtdcore.c --- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c +++ b/drivers/mtd/mtdcore.c
@@ -953,8 +953,8 @@ static int mtd_otp_nvmem_add(struct mtd_ @@ -955,8 +955,8 @@ static int mtd_otp_nvmem_add(struct mtd_
nvmem = mtd_otp_nvmem_register(mtd, "user-otp", size, nvmem = mtd_otp_nvmem_register(mtd, "user-otp", size,
mtd_nvmem_user_otp_reg_read); mtd_nvmem_user_otp_reg_read);
if (IS_ERR(nvmem)) { if (IS_ERR(nvmem)) {
@ -28,7 +28,7 @@ Link: https://lore.kernel.org/linux-mtd/20230308082021.870459-4-michael@walle.cc
} }
mtd->otp_user_nvmem = nvmem; mtd->otp_user_nvmem = nvmem;
} }
@@ -971,7 +971,6 @@ static int mtd_otp_nvmem_add(struct mtd_ @@ -973,7 +973,6 @@ static int mtd_otp_nvmem_add(struct mtd_
nvmem = mtd_otp_nvmem_register(mtd, "factory-otp", size, nvmem = mtd_otp_nvmem_register(mtd, "factory-otp", size,
mtd_nvmem_fact_otp_reg_read); mtd_nvmem_fact_otp_reg_read);
if (IS_ERR(nvmem)) { if (IS_ERR(nvmem)) {
@ -36,7 +36,7 @@ Link: https://lore.kernel.org/linux-mtd/20230308082021.870459-4-michael@walle.cc
err = PTR_ERR(nvmem); err = PTR_ERR(nvmem);
goto err; goto err;
} }
@@ -983,7 +982,7 @@ static int mtd_otp_nvmem_add(struct mtd_ @@ -985,7 +984,7 @@ static int mtd_otp_nvmem_add(struct mtd_
err: err:
nvmem_unregister(mtd->otp_user_nvmem); nvmem_unregister(mtd->otp_user_nvmem);

View File

@ -27,7 +27,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -4689,8 +4689,8 @@ static int mtk_probe(struct platform_dev @@ -4691,8 +4691,8 @@ static int mtk_probe(struct platform_dev
for (i = 0; i < num_ppe; i++) { for (i = 0; i < num_ppe; i++) {
u32 ppe_addr = eth->soc->reg_map->ppe_base + i * 0x400; u32 ppe_addr = eth->soc->reg_map->ppe_base + i * 0x400;
@ -38,7 +38,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
if (!eth->ppe[i]) { if (!eth->ppe[i]) {
err = -ENOMEM; err = -ENOMEM;
goto err_deinit_ppe; goto err_deinit_ppe;
@@ -4814,6 +4814,7 @@ static const struct mtk_soc_data mt7622_ @@ -4816,6 +4816,7 @@ static const struct mtk_soc_data mt7622_
.required_pctl = false, .required_pctl = false,
.offload_version = 2, .offload_version = 2,
.hash_offset = 2, .hash_offset = 2,
@ -46,7 +46,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
.foe_entry_size = sizeof(struct mtk_foe_entry) - 16, .foe_entry_size = sizeof(struct mtk_foe_entry) - 16,
.txrx = { .txrx = {
.txd_size = sizeof(struct mtk_tx_dma), .txd_size = sizeof(struct mtk_tx_dma),
@@ -4851,6 +4852,7 @@ static const struct mtk_soc_data mt7629_ @@ -4853,6 +4854,7 @@ static const struct mtk_soc_data mt7629_
.hw_features = MTK_HW_FEATURES, .hw_features = MTK_HW_FEATURES,
.required_clks = MT7629_CLKS_BITMAP, .required_clks = MT7629_CLKS_BITMAP,
.required_pctl = false, .required_pctl = false,
@ -54,7 +54,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
.txrx = { .txrx = {
.txd_size = sizeof(struct mtk_tx_dma), .txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma), .rxd_size = sizeof(struct mtk_rx_dma),
@@ -4871,6 +4873,7 @@ static const struct mtk_soc_data mt7981_ @@ -4873,6 +4875,7 @@ static const struct mtk_soc_data mt7981_
.offload_version = 2, .offload_version = 2,
.hash_offset = 4, .hash_offset = 4,
.foe_entry_size = sizeof(struct mtk_foe_entry), .foe_entry_size = sizeof(struct mtk_foe_entry),
@ -62,7 +62,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
.txrx = { .txrx = {
.txd_size = sizeof(struct mtk_tx_dma_v2), .txd_size = sizeof(struct mtk_tx_dma_v2),
.rxd_size = sizeof(struct mtk_rx_dma_v2), .rxd_size = sizeof(struct mtk_rx_dma_v2),
@@ -4891,6 +4894,7 @@ static const struct mtk_soc_data mt7986_ @@ -4893,6 +4896,7 @@ static const struct mtk_soc_data mt7986_
.offload_version = 2, .offload_version = 2,
.hash_offset = 4, .hash_offset = 4,
.foe_entry_size = sizeof(struct mtk_foe_entry), .foe_entry_size = sizeof(struct mtk_foe_entry),
@ -356,7 +356,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
return 0; return 0;
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c --- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c +++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
@@ -500,6 +500,7 @@ static int @@ -497,6 +497,7 @@ static int
mtk_flow_offload_stats(struct mtk_eth *eth, struct flow_cls_offload *f) mtk_flow_offload_stats(struct mtk_eth *eth, struct flow_cls_offload *f)
{ {
struct mtk_flow_entry *entry; struct mtk_flow_entry *entry;
@ -364,7 +364,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
u32 idle; u32 idle;
entry = rhashtable_lookup(&eth->flow_table, &f->cookie, entry = rhashtable_lookup(&eth->flow_table, &f->cookie,
@@ -510,6 +511,13 @@ mtk_flow_offload_stats(struct mtk_eth *e @@ -507,6 +508,13 @@ mtk_flow_offload_stats(struct mtk_eth *e
idle = mtk_foe_entry_idle_time(eth->ppe[entry->ppe_index], entry); idle = mtk_foe_entry_idle_time(eth->ppe[entry->ppe_index], entry);
f->stats.lastused = jiffies - idle * HZ; f->stats.lastused = jiffies - idle * HZ;

View File

@ -17,7 +17,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -4763,7 +4763,7 @@ static const struct mtk_soc_data mt7621_ @@ -4765,7 +4765,7 @@ static const struct mtk_soc_data mt7621_
.required_pctl = false, .required_pctl = false,
.offload_version = 1, .offload_version = 1,
.hash_offset = 2, .hash_offset = 2,
@ -26,7 +26,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
.txrx = { .txrx = {
.txd_size = sizeof(struct mtk_tx_dma), .txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma), .rxd_size = sizeof(struct mtk_rx_dma),
@@ -4784,7 +4784,7 @@ static const struct mtk_soc_data mt7622_ @@ -4786,7 +4786,7 @@ static const struct mtk_soc_data mt7622_
.offload_version = 2, .offload_version = 2,
.hash_offset = 2, .hash_offset = 2,
.has_accounting = true, .has_accounting = true,
@ -35,7 +35,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
.txrx = { .txrx = {
.txd_size = sizeof(struct mtk_tx_dma), .txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma), .rxd_size = sizeof(struct mtk_rx_dma),
@@ -4803,7 +4803,7 @@ static const struct mtk_soc_data mt7623_ @@ -4805,7 +4805,7 @@ static const struct mtk_soc_data mt7623_
.required_pctl = true, .required_pctl = true,
.offload_version = 1, .offload_version = 1,
.hash_offset = 2, .hash_offset = 2,
@ -44,7 +44,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
.txrx = { .txrx = {
.txd_size = sizeof(struct mtk_tx_dma), .txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma), .rxd_size = sizeof(struct mtk_rx_dma),
@@ -4841,8 +4841,8 @@ static const struct mtk_soc_data mt7981_ @@ -4843,8 +4843,8 @@ static const struct mtk_soc_data mt7981_
.required_pctl = false, .required_pctl = false,
.offload_version = 2, .offload_version = 2,
.hash_offset = 4, .hash_offset = 4,
@ -54,7 +54,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
.txrx = { .txrx = {
.txd_size = sizeof(struct mtk_tx_dma_v2), .txd_size = sizeof(struct mtk_tx_dma_v2),
.rxd_size = sizeof(struct mtk_rx_dma_v2), .rxd_size = sizeof(struct mtk_rx_dma_v2),
@@ -4862,8 +4862,8 @@ static const struct mtk_soc_data mt7986_ @@ -4864,8 +4864,8 @@ static const struct mtk_soc_data mt7986_
.required_pctl = false, .required_pctl = false,
.offload_version = 2, .offload_version = 2,
.hash_offset = 4, .hash_offset = 4,

View File

@ -95,7 +95,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
/* mt7623_pad_clk_setup */ /* mt7623_pad_clk_setup */
for (i = 0 ; i < NUM_TRGMII_CTRL; i++) for (i = 0 ; i < NUM_TRGMII_CTRL; i++)
@@ -4340,13 +4312,19 @@ static int mtk_add_mac(struct mtk_eth *e @@ -4342,13 +4314,19 @@ static int mtk_add_mac(struct mtk_eth *e
mac->phylink_config.mac_capabilities = MAC_ASYM_PAUSE | MAC_SYM_PAUSE | mac->phylink_config.mac_capabilities = MAC_ASYM_PAUSE | MAC_SYM_PAUSE |
MAC_10 | MAC_100 | MAC_1000 | MAC_2500FD; MAC_10 | MAC_100 | MAC_1000 | MAC_2500FD;
@ -121,7 +121,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_TRGMII) && !mac->id) if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_TRGMII) && !mac->id)
__set_bit(PHY_INTERFACE_MODE_TRGMII, __set_bit(PHY_INTERFACE_MODE_TRGMII,
@@ -4804,6 +4782,7 @@ static const struct mtk_soc_data mt7623_ @@ -4806,6 +4784,7 @@ static const struct mtk_soc_data mt7623_
.offload_version = 1, .offload_version = 1,
.hash_offset = 2, .hash_offset = 2,
.foe_entry_size = MTK_FOE_ENTRY_V1_SIZE, .foe_entry_size = MTK_FOE_ENTRY_V1_SIZE,

View File

@ -23,7 +23,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -555,38 +555,6 @@ static int mtk_mac_finish(struct phylink @@ -554,38 +554,6 @@ static int mtk_mac_finish(struct phylink
return 0; return 0;
} }
@ -62,7 +62,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
static void mtk_mac_link_down(struct phylink_config *config, unsigned int mode, static void mtk_mac_link_down(struct phylink_config *config, unsigned int mode,
phy_interface_t interface) phy_interface_t interface)
{ {
@@ -709,7 +677,6 @@ static void mtk_mac_link_up(struct phyli @@ -708,7 +676,6 @@ static void mtk_mac_link_up(struct phyli
static const struct phylink_mac_ops mtk_phylink_ops = { static const struct phylink_mac_ops mtk_phylink_ops = {
.validate = phylink_generic_validate, .validate = phylink_generic_validate,
.mac_select_pcs = mtk_mac_select_pcs, .mac_select_pcs = mtk_mac_select_pcs,
@ -70,7 +70,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
.mac_config = mtk_mac_config, .mac_config = mtk_mac_config,
.mac_finish = mtk_mac_finish, .mac_finish = mtk_mac_finish,
.mac_link_down = mtk_mac_link_down, .mac_link_down = mtk_mac_link_down,
@@ -4307,8 +4274,6 @@ static int mtk_add_mac(struct mtk_eth *e @@ -4309,8 +4276,6 @@ static int mtk_add_mac(struct mtk_eth *e
mac->phylink_config.dev = &eth->netdev[id]->dev; mac->phylink_config.dev = &eth->netdev[id]->dev;
mac->phylink_config.type = PHYLINK_NETDEV; mac->phylink_config.type = PHYLINK_NETDEV;

View File

@ -23,7 +23,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -580,7 +580,7 @@ static void mtk_set_queue_speed(struct m @@ -579,7 +579,7 @@ static void mtk_set_queue_speed(struct m
FIELD_PREP(MTK_QTX_SCH_MIN_RATE_MAN, 1) | FIELD_PREP(MTK_QTX_SCH_MIN_RATE_MAN, 1) |
FIELD_PREP(MTK_QTX_SCH_MIN_RATE_EXP, 4) | FIELD_PREP(MTK_QTX_SCH_MIN_RATE_EXP, 4) |
MTK_QTX_SCH_LEAKY_BUCKET_SIZE; MTK_QTX_SCH_LEAKY_BUCKET_SIZE;
@ -32,7 +32,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
val |= MTK_QTX_SCH_LEAKY_BUCKET_EN; val |= MTK_QTX_SCH_LEAKY_BUCKET_EN;
if (IS_ENABLED(CONFIG_SOC_MT7621)) { if (IS_ENABLED(CONFIG_SOC_MT7621)) {
@@ -956,7 +956,7 @@ static bool mtk_rx_get_desc(struct mtk_e @@ -955,7 +955,7 @@ static bool mtk_rx_get_desc(struct mtk_e
rxd->rxd1 = READ_ONCE(dma_rxd->rxd1); rxd->rxd1 = READ_ONCE(dma_rxd->rxd1);
rxd->rxd3 = READ_ONCE(dma_rxd->rxd3); rxd->rxd3 = READ_ONCE(dma_rxd->rxd3);
rxd->rxd4 = READ_ONCE(dma_rxd->rxd4); rxd->rxd4 = READ_ONCE(dma_rxd->rxd4);
@ -41,7 +41,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
rxd->rxd5 = READ_ONCE(dma_rxd->rxd5); rxd->rxd5 = READ_ONCE(dma_rxd->rxd5);
rxd->rxd6 = READ_ONCE(dma_rxd->rxd6); rxd->rxd6 = READ_ONCE(dma_rxd->rxd6);
} }
@@ -1014,7 +1014,7 @@ static int mtk_init_fq_dma(struct mtk_et @@ -1013,7 +1013,7 @@ static int mtk_init_fq_dma(struct mtk_et
txd->txd3 = TX_DMA_PLEN0(MTK_QDMA_PAGE_SIZE); txd->txd3 = TX_DMA_PLEN0(MTK_QDMA_PAGE_SIZE);
txd->txd4 = 0; txd->txd4 = 0;
@ -50,7 +50,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
txd->txd5 = 0; txd->txd5 = 0;
txd->txd6 = 0; txd->txd6 = 0;
txd->txd7 = 0; txd->txd7 = 0;
@@ -1205,7 +1205,7 @@ static void mtk_tx_set_dma_desc(struct n @@ -1204,7 +1204,7 @@ static void mtk_tx_set_dma_desc(struct n
struct mtk_mac *mac = netdev_priv(dev); struct mtk_mac *mac = netdev_priv(dev);
struct mtk_eth *eth = mac->hw; struct mtk_eth *eth = mac->hw;
@ -59,7 +59,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
mtk_tx_set_dma_desc_v2(dev, txd, info); mtk_tx_set_dma_desc_v2(dev, txd, info);
else else
mtk_tx_set_dma_desc_v1(dev, txd, info); mtk_tx_set_dma_desc_v1(dev, txd, info);
@@ -1512,7 +1512,7 @@ static void mtk_update_rx_cpu_idx(struct @@ -1511,7 +1511,7 @@ static void mtk_update_rx_cpu_idx(struct
static bool mtk_page_pool_enabled(struct mtk_eth *eth) static bool mtk_page_pool_enabled(struct mtk_eth *eth)
{ {
@ -68,7 +68,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
} }
static struct page_pool *mtk_create_page_pool(struct mtk_eth *eth, static struct page_pool *mtk_create_page_pool(struct mtk_eth *eth,
@@ -1854,7 +1854,7 @@ static int mtk_poll_rx(struct napi_struc @@ -1853,7 +1853,7 @@ static int mtk_poll_rx(struct napi_struc
break; break;
/* find out which mac the packet come from. values start at 1 */ /* find out which mac the packet come from. values start at 1 */
@ -77,7 +77,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
mac = RX_DMA_GET_SPORT_V2(trxd.rxd5) - 1; mac = RX_DMA_GET_SPORT_V2(trxd.rxd5) - 1;
else if (!MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628) && else if (!MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628) &&
!(trxd.rxd4 & RX_DMA_SPECIAL_TAG)) !(trxd.rxd4 & RX_DMA_SPECIAL_TAG))
@@ -1950,7 +1950,7 @@ static int mtk_poll_rx(struct napi_struc @@ -1949,7 +1949,7 @@ static int mtk_poll_rx(struct napi_struc
skb->dev = netdev; skb->dev = netdev;
bytes += skb->len; bytes += skb->len;
@ -86,7 +86,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
reason = FIELD_GET(MTK_RXD5_PPE_CPU_REASON, trxd.rxd5); reason = FIELD_GET(MTK_RXD5_PPE_CPU_REASON, trxd.rxd5);
hash = trxd.rxd5 & MTK_RXD5_FOE_ENTRY; hash = trxd.rxd5 & MTK_RXD5_FOE_ENTRY;
if (hash != MTK_RXD5_FOE_ENTRY) if (hash != MTK_RXD5_FOE_ENTRY)
@@ -1975,8 +1975,8 @@ static int mtk_poll_rx(struct napi_struc @@ -1974,8 +1974,8 @@ static int mtk_poll_rx(struct napi_struc
/* When using VLAN untagging in combination with DSA, the /* When using VLAN untagging in combination with DSA, the
* hardware treats the MTK special tag as a VLAN and untags it. * hardware treats the MTK special tag as a VLAN and untags it.
*/ */
@ -97,7 +97,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
unsigned int port = RX_DMA_VPID(trxd.rxd3) & GENMASK(2, 0); unsigned int port = RX_DMA_VPID(trxd.rxd3) & GENMASK(2, 0);
if (port < ARRAY_SIZE(eth->dsa_meta) && if (port < ARRAY_SIZE(eth->dsa_meta) &&
@@ -2286,7 +2286,7 @@ static int mtk_tx_alloc(struct mtk_eth * @@ -2285,7 +2285,7 @@ static int mtk_tx_alloc(struct mtk_eth *
txd->txd2 = next_ptr; txd->txd2 = next_ptr;
txd->txd3 = TX_DMA_LS0 | TX_DMA_OWNER_CPU; txd->txd3 = TX_DMA_LS0 | TX_DMA_OWNER_CPU;
txd->txd4 = 0; txd->txd4 = 0;
@ -106,7 +106,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
txd->txd5 = 0; txd->txd5 = 0;
txd->txd6 = 0; txd->txd6 = 0;
txd->txd7 = 0; txd->txd7 = 0;
@@ -2339,14 +2339,14 @@ static int mtk_tx_alloc(struct mtk_eth * @@ -2338,14 +2338,14 @@ static int mtk_tx_alloc(struct mtk_eth *
FIELD_PREP(MTK_QTX_SCH_MIN_RATE_MAN, 1) | FIELD_PREP(MTK_QTX_SCH_MIN_RATE_MAN, 1) |
FIELD_PREP(MTK_QTX_SCH_MIN_RATE_EXP, 4) | FIELD_PREP(MTK_QTX_SCH_MIN_RATE_EXP, 4) |
MTK_QTX_SCH_LEAKY_BUCKET_SIZE; MTK_QTX_SCH_LEAKY_BUCKET_SIZE;
@ -123,7 +123,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
mtk_w32(eth, val, soc->reg_map->qdma.tx_sch_rate + 4); mtk_w32(eth, val, soc->reg_map->qdma.tx_sch_rate + 4);
} else { } else {
mtk_w32(eth, ring->phys_pdma, MT7628_TX_BASE_PTR0); mtk_w32(eth, ring->phys_pdma, MT7628_TX_BASE_PTR0);
@@ -2475,7 +2475,7 @@ static int mtk_rx_alloc(struct mtk_eth * @@ -2474,7 +2474,7 @@ static int mtk_rx_alloc(struct mtk_eth *
rxd->rxd3 = 0; rxd->rxd3 = 0;
rxd->rxd4 = 0; rxd->rxd4 = 0;
@ -132,7 +132,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
rxd->rxd5 = 0; rxd->rxd5 = 0;
rxd->rxd6 = 0; rxd->rxd6 = 0;
rxd->rxd7 = 0; rxd->rxd7 = 0;
@@ -3023,7 +3023,7 @@ static int mtk_start_dma(struct mtk_eth @@ -3025,7 +3025,7 @@ static int mtk_start_dma(struct mtk_eth
MTK_TX_BT_32DWORDS | MTK_NDP_CO_PRO | MTK_TX_BT_32DWORDS | MTK_NDP_CO_PRO |
MTK_RX_2B_OFFSET | MTK_TX_WB_DDONE; MTK_RX_2B_OFFSET | MTK_TX_WB_DDONE;
@ -141,7 +141,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
val |= MTK_MUTLI_CNT | MTK_RESV_BUF | val |= MTK_MUTLI_CNT | MTK_RESV_BUF |
MTK_WCOMP_EN | MTK_DMAD_WR_WDONE | MTK_WCOMP_EN | MTK_DMAD_WR_WDONE |
MTK_CHK_DDONE_EN | MTK_LEAKY_BUCKET_EN; MTK_CHK_DDONE_EN | MTK_LEAKY_BUCKET_EN;
@@ -3165,7 +3165,7 @@ static int mtk_open(struct net_device *d @@ -3167,7 +3167,7 @@ static int mtk_open(struct net_device *d
phylink_start(mac->phylink); phylink_start(mac->phylink);
netif_tx_start_all_queues(dev); netif_tx_start_all_queues(dev);
@ -150,7 +150,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
return 0; return 0;
if (mtk_uses_dsa(dev) && !eth->prog) { if (mtk_uses_dsa(dev) && !eth->prog) {
@@ -3430,7 +3430,7 @@ static void mtk_hw_reset(struct mtk_eth @@ -3432,7 +3432,7 @@ static void mtk_hw_reset(struct mtk_eth
{ {
u32 val; u32 val;
@ -159,7 +159,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
regmap_write(eth->ethsys, ETHSYS_FE_RST_CHK_IDLE_EN, 0); regmap_write(eth->ethsys, ETHSYS_FE_RST_CHK_IDLE_EN, 0);
val = RSTCTRL_PPE0_V2; val = RSTCTRL_PPE0_V2;
} else { } else {
@@ -3442,7 +3442,7 @@ static void mtk_hw_reset(struct mtk_eth @@ -3444,7 +3444,7 @@ static void mtk_hw_reset(struct mtk_eth
ethsys_reset(eth, RSTCTRL_ETH | RSTCTRL_FE | val); ethsys_reset(eth, RSTCTRL_ETH | RSTCTRL_FE | val);
@ -168,7 +168,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
regmap_write(eth->ethsys, ETHSYS_FE_RST_CHK_IDLE_EN, regmap_write(eth->ethsys, ETHSYS_FE_RST_CHK_IDLE_EN,
0x3ffffff); 0x3ffffff);
} }
@@ -3468,7 +3468,7 @@ static void mtk_hw_warm_reset(struct mtk @@ -3470,7 +3470,7 @@ static void mtk_hw_warm_reset(struct mtk
return; return;
} }
@ -177,7 +177,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
rst_mask = RSTCTRL_ETH | RSTCTRL_PPE0_V2; rst_mask = RSTCTRL_ETH | RSTCTRL_PPE0_V2;
else else
rst_mask = RSTCTRL_ETH | RSTCTRL_PPE0; rst_mask = RSTCTRL_ETH | RSTCTRL_PPE0;
@@ -3638,7 +3638,7 @@ static int mtk_hw_init(struct mtk_eth *e @@ -3640,7 +3640,7 @@ static int mtk_hw_init(struct mtk_eth *e
else else
mtk_hw_reset(eth); mtk_hw_reset(eth);
@ -186,7 +186,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
/* Set FE to PDMAv2 if necessary */ /* Set FE to PDMAv2 if necessary */
val = mtk_r32(eth, MTK_FE_GLO_MISC); val = mtk_r32(eth, MTK_FE_GLO_MISC);
mtk_w32(eth, val | BIT(4), MTK_FE_GLO_MISC); mtk_w32(eth, val | BIT(4), MTK_FE_GLO_MISC);
@@ -3675,7 +3675,7 @@ static int mtk_hw_init(struct mtk_eth *e @@ -3677,7 +3677,7 @@ static int mtk_hw_init(struct mtk_eth *e
*/ */
val = mtk_r32(eth, MTK_CDMQ_IG_CTRL); val = mtk_r32(eth, MTK_CDMQ_IG_CTRL);
mtk_w32(eth, val | MTK_CDMQ_STAG_EN, MTK_CDMQ_IG_CTRL); mtk_w32(eth, val | MTK_CDMQ_STAG_EN, MTK_CDMQ_IG_CTRL);
@ -195,7 +195,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
val = mtk_r32(eth, MTK_CDMP_IG_CTRL); val = mtk_r32(eth, MTK_CDMP_IG_CTRL);
mtk_w32(eth, val | MTK_CDMP_STAG_EN, MTK_CDMP_IG_CTRL); mtk_w32(eth, val | MTK_CDMP_STAG_EN, MTK_CDMP_IG_CTRL);
@@ -3697,7 +3697,7 @@ static int mtk_hw_init(struct mtk_eth *e @@ -3699,7 +3699,7 @@ static int mtk_hw_init(struct mtk_eth *e
mtk_w32(eth, eth->soc->txrx.rx_irq_done_mask, reg_map->qdma.int_grp + 4); mtk_w32(eth, eth->soc->txrx.rx_irq_done_mask, reg_map->qdma.int_grp + 4);
mtk_w32(eth, 0x21021000, MTK_FE_INT_GRP); mtk_w32(eth, 0x21021000, MTK_FE_INT_GRP);
@ -204,7 +204,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
/* PSE should not drop port8 and port9 packets from WDMA Tx */ /* PSE should not drop port8 and port9 packets from WDMA Tx */
mtk_w32(eth, 0x00000300, PSE_DROP_CFG); mtk_w32(eth, 0x00000300, PSE_DROP_CFG);
@@ -4486,7 +4486,7 @@ static int mtk_probe(struct platform_dev @@ -4488,7 +4488,7 @@ static int mtk_probe(struct platform_dev
} }
} }
@ -213,7 +213,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res) { if (!res) {
err = -EINVAL; err = -EINVAL;
@@ -4594,9 +4594,8 @@ static int mtk_probe(struct platform_dev @@ -4596,9 +4596,8 @@ static int mtk_probe(struct platform_dev
} }
if (eth->soc->offload_version) { if (eth->soc->offload_version) {
@ -224,7 +224,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
num_ppe = min_t(u32, ARRAY_SIZE(eth->ppe), num_ppe); num_ppe = min_t(u32, ARRAY_SIZE(eth->ppe), num_ppe);
for (i = 0; i < num_ppe; i++) { for (i = 0; i < num_ppe; i++) {
u32 ppe_addr = eth->soc->reg_map->ppe_base + i * 0x400; u32 ppe_addr = eth->soc->reg_map->ppe_base + i * 0x400;
@@ -4688,6 +4687,7 @@ static const struct mtk_soc_data mt2701_ @@ -4690,6 +4689,7 @@ static const struct mtk_soc_data mt2701_
.hw_features = MTK_HW_FEATURES, .hw_features = MTK_HW_FEATURES,
.required_clks = MT7623_CLKS_BITMAP, .required_clks = MT7623_CLKS_BITMAP,
.required_pctl = true, .required_pctl = true,
@ -232,7 +232,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
.txrx = { .txrx = {
.txd_size = sizeof(struct mtk_tx_dma), .txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma), .rxd_size = sizeof(struct mtk_rx_dma),
@@ -4704,6 +4704,7 @@ static const struct mtk_soc_data mt7621_ @@ -4706,6 +4706,7 @@ static const struct mtk_soc_data mt7621_
.hw_features = MTK_HW_FEATURES, .hw_features = MTK_HW_FEATURES,
.required_clks = MT7621_CLKS_BITMAP, .required_clks = MT7621_CLKS_BITMAP,
.required_pctl = false, .required_pctl = false,
@ -240,7 +240,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
.offload_version = 1, .offload_version = 1,
.hash_offset = 2, .hash_offset = 2,
.foe_entry_size = MTK_FOE_ENTRY_V1_SIZE, .foe_entry_size = MTK_FOE_ENTRY_V1_SIZE,
@@ -4724,6 +4725,7 @@ static const struct mtk_soc_data mt7622_ @@ -4726,6 +4727,7 @@ static const struct mtk_soc_data mt7622_
.hw_features = MTK_HW_FEATURES, .hw_features = MTK_HW_FEATURES,
.required_clks = MT7622_CLKS_BITMAP, .required_clks = MT7622_CLKS_BITMAP,
.required_pctl = false, .required_pctl = false,
@ -248,7 +248,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
.offload_version = 2, .offload_version = 2,
.hash_offset = 2, .hash_offset = 2,
.has_accounting = true, .has_accounting = true,
@@ -4744,6 +4746,7 @@ static const struct mtk_soc_data mt7623_ @@ -4746,6 +4748,7 @@ static const struct mtk_soc_data mt7623_
.hw_features = MTK_HW_FEATURES, .hw_features = MTK_HW_FEATURES,
.required_clks = MT7623_CLKS_BITMAP, .required_clks = MT7623_CLKS_BITMAP,
.required_pctl = true, .required_pctl = true,
@ -256,7 +256,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
.offload_version = 1, .offload_version = 1,
.hash_offset = 2, .hash_offset = 2,
.foe_entry_size = MTK_FOE_ENTRY_V1_SIZE, .foe_entry_size = MTK_FOE_ENTRY_V1_SIZE,
@@ -4766,6 +4769,7 @@ static const struct mtk_soc_data mt7629_ @@ -4768,6 +4771,7 @@ static const struct mtk_soc_data mt7629_
.required_clks = MT7629_CLKS_BITMAP, .required_clks = MT7629_CLKS_BITMAP,
.required_pctl = false, .required_pctl = false,
.has_accounting = true, .has_accounting = true,
@ -264,7 +264,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
.txrx = { .txrx = {
.txd_size = sizeof(struct mtk_tx_dma), .txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma), .rxd_size = sizeof(struct mtk_rx_dma),
@@ -4783,6 +4787,7 @@ static const struct mtk_soc_data mt7981_ @@ -4785,6 +4789,7 @@ static const struct mtk_soc_data mt7981_
.hw_features = MTK_HW_FEATURES, .hw_features = MTK_HW_FEATURES,
.required_clks = MT7981_CLKS_BITMAP, .required_clks = MT7981_CLKS_BITMAP,
.required_pctl = false, .required_pctl = false,
@ -272,7 +272,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
.offload_version = 2, .offload_version = 2,
.hash_offset = 4, .hash_offset = 4,
.has_accounting = true, .has_accounting = true,
@@ -4804,6 +4809,7 @@ static const struct mtk_soc_data mt7986_ @@ -4806,6 +4811,7 @@ static const struct mtk_soc_data mt7986_
.hw_features = MTK_HW_FEATURES, .hw_features = MTK_HW_FEATURES,
.required_clks = MT7986_CLKS_BITMAP, .required_clks = MT7986_CLKS_BITMAP,
.required_pctl = false, .required_pctl = false,
@ -280,7 +280,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
.offload_version = 2, .offload_version = 2,
.hash_offset = 4, .hash_offset = 4,
.has_accounting = true, .has_accounting = true,
@@ -4824,6 +4830,7 @@ static const struct mtk_soc_data rt5350_ @@ -4826,6 +4832,7 @@ static const struct mtk_soc_data rt5350_
.hw_features = MTK_HW_FEATURES_MT7628, .hw_features = MTK_HW_FEATURES_MT7628,
.required_clks = MT7628_CLKS_BITMAP, .required_clks = MT7628_CLKS_BITMAP,
.required_pctl = false, .required_pctl = false,
@ -491,7 +491,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
else else
val = MTK_FOE_IB2_MIB_CNT; val = MTK_FOE_IB2_MIB_CNT;
@@ -965,7 +965,7 @@ void mtk_ppe_start(struct mtk_ppe *ppe) @@ -965,7 +965,7 @@ void mtk_ppe_start(struct mtk_ppe *ppe)
MTK_PPE_SCAN_MODE_KEEPALIVE_AGE) | MTK_PPE_SCAN_MODE_CHECK_AGE) |
FIELD_PREP(MTK_PPE_TB_CFG_ENTRY_NUM, FIELD_PREP(MTK_PPE_TB_CFG_ENTRY_NUM,
MTK_PPE_ENTRIES_SHIFT); MTK_PPE_ENTRIES_SHIFT);
- if (MTK_HAS_CAPS(ppe->eth->soc->caps, MTK_NETSYS_V2)) - if (MTK_HAS_CAPS(ppe->eth->soc->caps, MTK_NETSYS_V2))

View File

@ -17,7 +17,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -882,7 +882,7 @@ static void mtk_stats_update(struct mtk_ @@ -881,7 +881,7 @@ static void mtk_stats_update(struct mtk_
{ {
int i; int i;
@ -26,7 +26,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
if (!eth->mac[i] || !eth->mac[i]->hw_stats) if (!eth->mac[i] || !eth->mac[i]->hw_stats)
continue; continue;
if (spin_trylock(&eth->mac[i]->hw_stats->stats_lock)) { if (spin_trylock(&eth->mac[i]->hw_stats->stats_lock)) {
@@ -1387,7 +1387,7 @@ static int mtk_queue_stopped(struct mtk_ @@ -1386,7 +1386,7 @@ static int mtk_queue_stopped(struct mtk_
{ {
int i; int i;
@ -35,7 +35,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
if (!eth->netdev[i]) if (!eth->netdev[i])
continue; continue;
if (netif_queue_stopped(eth->netdev[i])) if (netif_queue_stopped(eth->netdev[i]))
@@ -1401,7 +1401,7 @@ static void mtk_wake_queue(struct mtk_et @@ -1400,7 +1400,7 @@ static void mtk_wake_queue(struct mtk_et
{ {
int i; int i;
@ -44,7 +44,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
if (!eth->netdev[i]) if (!eth->netdev[i])
continue; continue;
netif_tx_wake_all_queues(eth->netdev[i]); netif_tx_wake_all_queues(eth->netdev[i]);
@@ -1860,7 +1860,7 @@ static int mtk_poll_rx(struct napi_struc @@ -1859,7 +1859,7 @@ static int mtk_poll_rx(struct napi_struc
!(trxd.rxd4 & RX_DMA_SPECIAL_TAG)) !(trxd.rxd4 & RX_DMA_SPECIAL_TAG))
mac = RX_DMA_GET_SPORT(trxd.rxd4) - 1; mac = RX_DMA_GET_SPORT(trxd.rxd4) - 1;
@ -53,7 +53,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
!eth->netdev[mac])) !eth->netdev[mac]))
goto release_desc; goto release_desc;
@@ -2897,7 +2897,7 @@ static void mtk_dma_free(struct mtk_eth @@ -2899,7 +2899,7 @@ static void mtk_dma_free(struct mtk_eth
const struct mtk_soc_data *soc = eth->soc; const struct mtk_soc_data *soc = eth->soc;
int i; int i;
@ -62,7 +62,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
if (eth->netdev[i]) if (eth->netdev[i])
netdev_reset_queue(eth->netdev[i]); netdev_reset_queue(eth->netdev[i]);
if (eth->scratch_ring) { if (eth->scratch_ring) {
@@ -3051,8 +3051,13 @@ static void mtk_gdm_config(struct mtk_et @@ -3053,8 +3053,13 @@ static void mtk_gdm_config(struct mtk_et
if (MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628)) if (MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628))
return; return;
@ -78,7 +78,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
/* default setup the forward port to send frame to PDMA */ /* default setup the forward port to send frame to PDMA */
val &= ~0xffff; val &= ~0xffff;
@@ -3062,7 +3067,7 @@ static void mtk_gdm_config(struct mtk_et @@ -3064,7 +3069,7 @@ static void mtk_gdm_config(struct mtk_et
val |= config; val |= config;
@ -87,7 +87,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
val |= MTK_GDMA_SPECIAL_TAG; val |= MTK_GDMA_SPECIAL_TAG;
mtk_w32(eth, val, MTK_GDMA_FWD_CFG(i)); mtk_w32(eth, val, MTK_GDMA_FWD_CFG(i));
@@ -3659,15 +3664,15 @@ static int mtk_hw_init(struct mtk_eth *e @@ -3661,15 +3666,15 @@ static int mtk_hw_init(struct mtk_eth *e
* up with the more appropriate value when mtk_mac_config call is being * up with the more appropriate value when mtk_mac_config call is being
* invoked. * invoked.
*/ */
@ -109,7 +109,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
} }
/* Indicates CDM to parse the MTK special tag from CPU /* Indicates CDM to parse the MTK special tag from CPU
@@ -3847,7 +3852,7 @@ static void mtk_pending_work(struct work @@ -3849,7 +3854,7 @@ static void mtk_pending_work(struct work
mtk_prepare_for_reset(eth); mtk_prepare_for_reset(eth);
/* stop all devices to make sure that dma is properly shut down */ /* stop all devices to make sure that dma is properly shut down */
@ -118,7 +118,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
if (!eth->netdev[i] || !netif_running(eth->netdev[i])) if (!eth->netdev[i] || !netif_running(eth->netdev[i]))
continue; continue;
@@ -3863,8 +3868,8 @@ static void mtk_pending_work(struct work @@ -3865,8 +3870,8 @@ static void mtk_pending_work(struct work
mtk_hw_init(eth, true); mtk_hw_init(eth, true);
/* restart DMA and enable IRQs */ /* restart DMA and enable IRQs */
@ -129,7 +129,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
continue; continue;
if (mtk_open(eth->netdev[i])) { if (mtk_open(eth->netdev[i])) {
@@ -3891,7 +3896,7 @@ static int mtk_free_dev(struct mtk_eth * @@ -3893,7 +3898,7 @@ static int mtk_free_dev(struct mtk_eth *
{ {
int i; int i;
@ -138,7 +138,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
if (!eth->netdev[i]) if (!eth->netdev[i])
continue; continue;
free_netdev(eth->netdev[i]); free_netdev(eth->netdev[i]);
@@ -3910,7 +3915,7 @@ static int mtk_unreg_dev(struct mtk_eth @@ -3912,7 +3917,7 @@ static int mtk_unreg_dev(struct mtk_eth
{ {
int i; int i;
@ -147,7 +147,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
struct mtk_mac *mac; struct mtk_mac *mac;
if (!eth->netdev[i]) if (!eth->netdev[i])
continue; continue;
@@ -4211,7 +4216,7 @@ static int mtk_add_mac(struct mtk_eth *e @@ -4213,7 +4218,7 @@ static int mtk_add_mac(struct mtk_eth *e
} }
id = be32_to_cpup(_id); id = be32_to_cpup(_id);
@ -156,7 +156,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
dev_err(eth->dev, "%d is not a valid mac id\n", id); dev_err(eth->dev, "%d is not a valid mac id\n", id);
return -EINVAL; return -EINVAL;
} }
@@ -4356,7 +4361,7 @@ void mtk_eth_set_dma_device(struct mtk_e @@ -4358,7 +4363,7 @@ void mtk_eth_set_dma_device(struct mtk_e
rtnl_lock(); rtnl_lock();
@ -165,7 +165,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
dev = eth->netdev[i]; dev = eth->netdev[i];
if (!dev || !(dev->flags & IFF_UP)) if (!dev || !(dev->flags & IFF_UP))
@@ -4662,7 +4667,7 @@ static int mtk_remove(struct platform_de @@ -4664,7 +4669,7 @@ static int mtk_remove(struct platform_de
int i; int i;
/* stop all devices to make sure that dma is properly shut down */ /* stop all devices to make sure that dma is properly shut down */

View File

@ -18,7 +18,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -862,17 +862,32 @@ void mtk_stats_update_mac(struct mtk_mac @@ -861,17 +861,32 @@ void mtk_stats_update_mac(struct mtk_mac
mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x20 + offs); mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x20 + offs);
hw_stats->rx_flow_control_packets += hw_stats->rx_flow_control_packets +=
mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x24 + offs); mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x24 + offs);
@ -62,7 +62,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
} }
u64_stats_update_end(&hw_stats->syncp); u64_stats_update_end(&hw_stats->syncp);
@@ -1176,7 +1191,10 @@ static void mtk_tx_set_dma_desc_v2(struc @@ -1175,7 +1190,10 @@ static void mtk_tx_set_dma_desc_v2(struc
data |= TX_DMA_LS0; data |= TX_DMA_LS0;
WRITE_ONCE(desc->txd3, data); WRITE_ONCE(desc->txd3, data);
@ -74,7 +74,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
data |= TX_DMA_SWC_V2 | QID_BITS_V2(info->qid); data |= TX_DMA_SWC_V2 | QID_BITS_V2(info->qid);
WRITE_ONCE(desc->txd4, data); WRITE_ONCE(desc->txd4, data);
@@ -1187,6 +1205,8 @@ static void mtk_tx_set_dma_desc_v2(struc @@ -1186,6 +1204,8 @@ static void mtk_tx_set_dma_desc_v2(struc
/* tx checksum offload */ /* tx checksum offload */
if (info->csum) if (info->csum)
data |= TX_DMA_CHKSUM_V2; data |= TX_DMA_CHKSUM_V2;
@ -83,7 +83,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
} }
WRITE_ONCE(desc->txd5, data); WRITE_ONCE(desc->txd5, data);
@@ -1252,8 +1272,7 @@ static int mtk_tx_map(struct sk_buff *sk @@ -1251,8 +1271,7 @@ static int mtk_tx_map(struct sk_buff *sk
mtk_tx_set_dma_desc(dev, itxd, &txd_info); mtk_tx_set_dma_desc(dev, itxd, &txd_info);
itx_buf->flags |= MTK_TX_FLAGS_SINGLE0; itx_buf->flags |= MTK_TX_FLAGS_SINGLE0;
@ -93,7 +93,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
setup_tx_buf(eth, itx_buf, itxd_pdma, txd_info.addr, txd_info.size, setup_tx_buf(eth, itx_buf, itxd_pdma, txd_info.addr, txd_info.size,
k++); k++);
@@ -1301,8 +1320,7 @@ static int mtk_tx_map(struct sk_buff *sk @@ -1300,8 +1319,7 @@ static int mtk_tx_map(struct sk_buff *sk
memset(tx_buf, 0, sizeof(*tx_buf)); memset(tx_buf, 0, sizeof(*tx_buf));
tx_buf->data = (void *)MTK_DMA_DUMMY_DESC; tx_buf->data = (void *)MTK_DMA_DUMMY_DESC;
tx_buf->flags |= MTK_TX_FLAGS_PAGE0; tx_buf->flags |= MTK_TX_FLAGS_PAGE0;
@ -103,7 +103,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
setup_tx_buf(eth, tx_buf, txd_pdma, txd_info.addr, setup_tx_buf(eth, tx_buf, txd_pdma, txd_info.addr,
txd_info.size, k++); txd_info.size, k++);
@@ -1604,7 +1622,7 @@ static int mtk_xdp_frame_map(struct mtk_ @@ -1603,7 +1621,7 @@ static int mtk_xdp_frame_map(struct mtk_
} }
mtk_tx_set_dma_desc(dev, txd, txd_info); mtk_tx_set_dma_desc(dev, txd, txd_info);
@ -112,7 +112,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tx_buf->type = dma_map ? MTK_TYPE_XDP_NDO : MTK_TYPE_XDP_TX; tx_buf->type = dma_map ? MTK_TYPE_XDP_NDO : MTK_TYPE_XDP_TX;
tx_buf->data = (void *)MTK_DMA_DUMMY_DESC; tx_buf->data = (void *)MTK_DMA_DUMMY_DESC;
@@ -1854,11 +1872,24 @@ static int mtk_poll_rx(struct napi_struc @@ -1853,11 +1871,24 @@ static int mtk_poll_rx(struct napi_struc
break; break;
/* find out which mac the packet come from. values start at 1 */ /* find out which mac the packet come from. values start at 1 */
@ -141,7 +141,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
if (unlikely(mac < 0 || mac >= MTK_MAX_DEVS || if (unlikely(mac < 0 || mac >= MTK_MAX_DEVS ||
!eth->netdev[mac])) !eth->netdev[mac]))
@@ -2080,7 +2111,6 @@ static int mtk_poll_tx_qdma(struct mtk_e @@ -2079,7 +2110,6 @@ static int mtk_poll_tx_qdma(struct mtk_e
while ((cpu != dma) && budget) { while ((cpu != dma) && budget) {
u32 next_cpu = desc->txd2; u32 next_cpu = desc->txd2;
@ -149,7 +149,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
desc = mtk_qdma_phys_to_virt(ring, desc->txd2); desc = mtk_qdma_phys_to_virt(ring, desc->txd2);
if ((desc->txd3 & TX_DMA_OWNER_CPU) == 0) if ((desc->txd3 & TX_DMA_OWNER_CPU) == 0)
@@ -2088,15 +2118,13 @@ static int mtk_poll_tx_qdma(struct mtk_e @@ -2087,15 +2117,13 @@ static int mtk_poll_tx_qdma(struct mtk_e
tx_buf = mtk_desc_to_tx_buf(ring, desc, tx_buf = mtk_desc_to_tx_buf(ring, desc,
eth->soc->txrx.txd_size); eth->soc->txrx.txd_size);
@ -167,7 +167,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
budget--; budget--;
} }
@@ -3702,7 +3730,24 @@ static int mtk_hw_init(struct mtk_eth *e @@ -3704,7 +3732,24 @@ static int mtk_hw_init(struct mtk_eth *e
mtk_w32(eth, eth->soc->txrx.rx_irq_done_mask, reg_map->qdma.int_grp + 4); mtk_w32(eth, eth->soc->txrx.rx_irq_done_mask, reg_map->qdma.int_grp + 4);
mtk_w32(eth, 0x21021000, MTK_FE_INT_GRP); mtk_w32(eth, 0x21021000, MTK_FE_INT_GRP);
@ -193,7 +193,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
/* PSE should not drop port8 and port9 packets from WDMA Tx */ /* PSE should not drop port8 and port9 packets from WDMA Tx */
mtk_w32(eth, 0x00000300, PSE_DROP_CFG); mtk_w32(eth, 0x00000300, PSE_DROP_CFG);
@@ -4264,7 +4309,11 @@ static int mtk_add_mac(struct mtk_eth *e @@ -4266,7 +4311,11 @@ static int mtk_add_mac(struct mtk_eth *e
} }
spin_lock_init(&mac->hw_stats->stats_lock); spin_lock_init(&mac->hw_stats->stats_lock);
u64_stats_init(&mac->hw_stats->syncp); u64_stats_init(&mac->hw_stats->syncp);

View File

@ -219,7 +219,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
return; return;
err_phy: err_phy:
@@ -726,11 +842,15 @@ static int mtk_mdio_init(struct mtk_eth @@ -725,11 +841,15 @@ static int mtk_mdio_init(struct mtk_eth
} }
divider = min_t(unsigned int, DIV_ROUND_UP(MDC_MAX_FREQ, max_clk), 63); divider = min_t(unsigned int, DIV_ROUND_UP(MDC_MAX_FREQ, max_clk), 63);
@ -239,7 +239,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
dev_dbg(eth->dev, "MDC is running on %d Hz\n", MDC_MAX_FREQ / divider); dev_dbg(eth->dev, "MDC is running on %d Hz\n", MDC_MAX_FREQ / divider);
@@ -1191,10 +1311,19 @@ static void mtk_tx_set_dma_desc_v2(struc @@ -1190,10 +1310,19 @@ static void mtk_tx_set_dma_desc_v2(struc
data |= TX_DMA_LS0; data |= TX_DMA_LS0;
WRITE_ONCE(desc->txd3, data); WRITE_ONCE(desc->txd3, data);
@ -263,7 +263,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
data |= TX_DMA_SWC_V2 | QID_BITS_V2(info->qid); data |= TX_DMA_SWC_V2 | QID_BITS_V2(info->qid);
WRITE_ONCE(desc->txd4, data); WRITE_ONCE(desc->txd4, data);
@@ -4358,6 +4487,17 @@ static int mtk_add_mac(struct mtk_eth *e @@ -4360,6 +4489,17 @@ static int mtk_add_mac(struct mtk_eth *e
mac->phylink_config.supported_interfaces); mac->phylink_config.supported_interfaces);
} }
@ -281,7 +281,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
phylink = phylink_create(&mac->phylink_config, phylink = phylink_create(&mac->phylink_config,
of_fwnode_handle(mac->of_node), of_fwnode_handle(mac->of_node),
phy_mode, &mtk_phylink_ops); phy_mode, &mtk_phylink_ops);
@@ -4878,6 +5018,24 @@ static const struct mtk_soc_data mt7986_ @@ -4880,6 +5020,24 @@ static const struct mtk_soc_data mt7986_
}, },
}; };
@ -306,7 +306,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
static const struct mtk_soc_data rt5350_data = { static const struct mtk_soc_data rt5350_data = {
.reg_map = &mt7628_reg_map, .reg_map = &mt7628_reg_map,
.caps = MT7628_CAPS, .caps = MT7628_CAPS,
@@ -4896,14 +5054,15 @@ static const struct mtk_soc_data rt5350_ @@ -4898,14 +5056,15 @@ static const struct mtk_soc_data rt5350_
}; };
const struct of_device_id of_mtk_match[] = { const struct of_device_id of_mtk_match[] = {

View File

@ -16,7 +16,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -1659,7 +1659,7 @@ static void mtk_update_rx_cpu_idx(struct @@ -1658,7 +1658,7 @@ static void mtk_update_rx_cpu_idx(struct
static bool mtk_page_pool_enabled(struct mtk_eth *eth) static bool mtk_page_pool_enabled(struct mtk_eth *eth)
{ {

View File

@ -18,7 +18,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -5026,6 +5026,9 @@ static const struct mtk_soc_data mt7988_ @@ -5028,6 +5028,9 @@ static const struct mtk_soc_data mt7988_
.required_clks = MT7988_CLKS_BITMAP, .required_clks = MT7988_CLKS_BITMAP,
.required_pctl = false, .required_pctl = false,
.version = 3, .version = 3,

View File

@ -20,7 +20,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -5028,6 +5028,7 @@ static const struct mtk_soc_data mt7988_ @@ -5030,6 +5030,7 @@ static const struct mtk_soc_data mt7988_
.version = 3, .version = 3,
.offload_version = 2, .offload_version = 2,
.hash_offset = 4, .hash_offset = 4,

View File

@ -16,7 +16,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -3592,19 +3592,34 @@ static void mtk_hw_reset(struct mtk_eth @@ -3594,19 +3594,34 @@ static void mtk_hw_reset(struct mtk_eth
{ {
u32 val; u32 val;
@ -56,7 +56,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
regmap_write(eth->ethsys, ETHSYS_FE_RST_CHK_IDLE_EN, regmap_write(eth->ethsys, ETHSYS_FE_RST_CHK_IDLE_EN,
0x3ffffff); 0x3ffffff);
} }
@@ -3630,13 +3645,21 @@ static void mtk_hw_warm_reset(struct mtk @@ -3632,13 +3647,21 @@ static void mtk_hw_warm_reset(struct mtk
return; return;
} }
@ -83,7 +83,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
regmap_update_bits(eth->ethsys, ETHSYS_RSTCTRL, rst_mask, rst_mask); regmap_update_bits(eth->ethsys, ETHSYS_RSTCTRL, rst_mask, rst_mask);
@@ -3988,11 +4011,17 @@ static void mtk_prepare_for_reset(struct @@ -3990,11 +4013,17 @@ static void mtk_prepare_for_reset(struct
u32 val; u32 val;
int i; int i;
@ -106,7 +106,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
/* adjust PPE configurations to prepare for reset */ /* adjust PPE configurations to prepare for reset */
for (i = 0; i < ARRAY_SIZE(eth->ppe); i++) for (i = 0; i < ARRAY_SIZE(eth->ppe); i++)
@@ -4053,11 +4082,18 @@ static void mtk_pending_work(struct work @@ -4055,11 +4084,18 @@ static void mtk_pending_work(struct work
} }
} }

View File

@ -20,7 +20,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -1119,10 +1119,13 @@ static int mtk_init_fq_dma(struct mtk_et @@ -1118,10 +1118,13 @@ static int mtk_init_fq_dma(struct mtk_et
dma_addr_t dma_addr; dma_addr_t dma_addr;
int i; int i;
@ -38,7 +38,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
if (unlikely(!eth->scratch_ring)) if (unlikely(!eth->scratch_ring))
return -ENOMEM; return -ENOMEM;
@@ -2430,8 +2433,14 @@ static int mtk_tx_alloc(struct mtk_eth * @@ -2429,8 +2432,14 @@ static int mtk_tx_alloc(struct mtk_eth *
if (!ring->buf) if (!ring->buf)
goto no_tx_mem; goto no_tx_mem;
@ -55,7 +55,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
if (!ring->dma) if (!ring->dma)
goto no_tx_mem; goto no_tx_mem;
@@ -2530,8 +2539,7 @@ static void mtk_tx_clean(struct mtk_eth @@ -2529,8 +2538,7 @@ static void mtk_tx_clean(struct mtk_eth
kfree(ring->buf); kfree(ring->buf);
ring->buf = NULL; ring->buf = NULL;
} }
@ -65,7 +65,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
dma_free_coherent(eth->dma_dev, dma_free_coherent(eth->dma_dev,
ring->dma_size * soc->txrx.txd_size, ring->dma_size * soc->txrx.txd_size,
ring->dma, ring->phys); ring->dma, ring->phys);
@@ -2550,9 +2558,14 @@ static int mtk_rx_alloc(struct mtk_eth * @@ -2549,9 +2557,14 @@ static int mtk_rx_alloc(struct mtk_eth *
{ {
const struct mtk_reg_map *reg_map = eth->soc->reg_map; const struct mtk_reg_map *reg_map = eth->soc->reg_map;
struct mtk_rx_ring *ring; struct mtk_rx_ring *ring;
@ -81,7 +81,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
if (rx_flag == MTK_RX_FLAGS_QDMA) { if (rx_flag == MTK_RX_FLAGS_QDMA) {
if (ring_no) if (ring_no)
return -EINVAL; return -EINVAL;
@@ -2587,9 +2600,20 @@ static int mtk_rx_alloc(struct mtk_eth * @@ -2586,9 +2599,20 @@ static int mtk_rx_alloc(struct mtk_eth *
ring->page_pool = pp; ring->page_pool = pp;
} }
@ -105,7 +105,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
if (!ring->dma) if (!ring->dma)
return -ENOMEM; return -ENOMEM;
@@ -2674,7 +2698,7 @@ static int mtk_rx_alloc(struct mtk_eth * @@ -2673,7 +2697,7 @@ static int mtk_rx_alloc(struct mtk_eth *
return 0; return 0;
} }
@ -114,7 +114,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
{ {
int i; int i;
@@ -2697,7 +2721,7 @@ static void mtk_rx_clean(struct mtk_eth @@ -2696,7 +2720,7 @@ static void mtk_rx_clean(struct mtk_eth
ring->data = NULL; ring->data = NULL;
} }
@ -123,7 +123,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
dma_free_coherent(eth->dma_dev, dma_free_coherent(eth->dma_dev,
ring->dma_size * eth->soc->txrx.rxd_size, ring->dma_size * eth->soc->txrx.rxd_size,
ring->dma, ring->phys); ring->dma, ring->phys);
@@ -3057,7 +3081,7 @@ static void mtk_dma_free(struct mtk_eth @@ -3059,7 +3083,7 @@ static void mtk_dma_free(struct mtk_eth
for (i = 0; i < MTK_MAX_DEVS; i++) for (i = 0; i < MTK_MAX_DEVS; i++)
if (eth->netdev[i]) if (eth->netdev[i])
netdev_reset_queue(eth->netdev[i]); netdev_reset_queue(eth->netdev[i]);
@ -132,7 +132,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
dma_free_coherent(eth->dma_dev, dma_free_coherent(eth->dma_dev,
MTK_QDMA_RING_SIZE * soc->txrx.txd_size, MTK_QDMA_RING_SIZE * soc->txrx.txd_size,
eth->scratch_ring, eth->phy_scratch_ring); eth->scratch_ring, eth->phy_scratch_ring);
@@ -3065,13 +3089,13 @@ static void mtk_dma_free(struct mtk_eth @@ -3067,13 +3091,13 @@ static void mtk_dma_free(struct mtk_eth
eth->phy_scratch_ring = 0; eth->phy_scratch_ring = 0;
} }
mtk_tx_clean(eth); mtk_tx_clean(eth);
@ -149,7 +149,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
} }
kfree(eth->scratch_head); kfree(eth->scratch_head);
@@ -4639,7 +4663,7 @@ static int mtk_sgmii_init(struct mtk_eth @@ -4641,7 +4665,7 @@ static int mtk_sgmii_init(struct mtk_eth
static int mtk_probe(struct platform_device *pdev) static int mtk_probe(struct platform_device *pdev)
{ {
@ -158,7 +158,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
struct device_node *mac_np; struct device_node *mac_np;
struct mtk_eth *eth; struct mtk_eth *eth;
int err, i; int err, i;
@@ -4659,6 +4683,20 @@ static int mtk_probe(struct platform_dev @@ -4661,6 +4685,20 @@ static int mtk_probe(struct platform_dev
if (MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628)) if (MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628))
eth->ip_align = NET_IP_ALIGN; eth->ip_align = NET_IP_ALIGN;
@ -179,7 +179,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
spin_lock_init(&eth->page_lock); spin_lock_init(&eth->page_lock);
spin_lock_init(&eth->tx_irq_lock); spin_lock_init(&eth->tx_irq_lock);
spin_lock_init(&eth->rx_irq_lock); spin_lock_init(&eth->rx_irq_lock);
@@ -4722,6 +4760,18 @@ static int mtk_probe(struct platform_dev @@ -4724,6 +4762,18 @@ static int mtk_probe(struct platform_dev
err = -EINVAL; err = -EINVAL;
goto err_destroy_sgmii; goto err_destroy_sgmii;
} }

View File

@ -19,7 +19,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -1312,6 +1312,10 @@ static void mtk_tx_set_dma_desc_v2(struc @@ -1311,6 +1311,10 @@ static void mtk_tx_set_dma_desc_v2(struc
data = TX_DMA_PLEN0(info->size); data = TX_DMA_PLEN0(info->size);
if (info->last) if (info->last)
data |= TX_DMA_LS0; data |= TX_DMA_LS0;
@ -30,7 +30,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
WRITE_ONCE(desc->txd3, data); WRITE_ONCE(desc->txd3, data);
/* set forward port */ /* set forward port */
@@ -1981,6 +1985,7 @@ static int mtk_poll_rx(struct napi_struc @@ -1980,6 +1984,7 @@ static int mtk_poll_rx(struct napi_struc
bool xdp_flush = false; bool xdp_flush = false;
int idx; int idx;
struct sk_buff *skb; struct sk_buff *skb;
@ -38,7 +38,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
u8 *data, *new_data; u8 *data, *new_data;
struct mtk_rx_dma_v2 *rxd, trxd; struct mtk_rx_dma_v2 *rxd, trxd;
int done = 0, bytes = 0; int done = 0, bytes = 0;
@@ -2096,7 +2101,10 @@ static int mtk_poll_rx(struct napi_struc @@ -2095,7 +2100,10 @@ static int mtk_poll_rx(struct napi_struc
goto release_desc; goto release_desc;
} }
@ -50,7 +50,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
ring->buf_size, DMA_FROM_DEVICE); ring->buf_size, DMA_FROM_DEVICE);
skb = build_skb(data, ring->frag_size); skb = build_skb(data, ring->frag_size);
@@ -2162,6 +2170,9 @@ release_desc: @@ -2161,6 +2169,9 @@ release_desc:
else else
rxd->rxd2 = RX_DMA_PREP_PLEN0(ring->buf_size); rxd->rxd2 = RX_DMA_PREP_PLEN0(ring->buf_size);
@ -60,7 +60,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
ring->calc_idx = idx; ring->calc_idx = idx;
done++; done++;
} }
@@ -2654,6 +2665,9 @@ static int mtk_rx_alloc(struct mtk_eth * @@ -2653,6 +2664,9 @@ static int mtk_rx_alloc(struct mtk_eth *
else else
rxd->rxd2 = RX_DMA_PREP_PLEN0(ring->buf_size); rxd->rxd2 = RX_DMA_PREP_PLEN0(ring->buf_size);
@ -70,7 +70,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
rxd->rxd3 = 0; rxd->rxd3 = 0;
rxd->rxd4 = 0; rxd->rxd4 = 0;
if (mtk_is_netsys_v2_or_greater(eth)) { if (mtk_is_netsys_v2_or_greater(eth)) {
@@ -2700,6 +2714,7 @@ static int mtk_rx_alloc(struct mtk_eth * @@ -2699,6 +2713,7 @@ static int mtk_rx_alloc(struct mtk_eth *
static void mtk_rx_clean(struct mtk_eth *eth, struct mtk_rx_ring *ring, bool in_sram) static void mtk_rx_clean(struct mtk_eth *eth, struct mtk_rx_ring *ring, bool in_sram)
{ {
@ -78,7 +78,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
int i; int i;
if (ring->data && ring->dma) { if (ring->data && ring->dma) {
@@ -2713,7 +2728,10 @@ static void mtk_rx_clean(struct mtk_eth @@ -2712,7 +2727,10 @@ static void mtk_rx_clean(struct mtk_eth
if (!rxd->rxd1) if (!rxd->rxd1)
continue; continue;
@ -90,7 +90,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
ring->buf_size, DMA_FROM_DEVICE); ring->buf_size, DMA_FROM_DEVICE);
mtk_rx_put_buff(ring, ring->data[i], false); mtk_rx_put_buff(ring, ring->data[i], false);
} }
@@ -4697,6 +4715,14 @@ static int mtk_probe(struct platform_dev @@ -4699,6 +4717,14 @@ static int mtk_probe(struct platform_dev
} }
} }

View File

@ -76,7 +76,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
if (pl->pcs) { if (pl->pcs) {
err = pl->pcs->ops->pcs_config(pl->pcs, pl->cur_link_an_mode, err = pl->pcs->ops->pcs_config(pl->pcs, pl->cur_link_an_mode,
state->interface, state->interface,
@@ -1498,6 +1524,7 @@ struct phylink *phylink_create(struct ph @@ -1499,6 +1525,7 @@ struct phylink *phylink_create(struct ph
pl->link_config.speed = SPEED_UNKNOWN; pl->link_config.speed = SPEED_UNKNOWN;
pl->link_config.duplex = DUPLEX_UNKNOWN; pl->link_config.duplex = DUPLEX_UNKNOWN;
pl->link_config.an_enabled = true; pl->link_config.an_enabled = true;
@ -84,7 +84,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
pl->mac_ops = mac_ops; pl->mac_ops = mac_ops;
__set_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state); __set_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state);
timer_setup(&pl->link_poll, phylink_fixed_poll, 0); timer_setup(&pl->link_poll, phylink_fixed_poll, 0);
@@ -1899,6 +1926,8 @@ void phylink_start(struct phylink *pl) @@ -1900,6 +1927,8 @@ void phylink_start(struct phylink *pl)
if (pl->netdev) if (pl->netdev)
netif_carrier_off(pl->netdev); netif_carrier_off(pl->netdev);
@ -93,7 +93,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
/* Apply the link configuration to the MAC when starting. This allows /* Apply the link configuration to the MAC when starting. This allows
* a fixed-link to start with the correct parameters, and also * a fixed-link to start with the correct parameters, and also
* ensures that we set the appropriate advertisement for Serdes links. * ensures that we set the appropriate advertisement for Serdes links.
@@ -1909,6 +1938,8 @@ void phylink_start(struct phylink *pl) @@ -1910,6 +1939,8 @@ void phylink_start(struct phylink *pl)
*/ */
phylink_mac_initial_config(pl, true); phylink_mac_initial_config(pl, true);
@ -102,7 +102,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
phylink_enable_and_run_resolve(pl, PHYLINK_DISABLE_STOPPED); phylink_enable_and_run_resolve(pl, PHYLINK_DISABLE_STOPPED);
if (pl->cfg_link_an_mode == MLO_AN_FIXED && pl->link_gpio) { if (pl->cfg_link_an_mode == MLO_AN_FIXED && pl->link_gpio) {
@@ -1927,15 +1958,9 @@ void phylink_start(struct phylink *pl) @@ -1928,15 +1959,9 @@ void phylink_start(struct phylink *pl)
poll = true; poll = true;
} }
@ -120,7 +120,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
if (poll) if (poll)
mod_timer(&pl->link_poll, jiffies + HZ); mod_timer(&pl->link_poll, jiffies + HZ);
if (pl->phydev) if (pl->phydev)
@@ -1972,6 +1997,10 @@ void phylink_stop(struct phylink *pl) @@ -1973,6 +1998,10 @@ void phylink_stop(struct phylink *pl)
} }
phylink_run_resolve_and_disable(pl, PHYLINK_DISABLE_STOPPED); phylink_run_resolve_and_disable(pl, PHYLINK_DISABLE_STOPPED);

View File

@ -20,7 +20,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
--- a/drivers/net/dsa/qca/qca8k-8xxx.c --- a/drivers/net/dsa/qca/qca8k-8xxx.c
+++ b/drivers/net/dsa/qca/qca8k-8xxx.c +++ b/drivers/net/dsa/qca/qca8k-8xxx.c
@@ -716,21 +716,6 @@ err_clear_skb: @@ -730,21 +730,6 @@ err_clear_skb:
return ret; return ret;
} }

View File

@ -71,7 +71,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
static void static void
qca8k_split_addr(u32 regaddr, u16 *r1, u16 *r2, u16 *page) qca8k_split_addr(u32 regaddr, u16 *r1, u16 *r2, u16 *page)
@@ -1726,6 +1727,10 @@ qca8k_setup(struct dsa_switch *ds) @@ -1751,6 +1752,10 @@ qca8k_setup(struct dsa_switch *ds)
if (ret) if (ret)
return ret; return ret;

View File

@ -131,7 +131,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
/** /**
* fwnode_mdio_find_device - Given a fwnode, find the mdio_device * fwnode_mdio_find_device - Given a fwnode, find the mdio_device
* @fwnode: pointer to the mdio_device's fwnode * @fwnode: pointer to the mdio_device's fwnode
@@ -3107,6 +3178,11 @@ static int phy_probe(struct device *dev) @@ -3109,6 +3180,11 @@ static int phy_probe(struct device *dev)
/* Set the state to READY by default */ /* Set the state to READY by default */
phydev->state = PHY_READY; phydev->state = PHY_READY;

View File

@ -53,7 +53,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tristate "MDIO Bus/PHY emulation with fixed speed/link PHYs" tristate "MDIO Bus/PHY emulation with fixed speed/link PHYs"
--- 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
@@ -3208,7 +3208,8 @@ static int phy_probe(struct device *dev) @@ -3210,7 +3210,8 @@ static int phy_probe(struct device *dev)
/* Get the LEDs from the device tree, and instantiate standard /* Get the LEDs from the device tree, and instantiate standard
* LEDs for them. * LEDs for them.
*/ */

View File

@ -55,7 +55,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
return err; return err;
} }
} }
@@ -3229,6 +3239,9 @@ static int phy_remove(struct device *dev @@ -3231,6 +3241,9 @@ static int phy_remove(struct device *dev
cancel_delayed_work_sync(&phydev->state_queue); cancel_delayed_work_sync(&phydev->state_queue);

View File

@ -148,7 +148,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* of_find_node_by_phandle - Find a node given a phandle * of_find_node_by_phandle - Find a node given a phandle
--- a/drivers/spi/spi.c --- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c +++ b/drivers/spi/spi.c
@@ -2330,8 +2330,8 @@ of_register_spi_device(struct spi_contro @@ -2334,8 +2334,8 @@ of_register_spi_device(struct spi_contro
} }
/* Select device driver */ /* Select device driver */

View File

@ -91,7 +91,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
#include "mtdcore.h" #include "mtdcore.h"
@@ -1074,6 +1075,8 @@ int mtd_device_parse_register(struct mtd @@ -1076,6 +1077,8 @@ int mtd_device_parse_register(struct mtd
register_reboot_notifier(&mtd->reboot_notifier); register_reboot_notifier(&mtd->reboot_notifier);
} }

View File

@ -19,7 +19,7 @@ Subject: [PATCH] kernel: add block fit partition parser
--- a/block/blk.h --- a/block/blk.h
+++ b/block/blk.h +++ b/block/blk.h
@@ -414,6 +414,8 @@ void blk_free_ext_minor(unsigned int min @@ -415,6 +415,8 @@ void blk_free_ext_minor(unsigned int min
#define ADDPART_FLAG_NONE 0 #define ADDPART_FLAG_NONE 0
#define ADDPART_FLAG_RAID 1 #define ADDPART_FLAG_RAID 1
#define ADDPART_FLAG_WHOLEDISK 2 #define ADDPART_FLAG_WHOLEDISK 2

View File

@ -84,7 +84,7 @@ Subject: [PATCH] net/bridge: add bridge offload
--- a/net/bridge/br_device.c --- a/net/bridge/br_device.c
+++ b/net/bridge/br_device.c +++ b/net/bridge/br_device.c
@@ -525,6 +525,8 @@ void br_dev_setup(struct net_device *dev @@ -531,6 +531,8 @@ void br_dev_setup(struct net_device *dev
br->bridge_hello_time = br->hello_time = 2 * HZ; br->bridge_hello_time = br->hello_time = 2 * HZ;
br->bridge_forward_delay = br->forward_delay = 15 * HZ; br->bridge_forward_delay = br->forward_delay = 15 * HZ;
br->bridge_ageing_time = br->ageing_time = BR_DEFAULT_AGEING_TIME; br->bridge_ageing_time = br->ageing_time = BR_DEFAULT_AGEING_TIME;

View File

@ -9,7 +9,7 @@ Subject: [PATCH] net/dsa/mv88e6xxx: disable ATU violation
--- a/drivers/net/dsa/mv88e6xxx/chip.c --- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -3482,6 +3482,9 @@ static int mv88e6xxx_setup_port(struct m @@ -3492,6 +3492,9 @@ static int mv88e6xxx_setup_port(struct m
else else
reg = 1 << port; reg = 1 << port;

View File

@ -60,7 +60,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
*/ */
--- a/include/linux/skbuff.h --- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h +++ b/include/linux/skbuff.h
@@ -3060,6 +3060,10 @@ static inline int pskb_trim(struct sk_bu @@ -3071,6 +3071,10 @@ static inline int pskb_trim(struct sk_bu
return (len < skb->len) ? __pskb_trim(skb, len) : 0; return (len < skb->len) ? __pskb_trim(skb, len) : 0;
} }
@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/** /**
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer * pskb_trim_unique - remove end from a paged unique (not cloned) buffer
* @skb: buffer to alter * @skb: buffer to alter
@@ -3209,16 +3213,6 @@ static inline struct sk_buff *dev_alloc_ @@ -3220,16 +3224,6 @@ static inline struct sk_buff *dev_alloc_
} }

View File

@ -396,7 +396,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
} }
--- a/net/ipv4/route.c --- a/net/ipv4/route.c
+++ b/net/ipv4/route.c +++ b/net/ipv4/route.c
@@ -380,6 +380,9 @@ static struct pernet_operations ip_rt_pr @@ -381,6 +381,9 @@ static struct pernet_operations ip_rt_pr
static int __init ip_rt_proc_init(void) static int __init ip_rt_proc_init(void)
{ {

View File

@ -17,7 +17,7 @@ Signed-off-by: Steve French <stfrench@microsoft.com>
--- a/fs/smb/server/oplock.c --- a/fs/smb/server/oplock.c
+++ b/fs/smb/server/oplock.c +++ b/fs/smb/server/oplock.c
@@ -1214,6 +1214,12 @@ int smb_grant_oplock(struct ksmbd_work * @@ -1219,6 +1219,12 @@ int smb_grant_oplock(struct ksmbd_work *
return 0; return 0;
} }

View File

@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (!net_eq(dev_net(dev), sock_net(sk))) if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop; goto drop;
@@ -3378,6 +3380,7 @@ static int packet_create(struct net *net @@ -3377,6 +3379,7 @@ static int packet_create(struct net *net
mutex_init(&po->pg_vec_lock); mutex_init(&po->pg_vec_lock);
po->rollover = NULL; po->rollover = NULL;
po->prot_hook.func = packet_rcv; po->prot_hook.func = packet_rcv;
@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (sock->type == SOCK_PACKET) if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt; po->prot_hook.func = packet_rcv_spkt;
@@ -4013,6 +4016,16 @@ packet_setsockopt(struct socket *sock, i @@ -4012,6 +4015,16 @@ packet_setsockopt(struct socket *sock, i
WRITE_ONCE(po->xmit, val ? packet_direct_xmit : dev_queue_xmit); WRITE_ONCE(po->xmit, val ? packet_direct_xmit : dev_queue_xmit);
return 0; return 0;
} }
@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
default: default:
return -ENOPROTOOPT; return -ENOPROTOOPT;
} }
@@ -4069,6 +4082,13 @@ static int packet_getsockopt(struct sock @@ -4068,6 +4081,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR: case PACKET_VNET_HDR:
val = po->has_vnet_hdr; val = po->has_vnet_hdr;
break; break;

View File

@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/include/linux/skbuff.h --- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h +++ b/include/linux/skbuff.h
@@ -3027,7 +3027,7 @@ static inline int pskb_network_may_pull( @@ -3038,7 +3038,7 @@ static inline int pskb_network_may_pull(
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8) * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
*/ */
#ifndef NET_SKB_PAD #ifndef NET_SKB_PAD

View File

@ -110,7 +110,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
return -EINVAL; return -EINVAL;
--- a/net/ipv6/route.c --- a/net/ipv6/route.c
+++ b/net/ipv6/route.c +++ b/net/ipv6/route.c
@@ -97,6 +97,8 @@ static int ip6_pkt_discard(struct sk_bu @@ -98,6 +98,8 @@ static int ip6_pkt_discard(struct sk_bu
static int ip6_pkt_discard_out(struct net *net, struct sock *sk, struct sk_buff *skb); static int ip6_pkt_discard_out(struct net *net, struct sock *sk, struct sk_buff *skb);
static int ip6_pkt_prohibit(struct sk_buff *skb); static int ip6_pkt_prohibit(struct sk_buff *skb);
static int ip6_pkt_prohibit_out(struct net *net, struct sock *sk, struct sk_buff *skb); static int ip6_pkt_prohibit_out(struct net *net, struct sock *sk, struct sk_buff *skb);
@ -119,7 +119,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
static void ip6_link_failure(struct sk_buff *skb); static void ip6_link_failure(struct sk_buff *skb);
static void ip6_rt_update_pmtu(struct dst_entry *dst, struct sock *sk, static void ip6_rt_update_pmtu(struct dst_entry *dst, struct sock *sk,
struct sk_buff *skb, u32 mtu, struct sk_buff *skb, u32 mtu,
@@ -317,6 +319,18 @@ static const struct rt6_info ip6_prohibi @@ -318,6 +320,18 @@ static const struct rt6_info ip6_prohibi
.rt6i_flags = (RTF_REJECT | RTF_NONEXTHOP), .rt6i_flags = (RTF_REJECT | RTF_NONEXTHOP),
}; };
@ -138,7 +138,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
static const struct rt6_info ip6_blk_hole_entry_template = { static const struct rt6_info ip6_blk_hole_entry_template = {
.dst = { .dst = {
.__refcnt = ATOMIC_INIT(1), .__refcnt = ATOMIC_INIT(1),
@@ -1039,6 +1053,7 @@ static const int fib6_prop[RTN_MAX + 1] @@ -1040,6 +1054,7 @@ static const int fib6_prop[RTN_MAX + 1]
[RTN_BLACKHOLE] = -EINVAL, [RTN_BLACKHOLE] = -EINVAL,
[RTN_UNREACHABLE] = -EHOSTUNREACH, [RTN_UNREACHABLE] = -EHOSTUNREACH,
[RTN_PROHIBIT] = -EACCES, [RTN_PROHIBIT] = -EACCES,
@ -146,7 +146,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
[RTN_THROW] = -EAGAIN, [RTN_THROW] = -EAGAIN,
[RTN_NAT] = -EINVAL, [RTN_NAT] = -EINVAL,
[RTN_XRESOLVE] = -EINVAL, [RTN_XRESOLVE] = -EINVAL,
@@ -1074,6 +1089,10 @@ static void ip6_rt_init_dst_reject(struc @@ -1075,6 +1090,10 @@ static void ip6_rt_init_dst_reject(struc
rt->dst.output = ip6_pkt_prohibit_out; rt->dst.output = ip6_pkt_prohibit_out;
rt->dst.input = ip6_pkt_prohibit; rt->dst.input = ip6_pkt_prohibit;
break; break;
@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
case RTN_THROW: case RTN_THROW:
case RTN_UNREACHABLE: case RTN_UNREACHABLE:
default: default:
@@ -4540,6 +4559,17 @@ static int ip6_pkt_prohibit_out(struct n @@ -4544,6 +4563,17 @@ static int ip6_pkt_prohibit_out(struct n
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES); return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
} }
@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
/* /*
* Allocate a dst for local (unicast / anycast) address. * Allocate a dst for local (unicast / anycast) address.
*/ */
@@ -5033,7 +5063,8 @@ static int rtm_to_fib6_config(struct sk_ @@ -5037,7 +5067,8 @@ static int rtm_to_fib6_config(struct sk_
if (rtm->rtm_type == RTN_UNREACHABLE || if (rtm->rtm_type == RTN_UNREACHABLE ||
rtm->rtm_type == RTN_BLACKHOLE || rtm->rtm_type == RTN_BLACKHOLE ||
rtm->rtm_type == RTN_PROHIBIT || rtm->rtm_type == RTN_PROHIBIT ||
@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
cfg->fc_flags |= RTF_REJECT; cfg->fc_flags |= RTF_REJECT;
if (rtm->rtm_type == RTN_LOCAL) if (rtm->rtm_type == RTN_LOCAL)
@@ -6280,6 +6311,8 @@ static int ip6_route_dev_notify(struct n @@ -6284,6 +6315,8 @@ static int ip6_route_dev_notify(struct n
#ifdef CONFIG_IPV6_MULTIPLE_TABLES #ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.ip6_prohibit_entry->dst.dev = dev; net->ipv6.ip6_prohibit_entry->dst.dev = dev;
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev); net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
net->ipv6.ip6_blk_hole_entry->dst.dev = dev; net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev); net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
#endif #endif
@@ -6291,6 +6324,7 @@ static int ip6_route_dev_notify(struct n @@ -6295,6 +6328,7 @@ static int ip6_route_dev_notify(struct n
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev); in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES #ifdef CONFIG_IPV6_MULTIPLE_TABLES
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev); in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev); in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
#endif #endif
} }
@@ -6482,6 +6516,8 @@ static int __net_init ip6_route_net_init @@ -6486,6 +6520,8 @@ static int __net_init ip6_route_net_init
#ifdef CONFIG_IPV6_MULTIPLE_TABLES #ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.fib6_has_custom_rules = false; net->ipv6.fib6_has_custom_rules = false;
@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template, net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
sizeof(*net->ipv6.ip6_prohibit_entry), sizeof(*net->ipv6.ip6_prohibit_entry),
GFP_KERNEL); GFP_KERNEL);
@@ -6492,11 +6528,21 @@ static int __net_init ip6_route_net_init @@ -6496,11 +6532,21 @@ static int __net_init ip6_route_net_init
ip6_template_metrics, true); ip6_template_metrics, true);
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached); INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops; net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst, dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
ip6_template_metrics, true); ip6_template_metrics, true);
@@ -6523,6 +6569,8 @@ out: @@ -6527,6 +6573,8 @@ out:
return ret; return ret;
#ifdef CONFIG_IPV6_MULTIPLE_TABLES #ifdef CONFIG_IPV6_MULTIPLE_TABLES
@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
out_ip6_prohibit_entry: out_ip6_prohibit_entry:
kfree(net->ipv6.ip6_prohibit_entry); kfree(net->ipv6.ip6_prohibit_entry);
out_ip6_null_entry: out_ip6_null_entry:
@@ -6542,6 +6590,7 @@ static void __net_exit ip6_route_net_exi @@ -6546,6 +6594,7 @@ static void __net_exit ip6_route_net_exi
kfree(net->ipv6.ip6_null_entry); kfree(net->ipv6.ip6_null_entry);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES #ifdef CONFIG_IPV6_MULTIPLE_TABLES
kfree(net->ipv6.ip6_prohibit_entry); kfree(net->ipv6.ip6_prohibit_entry);
@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
kfree(net->ipv6.ip6_blk_hole_entry); kfree(net->ipv6.ip6_blk_hole_entry);
#endif #endif
dst_entries_destroy(&net->ipv6.ip6_dst_ops); dst_entries_destroy(&net->ipv6.ip6_dst_ops);
@@ -6625,6 +6674,9 @@ void __init ip6_route_init_special_entri @@ -6629,6 +6678,9 @@ void __init ip6_route_init_special_entri
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev; init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);

View File

@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -4722,6 +4722,8 @@ static int mtk_probe(struct platform_dev @@ -4939,6 +4939,8 @@ static int mtk_probe(struct platform_dev
* for NAPI to work * for NAPI to work
*/ */
init_dummy_netdev(&eth->dummy_dev); init_dummy_netdev(&eth->dummy_dev);

View File

@ -16,7 +16,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -1562,12 +1562,28 @@ static void mtk_wake_queue(struct mtk_et @@ -1561,12 +1561,28 @@ static void mtk_wake_queue(struct mtk_et
} }
} }
@ -45,7 +45,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
bool gso = false; bool gso = false;
int tx_num; int tx_num;
@@ -1589,6 +1605,18 @@ static netdev_tx_t mtk_start_xmit(struct @@ -1588,6 +1604,18 @@ static netdev_tx_t mtk_start_xmit(struct
return NETDEV_TX_BUSY; return NETDEV_TX_BUSY;
} }
@ -64,7 +64,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/* TSO: fill MSS info in tcp checksum field */ /* TSO: fill MSS info in tcp checksum field */
if (skb_is_gso(skb)) { if (skb_is_gso(skb)) {
if (skb_cow_head(skb, 0)) { if (skb_cow_head(skb, 0)) {
@@ -1604,8 +1632,14 @@ static netdev_tx_t mtk_start_xmit(struct @@ -1603,8 +1631,14 @@ static netdev_tx_t mtk_start_xmit(struct
} }
} }

View File

@ -22,7 +22,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -709,6 +709,7 @@ static void mtk_mac_link_up(struct phyli @@ -765,6 +765,7 @@ static void mtk_mac_link_up(struct phyli
MAC_MCR_FORCE_RX_FC); MAC_MCR_FORCE_RX_FC);
/* Configure speed */ /* Configure speed */
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
switch (speed) { switch (speed) {
case SPEED_2500: case SPEED_2500:
case SPEED_1000: case SPEED_1000:
@@ -3203,6 +3204,9 @@ found: @@ -3346,6 +3347,9 @@ found:
if (dp->index >= MTK_QDMA_NUM_QUEUES) if (dp->index >= MTK_QDMA_NUM_QUEUES)
return NOTIFY_DONE; return NOTIFY_DONE;

View File

@ -387,7 +387,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
return; return;
err_phy: err_phy:
@@ -676,10 +740,13 @@ static void mtk_mac_link_down(struct phy @@ -675,10 +739,13 @@ static void mtk_mac_link_down(struct phy
{ {
struct mtk_mac *mac = container_of(config, struct mtk_mac, struct mtk_mac *mac = container_of(config, struct mtk_mac,
phylink_config); phylink_config);
@ -404,7 +404,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
} }
static void mtk_set_queue_speed(struct mtk_eth *eth, unsigned int idx, static void mtk_set_queue_speed(struct mtk_eth *eth, unsigned int idx,
@@ -751,13 +818,11 @@ static void mtk_set_queue_speed(struct m @@ -750,13 +817,11 @@ static void mtk_set_queue_speed(struct m
mtk_w32(eth, val, soc->reg_map->qdma.qtx_sch + ofs); mtk_w32(eth, val, soc->reg_map->qdma.qtx_sch + ofs);
} }
@ -422,7 +422,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
u32 mcr; u32 mcr;
mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id)); mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
@@ -791,6 +856,55 @@ static void mtk_mac_link_up(struct phyli @@ -790,6 +855,55 @@ static void mtk_mac_link_up(struct phyli
mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id)); mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
} }
@ -478,7 +478,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
static const struct phylink_mac_ops mtk_phylink_ops = { static const struct phylink_mac_ops mtk_phylink_ops = {
.validate = phylink_generic_validate, .validate = phylink_generic_validate,
.mac_select_pcs = mtk_mac_select_pcs, .mac_select_pcs = mtk_mac_select_pcs,
@@ -4612,8 +4726,21 @@ static int mtk_add_mac(struct mtk_eth *e @@ -4614,8 +4728,21 @@ static int mtk_add_mac(struct mtk_eth *e
phy_interface_zero(mac->phylink_config.supported_interfaces); phy_interface_zero(mac->phylink_config.supported_interfaces);
__set_bit(PHY_INTERFACE_MODE_INTERNAL, __set_bit(PHY_INTERFACE_MODE_INTERNAL,
mac->phylink_config.supported_interfaces); mac->phylink_config.supported_interfaces);
@ -500,7 +500,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
phylink = phylink_create(&mac->phylink_config, phylink = phylink_create(&mac->phylink_config,
of_fwnode_handle(mac->of_node), of_fwnode_handle(mac->of_node),
phy_mode, &mtk_phylink_ops); phy_mode, &mtk_phylink_ops);
@@ -4806,6 +4933,13 @@ static int mtk_probe(struct platform_dev @@ -4808,6 +4935,13 @@ static int mtk_probe(struct platform_dev
if (err) if (err)
return err; return err;

View File

@ -157,7 +157,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
void netif_napi_add_weight(struct net_device *dev, struct napi_struct *napi, void netif_napi_add_weight(struct net_device *dev, struct napi_struct *napi,
int (*poll)(struct napi_struct *, int), int weight) int (*poll)(struct napi_struct *, int), int weight)
{ {
@@ -11141,6 +11212,9 @@ static int dev_cpu_dead(unsigned int old @@ -11142,6 +11213,9 @@ static int dev_cpu_dead(unsigned int old
raise_softirq_irqoff(NET_TX_SOFTIRQ); raise_softirq_irqoff(NET_TX_SOFTIRQ);
local_irq_enable(); local_irq_enable();
@ -167,7 +167,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
#ifdef CONFIG_RPS #ifdef CONFIG_RPS
remsd = oldsd->rps_ipi_list; remsd = oldsd->rps_ipi_list;
oldsd->rps_ipi_list = NULL; oldsd->rps_ipi_list = NULL;
@@ -11453,6 +11527,7 @@ static int __init net_dev_init(void) @@ -11454,6 +11528,7 @@ static int __init net_dev_init(void)
INIT_CSD(&sd->defer_csd, trigger_rx_softirq, sd); INIT_CSD(&sd->defer_csd, trigger_rx_softirq, sd);
spin_lock_init(&sd->defer_lock); spin_lock_init(&sd->defer_lock);

View File

@ -17,7 +17,7 @@ Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
--- a/drivers/net/dsa/mv88e6xxx/chip.c --- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -6990,6 +6990,7 @@ static int mv88e6xxx_register_switch(str @@ -7032,6 +7032,7 @@ static int mv88e6xxx_register_switch(str
ds->ops = &mv88e6xxx_switch_ops; ds->ops = &mv88e6xxx_switch_ops;
ds->ageing_time_min = chip->info->age_time_coeff; ds->ageing_time_min = chip->info->age_time_coeff;
ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX; ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX;

View File

@ -42,7 +42,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
#define MTK_UART_IER_XOFFI 0x20 /* Enable XOFF character interrupt */ #define MTK_UART_IER_XOFFI 0x20 /* Enable XOFF character interrupt */
#define MTK_UART_IER_RTSI 0x40 /* Enable RTS Modem status interrupt */ #define MTK_UART_IER_RTSI 0x40 /* Enable RTS Modem status interrupt */
#define MTK_UART_IER_CTSI 0x80 /* Enable CTS Modem status interrupt */ #define MTK_UART_IER_CTSI 0x80 /* Enable CTS Modem status interrupt */
@@ -418,13 +418,12 @@ static int __maybe_unused mtk8250_runtim @@ -422,13 +422,12 @@ static int __maybe_unused mtk8250_runtim
struct mtk8250_data *data = dev_get_drvdata(dev); struct mtk8250_data *data = dev_get_drvdata(dev);
struct uart_8250_port *up = serial8250_get_port(data->line); struct uart_8250_port *up = serial8250_get_port(data->line);

View File

@ -1,6 +1,6 @@
--- a/drivers/net/usb/qmi_wwan.c --- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c +++ b/drivers/net/usb/qmi_wwan.c
@@ -1430,6 +1430,9 @@ static const struct usb_device_id produc @@ -1433,6 +1433,9 @@ static const struct usb_device_id produc
{QMI_FIXED_INTF(0x2692, 0x9025, 4)}, /* Cellient MPL200 (rebranded Qualcomm 05c6:9025) */ {QMI_FIXED_INTF(0x2692, 0x9025, 4)}, /* Cellient MPL200 (rebranded Qualcomm 05c6:9025) */
{QMI_QUIRK_SET_DTR(0x1546, 0x1342, 4)}, /* u-blox LARA-L6 */ {QMI_QUIRK_SET_DTR(0x1546, 0x1342, 4)}, /* u-blox LARA-L6 */
{QMI_QUIRK_SET_DTR(0x33f8, 0x0104, 4)}, /* Rolling RW101 RMNET */ {QMI_QUIRK_SET_DTR(0x33f8, 0x0104, 4)}, /* Rolling RW101 RMNET */

View File

@ -31,7 +31,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
help help
--- a/init/main.c --- a/init/main.c
+++ b/init/main.c +++ b/init/main.c
@@ -612,6 +612,29 @@ static inline void setup_nr_cpu_ids(void @@ -611,6 +611,29 @@ static inline void setup_nr_cpu_ids(void
static inline void smp_prepare_cpus(unsigned int maxcpus) { } static inline void smp_prepare_cpus(unsigned int maxcpus) { }
#endif #endif
@ -61,7 +61,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
/* /*
* We need to store the untouched command line for future reference. * We need to store the untouched command line for future reference.
* We also need to store the touched command line since the parameter * We also need to store the touched command line since the parameter
@@ -961,6 +984,7 @@ asmlinkage __visible void __init __no_sa @@ -960,6 +983,7 @@ asmlinkage __visible void __init __no_sa
pr_notice("%s", linux_banner); pr_notice("%s", linux_banner);
early_security_init(); early_security_init();
setup_arch(&command_line); setup_arch(&command_line);

View File

@ -11,7 +11,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
--- a/drivers/spi/spi.c --- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c +++ b/drivers/spi/spi.c
@@ -1385,6 +1385,70 @@ static int spi_transfer_wait(struct spi_ @@ -1389,6 +1389,70 @@ static int spi_transfer_wait(struct spi_
return 0; return 0;
} }
@ -82,7 +82,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
static void _spi_transfer_delay_ns(u32 ns) static void _spi_transfer_delay_ns(u32 ns)
{ {
if (!ns) if (!ns)
@@ -2223,6 +2287,75 @@ void spi_flush_queue(struct spi_controll @@ -2227,6 +2291,75 @@ void spi_flush_queue(struct spi_controll
/*-------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------*/
#if defined(CONFIG_OF) #if defined(CONFIG_OF)
@ -158,7 +158,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
static int of_spi_parse_dt(struct spi_controller *ctlr, struct spi_device *spi, static int of_spi_parse_dt(struct spi_controller *ctlr, struct spi_device *spi,
struct device_node *nc) struct device_node *nc)
{ {
@@ -2341,6 +2474,10 @@ of_register_spi_device(struct spi_contro @@ -2345,6 +2478,10 @@ of_register_spi_device(struct spi_contro
if (rc) if (rc)
goto err_out; goto err_out;

View File

@ -1,6 +1,6 @@
--- a/drivers/net/phy/Kconfig --- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig +++ b/drivers/net/phy/Kconfig
@@ -381,6 +381,12 @@ config ROCKCHIP_PHY @@ -389,6 +389,12 @@ config ROCKCHIP_PHY
help help
Currently supports the integrated Ethernet PHY. Currently supports the integrated Ethernet PHY.

View File

@ -42,7 +42,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
L: linux-i2c@vger.kernel.org L: linux-i2c@vger.kernel.org
--- a/drivers/net/phy/Kconfig --- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig +++ b/drivers/net/phy/Kconfig
@@ -306,6 +306,18 @@ config MEDIATEK_GE_PHY @@ -314,6 +314,18 @@ config MEDIATEK_GE_PHY
help help
Supports the MediaTek Gigabit Ethernet PHYs. Supports the MediaTek Gigabit Ethernet PHYs.

View File

@ -13,7 +13,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
--- a/drivers/net/phy/Kconfig --- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig +++ b/drivers/net/phy/Kconfig
@@ -318,6 +318,13 @@ config MEDIATEK_GE_SOC_PHY @@ -326,6 +326,13 @@ config MEDIATEK_GE_SOC_PHY
present in the SoCs efuse and will dynamically calibrate VCM present in the SoCs efuse and will dynamically calibrate VCM
(common-mode voltage) during startup. (common-mode voltage) during startup.

View File

@ -1,6 +1,6 @@
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi --- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
@@ -471,6 +471,26 @@ @@ -476,6 +476,26 @@
}; };
}; };

View File

@ -13,7 +13,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi --- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
@@ -352,6 +352,16 @@ @@ -357,6 +357,16 @@
clock-names = "core"; clock-names = "core";
}; };
@ -30,7 +30,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
cryptobam: dma-controller@704000 { cryptobam: dma-controller@704000 {
compatible = "qcom,bam-v1.7.0"; compatible = "qcom,bam-v1.7.0";
reg = <0x0 0x00704000 0x0 0x20000>; reg = <0x0 0x00704000 0x0 0x20000>;
@@ -1037,6 +1047,113 @@ @@ -1042,6 +1052,113 @@
}; };
}; };

View File

@ -1,6 +1,6 @@
--- a/include/linux/if_bridge.h --- a/include/linux/if_bridge.h
+++ b/include/linux/if_bridge.h +++ b/include/linux/if_bridge.h
@@ -69,6 +69,9 @@ void brioctl_set(int (*hook)(struct net @@ -70,6 +70,9 @@ void brioctl_set(int (*hook)(struct net
void __user *uarg)); void __user *uarg));
int br_ioctl_call(struct net *net, struct net_bridge *br, unsigned int cmd, int br_ioctl_call(struct net *net, struct net_bridge *br, unsigned int cmd,
struct ifreq *ifr, void __user *uarg); struct ifreq *ifr, void __user *uarg);
@ -8,9 +8,9 @@
+ struct rtnl_link_stats64 *nlstats); */ + struct rtnl_link_stats64 *nlstats); */
+extern bool br_is_hairpin_enabled(struct net_device *dev); +extern bool br_is_hairpin_enabled(struct net_device *dev);
#if IS_ENABLED(CONFIG_BRIDGE) && IS_ENABLED(CONFIG_BRIDGE_IGMP_SNOOPING) extern void br_dev_update_stats(struct net_device *dev,
int br_multicast_list_adjacent(struct net_device *dev, struct rtnl_link_stats64 *nlstats);
@@ -211,4 +214,42 @@ static inline clock_t br_get_ageing_time @@ -215,4 +218,42 @@ static inline clock_t br_get_ageing_time
} }
#endif #endif
@ -55,7 +55,7 @@
#endif #endif
--- a/include/linux/if_vlan.h --- a/include/linux/if_vlan.h
+++ b/include/linux/if_vlan.h +++ b/include/linux/if_vlan.h
@@ -227,7 +227,28 @@ extern void vlan_vids_del_by_dev(struct @@ -235,7 +235,28 @@ extern void vlan_vids_del_by_dev(struct
extern bool vlan_uses_dev(const struct net_device *dev); extern bool vlan_uses_dev(const struct net_device *dev);
@ -99,7 +99,7 @@
--- a/include/net/addrconf.h --- a/include/net/addrconf.h
+++ b/include/net/addrconf.h +++ b/include/net/addrconf.h
@@ -506,4 +506,9 @@ int if6_proc_init(void); @@ -518,4 +518,9 @@ int if6_proc_init(void);
void if6_proc_exit(void); void if6_proc_exit(void);
#endif #endif
@ -157,7 +157,7 @@
void fib_del_ifaddr(struct in_ifaddr *, struct in_ifaddr *); void fib_del_ifaddr(struct in_ifaddr *, struct in_ifaddr *);
--- a/net/bridge/br_private.h --- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h +++ b/net/bridge/br_private.h
@@ -2172,4 +2172,9 @@ void br_do_proxy_suppress_arp(struct sk_ @@ -2193,4 +2193,9 @@ void br_do_proxy_suppress_arp(struct sk_
void br_do_suppress_nd(struct sk_buff *skb, struct net_bridge *br, void br_do_suppress_nd(struct sk_buff *skb, struct net_bridge *br,
u16 vid, struct net_bridge_port *p, struct nd_msg *msg); u16 vid, struct net_bridge_port *p, struct nd_msg *msg);
struct nd_msg *br_is_nd_neigh_msg(struct sk_buff *skb, struct nd_msg *m); struct nd_msg *br_is_nd_neigh_msg(struct sk_buff *skb, struct nd_msg *m);
@ -169,7 +169,7 @@
#endif #endif
--- a/net/8021q/vlan_core.c --- a/net/8021q/vlan_core.c
+++ b/net/8021q/vlan_core.c +++ b/net/8021q/vlan_core.c
@@ -548,4 +548,52 @@ static int __init vlan_offload_init(void @@ -555,4 +555,52 @@ static int __init vlan_offload_init(void
return 0; return 0;
} }
@ -224,7 +224,7 @@
fs_initcall(vlan_offload_init); fs_initcall(vlan_offload_init);
--- a/net/bridge/br_fdb.c --- a/net/bridge/br_fdb.c
+++ b/net/bridge/br_fdb.c +++ b/net/bridge/br_fdb.c
@@ -33,6 +33,35 @@ static const struct rhashtable_params br @@ -34,6 +34,35 @@ static const struct rhashtable_params br
static struct kmem_cache *br_fdb_cache __read_mostly; static struct kmem_cache *br_fdb_cache __read_mostly;
@ -260,9 +260,9 @@
int __init br_fdb_init(void) int __init br_fdb_init(void)
{ {
br_fdb_cache = kmem_cache_create("bridge_fdb_cache", br_fdb_cache = kmem_cache_create("bridge_fdb_cache",
@@ -185,7 +214,26 @@ static void fdb_notify(struct net_bridge @@ -188,7 +217,26 @@ static void fdb_notify(struct net_bridge
struct sk_buff *skb;
int err = -ENOBUFS; br_offload_fdb_update(fdb);
- if (swdev_notify) - if (swdev_notify)
+ /* QCA NSS ECM support - Start */ + /* QCA NSS ECM support - Start */
@ -288,7 +288,7 @@
br_switchdev_fdb_notify(br, fdb, type); br_switchdev_fdb_notify(br, fdb, type);
skb = nlmsg_new(fdb_nlmsg_size(), GFP_ATOMIC); skb = nlmsg_new(fdb_nlmsg_size(), GFP_ATOMIC);
@@ -520,6 +568,7 @@ void br_fdb_cleanup(struct work_struct * @@ -525,6 +573,7 @@ void br_fdb_cleanup(struct work_struct *
unsigned long delay = hold_time(br); unsigned long delay = hold_time(br);
unsigned long work_delay = delay; unsigned long work_delay = delay;
unsigned long now = jiffies; unsigned long now = jiffies;
@ -296,7 +296,7 @@
/* this part is tricky, in order to avoid blocking learning and /* this part is tricky, in order to avoid blocking learning and
* consequently forwarding, we rely on rcu to delete objects with * consequently forwarding, we rely on rcu to delete objects with
@@ -546,8 +595,15 @@ void br_fdb_cleanup(struct work_struct * @@ -551,8 +600,15 @@ void br_fdb_cleanup(struct work_struct *
work_delay = min(work_delay, this_timer - now); work_delay = min(work_delay, this_timer - now);
} else { } else {
spin_lock_bh(&br->hash_lock); spin_lock_bh(&br->hash_lock);
@ -313,7 +313,7 @@
spin_unlock_bh(&br->hash_lock); spin_unlock_bh(&br->hash_lock);
} }
} }
@@ -879,6 +935,12 @@ void br_fdb_update(struct net_bridge *br @@ -884,6 +940,12 @@ void br_fdb_update(struct net_bridge *br
&fdb->flags))) &fdb->flags)))
clear_bit(BR_FDB_ADDED_BY_EXT_LEARN, clear_bit(BR_FDB_ADDED_BY_EXT_LEARN,
&fdb->flags); &fdb->flags);
@ -326,7 +326,7 @@
} }
if (unlikely(test_bit(BR_FDB_ADDED_BY_USER, &flags))) if (unlikely(test_bit(BR_FDB_ADDED_BY_USER, &flags)))
@@ -1466,3 +1528,62 @@ void br_fdb_clear_offload(const struct n @@ -1471,3 +1533,62 @@ void br_fdb_clear_offload(const struct n
spin_unlock_bh(&p->br->hash_lock); spin_unlock_bh(&p->br->hash_lock);
} }
EXPORT_SYMBOL_GPL(br_fdb_clear_offload); EXPORT_SYMBOL_GPL(br_fdb_clear_offload);
@ -391,9 +391,9 @@
+ +
--- a/net/bridge/br_if.c --- a/net/bridge/br_if.c
+++ b/net/bridge/br_if.c +++ b/net/bridge/br_if.c
@@ -26,6 +26,12 @@ @@ -27,6 +27,12 @@
#include "br_private.h" #include "br_private.h"
#include "br_private_offload.h"
+/* QCA NSS ECM support - Start */ +/* QCA NSS ECM support - Start */
+/* Hook for external forwarding logic */ +/* Hook for external forwarding logic */
@ -404,7 +404,7 @@
/* /*
* Determine initial path cost based on speed. * Determine initial path cost based on speed.
* using recommendations from 802.1d standard * using recommendations from 802.1d standard
@@ -697,6 +703,8 @@ int br_add_if(struct net_bridge *br, str @@ -698,6 +704,8 @@ int br_add_if(struct net_bridge *br, str
kobject_uevent(&p->kobj, KOBJ_ADD); kobject_uevent(&p->kobj, KOBJ_ADD);
@ -413,7 +413,7 @@
return 0; return 0;
err6: err6:
@@ -732,6 +740,8 @@ int br_del_if(struct net_bridge *br, str @@ -733,6 +741,8 @@ int br_del_if(struct net_bridge *br, str
if (!p || p->br != br) if (!p || p->br != br)
return -EINVAL; return -EINVAL;
@ -422,7 +422,7 @@
/* Since more than one interface can be attached to a bridge, /* Since more than one interface can be attached to a bridge,
* there still maybe an alternate path for netconsole to use; * there still maybe an alternate path for netconsole to use;
* therefore there is no reason for a NETDEV_RELEASE event. * therefore there is no reason for a NETDEV_RELEASE event.
@@ -775,3 +785,96 @@ bool br_port_flag_is_set(const struct ne @@ -801,3 +811,96 @@ bool br_port_flag_is_set(const struct ne
return p->flags & flag; return p->flags & flag;
} }
EXPORT_SYMBOL_GPL(br_port_flag_is_set); EXPORT_SYMBOL_GPL(br_port_flag_is_set);
@ -521,7 +521,7 @@
+/* QCA NSS ECM support - End */ +/* QCA NSS ECM support - End */
--- a/net/core/neighbour.c --- a/net/core/neighbour.c
+++ b/net/core/neighbour.c +++ b/net/core/neighbour.c
@@ -1268,6 +1268,22 @@ static void neigh_update_hhs(struct neig @@ -1275,6 +1275,22 @@ static void neigh_update_hhs(struct neig
} }
} }
@ -544,7 +544,7 @@
/* Generic update routine. /* Generic update routine.
-- lladdr is new lladdr or NULL, if it is not supplied. -- lladdr is new lladdr or NULL, if it is not supplied.
-- new is new state. -- new is new state.
@@ -1296,6 +1312,7 @@ static int __neigh_update(struct neighbo @@ -1303,6 +1319,7 @@ static int __neigh_update(struct neighbo
struct net_device *dev; struct net_device *dev;
int err, notify = 0; int err, notify = 0;
u8 old; u8 old;
@ -552,33 +552,29 @@
trace_neigh_update(neigh, lladdr, new, flags, nlmsg_pid); trace_neigh_update(neigh, lladdr, new, flags, nlmsg_pid);
@@ -1310,7 +1327,10 @@ static int __neigh_update(struct neighbo @@ -1317,6 +1334,9 @@ static int __neigh_update(struct neighbo
new = old; new = old;
goto out; goto out;
} }
- if (!(flags & NEIGH_UPDATE_F_ADMIN) &&
+ +
+ memset(&nmu, 0, sizeof(struct neigh_mac_update)); /* QCA NSS ECM support */ + memset(&nmu, 0, sizeof(struct neigh_mac_update)); /* QCA NSS ECM support */
+ +
+ if (!(flags & NEIGH_UPDATE_F_ADMIN) && if (!(flags & NEIGH_UPDATE_F_ADMIN) &&
(old & (NUD_NOARP | NUD_PERMANENT))) (old & (NUD_NOARP | NUD_PERMANENT)))
goto out; goto out;
@@ -1354,6 +1374,11 @@ static int __neigh_update(struct neighbo
@@ -1347,7 +1367,12 @@ static int __neigh_update(struct neighbo
- compare new & old - compare new & old
- if they are different, check override flag - if they are different, check override flag
*/ */
- if ((old & NUD_VALID) &&
+ /* QCA NSS ECM update - Start */ + /* QCA NSS ECM update - Start */
+ memcpy(nmu.old_mac, neigh->ha, dev->addr_len); + memcpy(nmu.old_mac, neigh->ha, dev->addr_len);
+ memcpy(nmu.update_mac, lladdr, dev->addr_len); + memcpy(nmu.update_mac, lladdr, dev->addr_len);
+ /* QCA NSS ECM update - End */ + /* QCA NSS ECM update - End */
+ +
+ if ((old & NUD_VALID) && if ((old & NUD_VALID) &&
!memcmp(lladdr, neigh->ha, dev->addr_len)) !memcmp(lladdr, neigh->ha, dev->addr_len))
lladdr = neigh->ha; lladdr = neigh->ha;
} else { @@ -1476,8 +1501,11 @@ out:
@@ -1469,8 +1494,11 @@ out:
neigh_update_gc_list(neigh); neigh_update_gc_list(neigh);
if (managed_update) if (managed_update)
neigh_update_managed_list(neigh); neigh_update_managed_list(neigh);
@ -656,7 +652,7 @@
const struct in6_addr *daddr) const struct in6_addr *daddr)
--- a/net/ipv6/route.c --- a/net/ipv6/route.c
+++ b/net/ipv6/route.c +++ b/net/ipv6/route.c
@@ -3857,6 +3857,9 @@ out_free: @@ -3855,6 +3855,9 @@ out_free:
return ERR_PTR(err); return ERR_PTR(err);
} }
@ -666,7 +662,7 @@
int ip6_route_add(struct fib6_config *cfg, gfp_t gfp_flags, int ip6_route_add(struct fib6_config *cfg, gfp_t gfp_flags,
struct netlink_ext_ack *extack) struct netlink_ext_ack *extack)
{ {
@@ -3868,6 +3871,10 @@ int ip6_route_add(struct fib6_config *cf @@ -3866,6 +3869,10 @@ int ip6_route_add(struct fib6_config *cf
return PTR_ERR(rt); return PTR_ERR(rt);
err = __ip6_ins_rt(rt, &cfg->fc_nlinfo, extack); err = __ip6_ins_rt(rt, &cfg->fc_nlinfo, extack);
@ -677,7 +673,7 @@
fib6_info_release(rt); fib6_info_release(rt);
return err; return err;
@@ -3889,6 +3896,9 @@ static int __ip6_del_rt(struct fib6_info @@ -3887,6 +3894,9 @@ static int __ip6_del_rt(struct fib6_info
err = fib6_del(rt, info); err = fib6_del(rt, info);
spin_unlock_bh(&table->tb6_lock); spin_unlock_bh(&table->tb6_lock);
@ -687,7 +683,7 @@
out: out:
fib6_info_release(rt); fib6_info_release(rt);
return err; return err;
@@ -6342,6 +6352,20 @@ static int ip6_route_dev_notify(struct n @@ -6336,6 +6346,20 @@ static int ip6_route_dev_notify(struct n
return NOTIFY_OK; return NOTIFY_OK;
} }
@ -710,7 +706,7 @@
*/ */
--- a/net/core/dev.c --- a/net/core/dev.c
+++ b/net/core/dev.c +++ b/net/core/dev.c
@@ -1639,6 +1639,7 @@ const char *netdev_cmd_to_name(enum netd @@ -1654,6 +1654,7 @@ const char *netdev_cmd_to_name(enum netd
N(SVLAN_FILTER_PUSH_INFO) N(SVLAN_FILTER_DROP_INFO) N(SVLAN_FILTER_PUSH_INFO) N(SVLAN_FILTER_DROP_INFO)
N(PRE_CHANGEADDR) N(OFFLOAD_XSTATS_ENABLE) N(OFFLOAD_XSTATS_DISABLE) N(PRE_CHANGEADDR) N(OFFLOAD_XSTATS_ENABLE) N(OFFLOAD_XSTATS_DISABLE)
N(OFFLOAD_XSTATS_REPORT_USED) N(OFFLOAD_XSTATS_REPORT_DELTA) N(OFFLOAD_XSTATS_REPORT_USED) N(OFFLOAD_XSTATS_REPORT_DELTA)
@ -720,7 +716,7 @@
return "UNKNOWN_NETDEV_EVENT"; return "UNKNOWN_NETDEV_EVENT";
--- a/net/ipv6/addrconf.c --- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c
@@ -987,6 +987,7 @@ void inet6_ifa_finish_destroy(struct ine @@ -1002,6 +1002,7 @@ void inet6_ifa_finish_destroy(struct ine
kfree_rcu(ifp, rcu); kfree_rcu(ifp, rcu);
} }
@ -728,7 +724,7 @@
static void static void
ipv6_link_dev_addr(struct inet6_dev *idev, struct inet6_ifaddr *ifp) ipv6_link_dev_addr(struct inet6_dev *idev, struct inet6_ifaddr *ifp)
@@ -2045,6 +2046,36 @@ struct inet6_ifaddr *ipv6_get_ifaddr(str @@ -2061,6 +2062,36 @@ struct inet6_ifaddr *ipv6_get_ifaddr(str
return result; return result;
} }

View File

@ -466,7 +466,7 @@
#endif /* !(__LINUX_IF_PPPOX_H) */ #endif /* !(__LINUX_IF_PPPOX_H) */
--- a/include/linux/netdevice.h --- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h +++ b/include/linux/netdevice.h
@@ -1709,6 +1709,24 @@ enum netdev_priv_flags { @@ -1710,6 +1710,24 @@ enum netdev_priv_flags {
IFF_NO_IP_ALIGN = BIT_ULL(33), IFF_NO_IP_ALIGN = BIT_ULL(33),
}; };
@ -491,16 +491,14 @@
#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN #define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
#define IFF_EBRIDGE IFF_EBRIDGE #define IFF_EBRIDGE IFF_EBRIDGE
#define IFF_BONDING IFF_BONDING #define IFF_BONDING IFF_BONDING
@@ -2051,7 +2069,8 @@ struct net_device { @@ -2053,6 +2071,7 @@ struct net_device {
/* Read-mostly cache-line for fast-path access */ /* Read-mostly cache-line for fast-path access */
unsigned int flags; unsigned int flags;
unsigned long long priv_flags; unsigned long long priv_flags;
- const struct net_device_ops *netdev_ops;
+ unsigned int priv_flags_ext; + unsigned int priv_flags_ext;
+ const struct net_device_ops *netdev_ops; const struct net_device_ops *netdev_ops;
int ifindex; int ifindex;
unsigned short gflags; unsigned short gflags;
unsigned short hard_header_len;
--- a/include/linux/ppp_channel.h --- a/include/linux/ppp_channel.h
+++ b/include/linux/ppp_channel.h +++ b/include/linux/ppp_channel.h
@@ -19,6 +19,10 @@ @@ -19,6 +19,10 @@

View File

@ -81,16 +81,15 @@
case AD_MUX_COLLECTING_DISTRIBUTING: case AD_MUX_COLLECTING_DISTRIBUTING:
port->actor_oper_port_state |= LACP_STATE_COLLECTING; port->actor_oper_port_state |= LACP_STATE_COLLECTING;
port->actor_oper_port_state |= LACP_STATE_DISTRIBUTING; port->actor_oper_port_state |= LACP_STATE_DISTRIBUTING;
@@ -1908,13 +1963,24 @@ static void ad_enable_collecting_distrib @@ -1908,6 +1963,7 @@ static void ad_enable_collecting_distrib
bool *update_slave_arr) bool *update_slave_arr)
{ {
if (port->aggregator->is_active) { if (port->aggregator->is_active) {
- slave_dbg(port->slave->bond->dev, port->slave->dev,
+ struct bond_cb *lag_cb_main; /* QCA NSS ECM bonding support */ + struct bond_cb *lag_cb_main; /* QCA NSS ECM bonding support */
+ slave_dbg(port->slave->bond->dev, port->slave->dev, slave_dbg(port->slave->bond->dev, port->slave->dev,
"Enabling port %d (LAG %d)\n", "Enabling port %d (LAG %d)\n",
port->actor_port_number, port->actor_port_number,
port->aggregator->aggregator_identifier); @@ -1915,6 +1971,16 @@ static void ad_enable_collecting_distrib
__enable_port(port); __enable_port(port);
/* Slave array needs update */ /* Slave array needs update */
*update_slave_arr = true; *update_slave_arr = true;
@ -238,16 +237,14 @@
if (bond_is_lb(bond)) if (bond_is_lb(bond))
bond_alb_handle_link_change(bond, new_active, BOND_LINK_UP); bond_alb_handle_link_change(bond, new_active, BOND_LINK_UP);
} else { } else {
@@ -1809,7 +1826,8 @@ int bond_enslave(struct net_device *bond @@ -1809,6 +1826,7 @@ int bond_enslave(struct net_device *bond
const struct net_device_ops *slave_ops = slave_dev->netdev_ops; const struct net_device_ops *slave_ops = slave_dev->netdev_ops;
struct slave *new_slave = NULL, *prev_slave; struct slave *new_slave = NULL, *prev_slave;
struct sockaddr_storage ss; struct sockaddr_storage ss;
- int link_reporting;
+ struct bond_cb *lag_cb_main; /* QCA NSS ECM bonding support */ + struct bond_cb *lag_cb_main; /* QCA NSS ECM bonding support */
+ int link_reporting; int link_reporting;
int res = 0, i; int res = 0, i;
if (slave_dev->flags & IFF_MASTER &&
@@ -2252,6 +2270,15 @@ int bond_enslave(struct net_device *bond @@ -2252,6 +2270,15 @@ int bond_enslave(struct net_device *bond
bond_is_active_slave(new_slave) ? "an active" : "a backup", bond_is_active_slave(new_slave) ? "an active" : "a backup",
new_slave->link != BOND_LINK_DOWN ? "an up" : "a down"); new_slave->link != BOND_LINK_DOWN ? "an up" : "a down");
@ -280,16 +277,14 @@
return res; return res;
} }
@@ -2339,7 +2375,8 @@ static int __bond_release_one(struct net @@ -2339,6 +2375,7 @@ static int __bond_release_one(struct net
struct slave *slave, *oldcurrent; struct slave *slave, *oldcurrent;
struct sockaddr_storage ss; struct sockaddr_storage ss;
int old_flags = bond_dev->flags; int old_flags = bond_dev->flags;
- netdev_features_t old_features = bond_dev->features;
+ struct bond_cb *lag_cb_main; /* QCA NSS ECM bonding support */ + struct bond_cb *lag_cb_main; /* QCA NSS ECM bonding support */
+ netdev_features_t old_features = bond_dev->features; netdev_features_t old_features = bond_dev->features;
/* slave is not a slave or master is not master of this slave */ /* slave is not a slave or master is not master of this slave */
if (!(slave_dev->flags & IFF_SLAVE) ||
@@ -2360,6 +2397,15 @@ static int __bond_release_one(struct net @@ -2360,6 +2397,15 @@ static int __bond_release_one(struct net
bond_set_slave_inactive_flags(slave, BOND_SLAVE_NOTIFY_NOW); bond_set_slave_inactive_flags(slave, BOND_SLAVE_NOTIFY_NOW);
@ -345,14 +340,14 @@
bond_set_carrier(bond); bond_set_carrier(bond);
} }
@@ -4013,8 +4077,219 @@ static inline u32 bond_eth_hash(struct s @@ -4013,9 +4077,220 @@ static inline u32 bond_eth_hash(struct s
return 0; return 0;
ep = (struct ethhdr *)(data + mhoff); ep = (struct ethhdr *)(data + mhoff);
- return ep->h_dest[5] ^ ep->h_source[5] ^ be16_to_cpu(ep->h_proto); - return ep->h_dest[5] ^ ep->h_source[5] ^ be16_to_cpu(ep->h_proto);
+ return ep->h_dest[5] ^ ep->h_source[5]; /* QCA NSS ECM bonding support */ + return ep->h_dest[5] ^ ep->h_source[5]; /* QCA NSS ECM bonding support */
+} }
+
+/* QCA NSS ECM bonding support - Start */ +/* QCA NSS ECM bonding support - Start */
+/* Extract the appropriate headers based on bond's xmit policy */ +/* Extract the appropriate headers based on bond's xmit policy */
+static bool bond_flow_dissect_without_skb(struct bonding *bond, +static bool bond_flow_dissect_without_skb(struct bonding *bond,
@ -537,7 +532,7 @@
+ default: + default:
+ return NULL; + return NULL;
+ } + }
} +}
+EXPORT_SYMBOL(bond_get_tx_dev); +EXPORT_SYMBOL(bond_get_tx_dev);
+ +
+/* In bond_xmit_xor() , we determine the output device by using a pre- +/* In bond_xmit_xor() , we determine the output device by using a pre-
@ -563,9 +558,10 @@
+ return NETDEV_TX_OK; + return NETDEV_TX_OK;
+} +}
+/* QCA NSS ECM bonding support - End */ +/* QCA NSS ECM bonding support - End */
+
static bool bond_flow_ip(struct sk_buff *skb, struct flow_keys *fk, const void *data, static bool bond_flow_ip(struct sk_buff *skb, struct flow_keys *fk, const void *data,
int hlen, __be16 l2_proto, int *nhoff, int *ip_proto, bool l34) int hlen, __be16 l2_proto, int *nhoff, int *ip_proto, bool l34)
{
@@ -5211,15 +5486,23 @@ static netdev_tx_t bond_3ad_xor_xmit(str @@ -5211,15 +5486,23 @@ static netdev_tx_t bond_3ad_xor_xmit(str
struct net_device *dev) struct net_device *dev)
{ {

View File

@ -1,6 +1,6 @@
--- a/net/netfilter/Kconfig --- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig +++ b/net/netfilter/Kconfig
@@ -171,6 +171,13 @@ config NF_CONNTRACK_TIMEOUT @@ -179,6 +179,13 @@ config NF_CONNTRACK_TIMEOUT
If unsure, say `N'. If unsure, say `N'.

View File

@ -1,6 +1,6 @@
--- a/include/linux/netdevice.h --- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h +++ b/include/linux/netdevice.h
@@ -1724,7 +1724,9 @@ enum netdev_priv_flags_ext { @@ -1725,7 +1725,9 @@ enum netdev_priv_flags_ext {
IFF_EXT_PPP_PPTP = 1<<3, IFF_EXT_PPP_PPTP = 1<<3,
IFF_EXT_GRE_V4_TAP = 1<<4, IFF_EXT_GRE_V4_TAP = 1<<4,
IFF_EXT_GRE_V6_TAP = 1<<5, IFF_EXT_GRE_V6_TAP = 1<<5,

View File

@ -10,7 +10,7 @@ Subject: [PATCH] Update 607-qca-add-add-nss-bridge-mgr-support.patch for kernel
--- a/include/linux/if_bridge.h --- a/include/linux/if_bridge.h
+++ b/include/linux/if_bridge.h +++ b/include/linux/if_bridge.h
@@ -252,4 +252,8 @@ typedef struct net_bridge_port *br_get_d @@ -256,4 +256,8 @@ typedef struct net_bridge_port *br_get_d
extern br_get_dst_hook_t __rcu *br_get_dst_hook; extern br_get_dst_hook_t __rcu *br_get_dst_hook;
/* QCA NSS ECM support - End */ /* QCA NSS ECM support - End */
@ -21,7 +21,7 @@ Subject: [PATCH] Update 607-qca-add-add-nss-bridge-mgr-support.patch for kernel
#endif #endif
--- a/net/bridge/br_fdb.c --- a/net/bridge/br_fdb.c
+++ b/net/bridge/br_fdb.c +++ b/net/bridge/br_fdb.c
@@ -62,6 +62,15 @@ void br_fdb_update_unregister_notify(str @@ -63,6 +63,15 @@ void br_fdb_update_unregister_notify(str
EXPORT_SYMBOL_GPL(br_fdb_update_unregister_notify); EXPORT_SYMBOL_GPL(br_fdb_update_unregister_notify);
/* QCA NSS ECM support - End */ /* QCA NSS ECM support - End */
@ -37,7 +37,7 @@ Subject: [PATCH] Update 607-qca-add-add-nss-bridge-mgr-support.patch for kernel
int __init br_fdb_init(void) int __init br_fdb_init(void)
{ {
br_fdb_cache = kmem_cache_create("bridge_fdb_cache", br_fdb_cache = kmem_cache_create("bridge_fdb_cache",
@@ -568,7 +577,7 @@ void br_fdb_cleanup(struct work_struct * @@ -573,7 +582,7 @@ void br_fdb_cleanup(struct work_struct *
unsigned long delay = hold_time(br); unsigned long delay = hold_time(br);
unsigned long work_delay = delay; unsigned long work_delay = delay;
unsigned long now = jiffies; unsigned long now = jiffies;
@ -46,7 +46,7 @@ Subject: [PATCH] Update 607-qca-add-add-nss-bridge-mgr-support.patch for kernel
/* this part is tricky, in order to avoid blocking learning and /* this part is tricky, in order to avoid blocking learning and
* consequently forwarding, we rely on rcu to delete objects with * consequently forwarding, we rely on rcu to delete objects with
@@ -596,12 +605,13 @@ void br_fdb_cleanup(struct work_struct * @@ -601,12 +610,13 @@ void br_fdb_cleanup(struct work_struct *
} else { } else {
spin_lock_bh(&br->hash_lock); spin_lock_bh(&br->hash_lock);
if (!hlist_unhashed(&f->fdb_node)) { if (!hlist_unhashed(&f->fdb_node)) {
@ -62,7 +62,7 @@ Subject: [PATCH] Update 607-qca-add-add-nss-bridge-mgr-support.patch for kernel
/* QCA NSS ECM support - End */ /* QCA NSS ECM support - End */
} }
spin_unlock_bh(&br->hash_lock); spin_unlock_bh(&br->hash_lock);
@@ -903,6 +913,7 @@ void br_fdb_update(struct net_bridge *br @@ -908,6 +918,7 @@ void br_fdb_update(struct net_bridge *br
const unsigned char *addr, u16 vid, unsigned long flags) const unsigned char *addr, u16 vid, unsigned long flags)
{ {
struct net_bridge_fdb_entry *fdb; struct net_bridge_fdb_entry *fdb;
@ -70,7 +70,7 @@ Subject: [PATCH] Update 607-qca-add-add-nss-bridge-mgr-support.patch for kernel
/* some users want to always flood. */ /* some users want to always flood. */
if (hold_time(br) == 0) if (hold_time(br) == 0)
@@ -928,6 +939,12 @@ void br_fdb_update(struct net_bridge *br @@ -933,6 +944,12 @@ void br_fdb_update(struct net_bridge *br
if (unlikely(source != READ_ONCE(fdb->dst) && if (unlikely(source != READ_ONCE(fdb->dst) &&
!test_bit(BR_FDB_STICKY, &fdb->flags))) { !test_bit(BR_FDB_STICKY, &fdb->flags))) {
br_switchdev_fdb_notify(br, fdb, RTM_DELNEIGH); br_switchdev_fdb_notify(br, fdb, RTM_DELNEIGH);
@ -83,7 +83,7 @@ Subject: [PATCH] Update 607-qca-add-add-nss-bridge-mgr-support.patch for kernel
WRITE_ONCE(fdb->dst, source); WRITE_ONCE(fdb->dst, source);
fdb_modified = true; fdb_modified = true;
/* Take over HW learned entry */ /* Take over HW learned entry */
@@ -939,7 +956,7 @@ void br_fdb_update(struct net_bridge *br @@ -944,7 +961,7 @@ void br_fdb_update(struct net_bridge *br
/* QCA NSS ECM support - Start */ /* QCA NSS ECM support - Start */
atomic_notifier_call_chain( atomic_notifier_call_chain(
&br_fdb_update_notifier_list, &br_fdb_update_notifier_list,

View File

@ -1,6 +1,6 @@
--- a/include/linux/skbuff.h --- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h +++ b/include/linux/skbuff.h
@@ -773,6 +773,7 @@ typedef unsigned char *sk_buff_data_t; @@ -771,6 +771,7 @@ typedef unsigned char *sk_buff_data_t;
* @offload_fwd_mark: Packet was L2-forwarded in hardware * @offload_fwd_mark: Packet was L2-forwarded in hardware
* @offload_l3_fwd_mark: Packet was L3-forwarded in hardware * @offload_l3_fwd_mark: Packet was L3-forwarded in hardware
* @tc_skip_classify: do not classify packet. set by IFB device * @tc_skip_classify: do not classify packet. set by IFB device
@ -8,7 +8,7 @@
* @tc_at_ingress: used within tc_classify to distinguish in/egress * @tc_at_ingress: used within tc_classify to distinguish in/egress
* @redirected: packet was redirected by packet classifier * @redirected: packet was redirected by packet classifier
* @from_ingress: packet was redirected from the ingress path * @from_ingress: packet was redirected from the ingress path
@@ -968,6 +969,8 @@ struct sk_buff { @@ -963,6 +964,8 @@ struct sk_buff {
#ifdef CONFIG_NET_CLS_ACT #ifdef CONFIG_NET_CLS_ACT
__u8 tc_skip_classify:1; __u8 tc_skip_classify:1;
__u8 tc_at_ingress:1; /* See TC_AT_INGRESS_MASK */ __u8 tc_at_ingress:1; /* See TC_AT_INGRESS_MASK */

View File

@ -6,8 +6,8 @@
u32 flags; u32 flags;
+ unsigned long cust_data; + unsigned long cust_data;
#ifdef CONFIG_LOCKDEP #ifdef CONFIG_SHORTCUT_FE
struct lockdep_map lockdep_map; unsigned long cust_data;
--- a/drivers/net/ifb.c --- a/drivers/net/ifb.c
+++ b/drivers/net/ifb.c +++ b/drivers/net/ifb.c
@@ -151,6 +151,31 @@ resched: @@ -151,6 +151,31 @@ resched:

View File

@ -10,7 +10,7 @@
__u32 flags; /* tunnel flags */ __u32 flags; /* tunnel flags */
--- a/include/net/ip_tunnels.h --- a/include/net/ip_tunnels.h
+++ b/include/net/ip_tunnels.h +++ b/include/net/ip_tunnels.h
@@ -553,4 +553,9 @@ static inline void ip_tunnel_info_opts_s @@ -586,4 +586,9 @@ static inline void ip_tunnel_info_opts_s
#endif /* CONFIG_INET */ #endif /* CONFIG_INET */
@ -22,7 +22,7 @@
#endif /* __NET_IP_TUNNELS_H */ #endif /* __NET_IP_TUNNELS_H */
--- a/net/ipv6/ip6_tunnel.c --- a/net/ipv6/ip6_tunnel.c
+++ b/net/ipv6/ip6_tunnel.c +++ b/net/ipv6/ip6_tunnel.c
@@ -2398,6 +2398,26 @@ nla_put_failure: @@ -2413,6 +2413,26 @@ nla_put_failure:
return -EMSGSIZE; return -EMSGSIZE;
} }

View File

@ -29,19 +29,17 @@
int err = -ENOBUFS; int err = -ENOBUFS;
skb = nlmsg_new(vxlan_nlmsg_size(), GFP_ATOMIC); skb = nlmsg_new(vxlan_nlmsg_size(), GFP_ATOMIC);
@@ -322,7 +337,11 @@ static void __vxlan_fdb_notify(struct vx @@ -322,6 +337,10 @@ static void __vxlan_fdb_notify(struct vx
} }
rtnl_notify(skb, net, 0, RTNLGRP_NEIGH, NULL, GFP_ATOMIC); rtnl_notify(skb, net, 0, RTNLGRP_NEIGH, NULL, GFP_ATOMIC);
- return;
+ vfe.dev = vxlan->dev; + vfe.dev = vxlan->dev;
+ vfe.rdst = rd; + vfe.rdst = rd;
+ ether_addr_copy(vfe.eth_addr, fdb->eth_addr); + ether_addr_copy(vfe.eth_addr, fdb->eth_addr);
+ atomic_notifier_call_chain(&vxlan_fdb_notifier_list, type, (void *)&vfe); + atomic_notifier_call_chain(&vxlan_fdb_notifier_list, type, (void *)&vfe);
+ return; return;
errout: errout:
if (err < 0) if (err < 0)
rtnl_set_sk_err(net, RTNLGRP_NEIGH, err);
@@ -488,6 +507,18 @@ static struct vxlan_fdb *vxlan_find_mac( @@ -488,6 +507,18 @@ static struct vxlan_fdb *vxlan_find_mac(
return f; return f;
} }
@ -61,7 +59,7 @@
/* caller should hold vxlan->hash_lock */ /* caller should hold vxlan->hash_lock */
static struct vxlan_rdst *vxlan_fdb_find_rdst(struct vxlan_fdb *f, static struct vxlan_rdst *vxlan_fdb_find_rdst(struct vxlan_fdb *f,
union vxlan_addr *ip, __be16 port, union vxlan_addr *ip, __be16 port,
@@ -2654,6 +2685,9 @@ static void vxlan_xmit_one(struct sk_buf @@ -2671,6 +2702,9 @@ static void vxlan_xmit_one(struct sk_buf
goto out_unlock; goto out_unlock;
} }
@ -71,18 +69,16 @@
tos = ip_tunnel_ecn_encap(tos, old_iph, skb); tos = ip_tunnel_ecn_encap(tos, old_iph, skb);
ttl = ttl ? : ip4_dst_hoplimit(&rt->dst); ttl = ttl ? : ip4_dst_hoplimit(&rt->dst);
err = vxlan_build_skb(skb, ndst, sizeof(struct iphdr), err = vxlan_build_skb(skb, ndst, sizeof(struct iphdr),
@@ -2725,7 +2759,10 @@ static void vxlan_xmit_one(struct sk_buf @@ -2742,6 +2776,9 @@ static void vxlan_xmit_one(struct sk_buf
if (err < 0) if (err < 0)
goto tx_error; goto tx_error;
- udp_tunnel6_xmit_skb(ndst, sock6->sock->sk, skb, dev,
+ /* Reset the skb_iif to Tunnels interface index */ + /* Reset the skb_iif to Tunnels interface index */
+ skb->skb_iif = dev->ifindex; + skb->skb_iif = dev->ifindex;
+ +
+ udp_tunnel6_xmit_skb(ndst, sock6->sock->sk, skb, dev, udp_tunnel6_xmit_skb(ndst, sock6->sock->sk, skb, dev,
&local_ip.sin6.sin6_addr, &local_ip.sin6.sin6_addr,
&dst->sin6.sin6_addr, tos, ttl, &dst->sin6.sin6_addr, tos, ttl,
label, src_port, dst_port, !udp_sum);
--- a/include/net/vxlan.h --- a/include/net/vxlan.h
+++ b/include/net/vxlan.h +++ b/include/net/vxlan.h
@@ -344,6 +344,19 @@ struct vxlan_dev { @@ -344,6 +344,19 @@ struct vxlan_dev {

View File

@ -1,6 +1,6 @@
--- a/net/ipv6/ip6_tunnel.c --- a/net/ipv6/ip6_tunnel.c
+++ b/net/ipv6/ip6_tunnel.c +++ b/net/ipv6/ip6_tunnel.c
@@ -2404,7 +2404,7 @@ nla_put_failure: @@ -2419,7 +2419,7 @@ nla_put_failure:
*/ */
void ip6_update_offload_stats(struct net_device *dev, void *ptr) void ip6_update_offload_stats(struct net_device *dev, void *ptr)
{ {

View File

@ -65,7 +65,7 @@ Cc: stable@vger.kernel.org # v5.15+
--- a/drivers/pci/controller/dwc/pcie-dw-rockchip.c --- a/drivers/pci/controller/dwc/pcie-dw-rockchip.c
+++ b/drivers/pci/controller/dwc/pcie-dw-rockchip.c +++ b/drivers/pci/controller/dwc/pcie-dw-rockchip.c
@@ -240,7 +240,7 @@ static int rockchip_pcie_resource_get(struct platform_device *pdev, @@ -240,7 +240,7 @@ static int rockchip_pcie_resource_get(st
return PTR_ERR(rockchip->apb_base); return PTR_ERR(rockchip->apb_base);
rockchip->rst_gpio = devm_gpiod_get_optional(&pdev->dev, "reset", rockchip->rst_gpio = devm_gpiod_get_optional(&pdev->dev, "reset",

View File

@ -25,7 +25,7 @@ Subject: [PATCH] r8169: add LED configuration from OF
TxDescStartAddrLow = 0x20, TxDescStartAddrLow = 0x20,
TxDescStartAddrHigh = 0x24, TxDescStartAddrHigh = 0x24,
TxHDescStartAddrLow = 0x28, TxHDescStartAddrLow = 0x28,
@@ -5265,6 +5267,22 @@ static bool rtl_aspm_is_safe(struct rtl8 @@ -5264,6 +5266,22 @@ static bool rtl_aspm_is_safe(struct rtl8
return false; return false;
} }
@ -48,7 +48,7 @@ Subject: [PATCH] r8169: add LED configuration from OF
static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
{ {
struct rtl8169_private *tp; struct rtl8169_private *tp;
@@ -5436,6 +5454,7 @@ static int rtl_init_one(struct pci_dev * @@ -5435,6 +5453,7 @@ static int rtl_init_one(struct pci_dev *
if (!tp->counters) if (!tp->counters)
return -ENOMEM; return -ENOMEM;

View File

@ -140,7 +140,7 @@ and performance for all other cases.
* and hopefully then we'll have sufficient space. * and hopefully then we'll have sufficient space.
--- a/net/ipv4/tcp_ipv4.c --- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c
@@ -3231,6 +3231,8 @@ static int __net_init tcp_sk_init(struct @@ -3240,6 +3240,8 @@ static int __net_init tcp_sk_init(struct
net->ipv4.sysctl_tcp_shrink_window = 0; net->ipv4.sysctl_tcp_shrink_window = 0;