tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: mpt Serious performance issues
Hi,
I had a closer look at the mpt driver, especially about tagged
queueing. There is a flag called mpt_tag_enable defined in struct
mpt_softc which is initialized as follows in sys/dev/ic/mpt.c:
mpt->mpt_tag_enable = 0;
The function mpt_run_xfer() evaluates this flag in order to change the
queue behaviour:
/* Set the queue behavior. */
if (__predict_true((!mpt->is_scsi) ||
(mpt->mpt_tag_enable &
(1 << periph->periph_target)))) {
Before that, the function mpt_set_xfer_mode() does this:
if (xm->xm_mode & PERIPH_CAP_TQING)
mpt->mpt_tag_enable |= (1 << xm->xm_target);
else
mpt->mpt_tag_enable &= ~(1 << xm->xm_target);
What is going on here? Does the struct scsipi_xfer_mode *xm come from
the scsipi layer so it tells the driver what to do?
Regards,
Stephan
Home |
Main Index |
Thread Index |
Old Index