Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 5 Jan 2014 22:40:28 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r260342 - in stable/10/sys/dev: aic7xxx firewire isp mpt
Message-ID:  <201401052240.s05MeSHs014241@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Sun Jan  5 22:40:28 2014
New Revision: 260342
URL: http://svnweb.freebsd.org/changeset/base/260342

Log:
  MFC r256826:
  Fix several target mode SIMs to not blindly clear ccb_h.flags field of
  ATIO CCBs.  Not all CCB flags there belong to them.

Modified:
  stable/10/sys/dev/aic7xxx/aic79xx.c
  stable/10/sys/dev/aic7xxx/aic7xxx.c
  stable/10/sys/dev/firewire/sbp_targ.c
  stable/10/sys/dev/isp/isp_freebsd.c
  stable/10/sys/dev/mpt/mpt_cam.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/dev/aic7xxx/aic79xx.c
==============================================================================
--- stable/10/sys/dev/aic7xxx/aic79xx.c	Sun Jan  5 22:38:44 2014	(r260341)
+++ stable/10/sys/dev/aic7xxx/aic79xx.c	Sun Jan  5 22:40:28 2014	(r260342)
@@ -10342,9 +10342,9 @@ ahd_handle_target_cmd(struct ahd_softc *
 		/* Tag was included */
 		atio->tag_action = *byte++;
 		atio->tag_id = *byte++;
-		atio->ccb_h.flags = CAM_TAG_ACTION_VALID;
+		atio->ccb_h.flags |= CAM_TAG_ACTION_VALID;
 	} else {
-		atio->ccb_h.flags = 0;
+		atio->ccb_h.flags &= ~CAM_TAG_ACTION_VALID;
 	}
 	byte++;
 

Modified: stable/10/sys/dev/aic7xxx/aic7xxx.c
==============================================================================
--- stable/10/sys/dev/aic7xxx/aic7xxx.c	Sun Jan  5 22:38:44 2014	(r260341)
+++ stable/10/sys/dev/aic7xxx/aic7xxx.c	Sun Jan  5 22:40:28 2014	(r260342)
@@ -7842,9 +7842,9 @@ ahc_handle_target_cmd(struct ahc_softc *
 		/* Tag was included */
 		atio->tag_action = *byte++;
 		atio->tag_id = *byte++;
-		atio->ccb_h.flags = CAM_TAG_ACTION_VALID;
+		atio->ccb_h.flags |= CAM_TAG_ACTION_VALID;
 	} else {
-		atio->ccb_h.flags = 0;
+		atio->ccb_h.flags &= ~CAM_TAG_ACTION_VALID;
 	}
 	byte++;
 

Modified: stable/10/sys/dev/firewire/sbp_targ.c
==============================================================================
--- stable/10/sys/dev/firewire/sbp_targ.c	Sun Jan  5 22:38:44 2014	(r260341)
+++ stable/10/sys/dev/firewire/sbp_targ.c	Sun Jan  5 22:40:28 2014	(r260342)
@@ -1483,7 +1483,7 @@ sbp_targ_cmd_handler(struct fw_xfer *xfe
 	atio->tag_id = orbi->orb_lo;
 	atio->init_id = orbi->login->id;
 
-	atio->ccb_h.flags = CAM_TAG_ACTION_VALID;
+	atio->ccb_h.flags |= CAM_TAG_ACTION_VALID;
 	bytes = (u_char *)&orb[5];
 	if (debug)
 		printf("%s: %p %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",

Modified: stable/10/sys/dev/isp/isp_freebsd.c
==============================================================================
--- stable/10/sys/dev/isp/isp_freebsd.c	Sun Jan  5 22:38:44 2014	(r260341)
+++ stable/10/sys/dev/isp/isp_freebsd.c	Sun Jan  5 22:40:28 2014	(r260342)
@@ -2286,9 +2286,9 @@ isp_handle_platform_atio(ispsoftc_t *isp
 	atiop->ccb_h.target_id = aep->at_tgt;
 	atiop->ccb_h.target_lun = aep->at_lun;
 	if (aep->at_flags & AT_NODISC) {
-		atiop->ccb_h.flags = CAM_DIS_DISCONNECT;
+		atiop->ccb_h.flags |= CAM_DIS_DISCONNECT;
 	} else {
-		atiop->ccb_h.flags = 0;
+		atiop->ccb_h.flags &= ~CAM_DIS_DISCONNECT;
 	}
 
 	if (status & QLTM_SVALID) {
@@ -2456,15 +2456,15 @@ isp_handle_platform_atio2(ispsoftc_t *is
 	atiop->tag_id = atp->tag;
 	switch (aep->at_taskflags & ATIO2_TC_ATTR_MASK) {
 	case ATIO2_TC_ATTR_SIMPLEQ:
-		atiop->ccb_h.flags = CAM_TAG_ACTION_VALID;
+		atiop->ccb_h.flags |= CAM_TAG_ACTION_VALID;
 		atiop->tag_action = MSG_SIMPLE_Q_TAG;
 		break;
 	case ATIO2_TC_ATTR_HEADOFQ:
-		atiop->ccb_h.flags = CAM_TAG_ACTION_VALID;
+		atiop->ccb_h.flags |= CAM_TAG_ACTION_VALID;
 		atiop->tag_action = MSG_HEAD_OF_Q_TAG;
 		break;
 	case ATIO2_TC_ATTR_ORDERED:
-		atiop->ccb_h.flags = CAM_TAG_ACTION_VALID;
+		atiop->ccb_h.flags |= CAM_TAG_ACTION_VALID;
 		atiop->tag_action = MSG_ORDERED_Q_TAG;
 		break;
 	case ATIO2_TC_ATTR_ACAQ:		/* ?? */
@@ -2676,15 +2676,15 @@ isp_handle_platform_atio7(ispsoftc_t *is
 	atiop->tag_id = atp->tag;
 	switch (aep->at_cmnd.fcp_cmnd_task_attribute & FCP_CMND_TASK_ATTR_MASK) {
 	case FCP_CMND_TASK_ATTR_SIMPLE:
-		atiop->ccb_h.flags = CAM_TAG_ACTION_VALID;
+		atiop->ccb_h.flags |= CAM_TAG_ACTION_VALID;
 		atiop->tag_action = MSG_SIMPLE_Q_TAG;
 		break;
 	case FCP_CMND_TASK_ATTR_HEAD:
-		atiop->ccb_h.flags = CAM_TAG_ACTION_VALID;
+		atiop->ccb_h.flags |= CAM_TAG_ACTION_VALID;
 		atiop->tag_action = MSG_HEAD_OF_Q_TAG;
 		break;
 	case FCP_CMND_TASK_ATTR_ORDERED:
-		atiop->ccb_h.flags = CAM_TAG_ACTION_VALID;
+		atiop->ccb_h.flags |= CAM_TAG_ACTION_VALID;
 		atiop->tag_action = MSG_ORDERED_Q_TAG;
 		break;
 	default:
@@ -5004,7 +5004,6 @@ isp_action(struct cam_sim *sim, union cc
 		}
 		ccb->ccb_h.spriv_field0 = 0;
 		ccb->ccb_h.spriv_ptr1 = isp;
-		ccb->ccb_h.flags = 0;
 
 		if (ccb->ccb_h.func_code == XPT_ACCEPT_TARGET_IO) {
 			if (ccb->atio.tag_id) {

Modified: stable/10/sys/dev/mpt/mpt_cam.c
==============================================================================
--- stable/10/sys/dev/mpt/mpt_cam.c	Sun Jan  5 22:38:44 2014	(r260341)
+++ stable/10/sys/dev/mpt/mpt_cam.c	Sun Jan  5 22:40:28 2014	(r260342)
@@ -3683,7 +3683,6 @@ mpt_action(struct cam_sim *sim, union cc
 		lun_id_t lun = ccb->ccb_h.target_lun;
 		ccb->ccb_h.sim_priv.entries[0].field = 0;
 		ccb->ccb_h.sim_priv.entries[1].ptr = mpt;
-		ccb->ccb_h.flags = 0;
 
 		if (lun == CAM_LUN_WILDCARD) {
 			if (ccb->ccb_h.target_id != CAM_TARGET_WILDCARD) {
@@ -5156,7 +5155,7 @@ mpt_scsi_tgt_atio(struct mpt_softc *mpt,
 	tgt->tag_id = atiop->tag_id;
 	if (tag_action) {
 		atiop->tag_action = tag_action;
-		atiop->ccb_h.flags = CAM_TAG_ACTION_VALID;
+		atiop->ccb_h.flags |= CAM_TAG_ACTION_VALID;
 	}
 	if (mpt->verbose >= MPT_PRT_DEBUG) {
 		int i;



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