Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
d28b3f653e
@ -226,6 +226,11 @@ define Build/copy-file
|
||||
cat "$(1)" > "$@"
|
||||
endef
|
||||
|
||||
define Build/dlink-sge-image
|
||||
$(STAGING_DIR_HOST)/bin/dlink-sge-image $(1) $@ $@.enc
|
||||
mv $@.enc $@
|
||||
endef
|
||||
|
||||
define Build/edimax-header
|
||||
$(STAGING_DIR_HOST)/bin/mkedimaximg -i $@ -o $@.new $(1)
|
||||
@mv $@.new $@
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-5.15 = .139
|
||||
LINUX_KERNEL_HASH-5.15.139 = 9c68c10dfe18e59b892e940436dea6a18d167160d55e62563cf7282244d8044e
|
||||
LINUX_VERSION-5.15 = .146
|
||||
LINUX_KERNEL_HASH-5.15.146 = 5a807a5fa2a80ada957d8079681dfb5cc196ec26f43244d1c8a4fd7af592d192
|
||||
|
||||
@ -352,8 +352,7 @@ define KernelPackage/fs-ksmbd
|
||||
DEPENDS:= \
|
||||
+kmod-nls-base \
|
||||
+kmod-nls-utf8 \
|
||||
+kmod-crypto-md4 \
|
||||
+kmod-crypto-md5 \
|
||||
+kmod-crypto-md5 \
|
||||
+kmod-crypto-hmac \
|
||||
+kmod-crypto-ecb \
|
||||
+kmod-crypto-des \
|
||||
|
||||
@ -145,7 +145,7 @@ mac80211_hostapd_setup_base() {
|
||||
[ "$auto_channel" = 0 ] && [ -z "$channel_list" ] && \
|
||||
channel_list="$channel"
|
||||
|
||||
[ "$min_tx_power" -gt 0 ] && append base_cfg "min_tx_power=$min_tx_power"
|
||||
[ "$min_tx_power" -gt 0 ] && append base_cfg "min_tx_power=$min_tx_power" "$N"
|
||||
|
||||
set_default noscan 0
|
||||
|
||||
|
||||
@ -0,0 +1,34 @@
|
||||
From: David Bauer <mail@david-bauer.net>
|
||||
Date: Thu, 30 Nov 2023 07:32:52 +0100
|
||||
Subject: [PATCH] mac80211: avoid crashing on invalid band info
|
||||
|
||||
Frequent crashes have been observed on MT7916 based platforms. While the
|
||||
root of these crashes are currently unknown, they happen when decoding
|
||||
rate information of connected STAs in AP mode. The rate-information is
|
||||
associated with a band which is not available on the PHY.
|
||||
|
||||
Check for this condition in order to avoid crashing the whole system.
|
||||
This patch should be removed once the roout cause has been found and
|
||||
fixed.
|
||||
|
||||
Link: https://github.com/freifunk-gluon/gluon/issues/2980
|
||||
|
||||
Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/sta_info.c
|
||||
+++ b/net/mac80211/sta_info.c
|
||||
@@ -2422,6 +2422,13 @@ static void sta_stats_decode_rate(struct
|
||||
|
||||
sband = local->hw.wiphy->bands[band];
|
||||
|
||||
+ if (!sband) {
|
||||
+ wiphy_warn(local->hw.wiphy,
|
||||
+ "Invalid band %d\n",
|
||||
+ band);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
if (WARN_ON_ONCE(!sband->bitrates))
|
||||
break;
|
||||
|
||||
@ -1907,6 +1907,9 @@ void hostapd_ubus_notify_radar_detected(struct hostapd_iface *iface, int frequen
|
||||
struct hostapd_data *hapd;
|
||||
int i;
|
||||
|
||||
if (!ctx)
|
||||
return;
|
||||
|
||||
blob_buf_init(&b, 0);
|
||||
blobmsg_add_u16(&b, "frequency", frequency);
|
||||
blobmsg_add_u16(&b, "width", chan_width);
|
||||
|
||||
@ -589,15 +589,15 @@ SVN-Revision: 35130
|
||||
* XXX skbs on the gro_list have all been parsed and pulled
|
||||
--- a/include/net/addrconf.h
|
||||
+++ b/include/net/addrconf.h
|
||||
@@ -47,7 +47,7 @@ struct prefix_info {
|
||||
@@ -52,7 +52,7 @@ struct prefix_info {
|
||||
__be32 reserved2;
|
||||
|
||||
struct in6_addr prefix;
|
||||
-};
|
||||
+} __attribute__((packed, aligned(2)));
|
||||
|
||||
#include <linux/ipv6.h>
|
||||
#include <linux/netdevice.h>
|
||||
/* rfc4861 4.6.2: IPv6 PIO is 32 bytes in size */
|
||||
static_assert(sizeof(struct prefix_info) == 32);
|
||||
--- a/include/net/inet_ecn.h
|
||||
+++ b/include/net/inet_ecn.h
|
||||
@@ -138,9 +138,9 @@ static inline int IP6_ECN_set_ce(struct
|
||||
@ -750,7 +750,7 @@ SVN-Revision: 35130
|
||||
EXPORT_SYMBOL(xfrm_parse_spi);
|
||||
--- a/net/ipv4/tcp_input.c
|
||||
+++ b/net/ipv4/tcp_input.c
|
||||
@@ -4171,14 +4171,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
@@ -4175,14 +4175,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
{
|
||||
const __be32 *ptr = (const __be32 *)(th + 1);
|
||||
|
||||
|
||||
@ -24,7 +24,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
--- a/net/bluetooth/smp.c
|
||||
+++ b/net/bluetooth/smp.c
|
||||
@@ -2207,7 +2207,7 @@ mackey_and_ltk:
|
||||
@@ -2214,7 +2214,7 @@ mackey_and_ltk:
|
||||
if (err)
|
||||
return SMP_UNSPECIFIED;
|
||||
|
||||
@ -33,7 +33,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
if (hcon->out) {
|
||||
sc_dhkey_check(smp);
|
||||
SMP_ALLOW_CMD(smp, SMP_CMD_DHKEY_CHECK);
|
||||
@@ -2222,9 +2222,6 @@ mackey_and_ltk:
|
||||
@@ -2229,9 +2229,6 @@ mackey_and_ltk:
|
||||
confirm_hint = 0;
|
||||
|
||||
confirm:
|
||||
|
||||
@ -14,7 +14,7 @@ use the same logic.
|
||||
|
||||
--- a/drivers/tty/serial/amba-pl011.c
|
||||
+++ b/drivers/tty/serial/amba-pl011.c
|
||||
@@ -2756,7 +2756,12 @@ static int pl011_setup_port(struct devic
|
||||
@@ -2752,7 +2752,12 @@ static int pl011_setup_port(struct devic
|
||||
if (IS_ERR(base))
|
||||
return PTR_ERR(base);
|
||||
|
||||
|
||||
@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/tty/serial/amba-pl011.c
|
||||
+++ b/drivers/tty/serial/amba-pl011.c
|
||||
@@ -1730,6 +1730,23 @@ static void pl011_put_poll_char(struct u
|
||||
@@ -1726,6 +1726,23 @@ static void pl011_put_poll_char(struct u
|
||||
|
||||
#endif /* CONFIG_CONSOLE_POLL */
|
||||
|
||||
@ -50,7 +50,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
static int pl011_hwinit(struct uart_port *port)
|
||||
{
|
||||
struct uart_amba_port *uap =
|
||||
@@ -1746,7 +1763,7 @@ static int pl011_hwinit(struct uart_port
|
||||
@@ -1742,7 +1759,7 @@ static int pl011_hwinit(struct uart_port
|
||||
if (retval)
|
||||
return retval;
|
||||
|
||||
@ -59,7 +59,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
/* Clear pending error and receive interrupts */
|
||||
pl011_write(UART011_OEIS | UART011_BEIS | UART011_PEIS |
|
||||
@@ -2452,7 +2469,7 @@ static int pl011_console_setup(struct co
|
||||
@@ -2448,7 +2465,7 @@ static int pl011_console_setup(struct co
|
||||
plat->init();
|
||||
}
|
||||
|
||||
@ -68,7 +68,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
if (uap->vendor->fixed_options) {
|
||||
baud = uap->fixed_baud;
|
||||
@@ -2669,6 +2686,7 @@ static struct uart_driver amba_reg = {
|
||||
@@ -2665,6 +2682,7 @@ static struct uart_driver amba_reg = {
|
||||
.cons = AMBA_CONSOLE,
|
||||
};
|
||||
|
||||
@ -76,7 +76,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
static int pl011_probe_dt_alias(int index, struct device *dev)
|
||||
{
|
||||
struct device_node *np;
|
||||
@@ -2700,6 +2718,7 @@ static int pl011_probe_dt_alias(int inde
|
||||
@@ -2696,6 +2714,7 @@ static int pl011_probe_dt_alias(int inde
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/tty/serial/amba-pl011.c
|
||||
+++ b/drivers/tty/serial/amba-pl011.c
|
||||
@@ -1435,6 +1435,7 @@ static bool pl011_tx_char(struct uart_am
|
||||
@@ -1431,6 +1431,7 @@ static bool pl011_tx_char(struct uart_am
|
||||
return false; /* unable to transmit character */
|
||||
|
||||
pl011_write(c, uap, REG_DR);
|
||||
|
||||
@ -36,7 +36,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
- reg
|
||||
--- a/drivers/tty/serial/amba-pl011.c
|
||||
+++ b/drivers/tty/serial/amba-pl011.c
|
||||
@@ -2847,6 +2847,11 @@ static int pl011_probe(struct amba_devic
|
||||
@@ -2843,6 +2843,11 @@ static int pl011_probe(struct amba_devic
|
||||
if (IS_ERR(uap->clk))
|
||||
return PTR_ERR(uap->clk);
|
||||
|
||||
|
||||
@ -29,7 +29,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/tty/serial/amba-pl011.c
|
||||
+++ b/drivers/tty/serial/amba-pl011.c
|
||||
@@ -1496,6 +1496,10 @@ static bool pl011_tx_chars(struct uart_a
|
||||
@@ -1492,6 +1492,10 @@ static bool pl011_tx_chars(struct uart_a
|
||||
if (likely(from_irq) && count-- == 0)
|
||||
break;
|
||||
|
||||
|
||||
@ -244,7 +244,7 @@ bcm2835-mmc: uninitialized_var is no more
|
||||
static inline int mmc_blk_part_switch(struct mmc_card *card,
|
||||
unsigned int part_type);
|
||||
static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq,
|
||||
@@ -2942,6 +2949,8 @@ static int mmc_blk_probe(struct mmc_card
|
||||
@@ -2944,6 +2951,8 @@ static int mmc_blk_probe(struct mmc_card
|
||||
{
|
||||
struct mmc_blk_data *md;
|
||||
int ret = 0;
|
||||
@ -253,7 +253,7 @@ bcm2835-mmc: uninitialized_var is no more
|
||||
|
||||
/*
|
||||
* Check that the card supports the command class(es) we need.
|
||||
@@ -2949,7 +2958,16 @@ static int mmc_blk_probe(struct mmc_card
|
||||
@@ -2951,7 +2960,16 @@ static int mmc_blk_probe(struct mmc_card
|
||||
if (!(card->csd.cmdclass & CCC_BLOCK_READ))
|
||||
return -ENODEV;
|
||||
|
||||
@ -271,7 +271,7 @@ bcm2835-mmc: uninitialized_var is no more
|
||||
|
||||
card->complete_wq = alloc_workqueue("mmc_complete",
|
||||
WQ_MEM_RECLAIM | WQ_HIGHPRI, 0);
|
||||
@@ -2964,6 +2982,17 @@ static int mmc_blk_probe(struct mmc_card
|
||||
@@ -2966,6 +2984,17 @@ static int mmc_blk_probe(struct mmc_card
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
@ -291,7 +291,7 @@ bcm2835-mmc: uninitialized_var is no more
|
||||
goto out;
|
||||
--- a/drivers/mmc/core/core.c
|
||||
+++ b/drivers/mmc/core/core.c
|
||||
@@ -1812,7 +1812,8 @@ EXPORT_SYMBOL(mmc_erase);
|
||||
@@ -1817,7 +1817,8 @@ EXPORT_SYMBOL(mmc_erase);
|
||||
|
||||
int mmc_can_erase(struct mmc_card *card)
|
||||
{
|
||||
|
||||
@ -12,8 +12,8 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/tty/serial/sc16is7xx.c
|
||||
+++ b/drivers/tty/serial/sc16is7xx.c
|
||||
@@ -696,6 +696,8 @@ static bool sc16is7xx_port_irq(struct sc
|
||||
rxlen = sc16is7xx_port_read(port, SC16IS7XX_RXLVL_REG);
|
||||
@@ -708,6 +708,8 @@ static bool sc16is7xx_port_irq(struct sc
|
||||
|
||||
if (rxlen)
|
||||
sc16is7xx_handle_rx(port, rxlen, iir);
|
||||
+ else
|
||||
|
||||
@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
#define USB_VENDOR_ID_BELKIN 0x050d
|
||||
#define USB_DEVICE_ID_FLIP_KVM 0x3201
|
||||
|
||||
@@ -1318,6 +1321,9 @@
|
||||
@@ -1322,6 +1325,9 @@
|
||||
#define USB_VENDOR_ID_XAT 0x2505
|
||||
#define USB_DEVICE_ID_XAT_CSR 0x0220
|
||||
|
||||
@ -45,7 +45,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
#define USB_DEVICE_ID_THT_2P_ARCADE 0x75e1
|
||||
--- a/drivers/hid/hid-quirks.c
|
||||
+++ b/drivers/hid/hid-quirks.c
|
||||
@@ -41,6 +41,7 @@ static const struct hid_device_id hid_qu
|
||||
@@ -42,6 +42,7 @@ static const struct hid_device_id hid_qu
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS682), HID_QUIRK_NOGET },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS692), HID_QUIRK_NOGET },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM), HID_QUIRK_NOGET },
|
||||
@ -53,7 +53,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL },
|
||||
@@ -198,6 +199,7 @@ static const struct hid_device_id hid_qu
|
||||
@@ -200,6 +201,7 @@ static const struct hid_device_id hid_qu
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_GROUP_AUDIO), HID_QUIRK_NOGET },
|
||||
|
||||
@ -32,7 +32,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
--- a/drivers/spi/spi.c
|
||||
+++ b/drivers/spi/spi.c
|
||||
@@ -3480,6 +3480,7 @@ static int __spi_validate_bits_per_word(
|
||||
@@ -3492,6 +3492,7 @@ static int __spi_validate_bits_per_word(
|
||||
*/
|
||||
int spi_setup(struct spi_device *spi)
|
||||
{
|
||||
@ -40,7 +40,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
unsigned bad_bits, ugly_bits;
|
||||
int status;
|
||||
|
||||
@@ -3501,6 +3502,14 @@ int spi_setup(struct spi_device *spi)
|
||||
@@ -3513,6 +3514,14 @@ int spi_setup(struct spi_device *spi)
|
||||
(SPI_TX_DUAL | SPI_TX_QUAD | SPI_TX_OCTAL |
|
||||
SPI_RX_DUAL | SPI_RX_QUAD | SPI_RX_OCTAL)))
|
||||
return -EINVAL;
|
||||
|
||||
@ -38,7 +38,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
regcache_cache_bypass(s->regmap, false);
|
||||
|
||||
/* Put LCR back to the normal mode */
|
||||
@@ -842,7 +843,7 @@ static unsigned int sc16is7xx_get_mctrl(
|
||||
@@ -854,7 +855,7 @@ static unsigned int sc16is7xx_get_mctrl(
|
||||
/* DCD and DSR are not wired and CTS/RTS is handled automatically
|
||||
* so just indicate DSR and CAR asserted
|
||||
*/
|
||||
@ -47,7 +47,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
}
|
||||
|
||||
static void sc16is7xx_set_mctrl(struct uart_port *port, unsigned int mctrl)
|
||||
@@ -929,14 +930,19 @@ static void sc16is7xx_set_termios(struct
|
||||
@@ -941,14 +942,19 @@ static void sc16is7xx_set_termios(struct
|
||||
regcache_cache_bypass(s->regmap, true);
|
||||
sc16is7xx_port_write(port, SC16IS7XX_XON1_REG, termios->c_cc[VSTART]);
|
||||
sc16is7xx_port_write(port, SC16IS7XX_XOFF1_REG, termios->c_cc[VSTOP]);
|
||||
|
||||
@ -157,7 +157,7 @@ Signed-off-by: Joerg Quinten <aBUGSworstnightmare@gmail.com>
|
||||
static const struct drm_display_mode innolux_at070tn92_mode = {
|
||||
.clock = 33333,
|
||||
.hdisplay = 800,
|
||||
@@ -4666,6 +4698,9 @@ static const struct of_device_id platfor
|
||||
@@ -4667,6 +4699,9 @@ static const struct of_device_id platfor
|
||||
.compatible = "innolux,at043tn24",
|
||||
.data = &innolux_at043tn24,
|
||||
}, {
|
||||
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
--- a/drivers/gpu/drm/panel/panel-simple.c
|
||||
+++ b/drivers/gpu/drm/panel/panel-simple.c
|
||||
@@ -3765,6 +3765,31 @@ static const struct panel_desc qishenglo
|
||||
@@ -3766,6 +3766,31 @@ static const struct panel_desc qishenglo
|
||||
.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 = {
|
||||
.pixelclock = { 26400000, 33300000, 46800000 },
|
||||
.hactive = { 800, 800, 800 },
|
||||
@@ -4845,6 +4870,9 @@ static const struct of_device_id platfor
|
||||
@@ -4846,6 +4871,9 @@ static const struct of_device_id platfor
|
||||
.compatible = "qishenglong,gopher2b-lcd",
|
||||
.data = &qishenglong_gopher2b_lcd,
|
||||
}, {
|
||||
|
||||
@ -46,7 +46,7 @@ Acked-by: Maxime Ripard <maxime@cerno.tech>
|
||||
static const struct drm_display_mode giantplus_gpg482739qs5_mode = {
|
||||
.clock = 9000,
|
||||
.hdisplay = 480,
|
||||
@@ -4708,6 +4734,9 @@ static const struct of_device_id platfor
|
||||
@@ -4709,6 +4735,9 @@ static const struct of_device_id platfor
|
||||
.compatible = "friendlyarm,hd702e",
|
||||
.data = &friendlyarm_hd702e,
|
||||
}, {
|
||||
|
||||
@ -23,7 +23,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
|
||||
--- a/drivers/mmc/core/block.c
|
||||
+++ b/drivers/mmc/core/block.c
|
||||
@@ -1886,7 +1886,11 @@ static void mmc_blk_mq_rw_recovery(struc
|
||||
@@ -1888,7 +1888,11 @@ static void mmc_blk_mq_rw_recovery(struc
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -19,7 +19,7 @@ Subject: [PATCH 210/210] b44: register adm switch
|
||||
|
||||
#include <linux/uaccess.h>
|
||||
#include <asm/io.h>
|
||||
@@ -2243,6 +2245,69 @@ static void b44_adjust_link(struct net_d
|
||||
@@ -2245,6 +2247,69 @@ static void b44_adjust_link(struct net_d
|
||||
}
|
||||
}
|
||||
|
||||
@ -89,7 +89,7 @@ Subject: [PATCH 210/210] b44: register adm switch
|
||||
static int b44_register_phy_one(struct b44 *bp)
|
||||
{
|
||||
__ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, };
|
||||
@@ -2279,6 +2344,9 @@ static int b44_register_phy_one(struct b
|
||||
@@ -2281,6 +2346,9 @@ static int b44_register_phy_one(struct b
|
||||
if (!mdiobus_is_registered_device(bp->mii_bus, bp->phy_addr) &&
|
||||
(sprom->boardflags_lo & (B44_BOARDFLAG_ROBO | B44_BOARDFLAG_ADM))) {
|
||||
|
||||
@ -99,7 +99,7 @@ Subject: [PATCH 210/210] b44: register adm switch
|
||||
dev_info(sdev->dev,
|
||||
"could not find PHY at %i, use fixed one\n",
|
||||
bp->phy_addr);
|
||||
@@ -2473,6 +2541,7 @@ static void b44_remove_one(struct ssb_de
|
||||
@@ -2475,6 +2543,7 @@ static void b44_remove_one(struct ssb_de
|
||||
unregister_netdev(dev);
|
||||
if (bp->flags & B44_FLAG_EXTERNAL_PHY)
|
||||
b44_unregister_phy_one(bp);
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/ethernet/broadcom/b44.c
|
||||
+++ b/drivers/net/ethernet/broadcom/b44.c
|
||||
@@ -429,10 +429,34 @@ static void b44_wap54g10_workaround(stru
|
||||
@@ -430,10 +430,34 @@ static void b44_wap54g10_workaround(stru
|
||||
error:
|
||||
pr_warn("PHY: cannot reset MII transceiver isolate bit\n");
|
||||
}
|
||||
@ -35,7 +35,7 @@
|
||||
#endif
|
||||
|
||||
static int b44_setup_phy(struct b44 *bp)
|
||||
@@ -441,6 +465,7 @@ static int b44_setup_phy(struct b44 *bp)
|
||||
@@ -442,6 +466,7 @@ static int b44_setup_phy(struct b44 *bp)
|
||||
int err;
|
||||
|
||||
b44_wap54g10_workaround(bp);
|
||||
@ -43,7 +43,7 @@
|
||||
|
||||
if (bp->flags & B44_FLAG_EXTERNAL_PHY)
|
||||
return 0;
|
||||
@@ -2173,6 +2198,8 @@ static int b44_get_invariants(struct b44
|
||||
@@ -2175,6 +2200,8 @@ static int b44_get_invariants(struct b44
|
||||
* valid PHY address. */
|
||||
bp->phy_addr &= 0x1F;
|
||||
|
||||
|
||||
@ -43,7 +43,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
|
||||
#include <asm/byteorder.h>
|
||||
#include <asm/irq.h>
|
||||
@@ -5557,6 +5561,72 @@ static void fotg210_init(struct fotg210_
|
||||
@@ -5554,6 +5558,72 @@ static void fotg210_init(struct fotg210_
|
||||
}
|
||||
|
||||
/*
|
||||
@ -116,7 +116,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
* fotg210_hcd_probe - initialize faraday FOTG210 HCDs
|
||||
*
|
||||
* Allocates basic resources for this USB host controller, and
|
||||
@@ -5633,6 +5703,12 @@ static int fotg210_hcd_probe(struct plat
|
||||
@@ -5630,6 +5700,12 @@ static int fotg210_hcd_probe(struct plat
|
||||
|
||||
fotg210_init(fotg210);
|
||||
|
||||
|
||||
@ -329,7 +329,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||
|
||||
--- a/arch/arm64/include/asm/pgtable.h
|
||||
+++ b/arch/arm64/include/asm/pgtable.h
|
||||
@@ -999,23 +999,13 @@ static inline void update_mmu_cache(stru
|
||||
@@ -1005,23 +1005,13 @@ static inline void update_mmu_cache(stru
|
||||
* page after fork() + CoW for pfn mappings. We don't always have a
|
||||
* hardware-managed access flag on arm64.
|
||||
*/
|
||||
|
||||
@ -594,7 +594,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||
VM_BUG_ON_PAGE(tail > 2 && page_tail->mapping != TAIL_MAPPING,
|
||||
--- a/mm/memcontrol.c
|
||||
+++ b/mm/memcontrol.c
|
||||
@@ -5178,6 +5178,7 @@ static void __mem_cgroup_free(struct mem
|
||||
@@ -5179,6 +5179,7 @@ static void __mem_cgroup_free(struct mem
|
||||
|
||||
static void mem_cgroup_free(struct mem_cgroup *memcg)
|
||||
{
|
||||
@ -602,7 +602,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||
memcg_wb_domain_exit(memcg);
|
||||
__mem_cgroup_free(memcg);
|
||||
}
|
||||
@@ -5241,6 +5242,7 @@ static struct mem_cgroup *mem_cgroup_all
|
||||
@@ -5242,6 +5243,7 @@ static struct mem_cgroup *mem_cgroup_all
|
||||
memcg->deferred_split_queue.split_queue_len = 0;
|
||||
#endif
|
||||
idr_replace(&mem_cgroup_idr, memcg, memcg->id.id);
|
||||
|
||||
@ -424,7 +424,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||
/* will mmdrop() in finish_task_switch(). */
|
||||
--- a/mm/memcontrol.c
|
||||
+++ b/mm/memcontrol.c
|
||||
@@ -6212,6 +6212,30 @@ static void mem_cgroup_move_task(void)
|
||||
@@ -6213,6 +6213,30 @@ static void mem_cgroup_move_task(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -455,7 +455,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||
static int seq_puts_memcg_tunable(struct seq_file *m, unsigned long value)
|
||||
{
|
||||
if (value == PAGE_COUNTER_MAX)
|
||||
@@ -6555,6 +6579,7 @@ struct cgroup_subsys memory_cgrp_subsys
|
||||
@@ -6556,6 +6580,7 @@ struct cgroup_subsys memory_cgrp_subsys
|
||||
.css_reset = mem_cgroup_css_reset,
|
||||
.css_rstat_flush = mem_cgroup_css_rstat_flush,
|
||||
.can_attach = mem_cgroup_can_attach,
|
||||
|
||||
@ -318,7 +318,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||
mctz = soft_limit_tree_from_page(page);
|
||||
if (!mctz)
|
||||
return;
|
||||
@@ -3433,6 +3443,9 @@ unsigned long mem_cgroup_soft_limit_recl
|
||||
@@ -3434,6 +3444,9 @@ unsigned long mem_cgroup_soft_limit_recl
|
||||
unsigned long excess;
|
||||
unsigned long nr_scanned;
|
||||
|
||||
@ -328,7 +328,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||
if (order > 0)
|
||||
return 0;
|
||||
|
||||
@@ -5321,6 +5334,7 @@ static int mem_cgroup_css_online(struct
|
||||
@@ -5322,6 +5335,7 @@ static int mem_cgroup_css_online(struct
|
||||
if (unlikely(mem_cgroup_is_root(memcg)))
|
||||
queue_delayed_work(system_unbound_wq, &stats_flush_dwork,
|
||||
2UL*HZ);
|
||||
@ -336,7 +336,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -5347,6 +5361,7 @@ static void mem_cgroup_css_offline(struc
|
||||
@@ -5348,6 +5362,7 @@ static void mem_cgroup_css_offline(struc
|
||||
memcg_offline_kmem(memcg);
|
||||
reparent_shrinker_deferred(memcg);
|
||||
wb_memcg_offline(memcg);
|
||||
@ -344,7 +344,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||
|
||||
drain_all_stock(memcg);
|
||||
|
||||
@@ -5358,6 +5373,7 @@ static void mem_cgroup_css_released(stru
|
||||
@@ -5359,6 +5374,7 @@ static void mem_cgroup_css_released(stru
|
||||
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
|
||||
|
||||
invalidate_reclaim_iterators(memcg);
|
||||
|
||||
@ -554,7 +554,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
static void xrs700x_mac_link_up(struct dsa_switch *ds, int port,
|
||||
--- a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c
|
||||
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c
|
||||
@@ -369,9 +369,8 @@ static int xgbe_set_link_ksettings(struc
|
||||
@@ -374,9 +374,8 @@ static int xgbe_set_link_ksettings(struc
|
||||
__ETHTOOL_LINK_MODE_MASK_NBITS, cmd->link_modes.advertising,
|
||||
__ETHTOOL_LINK_MODE_MASK_NBITS, lks->link_modes.supported);
|
||||
|
||||
@ -566,7 +566,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
if ((cmd->base.autoneg == AUTONEG_ENABLE) &&
|
||||
bitmap_empty(advertising, __ETHTOOL_LINK_MODE_MASK_NBITS)) {
|
||||
@@ -384,8 +383,7 @@ static int xgbe_set_link_ksettings(struc
|
||||
@@ -389,8 +388,7 @@ static int xgbe_set_link_ksettings(struc
|
||||
pdata->phy.autoneg = cmd->base.autoneg;
|
||||
pdata->phy.speed = speed;
|
||||
pdata->phy.duplex = cmd->base.duplex;
|
||||
@ -747,7 +747,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
static void mvpp2_xlg_config(struct mvpp2_port *port, unsigned int mode,
|
||||
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_ethtool.c
|
||||
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_ethtool.c
|
||||
@@ -1168,9 +1168,8 @@ static int otx2_set_link_ksettings(struc
|
||||
@@ -1172,9 +1172,8 @@ static int otx2_set_link_ksettings(struc
|
||||
otx2_get_link_ksettings(netdev, &cur_ks);
|
||||
|
||||
/* Check requested modes against supported modes by hardware */
|
||||
|
||||
@ -125,7 +125,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
pl = kzalloc(sizeof(*pl), GFP_KERNEL);
|
||||
if (!pl)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
@@ -946,9 +987,10 @@ EXPORT_SYMBOL_GPL(phylink_create);
|
||||
@@ -947,9 +988,10 @@ EXPORT_SYMBOL_GPL(phylink_create);
|
||||
* @pl: a pointer to a &struct phylink returned from phylink_create()
|
||||
* @pcs: a pointer to the &struct phylink_pcs
|
||||
*
|
||||
@ -139,7 +139,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
*
|
||||
* Please note that there are behavioural changes with the mac_config()
|
||||
* callback if a PCS is present (denoting a newer setup) so removing a PCS
|
||||
@@ -959,6 +1001,14 @@ void phylink_set_pcs(struct phylink *pl,
|
||||
@@ -960,6 +1002,14 @@ void phylink_set_pcs(struct phylink *pl,
|
||||
{
|
||||
pl->pcs = pcs;
|
||||
pl->pcs_ops = pcs->ops;
|
||||
|
||||
@ -66,7 +66,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
phy_interface_empty(config->supported_interfaces)) {
|
||||
dev_err(config->dev,
|
||||
"phylink: error: empty supported_interfaces but mac_select_pcs() method present\n");
|
||||
@@ -1220,6 +1227,7 @@ struct phylink *phylink_create(struct ph
|
||||
@@ -1221,6 +1228,7 @@ struct phylink *phylink_create(struct ph
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
||||
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
static void stmmac_tx_timer_arm(struct stmmac_priv *priv, u32 queue);
|
||||
static void stmmac_flush_tx_descriptors(struct stmmac_priv *priv, int queue);
|
||||
|
||||
@@ -1712,9 +1715,6 @@ static int __init_dma_rx_desc_rings(stru
|
||||
@@ -1713,9 +1716,6 @@ static int __init_dma_rx_desc_rings(stru
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@ -37,7 +37,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
/* Setup the chained descriptor addresses */
|
||||
if (priv->mode == STMMAC_CHAIN_MODE) {
|
||||
if (priv->extend_desc)
|
||||
@@ -1820,12 +1820,6 @@ static int __init_dma_tx_desc_rings(stru
|
||||
@@ -1821,12 +1821,6 @@ static int __init_dma_tx_desc_rings(stru
|
||||
tx_q->tx_skbuff[i] = NULL;
|
||||
}
|
||||
|
||||
@ -50,7 +50,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2694,10 +2688,7 @@ static void stmmac_tx_err(struct stmmac_
|
||||
@@ -2695,10 +2689,7 @@ static void stmmac_tx_err(struct stmmac_
|
||||
stmmac_stop_tx_dma(priv, chan);
|
||||
dma_free_tx_skbufs(priv, chan);
|
||||
stmmac_clear_tx_descriptors(priv, chan);
|
||||
@ -62,7 +62,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||
tx_q->dma_tx_phy, chan);
|
||||
stmmac_start_tx_dma(priv, chan);
|
||||
@@ -3781,6 +3772,8 @@ static int stmmac_open(struct net_device
|
||||
@@ -3782,6 +3773,8 @@ static int stmmac_open(struct net_device
|
||||
}
|
||||
}
|
||||
|
||||
@ -71,7 +71,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
ret = stmmac_hw_setup(dev, true);
|
||||
if (ret < 0) {
|
||||
netdev_err(priv->dev, "%s: Hw setup failed\n", __func__);
|
||||
@@ -6430,6 +6423,7 @@ void stmmac_enable_rx_queue(struct stmma
|
||||
@@ -6429,6 +6422,7 @@ void stmmac_enable_rx_queue(struct stmma
|
||||
return;
|
||||
}
|
||||
|
||||
@ -79,7 +79,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
stmmac_clear_rx_descriptors(priv, queue);
|
||||
|
||||
stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||
@@ -6491,6 +6485,7 @@ void stmmac_enable_tx_queue(struct stmma
|
||||
@@ -6490,6 +6484,7 @@ void stmmac_enable_tx_queue(struct stmma
|
||||
return;
|
||||
}
|
||||
|
||||
@ -87,7 +87,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
stmmac_clear_tx_descriptors(priv, queue);
|
||||
|
||||
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||
@@ -7411,6 +7406,25 @@ int stmmac_suspend(struct device *dev)
|
||||
@@ -7414,6 +7409,25 @@ int stmmac_suspend(struct device *dev)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(stmmac_suspend);
|
||||
|
||||
@ -113,7 +113,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
/**
|
||||
* stmmac_reset_queues_param - reset queue parameters
|
||||
* @priv: device pointer
|
||||
@@ -7421,22 +7435,11 @@ static void stmmac_reset_queues_param(st
|
||||
@@ -7424,22 +7438,11 @@ static void stmmac_reset_queues_param(st
|
||||
u32 tx_cnt = priv->plat->tx_queues_to_use;
|
||||
u32 queue;
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
|
||||
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
|
||||
@@ -3833,8 +3833,6 @@ static int stmmac_release(struct net_dev
|
||||
@@ -3834,8 +3834,6 @@ static int stmmac_release(struct net_dev
|
||||
struct stmmac_priv *priv = netdev_priv(dev);
|
||||
u32 chan;
|
||||
|
||||
@ -26,7 +26,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
if (device_may_wakeup(priv->device))
|
||||
phylink_speed_down(priv->phylink, false);
|
||||
/* Stop and disconnect the PHY */
|
||||
@@ -3846,6 +3844,8 @@ static int stmmac_release(struct net_dev
|
||||
@@ -3847,6 +3845,8 @@ static int stmmac_release(struct net_dev
|
||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||
hrtimer_cancel(&priv->tx_queue[chan].txtimer);
|
||||
|
||||
|
||||
@ -189,7 +189,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
if (tx_q->dirty_tx != tx_q->cur_tx)
|
||||
return -EBUSY; /* still unfinished work */
|
||||
@@ -1309,7 +1309,7 @@ static void stmmac_display_rx_rings(stru
|
||||
@@ -1310,7 +1310,7 @@ static void stmmac_display_rx_rings(stru
|
||||
|
||||
/* Display RX rings */
|
||||
for (queue = 0; queue < rx_cnt; queue++) {
|
||||
@ -198,7 +198,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
pr_info("\tRX Queue %u rings\n", queue);
|
||||
|
||||
@@ -1322,7 +1322,7 @@ static void stmmac_display_rx_rings(stru
|
||||
@@ -1323,7 +1323,7 @@ static void stmmac_display_rx_rings(stru
|
||||
}
|
||||
|
||||
/* Display RX ring */
|
||||
@ -207,7 +207,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
rx_q->dma_rx_phy, desc_size);
|
||||
}
|
||||
}
|
||||
@@ -1336,7 +1336,7 @@ static void stmmac_display_tx_rings(stru
|
||||
@@ -1337,7 +1337,7 @@ static void stmmac_display_tx_rings(stru
|
||||
|
||||
/* Display TX rings */
|
||||
for (queue = 0; queue < tx_cnt; queue++) {
|
||||
@ -216,7 +216,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
pr_info("\tTX Queue %d rings\n", queue);
|
||||
|
||||
@@ -1351,7 +1351,7 @@ static void stmmac_display_tx_rings(stru
|
||||
@@ -1352,7 +1352,7 @@ static void stmmac_display_tx_rings(stru
|
||||
desc_size = sizeof(struct dma_desc);
|
||||
}
|
||||
|
||||
@ -225,7 +225,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
tx_q->dma_tx_phy, desc_size);
|
||||
}
|
||||
}
|
||||
@@ -1392,21 +1392,21 @@ static int stmmac_set_bfsize(int mtu, in
|
||||
@@ -1393,21 +1393,21 @@ static int stmmac_set_bfsize(int mtu, in
|
||||
*/
|
||||
static void stmmac_clear_rx_descriptors(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
@ -253,7 +253,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1418,12 +1418,12 @@ static void stmmac_clear_rx_descriptors(
|
||||
@@ -1419,12 +1419,12 @@ static void stmmac_clear_rx_descriptors(
|
||||
*/
|
||||
static void stmmac_clear_tx_descriptors(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
@ -269,7 +269,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct dma_desc *p;
|
||||
|
||||
if (priv->extend_desc)
|
||||
@@ -1471,7 +1471,7 @@ static void stmmac_clear_descriptors(str
|
||||
@@ -1472,7 +1472,7 @@ static void stmmac_clear_descriptors(str
|
||||
static int stmmac_init_rx_buffers(struct stmmac_priv *priv, struct dma_desc *p,
|
||||
int i, gfp_t flags, u32 queue)
|
||||
{
|
||||
@ -278,7 +278,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct stmmac_rx_buffer *buf = &rx_q->buf_pool[i];
|
||||
|
||||
if (!buf->page) {
|
||||
@@ -1496,7 +1496,7 @@ static int stmmac_init_rx_buffers(struct
|
||||
@@ -1497,7 +1497,7 @@ static int stmmac_init_rx_buffers(struct
|
||||
buf->addr = page_pool_get_dma_addr(buf->page) + buf->page_offset;
|
||||
|
||||
stmmac_set_desc_addr(priv, p, buf->addr);
|
||||
@ -287,7 +287,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
stmmac_init_desc3(priv, p);
|
||||
|
||||
return 0;
|
||||
@@ -1510,7 +1510,7 @@ static int stmmac_init_rx_buffers(struct
|
||||
@@ -1511,7 +1511,7 @@ static int stmmac_init_rx_buffers(struct
|
||||
*/
|
||||
static void stmmac_free_rx_buffer(struct stmmac_priv *priv, u32 queue, int i)
|
||||
{
|
||||
@ -296,7 +296,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct stmmac_rx_buffer *buf = &rx_q->buf_pool[i];
|
||||
|
||||
if (buf->page)
|
||||
@@ -1530,7 +1530,7 @@ static void stmmac_free_rx_buffer(struct
|
||||
@@ -1531,7 +1531,7 @@ static void stmmac_free_rx_buffer(struct
|
||||
*/
|
||||
static void stmmac_free_tx_buffer(struct stmmac_priv *priv, u32 queue, int i)
|
||||
{
|
||||
@ -305,7 +305,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
if (tx_q->tx_skbuff_dma[i].buf &&
|
||||
tx_q->tx_skbuff_dma[i].buf_type != STMMAC_TXBUF_T_XDP_TX) {
|
||||
@@ -1575,17 +1575,17 @@ static void dma_free_rx_skbufs(struct st
|
||||
@@ -1576,17 +1576,17 @@ static void dma_free_rx_skbufs(struct st
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -326,7 +326,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct dma_desc *p;
|
||||
int ret;
|
||||
|
||||
@@ -1612,10 +1612,10 @@ static int stmmac_alloc_rx_buffers(struc
|
||||
@@ -1613,10 +1613,10 @@ static int stmmac_alloc_rx_buffers(struc
|
||||
*/
|
||||
static void dma_free_rx_xskbufs(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
@ -339,7 +339,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct stmmac_rx_buffer *buf = &rx_q->buf_pool[i];
|
||||
|
||||
if (!buf->xdp)
|
||||
@@ -1628,10 +1628,10 @@ static void dma_free_rx_xskbufs(struct s
|
||||
@@ -1629,10 +1629,10 @@ static void dma_free_rx_xskbufs(struct s
|
||||
|
||||
static int stmmac_alloc_rx_buffers_zc(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
@ -352,7 +352,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct stmmac_rx_buffer *buf;
|
||||
dma_addr_t dma_addr;
|
||||
struct dma_desc *p;
|
||||
@@ -1674,7 +1674,7 @@ static struct xsk_buff_pool *stmmac_get_
|
||||
@@ -1675,7 +1675,7 @@ static struct xsk_buff_pool *stmmac_get_
|
||||
*/
|
||||
static int __init_dma_rx_desc_rings(struct stmmac_priv *priv, u32 queue, gfp_t flags)
|
||||
{
|
||||
@ -361,7 +361,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
int ret;
|
||||
|
||||
netif_dbg(priv, probe, priv->dev,
|
||||
@@ -1720,11 +1720,11 @@ static int __init_dma_rx_desc_rings(stru
|
||||
@@ -1721,11 +1721,11 @@ static int __init_dma_rx_desc_rings(stru
|
||||
if (priv->extend_desc)
|
||||
stmmac_mode_init(priv, rx_q->dma_erx,
|
||||
rx_q->dma_rx_phy,
|
||||
@ -375,7 +375,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -1751,7 +1751,7 @@ static int init_dma_rx_desc_rings(struct
|
||||
@@ -1752,7 +1752,7 @@ static int init_dma_rx_desc_rings(struct
|
||||
|
||||
err_init_rx_buffers:
|
||||
while (queue >= 0) {
|
||||
@ -384,7 +384,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
if (rx_q->xsk_pool)
|
||||
dma_free_rx_xskbufs(priv, queue);
|
||||
@@ -1780,7 +1780,7 @@ err_init_rx_buffers:
|
||||
@@ -1781,7 +1781,7 @@ err_init_rx_buffers:
|
||||
*/
|
||||
static int __init_dma_tx_desc_rings(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
@ -393,7 +393,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
int i;
|
||||
|
||||
netif_dbg(priv, probe, priv->dev,
|
||||
@@ -1792,16 +1792,16 @@ static int __init_dma_tx_desc_rings(stru
|
||||
@@ -1793,16 +1793,16 @@ static int __init_dma_tx_desc_rings(stru
|
||||
if (priv->extend_desc)
|
||||
stmmac_mode_init(priv, tx_q->dma_etx,
|
||||
tx_q->dma_tx_phy,
|
||||
@ -413,7 +413,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct dma_desc *p;
|
||||
|
||||
if (priv->extend_desc)
|
||||
@@ -1871,12 +1871,12 @@ static int init_dma_desc_rings(struct ne
|
||||
@@ -1872,12 +1872,12 @@ static int init_dma_desc_rings(struct ne
|
||||
*/
|
||||
static void dma_free_tx_skbufs(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
@ -428,7 +428,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
stmmac_free_tx_buffer(priv, queue, i);
|
||||
|
||||
if (tx_q->xsk_pool && tx_q->xsk_frames_done) {
|
||||
@@ -1906,7 +1906,7 @@ static void stmmac_free_tx_skbufs(struct
|
||||
@@ -1907,7 +1907,7 @@ static void stmmac_free_tx_skbufs(struct
|
||||
*/
|
||||
static void __free_dma_rx_desc_resources(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
@ -437,7 +437,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
/* Release the DMA RX socket buffers */
|
||||
if (rx_q->xsk_pool)
|
||||
@@ -1919,11 +1919,11 @@ static void __free_dma_rx_desc_resources
|
||||
@@ -1920,11 +1920,11 @@ static void __free_dma_rx_desc_resources
|
||||
|
||||
/* Free DMA regions of consistent memory previously allocated */
|
||||
if (!priv->extend_desc)
|
||||
@ -451,7 +451,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
sizeof(struct dma_extended_desc),
|
||||
rx_q->dma_erx, rx_q->dma_rx_phy);
|
||||
|
||||
@@ -1952,7 +1952,7 @@ static void free_dma_rx_desc_resources(s
|
||||
@@ -1953,7 +1953,7 @@ static void free_dma_rx_desc_resources(s
|
||||
*/
|
||||
static void __free_dma_tx_desc_resources(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
@ -460,7 +460,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
size_t size;
|
||||
void *addr;
|
||||
|
||||
@@ -1970,7 +1970,7 @@ static void __free_dma_tx_desc_resources
|
||||
@@ -1971,7 +1971,7 @@ static void __free_dma_tx_desc_resources
|
||||
addr = tx_q->dma_tx;
|
||||
}
|
||||
|
||||
@ -469,7 +469,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
dma_free_coherent(priv->device, size, addr, tx_q->dma_tx_phy);
|
||||
|
||||
@@ -1999,7 +1999,7 @@ static void free_dma_tx_desc_resources(s
|
||||
@@ -2000,7 +2000,7 @@ static void free_dma_tx_desc_resources(s
|
||||
*/
|
||||
static int __alloc_dma_rx_desc_resources(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
@ -478,7 +478,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct stmmac_channel *ch = &priv->channel[queue];
|
||||
bool xdp_prog = stmmac_xdp_is_enabled(priv);
|
||||
struct page_pool_params pp_params = { 0 };
|
||||
@@ -2011,8 +2011,8 @@ static int __alloc_dma_rx_desc_resources
|
||||
@@ -2012,8 +2012,8 @@ static int __alloc_dma_rx_desc_resources
|
||||
rx_q->priv_data = priv;
|
||||
|
||||
pp_params.flags = PP_FLAG_DMA_MAP | PP_FLAG_DMA_SYNC_DEV;
|
||||
@ -489,7 +489,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
pp_params.order = ilog2(num_pages);
|
||||
pp_params.nid = dev_to_node(priv->device);
|
||||
pp_params.dev = priv->device;
|
||||
@@ -2027,7 +2027,7 @@ static int __alloc_dma_rx_desc_resources
|
||||
@@ -2028,7 +2028,7 @@ static int __alloc_dma_rx_desc_resources
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -498,7 +498,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
sizeof(*rx_q->buf_pool),
|
||||
GFP_KERNEL);
|
||||
if (!rx_q->buf_pool)
|
||||
@@ -2035,7 +2035,7 @@ static int __alloc_dma_rx_desc_resources
|
||||
@@ -2036,7 +2036,7 @@ static int __alloc_dma_rx_desc_resources
|
||||
|
||||
if (priv->extend_desc) {
|
||||
rx_q->dma_erx = dma_alloc_coherent(priv->device,
|
||||
@ -507,7 +507,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
sizeof(struct dma_extended_desc),
|
||||
&rx_q->dma_rx_phy,
|
||||
GFP_KERNEL);
|
||||
@@ -2044,7 +2044,7 @@ static int __alloc_dma_rx_desc_resources
|
||||
@@ -2045,7 +2045,7 @@ static int __alloc_dma_rx_desc_resources
|
||||
|
||||
} else {
|
||||
rx_q->dma_rx = dma_alloc_coherent(priv->device,
|
||||
@ -516,7 +516,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
sizeof(struct dma_desc),
|
||||
&rx_q->dma_rx_phy,
|
||||
GFP_KERNEL);
|
||||
@@ -2101,20 +2101,20 @@ err_dma:
|
||||
@@ -2102,20 +2102,20 @@ err_dma:
|
||||
*/
|
||||
static int __alloc_dma_tx_desc_resources(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
@ -540,7 +540,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
sizeof(struct sk_buff *),
|
||||
GFP_KERNEL);
|
||||
if (!tx_q->tx_skbuff)
|
||||
@@ -2127,7 +2127,7 @@ static int __alloc_dma_tx_desc_resources
|
||||
@@ -2128,7 +2128,7 @@ static int __alloc_dma_tx_desc_resources
|
||||
else
|
||||
size = sizeof(struct dma_desc);
|
||||
|
||||
@ -549,7 +549,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
addr = dma_alloc_coherent(priv->device, size,
|
||||
&tx_q->dma_tx_phy, GFP_KERNEL);
|
||||
@@ -2371,7 +2371,7 @@ static void stmmac_dma_operation_mode(st
|
||||
@@ -2372,7 +2372,7 @@ static void stmmac_dma_operation_mode(st
|
||||
|
||||
/* configure all channels */
|
||||
for (chan = 0; chan < rx_channels_count; chan++) {
|
||||
@ -558,7 +558,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
u32 buf_size;
|
||||
|
||||
qmode = priv->plat->rx_queues_cfg[chan].mode_to_use;
|
||||
@@ -2386,7 +2386,7 @@ static void stmmac_dma_operation_mode(st
|
||||
@@ -2387,7 +2387,7 @@ static void stmmac_dma_operation_mode(st
|
||||
chan);
|
||||
} else {
|
||||
stmmac_set_dma_bfsize(priv, priv->ioaddr,
|
||||
@ -567,7 +567,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
chan);
|
||||
}
|
||||
}
|
||||
@@ -2402,7 +2402,7 @@ static void stmmac_dma_operation_mode(st
|
||||
@@ -2403,7 +2403,7 @@ static void stmmac_dma_operation_mode(st
|
||||
static bool stmmac_xdp_xmit_zc(struct stmmac_priv *priv, u32 queue, u32 budget)
|
||||
{
|
||||
struct netdev_queue *nq = netdev_get_tx_queue(priv->dev, queue);
|
||||
@ -576,7 +576,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct xsk_buff_pool *pool = tx_q->xsk_pool;
|
||||
unsigned int entry = tx_q->cur_tx;
|
||||
struct dma_desc *tx_desc = NULL;
|
||||
@@ -2477,7 +2477,7 @@ static bool stmmac_xdp_xmit_zc(struct st
|
||||
@@ -2478,7 +2478,7 @@ static bool stmmac_xdp_xmit_zc(struct st
|
||||
|
||||
stmmac_enable_dma_transmission(priv, priv->ioaddr);
|
||||
|
||||
@ -585,7 +585,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
entry = tx_q->cur_tx;
|
||||
}
|
||||
|
||||
@@ -2503,7 +2503,7 @@ static bool stmmac_xdp_xmit_zc(struct st
|
||||
@@ -2504,7 +2504,7 @@ static bool stmmac_xdp_xmit_zc(struct st
|
||||
*/
|
||||
static int stmmac_tx_clean(struct stmmac_priv *priv, int budget, u32 queue)
|
||||
{
|
||||
@ -594,7 +594,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
unsigned int bytes_compl = 0, pkts_compl = 0;
|
||||
unsigned int entry, xmits = 0, count = 0;
|
||||
|
||||
@@ -2516,7 +2516,7 @@ static int stmmac_tx_clean(struct stmmac
|
||||
@@ -2517,7 +2517,7 @@ static int stmmac_tx_clean(struct stmmac
|
||||
entry = tx_q->dirty_tx;
|
||||
|
||||
/* Try to clean all TX complete frame in 1 shot */
|
||||
@ -603,7 +603,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct xdp_frame *xdpf;
|
||||
struct sk_buff *skb;
|
||||
struct dma_desc *p;
|
||||
@@ -2616,7 +2616,7 @@ static int stmmac_tx_clean(struct stmmac
|
||||
@@ -2617,7 +2617,7 @@ static int stmmac_tx_clean(struct stmmac
|
||||
|
||||
stmmac_release_tx_desc(priv, p, priv->mode);
|
||||
|
||||
@ -612,7 +612,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
}
|
||||
tx_q->dirty_tx = entry;
|
||||
|
||||
@@ -2681,7 +2681,7 @@ static int stmmac_tx_clean(struct stmmac
|
||||
@@ -2682,7 +2682,7 @@ static int stmmac_tx_clean(struct stmmac
|
||||
*/
|
||||
static void stmmac_tx_err(struct stmmac_priv *priv, u32 chan)
|
||||
{
|
||||
@ -621,7 +621,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
netif_tx_stop_queue(netdev_get_tx_queue(priv->dev, chan));
|
||||
|
||||
@@ -2748,8 +2748,8 @@ static int stmmac_napi_check(struct stmm
|
||||
@@ -2749,8 +2749,8 @@ static int stmmac_napi_check(struct stmm
|
||||
{
|
||||
int status = stmmac_dma_interrupt_status(priv, priv->ioaddr,
|
||||
&priv->xstats, chan, dir);
|
||||
@ -632,7 +632,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct stmmac_channel *ch = &priv->channel[chan];
|
||||
struct napi_struct *rx_napi;
|
||||
struct napi_struct *tx_napi;
|
||||
@@ -2925,7 +2925,7 @@ static int stmmac_init_dma_engine(struct
|
||||
@@ -2926,7 +2926,7 @@ static int stmmac_init_dma_engine(struct
|
||||
|
||||
/* DMA RX Channel Configuration */
|
||||
for (chan = 0; chan < rx_channels_count; chan++) {
|
||||
@ -641,7 +641,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||
rx_q->dma_rx_phy, chan);
|
||||
@@ -2939,7 +2939,7 @@ static int stmmac_init_dma_engine(struct
|
||||
@@ -2940,7 +2940,7 @@ static int stmmac_init_dma_engine(struct
|
||||
|
||||
/* DMA TX Channel Configuration */
|
||||
for (chan = 0; chan < tx_channels_count; chan++) {
|
||||
@ -650,7 +650,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||
tx_q->dma_tx_phy, chan);
|
||||
@@ -2954,7 +2954,7 @@ static int stmmac_init_dma_engine(struct
|
||||
@@ -2955,7 +2955,7 @@ static int stmmac_init_dma_engine(struct
|
||||
|
||||
static void stmmac_tx_timer_arm(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
@ -659,7 +659,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
hrtimer_start(&tx_q->txtimer,
|
||||
STMMAC_COAL_TIMER(priv->tx_coal_timer[queue]),
|
||||
@@ -3004,7 +3004,7 @@ static void stmmac_init_coalesce(struct
|
||||
@@ -3005,7 +3005,7 @@ static void stmmac_init_coalesce(struct
|
||||
u32 chan;
|
||||
|
||||
for (chan = 0; chan < tx_channel_count; chan++) {
|
||||
@ -668,7 +668,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
priv->tx_coal_frames[chan] = STMMAC_TX_FRAMES;
|
||||
priv->tx_coal_timer[chan] = STMMAC_COAL_TX_TIMER;
|
||||
@@ -3026,12 +3026,12 @@ static void stmmac_set_rings_length(stru
|
||||
@@ -3027,12 +3027,12 @@ static void stmmac_set_rings_length(stru
|
||||
/* set TX ring length */
|
||||
for (chan = 0; chan < tx_channels_count; chan++)
|
||||
stmmac_set_tx_ring_len(priv, priv->ioaddr,
|
||||
@ -683,7 +683,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3366,7 +3366,7 @@ static int stmmac_hw_setup(struct net_de
|
||||
@@ -3367,7 +3367,7 @@ static int stmmac_hw_setup(struct net_de
|
||||
/* Enable TSO */
|
||||
if (priv->tso) {
|
||||
for (chan = 0; chan < tx_cnt; chan++) {
|
||||
@ -692,7 +692,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
/* TSO and TBS cannot co-exist */
|
||||
if (tx_q->tbs & STMMAC_TBS_AVAIL)
|
||||
@@ -3388,7 +3388,7 @@ static int stmmac_hw_setup(struct net_de
|
||||
@@ -3389,7 +3389,7 @@ static int stmmac_hw_setup(struct net_de
|
||||
|
||||
/* TBS */
|
||||
for (chan = 0; chan < tx_cnt; chan++) {
|
||||
@ -701,7 +701,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
int enable = tx_q->tbs & STMMAC_TBS_AVAIL;
|
||||
|
||||
stmmac_enable_tbs(priv, priv->ioaddr, enable, chan);
|
||||
@@ -3432,7 +3432,7 @@ static void stmmac_free_irq(struct net_d
|
||||
@@ -3433,7 +3433,7 @@ static void stmmac_free_irq(struct net_d
|
||||
for (j = irq_idx - 1; j >= 0; j--) {
|
||||
if (priv->tx_irq[j] > 0) {
|
||||
irq_set_affinity_hint(priv->tx_irq[j], NULL);
|
||||
@ -710,7 +710,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
}
|
||||
}
|
||||
irq_idx = priv->plat->rx_queues_to_use;
|
||||
@@ -3441,7 +3441,7 @@ static void stmmac_free_irq(struct net_d
|
||||
@@ -3442,7 +3442,7 @@ static void stmmac_free_irq(struct net_d
|
||||
for (j = irq_idx - 1; j >= 0; j--) {
|
||||
if (priv->rx_irq[j] > 0) {
|
||||
irq_set_affinity_hint(priv->rx_irq[j], NULL);
|
||||
@ -719,7 +719,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3574,7 +3574,7 @@ static int stmmac_request_irq_multi_msi(
|
||||
@@ -3575,7 +3575,7 @@ static int stmmac_request_irq_multi_msi(
|
||||
sprintf(int_name, "%s:%s-%d", dev->name, "rx", i);
|
||||
ret = request_irq(priv->rx_irq[i],
|
||||
stmmac_msi_intr_rx,
|
||||
@ -728,7 +728,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
if (unlikely(ret < 0)) {
|
||||
netdev_err(priv->dev,
|
||||
"%s: alloc rx-%d MSI %d (error: %d)\n",
|
||||
@@ -3597,7 +3597,7 @@ static int stmmac_request_irq_multi_msi(
|
||||
@@ -3598,7 +3598,7 @@ static int stmmac_request_irq_multi_msi(
|
||||
sprintf(int_name, "%s:%s-%d", dev->name, "tx", i);
|
||||
ret = request_irq(priv->tx_irq[i],
|
||||
stmmac_msi_intr_tx,
|
||||
@ -737,7 +737,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
if (unlikely(ret < 0)) {
|
||||
netdev_err(priv->dev,
|
||||
"%s: alloc tx-%d MSI %d (error: %d)\n",
|
||||
@@ -3728,21 +3728,21 @@ static int stmmac_open(struct net_device
|
||||
@@ -3729,21 +3729,21 @@ static int stmmac_open(struct net_device
|
||||
bfsize = 0;
|
||||
|
||||
if (bfsize < BUF_SIZE_16KiB)
|
||||
@ -766,7 +766,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
int tbs_en = priv->plat->tx_queues_cfg[chan].tbs_en;
|
||||
|
||||
/* Setup per-TXQ tbs flag before TX descriptor alloc */
|
||||
@@ -3800,7 +3800,7 @@ irq_error:
|
||||
@@ -3801,7 +3801,7 @@ irq_error:
|
||||
phylink_stop(priv->phylink);
|
||||
|
||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||
@ -775,7 +775,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
stmmac_hw_teardown(dev);
|
||||
init_error:
|
||||
@@ -3842,7 +3842,7 @@ static int stmmac_release(struct net_dev
|
||||
@@ -3843,7 +3843,7 @@ static int stmmac_release(struct net_dev
|
||||
stmmac_disable_all_queues(priv);
|
||||
|
||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||
@ -784,7 +784,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
netif_tx_disable(dev);
|
||||
|
||||
@@ -3906,7 +3906,7 @@ static bool stmmac_vlan_insert(struct st
|
||||
@@ -3907,7 +3907,7 @@ static bool stmmac_vlan_insert(struct st
|
||||
return false;
|
||||
|
||||
stmmac_set_tx_owner(priv, p);
|
||||
@ -793,7 +793,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3924,7 +3924,7 @@ static bool stmmac_vlan_insert(struct st
|
||||
@@ -3925,7 +3925,7 @@ static bool stmmac_vlan_insert(struct st
|
||||
static void stmmac_tso_allocator(struct stmmac_priv *priv, dma_addr_t des,
|
||||
int total_len, bool last_segment, u32 queue)
|
||||
{
|
||||
@ -802,7 +802,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct dma_desc *desc;
|
||||
u32 buff_size;
|
||||
int tmp_len;
|
||||
@@ -3935,7 +3935,7 @@ static void stmmac_tso_allocator(struct
|
||||
@@ -3936,7 +3936,7 @@ static void stmmac_tso_allocator(struct
|
||||
dma_addr_t curr_addr;
|
||||
|
||||
tx_q->cur_tx = STMMAC_GET_ENTRY(tx_q->cur_tx,
|
||||
@ -811,7 +811,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
WARN_ON(tx_q->tx_skbuff[tx_q->cur_tx]);
|
||||
|
||||
if (tx_q->tbs & STMMAC_TBS_AVAIL)
|
||||
@@ -3963,7 +3963,7 @@ static void stmmac_tso_allocator(struct
|
||||
@@ -3964,7 +3964,7 @@ static void stmmac_tso_allocator(struct
|
||||
|
||||
static void stmmac_flush_tx_descriptors(struct stmmac_priv *priv, int queue)
|
||||
{
|
||||
@ -820,7 +820,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
int desc_size;
|
||||
|
||||
if (likely(priv->extend_desc))
|
||||
@@ -4025,7 +4025,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
|
||||
@@ -4026,7 +4026,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
|
||||
dma_addr_t des;
|
||||
int i;
|
||||
|
||||
@ -829,7 +829,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
first_tx = tx_q->cur_tx;
|
||||
|
||||
/* Compute header lengths */
|
||||
@@ -4065,7 +4065,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
|
||||
@@ -4066,7 +4066,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
|
||||
stmmac_set_mss(priv, mss_desc, mss);
|
||||
tx_q->mss = mss;
|
||||
tx_q->cur_tx = STMMAC_GET_ENTRY(tx_q->cur_tx,
|
||||
@ -838,7 +838,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
WARN_ON(tx_q->tx_skbuff[tx_q->cur_tx]);
|
||||
}
|
||||
|
||||
@@ -4177,7 +4177,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
|
||||
@@ -4178,7 +4178,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
|
||||
* ndo_start_xmit will fill this descriptor the next time it's
|
||||
* called and stmmac_tx_clean may clean up to this descriptor.
|
||||
*/
|
||||
@ -847,7 +847,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
if (unlikely(stmmac_tx_avail(priv, queue) <= (MAX_SKB_FRAGS + 1))) {
|
||||
netif_dbg(priv, hw, priv->dev, "%s: stop transmitted packets\n",
|
||||
@@ -4265,7 +4265,7 @@ static netdev_tx_t stmmac_xmit(struct sk
|
||||
@@ -4266,7 +4266,7 @@ static netdev_tx_t stmmac_xmit(struct sk
|
||||
int entry, first_tx;
|
||||
dma_addr_t des;
|
||||
|
||||
@ -856,7 +856,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
first_tx = tx_q->cur_tx;
|
||||
|
||||
if (priv->tx_path_in_lpi_mode && priv->eee_sw_timer_en)
|
||||
@@ -4328,7 +4328,7 @@ static netdev_tx_t stmmac_xmit(struct sk
|
||||
@@ -4329,7 +4329,7 @@ static netdev_tx_t stmmac_xmit(struct sk
|
||||
int len = skb_frag_size(frag);
|
||||
bool last_segment = (i == (nfrags - 1));
|
||||
|
||||
@ -865,7 +865,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
WARN_ON(tx_q->tx_skbuff[entry]);
|
||||
|
||||
if (likely(priv->extend_desc))
|
||||
@@ -4399,7 +4399,7 @@ static netdev_tx_t stmmac_xmit(struct sk
|
||||
@@ -4400,7 +4400,7 @@ static netdev_tx_t stmmac_xmit(struct sk
|
||||
* ndo_start_xmit will fill this descriptor the next time it's
|
||||
* called and stmmac_tx_clean may clean up to this descriptor.
|
||||
*/
|
||||
@ -874,7 +874,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
tx_q->cur_tx = entry;
|
||||
|
||||
if (netif_msg_pktdata(priv)) {
|
||||
@@ -4514,7 +4514,7 @@ static void stmmac_rx_vlan(struct net_de
|
||||
@@ -4512,7 +4512,7 @@ static void stmmac_rx_vlan(struct net_de
|
||||
*/
|
||||
static inline void stmmac_rx_refill(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
@ -883,7 +883,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
int dirty = stmmac_rx_dirty(priv, queue);
|
||||
unsigned int entry = rx_q->dirty_rx;
|
||||
|
||||
@@ -4564,7 +4564,7 @@ static inline void stmmac_rx_refill(stru
|
||||
@@ -4562,7 +4562,7 @@ static inline void stmmac_rx_refill(stru
|
||||
dma_wmb();
|
||||
stmmac_set_rx_owner(priv, p, use_rx_wd);
|
||||
|
||||
@ -892,7 +892,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
}
|
||||
rx_q->dirty_rx = entry;
|
||||
rx_q->rx_tail_addr = rx_q->dma_rx_phy +
|
||||
@@ -4592,12 +4592,12 @@ static unsigned int stmmac_rx_buf1_len(s
|
||||
@@ -4590,12 +4590,12 @@ static unsigned int stmmac_rx_buf1_len(s
|
||||
|
||||
/* First descriptor, not last descriptor and not split header */
|
||||
if (status & rx_not_ls)
|
||||
@ -907,7 +907,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
}
|
||||
|
||||
static unsigned int stmmac_rx_buf2_len(struct stmmac_priv *priv,
|
||||
@@ -4613,7 +4613,7 @@ static unsigned int stmmac_rx_buf2_len(s
|
||||
@@ -4611,7 +4611,7 @@ static unsigned int stmmac_rx_buf2_len(s
|
||||
|
||||
/* Not last descriptor */
|
||||
if (status & rx_not_ls)
|
||||
@ -916,7 +916,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
plen = stmmac_get_rx_frame_len(priv, p, coe);
|
||||
|
||||
@@ -4624,7 +4624,7 @@ static unsigned int stmmac_rx_buf2_len(s
|
||||
@@ -4622,7 +4622,7 @@ static unsigned int stmmac_rx_buf2_len(s
|
||||
static int stmmac_xdp_xmit_xdpf(struct stmmac_priv *priv, int queue,
|
||||
struct xdp_frame *xdpf, bool dma_map)
|
||||
{
|
||||
@ -925,7 +925,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
unsigned int entry = tx_q->cur_tx;
|
||||
struct dma_desc *tx_desc;
|
||||
dma_addr_t dma_addr;
|
||||
@@ -4687,7 +4687,7 @@ static int stmmac_xdp_xmit_xdpf(struct s
|
||||
@@ -4685,7 +4685,7 @@ static int stmmac_xdp_xmit_xdpf(struct s
|
||||
|
||||
stmmac_enable_dma_transmission(priv, priv->ioaddr);
|
||||
|
||||
@ -934,7 +934,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
tx_q->cur_tx = entry;
|
||||
|
||||
return STMMAC_XDP_TX;
|
||||
@@ -4861,7 +4861,7 @@ static void stmmac_dispatch_skb_zc(struc
|
||||
@@ -4859,7 +4859,7 @@ static void stmmac_dispatch_skb_zc(struc
|
||||
|
||||
static bool stmmac_rx_refill_zc(struct stmmac_priv *priv, u32 queue, u32 budget)
|
||||
{
|
||||
@ -943,7 +943,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
unsigned int entry = rx_q->dirty_rx;
|
||||
struct dma_desc *rx_desc = NULL;
|
||||
bool ret = true;
|
||||
@@ -4904,7 +4904,7 @@ static bool stmmac_rx_refill_zc(struct s
|
||||
@@ -4902,7 +4902,7 @@ static bool stmmac_rx_refill_zc(struct s
|
||||
dma_wmb();
|
||||
stmmac_set_rx_owner(priv, rx_desc, use_rx_wd);
|
||||
|
||||
@ -952,7 +952,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
}
|
||||
|
||||
if (rx_desc) {
|
||||
@@ -4919,7 +4919,7 @@ static bool stmmac_rx_refill_zc(struct s
|
||||
@@ -4917,7 +4917,7 @@ static bool stmmac_rx_refill_zc(struct s
|
||||
|
||||
static int stmmac_rx_zc(struct stmmac_priv *priv, int limit, u32 queue)
|
||||
{
|
||||
@ -961,7 +961,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
unsigned int count = 0, error = 0, len = 0;
|
||||
int dirty = stmmac_rx_dirty(priv, queue);
|
||||
unsigned int next_entry = rx_q->cur_rx;
|
||||
@@ -4941,7 +4941,7 @@ static int stmmac_rx_zc(struct stmmac_pr
|
||||
@@ -4939,7 +4939,7 @@ static int stmmac_rx_zc(struct stmmac_pr
|
||||
desc_size = sizeof(struct dma_desc);
|
||||
}
|
||||
|
||||
@ -970,7 +970,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
rx_q->dma_rx_phy, desc_size);
|
||||
}
|
||||
while (count < limit) {
|
||||
@@ -4988,7 +4988,7 @@ read_again:
|
||||
@@ -4986,7 +4986,7 @@ read_again:
|
||||
|
||||
/* Prefetch the next RX descriptor */
|
||||
rx_q->cur_rx = STMMAC_GET_ENTRY(rx_q->cur_rx,
|
||||
@ -979,7 +979,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
next_entry = rx_q->cur_rx;
|
||||
|
||||
if (priv->extend_desc)
|
||||
@@ -5109,7 +5109,7 @@ read_again:
|
||||
@@ -5107,7 +5107,7 @@ read_again:
|
||||
*/
|
||||
static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue)
|
||||
{
|
||||
@ -988,7 +988,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct stmmac_channel *ch = &priv->channel[queue];
|
||||
unsigned int count = 0, error = 0, len = 0;
|
||||
int status = 0, coe = priv->hw->rx_csum;
|
||||
@@ -5122,7 +5122,7 @@ static int stmmac_rx(struct stmmac_priv
|
||||
@@ -5120,7 +5120,7 @@ static int stmmac_rx(struct stmmac_priv
|
||||
int buf_sz;
|
||||
|
||||
dma_dir = page_pool_get_dma_dir(rx_q->page_pool);
|
||||
@ -997,7 +997,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
if (netif_msg_rx_status(priv)) {
|
||||
void *rx_head;
|
||||
@@ -5136,7 +5136,7 @@ static int stmmac_rx(struct stmmac_priv
|
||||
@@ -5134,7 +5134,7 @@ static int stmmac_rx(struct stmmac_priv
|
||||
desc_size = sizeof(struct dma_desc);
|
||||
}
|
||||
|
||||
@ -1006,7 +1006,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
rx_q->dma_rx_phy, desc_size);
|
||||
}
|
||||
while (count < limit) {
|
||||
@@ -5180,7 +5180,7 @@ read_again:
|
||||
@@ -5178,7 +5178,7 @@ read_again:
|
||||
break;
|
||||
|
||||
rx_q->cur_rx = STMMAC_GET_ENTRY(rx_q->cur_rx,
|
||||
@ -1015,7 +1015,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
next_entry = rx_q->cur_rx;
|
||||
|
||||
if (priv->extend_desc)
|
||||
@@ -5314,7 +5314,7 @@ read_again:
|
||||
@@ -5312,7 +5312,7 @@ read_again:
|
||||
buf1_len, dma_dir);
|
||||
skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
|
||||
buf->page, buf->page_offset, buf1_len,
|
||||
@ -1024,7 +1024,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
/* Data payload appended into SKB */
|
||||
page_pool_release_page(rx_q->page_pool, buf->page);
|
||||
@@ -5326,7 +5326,7 @@ read_again:
|
||||
@@ -5324,7 +5324,7 @@ read_again:
|
||||
buf2_len, dma_dir);
|
||||
skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
|
||||
buf->sec_page, 0, buf2_len,
|
||||
@ -1033,7 +1033,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
/* Data payload appended into SKB */
|
||||
page_pool_release_page(rx_q->page_pool, buf->sec_page);
|
||||
@@ -5768,11 +5768,13 @@ static irqreturn_t stmmac_safety_interru
|
||||
@@ -5767,11 +5767,13 @@ static irqreturn_t stmmac_safety_interru
|
||||
static irqreturn_t stmmac_msi_intr_tx(int irq, void *data)
|
||||
{
|
||||
struct stmmac_tx_queue *tx_q = (struct stmmac_tx_queue *)data;
|
||||
@ -1048,7 +1048,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
if (unlikely(!data)) {
|
||||
netdev_err(priv->dev, "%s: invalid dev pointer\n", __func__);
|
||||
@@ -5812,10 +5814,12 @@ static irqreturn_t stmmac_msi_intr_tx(in
|
||||
@@ -5811,10 +5813,12 @@ static irqreturn_t stmmac_msi_intr_tx(in
|
||||
static irqreturn_t stmmac_msi_intr_rx(int irq, void *data)
|
||||
{
|
||||
struct stmmac_rx_queue *rx_q = (struct stmmac_rx_queue *)data;
|
||||
@ -1062,7 +1062,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
if (unlikely(!data)) {
|
||||
netdev_err(priv->dev, "%s: invalid dev pointer\n", __func__);
|
||||
@@ -5846,10 +5850,10 @@ static void stmmac_poll_controller(struc
|
||||
@@ -5845,10 +5849,10 @@ static void stmmac_poll_controller(struc
|
||||
|
||||
if (priv->plat->multi_msi_en) {
|
||||
for (i = 0; i < priv->plat->rx_queues_to_use; i++)
|
||||
@ -1075,7 +1075,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
} else {
|
||||
disable_irq(dev->irq);
|
||||
stmmac_interrupt(dev->irq, dev);
|
||||
@@ -6030,34 +6034,34 @@ static int stmmac_rings_status_show(stru
|
||||
@@ -6029,34 +6033,34 @@ static int stmmac_rings_status_show(stru
|
||||
return 0;
|
||||
|
||||
for (queue = 0; queue < rx_count; queue++) {
|
||||
@ -1116,7 +1116,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6404,7 +6408,7 @@ void stmmac_disable_rx_queue(struct stmm
|
||||
@@ -6403,7 +6407,7 @@ void stmmac_disable_rx_queue(struct stmm
|
||||
|
||||
void stmmac_enable_rx_queue(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
@ -1125,7 +1125,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct stmmac_channel *ch = &priv->channel[queue];
|
||||
unsigned long flags;
|
||||
u32 buf_size;
|
||||
@@ -6441,7 +6445,7 @@ void stmmac_enable_rx_queue(struct stmma
|
||||
@@ -6440,7 +6444,7 @@ void stmmac_enable_rx_queue(struct stmma
|
||||
rx_q->queue_index);
|
||||
} else {
|
||||
stmmac_set_dma_bfsize(priv, priv->ioaddr,
|
||||
@ -1134,7 +1134,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
rx_q->queue_index);
|
||||
}
|
||||
|
||||
@@ -6467,7 +6471,7 @@ void stmmac_disable_tx_queue(struct stmm
|
||||
@@ -6466,7 +6470,7 @@ void stmmac_disable_tx_queue(struct stmm
|
||||
|
||||
void stmmac_enable_tx_queue(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
@ -1143,7 +1143,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct stmmac_channel *ch = &priv->channel[queue];
|
||||
unsigned long flags;
|
||||
int ret;
|
||||
@@ -6517,7 +6521,7 @@ void stmmac_xdp_release(struct net_devic
|
||||
@@ -6516,7 +6520,7 @@ void stmmac_xdp_release(struct net_devic
|
||||
stmmac_disable_all_queues(priv);
|
||||
|
||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||
@ -1152,7 +1152,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
/* Free the IRQ lines */
|
||||
stmmac_free_irq(dev, REQ_IRQ_ERR_ALL, 0);
|
||||
@@ -6576,7 +6580,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
@@ -6575,7 +6579,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
|
||||
/* DMA RX Channel Configuration */
|
||||
for (chan = 0; chan < rx_cnt; chan++) {
|
||||
@ -1161,7 +1161,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||
rx_q->dma_rx_phy, chan);
|
||||
@@ -6594,7 +6598,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
@@ -6593,7 +6597,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
rx_q->queue_index);
|
||||
} else {
|
||||
stmmac_set_dma_bfsize(priv, priv->ioaddr,
|
||||
@ -1170,7 +1170,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
rx_q->queue_index);
|
||||
}
|
||||
|
||||
@@ -6603,7 +6607,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
@@ -6602,7 +6606,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
|
||||
/* DMA TX Channel Configuration */
|
||||
for (chan = 0; chan < tx_cnt; chan++) {
|
||||
@ -1179,7 +1179,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||
tx_q->dma_tx_phy, chan);
|
||||
@@ -6636,7 +6640,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
@@ -6635,7 +6639,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
|
||||
irq_error:
|
||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||
@ -1188,7 +1188,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
stmmac_hw_teardown(dev);
|
||||
init_error:
|
||||
@@ -6663,8 +6667,8 @@ int stmmac_xsk_wakeup(struct net_device
|
||||
@@ -6662,8 +6666,8 @@ int stmmac_xsk_wakeup(struct net_device
|
||||
queue >= priv->plat->tx_queues_to_use)
|
||||
return -EINVAL;
|
||||
|
||||
@ -1199,7 +1199,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
ch = &priv->channel[queue];
|
||||
|
||||
if (!rx_q->xsk_pool && !tx_q->xsk_pool)
|
||||
@@ -6924,8 +6928,8 @@ int stmmac_reinit_ringparam(struct net_d
|
||||
@@ -6923,8 +6927,8 @@ int stmmac_reinit_ringparam(struct net_d
|
||||
if (netif_running(dev))
|
||||
stmmac_release(dev);
|
||||
|
||||
@ -1210,7 +1210,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
if (netif_running(dev))
|
||||
ret = stmmac_open(dev);
|
||||
@@ -7357,7 +7361,7 @@ int stmmac_suspend(struct device *dev)
|
||||
@@ -7359,7 +7363,7 @@ int stmmac_suspend(struct device *dev)
|
||||
stmmac_disable_all_queues(priv);
|
||||
|
||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||
@ -1219,7 +1219,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
if (priv->eee_enabled) {
|
||||
priv->tx_path_in_lpi_mode = false;
|
||||
@@ -7408,7 +7412,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
|
||||
@@ -7411,7 +7415,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
|
||||
|
||||
static void stmmac_reset_rx_queue(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
@ -1228,7 +1228,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
rx_q->cur_rx = 0;
|
||||
rx_q->dirty_rx = 0;
|
||||
@@ -7416,7 +7420,7 @@ static void stmmac_reset_rx_queue(struct
|
||||
@@ -7419,7 +7423,7 @@ static void stmmac_reset_rx_queue(struct
|
||||
|
||||
static void stmmac_reset_tx_queue(struct stmmac_priv *priv, u32 queue)
|
||||
{
|
||||
@ -1270,7 +1270,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
if (i >= priv->plat->tx_queues_to_use)
|
||||
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
|
||||
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
|
||||
@@ -970,13 +970,13 @@ static int tc_setup_etf(struct stmmac_pr
|
||||
@@ -971,13 +971,13 @@ static int tc_setup_etf(struct stmmac_pr
|
||||
return -EOPNOTSUPP;
|
||||
if (qopt->queue >= priv->plat->tx_queues_to_use)
|
||||
return -EINVAL;
|
||||
|
||||
@ -17,7 +17,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
|
||||
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
|
||||
@@ -1300,7 +1300,8 @@ static int stmmac_phy_setup(struct stmma
|
||||
@@ -1301,7 +1301,8 @@ static int stmmac_phy_setup(struct stmma
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
{
|
||||
u32 rx_cnt = priv->plat->rx_queues_to_use;
|
||||
unsigned int desc_size;
|
||||
@@ -1309,7 +1310,7 @@ static void stmmac_display_rx_rings(stru
|
||||
@@ -1310,7 +1311,7 @@ static void stmmac_display_rx_rings(stru
|
||||
|
||||
/* Display RX rings */
|
||||
for (queue = 0; queue < rx_cnt; queue++) {
|
||||
@ -36,7 +36,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
pr_info("\tRX Queue %u rings\n", queue);
|
||||
|
||||
@@ -1322,12 +1323,13 @@ static void stmmac_display_rx_rings(stru
|
||||
@@ -1323,12 +1324,13 @@ static void stmmac_display_rx_rings(stru
|
||||
}
|
||||
|
||||
/* Display RX ring */
|
||||
@ -52,7 +52,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
{
|
||||
u32 tx_cnt = priv->plat->tx_queues_to_use;
|
||||
unsigned int desc_size;
|
||||
@@ -1336,7 +1338,7 @@ static void stmmac_display_tx_rings(stru
|
||||
@@ -1337,7 +1339,7 @@ static void stmmac_display_tx_rings(stru
|
||||
|
||||
/* Display TX rings */
|
||||
for (queue = 0; queue < tx_cnt; queue++) {
|
||||
@ -61,7 +61,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
pr_info("\tTX Queue %d rings\n", queue);
|
||||
|
||||
@@ -1351,18 +1353,19 @@ static void stmmac_display_tx_rings(stru
|
||||
@@ -1352,18 +1354,19 @@ static void stmmac_display_tx_rings(stru
|
||||
desc_size = sizeof(struct dma_desc);
|
||||
}
|
||||
|
||||
@ -85,7 +85,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
}
|
||||
|
||||
static int stmmac_set_bfsize(int mtu, int bufsize)
|
||||
@@ -1386,44 +1389,50 @@ static int stmmac_set_bfsize(int mtu, in
|
||||
@@ -1387,44 +1390,50 @@ static int stmmac_set_bfsize(int mtu, in
|
||||
/**
|
||||
* stmmac_clear_rx_descriptors - clear RX descriptors
|
||||
* @priv: driver private structure
|
||||
@ -147,7 +147,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct dma_desc *p;
|
||||
|
||||
if (priv->extend_desc)
|
||||
@@ -1440,10 +1449,12 @@ static void stmmac_clear_tx_descriptors(
|
||||
@@ -1441,10 +1450,12 @@ static void stmmac_clear_tx_descriptors(
|
||||
/**
|
||||
* stmmac_clear_descriptors - clear descriptors
|
||||
* @priv: driver private structure
|
||||
@ -161,7 +161,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
{
|
||||
u32 rx_queue_cnt = priv->plat->rx_queues_to_use;
|
||||
u32 tx_queue_cnt = priv->plat->tx_queues_to_use;
|
||||
@@ -1451,16 +1462,17 @@ static void stmmac_clear_descriptors(str
|
||||
@@ -1452,16 +1463,17 @@ static void stmmac_clear_descriptors(str
|
||||
|
||||
/* Clear the RX descriptors */
|
||||
for (queue = 0; queue < rx_queue_cnt; queue++)
|
||||
@ -181,7 +181,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
* @p: descriptor pointer
|
||||
* @i: descriptor index
|
||||
* @flags: gfp flag
|
||||
@@ -1468,10 +1480,12 @@ static void stmmac_clear_descriptors(str
|
||||
@@ -1469,10 +1481,12 @@ static void stmmac_clear_descriptors(str
|
||||
* Description: this function is called to allocate a receive buffer, perform
|
||||
* the DMA mapping and init the descriptor.
|
||||
*/
|
||||
@ -196,7 +196,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct stmmac_rx_buffer *buf = &rx_q->buf_pool[i];
|
||||
|
||||
if (!buf->page) {
|
||||
@@ -1496,7 +1510,7 @@ static int stmmac_init_rx_buffers(struct
|
||||
@@ -1497,7 +1511,7 @@ static int stmmac_init_rx_buffers(struct
|
||||
buf->addr = page_pool_get_dma_addr(buf->page) + buf->page_offset;
|
||||
|
||||
stmmac_set_desc_addr(priv, p, buf->addr);
|
||||
@ -205,7 +205,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
stmmac_init_desc3(priv, p);
|
||||
|
||||
return 0;
|
||||
@@ -1505,12 +1519,13 @@ static int stmmac_init_rx_buffers(struct
|
||||
@@ -1506,12 +1520,13 @@ static int stmmac_init_rx_buffers(struct
|
||||
/**
|
||||
* stmmac_free_rx_buffer - free RX dma buffers
|
||||
* @priv: private structure
|
||||
@ -222,7 +222,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct stmmac_rx_buffer *buf = &rx_q->buf_pool[i];
|
||||
|
||||
if (buf->page)
|
||||
@@ -1525,12 +1540,15 @@ static void stmmac_free_rx_buffer(struct
|
||||
@@ -1526,12 +1541,15 @@ static void stmmac_free_rx_buffer(struct
|
||||
/**
|
||||
* stmmac_free_tx_buffer - free RX dma buffers
|
||||
* @priv: private structure
|
||||
@ -240,7 +240,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
if (tx_q->tx_skbuff_dma[i].buf &&
|
||||
tx_q->tx_skbuff_dma[i].buf_type != STMMAC_TXBUF_T_XDP_TX) {
|
||||
@@ -1569,23 +1587,28 @@ static void stmmac_free_tx_buffer(struct
|
||||
@@ -1570,23 +1588,28 @@ static void stmmac_free_tx_buffer(struct
|
||||
/**
|
||||
* dma_free_rx_skbufs - free RX dma buffers
|
||||
* @priv: private structure
|
||||
@ -276,7 +276,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct dma_desc *p;
|
||||
int ret;
|
||||
|
||||
@@ -1594,7 +1617,7 @@ static int stmmac_alloc_rx_buffers(struc
|
||||
@@ -1595,7 +1618,7 @@ static int stmmac_alloc_rx_buffers(struc
|
||||
else
|
||||
p = rx_q->dma_rx + i;
|
||||
|
||||
@ -285,7 +285,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
queue);
|
||||
if (ret)
|
||||
return ret;
|
||||
@@ -1608,14 +1631,17 @@ static int stmmac_alloc_rx_buffers(struc
|
||||
@@ -1609,14 +1632,17 @@ static int stmmac_alloc_rx_buffers(struc
|
||||
/**
|
||||
* dma_free_rx_xskbufs - free RX dma buffers from XSK pool
|
||||
* @priv: private structure
|
||||
@ -306,7 +306,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct stmmac_rx_buffer *buf = &rx_q->buf_pool[i];
|
||||
|
||||
if (!buf->xdp)
|
||||
@@ -1626,12 +1652,14 @@ static void dma_free_rx_xskbufs(struct s
|
||||
@@ -1627,12 +1653,14 @@ static void dma_free_rx_xskbufs(struct s
|
||||
}
|
||||
}
|
||||
|
||||
@ -324,7 +324,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct stmmac_rx_buffer *buf;
|
||||
dma_addr_t dma_addr;
|
||||
struct dma_desc *p;
|
||||
@@ -1666,22 +1694,25 @@ static struct xsk_buff_pool *stmmac_get_
|
||||
@@ -1667,22 +1695,25 @@ static struct xsk_buff_pool *stmmac_get_
|
||||
/**
|
||||
* __init_dma_rx_desc_rings - init the RX descriptor ring (per queue)
|
||||
* @priv: driver private structure
|
||||
@ -353,7 +353,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
xdp_rxq_info_unreg_mem_model(&rx_q->xdp_rxq);
|
||||
|
||||
@@ -1708,9 +1739,9 @@ static int __init_dma_rx_desc_rings(stru
|
||||
@@ -1709,9 +1740,9 @@ static int __init_dma_rx_desc_rings(stru
|
||||
/* RX XDP ZC buffer pool may not be populated, e.g.
|
||||
* xdpsock TX-only.
|
||||
*/
|
||||
@ -365,7 +365,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
if (ret < 0)
|
||||
return -ENOMEM;
|
||||
}
|
||||
@@ -1720,17 +1751,19 @@ static int __init_dma_rx_desc_rings(stru
|
||||
@@ -1721,17 +1752,19 @@ static int __init_dma_rx_desc_rings(stru
|
||||
if (priv->extend_desc)
|
||||
stmmac_mode_init(priv, rx_q->dma_erx,
|
||||
rx_q->dma_rx_phy,
|
||||
@ -388,7 +388,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
{
|
||||
struct stmmac_priv *priv = netdev_priv(dev);
|
||||
u32 rx_count = priv->plat->rx_queues_to_use;
|
||||
@@ -1742,7 +1775,7 @@ static int init_dma_rx_desc_rings(struct
|
||||
@@ -1743,7 +1776,7 @@ static int init_dma_rx_desc_rings(struct
|
||||
"SKB addresses:\nskb\t\tskb data\tdma data\n");
|
||||
|
||||
for (queue = 0; queue < rx_count; queue++) {
|
||||
@ -397,7 +397,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
if (ret)
|
||||
goto err_init_rx_buffers;
|
||||
}
|
||||
@@ -1751,12 +1784,12 @@ static int init_dma_rx_desc_rings(struct
|
||||
@@ -1752,12 +1785,12 @@ static int init_dma_rx_desc_rings(struct
|
||||
|
||||
err_init_rx_buffers:
|
||||
while (queue >= 0) {
|
||||
@ -413,7 +413,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
rx_q->buf_alloc_num = 0;
|
||||
rx_q->xsk_pool = NULL;
|
||||
@@ -1773,14 +1806,17 @@ err_init_rx_buffers:
|
||||
@@ -1774,14 +1807,17 @@ err_init_rx_buffers:
|
||||
/**
|
||||
* __init_dma_tx_desc_rings - init the TX descriptor ring (per queue)
|
||||
* @priv: driver private structure
|
||||
@ -434,7 +434,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
int i;
|
||||
|
||||
netif_dbg(priv, probe, priv->dev,
|
||||
@@ -1792,16 +1828,16 @@ static int __init_dma_tx_desc_rings(stru
|
||||
@@ -1793,16 +1829,16 @@ static int __init_dma_tx_desc_rings(stru
|
||||
if (priv->extend_desc)
|
||||
stmmac_mode_init(priv, tx_q->dma_etx,
|
||||
tx_q->dma_tx_phy,
|
||||
@ -454,7 +454,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct dma_desc *p;
|
||||
|
||||
if (priv->extend_desc)
|
||||
@@ -1823,7 +1859,8 @@ static int __init_dma_tx_desc_rings(stru
|
||||
@@ -1824,7 +1860,8 @@ static int __init_dma_tx_desc_rings(stru
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -464,7 +464,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
{
|
||||
struct stmmac_priv *priv = netdev_priv(dev);
|
||||
u32 tx_queue_cnt;
|
||||
@@ -1832,7 +1869,7 @@ static int init_dma_tx_desc_rings(struct
|
||||
@@ -1833,7 +1870,7 @@ static int init_dma_tx_desc_rings(struct
|
||||
tx_queue_cnt = priv->plat->tx_queues_to_use;
|
||||
|
||||
for (queue = 0; queue < tx_queue_cnt; queue++)
|
||||
@ -473,7 +473,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1840,26 +1877,29 @@ static int init_dma_tx_desc_rings(struct
|
||||
@@ -1841,26 +1878,29 @@ static int init_dma_tx_desc_rings(struct
|
||||
/**
|
||||
* init_dma_desc_rings - init the RX/TX descriptor rings
|
||||
* @dev: net device structure
|
||||
@ -508,7 +508,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -1867,17 +1907,20 @@ static int init_dma_desc_rings(struct ne
|
||||
@@ -1868,17 +1908,20 @@ static int init_dma_desc_rings(struct ne
|
||||
/**
|
||||
* dma_free_tx_skbufs - free TX dma buffers
|
||||
* @priv: private structure
|
||||
@ -533,7 +533,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
if (tx_q->xsk_pool && tx_q->xsk_frames_done) {
|
||||
xsk_tx_completed(tx_q->xsk_pool, tx_q->xsk_frames_done);
|
||||
@@ -1896,34 +1939,37 @@ static void stmmac_free_tx_skbufs(struct
|
||||
@@ -1897,34 +1940,37 @@ static void stmmac_free_tx_skbufs(struct
|
||||
u32 queue;
|
||||
|
||||
for (queue = 0; queue < tx_queue_cnt; queue++)
|
||||
@ -578,7 +578,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
sizeof(struct dma_extended_desc),
|
||||
rx_q->dma_erx, rx_q->dma_rx_phy);
|
||||
|
||||
@@ -1935,29 +1981,33 @@ static void __free_dma_rx_desc_resources
|
||||
@@ -1936,29 +1982,33 @@ static void __free_dma_rx_desc_resources
|
||||
page_pool_destroy(rx_q->page_pool);
|
||||
}
|
||||
|
||||
@ -617,7 +617,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
if (priv->extend_desc) {
|
||||
size = sizeof(struct dma_extended_desc);
|
||||
@@ -1970,7 +2020,7 @@ static void __free_dma_tx_desc_resources
|
||||
@@ -1971,7 +2021,7 @@ static void __free_dma_tx_desc_resources
|
||||
addr = tx_q->dma_tx;
|
||||
}
|
||||
|
||||
@ -626,7 +626,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
dma_free_coherent(priv->device, size, addr, tx_q->dma_tx_phy);
|
||||
|
||||
@@ -1978,28 +2028,32 @@ static void __free_dma_tx_desc_resources
|
||||
@@ -1979,28 +2029,32 @@ static void __free_dma_tx_desc_resources
|
||||
kfree(tx_q->tx_skbuff);
|
||||
}
|
||||
|
||||
@ -663,7 +663,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
struct stmmac_channel *ch = &priv->channel[queue];
|
||||
bool xdp_prog = stmmac_xdp_is_enabled(priv);
|
||||
struct page_pool_params pp_params = { 0 };
|
||||
@@ -2011,8 +2065,8 @@ static int __alloc_dma_rx_desc_resources
|
||||
@@ -2012,8 +2066,8 @@ static int __alloc_dma_rx_desc_resources
|
||||
rx_q->priv_data = priv;
|
||||
|
||||
pp_params.flags = PP_FLAG_DMA_MAP | PP_FLAG_DMA_SYNC_DEV;
|
||||
@ -674,7 +674,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
pp_params.order = ilog2(num_pages);
|
||||
pp_params.nid = dev_to_node(priv->device);
|
||||
pp_params.dev = priv->device;
|
||||
@@ -2027,7 +2081,7 @@ static int __alloc_dma_rx_desc_resources
|
||||
@@ -2028,7 +2082,7 @@ static int __alloc_dma_rx_desc_resources
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -683,7 +683,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
sizeof(*rx_q->buf_pool),
|
||||
GFP_KERNEL);
|
||||
if (!rx_q->buf_pool)
|
||||
@@ -2035,7 +2089,7 @@ static int __alloc_dma_rx_desc_resources
|
||||
@@ -2036,7 +2090,7 @@ static int __alloc_dma_rx_desc_resources
|
||||
|
||||
if (priv->extend_desc) {
|
||||
rx_q->dma_erx = dma_alloc_coherent(priv->device,
|
||||
@ -692,7 +692,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
sizeof(struct dma_extended_desc),
|
||||
&rx_q->dma_rx_phy,
|
||||
GFP_KERNEL);
|
||||
@@ -2044,7 +2098,7 @@ static int __alloc_dma_rx_desc_resources
|
||||
@@ -2045,7 +2099,7 @@ static int __alloc_dma_rx_desc_resources
|
||||
|
||||
} else {
|
||||
rx_q->dma_rx = dma_alloc_coherent(priv->device,
|
||||
@ -701,7 +701,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
sizeof(struct dma_desc),
|
||||
&rx_q->dma_rx_phy,
|
||||
GFP_KERNEL);
|
||||
@@ -2069,7 +2123,8 @@ static int __alloc_dma_rx_desc_resources
|
||||
@@ -2070,7 +2124,8 @@ static int __alloc_dma_rx_desc_resources
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -711,7 +711,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
{
|
||||
u32 rx_count = priv->plat->rx_queues_to_use;
|
||||
u32 queue;
|
||||
@@ -2077,7 +2132,7 @@ static int alloc_dma_rx_desc_resources(s
|
||||
@@ -2078,7 +2133,7 @@ static int alloc_dma_rx_desc_resources(s
|
||||
|
||||
/* RX queues buffers and DMA */
|
||||
for (queue = 0; queue < rx_count; queue++) {
|
||||
@ -720,7 +720,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
if (ret)
|
||||
goto err_dma;
|
||||
}
|
||||
@@ -2085,7 +2140,7 @@ static int alloc_dma_rx_desc_resources(s
|
||||
@@ -2086,7 +2141,7 @@ static int alloc_dma_rx_desc_resources(s
|
||||
return 0;
|
||||
|
||||
err_dma:
|
||||
@ -729,7 +729,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -2093,28 +2148,31 @@ err_dma:
|
||||
@@ -2094,28 +2149,31 @@ err_dma:
|
||||
/**
|
||||
* __alloc_dma_tx_desc_resources - alloc TX resources (per queue).
|
||||
* @priv: private structure
|
||||
@ -765,7 +765,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
sizeof(struct sk_buff *),
|
||||
GFP_KERNEL);
|
||||
if (!tx_q->tx_skbuff)
|
||||
@@ -2127,7 +2185,7 @@ static int __alloc_dma_tx_desc_resources
|
||||
@@ -2128,7 +2186,7 @@ static int __alloc_dma_tx_desc_resources
|
||||
else
|
||||
size = sizeof(struct dma_desc);
|
||||
|
||||
@ -774,7 +774,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
addr = dma_alloc_coherent(priv->device, size,
|
||||
&tx_q->dma_tx_phy, GFP_KERNEL);
|
||||
@@ -2144,7 +2202,8 @@ static int __alloc_dma_tx_desc_resources
|
||||
@@ -2145,7 +2203,8 @@ static int __alloc_dma_tx_desc_resources
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -784,7 +784,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
{
|
||||
u32 tx_count = priv->plat->tx_queues_to_use;
|
||||
u32 queue;
|
||||
@@ -2152,7 +2211,7 @@ static int alloc_dma_tx_desc_resources(s
|
||||
@@ -2153,7 +2212,7 @@ static int alloc_dma_tx_desc_resources(s
|
||||
|
||||
/* TX queues buffers and DMA */
|
||||
for (queue = 0; queue < tx_count; queue++) {
|
||||
@ -793,7 +793,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
if (ret)
|
||||
goto err_dma;
|
||||
}
|
||||
@@ -2160,27 +2219,29 @@ static int alloc_dma_tx_desc_resources(s
|
||||
@@ -2161,27 +2220,29 @@ static int alloc_dma_tx_desc_resources(s
|
||||
return 0;
|
||||
|
||||
err_dma:
|
||||
@ -827,7 +827,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -2188,16 +2249,18 @@ static int alloc_dma_desc_resources(stru
|
||||
@@ -2189,16 +2250,18 @@ static int alloc_dma_desc_resources(stru
|
||||
/**
|
||||
* free_dma_desc_resources - free dma desc resources
|
||||
* @priv: private structure
|
||||
@ -849,7 +849,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2686,8 +2749,8 @@ static void stmmac_tx_err(struct stmmac_
|
||||
@@ -2687,8 +2750,8 @@ static void stmmac_tx_err(struct stmmac_
|
||||
netif_tx_stop_queue(netdev_get_tx_queue(priv->dev, chan));
|
||||
|
||||
stmmac_stop_tx_dma(priv, chan);
|
||||
@ -860,7 +860,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
stmmac_reset_tx_queue(priv, chan);
|
||||
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||
tx_q->dma_tx_phy, chan);
|
||||
@@ -3684,19 +3747,93 @@ static int stmmac_request_irq(struct net
|
||||
@@ -3685,19 +3748,93 @@ static int stmmac_request_irq(struct net
|
||||
}
|
||||
|
||||
/**
|
||||
@ -957,7 +957,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
u32 chan;
|
||||
int ret;
|
||||
|
||||
@@ -3723,45 +3860,10 @@ static int stmmac_open(struct net_device
|
||||
@@ -3724,45 +3861,10 @@ static int stmmac_open(struct net_device
|
||||
memset(&priv->xstats, 0, sizeof(struct stmmac_extra_stats));
|
||||
priv->xstats.threshold = tc;
|
||||
|
||||
@ -1005,7 +1005,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
if (priv->plat->serdes_powerup) {
|
||||
ret = priv->plat->serdes_powerup(dev, priv->plat->bsp_priv);
|
||||
@@ -3804,14 +3906,28 @@ irq_error:
|
||||
@@ -3805,14 +3907,28 @@ irq_error:
|
||||
|
||||
stmmac_hw_teardown(dev);
|
||||
init_error:
|
||||
@ -1036,7 +1036,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
static void stmmac_fpe_stop_wq(struct stmmac_priv *priv)
|
||||
{
|
||||
set_bit(__FPE_REMOVING, &priv->fpe_task_state);
|
||||
@@ -3858,7 +3974,7 @@ static int stmmac_release(struct net_dev
|
||||
@@ -3859,7 +3975,7 @@ static int stmmac_release(struct net_dev
|
||||
stmmac_stop_all_dma(priv);
|
||||
|
||||
/* Release and free the Rx/Tx resources */
|
||||
@ -1045,7 +1045,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
/* Disable the MAC Rx/Tx */
|
||||
stmmac_mac_set(priv, priv->ioaddr, false);
|
||||
@@ -6403,7 +6519,7 @@ void stmmac_disable_rx_queue(struct stmm
|
||||
@@ -6402,7 +6518,7 @@ void stmmac_disable_rx_queue(struct stmm
|
||||
spin_unlock_irqrestore(&ch->lock, flags);
|
||||
|
||||
stmmac_stop_rx_dma(priv, queue);
|
||||
@ -1054,7 +1054,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
}
|
||||
|
||||
void stmmac_enable_rx_queue(struct stmmac_priv *priv, u32 queue)
|
||||
@@ -6414,21 +6530,21 @@ void stmmac_enable_rx_queue(struct stmma
|
||||
@@ -6413,21 +6529,21 @@ void stmmac_enable_rx_queue(struct stmma
|
||||
u32 buf_size;
|
||||
int ret;
|
||||
|
||||
@ -1080,7 +1080,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||
rx_q->dma_rx_phy, rx_q->queue_index);
|
||||
@@ -6466,7 +6582,7 @@ void stmmac_disable_tx_queue(struct stmm
|
||||
@@ -6465,7 +6581,7 @@ void stmmac_disable_tx_queue(struct stmm
|
||||
spin_unlock_irqrestore(&ch->lock, flags);
|
||||
|
||||
stmmac_stop_tx_dma(priv, queue);
|
||||
@ -1089,7 +1089,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
}
|
||||
|
||||
void stmmac_enable_tx_queue(struct stmmac_priv *priv, u32 queue)
|
||||
@@ -6476,21 +6592,21 @@ void stmmac_enable_tx_queue(struct stmma
|
||||
@@ -6475,21 +6591,21 @@ void stmmac_enable_tx_queue(struct stmma
|
||||
unsigned long flags;
|
||||
int ret;
|
||||
|
||||
@ -1115,7 +1115,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||
tx_q->dma_tx_phy, tx_q->queue_index);
|
||||
@@ -6530,7 +6646,7 @@ void stmmac_xdp_release(struct net_devic
|
||||
@@ -6529,7 +6645,7 @@ void stmmac_xdp_release(struct net_devic
|
||||
stmmac_stop_all_dma(priv);
|
||||
|
||||
/* Release and free the Rx/Tx resources */
|
||||
@ -1124,7 +1124,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
/* Disable the MAC Rx/Tx */
|
||||
stmmac_mac_set(priv, priv->ioaddr, false);
|
||||
@@ -6555,14 +6671,14 @@ int stmmac_xdp_open(struct net_device *d
|
||||
@@ -6554,14 +6670,14 @@ int stmmac_xdp_open(struct net_device *d
|
||||
u32 chan;
|
||||
int ret;
|
||||
|
||||
@ -1141,7 +1141,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
if (ret < 0) {
|
||||
netdev_err(dev, "%s: DMA descriptors initialization failed\n",
|
||||
__func__);
|
||||
@@ -6644,7 +6760,7 @@ irq_error:
|
||||
@@ -6643,7 +6759,7 @@ irq_error:
|
||||
|
||||
stmmac_hw_teardown(dev);
|
||||
init_error:
|
||||
@ -1150,7 +1150,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
dma_desc_error:
|
||||
return ret;
|
||||
}
|
||||
@@ -7503,7 +7619,7 @@ int stmmac_resume(struct device *dev)
|
||||
@@ -7506,7 +7622,7 @@ int stmmac_resume(struct device *dev)
|
||||
stmmac_reset_queues_param(priv);
|
||||
|
||||
stmmac_free_tx_skbufs(priv);
|
||||
|
||||
@ -19,7 +19,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
|
||||
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
|
||||
@@ -5626,18 +5626,15 @@ static int stmmac_change_mtu(struct net_
|
||||
@@ -5624,18 +5624,15 @@ static int stmmac_change_mtu(struct net_
|
||||
{
|
||||
struct stmmac_priv *priv = netdev_priv(dev);
|
||||
int txfifosz = priv->plat->tx_fifo_size;
|
||||
@ -40,7 +40,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
if (stmmac_xdp_is_enabled(priv) && new_mtu > ETH_DATA_LEN) {
|
||||
netdev_dbg(priv->dev, "Jumbo frames not supported for XDP\n");
|
||||
return -EINVAL;
|
||||
@@ -5649,8 +5646,29 @@ static int stmmac_change_mtu(struct net_
|
||||
@@ -5647,8 +5644,29 @@ static int stmmac_change_mtu(struct net_
|
||||
if ((txfifosz < new_mtu) || (new_mtu > BUF_SIZE_16KiB))
|
||||
return -EINVAL;
|
||||
|
||||
|
||||
@ -75,7 +75,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
if (pl->pcs_ops) {
|
||||
err = pl->pcs_ops->pcs_config(pl->pcs, pl->cur_link_an_mode,
|
||||
state->interface,
|
||||
@@ -1260,6 +1285,7 @@ struct phylink *phylink_create(struct ph
|
||||
@@ -1261,6 +1286,7 @@ struct phylink *phylink_create(struct ph
|
||||
pl->link_config.speed = SPEED_UNKNOWN;
|
||||
pl->link_config.duplex = DUPLEX_UNKNOWN;
|
||||
pl->link_config.an_enabled = true;
|
||||
@ -83,7 +83,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
pl->mac_ops = mac_ops;
|
||||
__set_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state);
|
||||
timer_setup(&pl->link_poll, phylink_fixed_poll, 0);
|
||||
@@ -1651,6 +1677,8 @@ void phylink_start(struct phylink *pl)
|
||||
@@ -1652,6 +1678,8 @@ void phylink_start(struct phylink *pl)
|
||||
if (pl->netdev)
|
||||
netif_carrier_off(pl->netdev);
|
||||
|
||||
@ -92,7 +92,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* Apply the link configuration to the MAC when starting. This allows
|
||||
* a fixed-link to start with the correct parameters, and also
|
||||
* ensures that we set the appropriate advertisement for Serdes links.
|
||||
@@ -1661,6 +1689,8 @@ void phylink_start(struct phylink *pl)
|
||||
@@ -1662,6 +1690,8 @@ void phylink_start(struct phylink *pl)
|
||||
*/
|
||||
phylink_mac_initial_config(pl, true);
|
||||
|
||||
@ -101,7 +101,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
clear_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state);
|
||||
phylink_run_resolve(pl);
|
||||
|
||||
@@ -1680,16 +1710,9 @@ void phylink_start(struct phylink *pl)
|
||||
@@ -1681,16 +1711,9 @@ void phylink_start(struct phylink *pl)
|
||||
poll = true;
|
||||
}
|
||||
|
||||
@ -120,7 +120,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
if (poll)
|
||||
mod_timer(&pl->link_poll, jiffies + HZ);
|
||||
if (pl->phydev)
|
||||
@@ -1726,6 +1749,10 @@ void phylink_stop(struct phylink *pl)
|
||||
@@ -1727,6 +1750,10 @@ void phylink_stop(struct phylink *pl)
|
||||
}
|
||||
|
||||
phylink_run_resolve_and_disable(pl, PHYLINK_DISABLE_STOPPED);
|
||||
|
||||
@ -18,7 +18,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/usb/ax88179_178a.c
|
||||
+++ b/drivers/net/usb/ax88179_178a.c
|
||||
@@ -1377,11 +1377,12 @@ static int ax88179_bind(struct usbnet *d
|
||||
@@ -1363,11 +1363,12 @@ static int ax88179_bind(struct usbnet *d
|
||||
dev->mii.phy_id = 0x03;
|
||||
dev->mii.supports_gmii = 1;
|
||||
|
||||
@ -35,7 +35,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
/* Enable checksum offload */
|
||||
*tmp = AX_RXCOE_IP | AX_RXCOE_TCP | AX_RXCOE_UDP |
|
||||
@@ -1587,17 +1588,19 @@ ax88179_tx_fixup(struct usbnet *dev, str
|
||||
@@ -1573,17 +1574,19 @@ ax88179_tx_fixup(struct usbnet *dev, str
|
||||
{
|
||||
u32 tx_hdr1, tx_hdr2;
|
||||
int frame_size = dev->maxpacket;
|
||||
@ -57,7 +57,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
if ((skb_header_cloned(skb) || headroom < 0) &&
|
||||
pskb_expand_head(skb, headroom < 0 ? 8 : 0, 0, GFP_ATOMIC)) {
|
||||
dev_kfree_skb_any(skb);
|
||||
@@ -1608,6 +1611,8 @@ ax88179_tx_fixup(struct usbnet *dev, str
|
||||
@@ -1594,6 +1597,8 @@ ax88179_tx_fixup(struct usbnet *dev, str
|
||||
put_unaligned_le32(tx_hdr1, ptr);
|
||||
put_unaligned_le32(tx_hdr2, ptr + 4);
|
||||
|
||||
|
||||
@ -49,7 +49,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/usb/qmi_wwan.c
|
||||
+++ b/drivers/net/usb/qmi_wwan.c
|
||||
@@ -1316,6 +1316,7 @@ static const struct usb_device_id produc
|
||||
@@ -1317,6 +1317,7 @@ static const struct usb_device_id produc
|
||||
{QMI_FIXED_INTF(0x19d2, 0x1426, 2)}, /* ZTE MF91 */
|
||||
{QMI_FIXED_INTF(0x19d2, 0x1428, 2)}, /* Telewell TW-LTE 4G v2 */
|
||||
{QMI_FIXED_INTF(0x19d2, 0x1432, 3)}, /* ZTE ME3620 */
|
||||
|
||||
@ -17,7 +17,7 @@ Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
|
||||
|
||||
--- a/drivers/bluetooth/btusb.c
|
||||
+++ b/drivers/bluetooth/btusb.c
|
||||
@@ -2275,6 +2275,23 @@ struct btmtk_section_map {
|
||||
@@ -2287,6 +2287,23 @@ struct btmtk_section_map {
|
||||
};
|
||||
} __packed;
|
||||
|
||||
@ -41,7 +41,7 @@ Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
|
||||
static void btusb_mtk_wmt_recv(struct urb *urb)
|
||||
{
|
||||
struct hci_dev *hdev = urb->context;
|
||||
@@ -3926,6 +3943,7 @@ static int btusb_probe(struct usb_interf
|
||||
@@ -3941,6 +3958,7 @@ static int btusb_probe(struct usb_interf
|
||||
hdev->shutdown = btusb_mtk_shutdown;
|
||||
hdev->manufacturer = 70;
|
||||
hdev->cmd_timeout = btusb_mtk_cmd_timeout;
|
||||
|
||||
@ -18,7 +18,7 @@ Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
|
||||
|
||||
--- a/drivers/bluetooth/btusb.c
|
||||
+++ b/drivers/bluetooth/btusb.c
|
||||
@@ -2280,7 +2280,7 @@ static int btusb_set_bdaddr_mtk(struct h
|
||||
@@ -2292,7 +2292,7 @@ static int btusb_set_bdaddr_mtk(struct h
|
||||
struct sk_buff *skb;
|
||||
long ret;
|
||||
|
||||
|
||||
@ -58,7 +58,7 @@ Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
|
||||
|
||||
--- a/drivers/bluetooth/btusb.c
|
||||
+++ b/drivers/bluetooth/btusb.c
|
||||
@@ -464,6 +464,9 @@ static const struct usb_device_id blackl
|
||||
@@ -476,6 +476,9 @@ static const struct usb_device_id blackl
|
||||
{ USB_DEVICE(0x13d3, 0x3564), .driver_info = BTUSB_MEDIATEK |
|
||||
BTUSB_WIDEBAND_SPEECH |
|
||||
BTUSB_VALID_LE_STATES },
|
||||
|
||||
@ -56,7 +56,7 @@ Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
|
||||
|
||||
--- a/drivers/bluetooth/btusb.c
|
||||
+++ b/drivers/bluetooth/btusb.c
|
||||
@@ -455,6 +455,9 @@ static const struct usb_device_id blackl
|
||||
@@ -467,6 +467,9 @@ static const struct usb_device_id blackl
|
||||
BTUSB_VALID_LE_STATES },
|
||||
|
||||
/* Additional MediaTek MT7921 Bluetooth devices */
|
||||
|
||||
@ -54,7 +54,7 @@ Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
|
||||
|
||||
--- a/drivers/bluetooth/btusb.c
|
||||
+++ b/drivers/bluetooth/btusb.c
|
||||
@@ -473,6 +473,9 @@ static const struct usb_device_id blackl
|
||||
@@ -485,6 +485,9 @@ static const struct usb_device_id blackl
|
||||
{ USB_DEVICE(0x0489, 0xe0cd), .driver_info = BTUSB_MEDIATEK |
|
||||
BTUSB_WIDEBAND_SPEECH |
|
||||
BTUSB_VALID_LE_STATES },
|
||||
|
||||
@ -148,7 +148,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
* of_find_node_by_phandle - Find a node given a phandle
|
||||
--- a/drivers/spi/spi.c
|
||||
+++ b/drivers/spi/spi.c
|
||||
@@ -2128,8 +2128,8 @@ of_register_spi_device(struct spi_contro
|
||||
@@ -2140,8 +2140,8 @@ of_register_spi_device(struct spi_contro
|
||||
}
|
||||
|
||||
/* Select device driver */
|
||||
|
||||
@ -116,7 +116,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
help
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -3597,6 +3597,11 @@ static int xmit_one(struct sk_buff *skb,
|
||||
@@ -3600,6 +3600,11 @@ static int xmit_one(struct sk_buff *skb,
|
||||
if (dev_nit_active(dev))
|
||||
dev_queue_xmit_nit(skb, dev);
|
||||
|
||||
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
||||
@@ -4217,12 +4217,10 @@ static irqreturn_t dpni_irq0_handler_thr
|
||||
@@ -4215,12 +4215,10 @@ static irqreturn_t dpni_irq0_handler_thr
|
||||
dpaa2_eth_set_mac_addr(netdev_priv(net_dev));
|
||||
dpaa2_eth_update_tx_fqids(priv);
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||
#include <linux/crc32.h>
|
||||
#include <linux/if_vlan.h>
|
||||
#include <linux/uaccess.h>
|
||||
@@ -6896,6 +6897,22 @@ static void rtl_tally_reset(struct r8152
|
||||
@@ -6910,6 +6911,22 @@ static void rtl_tally_reset(struct r8152
|
||||
ocp_write_word(tp, MCU_TYPE_PLA, PLA_RSTTALLY, ocp_data);
|
||||
}
|
||||
|
||||
@ -45,7 +45,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||
static void r8152b_init(struct r8152 *tp)
|
||||
{
|
||||
u32 ocp_data;
|
||||
@@ -6937,6 +6954,8 @@ static void r8152b_init(struct r8152 *tp
|
||||
@@ -6951,6 +6968,8 @@ static void r8152b_init(struct r8152 *tp
|
||||
ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL);
|
||||
ocp_data &= ~(RX_AGG_DISABLE | RX_ZERO_EN);
|
||||
ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data);
|
||||
@ -54,7 +54,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||
}
|
||||
|
||||
static void r8153_init(struct r8152 *tp)
|
||||
@@ -7077,6 +7096,8 @@ static void r8153_init(struct r8152 *tp)
|
||||
@@ -7091,6 +7110,8 @@ static void r8153_init(struct r8152 *tp)
|
||||
tp->coalesce = COALESCE_SLOW;
|
||||
break;
|
||||
}
|
||||
@ -63,7 +63,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||
}
|
||||
|
||||
static void r8153b_init(struct r8152 *tp)
|
||||
@@ -7159,6 +7180,8 @@ static void r8153b_init(struct r8152 *tp
|
||||
@@ -7173,6 +7194,8 @@ static void r8153b_init(struct r8152 *tp
|
||||
rtl_tally_reset(tp);
|
||||
|
||||
tp->coalesce = 15000; /* 15 us */
|
||||
|
||||
@ -43,7 +43,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support
|
||||
|
||||
#define QUECTEL_VENDOR_ID 0x2c7c
|
||||
/* These Quectel products use Quectel's vendor ID */
|
||||
@@ -1144,6 +1149,11 @@ static const struct usb_device_id option
|
||||
@@ -1147,6 +1152,11 @@ static const struct usb_device_id option
|
||||
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */
|
||||
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000), /* SIMCom SIM5218 */
|
||||
.driver_info = NCTRL(0) | NCTRL(1) | NCTRL(2) | NCTRL(3) | RSVD(4) },
|
||||
@ -55,7 +55,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support
|
||||
/* Quectel products using Qualcomm vendor ID */
|
||||
{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC15)},
|
||||
{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC20),
|
||||
@@ -1185,6 +1195,11 @@ static const struct usb_device_id option
|
||||
@@ -1188,6 +1198,11 @@ static const struct usb_device_id option
|
||||
.driver_info = ZLP },
|
||||
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
|
||||
.driver_info = RSVD(4) },
|
||||
|
||||
@ -65,7 +65,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
static void phylink_mac_pcs_get_state(struct phylink *pl,
|
||||
struct phylink_link_state *state)
|
||||
{
|
||||
@@ -3014,6 +3013,52 @@ void phylink_mii_c22_pcs_get_state(struc
|
||||
@@ -3015,6 +3014,52 @@ void phylink_mii_c22_pcs_get_state(struc
|
||||
EXPORT_SYMBOL_GPL(phylink_mii_c22_pcs_get_state);
|
||||
|
||||
/**
|
||||
@ -118,7 +118,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
* phylink_mii_c22_pcs_set_advertisement() - configure the clause 37 PCS
|
||||
* advertisement
|
||||
* @pcs: a pointer to a &struct mdio_device.
|
||||
@@ -3085,6 +3130,46 @@ int phylink_mii_c22_pcs_set_advertisemen
|
||||
@@ -3086,6 +3131,46 @@ int phylink_mii_c22_pcs_set_advertisemen
|
||||
EXPORT_SYMBOL_GPL(phylink_mii_c22_pcs_set_advertisement);
|
||||
|
||||
/**
|
||||
|
||||
@ -129,7 +129,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
{
|
||||
--- a/drivers/gpio/gpiolib-sysfs.c
|
||||
+++ b/drivers/gpio/gpiolib-sysfs.c
|
||||
@@ -561,7 +561,7 @@ static struct class gpio_class = {
|
||||
@@ -564,7 +564,7 @@ static struct class gpio_class = {
|
||||
*
|
||||
* Returns zero on success, else an error.
|
||||
*/
|
||||
@ -138,7 +138,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
{
|
||||
struct gpio_chip *chip;
|
||||
struct gpio_device *gdev;
|
||||
@@ -623,6 +623,8 @@ int gpiod_export(struct gpio_desc *desc,
|
||||
@@ -626,6 +626,8 @@ int gpiod_export(struct gpio_desc *desc,
|
||||
offset = gpio_chip_hwgpio(desc);
|
||||
if (chip->names && chip->names[offset])
|
||||
ioname = chip->names[offset];
|
||||
@ -147,7 +147,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
dev = device_create_with_groups(&gpio_class, &gdev->dev,
|
||||
MKDEV(0, 0), data, gpio_groups,
|
||||
@@ -644,6 +646,12 @@ err_unlock:
|
||||
@@ -647,6 +649,12 @@ err_unlock:
|
||||
gpiod_dbg(desc, "%s: status %d\n", __func__, status);
|
||||
return status;
|
||||
}
|
||||
|
||||
@ -0,0 +1,37 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Thu, 4 Jan 2024 15:21:21 +0100
|
||||
Subject: [PATCH] net: bridge: do not send arp replies if src and target hw
|
||||
addr is the same
|
||||
|
||||
There are broken devices in the wild that handle duplicate IP address
|
||||
detection by sending out ARP requests for the IP that they received from a
|
||||
DHCP server and refuse the address if they get a reply.
|
||||
When proxyarp is enabled, they would go into a loop of requesting an address
|
||||
and then NAKing it again.
|
||||
|
||||
Link: https://github.com/openwrt/openwrt/issues/14309
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/bridge/br_arp_nd_proxy.c
|
||||
+++ b/net/bridge/br_arp_nd_proxy.c
|
||||
@@ -204,7 +204,10 @@ void br_do_proxy_suppress_arp(struct sk_
|
||||
if ((p && (p->flags & BR_PROXYARP)) ||
|
||||
(f->dst && (f->dst->flags & (BR_PROXYARP_WIFI |
|
||||
BR_NEIGH_SUPPRESS)))) {
|
||||
- if (!vid)
|
||||
+ replied = true;
|
||||
+ if (!memcmp(n->ha, sha, dev->addr_len))
|
||||
+ replied = false;
|
||||
+ else if (!vid)
|
||||
br_arp_send(br, p, skb->dev, sip, tip,
|
||||
sha, n->ha, sha, 0, 0);
|
||||
else
|
||||
@@ -212,7 +215,6 @@ void br_do_proxy_suppress_arp(struct sk_
|
||||
sha, n->ha, sha,
|
||||
skb->vlan_proto,
|
||||
skb_vlan_tag_get(skb));
|
||||
- replied = true;
|
||||
}
|
||||
|
||||
/* If we have replied or as long as we know the
|
||||
@ -9,7 +9,7 @@ Acked-by: Rob Landley <rob@landley.net>
|
||||
---
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -1102,9 +1102,6 @@ config FW_ARC
|
||||
@@ -1103,9 +1103,6 @@ config FW_ARC
|
||||
config ARCH_MAY_HAVE_PC_FDC
|
||||
bool
|
||||
|
||||
@ -19,7 +19,7 @@ Acked-by: Rob Landley <rob@landley.net>
|
||||
config CEVT_BCM1480
|
||||
bool
|
||||
|
||||
@@ -3184,6 +3181,18 @@ choice
|
||||
@@ -3186,6 +3183,18 @@ choice
|
||||
bool "Extend builtin kernel arguments with bootloader arguments"
|
||||
endchoice
|
||||
|
||||
|
||||
@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
__u8 inner_protocol_type:1;
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -6074,6 +6074,9 @@ static enum gro_result dev_gro_receive(s
|
||||
@@ -6077,6 +6077,9 @@ static enum gro_result dev_gro_receive(s
|
||||
int same_flow;
|
||||
int grow;
|
||||
|
||||
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (netif_elide_gro(skb->dev))
|
||||
goto normal;
|
||||
|
||||
@@ -8088,6 +8091,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
@@ -8091,6 +8094,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
&upper_dev->adj_list.lower);
|
||||
}
|
||||
|
||||
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static int __netdev_upper_dev_link(struct net_device *dev,
|
||||
struct net_device *upper_dev, bool master,
|
||||
void *upper_priv, void *upper_info,
|
||||
@@ -8139,6 +8184,7 @@ static int __netdev_upper_dev_link(struc
|
||||
@@ -8142,6 +8187,7 @@ static int __netdev_upper_dev_link(struc
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
|
||||
&changeupper_info.info);
|
||||
ret = notifier_to_errno(ret);
|
||||
@@ -8235,6 +8281,7 @@ static void __netdev_upper_dev_unlink(st
|
||||
@@ -8238,6 +8284,7 @@ static void __netdev_upper_dev_unlink(st
|
||||
|
||||
__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
|
||||
|
||||
@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
|
||||
&changeupper_info.info);
|
||||
|
||||
@@ -9054,6 +9101,7 @@ int dev_set_mac_address(struct net_devic
|
||||
@@ -9057,6 +9104,7 @@ int dev_set_mac_address(struct net_devic
|
||||
if (err)
|
||||
return err;
|
||||
dev->addr_assign_type = NET_ADDR_SET;
|
||||
|
||||
@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/netfilter/nf_tables_api.c
|
||||
+++ b/net/netfilter/nf_tables_api.c
|
||||
@@ -7703,7 +7703,7 @@ static int nft_register_flowtable_net_ho
|
||||
@@ -7709,7 +7709,7 @@ static int nft_register_flowtable_net_ho
|
||||
err = flowtable->data.type->setup(&flowtable->data,
|
||||
hook->ops.dev,
|
||||
FLOW_BLOCK_BIND);
|
||||
|
||||
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#endif
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -4583,7 +4583,7 @@ static int rps_ipi_queued(struct softnet
|
||||
@@ -4586,7 +4586,7 @@ static int rps_ipi_queued(struct softnet
|
||||
#ifdef CONFIG_RPS
|
||||
struct softnet_data *mysd = this_cpu_ptr(&softnet_data);
|
||||
|
||||
@ -39,7 +39,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
sd->rps_ipi_next = mysd->rps_ipi_list;
|
||||
mysd->rps_ipi_list = sd;
|
||||
|
||||
@@ -5764,6 +5764,8 @@ static DEFINE_PER_CPU(struct work_struct
|
||||
@@ -5767,6 +5767,8 @@ static DEFINE_PER_CPU(struct work_struct
|
||||
/* Network device is going away, flush any packets still pending */
|
||||
static void flush_backlog(struct work_struct *work)
|
||||
{
|
||||
@ -48,7 +48,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
struct sk_buff *skb, *tmp;
|
||||
struct softnet_data *sd;
|
||||
|
||||
@@ -5779,9 +5781,18 @@ static void flush_backlog(struct work_st
|
||||
@@ -5782,9 +5784,18 @@ static void flush_backlog(struct work_st
|
||||
input_queue_head_incr(sd);
|
||||
}
|
||||
}
|
||||
@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
skb_queue_walk_safe(&sd->process_queue, skb, tmp) {
|
||||
if (skb->dev->reg_state == NETREG_UNREGISTERING) {
|
||||
__skb_unlink(skb, &sd->process_queue);
|
||||
@@ -5789,7 +5800,18 @@ static void flush_backlog(struct work_st
|
||||
@@ -5792,7 +5803,18 @@ static void flush_backlog(struct work_st
|
||||
input_queue_head_incr(sd);
|
||||
}
|
||||
}
|
||||
@ -86,7 +86,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
|
||||
static bool flush_required(int cpu)
|
||||
@@ -6472,6 +6494,7 @@ static int process_backlog(struct napi_s
|
||||
@@ -6475,6 +6497,7 @@ static int process_backlog(struct napi_s
|
||||
|
||||
local_irq_disable();
|
||||
rps_lock(sd);
|
||||
@ -94,7 +94,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (skb_queue_empty(&sd->input_pkt_queue)) {
|
||||
/*
|
||||
* Inline a custom version of __napi_complete().
|
||||
@@ -6481,7 +6504,8 @@ static int process_backlog(struct napi_s
|
||||
@@ -6484,7 +6507,8 @@ static int process_backlog(struct napi_s
|
||||
* We can use a plain write instead of clear_bit(),
|
||||
* and we dont need an smp_mb() memory barrier.
|
||||
*/
|
||||
@ -104,7 +104,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
again = false;
|
||||
} else {
|
||||
skb_queue_splice_tail_init(&sd->input_pkt_queue,
|
||||
@@ -6898,6 +6922,57 @@ int dev_set_threaded(struct net_device *
|
||||
@@ -6901,6 +6925,57 @@ int dev_set_threaded(struct net_device *
|
||||
}
|
||||
EXPORT_SYMBOL(dev_set_threaded);
|
||||
|
||||
@ -162,7 +162,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
void netif_napi_add(struct net_device *dev, struct napi_struct *napi,
|
||||
int (*poll)(struct napi_struct *, int), int weight)
|
||||
{
|
||||
@@ -11378,6 +11453,9 @@ static int dev_cpu_dead(unsigned int old
|
||||
@@ -11381,6 +11456,9 @@ static int dev_cpu_dead(unsigned int old
|
||||
raise_softirq_irqoff(NET_TX_SOFTIRQ);
|
||||
local_irq_enable();
|
||||
|
||||
@ -172,7 +172,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#ifdef CONFIG_RPS
|
||||
remsd = oldsd->rps_ipi_list;
|
||||
oldsd->rps_ipi_list = NULL;
|
||||
@@ -11717,6 +11795,7 @@ static int __init net_dev_init(void)
|
||||
@@ -11720,6 +11798,7 @@ static int __init net_dev_init(void)
|
||||
sd->cpu = i;
|
||||
#endif
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
|
||||
help
|
||||
--- a/init/main.c
|
||||
+++ b/init/main.c
|
||||
@@ -614,6 +614,29 @@ static inline void setup_nr_cpu_ids(void
|
||||
@@ -618,6 +618,29 @@ static inline void setup_nr_cpu_ids(void
|
||||
static inline void smp_prepare_cpus(unsigned int maxcpus) { }
|
||||
#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 also need to store the touched command line since the parameter
|
||||
@@ -953,6 +976,7 @@ asmlinkage __visible void __init __no_sa
|
||||
@@ -957,6 +980,7 @@ asmlinkage __visible void __init __no_sa
|
||||
pr_notice("%s", linux_banner);
|
||||
early_security_init();
|
||||
setup_arch(&command_line);
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/firmware/qcom_scm.c
|
||||
+++ b/drivers/firmware/qcom_scm.c
|
||||
@@ -404,6 +404,20 @@ static int __qcom_scm_set_dload_mode(str
|
||||
@@ -411,6 +411,20 @@ static int __qcom_scm_set_dload_mode(str
|
||||
return qcom_scm_call_atomic(__scm->dev, &desc, NULL);
|
||||
}
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
static void qcom_scm_set_download_mode(bool enable)
|
||||
{
|
||||
bool avail;
|
||||
@@ -1314,6 +1328,13 @@ static int qcom_scm_probe(struct platfor
|
||||
@@ -1321,6 +1335,13 @@ static int qcom_scm_probe(struct platfor
|
||||
if (download_mode)
|
||||
qcom_scm_set_download_mode(true);
|
||||
|
||||
|
||||
@ -101,7 +101,7 @@
|
||||
}
|
||||
--- a/drivers/firmware/qcom_scm.c
|
||||
+++ b/drivers/firmware/qcom_scm.c
|
||||
@@ -344,6 +344,17 @@ int qcom_scm_set_cold_boot_addr(void *en
|
||||
@@ -351,6 +351,17 @@ int qcom_scm_set_cold_boot_addr(void *en
|
||||
desc.args[0] = flags;
|
||||
desc.args[1] = virt_to_phys(entry);
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
|
||||
--- a/drivers/firmware/qcom_scm.c
|
||||
+++ b/drivers/firmware/qcom_scm.c
|
||||
@@ -1352,7 +1352,8 @@ static int qcom_scm_probe(struct platfor
|
||||
@@ -1359,7 +1359,8 @@ static int qcom_scm_probe(struct platfor
|
||||
static void qcom_scm_shutdown(struct platform_device *pdev)
|
||||
{
|
||||
/* Clean shutdown, disable download mode to allow normal restart */
|
||||
|
||||
@ -259,7 +259,7 @@ Signed-off-by: Adrian Panella <ianchi74@outlook.com>
|
||||
static int kernel_init(void *);
|
||||
|
||||
extern void init_IRQ(void);
|
||||
@@ -990,6 +994,18 @@ asmlinkage __visible void __init __no_sa
|
||||
@@ -994,6 +998,18 @@ asmlinkage __visible void __init __no_sa
|
||||
pr_notice("Kernel command line: %s\n", saved_command_line);
|
||||
/* parameters may set static keys */
|
||||
jump_label_init();
|
||||
|
||||
@ -45,7 +45,7 @@ Signed-off-by: Oskari Lemmela <oskari@lemmela.net>
|
||||
|
||||
int stmmac_bus_clks_config(struct stmmac_priv *priv, bool enabled)
|
||||
{
|
||||
@@ -2725,9 +2725,7 @@ static int stmmac_tx_clean(struct stmmac
|
||||
@@ -2726,9 +2726,7 @@ static int stmmac_tx_clean(struct stmmac
|
||||
|
||||
/* We still have pending packets, let's call for a new scheduling */
|
||||
if (tx_q->dirty_tx != tx_q->cur_tx)
|
||||
@ -56,7 +56,7 @@ Signed-off-by: Oskari Lemmela <oskari@lemmela.net>
|
||||
|
||||
__netif_tx_unlock_bh(netdev_get_tx_queue(priv->dev, queue));
|
||||
|
||||
@@ -3019,9 +3017,7 @@ static void stmmac_tx_timer_arm(struct s
|
||||
@@ -3020,9 +3018,7 @@ static void stmmac_tx_timer_arm(struct s
|
||||
{
|
||||
struct stmmac_tx_queue *tx_q = &priv->dma_conf.tx_queue[queue];
|
||||
|
||||
@ -67,7 +67,7 @@ Signed-off-by: Oskari Lemmela <oskari@lemmela.net>
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3030,9 +3026,9 @@ static void stmmac_tx_timer_arm(struct s
|
||||
@@ -3031,9 +3027,9 @@ static void stmmac_tx_timer_arm(struct s
|
||||
* Description:
|
||||
* This is the timer handler to directly invoke the stmmac_tx_clean.
|
||||
*/
|
||||
@ -79,7 +79,7 @@ Signed-off-by: Oskari Lemmela <oskari@lemmela.net>
|
||||
struct stmmac_priv *priv = tx_q->priv_data;
|
||||
struct stmmac_channel *ch;
|
||||
struct napi_struct *napi;
|
||||
@@ -3048,8 +3044,6 @@ static enum hrtimer_restart stmmac_tx_ti
|
||||
@@ -3049,8 +3045,6 @@ static enum hrtimer_restart stmmac_tx_ti
|
||||
spin_unlock_irqrestore(&ch->lock, flags);
|
||||
__napi_schedule(napi);
|
||||
}
|
||||
@ -88,7 +88,7 @@ Signed-off-by: Oskari Lemmela <oskari@lemmela.net>
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3072,8 +3066,7 @@ static void stmmac_init_coalesce(struct
|
||||
@@ -3073,8 +3067,7 @@ static void stmmac_init_coalesce(struct
|
||||
priv->tx_coal_frames[chan] = STMMAC_TX_FRAMES;
|
||||
priv->tx_coal_timer[chan] = STMMAC_COAL_TX_TIMER;
|
||||
|
||||
@ -98,7 +98,7 @@ Signed-off-by: Oskari Lemmela <oskari@lemmela.net>
|
||||
}
|
||||
|
||||
for (chan = 0; chan < rx_channel_count; chan++)
|
||||
@@ -3902,7 +3895,7 @@ irq_error:
|
||||
@@ -3903,7 +3896,7 @@ irq_error:
|
||||
phylink_stop(priv->phylink);
|
||||
|
||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||
@ -107,7 +107,7 @@ Signed-off-by: Oskari Lemmela <oskari@lemmela.net>
|
||||
|
||||
stmmac_hw_teardown(dev);
|
||||
init_error:
|
||||
@@ -3958,7 +3951,7 @@ static int stmmac_release(struct net_dev
|
||||
@@ -3959,7 +3952,7 @@ static int stmmac_release(struct net_dev
|
||||
stmmac_disable_all_queues(priv);
|
||||
|
||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||
@ -116,7 +116,7 @@ Signed-off-by: Oskari Lemmela <oskari@lemmela.net>
|
||||
|
||||
netif_tx_disable(dev);
|
||||
|
||||
@@ -6655,7 +6648,7 @@ void stmmac_xdp_release(struct net_devic
|
||||
@@ -6654,7 +6647,7 @@ void stmmac_xdp_release(struct net_devic
|
||||
stmmac_disable_all_queues(priv);
|
||||
|
||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||
@ -125,7 +125,7 @@ Signed-off-by: Oskari Lemmela <oskari@lemmela.net>
|
||||
|
||||
/* Free the IRQ lines */
|
||||
stmmac_free_irq(dev, REQ_IRQ_ERR_ALL, 0);
|
||||
@@ -6750,8 +6743,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
@@ -6749,8 +6742,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
stmmac_set_tx_tail_ptr(priv, priv->ioaddr,
|
||||
tx_q->tx_tail_addr, chan);
|
||||
|
||||
@ -135,7 +135,7 @@ Signed-off-by: Oskari Lemmela <oskari@lemmela.net>
|
||||
}
|
||||
|
||||
/* Enable the MAC Rx/Tx */
|
||||
@@ -6774,7 +6766,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
@@ -6773,7 +6765,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||
|
||||
irq_error:
|
||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||
@ -144,7 +144,7 @@ Signed-off-by: Oskari Lemmela <oskari@lemmela.net>
|
||||
|
||||
stmmac_hw_teardown(dev);
|
||||
init_error:
|
||||
@@ -7495,7 +7487,7 @@ int stmmac_suspend(struct device *dev)
|
||||
@@ -7497,7 +7489,7 @@ int stmmac_suspend(struct device *dev)
|
||||
stmmac_disable_all_queues(priv);
|
||||
|
||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||
|
||||
@ -17,7 +17,7 @@ Link: https://lore.kernel.org/r/20220515210048.483898-5-robimarko@gmail.com
|
||||
|
||||
--- a/drivers/clk/qcom/gcc-ipq8074.c
|
||||
+++ b/drivers/clk/qcom/gcc-ipq8074.c
|
||||
@@ -3183,6 +3183,24 @@ static struct clk_branch gcc_nss_ptp_ref
|
||||
@@ -3177,6 +3177,24 @@ static struct clk_branch gcc_nss_ptp_ref
|
||||
},
|
||||
};
|
||||
|
||||
@ -42,7 +42,7 @@ Link: https://lore.kernel.org/r/20220515210048.483898-5-robimarko@gmail.com
|
||||
static struct clk_branch gcc_nssnoc_ce_apb_clk = {
|
||||
.halt_reg = 0x6830c,
|
||||
.clkr = {
|
||||
@@ -4655,6 +4673,7 @@ static struct clk_regmap *gcc_ipq8074_cl
|
||||
@@ -4649,6 +4667,7 @@ static struct clk_regmap *gcc_ipq8074_cl
|
||||
[GCC_PCIE0_RCHNG_CLK_SRC] = &pcie0_rchng_clk_src.clkr,
|
||||
[GCC_PCIE0_RCHNG_CLK] = &gcc_pcie0_rchng_clk.clkr,
|
||||
[GCC_PCIE0_AXI_S_BRIDGE_CLK] = &gcc_pcie0_axi_s_bridge_clk.clkr,
|
||||
|
||||
@ -33,7 +33,7 @@ Link: https://lore.kernel.org/r/20220515210048.483898-9-robimarko@gmail.com
|
||||
#include "reset.h"
|
||||
|
||||
enum {
|
||||
@@ -4408,6 +4409,22 @@ static struct clk_branch gcc_pcie0_axi_s
|
||||
@@ -4402,6 +4403,22 @@ static struct clk_branch gcc_pcie0_axi_s
|
||||
},
|
||||
};
|
||||
|
||||
@ -56,7 +56,7 @@ Link: https://lore.kernel.org/r/20220515210048.483898-9-robimarko@gmail.com
|
||||
static const struct alpha_pll_config ubi32_pll_config = {
|
||||
.l = 0x4e,
|
||||
.config_ctl_val = 0x200d4aa8,
|
||||
@@ -4811,6 +4828,11 @@ static const struct qcom_reset_map gcc_i
|
||||
@@ -4805,6 +4822,11 @@ static const struct qcom_reset_map gcc_i
|
||||
[GCC_PCIE1_AXI_MASTER_STICKY_ARES] = { 0x76040, 6 },
|
||||
};
|
||||
|
||||
@ -68,7 +68,7 @@ Link: https://lore.kernel.org/r/20220515210048.483898-9-robimarko@gmail.com
|
||||
static const struct of_device_id gcc_ipq8074_match_table[] = {
|
||||
{ .compatible = "qcom,gcc-ipq8074" },
|
||||
{ }
|
||||
@@ -4833,6 +4855,8 @@ static const struct qcom_cc_desc gcc_ipq
|
||||
@@ -4827,6 +4849,8 @@ static const struct qcom_cc_desc gcc_ipq
|
||||
.num_resets = ARRAY_SIZE(gcc_ipq8074_resets),
|
||||
.clk_hws = gcc_ipq8074_hws,
|
||||
.num_clk_hws = ARRAY_SIZE(gcc_ipq8074_hws),
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -18,7 +18,7 @@ Link: https://lore.kernel.org/r/20221107132901.489240-3-robimarko@gmail.com
|
||||
|
||||
--- a/drivers/clk/qcom/gcc-ipq8074.c
|
||||
+++ b/drivers/clk/qcom/gcc-ipq8074.c
|
||||
@@ -4671,6 +4671,20 @@ static const struct qcom_reset_map gcc_i
|
||||
@@ -4665,6 +4665,20 @@ static const struct qcom_reset_map gcc_i
|
||||
[GCC_PCIE1_AXI_SLAVE_ARES] = { 0x76040, 4 },
|
||||
[GCC_PCIE1_AHB_ARES] = { 0x76040, 5 },
|
||||
[GCC_PCIE1_AXI_MASTER_STICKY_ARES] = { 0x76040, 6 },
|
||||
|
||||
@ -22,7 +22,7 @@ Link: https://lore.kernel.org/r/20221116214655.1116467-1-robimarko@gmail.com
|
||||
|
||||
--- a/drivers/clk/qcom/gcc-ipq8074.c
|
||||
+++ b/drivers/clk/qcom/gcc-ipq8074.c
|
||||
@@ -680,7 +680,7 @@ static struct clk_rcg2 pcie0_aux_clk_src
|
||||
@@ -674,7 +674,7 @@ static struct clk_rcg2 pcie0_aux_clk_src
|
||||
};
|
||||
|
||||
static const struct clk_parent_data gcc_pcie20_phy0_pipe_clk_xo[] = {
|
||||
@ -31,7 +31,7 @@ Link: https://lore.kernel.org/r/20221116214655.1116467-1-robimarko@gmail.com
|
||||
{ .fw_name = "xo", .name = "xo" },
|
||||
};
|
||||
|
||||
@@ -733,7 +733,7 @@ static struct clk_rcg2 pcie1_aux_clk_src
|
||||
@@ -727,7 +727,7 @@ static struct clk_rcg2 pcie1_aux_clk_src
|
||||
};
|
||||
|
||||
static const struct clk_parent_data gcc_pcie20_phy1_pipe_clk_xo[] = {
|
||||
@ -40,7 +40,7 @@ Link: https://lore.kernel.org/r/20221116214655.1116467-1-robimarko@gmail.com
|
||||
{ .fw_name = "xo", .name = "xo" },
|
||||
};
|
||||
|
||||
@@ -1137,7 +1137,7 @@ static const struct freq_tbl ftbl_nss_no
|
||||
@@ -1131,7 +1131,7 @@ static const struct freq_tbl ftbl_nss_no
|
||||
|
||||
static const struct clk_parent_data gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2[] = {
|
||||
{ .fw_name = "xo", .name = "xo" },
|
||||
@ -49,7 +49,7 @@ Link: https://lore.kernel.org/r/20221116214655.1116467-1-robimarko@gmail.com
|
||||
{ .hw = &gpll0.clkr.hw },
|
||||
{ .hw = &gpll2.clkr.hw },
|
||||
};
|
||||
@@ -1362,7 +1362,7 @@ static const struct freq_tbl ftbl_nss_pp
|
||||
@@ -1356,7 +1356,7 @@ static const struct freq_tbl ftbl_nss_pp
|
||||
|
||||
static const struct clk_parent_data gcc_xo_bias_gpll0_gpll4_nss_ubi32[] = {
|
||||
{ .fw_name = "xo", .name = "xo" },
|
||||
@ -58,7 +58,7 @@ Link: https://lore.kernel.org/r/20221116214655.1116467-1-robimarko@gmail.com
|
||||
{ .hw = &gpll0.clkr.hw },
|
||||
{ .hw = &gpll4.clkr.hw },
|
||||
{ .hw = &nss_crypto_pll.clkr.hw },
|
||||
@@ -1413,10 +1413,10 @@ static const struct freq_tbl ftbl_nss_po
|
||||
@@ -1407,10 +1407,10 @@ static const struct freq_tbl ftbl_nss_po
|
||||
|
||||
static const struct clk_parent_data gcc_xo_uniphy0_rx_tx_ubi32_bias[] = {
|
||||
{ .fw_name = "xo", .name = "xo" },
|
||||
@ -72,7 +72,7 @@ Link: https://lore.kernel.org/r/20221116214655.1116467-1-robimarko@gmail.com
|
||||
};
|
||||
|
||||
static const struct parent_map gcc_xo_uniphy0_rx_tx_ubi32_bias_map[] = {
|
||||
@@ -1465,10 +1465,10 @@ static const struct freq_tbl ftbl_nss_po
|
||||
@@ -1459,10 +1459,10 @@ static const struct freq_tbl ftbl_nss_po
|
||||
|
||||
static const struct clk_parent_data gcc_xo_uniphy0_tx_rx_ubi32_bias[] = {
|
||||
{ .fw_name = "xo", .name = "xo" },
|
||||
@ -86,7 +86,7 @@ Link: https://lore.kernel.org/r/20221116214655.1116467-1-robimarko@gmail.com
|
||||
};
|
||||
|
||||
static const struct parent_map gcc_xo_uniphy0_tx_rx_ubi32_bias_map[] = {
|
||||
@@ -1696,12 +1696,12 @@ static const struct freq_tbl ftbl_nss_po
|
||||
@@ -1690,12 +1690,12 @@ static const struct freq_tbl ftbl_nss_po
|
||||
|
||||
static const struct clk_parent_data gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias[] = {
|
||||
{ .fw_name = "xo", .name = "xo" },
|
||||
@ -104,7 +104,7 @@ Link: https://lore.kernel.org/r/20221116214655.1116467-1-robimarko@gmail.com
|
||||
};
|
||||
|
||||
static const struct parent_map
|
||||
@@ -1758,12 +1758,12 @@ static const struct freq_tbl ftbl_nss_po
|
||||
@@ -1752,12 +1752,12 @@ static const struct freq_tbl ftbl_nss_po
|
||||
|
||||
static const struct clk_parent_data gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias[] = {
|
||||
{ .fw_name = "xo", .name = "xo" },
|
||||
@ -122,7 +122,7 @@ Link: https://lore.kernel.org/r/20221116214655.1116467-1-robimarko@gmail.com
|
||||
};
|
||||
|
||||
static const struct parent_map
|
||||
@@ -1820,10 +1820,10 @@ static const struct freq_tbl ftbl_nss_po
|
||||
@@ -1814,10 +1814,10 @@ static const struct freq_tbl ftbl_nss_po
|
||||
|
||||
static const struct clk_parent_data gcc_xo_uniphy2_rx_tx_ubi32_bias[] = {
|
||||
{ .fw_name = "xo", .name = "xo" },
|
||||
@ -136,7 +136,7 @@ Link: https://lore.kernel.org/r/20221116214655.1116467-1-robimarko@gmail.com
|
||||
};
|
||||
|
||||
static const struct parent_map gcc_xo_uniphy2_rx_tx_ubi32_bias_map[] = {
|
||||
@@ -1877,10 +1877,10 @@ static const struct freq_tbl ftbl_nss_po
|
||||
@@ -1871,10 +1871,10 @@ static const struct freq_tbl ftbl_nss_po
|
||||
|
||||
static const struct clk_parent_data gcc_xo_uniphy2_tx_rx_ubi32_bias[] = {
|
||||
{ .fw_name = "xo", .name = "xo" },
|
||||
|
||||
@ -31,7 +31,7 @@ Reviewed-by: Rob Herring <robh@kernel.org>
|
||||
|
||||
--- a/drivers/pci/controller/dwc/pcie-tegra194.c
|
||||
+++ b/drivers/pci/controller/dwc/pcie-tegra194.c
|
||||
@@ -193,12 +193,6 @@
|
||||
@@ -194,12 +194,6 @@
|
||||
#define GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC_MASK GENMASK(23, 8)
|
||||
#define GEN3_EQ_CONTROL_OFF_FB_MODE_MASK GENMASK(3, 0)
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
|
||||
--- a/drivers/clk/qcom/gcc-ipq8074.c
|
||||
+++ b/drivers/clk/qcom/gcc-ipq8074.c
|
||||
@@ -1682,13 +1682,21 @@ static struct clk_regmap_div nss_port4_t
|
||||
@@ -1676,13 +1676,21 @@ static struct clk_regmap_div nss_port4_t
|
||||
},
|
||||
};
|
||||
|
||||
@ -49,7 +49,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
F(156250000, P_UNIPHY1_RX, 2, 0, 0),
|
||||
F(312500000, P_UNIPHY1_RX, 1, 0, 0),
|
||||
{ }
|
||||
@@ -1744,13 +1752,21 @@ static struct clk_regmap_div nss_port5_r
|
||||
@@ -1738,13 +1746,21 @@ static struct clk_regmap_div nss_port5_r
|
||||
},
|
||||
};
|
||||
|
||||
@ -75,7 +75,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
F(156250000, P_UNIPHY1_TX, 2, 0, 0),
|
||||
F(312500000, P_UNIPHY1_TX, 1, 0, 0),
|
||||
{ }
|
||||
@@ -1806,13 +1822,21 @@ static struct clk_regmap_div nss_port5_t
|
||||
@@ -1800,13 +1816,21 @@ static struct clk_regmap_div nss_port5_t
|
||||
},
|
||||
};
|
||||
|
||||
@ -101,7 +101,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
F(156250000, P_UNIPHY2_RX, 2, 0, 0),
|
||||
F(312500000, P_UNIPHY2_RX, 1, 0, 0),
|
||||
{ }
|
||||
@@ -1863,13 +1887,21 @@ static struct clk_regmap_div nss_port6_r
|
||||
@@ -1857,13 +1881,21 @@ static struct clk_regmap_div nss_port6_r
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ Acked-by: Stephen Boyd <sboyd@kernel.org>
|
||||
|
||||
--- a/drivers/clk/qcom/gcc-ipq8074.c
|
||||
+++ b/drivers/clk/qcom/gcc-ipq8074.c
|
||||
@@ -4717,6 +4717,7 @@ static const struct qcom_reset_map gcc_i
|
||||
@@ -4711,6 +4711,7 @@ static const struct qcom_reset_map gcc_i
|
||||
[GCC_NSSPORT4_RESET] = { .reg = 0x68014, .bitmask = BIT(27) | GENMASK(9, 8) },
|
||||
[GCC_NSSPORT5_RESET] = { .reg = 0x68014, .bitmask = BIT(28) | GENMASK(11, 10) },
|
||||
[GCC_NSSPORT6_RESET] = { .reg = 0x68014, .bitmask = BIT(29) | GENMASK(13, 12) },
|
||||
|
||||
@ -18,7 +18,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
|
||||
--- a/drivers/clk/qcom/gcc-ipq8074.c
|
||||
+++ b/drivers/clk/qcom/gcc-ipq8074.c
|
||||
@@ -934,7 +934,7 @@ static struct clk_rcg2 usb0_mock_utmi_cl
|
||||
@@ -928,7 +928,7 @@ static struct clk_rcg2 usb0_mock_utmi_cl
|
||||
};
|
||||
|
||||
static const struct clk_parent_data gcc_usb3phy_0_cc_pipe_clk_xo[] = {
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
{ .fw_name = "xo", .name = "xo" },
|
||||
};
|
||||
|
||||
@@ -1002,7 +1002,7 @@ static struct clk_rcg2 usb1_mock_utmi_cl
|
||||
@@ -996,7 +996,7 @@ static struct clk_rcg2 usb1_mock_utmi_cl
|
||||
};
|
||||
|
||||
static const struct clk_parent_data gcc_usb3phy_1_cc_pipe_clk_xo[] = {
|
||||
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Stefan Koch <stefan.koch10@gmail.com>
|
||||
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -2431,6 +2431,12 @@ config MIPS_VPE_LOADER
|
||||
@@ -2433,6 +2433,12 @@ config MIPS_VPE_LOADER
|
||||
Includes a loader for loading an elf relocatable object
|
||||
onto another VPE and running it.
|
||||
|
||||
|
||||
@ -44,7 +44,7 @@ Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
|
||||
|
||||
/*
|
||||
* Some chips power-up with all sectors locked by default.
|
||||
@@ -1703,6 +1707,7 @@ static int cfi_intelext_write_words (str
|
||||
@@ -1719,6 +1723,7 @@ static int cfi_intelext_write_words (str
|
||||
}
|
||||
|
||||
|
||||
@ -52,7 +52,7 @@ Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
|
||||
static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
|
||||
unsigned long adr, const struct kvec **pvec,
|
||||
unsigned long *pvec_seek, int len)
|
||||
@@ -1931,6 +1936,7 @@ static int cfi_intelext_write_buffers (s
|
||||
@@ -1947,6 +1952,7 @@ static int cfi_intelext_write_buffers (s
|
||||
|
||||
return cfi_intelext_writev(mtd, &vec, 1, to, retlen);
|
||||
}
|
||||
|
||||
@ -13,6 +13,10 @@
|
||||
|
||||
aliases {
|
||||
serial0 = &uart0;
|
||||
led-boot = &led_white;
|
||||
led-failsafe = &led_white;
|
||||
led-running = &led_blue;
|
||||
led-upgrade = &led_white;
|
||||
};
|
||||
|
||||
chosen {
|
||||
@ -51,13 +55,12 @@
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led_run: led@0 {
|
||||
led_blue: led@0 {
|
||||
label = "blue:run";
|
||||
gpios = <&pio 38 GPIO_ACTIVE_LOW>;
|
||||
default-state = "on";
|
||||
};
|
||||
|
||||
led@1 {
|
||||
led_white: led@1 {
|
||||
label = "white:system";
|
||||
gpios = <&pio 37 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
@ -165,7 +165,7 @@ define Device/asus_tuf-ax4200
|
||||
DEVICE_DTS := mt7986a-asus-tuf-ax4200
|
||||
DEVICE_DTS_DIR := ../dts
|
||||
DEVICE_DTS_LOADADDR := 0x47000000
|
||||
DEVICE_PACKAGES := kmod-usb3 kmod-mt7986-firmware mt7986-wo-firmware
|
||||
DEVICE_PACKAGES := kmod-usb3 kmod-mt7986-firmware mt7986-wo-firmware automount
|
||||
IMAGES := sysupgrade.bin
|
||||
KERNEL := kernel-bin | lzma | \
|
||||
fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
|
||||
@ -181,7 +181,7 @@ define Device/asus_tuf-ax6000
|
||||
DEVICE_DTS := mt7986a-asus-tuf-ax6000
|
||||
DEVICE_DTS_DIR := ../dts
|
||||
DEVICE_DTS_LOADADDR := 0x47000000
|
||||
DEVICE_PACKAGES := kmod-usb3 kmod-mt7986-firmware mt7986-wo-firmware
|
||||
DEVICE_PACKAGES := kmod-usb3 kmod-mt7986-firmware mt7986-wo-firmware automount
|
||||
IMAGES := sysupgrade.bin
|
||||
KERNEL := kernel-bin | lzma | \
|
||||
fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
|
||||
@ -199,7 +199,7 @@ define Device/bananapi_bpi-r3
|
||||
DEVICE_DTS_OVERLAY:= mt7986a-bananapi-bpi-r3-emmc mt7986a-bananapi-bpi-r3-nand mt7986a-bananapi-bpi-r3-nor mt7986a-bananapi-bpi-r3-sd
|
||||
DEVICE_DTS_DIR := $(DTS_DIR)/
|
||||
DEVICE_DTS_LOADADDR := 0x43f00000
|
||||
DEVICE_PACKAGES := kmod-hwmon-pwmfan kmod-i2c-gpio kmod-mt7986-firmware kmod-sfp kmod-usb3 e2fsprogs f2fsck mkf2fs mt7986-wo-firmware
|
||||
DEVICE_PACKAGES := kmod-hwmon-pwmfan kmod-i2c-gpio kmod-mt7986-firmware kmod-sfp kmod-usb3 e2fsprogs f2fsck mkf2fs mt7986-wo-firmware automount
|
||||
IMAGES := sysupgrade.itb
|
||||
KERNEL_LOADADDR := 0x44000000
|
||||
KERNEL_INITRAMFS_SUFFIX := -recovery.itb
|
||||
@ -423,7 +423,7 @@ define Device/confiabits_mt7981
|
||||
IMAGE_SIZE := 65536k
|
||||
KERNEL_IN_UBI := 1
|
||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||
DEVICE_PACKAGES := kmod-usb3 kmod-mt7981-firmware mt7981-wo-firmware
|
||||
DEVICE_PACKAGES := kmod-usb3 kmod-mt7981-firmware mt7981-wo-firmware automount
|
||||
endef
|
||||
TARGET_DEVICES += confiabits_mt7981
|
||||
|
||||
@ -926,7 +926,7 @@ define Device/routerich_ax3000
|
||||
DEVICE_MODEL := AX3000
|
||||
DEVICE_DTS := mt7981b-routerich-ax3000
|
||||
DEVICE_DTS_DIR := ../dts
|
||||
DEVICE_PACKAGES := kmod-mt7981-firmware mt7981-wo-firmware kmod-usb3
|
||||
DEVICE_PACKAGES := kmod-mt7981-firmware mt7981-wo-firmware kmod-usb3 automount
|
||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||
SUPPORTED_DEVICES += mediatek,mt7981-spim-snand-rfb
|
||||
endef
|
||||
@ -947,7 +947,7 @@ define Device/tplink_tl-xdr-common
|
||||
fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | pad-to 64k
|
||||
IMAGE/sysupgrade.itb := append-kernel | \
|
||||
fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb external-with-rootfs | append-metadata
|
||||
DEVICE_PACKAGES := kmod-usb3 kmod-mt7986-firmware mt7986-wo-firmware
|
||||
DEVICE_PACKAGES := kmod-usb3 kmod-mt7986-firmware mt7986-wo-firmware automount
|
||||
ARTIFACTS := preloader.bin bl31-uboot.fip
|
||||
ARTIFACT/preloader.bin := mt7986-bl2 spim-nand-ddr3
|
||||
endef
|
||||
|
||||
@ -40,7 +40,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
memory {
|
||||
memory@40000000 {
|
||||
- reg = <0 0x40000000 0 0x20000000>;
|
||||
+ reg = <0 0x40000000 0 0x40000000>;
|
||||
};
|
||||
|
||||
@ -53,4 +53,4 @@
|
||||
+ */
|
||||
};
|
||||
|
||||
memory {
|
||||
memory@40000000 {
|
||||
|
||||
@ -11,7 +11,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
|
||||
|
||||
--- a/drivers/spi/spi.c
|
||||
+++ b/drivers/spi/spi.c
|
||||
@@ -1234,6 +1234,70 @@ static int spi_transfer_wait(struct spi_
|
||||
@@ -1246,6 +1246,70 @@ static int spi_transfer_wait(struct spi_
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -82,7 +82,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
|
||||
static void _spi_transfer_delay_ns(u32 ns)
|
||||
{
|
||||
if (!ns)
|
||||
@@ -2021,6 +2085,75 @@ void spi_flush_queue(struct spi_controll
|
||||
@@ -2033,6 +2097,75 @@ void spi_flush_queue(struct spi_controll
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
#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,
|
||||
struct device_node *nc)
|
||||
{
|
||||
@@ -2139,6 +2272,10 @@ of_register_spi_device(struct spi_contro
|
||||
@@ -2151,6 +2284,10 @@ of_register_spi_device(struct spi_contro
|
||||
if (rc)
|
||||
goto err_out;
|
||||
|
||||
|
||||
@ -72,7 +72,7 @@ Signed-off-by: Wolfram Sang <wsa@kernel.org>
|
||||
idev->adapter.dev.parent = &pdev->dev;
|
||||
--- a/drivers/i2c/busses/i2c-aspeed.c
|
||||
+++ b/drivers/i2c/busses/i2c-aspeed.c
|
||||
@@ -1028,7 +1028,7 @@ static int aspeed_i2c_probe_bus(struct p
|
||||
@@ -1044,7 +1044,7 @@ static int aspeed_i2c_probe_bus(struct p
|
||||
bus->adap.algo = &aspeed_i2c_algo;
|
||||
bus->adap.dev.parent = &pdev->dev;
|
||||
bus->adap.dev.of_node = pdev->dev.of_node;
|
||||
@ -237,7 +237,7 @@ Signed-off-by: Wolfram Sang <wsa@kernel.org>
|
||||
priv->adap.algo = &hix5hd2_i2c_algorithm;
|
||||
--- a/drivers/i2c/busses/i2c-i801.c
|
||||
+++ b/drivers/i2c/busses/i2c-i801.c
|
||||
@@ -1111,7 +1111,7 @@ static void dmi_check_onboard_device(u8
|
||||
@@ -1110,7 +1110,7 @@ static void dmi_check_onboard_device(u8
|
||||
|
||||
memset(&info, 0, sizeof(struct i2c_board_info));
|
||||
info.addr = dmi_devices[i].i2c_addr;
|
||||
@ -246,7 +246,7 @@ Signed-off-by: Wolfram Sang <wsa@kernel.org>
|
||||
i2c_new_client_device(adap, &info);
|
||||
break;
|
||||
}
|
||||
@@ -1267,7 +1267,7 @@ static void register_dell_lis3lv02d_i2c_
|
||||
@@ -1266,7 +1266,7 @@ static void register_dell_lis3lv02d_i2c_
|
||||
|
||||
memset(&info, 0, sizeof(struct i2c_board_info));
|
||||
info.addr = dell_lis3lv02d_devices[i].i2c_addr;
|
||||
@ -403,7 +403,7 @@ Signed-off-by: Wolfram Sang <wsa@kernel.org>
|
||||
/* Slow down if we can't sense SCL */
|
||||
--- a/drivers/i2c/busses/i2c-pxa.c
|
||||
+++ b/drivers/i2c/busses/i2c-pxa.c
|
||||
@@ -1403,7 +1403,7 @@ static int i2c_pxa_probe(struct platform
|
||||
@@ -1463,7 +1463,7 @@ static int i2c_pxa_probe(struct platform
|
||||
spin_lock_init(&i2c->lock);
|
||||
init_waitqueue_head(&i2c->wait);
|
||||
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
* managed to set the command line, unless CONFIG_CMDLINE_FORCE
|
||||
--- a/arch/arm64/Kconfig
|
||||
+++ b/arch/arm64/Kconfig
|
||||
@@ -2057,6 +2057,14 @@ config CMDLINE_FORCE
|
||||
@@ -2059,6 +2059,14 @@ config CMDLINE_FORCE
|
||||
|
||||
endchoice
|
||||
|
||||
|
||||
@ -258,7 +258,7 @@ Signed-off-by: Michael Gray <michael.gray@lantisproject.com>
|
||||
static int kernel_init(void *);
|
||||
|
||||
extern void init_IRQ(void);
|
||||
@@ -988,6 +992,18 @@ asmlinkage __visible void __init __no_sa
|
||||
@@ -992,6 +996,18 @@ asmlinkage __visible void __init __no_sa
|
||||
page_alloc_init();
|
||||
|
||||
pr_notice("Kernel command line: %s\n", saved_command_line);
|
||||
|
||||
@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -1182,6 +1182,10 @@ config MIPS_MSC
|
||||
@@ -1183,6 +1183,10 @@ config MIPS_MSC
|
||||
config SYNC_R4K
|
||||
bool
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
#include <linux/platform_data/x86/apple.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/suspend.h>
|
||||
@@ -5858,3 +5859,34 @@ static void nvidia_ion_ahci_fixup(struct
|
||||
@@ -5879,3 +5880,34 @@ static void nvidia_ion_ahci_fixup(struct
|
||||
pdev->dev_flags |= PCI_DEV_FLAGS_HAS_MSI_MASKING;
|
||||
}
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, 0x0ab8, nvidia_ion_ahci_fixup);
|
||||
|
||||
@ -239,7 +239,7 @@ Signed-off-by: Adrian Panella <ianchi74@outlook.com>
|
||||
static int kernel_init(void *);
|
||||
|
||||
extern void init_IRQ(void);
|
||||
@@ -988,6 +992,18 @@ asmlinkage __visible void __init __no_sa
|
||||
@@ -992,6 +996,18 @@ asmlinkage __visible void __init __no_sa
|
||||
page_alloc_init();
|
||||
|
||||
pr_notice("Kernel command line: %s\n", saved_command_line);
|
||||
|
||||
186
target/linux/ramips/dts/mt7621_dlink_covr-x1860-a1.dts
Normal file
186
target/linux/ramips/dts/mt7621_dlink_covr-x1860-a1.dts
Normal file
@ -0,0 +1,186 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "mt7621.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
||||
/ {
|
||||
compatible = "dlink,covr-x1860-a1", "mediatek,mt7621-soc";
|
||||
model = "D-Link COVR-X1860 A1";
|
||||
|
||||
aliases {
|
||||
led-boot = &status_orange;
|
||||
led-failsafe = &status_red;
|
||||
led-running = &status_white;
|
||||
led-upgrade = &status_red;
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttyS0,115200";
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
reset {
|
||||
label = "reset";
|
||||
linux,code = <KEY_RESTART>;
|
||||
gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
wps {
|
||||
label = "wps";
|
||||
linux,code = <KEY_WPS_BUTTON>;
|
||||
gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
status_white: power {
|
||||
label = "white:status";
|
||||
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
status_orange: status_orange {
|
||||
label = "orange:status";
|
||||
gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
|
||||
default-state = "on";
|
||||
};
|
||||
|
||||
status_red: status_red {
|
||||
label = "red:status";
|
||||
gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
virtual_flash {
|
||||
compatible = "mtd-concat";
|
||||
|
||||
devices = <&fwconcat0 &fwconcat1>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "ubi";
|
||||
reg = <0x0 0x0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&nand {
|
||||
status = "okay";
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "bootloader";
|
||||
reg = <0x0 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@80000 {
|
||||
label = "config";
|
||||
reg = <0x80000 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
factory: partition@100000 {
|
||||
label = "factory";
|
||||
reg = <0x100000 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@180000 {
|
||||
label = "config2";
|
||||
reg = <0x180000 0x40000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@1c0000 {
|
||||
label = "kernel";
|
||||
reg = <0x1c0000 0x800000>;
|
||||
};
|
||||
|
||||
fwconcat0: partition@9c0000 {
|
||||
label = "fwconcat0";
|
||||
reg = <0x9c0000 0x2000000>;
|
||||
};
|
||||
|
||||
partition@29c0000 {
|
||||
label = "kernel2";
|
||||
reg = <0x29c0000 0x800000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
fwconcat1: partition@31c0000 {
|
||||
label = "fwconcat1";
|
||||
reg = <0x31c0000 0x2a00000>;
|
||||
};
|
||||
|
||||
partition@5bc0000 {
|
||||
label = "private";
|
||||
reg = <0x5bc0000 0x1400000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@6fc0000 {
|
||||
label = "mydlink";
|
||||
reg = <0x6fc0000 0x600000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@75c0000 {
|
||||
label = "myconfig";
|
||||
reg = <0x75c0000 0xa00000>;
|
||||
read-only;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pcie {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie1 {
|
||||
wifi@0,0 {
|
||||
compatible = "mediatek,mt76";
|
||||
reg = <0x0000 0 0 0 0>;
|
||||
mediatek,mtd-eeprom = <&factory 0x0>;
|
||||
mediatek,disable-radar-background;
|
||||
};
|
||||
};
|
||||
|
||||
&gmac1 {
|
||||
status = "okay";
|
||||
phy-handle = <ðphy4>;
|
||||
};
|
||||
|
||||
&mdio {
|
||||
ethphy4: ethernet-phy@4 {
|
||||
reg = <4>;
|
||||
};
|
||||
};
|
||||
|
||||
&switch0 {
|
||||
ports {
|
||||
port@0 {
|
||||
status = "okay";
|
||||
label = "internet";
|
||||
};
|
||||
|
||||
port@2 {
|
||||
status = "okay";
|
||||
label = "ethernet";
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -50,25 +50,24 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
&pcie1 { // MT7603EN
|
||||
wifi@0,0 {
|
||||
compatible = "mediatek,mt76";
|
||||
reg = <0x0000 0 0 0 0>;
|
||||
mediatek,mtd-eeprom = <&factory 0x0000>;
|
||||
ieee80211-freq-limit = <2400000 2500000>;
|
||||
|
||||
led {
|
||||
led-active-low;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pcie1 {
|
||||
&pcie2 { // MT7612E
|
||||
wifi@0,0 {
|
||||
compatible = "mediatek,mt76";
|
||||
reg = <0x0000 0 0 0 0>;
|
||||
mediatek,mtd-eeprom = <&factory 0x8000>;
|
||||
ieee80211-freq-limit = <5000000 6000000>;
|
||||
|
||||
led {
|
||||
led-sources = <2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@ -429,8 +429,8 @@
|
||||
interrupt-parent = <&cpuintc>;
|
||||
interrupts = <5>;
|
||||
|
||||
resets = <&rstctrl 21>;
|
||||
reset-names = "fe";
|
||||
resets = <&rstctrl 21>, <&rstctrl 23>;
|
||||
reset-names = "fe", "esw";
|
||||
|
||||
mediatek,switch = <&esw>;
|
||||
};
|
||||
@ -439,8 +439,8 @@
|
||||
compatible = "mediatek,mt7628-esw", "ralink,rt3050-esw";
|
||||
reg = <0x10110000 0x8000>;
|
||||
|
||||
resets = <&rstctrl 23 &rstctrl 24>;
|
||||
reset-names = "esw", "ephy";
|
||||
resets = <&rstctrl 24>;
|
||||
reset-names = "ephy";
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <17>;
|
||||
|
||||
@ -306,8 +306,8 @@
|
||||
compatible = "ralink,rt3050-eth";
|
||||
reg = <0x10100000 0x10000>;
|
||||
|
||||
resets = <&rstctrl 21>;
|
||||
reset-names = "fe";
|
||||
resets = <&rstctrl 21>, <&rstctrl 23>;
|
||||
reset-names = "fe", "esw";
|
||||
|
||||
interrupt-parent = <&cpuintc>;
|
||||
interrupts = <5>;
|
||||
@ -319,8 +319,8 @@
|
||||
compatible = "ralink,rt3050-esw";
|
||||
reg = <0x10110000 0x8000>;
|
||||
|
||||
resets = <&rstctrl 23 &rstctrl 24>;
|
||||
reset-names = "esw", "ephy";
|
||||
resets = <&rstctrl 24>;
|
||||
reset-names = "ephy";
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <17>;
|
||||
|
||||
@ -318,8 +318,8 @@
|
||||
compatible = "ralink,rt3352-eth", "ralink,rt3050-eth";
|
||||
reg = <0x10100000 0x10000>;
|
||||
|
||||
resets = <&rstctrl 21>;
|
||||
reset-names = "fe";
|
||||
resets = <&rstctrl 21>, <&rstctrl 23>;
|
||||
reset-names = "fe", "esw";
|
||||
|
||||
interrupt-parent = <&cpuintc>;
|
||||
interrupts = <5>;
|
||||
@ -331,8 +331,8 @@
|
||||
compatible = "ralink,rt3352-esw", "ralink,rt3050-esw";
|
||||
reg = <0x10110000 0x8000>;
|
||||
|
||||
resets = <&rstctrl 23 &rstctrl 24>;
|
||||
reset-names = "esw", "ephy";
|
||||
resets = <&rstctrl 24>;
|
||||
reset-names = "ephy";
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <17>;
|
||||
|
||||
@ -343,8 +343,8 @@
|
||||
compatible = "ralink,rt5350-eth";
|
||||
reg = <0x10100000 0x10000>;
|
||||
|
||||
resets = <&rstctrl 21>;
|
||||
reset-names = "fe";
|
||||
resets = <&rstctrl 21>, <&rstctrl 23>;
|
||||
reset-names = "fe", "esw";
|
||||
|
||||
interrupt-parent = <&cpuintc>;
|
||||
interrupts = <5>;
|
||||
@ -356,8 +356,8 @@
|
||||
compatible = "ralink,rt5350-esw", "ralink,rt3050-esw";
|
||||
reg = <0x10110000 0x8000>;
|
||||
|
||||
resets = <&rstctrl 23 &rstctrl 24>;
|
||||
reset-names = "esw", "ephy";
|
||||
resets = <&rstctrl 24>;
|
||||
reset-names = "ephy";
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <17>;
|
||||
|
||||
@ -237,7 +237,6 @@ struct rt305x_esw {
|
||||
int led_frequency;
|
||||
struct esw_vlan vlans[RT305X_ESW_NUM_VLANS];
|
||||
struct esw_port ports[RT305X_ESW_NUM_PORTS];
|
||||
struct reset_control *rst_esw;
|
||||
struct reset_control *rst_ephy;
|
||||
|
||||
};
|
||||
@ -261,18 +260,6 @@ static inline void esw_rmw_raw(struct rt305x_esw *esw, unsigned reg,
|
||||
__raw_writel(t | val, esw->base + reg);
|
||||
}
|
||||
|
||||
static void esw_reset(struct rt305x_esw *esw)
|
||||
{
|
||||
if (!esw->rst_esw)
|
||||
return;
|
||||
|
||||
reset_control_assert(esw->rst_esw);
|
||||
usleep_range(60, 120);
|
||||
reset_control_deassert(esw->rst_esw);
|
||||
/* the esw takes long to reset otherwise the board hang */
|
||||
msleep(10);
|
||||
}
|
||||
|
||||
static void esw_reset_ephy(struct rt305x_esw *esw)
|
||||
{
|
||||
if (!esw->rst_ephy)
|
||||
@ -466,8 +453,6 @@ static void esw_hw_init(struct rt305x_esw *esw)
|
||||
u8 port_disable = 0;
|
||||
u8 port_map = RT305X_ESW_PMAP_LLLLLL;
|
||||
|
||||
esw_reset(esw);
|
||||
|
||||
/* vodoo from original driver */
|
||||
esw_w32(esw, 0xC8A07850, RT305X_ESW_REG_FCT0);
|
||||
esw_w32(esw, 0x00000000, RT305X_ESW_REG_SGC2);
|
||||
@ -1441,12 +1426,11 @@ static int esw_probe(struct platform_device *pdev)
|
||||
if (reg_init)
|
||||
esw->reg_led_source = be32_to_cpu(*reg_init);
|
||||
|
||||
esw->rst_esw = devm_reset_control_get(&pdev->dev, "esw");
|
||||
if (IS_ERR(esw->rst_esw))
|
||||
esw->rst_esw = NULL;
|
||||
esw->rst_ephy = devm_reset_control_get(&pdev->dev, "ephy");
|
||||
if (IS_ERR(esw->rst_ephy))
|
||||
esw->rst_ephy = devm_reset_control_get_exclusive(&pdev->dev, "ephy");
|
||||
if (IS_ERR(esw->rst_ephy)) {
|
||||
dev_err(esw->dev, "failed to get EPHY reset: %pe\n", esw->rst_ephy);
|
||||
esw->rst_ephy = NULL;
|
||||
}
|
||||
|
||||
spin_lock_init(&esw->reg_rw_lock);
|
||||
platform_set_drvdata(pdev, esw);
|
||||
|
||||
@ -143,13 +143,13 @@ void fe_reset(u32 reset_bits)
|
||||
|
||||
void fe_reset_fe(struct fe_priv *priv)
|
||||
{
|
||||
if (!priv->rst_fe)
|
||||
if (!priv->resets)
|
||||
return;
|
||||
|
||||
reset_control_assert(priv->rst_fe);
|
||||
usleep_range(60, 120);
|
||||
reset_control_deassert(priv->rst_fe);
|
||||
reset_control_assert(priv->resets);
|
||||
usleep_range(60, 120);
|
||||
reset_control_deassert(priv->resets);
|
||||
usleep_range(1000, 1200);
|
||||
}
|
||||
|
||||
static inline void fe_int_disable(u32 mask)
|
||||
@ -1595,9 +1595,11 @@ static int fe_probe(struct platform_device *pdev)
|
||||
|
||||
priv = netdev_priv(netdev);
|
||||
spin_lock_init(&priv->page_lock);
|
||||
priv->rst_fe = devm_reset_control_get(&pdev->dev, "fe");
|
||||
if (IS_ERR(priv->rst_fe))
|
||||
priv->rst_fe = NULL;
|
||||
priv->resets = devm_reset_control_array_get_exclusive(&pdev->dev);
|
||||
if (IS_ERR(priv->resets)) {
|
||||
dev_err(&pdev->dev, "Failed to get resets for FE and ESW cores: %pe\n", priv->resets);
|
||||
priv->resets = NULL;
|
||||
}
|
||||
|
||||
if (soc->init_data)
|
||||
soc->init_data(soc, netdev);
|
||||
|
||||
@ -497,8 +497,7 @@ struct fe_priv {
|
||||
struct work_struct pending_work;
|
||||
DECLARE_BITMAP(pending_flags, FE_FLAG_MAX);
|
||||
|
||||
struct reset_control *rst_ppe;
|
||||
struct reset_control *rst_fe;
|
||||
struct reset_control *resets;
|
||||
struct mtk_foe_entry *foe_table;
|
||||
dma_addr_t foe_table_phys;
|
||||
struct flow_offload __rcu **foe_flow_table;
|
||||
|
||||
@ -11,22 +11,39 @@
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#define KSEG0 0x80000000
|
||||
#define KSEG1 0xa0000000
|
||||
|
||||
#define _ATYPE_ __PTRDIFF_TYPE__
|
||||
#define _ATYPE32_ int
|
||||
|
||||
#define _ACAST32_ (_ATYPE_)(_ATYPE32_)
|
||||
|
||||
#define CPHYSADDR(a) ((_ACAST32_(a)) & 0x1fffffff)
|
||||
|
||||
#define KSEG0ADDR(a) (CPHYSADDR(a) | KSEG0)
|
||||
#define KSEG1ADDR(a) (CPHYSADDR(a) | KSEG1)
|
||||
|
||||
#define UART_LSR_THRE 0x20
|
||||
#define UART_LSR_TEMT 0x40
|
||||
|
||||
#if defined(SOC_MT7620) || defined(SOC_RT3883)
|
||||
#define UART_BASE 0xb0000c00
|
||||
#define UART_BASE KSEG1ADDR(0x10000c00)
|
||||
#define UART_THR (UART_BASE + 0x04)
|
||||
#define UART_LSR (UART_BASE + 0x1c)
|
||||
#define UART_LSR_THRE_MASK 0x40
|
||||
#define UART_LSR_MASK UART_LSR_TEMT
|
||||
#elif defined(SOC_MT7621)
|
||||
#define UART_BASE 0xbe000c00
|
||||
#define UART_BASE KSEG1ADDR(0x1e000c00)
|
||||
#define UART_THR (UART_BASE + 0x00)
|
||||
#define UART_LSR (UART_BASE + 0x14)
|
||||
#define UART_LSR_THRE_MASK 0x20
|
||||
#define UART_LSR_MASK UART_LSR_THRE
|
||||
#elif defined(SOC_RT305X)
|
||||
#define UART_BASE 0x10000500
|
||||
#define UART_BASE KSEG1ADDR(0x10000c00)
|
||||
#define UART_THR (UART_BASE + 0x04)
|
||||
#define UART_LSR (UART_BASE + 0x1c)
|
||||
#define UART_LSR_THRE_MASK 0x20
|
||||
#define UART_LSR_MASK UART_LSR_THRE
|
||||
#else
|
||||
#error "Unsupported SOC..."
|
||||
#endif
|
||||
@ -42,7 +59,7 @@ void board_init(void)
|
||||
|
||||
void board_putc(int ch)
|
||||
{
|
||||
while ((READREG(UART_LSR) & UART_LSR_THRE_MASK) == 0);
|
||||
while ((READREG(UART_LSR) & UART_LSR_MASK) == 0);
|
||||
WRITEREG(UART_THR, ch);
|
||||
while ((READREG(UART_LSR) & UART_LSR_THRE_MASK) == 0);
|
||||
while ((READREG(UART_LSR) & UART_LSR_MASK) == 0);
|
||||
}
|
||||
|
||||
@ -9,6 +9,14 @@ DEFAULT_SOC := mt7621
|
||||
|
||||
DEVICE_VARS += ELECOM_HWNAME LINKSYS_HWNAME DLINK_HWID
|
||||
|
||||
define Build/append-dlink-covr-metadata
|
||||
echo -ne '{"supported_devices": "$(1)", "firmware": "' > $@metadata.tmp
|
||||
$(MKHASH) md5 "$@" | head -c32 >> $@metadata.tmp
|
||||
echo '"}' >> $@metadata.tmp
|
||||
fwtool -I $@metadata.tmp $@
|
||||
rm $@metadata.tmp
|
||||
endef
|
||||
|
||||
define Build/arcadyan-trx
|
||||
echo -ne "hsqs" > $@.hsqs
|
||||
$(eval trx_magic=$(word 1,$(1)))
|
||||
@ -611,6 +619,31 @@ define Device/cudy_x6-v2
|
||||
endef
|
||||
TARGET_DEVICES += cudy_x6-v2
|
||||
|
||||
define Device/dlink_covr-x1860-a1
|
||||
$(Device/dsa-migration)
|
||||
BLOCKSIZE := 128k
|
||||
PAGESIZE := 2048
|
||||
KERNEL_SIZE := 8192k
|
||||
IMAGE_SIZE := 40960k
|
||||
DEVICE_VENDOR := D-Link
|
||||
DEVICE_MODEL := COVR-X1860
|
||||
DEVICE_VARIANT := A1
|
||||
DEVICE_PACKAGES := kmod-mt7915-firmware
|
||||
UBINIZE_OPTS := -E 5
|
||||
KERNEL_LOADADDR := 0x82000000
|
||||
KERNEL := kernel-bin | relocate-kernel 0x80001000 | lzma | \
|
||||
fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb | \
|
||||
append-squashfs4-fakeroot
|
||||
IMAGES += factory.bin recovery.bin
|
||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||
IMAGE/recovery.bin := append-kernel | pad-to $$(KERNEL_SIZE) | \
|
||||
append-ubi | check-size
|
||||
IMAGE/factory.bin := $$(IMAGE/recovery.bin) | \
|
||||
append-dlink-covr-metadata $$(DEVICE_MODEL) | \
|
||||
dlink-sge-image $$(DEVICE_MODEL)
|
||||
endef
|
||||
TARGET_DEVICES += dlink_covr-x1860-a1
|
||||
|
||||
define Device/dlink_dap-1620-b1
|
||||
DEVICE_VENDOR := D-Link
|
||||
DEVICE_MODEL := DAP-1620
|
||||
|
||||
@ -96,6 +96,9 @@ ramips_setup_interfaces()
|
||||
zyxel,nr7101)
|
||||
ucidef_set_interfaces_lan_wan "lan" "wan"
|
||||
;;
|
||||
dlink,covr-x1860-a1)
|
||||
ucidef_set_interfaces_lan_wan "ethernet" "internet"
|
||||
;;
|
||||
gnubee,gb-pc1)
|
||||
ucidef_set_interface_lan "ethblack ethblue"
|
||||
;;
|
||||
@ -210,6 +213,11 @@ ramips_setup_macs()
|
||||
label_mac=$lan_mac
|
||||
wan_mac=$(macaddr_add "$lan_mac" 1)
|
||||
;;
|
||||
dlink,covr-x1860-a1)
|
||||
label_mac=$(mtd_get_mac_ascii config2 factory_mac)
|
||||
wan_mac=$(macaddr_add "$label_mac" 3)
|
||||
lan_mac=$label_mac
|
||||
;;
|
||||
dlink,dir-860l-b1)
|
||||
lan_mac=$(mtd_get_mac_ascii factory lanmac)
|
||||
wan_mac=$(mtd_get_mac_ascii factory wanmac)
|
||||
|
||||
@ -45,6 +45,13 @@ case "$board" in
|
||||
[ "$PHYNBR" = "1" ] && \
|
||||
macaddr_add $lan_mac_addr 2 > /sys${DEVPATH}/macaddress
|
||||
;;
|
||||
dlink,covr-x1860-a1)
|
||||
label_mac=$(mtd_get_mac_ascii config2 factory_mac)
|
||||
[ "$PHYNBR" = "0" ] && \
|
||||
macaddr_add $label_mac 1 > /sys${DEVPATH}/macaddress
|
||||
[ "$PHYNBR" = "1" ] && \
|
||||
macaddr_add $label_mac 2 > /sys${DEVPATH}/macaddress
|
||||
;;
|
||||
dlink,dap-x1860-a1)
|
||||
hw_mac_addr="$(mtd_get_mac_binary factory 0x4)"
|
||||
[ "$PHYNBR" = "0" ] && \
|
||||
|
||||
@ -63,6 +63,7 @@ platform_do_upgrade() {
|
||||
beeline,smartbox-turbo|\
|
||||
beeline,smartbox-turbo-plus|\
|
||||
belkin,rt1800|\
|
||||
dlink,covr-x1860-a1|\
|
||||
dlink,dap-x1860-a1|\
|
||||
dlink,dir-1960-a1|\
|
||||
dlink,dir-2640-a1|\
|
||||
|
||||
@ -95,7 +95,7 @@ still required by target/linux/ramips/files/drivers/net/ethernet/ralink/mdio.c
|
||||
phydev->mii_ts->link_state(phydev->mii_ts, phydev);
|
||||
--- a/drivers/net/phy/phylink.c
|
||||
+++ b/drivers/net/phy/phylink.c
|
||||
@@ -1369,7 +1369,8 @@ void phylink_destroy(struct phylink *pl)
|
||||
@@ -1370,7 +1370,8 @@ void phylink_destroy(struct phylink *pl)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(phylink_destroy);
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user