]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
ice: Fix debug print in ice_tx_timeout
authorBrett Creeley <brett.creeley@intel.com>
Fri, 26 Oct 2018 17:41:00 +0000 (10:41 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Tue, 13 Nov 2018 17:09:25 +0000 (09:09 -0800)
Currently the debug print in ice_tx_timeout is printing useless and
duplicate values. First, head is being assigned to tx_ring->next_to_clean
and we are printing both of those values, but naming them HWB and NTC
respectively. Also, reading tail always returns 0 so remove that as well.

Instead of assigning the SW head (NTC) read to head, use the actual head
register and change the debug print to note that this is HW_HEAD. Also
reduce the scope of a couple variables.

Signed-off-by: Brett Creeley <brett.creeley@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ice/ice_hw_autogen.h
drivers/net/ethernet/intel/ice/ice_main.c

index 596b9fb1c510dec854004dd0bce6ef68a74ba8c6..5507928c8fbe6e9a8d7b27bb2f5149c5421b5b53 100644 (file)
@@ -7,6 +7,9 @@
 #define _ICE_HW_AUTOGEN_H_
 
 #define QTX_COMM_DBELL(_DBQM)                  (0x002C0000 + ((_DBQM) * 4))
+#define QTX_COMM_HEAD(_DBQM)                   (0x000E0000 + ((_DBQM) * 4))
+#define QTX_COMM_HEAD_HEAD_S                   0
+#define QTX_COMM_HEAD_HEAD_M                   ICE_M(0x1FFF, 0)
 #define PF_FW_ARQBAH                           0x00080180
 #define PF_FW_ARQBAL                           0x00080080
 #define PF_FW_ARQH                             0x00080380
index 333312a1d59572dfe8cef5bc02d745ab7c2920cf..8584061e1bc6686af700a8e141c5af23ee0b041f 100644 (file)
@@ -3691,8 +3691,8 @@ static void ice_tx_timeout(struct net_device *netdev)
        struct ice_ring *tx_ring = NULL;
        struct ice_vsi *vsi = np->vsi;
        struct ice_pf *pf = vsi->back;
-       u32 head, val = 0, i;
        int hung_queue = -1;
+       u32 i;
 
        pf->tx_timeout_count++;
 
@@ -3736,17 +3736,20 @@ static void ice_tx_timeout(struct net_device *netdev)
                return;
 
        if (tx_ring) {
-               head = tx_ring->next_to_clean;
+               struct ice_hw *hw = &pf->hw;
+               u32 head, val = 0;
+
+               head = (rd32(hw, QTX_COMM_HEAD(vsi->txq_map[hung_queue])) &
+                       QTX_COMM_HEAD_HEAD_M) >> QTX_COMM_HEAD_HEAD_S;
                /* Read interrupt register */
                if (test_bit(ICE_FLAG_MSIX_ENA, pf->flags))
-                       val = rd32(&pf->hw,
+                       val = rd32(hw,
                                   GLINT_DYN_CTL(tx_ring->q_vector->v_idx +
                                        tx_ring->vsi->hw_base_vector));
 
-               netdev_info(netdev, "tx_timeout: VSI_num: %d, Q %d, NTC: 0x%x, HWB: 0x%x, NTU: 0x%x, TAIL: 0x%x, INT: 0x%x\n",
+               netdev_info(netdev, "tx_timeout: VSI_num: %d, Q %d, NTC: 0x%x, HW_HEAD: 0x%x, NTU: 0x%x, INT: 0x%x\n",
                            vsi->vsi_num, hung_queue, tx_ring->next_to_clean,
-                           head, tx_ring->next_to_use,
-                           readl(tx_ring->tail), val);
+                           head, tx_ring->next_to_use, val);
        }
 
        pf->tx_timeout_last_recovery = jiffies;