summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorraghuram <none@none>2006-04-24 13:44:48 -0700
committerraghuram <none@none>2006-04-24 13:44:48 -0700
commitc2c6897e1a5682452b38f92bc27270708f1e033c (patch)
treeeee0021a02a57abc49f73c8cb1752842f025af5d /usr/src
parent0a07d80cf2c7e56655639d057a4acc4f3347e01e (diff)
downloadillumos-gate-c2c6897e1a5682452b38f92bc27270708f1e033c.tar.gz
6401817 Panic: BERR from SCF Device/Driver
6409294 SCF driver deletes the SCFIOCPCIRESETREQ ioctl 6409300 SCF driver changes the XSCF connection error notification 6409301 SCF driver causes the connection sequence error 6413146 oplmsu driver causes NULL pointer dereference
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/sun4u/opl/io/oplmsu/oplmsu_ioctl_lrp.c16
-rw-r--r--usr/src/uts/sun4u/opl/io/scfd/scfdscp.c179
-rw-r--r--usr/src/uts/sun4u/opl/io/scfd/scfops.c78
-rw-r--r--usr/src/uts/sun4u/opl/io/scfd/scftimer.c12
-rw-r--r--usr/src/uts/sun4u/opl/sys/scfd/opcio.h8
-rw-r--r--usr/src/uts/sun4u/opl/sys/scfd/scfreg.h1
-rw-r--r--usr/src/uts/sun4u/opl/sys/scfd/scfsys.h4
-rw-r--r--usr/src/uts/sun4u/opl/sys/scfd/scftimer.h7
8 files changed, 171 insertions, 134 deletions
diff --git a/usr/src/uts/sun4u/opl/io/oplmsu/oplmsu_ioctl_lrp.c b/usr/src/uts/sun4u/opl/io/oplmsu/oplmsu_ioctl_lrp.c
index 28df173a08..5af6897bf3 100644
--- a/usr/src/uts/sun4u/opl/io/oplmsu/oplmsu_ioctl_lrp.c
+++ b/usr/src/uts/sun4u/opl/io/oplmsu/oplmsu_ioctl_lrp.c
@@ -494,6 +494,14 @@ oplmsu_lrmsg_error(queue_t *lrq, mblk_t *mp)
lpath = (lpath_t *)lrq->q_ptr;
upath = oplmsu_search_upath_info(lpath->path_no);
+ if (upath == NULL) {
+ mutex_exit(&oplmsu_uinst->l_lock);
+ mutex_exit(&oplmsu_uinst->u_lock);
+ rw_exit(&oplmsu_uinst->lock);
+ freemsg(mp);
+ return (SUCCESS);
+ }
+
if ((lpath->status == MSU_LINK_NU) ||
(lpath->status == MSU_SETID_NU) ||
(upath->traditional_status == MSU_WSTR_ACK) ||
@@ -626,6 +634,14 @@ oplmsu_lrdata_xoffxon(queue_t *lrq, mblk_t *mp)
lpath = (lpath_t *)lrq->q_ptr;
upath = oplmsu_search_upath_info(lpath->path_no);
+ if (upath == NULL) {
+ mutex_exit(&oplmsu_uinst->l_lock);
+ mutex_exit(&oplmsu_uinst->u_lock);
+ rw_exit(&oplmsu_uinst->lock);
+ freemsg(mp);
+ return (SUCCESS);
+ }
+
if ((stp_upath != NULL) && (stp_upath != upath)) {
if ((stp_upath->status != MSU_PSTAT_ACTIVE) ||
(stp_upath->traditional_status != MSU_ACTIVE)) {
diff --git a/usr/src/uts/sun4u/opl/io/scfd/scfdscp.c b/usr/src/uts/sun4u/opl/io/scfd/scfdscp.c
index bdee1377b4..f52372f40b 100644
--- a/usr/src/uts/sun4u/opl/io/scfd/scfdscp.c
+++ b/usr/src/uts/sun4u/opl/io/scfd/scfdscp.c
@@ -63,6 +63,7 @@ void scf_dscp_end_tout(void);
void scf_dscp_busy_tout(void);
void scf_dscp_callback_tout(void);
void scf_dscp_callback(void);
+void scf_dscp_init_tout(void);
/*
* Interrupt function : from scf_dscp_intr()
@@ -1514,6 +1515,7 @@ scf_dscp_fini(void)
scf_timer_stop(SCF_TIMERCD_DSCP_END);
scf_timer_stop(SCF_TIMERCD_DSCP_CALLBACK);
scf_timer_stop(SCF_TIMERCD_DSCP_BUSY);
+ scf_timer_stop(SCF_TIMERCD_DSCP_INIT);
/* All DSC buffer release */
scf_dscp_dscbuff_free_all();
@@ -1761,6 +1763,7 @@ scf_dscp_stop(uint32_t factor)
scf_timer_stop(SCF_TIMERCD_DSCP_ACK);
scf_timer_stop(SCF_TIMERCD_DSCP_END);
scf_timer_stop(SCF_TIMERCD_DSCP_BUSY);
+ scf_timer_stop(SCF_TIMERCD_DSCP_INIT);
SCFDBGMSG(SCF_DBGFLAG_DSCP, SCF_FUNC_NAME ": end");
}
@@ -1805,48 +1808,6 @@ scf_dscp_intr(scf_state_t *statep)
SCFDBGMSG1(SCF_DBGFLAG_REG, "DSR = 0x%02x", statep->reg_dsr);
- if ((statep->reg_dsr & DSR_RxREQ) != 0) { /* RxREQ interrupt */
- SCFDBGMSG(SCF_DBGFLAG_DSCP, "RxREQ interrupt");
-
- interrupt = FLAG_ON;
- /* Get RxDCR register */
- statep->reg_rxdcr_c_flag =
- SCF_DDI_GET16(statep, statep->scf_regs_handle,
- &statep->scf_regs->RxDCR_C_FLAG);
- SC_DBG_DRV_TRACE(TC_R_RxDCR_C_FLAG, __LINE__,
- &statep->reg_rxdcr_c_flag,
- sizeof (statep->reg_rxdcr_c_flag));
-
- statep->reg_rxdcr_c_offset =
- SCF_DDI_GET16(statep, statep->scf_regs_handle,
- &statep->scf_regs->RxDCR_OFFSET);
- SC_DBG_DRV_TRACE(TC_R_RxDCR_OFFSET, __LINE__,
- &statep->reg_rxdcr_c_offset,
- sizeof (statep->reg_rxdcr_c_offset));
-
- statep->reg_rxdcr_c_length =
- SCF_DDI_GET32(statep, statep->scf_regs_handle,
- &statep->scf_regs->RxDCR_LENGTH);
- SC_DBG_DRV_TRACE(TC_R_RxDCR_LENGTH, __LINE__,
- &statep->reg_rxdcr_c_length,
- sizeof (statep->reg_rxdcr_c_length));
-
- /* SRAM trace */
- SCF_SRAM_TRACE(statep, DTC_DSCP_RXREQ);
-
- SCF_DBG_TEST_INTR_DSCP_RXTX(statep, statep->reg_dsr);
-
- SC_DBG_DRV_TRACE(TC_RxREQ, __LINE__,
- &statep->reg_rxdcr_c_flag, 8);
-
- SCFDBGMSG3(SCF_DBGFLAG_REG, "RxDCR = 0x%04x 0x%04x 0x%08x",
- statep->reg_rxdcr_c_flag, statep->reg_rxdcr_c_offset,
- statep->reg_rxdcr_c_length);
-
- /* Call RxRERQ interrupt processing */
- scf_dscp_rxreq_recv(statep);
- }
-
if ((statep->reg_dsr & DSR_TxACK) != 0) { /* TxACK interrupt */
SCFDBGMSG(SCF_DBGFLAG_DSCP, "TxACK interrupt");
@@ -1896,6 +1857,48 @@ scf_dscp_intr(scf_state_t *statep)
scf_dscp_txend_recv(statep);
}
+ if ((statep->reg_dsr & DSR_RxREQ) != 0) { /* RxREQ interrupt */
+ SCFDBGMSG(SCF_DBGFLAG_DSCP, "RxREQ interrupt");
+
+ interrupt = FLAG_ON;
+ /* Get RxDCR register */
+ statep->reg_rxdcr_c_flag =
+ SCF_DDI_GET16(statep, statep->scf_regs_handle,
+ &statep->scf_regs->RxDCR_C_FLAG);
+ SC_DBG_DRV_TRACE(TC_R_RxDCR_C_FLAG, __LINE__,
+ &statep->reg_rxdcr_c_flag,
+ sizeof (statep->reg_rxdcr_c_flag));
+
+ statep->reg_rxdcr_c_offset =
+ SCF_DDI_GET16(statep, statep->scf_regs_handle,
+ &statep->scf_regs->RxDCR_OFFSET);
+ SC_DBG_DRV_TRACE(TC_R_RxDCR_OFFSET, __LINE__,
+ &statep->reg_rxdcr_c_offset,
+ sizeof (statep->reg_rxdcr_c_offset));
+
+ statep->reg_rxdcr_c_length =
+ SCF_DDI_GET32(statep, statep->scf_regs_handle,
+ &statep->scf_regs->RxDCR_LENGTH);
+ SC_DBG_DRV_TRACE(TC_R_RxDCR_LENGTH, __LINE__,
+ &statep->reg_rxdcr_c_length,
+ sizeof (statep->reg_rxdcr_c_length));
+
+ /* SRAM trace */
+ SCF_SRAM_TRACE(statep, DTC_DSCP_RXREQ);
+
+ SCF_DBG_TEST_INTR_DSCP_RXTX(statep, statep->reg_dsr);
+
+ SC_DBG_DRV_TRACE(TC_RxREQ, __LINE__,
+ &statep->reg_rxdcr_c_flag, 8);
+
+ SCFDBGMSG3(SCF_DBGFLAG_REG, "RxDCR = 0x%04x 0x%04x 0x%08x",
+ statep->reg_rxdcr_c_flag, statep->reg_rxdcr_c_offset,
+ statep->reg_rxdcr_c_length);
+
+ /* Call RxRERQ interrupt processing */
+ scf_dscp_rxreq_recv(statep);
+ }
+
if (interrupt == FLAG_OFF) {
SC_DBG_DRV_TRACE(TC_ERRCD, __LINE__, &statep->reg_dsr,
sizeof (statep->reg_dsr));
@@ -2179,6 +2182,54 @@ scf_dscp_callback_tout(void)
/*
+ * scf_dscp_init_tout()
+ *
+ * Description: INIT_REQ retray timeout performs TxREQ transmission again.
+ *
+ */
+void
+scf_dscp_init_tout(void)
+{
+#undef SCF_FUNC_NAME
+#define SCF_FUNC_NAME "scf_dscp_init_tout() "
+ scf_dscp_dsc_t *dsc_p; /* TxDSC address */
+
+ ASSERT(MUTEX_HELD(&scf_comtbl.all_mutex));
+
+ SCFDBGMSG(SCF_DBGFLAG_DSCP, SCF_FUNC_NAME ": start");
+
+ /* Check pending send TxDSC or local control TxDSC */
+ if ((scf_dscp_comtbl.tx_dsc_count == 0) &&
+ (scf_dscp_comtbl.tx_local_use_flag == FLAG_OFF)) {
+ goto END_dscp_init_tout;
+ }
+
+ /* Check local control data flag */
+ if (scf_dscp_comtbl.tx_local_use_flag == FLAG_OFF) {
+ /* Get TxDSC address */
+ dsc_p = &scf_dscp_comtbl.tx_dscp[scf_dscp_comtbl.tx_get];
+ } else {
+ /* Get local data TxDSC address */
+ dsc_p = &scf_dscp_comtbl.tx_dscp[scf_dscp_comtbl.tx_local];
+ }
+
+ /* Check TxDSC status */
+ if (dsc_p->status == SCF_TX_ST_TXREQ_SEND_WAIT) {
+ /* TxDSC status (SB2) */
+ /* Call send matrix */
+ scf_dscp_send_matrix();
+ }
+
+/*
+ * END_dscp_init_tout
+ */
+END_dscp_init_tout:
+
+ SCFDBGMSG(SCF_DBGFLAG_DSCP, SCF_FUNC_NAME ": end");
+}
+
+
+/*
* scf_dscp_callback()
*
* Description: Event queue is taken out and a callback entry is called.
@@ -2463,6 +2514,24 @@ scf_dscp_txend_recv(scf_state_t *statep)
/* memo counter up */
scf_dscp_comtbl.tx_busy_memo_cnt++;
+ /* TxREQ code check */
+ if (dsc_p->dinfo.bdcr.code == DSC_CNTL_INIT_REQ) {
+ /* Check main status */
+ if (mainp->status ==
+ SCF_ST_EST_TXEND_RECV_WAIT) {
+ /* TxREQ busy timer start */
+ scf_timer_start(SCF_TIMERCD_DSCP_INIT);
+
+ /* Change TxDSC status (SB2) */
+ SCF_SET_DSC_STATUS(dsc_p,
+ SCF_TX_ST_TXREQ_SEND_WAIT);
+
+ /* TxDSC not release */
+ norel_txdsc = FLAG_ON;
+ }
+ break;
+ }
+
/* Check re-try counter */
if ((scf_dscp_comtbl.tx_busy_retry_cnt <
scf_dscp_comtbl.tx_busy_maxretry_cnt) &&
@@ -2544,6 +2613,24 @@ scf_dscp_txend_recv(scf_state_t *statep)
/* memo counter up */
scf_dscp_comtbl.tx_nak_memo_cnt++;
+ /* TxREQ code check */
+ if (dsc_p->dinfo.bdcr.code == DSC_CNTL_INIT_REQ) {
+ /* Check main status */
+ if (mainp->status ==
+ SCF_ST_EST_TXEND_RECV_WAIT) {
+ /* TxREQ busy timer start */
+ scf_timer_start(SCF_TIMERCD_DSCP_INIT);
+
+ /* Change TxDSC status (SB2) */
+ SCF_SET_DSC_STATUS(dsc_p,
+ SCF_TX_ST_TXREQ_SEND_WAIT);
+
+ /* TxDSC not release */
+ norel_txdsc = FLAG_ON;
+ }
+ break;
+ }
+
/* Check re-try counter */
if ((scf_dscp_comtbl.tx_nak_retry_cnt <
scf_dscp_comtbl.tx_nak_maxretry_cnt) &&
@@ -2888,7 +2975,8 @@ scf_dscp_rxreq_recv(scf_state_t *statep)
if ((mainp != NULL) &&
(((dsc_p->dinfo.base.offset >= offset_low) &&
(dsc_p->dinfo.base.offset < offset_hight)) ||
- (dsc_p->dinfo.base.offset == DSC_OFFSET_NOTHING))) {
+ ((dsc_p->dinfo.base.offset == DSC_OFFSET_NOTHING) &&
+ (dsc_p->dinfo.bdcr.code != DSC_CNTL_DATA_REQ)))) {
/* RxREQ notice to main matrix */
scf_dscp_rxreq_notice(mainp);
} else {
@@ -3489,6 +3577,11 @@ scf_dscp_send_matrix(void)
if (timer_ret == SCF_TIMER_EXEC) {
break;
}
+ timer_ret = scf_timer_check(SCF_TIMERCD_DSCP_INIT);
+ /* Check INIT_REQ retry timer exec */
+ if (timer_ret == SCF_TIMER_EXEC) {
+ break;
+ }
/* Check SCF path status */
if (path_ret != SCF_PATH_ONLINE) {
break;
diff --git a/usr/src/uts/sun4u/opl/io/scfd/scfops.c b/usr/src/uts/sun4u/opl/io/scfd/scfops.c
index 3a8a194b8d..f671679beb 100644
--- a/usr/src/uts/sun4u/opl/io/scfd/scfops.c
+++ b/usr/src/uts/sun4u/opl/io/scfd/scfops.c
@@ -78,7 +78,6 @@ int scf_ioc_remcscmd(intptr_t arg, int mode, int *rval_p, int u_mode);
int scf_ioc_remcsfile(intptr_t arg, int mode, int *rval_p, int u_mode);
int scf_ioc_sparecmd(intptr_t arg, int mode, int *rval_p, int u_mode);
int scf_ioc_setphpinfo(intptr_t arg, int mode, int *rval_p, int u_mode);
-int scf_ioc_pciresetreq(intptr_t arg, int mode, int *rval_p, int u_mode);
int scf_push_reportsense(unsigned int rci_addr, unsigned char *sense,
time_t timestamp);
int scf_pop_reportsense(scfreport_t *rsense);
@@ -384,10 +383,6 @@ scf_ioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *cred_p,
ret = scf_ioc_setphpinfo(arg, mode, rval_p, u_mode);
break;
- case SCFIOCPCIRESETREQ:
- ret = scf_ioc_pciresetreq(arg, mode, rval_p, u_mode);
- break;
-
default:
SCFDBGMSG(SCF_DBGFLAG_IOCTL, "undefined ioctl command");
SC_DBG_DRV_TRACE(TC_IOCTL|TC_ERR, __LINE__,
@@ -913,6 +908,7 @@ scf_ioc_optiondisp(intptr_t arg, int mode, int *rval_p, int u_mode)
mutex_exit(&scf_comtbl.all_mutex);
if (ret == 0) {
+
if (ddi_copyout((void *)&scfoption, (void *)arg,
sizeof (scfoption_t), mode) != 0) {
SC_DBG_DRV_TRACE(TC_IOCTL|TC_ERR, __LINE__,
@@ -3069,78 +3065,6 @@ scf_ioc_setphpinfo(intptr_t arg, int mode, int *rval_p, int u_mode)
/*
- * scf_ioc_pciresetreq()
- *
- * Description: SCFIOCPCIRESETREQ ioctl command processing.
- *
- */
-/* ARGSUSED */
-int
-scf_ioc_pciresetreq(intptr_t arg, int mode, int *rval_p, int u_mode)
-{
-#undef SCF_FUNC_NAME
-#define SCF_FUNC_NAME "scf_ioc_pciresetreq() "
- int ret = 0;
- struct scf_cmd scf_cmd;
- scfpciresetreq_t *scfpciresetreq_p = NULL;
-
- SCFDBGMSG(SCF_DBGFLAG_IOCTL, SCF_FUNC_NAME ": start");
-
- scfpciresetreq_p = kmem_zalloc((size_t)(sizeof (scfpciresetreq_t)),
- KM_SLEEP);
-
- if (ddi_copyin((void *)arg, (void *)scfpciresetreq_p,
- sizeof (scfpciresetreq_t), mode) != 0) {
- SC_DBG_DRV_TRACE(TC_IOCTL|TC_ERR, __LINE__, "ioctl ", 8);
- ret = EFAULT;
- goto END_pciresetreq;
- }
-
- if (scfpciresetreq_p->size > SCF_L_CNT_MAX) {
- SC_DBG_DRV_TRACE(TC_IOCTL|TC_ERR, __LINE__, "ioctl ", 8);
- ret = EINVAL;
- goto END_pciresetreq;
- }
-
- scf_cmd.cmd = CMD_DOMAIN_INFO;
- scf_cmd.subcmd = SUB_PHP_RESET;
- scf_cmd.sbuf = &scfpciresetreq_p->sbuf[0];
- scf_cmd.scount = scfpciresetreq_p->size;
- scf_cmd.rbuf = &scfpciresetreq_p->rbuf[0];
- scf_cmd.rcount = SCF_S_CNT_15;
- scf_cmd.flag = SCF_USE_L_BUF;
-
- mutex_enter(&scf_comtbl.all_mutex);
-
- ret = scf_send_cmd_check_bufful(&scf_cmd);
-
- mutex_exit(&scf_comtbl.all_mutex);
-
- if (ret == 0) {
- if (ddi_copyout((void *)scfpciresetreq_p, (void *)arg,
- sizeof (scfpciresetreq_t), mode) != 0) {
- SC_DBG_DRV_TRACE(TC_IOCTL|TC_ERR, __LINE__,
- "ioctl ", 8);
- ret = EFAULT;
- }
- }
-
-/*
- * END_pciresetreq
- */
- END_pciresetreq:
-
- if (scfpciresetreq_p) {
- kmem_free((void *)scfpciresetreq_p,
- (size_t)(sizeof (scfpciresetreq_t)));
- }
-
- SCFDBGMSG1(SCF_DBGFLAG_IOCTL, SCF_FUNC_NAME ": end return = %d", ret);
- return (ret);
-}
-
-
-/*
* scf_push_reportsense()
*
* Description: Set processing of SCFIOCGETREPORT information.
diff --git a/usr/src/uts/sun4u/opl/io/scfd/scftimer.c b/usr/src/uts/sun4u/opl/io/scfd/scftimer.c
index 104b31439e..3a20c808d4 100644
--- a/usr/src/uts/sun4u/opl/io/scfd/scftimer.c
+++ b/usr/src/uts/sun4u/opl/io/scfd/scftimer.c
@@ -60,6 +60,8 @@ int scf_dscp_end_wait_time = SCF_TIMER_VALUE_DSCP_END;
int scf_dscp_txbusy_time = SCF_TIMER_VALUE_DSCP_BUSY;
/* DSCP interface callback timer */
int scf_dscp_callback_time = SCF_TIMER_VALUE_DSCP_CALLBACK;
+ /* DSCP INIT_REQ retry timer */
+int scf_dscp_init_time = SCF_TIMER_VALUE_DSCP_INIT;
/*
* Function list
@@ -86,6 +88,7 @@ extern void scf_dscp_end_tout(void);
extern void scf_dscp_busy_tout(void);
extern void scf_dscp_callback_tout(void);
extern void scf_report_send_wait_tout(void);
+extern void scf_dscp_init_tout(void);
/*
* scf_timer_init()
@@ -145,6 +148,10 @@ scf_timer_init(void)
scf_timer[SCF_TIMERCD_RCI_BUSY].tbl[0].code = SCF_TIMERCD_RCI_BUSY;
scf_timer[SCF_TIMERCD_RCI_BUSY].tbl[1].code = SCF_TIMERCD_RCI_BUSY;
+ scf_timer[SCF_TIMERCD_DSCP_INIT].value = scf_dscp_init_time;
+ scf_timer[SCF_TIMERCD_DSCP_INIT].tbl[0].code = SCF_TIMERCD_DSCP_INIT;
+ scf_timer[SCF_TIMERCD_DSCP_INIT].tbl[1].code = SCF_TIMERCD_DSCP_INIT;
+
SCFDBGMSG(SCF_DBGFLAG_TIMER, SCF_FUNC_NAME ": end");
}
@@ -437,6 +444,11 @@ scf_tout(void *arg)
scf_report_send_wait_tout();
break;
+ case SCF_TIMERCD_DSCP_INIT:
+ /* DSCP INIT_REQ retry timeout */
+ scf_dscp_init_tout();
+ break;
+
default:
/* NOP */
break;
diff --git a/usr/src/uts/sun4u/opl/sys/scfd/opcio.h b/usr/src/uts/sun4u/opl/sys/scfd/opcio.h
index fc085e1b1a..eb257d7572 100644
--- a/usr/src/uts/sun4u/opl/sys/scfd/opcio.h
+++ b/usr/src/uts/sun4u/opl/sys/scfd/opcio.h
@@ -79,7 +79,6 @@ extern "C" {
#define SCFIOCREMCSFILE (SCFIOC|108|0x80040000)
#define SCFIOCSETPHPINFO (SCFIOC|1|0xe0000000)
-#define SCFIOCPCIRESETREQ (SCFIOC|2|0xe0000000)
/* SCFIOCOPECALL */
#define SUB_OPECALL_DISP 0x10 /* OP call disp */
@@ -312,13 +311,6 @@ typedef struct scfsetphpinfo {
unsigned int size;
} scfsetphpinfo_t;
-/* SCFIOCPCIRESETREQ */
-typedef struct scfpciresetreq {
- unsigned char sbuf[65536];
- unsigned char rbuf[16];
- unsigned int size;
-} scfpciresetreq_t;
-
#ifdef __cplusplus
}
#endif
diff --git a/usr/src/uts/sun4u/opl/sys/scfd/scfreg.h b/usr/src/uts/sun4u/opl/sys/scfd/scfreg.h
index 5d5924d03b..516b0da4d3 100644
--- a/usr/src/uts/sun4u/opl/sys/scfd/scfreg.h
+++ b/usr/src/uts/sun4u/opl/sys/scfd/scfreg.h
@@ -293,7 +293,6 @@ typedef struct scf_drvtrc_ent {
#define SUB_OPTION_DISP 0x04 /* Option disp */
#define SUB_PCI_HP_CONFIG 0x52 /* PCI configuration set */
#define SUB_PCI_DISP 0x54 /* PCI configuration disp */
-#define SUB_PHP_RESET 0x61 /* PHP Reset */
#define SUB_DISK_LED_DISP 0x70 /* DISK LED disp */
#define SUB_DISK_LED_ON 0x73 /* DISK LED on */
#define SUB_DISK_LED_BLINK 0x75 /* DISK LED blink */
diff --git a/usr/src/uts/sun4u/opl/sys/scfd/scfsys.h b/usr/src/uts/sun4u/opl/sys/scfd/scfsys.h
index dc0b106cdd..df943a6826 100644
--- a/usr/src/uts/sun4u/opl/sys/scfd/scfsys.h
+++ b/usr/src/uts/sun4u/opl/sys/scfd/scfsys.h
@@ -48,7 +48,7 @@ extern "C" {
#define FLAG_ON (1)
#define FLAG_OFF (0)
-#define SCF_DRIVER_VERSION "SCF driver 1.5"
+#define SCF_DRIVER_VERSION "SCF driver 1.6"
#define SCF_DRIVER_NAME "scfd"
#define SCF_DEVICE_NAME "scfc"
@@ -139,8 +139,6 @@ extern int scf_ioc_sparecmd(intptr_t arg, int mode, int *rval_p,
int u_mode);
extern int scf_ioc_setphpinfo(intptr_t arg, int mode, int *rval_p,
int u_mode);
-extern int scf_ioc_pciresetreq(intptr_t arg, int mode, int *rval_p,
- int u_mode);
extern int scf_push_reportsense(unsigned int rci_addr,
unsigned char *sense, time_t timestamp);
extern int scf_pop_reportsense(scfreport_t *rsense);
diff --git a/usr/src/uts/sun4u/opl/sys/scfd/scftimer.h b/usr/src/uts/sun4u/opl/sys/scfd/scftimer.h
index d8f356974b..1314deb5c9 100644
--- a/usr/src/uts/sun4u/opl/sys/scfd/scftimer.h
+++ b/usr/src/uts/sun4u/opl/sys/scfd/scftimer.h
@@ -43,8 +43,9 @@ typedef enum {
SCF_TIMERCD_DSCP_END, /* DSCP interface TxEND watch timer */
SCF_TIMERCD_DSCP_BUSY, /* DSCP interface busy watch timer */
SCF_TIMERCD_DSCP_CALLBACK, /* DSCP interface callback timer */
- SCF_TIMERCD_BUF_FUL, /* SCF command BUF_FUL retray timer */
- SCF_TIMERCD_RCI_BUSY, /* SCF command RCI_BUSY retray timer */
+ SCF_TIMERCD_BUF_FUL, /* SCF command BUF_FUL retry timer */
+ SCF_TIMERCD_RCI_BUSY, /* SCF command RCI_BUSY retry timer */
+ SCF_TIMERCD_DSCP_INIT, /* DSCP INIT_REQ retry timer */
SCF_TIMERCD_MAX /* Max timer code */
} scf_tm_code_t;
@@ -94,6 +95,8 @@ typedef struct scf_timer {
#define SCF_TIMER_VALUE_DSCP_BUSY 2000
/* DSCP interface callback timer value (20ms) */
#define SCF_TIMER_VALUE_DSCP_CALLBACK 20
+ /* DSCP INIT_REQ retry timer value (5ms) */
+#define SCF_TIMER_VALUE_DSCP_INIT 5000
/*
* Timer value convert macro