LINUX_RELEASE?=1
-LINUX_VERSION-4.9 = .229
+LINUX_VERSION-4.9 = .232
LINUX_VERSION-4.14 = .193
-LINUX_KERNEL_HASH-4.9.229 = 3256c2835fd95a1a739603e78b02d363eac2ce73a39fa19b13b32da4fc370fdc
+LINUX_KERNEL_HASH-4.9.232 = 58f472e82345dc719a1d6d7bae01e5aa73387cd83308acd2c92371f7d5bc4f60
LINUX_KERNEL_HASH-4.14.193 = 0b0fb41d4430e1a42738b341cbfd2f41951aa5cd02acabbd53f076119c8b9f03
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
-@@ -3934,14 +3934,16 @@ static bool tcp_parse_aligned_timestamp(
+@@ -3935,14 +3935,16 @@ static bool tcp_parse_aligned_timestamp(
{
const __be32 *ptr = (const __be32 *)(th + 1);
static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
u32 *data, int in_pm)
{
-@@ -1961,7 +1965,8 @@ static int smsc95xx_rx_fixup(struct usbn
+@@ -1968,7 +1972,8 @@ static int smsc95xx_rx_fixup(struct usbn
if (dev->net->features & NETIF_F_RXCSUM)
smsc95xx_rx_csum_offload(skb);
skb_trim(skb, skb->len - 4); /* remove fcs */
return 1;
}
-@@ -1979,7 +1984,8 @@ static int smsc95xx_rx_fixup(struct usbn
+@@ -1986,7 +1991,8 @@ static int smsc95xx_rx_fixup(struct usbn
if (dev->net->features & NETIF_F_RXCSUM)
smsc95xx_rx_csum_offload(ax_skb);
skb_trim(ax_skb, ax_skb->len - 4); /* remove fcs */
--- a/include/linux/tcp.h
+++ b/include/linux/tcp.h
-@@ -368,7 +368,7 @@ struct tcp_sock {
+@@ -370,7 +370,7 @@ struct tcp_sock {
u32 *saved_syn;
};
TSQ_THROTTLED,
TSQ_QUEUED,
TCP_TSQ_DEFERRED, /* tcp_tasklet_func() found socket was owned */
-@@ -379,6 +379,15 @@ enum tsq_flags {
+@@ -381,6 +381,15 @@ enum tsq_flags {
*/
};
return (struct tcp_sock *)sk;
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
-@@ -790,10 +790,10 @@ static void tcp_tasklet_func(unsigned lo
+@@ -792,10 +792,10 @@ static void tcp_tasklet_func(unsigned lo
}
}
/**
* tcp_release_cb - tcp release_sock() callback
* @sk: socket
-@@ -814,7 +814,7 @@ void tcp_release_cb(struct sock *sk)
+@@ -816,7 +816,7 @@ void tcp_release_cb(struct sock *sk)
nflags = flags & ~TCP_DEFERRED_ALL;
} while (cmpxchg(&tp->tsq_flags, flags, nflags) != flags);
tcp_tsq_handler(sk);
/* Here begins the tricky part :
-@@ -828,15 +828,15 @@ void tcp_release_cb(struct sock *sk)
+@@ -830,15 +830,15 @@ void tcp_release_cb(struct sock *sk)
*/
sock_release_ownership(sk);
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
-@@ -866,6 +866,7 @@ void tcp_wfree(struct sk_buff *skb)
+@@ -868,6 +868,7 @@ void tcp_wfree(struct sk_buff *skb)
{
struct sock *sk = skb->sk;
struct tcp_sock *tp = tcp_sk(sk);
int wmem;
/* Keep one reference on sk_wmem_alloc.
-@@ -883,11 +884,17 @@ void tcp_wfree(struct sk_buff *skb)
+@@ -885,11 +886,17 @@ void tcp_wfree(struct sk_buff *skb)
if (wmem >= SKB_TRUESIZE(1) && this_cpu_ksoftirqd() == current)
goto out;
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
-@@ -773,19 +773,19 @@ static void tcp_tasklet_func(unsigned lo
+@@ -775,19 +775,19 @@ static void tcp_tasklet_func(unsigned lo
list_for_each_safe(q, n, &list) {
tp = list_entry(q, struct tcp_sock, tsq_node);
list_del(&tp->tsq_node);
sk_free(sk);
}
}
-@@ -890,7 +890,7 @@ void tcp_wfree(struct sk_buff *skb)
+@@ -892,7 +892,7 @@ void tcp_wfree(struct sk_buff *skb)
if (!(oval & TSQF_THROTTLED) || (oval & TSQF_QUEUED))
goto out;
nval = cmpxchg(&tp->tsq_flags, oval, nval);
if (nval != oval)
continue;
-@@ -2237,6 +2237,8 @@ static bool tcp_write_xmit(struct sock *
+@@ -2239,6 +2239,8 @@ static bool tcp_write_xmit(struct sock *
unlikely(tso_fragment(sk, skb, limit, mss_now, gfp)))
break;
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
-@@ -886,6 +886,7 @@ void tcp_wfree(struct sk_buff *skb)
+@@ -888,6 +888,7 @@ void tcp_wfree(struct sk_buff *skb)
for (oval = READ_ONCE(tp->tsq_flags);; oval = nval) {
struct tsq_tasklet *tsq;
if (!(oval & TSQF_THROTTLED) || (oval & TSQF_QUEUED))
goto out;
-@@ -898,8 +899,10 @@ void tcp_wfree(struct sk_buff *skb)
+@@ -900,8 +901,10 @@ void tcp_wfree(struct sk_buff *skb)
/* queue this socket to tasklet queue */
local_irq_save(flags);
tsq = this_cpu_ptr(&tsq_tasklet);
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
-@@ -2142,6 +2142,15 @@ static bool tcp_small_queue_check(struct
+@@ -2144,6 +2144,15 @@ static bool tcp_small_queue_check(struct
limit <<= factor;
if (atomic_read(&sk->sk_wmem_alloc) > limit) {
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
-@@ -1974,26 +1974,26 @@ static bool tcp_can_coalesce_send_queue_
+@@ -1976,26 +1976,26 @@ static bool tcp_can_coalesce_send_queue_
*/
static int tcp_mtu_probe(struct sock *sk)
{
goto out;
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
-@@ -773,14 +773,15 @@ static void tcp_tasklet_func(unsigned lo
+@@ -775,14 +775,15 @@ static void tcp_tasklet_func(unsigned lo
list_for_each_safe(q, n, &list) {
tp = list_entry(q, struct tcp_sock, tsq_node);
list_del(&tp->tsq_node);
tcp_tsq_handler(sk);
}
bh_unlock_sock(sk);
-@@ -803,16 +804,15 @@ static void tcp_tasklet_func(unsigned lo
+@@ -805,16 +806,15 @@ static void tcp_tasklet_func(unsigned lo
*/
void tcp_release_cb(struct sock *sk)
{
if (flags & TCPF_TSQ_DEFERRED)
tcp_tsq_handler(sk);
-@@ -884,7 +884,7 @@ void tcp_wfree(struct sk_buff *skb)
+@@ -886,7 +886,7 @@ void tcp_wfree(struct sk_buff *skb)
if (wmem >= SKB_TRUESIZE(1) && this_cpu_ksoftirqd() == current)
goto out;
struct tsq_tasklet *tsq;
bool empty;
-@@ -892,7 +892,7 @@ void tcp_wfree(struct sk_buff *skb)
+@@ -894,7 +894,7 @@ void tcp_wfree(struct sk_buff *skb)
goto out;
nval = (oval & ~TSQF_THROTTLED) | TSQF_QUEUED | TCPF_TSQ_DEFERRED;
if (nval != oval)
continue;
-@@ -2151,7 +2151,7 @@ static bool tcp_small_queue_check(struct
+@@ -2153,7 +2153,7 @@ static bool tcp_small_queue_check(struct
skb->prev == sk->sk_write_queue.next)
return false;
/* It is possible TX completion already happened
* before we set TSQ_THROTTLED, so we must
* test again the condition.
-@@ -2249,8 +2249,8 @@ static bool tcp_write_xmit(struct sock *
+@@ -2251,8 +2251,8 @@ static bool tcp_write_xmit(struct sock *
unlikely(tso_fragment(sk, skb, limit, mss_now, gfp)))
break;
if (tcp_small_queue_check(sk, skb, 0))
break;
-@@ -3569,8 +3569,6 @@ void __tcp_send_ack(struct sock *sk, u32
+@@ -3574,8 +3574,6 @@ void __tcp_send_ack(struct sock *sk, u32
/* We do not want pure acks influencing TCP Small Queues or fq/pacing
* too much.
* SKB_TRUESIZE(max(1 .. 66, MAX_TCP_HEADER)) is unfortunately ~784
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
-@@ -775,6 +775,7 @@ static void tcp_tasklet_func(unsigned lo
+@@ -777,6 +777,7 @@ static void tcp_tasklet_func(unsigned lo
list_del(&tp->tsq_node);
sk = (struct sock *)tp;
* Before updating sk_refcnt, we must commit prior changes to memory
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
-@@ -1607,7 +1607,7 @@ u32 tcp_tso_autosize(const struct sock *
+@@ -1609,7 +1609,7 @@ u32 tcp_tso_autosize(const struct sock *
{
u32 bytes, segs;
sk->sk_gso_max_size - 1 - MAX_TCP_HEADER);
/* Goal is to send at least one packet per ms,
-@@ -2138,7 +2138,7 @@ static bool tcp_small_queue_check(struct
+@@ -2140,7 +2140,7 @@ static bool tcp_small_queue_check(struct
{
unsigned int limit;
+++ /dev/null
-From: Alexey Brodkin <abrodkin@synopsys.com>
-Subject: usb: Remove annoying warning about bogus URB
-
-When ath9k-htc Wi-Fi dongle is used with generic OHCI controller
-infinite stream of warnings appears in debug console like this:
--------------------------->8----------------------
-usb 1-1: new full-speed USB device number 2 using ohci-platform
-usb 1-1: ath9k_htc: Firmware ath9k_htc/htc_9271-1.4.0.fw requested
-usb 1-1: ath9k_htc: Transferred FW: ath9k_htc/htc_9271-1.4.0.fw, size:
-51008
-------------[ cut here ]------------
-WARNING: CPU: 0 PID: 19 at drivers/usb/core/urb.c:449
-usb_submit_urb+0x1b4/0x498()
-usb 1-1: BOGUS urb xfer, pipe 1 != type 3
-Modules linked in:
-CPU: 0 PID: 19 Comm: kworker/0:1 Not tainted
-4.4.0-rc4-00017-g00e2d79-dirty #3
-Workqueue: events request_firmware_work_func
-
-Stack Trace:
- arc_unwind_core.constprop.1+0xa4/0x110
----[ end trace 649ef8c342817fc2 ]---
-------------[ cut here ]------------
-WARNING: CPU: 0 PID: 19 at drivers/usb/core/urb.c:449
-usb_submit_urb+0x1b4/0x498()
-usb 1-1: BOGUS urb xfer, pipe 1 != type 3
-Modules linked in:
-CPU: 0 PID: 19 Comm: kworker/0:1 Tainted: G W
-4.4.0-rc4-00017-g00e2d79-dirty #3
-Workqueue: events request_firmware_work_func
-
-Stack Trace:
- arc_unwind_core.constprop.1+0xa4/0x110
----[ end trace 649ef8c342817fc3 ]---
-------------[ cut here ]------------
--------------------------->8----------------------
-
-There're some discussions in mailing lists proposing to disable
-that particular check alltogether and magically all seem to work
-fine with muted warning.
-
-Anyways new thread on that regard could be found here:
-http://lists.infradead.org/pipermail/linux-snps-arc/2016-July/001310.html
-
-Let's see what comes out of that new discussion, hopefully patching
-of generic USB stuff won't be required then.
-
-Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
----
- drivers/usb/core/urb.c | 5 -----
- 1 file changed, 5 deletions(-)
-
---- a/drivers/usb/core/urb.c
-+++ b/drivers/usb/core/urb.c
-@@ -322,9 +322,6 @@ EXPORT_SYMBOL_GPL(usb_unanchor_urb);
- */
- int usb_submit_urb(struct urb *urb, gfp_t mem_flags)
- {
-- static int pipetypes[4] = {
-- PIPE_CONTROL, PIPE_ISOCHRONOUS, PIPE_BULK, PIPE_INTERRUPT
-- };
- int xfertype, max;
- struct usb_device *dev;
- struct usb_host_endpoint *ep;
-@@ -442,11 +439,6 @@ int usb_submit_urb(struct urb *urb, gfp_
- * cause problems in HCDs if they get it wrong.
- */
-
-- /* Check that the pipe's type matches the endpoint's type */
-- if (usb_pipetype(urb->pipe) != pipetypes[xfertype])
-- dev_WARN(&dev->dev, "BOGUS urb xfer, pipe %x != type %x\n",
-- usb_pipetype(urb->pipe), pipetypes[xfertype]);
--
- /* Check against a simple/standard policy */
- allowed = (URB_NO_TRANSFER_DMA_MAP | URB_NO_INTERRUPT | URB_DIR_MASK |
- URB_FREE_BUFFER);
#include <linux/platform_device.h>
#include <linux/phy/phy.h>
#include <linux/platform_data/s3c-hsotg.h>
-@@ -544,6 +545,7 @@ static int dwc2_driver_probe(struct plat
+@@ -545,6 +546,7 @@ static int dwc2_driver_probe(struct plat
struct dwc2_hsotg *hsotg;
struct resource *res;
int retval;
match = of_match_device(dwc2_of_match_table, &dev->dev);
if (match && match->data) {
-@@ -562,6 +564,16 @@ static int dwc2_driver_probe(struct plat
+@@ -563,6 +565,16 @@ static int dwc2_driver_probe(struct plat
defparams.dma_desc_fs_enable = 0;
}
.uframe_sched = -1,
.external_id_pin_ctl = -1,
.hibernation = -1,
-@@ -515,8 +575,11 @@ static const struct of_device_id dwc2_of
+@@ -516,8 +576,11 @@ static const struct of_device_id dwc2_of
{ .compatible = "brcm,bcm2835-usb", .data = ¶ms_bcm2835 },
{ .compatible = "hisilicon,hi6220-usb", .data = ¶ms_hi6220 },
{ .compatible = "rockchip,rk3066-usb", .data = ¶ms_rk3066 },
#define SPI_MCR_MASTER (1 << 31)
@@ -72,6 +75,11 @@
#define SPI_SR_TCFQF 0x80000000
- #define SPI_SR_CLEAR 0xdaad0000
+ #define SPI_SR_CLEAR 0x9aaf0000
+#define SPI_RSER_TFFFE BIT(25)
+#define SPI_RSER_TFFFD BIT(24)