Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
62b3715e6c
@ -6,9 +6,9 @@ ifdef CONFIG_TESTING_KERNEL
|
||||
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
|
||||
endif
|
||||
|
||||
LINUX_VERSION-5.4 = .154
|
||||
LINUX_VERSION-5.4 = .158
|
||||
|
||||
LINUX_KERNEL_HASH-5.4.154 = 058994f4666b6b0474a4d5228583e394594e406783b7e93d487c2a66c35f3c06
|
||||
LINUX_KERNEL_HASH-5.4.158 = 6e018fecdc8fc24553756e582d83b82d65b10a6b03ef36262a24911f839b8d59
|
||||
|
||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
||||
|
@ -21,9 +21,10 @@ boot() {
|
||||
[ -f /proc/mounts ] || /sbin/mount_root
|
||||
[ -f /proc/jffs2_bbc ] && echo "S" > /proc/jffs2_bbc
|
||||
|
||||
mkdir -p /var/run
|
||||
mkdir -p /var/log
|
||||
mkdir -p /var/lock
|
||||
chmod 1777 /var/lock
|
||||
mkdir -p /var/log
|
||||
mkdir -p /var/run
|
||||
mkdir -p /var/state
|
||||
mkdir -p /var/tmp
|
||||
mkdir -p /tmp/.uci
|
||||
|
@ -1,12 +1,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=wireless-regdb
|
||||
PKG_VERSION:=2021.04.21
|
||||
PKG_VERSION:=2021.08.28
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@KERNEL/software/network/wireless-regdb/
|
||||
PKG_HASH:=9e4c02b2a9710df4dbdb327c39612e8cbbae6495987afeddaebab28c1ea3d8fa
|
||||
PKG_HASH:=cff370c410d1e6d316ae0a7fa8ac6278fdf1efca5d3d664aca7cfd2aafa54446
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
|
@ -13,13 +13,11 @@
|
||||
(5735 - 5835 @ 80), (30)
|
||||
# 60 GHz band channels 1,4: 28dBm, channels 2,3: 44dBm
|
||||
# ref: http://www.miit.gov.cn/n11293472/n11505629/n11506593/n11960250/n11960606/n11960700/n12330791.files/n12330790.pdf
|
||||
@@ -1580,13 +1580,13 @@ country UG: DFS-FCC
|
||||
country US: DFS-FCC
|
||||
@@ -1596,12 +1596,12 @@ country US: DFS-FCC
|
||||
(2400 - 2472 @ 40), (30)
|
||||
# 5.15 ~ 5.25 GHz: 30 dBm for master mode, 23 dBm for clients
|
||||
- (5150 - 5250 @ 80), (23), AUTO-BW
|
||||
(5150 - 5250 @ 80), (23), AUTO-BW
|
||||
- (5250 - 5350 @ 80), (23), DFS, AUTO-BW
|
||||
+ (5150 - 5250 @ 80), (30), AUTO-BW
|
||||
+ (5250 - 5350 @ 80), (30), AUTO-BW
|
||||
# This range ends at 5725 MHz, but channel 144 extends to 5730 MHz.
|
||||
# Since 5725 ~ 5730 MHz belongs to the next range which has looser
|
||||
@ -27,6 +25,6 @@
|
||||
# happy and be able to use channel 144.
|
||||
- (5470 - 5730 @ 160), (23), DFS
|
||||
+ (5470 - 5730 @ 160), (30)
|
||||
(5730 - 5850 @ 80), (30)
|
||||
# 60g band
|
||||
# reference: section IV-D https://docs.fcc.gov/public/attachments/FCC-16-89A1.pdf
|
||||
(5730 - 5850 @ 80), (30), AUTO-BW
|
||||
# https://www.federalregister.gov/documents/2021/05/03/2021-08802/use-of-the-5850-5925-ghz-band
|
||||
# max. 33 dBm AP @ 20MHz, 36 dBm AP @ 40Mhz+, 6 dB less for clients
|
||||
|
@ -242,11 +242,11 @@ static int gpio_button_get_value(struct gpio_keys_button_data *bdata)
|
||||
int val;
|
||||
|
||||
if (bdata->can_sleep)
|
||||
val = !!gpio_get_value_cansleep(bdata->b->gpio);
|
||||
val = !!gpiod_get_value_cansleep(bdata->gpiod);
|
||||
else
|
||||
val = !!gpio_get_value(bdata->b->gpio);
|
||||
val = !!gpiod_get_value(bdata->gpiod);
|
||||
|
||||
return val ^ bdata->b->active_low;
|
||||
return val;
|
||||
}
|
||||
|
||||
static void gpio_keys_handle_button(struct gpio_keys_button_data *bdata)
|
||||
@ -365,7 +365,6 @@ gpio_keys_get_devtree_pdata(struct device *dev)
|
||||
struct device_node *node, *pp;
|
||||
struct gpio_keys_platform_data *pdata;
|
||||
struct gpio_keys_button *button;
|
||||
int error;
|
||||
int nbuttons;
|
||||
int i = 0;
|
||||
|
||||
@ -375,14 +374,12 @@ gpio_keys_get_devtree_pdata(struct device *dev)
|
||||
|
||||
nbuttons = of_get_child_count(node);
|
||||
if (nbuttons == 0)
|
||||
return NULL;
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
pdata = devm_kzalloc(dev, sizeof(*pdata) + nbuttons * (sizeof *button),
|
||||
GFP_KERNEL);
|
||||
if (!pdata) {
|
||||
error = -ENOMEM;
|
||||
goto err_out;
|
||||
}
|
||||
if (!pdata)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
pdata->buttons = (struct gpio_keys_button *)(pdata + 1);
|
||||
pdata->nbuttons = nbuttons;
|
||||
@ -391,37 +388,13 @@ gpio_keys_get_devtree_pdata(struct device *dev)
|
||||
of_property_read_u32(node, "poll-interval", &pdata->poll_interval);
|
||||
|
||||
for_each_child_of_node(node, pp) {
|
||||
enum of_gpio_flags flags;
|
||||
|
||||
if (!of_find_property(pp, "gpios", NULL)) {
|
||||
pdata->nbuttons--;
|
||||
dev_warn(dev, "Found button without gpios\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
button = (struct gpio_keys_button *)(&pdata->buttons[i++]);
|
||||
|
||||
button->irq = irq_of_parse_and_map(pp, 0);
|
||||
|
||||
button->gpio = of_get_gpio_flags(pp, 0, &flags);
|
||||
if (button->gpio < 0) {
|
||||
error = button->gpio;
|
||||
if (error != -ENOENT) {
|
||||
if (error != -EPROBE_DEFER)
|
||||
dev_err(dev,
|
||||
"Failed to get gpio flags, error: %d\n",
|
||||
error);
|
||||
return ERR_PTR(error);
|
||||
}
|
||||
} else {
|
||||
button->active_low = !!(flags & OF_GPIO_ACTIVE_LOW);
|
||||
}
|
||||
|
||||
if (of_property_read_u32(pp, "linux,code", &button->code)) {
|
||||
dev_err(dev, "Button without keycode: 0x%x\n",
|
||||
button->gpio);
|
||||
error = -EINVAL;
|
||||
goto err_out;
|
||||
dev_err(dev, "Button node '%s' without keycode\n",
|
||||
pp->full_name);
|
||||
of_node_put(pp);
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
||||
button->desc = of_get_property(pp, "label", NULL);
|
||||
@ -434,17 +407,12 @@ gpio_keys_get_devtree_pdata(struct device *dev)
|
||||
if (of_property_read_u32(pp, "debounce-interval",
|
||||
&button->debounce_interval))
|
||||
button->debounce_interval = 5;
|
||||
}
|
||||
|
||||
if (pdata->nbuttons == 0) {
|
||||
error = -EINVAL;
|
||||
goto err_out;
|
||||
button->irq = irq_of_parse_and_map(pp, 0);
|
||||
button->gpio = -ENOENT; /* mark this as device-tree */
|
||||
}
|
||||
|
||||
return pdata;
|
||||
|
||||
err_out:
|
||||
return ERR_PTR(error);
|
||||
}
|
||||
|
||||
static struct of_device_id gpio_keys_of_match[] = {
|
||||
@ -471,11 +439,12 @@ gpio_keys_get_devtree_pdata(struct device *dev)
|
||||
static int gpio_keys_button_probe(struct platform_device *pdev,
|
||||
struct gpio_keys_button_dev **_bdev, int polled)
|
||||
{
|
||||
struct gpio_keys_platform_data *pdata = pdev->dev.platform_data;
|
||||
struct device *dev = &pdev->dev;
|
||||
struct gpio_keys_platform_data *pdata = dev_get_platdata(dev);
|
||||
struct gpio_keys_button_dev *bdev;
|
||||
struct gpio_keys_button *buttons;
|
||||
int error;
|
||||
struct device_node *prev = NULL;
|
||||
int error = 0;
|
||||
int i;
|
||||
|
||||
if (!pdata) {
|
||||
@ -514,46 +483,67 @@ static int gpio_keys_button_probe(struct platform_device *pdev,
|
||||
for (i = 0; i < pdata->nbuttons; i++) {
|
||||
struct gpio_keys_button *button = &buttons[i];
|
||||
struct gpio_keys_button_data *bdata = &bdev->data[i];
|
||||
unsigned int gpio = button->gpio;
|
||||
const char *desc = button->desc ? button->desc : DRV_NAME;
|
||||
|
||||
if (button->wakeup) {
|
||||
dev_err(dev, "does not support wakeup\n");
|
||||
return -EINVAL;
|
||||
error = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
bdata->map_entry = button_get_index(button->code);
|
||||
if (bdata->map_entry < 0) {
|
||||
dev_warn(dev, "does not support key code:%u\n",
|
||||
dev_err(dev, "does not support key code:%u\n",
|
||||
button->code);
|
||||
continue;
|
||||
error = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!(button->type == 0 || button->type == EV_KEY ||
|
||||
button->type == EV_SW)) {
|
||||
dev_warn(dev, "only supports buttons or switches\n");
|
||||
continue;
|
||||
dev_err(dev, "only supports buttons or switches\n");
|
||||
error = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
error = devm_gpio_request(dev, gpio,
|
||||
button->desc ? button->desc : DRV_NAME);
|
||||
if (error) {
|
||||
dev_err(dev, "unable to claim gpio %u, err=%d\n",
|
||||
gpio, error);
|
||||
return error;
|
||||
}
|
||||
bdata->gpiod = gpio_to_desc(gpio);
|
||||
if (!bdata->gpiod)
|
||||
return -EINVAL;
|
||||
if (gpio_is_valid(button->gpio)) {
|
||||
/* legacy platform data... but is it the lookup table? */
|
||||
bdata->gpiod = devm_gpiod_get_index(dev, desc, i,
|
||||
GPIOD_IN);
|
||||
if (IS_ERR(bdata->gpiod)) {
|
||||
/* or the legacy (button->gpio is good) way? */
|
||||
error = devm_gpio_request_one(dev,
|
||||
button->gpio, GPIOF_IN | (
|
||||
button->active_low ? GPIOF_ACTIVE_LOW :
|
||||
0), desc);
|
||||
if (error) {
|
||||
if (error != -EPROBE_DEFER) {
|
||||
dev_err(dev, "unable to claim gpio %d, err=%d\n",
|
||||
button->gpio, error);
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
|
||||
error = gpio_direction_input(gpio);
|
||||
if (error) {
|
||||
dev_err(dev,
|
||||
"unable to set direction on gpio %u, err=%d\n",
|
||||
gpio, error);
|
||||
return error;
|
||||
bdata->gpiod = gpio_to_desc(button->gpio);
|
||||
}
|
||||
} else {
|
||||
/* Device-tree */
|
||||
struct device_node *child =
|
||||
of_get_next_child(dev->of_node, prev);
|
||||
|
||||
bdata->gpiod = devm_gpiod_get_from_of_node(dev,
|
||||
child, "gpios", 0, GPIOD_IN, desc);
|
||||
|
||||
prev = child;
|
||||
}
|
||||
|
||||
bdata->can_sleep = gpio_cansleep(gpio);
|
||||
if (IS_ERR_OR_NULL(bdata->gpiod)) {
|
||||
error = IS_ERR(bdata->gpiod) ? PTR_ERR(bdata->gpiod) :
|
||||
-EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
bdata->can_sleep = gpiod_cansleep(bdata->gpiod);
|
||||
bdata->last_state = -1; /* Unknown state on boot */
|
||||
|
||||
if (bdev->polled) {
|
||||
@ -584,8 +574,11 @@ static int gpio_keys_button_probe(struct platform_device *pdev,
|
||||
platform_set_drvdata(pdev, bdev);
|
||||
|
||||
*_bdev = bdev;
|
||||
error = 0;
|
||||
|
||||
return 0;
|
||||
out:
|
||||
of_node_put(prev);
|
||||
return error;
|
||||
}
|
||||
|
||||
static int gpio_keys_probe(struct platform_device *pdev)
|
||||
@ -594,9 +587,7 @@ static int gpio_keys_probe(struct platform_device *pdev)
|
||||
struct gpio_keys_button_dev *bdev;
|
||||
int ret, i;
|
||||
|
||||
|
||||
ret = gpio_keys_button_probe(pdev, &bdev, 0);
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -608,12 +599,8 @@ static int gpio_keys_probe(struct platform_device *pdev)
|
||||
|
||||
INIT_DELAYED_WORK(&bdata->work, gpio_keys_irq_work_func);
|
||||
|
||||
if (!bdata->gpiod)
|
||||
continue;
|
||||
|
||||
if (!button->irq) {
|
||||
bdata->irq = gpio_to_irq(button->gpio);
|
||||
|
||||
bdata->irq = gpiod_to_irq(bdata->gpiod);
|
||||
if (bdata->irq < 0) {
|
||||
dev_err(&pdev->dev, "failed to get irq for gpio:%d\n",
|
||||
button->gpio);
|
||||
@ -631,7 +618,6 @@ static int gpio_keys_probe(struct platform_device *pdev)
|
||||
ret = devm_request_threaded_irq(&pdev->dev,
|
||||
bdata->irq, NULL, button_handle_irq,
|
||||
irqflags, dev_name(&pdev->dev), bdata);
|
||||
|
||||
if (ret < 0) {
|
||||
bdata->irq = 0;
|
||||
dev_err(&pdev->dev, "failed to request irq:%d for gpio:%d\n",
|
||||
@ -653,14 +639,12 @@ static int gpio_keys_polled_probe(struct platform_device *pdev)
|
||||
int ret;
|
||||
|
||||
ret = gpio_keys_button_probe(pdev, &bdev, 1);
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
INIT_DELAYED_WORK(&bdev->work, gpio_keys_polled_poll);
|
||||
|
||||
pdata = bdev->pdata;
|
||||
|
||||
if (pdata->enable)
|
||||
pdata->enable(bdev->dev);
|
||||
|
||||
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=libpcap
|
||||
PKG_VERSION:=1.9.1
|
||||
PKG_RELEASE:=3
|
||||
PKG_RELEASE:=3.1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=http://www.us.tcpdump.org/release/ \
|
||||
@ -45,6 +45,19 @@ define Package/libpcap/config
|
||||
source "$(SOURCE)/Config.in"
|
||||
endef
|
||||
|
||||
define Package/rpcapd
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=Capture daemon to be controlled by a remote libpcap application
|
||||
URL:=http://www.tcpdump.org/
|
||||
DEPENDS+= +libpcap
|
||||
endef
|
||||
|
||||
ifdef CONFIG_PACKAGE_rpcapd
|
||||
CMAKE_OPTIONS += \
|
||||
-DENABLE_REMOTE=ON
|
||||
endif
|
||||
|
||||
CMAKE_OPTIONS += \
|
||||
-DBUILD_SHARED_LIBS=ON \
|
||||
-DBUILD_WITH_LIBNL=OFF \
|
||||
@ -84,4 +97,10 @@ define Package/libpcap/install
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcap.so.* $(1)/usr/lib/
|
||||
endef
|
||||
|
||||
define Package/rpcapd/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/rpcapd $(1)/usr/bin/
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,libpcap))
|
||||
$(eval $(call BuildPackage,rpcapd))
|
||||
|
@ -48,7 +48,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
||||
|
||||
#include "xhci.h"
|
||||
#include "xhci-trace.h"
|
||||
@@ -64,6 +66,44 @@
|
||||
@@ -65,6 +67,44 @@
|
||||
#define PCI_DEVICE_ID_ASMEDIA_2142_XHCI 0x2142
|
||||
#define PCI_DEVICE_ID_ASMEDIA_3242_XHCI 0x3242
|
||||
|
||||
@ -93,7 +93,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
||||
static const char hcd_name[] = "xhci_hcd";
|
||||
|
||||
static struct hc_driver __read_mostly xhci_pci_hc_driver;
|
||||
@@ -309,6 +349,873 @@ static void xhci_pme_acpi_rtd3_enable(st
|
||||
@@ -311,6 +351,873 @@ static void xhci_pme_acpi_rtd3_enable(st
|
||||
static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { }
|
||||
#endif /* CONFIG_ACPI */
|
||||
|
||||
@ -967,7 +967,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
||||
/* called during probe() after chip reset completes */
|
||||
static int xhci_pci_setup(struct usb_hcd *hcd)
|
||||
{
|
||||
@@ -350,6 +1257,27 @@ static int xhci_pci_probe(struct pci_dev
|
||||
@@ -352,6 +1259,27 @@ static int xhci_pci_probe(struct pci_dev
|
||||
struct hc_driver *driver;
|
||||
struct usb_hcd *hcd;
|
||||
|
||||
@ -995,7 +995,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
||||
driver = (struct hc_driver *)id->driver_data;
|
||||
|
||||
/* Prevent runtime suspending between USB-2 and USB-3 initialization */
|
||||
@@ -411,6 +1339,16 @@ static void xhci_pci_remove(struct pci_d
|
||||
@@ -413,6 +1341,16 @@ static void xhci_pci_remove(struct pci_d
|
||||
{
|
||||
struct xhci_hcd *xhci;
|
||||
|
||||
@ -1012,7 +1012,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
||||
xhci = hcd_to_xhci(pci_get_drvdata(dev));
|
||||
xhci->xhc_state |= XHCI_STATE_REMOVING;
|
||||
|
||||
@@ -550,6 +1488,11 @@ static int xhci_pci_resume(struct usb_hc
|
||||
@@ -552,6 +1490,11 @@ static int xhci_pci_resume(struct usb_hc
|
||||
if (pdev->vendor == PCI_VENDOR_ID_INTEL)
|
||||
usb_enable_intel_xhci_ports(pdev);
|
||||
|
||||
|
@ -13,7 +13,7 @@ produce a noisy warning.
|
||||
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -288,6 +288,7 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -290,6 +290,7 @@ static void xhci_pci_quirks(struct devic
|
||||
pdev->device == 0x0015) {
|
||||
xhci->quirks |= XHCI_RESET_ON_RESUME;
|
||||
xhci->quirks |= XHCI_ZERO_64B_REGS;
|
||||
|
@ -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
|
||||
@@ -257,6 +257,10 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -259,6 +259,10 @@ static void xhci_pci_quirks(struct devic
|
||||
pdev->device == 0x3432)
|
||||
xhci->quirks |= XHCI_BROKEN_STREAMS;
|
||||
|
||||
|
@ -81,7 +81,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
extern int usb_driver_set_configuration(struct usb_device *udev, int config);
|
||||
--- a/include/linux/usb/hcd.h
|
||||
+++ b/include/linux/usb/hcd.h
|
||||
@@ -384,6 +384,11 @@ struct hc_driver {
|
||||
@@ -382,6 +382,11 @@ struct hc_driver {
|
||||
* or bandwidth constraints.
|
||||
*/
|
||||
void (*reset_bandwidth)(struct usb_hcd *, struct usb_device *);
|
||||
@ -93,7 +93,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
/* Returns the hardware-chosen device address */
|
||||
int (*address_device)(struct usb_hcd *, struct usb_device *udev);
|
||||
/* prepares the hardware to send commands to the device */
|
||||
@@ -445,6 +450,8 @@ extern void usb_hcd_unmap_urb_setup_for_
|
||||
@@ -443,6 +448,8 @@ extern void usb_hcd_unmap_urb_setup_for_
|
||||
extern void usb_hcd_unmap_urb_for_dma(struct usb_hcd *, struct urb *);
|
||||
extern void usb_hcd_flush_endpoint(struct usb_device *udev,
|
||||
struct usb_host_endpoint *ep);
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
|
||||
--- a/drivers/usb/host/xhci.c
|
||||
+++ b/drivers/usb/host/xhci.c
|
||||
@@ -1469,6 +1469,103 @@ command_cleanup:
|
||||
@@ -1468,6 +1468,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
|
||||
*/
|
||||
@@ -5358,6 +5455,7 @@ static const struct hc_driver xhci_hc_dr
|
||||
@@ -5362,6 +5459,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
|
||||
@@ -258,8 +258,10 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -260,8 +260,10 @@ static void xhci_pci_quirks(struct devic
|
||||
xhci->quirks |= XHCI_BROKEN_STREAMS;
|
||||
|
||||
if (pdev->vendor == PCI_VENDOR_ID_VIA &&
|
||||
@ -37,7 +37,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
pdev->device == PCI_DEVICE_ID_ASMEDIA_1042_XHCI)
|
||||
--- a/drivers/usb/host/xhci-ring.c
|
||||
+++ b/drivers/usb/host/xhci-ring.c
|
||||
@@ -550,7 +550,10 @@ void xhci_find_new_dequeue_state(struct
|
||||
@@ -556,7 +556,10 @@ void xhci_find_new_dequeue_state(struct
|
||||
struct xhci_virt_ep *ep = &dev->eps[ep_index];
|
||||
struct xhci_ring *ep_ring;
|
||||
struct xhci_segment *new_seg;
|
||||
@ -48,7 +48,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
dma_addr_t addr;
|
||||
u64 hw_dequeue;
|
||||
bool cycle_found = false;
|
||||
@@ -588,7 +591,28 @@ void xhci_find_new_dequeue_state(struct
|
||||
@@ -594,7 +597,28 @@ void xhci_find_new_dequeue_state(struct
|
||||
hw_dequeue = xhci_get_hw_deq(xhci, dev, ep_index, stream_id);
|
||||
new_seg = ep_ring->deq_seg;
|
||||
new_deq = ep_ring->dequeue;
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
|
||||
#define MAX_TUNING_LOOP 40
|
||||
|
||||
@@ -2762,7 +2762,7 @@ static void sdhci_timeout_timer(struct t
|
||||
@@ -2768,7 +2768,7 @@ static void sdhci_timeout_timer(struct t
|
||||
spin_lock_irqsave(&host->lock, flags);
|
||||
|
||||
if (host->cmd && !sdhci_data_line_cmd(host->cmd)) {
|
||||
@ -31,7 +31,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
mmc_hostname(host->mmc));
|
||||
sdhci_dumpregs(host);
|
||||
|
||||
@@ -2784,7 +2784,7 @@ static void sdhci_timeout_data_timer(str
|
||||
@@ -2790,7 +2790,7 @@ static void sdhci_timeout_data_timer(str
|
||||
|
||||
if (host->data || host->data_cmd ||
|
||||
(host->cmd && sdhci_data_line_cmd(host->cmd))) {
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -261,6 +261,7 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -263,6 +263,7 @@ static void xhci_pci_quirks(struct devic
|
||||
pdev->device == 0x3483) {
|
||||
xhci->quirks |= XHCI_LPM_SUPPORT;
|
||||
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
|
||||
@ -32,7 +32,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
||||
--- a/drivers/usb/host/xhci-ring.c
|
||||
+++ b/drivers/usb/host/xhci-ring.c
|
||||
@@ -647,6 +647,16 @@ void xhci_find_new_dequeue_state(struct
|
||||
@@ -653,6 +653,16 @@ void xhci_find_new_dequeue_state(struct
|
||||
|
||||
} while (!cycle_found || !td_last_trb_found);
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
|
||||
|
||||
RAMFS_COPY_BIN="bcm4908img"
|
||||
RAMFS_COPY_BIN="bcm4908img expr"
|
||||
|
||||
PART_NAME=firmware
|
||||
|
||||
@ -129,7 +129,7 @@ platform_calc_new_cferam() {
|
||||
umount $dir
|
||||
rm -fr $dir
|
||||
|
||||
idx=$(((idx + inc) % 1000))
|
||||
idx=$(($(expr $idx + $inc) % 1000))
|
||||
|
||||
echo $(printf "cferam.%03d" $idx)
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -5423,8 +5423,7 @@ static inline void skb_gro_reset_offset(
|
||||
@@ -5429,8 +5429,7 @@ static inline void skb_gro_reset_offset(
|
||||
NAPI_GRO_CB(skb)->frag0 = NULL;
|
||||
NAPI_GRO_CB(skb)->frag0_len = 0;
|
||||
|
||||
|
@ -24,7 +24,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/mdio.h>
|
||||
#include <linux/io.h>
|
||||
@@ -843,6 +844,9 @@ void phy_stop(struct phy_device *phydev)
|
||||
@@ -863,6 +864,9 @@ void phy_stop(struct phy_device *phydev)
|
||||
|
||||
mutex_lock(&phydev->lock);
|
||||
|
||||
@ -34,7 +34,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||
phydev->state = PHY_HALTED;
|
||||
|
||||
mutex_unlock(&phydev->lock);
|
||||
@@ -905,6 +909,9 @@ void phy_state_machine(struct work_struc
|
||||
@@ -925,6 +929,9 @@ void phy_state_machine(struct work_struc
|
||||
|
||||
old_state = phydev->state;
|
||||
|
||||
|
@ -1,60 +0,0 @@
|
||||
From 07c6f9805f12f1bb538ef165a092b300350384aa Mon Sep 17 00:00:00 2001
|
||||
From: Russell King <rmk+kernel@armlinux.org.uk>
|
||||
Date: Wed, 26 Feb 2020 17:14:21 +0000
|
||||
Subject: [PATCH] net: switchdev: do not propagate bridge updates across
|
||||
bridges
|
||||
|
||||
When configuring a tree of independent bridges, propagating changes
|
||||
from the upper bridge across a bridge master to the lower bridge
|
||||
ports brings surprises.
|
||||
|
||||
For example, a lower bridge may have vlan filtering enabled. It
|
||||
may have a vlan interface attached to the bridge master, which may
|
||||
then be incorporated into another bridge. As soon as the lower
|
||||
bridge vlan interface is attached to the upper bridge, the lower
|
||||
bridge has vlan filtering disabled.
|
||||
|
||||
This occurs because switchdev recursively applies its changes to
|
||||
all lower devices no matter what.
|
||||
|
||||
Reviewed-by: Ido Schimmel <idosch@mellanox.com>
|
||||
Tested-by: Ido Schimmel <idosch@mellanox.com>
|
||||
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
net/switchdev/switchdev.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
--- a/net/switchdev/switchdev.c
|
||||
+++ b/net/switchdev/switchdev.c
|
||||
@@ -476,6 +476,9 @@ static int __switchdev_handle_port_obj_a
|
||||
* necessary to go through this helper.
|
||||
*/
|
||||
netdev_for_each_lower_dev(dev, lower_dev, iter) {
|
||||
+ if (netif_is_bridge_master(lower_dev))
|
||||
+ continue;
|
||||
+
|
||||
err = __switchdev_handle_port_obj_add(lower_dev, port_obj_info,
|
||||
check_cb, add_cb);
|
||||
if (err && err != -EOPNOTSUPP)
|
||||
@@ -528,6 +531,9 @@ static int __switchdev_handle_port_obj_d
|
||||
* necessary to go through this helper.
|
||||
*/
|
||||
netdev_for_each_lower_dev(dev, lower_dev, iter) {
|
||||
+ if (netif_is_bridge_master(lower_dev))
|
||||
+ continue;
|
||||
+
|
||||
err = __switchdev_handle_port_obj_del(lower_dev, port_obj_info,
|
||||
check_cb, del_cb);
|
||||
if (err && err != -EOPNOTSUPP)
|
||||
@@ -579,6 +585,9 @@ static int __switchdev_handle_port_attr_
|
||||
* necessary to go through this helper.
|
||||
*/
|
||||
netdev_for_each_lower_dev(dev, lower_dev, iter) {
|
||||
+ if (netif_is_bridge_master(lower_dev))
|
||||
+ continue;
|
||||
+
|
||||
err = __switchdev_handle_port_attr_set(lower_dev, port_attr_info,
|
||||
check_cb, set_cb);
|
||||
if (err && err != -EOPNOTSUPP)
|
@ -41,9 +41,9 @@ Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
|
||||
struct scsi_vpd *vpd_pg80 = NULL, *vpd_pg83 = NULL;
|
||||
+ struct scsi_vpd *vpd_pg0 = NULL, *vpd_pg89 = NULL;
|
||||
unsigned long flags;
|
||||
struct module *mod;
|
||||
|
||||
sdev = container_of(work, struct scsi_device, ew.work);
|
||||
@@ -466,16 +467,24 @@ static void scsi_device_dev_release_user
|
||||
@@ -469,16 +470,24 @@ static void scsi_device_dev_release_user
|
||||
sdev->request_queue = NULL;
|
||||
|
||||
mutex_lock(&sdev->inquiry_mutex);
|
||||
@ -68,7 +68,7 @@ Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
|
||||
kfree(sdev->inquiry);
|
||||
kfree(sdev);
|
||||
|
||||
@@ -874,6 +883,8 @@ static struct bin_attribute dev_attr_vpd
|
||||
@@ -883,6 +892,8 @@ static struct bin_attribute dev_attr_vpd
|
||||
|
||||
sdev_vpd_pg_attr(pg83);
|
||||
sdev_vpd_pg_attr(pg80);
|
||||
@ -77,7 +77,7 @@ Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
|
||||
|
||||
static ssize_t show_inquiry(struct file *filep, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr,
|
||||
@@ -1206,12 +1217,18 @@ static umode_t scsi_sdev_bin_attr_is_vis
|
||||
@@ -1215,12 +1226,18 @@ static umode_t scsi_sdev_bin_attr_is_vis
|
||||
struct scsi_device *sdev = to_scsi_device(dev);
|
||||
|
||||
|
||||
@ -96,7 +96,7 @@ Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
|
||||
return S_IRUGO;
|
||||
}
|
||||
|
||||
@@ -1254,8 +1271,10 @@ static struct attribute *scsi_sdev_attrs
|
||||
@@ -1263,8 +1280,10 @@ static struct attribute *scsi_sdev_attrs
|
||||
};
|
||||
|
||||
static struct bin_attribute *scsi_sdev_bin_attrs[] = {
|
||||
|
@ -21,7 +21,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
|
||||
--- a/arch/arm/Kconfig
|
||||
+++ b/arch/arm/Kconfig
|
||||
@@ -111,6 +111,7 @@ config ARM
|
||||
@@ -112,6 +112,7 @@ config ARM
|
||||
select HAVE_UID16
|
||||
select HAVE_VIRT_CPU_ACCOUNTING_GEN
|
||||
select IRQ_FORCED_THREADING
|
||||
|
@ -101,7 +101,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
help
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -3192,10 +3192,20 @@ static int xmit_one(struct sk_buff *skb,
|
||||
@@ -3198,10 +3198,20 @@ static int xmit_one(struct sk_buff *skb,
|
||||
if (dev_nit_active(dev))
|
||||
dev_queue_xmit_nit(skb, dev);
|
||||
|
||||
|
@ -110,7 +110,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
return -EINVAL;
|
||||
--- a/net/ipv6/route.c
|
||||
+++ b/net/ipv6/route.c
|
||||
@@ -93,6 +93,8 @@ static int ip6_pkt_discard(struct sk_bu
|
||||
@@ -94,6 +94,8 @@ static int ip6_pkt_discard(struct sk_bu
|
||||
static int ip6_pkt_discard_out(struct net *net, struct sock *sk, struct sk_buff *skb);
|
||||
static int ip6_pkt_prohibit(struct sk_buff *skb);
|
||||
static int ip6_pkt_prohibit_out(struct net *net, struct sock *sk, struct sk_buff *skb);
|
||||
@ -119,7 +119,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
static void ip6_link_failure(struct sk_buff *skb);
|
||||
static void ip6_rt_update_pmtu(struct dst_entry *dst, struct sock *sk,
|
||||
struct sk_buff *skb, u32 mtu,
|
||||
@@ -326,6 +328,18 @@ static const struct rt6_info ip6_prohibi
|
||||
@@ -327,6 +329,18 @@ static const struct rt6_info ip6_prohibi
|
||||
.rt6i_flags = (RTF_REJECT | RTF_NONEXTHOP),
|
||||
};
|
||||
|
||||
@ -138,7 +138,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
static const struct rt6_info ip6_blk_hole_entry_template = {
|
||||
.dst = {
|
||||
.__refcnt = ATOMIC_INIT(1),
|
||||
@@ -1047,6 +1061,7 @@ static const int fib6_prop[RTN_MAX + 1]
|
||||
@@ -1048,6 +1062,7 @@ static const int fib6_prop[RTN_MAX + 1]
|
||||
[RTN_BLACKHOLE] = -EINVAL,
|
||||
[RTN_UNREACHABLE] = -EHOSTUNREACH,
|
||||
[RTN_PROHIBIT] = -EACCES,
|
||||
@ -146,7 +146,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
[RTN_THROW] = -EAGAIN,
|
||||
[RTN_NAT] = -EINVAL,
|
||||
[RTN_XRESOLVE] = -EINVAL,
|
||||
@@ -1084,6 +1099,10 @@ static void ip6_rt_init_dst_reject(struc
|
||||
@@ -1085,6 +1100,10 @@ static void ip6_rt_init_dst_reject(struc
|
||||
rt->dst.output = ip6_pkt_prohibit_out;
|
||||
rt->dst.input = ip6_pkt_prohibit;
|
||||
break;
|
||||
@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
case RTN_THROW:
|
||||
case RTN_UNREACHABLE:
|
||||
default:
|
||||
@@ -4426,6 +4445,17 @@ static int ip6_pkt_prohibit_out(struct n
|
||||
@@ -4434,6 +4453,17 @@ static int ip6_pkt_prohibit_out(struct n
|
||||
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
|
||||
}
|
||||
|
||||
@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
/*
|
||||
* Allocate a dst for local (unicast / anycast) address.
|
||||
*/
|
||||
@@ -4906,7 +4936,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||
@@ -4914,7 +4944,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||
if (rtm->rtm_type == RTN_UNREACHABLE ||
|
||||
rtm->rtm_type == RTN_BLACKHOLE ||
|
||||
rtm->rtm_type == RTN_PROHIBIT ||
|
||||
@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
cfg->fc_flags |= RTF_REJECT;
|
||||
|
||||
if (rtm->rtm_type == RTN_LOCAL)
|
||||
@@ -6029,6 +6060,8 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -6037,6 +6068,8 @@ static int ip6_route_dev_notify(struct n
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
|
||||
@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
|
||||
#endif
|
||||
@@ -6040,6 +6073,7 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -6048,6 +6081,7 @@ static int ip6_route_dev_notify(struct n
|
||||
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
|
||||
@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
|
||||
#endif
|
||||
}
|
||||
@@ -6232,6 +6266,8 @@ static int __net_init ip6_route_net_init
|
||||
@@ -6240,6 +6274,8 @@ static int __net_init ip6_route_net_init
|
||||
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
net->ipv6.fib6_has_custom_rules = false;
|
||||
@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
|
||||
sizeof(*net->ipv6.ip6_prohibit_entry),
|
||||
GFP_KERNEL);
|
||||
@@ -6242,11 +6278,21 @@ static int __net_init ip6_route_net_init
|
||||
@@ -6250,11 +6286,21 @@ static int __net_init ip6_route_net_init
|
||||
ip6_template_metrics, true);
|
||||
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
|
||||
|
||||
@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
|
||||
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
|
||||
ip6_template_metrics, true);
|
||||
@@ -6270,6 +6316,8 @@ out:
|
||||
@@ -6278,6 +6324,8 @@ out:
|
||||
return ret;
|
||||
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
out_ip6_prohibit_entry:
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
out_ip6_null_entry:
|
||||
@@ -6289,6 +6337,7 @@ static void __net_exit ip6_route_net_exi
|
||||
@@ -6297,6 +6345,7 @@ static void __net_exit ip6_route_net_exi
|
||||
kfree(net->ipv6.ip6_null_entry);
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
kfree(net->ipv6.ip6_blk_hole_entry);
|
||||
#endif
|
||||
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
|
||||
@@ -6366,6 +6415,9 @@ void __init ip6_route_init_special_entri
|
||||
@@ -6374,6 +6423,9 @@ void __init ip6_route_init_special_entri
|
||||
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
|
||||
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
|
@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
__u16 tc_index; /* traffic control index */
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -5489,6 +5489,9 @@ static enum gro_result dev_gro_receive(s
|
||||
@@ -5495,6 +5495,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;
|
||||
|
||||
@@ -7291,6 +7294,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
@@ -7297,6 +7300,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,
|
||||
@@ -7341,6 +7386,7 @@ static int __netdev_upper_dev_link(struc
|
||||
@@ -7347,6 +7392,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);
|
||||
@@ -7434,6 +7480,7 @@ void netdev_upper_dev_unlink(struct net_
|
||||
@@ -7440,6 +7486,7 @@ void netdev_upper_dev_unlink(struct net_
|
||||
|
||||
__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);
|
||||
|
||||
@@ -8164,6 +8211,7 @@ int dev_set_mac_address(struct net_devic
|
||||
@@ -8170,6 +8217,7 @@ int dev_set_mac_address(struct net_devic
|
||||
if (err)
|
||||
return err;
|
||||
dev->addr_assign_type = NET_ADDR_SET;
|
||||
|
@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
static int netif_rx_internal(struct sk_buff *skb);
|
||||
static int call_netdevice_notifiers_info(unsigned long val,
|
||||
@@ -5931,6 +5932,11 @@ void __napi_schedule(struct napi_struct
|
||||
@@ -5937,6 +5938,11 @@ void __napi_schedule(struct napi_struct
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
local_irq_save(flags);
|
||||
____napi_schedule(this_cpu_ptr(&softnet_data), n);
|
||||
local_irq_restore(flags);
|
||||
@@ -5982,6 +5988,11 @@ EXPORT_SYMBOL(napi_schedule_prep);
|
||||
@@ -5988,6 +5994,11 @@ EXPORT_SYMBOL(napi_schedule_prep);
|
||||
*/
|
||||
void __napi_schedule_irqoff(struct napi_struct *n)
|
||||
{
|
||||
@ -119,7 +119,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (!IS_ENABLED(CONFIG_PREEMPT_RT))
|
||||
____napi_schedule(this_cpu_ptr(&softnet_data), n);
|
||||
else
|
||||
@@ -6246,9 +6257,89 @@ static void init_gro_hash(struct napi_st
|
||||
@@ -6252,9 +6263,89 @@ static void init_gro_hash(struct napi_st
|
||||
napi->gro_bitmask = 0;
|
||||
}
|
||||
|
||||
@ -209,7 +209,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
INIT_LIST_HEAD(&napi->poll_list);
|
||||
hrtimer_init(&napi->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_PINNED);
|
||||
napi->timer.function = napi_watchdog;
|
||||
@@ -6265,6 +6356,7 @@ void netif_napi_add(struct net_device *d
|
||||
@@ -6271,6 +6362,7 @@ void netif_napi_add(struct net_device *d
|
||||
#ifdef CONFIG_NETPOLL
|
||||
napi->poll_owner = -1;
|
||||
#endif
|
||||
@ -217,7 +217,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
set_bit(NAPI_STATE_SCHED, &napi->state);
|
||||
set_bit(NAPI_STATE_NPSVC, &napi->state);
|
||||
list_add_rcu(&napi->dev_list, &dev->napi_list);
|
||||
@@ -6305,6 +6397,7 @@ static void flush_gro_hash(struct napi_s
|
||||
@@ -6311,6 +6403,7 @@ static void flush_gro_hash(struct napi_s
|
||||
void netif_napi_del(struct napi_struct *napi)
|
||||
{
|
||||
might_sleep();
|
||||
@ -225,7 +225,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (napi_hash_del(napi))
|
||||
synchronize_net();
|
||||
list_del_init(&napi->dev_list);
|
||||
@@ -6317,50 +6410,18 @@ EXPORT_SYMBOL(netif_napi_del);
|
||||
@@ -6323,50 +6416,18 @@ EXPORT_SYMBOL(netif_napi_del);
|
||||
|
||||
static int napi_poll(struct napi_struct *n, struct list_head *repoll)
|
||||
{
|
||||
@ -280,7 +280,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
/* Some drivers may have called napi_schedule
|
||||
* prior to exhausting their budget.
|
||||
@@ -10340,6 +10401,10 @@ static int __init net_dev_init(void)
|
||||
@@ -10346,6 +10407,10 @@ static int __init net_dev_init(void)
|
||||
sd->backlog.weight = weight_p;
|
||||
}
|
||||
|
||||
|
@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#endif /* __LINUX_USB_PCI_QUIRKS_H */
|
||||
--- a/include/linux/usb/hcd.h
|
||||
+++ b/include/linux/usb/hcd.h
|
||||
@@ -485,7 +485,14 @@ extern int usb_hcd_pci_probe(struct pci_
|
||||
@@ -483,7 +483,14 @@ extern int usb_hcd_pci_probe(struct pci_
|
||||
extern void usb_hcd_pci_remove(struct pci_dev *dev);
|
||||
extern void usb_hcd_pci_shutdown(struct pci_dev *dev);
|
||||
|
||||
|
@ -33,7 +33,7 @@ Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>
|
||||
|
||||
--- a/arch/arm/Kconfig
|
||||
+++ b/arch/arm/Kconfig
|
||||
@@ -318,7 +318,7 @@ config ARCH_MULTIPLATFORM
|
||||
@@ -319,7 +319,7 @@ config ARCH_MULTIPLATFORM
|
||||
depends on MMU
|
||||
select ARM_HAS_SG_CHAIN
|
||||
select ARM_PATCH_PHYS_VIRT
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: Adrian Panella <ianchi74@outlook.com>
|
||||
|
||||
--- a/arch/arm/Kconfig
|
||||
+++ b/arch/arm/Kconfig
|
||||
@@ -1827,6 +1827,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
|
||||
@@ -1828,6 +1828,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
|
||||
The command-line arguments provided by the boot loader will be
|
||||
appended to the the device tree bootargs property.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/arch/arm/Kconfig
|
||||
+++ b/arch/arm/Kconfig
|
||||
@@ -1840,6 +1840,14 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_MANGL
|
||||
@@ -1841,6 +1841,14 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_MANGL
|
||||
|
||||
endchoice
|
||||
|
||||
|
@ -16,7 +16,7 @@ Subject: NET: MIPS: lantiq: adds xrx200 ethernet and switch driver
|
||||
|
||||
--- a/drivers/net/ethernet/Kconfig
|
||||
+++ b/drivers/net/ethernet/Kconfig
|
||||
@@ -108,7 +108,13 @@ config LANTIQ_ETOP
|
||||
@@ -109,7 +109,13 @@ config LANTIQ_ETOP
|
||||
tristate "Lantiq SoC ETOP driver"
|
||||
depends on SOC_TYPE_XWAY
|
||||
---help---
|
||||
|
@ -335,7 +335,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com>
|
||||
int is_setup
|
||||
--- a/include/linux/usb/hcd.h
|
||||
+++ b/include/linux/usb/hcd.h
|
||||
@@ -411,7 +411,10 @@ struct hc_driver {
|
||||
@@ -409,7 +409,10 @@ struct hc_driver {
|
||||
int (*find_raw_port_number)(struct usb_hcd *, int);
|
||||
/* Call for power on/off the port if necessary */
|
||||
int (*port_power)(struct usb_hcd *hcd, int portnum, bool enable);
|
||||
@ -347,7 +347,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com>
|
||||
};
|
||||
|
||||
static inline int hcd_giveback_urb_in_bh(struct usb_hcd *hcd)
|
||||
@@ -476,6 +479,14 @@ int usb_hcd_setup_local_mem(struct usb_h
|
||||
@@ -474,6 +477,14 @@ int usb_hcd_setup_local_mem(struct usb_h
|
||||
|
||||
struct platform_device;
|
||||
extern void usb_hcd_platform_shutdown(struct platform_device *dev);
|
||||
|
@ -42,7 +42,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com>
|
||||
retval = xhci_enter_test_mode(xhci, test_mode, wIndex,
|
||||
--- a/drivers/usb/host/xhci-ring.c
|
||||
+++ b/drivers/usb/host/xhci-ring.c
|
||||
@@ -3624,6 +3624,129 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
|
||||
@@ -3630,6 +3630,129 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -174,7 +174,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com>
|
||||
* bursts that are required to move all packets in this TD. Only SuperSpeed
|
||||
--- a/drivers/usb/host/xhci.c
|
||||
+++ b/drivers/usb/host/xhci.c
|
||||
@@ -5385,6 +5385,7 @@ static const struct hc_driver xhci_hc_dr
|
||||
@@ -5389,6 +5389,7 @@ static const struct hc_driver xhci_hc_dr
|
||||
.disable_usb3_lpm_timeout = xhci_disable_usb3_lpm_timeout,
|
||||
.find_raw_port_number = xhci_find_raw_port_number,
|
||||
.clear_tt_buffer_complete = xhci_clear_tt_buffer_complete,
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com>
|
||||
|
||||
--- a/drivers/usb/host/xhci-ring.c
|
||||
+++ b/drivers/usb/host/xhci-ring.c
|
||||
@@ -2091,12 +2091,9 @@ static int process_ctrl_td(struct xhci_h
|
||||
@@ -2097,12 +2097,9 @@ static int process_ctrl_td(struct xhci_h
|
||||
|
||||
switch (trb_comp_code) {
|
||||
case COMP_SUCCESS:
|
||||
|
@ -24,7 +24,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com>
|
||||
|
||||
--- a/drivers/usb/host/xhci.c
|
||||
+++ b/drivers/usb/host/xhci.c
|
||||
@@ -5406,6 +5406,8 @@ void xhci_init_driver(struct hc_driver *
|
||||
@@ -5410,6 +5410,8 @@ void xhci_init_driver(struct hc_driver *
|
||||
drv->check_bandwidth = over->check_bandwidth;
|
||||
if (over->reset_bandwidth)
|
||||
drv->reset_bandwidth = over->reset_bandwidth;
|
||||
|
@ -11,7 +11,7 @@ Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
|
||||
|
||||
--- a/drivers/gpio/gpio-pca953x.c
|
||||
+++ b/drivers/gpio/gpio-pca953x.c
|
||||
@@ -879,10 +879,12 @@ static int pca953x_irq_setup(struct pca9
|
||||
@@ -881,10 +881,12 @@ static int pca953x_irq_setup(struct pca9
|
||||
for (i = 0; i < NBANK(chip); i++)
|
||||
chip->irq_stat[i] &= reg_direction[i];
|
||||
mutex_init(&chip->irq_lock);
|
||||
|
@ -28,7 +28,7 @@ Signed-off-by: Michael Gray <michael.gray@lantisproject.com>
|
||||
|
||||
--- a/arch/arm/Kconfig
|
||||
+++ b/arch/arm/Kconfig
|
||||
@@ -1827,6 +1827,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
|
||||
@@ -1828,6 +1828,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
|
||||
The command-line arguments provided by the boot loader will be
|
||||
appended to the the device tree bootargs property.
|
||||
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: Adrian Panella <ianchi74@outlook.com>
|
||||
|
||||
--- a/arch/arm/Kconfig
|
||||
+++ b/arch/arm/Kconfig
|
||||
@@ -1827,6 +1827,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
|
||||
@@ -1828,6 +1828,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
|
||||
The command-line arguments provided by the boot loader will be
|
||||
appended to the the device tree bootargs property.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/ethernet/Kconfig
|
||||
+++ b/drivers/net/ethernet/Kconfig
|
||||
@@ -159,6 +159,7 @@ source "drivers/net/ethernet/pasemi/Kcon
|
||||
@@ -160,6 +160,7 @@ source "drivers/net/ethernet/pasemi/Kcon
|
||||
source "drivers/net/ethernet/pensando/Kconfig"
|
||||
source "drivers/net/ethernet/qlogic/Kconfig"
|
||||
source "drivers/net/ethernet/qualcomm/Kconfig"
|
||||
|
@ -11,7 +11,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
--- a/drivers/net/phy/phy.c
|
||||
+++ b/drivers/net/phy/phy.c
|
||||
@@ -547,7 +547,10 @@ static int phy_check_link_status(struct
|
||||
@@ -549,7 +549,10 @@ static int phy_check_link_status(struct
|
||||
phy_link_up(phydev);
|
||||
} else if (!phydev->link && phydev->state != PHY_NOLINK) {
|
||||
phydev->state = PHY_NOLINK;
|
||||
@ -23,7 +23,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -927,7 +930,10 @@ void phy_state_machine(struct work_struc
|
||||
@@ -947,7 +950,10 @@ void phy_state_machine(struct work_struc
|
||||
case PHY_HALTED:
|
||||
if (phydev->link) {
|
||||
phydev->link = 0;
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/ethernet/Kconfig
|
||||
+++ b/drivers/net/ethernet/Kconfig
|
||||
@@ -163,6 +163,13 @@ source "drivers/net/ethernet/rdc/Kconfig
|
||||
@@ -164,6 +164,13 @@ source "drivers/net/ethernet/rdc/Kconfig
|
||||
source "drivers/net/ethernet/realtek/Kconfig"
|
||||
source "drivers/net/ethernet/renesas/Kconfig"
|
||||
source "drivers/net/ethernet/rocker/Kconfig"
|
||||
|
Loading…
x
Reference in New Issue
Block a user