-LINUX_VERSION-5.15 = .136
-LINUX_KERNEL_HASH-5.15.136 = c624b9fe7ee4708d34cfd0b7ebc58037afac7463338cc498641ea31c55eeacb8
+LINUX_VERSION-5.15 = .137
+LINUX_KERNEL_HASH-5.15.137 = 9749b21609f9e7ad9c46160c2c107db823b99cef77fa6cb080b6c2dc685fb2f7
}
}
-@@ -1241,9 +1278,14 @@ static const u16 bcm_sf2_4908_reg_offset
+@@ -1247,9 +1284,14 @@ static const u16 bcm_sf2_4908_reg_offset
[REG_SPHY_CNTRL] = 0x24,
[REG_CROSSBAR] = 0xc8,
[REG_RGMII_11_CNTRL] = 0x014c,
--- a/drivers/net/dsa/bcm_sf2.c
+++ b/drivers/net/dsa/bcm_sf2.c
-@@ -1542,10 +1542,14 @@ static int bcm_sf2_sw_probe(struct platf
+@@ -1548,10 +1548,14 @@ static int bcm_sf2_sw_probe(struct platf
rev = reg_readl(priv, REG_PHY_REVISION);
priv->hw_params.gphy_rev = rev & PHY_REVISION_MASK;
--- a/drivers/net/dsa/bcm_sf2.c
+++ b/drivers/net/dsa/bcm_sf2.c
-@@ -1556,6 +1556,12 @@ static int bcm_sf2_sw_probe(struct platf
+@@ -1562,6 +1562,12 @@ static int bcm_sf2_sw_probe(struct platf
priv->hw_params.core_rev >> 8, priv->hw_params.core_rev & 0xff,
priv->irq0, priv->irq1);
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -763,6 +763,10 @@ int dev_fill_forward_path(const struct n
+@@ -769,6 +769,10 @@ int dev_fill_forward_path(const struct n
if (WARN_ON_ONCE(last_dev == ctx.dev))
return -1;
}
}
--- a/drivers/net/dsa/bcm_sf2.c
+++ b/drivers/net/dsa/bcm_sf2.c
-@@ -686,7 +686,7 @@ static void bcm_sf2_sw_validate(struct d
+@@ -692,7 +692,7 @@ static void bcm_sf2_sw_validate(struct d
state->interface != PHY_INTERFACE_MODE_GMII &&
state->interface != PHY_INTERFACE_MODE_INTERNAL &&
state->interface != PHY_INTERFACE_MODE_MOCA) {
if (port != core_readl(priv, CORE_IMP0_PRT_ID))
dev_err(ds->dev,
"Unsupported interface: %d for port %d\n",
-@@ -714,10 +714,8 @@ static void bcm_sf2_sw_validate(struct d
+@@ -720,10 +720,8 @@ static void bcm_sf2_sw_validate(struct d
phylink_set(mask, 100baseT_Half);
phylink_set(mask, 100baseT_Full);
/* Specifies the type of the struct net_device::ml_priv pointer */
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -1222,22 +1222,6 @@ int dev_change_name(struct net_device *d
+@@ -1242,22 +1242,6 @@ int dev_change_name(struct net_device *d
net = dev_net(dev);
down_write(&devnet_rename_sem);
if (strncmp(newname, dev->name, IFNAMSIZ) == 0) {
-@@ -1254,7 +1238,8 @@ int dev_change_name(struct net_device *d
+@@ -1274,7 +1258,8 @@ int dev_change_name(struct net_device *d
}
if (oldname[0] && !strchr(oldname, '%'))
help
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -3577,6 +3577,11 @@ static int xmit_one(struct sk_buff *skb,
+@@ -3597,6 +3597,11 @@ static int xmit_one(struct sk_buff *skb,
if (dev_nit_active(dev))
dev_queue_xmit_nit(skb, dev);
{QMI_FIXED_INTF(0x0408, 0xea42, 4)}, /* Yota / Megafon M100-1 */
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
-@@ -244,6 +244,8 @@ static void option_instat_callback(struc
+@@ -247,6 +247,8 @@ static void option_instat_callback(struc
#define UBLOX_PRODUCT_R410M 0x90b2
/* These Yuga products use Qualcomm's vendor ID */
#define YUGA_PRODUCT_CLM920_NC5 0x9625
#define QUECTEL_VENDOR_ID 0x2c7c
/* These Quectel products use Quectel's vendor ID */
-@@ -1180,6 +1182,11 @@ static const struct usb_device_id option
+@@ -1185,6 +1187,11 @@ static const struct usb_device_id option
.driver_info = ZLP },
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
.driver_info = RSVD(4) },
--- a/net/ipv4/fib_trie.c
+++ b/net/ipv4/fib_trie.c
-@@ -3025,11 +3025,13 @@ static const struct seq_operations fib_r
+@@ -3029,11 +3029,13 @@ static const struct seq_operations fib_r
int __net_init fib_proc_init(struct net *net)
{
fib_triestat_seq_show, NULL))
goto out2;
-@@ -3040,17 +3042,21 @@ int __net_init fib_proc_init(struct net
+@@ -3044,17 +3046,21 @@ int __net_init fib_proc_init(struct net
return 0;
out3:
static void rt_fibinfo_free(struct rtable __rcu **rtp)
--- a/net/ipv4/fib_trie.c
+++ b/net/ipv4/fib_trie.c
-@@ -2773,6 +2773,7 @@ static const char *const rtn_type_names[
+@@ -2777,6 +2777,7 @@ static const char *const rtn_type_names[
[RTN_THROW] = "THROW",
[RTN_NAT] = "NAT",
[RTN_XRESOLVE] = "XRESOLVE",
__u8 inner_protocol_type:1;
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -6054,6 +6054,9 @@ static enum gro_result dev_gro_receive(s
+@@ -6074,6 +6074,9 @@ static enum gro_result dev_gro_receive(s
int same_flow;
int grow;
if (netif_elide_gro(skb->dev))
goto normal;
-@@ -8068,6 +8071,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -8088,6 +8091,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,
-@@ -8119,6 +8164,7 @@ static int __netdev_upper_dev_link(struc
+@@ -8139,6 +8184,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);
-@@ -8215,6 +8261,7 @@ static void __netdev_upper_dev_unlink(st
+@@ -8235,6 +8281,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);
-@@ -9034,6 +9081,7 @@ int dev_set_mac_address(struct net_devic
+@@ -9054,6 +9101,7 @@ int dev_set_mac_address(struct net_devic
if (err)
return err;
dev->addr_assign_type = NET_ADDR_SET;
/**
* napi_disable - prevent NAPI from scheduling
-@@ -3362,6 +3363,7 @@ struct softnet_data {
+@@ -3363,6 +3364,7 @@ struct softnet_data {
unsigned int processed;
unsigned int time_squeeze;
unsigned int received_rps;
#endif
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -4563,7 +4563,7 @@ static int rps_ipi_queued(struct softnet
+@@ -4583,7 +4583,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;
-@@ -5744,6 +5744,8 @@ static DEFINE_PER_CPU(struct work_struct
+@@ -5764,6 +5764,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;
-@@ -5759,9 +5761,18 @@ static void flush_backlog(struct work_st
+@@ -5779,9 +5781,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);
-@@ -5769,7 +5780,18 @@ static void flush_backlog(struct work_st
+@@ -5789,7 +5800,18 @@ static void flush_backlog(struct work_st
input_queue_head_incr(sd);
}
}
}
static bool flush_required(int cpu)
-@@ -6452,6 +6474,7 @@ static int process_backlog(struct napi_s
+@@ -6472,6 +6494,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().
-@@ -6461,7 +6484,8 @@ static int process_backlog(struct napi_s
+@@ -6481,7 +6504,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,
-@@ -6878,6 +6902,57 @@ int dev_set_threaded(struct net_device *
+@@ -6898,6 +6922,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)
{
-@@ -11354,6 +11429,9 @@ static int dev_cpu_dead(unsigned int old
+@@ -11378,6 +11453,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;
-@@ -11693,6 +11771,7 @@ static int __init net_dev_init(void)
+@@ -11717,6 +11795,7 @@ static int __init net_dev_init(void)
sd->cpu = i;
#endif