forked from Minki/linux
net: systemport: Add software counters to track reallocations
When inserting the TSB, keep track of how many times we had to do it and if there was a failure in doing so, this helps profile the driver for possibly incorrect headroom settings. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
aa6ca0ec71
commit
a5d78ce793
@ -284,6 +284,8 @@ static const struct bcm_sysport_stats bcm_sysport_gstrings_stats[] = {
|
||||
STAT_MIB_SOFT("alloc_rx_buff_failed", mib.alloc_rx_buff_failed),
|
||||
STAT_MIB_SOFT("rx_dma_failed", mib.rx_dma_failed),
|
||||
STAT_MIB_SOFT("tx_dma_failed", mib.tx_dma_failed),
|
||||
STAT_MIB_SOFT("tx_realloc_tsb", mib.tx_realloc_tsb),
|
||||
STAT_MIB_SOFT("tx_realloc_tsb_failed", mib.tx_realloc_tsb_failed),
|
||||
/* Per TX-queue statistics are dynamically appended */
|
||||
};
|
||||
|
||||
@ -1220,6 +1222,7 @@ static void bcm_sysport_poll_controller(struct net_device *dev)
|
||||
static struct sk_buff *bcm_sysport_insert_tsb(struct sk_buff *skb,
|
||||
struct net_device *dev)
|
||||
{
|
||||
struct bcm_sysport_priv *priv = netdev_priv(dev);
|
||||
struct sk_buff *nskb;
|
||||
struct bcm_tsb *tsb;
|
||||
u32 csum_info;
|
||||
@ -1232,12 +1235,14 @@ static struct sk_buff *bcm_sysport_insert_tsb(struct sk_buff *skb,
|
||||
nskb = skb_realloc_headroom(skb, sizeof(*tsb));
|
||||
if (!nskb) {
|
||||
dev_kfree_skb_any(skb);
|
||||
priv->mib.tx_realloc_tsb_failed++;
|
||||
dev->stats.tx_errors++;
|
||||
dev->stats.tx_dropped++;
|
||||
return NULL;
|
||||
}
|
||||
dev_consume_skb_any(skb);
|
||||
skb = nskb;
|
||||
priv->mib.tx_realloc_tsb++;
|
||||
}
|
||||
|
||||
tsb = skb_push(skb, sizeof(*tsb));
|
||||
|
@ -607,6 +607,8 @@ struct bcm_sysport_mib {
|
||||
u32 alloc_rx_buff_failed;
|
||||
u32 rx_dma_failed;
|
||||
u32 tx_dma_failed;
|
||||
u32 tx_realloc_tsb;
|
||||
u32 tx_realloc_tsb_failed;
|
||||
};
|
||||
|
||||
/* HW maintains a large list of counters */
|
||||
|
Loading…
Reference in New Issue
Block a user