Skip to content

Commit 62a261f

Browse files
davidarinzonkuba-moo
authored andcommitted
net: ena: Add a counter for driver's reset failures
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 <[email protected]> Signed-off-by: David Arinzon <[email protected]> Reviewed-by: Simon Horman <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 5fcc17d commit 62a261f

File tree

3 files changed

+14
-6
lines changed

3 files changed

+14
-6
lines changed

drivers/net/ethernet/amazon/ena/ena_ethtool.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ static const struct ena_stats ena_stats_global_strings[] = {
4949
ENA_STAT_GLOBAL_ENTRY(interface_up),
5050
ENA_STAT_GLOBAL_ENTRY(interface_down),
5151
ENA_STAT_GLOBAL_ENTRY(admin_q_pause),
52+
ENA_STAT_GLOBAL_ENTRY(reset_fail),
5253
};
5354

5455
static const struct ena_stats ena_stats_eni_strings[] = {

drivers/net/ethernet/amazon/ena/ena_netdev.c

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ MODULE_DEVICE_TABLE(pci, ena_pci_tbl);
4242

4343
static int ena_rss_init_default(struct ena_adapter *adapter);
4444
static void check_for_admin_com_state(struct ena_adapter *adapter);
45-
static void ena_destroy_device(struct ena_adapter *adapter, bool graceful);
45+
static int ena_destroy_device(struct ena_adapter *adapter, bool graceful);
4646
static int ena_restore_device(struct ena_adapter *adapter);
4747

4848
static void ena_tx_timeout(struct net_device *dev, unsigned int txqueue)
@@ -3235,14 +3235,15 @@ static int ena_enable_msix_and_set_admin_interrupts(struct ena_adapter *adapter)
32353235
return rc;
32363236
}
32373237

3238-
static void ena_destroy_device(struct ena_adapter *adapter, bool graceful)
3238+
static int ena_destroy_device(struct ena_adapter *adapter, bool graceful)
32393239
{
32403240
struct net_device *netdev = adapter->netdev;
32413241
struct ena_com_dev *ena_dev = adapter->ena_dev;
32423242
bool dev_up;
3243+
int rc = 0;
32433244

32443245
if (!test_bit(ENA_FLAG_DEVICE_RUNNING, &adapter->flags))
3245-
return;
3246+
return 0;
32463247

32473248
netif_carrier_off(netdev);
32483249

@@ -3260,7 +3261,7 @@ static void ena_destroy_device(struct ena_adapter *adapter, bool graceful)
32603261
* and device is up, ena_down() already reset the device.
32613262
*/
32623263
if (!(test_bit(ENA_FLAG_TRIGGER_RESET, &adapter->flags) && dev_up))
3263-
ena_com_dev_reset(adapter->ena_dev, adapter->reset_reason);
3264+
rc = ena_com_dev_reset(adapter->ena_dev, adapter->reset_reason);
32643265

32653266
ena_free_mgmnt_irq(adapter);
32663267

@@ -3279,6 +3280,8 @@ static void ena_destroy_device(struct ena_adapter *adapter, bool graceful)
32793280

32803281
clear_bit(ENA_FLAG_TRIGGER_RESET, &adapter->flags);
32813282
clear_bit(ENA_FLAG_DEVICE_RUNNING, &adapter->flags);
3283+
3284+
return rc;
32823285
}
32833286

32843287
static int ena_restore_device(struct ena_adapter *adapter)
@@ -3355,14 +3358,17 @@ static int ena_restore_device(struct ena_adapter *adapter)
33553358

33563359
static void ena_fw_reset_device(struct work_struct *work)
33573360
{
3361+
int rc = 0;
3362+
33583363
struct ena_adapter *adapter =
33593364
container_of(work, struct ena_adapter, reset_task);
33603365

33613366
rtnl_lock();
33623367

33633368
if (likely(test_bit(ENA_FLAG_TRIGGER_RESET, &adapter->flags))) {
3364-
ena_destroy_device(adapter, false);
3365-
ena_restore_device(adapter);
3369+
rc |= ena_destroy_device(adapter, false);
3370+
rc |= ena_restore_device(adapter);
3371+
adapter->dev_stats.reset_fail += !!rc;
33663372

33673373
dev_err(&adapter->pdev->dev, "Device reset completed successfully\n");
33683374
}

drivers/net/ethernet/amazon/ena/ena_netdev.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,7 @@ struct ena_stats_dev {
290290
u64 admin_q_pause;
291291
u64 rx_drops;
292292
u64 tx_drops;
293+
u64 reset_fail;
293294
};
294295

295296
enum ena_flags_t {

0 commit comments

Comments
 (0)