diff options
| author | Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM> | 2010-01-18 09:39:57 -0800 |
|---|---|---|
| committer | Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM> | 2010-01-18 09:39:57 -0800 |
| commit | bce54adf407df0723facaef4e2147ed69b922786 (patch) | |
| tree | 1a982055c9c90aa5884610e01809d5fe61dbcf5d /usr/src | |
| parent | 634e26ec75c89095090605284938356a3145f2b8 (diff) | |
| download | illumos-joyent-bce54adf407df0723facaef4e2147ed69b922786.tar.gz | |
6911936 Memory leaks in the emlxs 2.50 driver for FCoE adapters
6914995 VPorts fail to reconnect to the FCoE switch after a port disconnect/connect on the physical port
6915003 System panic in the emlxs 2.50 driver when a mailbox timeout occurs on the FCoE adapter
6916658 Default values for fct parameters not getting set properly in the emlxs driver
Diffstat (limited to 'usr/src')
9 files changed, 117 insertions, 117 deletions
diff --git a/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_clock.c b/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_clock.c index da3bd95b70..95b19d70dc 100644 --- a/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_clock.c +++ b/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_clock.c @@ -20,7 +20,7 @@ */ /* - * Copyright 2009 Emulex. All rights reserved. + * Copyright 2010 Emulex. All rights reserved. * Use is subject to license terms. */ @@ -499,8 +499,6 @@ emlxs_timer_check_pkts(emlxs_hba_t *hba, uint8_t *flag) sbp = hba->fc_table[iotag]; if (sbp && (sbp != STALE_PACKET) && (sbp->pkt_flags & PACKET_IN_CHIPQ) && - !(sbp->pkt_flags & (PACKET_IN_FLUSH | - PACKET_XRI_CLOSED)) && (hba->timer_tics >= sbp->ticks)) { rc = emlxs_pkt_chip_timeout(sbp->iocbq.port, sbp, &abort, flag); diff --git a/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_fct.c b/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_fct.c index dd04d0b08a..1556746b9c 100644 --- a/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_fct.c +++ b/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_fct.c @@ -20,7 +20,7 @@ */ /* - * Copyright 2009 Emulex. All rights reserved. + * Copyright 2010 Emulex. All rights reserved. * Use is subject to license terms. */ @@ -862,22 +862,32 @@ emlxs_init_fct_bufpool(emlxs_hba_t *hba, char **arrayp, uint32_t cnt) bzero((uint8_t *)port->dmem_bucket, sizeof (port->dmem_bucket)); bck = 0; + + if (!cnt || !arrayp) { + goto done; + } + for (i = 0; i < cnt; i++) { datap = (uint8_t *)arrayp[i]; - if (datap == 0) + if (datap == 0) { break; + } - while (*datap == ' ') /* Skip spaces */ + while (*datap == ' ') { /* Skip spaces */ datap++; + } size = emlxs_str_atoi(datap); - while ((*datap != ':') && (*datap != 0)) + while ((*datap != ':') && (*datap != 0)) { datap++; - if (*datap == ':') /* Skip past delimeter */ + } + if (*datap == ':') { /* Skip past delimeter */ datap++; - while (*datap == ' ') /* Skip spaces */ + } + while (*datap == ' ') { /* Skip spaces */ datap++; + } nbufs = emlxs_str_atoi(datap); @@ -923,74 +933,64 @@ emlxs_init_fct_bufpool(emlxs_hba_t *hba, char **arrayp, uint32_t cnt) break; } } -} + +done: + /* If no entries found then use defaults */ + if (bck == 0) { + port->dmem_bucket[0].dmem_buf_size = 512; + port->dmem_bucket[0].dmem_nbufs = FCT_BUF_COUNT_512; + port->dmem_bucket[1].dmem_buf_size = 8192; + port->dmem_bucket[1].dmem_nbufs = FCT_BUF_COUNT_8K; + port->dmem_bucket[2].dmem_buf_size = 65536; + port->dmem_bucket[2].dmem_nbufs = FCT_BUF_COUNT_64K; + port->dmem_bucket[3].dmem_buf_size = 131072; + port->dmem_bucket[3].dmem_nbufs = FCT_BUF_COUNT_128K; + } + +} /* emlxs_init_fct_bufpool() */ static void emlxs_fct_cfg_init(emlxs_hba_t *hba) { +#ifdef FCT_IO_TRACE emlxs_port_t *port = &PPORT; + emlxs_config_t *cfg = &CFG; +#endif /* FCT_IO_TRACE */ char **arrayp; uint32_t cnt; char buf[32]; - int status; + uint32_t rval; - bzero((void *)buf, 32); + /* Check for the per adapter setting */ + (void) sprintf(buf, "%s%d-fct-bufpool", DRIVER_NAME, hba->ddiinst); cnt = 0; arrayp = NULL; - - (void) sprintf(buf, "emlxs%d-fct-bufpool", ddi_get_instance(hba->dip)); - status = ddi_prop_lookup_string_array(DDI_DEV_T_ANY, hba->dip, + rval = ddi_prop_lookup_string_array(DDI_DEV_T_ANY, hba->dip, (DDI_PROP_DONTPASS), buf, &arrayp, &cnt); - if ((status == DDI_PROP_SUCCESS) && cnt && arrayp) { - emlxs_init_fct_bufpool(hba, arrayp, cnt); - } else { - status = ddi_prop_lookup_string_array(DDI_DEV_T_ANY, hba->dip, + if ((rval != DDI_PROP_SUCCESS) || !cnt || !arrayp) { + /* Check for the global setting */ + cnt = 0; + arrayp = NULL; + rval = + ddi_prop_lookup_string_array(DDI_DEV_T_ANY, hba->dip, (DDI_PROP_DONTPASS), "fct-bufpool", &arrayp, &cnt); - if ((status == DDI_PROP_SUCCESS) && cnt && arrayp) { - emlxs_init_fct_bufpool(hba, arrayp, cnt); - } else { - bzero((uint8_t *)port->dmem_bucket, - sizeof (port->dmem_bucket)); - port->dmem_bucket[0].dmem_buf_size = 512; - port->dmem_bucket[0].dmem_nbufs = FCT_BUF_COUNT_512; - port->dmem_bucket[1].dmem_buf_size = (2 * 65536); - port->dmem_bucket[1].dmem_nbufs = FCT_BUF_COUNT_128K; - } - } - - bzero((void *)buf, 32); - cnt = 0; - - /* - * 0 means use HBA throttle for target queue depth, - * non-0 value is the actual target queue depth, - * default is EMLXS_FCT_DFLT_QDEPTH. - */ - (void) sprintf(buf, "emlxs%d-fct-queue-depth", - ddi_get_instance(hba->dip)); - cnt = ddi_prop_get_int(DDI_DEV_T_ANY, hba->dip, - (DDI_PROP_DONTPASS), buf, EMLXS_FCT_DFLT_QDEPTH); - - if ((cnt == DDI_PROP_NOT_FOUND) || (cnt == EMLXS_FCT_DFLT_QDEPTH)) { - cnt = ddi_prop_get_int(DDI_DEV_T_ANY, hba->dip, - (DDI_PROP_DONTPASS), "fct-queue-depth", - EMLXS_FCT_DFLT_QDEPTH); - - if (cnt == DDI_PROP_NOT_FOUND) { - cnt = EMLXS_FCT_DFLT_QDEPTH; + if ((rval != DDI_PROP_SUCCESS) || !cnt || !arrayp) { + cnt = 0; + arrayp = NULL; } } - port->fct_queue_depth = cnt; + emlxs_init_fct_bufpool(hba, arrayp, cnt); #ifdef FCT_IO_TRACE port->iotrace_cnt = 1024; port->iotrace_index = 0; - if (cnt) - port->iotrace_cnt = (2 * cnt); + if (cfg[CFG_FCT_QDEPTH].current) { + port->iotrace_cnt = (2 * cfg[CFG_FCT_QDEPTH].current); + } port->iotrace = kmem_zalloc(port->iotrace_cnt * sizeof (emlxs_iotrace_t), KM_SLEEP); @@ -1005,6 +1005,7 @@ emlxs_fct_cfg_init(emlxs_hba_t *hba) "FCT_ABORT_SUCCESS:%lx FCT_SUCCESS:%lx", FCT_ABORT_SUCCESS, FCT_SUCCESS); #endif /* FCT_IO_TRACE */ + return; } /* emlxs_fct_cfg_init() */ @@ -1368,9 +1369,9 @@ emlxs_fct_bind_port(emlxs_port_t *port) fct_port->port_pp = port->port_provider; fct_port->port_max_logins = hba->max_nodes; - if ((port->fct_queue_depth) && - (port->fct_queue_depth < hba->io_throttle)) { - fct_port->port_max_xchges = port->fct_queue_depth; + if (cfg[CFG_FCT_QDEPTH].current && + (cfg[CFG_FCT_QDEPTH].current < hba->io_throttle)) { + fct_port->port_max_xchges = cfg[CFG_FCT_QDEPTH].current; } else { fct_port->port_max_xchges = hba->io_throttle; } @@ -3918,7 +3919,7 @@ emlxs_fct_abort_pkt_comp(fc_packet_t *pkt) iocb = &iocbq->iocb; EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_fct_detail_msg, - "emlxs_fct_handle_abort: %p: xri=%x status=%x", iocb->ULPCONTEXT, + "emlxs_fct_abort_pkt_comp: %p: xri=%x status=%x", iocb->ULPCONTEXT, iocb->ULPCOMMAND, iocb->ULPSTATUS); #endif /* FCT_API_TRACE */ diff --git a/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_mbox.c b/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_mbox.c index 204515c70a..f23103cb4a 100644 --- a/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_mbox.c +++ b/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_mbox.c @@ -3641,13 +3641,17 @@ emlxs_cmpl_unreg_vpi(void *arg1, MAILBOXQ *mbq) { emlxs_hba_t *hba = (emlxs_hba_t *)arg1; emlxs_port_t *vport; - MAILBOX *mb; + MAILBOX4 *mb4; + uint16_t vpi; - mb = (MAILBOX *)mbq; - if (mb->mbxStatus == MBX_SUCCESS) { - vport = &VPORT(mb->un.varUnregVpi.vpi); - vport->flag &= ~EMLXS_PORT_INIT_VPI_CMPL; - vport->flag &= ~EMLXS_PORT_REG_VPI_CMPL; + if (hba->sli_mode == EMLXS_HBA_SLI4_MODE) { + mb4 = (MAILBOX4 *)mbq->mbox; + if (mb4->mbxStatus == MBX_SUCCESS) { + vpi = mb4->un.varUnRegVPI4.index - hba->vpi_base; + vport = &VPORT(vpi); + vport->flag &= ~EMLXS_PORT_INIT_VPI_CMPL; + vport->flag &= ~EMLXS_PORT_REG_VPI_CMPL; + } } return (0); diff --git a/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_sli4.c b/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_sli4.c index 0bc4936b3c..a2c3248f92 100644 --- a/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_sli4.c +++ b/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_sli4.c @@ -20,7 +20,7 @@ */ /* - * Copyright 2009 Emulex. All rights reserved. + * Copyright 2010 Emulex. All rights reserved. * Use is subject to license terms. */ @@ -172,7 +172,6 @@ emlxs_sli4_online(emlxs_hba_t *hba) MAILBOXQ *mbq = NULL; MAILBOX4 *mb = NULL; MATCHMAP *mp = NULL; - MATCHMAP *mp1 = NULL; uint32_t i; uint32_t j; uint32_t rval = 0; @@ -810,30 +809,6 @@ emlxs_data_dump(hba, "XRIp", (uint32_t *)hba->sli.sli4.XRIp, 18, 0); /* Get and save the current firmware version (based on sli_mode) */ emlxs_decode_firmware_rev(hba, vpd); - /* - * Setup and issue mailbox RUN BIU DIAG command Setup test buffers - */ - if (((mp = (MATCHMAP *)emlxs_mem_get(hba, MEM_BUF, 1)) == 0) || - ((mp1 = (MATCHMAP *)emlxs_mem_get(hba, MEM_BUF, 1)) == 0)) { - EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_init_failed_msg, - "Unable to allocate diag buffers."); - - rval = ENOMEM; - goto failed3; - } - - bcopy((caddr_t)&emlxs_diag_pattern[0], (caddr_t)mp->virt, - MEM_ELSBUF_SIZE); - EMLXS_MPDATA_SYNC(mp->dma_handle, 0, MEM_ELSBUF_SIZE, - DDI_DMA_SYNC_FORDEV); - - bzero(mp1->virt, MEM_ELSBUF_SIZE); - EMLXS_MPDATA_SYNC(mp1->dma_handle, 0, MEM_ELSBUF_SIZE, - DDI_DMA_SYNC_FORDEV); - - - (void) emlxs_mem_put(hba, MEM_BUF, (uint8_t *)mp); - mp = NULL; EMLXS_STATE_CHANGE(hba, FC_INIT_INITLINK); @@ -1005,6 +980,11 @@ emlxs_data_dump(hba, "XRIp", (uint32_t *)hba->sli.sli4.XRIp, 18, 0); * The leadvile driver will now handle the FLOGI at the driver level */ + if (mbq) { + (void) kmem_free((uint8_t *)mbq, sizeof (MAILBOXQ)); + mbq = NULL; + mb = NULL; + } return (0); failed3: @@ -1015,10 +995,6 @@ failed3: mp = NULL; } - if (mp1) { - (void) emlxs_mem_put(hba, MEM_BUF, (uint8_t *)mp1); - mp1 = NULL; - } if (hba->intr_flags & EMLXS_MSI_ADDED) { (void) EMLXS_INTR_REMOVE(hba); @@ -1075,7 +1051,6 @@ emlxs_sli4_offline(emlxs_hba_t *hba) mutex_exit(&EMLXS_PORT_LOCK); } - /* Shutdown the adapter interface */ emlxs_sli4_hba_kill(hba); @@ -2325,7 +2300,6 @@ emlxs_sli4_issue_mbox_cmd(emlxs_hba_t *hba, MAILBOXQ *mbq, int32_t flag, mb4 = (MAILBOX4 *)mbq; mb = (MAILBOX *)mbq; - mb->mbxStatus = MBX_SUCCESS; rc = MBX_SUCCESS; @@ -2379,8 +2353,11 @@ emlxs_sli4_issue_mbox_cmd(emlxs_hba_t *hba, MAILBOXQ *mbq, int32_t flag, } } - /* Check for hardware error */ - if (hba->flag & FC_HARDWARE_ERROR) { + /* Check for hardware error ; special case SLI_CONFIG */ + if ((hba->flag & FC_HARDWARE_ERROR) && + ! ((mb4->mbxCommand == MBX_SLI_CONFIG) && + (mb4->un.varSLIConfig.be.un_hdr.hdr_req.opcode == + COMMON_OPCODE_RESET))) { mb->mbxStatus = MBX_HARDWARE_ERROR; mutex_exit(&EMLXS_PORT_LOCK); @@ -3680,10 +3657,13 @@ done: } /* emlxs_sli4_process_mbox_event() */ +/*ARGSUSED*/ static void emlxs_CQE_to_IOCB(emlxs_hba_t *hba, CQE_CmplWQ_t *cqe, emlxs_buf_t *sbp) { +#ifdef SLI4_FASTPATH_DEBUG emlxs_port_t *port = &PPORT; +#endif IOCBQ *iocbq; IOCB *iocb; emlxs_wqe_t *wqe; @@ -3752,6 +3732,11 @@ emlxs_CQE_to_IOCB(emlxs_hba_t *hba, CQE_CmplWQ_t *cqe, emlxs_buf_t *sbp) static void emlxs_sli4_hba_flush_chipq(emlxs_hba_t *hba) { +#ifdef SFCT_SUPPORT +#ifdef FCT_IO_TRACE + emlxs_port_t *port = &PPORT; +#endif /* FCT_IO_TRACE */ +#endif /* SFCT_SUPPORT */ CHANNEL *cp; emlxs_buf_t *sbp; IOCBQ *iocbq; @@ -3961,7 +3946,9 @@ static void emlxs_sli4_process_release_wqe(emlxs_hba_t *hba, CQ_DESC_t *cq, CQE_RelWQ_t *cqe) { +#ifdef SLI4_FASTPATH_DEBUG emlxs_port_t *port = &PPORT; +#endif WQ_DESC_t *wq; CHANNEL *cp; uint32_t i; @@ -4844,7 +4831,9 @@ emlxs_sli4_process_cq(emlxs_hba_t *hba, CQ_DESC_t *cq) static void emlxs_sli4_process_eq(emlxs_hba_t *hba, EQ_DESC_t *eq) { +#ifdef SLI4_FASTPATH_DEBUG emlxs_port_t *port = &PPORT; +#endif uint32_t eqdb; uint32_t *ptr; CHANNEL *cp; @@ -4932,7 +4921,9 @@ static uint32_t emlxs_sli4_msi_intr(char *arg1, char *arg2) { emlxs_hba_t *hba = (emlxs_hba_t *)arg1; +#ifdef SLI4_FASTPATH_DEBUG emlxs_port_t *port = &PPORT; +#endif uint16_t msgid; int rc; @@ -4959,7 +4950,7 @@ emlxs_sli4_msi_intr(char *arg1, char *arg2) mutex_enter(&EMLXS_PORT_LOCK); - if (hba->flag & FC_OFFLINE_MODE) { + if ((hba->state == FC_KILLED) || (hba->flag & FC_OFFLINE_MODE)) { mutex_exit(&EMLXS_PORT_LOCK); mutex_exit(&EMLXS_INTR_LOCK(msgid)); return (DDI_INTR_UNCLAIMED); @@ -4981,7 +4972,9 @@ static int emlxs_sli4_intx_intr(char *arg) { emlxs_hba_t *hba = (emlxs_hba_t *)arg; +#ifdef SLI4_FASTPATH_DEBUG emlxs_port_t *port = &PPORT; +#endif #ifdef SLI4_FASTPATH_DEBUG EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_sli_detail_msg, @@ -4990,7 +4983,7 @@ emlxs_sli4_intx_intr(char *arg) mutex_enter(&EMLXS_PORT_LOCK); - if (hba->flag & FC_OFFLINE_MODE) { + if ((hba->state == FC_KILLED) || (hba->flag & FC_OFFLINE_MODE)) { mutex_exit(&EMLXS_PORT_LOCK); return (DDI_INTR_UNCLAIMED); } diff --git a/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_solaris.c b/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_solaris.c index 66c4c645c6..a68d878b78 100644 --- a/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_solaris.c +++ b/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_solaris.c @@ -20,7 +20,7 @@ */ /* - * Copyright 2009 Emulex. All rights reserved. + * Copyright 2010 Emulex. All rights reserved. * Use is subject to license terms. */ @@ -2852,7 +2852,7 @@ emlxs_ub_alloc(opaque_t fca_port_handle, uint64_t tokens[], uint32_t size, err = "IS8802_SNAP"; if (cfg[CFG_NETWORK_ON].current == 0) { - EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_attach_msg, + EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_sfs_debug_msg, "ub_alloc failed: IP support is disabled."); return (FC_FAILURE); diff --git a/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_config.h b/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_config.h index 581490fa7d..b9d5f98215 100644 --- a/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_config.h +++ b/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_config.h @@ -20,7 +20,7 @@ */ /* - * Copyright 2009 Emulex. All rights reserved. + * Copyright 2010 Emulex. All rights reserved. * Use is subject to license terms. */ @@ -116,6 +116,7 @@ typedef enum emlxs_cfg_parm #ifdef SFCT_SUPPORT CFG_TARGET_MODE, /* target-mode */ + CFG_FCT_QDEPTH, /* fct-queue-depth */ #endif /* SFCT_SUPPORT */ CFG_NUM_WQ, /* num-wq (hidden) */ CFG_PERSIST_LINKDOWN, /* persist-linkdown */ @@ -487,8 +488,15 @@ emlxs_config_t emlxs_cfg[] = { #else 0, 1, 0, 0, #endif /* SFCT_ENABLED */ - PARM_BOOLEAN, + 0, "Enables target mode support in driver. [0=Disabled, 1=Enabled]"}, + + /* CFG_FCT_QDEPTH */ + {"fct-queue-depth", + 0, 4096, 0, 0, + PARM_BOOLEAN, + "Queue depth of target mode port. " + "[0=max determined by type of HBA]"}, #endif /* SFCT_SUPPORT */ /* CFG_NUM_WQ */ diff --git a/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_fc.h b/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_fc.h index 51a0b89938..e7af756d57 100644 --- a/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_fc.h +++ b/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_fc.h @@ -20,7 +20,7 @@ */ /* - * Copyright 2009 Emulex. All rights reserved. + * Copyright 2010 Emulex. All rights reserved. * Use is subject to license terms. */ @@ -1071,8 +1071,6 @@ typedef struct emlxs_port #define FCT_DMEM_MAX_BUF_SEGMENT 8388608 /* 8M */ struct emlxs_fct_dmem_bucket dmem_bucket[FCT_MAX_BUCKETS]; - int fct_queue_depth; -#define EMLXS_FCT_DFLT_QDEPTH 64 char cfd_name[24]; stmf_port_provider_t *port_provider; diff --git a/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_os.h b/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_os.h index d846254d95..9584a732c8 100644 --- a/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_os.h +++ b/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_os.h @@ -20,7 +20,7 @@ */ /* - * Copyright 2009 Emulex. All rights reserved. + * Copyright 2010 Emulex. All rights reserved. * Use is subject to license terms. */ @@ -54,8 +54,6 @@ extern "C" { #define SAN_DIAG_SUPPORT /* 2.40 driver */ #define FMA_SUPPORT /* 2.40 driver */ -#define SLI4_FASTPATH_DEBUG - /* #define IDLE_TIMER Not yet - untested */ /* diff --git a/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_version.h b/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_version.h index a8579afff5..19c339c772 100644 --- a/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_version.h +++ b/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_version.h @@ -20,7 +20,7 @@ */ /* - * Copyright 2009 Emulex. All rights reserved. + * Copyright 2010 Emulex. All rights reserved. * Use is subject to license terms. */ @@ -31,12 +31,12 @@ extern "C" { #endif -#define EMLXS_VERSION "2.50n" -#define EMLXS_DATE_MINUTE "00" /* 00-59 */ -#define EMLXS_DATE_HOUR "16" /* 00-23 */ -#define EMLXS_DATE_DAY "14" /* 00-31 */ -#define EMLXS_DATE_MONTH "12" /* 01-12 */ -#define EMLXS_DATE_YEAR "2009" /* YYYY */ +#define EMLXS_VERSION "2.50o" +#define EMLXS_DATE_MINUTE "45" /* 00-59 */ +#define EMLXS_DATE_HOUR "09" /* 00-23 */ +#define EMLXS_DATE_DAY "08" /* 00-31 */ +#define EMLXS_DATE_MONTH "01" /* 01-12 */ +#define EMLXS_DATE_YEAR "2010" /* YYYY */ #define EMLXS_REVISION EMLXS_DATE_YEAR "." EMLXS_DATE_MONTH "." \ EMLXS_DATE_DAY "." EMLXS_DATE_HOUR "." \ |
