提交 4452d099 编写于 作者: M Matt Carlson 提交者: David S. Miller

tg3: Fix stats for 5704 and later devices

Commit 4d958473, entitled
"tg3: Workaround rx_discards stat bug" modified the hardware statistics
data structure.  The modification shifted the statistics so that the
labels no longer corresponded to the counter values.  This patch fixes
the problem by utilizing reserved space for the new counters.
Signed-off-by: NMatt Carlson <mcarlson@broadcom.com>
Reviewed-by: NMichael Chan <mchan@broadcom.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 54e0a67f
...@@ -364,7 +364,6 @@ static const struct { ...@@ -364,7 +364,6 @@ static const struct {
{ "dma_write_prioq_full" }, { "dma_write_prioq_full" },
{ "rxbds_empty" }, { "rxbds_empty" },
{ "rx_discards" }, { "rx_discards" },
{ "mbuf_lwm_thresh_hit" },
{ "rx_errors" }, { "rx_errors" },
{ "rx_threshold_hit" }, { "rx_threshold_hit" },
...@@ -376,7 +375,9 @@ static const struct { ...@@ -376,7 +375,9 @@ static const struct {
{ "ring_status_update" }, { "ring_status_update" },
{ "nic_irqs" }, { "nic_irqs" },
{ "nic_avoided_irqs" }, { "nic_avoided_irqs" },
{ "nic_tx_threshold_hit" } { "nic_tx_threshold_hit" },
{ "mbuf_lwm_thresh_hit" },
}; };
#define TG3_NUM_STATS ARRAY_SIZE(ethtool_stats_keys) #define TG3_NUM_STATS ARRAY_SIZE(ethtool_stats_keys)
...@@ -9546,6 +9547,8 @@ static struct tg3_ethtool_stats *tg3_get_estats(struct tg3 *tp) ...@@ -9546,6 +9547,8 @@ static struct tg3_ethtool_stats *tg3_get_estats(struct tg3 *tp)
ESTAT_ADD(nic_avoided_irqs); ESTAT_ADD(nic_avoided_irqs);
ESTAT_ADD(nic_tx_threshold_hit); ESTAT_ADD(nic_tx_threshold_hit);
ESTAT_ADD(mbuf_lwm_thresh_hit);
return estats; return estats;
} }
......
...@@ -2620,7 +2620,6 @@ struct tg3_hw_stats { ...@@ -2620,7 +2620,6 @@ struct tg3_hw_stats {
tg3_stat64_t dma_write_prioq_full; tg3_stat64_t dma_write_prioq_full;
tg3_stat64_t rxbds_empty; tg3_stat64_t rxbds_empty;
tg3_stat64_t rx_discards; tg3_stat64_t rx_discards;
tg3_stat64_t mbuf_lwm_thresh_hit;
tg3_stat64_t rx_errors; tg3_stat64_t rx_errors;
tg3_stat64_t rx_threshold_hit; tg3_stat64_t rx_threshold_hit;
...@@ -2639,7 +2638,12 @@ struct tg3_hw_stats { ...@@ -2639,7 +2638,12 @@ struct tg3_hw_stats {
tg3_stat64_t nic_avoided_irqs; tg3_stat64_t nic_avoided_irqs;
tg3_stat64_t nic_tx_threshold_hit; tg3_stat64_t nic_tx_threshold_hit;
u8 __reserved4[0xb00-0x9c0]; /* NOT a part of the hardware statistics block format.
* These stats are here as storage for tg3_periodic_fetch_stats().
*/
tg3_stat64_t mbuf_lwm_thresh_hit;
u8 __reserved4[0xb00-0x9c8];
}; };
/* 'mapping' is superfluous as the chip does not write into /* 'mapping' is superfluous as the chip does not write into
...@@ -2771,6 +2775,8 @@ struct tg3_ethtool_stats { ...@@ -2771,6 +2775,8 @@ struct tg3_ethtool_stats {
u64 nic_irqs; u64 nic_irqs;
u64 nic_avoided_irqs; u64 nic_avoided_irqs;
u64 nic_tx_threshold_hit; u64 nic_tx_threshold_hit;
u64 mbuf_lwm_thresh_hit;
}; };
struct tg3_rx_prodring_set { struct tg3_rx_prodring_set {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册