]> xenbits.xensource.com Git - people/julieng/freebsd.git/commitdiff
Change the way how target mode is enabled on 23xx chips.
authormav <mav@FreeBSD.org>
Wed, 28 Oct 2015 19:08:51 +0000 (19:08 +0000)
committermav <mav@FreeBSD.org>
Wed, 28 Oct 2015 19:08:51 +0000 (19:08 +0000)
Without docs I am not completely sure about this, but on my tests new
method works better then previous, at least with our latest firmware.

sys/dev/isp/isp.c
sys/dev/isp/isp_freebsd.c

index 443064f3d2dfaa6c317233c4f6c318889472af6b..31764f81abf454d8da3d0b37c2fc105a12dbb86e 100644 (file)
@@ -1895,7 +1895,7 @@ isp_fibre_init(ispsoftc_t *isp)
        icbp->icb_logintime = ICB_LOGIN_TOV;
 
 #ifdef ISP_TARGET_MODE
-       if (ISP_FW_NEWER_THAN(isp, 3, 25, 0) && (icbp->icb_fwoptions & ICBOPT_TGT_ENABLE)) {
+       if (IS_23XX(isp) && (icbp->icb_fwoptions & ICBOPT_TGT_ENABLE)) {
                icbp->icb_lunenables = 0xffff;
                icbp->icb_ccnt = DFLT_CMND_CNT;
                icbp->icb_icnt = DFLT_INOT_CNT;
index db122975170842f7fe5f28942f7a2e31130824bc..efc1b7c1196684bfb953468b3c6099891388b3c9 100644 (file)
@@ -1414,7 +1414,8 @@ isp_enable_deferred(ispsoftc_t *isp, int bus, lun_id_t lun)
 
        ISP_GET_PC(isp, bus, tm_luns_enabled, luns_already_enabled);
        isp_prt(isp, ISP_LOGTINFO, "%s: bus %d lun %jx luns_enabled %d", __func__, bus, (uintmax_t)lun, luns_already_enabled);
-       if (IS_24XX(isp) || (IS_FC(isp) && luns_already_enabled)) {
+       if (IS_23XX(isp) || IS_24XX(isp) ||
+           (IS_FC(isp) && luns_already_enabled)) {
                status = CAM_REQ_CMP;
        } else {
                int cmd_cnt, not_cnt;
@@ -1485,7 +1486,7 @@ isp_disable_lun(ispsoftc_t *isp, union ccb *ccb)
        /*
         * If we're a 24XX card, we're done.
         */
-       if (IS_24XX(isp)) {
+       if (IS_23XX(isp) || IS_24XX(isp)) {
                status = CAM_REQ_CMP;
                goto done;
        }
@@ -1501,7 +1502,7 @@ isp_disable_lun(ispsoftc_t *isp, union ccb *ccb)
        if (isp_lun_cmd(isp, RQSTYPE_ENABLE_LUN, bus, lun, 0, 0)) {
                status = CAM_RESRC_UNAVAIL;
        } else {
-               mtx_sleep(ccb, &isp->isp_lock, PRIBIO, "isp_disable_lun", 0);
+               mtx_sleep(&status, &isp->isp_lock, PRIBIO, "isp_disable_lun", 0);
        }
        isp->isp_osinfo.rptr = NULL;
 done: