All patches automatically rebased.
Build system: x86_64
Build-tested: bcm2711/RPi4B
Run-tested: bcm2711/RPi4B
Signed-off-by: John Audia <graysky@archlinux.us>
endif
LINUX_VERSION-5.4 = .167
-LINUX_VERSION-5.10 = .83
+LINUX_VERSION-5.10 = .84
LINUX_KERNEL_HASH-5.4.167 = b4e43116217ee02009aba7eab3081e64560b81ce42bc6096fcd81257f470a5a7
-LINUX_KERNEL_HASH-5.10.83 = ef259a43f33ddb56001283f4f4e50af29b8a48fa066aed7371a90ebf38c29b70
+LINUX_KERNEL_HASH-5.10.84 = 6e96271d72dd106c4bd83931ca16fda622413b34c5649e2916116c38c12e233d
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
-@@ -659,6 +659,16 @@ void xhci_find_new_dequeue_state(struct
+@@ -666,6 +666,16 @@ void xhci_find_new_dequeue_state(struct
} while (!cycle_found || !td_last_trb_found);
#include <drm/drm_atomic_helper.h>
#include <drm/drm_dp_mst_helper.h>
#include <drm/drm_dp_helper.h>
-@@ -252,8 +253,10 @@ static int dm_dp_mst_get_modes(struct dr
+@@ -264,8 +265,10 @@ static int dm_dp_mst_get_modes(struct dr
static struct drm_encoder *
dm_mst_atomic_best_encoder(struct drm_connector *connector,
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
-@@ -4262,9 +4262,9 @@ void xhci_queue_new_dequeue_state(struct
+@@ -4269,9 +4269,9 @@ void xhci_queue_new_dequeue_state(struct
}
ep = &xhci->devs[slot_id]->eps[ep_index];
if ((ep->ep_state & SET_DEQ_PENDING)) {
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -6802,15 +6802,10 @@ void __netif_napi_del(struct napi_struct
+@@ -6805,15 +6805,10 @@ void __netif_napi_del(struct napi_struct
}
EXPORT_SYMBOL(__netif_napi_del);
weight = n->weight;
/* This NAPI_STATE_SCHED test is for avoiding a race
-@@ -6830,7 +6825,7 @@ static int napi_poll(struct napi_struct
+@@ -6833,7 +6828,7 @@ static int napi_poll(struct napi_struct
n->poll, work, weight);
if (likely(work < weight))
/* Drivers must not modify the NAPI state if they
* consume the entire weight. In such cases this code
-@@ -6839,7 +6834,7 @@ static int napi_poll(struct napi_struct
+@@ -6842,7 +6837,7 @@ static int napi_poll(struct napi_struct
*/
if (unlikely(napi_disable_pending(n))) {
napi_complete(n);
}
if (n->gro_bitmask) {
-@@ -6857,12 +6852,29 @@ static int napi_poll(struct napi_struct
+@@ -6860,12 +6855,29 @@ static int napi_poll(struct napi_struct
if (unlikely(!list_empty(&n->poll_list))) {
pr_warn_once("%s: Budget exhausted after napi rescheduled\n",
n->dev ? n->dev->name : "backlog");
static int __dev_open(struct net_device *dev, struct netlink_ext_ack *extack)
{
const struct net_device_ops *ops = dev->netdev_ops;
-@@ -4264,6 +4286,21 @@ int gro_normal_batch __read_mostly = 8;
+@@ -4267,6 +4289,21 @@ int gro_normal_batch __read_mostly = 8;
static inline void ____napi_schedule(struct softnet_data *sd,
struct napi_struct *napi)
{
list_add_tail(&napi->poll_list, &sd->poll_list);
__raise_softirq_irqoff(NET_RX_SOFTIRQ);
}
-@@ -6755,6 +6792,12 @@ void netif_napi_add(struct net_device *d
+@@ -6758,6 +6795,12 @@ void netif_napi_add(struct net_device *d
set_bit(NAPI_STATE_NPSVC, &napi->state);
list_add_rcu(&napi->dev_list, &dev->napi_list);
napi_hash_add(napi);
}
EXPORT_SYMBOL(netif_napi_add);
-@@ -6771,9 +6814,28 @@ void napi_disable(struct napi_struct *n)
+@@ -6774,9 +6817,28 @@ void napi_disable(struct napi_struct *n)
hrtimer_cancel(&n->timer);
clear_bit(NAPI_STATE_DISABLE, &n->state);
static void flush_gro_hash(struct napi_struct *napi)
{
int i;
-@@ -6799,6 +6861,11 @@ void __netif_napi_del(struct napi_struct
+@@ -6802,6 +6864,11 @@ void __netif_napi_del(struct napi_struct
flush_gro_hash(napi);
napi->gro_bitmask = 0;
}
EXPORT_SYMBOL(__netif_napi_del);
-@@ -6880,6 +6947,51 @@ static int napi_poll(struct napi_struct
+@@ -6883,6 +6950,51 @@ static int napi_poll(struct napi_struct
return work;
}
* @n: NAPI context
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -4290,8 +4290,9 @@ static inline void ____napi_schedule(str
+@@ -4293,8 +4293,9 @@ static inline void ____napi_schedule(str
if (test_bit(NAPI_STATE_THREADED, &napi->state)) {
/* Paired with smp_mb__before_atomic() in
* wake_up_process() when it's not NULL.
*/
thread = READ_ONCE(napi->thread);
-@@ -6765,6 +6766,49 @@ static void init_gro_hash(struct napi_st
+@@ -6768,6 +6769,49 @@ static void init_gro_hash(struct napi_st
napi->gro_bitmask = 0;
}
enum gro_result {
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -4297,6 +4297,8 @@ static inline void ____napi_schedule(str
+@@ -4300,6 +4300,8 @@ static inline void ____napi_schedule(str
*/
thread = READ_ONCE(napi->thread);
if (thread) {
wake_up_process(thread);
return;
}
-@@ -6557,7 +6559,8 @@ bool napi_complete_done(struct napi_stru
+@@ -6560,7 +6562,8 @@ bool napi_complete_done(struct napi_stru
WARN_ON_ONCE(!(val & NAPIF_STATE_SCHED));
/* If STATE_MISSED was set, leave STATE_SCHED set,
* because we will call napi->poll() one more time.
-@@ -6993,16 +6996,25 @@ static int napi_poll(struct napi_struct
+@@ -6996,16 +6999,25 @@ static int napi_poll(struct napi_struct
static int napi_thread_wait(struct napi_struct *napi)
{
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -7000,7 +7000,7 @@ static int napi_thread_wait(struct napi_
+@@ -7003,7 +7003,7 @@ static int napi_thread_wait(struct napi_
set_current_state(TASK_INTERRUPTIBLE);
/* Testing SCHED_THREADED bit here to make sure the current
* kthread owns this napi and could poll on this napi.
* Testing SCHED bit is not enough because SCHED bit might be
-@@ -7018,6 +7018,7 @@ static int napi_thread_wait(struct napi_
+@@ -7021,6 +7021,7 @@ static int napi_thread_wait(struct napi_
set_current_state(TASK_INTERRUPTIBLE);
}
__set_current_state(TASK_RUNNING);
__u16 tc_index; /* traffic control index */
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -6059,6 +6059,9 @@ static enum gro_result dev_gro_receive(s
+@@ -6062,6 +6062,9 @@ static enum gro_result dev_gro_receive(s
int same_flow;
int grow;
if (netif_elide_gro(skb->dev))
goto normal;
-@@ -8036,6 +8039,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -8039,6 +8042,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,
-@@ -8087,6 +8132,7 @@ static int __netdev_upper_dev_link(struc
+@@ -8090,6 +8135,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);
-@@ -8183,6 +8229,7 @@ static void __netdev_upper_dev_unlink(st
+@@ -8186,6 +8232,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);
-@@ -8969,6 +9016,7 @@ int dev_set_mac_address(struct net_devic
+@@ -8972,6 +9019,7 @@ int dev_set_mac_address(struct net_devic
if (err)
return err;
dev->addr_assign_type = NET_ADDR_SET;
--- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
+++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
-@@ -533,6 +533,8 @@
+@@ -535,6 +535,8 @@
pinctrl-0 = <&serial_nand_pins>;
status = "okay";
},
[PORT_NPCM] = {
.name = "Nuvoton 16550",
-@@ -2732,6 +2732,11 @@ serial8250_do_set_termios(struct uart_po
+@@ -2725,6 +2725,11 @@ serial8250_do_set_termios(struct uart_po
unsigned long flags;
unsigned int baud, quot, frac = 0;
(limited to 'drivers/net/ethernet/marvell/mvneta.c')
-diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
-index 80e4b500695e6..46b7604805f76 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -38,6 +38,7 @@
#include <linux/bpf_trace.h>
/* Registers */
-@@ -4908,14 +4909,14 @@ static void mvneta_setup_rx_prio_map(struct mvneta_port *pp)
+@@ -4933,14 +4934,14 @@ static void mvneta_setup_rx_prio_map(str
}
static int mvneta_setup_mqprio(struct net_device *dev,
if (num_tc > rxq_number)
return -EINVAL;
-@@ -4926,13 +4927,15 @@ static int mvneta_setup_mqprio(struct net_device *dev,
+@@ -4951,13 +4952,15 @@ static int mvneta_setup_mqprio(struct ne
return 0;
}
return 0;
}
---
-cgit 1.2.3-1.el7
-
(limited to 'drivers/net/ethernet/marvell/mvneta.c')
-diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
-index 46b7604805f76..d3ce87e69d2a8 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
-@@ -4915,7 +4915,9 @@ static int mvneta_setup_mqprio(struct net_device *dev,
+@@ -4940,7 +4940,9 @@ static int mvneta_setup_mqprio(struct ne
u8 num_tc;
int i;
num_tc = mqprio->qopt.num_tc;
if (num_tc > rxq_number)
---
-cgit 1.2.3-1.el7
-
(limited to 'drivers/net/ethernet/marvell/mvneta.c')
-diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
-index d3ce87e69d2a8..aba452e8abfe6 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -493,7 +493,6 @@ struct mvneta_port {
phy_interface_t phy_interface;
struct device_node *dn;
-@@ -4897,13 +4896,12 @@ static void mvneta_clear_rx_prio_map(struct mvneta_port *pp)
+@@ -4922,13 +4921,12 @@ static void mvneta_clear_rx_prio_map(str
mvreg_write(pp, MVNETA_VLAN_PRIO_TO_RXQ, 0);
}
mvreg_write(pp, MVNETA_VLAN_PRIO_TO_RXQ, val);
}
-@@ -4912,8 +4910,8 @@ static int mvneta_setup_mqprio(struct net_device *dev,
+@@ -4937,8 +4935,8 @@ static int mvneta_setup_mqprio(struct ne
struct tc_mqprio_qopt_offload *mqprio)
{
struct mvneta_port *pp = netdev_priv(dev);
if (mqprio->qopt.hw != TC_MQPRIO_HW_OFFLOAD_TCS)
return 0;
-@@ -4923,21 +4921,28 @@ static int mvneta_setup_mqprio(struct net_device *dev,
+@@ -4948,21 +4946,28 @@ static int mvneta_setup_mqprio(struct ne
if (num_tc > rxq_number)
return -EINVAL;
- memcpy(pp->prio_tc_map, mqprio->qopt.prio_tc_map,
- sizeof(pp->prio_tc_map));
+ netdev_set_num_tc(dev, mqprio->qopt.num_tc);
-+
+
+- mvneta_setup_rx_prio_map(pp);
+ for (tc = 0; tc < mqprio->qopt.num_tc; tc++) {
+ netdev_set_tc_queue(dev, tc, mqprio->qopt.count[tc],
+ mqprio->qopt.offset[tc]);
-
-- mvneta_setup_rx_prio_map(pp);
++
+ for (rxq = mqprio->qopt.offset[tc];
+ rxq < mqprio->qopt.count[tc] + mqprio->qopt.offset[tc];
+ rxq++) {
return 0;
}
---
-cgit 1.2.3-1.el7
-
(limited to 'drivers/net/ethernet/marvell/mvneta.c')
-diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
-index aba452e8abfe6..2368ae3f0e10d 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -248,12 +248,39 @@
#define MVNETA_LPI_CTRL_0 0x2cc0
#define MVNETA_LPI_CTRL_1 0x2cc4
#define MVNETA_LPI_REQUEST_ENABLE BIT(0)
-@@ -4906,11 +4933,74 @@ static void mvneta_map_vlan_prio_to_rxq(struct mvneta_port *pp, u8 pri, u8 rxq)
+@@ -4931,11 +4958,74 @@ static void mvneta_map_vlan_prio_to_rxq(
mvreg_write(pp, MVNETA_VLAN_PRIO_TO_RXQ, val);
}
u8 num_tc;
if (mqprio->qopt.hw != TC_MQPRIO_HW_OFFLOAD_TCS)
-@@ -4924,6 +5014,7 @@ static int mvneta_setup_mqprio(struct net_device *dev,
+@@ -4949,6 +5039,7 @@ static int mvneta_setup_mqprio(struct ne
mvneta_clear_rx_prio_map(pp);
if (!num_tc) {
netdev_reset_tc(dev);
return 0;
}
-@@ -4944,6 +5035,33 @@ static int mvneta_setup_mqprio(struct net_device *dev,
+@@ -4969,6 +5060,33 @@ static int mvneta_setup_mqprio(struct ne
}
}
return 0;
}
---
-cgit 1.2.3-1.el7
-