diff --git a/qla_isp/common/isp.c b/qla_isp/common/isp.c index 9e173b2d3..4aa5f1b54 100644 --- a/qla_isp/common/isp.c +++ b/qla_isp/common/isp.c @@ -1,4 +1,4 @@ -/* $Id: isp.c,v 1.182 2007/12/04 22:18:16 mjacob Exp $ */ +/* $Id: isp.c,v 1.183 2007/12/05 00:42:02 mjacob Exp $ */ /*- * Copyright (c) 1997-2007 by Matthew Jacob * All rights reserved. @@ -2734,6 +2734,13 @@ isp_fclink_test(ispsoftc_t *isp, int chan, int usdelay) lp->new_portid = lp->portid; lp->new_roles = lp->roles; if (IS_24XX(isp)) { + fcp->inorder = (mbs.param[7] & ISP24XX_INORDER) != 0; + if (ISP_FW_NEWER_THAN(isp, 4, 0, 27)) { + fcp->npiv_fabric = (mbs.param[7] & ISP24XX_NPIV_SAN) != 0; + if (fcp->npiv_fabric) { + isp_prt(isp, ISP_LOGCONFIG, "fabric supports N-Port virtualization"); + } + } if (chan) { fcp->isp_sns_hdl = NPH_SNS_HDLBASE + chan; r = isp_plogx(isp, chan, fcp->isp_sns_hdl, diff --git a/qla_isp/common/ispmbox.h b/qla_isp/common/ispmbox.h index 4bfd80f4d..c53858b47 100644 --- a/qla_isp/common/ispmbox.h +++ b/qla_isp/common/ispmbox.h @@ -1,4 +1,4 @@ -/* $Id: ispmbox.h,v 1.67 2007/12/02 22:02:04 mjacob Exp $ */ +/* $Id: ispmbox.h,v 1.68 2007/12/05 00:42:02 mjacob Exp $ */ /*- * Copyright (c) 1997-2007 by Matthew Jacob * All rights reserved. @@ -148,6 +148,12 @@ /* These are for the ISP2X00 FC cards */ #define MBOX_GET_LOOP_ID 0x0020 +/* for 24XX cards, outgoing mailbox 7 has these values for F or FL topologies */ +#define ISP24XX_INORDER 0x0100 +#define ISP24XX_NPIV_SAN 0x0400 +#define ISP24XX_VSAN_SAN 0x1000 +#define ISP24XX_FC_SP_SAN 0x2000 + #define MBOX_GET_FIRMWARE_OPTIONS 0x0028 #define MBOX_SET_FIRMWARE_OPTIONS 0x0038 #define MBOX_GET_RESOURCE_COUNT 0x0042 @@ -1103,6 +1109,8 @@ typedef struct { ICB2400_VPINFO_OFF + \ sizeof (isp_icb_2400_vpinfo_t) + ((chan - 1) * ICB2400_VPOPT_WRITE_SIZE) +#define ICB2400_VPGOPT_MID_DISABLE 0x02 + typedef struct { isphdr_t vp_ctrl_hdr; uint32_t vp_ctrl_handle; diff --git a/qla_isp/common/ispvar.h b/qla_isp/common/ispvar.h index 22e6fa169..a9898da36 100644 --- a/qla_isp/common/ispvar.h +++ b/qla_isp/common/ispvar.h @@ -1,4 +1,4 @@ -/* $Id: ispvar.h,v 1.86 2007/12/02 22:02:04 mjacob Exp $ */ +/* $Id: ispvar.h,v 1.87 2007/12/05 00:42:02 mjacob Exp $ */ /*- * Copyright (c) 1997-2007 by Matthew Jacob * All rights reserved. @@ -409,7 +409,9 @@ typedef struct { */ typedef struct { - uint32_t : 13, + uint32_t : 11, + npiv_fabric : 1, + inorder : 1, sendmarker : 1, role : 2, isp_gbspeed : 4, diff --git a/qla_isp/linux/isp_linux.h b/qla_isp/linux/isp_linux.h index 5b5278d7a..fc3ef4756 100644 --- a/qla_isp/linux/isp_linux.h +++ b/qla_isp/linux/isp_linux.h @@ -1,4 +1,4 @@ -/* $Id: isp_linux.h,v 1.144 2007/12/02 22:02:06 mjacob Exp $ */ +/* $Id: isp_linux.h,v 1.145 2007/12/05 00:41:42 mjacob Exp $ */ /* * Copyright (c) 1997-2007 by Matthew Jacob * All rights reserved. @@ -75,10 +75,6 @@ #error "Only Linux 2.5/2.6 kernels are supported with this driver" #endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23) -#error "There are problems with 2.6.23 and later kernels at present" -#endif - #ifndef UNUSED_PARAMETER #define UNUSED_PARAMETER(x) (void) x #endif