From owner-svn-src-head@freebsd.org Thu Aug 31 21:37:23 2017 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DA3A5E06369; Thu, 31 Aug 2017 21:37:23 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 97A4A6881B; Thu, 31 Aug 2017 21:37:23 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7VLbMEr035209; Thu, 31 Aug 2017 21:37:22 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7VLbMEl035208; Thu, 31 Aug 2017 21:37:22 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201708312137.v7VLbMEl035208@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 31 Aug 2017 21:37:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r323074 - head/sys/dev/ntb X-SVN-Group: head X-SVN-Commit-Author: mav X-SVN-Commit-Paths: head/sys/dev/ntb X-SVN-Commit-Revision: 323074 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Aug 2017 21:37:24 -0000 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;