git: 109a12abcb57 - stable/15 - ena: Swap cleanup order

Arthur Kiyanovski <[email protected]> Sat, 01 Aug 2026 14:20:27 +0000
Newsgroups gmane.os.freebsd.devel.cvs.src
Message-ID <6a6e00ab.31e40.2f221c2b__15879.3260388606$1785594066$gmane$org@gitrepo.freebsd.org>
The branch stable/15 has been updated by akiyano:

URL: https://cgit.FreeBSD.org/src/commit/?id=109a12abcb57ca8919e0142fe12608e25c07aace

commit 109a12abcb57ca8919e0142fe12608e25c07aace
Author:     Arthur Kiyanovski <[email protected]>
AuthorDate: 2026-07-14 20:20:06 +0000
Commit:     Arthur Kiyanovski <[email protected]>
CommitDate: 2026-08-01 14:06:36 +0000

    ena: Swap cleanup order
    
    As RX processing is heavier than TX completions processing, swap the
    order and process TX completions first, in order to avoid starving the
    completions and causing potential missing TX completions.
    
    Submitted by: Ofir Tabachnik <[email protected]>
    MFC after: 2 weeks
    Sponsored by: Amazon, Inc.
    Reviewed by: cperciva
    Differential Revision: https://reviews.freebsd.org/D58239
    
    (cherry picked from commit f08def9ed97f45700eb0611a3fd9240210c9303e)
---
 sys/dev/ena/ena_datapath.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/dev/ena/ena_datapath.c b/sys/dev/ena/ena_datapath.c
index 23cbf62b5143..4fbdb8daaf58 100644
--- a/sys/dev/ena/ena_datapath.c
+++ b/sys/dev/ena/ena_datapath.c
@@ -100,8 +100,8 @@ ena_cleanup(void *arg, int pending)
 	atomic_store_8(&rx_ring->first_interrupt, 1);
 
 	for (i = 0; i < ENA_CLEAN_BUDGET; ++i) {
-		rx_again = ena_rx_cleanup(rx_ring);
 		tx_again = ena_tx_cleanup(tx_ring);
+		rx_again = ena_rx_cleanup(rx_ring);
 
 		if (unlikely(((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0) ||
 		    (ENA_FLAG_ISSET(ENA_FLAG_TRIGGER_RESET, adapter))))