Date: Mon, 11 Sep 2017 18:50:09 +0000 (UTC) From: Alexander Motin <mav@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r323454 - stable/11/sys/dev/ntb Message-ID: <201709111850.v8BIo951075869@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: mav Date: Mon Sep 11 18:50:09 2017 New Revision: 323454 URL: https://svnweb.freebsd.org/changeset/base/323454 Log: MFC r323074: 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. Modified: stable/11/sys/dev/ntb/ntb_transport.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/dev/ntb/ntb_transport.c ============================================================================== --- stable/11/sys/dev/ntb/ntb_transport.c Mon Sep 11 18:48:09 2017 (r323453) +++ stable/11/sys/dev/ntb/ntb_transport.c Mon Sep 11 18:50:09 2017 (r323454) @@ -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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201709111850.v8BIo951075869>