mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-27 04:54:41 +08:00
gve: Add consumed counts to ethtool stats
Being able to see how many descriptors are in-use is helpful when diagnosing certain issues. Signed-off-by: Jeroen de Borst <jeroendb@google.com> Signed-off-by: Jordan Kim <jrkim@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
974365e518
commit
2c9198356d
@ -42,7 +42,7 @@ static const char gve_gstrings_main_stats[][ETH_GSTRING_LEN] = {
|
||||
};
|
||||
|
||||
static const char gve_gstrings_rx_stats[][ETH_GSTRING_LEN] = {
|
||||
"rx_posted_desc[%u]", "rx_completed_desc[%u]", "rx_bytes[%u]",
|
||||
"rx_posted_desc[%u]", "rx_completed_desc[%u]", "rx_consumed_desc[%u]", "rx_bytes[%u]",
|
||||
"rx_cont_packet_cnt[%u]", "rx_frag_flip_cnt[%u]", "rx_frag_copy_cnt[%u]",
|
||||
"rx_dropped_pkt[%u]", "rx_copybreak_pkt[%u]", "rx_copied_pkt[%u]",
|
||||
"rx_queue_drop_cnt[%u]", "rx_no_buffers_posted[%u]",
|
||||
@ -50,7 +50,7 @@ static const char gve_gstrings_rx_stats[][ETH_GSTRING_LEN] = {
|
||||
};
|
||||
|
||||
static const char gve_gstrings_tx_stats[][ETH_GSTRING_LEN] = {
|
||||
"tx_posted_desc[%u]", "tx_completed_desc[%u]", "tx_bytes[%u]",
|
||||
"tx_posted_desc[%u]", "tx_completed_desc[%u]", "tx_consumed_desc[%u]", "tx_bytes[%u]",
|
||||
"tx_wake[%u]", "tx_stop[%u]", "tx_event_counter[%u]",
|
||||
"tx_dma_mapping_error[%u]",
|
||||
};
|
||||
@ -139,10 +139,11 @@ static void
|
||||
gve_get_ethtool_stats(struct net_device *netdev,
|
||||
struct ethtool_stats *stats, u64 *data)
|
||||
{
|
||||
u64 tmp_rx_pkts, tmp_rx_bytes, tmp_rx_skb_alloc_fail, tmp_rx_buf_alloc_fail,
|
||||
tmp_rx_desc_err_dropped_pkt, tmp_tx_pkts, tmp_tx_bytes;
|
||||
u64 tmp_rx_pkts, tmp_rx_bytes, tmp_rx_skb_alloc_fail,
|
||||
tmp_rx_buf_alloc_fail, tmp_rx_desc_err_dropped_pkt,
|
||||
tmp_tx_pkts, tmp_tx_bytes;
|
||||
u64 rx_buf_alloc_fail, rx_desc_err_dropped_pkt, rx_pkts,
|
||||
rx_skb_alloc_fail, rx_bytes, tx_pkts, tx_bytes;
|
||||
rx_skb_alloc_fail, rx_bytes, tx_pkts, tx_bytes, tx_dropped;
|
||||
int stats_idx, base_stats_idx, max_stats_idx;
|
||||
struct stats *report_stats;
|
||||
int *rx_qid_to_stats_idx;
|
||||
@ -191,7 +192,7 @@ gve_get_ethtool_stats(struct net_device *netdev,
|
||||
rx_desc_err_dropped_pkt += tmp_rx_desc_err_dropped_pkt;
|
||||
}
|
||||
}
|
||||
for (tx_pkts = 0, tx_bytes = 0, ring = 0;
|
||||
for (tx_pkts = 0, tx_bytes = 0, tx_dropped = 0, ring = 0;
|
||||
ring < priv->tx_cfg.num_queues; ring++) {
|
||||
if (priv->tx) {
|
||||
do {
|
||||
@ -203,6 +204,7 @@ gve_get_ethtool_stats(struct net_device *netdev,
|
||||
start));
|
||||
tx_pkts += tmp_tx_pkts;
|
||||
tx_bytes += tmp_tx_bytes;
|
||||
tx_dropped += priv->tx[ring].dropped_pkt;
|
||||
}
|
||||
}
|
||||
|
||||
@ -214,9 +216,7 @@ gve_get_ethtool_stats(struct net_device *netdev,
|
||||
/* total rx dropped packets */
|
||||
data[i++] = rx_skb_alloc_fail + rx_buf_alloc_fail +
|
||||
rx_desc_err_dropped_pkt;
|
||||
/* Skip tx_dropped */
|
||||
i++;
|
||||
|
||||
data[i++] = tx_dropped;
|
||||
data[i++] = priv->tx_timeo_cnt;
|
||||
data[i++] = rx_skb_alloc_fail;
|
||||
data[i++] = rx_buf_alloc_fail;
|
||||
@ -255,6 +255,7 @@ gve_get_ethtool_stats(struct net_device *netdev,
|
||||
|
||||
data[i++] = rx->fill_cnt;
|
||||
data[i++] = rx->cnt;
|
||||
data[i++] = rx->fill_cnt - rx->cnt;
|
||||
do {
|
||||
start =
|
||||
u64_stats_fetch_begin(&priv->rx[ring].statss);
|
||||
@ -318,12 +319,14 @@ gve_get_ethtool_stats(struct net_device *netdev,
|
||||
if (gve_is_gqi(priv)) {
|
||||
data[i++] = tx->req;
|
||||
data[i++] = tx->done;
|
||||
data[i++] = tx->req - tx->done;
|
||||
} else {
|
||||
/* DQO doesn't currently support
|
||||
* posted/completed descriptor counts;
|
||||
*/
|
||||
data[i++] = 0;
|
||||
data[i++] = 0;
|
||||
data[i++] = tx->dqo_tx.tail - tx->dqo_tx.head;
|
||||
}
|
||||
do {
|
||||
start =
|
||||
|
Loading…
Reference in New Issue
Block a user