PERFORCE change 120413 for review

Matt Jacob mjacob at FreeBSD.org
Sat May 26 03:05:00 UTC 2007


http://perforce.freebsd.org/chv.cgi?CH=120413

Change 120413 by mjacob at mjexp on 2007/05/26 03:03:58

	Remove some stale ioctls that were poorly thought out.

Affected files ...

.. //depot/projects/mjexp/sys/dev/isp/isp_freebsd.c#28 edit
.. //depot/projects/mjexp/sys/dev/isp/isp_ioctl.h#3 edit

Differences ...

==== //depot/projects/mjexp/sys/dev/isp/isp_freebsd.c#28 (text+ko) ====

@@ -307,11 +307,6 @@
 {
 	ispsoftc_t *isp;
 	int nr, retval = ENOTTY;
-#if __FreeBSD_version < 500000  
-	int s = splcam();
-#else
-	GIANT_REQUIRED;
-#endif
 
 	isp = isplist;
 	while (isp) {
@@ -321,9 +316,6 @@
 		isp = isp->isp_osinfo.next;
 	}
 	if (isp == NULL) {
-#if __FreeBSD_version < 500000  
-		splx(s);
-#endif
 		return (ENXIO);
 	}
 	
@@ -354,10 +346,12 @@
 		break;
 	case ISP_FORCE_CRASH_DUMP:
 		if (IS_FC(isp)) {
+			ISP_LOCK(isp);
 			isp_freeze_loopdown(isp,
 			    "ispioctl(ISP_FORCE_CRASH_DUMP)");
 			isp_fw_dump(isp);
 			isp_reinit(isp);
+			ISP_UNLOCK(isp);
 			retval = 0;
 		}
 		break;
@@ -380,37 +374,35 @@
 			retval = EINVAL;
 			break;
 		}
-		/*
-		 * XXX: Current
-		 */
-		if (nr == ISP_ROLE_BOTH) {
-			isp_prt(isp, ISP_LOGERR, "dual roles not supported");
-			retval = EINVAL;
-			break;
-		}
 		*(int *)addr = isp->isp_role;
 		isp->isp_role = nr;
 		/* FALLTHROUGH */
 	case ISP_RESETHBA:
+		ISP_LOCK(isp);
 		isp_reinit(isp);
+		ISP_UNLOCK(isp);
 		retval = 0;
 		break;
 	case ISP_RESCAN:
 		if (IS_FC(isp)) {
+			ISP_LOCK(isp);
 			if (isp_fc_runstate(isp, 5 * 1000000)) {
 				retval = EIO;
 			} else {
 				retval = 0;
 			}
+			ISP_UNLOCK(isp);
 		}
 		break;
 	case ISP_FC_LIP:
 		if (IS_FC(isp)) {
+			ISP_LOCK(isp);
 			if (isp_control(isp, ISPCTL_SEND_LIP, 0)) {
 				retval = EIO;
 			} else {
 				retval = 0;
 			}
+			ISP_UNLOCK(isp);
 		}
 		break;
 	case ISP_FC_GETDINFO:
@@ -446,6 +438,7 @@
 		sp->isp_stat_version = ISP_STATS_VERSION;
 		sp->isp_type = isp->isp_type;
 		sp->isp_revision = isp->isp_revision;
+		ISP_LOCK(isp);
 		sp->isp_stats[ISP_INTCNT] = isp->isp_intcnt;
 		sp->isp_stats[ISP_INTBOGUS] = isp->isp_intbogus;
 		sp->isp_stats[ISP_INTMBOXC] = isp->isp_intmboxc;
@@ -454,10 +447,12 @@
 		sp->isp_stats[ISP_FPHCCMCPLT] = isp->isp_fphccmplt;
 		sp->isp_stats[ISP_RSCCHIWAT] = isp->isp_rscchiwater;
 		sp->isp_stats[ISP_FPCCHIWAT] = isp->isp_fpcchiwater;
+		ISP_UNLOCK(isp);
 		retval = 0;
 		break;
 	}
 	case ISP_CLR_STATS:
+		ISP_LOCK(isp);
 		isp->isp_intcnt = 0;
 		isp->isp_intbogus = 0;
 		isp->isp_intmboxc = 0;
@@ -466,6 +461,7 @@
 		isp->isp_fphccmplt = 0;
 		isp->isp_rscchiwater = 0;
 		isp->isp_fpcchiwater = 0;
+		ISP_UNLOCK(isp);
 		retval = 0;
 		break;
 	case ISP_FC_GETHINFO:
@@ -489,92 +485,6 @@
 		retval = 0;
 		break;
 	}
-	case ISP_GET_FC_PARAM:
-	{
-		struct isp_fc_param *f = (struct isp_fc_param *) addr;
-
-		if (IS_SCSI(isp)) {
-			break;
-		}
-		f->parameter = 0;
-		if (strcmp(f->param_name, "framelength") == 0) {
-			f->parameter = FCPARAM(isp)->isp_maxfrmlen;
-			retval = 0;
-			break;
-		}
-		if (strcmp(f->param_name, "exec_throttle") == 0) {
-			f->parameter = FCPARAM(isp)->isp_execthrottle;
-			retval = 0;
-			break;
-		}
-		if (strcmp(f->param_name, "fullduplex") == 0) {
-			if (FCPARAM(isp)->isp_fwoptions & ICBOPT_FULL_DUPLEX)
-				f->parameter = 1;
-			retval = 0;
-			break;
-		}
-		if (strcmp(f->param_name, "loopid") == 0) {
-			f->parameter = FCPARAM(isp)->isp_loopid;
-			retval = 0;
-			break;
-		}
-		retval = EINVAL;
-		break;
-	}
-	case ISP_SET_FC_PARAM:
-	{
-		struct isp_fc_param *f = (struct isp_fc_param *) addr;
-		uint32_t param = f->parameter;
-
-		if (IS_SCSI(isp)) {
-			break;
-		}
-		f->parameter = 0;
-		if (strcmp(f->param_name, "framelength") == 0) {
-			if (param != 512 && param != 1024 && param != 1024) {
-				retval = EINVAL;
-				break;
-			}
-			FCPARAM(isp)->isp_maxfrmlen = param;
-			retval = 0;
-			break;
-		}
-		if (strcmp(f->param_name, "exec_throttle") == 0) {
-			if (param < 16 || param > 255) {
-				retval = EINVAL;
-				break;
-			}
-			FCPARAM(isp)->isp_execthrottle = param;
-			retval = 0;
-			break;
-		}
-		if (strcmp(f->param_name, "fullduplex") == 0) {
-			if (param != 0 && param != 1) {
-				retval = EINVAL;
-				break;
-			}
-			if (param) {
-				FCPARAM(isp)->isp_fwoptions |=
-				    ICBOPT_FULL_DUPLEX;
-			} else {
-				FCPARAM(isp)->isp_fwoptions &=
-				    ~ICBOPT_FULL_DUPLEX;
-			}
-			retval = 0;
-			break;
-		}
-		if (strcmp(f->param_name, "loopid") == 0) {
-			if (param < 0 || param > 125) {
-				retval = EINVAL;
-				break;
-			}
-			FCPARAM(isp)->isp_loopid = param;
-			retval = 0;
-			break;
-		}
-		retval = EINVAL;
-		break;
-	}
 	case ISP_TSK_MGMT:
 	{
 		int needmarker;
@@ -629,7 +539,9 @@
 			if (needmarker) {
 				isp->isp_sendmarker |= 1;
 			}
+			ISP_LOCK(isp);
 			retval = isp_control(isp, ISPCTL_RUN_MBOXCMD, &mbs);
+			ISP_UNLOCK(isp);
 			if (retval)
 				retval = EIO;
 		}
@@ -638,9 +550,6 @@
 	default:
 		break;
 	}
-#if __FreeBSD_version < 500000  
-	splx(s);
-#endif
 	return (retval);
 }
 

==== //depot/projects/mjexp/sys/dev/isp/isp_ioctl.h#3 (text+ko) ====

@@ -154,29 +154,6 @@
 #define	ISP_TOPO_FPORT		4	/* F-port */
 
 #define	ISP_FC_GETHINFO	_IOR(ISP_IOC, 12, struct isp_hba_device)
-/*
- * Set some internal parameters. This doesn't take effect until
- * the chip is reset.
- *
- * Each parameter is generalized to be a name string with an integer value.
- *
- * Known parameters are:
- *
- *	Name				Value Range
- *	
- *	"framelength"			512,1024,2048
- *	"exec_throttle"			16..255
- *	"fullduplex"			0,1
- *	"loopid"			0..125
- */
-
-struct isp_fc_param {
-	char		param_name[16];	/* null terminated */
-	uint32_t	parameter;
-};
-
-#define	ISP_GET_FC_PARAM	_IOWR(ISP_IOC, 98, struct isp_fc_param)
-#define	ISP_SET_FC_PARAM	_IOWR(ISP_IOC, 99, struct isp_fc_param)
 
 /*
  * Various Reset Goodies


More information about the p4-projects mailing list