diff options
author | Mitch Williams <mitch.a.williams@intel.com> | 2015-12-23 15:05:48 -0500 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2016-02-16 21:54:53 -0500 |
commit | 1d0a4ada8401c73b360fc8492064a1107fca019b (patch) | |
tree | 416c0a638082edc8018cf4f9a5722326579804dc | |
parent | a3d772a3925d85721ad8518db14603fb1cd99295 (diff) |
i40e: add counter for arq overflows
Sometimes, ARQ overflows are a big deal and tell us that the
firmware/hardware/driver/something is having problems. But normally
they're no big deal. To assist in assessing this, add a counter to
our Ethtool stats. A handful of ARQ overflows during VF init is no
problem. A large, ever-growing number indicates that Something Bad is
happening.
Change-ID: Ie5348bfbc8a54a890559cb00279c28d976a55096
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
-rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e.h | 1 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 1 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e_main.c | 1 |
3 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h index 53ed3bdd8363..944dee98c4ea 100644 --- a/drivers/net/ethernet/intel/i40e/i40e.h +++ b/drivers/net/ethernet/intel/i40e/i40e.h | |||
@@ -393,6 +393,7 @@ struct i40e_pf { | |||
393 | struct i40e_vf *vf; | 393 | struct i40e_vf *vf; |
394 | int num_alloc_vfs; /* actual number of VFs allocated */ | 394 | int num_alloc_vfs; /* actual number of VFs allocated */ |
395 | u32 vf_aq_requests; | 395 | u32 vf_aq_requests; |
396 | u32 arq_overflows; /* Not fatal, possibly indicative of problems */ | ||
396 | 397 | ||
397 | /* DCBx/DCBNL capability for PF that indicates | 398 | /* DCBx/DCBNL capability for PF that indicates |
398 | * whether DCBx is managed by firmware or host | 399 | * whether DCBx is managed by firmware or host |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c index 45495911c5a4..812c95493413 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c +++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c | |||
@@ -143,6 +143,7 @@ static struct i40e_stats i40e_gstrings_stats[] = { | |||
143 | I40E_PF_STAT("rx_oversize", stats.rx_oversize), | 143 | I40E_PF_STAT("rx_oversize", stats.rx_oversize), |
144 | I40E_PF_STAT("rx_jabber", stats.rx_jabber), | 144 | I40E_PF_STAT("rx_jabber", stats.rx_jabber), |
145 | I40E_PF_STAT("VF_admin_queue_requests", vf_aq_requests), | 145 | I40E_PF_STAT("VF_admin_queue_requests", vf_aq_requests), |
146 | I40E_PF_STAT("arq_overflows", arq_overflows), | ||
146 | I40E_PF_STAT("rx_hwtstamp_cleared", rx_hwtstamp_cleared), | 147 | I40E_PF_STAT("rx_hwtstamp_cleared", rx_hwtstamp_cleared), |
147 | I40E_PF_STAT("fdir_flush_cnt", fd_flush_cnt), | 148 | I40E_PF_STAT("fdir_flush_cnt", fd_flush_cnt), |
148 | I40E_PF_STAT("fdir_atr_match", stats.fd_atr_match), | 149 | I40E_PF_STAT("fdir_atr_match", stats.fd_atr_match), |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index 320b0491abd9..7323e322071a 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c | |||
@@ -6248,6 +6248,7 @@ static void i40e_clean_adminq_subtask(struct i40e_pf *pf) | |||
6248 | if (hw->debug_mask & I40E_DEBUG_AQ) | 6248 | if (hw->debug_mask & I40E_DEBUG_AQ) |
6249 | dev_info(&pf->pdev->dev, "ARQ Overflow Error detected\n"); | 6249 | dev_info(&pf->pdev->dev, "ARQ Overflow Error detected\n"); |
6250 | val &= ~I40E_PF_ARQLEN_ARQOVFL_MASK; | 6250 | val &= ~I40E_PF_ARQLEN_ARQOVFL_MASK; |
6251 | pf->arq_overflows++; | ||
6251 | } | 6252 | } |
6252 | if (val & I40E_PF_ARQLEN_ARQCRIT_MASK) { | 6253 | if (val & I40E_PF_ARQLEN_ARQCRIT_MASK) { |
6253 | if (hw->debug_mask & I40E_DEBUG_AQ) | 6254 | if (hw->debug_mask & I40E_DEBUG_AQ) |