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