Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Oct 2015 19:08:52 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r290118 - head/sys/dev/isp
Message-ID:  <201510281908.t9SJ8qTc073980@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Wed Oct 28 19:08:51 2015
New Revision: 290118
URL: https://svnweb.freebsd.org/changeset/base/290118

Log:
  Change the way how target mode is enabled on 23xx chips.
  
  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.

Modified:
  head/sys/dev/isp/isp.c
  head/sys/dev/isp/isp_freebsd.c

Modified: head/sys/dev/isp/isp.c
==============================================================================
--- head/sys/dev/isp/isp.c	Wed Oct 28 18:53:18 2015	(r290117)
+++ head/sys/dev/isp/isp.c	Wed Oct 28 19:08:51 2015	(r290118)
@@ -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;

Modified: head/sys/dev/isp/isp_freebsd.c
==============================================================================
--- head/sys/dev/isp/isp_freebsd.c	Wed Oct 28 18:53:18 2015	(r290117)
+++ head/sys/dev/isp/isp_freebsd.c	Wed Oct 28 19:08:51 2015	(r290118)
@@ -1414,7 +1414,8 @@ isp_enable_deferred(ispsoftc_t *isp, int
 
 	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 c
 	/*
 	 * 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 c
 	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:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201510281908.t9SJ8qTc073980>