From: <darinzon@amazon•com>
To: David Miller <davem@davemloft•net>,
Jakub Kicinski <kuba@kernel•org>, <netdev@vger•kernel.org>
Cc: David Arinzon <darinzon@amazon•com>,
Eric Dumazet <edumazet@google•com>,
Paolo Abeni <pabeni@redhat•com>,
"Woodhouse, David" <dwmw@amazon•com>,
"Machulsky, Zorik" <zorik@amazon•com>,
"Matushevsky, Alexander" <matua@amazon•com>,
Saeed Bshara <saeedb@amazon•com>, "Wilson, Matt" <msw@amazon•com>,
"Liguori, Anthony" <aliguori@amazon•com>,
"Bshara, Nafea" <nafea@amazon•com>,
"Belgazal, Netanel" <netanel@amazon•com>,
"Saidi, Ali" <alisaidi@amazon•com>,
"Herrenschmidt, Benjamin" <benh@amazon•com>,
"Kiyanovski, Arthur" <akiyano@amazon•com>,
"Dagan, Noam" <ndagan@amazon•com>,
"Agroskin, Shay" <shayagr@amazon•com>,
"Itzko, Shahar" <itzko@amazon•com>,
"Abboud, Osama" <osamaabb@amazon•com>,
"Ostrovsky, Evgeny" <evostrov@amazon•com>,
"Tabachnik, Ofir" <ofirt@amazon•com>
Subject: [PATCH v2 net-next 1/5] net: ena: Add a counter for driver's reset failures
Date: Sun, 12 May 2024 13:46:33 +0000 [thread overview]
Message-ID: <20240512134637.25299-2-darinzon@amazon.com> (raw)
In-Reply-To: <20240512134637.25299-1-darinzon@amazon.com>
From: David Arinzon <darinzon@amazon•com>
This patch adds a counter to the ena_adapter struct in
order to keep track of reset failures.
The counter is incremented every time either ena_restore_device()
or ena_destroy_device() fail.
Signed-off-by: Osama Abboud <osamaabb@amazon•com>
Signed-off-by: David Arinzon <darinzon@amazon•com>
---
drivers/net/ethernet/amazon/ena/ena_ethtool.c | 1 +
drivers/net/ethernet/amazon/ena/ena_netdev.c | 18 ++++++++++++------
drivers/net/ethernet/amazon/ena/ena_netdev.h | 1 +
3 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/amazon/ena/ena_ethtool.c b/drivers/net/ethernet/amazon/ena/ena_ethtool.c
index 0cb6cc1c..28583db8 100644
--- a/drivers/net/ethernet/amazon/ena/ena_ethtool.c
+++ b/drivers/net/ethernet/amazon/ena/ena_ethtool.c
@@ -49,6 +49,7 @@ static const struct ena_stats ena_stats_global_strings[] = {
ENA_STAT_GLOBAL_ENTRY(interface_up),
ENA_STAT_GLOBAL_ENTRY(interface_down),
ENA_STAT_GLOBAL_ENTRY(admin_q_pause),
+ ENA_STAT_GLOBAL_ENTRY(reset_fail),
};
static const struct ena_stats ena_stats_eni_strings[] = {
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index 28eaedaf..6a9d1b6d 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -42,7 +42,7 @@ MODULE_DEVICE_TABLE(pci, ena_pci_tbl);
static int ena_rss_init_default(struct ena_adapter *adapter);
static void check_for_admin_com_state(struct ena_adapter *adapter);
-static void ena_destroy_device(struct ena_adapter *adapter, bool graceful);
+static int ena_destroy_device(struct ena_adapter *adapter, bool graceful);
static int ena_restore_device(struct ena_adapter *adapter);
static void ena_tx_timeout(struct net_device *dev, unsigned int txqueue)
@@ -3235,14 +3235,15 @@ err_disable_msix:
return rc;
}
-static void ena_destroy_device(struct ena_adapter *adapter, bool graceful)
+static int ena_destroy_device(struct ena_adapter *adapter, bool graceful)
{
struct net_device *netdev = adapter->netdev;
struct ena_com_dev *ena_dev = adapter->ena_dev;
bool dev_up;
+ int rc = 0;
if (!test_bit(ENA_FLAG_DEVICE_RUNNING, &adapter->flags))
- return;
+ return 0;
netif_carrier_off(netdev);
@@ -3260,7 +3261,7 @@ static void ena_destroy_device(struct ena_adapter *adapter, bool graceful)
* and device is up, ena_down() already reset the device.
*/
if (!(test_bit(ENA_FLAG_TRIGGER_RESET, &adapter->flags) && dev_up))
- ena_com_dev_reset(adapter->ena_dev, adapter->reset_reason);
+ rc = ena_com_dev_reset(adapter->ena_dev, adapter->reset_reason);
ena_free_mgmnt_irq(adapter);
@@ -3279,6 +3280,8 @@ static void ena_destroy_device(struct ena_adapter *adapter, bool graceful)
clear_bit(ENA_FLAG_TRIGGER_RESET, &adapter->flags);
clear_bit(ENA_FLAG_DEVICE_RUNNING, &adapter->flags);
+
+ return rc;
}
static int ena_restore_device(struct ena_adapter *adapter)
@@ -3355,14 +3358,17 @@ err:
static void ena_fw_reset_device(struct work_struct *work)
{
+ int rc = 0;
+
struct ena_adapter *adapter =
container_of(work, struct ena_adapter, reset_task);
rtnl_lock();
if (likely(test_bit(ENA_FLAG_TRIGGER_RESET, &adapter->flags))) {
- ena_destroy_device(adapter, false);
- ena_restore_device(adapter);
+ rc |= ena_destroy_device(adapter, false);
+ rc |= ena_restore_device(adapter);
+ adapter->dev_stats.reset_fail += !!rc;
dev_err(&adapter->pdev->dev, "Device reset completed successfully\n");
}
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.h b/drivers/net/ethernet/amazon/ena/ena_netdev.h
index 6d2cc202..d5950974 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.h
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.h
@@ -290,6 +290,7 @@ struct ena_stats_dev {
u64 admin_q_pause;
u64 rx_drops;
u64 tx_drops;
+ u64 reset_fail;
};
enum ena_flags_t {
--
2.40.1
next prev parent reply other threads:[~2024-05-12 13:46 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-12 13:46 [PATCH v2 net-next 0/5] ENA driver changes May 2024 darinzon
2024-05-12 13:46 ` darinzon [this message]
2024-05-13 9:34 ` [PATCH v2 net-next 1/5] net: ena: Add a counter for driver's reset failures Simon Horman
2024-05-12 13:46 ` [PATCH v2 net-next 2/5] net: ena: Reduce holes in ena_com structures darinzon
2024-05-13 9:34 ` Simon Horman
2024-05-12 13:46 ` [PATCH v2 net-next 3/5] net: ena: Add validation for completion descriptors consistency darinzon
2024-05-13 9:34 ` Simon Horman
2024-05-12 13:46 ` [PATCH v2 net-next 4/5] net: ena: Changes around strscpy calls darinzon
2024-05-13 9:35 ` Simon Horman
2024-05-12 13:46 ` [PATCH v2 net-next 5/5] net: ena: Change initial rx_usec interval darinzon
2024-05-13 9:35 ` Simon Horman
2024-05-13 21:50 ` [PATCH v2 net-next 0/5] ENA driver changes May 2024 patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240512134637.25299-2-darinzon@amazon.com \
--to=darinzon@amazon$(echo .)com \
--cc=akiyano@amazon$(echo .)com \
--cc=aliguori@amazon$(echo .)com \
--cc=alisaidi@amazon$(echo .)com \
--cc=benh@amazon$(echo .)com \
--cc=davem@davemloft$(echo .)net \
--cc=dwmw@amazon$(echo .)com \
--cc=edumazet@google$(echo .)com \
--cc=evostrov@amazon$(echo .)com \
--cc=itzko@amazon$(echo .)com \
--cc=kuba@kernel$(echo .)org \
--cc=matua@amazon$(echo .)com \
--cc=msw@amazon$(echo .)com \
--cc=nafea@amazon$(echo .)com \
--cc=ndagan@amazon$(echo .)com \
--cc=netanel@amazon$(echo .)com \
--cc=netdev@vger$(echo .)kernel.org \
--cc=ofirt@amazon$(echo .)com \
--cc=osamaabb@amazon$(echo .)com \
--cc=pabeni@redhat$(echo .)com \
--cc=saeedb@amazon$(echo .)com \
--cc=shayagr@amazon$(echo .)com \
--cc=zorik@amazon$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox