kernel: bump 5.15 to 5.15.162
Removed because they are upstream: mediatek/patches-5.15/702-v5.17-net-mdio-add-helpers-to-extract-clause-45-regad-and-.patch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.15.y&id=a03c3a34692f8400a85ec1cc2b058c6880bb7e7b realtek/patches-5.15/020-v5.17-net-mdio-add-helpers-to-extract-clause-45-regad-and-.patch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.15.y&id=a03c3a34692f8400a85ec1cc2b058c6880bb7e7b Link: https://github.com/openwrt/openwrt/pull/15901 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
@@ -1,2 +1,2 @@
|
|||||||
LINUX_VERSION-5.15 = .161
|
LINUX_VERSION-5.15 = .162
|
||||||
LINUX_KERNEL_HASH-5.15.161 = d629f78680dc4b65e3d78b61406fb7757b960c83c206e63ad8c2606b3e3c474c
|
LINUX_KERNEL_HASH-5.15.162 = 91bfc0ea152ce7b102a0b79d35a7c92843874ebf085c99d2ba8b4d85e62b1a7c
|
||||||
|
|||||||
@@ -259,7 +259,7 @@ SVN-Revision: 35130
|
|||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
#include <linux/ipv6.h>
|
#include <linux/ipv6.h>
|
||||||
#include <linux/icmpv6.h>
|
#include <linux/icmpv6.h>
|
||||||
@@ -944,10 +945,10 @@ static void tcp_v6_send_response(const s
|
@@ -946,10 +947,10 @@ static void tcp_v6_send_response(const s
|
||||||
topt = (__be32 *)(t1 + 1);
|
topt = (__be32 *)(t1 + 1);
|
||||||
|
|
||||||
if (tsecr) {
|
if (tsecr) {
|
||||||
@@ -337,7 +337,7 @@ SVN-Revision: 35130
|
|||||||
#endif /* _LINUX_TYPES_H */
|
#endif /* _LINUX_TYPES_H */
|
||||||
--- a/net/ipv4/af_inet.c
|
--- a/net/ipv4/af_inet.c
|
||||||
+++ b/net/ipv4/af_inet.c
|
+++ b/net/ipv4/af_inet.c
|
||||||
@@ -1480,8 +1480,8 @@ struct sk_buff *inet_gro_receive(struct
|
@@ -1489,8 +1489,8 @@ struct sk_buff *inet_gro_receive(struct
|
||||||
if (unlikely(ip_fast_csum((u8 *)iph, 5)))
|
if (unlikely(ip_fast_csum((u8 *)iph, 5)))
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
|
|
||||||
@@ -751,7 +751,7 @@ SVN-Revision: 35130
|
|||||||
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
|
||||||
@@ -4175,14 +4175,16 @@ static bool tcp_parse_aligned_timestamp(
|
@@ -4192,14 +4192,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||||
{
|
{
|
||||||
const __be32 *ptr = (const __be32 *)(th + 1);
|
const __be32 *ptr = (const __be32 *)(th + 1);
|
||||||
|
|
||||||
|
|||||||
@@ -1984,7 +1984,7 @@ bcm2835-mmc: uninitialized_var is no more
|
|||||||
|
|
||||||
#define MAX_TUNING_LOOP 40
|
#define MAX_TUNING_LOOP 40
|
||||||
|
|
||||||
@@ -3188,7 +3188,7 @@ static void sdhci_timeout_timer(struct t
|
@@ -3191,7 +3191,7 @@ static void sdhci_timeout_timer(struct t
|
||||||
spin_lock_irqsave(&host->lock, flags);
|
spin_lock_irqsave(&host->lock, flags);
|
||||||
|
|
||||||
if (host->cmd && !sdhci_data_line_cmd(host->cmd)) {
|
if (host->cmd && !sdhci_data_line_cmd(host->cmd)) {
|
||||||
@@ -1993,7 +1993,7 @@ bcm2835-mmc: uninitialized_var is no more
|
|||||||
mmc_hostname(host->mmc));
|
mmc_hostname(host->mmc));
|
||||||
sdhci_dumpregs(host);
|
sdhci_dumpregs(host);
|
||||||
|
|
||||||
@@ -3210,7 +3210,7 @@ static void sdhci_timeout_data_timer(str
|
@@ -3213,7 +3213,7 @@ static void sdhci_timeout_data_timer(str
|
||||||
|
|
||||||
if (host->data || host->data_cmd ||
|
if (host->data || host->data_cmd ||
|
||||||
(host->cmd && sdhci_data_line_cmd(host->cmd))) {
|
(host->cmd && sdhci_data_line_cmd(host->cmd))) {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
|
|
||||||
--- a/drivers/tty/serial/sc16is7xx.c
|
--- a/drivers/tty/serial/sc16is7xx.c
|
||||||
+++ b/drivers/tty/serial/sc16is7xx.c
|
+++ b/drivers/tty/serial/sc16is7xx.c
|
||||||
@@ -710,6 +710,8 @@ static bool sc16is7xx_port_irq(struct sc
|
@@ -723,6 +723,8 @@ static bool sc16is7xx_port_irq(struct sc
|
||||||
|
|
||||||
if (rxlen)
|
if (rxlen)
|
||||||
sc16is7xx_handle_rx(port, rxlen, iir);
|
sc16is7xx_handle_rx(port, rxlen, iir);
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
@@ -1323,6 +1326,9 @@
|
@@ -1324,6 +1327,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
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
|||||||
val);
|
val);
|
||||||
--- a/drivers/usb/host/xhci.h
|
--- a/drivers/usb/host/xhci.h
|
||||||
+++ b/drivers/usb/host/xhci.h
|
+++ b/drivers/usb/host/xhci.h
|
||||||
@@ -1674,8 +1674,8 @@ struct urb_priv {
|
@@ -1675,8 +1675,8 @@ struct urb_priv {
|
||||||
* Each segment table entry is 4*32bits long. 1K seems like an ok size:
|
* Each segment table entry is 4*32bits long. 1K seems like an ok size:
|
||||||
* (1K bytes * 8bytes/bit) / (4*32 bits) = 64 segment entries in the table,
|
* (1K bytes * 8bytes/bit) / (4*32 bits) = 64 segment entries in the table,
|
||||||
* meaning 64 ring segments.
|
* meaning 64 ring segments.
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
|||||||
|
|
||||||
--- a/drivers/tty/serial/sc16is7xx.c
|
--- a/drivers/tty/serial/sc16is7xx.c
|
||||||
+++ b/drivers/tty/serial/sc16is7xx.c
|
+++ b/drivers/tty/serial/sc16is7xx.c
|
||||||
@@ -525,8 +525,9 @@ static int sc16is7xx_set_baud(struct uar
|
@@ -537,8 +537,9 @@ static int sc16is7xx_set_baud(struct uar
|
||||||
|
|
||||||
/* Enable enhanced features */
|
/* Enable enhanced features */
|
||||||
regcache_cache_bypass(s->regmap, true);
|
regcache_cache_bypass(s->regmap, true);
|
||||||
@@ -38,7 +38,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
|||||||
regcache_cache_bypass(s->regmap, false);
|
regcache_cache_bypass(s->regmap, false);
|
||||||
|
|
||||||
/* Put LCR back to the normal mode */
|
/* Put LCR back to the normal mode */
|
||||||
@@ -856,7 +857,7 @@ static unsigned int sc16is7xx_get_mctrl(
|
@@ -869,7 +870,7 @@ static unsigned int sc16is7xx_get_mctrl(
|
||||||
/* DCD and DSR are not wired and CTS/RTS is handled automatically
|
/* DCD and DSR are not wired and CTS/RTS is handled automatically
|
||||||
* so just indicate DSR and CAR asserted
|
* so just indicate DSR and CAR asserted
|
||||||
*/
|
*/
|
||||||
@@ -47,7 +47,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void sc16is7xx_set_mctrl(struct uart_port *port, unsigned int mctrl)
|
static void sc16is7xx_set_mctrl(struct uart_port *port, unsigned int mctrl)
|
||||||
@@ -943,14 +944,19 @@ static void sc16is7xx_set_termios(struct
|
@@ -956,14 +957,19 @@ static void sc16is7xx_set_termios(struct
|
||||||
regcache_cache_bypass(s->regmap, true);
|
regcache_cache_bypass(s->regmap, true);
|
||||||
sc16is7xx_port_write(port, SC16IS7XX_XON1_REG, termios->c_cc[VSTART]);
|
sc16is7xx_port_write(port, SC16IS7XX_XON1_REG, termios->c_cc[VSTART]);
|
||||||
sc16is7xx_port_write(port, SC16IS7XX_XOFF1_REG, termios->c_cc[VSTOP]);
|
sc16is7xx_port_write(port, SC16IS7XX_XOFF1_REG, termios->c_cc[VSTOP]);
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ Signed-off-by: Joerg Quinten <aBUGSworstnightmare@gmail.com>
|
|||||||
static const struct drm_display_mode innolux_at070tn92_mode = {
|
static const struct drm_display_mode innolux_at070tn92_mode = {
|
||||||
.clock = 33333,
|
.clock = 33333,
|
||||||
.hdisplay = 800,
|
.hdisplay = 800,
|
||||||
@@ -4672,6 +4704,9 @@ static const struct of_device_id platfor
|
@@ -4673,6 +4705,9 @@ static const struct of_device_id platfor
|
||||||
.compatible = "innolux,at043tn24",
|
.compatible = "innolux,at043tn24",
|
||||||
.data = &innolux_at043tn24,
|
.data = &innolux_at043tn24,
|
||||||
}, {
|
}, {
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|||||||
|
|
||||||
--- a/drivers/gpu/drm/panel/panel-simple.c
|
--- a/drivers/gpu/drm/panel/panel-simple.c
|
||||||
+++ b/drivers/gpu/drm/panel/panel-simple.c
|
+++ b/drivers/gpu/drm/panel/panel-simple.c
|
||||||
@@ -3769,6 +3769,31 @@ static const struct panel_desc qishenglo
|
@@ -3770,6 +3770,31 @@ static const struct panel_desc qishenglo
|
||||||
.connector_type = DRM_MODE_CONNECTOR_DPI,
|
.connector_type = DRM_MODE_CONNECTOR_DPI,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|||||||
static const struct display_timing rocktech_rk070er9427_timing = {
|
static const struct display_timing rocktech_rk070er9427_timing = {
|
||||||
.pixelclock = { 26400000, 33300000, 46800000 },
|
.pixelclock = { 26400000, 33300000, 46800000 },
|
||||||
.hactive = { 800, 800, 800 },
|
.hactive = { 800, 800, 800 },
|
||||||
@@ -4851,6 +4876,9 @@ static const struct of_device_id platfor
|
@@ -4852,6 +4877,9 @@ static const struct of_device_id platfor
|
||||||
.compatible = "qishenglong,gopher2b-lcd",
|
.compatible = "qishenglong,gopher2b-lcd",
|
||||||
.data = &qishenglong_gopher2b_lcd,
|
.data = &qishenglong_gopher2b_lcd,
|
||||||
}, {
|
}, {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
|
|
||||||
--- 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
|
||||||
@@ -294,8 +294,10 @@ static void xhci_pci_quirks(struct devic
|
@@ -301,8 +301,10 @@ static void xhci_pci_quirks(struct devic
|
||||||
pdev->device == 0x3432)
|
pdev->device == 0x3432)
|
||||||
xhci->quirks |= XHCI_BROKEN_STREAMS;
|
xhci->quirks |= XHCI_BROKEN_STREAMS;
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
addr = xhci_trb_virt_to_dma(new_seg, new_deq);
|
addr = xhci_trb_virt_to_dma(new_seg, new_deq);
|
||||||
--- a/drivers/usb/host/xhci.h
|
--- a/drivers/usb/host/xhci.h
|
||||||
+++ b/drivers/usb/host/xhci.h
|
+++ b/drivers/usb/host/xhci.h
|
||||||
@@ -1908,6 +1908,7 @@ struct xhci_hcd {
|
@@ -1909,6 +1909,7 @@ struct xhci_hcd {
|
||||||
#define XHCI_RESET_TO_DEFAULT BIT_ULL(44)
|
#define XHCI_RESET_TO_DEFAULT BIT_ULL(44)
|
||||||
#define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
|
#define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
|
||||||
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
|
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
|
||||||
|
|||||||
@@ -205,7 +205,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
xhci_err(xhci, "Tried to move enqueue past ring segment\n");
|
xhci_err(xhci, "Tried to move enqueue past ring segment\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -3215,7 +3218,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd
|
@@ -3246,7 +3249,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd
|
||||||
* that clears the EHB.
|
* that clears the EHB.
|
||||||
*/
|
*/
|
||||||
while (xhci_handle_event(xhci) > 0) {
|
while (xhci_handle_event(xhci) > 0) {
|
||||||
@@ -214,7 +214,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
continue;
|
continue;
|
||||||
xhci_update_erst_dequeue(xhci, event_ring_deq);
|
xhci_update_erst_dequeue(xhci, event_ring_deq);
|
||||||
event_ring_deq = xhci->event_ring->dequeue;
|
event_ring_deq = xhci->event_ring->dequeue;
|
||||||
@@ -3357,7 +3360,8 @@ static int prepare_ring(struct xhci_hcd
|
@@ -3388,7 +3391,8 @@ static int prepare_ring(struct xhci_hcd
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -248,7 +248,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
* when the cycle bit is set to 1.
|
* when the cycle bit is set to 1.
|
||||||
--- a/drivers/usb/host/xhci.h
|
--- a/drivers/usb/host/xhci.h
|
||||||
+++ b/drivers/usb/host/xhci.h
|
+++ b/drivers/usb/host/xhci.h
|
||||||
@@ -1636,6 +1636,7 @@ struct xhci_ring {
|
@@ -1637,6 +1637,7 @@ struct xhci_ring {
|
||||||
unsigned int num_trbs_free;
|
unsigned int num_trbs_free;
|
||||||
unsigned int num_trbs_free_temp;
|
unsigned int num_trbs_free_temp;
|
||||||
unsigned int bounce_buf_len;
|
unsigned int bounce_buf_len;
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
cycle_state, type, max_packet, flags);
|
cycle_state, type, max_packet, flags);
|
||||||
--- 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
|
||||||
@@ -297,6 +297,7 @@ static void xhci_pci_quirks(struct devic
|
@@ -304,6 +304,7 @@ static void xhci_pci_quirks(struct devic
|
||||||
if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) {
|
if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) {
|
||||||
xhci->quirks |= XHCI_LPM_SUPPORT;
|
xhci->quirks |= XHCI_LPM_SUPPORT;
|
||||||
xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;
|
xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;
|
||||||
@@ -63,7 +63,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
||||||
--- a/drivers/usb/host/xhci.h
|
--- a/drivers/usb/host/xhci.h
|
||||||
+++ b/drivers/usb/host/xhci.h
|
+++ b/drivers/usb/host/xhci.h
|
||||||
@@ -1910,6 +1910,7 @@ struct xhci_hcd {
|
@@ -1911,6 +1911,7 @@ struct xhci_hcd {
|
||||||
#define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
|
#define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
|
||||||
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
|
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
|
||||||
#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(47)
|
#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(47)
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ Acked-by: Maxime Ripard <maxime@cerno.tech>
|
|||||||
static const struct drm_display_mode giantplus_gpg482739qs5_mode = {
|
static const struct drm_display_mode giantplus_gpg482739qs5_mode = {
|
||||||
.clock = 9000,
|
.clock = 9000,
|
||||||
.hdisplay = 480,
|
.hdisplay = 480,
|
||||||
@@ -4714,6 +4740,9 @@ static const struct of_device_id platfor
|
@@ -4715,6 +4741,9 @@ static const struct of_device_id platfor
|
||||||
.compatible = "friendlyarm,hd702e",
|
.compatible = "friendlyarm,hd702e",
|
||||||
.data = &friendlyarm_hd702e,
|
.data = &friendlyarm_hd702e,
|
||||||
}, {
|
}, {
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
|
|
||||||
--- 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
|
||||||
@@ -298,6 +298,7 @@ static void xhci_pci_quirks(struct devic
|
@@ -305,6 +305,7 @@ static void xhci_pci_quirks(struct devic
|
||||||
xhci->quirks |= XHCI_LPM_SUPPORT;
|
xhci->quirks |= XHCI_LPM_SUPPORT;
|
||||||
xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;
|
xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;
|
||||||
xhci->quirks |= XHCI_VLI_TRB_CACHE_BUG;
|
xhci->quirks |= XHCI_VLI_TRB_CACHE_BUG;
|
||||||
@@ -36,7 +36,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
||||||
--- 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
|
||||||
@@ -3670,14 +3670,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3701,14 +3701,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
unsigned int num_trbs;
|
unsigned int num_trbs;
|
||||||
unsigned int start_cycle, num_sgs = 0;
|
unsigned int start_cycle, num_sgs = 0;
|
||||||
unsigned int enqd_len, block_len, trb_buff_len, full_len;
|
unsigned int enqd_len, block_len, trb_buff_len, full_len;
|
||||||
@@ -54,7 +54,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
full_len = urb->transfer_buffer_length;
|
full_len = urb->transfer_buffer_length;
|
||||||
/* If we have scatter/gather list, we use it. */
|
/* If we have scatter/gather list, we use it. */
|
||||||
if (urb->num_sgs && !(urb->transfer_flags & URB_DMA_MAP_SINGLE)) {
|
if (urb->num_sgs && !(urb->transfer_flags & URB_DMA_MAP_SINGLE)) {
|
||||||
@@ -3714,6 +3715,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3745,6 +3746,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
start_cycle = ring->cycle_state;
|
start_cycle = ring->cycle_state;
|
||||||
send_addr = addr;
|
send_addr = addr;
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
/* Queue the TRBs, even if they are zero-length */
|
/* Queue the TRBs, even if they are zero-length */
|
||||||
for (enqd_len = 0; first_trb || enqd_len < full_len;
|
for (enqd_len = 0; first_trb || enqd_len < full_len;
|
||||||
enqd_len += trb_buff_len) {
|
enqd_len += trb_buff_len) {
|
||||||
@@ -3726,6 +3738,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3757,6 +3769,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
if (enqd_len + trb_buff_len > full_len)
|
if (enqd_len + trb_buff_len > full_len)
|
||||||
trb_buff_len = full_len - enqd_len;
|
trb_buff_len = full_len - enqd_len;
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
first_trb = false;
|
first_trb = false;
|
||||||
--- a/drivers/usb/host/xhci.h
|
--- a/drivers/usb/host/xhci.h
|
||||||
+++ b/drivers/usb/host/xhci.h
|
+++ b/drivers/usb/host/xhci.h
|
||||||
@@ -1911,6 +1911,7 @@ struct xhci_hcd {
|
@@ -1912,6 +1912,7 @@ struct xhci_hcd {
|
||||||
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
|
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
|
||||||
#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(47)
|
#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(47)
|
||||||
#define XHCI_VLI_TRB_CACHE_BUG BIT_ULL(48)
|
#define XHCI_VLI_TRB_CACHE_BUG BIT_ULL(48)
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
|
|
||||||
--- 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
|
||||||
@@ -3670,7 +3670,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3701,7 +3701,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
unsigned int num_trbs;
|
unsigned int num_trbs;
|
||||||
unsigned int start_cycle, num_sgs = 0;
|
unsigned int start_cycle, num_sgs = 0;
|
||||||
unsigned int enqd_len, block_len, trb_buff_len, full_len;
|
unsigned int enqd_len, block_len, trb_buff_len, full_len;
|
||||||
@@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
u32 field, length_field, remainder, maxpacket;
|
u32 field, length_field, remainder, maxpacket;
|
||||||
u64 addr, send_addr;
|
u64 addr, send_addr;
|
||||||
|
|
||||||
@@ -3716,14 +3716,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3747,14 +3747,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
send_addr = addr;
|
send_addr = addr;
|
||||||
|
|
||||||
if (xhci->quirks & XHCI_VLI_SS_BULK_OUT_BUG &&
|
if (xhci->quirks & XHCI_VLI_SS_BULK_OUT_BUG &&
|
||||||
@@ -40,7 +40,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Queue the TRBs, even if they are zero-length */
|
/* Queue the TRBs, even if they are zero-length */
|
||||||
@@ -3738,7 +3733,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3769,7 +3764,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
if (enqd_len + trb_buff_len > full_len)
|
if (enqd_len + trb_buff_len > full_len)
|
||||||
trb_buff_len = full_len - enqd_len;
|
trb_buff_len = full_len - enqd_len;
|
||||||
|
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ it on BCM4708 family.
|
|||||||
|
|
||||||
--- a/drivers/usb/host/xhci.h
|
--- a/drivers/usb/host/xhci.h
|
||||||
+++ b/drivers/usb/host/xhci.h
|
+++ b/drivers/usb/host/xhci.h
|
||||||
@@ -1908,6 +1908,7 @@ struct xhci_hcd {
|
@@ -1909,6 +1909,7 @@ struct xhci_hcd {
|
||||||
#define XHCI_RESET_TO_DEFAULT BIT_ULL(44)
|
#define XHCI_RESET_TO_DEFAULT BIT_ULL(44)
|
||||||
#define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
|
#define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
|
||||||
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
|
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
|||||||
struct bmips_quirk {
|
struct bmips_quirk {
|
||||||
const char *compatible;
|
const char *compatible;
|
||||||
void (*quirk_fn)(void);
|
void (*quirk_fn)(void);
|
||||||
@@ -142,17 +181,161 @@ const char *get_system_type(void)
|
@@ -143,17 +182,161 @@ const char *get_system_type(void)
|
||||||
return "Generic BMIPS kernel";
|
return "Generic BMIPS kernel";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
|||||||
struct bmips_quirk {
|
struct bmips_quirk {
|
||||||
const char *compatible;
|
const char *compatible;
|
||||||
void (*quirk_fn)(void);
|
void (*quirk_fn)(void);
|
||||||
@@ -340,9 +366,90 @@ void __init plat_time_init(void)
|
@@ -341,9 +367,90 @@ void __init plat_time_init(void)
|
||||||
mips_hpt_frequency = freq;
|
mips_hpt_frequency = freq;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -175,7 +175,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
|||||||
const struct bmips_quirk *q;
|
const struct bmips_quirk *q;
|
||||||
|
|
||||||
set_io_port_base(0);
|
set_io_port_base(0);
|
||||||
@@ -360,6 +467,18 @@ void __init plat_mem_setup(void)
|
@@ -361,6 +468,18 @@ void __init plat_mem_setup(void)
|
||||||
|
|
||||||
__dt_setup_arch(dtb);
|
__dt_setup_arch(dtb);
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
|||||||
|
|
||||||
static const unsigned long kbase = VMLINUX_LOAD_ADDRESS & 0xfff00000;
|
static const unsigned long kbase = VMLINUX_LOAD_ADDRESS & 0xfff00000;
|
||||||
|
|
||||||
@@ -170,12 +170,6 @@ static void bcm6358_quirks(void)
|
@@ -170,13 +170,6 @@ static void bcm6358_quirks(void)
|
||||||
* disable SMP for now
|
* disable SMP for now
|
||||||
*/
|
*/
|
||||||
bmips_smp_enabled = 0;
|
bmips_smp_enabled = 0;
|
||||||
@@ -66,11 +66,12 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
|||||||
- * RAC flush causes kernel panics on BCM6358 when booting from TP1
|
- * RAC flush causes kernel panics on BCM6358 when booting from TP1
|
||||||
- * because the bootloader is not initializing it properly.
|
- * because the bootloader is not initializing it properly.
|
||||||
- */
|
- */
|
||||||
- bmips_rac_flush_disable = !!(read_c0_brcm_cmt_local() & (1 << 31));
|
- bmips_rac_flush_disable = !!(read_c0_brcm_cmt_local() & (1 << 31)) ||
|
||||||
|
- !!BMIPS_GET_CBR();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void bcm6368_quirks(void)
|
static void bcm6368_quirks(void)
|
||||||
@@ -198,6 +192,11 @@ static const struct bmips_quirk bmips_qu
|
@@ -199,6 +192,11 @@ static const struct bmips_quirk bmips_qu
|
||||||
|
|
||||||
void __init prom_init(void)
|
void __init prom_init(void)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ Signed-off-by: Alexei Starovoitov <ast@kernel.org>
|
|||||||
int xdp_rxq_info_reg(struct xdp_rxq_info *xdp_rxq,
|
int xdp_rxq_info_reg(struct xdp_rxq_info *xdp_rxq,
|
||||||
--- a/net/core/xdp.c
|
--- a/net/core/xdp.c
|
||||||
+++ b/net/core/xdp.c
|
+++ b/net/core/xdp.c
|
||||||
@@ -409,12 +409,38 @@ static void __xdp_return(void *data, str
|
@@ -407,12 +407,38 @@ static void __xdp_return(void *data, str
|
||||||
|
|
||||||
void xdp_return_frame(struct xdp_frame *xdpf)
|
void xdp_return_frame(struct xdp_frame *xdpf)
|
||||||
{
|
{
|
||||||
@@ -87,7 +87,7 @@ Signed-off-by: Alexei Starovoitov <ast@kernel.org>
|
|||||||
__xdp_return(xdpf->data, &xdpf->mem, true, NULL);
|
__xdp_return(xdpf->data, &xdpf->mem, true, NULL);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(xdp_return_frame_rx_napi);
|
EXPORT_SYMBOL_GPL(xdp_return_frame_rx_napi);
|
||||||
@@ -450,7 +476,7 @@ void xdp_return_frame_bulk(struct xdp_fr
|
@@ -448,7 +474,7 @@ void xdp_return_frame_bulk(struct xdp_fr
|
||||||
struct xdp_mem_allocator *xa;
|
struct xdp_mem_allocator *xa;
|
||||||
|
|
||||||
if (mem->type != MEM_TYPE_PAGE_POOL) {
|
if (mem->type != MEM_TYPE_PAGE_POOL) {
|
||||||
@@ -96,7 +96,7 @@ Signed-off-by: Alexei Starovoitov <ast@kernel.org>
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -469,12 +495,38 @@ void xdp_return_frame_bulk(struct xdp_fr
|
@@ -467,12 +493,38 @@ void xdp_return_frame_bulk(struct xdp_fr
|
||||||
bq->xa = rhashtable_lookup(mem_id_ht, &mem->id, mem_id_rht_params);
|
bq->xa = rhashtable_lookup(mem_id_ht, &mem->id, mem_id_rht_params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1270,7 +1270,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
if (i >= priv->plat->tx_queues_to_use)
|
if (i >= priv->plat->tx_queues_to_use)
|
||||||
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
|
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
|
||||||
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
|
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
|
||||||
@@ -971,13 +971,13 @@ static int tc_setup_etf(struct stmmac_pr
|
@@ -972,13 +972,13 @@ static int tc_setup_etf(struct stmmac_pr
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
if (qopt->queue >= priv->plat->tx_queues_to_use)
|
if (qopt->queue >= priv->plat->tx_queues_to_use)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
if (!memcmp(id.base.vendor_name, "ALCATELLUCENT ", 16) &&
|
if (!memcmp(id.base.vendor_name, "ALCATELLUCENT ", 16) &&
|
||||||
!memcmp(id.base.vendor_pn, "3FE46541AA ", 16))
|
!memcmp(id.base.vendor_pn, "3FE46541AA ", 16))
|
||||||
sfp->module_t_start_up = T_START_UP_BAD_GPON;
|
sfp->module_t_start_up = T_START_UP_BAD_GPON;
|
||||||
@@ -2568,6 +2580,8 @@ static int sfp_probe(struct platform_dev
|
@@ -2567,6 +2579,8 @@ static int sfp_probe(struct platform_dev
|
||||||
return PTR_ERR(sfp->gpio[i]);
|
return PTR_ERR(sfp->gpio[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -254,7 +254,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2077,7 +2168,8 @@ static void sfp_sm_module(struct sfp *sf
|
@@ -2076,7 +2167,8 @@ static void sfp_sm_module(struct sfp *sf
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Report the module insertion to the upstream device */
|
/* Report the module insertion to the upstream device */
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/drivers/net/usb/ax88179_178a.c
|
--- a/drivers/net/usb/ax88179_178a.c
|
||||||
+++ b/drivers/net/usb/ax88179_178a.c
|
+++ b/drivers/net/usb/ax88179_178a.c
|
||||||
@@ -1333,11 +1333,12 @@ static int ax88179_bind(struct usbnet *d
|
@@ -1334,11 +1334,12 @@ static int ax88179_bind(struct usbnet *d
|
||||||
dev->mii.phy_id = 0x03;
|
dev->mii.phy_id = 0x03;
|
||||||
dev->mii.supports_gmii = 1;
|
dev->mii.supports_gmii = 1;
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
ax88179_reset(dev);
|
ax88179_reset(dev);
|
||||||
|
|
||||||
@@ -1502,17 +1503,19 @@ ax88179_tx_fixup(struct usbnet *dev, str
|
@@ -1503,17 +1504,19 @@ ax88179_tx_fixup(struct usbnet *dev, str
|
||||||
{
|
{
|
||||||
u32 tx_hdr1, tx_hdr2;
|
u32 tx_hdr1, tx_hdr2;
|
||||||
int frame_size = dev->maxpacket;
|
int frame_size = dev->maxpacket;
|
||||||
@@ -57,7 +57,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
if ((skb_header_cloned(skb) || headroom < 0) &&
|
if ((skb_header_cloned(skb) || headroom < 0) &&
|
||||||
pskb_expand_head(skb, headroom < 0 ? 8 : 0, 0, GFP_ATOMIC)) {
|
pskb_expand_head(skb, headroom < 0 ? 8 : 0, 0, GFP_ATOMIC)) {
|
||||||
dev_kfree_skb_any(skb);
|
dev_kfree_skb_any(skb);
|
||||||
@@ -1523,6 +1526,8 @@ ax88179_tx_fixup(struct usbnet *dev, str
|
@@ -1524,6 +1527,8 @@ ax88179_tx_fixup(struct usbnet *dev, str
|
||||||
put_unaligned_le32(tx_hdr1, ptr);
|
put_unaligned_le32(tx_hdr1, ptr);
|
||||||
put_unaligned_le32(tx_hdr2, ptr + 4);
|
put_unaligned_le32(tx_hdr2, ptr + 4);
|
||||||
|
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
*/
|
*/
|
||||||
--- a/include/linux/skbuff.h
|
--- a/include/linux/skbuff.h
|
||||||
+++ b/include/linux/skbuff.h
|
+++ b/include/linux/skbuff.h
|
||||||
@@ -2870,6 +2870,10 @@ static inline int pskb_trim(struct sk_bu
|
@@ -2872,6 +2872,10 @@ static inline int pskb_trim(struct sk_bu
|
||||||
return (len < skb->len) ? __pskb_trim(skb, len) : 0;
|
return (len < skb->len) ? __pskb_trim(skb, len) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
/**
|
/**
|
||||||
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
|
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
|
||||||
* @skb: buffer to alter
|
* @skb: buffer to alter
|
||||||
@@ -3020,16 +3024,6 @@ static inline struct sk_buff *dev_alloc_
|
@@ -3022,16 +3026,6 @@ static inline struct sk_buff *dev_alloc_
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
||||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
||||||
@@ -4215,12 +4215,10 @@ static irqreturn_t dpni_irq0_handler_thr
|
@@ -4219,12 +4219,10 @@ static irqreturn_t dpni_irq0_handler_thr
|
||||||
dpaa2_eth_set_mac_addr(netdev_priv(net_dev));
|
dpaa2_eth_set_mac_addr(netdev_priv(net_dev));
|
||||||
dpaa2_eth_update_tx_fqids(priv);
|
dpaa2_eth_update_tx_fqids(priv);
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|||||||
}
|
}
|
||||||
|
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
@@ -4516,9 +4514,7 @@ static int dpaa2_eth_remove(struct fsl_m
|
@@ -4520,9 +4518,7 @@ static int dpaa2_eth_remove(struct fsl_m
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
unregister_netdev(net_dev);
|
unregister_netdev(net_dev);
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
// Lantech 8330-262D-E can operate at 2500base-X, but
|
// Lantech 8330-262D-E can operate at 2500base-X, but
|
||||||
// incorrectly report 2500MBd NRZ in their EEPROM
|
// incorrectly report 2500MBd NRZ in their EEPROM
|
||||||
.vendor = "Lantech",
|
.vendor = "Lantech",
|
||||||
@@ -2319,7 +2324,8 @@ static void sfp_sm_main(struct sfp *sfp,
|
@@ -2318,7 +2323,8 @@ static void sfp_sm_main(struct sfp *sfp,
|
||||||
* or t_start_up, so assume there is a fault.
|
* or t_start_up, so assume there is a fault.
|
||||||
*/
|
*/
|
||||||
sfp_sm_fault(sfp, SFP_S_INIT_TX_FAULT,
|
sfp_sm_fault(sfp, SFP_S_INIT_TX_FAULT,
|
||||||
@@ -48,7 +48,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
} else if (event == SFP_E_TIMEOUT || event == SFP_E_TX_CLEAR) {
|
} else if (event == SFP_E_TIMEOUT || event == SFP_E_TX_CLEAR) {
|
||||||
init_done:
|
init_done:
|
||||||
sfp->sm_phy_retries = R_PHY_RETRY;
|
sfp->sm_phy_retries = R_PHY_RETRY;
|
||||||
@@ -2542,10 +2548,12 @@ static void sfp_check_state(struct sfp *
|
@@ -2541,10 +2547,12 @@ static void sfp_check_state(struct sfp *
|
||||||
mutex_lock(&sfp->st_mutex);
|
mutex_lock(&sfp->st_mutex);
|
||||||
state = sfp_get_state(sfp);
|
state = sfp_get_state(sfp);
|
||||||
changed = state ^ sfp->state;
|
changed = state ^ sfp->state;
|
||||||
|
|||||||
@@ -330,7 +330,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/net/core/sock.c
|
--- a/net/core/sock.c
|
||||||
+++ b/net/core/sock.c
|
+++ b/net/core/sock.c
|
||||||
@@ -3900,6 +3900,8 @@ static __net_initdata struct pernet_oper
|
@@ -3894,6 +3894,8 @@ static __net_initdata struct pernet_oper
|
||||||
|
|
||||||
static int __init proto_init(void)
|
static int __init proto_init(void)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||||
goto drop;
|
goto drop;
|
||||||
|
|
||||||
@@ -3345,6 +3347,7 @@ static int packet_create(struct net *net
|
@@ -3343,6 +3345,7 @@ static int packet_create(struct net *net
|
||||||
mutex_init(&po->pg_vec_lock);
|
mutex_init(&po->pg_vec_lock);
|
||||||
po->rollover = NULL;
|
po->rollover = NULL;
|
||||||
po->prot_hook.func = packet_rcv;
|
po->prot_hook.func = packet_rcv;
|
||||||
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
if (sock->type == SOCK_PACKET)
|
if (sock->type == SOCK_PACKET)
|
||||||
po->prot_hook.func = packet_rcv_spkt;
|
po->prot_hook.func = packet_rcv_spkt;
|
||||||
@@ -3982,6 +3985,16 @@ packet_setsockopt(struct socket *sock, i
|
@@ -3980,6 +3983,16 @@ packet_setsockopt(struct socket *sock, i
|
||||||
WRITE_ONCE(po->xmit, val ? packet_direct_xmit : dev_queue_xmit);
|
WRITE_ONCE(po->xmit, val ? packet_direct_xmit : dev_queue_xmit);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
default:
|
default:
|
||||||
return -ENOPROTOOPT;
|
return -ENOPROTOOPT;
|
||||||
}
|
}
|
||||||
@@ -4038,6 +4051,13 @@ static int packet_getsockopt(struct sock
|
@@ -4036,6 +4049,13 @@ static int packet_getsockopt(struct sock
|
||||||
case PACKET_VNET_HDR:
|
case PACKET_VNET_HDR:
|
||||||
val = po->has_vnet_hdr;
|
val = po->has_vnet_hdr;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/include/linux/skbuff.h
|
--- a/include/linux/skbuff.h
|
||||||
+++ b/include/linux/skbuff.h
|
+++ b/include/linux/skbuff.h
|
||||||
@@ -2836,7 +2836,7 @@ static inline int pskb_network_may_pull(
|
@@ -2838,7 +2838,7 @@ static inline int pskb_network_may_pull(
|
||||||
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
|
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
|
||||||
*/
|
*/
|
||||||
#ifndef NET_SKB_PAD
|
#ifndef NET_SKB_PAD
|
||||||
|
|||||||
@@ -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),
|
||||||
@@ -1034,6 +1048,7 @@ static const int fib6_prop[RTN_MAX + 1]
|
@@ -1036,6 +1050,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,
|
||||||
@@ -1069,6 +1084,10 @@ static void ip6_rt_init_dst_reject(struc
|
@@ -1071,6 +1086,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:
|
||||||
@@ -4561,6 +4580,17 @@ static int ip6_pkt_prohibit_out(struct n
|
@@ -4564,6 +4583,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.
|
||||||
*/
|
*/
|
||||||
@@ -5048,7 +5078,8 @@ static int rtm_to_fib6_config(struct sk_
|
@@ -5051,7 +5081,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)
|
||||||
@@ -6295,6 +6326,8 @@ static int ip6_route_dev_notify(struct n
|
@@ -6298,6 +6329,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
|
||||||
@@ -6306,6 +6339,7 @@ static int ip6_route_dev_notify(struct n
|
@@ -6309,6 +6342,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
|
||||||
}
|
}
|
||||||
@@ -6497,6 +6531,8 @@ static int __net_init ip6_route_net_init
|
@@ -6500,6 +6534,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);
|
||||||
@@ -6507,11 +6543,21 @@ static int __net_init ip6_route_net_init
|
@@ -6510,11 +6546,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);
|
||||||
@@ -6538,6 +6584,8 @@ out:
|
@@ -6541,6 +6587,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:
|
||||||
@@ -6557,6 +6605,7 @@ static void __net_exit ip6_route_net_exi
|
@@ -6560,6 +6608,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);
|
||||||
@@ -6640,6 +6689,9 @@ void __init ip6_route_init_special_entri
|
@@ -6643,6 +6692,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);
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/net/netfilter/nf_tables_api.c
|
--- a/net/netfilter/nf_tables_api.c
|
||||||
+++ b/net/netfilter/nf_tables_api.c
|
+++ b/net/netfilter/nf_tables_api.c
|
||||||
@@ -7811,7 +7811,7 @@ static int nft_register_flowtable_net_ho
|
@@ -7810,7 +7810,7 @@ static int nft_register_flowtable_net_ho
|
||||||
err = flowtable->data.type->setup(&flowtable->data,
|
err = flowtable->data.type->setup(&flowtable->data,
|
||||||
hook->ops.dev,
|
hook->ops.dev,
|
||||||
FLOW_BLOCK_BIND);
|
FLOW_BLOCK_BIND);
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ Signed-off-by: Alexander Duyck <alexanderduyck@fb.com>
|
|||||||
|
|
||||||
--- a/net/core/skbuff.c
|
--- a/net/core/skbuff.c
|
||||||
+++ b/net/core/skbuff.c
|
+++ b/net/core/skbuff.c
|
||||||
@@ -4371,6 +4371,15 @@ int skb_gro_receive(struct sk_buff *p, s
|
@@ -4395,6 +4395,15 @@ int skb_gro_receive(struct sk_buff *p, s
|
||||||
if (unlikely(p->len + len >= 65536 || NAPI_GRO_CB(skb)->flush))
|
if (unlikely(p->len + len >= 65536 || NAPI_GRO_CB(skb)->flush))
|
||||||
return -E2BIG;
|
return -E2BIG;
|
||||||
|
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
From 3f1a227cb071f65f6ecc4db9f399649869735a7c Mon Sep 17 00:00:00 2001
|
|
||||||
From: David Bauer <mail@david-bauer.net>
|
|
||||||
Date: Sat, 17 Feb 2024 22:34:59 +0100
|
|
||||||
Subject: [PATCH] net vxlan: don't learn non-unicast L2 destinations
|
|
||||||
|
|
||||||
This patch avoids learning non-unicast targets in the vxlan FDB.
|
|
||||||
They are non-unicast and thus should be sent to the broadcast-IPv6
|
|
||||||
instead of a unicast address.
|
|
||||||
|
|
||||||
Link: https://lore.kernel.org/netdev/15ee0cc7-9252-466b-8ce7-5225d605dde8@david-bauer.net/
|
|
||||||
Link: https://github.com/freifunk-gluon/gluon/issues/3191
|
|
||||||
|
|
||||||
Signed-off-by: David Bauer <mail@david-bauer.net>
|
|
||||||
---
|
|
||||||
drivers/net/vxlan.c | 4 ++++
|
|
||||||
1 file changed, 4 insertions(+)
|
|
||||||
|
|
||||||
--- a/drivers/net/vxlan/vxlan_core.c
|
|
||||||
+++ b/drivers/net/vxlan/vxlan_core.c
|
|
||||||
@@ -1493,6 +1493,10 @@ static bool vxlan_snoop(struct net_devic
|
|
||||||
struct vxlan_fdb *f;
|
|
||||||
u32 ifindex = 0;
|
|
||||||
|
|
||||||
+ /* Don't learn broadcast packets */
|
|
||||||
+ if (is_multicast_ether_addr(src_mac) || is_zero_ether_addr(src_mac))
|
|
||||||
+ return false;
|
|
||||||
+
|
|
||||||
#if IS_ENABLED(CONFIG_IPV6)
|
|
||||||
if (src_ip->sa.sa_family == AF_INET6 &&
|
|
||||||
(ipv6_addr_type(&src_ip->sin6.sin6_addr) & IPV6_ADDR_LINKLOCAL))
|
|
||||||
@@ -5479,7 +5479,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
(transaction layer end-to-end CRC checking).
|
(transaction layer end-to-end CRC checking).
|
||||||
--- a/include/linux/pci.h
|
--- a/include/linux/pci.h
|
||||||
+++ b/include/linux/pci.h
|
+++ b/include/linux/pci.h
|
||||||
@@ -1483,6 +1483,8 @@ void pci_walk_bus(struct pci_bus *top, i
|
@@ -1492,6 +1492,8 @@ void pci_walk_bus(struct pci_bus *top, i
|
||||||
void *userdata);
|
void *userdata);
|
||||||
int pci_cfg_space_size(struct pci_dev *dev);
|
int pci_cfg_space_size(struct pci_dev *dev);
|
||||||
unsigned char pci_bus_max_busnr(struct pci_bus *bus);
|
unsigned char pci_bus_max_busnr(struct pci_bus *bus);
|
||||||
|
|||||||
@@ -1,53 +0,0 @@
|
|||||||
From c6af53f038aa32cec12e8a305ba07c7ef168f1b0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
|
|
||||||
Date: Tue, 4 Jan 2022 12:07:00 +0000
|
|
||||||
Subject: [PATCH 2/3] net: mdio: add helpers to extract clause 45 regad and
|
|
||||||
devad fields
|
|
||||||
|
|
||||||
Add a couple of helpers and definitions to extract the clause 45 regad
|
|
||||||
and devad fields from the regnum passed into MDIO drivers.
|
|
||||||
|
|
||||||
Tested-by: Daniel Golle <daniel@makrotopia.org>
|
|
||||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
|
||||||
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
|
|
||||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|
||||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
||||||
---
|
|
||||||
include/linux/mdio.h | 12 ++++++++++++
|
|
||||||
1 file changed, 12 insertions(+)
|
|
||||||
|
|
||||||
--- a/include/linux/mdio.h
|
|
||||||
+++ b/include/linux/mdio.h
|
|
||||||
@@ -7,6 +7,7 @@
|
|
||||||
#define __LINUX_MDIO_H__
|
|
||||||
|
|
||||||
#include <uapi/linux/mdio.h>
|
|
||||||
+#include <linux/bitfield.h>
|
|
||||||
#include <linux/mod_devicetable.h>
|
|
||||||
|
|
||||||
/* Or MII_ADDR_C45 into regnum for read/write on mii_bus to enable the 21 bit
|
|
||||||
@@ -14,6 +15,7 @@
|
|
||||||
*/
|
|
||||||
#define MII_ADDR_C45 (1<<30)
|
|
||||||
#define MII_DEVADDR_C45_SHIFT 16
|
|
||||||
+#define MII_DEVADDR_C45_MASK GENMASK(20, 16)
|
|
||||||
#define MII_REGADDR_C45_MASK GENMASK(15, 0)
|
|
||||||
|
|
||||||
struct gpio_desc;
|
|
||||||
@@ -355,6 +357,16 @@ static inline u32 mdiobus_c45_addr(int d
|
|
||||||
return MII_ADDR_C45 | devad << MII_DEVADDR_C45_SHIFT | regnum;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static inline u16 mdiobus_c45_regad(u32 regnum)
|
|
||||||
+{
|
|
||||||
+ return FIELD_GET(MII_REGADDR_C45_MASK, regnum);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline u16 mdiobus_c45_devad(u32 regnum)
|
|
||||||
+{
|
|
||||||
+ return FIELD_GET(MII_DEVADDR_C45_MASK, regnum);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static inline int __mdiobus_c45_read(struct mii_bus *bus, int prtad, int devad,
|
|
||||||
u16 regnum)
|
|
||||||
{
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
From c6af53f038aa32cec12e8a305ba07c7ef168f1b0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
|
|
||||||
Date: Tue, 4 Jan 2022 12:07:00 +0000
|
|
||||||
Subject: [PATCH 2/3] net: mdio: add helpers to extract clause 45 regad and
|
|
||||||
devad fields
|
|
||||||
|
|
||||||
Add a couple of helpers and definitions to extract the clause 45 regad
|
|
||||||
and devad fields from the regnum passed into MDIO drivers.
|
|
||||||
|
|
||||||
Tested-by: Daniel Golle <daniel@makrotopia.org>
|
|
||||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
|
||||||
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
|
|
||||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|
||||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
||||||
---
|
|
||||||
include/linux/mdio.h | 12 ++++++++++++
|
|
||||||
1 file changed, 12 insertions(+)
|
|
||||||
|
|
||||||
--- a/include/linux/mdio.h
|
|
||||||
+++ b/include/linux/mdio.h
|
|
||||||
@@ -7,6 +7,7 @@
|
|
||||||
#define __LINUX_MDIO_H__
|
|
||||||
|
|
||||||
#include <uapi/linux/mdio.h>
|
|
||||||
+#include <linux/bitfield.h>
|
|
||||||
#include <linux/mod_devicetable.h>
|
|
||||||
|
|
||||||
/* Or MII_ADDR_C45 into regnum for read/write on mii_bus to enable the 21 bit
|
|
||||||
@@ -14,6 +15,7 @@
|
|
||||||
*/
|
|
||||||
#define MII_ADDR_C45 (1<<30)
|
|
||||||
#define MII_DEVADDR_C45_SHIFT 16
|
|
||||||
+#define MII_DEVADDR_C45_MASK GENMASK(20, 16)
|
|
||||||
#define MII_REGADDR_C45_MASK GENMASK(15, 0)
|
|
||||||
|
|
||||||
struct gpio_desc;
|
|
||||||
@@ -355,6 +357,16 @@ static inline u32 mdiobus_c45_addr(int d
|
|
||||||
return MII_ADDR_C45 | devad << MII_DEVADDR_C45_SHIFT | regnum;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static inline u16 mdiobus_c45_regad(u32 regnum)
|
|
||||||
+{
|
|
||||||
+ return FIELD_GET(MII_REGADDR_C45_MASK, regnum);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline u16 mdiobus_c45_devad(u32 regnum)
|
|
||||||
+{
|
|
||||||
+ return FIELD_GET(MII_DEVADDR_C45_MASK, regnum);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static inline int __mdiobus_c45_read(struct mii_bus *bus, int prtad, int devad,
|
|
||||||
u16 regnum)
|
|
||||||
{
|
|
||||||
@@ -10,7 +10,7 @@ Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
|
|||||||
|
|
||||||
--- a/drivers/net/phy/sfp.c
|
--- a/drivers/net/phy/sfp.c
|
||||||
+++ b/drivers/net/phy/sfp.c
|
+++ b/drivers/net/phy/sfp.c
|
||||||
@@ -2160,6 +2160,13 @@ static void sfp_sm_module(struct sfp *sf
|
@@ -2159,6 +2159,13 @@ static void sfp_sm_module(struct sfp *sf
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user