kernel: bump to 4.9.269, 4.14.233, 4.19.191
Refreshed all patches. Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
parent
90b2bd4068
commit
4c7cf87e6b
@ -6,13 +6,13 @@ ifdef CONFIG_TESTING_KERNEL
|
||||
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
|
||||
endif
|
||||
|
||||
LINUX_VERSION-4.9 = .267
|
||||
LINUX_VERSION-4.14 = .231
|
||||
LINUX_VERSION-4.19 = .188
|
||||
LINUX_VERSION-4.9 = .269
|
||||
LINUX_VERSION-4.14 = .233
|
||||
LINUX_VERSION-4.19 = .191
|
||||
|
||||
LINUX_KERNEL_HASH-4.9.267 = 983b9afe69df31de8984d40a88afec38d617322d6521ef714db36b3e56220a60
|
||||
LINUX_KERNEL_HASH-4.14.231 = 573b79adee3490a8dd82f663bb187218288c99cd2613fd9f69edf915f91e6682
|
||||
LINUX_KERNEL_HASH-4.19.188 = b09cf1f026b1260bae6480d98c471958eff3ad64b65e59e64a6852f678050077
|
||||
LINUX_KERNEL_HASH-4.9.269 = 7971ff0995119c446125d5949faab717a2d16e6a9ed0bd8350139a98187fcfde
|
||||
LINUX_KERNEL_HASH-4.14.233 = 46c8dd7281d7b15d32ffbdf75281aeb1dde9da7aa963560dd14ee6cdd09f116b
|
||||
LINUX_KERNEL_HASH-4.19.191 = b526bb70f18ab3fd4bae2bb31dd278f91b13a671b5137dbfb71580b47f3ea9c9
|
||||
|
||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
||||
|
||||
@ -136,7 +136,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
{
|
||||
--- a/drivers/gpio/gpiolib-sysfs.c
|
||||
+++ b/drivers/gpio/gpiolib-sysfs.c
|
||||
@@ -568,7 +568,7 @@ static struct class gpio_class = {
|
||||
@@ -576,7 +576,7 @@ static struct class gpio_class = {
|
||||
*
|
||||
* Returns zero on success, else an error.
|
||||
*/
|
||||
@ -145,7 +145,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
{
|
||||
struct gpio_chip *chip;
|
||||
struct gpio_device *gdev;
|
||||
@@ -630,6 +630,8 @@ int gpiod_export(struct gpio_desc *desc,
|
||||
@@ -638,6 +638,8 @@ int gpiod_export(struct gpio_desc *desc,
|
||||
offset = gpio_chip_hwgpio(desc);
|
||||
if (chip->names && chip->names[offset])
|
||||
ioname = chip->names[offset];
|
||||
@ -154,7 +154,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
dev = device_create_with_groups(&gpio_class, &gdev->dev,
|
||||
MKDEV(0, 0), data, gpio_groups,
|
||||
@@ -651,6 +653,12 @@ err_unlock:
|
||||
@@ -659,6 +661,12 @@ err_unlock:
|
||||
gpiod_dbg(desc, "%s: status %d\n", __func__, status);
|
||||
return status;
|
||||
}
|
||||
|
||||
@ -44,7 +44,7 @@ Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
|
||||
|
||||
#include "xhci.h"
|
||||
#include "xhci-trace.h"
|
||||
@@ -281,6 +283,458 @@ static void xhci_pme_acpi_rtd3_enable(st
|
||||
@@ -283,6 +285,458 @@ static void xhci_pme_acpi_rtd3_enable(st
|
||||
static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { }
|
||||
#endif /* CONFIG_ACPI */
|
||||
|
||||
@ -503,7 +503,7 @@ Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
|
||||
/* called during probe() after chip reset completes */
|
||||
static int xhci_pci_setup(struct usb_hcd *hcd)
|
||||
{
|
||||
@@ -322,6 +776,22 @@ static int xhci_pci_probe(struct pci_dev
|
||||
@@ -324,6 +778,22 @@ static int xhci_pci_probe(struct pci_dev
|
||||
struct hc_driver *driver;
|
||||
struct usb_hcd *hcd;
|
||||
|
||||
@ -526,7 +526,7 @@ Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
|
||||
driver = (struct hc_driver *)id->driver_data;
|
||||
|
||||
/* Prevent runtime suspending between USB-2 and USB-3 initialization */
|
||||
@@ -380,6 +850,16 @@ static void xhci_pci_remove(struct pci_d
|
||||
@@ -382,6 +852,16 @@ static void xhci_pci_remove(struct pci_d
|
||||
{
|
||||
struct xhci_hcd *xhci;
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ produce a noisy warning.
|
||||
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -227,6 +227,7 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -229,6 +229,7 @@ static void xhci_pci_quirks(struct devic
|
||||
pdev->device == 0x0015) {
|
||||
xhci->quirks |= XHCI_RESET_ON_RESUME;
|
||||
xhci->quirks |= XHCI_ZERO_64B_REGS;
|
||||
@ -23,7 +23,7 @@ produce a noisy warning.
|
||||
xhci->quirks |= XHCI_RESET_ON_RESUME;
|
||||
--- a/drivers/usb/host/xhci.c
|
||||
+++ b/drivers/usb/host/xhci.c
|
||||
@@ -422,10 +422,14 @@ static int xhci_try_enable_msi(struct us
|
||||
@@ -426,10 +426,14 @@ static int xhci_try_enable_msi(struct us
|
||||
free_irq(hcd->irq, hcd);
|
||||
hcd->irq = 0;
|
||||
|
||||
|
||||
@ -276,7 +276,7 @@
|
||||
case IPV6_2292HOPOPTS:
|
||||
--- a/net/ipv6/ip6_gre.c
|
||||
+++ b/net/ipv6/ip6_gre.c
|
||||
@@ -400,7 +400,7 @@ static void ip6gre_err(struct sk_buff *s
|
||||
@@ -399,7 +399,7 @@ static void ip6gre_err(struct sk_buff *s
|
||||
return;
|
||||
ipv6h = (const struct ipv6hdr *)skb->data;
|
||||
greh = (const struct gre_base_hdr *)(skb->data + offset);
|
||||
|
||||
@ -267,7 +267,7 @@
|
||||
case IPV6_2292HOPOPTS:
|
||||
--- a/net/ipv6/ip6_gre.c
|
||||
+++ b/net/ipv6/ip6_gre.c
|
||||
@@ -400,7 +400,7 @@ static void ip6gre_err(struct sk_buff *s
|
||||
@@ -399,7 +399,7 @@ static void ip6gre_err(struct sk_buff *s
|
||||
return;
|
||||
ipv6h = (const struct ipv6hdr *)skb->data;
|
||||
greh = (const struct gre_base_hdr *)(skb->data + offset);
|
||||
|
||||
@ -267,7 +267,7 @@
|
||||
case IPV6_2292HOPOPTS:
|
||||
--- a/net/ipv6/ip6_gre.c
|
||||
+++ b/net/ipv6/ip6_gre.c
|
||||
@@ -400,7 +400,7 @@ static void ip6gre_err(struct sk_buff *s
|
||||
@@ -399,7 +399,7 @@ static void ip6gre_err(struct sk_buff *s
|
||||
return;
|
||||
ipv6h = (const struct ipv6hdr *)skb->data;
|
||||
greh = (const struct gre_base_hdr *)(skb->data + offset);
|
||||
|
||||
@ -93,7 +93,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
+module_platform_driver(gpio_export_driver);
|
||||
--- a/drivers/gpio/gpiolib-sysfs.c
|
||||
+++ b/drivers/gpio/gpiolib-sysfs.c
|
||||
@@ -568,7 +568,7 @@ static struct class gpio_class = {
|
||||
@@ -576,7 +576,7 @@ static struct class gpio_class = {
|
||||
*
|
||||
* Returns zero on success, else an error.
|
||||
*/
|
||||
@ -102,7 +102,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
{
|
||||
struct gpio_chip *chip;
|
||||
struct gpio_device *gdev;
|
||||
@@ -630,6 +630,8 @@ int gpiod_export(struct gpio_desc *desc,
|
||||
@@ -638,6 +638,8 @@ int gpiod_export(struct gpio_desc *desc,
|
||||
offset = gpio_chip_hwgpio(desc);
|
||||
if (chip->names && chip->names[offset])
|
||||
ioname = chip->names[offset];
|
||||
@ -111,7 +111,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
dev = device_create_with_groups(&gpio_class, &gdev->dev,
|
||||
MKDEV(0, 0), data, gpio_groups,
|
||||
@@ -651,6 +653,12 @@ err_unlock:
|
||||
@@ -659,6 +661,12 @@ err_unlock:
|
||||
gpiod_dbg(desc, "%s: status %d\n", __func__, status);
|
||||
return status;
|
||||
}
|
||||
|
||||
@ -267,7 +267,7 @@
|
||||
case IPV6_2292HOPOPTS:
|
||||
--- a/net/ipv6/ip6_gre.c
|
||||
+++ b/net/ipv6/ip6_gre.c
|
||||
@@ -455,7 +455,7 @@ static void ip6gre_err(struct sk_buff *s
|
||||
@@ -454,7 +454,7 @@ static void ip6gre_err(struct sk_buff *s
|
||||
return;
|
||||
ipv6h = (const struct ipv6hdr *)skb->data;
|
||||
greh = (const struct gre_base_hdr *)(skb->data + offset);
|
||||
|
||||
@ -125,7 +125,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
static inline int mmc_blk_part_switch(struct mmc_card *card,
|
||||
unsigned int part_type);
|
||||
|
||||
@@ -2877,6 +2884,7 @@ static int mmc_blk_probe(struct mmc_card
|
||||
@@ -2893,6 +2900,7 @@ static int mmc_blk_probe(struct mmc_card
|
||||
{
|
||||
struct mmc_blk_data *md, *part_md;
|
||||
char cap_str[10];
|
||||
@ -133,7 +133,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
/*
|
||||
* Check that the card supports the command class(es) we need.
|
||||
@@ -2884,7 +2892,16 @@ static int mmc_blk_probe(struct mmc_card
|
||||
@@ -2900,7 +2908,16 @@ static int mmc_blk_probe(struct mmc_card
|
||||
if (!(card->csd.cmdclass & CCC_BLOCK_READ))
|
||||
return -ENODEV;
|
||||
|
||||
@ -151,7 +151,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
card->complete_wq = alloc_workqueue("mmc_complete",
|
||||
WQ_MEM_RECLAIM | WQ_HIGHPRI, 0);
|
||||
@@ -2899,9 +2916,14 @@ static int mmc_blk_probe(struct mmc_card
|
||||
@@ -2915,9 +2932,14 @@ static int mmc_blk_probe(struct mmc_card
|
||||
|
||||
string_get_size((u64)get_capacity(md->disk), 512, STRING_UNITS_2,
|
||||
cap_str, sizeof(cap_str));
|
||||
|
||||
@ -10,7 +10,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -234,6 +234,10 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -236,6 +236,10 @@ static void xhci_pci_quirks(struct devic
|
||||
pdev->device == 0x3432)
|
||||
xhci->quirks |= XHCI_BROKEN_STREAMS;
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
|
||||
--- a/drivers/usb/host/xhci.c
|
||||
+++ b/drivers/usb/host/xhci.c
|
||||
@@ -1441,6 +1441,103 @@ command_cleanup:
|
||||
@@ -1445,6 +1445,103 @@ command_cleanup:
|
||||
}
|
||||
|
||||
/*
|
||||
@ -119,7 +119,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
* non-error returns are a promise to giveback() the urb later
|
||||
* we drop ownership so next owner (or urb unlink) can get it
|
||||
*/
|
||||
@@ -5240,6 +5337,7 @@ static const struct hc_driver xhci_hc_dr
|
||||
@@ -5252,6 +5349,7 @@ static const struct hc_driver xhci_hc_dr
|
||||
.endpoint_reset = xhci_endpoint_reset,
|
||||
.check_bandwidth = xhci_check_bandwidth,
|
||||
.reset_bandwidth = xhci_reset_bandwidth,
|
||||
|
||||
@ -23,7 +23,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -235,8 +235,10 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -237,8 +237,10 @@ static void xhci_pci_quirks(struct devic
|
||||
xhci->quirks |= XHCI_BROKEN_STREAMS;
|
||||
|
||||
if (pdev->vendor == PCI_VENDOR_ID_VIA &&
|
||||
|
||||
@ -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
|
||||
|
||||
@@ -1221,6 +1224,9 @@
|
||||
@@ -1223,6 +1226,9 @@
|
||||
#define USB_VENDOR_ID_XAT 0x2505
|
||||
#define USB_DEVICE_ID_XAT_CSR 0x0220
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
|
||||
--- a/drivers/usb/host/xhci-mem.c
|
||||
+++ b/drivers/usb/host/xhci-mem.c
|
||||
@@ -2516,9 +2516,11 @@ int xhci_mem_init(struct xhci_hcd *xhci,
|
||||
@@ -2525,9 +2525,11 @@ int xhci_mem_init(struct xhci_hcd *xhci,
|
||||
* Event ring setup: Allocate a normal ring, but also setup
|
||||
* the event ring segment table (ERST). Section 4.9.3.
|
||||
*/
|
||||
@ -36,7 +36,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
if (!xhci->event_ring)
|
||||
goto fail;
|
||||
if (xhci_check_trb_in_td_math(xhci) < 0)
|
||||
@@ -2531,7 +2533,7 @@ int xhci_mem_init(struct xhci_hcd *xhci,
|
||||
@@ -2540,7 +2542,7 @@ int xhci_mem_init(struct xhci_hcd *xhci,
|
||||
/* set ERST count with the number of entries in the segment table */
|
||||
val = readl(&xhci->ir_set->erst_size);
|
||||
val &= ERST_SIZE_MASK;
|
||||
|
||||
@ -90,7 +90,7 @@ it on BCM4708 family.
|
||||
/*
|
||||
* Reset a halted HC.
|
||||
*
|
||||
@@ -603,10 +646,20 @@ static int xhci_init(struct usb_hcd *hcd
|
||||
@@ -607,10 +650,20 @@ static int xhci_init(struct usb_hcd *hcd
|
||||
|
||||
static int xhci_run_finished(struct xhci_hcd *xhci)
|
||||
{
|
||||
@ -114,7 +114,7 @@ it on BCM4708 family.
|
||||
xhci->shared_hcd->state = HC_STATE_RUNNING;
|
||||
xhci->cmd_ring_state = CMD_RING_STATE_RUNNING;
|
||||
|
||||
@@ -616,6 +669,10 @@ static int xhci_run_finished(struct xhci
|
||||
@@ -620,6 +673,10 @@ static int xhci_run_finished(struct xhci
|
||||
xhci_dbg_trace(xhci, trace_xhci_dbg_init,
|
||||
"Finished xhci_run for USB3 roothub");
|
||||
return 0;
|
||||
|
||||
@ -8,7 +8,7 @@ This fixes OpenWrt ticket #1485: https://dev.openwrt.org/ticket/1485
|
||||
---
|
||||
--- a/arch/mips/include/asm/cpu-features.h
|
||||
+++ b/arch/mips/include/asm/cpu-features.h
|
||||
@@ -187,6 +187,9 @@
|
||||
@@ -188,6 +188,9 @@
|
||||
#ifndef cpu_has_local_ebase
|
||||
#define cpu_has_local_ebase 1
|
||||
#endif
|
||||
|
||||
@ -26,7 +26,7 @@
|
||||
obj-$(CONFIG_SPI_DLN2) += spi-dln2.o
|
||||
--- a/include/linux/spi/spi.h
|
||||
+++ b/include/linux/spi/spi.h
|
||||
@@ -818,6 +818,10 @@ struct spi_transfer {
|
||||
@@ -821,6 +821,10 @@ struct spi_transfer {
|
||||
u32 speed_hz;
|
||||
|
||||
struct list_head transfer_list;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/pci/probe.c
|
||||
+++ b/drivers/pci/probe.c
|
||||
@@ -2330,7 +2330,8 @@ static void pcie_write_mrrs(struct pci_d
|
||||
@@ -2331,7 +2331,8 @@ static void pcie_write_mrrs(struct pci_d
|
||||
/* In the "safe" case, do not configure the MRRS. There appear to be
|
||||
* issues with setting MRRS to 0 on a number of devices.
|
||||
*/
|
||||
|
||||
@ -26,7 +26,7 @@
|
||||
obj-$(CONFIG_SPI_DLN2) += spi-dln2.o
|
||||
--- a/include/linux/spi/spi.h
|
||||
+++ b/include/linux/spi/spi.h
|
||||
@@ -814,6 +814,10 @@ struct spi_transfer {
|
||||
@@ -817,6 +817,10 @@ struct spi_transfer {
|
||||
u32 speed_hz;
|
||||
|
||||
struct list_head transfer_list;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/pci/probe.c
|
||||
+++ b/drivers/pci/probe.c
|
||||
@@ -2707,7 +2707,8 @@ static void pcie_write_mrrs(struct pci_d
|
||||
@@ -2708,7 +2708,8 @@ static void pcie_write_mrrs(struct pci_d
|
||||
* In the "safe" case, do not configure the MRRS. There appear to be
|
||||
* issues with setting MRRS to 0 on a number of devices.
|
||||
*/
|
||||
|
||||
@ -21,7 +21,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
|
||||
--- a/drivers/usb/dwc2/core.h
|
||||
+++ b/drivers/usb/dwc2/core.h
|
||||
@@ -777,6 +777,7 @@ struct dwc2_hregs_backup {
|
||||
@@ -779,6 +779,7 @@ struct dwc2_hregs_backup {
|
||||
* @plat: The platform specific configuration data. This can be
|
||||
* removed once all SoCs support usb transceiver.
|
||||
* @supplies: Definition of USB power supplies
|
||||
@ -29,7 +29,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
* @phyif: PHY interface width
|
||||
* @lock: Spinlock that protects all the driver data structures
|
||||
* @priv: Stores a pointer to the struct usb_hcd
|
||||
@@ -914,6 +915,7 @@ struct dwc2_hsotg {
|
||||
@@ -916,6 +917,7 @@ struct dwc2_hsotg {
|
||||
struct usb_phy *uphy;
|
||||
struct dwc2_hsotg_plat *plat;
|
||||
struct regulator_bulk_data supplies[DWC2_NUM_SUPPLIES];
|
||||
|
||||
@ -140,7 +140,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
#endif
|
||||
--- a/net/netfilter/nf_conntrack_standalone.c
|
||||
+++ b/net/netfilter/nf_conntrack_standalone.c
|
||||
@@ -309,10 +309,12 @@ static int ct_seq_show(struct seq_file *
|
||||
@@ -310,10 +310,12 @@ static int ct_seq_show(struct seq_file *
|
||||
WARN_ON(!l4proto);
|
||||
|
||||
ret = -ENOSPC;
|
||||
@ -156,7 +156,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
|
||||
if (l4proto->print_conntrack)
|
||||
l4proto->print_conntrack(s, ct);
|
||||
@@ -339,7 +341,9 @@ static int ct_seq_show(struct seq_file *
|
||||
@@ -340,7 +342,9 @@ static int ct_seq_show(struct seq_file *
|
||||
if (seq_print_acct(s, ct, IP_CT_DIR_REPLY))
|
||||
goto release;
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/net/ipv6/ip6_tunnel.c
|
||||
+++ b/net/ipv6/ip6_tunnel.c
|
||||
@@ -966,7 +966,7 @@ static void init_tel_txopt(struct ipv6_t
|
||||
@@ -965,7 +965,7 @@ static void init_tel_txopt(struct ipv6_t
|
||||
opt->dst_opt[5] = IPV6_TLV_PADN;
|
||||
opt->dst_opt[6] = 1;
|
||||
|
||||
@ -39,7 +39,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
opt->ops.opt_nflen = 8;
|
||||
}
|
||||
|
||||
@@ -1208,7 +1208,7 @@ route_lookup:
|
||||
@@ -1207,7 +1207,7 @@ route_lookup:
|
||||
|
||||
if (encap_limit >= 0) {
|
||||
init_tel_txopt(&opt, encap_limit);
|
||||
|
||||
@ -114,7 +114,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
config MODULES_TREE_LOOKUP
|
||||
--- a/kernel/module.c
|
||||
+++ b/kernel/module.c
|
||||
@@ -3039,9 +3039,11 @@ static struct module *setup_load_info(st
|
||||
@@ -3068,9 +3068,11 @@ static struct module *setup_load_info(st
|
||||
|
||||
static int check_modinfo(struct module *mod, struct load_info *info, int flags)
|
||||
{
|
||||
@ -127,7 +127,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (flags & MODULE_INIT_IGNORE_VERMAGIC)
|
||||
modmagic = NULL;
|
||||
|
||||
@@ -3062,6 +3064,7 @@ static int check_modinfo(struct module *
|
||||
@@ -3091,6 +3093,7 @@ static int check_modinfo(struct module *
|
||||
mod->name);
|
||||
add_taint_module(mod, TAINT_OOT_MODULE, LOCKDEP_STILL_OK);
|
||||
}
|
||||
|
||||
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#endif /* _KOBJECT_H_ */
|
||||
--- a/lib/kobject_uevent.c
|
||||
+++ b/lib/kobject_uevent.c
|
||||
@@ -602,6 +602,43 @@ int add_uevent_var(struct kobj_uevent_en
|
||||
@@ -603,6 +603,43 @@ int add_uevent_var(struct kobj_uevent_en
|
||||
EXPORT_SYMBOL_GPL(add_uevent_var);
|
||||
|
||||
#if defined(CONFIG_NET)
|
||||
|
||||
@ -114,7 +114,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
config MODULES_TREE_LOOKUP
|
||||
--- a/kernel/module.c
|
||||
+++ b/kernel/module.c
|
||||
@@ -3061,9 +3061,11 @@ static int setup_load_info(struct load_i
|
||||
@@ -3090,9 +3090,11 @@ static int setup_load_info(struct load_i
|
||||
|
||||
static int check_modinfo(struct module *mod, struct load_info *info, int flags)
|
||||
{
|
||||
@ -127,7 +127,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (flags & MODULE_INIT_IGNORE_VERMAGIC)
|
||||
modmagic = NULL;
|
||||
|
||||
@@ -3084,6 +3086,7 @@ static int check_modinfo(struct module *
|
||||
@@ -3113,6 +3115,7 @@ static int check_modinfo(struct module *
|
||||
mod->name);
|
||||
add_taint_module(mod, TAINT_OOT_MODULE, LOCKDEP_STILL_OK);
|
||||
}
|
||||
|
||||
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#endif /* _KOBJECT_H_ */
|
||||
--- a/lib/kobject_uevent.c
|
||||
+++ b/lib/kobject_uevent.c
|
||||
@@ -688,6 +688,43 @@ int add_uevent_var(struct kobj_uevent_en
|
||||
@@ -689,6 +689,43 @@ int add_uevent_var(struct kobj_uevent_en
|
||||
EXPORT_SYMBOL_GPL(add_uevent_var);
|
||||
|
||||
#if defined(CONFIG_NET)
|
||||
|
||||
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#endif /* _KOBJECT_H_ */
|
||||
--- a/lib/kobject_uevent.c
|
||||
+++ b/lib/kobject_uevent.c
|
||||
@@ -423,6 +423,43 @@ int add_uevent_var(struct kobj_uevent_en
|
||||
@@ -424,6 +424,43 @@ int add_uevent_var(struct kobj_uevent_en
|
||||
EXPORT_SYMBOL_GPL(add_uevent_var);
|
||||
|
||||
#if defined(CONFIG_NET)
|
||||
|
||||
@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#include <net/net_namespace.h>
|
||||
#ifdef CONFIG_SYSCTL
|
||||
#include <linux/sysctl.h>
|
||||
@@ -381,10 +382,66 @@ static int ct_open(struct inode *inode,
|
||||
@@ -382,10 +383,66 @@ static int ct_open(struct inode *inode,
|
||||
sizeof(struct ct_iter_state));
|
||||
}
|
||||
|
||||
@ -84,7 +84,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release_net,
|
||||
};
|
||||
@@ -488,7 +545,7 @@ static int nf_conntrack_standalone_init_
|
||||
@@ -489,7 +546,7 @@ static int nf_conntrack_standalone_init_
|
||||
kuid_t root_uid;
|
||||
kgid_t root_gid;
|
||||
|
||||
|
||||
@ -143,7 +143,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
}
|
||||
return &ip6n->tnls[prio][h];
|
||||
}
|
||||
@@ -383,6 +394,12 @@ ip6_tnl_dev_uninit(struct net_device *de
|
||||
@@ -382,6 +393,12 @@ ip6_tnl_dev_uninit(struct net_device *de
|
||||
struct net *net = t->net;
|
||||
struct ip6_tnl_net *ip6n = net_generic(net, ip6_tnl_net_id);
|
||||
|
||||
@ -156,7 +156,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
if (dev == ip6n->fb_tnl_dev)
|
||||
RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL);
|
||||
else
|
||||
@@ -779,6 +796,107 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
|
||||
@@ -778,6 +795,107 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ip6_tnl_rcv_ctl);
|
||||
|
||||
@ -264,7 +264,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
static int __ip6_tnl_rcv(struct ip6_tnl *tunnel, struct sk_buff *skb,
|
||||
const struct tnl_ptk_info *tpi,
|
||||
struct metadata_dst *tun_dst,
|
||||
@@ -831,6 +949,27 @@ static int __ip6_tnl_rcv(struct ip6_tnl
|
||||
@@ -830,6 +948,27 @@ static int __ip6_tnl_rcv(struct ip6_tnl
|
||||
skb_reset_network_header(skb);
|
||||
memset(skb->cb, 0, sizeof(struct inet6_skb_parm));
|
||||
|
||||
@ -292,7 +292,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
__skb_tunnel_rx(skb, tunnel->dev, tunnel->net);
|
||||
|
||||
err = dscp_ecn_decapsulate(tunnel, ipv6h, skb);
|
||||
@@ -971,6 +1110,7 @@ static void init_tel_txopt(struct ipv6_t
|
||||
@@ -970,6 +1109,7 @@ static void init_tel_txopt(struct ipv6_t
|
||||
opt->ops.opt_nflen = 8;
|
||||
}
|
||||
|
||||
@ -300,7 +300,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
/**
|
||||
* ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
|
||||
* @t: the outgoing tunnel device
|
||||
@@ -1313,6 +1453,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
@@ -1312,6 +1452,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
{
|
||||
struct ip6_tnl *t = netdev_priv(dev);
|
||||
struct ipv6hdr *ipv6h;
|
||||
@ -308,7 +308,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
int encap_limit = -1;
|
||||
__u16 offset;
|
||||
struct flowi6 fl6;
|
||||
@@ -1380,6 +1521,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
@@ -1379,6 +1520,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
|
||||
dsfield = INET_ECN_encapsulate(dsfield, ipv6_get_dsfield(ipv6h));
|
||||
|
||||
@ -327,7 +327,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
|
||||
return -1;
|
||||
|
||||
@@ -1506,6 +1659,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
|
||||
@@ -1505,6 +1658,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
|
||||
t->parms.link = p->link;
|
||||
t->parms.proto = p->proto;
|
||||
t->parms.fwmark = p->fwmark;
|
||||
@ -342,7 +342,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
dst_cache_reset(&t->dst_cache);
|
||||
ip6_tnl_link_config(t);
|
||||
return 0;
|
||||
@@ -1544,6 +1705,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
|
||||
@@ -1543,6 +1704,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
|
||||
p->flowinfo = u->flowinfo;
|
||||
p->link = u->link;
|
||||
p->proto = u->proto;
|
||||
@ -350,7 +350,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
memcpy(p->name, u->name, sizeof(u->name));
|
||||
}
|
||||
|
||||
@@ -1928,6 +2090,15 @@ static int ip6_tnl_validate(struct nlatt
|
||||
@@ -1927,6 +2089,15 @@ static int ip6_tnl_validate(struct nlatt
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -366,7 +366,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
static void ip6_tnl_netlink_parms(struct nlattr *data[],
|
||||
struct __ip6_tnl_parm *parms)
|
||||
{
|
||||
@@ -1965,6 +2136,46 @@ static void ip6_tnl_netlink_parms(struct
|
||||
@@ -1964,6 +2135,46 @@ static void ip6_tnl_netlink_parms(struct
|
||||
|
||||
if (data[IFLA_IPTUN_FWMARK])
|
||||
parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
|
||||
@ -413,7 +413,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
}
|
||||
|
||||
static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
|
||||
@@ -2080,6 +2291,12 @@ static void ip6_tnl_dellink(struct net_d
|
||||
@@ -2079,6 +2290,12 @@ static void ip6_tnl_dellink(struct net_d
|
||||
|
||||
static size_t ip6_tnl_get_size(const struct net_device *dev)
|
||||
{
|
||||
@ -426,7 +426,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
return
|
||||
/* IFLA_IPTUN_LINK */
|
||||
nla_total_size(4) +
|
||||
@@ -2109,6 +2326,24 @@ static size_t ip6_tnl_get_size(const str
|
||||
@@ -2108,6 +2325,24 @@ static size_t ip6_tnl_get_size(const str
|
||||
nla_total_size(0) +
|
||||
/* IFLA_IPTUN_FWMARK */
|
||||
nla_total_size(4) +
|
||||
@ -451,7 +451,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
0;
|
||||
}
|
||||
|
||||
@@ -2116,6 +2351,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
@@ -2115,6 +2350,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
{
|
||||
struct ip6_tnl *tunnel = netdev_priv(dev);
|
||||
struct __ip6_tnl_parm *parm = &tunnel->parms;
|
||||
@ -461,7 +461,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
|
||||
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
|
||||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
|
||||
@@ -2125,9 +2363,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
@@ -2124,9 +2362,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
|
||||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
|
||||
nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
|
||||
@ -490,7 +490,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
|
||||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
|
||||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
|
||||
@@ -2167,6 +2423,7 @@ static const struct nla_policy ip6_tnl_p
|
||||
@@ -2166,6 +2422,7 @@ static const struct nla_policy ip6_tnl_p
|
||||
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
|
||||
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
|
||||
[IFLA_IPTUN_FWMARK] = { .type = NLA_U32 },
|
||||
|
||||
@ -17,7 +17,7 @@ Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
|
||||
--- a/drivers/mtd/mtdcore.c
|
||||
+++ b/drivers/mtd/mtdcore.c
|
||||
@@ -938,6 +938,44 @@ out_unlock:
|
||||
@@ -941,6 +941,44 @@ out_unlock:
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(get_mtd_device_nm);
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#include <net/net_namespace.h>
|
||||
#ifdef CONFIG_SYSCTL
|
||||
#include <linux/sysctl.h>
|
||||
@@ -433,6 +434,56 @@ static int ct_cpu_seq_show(struct seq_fi
|
||||
@@ -434,6 +435,56 @@ static int ct_cpu_seq_show(struct seq_fi
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -74,7 +74,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static const struct seq_operations ct_cpu_seq_ops = {
|
||||
.start = ct_cpu_seq_start,
|
||||
.next = ct_cpu_seq_next,
|
||||
@@ -446,8 +497,9 @@ static int nf_conntrack_standalone_init_
|
||||
@@ -447,8 +498,9 @@ static int nf_conntrack_standalone_init_
|
||||
kuid_t root_uid;
|
||||
kgid_t root_gid;
|
||||
|
||||
|
||||
@ -143,7 +143,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
}
|
||||
return &ip6n->tnls[prio][h];
|
||||
}
|
||||
@@ -383,6 +394,12 @@ ip6_tnl_dev_uninit(struct net_device *de
|
||||
@@ -382,6 +393,12 @@ ip6_tnl_dev_uninit(struct net_device *de
|
||||
struct net *net = t->net;
|
||||
struct ip6_tnl_net *ip6n = net_generic(net, ip6_tnl_net_id);
|
||||
|
||||
@ -156,7 +156,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
if (dev == ip6n->fb_tnl_dev)
|
||||
RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL);
|
||||
else
|
||||
@@ -772,6 +789,107 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
|
||||
@@ -771,6 +788,107 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ip6_tnl_rcv_ctl);
|
||||
|
||||
@ -264,7 +264,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
static int __ip6_tnl_rcv(struct ip6_tnl *tunnel, struct sk_buff *skb,
|
||||
const struct tnl_ptk_info *tpi,
|
||||
struct metadata_dst *tun_dst,
|
||||
@@ -824,6 +942,27 @@ static int __ip6_tnl_rcv(struct ip6_tnl
|
||||
@@ -823,6 +941,27 @@ static int __ip6_tnl_rcv(struct ip6_tnl
|
||||
skb_reset_network_header(skb);
|
||||
memset(skb->cb, 0, sizeof(struct inet6_skb_parm));
|
||||
|
||||
@ -292,7 +292,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
__skb_tunnel_rx(skb, tunnel->dev, tunnel->net);
|
||||
|
||||
err = dscp_ecn_decapsulate(tunnel, ipv6h, skb);
|
||||
@@ -964,6 +1103,7 @@ static void init_tel_txopt(struct ipv6_t
|
||||
@@ -963,6 +1102,7 @@ static void init_tel_txopt(struct ipv6_t
|
||||
opt->ops.opt_nflen = 8;
|
||||
}
|
||||
|
||||
@ -300,7 +300,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
/**
|
||||
* ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
|
||||
* @t: the outgoing tunnel device
|
||||
@@ -1316,6 +1456,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
@@ -1315,6 +1455,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
{
|
||||
struct ip6_tnl *t = netdev_priv(dev);
|
||||
struct ipv6hdr *ipv6h;
|
||||
@ -308,7 +308,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
int encap_limit = -1;
|
||||
__u16 offset;
|
||||
struct flowi6 fl6;
|
||||
@@ -1381,6 +1522,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
@@ -1380,6 +1521,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
|
||||
dsfield = INET_ECN_encapsulate(dsfield, ipv6_get_dsfield(ipv6h));
|
||||
|
||||
@ -327,7 +327,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
|
||||
return -1;
|
||||
|
||||
@@ -1510,6 +1663,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
|
||||
@@ -1509,6 +1662,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
|
||||
t->parms.link = p->link;
|
||||
t->parms.proto = p->proto;
|
||||
t->parms.fwmark = p->fwmark;
|
||||
@ -342,7 +342,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
dst_cache_reset(&t->dst_cache);
|
||||
ip6_tnl_link_config(t);
|
||||
return 0;
|
||||
@@ -1548,6 +1709,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
|
||||
@@ -1547,6 +1708,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
|
||||
p->flowinfo = u->flowinfo;
|
||||
p->link = u->link;
|
||||
p->proto = u->proto;
|
||||
@ -350,7 +350,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
memcpy(p->name, u->name, sizeof(u->name));
|
||||
}
|
||||
|
||||
@@ -1932,6 +2094,15 @@ static int ip6_tnl_validate(struct nlatt
|
||||
@@ -1931,6 +2093,15 @@ static int ip6_tnl_validate(struct nlatt
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -366,7 +366,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
static void ip6_tnl_netlink_parms(struct nlattr *data[],
|
||||
struct __ip6_tnl_parm *parms)
|
||||
{
|
||||
@@ -1969,6 +2140,46 @@ static void ip6_tnl_netlink_parms(struct
|
||||
@@ -1968,6 +2139,46 @@ static void ip6_tnl_netlink_parms(struct
|
||||
|
||||
if (data[IFLA_IPTUN_FWMARK])
|
||||
parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
|
||||
@ -413,7 +413,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
}
|
||||
|
||||
static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
|
||||
@@ -2084,6 +2295,12 @@ static void ip6_tnl_dellink(struct net_d
|
||||
@@ -2083,6 +2294,12 @@ static void ip6_tnl_dellink(struct net_d
|
||||
|
||||
static size_t ip6_tnl_get_size(const struct net_device *dev)
|
||||
{
|
||||
@ -426,7 +426,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
return
|
||||
/* IFLA_IPTUN_LINK */
|
||||
nla_total_size(4) +
|
||||
@@ -2113,6 +2330,24 @@ static size_t ip6_tnl_get_size(const str
|
||||
@@ -2112,6 +2329,24 @@ static size_t ip6_tnl_get_size(const str
|
||||
nla_total_size(0) +
|
||||
/* IFLA_IPTUN_FWMARK */
|
||||
nla_total_size(4) +
|
||||
@ -451,7 +451,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
0;
|
||||
}
|
||||
|
||||
@@ -2120,6 +2355,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
@@ -2119,6 +2354,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
{
|
||||
struct ip6_tnl *tunnel = netdev_priv(dev);
|
||||
struct __ip6_tnl_parm *parm = &tunnel->parms;
|
||||
@ -461,7 +461,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
|
||||
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
|
||||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
|
||||
@@ -2129,9 +2367,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
@@ -2128,9 +2366,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
|
||||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
|
||||
nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
|
||||
@ -490,7 +490,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
|
||||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
|
||||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
|
||||
@@ -2171,6 +2427,7 @@ static const struct nla_policy ip6_tnl_p
|
||||
@@ -2170,6 +2426,7 @@ static const struct nla_policy ip6_tnl_p
|
||||
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
|
||||
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
|
||||
[IFLA_IPTUN_FWMARK] = { .type = NLA_U32 },
|
||||
|
||||
@ -19,7 +19,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
|
||||
|
||||
--- a/arch/mips/pci/pci-legacy.c
|
||||
+++ b/arch/mips/pci/pci-legacy.c
|
||||
@@ -194,7 +194,7 @@ void register_pci_controller(struct pci_
|
||||
@@ -199,7 +199,7 @@ void register_pci_controller(struct pci_
|
||||
}
|
||||
|
||||
INIT_LIST_HEAD(&hose->list);
|
||||
|
||||
@ -143,7 +143,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
}
|
||||
return &ip6n->tnls[prio][h];
|
||||
}
|
||||
@@ -384,6 +395,12 @@ ip6_tnl_dev_uninit(struct net_device *de
|
||||
@@ -383,6 +394,12 @@ ip6_tnl_dev_uninit(struct net_device *de
|
||||
struct net *net = t->net;
|
||||
struct ip6_tnl_net *ip6n = net_generic(net, ip6_tnl_net_id);
|
||||
|
||||
@ -156,7 +156,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
if (dev == ip6n->fb_tnl_dev)
|
||||
RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL);
|
||||
else
|
||||
@@ -780,6 +797,107 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
|
||||
@@ -779,6 +796,107 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ip6_tnl_rcv_ctl);
|
||||
|
||||
@ -264,7 +264,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
static int __ip6_tnl_rcv(struct ip6_tnl *tunnel, struct sk_buff *skb,
|
||||
const struct tnl_ptk_info *tpi,
|
||||
struct metadata_dst *tun_dst,
|
||||
@@ -832,6 +950,27 @@ static int __ip6_tnl_rcv(struct ip6_tnl
|
||||
@@ -831,6 +949,27 @@ static int __ip6_tnl_rcv(struct ip6_tnl
|
||||
skb_reset_network_header(skb);
|
||||
memset(skb->cb, 0, sizeof(struct inet6_skb_parm));
|
||||
|
||||
@ -292,7 +292,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
__skb_tunnel_rx(skb, tunnel->dev, tunnel->net);
|
||||
|
||||
err = dscp_ecn_decapsulate(tunnel, ipv6h, skb);
|
||||
@@ -970,6 +1109,7 @@ static void init_tel_txopt(struct ipv6_t
|
||||
@@ -969,6 +1108,7 @@ static void init_tel_txopt(struct ipv6_t
|
||||
opt->ops.opt_nflen = 8;
|
||||
}
|
||||
|
||||
@ -300,7 +300,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
/**
|
||||
* ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
|
||||
* @t: the outgoing tunnel device
|
||||
@@ -1308,6 +1448,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
@@ -1307,6 +1447,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
{
|
||||
struct ip6_tnl *t = netdev_priv(dev);
|
||||
struct ipv6hdr *ipv6h;
|
||||
@ -308,7 +308,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
int encap_limit = -1;
|
||||
__u16 offset;
|
||||
struct flowi6 fl6;
|
||||
@@ -1372,6 +1513,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
@@ -1371,6 +1512,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
|
||||
dsfield = INET_ECN_encapsulate(dsfield, ipv6_get_dsfield(ipv6h));
|
||||
|
||||
@ -327,7 +327,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
|
||||
return -1;
|
||||
|
||||
@@ -1497,6 +1650,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
|
||||
@@ -1496,6 +1649,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
|
||||
t->parms.flowinfo = p->flowinfo;
|
||||
t->parms.link = p->link;
|
||||
t->parms.proto = p->proto;
|
||||
@ -342,7 +342,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
dst_cache_reset(&t->dst_cache);
|
||||
ip6_tnl_link_config(t);
|
||||
return 0;
|
||||
@@ -1535,6 +1696,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
|
||||
@@ -1534,6 +1695,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
|
||||
p->flowinfo = u->flowinfo;
|
||||
p->link = u->link;
|
||||
p->proto = u->proto;
|
||||
@ -350,7 +350,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
memcpy(p->name, u->name, sizeof(u->name));
|
||||
}
|
||||
|
||||
@@ -1910,6 +2072,15 @@ static int ip6_tnl_validate(struct nlatt
|
||||
@@ -1909,6 +2071,15 @@ static int ip6_tnl_validate(struct nlatt
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -366,7 +366,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
static void ip6_tnl_netlink_parms(struct nlattr *data[],
|
||||
struct __ip6_tnl_parm *parms)
|
||||
{
|
||||
@@ -1944,6 +2115,46 @@ static void ip6_tnl_netlink_parms(struct
|
||||
@@ -1943,6 +2114,46 @@ static void ip6_tnl_netlink_parms(struct
|
||||
|
||||
if (data[IFLA_IPTUN_COLLECT_METADATA])
|
||||
parms->collect_md = true;
|
||||
@ -413,7 +413,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
}
|
||||
|
||||
static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
|
||||
@@ -2057,6 +2268,12 @@ static void ip6_tnl_dellink(struct net_d
|
||||
@@ -2056,6 +2267,12 @@ static void ip6_tnl_dellink(struct net_d
|
||||
|
||||
static size_t ip6_tnl_get_size(const struct net_device *dev)
|
||||
{
|
||||
@ -426,7 +426,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
return
|
||||
/* IFLA_IPTUN_LINK */
|
||||
nla_total_size(4) +
|
||||
@@ -2084,6 +2301,24 @@ static size_t ip6_tnl_get_size(const str
|
||||
@@ -2083,6 +2300,24 @@ static size_t ip6_tnl_get_size(const str
|
||||
nla_total_size(2) +
|
||||
/* IFLA_IPTUN_COLLECT_METADATA */
|
||||
nla_total_size(0) +
|
||||
@ -451,7 +451,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
0;
|
||||
}
|
||||
|
||||
@@ -2091,6 +2326,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
@@ -2090,6 +2325,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
{
|
||||
struct ip6_tnl *tunnel = netdev_priv(dev);
|
||||
struct __ip6_tnl_parm *parm = &tunnel->parms;
|
||||
@ -461,7 +461,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
|
||||
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
|
||||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
|
||||
@@ -2099,9 +2337,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
@@ -2098,9 +2336,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
nla_put_u8(skb, IFLA_IPTUN_ENCAP_LIMIT, parm->encap_limit) ||
|
||||
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
|
||||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
|
||||
@ -490,7 +490,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
|
||||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
|
||||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
|
||||
@@ -2139,6 +2395,7 @@ static const struct nla_policy ip6_tnl_p
|
||||
@@ -2138,6 +2394,7 @@ static const struct nla_policy ip6_tnl_p
|
||||
[IFLA_IPTUN_ENCAP_SPORT] = { .type = NLA_U16 },
|
||||
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
|
||||
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
|
||||
|
||||
@ -4143,7 +4143,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
+
|
||||
--- a/arch/mips/pci/pci-legacy.c
|
||||
+++ b/arch/mips/pci/pci-legacy.c
|
||||
@@ -311,3 +311,30 @@ char *__init pcibios_setup(char *str)
|
||||
@@ -316,3 +316,30 @@ char *__init pcibios_setup(char *str)
|
||||
return pcibios_plat_setup(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
@ -136,7 +136,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
{
|
||||
--- a/drivers/gpio/gpiolib-sysfs.c
|
||||
+++ b/drivers/gpio/gpiolib-sysfs.c
|
||||
@@ -568,7 +568,7 @@ static struct class gpio_class = {
|
||||
@@ -576,7 +576,7 @@ static struct class gpio_class = {
|
||||
*
|
||||
* Returns zero on success, else an error.
|
||||
*/
|
||||
@ -145,7 +145,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
{
|
||||
struct gpio_chip *chip;
|
||||
struct gpio_device *gdev;
|
||||
@@ -630,6 +630,8 @@ int gpiod_export(struct gpio_desc *desc,
|
||||
@@ -638,6 +638,8 @@ int gpiod_export(struct gpio_desc *desc,
|
||||
offset = gpio_chip_hwgpio(desc);
|
||||
if (chip->names && chip->names[offset])
|
||||
ioname = chip->names[offset];
|
||||
@ -154,7 +154,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
dev = device_create_with_groups(&gpio_class, &gdev->dev,
|
||||
MKDEV(0, 0), data, gpio_groups,
|
||||
@@ -651,6 +653,12 @@ err_unlock:
|
||||
@@ -659,6 +661,12 @@ err_unlock:
|
||||
gpiod_dbg(desc, "%s: status %d\n", __func__, status);
|
||||
return status;
|
||||
}
|
||||
|
||||
@ -528,7 +528,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
reg &= ~DWC3_DCTL_INITU2ENA;
|
||||
--- a/drivers/usb/dwc3/gadget.c
|
||||
+++ b/drivers/usb/dwc3/gadget.c
|
||||
@@ -3231,6 +3231,7 @@ int dwc3_gadget_init(struct dwc3 *dwc)
|
||||
@@ -3241,6 +3241,7 @@ int dwc3_gadget_init(struct dwc3 *dwc)
|
||||
{
|
||||
int ret;
|
||||
int irq;
|
||||
@ -536,7 +536,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
|
||||
irq = dwc3_gadget_get_irq(dwc);
|
||||
if (irq < 0) {
|
||||
@@ -3309,6 +3310,12 @@ int dwc3_gadget_init(struct dwc3 *dwc)
|
||||
@@ -3319,6 +3320,12 @@ int dwc3_gadget_init(struct dwc3 *dwc)
|
||||
|
||||
dwc3_gadget_set_speed(&dwc->gadget, dwc->maximum_speed);
|
||||
|
||||
|
||||
@ -40,7 +40,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
!eth->netdev[mac]))
|
||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
||||
@@ -287,6 +287,7 @@
|
||||
@@ -288,6 +288,7 @@
|
||||
|
||||
/* QDMA descriptor rxd4 */
|
||||
#define RX_DMA_L4_VALID BIT(24)
|
||||
|
||||
@ -86,7 +86,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
const struct of_device_id of_mtk_match[] = {
|
||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
||||
@@ -574,10 +574,13 @@ struct mtk_rx_ring {
|
||||
@@ -575,10 +575,13 @@ struct mtk_rx_ring {
|
||||
* @caps Flags shown the extra capability for the SoC
|
||||
* @required_clks Flags shown the bitmap for required clocks on
|
||||
* the target SoC
|
||||
|
||||
@ -759,7 +759,7 @@
|
||||
!eth->netdev[mac]))
|
||||
goto release_desc;
|
||||
@@ -1044,6 +1067,7 @@ static int mtk_poll_rx(struct napi_struc
|
||||
RX_DMA_VID(trxd.rxd3))
|
||||
(trxd.rxd2 & RX_DMA_VTAG))
|
||||
__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
|
||||
RX_DMA_VID(trxd.rxd3));
|
||||
+
|
||||
@ -1197,7 +1197,7 @@
|
||||
/* QDMA descriptor txd4 */
|
||||
#define TX_DMA_CHKSUM (0x7 << 29)
|
||||
#define TX_DMA_TSO BIT(28)
|
||||
@@ -316,6 +328,8 @@
|
||||
@@ -317,6 +329,8 @@
|
||||
#define MAC_MCR_RX_EN BIT(13)
|
||||
#define MAC_MCR_BACKOFF_EN BIT(9)
|
||||
#define MAC_MCR_BACKPR_EN BIT(8)
|
||||
@ -1206,7 +1206,7 @@
|
||||
#define MAC_MCR_FORCE_RX_FC BIT(5)
|
||||
#define MAC_MCR_FORCE_TX_FC BIT(4)
|
||||
#define MAC_MCR_SPEED_1000 BIT(3)
|
||||
@@ -368,9 +382,11 @@
|
||||
@@ -369,9 +383,11 @@
|
||||
#define ETHSYS_SYSCFG0 0x14
|
||||
#define SYSCFG0_GE_MASK 0x3
|
||||
#define SYSCFG0_GE_MODE(x, y) (x << (12 + (y * 2)))
|
||||
@ -1221,7 +1221,7 @@
|
||||
|
||||
/* ethernet subsystem clock register */
|
||||
#define ETHSYS_CLKCFG0 0x2c
|
||||
@@ -398,6 +414,16 @@
|
||||
@@ -399,6 +415,16 @@
|
||||
#define SGMSYS_QPHY_PWR_STATE_CTRL 0xe8
|
||||
#define SGMII_PHYA_PWD BIT(4)
|
||||
|
||||
@ -1238,7 +1238,7 @@
|
||||
struct mtk_rx_dma {
|
||||
unsigned int rxd1;
|
||||
unsigned int rxd2;
|
||||
@@ -462,15 +488,21 @@ enum mtk_tx_flags {
|
||||
@@ -463,15 +489,21 @@ enum mtk_tx_flags {
|
||||
*/
|
||||
enum mtk_clks_map {
|
||||
MTK_CLK_ETHIF,
|
||||
@ -1260,7 +1260,7 @@
|
||||
MTK_CLK_SGMII_CK,
|
||||
MTK_CLK_ETH2PLL,
|
||||
MTK_CLK_MAX
|
||||
@@ -488,6 +520,22 @@ enum mtk_clks_map {
|
||||
@@ -489,6 +521,22 @@ enum mtk_clks_map {
|
||||
BIT(MTK_CLK_SGMII_CDR_FB) | \
|
||||
BIT(MTK_CLK_SGMII_CK) | \
|
||||
BIT(MTK_CLK_ETH2PLL))
|
||||
@ -1283,7 +1283,7 @@
|
||||
enum mtk_dev_state {
|
||||
MTK_HW_INIT,
|
||||
MTK_RESETTING
|
||||
@@ -557,35 +605,149 @@ struct mtk_rx_ring {
|
||||
@@ -558,35 +606,149 @@ struct mtk_rx_ring {
|
||||
u32 crx_idx_reg;
|
||||
};
|
||||
|
||||
@ -1442,7 +1442,7 @@
|
||||
/* struct mtk_eth - This is the main datasructure for holding the state
|
||||
* of the driver
|
||||
* @dev: The device pointer
|
||||
@@ -601,14 +763,15 @@ struct mtk_soc_data {
|
||||
@@ -602,14 +764,15 @@ struct mtk_soc_data {
|
||||
* @msg_enable: Ethtool msg level
|
||||
* @ethsys: The register map pointing at the range used to setup
|
||||
* MII modes
|
||||
@ -1461,7 +1461,7 @@
|
||||
* @tx_napi: The TX NAPI struct
|
||||
* @rx_napi: The RX NAPI struct
|
||||
* @scratch_ring: Newer SoCs need memory for a second HW managed TX ring
|
||||
@@ -619,13 +782,16 @@ struct mtk_soc_data {
|
||||
@@ -620,13 +783,16 @@ struct mtk_soc_data {
|
||||
* @pending_work: The workqueue used to reset the dma ring
|
||||
* @state: Initialization and runtime state of the device
|
||||
* @soc: Holding specific data among vaious SoCs
|
||||
@ -1478,7 +1478,7 @@
|
||||
spinlock_t rx_irq_lock;
|
||||
struct net_device dummy_dev;
|
||||
struct net_device *netdev[MTK_MAX_DEVS];
|
||||
@@ -634,10 +800,11 @@ struct mtk_eth {
|
||||
@@ -635,10 +801,11 @@ struct mtk_eth {
|
||||
u32 msg_enable;
|
||||
unsigned long sysclk;
|
||||
struct regmap *ethsys;
|
||||
@ -1492,7 +1492,7 @@
|
||||
struct mtk_tx_ring tx_ring;
|
||||
struct mtk_rx_ring rx_ring[MTK_MAX_RX_RING_NUM];
|
||||
struct mtk_rx_ring rx_ring_qdma;
|
||||
@@ -653,6 +820,7 @@ struct mtk_eth {
|
||||
@@ -654,6 +821,7 @@ struct mtk_eth {
|
||||
unsigned long state;
|
||||
|
||||
const struct mtk_soc_data *soc;
|
||||
@ -1500,7 +1500,7 @@
|
||||
};
|
||||
|
||||
/* struct mtk_mac - the structure that holds the info about the MACs of the
|
||||
@@ -664,6 +832,7 @@ struct mtk_eth {
|
||||
@@ -665,6 +833,7 @@ struct mtk_eth {
|
||||
* @hw_stats: Packet statistics counter
|
||||
* @trgmii Indicate if the MAC uses TRGMII connected to internal
|
||||
switch
|
||||
@ -1508,7 +1508,7 @@
|
||||
*/
|
||||
struct mtk_mac {
|
||||
int id;
|
||||
@@ -674,6 +843,7 @@ struct mtk_mac {
|
||||
@@ -675,6 +844,7 @@ struct mtk_mac {
|
||||
__be32 hwlro_ip[MTK_MAX_LRO_IP_CNT];
|
||||
int hwlro_ip_cnt;
|
||||
bool trgmii;
|
||||
@ -1516,7 +1516,7 @@
|
||||
};
|
||||
|
||||
/* the struct describing the SoC. these are declared in the soc_xyz.c files */
|
||||
@@ -685,4 +855,10 @@ void mtk_stats_update_mac(struct mtk_mac
|
||||
@@ -686,4 +856,10 @@ void mtk_stats_update_mac(struct mtk_mac
|
||||
void mtk_w32(struct mtk_eth *eth, u32 val, unsigned reg);
|
||||
u32 mtk_r32(struct mtk_eth *eth, unsigned reg);
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@ Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
|
||||
|
||||
--- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
|
||||
+++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
|
||||
@@ -221,6 +221,11 @@
|
||||
@@ -222,6 +222,11 @@
|
||||
groups = "uart2";
|
||||
function = "uart";
|
||||
};
|
||||
@ -26,7 +26,7 @@ Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
|
||||
};
|
||||
|
||||
nb_pm: syscon@14000 {
|
||||
@@ -253,6 +258,11 @@
|
||||
@@ -254,6 +259,11 @@
|
||||
function = "mii";
|
||||
};
|
||||
|
||||
|
||||
@ -20,7 +20,7 @@ Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
|
||||
|
||||
--- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
|
||||
+++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
|
||||
@@ -235,6 +235,35 @@
|
||||
@@ -236,6 +236,35 @@
|
||||
reg = <0x14000 0x60>;
|
||||
};
|
||||
|
||||
|
||||
@ -21,7 +21,7 @@ Cc: linux-kernel@vger.kernel.org
|
||||
|
||||
--- a/arch/mips/pci/pci-rt2880.c
|
||||
+++ b/arch/mips/pci/pci-rt2880.c
|
||||
@@ -246,6 +246,8 @@ static int rt288x_pci_probe(struct platf
|
||||
@@ -233,6 +233,8 @@ static int rt288x_pci_probe(struct platf
|
||||
rt2880_pci_write_u32(PCI_BASE_ADDRESS_0, 0x08000000);
|
||||
(void) rt2880_pci_read_u32(PCI_BASE_ADDRESS_0);
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
|
||||
power = devm_regulator_get(dev, "vcc");
|
||||
if (IS_ERR(power)) {
|
||||
@@ -1579,6 +1581,18 @@ dm9000_probe(struct platform_device *pde
|
||||
@@ -1581,6 +1583,18 @@ dm9000_probe(struct platform_device *pde
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user