aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/ena
diff options
context:
space:
mode:
authorMarcin Wojtas <mw@FreeBSD.org>2019-05-30 13:13:15 +0000
committerMarcin Wojtas <mw@FreeBSD.org>2019-05-30 13:13:15 +0000
commitc9b099ec94f7eaeb91b7e0c51b7fecb755add24f (patch)
tree364b16f61ce5900c8cae8594ea7c6e91a4d6590d /sys/dev/ena
parent277f11c40147c446f955afa94a791593480f6690 (diff)
downloadsrc-c9b099ec94f7eaeb91b7e0c51b7fecb755add24f.tar.gz
src-c9b099ec94f7eaeb91b7e0c51b7fecb755add24f.zip
Trigger reset in ENA if there are too many Rx descriptors
Whenever the driver will receive too many descriptors from the device, it should trigger the device reset, as it is indicating that the device is in invalid state. Submitted by: Michal Krawczyk <mk@semihalf.com> Obtained from: Semihalf Sponsored by: Amazon, Inc.
Notes
Notes: svn path=/head/; revision=348390
Diffstat (limited to 'sys/dev/ena')
-rw-r--r--sys/dev/ena/ena.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/dev/ena/ena.c b/sys/dev/ena/ena.c
index 2801248c59d6..9481e5cb182f 100644
--- a/sys/dev/ena/ena.c
+++ b/sys/dev/ena/ena.c
@@ -1717,7 +1717,12 @@ ena_rx_cleanup(struct ena_ring *rx_ring)
error:
counter_u64_add(rx_ring->rx_stats.bad_desc_num, 1);
- return (RX_BUDGET - budget);
+
+ /* Too many desc from the device. Trigger reset */
+ adapter->reset_reason = ENA_REGS_RESET_TOO_MANY_RX_DESCS;
+ adapter->trigger_reset = true;
+
+ return (0);
}
/*********************************************************************