summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
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