Skip to content

Commit

Permalink
net: stmmac: est: Per Tx-queue error count for HLBF
Browse files Browse the repository at this point in the history
Keep per Tx-queue error count on Head-Of-Line Blocking due to frame
size(HLBF) error. The MAC raises HLBF error on one or more queues
when none of the time Intervals of open-gates in the GCL is greater
than or equal to the duration needed for frame transmission and by
default drops those packets that causes HLBF error. EST_FRM_SZ_ERR
register provides the One Hot encoded Queue numbers that have the
Frame Size related error.

Signed-off-by: Rohan G Thomas <rohan.g.thomas@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
rohangt07 authored and davem330 committed Jan 31, 2024
1 parent c5c3e1b commit fd5a6a7
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 0 deletions.
1 change: 1 addition & 0 deletions drivers/net/ethernet/stmicro/stmmac/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,7 @@ struct stmmac_extra_stats {
unsigned long mtl_est_btre;
unsigned long mtl_est_btrlm;
unsigned long max_sdu_txq_drop[MTL_MAX_TX_QUEUES];
unsigned long mtl_est_txq_hlbf[MTL_MAX_TX_QUEUES];
/* per queue statistics */
struct stmmac_txq_stats txq_stats[MTL_MAX_TX_QUEUES];
struct stmmac_rxq_stats rxq_stats[MTL_MAX_RX_QUEUES];
Expand Down
6 changes: 6 additions & 0 deletions drivers/net/ethernet/stmicro/stmmac/stmmac_est.c
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ static void est_irq_status(struct stmmac_priv *priv, struct net_device *dev,
u32 status, value, feqn, hbfq, hbfs, btrl, btrl_max;
void __iomem *est_addr = priv->estaddr;
u32 txqcnt_mask = BIT(txqcnt) - 1;
int i;

status = readl(est_addr + EST_STATUS);

Expand Down Expand Up @@ -125,6 +126,11 @@ static void est_irq_status(struct stmmac_priv *priv, struct net_device *dev,

x->mtl_est_hlbf++;

for (i = 0; i < txqcnt; i++) {
if (feqn & BIT(i))
x->mtl_est_txq_hlbf[i]++;
}

/* Clear Interrupt */
writel(feqn, est_addr + EST_FRM_SZ_ERR);

Expand Down

0 comments on commit fd5a6a7

Please sign in to comment.