-LINUX_VERSION-5.15 = .145
-LINUX_KERNEL_HASH-5.15.145 = b2a49d87605f3a9491581150315e22337c1afb599efc1e2737481be3a2d6d620
+LINUX_VERSION-5.15 = .146
+LINUX_KERNEL_HASH-5.15.146 = 5a807a5fa2a80ada957d8079681dfb5cc196ec26f43244d1c8a4fd7af592d192
--- a/net/bluetooth/smp.c
+++ b/net/bluetooth/smp.c
-@@ -2207,7 +2207,7 @@ mackey_and_ltk:
+@@ -2214,7 +2214,7 @@ mackey_and_ltk:
if (err)
return SMP_UNSPECIFIED;
if (hcon->out) {
sc_dhkey_check(smp);
SMP_ALLOW_CMD(smp, SMP_CMD_DHKEY_CHECK);
-@@ -2222,9 +2222,6 @@ mackey_and_ltk:
+@@ -2229,9 +2229,6 @@ mackey_and_ltk:
confirm_hint = 0;
confirm:
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
-@@ -3480,6 +3480,7 @@ static int __spi_validate_bits_per_word(
+@@ -3492,6 +3492,7 @@ static int __spi_validate_bits_per_word(
*/
int spi_setup(struct spi_device *spi)
{
unsigned bad_bits, ugly_bits;
int status;
-@@ -3501,6 +3502,14 @@ int spi_setup(struct spi_device *spi)
+@@ -3513,6 +3514,14 @@ int spi_setup(struct spi_device *spi)
(SPI_TX_DUAL | SPI_TX_QUAD | SPI_TX_OCTAL |
SPI_RX_DUAL | SPI_RX_QUAD | SPI_RX_OCTAL)))
return -EINVAL;
#include <linux/uaccess.h>
#include <asm/io.h>
-@@ -2243,6 +2245,69 @@ static void b44_adjust_link(struct net_d
+@@ -2245,6 +2247,69 @@ static void b44_adjust_link(struct net_d
}
}
static int b44_register_phy_one(struct b44 *bp)
{
__ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, };
-@@ -2279,6 +2344,9 @@ static int b44_register_phy_one(struct b
+@@ -2281,6 +2346,9 @@ static int b44_register_phy_one(struct b
if (!mdiobus_is_registered_device(bp->mii_bus, bp->phy_addr) &&
(sprom->boardflags_lo & (B44_BOARDFLAG_ROBO | B44_BOARDFLAG_ADM))) {
dev_info(sdev->dev,
"could not find PHY at %i, use fixed one\n",
bp->phy_addr);
-@@ -2473,6 +2541,7 @@ static void b44_remove_one(struct ssb_de
+@@ -2475,6 +2543,7 @@ static void b44_remove_one(struct ssb_de
unregister_netdev(dev);
if (bp->flags & B44_FLAG_EXTERNAL_PHY)
b44_unregister_phy_one(bp);
--- a/drivers/net/ethernet/broadcom/b44.c
+++ b/drivers/net/ethernet/broadcom/b44.c
-@@ -429,10 +429,34 @@ static void b44_wap54g10_workaround(stru
+@@ -430,10 +430,34 @@ static void b44_wap54g10_workaround(stru
error:
pr_warn("PHY: cannot reset MII transceiver isolate bit\n");
}
#endif
static int b44_setup_phy(struct b44 *bp)
-@@ -441,6 +465,7 @@ static int b44_setup_phy(struct b44 *bp)
+@@ -442,6 +466,7 @@ static int b44_setup_phy(struct b44 *bp)
int err;
b44_wap54g10_workaround(bp);
if (bp->flags & B44_FLAG_EXTERNAL_PHY)
return 0;
-@@ -2173,6 +2198,8 @@ static int b44_get_invariants(struct b44
+@@ -2175,6 +2200,8 @@ static int b44_get_invariants(struct b44
* valid PHY address. */
bp->phy_addr &= 0x1F;
#include <asm/byteorder.h>
#include <asm/irq.h>
-@@ -5557,6 +5561,72 @@ static void fotg210_init(struct fotg210_
+@@ -5554,6 +5558,72 @@ static void fotg210_init(struct fotg210_
}
/*
* fotg210_hcd_probe - initialize faraday FOTG210 HCDs
*
* Allocates basic resources for this USB host controller, and
-@@ -5633,6 +5703,12 @@ static int fotg210_hcd_probe(struct plat
+@@ -5630,6 +5700,12 @@ static int fotg210_hcd_probe(struct plat
fotg210_init(fotg210);
--- a/drivers/net/usb/ax88179_178a.c
+++ b/drivers/net/usb/ax88179_178a.c
-@@ -1377,11 +1377,12 @@ static int ax88179_bind(struct usbnet *d
+@@ -1363,11 +1363,12 @@ static int ax88179_bind(struct usbnet *d
dev->mii.phy_id = 0x03;
dev->mii.supports_gmii = 1;
/* Enable checksum offload */
*tmp = AX_RXCOE_IP | AX_RXCOE_TCP | AX_RXCOE_UDP |
-@@ -1587,17 +1588,19 @@ ax88179_tx_fixup(struct usbnet *dev, str
+@@ -1573,17 +1574,19 @@ ax88179_tx_fixup(struct usbnet *dev, str
{
u32 tx_hdr1, tx_hdr2;
int frame_size = dev->maxpacket;
if ((skb_header_cloned(skb) || headroom < 0) &&
pskb_expand_head(skb, headroom < 0 ? 8 : 0, 0, GFP_ATOMIC)) {
dev_kfree_skb_any(skb);
-@@ -1608,6 +1611,8 @@ ax88179_tx_fixup(struct usbnet *dev, str
+@@ -1594,6 +1597,8 @@ ax88179_tx_fixup(struct usbnet *dev, str
put_unaligned_le32(tx_hdr1, ptr);
put_unaligned_le32(tx_hdr2, ptr + 4);
* of_find_node_by_phandle - Find a node given a phandle
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
-@@ -2128,8 +2128,8 @@ of_register_spi_device(struct spi_contro
+@@ -2140,8 +2140,8 @@ of_register_spi_device(struct spi_contro
}
/* Select device driver */
help
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -3597,6 +3597,11 @@ static int xmit_one(struct sk_buff *skb,
+@@ -3600,6 +3600,11 @@ static int xmit_one(struct sk_buff *skb,
if (dev_nit_active(dev))
dev_queue_xmit_nit(skb, dev);
#define QUECTEL_VENDOR_ID 0x2c7c
/* These Quectel products use Quectel's vendor ID */
-@@ -1146,6 +1151,11 @@ static const struct usb_device_id option
+@@ -1147,6 +1152,11 @@ static const struct usb_device_id option
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000), /* SIMCom SIM5218 */
.driver_info = NCTRL(0) | NCTRL(1) | NCTRL(2) | NCTRL(3) | RSVD(4) },
/* Quectel products using Qualcomm vendor ID */
{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC15)},
{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC20),
-@@ -1187,6 +1197,11 @@ static const struct usb_device_id option
+@@ -1188,6 +1198,11 @@ static const struct usb_device_id option
.driver_info = ZLP },
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
.driver_info = RSVD(4) },
__u8 inner_protocol_type:1;
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -6074,6 +6074,9 @@ static enum gro_result dev_gro_receive(s
+@@ -6077,6 +6077,9 @@ static enum gro_result dev_gro_receive(s
int same_flow;
int grow;
if (netif_elide_gro(skb->dev))
goto normal;
-@@ -8088,6 +8091,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -8091,6 +8094,48 @@ static void __netdev_adjacent_dev_unlink
&upper_dev->adj_list.lower);
}
static int __netdev_upper_dev_link(struct net_device *dev,
struct net_device *upper_dev, bool master,
void *upper_priv, void *upper_info,
-@@ -8139,6 +8184,7 @@ static int __netdev_upper_dev_link(struc
+@@ -8142,6 +8187,7 @@ static int __netdev_upper_dev_link(struc
if (ret)
return ret;
ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
&changeupper_info.info);
ret = notifier_to_errno(ret);
-@@ -8235,6 +8281,7 @@ static void __netdev_upper_dev_unlink(st
+@@ -8238,6 +8284,7 @@ static void __netdev_upper_dev_unlink(st
__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
&changeupper_info.info);
-@@ -9054,6 +9101,7 @@ int dev_set_mac_address(struct net_devic
+@@ -9057,6 +9104,7 @@ int dev_set_mac_address(struct net_devic
if (err)
return err;
dev->addr_assign_type = NET_ADDR_SET;
#endif
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -4583,7 +4583,7 @@ static int rps_ipi_queued(struct softnet
+@@ -4586,7 +4586,7 @@ static int rps_ipi_queued(struct softnet
#ifdef CONFIG_RPS
struct softnet_data *mysd = this_cpu_ptr(&softnet_data);
sd->rps_ipi_next = mysd->rps_ipi_list;
mysd->rps_ipi_list = sd;
-@@ -5764,6 +5764,8 @@ static DEFINE_PER_CPU(struct work_struct
+@@ -5767,6 +5767,8 @@ static DEFINE_PER_CPU(struct work_struct
/* Network device is going away, flush any packets still pending */
static void flush_backlog(struct work_struct *work)
{
struct sk_buff *skb, *tmp;
struct softnet_data *sd;
-@@ -5779,9 +5781,18 @@ static void flush_backlog(struct work_st
+@@ -5782,9 +5784,18 @@ static void flush_backlog(struct work_st
input_queue_head_incr(sd);
}
}
skb_queue_walk_safe(&sd->process_queue, skb, tmp) {
if (skb->dev->reg_state == NETREG_UNREGISTERING) {
__skb_unlink(skb, &sd->process_queue);
-@@ -5789,7 +5800,18 @@ static void flush_backlog(struct work_st
+@@ -5792,7 +5803,18 @@ static void flush_backlog(struct work_st
input_queue_head_incr(sd);
}
}
}
static bool flush_required(int cpu)
-@@ -6472,6 +6494,7 @@ static int process_backlog(struct napi_s
+@@ -6475,6 +6497,7 @@ static int process_backlog(struct napi_s
local_irq_disable();
rps_lock(sd);
if (skb_queue_empty(&sd->input_pkt_queue)) {
/*
* Inline a custom version of __napi_complete().
-@@ -6481,7 +6504,8 @@ static int process_backlog(struct napi_s
+@@ -6484,7 +6507,8 @@ static int process_backlog(struct napi_s
* We can use a plain write instead of clear_bit(),
* and we dont need an smp_mb() memory barrier.
*/
again = false;
} else {
skb_queue_splice_tail_init(&sd->input_pkt_queue,
-@@ -6898,6 +6922,57 @@ int dev_set_threaded(struct net_device *
+@@ -6901,6 +6925,57 @@ int dev_set_threaded(struct net_device *
}
EXPORT_SYMBOL(dev_set_threaded);
void netif_napi_add(struct net_device *dev, struct napi_struct *napi,
int (*poll)(struct napi_struct *, int), int weight)
{
-@@ -11378,6 +11453,9 @@ static int dev_cpu_dead(unsigned int old
+@@ -11381,6 +11456,9 @@ static int dev_cpu_dead(unsigned int old
raise_softirq_irqoff(NET_TX_SOFTIRQ);
local_irq_enable();
#ifdef CONFIG_RPS
remsd = oldsd->rps_ipi_list;
oldsd->rps_ipi_list = NULL;
-@@ -11717,6 +11795,7 @@ static int __init net_dev_init(void)
+@@ -11720,6 +11798,7 @@ static int __init net_dev_init(void)
sd->cpu = i;
#endif
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
-@@ -1234,6 +1234,70 @@ static int spi_transfer_wait(struct spi_
+@@ -1246,6 +1246,70 @@ static int spi_transfer_wait(struct spi_
return 0;
}
static void _spi_transfer_delay_ns(u32 ns)
{
if (!ns)
-@@ -2021,6 +2085,75 @@ void spi_flush_queue(struct spi_controll
+@@ -2033,6 +2097,75 @@ void spi_flush_queue(struct spi_controll
/*-------------------------------------------------------------------------*/
#if defined(CONFIG_OF)
static int of_spi_parse_dt(struct spi_controller *ctlr, struct spi_device *spi,
struct device_node *nc)
{
-@@ -2139,6 +2272,10 @@ of_register_spi_device(struct spi_contro
+@@ -2151,6 +2284,10 @@ of_register_spi_device(struct spi_contro
if (rc)
goto err_out;
idev->adapter.dev.parent = &pdev->dev;
--- a/drivers/i2c/busses/i2c-aspeed.c
+++ b/drivers/i2c/busses/i2c-aspeed.c
-@@ -1028,7 +1028,7 @@ static int aspeed_i2c_probe_bus(struct p
+@@ -1044,7 +1044,7 @@ static int aspeed_i2c_probe_bus(struct p
bus->adap.algo = &aspeed_i2c_algo;
bus->adap.dev.parent = &pdev->dev;
bus->adap.dev.of_node = pdev->dev.of_node;