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

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

diff --git a/queue-3.4/igb-remove-artificial-restriction-on-rqdpc-stat-reading.patch b/queue-3.4/igb-remove-artificial-restriction-on-rqdpc-stat-reading.patch
new file mode 100644 (file)
index 0000000..1e2be98
--- /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/ethernet/intel/igb/igb_main.c |    8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/ethernet/intel/igb/igb_main.c
++++ b/drivers/net/ethernet/intel/igb/igb_main.c
+@@ -4649,11 +4649,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 78ee458e76e6441949e7caa88275bfaf83a75abe..c18f5188cce8f6b7045f0aa67ae86feb7465842e 100644 (file)
@@ -5,3 +5,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
 efi-clear-efi_runtime_services-rather-than-efi_boot-by-noefi-boot-parameter.patch
+igb-remove-artificial-restriction-on-rqdpc-stat-reading.patch