mirror of
https://github.com/hanwckf/immortalwrt-mt798x.git
synced 2025-01-09 02:43:53 +08:00
kernel: bump 5.4 to 5.4.58
This PR is a blend of several kernel bumps authored by ldir taken from his staging tree w/ some further adjustments made by me and update_kernel.sh Summary: Deleted upstreamed patches: generic: 742-v5.5-net-sfp-add-support-for-module-quirks.patch 743-v5.5-net-sfp-add-some-quirks-for-GPON-modules.patch bcm63xx: 022-v5.8-mtd-rawnand-brcmnand-correctly-verify-erased-pages.patch 024-v5.8-mtd-rawnand-brcmnand-fix-CS0-layout.patch mediatek: 0402-net-ethernet-mtk_eth_soc-Always-call-mtk_gmac0_rgmii.patch Deleted patches applied differently upstream: generic: 641-sch_cake-fix-IP-protocol-handling-in-the-presence-of.patch Manually merged patches: generic: 395-v5.8-net-sch_cake-Take-advantage-of-skb-hash-where-appropriate.patch bcm27xx: 950-0132-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch layerscape: 701-net-0231-enetc-Use-DT-protocol-information-to-set-up-the-port.patch Build system: x86_64 Build-tested: ath79/generic, bcm27xx/bcm2708, bcm27xx/bcm2711, imx6, mvebu/cortexa9, sunxi/a53 Run-tested: Netgear R7800 (ipq806x) No dmesg regressions, everything functional Signed-off-by: John Audia <graysky@archlinux.us> Tested-By: Lucian Cristian <Lucian.cristian@gmail.com> [mvebu] Tested-By: Curtis Deptuck <curtdept@me.com> [x86/64] [do not remove 395-v5.8-net-sch_cake-Take-advantage-... patch, adjust and refresh patches, adjust commit message] Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> Tested-By: John Audia <graysky@archlinux.us> [ipq806x]
This commit is contained in:
parent
2cac31223d
commit
da98603597
@ -8,11 +8,11 @@ endif
|
|||||||
|
|
||||||
LINUX_VERSION-4.14 = .193
|
LINUX_VERSION-4.14 = .193
|
||||||
LINUX_VERSION-4.19 = .138
|
LINUX_VERSION-4.19 = .138
|
||||||
LINUX_VERSION-5.4 = .52
|
LINUX_VERSION-5.4 = .58
|
||||||
|
|
||||||
LINUX_KERNEL_HASH-4.14.193 = 0b0fb41d4430e1a42738b341cbfd2f41951aa5cd02acabbd53f076119c8b9f03
|
LINUX_KERNEL_HASH-4.14.193 = 0b0fb41d4430e1a42738b341cbfd2f41951aa5cd02acabbd53f076119c8b9f03
|
||||||
LINUX_KERNEL_HASH-4.19.138 = d15c27d05f6c527269b75b30cc72972748e55720e7e00ad8abbaa4fe3b1d5e02
|
LINUX_KERNEL_HASH-4.19.138 = d15c27d05f6c527269b75b30cc72972748e55720e7e00ad8abbaa4fe3b1d5e02
|
||||||
LINUX_KERNEL_HASH-5.4.52 = 037efa531120b1c20ff55e78cd3e17288b1804b3a57dc31de760837b3bea5d3a
|
LINUX_KERNEL_HASH-5.4.58 = 702fe2af119375387b314481b603d8ce71e71b4e5bae4cb70a980e0951b21647
|
||||||
|
|
||||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
||||||
|
@ -48,9 +48,9 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
|||||||
|
|
||||||
#include "xhci.h"
|
#include "xhci.h"
|
||||||
#include "xhci-trace.h"
|
#include "xhci-trace.h"
|
||||||
@@ -57,6 +59,44 @@
|
@@ -60,6 +62,44 @@
|
||||||
#define PCI_DEVICE_ID_AMD_PROMONTORYA_1 0x43bc
|
#define PCI_DEVICE_ID_ASMEDIA_1142_XHCI 0x1242
|
||||||
#define PCI_DEVICE_ID_ASMEDIA_1042A_XHCI 0x1142
|
#define PCI_DEVICE_ID_ASMEDIA_2142_XHCI 0x2142
|
||||||
|
|
||||||
+#define RENESAS_FW_VERSION 0x6C
|
+#define RENESAS_FW_VERSION 0x6C
|
||||||
+#define RENESAS_ROM_CONFIG 0xF0
|
+#define RENESAS_ROM_CONFIG 0xF0
|
||||||
@ -93,7 +93,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
|||||||
static const char hcd_name[] = "xhci_hcd";
|
static const char hcd_name[] = "xhci_hcd";
|
||||||
|
|
||||||
static struct hc_driver __read_mostly xhci_pci_hc_driver;
|
static struct hc_driver __read_mostly xhci_pci_hc_driver;
|
||||||
@@ -284,6 +324,873 @@ static void xhci_pme_acpi_rtd3_enable(st
|
@@ -291,6 +331,873 @@ static void xhci_pme_acpi_rtd3_enable(st
|
||||||
static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { }
|
static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { }
|
||||||
#endif /* CONFIG_ACPI */
|
#endif /* CONFIG_ACPI */
|
||||||
|
|
||||||
@ -967,7 +967,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
|||||||
/* called during probe() after chip reset completes */
|
/* called during probe() after chip reset completes */
|
||||||
static int xhci_pci_setup(struct usb_hcd *hcd)
|
static int xhci_pci_setup(struct usb_hcd *hcd)
|
||||||
{
|
{
|
||||||
@@ -325,6 +1232,27 @@ static int xhci_pci_probe(struct pci_dev
|
@@ -332,6 +1239,27 @@ static int xhci_pci_probe(struct pci_dev
|
||||||
struct hc_driver *driver;
|
struct hc_driver *driver;
|
||||||
struct usb_hcd *hcd;
|
struct usb_hcd *hcd;
|
||||||
|
|
||||||
@ -995,7 +995,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
|||||||
driver = (struct hc_driver *)id->driver_data;
|
driver = (struct hc_driver *)id->driver_data;
|
||||||
|
|
||||||
/* Prevent runtime suspending between USB-2 and USB-3 initialization */
|
/* Prevent runtime suspending between USB-2 and USB-3 initialization */
|
||||||
@@ -386,6 +1314,16 @@ static void xhci_pci_remove(struct pci_d
|
@@ -393,6 +1321,16 @@ static void xhci_pci_remove(struct pci_d
|
||||||
{
|
{
|
||||||
struct xhci_hcd *xhci;
|
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 = hcd_to_xhci(pci_get_drvdata(dev));
|
||||||
xhci->xhc_state |= XHCI_STATE_REMOVING;
|
xhci->xhc_state |= XHCI_STATE_REMOVING;
|
||||||
|
|
||||||
@@ -513,6 +1451,11 @@ static int xhci_pci_resume(struct usb_hc
|
@@ -520,6 +1458,11 @@ static int xhci_pci_resume(struct usb_hc
|
||||||
if (pdev->vendor == PCI_VENDOR_ID_INTEL)
|
if (pdev->vendor == PCI_VENDOR_ID_INTEL)
|
||||||
usb_enable_intel_xhci_ports(pdev);
|
usb_enable_intel_xhci_ports(pdev);
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ produce a noisy warning.
|
|||||||
|
|
||||||
--- a/drivers/usb/host/xhci-pci.c
|
--- a/drivers/usb/host/xhci-pci.c
|
||||||
+++ b/drivers/usb/host/xhci-pci.c
|
+++ b/drivers/usb/host/xhci-pci.c
|
||||||
@@ -275,6 +275,7 @@ static void xhci_pci_quirks(struct devic
|
@@ -278,6 +278,7 @@ static void xhci_pci_quirks(struct devic
|
||||||
pdev->device == 0x0015) {
|
pdev->device == 0x0015) {
|
||||||
xhci->quirks |= XHCI_RESET_ON_RESUME;
|
xhci->quirks |= XHCI_RESET_ON_RESUME;
|
||||||
xhci->quirks |= XHCI_ZERO_64B_REGS;
|
xhci->quirks |= XHCI_ZERO_64B_REGS;
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
|||||||
|
|
||||||
--- a/arch/mips/Kconfig
|
--- a/arch/mips/Kconfig
|
||||||
+++ b/arch/mips/Kconfig
|
+++ b/arch/mips/Kconfig
|
||||||
@@ -295,6 +295,7 @@ config BCM63XX
|
@@ -296,6 +296,7 @@ config BCM63XX
|
||||||
select SYS_HAS_EARLY_PRINTK
|
select SYS_HAS_EARLY_PRINTK
|
||||||
select SWAP_IO_SPACE
|
select SWAP_IO_SPACE
|
||||||
select GPIOLIB
|
select GPIOLIB
|
||||||
|
@ -15,7 +15,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
|||||||
|
|
||||||
--- a/arch/mips/Kconfig
|
--- a/arch/mips/Kconfig
|
||||||
+++ b/arch/mips/Kconfig
|
+++ b/arch/mips/Kconfig
|
||||||
@@ -216,6 +216,8 @@ config ATH79
|
@@ -217,6 +217,8 @@ config ATH79
|
||||||
select SYS_SUPPORTS_BIG_ENDIAN
|
select SYS_SUPPORTS_BIG_ENDIAN
|
||||||
select SYS_SUPPORTS_MIPS16
|
select SYS_SUPPORTS_MIPS16
|
||||||
select SYS_SUPPORTS_ZBOOT_UART_PROM
|
select SYS_SUPPORTS_ZBOOT_UART_PROM
|
||||||
|
@ -556,7 +556,7 @@
|
|||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
--- a/include/net/inet_ecn.h
|
--- a/include/net/inet_ecn.h
|
||||||
+++ b/include/net/inet_ecn.h
|
+++ b/include/net/inet_ecn.h
|
||||||
@@ -139,9 +139,9 @@ static inline int IP6_ECN_set_ce(struct
|
@@ -140,9 +140,9 @@ static inline int IP6_ECN_set_ce(struct
|
||||||
if (INET_ECN_is_not_ect(ipv6_get_dsfield(iph)))
|
if (INET_ECN_is_not_ect(ipv6_get_dsfield(iph)))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -706,7 +706,7 @@
|
|||||||
EXPORT_SYMBOL(xfrm_parse_spi);
|
EXPORT_SYMBOL(xfrm_parse_spi);
|
||||||
--- a/net/ipv4/tcp_input.c
|
--- a/net/ipv4/tcp_input.c
|
||||||
+++ b/net/ipv4/tcp_input.c
|
+++ b/net/ipv4/tcp_input.c
|
||||||
@@ -3968,14 +3968,16 @@ static bool tcp_parse_aligned_timestamp(
|
@@ -3971,14 +3971,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||||
{
|
{
|
||||||
const __be32 *ptr = (const __be32 *)(th + 1);
|
const __be32 *ptr = (const __be32 *)(th + 1);
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
|
|
||||||
--- a/drivers/net/usb/lan78xx.c
|
--- a/drivers/net/usb/lan78xx.c
|
||||||
+++ b/drivers/net/usb/lan78xx.c
|
+++ b/drivers/net/usb/lan78xx.c
|
||||||
@@ -2465,6 +2465,11 @@ static int lan78xx_reset(struct lan78xx_
|
@@ -2461,6 +2461,11 @@ static int lan78xx_reset(struct lan78xx_
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
unsigned long timeout;
|
unsigned long timeout;
|
||||||
u8 sig;
|
u8 sig;
|
||||||
@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
|
|
||||||
ret = lan78xx_read_reg(dev, HW_CFG, &buf);
|
ret = lan78xx_read_reg(dev, HW_CFG, &buf);
|
||||||
buf |= HW_CFG_LRST_;
|
buf |= HW_CFG_LRST_;
|
||||||
@@ -2518,6 +2523,9 @@ static int lan78xx_reset(struct lan78xx_
|
@@ -2514,6 +2519,9 @@ static int lan78xx_reset(struct lan78xx_
|
||||||
|
|
||||||
ret = lan78xx_read_reg(dev, HW_CFG, &buf);
|
ret = lan78xx_read_reg(dev, HW_CFG, &buf);
|
||||||
buf |= HW_CFG_MEF_;
|
buf |= HW_CFG_MEF_;
|
||||||
@ -36,7 +36,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
ret = lan78xx_write_reg(dev, HW_CFG, buf);
|
ret = lan78xx_write_reg(dev, HW_CFG, buf);
|
||||||
|
|
||||||
ret = lan78xx_read_reg(dev, USB_CFG0, &buf);
|
ret = lan78xx_read_reg(dev, USB_CFG0, &buf);
|
||||||
@@ -2573,6 +2581,9 @@ static int lan78xx_reset(struct lan78xx_
|
@@ -2569,6 +2577,9 @@ static int lan78xx_reset(struct lan78xx_
|
||||||
buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_;
|
buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
|
|
||||||
--- a/drivers/net/usb/lan78xx.c
|
--- a/drivers/net/usb/lan78xx.c
|
||||||
+++ b/drivers/net/usb/lan78xx.c
|
+++ b/drivers/net/usb/lan78xx.c
|
||||||
@@ -2647,6 +2647,22 @@ static int lan78xx_open(struct net_devic
|
@@ -2643,6 +2643,22 @@ static int lan78xx_open(struct net_devic
|
||||||
|
|
||||||
netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
|
netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
|||||||
|
|
||||||
--- a/drivers/net/usb/lan78xx.c
|
--- a/drivers/net/usb/lan78xx.c
|
||||||
+++ b/drivers/net/usb/lan78xx.c
|
+++ b/drivers/net/usb/lan78xx.c
|
||||||
@@ -429,6 +429,15 @@ static int msg_level = -1;
|
@@ -425,6 +425,15 @@ static int msg_level = -1;
|
||||||
module_param(msg_level, int, 0);
|
module_param(msg_level, int, 0);
|
||||||
MODULE_PARM_DESC(msg_level, "Override default message level");
|
MODULE_PARM_DESC(msg_level, "Override default message level");
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
|||||||
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
|
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
|
||||||
{
|
{
|
||||||
u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL);
|
u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL);
|
||||||
@@ -2995,8 +3004,14 @@ static int lan78xx_bind(struct lan78xx_n
|
@@ -2925,8 +2934,14 @@ static int lan78xx_bind(struct lan78xx_n
|
||||||
if (DEFAULT_RX_CSUM_ENABLE)
|
if (DEFAULT_RX_CSUM_ENABLE)
|
||||||
dev->net->features |= NETIF_F_RXCSUM;
|
dev->net->features |= NETIF_F_RXCSUM;
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
|
|
||||||
--- a/drivers/net/usb/lan78xx.c
|
--- a/drivers/net/usb/lan78xx.c
|
||||||
+++ b/drivers/net/usb/lan78xx.c
|
+++ b/drivers/net/usb/lan78xx.c
|
||||||
@@ -2179,6 +2179,22 @@ static int lan78xx_phy_init(struct lan78
|
@@ -2175,6 +2175,22 @@ static int lan78xx_phy_init(struct lan78
|
||||||
mii_adv_to_linkmode_adv_t(fc, mii_adv);
|
mii_adv_to_linkmode_adv_t(fc, mii_adv);
|
||||||
linkmode_or(phydev->advertising, fc, phydev->advertising);
|
linkmode_or(phydev->advertising, fc, phydev->advertising);
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
if (phydev->mdio.dev.of_node) {
|
if (phydev->mdio.dev.of_node) {
|
||||||
u32 reg;
|
u32 reg;
|
||||||
int len;
|
int len;
|
||||||
@@ -2656,22 +2672,6 @@ static int lan78xx_open(struct net_devic
|
@@ -2652,22 +2668,6 @@ static int lan78xx_open(struct net_devic
|
||||||
|
|
||||||
netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
|
netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
|
||||||
|
|
||||||
|
@ -13,10 +13,9 @@ See: https://github.com/raspberrypi/linux/issues/2447
|
|||||||
---
|
---
|
||||||
drivers/net/usb/lan78xx.c | 12 +++++++++++-
|
drivers/net/usb/lan78xx.c | 12 +++++++++++-
|
||||||
1 file changed, 11 insertions(+), 1 deletion(-)
|
1 file changed, 11 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
--- a/drivers/net/usb/lan78xx.c
|
--- a/drivers/net/usb/lan78xx.c
|
||||||
+++ b/drivers/net/usb/lan78xx.c
|
+++ b/drivers/net/usb/lan78xx.c
|
||||||
@@ -438,6 +438,11 @@ static bool enable_tso;
|
@@ -434,6 +434,11 @@ static bool enable_tso;
|
||||||
module_param(enable_tso, bool, 0644);
|
module_param(enable_tso, bool, 0644);
|
||||||
MODULE_PARM_DESC(enable_tso, "Enables TCP segmentation offload");
|
MODULE_PARM_DESC(enable_tso, "Enables TCP segmentation offload");
|
||||||
|
|
||||||
@ -28,17 +27,17 @@ See: https://github.com/raspberrypi/linux/issues/2447
|
|||||||
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
|
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
|
||||||
{
|
{
|
||||||
u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL);
|
u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL);
|
||||||
@@ -3819,7 +3824,12 @@ static int lan78xx_probe(struct usb_inte
|
@@ -3768,7 +3773,12 @@ static int lan78xx_probe(struct usb_inte
|
||||||
dev->pipe_intr = usb_rcvintpipe(dev->udev,
|
netdev->max_mtu = MAX_SINGLE_PACKET_SIZE;
|
||||||
dev->ep_intr->desc.bEndpointAddress &
|
netif_set_gso_max_size(netdev, MAX_SINGLE_PACKET_SIZE - MAX_HEADER);
|
||||||
USB_ENDPOINT_NUMBER_MASK);
|
|
||||||
- period = dev->ep_intr->desc.bInterval;
|
- period = ep_intr->desc.bInterval;
|
||||||
+ if (int_urb_interval_ms <= 0)
|
+ if (int_urb_interval_ms <= 0)
|
||||||
+ period = dev->ep_intr->desc.bInterval;
|
+ period = ep_intr->desc.bInterval;
|
||||||
+ else
|
+ else
|
||||||
+ period = int_urb_interval_ms * INT_URB_MICROFRAMES_PER_MS;
|
+ period = int_urb_interval_ms * INT_URB_MICROFRAMES_PER_MS;
|
||||||
+
|
+
|
||||||
+ netif_notice(dev, probe, netdev, "int urb period %d\n", period);
|
+ netif_notice(dev, probe, netdev, "int urb period %d\n", period);
|
||||||
|
|
||||||
maxp = usb_maxpacket(dev->udev, dev->pipe_intr, 0);
|
maxp = usb_maxpacket(dev->udev, dev->pipe_intr, 0);
|
||||||
buf = kmalloc(maxp, GFP_KERNEL);
|
buf = kmalloc(maxp, GFP_KERNEL);
|
||||||
|
if (buf) {
|
||||||
|
@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
|
|
||||||
--- a/drivers/net/usb/lan78xx.c
|
--- a/drivers/net/usb/lan78xx.c
|
||||||
+++ b/drivers/net/usb/lan78xx.c
|
+++ b/drivers/net/usb/lan78xx.c
|
||||||
@@ -2184,7 +2184,7 @@ static int lan78xx_phy_init(struct lan78
|
@@ -2180,7 +2180,7 @@ static int lan78xx_phy_init(struct lan78
|
||||||
mii_adv_to_linkmode_adv_t(fc, mii_adv);
|
mii_adv_to_linkmode_adv_t(fc, mii_adv);
|
||||||
linkmode_or(phydev->advertising, fc, phydev->advertising);
|
linkmode_or(phydev->advertising, fc, phydev->advertising);
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ in both dwc_otg and in ipv6 processing.
|
|||||||
|
|
||||||
--- a/drivers/net/usb/lan78xx.c
|
--- a/drivers/net/usb/lan78xx.c
|
||||||
+++ b/drivers/net/usb/lan78xx.c
|
+++ b/drivers/net/usb/lan78xx.c
|
||||||
@@ -3239,7 +3239,7 @@ static int rx_submit(struct lan78xx_net
|
@@ -3169,7 +3169,7 @@ static int rx_submit(struct lan78xx_net
|
||||||
size_t size = dev->rx_urb_size;
|
size_t size = dev->rx_urb_size;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
|
|
||||||
--- a/drivers/usb/host/xhci-pci.c
|
--- a/drivers/usb/host/xhci-pci.c
|
||||||
+++ b/drivers/usb/host/xhci-pci.c
|
+++ b/drivers/usb/host/xhci-pci.c
|
||||||
@@ -244,6 +244,10 @@ static void xhci_pci_quirks(struct devic
|
@@ -247,6 +247,10 @@ static void xhci_pci_quirks(struct devic
|
||||||
pdev->device == 0x3432)
|
pdev->device == 0x3432)
|
||||||
xhci->quirks |= XHCI_BROKEN_STREAMS;
|
xhci->quirks |= XHCI_BROKEN_STREAMS;
|
||||||
|
|
||||||
@ -19,5 +19,5 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
+ xhci->quirks |= XHCI_LPM_SUPPORT;
|
+ xhci->quirks |= XHCI_LPM_SUPPORT;
|
||||||
+
|
+
|
||||||
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
||||||
pdev->device == 0x1042)
|
pdev->device == PCI_DEVICE_ID_ASMEDIA_1042_XHCI)
|
||||||
xhci->quirks |= XHCI_BROKEN_STREAMS;
|
xhci->quirks |= XHCI_BROKEN_STREAMS;
|
||||||
|
@ -23,7 +23,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
|||||||
|
|
||||||
--- a/drivers/usb/host/xhci-pci.c
|
--- a/drivers/usb/host/xhci-pci.c
|
||||||
+++ b/drivers/usb/host/xhci-pci.c
|
+++ b/drivers/usb/host/xhci-pci.c
|
||||||
@@ -245,8 +245,10 @@ static void xhci_pci_quirks(struct devic
|
@@ -248,8 +248,10 @@ static void xhci_pci_quirks(struct devic
|
||||||
xhci->quirks |= XHCI_BROKEN_STREAMS;
|
xhci->quirks |= XHCI_BROKEN_STREAMS;
|
||||||
|
|
||||||
if (pdev->vendor == PCI_VENDOR_ID_VIA &&
|
if (pdev->vendor == PCI_VENDOR_ID_VIA &&
|
||||||
@ -34,7 +34,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
|||||||
+ }
|
+ }
|
||||||
|
|
||||||
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
||||||
pdev->device == 0x1042)
|
pdev->device == PCI_DEVICE_ID_ASMEDIA_1042_XHCI)
|
||||||
--- a/drivers/usb/host/xhci-ring.c
|
--- a/drivers/usb/host/xhci-ring.c
|
||||||
+++ b/drivers/usb/host/xhci-ring.c
|
+++ b/drivers/usb/host/xhci-ring.c
|
||||||
@@ -527,7 +527,10 @@ void xhci_find_new_dequeue_state(struct
|
@@ -527,7 +527,10 @@ void xhci_find_new_dequeue_state(struct
|
||||||
|
@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
|||||||
#define USB_VENDOR_ID_BELKIN 0x050d
|
#define USB_VENDOR_ID_BELKIN 0x050d
|
||||||
#define USB_DEVICE_ID_FLIP_KVM 0x3201
|
#define USB_DEVICE_ID_FLIP_KVM 0x3201
|
||||||
|
|
||||||
@@ -1234,6 +1237,9 @@
|
@@ -1237,6 +1240,9 @@
|
||||||
#define USB_VENDOR_ID_XAT 0x2505
|
#define USB_VENDOR_ID_XAT 0x2505
|
||||||
#define USB_DEVICE_ID_XAT_CSR 0x0220
|
#define USB_DEVICE_ID_XAT_CSR 0x0220
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
|||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL },
|
||||||
@@ -178,6 +179,7 @@ static const struct hid_device_id hid_qu
|
@@ -179,6 +180,7 @@ static const struct hid_device_id hid_qu
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT },
|
||||||
|
@ -61,7 +61,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
|||||||
#include <linux/clockchips.h>
|
#include <linux/clockchips.h>
|
||||||
#include <linux/clocksource.h>
|
#include <linux/clocksource.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
@@ -899,6 +900,16 @@ static void arch_timer_of_configure_rate
|
@@ -910,6 +911,16 @@ static void arch_timer_of_configure_rate
|
||||||
if (of_property_read_u32(np, "clock-frequency", &arch_timer_rate))
|
if (of_property_read_u32(np, "clock-frequency", &arch_timer_rate))
|
||||||
arch_timer_rate = rate;
|
arch_timer_rate = rate;
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ Link: https://lore.kernel.org/linux-mtd/20200512075733.745374-3-noltari@gmail.co
|
|||||||
|
|
||||||
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
||||||
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
||||||
@@ -1003,33 +1003,30 @@ static int brcmnand_hamming_ooblayout_fr
|
@@ -1004,33 +1004,30 @@ static int brcmnand_hamming_ooblayout_fr
|
||||||
struct brcmnand_cfg *cfg = &host->hwcfg;
|
struct brcmnand_cfg *cfg = &host->hwcfg;
|
||||||
int sas = cfg->spare_area_size << cfg->sector_size_1k;
|
int sas = cfg->spare_area_size << cfg->sector_size_1k;
|
||||||
int sectors = cfg->page_size / (512 << cfg->sector_size_1k);
|
int sectors = cfg->page_size / (512 << cfg->sector_size_1k);
|
||||||
|
@ -1,63 +0,0 @@
|
|||||||
From dcb351c03f2fa6a599de1061b174167e03ee312b Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
|
||||||
Date: Tue, 12 May 2020 10:24:51 +0200
|
|
||||||
Subject: [PATCH] mtd: rawnand: brcmnand: correctly verify erased pages
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
The current code checks that the whole OOB area is erased.
|
|
||||||
This is a problem when JFFS2 cleanmarkers are added to the OOB, since it will
|
|
||||||
fail due to the usable OOB bytes not being 0xff.
|
|
||||||
Correct this by only checking that data and ECC bytes aren't 0xff.
|
|
||||||
|
|
||||||
Fixes: 02b88eea9f9c ("mtd: brcmnand: Add check for erased page bitflips")
|
|
||||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
|
||||||
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
|
||||||
Link: https://lore.kernel.org/linux-mtd/20200512082451.771212-1-noltari@gmail.com
|
|
||||||
---
|
|
||||||
drivers/mtd/nand/raw/brcmnand/brcmnand.c | 19 +++++++++++--------
|
|
||||||
1 file changed, 11 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
|
||||||
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
|
||||||
@@ -1787,28 +1787,31 @@ static int brcmnand_read_by_pio(struct m
|
|
||||||
static int brcmstb_nand_verify_erased_page(struct mtd_info *mtd,
|
|
||||||
struct nand_chip *chip, void *buf, u64 addr)
|
|
||||||
{
|
|
||||||
- int i, sas;
|
|
||||||
- void *oob = chip->oob_poi;
|
|
||||||
+ struct mtd_oob_region ecc;
|
|
||||||
+ int i;
|
|
||||||
int bitflips = 0;
|
|
||||||
int page = addr >> chip->page_shift;
|
|
||||||
int ret;
|
|
||||||
+ void *ecc_bytes;
|
|
||||||
void *ecc_chunk;
|
|
||||||
|
|
||||||
if (!buf)
|
|
||||||
buf = nand_get_data_buf(chip);
|
|
||||||
|
|
||||||
- sas = mtd->oobsize / chip->ecc.steps;
|
|
||||||
-
|
|
||||||
/* read without ecc for verification */
|
|
||||||
ret = chip->ecc.read_page_raw(chip, buf, true, page);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
- for (i = 0; i < chip->ecc.steps; i++, oob += sas) {
|
|
||||||
+ for (i = 0; i < chip->ecc.steps; i++) {
|
|
||||||
ecc_chunk = buf + chip->ecc.size * i;
|
|
||||||
- ret = nand_check_erased_ecc_chunk(ecc_chunk,
|
|
||||||
- chip->ecc.size,
|
|
||||||
- oob, sas, NULL, 0,
|
|
||||||
+
|
|
||||||
+ mtd_ooblayout_ecc(mtd, i, &ecc);
|
|
||||||
+ ecc_bytes = chip->oob_poi + ecc.offset;
|
|
||||||
+
|
|
||||||
+ ret = nand_check_erased_ecc_chunk(ecc_chunk, chip->ecc.size,
|
|
||||||
+ ecc_bytes, ecc.length,
|
|
||||||
+ NULL, 0,
|
|
||||||
chip->ecc.strength);
|
|
||||||
if (ret < 0)
|
|
||||||
return ret;
|
|
@ -1,34 +0,0 @@
|
|||||||
From 3d3fb3c5be9ce07fa85d8f67fb3922e4613b955b Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
|
||||||
Date: Fri, 22 May 2020 14:15:21 +0200
|
|
||||||
Subject: [PATCH] mtd: rawnand: brcmnand: fix CS0 layout
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
Only v3.3-v5.0 have a different CS0 layout.
|
|
||||||
Controllers before v3.3 use the same layout for every CS.
|
|
||||||
|
|
||||||
Fixes: 27c5b17cd1b1 ("mtd: nand: add NAND driver "library" for Broadcom STB NAND controller")
|
|
||||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
|
||||||
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
|
|
||||||
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
|
||||||
Link: https://lore.kernel.org/linux-mtd/20200522121524.4161539-3-noltari@gmail.com
|
|
||||||
---
|
|
||||||
drivers/mtd/nand/raw/brcmnand/brcmnand.c | 5 +++--
|
|
||||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
|
||||||
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
|
|
||||||
@@ -537,8 +537,9 @@ static int brcmnand_revision_init(struct
|
|
||||||
} else {
|
|
||||||
ctrl->cs_offsets = brcmnand_cs_offsets;
|
|
||||||
|
|
||||||
- /* v5.0 and earlier has a different CS0 offset layout */
|
|
||||||
- if (ctrl->nand_version <= 0x0500)
|
|
||||||
+ /* v3.3-5.0 have a different CS0 offset layout */
|
|
||||||
+ if (ctrl->nand_version >= 0x0303 &&
|
|
||||||
+ ctrl->nand_version <= 0x0500)
|
|
||||||
ctrl->cs0_offsets = brcmnand_cs_offsets_cs0;
|
|
||||||
}
|
|
||||||
|
|
@ -69,8 +69,6 @@ Cc: linux-kernel@vger.kernel.org
|
|||||||
create mode 100644 arch/mips/net/bpf_jit.c
|
create mode 100644 arch/mips/net/bpf_jit.c
|
||||||
create mode 100644 arch/mips/net/bpf_jit_asm.S
|
create mode 100644 arch/mips/net/bpf_jit_asm.S
|
||||||
|
|
||||||
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
|
|
||||||
index e5c2d47608fe..33674cdc3aa8 100644
|
|
||||||
--- a/arch/mips/Kconfig
|
--- a/arch/mips/Kconfig
|
||||||
+++ b/arch/mips/Kconfig
|
+++ b/arch/mips/Kconfig
|
||||||
@@ -46,6 +46,7 @@ config MIPS
|
@@ -46,6 +46,7 @@ config MIPS
|
||||||
@ -81,8 +79,6 @@ index e5c2d47608fe..33674cdc3aa8 100644
|
|||||||
select HAVE_EBPF_JIT if 64BIT && !CPU_MICROMIPS && TARGET_ISA_REV >= 2
|
select HAVE_EBPF_JIT if 64BIT && !CPU_MICROMIPS && TARGET_ISA_REV >= 2
|
||||||
select HAVE_CONTEXT_TRACKING
|
select HAVE_CONTEXT_TRACKING
|
||||||
select HAVE_COPY_THREAD_TLS
|
select HAVE_COPY_THREAD_TLS
|
||||||
diff --git a/arch/mips/net/Makefile b/arch/mips/net/Makefile
|
|
||||||
index 2d03af7d6b19..d55912349039 100644
|
|
||||||
--- a/arch/mips/net/Makefile
|
--- a/arch/mips/net/Makefile
|
||||||
+++ b/arch/mips/net/Makefile
|
+++ b/arch/mips/net/Makefile
|
||||||
@@ -1,4 +1,5 @@
|
@@ -1,4 +1,5 @@
|
||||||
@ -91,9 +87,6 @@ index 2d03af7d6b19..d55912349039 100644
|
|||||||
|
|
||||||
+obj-$(CONFIG_MIPS_CBPF_JIT) += bpf_jit.o bpf_jit_asm.o
|
+obj-$(CONFIG_MIPS_CBPF_JIT) += bpf_jit.o bpf_jit_asm.o
|
||||||
obj-$(CONFIG_MIPS_EBPF_JIT) += ebpf_jit.o
|
obj-$(CONFIG_MIPS_EBPF_JIT) += ebpf_jit.o
|
||||||
diff --git a/arch/mips/net/bpf_jit.c b/arch/mips/net/bpf_jit.c
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..3a0e34f4e615
|
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/arch/mips/net/bpf_jit.c
|
+++ b/arch/mips/net/bpf_jit.c
|
||||||
@@ -0,0 +1,1270 @@
|
@@ -0,0 +1,1270 @@
|
||||||
@ -1367,9 +1360,6 @@ index 000000000000..3a0e34f4e615
|
|||||||
+
|
+
|
||||||
+ bpf_prog_unlock_free(fp);
|
+ bpf_prog_unlock_free(fp);
|
||||||
+}
|
+}
|
||||||
diff --git a/arch/mips/net/bpf_jit_asm.S b/arch/mips/net/bpf_jit_asm.S
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..57154c5883b6
|
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/arch/mips/net/bpf_jit_asm.S
|
+++ b/arch/mips/net/bpf_jit_asm.S
|
||||||
@@ -0,0 +1,285 @@
|
@@ -0,0 +1,285 @@
|
||||||
@ -1658,6 +1648,3 @@ index 000000000000..57154c5883b6
|
|||||||
+fault:
|
+fault:
|
||||||
+ jr $r_ra
|
+ jr $r_ra
|
||||||
+ addiu $r_ret, zero, 1
|
+ addiu $r_ret, zero, 1
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
||||||
|
@ -42,11 +42,9 @@ Cc: richard.purdie@linuxfoundation.org
|
|||||||
arch/mips/vdso/Makefile | 1 +
|
arch/mips/vdso/Makefile | 1 +
|
||||||
1 file changed, 1 insertion(+)
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
diff --git a/arch/mips/vdso/Makefile b/arch/mips/vdso/Makefile
|
|
||||||
index aa89a41dc5dd..848baeaef1f8 100644
|
|
||||||
--- a/arch/mips/vdso/Makefile
|
--- a/arch/mips/vdso/Makefile
|
||||||
+++ b/arch/mips/vdso/Makefile
|
+++ b/arch/mips/vdso/Makefile
|
||||||
@@ -33,6 +33,7 @@ endif
|
@@ -29,6 +29,7 @@ endif
|
||||||
cflags-vdso := $(ccflags-vdso) \
|
cflags-vdso := $(ccflags-vdso) \
|
||||||
$(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \
|
$(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \
|
||||||
-O3 -g -fPIC -fno-strict-aliasing -fno-common -fno-builtin -G 0 \
|
-O3 -g -fPIC -fno-strict-aliasing -fno-common -fno-builtin -G 0 \
|
||||||
@ -54,6 +52,3 @@ index aa89a41dc5dd..848baeaef1f8 100644
|
|||||||
-fno-stack-protector -fno-jump-tables -DDISABLE_BRANCH_PROFILING \
|
-fno-stack-protector -fno-jump-tables -DDISABLE_BRANCH_PROFILING \
|
||||||
$(call cc-option, -fno-asynchronous-unwind-tables) \
|
$(call cc-option, -fno-asynchronous-unwind-tables) \
|
||||||
$(call cc-option, -fno-stack-protector)
|
$(call cc-option, -fno-stack-protector)
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
|||||||
+ bool rev = !skb->_nfct, upd = false;
|
+ bool rev = !skb->_nfct, upd = false;
|
||||||
+ __be32 ip;
|
+ __be32 ip;
|
||||||
|
|
||||||
if (tc_skb_protocol(skb) != htons(ETH_P_IP))
|
if (skb_protocol(skb, true) != htons(ETH_P_IP))
|
||||||
- return;
|
- return;
|
||||||
+ return false;
|
+ return false;
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|||||||
#include <linux/rtnetlink.h>
|
#include <linux/rtnetlink.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
|
||||||
@@ -445,45 +446,63 @@ static void sfp_upstream_clear(struct sf
|
@@ -520,45 +521,63 @@ static void sfp_upstream_clear(struct sf
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -53,7 +53,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|||||||
|
|
||||||
--- a/drivers/net/phy/sfp-bus.c
|
--- a/drivers/net/phy/sfp-bus.c
|
||||||
+++ b/drivers/net/phy/sfp-bus.c
|
+++ b/drivers/net/phy/sfp-bus.c
|
||||||
@@ -329,10 +329,19 @@ static void sfp_bus_release(struct kref
|
@@ -404,10 +404,19 @@ static void sfp_bus_release(struct kref
|
||||||
kfree(bus);
|
kfree(bus);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|||||||
|
|
||||||
static int sfp_register_bus(struct sfp_bus *bus)
|
static int sfp_register_bus(struct sfp_bus *bus)
|
||||||
{
|
{
|
||||||
@@ -348,11 +357,11 @@ static int sfp_register_bus(struct sfp_b
|
@@ -423,11 +432,11 @@ static int sfp_register_bus(struct sfp_b
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -88,7 +88,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -446,13 +455,12 @@ static void sfp_upstream_clear(struct sf
|
@@ -521,13 +530,12 @@ static void sfp_upstream_clear(struct sf
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -106,7 +106,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|||||||
*
|
*
|
||||||
* Returns: on success, a pointer to the sfp_bus structure,
|
* Returns: on success, a pointer to the sfp_bus structure,
|
||||||
* %NULL if no SFP is specified,
|
* %NULL if no SFP is specified,
|
||||||
@@ -462,9 +470,7 @@ static void sfp_upstream_clear(struct sf
|
@@ -537,9 +545,7 @@ static void sfp_upstream_clear(struct sf
|
||||||
* %-ENOMEM if we failed to allocate the bus.
|
* %-ENOMEM if we failed to allocate the bus.
|
||||||
* an error from the upstream's connect_phy() method.
|
* an error from the upstream's connect_phy() method.
|
||||||
*/
|
*/
|
||||||
@ -117,7 +117,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|||||||
{
|
{
|
||||||
struct fwnode_reference_args ref;
|
struct fwnode_reference_args ref;
|
||||||
struct sfp_bus *bus;
|
struct sfp_bus *bus;
|
||||||
@@ -482,7 +488,39 @@ struct sfp_bus *sfp_register_upstream_no
|
@@ -557,7 +563,39 @@ struct sfp_bus *sfp_register_upstream_no
|
||||||
if (!bus)
|
if (!bus)
|
||||||
return ERR_PTR(-ENOMEM);
|
return ERR_PTR(-ENOMEM);
|
||||||
|
|
||||||
@ -157,7 +157,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|||||||
bus->upstream_ops = ops;
|
bus->upstream_ops = ops;
|
||||||
bus->upstream = upstream;
|
bus->upstream = upstream;
|
||||||
|
|
||||||
@@ -495,33 +533,33 @@ struct sfp_bus *sfp_register_upstream_no
|
@@ -570,33 +608,33 @@ struct sfp_bus *sfp_register_upstream_no
|
||||||
}
|
}
|
||||||
rtnl_unlock();
|
rtnl_unlock();
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|||||||
|
|
||||||
--- a/drivers/net/phy/sfp-bus.c
|
--- a/drivers/net/phy/sfp-bus.c
|
||||||
+++ b/drivers/net/phy/sfp-bus.c
|
+++ b/drivers/net/phy/sfp-bus.c
|
||||||
@@ -331,7 +331,7 @@ static void sfp_bus_release(struct kref
|
@@ -406,7 +406,7 @@ static void sfp_bus_release(struct kref
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sfp_bus_put() - put a reference on the &struct sfp_bus
|
* sfp_bus_put() - put a reference on the &struct sfp_bus
|
||||||
|
@ -1,111 +0,0 @@
|
|||||||
From 8df5dd55cef48c0769379e04dbc085a899b106d4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Russell King <rmk+kernel@armlinux.org.uk>
|
|
||||||
Date: Fri, 8 Mar 2019 14:02:25 +0000
|
|
||||||
Subject: [PATCH 640/660] net: sfp: add support for module quirks
|
|
||||||
|
|
||||||
Add support for applying module quirks to the list of supported
|
|
||||||
ethtool link modes.
|
|
||||||
|
|
||||||
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|
||||||
---
|
|
||||||
drivers/net/phy/sfp-bus.c | 54 +++++++++++++++++++++++++++++++++++++++
|
|
||||||
1 file changed, 54 insertions(+)
|
|
||||||
|
|
||||||
--- a/drivers/net/phy/sfp-bus.c
|
|
||||||
+++ b/drivers/net/phy/sfp-bus.c
|
|
||||||
@@ -10,6 +10,12 @@
|
|
||||||
|
|
||||||
#include "sfp.h"
|
|
||||||
|
|
||||||
+struct sfp_quirk {
|
|
||||||
+ const char *vendor;
|
|
||||||
+ const char *part;
|
|
||||||
+ void (*modes)(const struct sfp_eeprom_id *id, unsigned long *modes);
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* struct sfp_bus - internal representation of a sfp bus
|
|
||||||
*/
|
|
||||||
@@ -22,6 +28,7 @@ struct sfp_bus {
|
|
||||||
const struct sfp_socket_ops *socket_ops;
|
|
||||||
struct device *sfp_dev;
|
|
||||||
struct sfp *sfp;
|
|
||||||
+ const struct sfp_quirk *sfp_quirk;
|
|
||||||
|
|
||||||
const struct sfp_upstream_ops *upstream_ops;
|
|
||||||
void *upstream;
|
|
||||||
@@ -31,6 +38,46 @@ struct sfp_bus {
|
|
||||||
bool started;
|
|
||||||
};
|
|
||||||
|
|
||||||
+static const struct sfp_quirk sfp_quirks[] = {
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static size_t sfp_strlen(const char *str, size_t maxlen)
|
|
||||||
+{
|
|
||||||
+ size_t size, i;
|
|
||||||
+
|
|
||||||
+ /* Trailing characters should be filled with space chars */
|
|
||||||
+ for (i = 0, size = 0; i < maxlen; i++)
|
|
||||||
+ if (str[i] != ' ')
|
|
||||||
+ size = i + 1;
|
|
||||||
+
|
|
||||||
+ return size;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static bool sfp_match(const char *qs, const char *str, size_t len)
|
|
||||||
+{
|
|
||||||
+ if (!qs)
|
|
||||||
+ return true;
|
|
||||||
+ if (strlen(qs) != len)
|
|
||||||
+ return false;
|
|
||||||
+ return !strncmp(qs, str, len);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static const struct sfp_quirk *sfp_lookup_quirk(const struct sfp_eeprom_id *id)
|
|
||||||
+{
|
|
||||||
+ const struct sfp_quirk *q;
|
|
||||||
+ unsigned int i;
|
|
||||||
+ size_t vs, ps;
|
|
||||||
+
|
|
||||||
+ vs = sfp_strlen(id->base.vendor_name, ARRAY_SIZE(id->base.vendor_name));
|
|
||||||
+ ps = sfp_strlen(id->base.vendor_pn, ARRAY_SIZE(id->base.vendor_pn));
|
|
||||||
+
|
|
||||||
+ for (i = 0, q = sfp_quirks; i < ARRAY_SIZE(sfp_quirks); i++, q++)
|
|
||||||
+ if (sfp_match(q->vendor, id->base.vendor_name, vs) &&
|
|
||||||
+ sfp_match(q->part, id->base.vendor_pn, ps))
|
|
||||||
+ return q;
|
|
||||||
+
|
|
||||||
+ return NULL;
|
|
||||||
+}
|
|
||||||
/**
|
|
||||||
* sfp_parse_port() - Parse the EEPROM base ID, setting the port type
|
|
||||||
* @bus: a pointer to the &struct sfp_bus structure for the sfp module
|
|
||||||
@@ -234,6 +281,9 @@ void sfp_parse_support(struct sfp_bus *b
|
|
||||||
phylink_set(modes, 1000baseX_Full);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (bus->sfp_quirk)
|
|
||||||
+ bus->sfp_quirk->modes(id, modes);
|
|
||||||
+
|
|
||||||
bitmap_or(support, support, modes, __ETHTOOL_LINK_MODE_MASK_NBITS);
|
|
||||||
|
|
||||||
phylink_set(support, Autoneg);
|
|
||||||
@@ -610,6 +660,8 @@ int sfp_module_insert(struct sfp_bus *bu
|
|
||||||
const struct sfp_upstream_ops *ops = sfp_get_upstream_ops(bus);
|
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
+ bus->sfp_quirk = sfp_lookup_quirk(id);
|
|
||||||
+
|
|
||||||
if (ops && ops->module_insert)
|
|
||||||
ret = ops->module_insert(bus->upstream, id);
|
|
||||||
|
|
||||||
@@ -623,6 +675,8 @@ void sfp_module_remove(struct sfp_bus *b
|
|
||||||
|
|
||||||
if (ops && ops->module_remove)
|
|
||||||
ops->module_remove(bus->upstream);
|
|
||||||
+
|
|
||||||
+ bus->sfp_quirk = NULL;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(sfp_module_remove);
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
|||||||
From ecaa542cfed078dbc356dadff0bad4b6a8e704a0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Russell King <rmk+kernel@armlinux.org.uk>
|
|
||||||
Date: Fri, 17 May 2019 10:14:45 +0100
|
|
||||||
Subject: [PATCH 641/660] net: sfp: add some quirks for GPON modules
|
|
||||||
|
|
||||||
Marc Micalizzi reports that Huawei MA5671A and Alcatel/Lucent G-010S-P
|
|
||||||
modules are capable of 2500base-X, but incorrectly report their
|
|
||||||
capabilities in the EEPROM. It seems rather common that GPON modules
|
|
||||||
mis-report.
|
|
||||||
|
|
||||||
Let's fix these modules by adding some quirks.
|
|
||||||
|
|
||||||
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|
||||||
---
|
|
||||||
drivers/net/phy/sfp-bus.c | 25 +++++++++++++++++++++++++
|
|
||||||
1 file changed, 25 insertions(+)
|
|
||||||
|
|
||||||
--- a/drivers/net/phy/sfp-bus.c
|
|
||||||
+++ b/drivers/net/phy/sfp-bus.c
|
|
||||||
@@ -38,7 +38,32 @@ struct sfp_bus {
|
|
||||||
bool started;
|
|
||||||
};
|
|
||||||
|
|
||||||
+static void sfp_quirk_2500basex(const struct sfp_eeprom_id *id,
|
|
||||||
+ unsigned long *modes)
|
|
||||||
+{
|
|
||||||
+ phylink_set(modes, 2500baseX_Full);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static const struct sfp_quirk sfp_quirks[] = {
|
|
||||||
+ {
|
|
||||||
+ // Alcatel Lucent G-010S-P can operate at 2500base-X, but
|
|
||||||
+ // incorrectly report 2500MBd NRZ in their EEPROM
|
|
||||||
+ .vendor = "ALCATELLUCENT",
|
|
||||||
+ .part = "G010SP",
|
|
||||||
+ .modes = sfp_quirk_2500basex,
|
|
||||||
+ }, {
|
|
||||||
+ // Alcatel Lucent G-010S-A can operate at 2500base-X, but
|
|
||||||
+ // report 3.2GBd NRZ in their EEPROM
|
|
||||||
+ .vendor = "ALCATELLUCENT",
|
|
||||||
+ .part = "3FE46541AA",
|
|
||||||
+ .modes = sfp_quirk_2500basex,
|
|
||||||
+ }, {
|
|
||||||
+ // Huawei MA5671A can operate at 2500base-X, but report 1.2GBd
|
|
||||||
+ // NRZ in their EEPROM
|
|
||||||
+ .vendor = "HUAWEI",
|
|
||||||
+ .part = "MA5671A",
|
|
||||||
+ .modes = sfp_quirk_2500basex,
|
|
||||||
+ },
|
|
||||||
};
|
|
||||||
|
|
||||||
static size_t sfp_strlen(const char *str, size_t maxlen)
|
|
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
/* Align . to a 8 byte boundary equals to maximum function alignment. */
|
/* Align . to a 8 byte boundary equals to maximum function alignment. */
|
||||||
#define ALIGN_FUNCTION() . = ALIGN(8)
|
#define ALIGN_FUNCTION() . = ALIGN(8)
|
||||||
|
|
||||||
@@ -405,14 +415,14 @@
|
@@ -406,14 +416,14 @@
|
||||||
/* Kernel symbol table: Normal symbols */ \
|
/* Kernel symbol table: Normal symbols */ \
|
||||||
__ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
|
__ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
|
||||||
__start___ksymtab = .; \
|
__start___ksymtab = .; \
|
||||||
@ -47,7 +47,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
__stop___ksymtab_gpl = .; \
|
__stop___ksymtab_gpl = .; \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
@@ -474,7 +484,7 @@
|
@@ -475,7 +485,7 @@
|
||||||
\
|
\
|
||||||
/* Kernel symbol table: strings */ \
|
/* Kernel symbol table: strings */ \
|
||||||
__ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
|
__ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
|
||||||
@ -56,7 +56,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
/* __*init sections */ \
|
/* __*init sections */ \
|
||||||
@@ -881,6 +891,8 @@
|
@@ -884,6 +894,8 @@
|
||||||
EXIT_TEXT \
|
EXIT_TEXT \
|
||||||
EXIT_DATA \
|
EXIT_DATA \
|
||||||
EXIT_CALL \
|
EXIT_CALL \
|
||||||
|
@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|||||||
|
|
||||||
--- a/arch/mips/Kconfig
|
--- a/arch/mips/Kconfig
|
||||||
+++ b/arch/mips/Kconfig
|
+++ b/arch/mips/Kconfig
|
||||||
@@ -1156,6 +1156,10 @@ config SYNC_R4K
|
@@ -1157,6 +1157,10 @@ config SYNC_R4K
|
||||||
config MIPS_MACHINE
|
config MIPS_MACHINE
|
||||||
def_bool n
|
def_bool n
|
||||||
|
|
||||||
|
@ -1,114 +0,0 @@
|
|||||||
From a00590d570212c3c633bd463cef8ec7377cc7993 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
|
||||||
Date: Tue, 30 Jun 2020 12:07:44 +0100
|
|
||||||
Subject: [PATCH] sch_cake: fix IP protocol handling in the presence of VLAN
|
|
||||||
tags
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
From: Ilya Ponetayev <i.ponetaev@ndmsystems.com>
|
|
||||||
|
|
||||||
CAKE was using the return value of tc_skb_protocol() and expecting it to be
|
|
||||||
the IP protocol type. This can fail in the presence of QinQ VLAN tags,
|
|
||||||
making CAKE unable to handle ECN marking and diffserv parsing in this case.
|
|
||||||
Fix this by implementing our own version of tc_skb_protocol(), which will
|
|
||||||
use skb->protocol directly, but also parse and skip over any VLAN tags and
|
|
||||||
return the inner protocol number instead.
|
|
||||||
|
|
||||||
Also fix CE marking by implementing a version of INET_ECN_set_ce() that
|
|
||||||
uses the same parsing routine.
|
|
||||||
|
|
||||||
Fixes: ea82511518f4 ("sch_cake: Add NAT awareness to packet classifier")
|
|
||||||
Fixes: b2100cc56fca ("sch_cake: Use tc_skb_protocol() helper for getting packet protocol")
|
|
||||||
Fixes: 046f6fd5daef ("sched: Add Common Applications Kept Enhanced (cake) qdisc")
|
|
||||||
Signed-off-by: Ilya Ponetayev <i.ponetaev@ndmsystems.com>
|
|
||||||
[ squash original two patches, rewrite commit message ]
|
|
||||||
Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
|
|
||||||
Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
|
||||||
---
|
|
||||||
net/sched/sch_cake.c | 52 +++++++++++++++++++++++++++++++++++++++++---
|
|
||||||
1 file changed, 49 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
--- a/net/sched/sch_cake.c
|
|
||||||
+++ b/net/sched/sch_cake.c
|
|
||||||
@@ -497,6 +497,52 @@ static bool cobalt_queue_empty(struct co
|
|
||||||
return down;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static __be16 cake_skb_proto(const struct sk_buff *skb)
|
|
||||||
+{
|
|
||||||
+ unsigned int offset = skb_mac_offset(skb) + sizeof(struct ethhdr);
|
|
||||||
+ __be16 proto = skb->protocol;
|
|
||||||
+ struct vlan_hdr vhdr, *vh;
|
|
||||||
+
|
|
||||||
+ while (proto == htons(ETH_P_8021Q) || proto == htons(ETH_P_8021AD)) {
|
|
||||||
+ vh = skb_header_pointer(skb, offset, sizeof(vhdr), &vhdr);
|
|
||||||
+ if (!vh)
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ proto = vh->h_vlan_encapsulated_proto;
|
|
||||||
+ offset += sizeof(vhdr);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return proto;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int cake_set_ce(struct sk_buff *skb)
|
|
||||||
+{
|
|
||||||
+ int wlen = skb_network_offset(skb);
|
|
||||||
+
|
|
||||||
+ switch (cake_skb_proto(skb)) {
|
|
||||||
+ case htons(ETH_P_IP):
|
|
||||||
+ wlen += sizeof(struct iphdr);
|
|
||||||
+ if (!pskb_may_pull(skb, wlen) ||
|
|
||||||
+ skb_try_make_writable(skb, wlen))
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ return IP_ECN_set_ce(ip_hdr(skb));
|
|
||||||
+
|
|
||||||
+ case htons(ETH_P_IPV6):
|
|
||||||
+ wlen += sizeof(struct ipv6hdr);
|
|
||||||
+ if (!pskb_may_pull(skb, wlen) ||
|
|
||||||
+ skb_try_make_writable(skb, wlen))
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ return IP6_ECN_set_ce(skb, ipv6_hdr(skb));
|
|
||||||
+
|
|
||||||
+ default:
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/* Call this with a freshly dequeued packet for possible congestion marking.
|
|
||||||
* Returns true as an instruction to drop the packet, false for delivery.
|
|
||||||
*/
|
|
||||||
@@ -549,7 +595,7 @@ static bool cobalt_should_drop(struct co
|
|
||||||
|
|
||||||
if (next_due && vars->dropping) {
|
|
||||||
/* Use ECN mark if possible, otherwise drop */
|
|
||||||
- drop = !(vars->ecn_marked = INET_ECN_set_ce(skb));
|
|
||||||
+ drop = !(vars->ecn_marked = cake_set_ce(skb));
|
|
||||||
|
|
||||||
vars->count++;
|
|
||||||
if (!vars->count)
|
|
||||||
@@ -592,7 +638,7 @@ static bool cake_update_flowkeys(struct
|
|
||||||
bool rev = !skb->_nfct, upd = false;
|
|
||||||
__be32 ip;
|
|
||||||
|
|
||||||
- if (tc_skb_protocol(skb) != htons(ETH_P_IP))
|
|
||||||
+ if (cake_skb_proto(skb) != htons(ETH_P_IP))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (!nf_ct_get_tuple_skb(&tuple, skb))
|
|
||||||
@@ -1557,7 +1603,7 @@ static u8 cake_handle_diffserv(struct sk
|
|
||||||
u16 *buf, buf_;
|
|
||||||
u8 dscp;
|
|
||||||
|
|
||||||
- switch (tc_skb_protocol(skb)) {
|
|
||||||
+ switch (cake_skb_proto(skb)) {
|
|
||||||
case htons(ETH_P_IP):
|
|
||||||
buf = skb_header_pointer(skb, offset, sizeof(buf_), &buf_);
|
|
||||||
if (unlikely(!buf))
|
|
@ -45,7 +45,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
selftest.o \
|
selftest.o \
|
||||||
--- a/drivers/dma-buf/dma-buf.c
|
--- a/drivers/dma-buf/dma-buf.c
|
||||||
+++ b/drivers/dma-buf/dma-buf.c
|
+++ b/drivers/dma-buf/dma-buf.c
|
||||||
@@ -1295,4 +1295,5 @@ static void __exit dma_buf_deinit(void)
|
@@ -1298,4 +1298,5 @@ static void __exit dma_buf_deinit(void)
|
||||||
dma_buf_uninit_debugfs();
|
dma_buf_uninit_debugfs();
|
||||||
kern_unmount(dma_buf_mnt);
|
kern_unmount(dma_buf_mnt);
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ Acked-by: Rob Landley <rob@landley.net>
|
|||||||
---
|
---
|
||||||
--- a/arch/mips/Kconfig
|
--- a/arch/mips/Kconfig
|
||||||
+++ b/arch/mips/Kconfig
|
+++ b/arch/mips/Kconfig
|
||||||
@@ -1066,9 +1066,6 @@ config FW_ARC
|
@@ -1067,9 +1067,6 @@ config FW_ARC
|
||||||
config ARCH_MAY_HAVE_PC_FDC
|
config ARCH_MAY_HAVE_PC_FDC
|
||||||
bool
|
bool
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ Acked-by: Rob Landley <rob@landley.net>
|
|||||||
config CEVT_BCM1480
|
config CEVT_BCM1480
|
||||||
bool
|
bool
|
||||||
|
|
||||||
@@ -3040,6 +3037,18 @@ choice
|
@@ -3041,6 +3038,18 @@ choice
|
||||||
bool "Extend builtin kernel arguments with bootloader arguments"
|
bool "Extend builtin kernel arguments with bootloader arguments"
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
|
@ -138,7 +138,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
|||||||
static const struct rt6_info ip6_blk_hole_entry_template = {
|
static const struct rt6_info ip6_blk_hole_entry_template = {
|
||||||
.dst = {
|
.dst = {
|
||||||
.__refcnt = ATOMIC_INIT(1),
|
.__refcnt = ATOMIC_INIT(1),
|
||||||
@@ -1044,6 +1058,7 @@ static const int fib6_prop[RTN_MAX + 1]
|
@@ -1047,6 +1061,7 @@ static const int fib6_prop[RTN_MAX + 1]
|
||||||
[RTN_BLACKHOLE] = -EINVAL,
|
[RTN_BLACKHOLE] = -EINVAL,
|
||||||
[RTN_UNREACHABLE] = -EHOSTUNREACH,
|
[RTN_UNREACHABLE] = -EHOSTUNREACH,
|
||||||
[RTN_PROHIBIT] = -EACCES,
|
[RTN_PROHIBIT] = -EACCES,
|
||||||
@ -146,7 +146,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
|||||||
[RTN_THROW] = -EAGAIN,
|
[RTN_THROW] = -EAGAIN,
|
||||||
[RTN_NAT] = -EINVAL,
|
[RTN_NAT] = -EINVAL,
|
||||||
[RTN_XRESOLVE] = -EINVAL,
|
[RTN_XRESOLVE] = -EINVAL,
|
||||||
@@ -1081,6 +1096,10 @@ static void ip6_rt_init_dst_reject(struc
|
@@ -1084,6 +1099,10 @@ static void ip6_rt_init_dst_reject(struc
|
||||||
rt->dst.output = ip6_pkt_prohibit_out;
|
rt->dst.output = ip6_pkt_prohibit_out;
|
||||||
rt->dst.input = ip6_pkt_prohibit;
|
rt->dst.input = ip6_pkt_prohibit;
|
||||||
break;
|
break;
|
||||||
@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
|||||||
case RTN_THROW:
|
case RTN_THROW:
|
||||||
case RTN_UNREACHABLE:
|
case RTN_UNREACHABLE:
|
||||||
default:
|
default:
|
||||||
@@ -4416,6 +4435,17 @@ static int ip6_pkt_prohibit_out(struct n
|
@@ -4419,6 +4438,17 @@ static int ip6_pkt_prohibit_out(struct n
|
||||||
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
|
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
|||||||
/*
|
/*
|
||||||
* Allocate a dst for local (unicast / anycast) address.
|
* Allocate a dst for local (unicast / anycast) address.
|
||||||
*/
|
*/
|
||||||
@@ -4896,7 +4926,8 @@ static int rtm_to_fib6_config(struct sk_
|
@@ -4899,7 +4929,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||||
if (rtm->rtm_type == RTN_UNREACHABLE ||
|
if (rtm->rtm_type == RTN_UNREACHABLE ||
|
||||||
rtm->rtm_type == RTN_BLACKHOLE ||
|
rtm->rtm_type == RTN_BLACKHOLE ||
|
||||||
rtm->rtm_type == RTN_PROHIBIT ||
|
rtm->rtm_type == RTN_PROHIBIT ||
|
||||||
@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
|||||||
cfg->fc_flags |= RTF_REJECT;
|
cfg->fc_flags |= RTF_REJECT;
|
||||||
|
|
||||||
if (rtm->rtm_type == RTN_LOCAL)
|
if (rtm->rtm_type == RTN_LOCAL)
|
||||||
@@ -6016,6 +6047,8 @@ static int ip6_route_dev_notify(struct n
|
@@ -6019,6 +6050,8 @@ static int ip6_route_dev_notify(struct n
|
||||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||||
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
|
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
|
||||||
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
|
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
|
||||||
@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
|||||||
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
|
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
|
||||||
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
|
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
|
||||||
#endif
|
#endif
|
||||||
@@ -6027,6 +6060,7 @@ static int ip6_route_dev_notify(struct n
|
@@ -6030,6 +6063,7 @@ static int ip6_route_dev_notify(struct n
|
||||||
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
|
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
|
||||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||||
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
|
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
|
||||||
@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
|||||||
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
|
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -6219,6 +6253,8 @@ static int __net_init ip6_route_net_init
|
@@ -6222,6 +6256,8 @@ static int __net_init ip6_route_net_init
|
||||||
|
|
||||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||||
net->ipv6.fib6_has_custom_rules = false;
|
net->ipv6.fib6_has_custom_rules = false;
|
||||||
@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
|||||||
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
|
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
|
||||||
sizeof(*net->ipv6.ip6_prohibit_entry),
|
sizeof(*net->ipv6.ip6_prohibit_entry),
|
||||||
GFP_KERNEL);
|
GFP_KERNEL);
|
||||||
@@ -6229,11 +6265,21 @@ static int __net_init ip6_route_net_init
|
@@ -6232,11 +6268,21 @@ static int __net_init ip6_route_net_init
|
||||||
ip6_template_metrics, true);
|
ip6_template_metrics, true);
|
||||||
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
|
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
|
||||||
|
|
||||||
@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
|||||||
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
|
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
|
||||||
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
|
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
|
||||||
ip6_template_metrics, true);
|
ip6_template_metrics, true);
|
||||||
@@ -6257,6 +6303,8 @@ out:
|
@@ -6260,6 +6306,8 @@ out:
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||||
@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
|||||||
out_ip6_prohibit_entry:
|
out_ip6_prohibit_entry:
|
||||||
kfree(net->ipv6.ip6_prohibit_entry);
|
kfree(net->ipv6.ip6_prohibit_entry);
|
||||||
out_ip6_null_entry:
|
out_ip6_null_entry:
|
||||||
@@ -6276,6 +6324,7 @@ static void __net_exit ip6_route_net_exi
|
@@ -6279,6 +6327,7 @@ static void __net_exit ip6_route_net_exi
|
||||||
kfree(net->ipv6.ip6_null_entry);
|
kfree(net->ipv6.ip6_null_entry);
|
||||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||||
kfree(net->ipv6.ip6_prohibit_entry);
|
kfree(net->ipv6.ip6_prohibit_entry);
|
||||||
@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
|||||||
kfree(net->ipv6.ip6_blk_hole_entry);
|
kfree(net->ipv6.ip6_blk_hole_entry);
|
||||||
#endif
|
#endif
|
||||||
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
|
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
|
||||||
@@ -6353,6 +6402,9 @@ void __init ip6_route_init_special_entri
|
@@ -6356,6 +6405,9 @@ void __init ip6_route_init_special_entri
|
||||||
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||||
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
|
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
|
||||||
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||||
|
@ -33,7 +33,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|||||||
/*
|
/*
|
||||||
* The Mellanox Tavor device gives false positive parity errors. Mark this
|
* The Mellanox Tavor device gives false positive parity errors. Mark this
|
||||||
* device with a broken_parity_status to allow PCI scanning code to "skip"
|
* device with a broken_parity_status to allow PCI scanning code to "skip"
|
||||||
@@ -3307,6 +3308,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
|
@@ -3320,6 +3321,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
|
||||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
|
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
|
||||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
|
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|||||||
/*
|
/*
|
||||||
* Ivytown NTB BAR sizes are misreported by the hardware due to an erratum.
|
* Ivytown NTB BAR sizes are misreported by the hardware due to an erratum.
|
||||||
* To work around this, query the size it should be configured to by the
|
* To work around this, query the size it should be configured to by the
|
||||||
@@ -3332,6 +3335,8 @@ static void quirk_intel_ntb(struct pci_d
|
@@ -3345,6 +3348,8 @@ static void quirk_intel_ntb(struct pci_d
|
||||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e08, quirk_intel_ntb);
|
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e08, quirk_intel_ntb);
|
||||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e0d, quirk_intel_ntb);
|
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e0d, quirk_intel_ntb);
|
||||||
|
|
||||||
@ -51,7 +51,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|||||||
/*
|
/*
|
||||||
* Some BIOS implementations leave the Intel GPU interrupts enabled, even
|
* Some BIOS implementations leave the Intel GPU interrupts enabled, even
|
||||||
* though no one is handling them (e.g., if the i915 driver is never
|
* though no one is handling them (e.g., if the i915 driver is never
|
||||||
@@ -3370,6 +3375,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
|
@@ -3383,6 +3388,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
|
||||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
|
||||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/arch/mips/Kconfig
|
--- a/arch/mips/Kconfig
|
||||||
+++ b/arch/mips/Kconfig
|
+++ b/arch/mips/Kconfig
|
||||||
@@ -2375,6 +2375,12 @@ config MIPS_VPE_LOADER
|
@@ -2376,6 +2376,12 @@ config MIPS_VPE_LOADER
|
||||||
Includes a loader for loading an elf relocatable object
|
Includes a loader for loading an elf relocatable object
|
||||||
onto another VPE and running it.
|
onto another VPE and running it.
|
||||||
|
|
||||||
|
@ -156,15 +156,15 @@ Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
|
|||||||
err = enetc_configure_serdes(priv);
|
err = enetc_configure_serdes(priv);
|
||||||
if (err)
|
if (err)
|
||||||
dev_warn(&pdev->dev, "Attempted serdes config but failed\n");
|
dev_warn(&pdev->dev, "Attempted serdes config but failed\n");
|
||||||
@@ -937,7 +942,6 @@ static int enetc_pf_probe(struct pci_dev
|
@@ -938,7 +943,6 @@ static int enetc_pf_probe(struct pci_dev
|
||||||
return 0;
|
|
||||||
|
|
||||||
err_reg_netdev:
|
err_reg_netdev:
|
||||||
|
enetc_mdio_remove(pf);
|
||||||
- enetc_of_put_phy(priv);
|
- enetc_of_put_phy(priv);
|
||||||
enetc_free_msix(priv);
|
enetc_free_msix(priv);
|
||||||
err_alloc_msix:
|
err_alloc_msix:
|
||||||
enetc_free_si_resources(priv);
|
enetc_free_si_resources(priv);
|
||||||
@@ -945,6 +949,7 @@ err_alloc_si_res:
|
@@ -946,6 +950,7 @@ err_alloc_si_res:
|
||||||
si->ndev = NULL;
|
si->ndev = NULL;
|
||||||
free_netdev(ndev);
|
free_netdev(ndev);
|
||||||
err_alloc_netdev:
|
err_alloc_netdev:
|
||||||
@ -172,7 +172,7 @@ Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
|
|||||||
err_map_pf_space:
|
err_map_pf_space:
|
||||||
enetc_pci_remove(pdev);
|
enetc_pci_remove(pdev);
|
||||||
|
|
||||||
@@ -967,7 +972,7 @@ static void enetc_pf_remove(struct pci_d
|
@@ -968,7 +973,7 @@ static void enetc_pf_remove(struct pci_d
|
||||||
unregister_netdev(si->ndev);
|
unregister_netdev(si->ndev);
|
||||||
|
|
||||||
enetc_mdio_remove(pf);
|
enetc_mdio_remove(pf);
|
||||||
|
@ -397,7 +397,7 @@ Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
|
|||||||
#define enetc_mdio_rd(mdio_priv, off) \
|
#define enetc_mdio_rd(mdio_priv, off) \
|
||||||
--- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c
|
--- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c
|
||||||
+++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c
|
+++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c
|
||||||
@@ -986,6 +986,9 @@ static void enetc_pf_remove(struct pci_d
|
@@ -987,6 +987,9 @@ static void enetc_pf_remove(struct pci_d
|
||||||
enetc_pci_remove(pdev);
|
enetc_pci_remove(pdev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -371,7 +371,7 @@ Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
|
|||||||
#define enetc_rd(hw, off) enetc_rd_reg((hw)->reg + (off))
|
#define enetc_rd(hw, off) enetc_rd_reg((hw)->reg + (off))
|
||||||
--- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c
|
--- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c
|
||||||
+++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c
|
+++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c
|
||||||
@@ -986,8 +986,9 @@ static void enetc_pf_remove(struct pci_d
|
@@ -987,8 +987,9 @@ static void enetc_pf_remove(struct pci_d
|
||||||
enetc_pci_remove(pdev);
|
enetc_pci_remove(pdev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c
|
--- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c
|
||||||
+++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c
|
+++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c
|
||||||
@@ -952,6 +952,7 @@ err_alloc_si_res:
|
@@ -953,6 +953,7 @@ err_alloc_si_res:
|
||||||
si->ndev = NULL;
|
si->ndev = NULL;
|
||||||
free_netdev(ndev);
|
free_netdev(ndev);
|
||||||
err_alloc_netdev:
|
err_alloc_netdev:
|
||||||
|
@ -848,7 +848,7 @@ Signed-off-by: Po Liu <Po.Liu@nxp.com>
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err_reg_netdev:
|
err_reg_netdev:
|
||||||
@@ -973,6 +982,8 @@ static void enetc_pf_remove(struct pci_d
|
@@ -974,6 +983,8 @@ static void enetc_pf_remove(struct pci_d
|
||||||
netif_info(priv, drv, si->ndev, "%s v%s remove\n",
|
netif_info(priv, drv, si->ndev, "%s v%s remove\n",
|
||||||
enetc_drv_name, enetc_drv_ver);
|
enetc_drv_name, enetc_drv_ver);
|
||||||
|
|
||||||
|
@ -60,9 +60,9 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
struct dma_async_tx_descriptor *fsl_edma_prep_dma_cyclic(
|
struct dma_async_tx_descriptor *fsl_edma_prep_dma_cyclic(
|
||||||
--- a/drivers/dma/fsl-edma.c
|
--- a/drivers/dma/fsl-edma.c
|
||||||
+++ b/drivers/dma/fsl-edma.c
|
+++ b/drivers/dma/fsl-edma.c
|
||||||
@@ -46,6 +46,7 @@ static irqreturn_t fsl_edma_tx_handler(i
|
@@ -53,6 +53,7 @@ static irqreturn_t fsl_edma_tx_handler(i
|
||||||
|
}
|
||||||
|
|
||||||
spin_lock(&fsl_chan->vchan.lock);
|
|
||||||
if (!fsl_chan->edesc->iscyclic) {
|
if (!fsl_chan->edesc->iscyclic) {
|
||||||
+ fsl_edma_get_realcnt(fsl_chan);
|
+ fsl_edma_get_realcnt(fsl_chan);
|
||||||
list_del(&fsl_chan->edesc->vdesc.node);
|
list_del(&fsl_chan->edesc->vdesc.node);
|
||||||
|
@ -70,7 +70,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
|||||||
};
|
};
|
||||||
--- a/drivers/dma/fsl-edma.c
|
--- a/drivers/dma/fsl-edma.c
|
||||||
+++ b/drivers/dma/fsl-edma.c
|
+++ b/drivers/dma/fsl-edma.c
|
||||||
@@ -234,6 +234,13 @@ static struct fsl_edma_drvdata vf610_dat
|
@@ -241,6 +241,13 @@ static struct fsl_edma_drvdata vf610_dat
|
||||||
.setup_irq = fsl_edma_irq_init,
|
.setup_irq = fsl_edma_irq_init,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
|||||||
static struct fsl_edma_drvdata imx7ulp_data = {
|
static struct fsl_edma_drvdata imx7ulp_data = {
|
||||||
.version = v3,
|
.version = v3,
|
||||||
.dmamuxs = 1,
|
.dmamuxs = 1,
|
||||||
@@ -243,6 +250,7 @@ static struct fsl_edma_drvdata imx7ulp_d
|
@@ -250,6 +257,7 @@ static struct fsl_edma_drvdata imx7ulp_d
|
||||||
|
|
||||||
static const struct of_device_id fsl_edma_dt_ids[] = {
|
static const struct of_device_id fsl_edma_dt_ids[] = {
|
||||||
{ .compatible = "fsl,vf610-edma", .data = &vf610_data},
|
{ .compatible = "fsl,vf610-edma", .data = &vf610_data},
|
||||||
|
@ -64,7 +64,7 @@ Signed-off-by: Laurentiu Tudor <laurentiu.tudor@nxp.com>
|
|||||||
|
|
||||||
if (writable)
|
if (writable)
|
||||||
pte = kvm_s2pte_mkwrite(pte);
|
pte = kvm_s2pte_mkwrite(pte);
|
||||||
@@ -2346,7 +2348,7 @@ int kvm_arch_prepare_memory_region(struc
|
@@ -2347,7 +2349,7 @@ int kvm_arch_prepare_memory_region(struc
|
||||||
|
|
||||||
ret = kvm_phys_addr_ioremap(kvm, gpa, pa,
|
ret = kvm_phys_addr_ioremap(kvm, gpa, pa,
|
||||||
vm_end - vm_start,
|
vm_end - vm_start,
|
||||||
|
@ -105,7 +105,7 @@ Signed-off-by: Diana Craciun <diana.craciun@nxp.com>
|
|||||||
if (kvm_is_device_pfn(pfn)) {
|
if (kvm_is_device_pfn(pfn)) {
|
||||||
mem_type = PAGE_S2_DEVICE;
|
mem_type = PAGE_S2_DEVICE;
|
||||||
flags |= KVM_S2PTE_FLAG_IS_IOMAP;
|
flags |= KVM_S2PTE_FLAG_IS_IOMAP;
|
||||||
@@ -2336,6 +2380,9 @@ int kvm_arch_prepare_memory_region(struc
|
@@ -2337,6 +2381,9 @@ int kvm_arch_prepare_memory_region(struc
|
||||||
gpa_t gpa = mem->guest_phys_addr +
|
gpa_t gpa = mem->guest_phys_addr +
|
||||||
(vm_start - mem->userspace_addr);
|
(vm_start - mem->userspace_addr);
|
||||||
phys_addr_t pa;
|
phys_addr_t pa;
|
||||||
@ -115,7 +115,7 @@ Signed-off-by: Diana Craciun <diana.craciun@nxp.com>
|
|||||||
|
|
||||||
pa = (phys_addr_t)vma->vm_pgoff << PAGE_SHIFT;
|
pa = (phys_addr_t)vma->vm_pgoff << PAGE_SHIFT;
|
||||||
pa += vm_start - vma->vm_start;
|
pa += vm_start - vma->vm_start;
|
||||||
@@ -2346,9 +2393,13 @@ int kvm_arch_prepare_memory_region(struc
|
@@ -2347,9 +2394,13 @@ int kvm_arch_prepare_memory_region(struc
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
|
|
||||||
--- a/drivers/pci/quirks.c
|
--- a/drivers/pci/quirks.c
|
||||||
+++ b/drivers/pci/quirks.c
|
+++ b/drivers/pci/quirks.c
|
||||||
@@ -2510,6 +2510,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VI
|
@@ -2523,6 +2523,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VI
|
||||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3364, quirk_disable_all_msi);
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3364, quirk_disable_all_msi);
|
||||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8380_0, quirk_disable_all_msi);
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8380_0, quirk_disable_all_msi);
|
||||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SI, 0x0761, quirk_disable_all_msi);
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SI, 0x0761, quirk_disable_all_msi);
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
|
|
||||||
--- a/drivers/pci/quirks.c
|
--- a/drivers/pci/quirks.c
|
||||||
+++ b/drivers/pci/quirks.c
|
+++ b/drivers/pci/quirks.c
|
||||||
@@ -2516,6 +2516,9 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VI
|
@@ -2529,6 +2529,9 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VI
|
||||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SI, 0x0761, quirk_disable_all_msi);
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SI, 0x0761, quirk_disable_all_msi);
|
||||||
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_BROADCOM, 0x43ec, quirk_disable_all_msi);
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_BROADCOM, 0x43ec, quirk_disable_all_msi);
|
||||||
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_BROADCOM, 0x43ef, quirk_disable_all_msi);
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_BROADCOM, 0x43ef, quirk_disable_all_msi);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -1306,7 +1306,7 @@ static int mtk_poll_rx(struct napi_struc
|
@@ -1315,7 +1315,7 @@ static int mtk_poll_rx(struct napi_struc
|
||||||
skb->protocol = eth_type_trans(skb, netdev);
|
skb->protocol = eth_type_trans(skb, netdev);
|
||||||
|
|
||||||
if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX &&
|
if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX &&
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -1112,17 +1112,6 @@ static void mtk_wake_queue(struct mtk_et
|
@@ -1121,17 +1121,6 @@ static void mtk_wake_queue(struct mtk_et
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -18,7 +18,7 @@
|
|||||||
static int mtk_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
static int mtk_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||||
{
|
{
|
||||||
struct mtk_mac *mac = netdev_priv(dev);
|
struct mtk_mac *mac = netdev_priv(dev);
|
||||||
@@ -1143,7 +1132,7 @@ static int mtk_start_xmit(struct sk_buff
|
@@ -1152,7 +1141,7 @@ static int mtk_start_xmit(struct sk_buff
|
||||||
|
|
||||||
tx_num = mtk_cal_txd_req(skb);
|
tx_num = mtk_cal_txd_req(skb);
|
||||||
if (unlikely(atomic_read(&ring->free_count) <= tx_num)) {
|
if (unlikely(atomic_read(&ring->free_count) <= tx_num)) {
|
||||||
@ -27,7 +27,7 @@
|
|||||||
netif_err(eth, tx_queued, dev,
|
netif_err(eth, tx_queued, dev,
|
||||||
"Tx Ring full when queue awake!\n");
|
"Tx Ring full when queue awake!\n");
|
||||||
spin_unlock(ð->page_lock);
|
spin_unlock(ð->page_lock);
|
||||||
@@ -1169,7 +1158,7 @@ static int mtk_start_xmit(struct sk_buff
|
@@ -1178,7 +1167,7 @@ static int mtk_start_xmit(struct sk_buff
|
||||||
goto drop;
|
goto drop;
|
||||||
|
|
||||||
if (unlikely(atomic_read(&ring->free_count) <= ring->thresh))
|
if (unlikely(atomic_read(&ring->free_count) <= ring->thresh))
|
||||||
|
@ -1,62 +0,0 @@
|
|||||||
In-Reply-To: <trinity-fb0cdf15-dfcf-4d60-9144-87d8fbfad5ba-1586179542451@3c-app-gmx-bap62>
|
|
||||||
References: <trinity-fb0cdf15-dfcf-4d60-9144-87d8fbfad5ba-1586179542451@3c-app-gmx-bap62>
|
|
||||||
Subject: [PATCH] net: ethernet: mtk_eth_soc: Always call mtk_gmac0_rgmii_adjust() for mt7623
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
From: René van Dorst <opensource@vdorst.com>
|
|
||||||
|
|
||||||
Modify mtk_gmac0_rgmii_adjust() so it can always be called.
|
|
||||||
mtk_gmac0_rgmii_adjust() sets-up the TRGMII clocks.
|
|
||||||
|
|
||||||
Signed-off-by: René van Dorst <opensource@vdorst.com>
|
|
||||||
Signed-off-By: David Woodhouse <dwmw2@infradead.org>
|
|
||||||
---
|
|
||||||
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 19 ++++++++++++++-----
|
|
||||||
1 file changed, 14 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
|
||||||
index b5408c5b954a..f89f225ab144 100644
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
|
||||||
@@ -171,11 +171,21 @@ static int mt7621_gmac0_rgmii_adjust(struct mtk_eth *eth,
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static void mtk_gmac0_rgmii_adjust(struct mtk_eth *eth, int speed)
|
|
||||||
+static void mtk_gmac0_rgmii_adjust(struct mtk_eth *eth,
|
|
||||||
+ phy_interface_t interface, int speed)
|
|
||||||
{
|
|
||||||
u32 val;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
+ if (interface == PHY_INTERFACE_MODE_TRGMII) {
|
|
||||||
+ mtk_w32(eth, TRGMII_MODE, INTF_MODE);
|
|
||||||
+ val = 500000000;
|
|
||||||
+ ret = clk_set_rate(eth->clks[MTK_CLK_TRGPLL], val);
|
|
||||||
+ if (ret)
|
|
||||||
+ dev_err(eth->dev, "Failed to set trgmii pll: %d\n", ret);
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
val = (speed == SPEED_1000) ?
|
|
||||||
INTF_MODE_RGMII_1000 : INTF_MODE_RGMII_10_100;
|
|
||||||
mtk_w32(eth, val, INTF_MODE);
|
|
||||||
@@ -262,10 +272,9 @@ static void mtk_mac_config(struct phylink_config *config, unsigned int mode,
|
|
||||||
state->interface))
|
|
||||||
goto err_phy;
|
|
||||||
} else {
|
|
||||||
- if (state->interface !=
|
|
||||||
- PHY_INTERFACE_MODE_TRGMII)
|
|
||||||
- mtk_gmac0_rgmii_adjust(mac->hw,
|
|
||||||
- state->speed);
|
|
||||||
+ mtk_gmac0_rgmii_adjust(mac->hw,
|
|
||||||
+ state->interface,
|
|
||||||
+ state->speed);
|
|
||||||
|
|
||||||
/* mt7623_pad_clk_setup */
|
|
||||||
for (i = 0 ; i < NUM_TRGMII_CTRL; i++)
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -382,8 +382,7 @@ Signed-off-by: chuanjia.liu <Chuanjia.Liu@mediatek.com>
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
+ };
|
+ };
|
||||||
|
+
|
||||||
- pcie1: pcie@1,0 {
|
|
||||||
+ pcie1: pcie@1a145000 {
|
+ pcie1: pcie@1a145000 {
|
||||||
+ compatible = "mediatek,mt7622-pcie";
|
+ compatible = "mediatek,mt7622-pcie";
|
||||||
+ device_type = "pci";
|
+ device_type = "pci";
|
||||||
@ -408,7 +407,8 @@ Signed-off-by: chuanjia.liu <Chuanjia.Liu@mediatek.com>
|
|||||||
+ bus-range = <0x00 0xff>;
|
+ bus-range = <0x00 0xff>;
|
||||||
+ ranges = <0x82000000 0 0x28000000 0 0x28000000 0 0x8000000>;
|
+ ranges = <0x82000000 0 0x28000000 0 0x28000000 0 0x8000000>;
|
||||||
+ status = "disabled";
|
+ status = "disabled";
|
||||||
+
|
|
||||||
|
- pcie1: pcie@1,0 {
|
||||||
+ slot1: pcie@1,0 {
|
+ slot1: pcie@1,0 {
|
||||||
reg = <0x0800 0 0 0 0>;
|
reg = <0x0800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
|
@ -147,7 +147,7 @@
|
|||||||
|
|
||||||
#include "mtk_eth_soc.h"
|
#include "mtk_eth_soc.h"
|
||||||
|
|
||||||
@@ -1298,8 +1300,16 @@ static int mtk_poll_rx(struct napi_struc
|
@@ -1307,8 +1309,16 @@ static int mtk_poll_rx(struct napi_struc
|
||||||
(trxd.rxd2 & RX_DMA_VTAG))
|
(trxd.rxd2 & RX_DMA_VTAG))
|
||||||
__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
|
__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
|
||||||
RX_DMA_VID(trxd.rxd3));
|
RX_DMA_VID(trxd.rxd3));
|
||||||
@ -166,7 +166,7 @@
|
|||||||
|
|
||||||
ring->data[idx] = new_data;
|
ring->data[idx] = new_data;
|
||||||
rxd->rxd1 = (unsigned int)dma_addr;
|
rxd->rxd1 = (unsigned int)dma_addr;
|
||||||
@@ -2216,6 +2226,9 @@ static int mtk_open(struct net_device *d
|
@@ -2225,6 +2235,9 @@ static int mtk_open(struct net_device *d
|
||||||
mtk_tx_irq_enable(eth, MTK_TX_DONE_INT);
|
mtk_tx_irq_enable(eth, MTK_TX_DONE_INT);
|
||||||
mtk_rx_irq_enable(eth, MTK_RX_DONE_INT);
|
mtk_rx_irq_enable(eth, MTK_RX_DONE_INT);
|
||||||
refcount_set(ð->dma_refcnt, 1);
|
refcount_set(ð->dma_refcnt, 1);
|
||||||
@ -176,7 +176,7 @@
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
refcount_inc(ð->dma_refcnt);
|
refcount_inc(ð->dma_refcnt);
|
||||||
@@ -2274,6 +2287,9 @@ static int mtk_stop(struct net_device *d
|
@@ -2283,6 +2296,9 @@ static int mtk_stop(struct net_device *d
|
||||||
|
|
||||||
mtk_dma_free(eth);
|
mtk_dma_free(eth);
|
||||||
|
|
||||||
@ -186,7 +186,7 @@
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2733,6 +2749,27 @@ static int mtk_set_rxnfc(struct net_devi
|
@@ -2742,6 +2758,27 @@ static int mtk_set_rxnfc(struct net_devi
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -214,7 +214,7 @@
|
|||||||
static const struct ethtool_ops mtk_ethtool_ops = {
|
static const struct ethtool_ops mtk_ethtool_ops = {
|
||||||
.get_link_ksettings = mtk_get_link_ksettings,
|
.get_link_ksettings = mtk_get_link_ksettings,
|
||||||
.set_link_ksettings = mtk_set_link_ksettings,
|
.set_link_ksettings = mtk_set_link_ksettings,
|
||||||
@@ -2764,6 +2801,9 @@ static const struct net_device_ops mtk_n
|
@@ -2773,6 +2810,9 @@ static const struct net_device_ops mtk_n
|
||||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||||
.ndo_poll_controller = mtk_poll_controller,
|
.ndo_poll_controller = mtk_poll_controller,
|
||||||
#endif
|
#endif
|
||||||
@ -224,7 +224,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
|
static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
|
||||||
@@ -3097,6 +3137,7 @@ static const struct mtk_soc_data mt7622_
|
@@ -3108,6 +3148,7 @@ static const struct mtk_soc_data mt7622_
|
||||||
.hw_features = MTK_HW_FEATURES,
|
.hw_features = MTK_HW_FEATURES,
|
||||||
.required_clks = MT7622_CLKS_BITMAP,
|
.required_clks = MT7622_CLKS_BITMAP,
|
||||||
.required_pctl = false,
|
.required_pctl = false,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -2201,6 +2201,31 @@ static int mtk_start_dma(struct mtk_eth
|
@@ -2210,6 +2210,31 @@ static int mtk_start_dma(struct mtk_eth
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -32,7 +32,7 @@
|
|||||||
static int mtk_open(struct net_device *dev)
|
static int mtk_open(struct net_device *dev)
|
||||||
{
|
{
|
||||||
struct mtk_mac *mac = netdev_priv(dev);
|
struct mtk_mac *mac = netdev_priv(dev);
|
||||||
@@ -2221,6 +2246,8 @@ static int mtk_open(struct net_device *d
|
@@ -2230,6 +2255,8 @@ static int mtk_open(struct net_device *d
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
@ -41,7 +41,7 @@
|
|||||||
napi_enable(ð->tx_napi);
|
napi_enable(ð->tx_napi);
|
||||||
napi_enable(ð->rx_napi);
|
napi_enable(ð->rx_napi);
|
||||||
mtk_tx_irq_enable(eth, MTK_TX_DONE_INT);
|
mtk_tx_irq_enable(eth, MTK_TX_DONE_INT);
|
||||||
@@ -2276,6 +2303,8 @@ static int mtk_stop(struct net_device *d
|
@@ -2285,6 +2312,8 @@ static int mtk_stop(struct net_device *d
|
||||||
if (!refcount_dec_and_test(ð->dma_refcnt))
|
if (!refcount_dec_and_test(ð->dma_refcnt))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -50,7 +50,7 @@
|
|||||||
mtk_tx_irq_disable(eth, MTK_TX_DONE_INT);
|
mtk_tx_irq_disable(eth, MTK_TX_DONE_INT);
|
||||||
mtk_rx_irq_disable(eth, MTK_RX_DONE_INT);
|
mtk_rx_irq_disable(eth, MTK_RX_DONE_INT);
|
||||||
napi_disable(ð->tx_napi);
|
napi_disable(ð->tx_napi);
|
||||||
@@ -2402,8 +2431,6 @@ static int mtk_hw_init(struct mtk_eth *e
|
@@ -2411,8 +2440,6 @@ static int mtk_hw_init(struct mtk_eth *e
|
||||||
mtk_w32(eth, 0, MTK_QDMA_DELAY_INT);
|
mtk_w32(eth, 0, MTK_QDMA_DELAY_INT);
|
||||||
mtk_tx_irq_disable(eth, ~0);
|
mtk_tx_irq_disable(eth, ~0);
|
||||||
mtk_rx_irq_disable(eth, ~0);
|
mtk_rx_irq_disable(eth, ~0);
|
||||||
@ -59,7 +59,7 @@
|
|||||||
|
|
||||||
/* FE int grouping */
|
/* FE int grouping */
|
||||||
mtk_w32(eth, MTK_TX_DONE_INT, MTK_PDMA_INT_GRP1);
|
mtk_w32(eth, MTK_TX_DONE_INT, MTK_PDMA_INT_GRP1);
|
||||||
@@ -2412,19 +2439,6 @@ static int mtk_hw_init(struct mtk_eth *e
|
@@ -2421,19 +2448,6 @@ static int mtk_hw_init(struct mtk_eth *e
|
||||||
mtk_w32(eth, MTK_RX_DONE_INT, MTK_QDMA_INT_GRP2);
|
mtk_w32(eth, MTK_RX_DONE_INT, MTK_QDMA_INT_GRP2);
|
||||||
mtk_w32(eth, 0x21021000, MTK_FE_INT_GRP);
|
mtk_w32(eth, 0x21021000, MTK_FE_INT_GRP);
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -1355,10 +1355,11 @@ static int mtk_poll_tx_qdma(struct mtk_e
|
@@ -1364,10 +1364,11 @@ static int mtk_poll_tx_qdma(struct mtk_e
|
||||||
u32 next_cpu = desc->txd2;
|
u32 next_cpu = desc->txd2;
|
||||||
int mac = 0;
|
int mac = 0;
|
||||||
|
|
||||||
@ -13,7 +13,7 @@
|
|||||||
tx_buf = mtk_desc_to_tx_buf(ring, desc);
|
tx_buf = mtk_desc_to_tx_buf(ring, desc);
|
||||||
if (tx_buf->flags & MTK_TX_FLAGS_FPORT1)
|
if (tx_buf->flags & MTK_TX_FLAGS_FPORT1)
|
||||||
mac = 1;
|
mac = 1;
|
||||||
@@ -2182,7 +2183,7 @@ static int mtk_start_dma(struct mtk_eth
|
@@ -2191,7 +2192,7 @@ static int mtk_start_dma(struct mtk_eth
|
||||||
|
|
||||||
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA)) {
|
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA)) {
|
||||||
mtk_w32(eth,
|
mtk_w32(eth,
|
||||||
|
@ -292,7 +292,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
MVNETA_RX_BUF_SIZE(pp->pkt_size));
|
MVNETA_RX_BUF_SIZE(pp->pkt_size));
|
||||||
mvneta_rxq_bm_disable(pp, rxq);
|
mvneta_rxq_bm_disable(pp, rxq);
|
||||||
mvneta_rxq_fill(pp, rxq, rxq->size);
|
mvneta_rxq_fill(pp, rxq, rxq->size);
|
||||||
@@ -4700,7 +4705,7 @@ static int mvneta_probe(struct platform_
|
@@ -4708,7 +4713,7 @@ static int mvneta_probe(struct platform_
|
||||||
SET_NETDEV_DEV(dev, &pdev->dev);
|
SET_NETDEV_DEV(dev, &pdev->dev);
|
||||||
|
|
||||||
pp->id = global_port_id++;
|
pp->id = global_port_id++;
|
||||||
|
@ -300,7 +300,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const struct ethtool_ops mvneta_eth_tool_ops = {
|
static const struct ethtool_ops mvneta_eth_tool_ops = {
|
||||||
@@ -4705,7 +4835,7 @@ static int mvneta_probe(struct platform_
|
@@ -4713,7 +4843,7 @@ static int mvneta_probe(struct platform_
|
||||||
SET_NETDEV_DEV(dev, &pdev->dev);
|
SET_NETDEV_DEV(dev, &pdev->dev);
|
||||||
|
|
||||||
pp->id = global_port_id++;
|
pp->id = global_port_id++;
|
||||||
|
@ -38,7 +38,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
mvreg_write(pp, MVNETA_ACC_MODE, MVNETA_ACC_MODE_EXT1);
|
mvreg_write(pp, MVNETA_ACC_MODE, MVNETA_ACC_MODE_EXT1);
|
||||||
netdev_info(pp->dev, "fail to update MTU, fall back to software BM\n");
|
netdev_info(pp->dev, "fail to update MTU, fall back to software BM\n");
|
||||||
}
|
}
|
||||||
@@ -4976,7 +4976,6 @@ static int mvneta_probe(struct platform_
|
@@ -4984,7 +4984,6 @@ static int mvneta_probe(struct platform_
|
||||||
SET_NETDEV_DEV(dev, &pdev->dev);
|
SET_NETDEV_DEV(dev, &pdev->dev);
|
||||||
|
|
||||||
pp->id = global_port_id++;
|
pp->id = global_port_id++;
|
||||||
@ -46,7 +46,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
/* Obtain access to BM resources if enabled and already initialized */
|
/* Obtain access to BM resources if enabled and already initialized */
|
||||||
bm_node = of_parse_phandle(dn, "buffer-manager", 0);
|
bm_node = of_parse_phandle(dn, "buffer-manager", 0);
|
||||||
@@ -5001,6 +5000,10 @@ static int mvneta_probe(struct platform_
|
@@ -5009,6 +5008,10 @@ static int mvneta_probe(struct platform_
|
||||||
}
|
}
|
||||||
of_node_put(bm_node);
|
of_node_put(bm_node);
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
err = mvneta_init(&pdev->dev, pp);
|
err = mvneta_init(&pdev->dev, pp);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
goto err_netdev;
|
goto err_netdev;
|
||||||
@@ -5154,6 +5157,7 @@ static int mvneta_resume(struct device *
|
@@ -5166,6 +5169,7 @@ static int mvneta_resume(struct device *
|
||||||
err = mvneta_bm_port_init(pdev, pp);
|
err = mvneta_bm_port_init(pdev, pp);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
dev_info(&pdev->dev, "use SW buffer management\n");
|
dev_info(&pdev->dev, "use SW buffer management\n");
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/arch/arm/mach-mvebu/Kconfig
|
--- a/arch/arm/mach-mvebu/Kconfig
|
||||||
+++ b/arch/arm/mach-mvebu/Kconfig
|
+++ b/arch/arm/mach-mvebu/Kconfig
|
||||||
@@ -68,6 +68,7 @@
|
@@ -69,6 +69,7 @@ config MACH_ARMADA_38X
|
||||||
select HAVE_SMP
|
select HAVE_SMP
|
||||||
select MACH_MVEBU_V7
|
select MACH_MVEBU_V7
|
||||||
select PINCTRL_ARMADA_38X
|
select PINCTRL_ARMADA_38X
|
||||||
|
@ -22,7 +22,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
|||||||
#include <linux/platform_data/x86/apple.h>
|
#include <linux/platform_data/x86/apple.h>
|
||||||
#include <linux/pm_runtime.h>
|
#include <linux/pm_runtime.h>
|
||||||
#include <linux/switchtec.h>
|
#include <linux/switchtec.h>
|
||||||
@@ -5604,3 +5605,34 @@ static void apex_pci_fixup_class(struct
|
@@ -5617,3 +5618,34 @@ static void apex_pci_fixup_class(struct
|
||||||
}
|
}
|
||||||
DECLARE_PCI_FIXUP_CLASS_HEADER(0x1ac1, 0x089a,
|
DECLARE_PCI_FIXUP_CLASS_HEADER(0x1ac1, 0x089a,
|
||||||
PCI_CLASS_NOT_DEFINED, 8, apex_pci_fixup_class);
|
PCI_CLASS_NOT_DEFINED, 8, apex_pci_fixup_class);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/usb/dwc2/platform.c
|
--- a/drivers/usb/dwc2/platform.c
|
||||||
+++ b/drivers/usb/dwc2/platform.c
|
+++ b/drivers/usb/dwc2/platform.c
|
||||||
@@ -430,6 +430,12 @@ static int dwc2_driver_probe(struct plat
|
@@ -431,6 +431,12 @@ static int dwc2_driver_probe(struct plat
|
||||||
if (retval)
|
if (retval)
|
||||||
return retval;
|
return retval;
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -844,7 +844,8 @@ static int txd_to_idx(struct mtk_tx_ring
|
@@ -853,7 +853,8 @@ static int txd_to_idx(struct mtk_tx_ring
|
||||||
return ((void *)dma - (void *)ring->dma) / sizeof(*dma);
|
return ((void *)dma - (void *)ring->dma) / sizeof(*dma);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
{
|
{
|
||||||
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA)) {
|
if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA)) {
|
||||||
if (tx_buf->flags & MTK_TX_FLAGS_SINGLE0) {
|
if (tx_buf->flags & MTK_TX_FLAGS_SINGLE0) {
|
||||||
@@ -876,8 +877,12 @@ static void mtk_tx_unmap(struct mtk_eth
|
@@ -885,8 +886,12 @@ static void mtk_tx_unmap(struct mtk_eth
|
||||||
|
|
||||||
tx_buf->flags = 0;
|
tx_buf->flags = 0;
|
||||||
if (tx_buf->skb &&
|
if (tx_buf->skb &&
|
||||||
@ -34,7 +34,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
tx_buf->skb = NULL;
|
tx_buf->skb = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1055,7 +1060,7 @@ err_dma:
|
@@ -1064,7 +1069,7 @@ err_dma:
|
||||||
tx_buf = mtk_desc_to_tx_buf(ring, itxd);
|
tx_buf = mtk_desc_to_tx_buf(ring, itxd);
|
||||||
|
|
||||||
/* unmap dma */
|
/* unmap dma */
|
||||||
@ -43,7 +43,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
itxd->txd3 = TX_DMA_LS0 | TX_DMA_OWNER_CPU;
|
itxd->txd3 = TX_DMA_LS0 | TX_DMA_OWNER_CPU;
|
||||||
if (!MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA))
|
if (!MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA))
|
||||||
@@ -1373,7 +1378,7 @@ static int mtk_poll_tx_qdma(struct mtk_e
|
@@ -1382,7 +1387,7 @@ static int mtk_poll_tx_qdma(struct mtk_e
|
||||||
done[mac]++;
|
done[mac]++;
|
||||||
budget--;
|
budget--;
|
||||||
}
|
}
|
||||||
@ -52,7 +52,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
ring->last_free = desc;
|
ring->last_free = desc;
|
||||||
atomic_inc(&ring->free_count);
|
atomic_inc(&ring->free_count);
|
||||||
@@ -1410,7 +1415,7 @@ static int mtk_poll_tx_pdma(struct mtk_e
|
@@ -1419,7 +1424,7 @@ static int mtk_poll_tx_pdma(struct mtk_e
|
||||||
budget--;
|
budget--;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,7 +61,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
desc = &ring->dma[cpu];
|
desc = &ring->dma[cpu];
|
||||||
ring->last_free = desc;
|
ring->last_free = desc;
|
||||||
@@ -1612,7 +1617,7 @@ static void mtk_tx_clean(struct mtk_eth
|
@@ -1621,7 +1626,7 @@ static void mtk_tx_clean(struct mtk_eth
|
||||||
|
|
||||||
if (ring->buf) {
|
if (ring->buf) {
|
||||||
for (i = 0; i < MTK_DMA_SIZE; i++)
|
for (i = 0; i < MTK_DMA_SIZE; i++)
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: René van Dorst <opensource@vdorst.com>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -2784,6 +2784,7 @@ static const struct net_device_ops mtk_n
|
@@ -2793,6 +2793,7 @@ static const struct net_device_ops mtk_n
|
||||||
|
|
||||||
static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
|
static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
|
||||||
{
|
{
|
||||||
@ -22,9 +22,9 @@ Signed-off-by: René van Dorst <opensource@vdorst.com>
|
|||||||
const __be32 *_id = of_get_property(np, "reg", NULL);
|
const __be32 *_id = of_get_property(np, "reg", NULL);
|
||||||
struct phylink *phylink;
|
struct phylink *phylink;
|
||||||
int phy_mode, id, err;
|
int phy_mode, id, err;
|
||||||
@@ -2874,6 +2875,9 @@ static int mtk_add_mac(struct mtk_eth *e
|
@@ -2885,6 +2886,9 @@ static int mtk_add_mac(struct mtk_eth *e
|
||||||
eth->netdev[id]->irq = eth->irq[0];
|
|
||||||
eth->netdev[id]->dev.of_node = np;
|
eth->netdev[id]->max_mtu = MTK_MAX_RX_LENGTH - MTK_RX_ETH_HLEN;
|
||||||
|
|
||||||
+ if (name)
|
+ if (name)
|
||||||
+ strlcpy(eth->netdev[id]->name, name, IFNAMSIZ);
|
+ strlcpy(eth->netdev[id]->name, name, IFNAMSIZ);
|
||||||
|
@ -26,7 +26,7 @@ use-case. You've been warned.
|
|||||||
|
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
||||||
@@ -936,6 +936,33 @@
|
@@ -938,6 +938,33 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
|||||||
leds {
|
leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
@@ -288,6 +300,12 @@
|
@@ -299,6 +311,12 @@
|
||||||
rockchip,pins = <1 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <1 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -45,7 +45,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
|||||||
};
|
};
|
||||||
|
|
||||||
&sdmmc {
|
&sdmmc {
|
||||||
@@ -328,3 +346,12 @@
|
@@ -339,3 +357,12 @@
|
||||||
&usb_host0_ohci {
|
&usb_host0_ohci {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
|||||||
|
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts
|
||||||
@@ -354,4 +354,11 @@
|
@@ -365,4 +365,11 @@
|
||||||
&usbdrd_dwc3 {
|
&usbdrd_dwc3 {
|
||||||
dr_mode = "host";
|
dr_mode = "host";
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user