The branch stable/13 has been updated by osamaabb:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=6219b33984353e81a4acb4c487569203ed2d87b2

commit 6219b33984353e81a4acb4c487569203ed2d87b2
Author:     Osama Abboud <osama...@amazon.com>
AuthorDate: 2024-08-07 06:24:20 +0000
Commit:     Osama Abboud <osama...@freebsd.org>
CommitDate: 2024-10-31 14:55:20 +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 17a9c2c37f4d..90662cf9313b 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);
                }
 

Reply via email to