git: cc489c17d2ac - stable/14 - ena: Trigger reset when mbuf is NULL error happens
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 31 Oct 2024 16:01:32 UTC
The branch stable/14 has been updated by osamaabb:
URL: https://cgit.FreeBSD.org/src/commit/?id=cc489c17d2ac7b0a18b5dac8ed31d2fa2d7a06ed
commit cc489c17d2ac7b0a18b5dac8ed31d2fa2d7a06ed
Author: Osama Abboud <osamaabb@amazon.com>
AuthorDate: 2024-08-07 06:24:20 +0000
Commit: Osama Abboud <osamaabb@FreeBSD.org>
CommitDate: 2024-10-31 14:54:11 +0000
ena: Trigger reset when mbuf is NULL error happens
The mbuf is NULL issue happens when the device sends the driver
a completion with a wrong request id.
Trigger a reset whenever this happens.
Approved by: cperciva (mentor)
Sponsored by: Amazon, Inc.
(cherry picked from commit da73e3a7d08c215a5d8530fea9a9730f8ac3709f)
---
sys/dev/ena/ena_datapath.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/sys/dev/ena/ena_datapath.c b/sys/dev/ena/ena_datapath.c
index 20864d0d2df6..ab082fa1810f 100644
--- a/sys/dev/ena/ena_datapath.c
+++ b/sys/dev/ena/ena_datapath.c
@@ -434,7 +434,9 @@ ena_rx_mbuf(struct ena_ring *rx_ring, struct ena_com_rx_buf_info *ena_bufs,
req_id = ena_bufs[buf].req_id;
rx_info = &rx_ring->rx_buffer_info[req_id];
if (unlikely(rx_info->mbuf == NULL)) {
- ena_log(pdev, ERR, "NULL mbuf in rx_info");
+ ena_log(pdev, ERR, "NULL mbuf in rx_info. qid %u req_id %u\n",
+ rx_ring->qid, req_id);
+ ena_trigger_reset(adapter, ENA_REGS_RESET_INV_RX_REQ_ID);
return (NULL);
}
@@ -476,7 +478,8 @@ ena_rx_mbuf(struct ena_ring *rx_ring, struct ena_com_rx_buf_info *ena_bufs,
rx_info = &rx_ring->rx_buffer_info[req_id];
if (unlikely(rx_info->mbuf == NULL)) {
- ena_log(pdev, ERR, "NULL mbuf in rx_info");
+ ena_log(pdev, ERR, "NULL mbuf in rx_info. qid %u req_id %u\n",
+ rx_ring->qid, req_id);
/*
* If one of the required mbufs was not allocated yet,
* we can break there.
@@ -488,6 +491,7 @@ ena_rx_mbuf(struct ena_ring *rx_ring, struct ena_com_rx_buf_info *ena_bufs,
* with hw ring.
*/
m_freem(mbuf);
+ ena_trigger_reset(adapter, ENA_REGS_RESET_INV_RX_REQ_ID);
return (NULL);
}