Skip to content

Commit

Permalink
net: ena: add support for reporting of packet drops
Browse files Browse the repository at this point in the history
1. Add support for getting tx drops from the device and saving them
in the driver.
2. Report tx via netdev stats.

Signed-off-by: Igor Chauskin <igorch@amazon.com>
Signed-off-by: Guy Tzalik <gtzalik@amazon.com>
Signed-off-by: Arthur Kiyanovski <akiyano@amazon.com>
Signed-off-by: Sameeh Jubran <sameehj@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Sameeh Jubran authored and David S. Miller committed May 3, 2020
1 parent d4a8b3b commit 5c665f8
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 0 deletions.
8 changes: 8 additions & 0 deletions drivers/net/ethernet/amazon/ena/ena_admin_defs.h
Original file line number Diff line number Diff line change
Expand Up @@ -404,6 +404,10 @@ struct ena_admin_basic_stats {
u32 rx_drops_low;

u32 rx_drops_high;

u32 tx_drops_low;

u32 tx_drops_high;
};

struct ena_admin_acq_get_stats_resp {
Expand Down Expand Up @@ -1017,6 +1021,10 @@ struct ena_admin_aenq_keep_alive_desc {
u32 rx_drops_low;

u32 rx_drops_high;

u32 tx_drops_low;

u32 tx_drops_high;
};

struct ena_admin_ena_mmio_req_read_less_resp {
Expand Down
6 changes: 6 additions & 0 deletions drivers/net/ethernet/amazon/ena/ena_netdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -3172,6 +3172,7 @@ static void ena_get_stats64(struct net_device *netdev,
struct ena_ring *rx_ring, *tx_ring;
unsigned int start;
u64 rx_drops;
u64 tx_drops;
int i;

if (!test_bit(ENA_FLAG_DEV_UP, &adapter->flags))
Expand Down Expand Up @@ -3206,9 +3207,11 @@ static void ena_get_stats64(struct net_device *netdev,
do {
start = u64_stats_fetch_begin_irq(&adapter->syncp);
rx_drops = adapter->dev_stats.rx_drops;
tx_drops = adapter->dev_stats.tx_drops;
} while (u64_stats_fetch_retry_irq(&adapter->syncp, start));

stats->rx_dropped = rx_drops;
stats->tx_dropped = tx_drops;

stats->multicast = 0;
stats->collisions = 0;
Expand Down Expand Up @@ -4517,14 +4520,17 @@ static void ena_keep_alive_wd(void *adapter_data,
struct ena_adapter *adapter = (struct ena_adapter *)adapter_data;
struct ena_admin_aenq_keep_alive_desc *desc;
u64 rx_drops;
u64 tx_drops;

desc = (struct ena_admin_aenq_keep_alive_desc *)aenq_e;
adapter->last_keep_alive_jiffies = jiffies;

rx_drops = ((u64)desc->rx_drops_high << 32) | desc->rx_drops_low;
tx_drops = ((u64)desc->tx_drops_high << 32) | desc->tx_drops_low;

u64_stats_update_begin(&adapter->syncp);
adapter->dev_stats.rx_drops = rx_drops;
adapter->dev_stats.tx_drops = tx_drops;
u64_stats_update_end(&adapter->syncp);
}

Expand Down
1 change: 1 addition & 0 deletions drivers/net/ethernet/amazon/ena/ena_netdev.h
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,7 @@ struct ena_stats_dev {
u64 interface_down;
u64 admin_q_pause;
u64 rx_drops;
u64 tx_drops;
};

enum ena_flags_t {
Expand Down

0 comments on commit 5c665f8

Please sign in to comment.