]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
i40e: add counter for arq overflows
authorMitch Williams <mitch.a.williams@intel.com>
Wed, 23 Dec 2015 20:05:48 +0000 (12:05 -0800)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 10 Mar 2016 16:37:03 +0000 (08:37 -0800)
Orabug: 22342532

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>
(cherry picked from commit 1d0a4ada8401c73b360fc8492064a1107fca019b)
Signed-off-by: Brian Maly <brian.maly@oracle.com>
drivers/net/ethernet/intel/i40e/i40e.h
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
drivers/net/ethernet/intel/i40e/i40e_main.c

index 5a580992cc162955589674f2d519543e7815a768..32f85bbc8ae16034ba54cbd2c557e032d79a4a13 100644 (file)
@@ -391,6 +391,7 @@ struct i40e_pf {
        struct i40e_vf *vf;
        int num_alloc_vfs;      /* actual number of VFs allocated */
        u32 vf_aq_requests;
+       u32 arq_overflows;      /* Not fatal, possibly indicative of problems */
 
        /* DCBx/DCBNL capability for PF that indicates
         * whether DCBx is managed by firmware or host
index afa2dc9e6c0a2e92b7292975d55cb8af950529fb..c23cbe3fb6208cf031384f34dada4152ab89ac31 100644 (file)
@@ -143,6 +143,7 @@ static struct i40e_stats i40e_gstrings_stats[] = {
        I40E_PF_STAT("rx_oversize", stats.rx_oversize),
        I40E_PF_STAT("rx_jabber", stats.rx_jabber),
        I40E_PF_STAT("VF_admin_queue_requests", vf_aq_requests),
+       I40E_PF_STAT("arq_overflows", arq_overflows),
        I40E_PF_STAT("rx_hwtstamp_cleared", rx_hwtstamp_cleared),
        I40E_PF_STAT("fdir_flush_cnt", fd_flush_cnt),
        I40E_PF_STAT("fdir_atr_match", stats.fd_atr_match),
index 29582e64d12e5b1b11e9ff47da9f02332077a919..69e2f57b27bba8597c40fd2c6599cb44582b90a0 100644 (file)
@@ -6210,6 +6210,7 @@ static void i40e_clean_adminq_subtask(struct i40e_pf *pf)
                if (hw->debug_mask & I40E_DEBUG_AQ)
                        dev_info(&pf->pdev->dev, "ARQ Overflow Error detected\n");
                val &= ~I40E_PF_ARQLEN_ARQOVFL_MASK;
+               pf->arq_overflows++;
        }
        if (val & I40E_PF_ARQLEN_ARQCRIT_MASK) {
                if (hw->debug_mask & I40E_DEBUG_AQ)