mirror of
https://github.com/openwrt/openwrt.git
synced 2025-02-24 02:31:23 +00:00
61 lines
2.0 KiB
Diff
61 lines
2.0 KiB
Diff
|
From 3d33284eb087deb7f62639a2d2c03b9d0a3eeb34 Mon Sep 17 00:00:00 2001
|
||
|
From: Camelia Groza <camelia.groza@nxp.com>
|
||
|
Date: Mon, 11 Sep 2017 17:20:41 +0800
|
||
|
Subject: [PATCH] sdk_dpaa: update the xmit timestamp to avoid watchdog
|
||
|
timeouts
|
||
|
|
||
|
[core-linux part]
|
||
|
|
||
|
Update txq0's trans_start in order to prevent the netdev watchdog from
|
||
|
triggering too quickly. Since we set the LLTX flag, the stack won't update
|
||
|
the jiffies for other tx queues. Prevent the watchdog from checking the
|
||
|
other tx queues by adding the NETIF_HW_ACCEL_MQ flag.
|
||
|
|
||
|
Signed-off-by: Camelia Groza <camelia.groza@nxp.com>
|
||
|
---
|
||
|
include/linux/netdev_features.h | 2 ++
|
||
|
net/sched/sch_generic.c | 7 +++++++
|
||
|
2 files changed, 9 insertions(+)
|
||
|
|
||
|
diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h
|
||
|
index 9c6c8ef2e9e7..90b4107ebeff 100644
|
||
|
--- a/include/linux/netdev_features.h
|
||
|
+++ b/include/linux/netdev_features.h
|
||
|
@@ -74,6 +74,7 @@ enum {
|
||
|
NETIF_F_BUSY_POLL_BIT, /* Busy poll */
|
||
|
|
||
|
NETIF_F_HW_TC_BIT, /* Offload TC infrastructure */
|
||
|
+ NETIF_F_HW_ACCEL_MQ_BIT, /* Hardware-accelerated multiqueue */
|
||
|
|
||
|
/*
|
||
|
* Add your fresh new feature above and remember to update
|
||
|
@@ -136,6 +137,7 @@ enum {
|
||
|
#define NETIF_F_HW_L2FW_DOFFLOAD __NETIF_F(HW_L2FW_DOFFLOAD)
|
||
|
#define NETIF_F_BUSY_POLL __NETIF_F(BUSY_POLL)
|
||
|
#define NETIF_F_HW_TC __NETIF_F(HW_TC)
|
||
|
+#define NETIF_F_HW_ACCEL_MQ __NETIF_F(HW_ACCEL_MQ)
|
||
|
|
||
|
#define for_each_netdev_feature(mask_addr, bit) \
|
||
|
for_each_set_bit(bit, (unsigned long *)mask_addr, NETDEV_FEATURE_COUNT)
|
||
|
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
|
||
|
index 6cfb6e9038c2..3fab16cb7c58 100644
|
||
|
--- a/net/sched/sch_generic.c
|
||
|
+++ b/net/sched/sch_generic.c
|
||
|
@@ -309,6 +309,13 @@ static void dev_watchdog(unsigned long arg)
|
||
|
txq->trans_timeout++;
|
||
|
break;
|
||
|
}
|
||
|
+
|
||
|
+ /* Devices with HW_ACCEL_MQ have multiple txqs
|
||
|
+ * but update only the first one's transmission
|
||
|
+ * timestamp so avoid checking the rest.
|
||
|
+ */
|
||
|
+ if (dev->features & NETIF_F_HW_ACCEL_MQ)
|
||
|
+ break;
|
||
|
}
|
||
|
|
||
|
if (some_queue_timedout) {
|
||
|
--
|
||
|
2.11.1
|
||
|
|