Author: sbruno
Date: Tue Jul 25 14:38:30 2017
New Revision: 321476
URL: https://svnweb.freebsd.org/changeset/base/321476

Log:
  Drop ixgbe RX lock during TCP_LRO processing.  This eliminates a "storm"
  of LOR detection and a bit of lock release/acquire collision when using LRO.
  
  Submitted by:   Kevin Bowling <kevin.bowl...@kev009.com>
  MFC after:      2 days
  Differential Revision:  https://reviews.freebsd.org/D11712

Modified:
  head/sys/dev/ixgbe/ix_txrx.c

Modified: head/sys/dev/ixgbe/ix_txrx.c
==============================================================================
--- head/sys/dev/ixgbe/ix_txrx.c        Tue Jul 25 14:35:44 2017        
(r321475)
+++ head/sys/dev/ixgbe/ix_txrx.c        Tue Jul 25 14:38:30 2017        
(r321476)
@@ -1593,9 +1593,7 @@ ixgbe_rx_input(struct rx_ring *rxr, struct ifnet *ifp,
                        if (tcp_lro_rx(&rxr->lro, m, 0) == 0)
                                return;
        }
-       IXGBE_RX_UNLOCK(rxr);
        (*ifp->if_input)(ifp, m);
-       IXGBE_RX_LOCK(rxr);
 } /* ixgbe_rx_input */
 
 /************************************************************************
@@ -1880,7 +1878,9 @@ next_desc:
                /* Now send to the stack or do LRO */
                if (sendmp != NULL) {
                        rxr->next_to_check = i;
+                       IXGBE_RX_UNLOCK(rxr);
                        ixgbe_rx_input(rxr, ifp, sendmp, ptype);
+                       IXGBE_RX_LOCK(rxr);
                        i = rxr->next_to_check;
                }
 
@@ -1897,12 +1897,12 @@ next_desc:
 
        rxr->next_to_check = i;
 
+       IXGBE_RX_UNLOCK(rxr);
+
        /*
         * Flush any outstanding LRO work
         */
        tcp_lro_flush_all(lro);
-
-       IXGBE_RX_UNLOCK(rxr);
 
        /*
         * Still have cleaning to do?
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to