Bump & refresh patches for all 4.4 targets. Compile & run tested: ar71xx Archer C7 v2 Signed-off-by: Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
		
			
				
	
	
		
			49 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 6aa1eca98ca44f515e10d8058d0ff6db3c8a3c11 Mon Sep 17 00:00:00 2001
 | 
						|
From: Bogdan Hamciuc <bogdan.hamciuc@freescale.com>
 | 
						|
Date: Fri, 28 Sep 2012 17:04:33 +0300
 | 
						|
Subject: [PATCH 21/70] net: Make the netdev watchdog aware of hardware
 | 
						|
 multiqueue devices
 | 
						|
 | 
						|
If the netdev declares the NETIF_F_HW_ACCEL_MQ (accelerated multiqueue)
 | 
						|
capability, tell the watchdog to consider the per-netdev trans_start
 | 
						|
field rather than any individual multiqueue's timestamp. That is
 | 
						|
justified by the fact that queues only go in and out of congestion
 | 
						|
in groups, not individually, as far as the net device is concerned.
 | 
						|
 | 
						|
Change-Id: I07a6693bf1f0bb1e9396c5e232452223a511ecc1
 | 
						|
Signed-off-by: Bogdan Hamciuc <bogdan.hamciuc@freescale.com>
 | 
						|
Reviewed-on: http://git.am.freescale.net:8181/1033
 | 
						|
Reviewed-by: Fleming Andrew-AFLEMING <AFLEMING@freescale.com>
 | 
						|
Tested-by: Fleming Andrew-AFLEMING <AFLEMING@freescale.com>
 | 
						|
---
 | 
						|
 net/sched/sch_generic.c |   17 ++++++++++++++++-
 | 
						|
 1 file changed, 16 insertions(+), 1 deletion(-)
 | 
						|
 | 
						|
--- a/net/sched/sch_generic.c
 | 
						|
+++ b/net/sched/sch_generic.c
 | 
						|
@@ -290,8 +290,23 @@ static void dev_watchdog(unsigned long a
 | 
						|
 				txq = netdev_get_tx_queue(dev, i);
 | 
						|
 				/*
 | 
						|
 				 * old device drivers set dev->trans_start
 | 
						|
+				 *
 | 
						|
+				 * (Actually, not only "old" devices, but also
 | 
						|
+				 * those which perform queue management in a
 | 
						|
+				 * separate hw accelerator. So even though the
 | 
						|
+				 * net device itself is single-queued, it makes
 | 
						|
+				 * sense (and is safe, too) to use kernel's
 | 
						|
+				 * multiqueue interface, specifically to avoid
 | 
						|
+				 * unnecessary device locking in SMP systems.
 | 
						|
+				 * In this case, we ought to consider not an
 | 
						|
+				 * individual txq's timestamp as a congestion
 | 
						|
+				 * indicator, but the "old" per-netdev field.)
 | 
						|
 				 */
 | 
						|
-				trans_start = txq->trans_start ? : dev->trans_start;
 | 
						|
+				if (dev->features & NETIF_F_HW_ACCEL_MQ)
 | 
						|
+					trans_start = dev->trans_start;
 | 
						|
+				else
 | 
						|
+					trans_start = txq->trans_start ? :
 | 
						|
+						dev->trans_start;
 | 
						|
 				if (netif_xmit_stopped(txq) &&
 | 
						|
 				    time_after(jiffies, (trans_start +
 | 
						|
 							 dev->watchdog_timeo))) {
 |