Commit 807bc98d authored by Brett Creeley's avatar Brett Creeley Committed by Jeff Kirsher

ice: Fix debug print in ice_tx_timeout

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: default avatarBrett Creeley <brett.creeley@intel.com>
Signed-off-by: default avatarAnirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent 3e536cff
...@@ -7,6 +7,9 @@ ...@@ -7,6 +7,9 @@
#define _ICE_HW_AUTOGEN_H_ #define _ICE_HW_AUTOGEN_H_
#define QTX_COMM_DBELL(_DBQM) (0x002C0000 + ((_DBQM) * 4)) #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_ARQBAH 0x00080180
#define PF_FW_ARQBAL 0x00080080 #define PF_FW_ARQBAL 0x00080080
#define PF_FW_ARQH 0x00080380 #define PF_FW_ARQH 0x00080380
......
...@@ -3691,8 +3691,8 @@ static void ice_tx_timeout(struct net_device *netdev) ...@@ -3691,8 +3691,8 @@ static void ice_tx_timeout(struct net_device *netdev)
struct ice_ring *tx_ring = NULL; struct ice_ring *tx_ring = NULL;
struct ice_vsi *vsi = np->vsi; struct ice_vsi *vsi = np->vsi;
struct ice_pf *pf = vsi->back; struct ice_pf *pf = vsi->back;
u32 head, val = 0, i;
int hung_queue = -1; int hung_queue = -1;
u32 i;
pf->tx_timeout_count++; pf->tx_timeout_count++;
...@@ -3736,17 +3736,20 @@ static void ice_tx_timeout(struct net_device *netdev) ...@@ -3736,17 +3736,20 @@ static void ice_tx_timeout(struct net_device *netdev)
return; return;
if (tx_ring) { 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 */ /* Read interrupt register */
if (test_bit(ICE_FLAG_MSIX_ENA, pf->flags)) 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 + GLINT_DYN_CTL(tx_ring->q_vector->v_idx +
tx_ring->vsi->hw_base_vector)); 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, vsi->vsi_num, hung_queue, tx_ring->next_to_clean,
head, tx_ring->next_to_use, head, tx_ring->next_to_use, val);
readl(tx_ring->tail), val);
} }
pf->tx_timeout_last_recovery = jiffies; pf->tx_timeout_last_recovery = jiffies;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment