All patches automatically rebased.
Build system: x86_64/Fedora 38
Build-tested: ipq807x/Qnap 301W, ipq807x/Dynalink DL-WRX36
Run-tested: ipq807x/Qnap 301W, ipq807x/Dynalink DL-WRX36
Signed-off-by: Robert Marko <robimarko@gmail.com>
-LINUX_VERSION-6.1 = .29
-LINUX_KERNEL_HASH-6.1.29 = 1e736cc9bd6036379a1d915e518abd4c2c94ad0fd1ea0da961c3489308b8fcfb
\ No newline at end of file
+LINUX_VERSION-6.1 = .31
+LINUX_KERNEL_HASH-6.1.31 = e86917bba1990e967943645484182a64ba325f98b114a1906cc1d50992e073c1
\ No newline at end of file
+};
--- a/drivers/irqchip/Kconfig
+++ b/drivers/irqchip/Kconfig
-@@ -108,6 +108,10 @@ config I8259
+@@ -109,6 +109,10 @@ config I8259
bool
select IRQ_DOMAIN
help
Build a generic DT-based kernel image that boots on select
BCM33xx cable modem chips, BCM63xx DSL chips, and BCM7xxx set-top
---- a/drivers/irqchip/Kconfig 2023-05-30 19:59:04.671531242 +0200
-+++ b/drivers/irqchip/Kconfig 2023-05-30 19:59:55.203880697 +0200
-@@ -121,7 +121,6 @@ config BCM6345_L1_IRQ
+--- a/drivers/irqchip/Kconfig
++++ b/drivers/irqchip/Kconfig
+@@ -122,7 +122,6 @@ config BCM6345_L1_IRQ
config BCM7038_L1_IRQ
tristate "Broadcom STB 7038-style L1/L2 interrupt controller driver"
depends on ARCH_BRCMSTB || BMIPS_GENERIC
select GENERIC_IRQ_CHIP
select IRQ_DOMAIN
select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
-@@ -129,14 +128,12 @@ config BCM7038_L1_IRQ
+@@ -130,14 +129,12 @@ config BCM7038_L1_IRQ
config BCM7120_L2_IRQ
tristate "Broadcom STB 7120-style L2 interrupt controller driver"
depends on ARCH_BRCMSTB || BMIPS_GENERIC
- default ARCH_BCM2835 || ARCH_BRCMSTB || BMIPS_GENERIC
select GENERIC_IRQ_CHIP
select IRQ_DOMAIN
+
help
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -3588,6 +3588,11 @@ static int xmit_one(struct sk_buff *skb,
+@@ -3590,6 +3590,11 @@ static int xmit_one(struct sk_buff *skb,
if (dev_nit_active(dev))
dev_queue_xmit_nit(skb, dev);
goto out;
if (!net_eq(dev_net(dev), sock_net(sk)))
-@@ -2129,12 +2131,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -2127,12 +2129,12 @@ static int packet_rcv(struct sk_buff *sk
unsigned int snaplen, res;
bool is_drop_n_account = false;
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -2261,12 +2263,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -2259,12 +2261,12 @@ static int tpacket_rcv(struct sk_buff *s
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -3374,6 +3376,7 @@ static int packet_create(struct net *net
+@@ -3372,6 +3374,7 @@ static int packet_create(struct net *net
mutex_init(&po->pg_vec_lock);
po->rollover = NULL;
po->prot_hook.func = packet_rcv;
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
-@@ -4009,6 +4012,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -4007,6 +4010,16 @@ packet_setsockopt(struct socket *sock, i
WRITE_ONCE(po->xmit, val ? packet_direct_xmit : dev_queue_xmit);
return 0;
}
default:
return -ENOPROTOOPT;
}
-@@ -4065,6 +4078,13 @@ static int packet_getsockopt(struct sock
+@@ -4063,6 +4076,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -7604,6 +7604,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -7606,6 +7606,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,
-@@ -7655,6 +7697,7 @@ static int __netdev_upper_dev_link(struc
+@@ -7657,6 +7699,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);
-@@ -7751,6 +7794,7 @@ static void __netdev_upper_dev_unlink(st
+@@ -7753,6 +7796,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);
-@@ -8803,6 +8847,7 @@ int dev_set_mac_address(struct net_devic
+@@ -8805,6 +8849,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
-@@ -3126,6 +3127,7 @@ struct softnet_data {
+@@ -3127,6 +3128,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
-@@ -4604,7 +4604,7 @@ static int napi_schedule_rps(struct soft
+@@ -4606,7 +4606,7 @@ static int napi_schedule_rps(struct soft
struct softnet_data *mysd = this_cpu_ptr(&softnet_data);
#ifdef CONFIG_RPS
sd->rps_ipi_next = mysd->rps_ipi_list;
mysd->rps_ipi_list = sd;
-@@ -5785,6 +5785,8 @@ static DEFINE_PER_CPU(struct work_struct
+@@ -5787,6 +5787,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;
-@@ -5799,8 +5801,17 @@ static void flush_backlog(struct work_st
+@@ -5801,8 +5803,17 @@ 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);
-@@ -5808,7 +5819,16 @@ static void flush_backlog(struct work_st
+@@ -5810,7 +5821,16 @@ static void flush_backlog(struct work_st
input_queue_head_incr(sd);
}
}
}
static bool flush_required(int cpu)
-@@ -5940,6 +5960,7 @@ static int process_backlog(struct napi_s
+@@ -5942,6 +5962,7 @@ static int process_backlog(struct napi_s
}
rps_lock_irq_disable(sd);
if (skb_queue_empty(&sd->input_pkt_queue)) {
/*
* Inline a custom version of __napi_complete().
-@@ -5949,7 +5970,8 @@ static int process_backlog(struct napi_s
+@@ -5951,7 +5972,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,
-@@ -6365,6 +6387,55 @@ int dev_set_threaded(struct net_device *
+@@ -6367,6 +6389,55 @@ int dev_set_threaded(struct net_device *
}
EXPORT_SYMBOL(dev_set_threaded);
void netif_napi_add_weight(struct net_device *dev, struct napi_struct *napi,
int (*poll)(struct napi_struct *, int), int weight)
{
-@@ -11137,6 +11208,9 @@ static int dev_cpu_dead(unsigned int old
+@@ -11139,6 +11210,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;
-@@ -11440,6 +11514,7 @@ static int __init net_dev_init(void)
+@@ -11442,6 +11516,7 @@ static int __init net_dev_init(void)
INIT_CSD(&sd->defer_csd, trigger_rx_softirq, sd);
spin_lock_init(&sd->defer_lock);
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -6971,6 +6971,7 @@ static int mv88e6xxx_register_switch(str
+@@ -6973,6 +6973,7 @@ static int mv88e6xxx_register_switch(str
ds->ops = &mv88e6xxx_switch_ops;
ds->ageing_time_min = chip->info->age_time_coeff;
ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX;