From 936d1551003bedd96025af44833ddb960ee6b1a6 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 15 Feb 2013 14:45:08 -0800 Subject: [PATCH] 3.4-stable patches added patches: igb-remove-artificial-restriction-on-rqdpc-stat-reading.patch --- ...al-restriction-on-rqdpc-stat-reading.patch | 43 +++++++++++++++++++ queue-3.4/series | 1 + 2 files changed, 44 insertions(+) create mode 100644 queue-3.4/igb-remove-artificial-restriction-on-rqdpc-stat-reading.patch 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 index 00000000000..1e2be984d89 --- /dev/null +++ b/queue-3.4/igb-remove-artificial-restriction-on-rqdpc-stat-reading.patch @@ -0,0 +1,43 @@ +From ae1c07a6b7ced6c0c94c99e3b53f4e7856fa8bff Mon Sep 17 00:00:00 2001 +From: Alexander Duyck +Date: Wed, 8 Aug 2012 05:23:22 +0000 +Subject: igb: Remove artificial restriction on RQDPC stat reading + +From: Alexander Duyck + +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 +Tested-by: Jeff Pieper +Signed-off-by: Jeff Kirsher +Cc: Vinson Lee +Signed-off-by: Greg Kroah-Hartman + +--- + 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); diff --git a/queue-3.4/series b/queue-3.4/series index 78ee458e76e..c18f5188cce 100644 --- a/queue-3.4/series +++ b/queue-3.4/series @@ -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 -- 2.47.3