Author: mav
Date: Thu Aug 31 21:37:22 2017
New Revision: 323074
URL: https://svnweb.freebsd.org/changeset/base/323074

Log:
  Clear doorbell bits after masking them before processing.
  
  In theory this allows to avoid one more expensive doorbell register read
  later in some scenarios.  But in practice it also significantly increases
  packet rate on PLX hardware, that I can't explain yet, possibly work-
  arounding some interrupt delays.
  
  MFC after:    13 days
  Sponsored by: iXsystems, Inc.

Modified:
  head/sys/dev/ntb/ntb_transport.c

Modified: head/sys/dev/ntb/ntb_transport.c
==============================================================================
--- head/sys/dev/ntb/ntb_transport.c    Thu Aug 31 21:31:13 2017        
(r323073)
+++ head/sys/dev/ntb/ntb_transport.c    Thu Aug 31 21:37:22 2017        
(r323074)
@@ -1012,8 +1012,10 @@ ntb_transport_doorbell_callback(void *data, uint32_t v
        vec_mask &= nt->qp_bitmap;
        if ((vec_mask & (vec_mask - 1)) != 0)
                vec_mask &= ntb_db_read(nt->dev);
-       if (vec_mask != 0)
+       if (vec_mask != 0) {
                ntb_db_set_mask(nt->dev, vec_mask);
+               ntb_db_clear(nt->dev, vec_mask);
+       }
        while (vec_mask != 0) {
                qp_num = ffsll(vec_mask) - 1;
 
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to