From 3d33284eb087deb7f62639a2d2c03b9d0a3eeb34 Mon Sep 17 00:00:00 2001 From: Camelia Groza Date: Mon, 11 Sep 2017 17:20:41 +0800 Subject: 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 diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h index 9c6c8ef..90b4107 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 6cfb6e9..3fab16c 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) { -- cgit v0.10.2