]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.0-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 15 Feb 2013 22:47:16 +0000 (14:47 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 15 Feb 2013 22:47:16 +0000 (14:47 -0800)
added patches:
igb-remove-artificial-restriction-on-rqdpc-stat-reading.patch

queue-3.0/igb-remove-artificial-restriction-on-rqdpc-stat-reading.patch [new file with mode: 0644]
queue-3.0/series

diff --git a/queue-3.0/igb-remove-artificial-restriction-on-rqdpc-stat-reading.patch b/queue-3.0/igb-remove-artificial-restriction-on-rqdpc-stat-reading.patch
new file mode 100644 (file)
index 0000000..52a0251
--- /dev/null
@@ -0,0 +1,43 @@
+From ae1c07a6b7ced6c0c94c99e3b53f4e7856fa8bff Mon Sep 17 00:00:00 2001
+From: Alexander Duyck <alexander.h.duyck@intel.com>
+Date: Wed, 8 Aug 2012 05:23:22 +0000
+Subject: igb: Remove artificial restriction on RQDPC stat reading
+
+From: Alexander Duyck <alexander.h.duyck@intel.com>
+
+commit ae1c07a6b7ced6c0c94c99e3b53f4e7856fa8bff upstream.
+
+For some reason the reading of the RQDPC register was being artificially
+limited to 4K.  Instead of limiting the value we should read the value and
+add the full amount.  Otherwise this can lead to a misleading number of
+dropped packets when the actual value is in fact much higher.
+
+Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
+Tested-by: Jeff Pieper   <jeffrey.e.pieper@intel.com>
+Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
+Cc: Vinson Lee <vlee@twitter.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/igb/igb_main.c |    8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/igb/igb_main.c
++++ b/drivers/net/igb/igb_main.c
+@@ -4521,11 +4521,13 @@ void igb_update_stats(struct igb_adapter
+       bytes = 0;
+       packets = 0;
+       for (i = 0; i < adapter->num_rx_queues; i++) {
+-              u32 rqdpc_tmp = rd32(E1000_RQDPC(i)) & 0x0FFF;
++              u32 rqdpc = rd32(E1000_RQDPC(i));
+               struct igb_ring *ring = adapter->rx_ring[i];
+-              ring->rx_stats.drops += rqdpc_tmp;
+-              net_stats->rx_fifo_errors += rqdpc_tmp;
++              if (rqdpc) {
++                      ring->rx_stats.drops += rqdpc;
++                      net_stats->rx_fifo_errors += rqdpc;
++              }
+               do {
+                       start = u64_stats_fetch_begin_bh(&ring->rx_syncp);
index f711dec5230e0ef32cd85d49984989299d41d785..16b67a576f74dea76d199702585d3c6dd0046b53 100644 (file)
@@ -1,3 +1,4 @@
 x86-mm-check-if-pud-is-large-when-validating-a-kernel-address.patch
 x86-xen-don-t-assume-ds-is-usable-in-xen_iret-for-32-bit-pvops.patch
 pci-pm-clean-up-pme-state-when-removing-a-device.patch
+igb-remove-artificial-restriction-on-rqdpc-stat-reading.patch