diff options
-rw-r--r-- | include/linux/netdev_features.h | 2 | ||||
-rw-r--r-- | net/sched/sch_generic.c | 7 |
2 files changed, 9 insertions, 0 deletions
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) { |