MFC r257916:

Save one more register read per command by not reading rqstoutrp register
every time.  The purpose of that register is unlikely output queue overflow
detection, so read it only when its last known (and probably stale now)
value signals overflow.
This commit is contained in:
mav 2014-01-05 22:45:46 +00:00
parent 2ef8e6e39b
commit 116abbfd1f

View File

@ -322,9 +322,13 @@ isp_destroy_handle(ispsoftc_t *isp, uint32_t handle)
void *
isp_getrqentry(ispsoftc_t *isp)
{
isp->isp_reqodx = ISP_READ(isp, isp->isp_rqstoutrp);
if (ISP_NXT_QENTRY(isp->isp_reqidx, RQUEST_QUEUE_LEN(isp)) == isp->isp_reqodx) {
return (NULL);
uint32_t next;
next = ISP_NXT_QENTRY(isp->isp_reqidx, RQUEST_QUEUE_LEN(isp));
if (next == isp->isp_reqodx) {
isp->isp_reqodx = ISP_READ(isp, isp->isp_rqstoutrp);
if (next == isp->isp_reqodx)
return (NULL);
}
return (ISP_QUEUE_ENTRY(isp->isp_rquest, isp->isp_reqidx));
}