ixgbe: Fix incorrect disabling of Tx hang check in case of PFC
authorParikh, Neerav <neerav.parikh@intel.com>
Thu, 27 Sep 2012 12:02:22 +0000 (12:02 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Wed, 28 Nov 2012 12:28:56 +0000 (04:28 -0800)
commit2afaa00d2fa2ae1fa806ebd229bc3f56df8449d5
treede6def5760ba7b8688c4d3649737d11e2d561e1d
parent9de0c8ed7840d01fd5cf1851df2725fe30dc0817
ixgbe: Fix incorrect disabling of Tx hang check in case of PFC

The XOFF received statistic registers are per priority based and not per
traffic class. The ixgbe driver was incorrectly considering them to be for
each traffic class; and then disabling the "Tx hang" check for the queues
that belonged to the particular traffic class that had received PFC frames.

The above logic worked fine in scenario where the user priority and traffic
class number matched e.g. priority 0 is mapped to traffic class 0 and so on.
But, when multiple user priorities are mapped to a single traffic class or
when user priorities and traffic class numbers do not line up; the ixgbe
driver may disable the "Tx hang" check for queues belonging to a traffic
class that did not receive PFC frames and keep the "Tx hang" check enabled
for the queues that did receive the PFC frames.

This patch corrects the above in the code by considering the statistics
on a per priority basis; then getting the traffic class the user priority
belongs to and disabling the "Tx hang" check for queues that belong
to that traffic class.

Signed-off-by: Neerav Parikh <Neerav.Parikh@intel.com>
Acked-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Tested-by: Marcus Dennis <marcusx.e.dennis@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c