123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- From 3d33284eb087deb7f62639a2d2c03b9d0a3eeb34 Mon Sep 17 00:00:00 2001
- From: Camelia Groza <[email protected]>
- 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 <[email protected]>
- ---
- 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
|