diff options
Diffstat (limited to 'sys/dev/isp/isp.c')
-rw-r--r-- | sys/dev/isp/isp.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c index d3e5bdb..6a3897a 100644 --- a/sys/dev/isp/isp.c +++ b/sys/dev/isp/isp.c @@ -2589,7 +2589,7 @@ isp_get_wwn(ispsoftc_t *isp, int chan, int loopid, int nodename) } mbs.param[9] = chan; } else { - mbs.ibits = 3; + mbs.ibitm = 3; mbs.param[1] = loopid << 8; if (nodename) { mbs.param[1] |= 1; @@ -7363,6 +7363,13 @@ isp_mboxcmd(ispsoftc_t *isp, mbreg_t *mbp) ibits |= mbp->ibits; obits |= mbp->obits; + /* + * Mask any bits that the caller wants us to mask + */ + ibits &= mbp->ibitm; + obits &= mbp->obitm; + + if (ibits == 0 && obits == 0) { mbp->param[0] = MBOX_COMMAND_PARAM_ERROR; isp_prt(isp, ISP_LOGERR, "no parameters for 0x%x", opcode); |