svn commit: r330888 - in stable/11: share/man/man4 sys/dev/isp

Alexander Motin mav at FreeBSD.org
Wed Mar 14 00:27:26 UTC 2018


Author: mav
Date: Wed Mar 14 00:27:25 2018
New Revision: 330888
URL: https://svnweb.freebsd.org/changeset/base/330888

Log:
  MFC r330121:
  Add support for Enhanced Gen 5 (16Gb) and Gen 6 (32Gb) QLogic FC HBAs.
  
  Sponsored by:	iXsystems, Inc.

Modified:
  stable/11/share/man/man4/isp.4
  stable/11/sys/dev/isp/isp.c
  stable/11/sys/dev/isp/isp_pci.c
  stable/11/sys/dev/isp/ispmbox.h
  stable/11/sys/dev/isp/ispvar.h
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/share/man/man4/isp.4
==============================================================================
--- stable/11/share/man/man4/isp.4	Wed Mar 14 00:04:58 2018	(r330887)
+++ stable/11/share/man/man4/isp.4	Wed Mar 14 00:27:25 2018	(r330888)
@@ -1,4 +1,4 @@
-.\" Copyright (c) 2009-2017 Alexander Motin <mav at FreeBSD.org>
+.\" Copyright (c) 2009-2018 Alexander Motin <mav at FreeBSD.org>
 .\" Copyright (c) 2006 Marcus Alves Grando
 .\" Copyright (c) 1998-2001 Matthew Jacob, for NASA/Ames Research Center
 .\"
@@ -26,7 +26,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd July 3, 2017
+.Dd February 27, 2018
 .Dt ISP 4
 .Os
 .Sh NAME
@@ -139,6 +139,10 @@ Optical 4Gb Fibre Channel PCIe cards.
 Optical 8Gb Fibre Channel PCIe cards.
 .It Qlogic 267x/836x (aka 2031/8031)
 Optical 16Gb FC/FCoE PCIe cards.
+.It Qlogic 2690/2692/2694 (aka 2684/2692)
+Optical 16Gb Fibre Channel PCIe cards.
+.It Qlogic 2740/2742/2764 (aka 2722/2714)
+Optical 32Gb Fibre Channel PCIe cards.
 .El
 .Sh CONFIGURATION OPTIONS
 Target mode support for Fibre Channel adapters may be enabled with the

Modified: stable/11/sys/dev/isp/isp.c
==============================================================================
--- stable/11/sys/dev/isp/isp.c	Wed Mar 14 00:04:58 2018	(r330887)
+++ stable/11/sys/dev/isp/isp.c	Wed Mar 14 00:27:25 2018	(r330888)
@@ -1,5 +1,5 @@
 /*-
- *  Copyright (c) 2009-2017 Alexander Motin <mav at FreeBSD.org>
+ *  Copyright (c) 2009-2018 Alexander Motin <mav at FreeBSD.org>
  *  Copyright (c) 1997-2009 by Matthew Jacob
  *  All rights reserved.
  *
@@ -224,8 +224,11 @@ isp_reset(ispsoftc_t *isp, int do_load_defaults)
 			btype = "2532";
 			break;
 		case ISP_HA_FC_2600:
-			btype = "2031";
+			btype = "2600";
 			break;
+		case ISP_HA_FC_2700:
+			btype = "2700";
+			break;
 		default:
 			break;
 		}
@@ -2018,7 +2021,7 @@ isp_fibre_init_2400(ispsoftc_t *isp)
 	}
 
 	icbp->icb_execthrottle = DEFAULT_EXEC_THROTTLE(isp);
-	if (icbp->icb_execthrottle < 1) {
+	if (icbp->icb_execthrottle < 1 && !IS_26XX(isp)) {
 		isp_prt(isp, ISP_LOGERR, "bad execution throttle of %d- using %d", DEFAULT_EXEC_THROTTLE(isp), ICB_DFLT_THROTTLE);
 		icbp->icb_execthrottle = ICB_DFLT_THROTTLE;
 	}
@@ -2123,11 +2126,15 @@ isp_fibre_init_2400(ispsoftc_t *isp)
 	} else if (isp->isp_confopts & ISP_CFG_16GB) {
 		icbp->icb_fwoptions3 &= ~ICB2400_OPT3_RATE_MASK;
 		icbp->icb_fwoptions3 |= ICB2400_OPT3_RATE_16GB;
+	} else if (isp->isp_confopts & ISP_CFG_32GB) {
+		icbp->icb_fwoptions3 &= ~ICB2400_OPT3_RATE_MASK;
+		icbp->icb_fwoptions3 |= ICB2400_OPT3_RATE_32GB;
 	} else {
 		switch (icbp->icb_fwoptions3 & ICB2400_OPT3_RATE_MASK) {
 		case ICB2400_OPT3_RATE_4GB:
 		case ICB2400_OPT3_RATE_8GB:
 		case ICB2400_OPT3_RATE_16GB:
+		case ICB2400_OPT3_RATE_32GB:
 		case ICB2400_OPT3_RATE_AUTO:
 			break;
 		case ICB2400_OPT3_RATE_2GB:
@@ -3092,6 +3099,8 @@ not_on_fabric:
 		if (mbs.param[0] == MBOX_COMMAND_COMPLETE) {
 			if (mbs.param[1] == MBGSD_10GB)
 				fcp->isp_gbspeed = 10;
+			else if (mbs.param[1] == MBGSD_32GB)
+				fcp->isp_gbspeed = 32;
 			else if (mbs.param[1] == MBGSD_16GB)
 				fcp->isp_gbspeed = 16;
 			else if (mbs.param[1] == MBGSD_8GB)
@@ -5900,6 +5909,13 @@ isp_parse_async_fc(ispsoftc_t *isp, uint16_t mbox)
 		isp_prt(isp, ISP_LOGERR, "Temperature alert (subcode 0x%x)",
 		    ISP_READ(isp, OUTMAILBOX1));
 		break;
+	case ASYNC_TRANSCEIVER_INSERTION:
+		isp_prt(isp, ISP_LOGDEBUG0, "Transceiver insertion (0x%x)",
+		    ISP_READ(isp, OUTMAILBOX1));
+		break;
+	case ASYNC_TRANSCEIVER_REMOVAL:
+		isp_prt(isp, ISP_LOGDEBUG0, "Transceiver removal");
+		break;
 	case ASYNC_AUTOLOAD_FW_COMPLETE:
 		isp_prt(isp, ISP_LOGDEBUG0, "Autoload FW init complete");
 		break;
@@ -6824,7 +6840,7 @@ static const uint32_t mbpfc[] = {
 	ISP_FC_OPMAP(0x07, 0x01),	/* 0x66: MBOX_TARGET_RESET */
 	ISP_FC_OPMAP(0x07, 0x01),	/* 0x67: MBOX_CLEAR_TASK_SET */
 	ISP_FC_OPMAP(0x07, 0x01),	/* 0x68: MBOX_ABORT_TASK_SET */
-	ISP_FC_OPMAP(0x01, 0x07),	/* 0x69: MBOX_GET_FW_STATE */
+	ISP_FC_OPMAP_HALF(0x00, 0x01, 0x0f, 0x1f),	/* 0x69: MBOX_GET_FW_STATE */
 	ISP_FC_OPMAP_HALF(0x6, 0x03, 0x0, 0xcf),	/* 0x6a: MBOX_GET_PORT_NAME */
 	ISP_FC_OPMAP(0xcf, 0x01),	/* 0x6b: MBOX_GET_LINK_STATUS */
 	ISP_FC_OPMAP(0x0f, 0x01),	/* 0x6c: MBOX_INIT_LIP_RESET */

Modified: stable/11/sys/dev/isp/isp_pci.c
==============================================================================
--- stable/11/sys/dev/isp/isp_pci.c	Wed Mar 14 00:04:58 2018	(r330887)
+++ stable/11/sys/dev/isp/isp_pci.c	Wed Mar 14 00:27:25 2018	(r330888)
@@ -1,4 +1,5 @@
 /*-
+ * Copyright (c) 2009-2018 Alexander Motin <mav at FreeBSD.org>
  * Copyright (c) 1997-2008 by Matthew Jacob
  * All rights reserved.
  *
@@ -175,6 +176,17 @@ static struct ispmdvec mdvec_2600 = {
 	NULL
 };
 
+static struct ispmdvec mdvec_2700 = {
+	isp_pci_run_isr_2400,
+	isp_pci_rd_reg_2600,
+	isp_pci_wr_reg_2600,
+	isp_pci_mbxdma,
+	isp_pci_dmasetup,
+	isp_common_dmateardown,
+	isp_pci_irqsetup,
+	NULL
+};
+
 #ifndef	PCIM_CMD_INVEN
 #define	PCIM_CMD_INVEN			0x10
 #endif
@@ -207,142 +219,80 @@ static struct ispmdvec mdvec_2600 = {
 #define	PCIR_ROMADDR			0x30
 #endif
 
-#ifndef	PCI_VENDOR_QLOGIC
 #define	PCI_VENDOR_QLOGIC		0x1077
-#endif
 
-#ifndef	PCI_PRODUCT_QLOGIC_ISP1020
 #define	PCI_PRODUCT_QLOGIC_ISP1020	0x1020
-#endif
-
-#ifndef	PCI_PRODUCT_QLOGIC_ISP1080
 #define	PCI_PRODUCT_QLOGIC_ISP1080	0x1080
-#endif
-
-#ifndef	PCI_PRODUCT_QLOGIC_ISP10160
 #define	PCI_PRODUCT_QLOGIC_ISP10160	0x1016
-#endif
-
-#ifndef	PCI_PRODUCT_QLOGIC_ISP12160
 #define	PCI_PRODUCT_QLOGIC_ISP12160	0x1216
-#endif
-
-#ifndef	PCI_PRODUCT_QLOGIC_ISP1240
 #define	PCI_PRODUCT_QLOGIC_ISP1240	0x1240
-#endif
-
-#ifndef	PCI_PRODUCT_QLOGIC_ISP1280
 #define	PCI_PRODUCT_QLOGIC_ISP1280	0x1280
-#endif
 
-#ifndef	PCI_PRODUCT_QLOGIC_ISP2100
 #define	PCI_PRODUCT_QLOGIC_ISP2100	0x2100
-#endif
-
-#ifndef	PCI_PRODUCT_QLOGIC_ISP2200
 #define	PCI_PRODUCT_QLOGIC_ISP2200	0x2200
-#endif
-
-#ifndef	PCI_PRODUCT_QLOGIC_ISP2300
 #define	PCI_PRODUCT_QLOGIC_ISP2300	0x2300
-#endif
-
-#ifndef	PCI_PRODUCT_QLOGIC_ISP2312
 #define	PCI_PRODUCT_QLOGIC_ISP2312	0x2312
-#endif
-
-#ifndef	PCI_PRODUCT_QLOGIC_ISP2322
 #define	PCI_PRODUCT_QLOGIC_ISP2322	0x2322
-#endif
-
-#ifndef	PCI_PRODUCT_QLOGIC_ISP2422
 #define	PCI_PRODUCT_QLOGIC_ISP2422	0x2422
-#endif
-
-#ifndef	PCI_PRODUCT_QLOGIC_ISP2432
 #define	PCI_PRODUCT_QLOGIC_ISP2432	0x2432
-#endif
-
-#ifndef	PCI_PRODUCT_QLOGIC_ISP2532
 #define	PCI_PRODUCT_QLOGIC_ISP2532	0x2532
-#endif
-
-#ifndef	PCI_PRODUCT_QLOGIC_ISP6312
+#define	PCI_PRODUCT_QLOGIC_ISP5432	0x5432
 #define	PCI_PRODUCT_QLOGIC_ISP6312	0x6312
-#endif
-
-#ifndef	PCI_PRODUCT_QLOGIC_ISP6322
 #define	PCI_PRODUCT_QLOGIC_ISP6322	0x6322
-#endif
-
-#ifndef        PCI_PRODUCT_QLOGIC_ISP5432
-#define        PCI_PRODUCT_QLOGIC_ISP5432      0x5432
-#endif
-
-#ifndef	PCI_PRODUCT_QLOGIC_ISP2031
 #define	PCI_PRODUCT_QLOGIC_ISP2031	0x2031
-#endif
-
-#ifndef	PCI_PRODUCT_QLOGIC_ISP8031
 #define	PCI_PRODUCT_QLOGIC_ISP8031	0x8031
-#endif
+#define	PCI_PRODUCT_QLOGIC_ISP2684	0x2171
+#define	PCI_PRODUCT_QLOGIC_ISP2692	0x2b61
+#define	PCI_PRODUCT_QLOGIC_ISP2714	0x2071
+#define	PCI_PRODUCT_QLOGIC_ISP2722	0x2261
 
-#define        PCI_QLOGIC_ISP5432      \
-       ((PCI_PRODUCT_QLOGIC_ISP5432 << 16) | PCI_VENDOR_QLOGIC)
-
 #define	PCI_QLOGIC_ISP1020	\
 	((PCI_PRODUCT_QLOGIC_ISP1020 << 16) | PCI_VENDOR_QLOGIC)
-
 #define	PCI_QLOGIC_ISP1080	\
 	((PCI_PRODUCT_QLOGIC_ISP1080 << 16) | PCI_VENDOR_QLOGIC)
-
 #define	PCI_QLOGIC_ISP10160	\
 	((PCI_PRODUCT_QLOGIC_ISP10160 << 16) | PCI_VENDOR_QLOGIC)
-
 #define	PCI_QLOGIC_ISP12160	\
 	((PCI_PRODUCT_QLOGIC_ISP12160 << 16) | PCI_VENDOR_QLOGIC)
-
 #define	PCI_QLOGIC_ISP1240	\
 	((PCI_PRODUCT_QLOGIC_ISP1240 << 16) | PCI_VENDOR_QLOGIC)
-
 #define	PCI_QLOGIC_ISP1280	\
 	((PCI_PRODUCT_QLOGIC_ISP1280 << 16) | PCI_VENDOR_QLOGIC)
 
 #define	PCI_QLOGIC_ISP2100	\
 	((PCI_PRODUCT_QLOGIC_ISP2100 << 16) | PCI_VENDOR_QLOGIC)
-
 #define	PCI_QLOGIC_ISP2200	\
 	((PCI_PRODUCT_QLOGIC_ISP2200 << 16) | PCI_VENDOR_QLOGIC)
-
 #define	PCI_QLOGIC_ISP2300	\
 	((PCI_PRODUCT_QLOGIC_ISP2300 << 16) | PCI_VENDOR_QLOGIC)
-
 #define	PCI_QLOGIC_ISP2312	\
 	((PCI_PRODUCT_QLOGIC_ISP2312 << 16) | PCI_VENDOR_QLOGIC)
-
 #define	PCI_QLOGIC_ISP2322	\
 	((PCI_PRODUCT_QLOGIC_ISP2322 << 16) | PCI_VENDOR_QLOGIC)
-
 #define	PCI_QLOGIC_ISP2422	\
 	((PCI_PRODUCT_QLOGIC_ISP2422 << 16) | PCI_VENDOR_QLOGIC)
-
 #define	PCI_QLOGIC_ISP2432	\
 	((PCI_PRODUCT_QLOGIC_ISP2432 << 16) | PCI_VENDOR_QLOGIC)
-
 #define	PCI_QLOGIC_ISP2532	\
 	((PCI_PRODUCT_QLOGIC_ISP2532 << 16) | PCI_VENDOR_QLOGIC)
-
+#define	PCI_QLOGIC_ISP5432	\
+	((PCI_PRODUCT_QLOGIC_ISP5432 << 16) | PCI_VENDOR_QLOGIC)
 #define	PCI_QLOGIC_ISP6312	\
 	((PCI_PRODUCT_QLOGIC_ISP6312 << 16) | PCI_VENDOR_QLOGIC)
-
 #define	PCI_QLOGIC_ISP6322	\
 	((PCI_PRODUCT_QLOGIC_ISP6322 << 16) | PCI_VENDOR_QLOGIC)
-
 #define	PCI_QLOGIC_ISP2031	\
 	((PCI_PRODUCT_QLOGIC_ISP2031 << 16) | PCI_VENDOR_QLOGIC)
-
 #define	PCI_QLOGIC_ISP8031	\
 	((PCI_PRODUCT_QLOGIC_ISP8031 << 16) | PCI_VENDOR_QLOGIC)
+#define	PCI_QLOGIC_ISP2684	\
+	((PCI_PRODUCT_QLOGIC_ISP2684 << 16) | PCI_VENDOR_QLOGIC)
+#define	PCI_QLOGIC_ISP2692	\
+	((PCI_PRODUCT_QLOGIC_ISP2692 << 16) | PCI_VENDOR_QLOGIC)
+#define	PCI_QLOGIC_ISP2714	\
+	((PCI_PRODUCT_QLOGIC_ISP2714 << 16) | PCI_VENDOR_QLOGIC)
+#define	PCI_QLOGIC_ISP2722	\
+	((PCI_PRODUCT_QLOGIC_ISP2722 << 16) | PCI_VENDOR_QLOGIC)
 
 /*
  * Odd case for some AMI raid cards... We need to *not* attach to this.
@@ -462,6 +412,18 @@ isp_pci_probe(device_t dev)
 	case PCI_QLOGIC_ISP8031:
 		device_set_desc(dev, "Qlogic ISP 8031 PCI FCoE Adapter");
 		break;
+	case PCI_QLOGIC_ISP2684:
+		device_set_desc(dev, "Qlogic ISP 2684 PCI FC Adapter");
+		break;
+	case PCI_QLOGIC_ISP2692:
+		device_set_desc(dev, "Qlogic ISP 2692 PCI FC Adapter");
+		break;
+	case PCI_QLOGIC_ISP2714:
+		device_set_desc(dev, "Qlogic ISP 2714 PCI FC Adapter");
+		break;
+	case PCI_QLOGIC_ISP2722:
+		device_set_desc(dev, "Qlogic ISP 2722 PCI FC Adapter");
+		break;
 	default:
 		return (ENXIO);
 	}
@@ -807,6 +769,16 @@ isp_pci_attach(device_t dev)
 		isp->isp_nchan += isp_nvports;
 		isp->isp_mdvec = &mdvec_2600;
 		isp->isp_type = ISP_HA_FC_2600;
+		pcs->pci_poff[MBOX_BLOCK >> _BLK_REG_SHFT] = PCI_MBOX_REGS2400_OFF;
+		break;
+	case PCI_QLOGIC_ISP2684:
+	case PCI_QLOGIC_ISP2692:
+	case PCI_QLOGIC_ISP2714:
+	case PCI_QLOGIC_ISP2722:
+		did = 0x2700;
+		isp->isp_nchan += isp_nvports;
+		isp->isp_mdvec = &mdvec_2700;
+		isp->isp_type = ISP_HA_FC_2700;
 		pcs->pci_poff[MBOX_BLOCK >> _BLK_REG_SHFT] = PCI_MBOX_REGS2400_OFF;
 		break;
 	default:

Modified: stable/11/sys/dev/isp/ispmbox.h
==============================================================================
--- stable/11/sys/dev/isp/ispmbox.h	Wed Mar 14 00:04:58 2018	(r330887)
+++ stable/11/sys/dev/isp/ispmbox.h	Wed Mar 14 00:27:25 2018	(r330888)
@@ -1,6 +1,6 @@
 /* $FreeBSD$ */
 /*-
- *  Copyright (c) 2009-2017 Alexander Motin <mav at FreeBSD.org>
+ *  Copyright (c) 2009-2018 Alexander Motin <mav at FreeBSD.org>
  *  Copyright (c) 1997-2009 by Matthew Jacob
  *  All rights reserved.
  * 
@@ -176,6 +176,7 @@
 #define		MBGSD_4GB	0x03		/* 24XX only */
 #define		MBGSD_8GB	0x04		/* 25XX only */
 #define		MBGSD_16GB	0x05		/* 26XX only */
+#define		MBGSD_32GB	0x06		/* 27XX only */
 #define		MBGSD_10GB	0x13		/* 26XX only */
 #define	MBOX_SEND_RNFT			0x005e
 #define	MBOX_INIT_FIRMWARE		0x0060
@@ -297,6 +298,8 @@
 #define	ASYNC_INTER_DRIVER_COMP		0x8100	/* FCoE only */
 #define	ASYNC_INTER_DRIVER_NOTIFY	0x8101	/* FCoE only */
 #define	ASYNC_INTER_DRIVER_TIME_EXT	0x8102	/* FCoE only */
+#define	ASYNC_TRANSCEIVER_INSERTION	0x8130
+#define	ASYNC_TRANSCEIVER_REMOVAL	0x8131
 #define	ASYNC_NIC_FW_STATE_CHANGE	0x8200	/* FCoE only */
 #define	ASYNC_AUTOLOAD_FW_COMPLETE	0x8400
 #define	ASYNC_AUTOLOAD_FW_FAILURE	0x8401
@@ -1070,6 +1073,7 @@ typedef struct {
 #define	ICB2400_OPT3_RATE_4GB		0x00006000
 #define	ICB2400_OPT3_RATE_8GB		0x00008000
 #define	ICB2400_OPT3_RATE_16GB		0x0000A000
+#define	ICB2400_OPT3_RATE_32GB		0x0000C000
 #define	ICB2400_OPT3_ENA_OOF_XFRDY	0x00000200
 #define	ICB2400_OPT3_NO_N2N_LOGI	0x00000100
 #define	ICB2400_OPT3_NO_LOCAL_PLOGI	0x00000080

Modified: stable/11/sys/dev/isp/ispvar.h
==============================================================================
--- stable/11/sys/dev/isp/ispvar.h	Wed Mar 14 00:04:58 2018	(r330887)
+++ stable/11/sys/dev/isp/ispvar.h	Wed Mar 14 00:27:25 2018	(r330888)
@@ -1,6 +1,6 @@
 /* $FreeBSD$ */
 /*-
- *  Copyright (c) 2009-2017 Alexander Motin <mav at FreeBSD.org>
+ *  Copyright (c) 2009-2018 Alexander Motin <mav at FreeBSD.org>
  *  Copyright (c) 1997-2009 by Matthew Jacob
  *  All rights reserved.
  *
@@ -631,8 +631,8 @@ struct ispsoftc {
 #define	ISP_CFG_NPORT_ONLY	0x04	/* insist on {N/F}-Port connection */
 #define	ISP_CFG_LPORT		0x06	/* prefer {N/F}L-Port connection */
 #define	ISP_CFG_NPORT		0x08	/* prefer {N/F}-Port connection */
-#define	ISP_CFG_1GB		0x10	/* force 1GB connection (23XX only) */
-#define	ISP_CFG_2GB		0x20	/* force 2GB connection (23XX only) */
+#define	ISP_CFG_1GB		0x10	/* force 1Gb connection (23XX only) */
+#define	ISP_CFG_2GB		0x20	/* force 2Gb connection (23XX only) */
 #define	ISP_CFG_NORELOAD	0x80	/* don't download f/w */
 #define	ISP_CFG_NONVRAM		0x40	/* ignore NVRAM */
 #define	ISP_CFG_NOFCTAPE	0x100	/* disable FC-Tape */
@@ -640,9 +640,10 @@ struct ispsoftc {
 #define	ISP_CFG_OWNFSZ		0x400	/* override NVRAM frame size */
 #define	ISP_CFG_OWNLOOPID	0x800	/* override NVRAM loopid */
 #define	ISP_CFG_OWNEXCTHROTTLE	0x1000	/* override NVRAM execution throttle */
-#define	ISP_CFG_4GB		0x2000	/* force 4GB connection (24XX only) */
-#define	ISP_CFG_8GB		0x4000	/* force 8GB connection (25XX only) */
-#define	ISP_CFG_16GB		0x8000	/* force 16GB connection (82XX only) */
+#define	ISP_CFG_4GB		0x2000	/* force 4Gb connection (24XX only) */
+#define	ISP_CFG_8GB		0x4000	/* force 8Gb connection (25XX only) */
+#define	ISP_CFG_16GB		0x8000	/* force 16Gb connection (26XX only) */
+#define	ISP_CFG_32GB		0x10000	/* force 32Gb connection (27XX only) */
 
 /*
  * For each channel, the outer layers should know what role that channel
@@ -743,6 +744,7 @@ struct ispsoftc {
 #define	ISP_HA_FC_2400		0x60
 #define	ISP_HA_FC_2500		0x70
 #define	ISP_HA_FC_2600		0x80
+#define	ISP_HA_FC_2700		0x90
 
 #define	IS_SCSI(isp)	(isp->isp_type & ISP_HA_SCSI)
 #define	IS_1020(isp)	(isp->isp_type < ISP_HA_SCSI_1240)
@@ -769,6 +771,7 @@ struct ispsoftc {
 #define	IS_24XX(isp)	((isp)->isp_type >= ISP_HA_FC_2400)
 #define	IS_25XX(isp)	((isp)->isp_type >= ISP_HA_FC_2500)
 #define	IS_26XX(isp)	((isp)->isp_type >= ISP_HA_FC_2600)
+#define	IS_27XX(isp)	((isp)->isp_type >= ISP_HA_FC_2700)
 
 /*
  * DMA related macros


More information about the svn-src-all mailing list