Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Jan 2007 18:04:30 GMT
From:      Matt Jacob <mjacob@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 113126 for review
Message-ID:  <200701181804.l0II4Uqt075011@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=113126

Change 113126 by mjacob@mjexp on 2007/01/18 18:04:16

	Some minor changes in how we set up cards- we'll read nvram
	and default parameters at the end of isp_reset, not the front
	if isp_init as this allows us to get WWPNs when we're coming
	up in ISP_ROLE_NONE.
	
	Other preparations for reintroducing channels back into target
	mode and channels for initiator mode in FC cards (N-port
	virtualization).

Affected files ...

.. //depot/projects/mjexp/sys/dev/isp/isp.c#8 edit
.. //depot/projects/mjexp/sys/dev/isp/isp_freebsd.c#8 edit
.. //depot/projects/mjexp/sys/dev/isp/isp_freebsd.h#5 edit
.. //depot/projects/mjexp/sys/dev/isp/isp_target.c#4 edit
.. //depot/projects/mjexp/sys/dev/isp/isp_target.h#3 edit
.. //depot/projects/mjexp/sys/dev/isp/isp_tpublic.h#3 edit
.. //depot/projects/mjexp/sys/dev/isp/ispvar.h#4 edit

Differences ...

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

@@ -1170,6 +1170,14 @@
 			isp->isp_maxluns = 16;
 		}
 	}
+	/*
+	 * Must do this first to get defaults established.
+	 */
+	isp_setdfltparm(isp, 0);
+	if (IS_DUALBUS(isp)) {
+		isp_setdfltparm(isp, 1);
+	}
+
 }
 
 /*
@@ -1181,14 +1189,6 @@
 void
 isp_init(ispsoftc_t *isp)
 {
-	/*
-	 * Must do this first to get defaults established.
-	 */
-	isp_setdfltparm(isp, 0);
-	if (IS_DUALBUS(isp)) {
-		isp_setdfltparm(isp, 1);
-	}
-
 	if (IS_FC(isp)) {
 		/*
 		 * Do this *before* initializing the firmware.
@@ -7034,15 +7034,16 @@
 		fcp->isp_retry_count = ICB_DFLT_RCOUNT;
 		/* Platform specific.... */
 		fcp->isp_loopid = DEFAULT_LOOPID(isp);
-		fcp->isp_nodewwn = DEFAULT_NODEWWN(isp);
-		fcp->isp_portwwn = DEFAULT_PORTWWN(isp);
+		fcp->isp_wwnn_nvram = DEFAULT_NODEWWN(isp);
+		fcp->isp_wwpn_nvram = DEFAULT_PORTWWN(isp);
 		fcp->isp_fwoptions = 0;
 		fcp->isp_fwoptions |= ICBOPT_FAIRNESS;
 		fcp->isp_fwoptions |= ICBOPT_PDBCHANGE_AE;
 		fcp->isp_fwoptions |= ICBOPT_HARD_ADDRESS;
 		fcp->isp_fwoptions |= ICBOPT_FAST_POST;
-		if (isp->isp_confopts & ISP_CFG_FULL_DUPLEX)
+		if (isp->isp_confopts & ISP_CFG_FULL_DUPLEX) {
 			fcp->isp_fwoptions |= ICBOPT_FULL_DUPLEX;
+		}
 
 		/*
 		 * Make sure this is turned off now until we get
@@ -7052,7 +7053,7 @@
 
 		/*
 		 * Now try and read NVRAM unless told to not do so.
-		 * This will set fcparam's isp_nodewwn && isp_portwwn.
+		 * This will set fcparam's isp_wwnn_nvram && isp_wwpn_nvram.
 		 */
 		if ((isp->isp_confopts & ISP_CFG_NONVRAM) == 0) {
 		    	nvfail = isp_read_nvram(isp);
@@ -7081,8 +7082,8 @@
 			 * We always start out with values derived
 			 * from NVRAM or our platform default.
 			 */
-			ISP_NODEWWN(isp) = fcp->isp_nodewwn;
-			if (fcp->isp_nodewwn == 0) {
+			ISP_NODEWWN(isp) = fcp->isp_wwnn_nvram;
+			if (fcp->isp_wwnn_nvram == 0) {
 				isp_prt(isp, ISP_LOGCONFIG,
 				    "bad WWNN- using default");
 				ISP_NODEWWN(isp) = DEFAULT_NODEWWN(isp);
@@ -7098,8 +7099,8 @@
 			 * We always start out with values derived
 			 * from NVRAM or our platform default.
 			 */
-			ISP_PORTWWN(isp) = fcp->isp_portwwn;
-			if (fcp->isp_portwwn == 0) {
+			ISP_PORTWWN(isp) = fcp->isp_wwpn_nvram;
+			if (fcp->isp_wwpn_nvram == 0) {
 				isp_prt(isp, ISP_LOGCONFIG,
 				    "bad WWPN- using default");
 				ISP_PORTWWN(isp) = DEFAULT_PORTWWN(isp);
@@ -7841,10 +7842,10 @@
 	/*
 	 * Make sure we have both Node and Port as non-zero values.
 	 */
-	if (fcp->isp_nodewwn != 0 && fcp->isp_portwwn == 0) {
-		fcp->isp_portwwn = fcp->isp_nodewwn;
-	} else if (fcp->isp_nodewwn == 0 && fcp->isp_portwwn != 0) {
-		fcp->isp_nodewwn = fcp->isp_portwwn;
+	if (fcp->isp_wwnn_nvram != 0 && fcp->isp_wwpn_nvram == 0) {
+		fcp->isp_wwpn_nvram = fcp->isp_wwnn_nvram;
+	} else if (fcp->isp_wwnn_nvram == 0 && fcp->isp_wwpn_nvram != 0) {
+		fcp->isp_wwnn_nvram = fcp->isp_wwpn_nvram;
 	}
 
 	/*
@@ -7853,14 +7854,14 @@
 	 * make sure that there's some non-zero value in 48..56
 	 * for the Port WWN.
 	 */
-	if (fcp->isp_nodewwn && fcp->isp_portwwn) {
-		if ((fcp->isp_nodewwn & (((uint64_t) 0xfff) << 48)) != 0 &&
-		    (fcp->isp_nodewwn >> 60) == 2) {
-			fcp->isp_nodewwn &= ~((uint64_t) 0xfff << 48);
+	if (fcp->isp_wwnn_nvram && fcp->isp_wwpn_nvram) {
+		if ((fcp->isp_wwnn_nvram & (((uint64_t) 0xfff) << 48)) != 0 &&
+		    (fcp->isp_wwnn_nvram >> 60) == 2) {
+			fcp->isp_wwnn_nvram &= ~((uint64_t) 0xfff << 48);
 		}
-		if ((fcp->isp_portwwn & (((uint64_t) 0xfff) << 48)) == 0 &&
-		    (fcp->isp_portwwn >> 60) == 2) {
-			fcp->isp_portwwn |= ((uint64_t) 1 << 56);
+		if ((fcp->isp_wwpn_nvram & (((uint64_t) 0xfff) << 48)) == 0 &&
+		    (fcp->isp_wwpn_nvram >> 60) == 2) {
+			fcp->isp_wwpn_nvram |= ((uint64_t) 1 << 56);
 		}
 	}
 }
@@ -7890,7 +7891,7 @@
 			wwn |= (((uint64_t) 2)<< 60);
 		}
 	}
-	fcp->isp_portwwn = wwn;
+	fcp->isp_wwpn_nvram = wwn;
 	if (IS_2200(isp) || IS_23XX(isp)) {
 		wwn = ISP2100_NVRAM_NODE_NAME(nvram_data);
 		if (wwn) {
@@ -7904,7 +7905,7 @@
 	} else {
 		wwn &= ~((uint64_t) 0xfff << 48);
 	}
-	fcp->isp_nodewwn = wwn;
+	fcp->isp_wwnn_nvram = wwn;
 
 	isp_fix_nvram_wwns(isp);
 
@@ -7924,8 +7925,8 @@
 	fcp->isp_fwoptions = ISP2100_NVRAM_OPTIONS(nvram_data);
 	isp_prt(isp, ISP_LOGDEBUG0,
 	    "NVRAM 0x%08x%08x 0x%08x%08x maxalloc %d maxframelen %d",
-	    (uint32_t) (fcp->isp_nodewwn >> 32), (uint32_t) fcp->isp_nodewwn,
-	    (uint32_t) (fcp->isp_portwwn >> 32), (uint32_t) fcp->isp_portwwn,
+	    (uint32_t) (fcp->isp_wwnn_nvram >> 32), (uint32_t) fcp->isp_wwnn_nvram,
+	    (uint32_t) (fcp->isp_wwpn_nvram >> 32), (uint32_t) fcp->isp_wwpn_nvram,
 	    ISP2100_NVRAM_MAXIOCBALLOCATION(nvram_data),
 	    ISP2100_NVRAM_MAXFRAMELENGTH(nvram_data));
 	isp_prt(isp, ISP_LOGDEBUG0,
@@ -7969,7 +7970,7 @@
 			wwn = 0;
 		}
 	}
-	fcp->isp_portwwn = wwn;
+	fcp->isp_wwpn_nvram = wwn;
 
 	wwn = ISP2400_NVRAM_NODE_NAME(nvram_data);
 	if (wwn) {
@@ -7977,7 +7978,7 @@
 			wwn = 0;
 		}
 	}
-	fcp->isp_nodewwn = wwn;
+	fcp->isp_wwnn_nvram = wwn;
 
 	isp_fix_nvram_wwns(isp);
 

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

@@ -486,8 +486,8 @@
 			hba->fc_scsi_supported = 1;
 			hba->fc_topology = FCPARAM(isp)->isp_topo + 1;
 			hba->fc_loopid = FCPARAM(isp)->isp_loopid;
-			hba->nvram_node_wwn = FCPARAM(isp)->isp_nodewwn;
-			hba->nvram_port_wwn = FCPARAM(isp)->isp_portwwn;
+			hba->nvram_node_wwn = FCPARAM(isp)->isp_wwnn_nvram;
+			hba->nvram_port_wwn = FCPARAM(isp)->isp_wwpn_nvram;
 			hba->active_node_wwn = ISP_NODEWWN(isp);
 			hba->active_port_wwn = ISP_PORTWWN(isp);
 		}
@@ -3674,9 +3674,9 @@
 	}
 	if (isp->isp_osinfo.mboxcmd_done == 0) {
 		isp_prt(isp, ISP_LOGWARN,
-		    "%s Mailbox Command (0x%x) Timeout",
+		    "%s Mailbox Command (0x%x) Timeout (%uus)",
 		    isp->isp_osinfo.mbox_sleep_ok? "Interrupting" : "Polled",
-		    isp->isp_lastmbxcmd);
+		    isp->isp_lastmbxcmd, usecs);
 		mbp->param[0] = MBOX_TIMEOUT;
 		isp->isp_osinfo.mboxcmd_done = 1;
 	}

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

@@ -346,8 +346,8 @@
 #define	DEFAULT_LOOPID(x)	(isp)->isp_osinfo.default_id
 #define	DEFAULT_NODEWWN(isp)	(isp)->isp_osinfo.default_node_wwn
 #define	DEFAULT_PORTWWN(isp)	(isp)->isp_osinfo.default_port_wwn
-#define	ISP_NODEWWN(isp)	FCPARAM(isp)->isp_nodewwn
-#define	ISP_PORTWWN(isp)	FCPARAM(isp)->isp_portwwn
+#define	ISP_NODEWWN(isp)	FCPARAM(isp)->isp_wwnn_nvram
+#define	ISP_PORTWWN(isp)	FCPARAM(isp)->isp_wwpn_nvram
 
 #if	BYTE_ORDER == BIG_ENDIAN
 #ifdef	ISP_SBUS_SUPPORTED

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

@@ -827,7 +827,7 @@
 	nt.nt_iid = GET_IID_VAL(inp->in_iid);
 	nt.nt_tgt = inp->in_tgt;
 	nt.nt_lun = inp->in_lun;
-	IN_MAKE_TAGID(nt.nt_tagval, 0, inp);
+	IN_MAKE_TAGID(nt.nt_tagval, GET_BUS_VAL(inp->in_iid), 0, inp);
 	nt.nt_lreserved = inp;
 
 	if (status == IN_IDE_RECEIVED || status == IN_MSG_RECEIVED) {
@@ -875,8 +875,7 @@
 {
 	tmd_notify_t nt;
 	static const char f1[] = "%s from N-port handle 0x%x lun %d seq 0x%x";
-	static const char f2[] = 
-	    "unknown %s 0x%x lun %d N-Port handle 0x%x task flags 0x%x seq 0x%x\n";
+	static const char f2[] = "unknown %s 0x%x lun %d N-Port handle 0x%x task flags 0x%x seq 0x%x\n";
 	uint16_t seqid, loopid;
 
 	MEMZERO(&nt, sizeof (tmd_notify_t));
@@ -896,7 +895,7 @@
 	} else {
 		nt.nt_lun = inp->in_lun;
 	}
-	IN_FC_MAKE_TAGID(nt.nt_tagval, 0, seqid);
+	IN_FC_MAKE_TAGID(nt.nt_tagval, 0, 0, seqid);
 	nt.nt_need_ack = 1;
 	nt.nt_lreserved = inp;
 
@@ -941,9 +940,9 @@
 isp_got_tmf_24xx(ispsoftc_t *isp, at7_entry_t *aep)
 {
 	tmd_notify_t nt;
-	static const char f1[] = "%s from PortID 0x%06x lun %d seq 0x%x";
+	static const char f1[] = "%s from PortID 0x%06x lun %d seq 0x%llx";
 	static const char f2[] = 
-	    "unknown Task Flag 0x%x lun %d PortID 0x%x tag 0x%x\n";
+	    "unknown Task Flag 0x%x lun %d PortID 0x%x tag 0x%llx\n";
 	uint32_t sid;
 
 	MEMZERO(&nt, sizeof (tmd_notify_t));
@@ -952,6 +951,9 @@
 	nt.nt_lun =
 	    (aep->at_cmnd.fcp_cmnd_lun[0] << 8) |
 	    (aep->at_cmnd.fcp_cmnd_lun[1]);
+	/*
+	 * XXX: VPIDX HAS TO BE DERIVED FROM DESTINATION PORT
+	 */
 	nt.nt_tagval = aep->at_rxid;
 	nt.nt_lreserved = aep;
 	sid =

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

@@ -325,13 +325,13 @@
  * Macros to create and fetch and test concatenated handle and tag value macros
  */
 
-#define	AT_MAKE_TAGID(tid, inst, aep)					\
+#define	AT_MAKE_TAGID(tid, bus, inst, aep)				\
 	tid = aep->at_handle;						\
 	if (aep->at_flags & AT_TQAE) {					\
 		tid |= (aep->at_tag_val << 16);				\
 		tid |= (1 << 24);					\
 	}								\
-	tid |= (GET_BUS_VAL(aep->at_iid) << 25);			\
+	tid |= (bus << 25);						\
 	tid |= (inst << 26)
 
 #define	CT_MAKE_TAGID(tid, bus, inst, ct)				\
@@ -349,11 +349,11 @@
 #define	AT_GET_BUS(val)		(((val) >> 25) & 0x1)
 #define	AT_GET_HANDLE(val)	((val) & 0xffff)
 
-#define	IN_MAKE_TAGID(tid, inst, inp)					\
+#define	IN_MAKE_TAGID(tid, bus, inst, inp)				\
 	tid = inp->in_seqid;						\
 	tid |= (inp->in_tag_val << 16);					\
 	tid |= (1 << 24);						\
-	tid |= (GET_BUS_VAL(inp->in_iid) << 25);			\
+	tid |= (bus << 25);						\
 	tid |= (inst << 26)
 
 #define	TAG_INSERT_INST(tid, inst)					\
@@ -423,31 +423,35 @@
 /*
  * Macros to create and fetch and test concatenated handle and tag value macros
  */
-#define	AT2_MAKE_TAGID(tid, inst, aep)					\
+#define	AT2_MAKE_TAGID(tid, bus, inst, aep)				\
 	tid = aep->at_rxid;						\
-	tid |= (inst << 16)
+	tid |= (((uint64_t)inst) << 32);				\
+	tid |= (((uint64_t)bus) << 48)
 
-#define	CT2_MAKE_TAGID(tid, inst, ct)					\
+#define	CT2_MAKE_TAGID(tid, bus, inst, ct)				\
 	tid = ct->ct_rxid;						\
-	tid |= (inst << 16)
+	tid |= (((uint64_t)inst) << 32);				\
+	tid |= (((uint64_t)(bus & 0xff)) << 48)
 
 #define	AT2_HAS_TAG(val)	1
-#define	AT2_GET_TAG(val)	((val) & 0xffff)
-#define	AT2_GET_INST(val)	((val) >> 16)
+#define	AT2_GET_TAG(val)	((val) & 0xffffffff)
+#define	AT2_GET_INST(val)	((val) >> 32)
 #define	AT2_GET_HANDLE		AT2_GET_TAG
+#define	AT2_GET_BUS(val)	(((val) >> 48) & 0xff)
 
 #define	FC_HAS_TAG	AT2_HAS_TAG
 #define	FC_GET_TAG	AT2_GET_TAG
 #define	FC_GET_INST	AT2_GET_INST
 #define	FC_GET_HANDLE	AT2_GET_HANDLE
 
-#define	IN_FC_MAKE_TAGID(tid, inst, seqid)				\
+#define	IN_FC_MAKE_TAGID(tid, bus, inst, seqid)				\
 	tid = seqid;							\
-	tid |= (inst << 16)
+	tid |= (((uint64_t)inst) << 32);				\
+	tid |= (((uint64_t)(bus & 0xff)) << 48)
 
 #define	FC_TAG_INSERT_INST(tid, inst)					\
-	tid &= ~0xffff;							\
-	tid |= (inst << 16)
+	tid &= ~0xffff00000000ull;					\
+	tid |= (((uint64_t)inst) << 32)
 
 /*
  * 24XX ATIO Definition

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

@@ -53,6 +53,8 @@
  */
 typedef enum {
     QIN_HBA_REG=99,     /* the argument is a pointer to a hba_register_t */
+    QIN_GETINFO,        /* the argument is a pointer to a info_t */
+    QIN_SETINFO,        /* the argument is a pointer to a info_t */
     QIN_ENABLE,         /* the argument is a pointer to a enadis_t */
     QIN_DISABLE,        /* the argument is a pointer to a enadis_t */
     QIN_TMD_CONT,       /* the argument is a pointer to a tmd_cmd_t */
@@ -71,32 +73,43 @@
  * in, and the external module to call back with a QIN_HBA_REG that
  * passes back the corresponding information.
  */
-#define    QR_VERSION    13
+#define    QR_VERSION    15
 typedef struct {
+    /* NB: tags from here to r_version must never change */
     void *                  r_identity;
     void                    (*r_action)(qact_e, void *);
     char                    r_name[8];
     int                     r_inst;
     int                     r_version;
-    struct {
-        enum {
-            R_FC,
-            R_SCSI
-        } r_type;
-        union {
-            struct {
-                uint64_t    r_wwnn;
-                uint64_t    r_wwpn;
-            } fc;
-            struct {
-                int         r_iid;
-            } scsi;
-        } r_id;
-    } r_info;
+    uint32_t                r_locator;
+    uint32_t                r_nchannels;
+    enum { R_FC, R_SPI }    r_type;
     void *                  r_private;
 } hba_register_t;
 
 /*
+ * An information structure that is used to get or set per-channel
+ * transport layer parameters.
+ */
+typedef struct {
+    void *                  i_identity;
+    enum { I_FC, I_SPI }    i_type;
+    int                     i_channel;
+    int                     i_error;
+    union {
+        struct {
+            uint64_t    wwnn_nvram;
+            uint64_t    wwpn_nvram;
+            uint64_t    wwnn;
+            uint64_t    wwpn;
+        } fc;
+        struct {
+            int         iid;
+        } spi;
+    }                       i_id;
+} info_t;
+
+/*
  * Notify structure
  */
 typedef enum {
@@ -121,7 +134,8 @@
     uint16_t    nt_lun;         /* logical unit */
     uint16_t                : 15,
                 nt_need_ack : 1;    /* this notify needs an ACK */
-    uint32_t    nt_tagval;      /* tag value */
+    uint64_t    nt_tagval;      /* tag value */
+    uint32_t    nt_channel;     /* channel id */
     tmd_ncode_t nt_ncode;       /* action */
     void *      nt_lreserved;
     void *      nt_hreserved;
@@ -129,7 +143,7 @@
 #define LUN_ANY     0xffff
 #define TGT_ANY     ((uint64_t) -1)
 #define INI_ANY     ((uint64_t) -1)
-#define TAG_ANY     0
+#define TAG_ANY     ((uint64_t) 0)
 #define MATCH_TMD(tmd, iid, lun, tag)                   \
     (                                                   \
         (tmd) &&                                        \
@@ -276,16 +290,16 @@
     void *              cd_data;    /* 'pointer' to data */
     uint64_t            cd_iid;     /* initiator ID */
     uint64_t            cd_tgt;     /* target id */
-    uint64_t            cd_lun;     /* logical unit */
-    uint32_t            cd_tagval;  /* tag value */
+    uint8_t             cd_lun[8];  /* logical unit */
+    uint64_t            cd_tagval;  /* tag value */
+    uint32_t            cd_channel; /* channel index */
     uint32_t            cd_lflags;  /* flags lower level sets */
     uint32_t            cd_hflags;  /* flags higher level sets */
     uint32_t            cd_totlen;  /* total data load */
     uint32_t            cd_resid;   /* total data residual */
     uint32_t            cd_xfrlen;  /* current data load */
     int32_t             cd_error;   /* current error */
-    uint8_t     cd_tagtype      : 4,
-                cd_port         : 4;    /* port number on HBA */
+    uint8_t             cd_tagtype; /* tag type */
     uint8_t             cd_scsi_status;
     uint8_t             cd_sense[TMD_SENSELEN];
     uint8_t             cd_cdb[TMD_CDBLEN];
@@ -309,6 +323,21 @@
 #define    TMD_SIZE     (sizeof (tmd_cmd_t))
 #endif
 
+#define L0LUN_TO_FLATLUN(lptr)              ((((lptr)[0] & 0x3f) << 8) | ((lptr)[1]))
+#define FLATLUN_TO_L0LUN(lptr, lun)                 \
+    (lptr)[1] = lun;                                \
+    if (sizeof (lun) == 1) {                        \
+        (lptr)[0] = 0;                              \
+    } else {                                        \
+        int nl = (lun);                             \
+        if (nl < 256) {                             \
+            (lptr)[0] = 0;                          \
+        } else {                                    \
+            (lptr)[0] = 0x40 | ((nl >> 8) & 0x3f);  \
+        }                                           \
+    }                                               \
+    memset(&(lptr)[2], 0, 6)
+
 /*
  * Note that NODISC (obviously) doesn't apply to non-SPI transport.
  *

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

@@ -380,8 +380,8 @@
 	uint8_t			isp_reserved;
 	uint16_t		isp_maxalloc;
 	uint16_t		isp_maxfrmlen;
-	uint64_t		isp_nodewwn;
-	uint64_t		isp_portwwn;
+	uint64_t		isp_wwnn_nvram;
+	uint64_t		isp_wwpn_nvram;
 
 	/*
 	 * Our Port Data Base
@@ -980,25 +980,25 @@
  *
  *
  *	DEFAULT_IID(ispsoftc_t *)		Default SCSI initiator ID
- *	DEFAULT_LOOPID(ispsoftc_t *)	Default FC Loop ID
- *	DEFAULT_NODEWWN(ispsoftc_t *)	Default Node WWN
- *	DEFAULT_PORTWWN(ispsoftc_t *)	Default Port WWN
- *	DEFAULT_FRAMESIZE(ispsoftc_t *)	Default Frame Size
+ *	DEFAULT_LOOPID(ispsoftc_t *)		Default FC Loop ID
+ *	DEFAULT_NODEWWN(ispsoftc_t *)		Default Node WWN
+ *	DEFAULT_PORTWWN(ispsoftc_t *)		Default Port WWN
+ *	DEFAULT_FRAMESIZE(ispsoftc_t *)		Default Frame Size
  *	DEFAULT_EXEC_THROTTLE(ispsoftc_t *) Default Execution Throttle
  *		These establish reasonable defaults for each platform.
  * 		These must be available independent of card NVRAM and are
  *		to be used should NVRAM not be readable.
  *
- *	ISP_NODEWWN(ispsoftc_t *)	FC Node WWN to use
- *	ISP_PORTWWN(ispsoftc_t *)	FC Port WWN to use
+ *	ISP_NODEWWN(ispsoftc_t *)		FC Node WWN to use
+ *	ISP_PORTWWN(ispsoftc_t *)		FC Port WWN to use
  *
  *		These are to be used after NVRAM is read. The tags
- *		in fcparam.isp_{node,port}wwn reflect the values
+ *		in fcparam.isp_ww{n,p}n_nvram reflect the values
  *		read from NVRAM (possibly corrected for card botches).
  *		Each platform can take that information and override
  *		it or ignore and return the Node and Port WWNs to be
- * 		used when sending the Qlogic f/w the Initialization Control
- *		Block.
+ * 		used when sending the Qlogic f/w the Initialization
+ *		Control Block.
  *
  *	(XXX these do endian specific transformations- in transition XXX)
  *



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