summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorraghuram <none@none>2006-05-30 14:25:16 -0700
committerraghuram <none@none>2006-05-30 14:25:16 -0700
commitb16ac5e3f1746a8181f8128aae20bb62b347f8d8 (patch)
tree3982e83d0315875e22ed1680851d0a94193e1a9f /usr/src
parentdc4c1217e39177d051fb3b14236ddb405fcc609a (diff)
downloadillumos-joyent-b16ac5e3f1746a8181f8128aae20bb62b347f8d8.tar.gz
6409297 SCF driver adds the XSCF versioning function
6420272 DSCP connection not recovering on s10
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/sun4u/opl/io/scfd/scfconf.c4
-rw-r--r--usr/src/uts/sun4u/opl/io/scfd/scfdscp.c94
-rw-r--r--usr/src/uts/sun4u/opl/io/scfd/scfhandler.c68
-rw-r--r--usr/src/uts/sun4u/opl/io/scfd/scfops.c11
-rw-r--r--usr/src/uts/sun4u/opl/io/scfd/scfparam.c10
-rw-r--r--usr/src/uts/sun4u/opl/io/scfd/scftimer.c14
-rw-r--r--usr/src/uts/sun4u/opl/sys/scfd/scfdscp.h2
-rw-r--r--usr/src/uts/sun4u/opl/sys/scfd/scfparam.h10
-rw-r--r--usr/src/uts/sun4u/opl/sys/scfd/scfsys.h7
-rw-r--r--usr/src/uts/sun4u/opl/sys/scfd/scftimer.h1
10 files changed, 165 insertions, 56 deletions
diff --git a/usr/src/uts/sun4u/opl/io/scfd/scfconf.c b/usr/src/uts/sun4u/opl/io/scfd/scfconf.c
index c6e9e11646..4e68327421 100644
--- a/usr/src/uts/sun4u/opl/io/scfd/scfconf.c
+++ b/usr/src/uts/sun4u/opl/io/scfd/scfconf.c
@@ -71,9 +71,6 @@ extern int scf_dscp_ack_wait_time;
extern int scf_dscp_end_wait_time;
extern int scf_dscp_txbusy_time;
extern int scf_dscp_callback_time;
-extern int scf_shutdown_wait_time;
-extern int scf_poff_wait_time;
-extern int scf_halt_wait_time;
/*
@@ -355,6 +352,7 @@ scf_attach(dev_info_t *dip, ddi_attach_cmd_t cmd)
}
scf_chg_scf(statep, PATH_STAT_ACTIVE);
scf_comtbl.scf_pchg_event_sub = EVENT_SUB_PCHG_WAIT;
+ scf_comtbl.scf_domain_event_sub = EVENT_SUB_DOMAIN_WAIT;
scf_next_cmd_check(statep);
} else {
/* exists execute scf device */
diff --git a/usr/src/uts/sun4u/opl/io/scfd/scfdscp.c b/usr/src/uts/sun4u/opl/io/scfd/scfdscp.c
index f52372f40b..c25d658402 100644
--- a/usr/src/uts/sun4u/opl/io/scfd/scfdscp.c
+++ b/usr/src/uts/sun4u/opl/io/scfd/scfdscp.c
@@ -63,7 +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);
+void scf_dscp_init_tout(uint8_t id);
/*
* Interrupt function : from scf_dscp_intr()
@@ -385,6 +385,9 @@ scf_mb_fini(target_id_t target_id, mkey_t mkey)
/* Change main status (D0) */
SCF_SET_STATUS(mainp, SCF_ST_CLOSE_TXEND_RECV_WAIT);
+ /* INIT_REQ retry timer stop */
+ scf_timer_stop(mainp->timer_code);
+
/* TxEND(FINI) receive wait */
SC_DBG_DRV_TRACE(TC_W_SIG, __LINE__, &mainp->fini_cv,
sizeof (kcondvar_t));
@@ -1447,6 +1450,13 @@ scf_dscp_init(void)
mainp->rd_last = (uint16_t)(mainp->rd_maxcount - 1);
mainp->rd_put = 0;
mainp->rd_get = 0;
+
+ /* Set DSCP INIT_REQ retry timer code */
+ if (mainp->id == MBIF_DSCP) {
+ mainp->timer_code = SCF_TIMERCD_DSCP_INIT;
+ } else {
+ mainp->timer_code = SCF_TIMERCD_DKMD_INIT;
+ }
}
/* Initialize success flag ON */
@@ -1516,6 +1526,7 @@ scf_dscp_fini(void)
scf_timer_stop(SCF_TIMERCD_DSCP_CALLBACK);
scf_timer_stop(SCF_TIMERCD_DSCP_BUSY);
scf_timer_stop(SCF_TIMERCD_DSCP_INIT);
+ scf_timer_stop(SCF_TIMERCD_DKMD_INIT);
/* All DSC buffer release */
scf_dscp_dscbuff_free_all();
@@ -1763,7 +1774,6 @@ 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");
}
@@ -2184,46 +2194,50 @@ scf_dscp_callback_tout(void)
/*
* scf_dscp_init_tout()
*
- * Description: INIT_REQ retray timeout performs TxREQ transmission again.
+ * Description: INIT_REQ retry timeout performs TxREQ transmission again.
*
*/
void
-scf_dscp_init_tout(void)
+scf_dscp_init_tout(uint8_t id)
{
#undef SCF_FUNC_NAME
#define SCF_FUNC_NAME "scf_dscp_init_tout() "
+ scf_dscp_main_t *mainp; /* Main table address */
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;
- }
+ /* Get main table address */
+ mainp = scf_dscp_id2mainp(id);
- /* 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];
+ /* Get TxDSC address */
+ dsc_p = &scf_dscp_comtbl.tx_dscp[scf_dscp_comtbl.tx_put];
+
+ /* Make Tx descriptor : INIT_REQ */
+ dsc_p->dinfo.base.c_flag = DSC_FLAG_DEFAULT;
+ dsc_p->dinfo.base.offset = DSC_OFFSET_NOTHING;
+ dsc_p->dinfo.base.length = 0;
+ dsc_p->dinfo.base.dscp_datap = NULL;
+ dsc_p->dinfo.bdcr.id = mainp->id & DSC_CNTL_MASK_ID;
+ dsc_p->dinfo.bdcr.code = DSC_CNTL_INIT_REQ;
+
+ /* Update Tx descriptor offset */
+ if (scf_dscp_comtbl.tx_put == scf_dscp_comtbl.tx_last) {
+ scf_dscp_comtbl.tx_put = scf_dscp_comtbl.tx_first;
} else {
- /* Get local data TxDSC address */
- dsc_p = &scf_dscp_comtbl.tx_dscp[scf_dscp_comtbl.tx_local];
+ scf_dscp_comtbl.tx_put++;
}
- /* Check TxDSC status */
- if (dsc_p->status == SCF_TX_ST_TXREQ_SEND_WAIT) {
- /* TxDSC status (SB2) */
- /* Call send matrix */
- scf_dscp_send_matrix();
- }
+ /* Update Tx descriptor count */
+ scf_dscp_comtbl.tx_dsc_count++;
-/*
- * END_dscp_init_tout
- */
-END_dscp_init_tout:
+ /* Change TxDSC status (SB2) */
+ SCF_SET_DSC_STATUS(dsc_p, SCF_TX_ST_TXREQ_SEND_WAIT);
+
+ /* Call send matrix */
+ scf_dscp_send_matrix();
SCFDBGMSG(SCF_DBGFLAG_DSCP, SCF_FUNC_NAME ": end");
}
@@ -2519,15 +2533,8 @@ scf_dscp_txend_recv(scf_state_t *statep)
/* 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;
+ /* INIT_REQ retry timer start */
+ scf_timer_start(mainp->timer_code);
}
break;
}
@@ -2618,15 +2625,8 @@ scf_dscp_txend_recv(scf_state_t *statep)
/* 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;
+ /* INIT_REQ retry timer start */
+ scf_timer_start(mainp->timer_code);
}
break;
}
@@ -3577,11 +3577,6 @@ 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;
@@ -4310,6 +4305,9 @@ scf_dscp_event_queue(scf_dscp_main_t *mainp, scf_event_t mevent)
/* Check DISC ERROR event */
if (mevent == SCF_MB_DISC_ERROR) {
+ /* INIT_REQ retry timer stop */
+ scf_timer_stop(mainp->timer_code);
+
/* TxDSC buffer release */
scf_dscp_txdscbuff_free(mainp);
diff --git a/usr/src/uts/sun4u/opl/io/scfd/scfhandler.c b/usr/src/uts/sun4u/opl/io/scfd/scfhandler.c
index e926481551..7d7fbb3df8 100644
--- a/usr/src/uts/sun4u/opl/io/scfd/scfhandler.c
+++ b/usr/src/uts/sun4u/opl/io/scfd/scfhandler.c
@@ -1275,6 +1275,40 @@ scf_intr_cmdcmp_driver(scf_state_t *statep, struct scf_cmd *scfcmdp)
break;
}
break;
+
+ case CMD_DOMAIN_INFO: /* Domain info command */
+ /* Check command return value */
+ if (scfcmdp->stat0 != NORMAL_END) {
+ switch (scfcmdp->stat0) {
+ case BUF_FUL:
+ case RCI_BUSY:
+ case E_NOT_SUPPORT:
+ case E_PARAM:
+ case E_RCI_ACCESS:
+ case RCI_NS:
+ scf_comtbl.scf_domain_event_sub =
+ EVENT_SUB_NONE;
+ break;
+
+ default:
+ /* INTERFACE */
+ /* E_SCFC_NOPATH */
+ /* Rx DATA SUM ERROR */
+ scf_comtbl.scf_domain_event_sub =
+ EVENT_SUB_DOMAIN_WAIT;
+
+ /* Set command retry send flag */
+ scf_comtbl.scf_cmd_resend_req |= RESEND_DOMAIN;
+ break;
+ }
+ break;
+ }
+
+ /* Set XSCF version */
+ scf_xscf_comif_version = (ushort_t)(statep->reg_rdata[3] >> 8);
+
+ scf_comtbl.scf_domain_event_sub = EVENT_SUB_NONE;
+ break;
}
SCFDBGMSG(SCF_DBGFLAG_SYS, SCF_FUNC_NAME ": end");
@@ -1692,6 +1726,8 @@ scf_status_change(scf_state_t *statep)
scf_comtbl.scf_cmd_exec_flag = 0;
}
+ scf_comtbl.scf_domain_event_sub = EVENT_SUB_DOMAIN_WAIT;
+
/* Check Alive check exec */
if (scf_comtbl.alive_running == SCF_ALIVE_START) {
scf_comtbl.scf_alive_event_sub =
@@ -1940,6 +1976,28 @@ scf_next_cmd_check(scf_state_t *statep)
}
}
+ if ((scf_comtbl.scf_cmd_exec_flag == 0) &&
+ (scf_comtbl.scf_domain_event_sub == EVENT_SUB_DOMAIN_WAIT)) {
+ /* Send Option disp command */
+ scfcmdp->cmd = CMD_DOMAIN_INFO;
+ scfcmdp->subcmd = SUB_OPTION_DISP;
+ bzero((void *)&scf_comtbl.scf_sbuf[0], SCF_S_CNT_16);
+ scf_comtbl.scf_sbuf[13] =
+ (uchar_t)(scf_scfd_comif_version >> 8);
+ scf_comtbl.scf_sbuf[14] = (uchar_t)scf_scfd_comif_version;
+ scfcmdp->sbuf = &scf_comtbl.scf_sbuf[0];
+ scfcmdp->scount = SCF_S_CNT_15;
+ scfcmdp->rbuf = &scf_comtbl.scf_rbuf[0];
+ scfcmdp->rcount = SCF_S_CNT_15;
+ scfcmdp->flag = SCF_USE_SSBUF;
+ if ((scf_comtbl.scf_cmd_resend_req & RESEND_DOMAIN) != 0) {
+ scf_comtbl.scf_cmd_resend_flag = 1;
+ scf_comtbl.scf_cmd_resend_req &= ~RESEND_DOMAIN;
+ }
+ scf_i_send_cmd(scfcmdp, statep);
+ scf_comtbl.scf_domain_event_sub = EVENT_SUB_DOMAIN_EXEC;
+ }
+
if (scf_comtbl.scf_cmd_exec_flag == 0) {
/* Check alive check request */
if (scf_comtbl.scf_alive_event_sub == EVENT_SUB_ALST_WAIT) {
@@ -2223,6 +2281,8 @@ scf_online_wait_tout(void)
scf_comtbl.scf_cmd_exec_flag = 0;
}
+ scf_comtbl.scf_domain_event_sub = EVENT_SUB_DOMAIN_WAIT;
+
/* Next command send check */
scf_next_cmd_check(statep);
@@ -3447,6 +3507,14 @@ scf_cmdwait_status_set(void)
break;
}
+ /* Set command wait status */
+ if (scf_comtbl.scf_domain_event_sub == EVENT_SUB_DOMAIN_EXEC) {
+ scf_comtbl.scf_domain_event_sub = EVENT_SUB_DOMAIN_WAIT;
+
+ /* Set command retry send flag */
+ scf_comtbl.scf_cmd_resend_req |= RESEND_DOMAIN;
+ }
+
if (scf_comtbl.scf_cmd_exec_flag) {
if (scf_comtbl.cmd_end_wait) {
/* Set command retry send flag */
diff --git a/usr/src/uts/sun4u/opl/io/scfd/scfops.c b/usr/src/uts/sun4u/opl/io/scfd/scfops.c
index f671679beb..dd07f4dd3e 100644
--- a/usr/src/uts/sun4u/opl/io/scfd/scfops.c
+++ b/usr/src/uts/sun4u/opl/io/scfd/scfops.c
@@ -888,15 +888,19 @@ scf_ioc_optiondisp(intptr_t arg, int mode, int *rval_p, int u_mode)
int ret = 0;
struct scf_cmd scf_cmd;
scfoption_t scfoption;
+ scf_short_buffer_t sbuf;
SCFDBGMSG(SCF_DBGFLAG_IOCTL, SCF_FUNC_NAME ": start");
bzero((void *)&scfoption, sizeof (scfoption_t));
+ bzero((void *)&sbuf.b[0], SCF_S_CNT_16);
scf_cmd.cmd = CMD_DOMAIN_INFO;
scf_cmd.subcmd = SUB_OPTION_DISP;
- scf_cmd.sbuf = 0;
- scf_cmd.scount = 0;
+ sbuf.b[13] = (uchar_t)(scf_scfd_comif_version >> 8);
+ sbuf.b[14] = (uchar_t)scf_scfd_comif_version;
+ scf_cmd.sbuf = &sbuf.b[0];
+ scf_cmd.scount = SCF_S_CNT_15;
scf_cmd.rbuf = &scfoption.rbuf[0];
scf_cmd.rcount = SCF_S_CNT_15;
scf_cmd.flag = SCF_USE_SSBUF;
@@ -908,6 +912,9 @@ scf_ioc_optiondisp(intptr_t arg, int mode, int *rval_p, int u_mode)
mutex_exit(&scf_comtbl.all_mutex);
if (ret == 0) {
+ /* Set XSCF version */
+ bcopy((void *)&scfoption.rbuf[13],
+ (void *)&scf_xscf_comif_version, 2);
if (ddi_copyout((void *)&scfoption, (void *)arg,
sizeof (scfoption_t), mode) != 0) {
diff --git a/usr/src/uts/sun4u/opl/io/scfd/scfparam.c b/usr/src/uts/sun4u/opl/io/scfd/scfparam.c
index d1cadc0598..474d49837a 100644
--- a/usr/src/uts/sun4u/opl/io/scfd/scfparam.c
+++ b/usr/src/uts/sun4u/opl/io/scfd/scfparam.c
@@ -113,6 +113,16 @@ caddr_t scf_avail_cmd_reg_vaddr = 0; /* SCF Command register address */
int scf_dm_secure_mode = 0; /* secure mode */
/*
+ * SCF driver version interface
+ */
+ushort_t scf_scfd_comif_version = 0x0000; /* SCF driver version */
+
+/*
+ * XSCF version interface
+ */
+ushort_t scf_xscf_comif_version = 0xffff; /* XSCF version */
+
+/*
* ioctl control value and flag
*/
int scf_save_hac_flag = 0; /* Host address disp flag */
diff --git a/usr/src/uts/sun4u/opl/io/scfd/scftimer.c b/usr/src/uts/sun4u/opl/io/scfd/scftimer.c
index 3a20c808d4..b9224a5cd1 100644
--- a/usr/src/uts/sun4u/opl/io/scfd/scftimer.c
+++ b/usr/src/uts/sun4u/opl/io/scfd/scftimer.c
@@ -34,6 +34,7 @@
#include <sys/sunddi.h>
#include <sys/scfd/scfparam.h>
+#include <sys/scfd/scfdscp.h>
/*
* Timer control table and control flag
@@ -88,7 +89,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);
+extern void scf_dscp_init_tout(uint8_t id);
/*
* scf_timer_init()
@@ -152,6 +153,10 @@ scf_timer_init(void)
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;
+ scf_timer[SCF_TIMERCD_DKMD_INIT].value = scf_dscp_init_time;
+ scf_timer[SCF_TIMERCD_DKMD_INIT].tbl[0].code = SCF_TIMERCD_DKMD_INIT;
+ scf_timer[SCF_TIMERCD_DKMD_INIT].tbl[1].code = SCF_TIMERCD_DKMD_INIT;
+
SCFDBGMSG(SCF_DBGFLAG_TIMER, SCF_FUNC_NAME ": end");
}
@@ -446,7 +451,12 @@ scf_tout(void *arg)
case SCF_TIMERCD_DSCP_INIT:
/* DSCP INIT_REQ retry timeout */
- scf_dscp_init_tout();
+ scf_dscp_init_tout(MBIF_DSCP);
+ break;
+
+ case SCF_TIMERCD_DKMD_INIT:
+ /* DKMD INIT_REQ retry timeout */
+ scf_dscp_init_tout(MBIF_DKMD);
break;
default:
diff --git a/usr/src/uts/sun4u/opl/sys/scfd/scfdscp.h b/usr/src/uts/sun4u/opl/sys/scfd/scfdscp.h
index 1d8c8cc740..15347392b8 100644
--- a/usr/src/uts/sun4u/opl/sys/scfd/scfdscp.h
+++ b/usr/src/uts/sun4u/opl/sys/scfd/scfdscp.h
@@ -162,6 +162,8 @@ typedef struct scf_dscp_main {
uint16_t rd_last; /* Recv data last */
uint16_t rd_put; /* Recv data put */
uint16_t rd_get; /* Recv data get */
+
+ uint_t timer_code; /* DSCP INIT_REQ timer code */
} scf_dscp_main_t;
/*
diff --git a/usr/src/uts/sun4u/opl/sys/scfd/scfparam.h b/usr/src/uts/sun4u/opl/sys/scfd/scfparam.h
index b5f1dd7bdd..457cc5cda8 100644
--- a/usr/src/uts/sun4u/opl/sys/scfd/scfparam.h
+++ b/usr/src/uts/sun4u/opl/sys/scfd/scfparam.h
@@ -116,6 +116,16 @@ extern caddr_t scf_avail_cmd_reg_vaddr; /* SCF Command register address */
extern int scf_dm_secure_mode; /* secure mode */
/*
+ * SCF driver version interface
+ */
+extern ushort_t scf_scfd_comif_version; /* SCF driver version */
+
+/*
+ * XSCF version interface
+ */
+extern ushort_t scf_xscf_comif_version; /* XSCF version */
+
+/*
* ioctl control value and flag
*/
extern int scf_save_hac_flag; /* Host address disp flag */
diff --git a/usr/src/uts/sun4u/opl/sys/scfd/scfsys.h b/usr/src/uts/sun4u/opl/sys/scfd/scfsys.h
index df943a6826..3e4e4742a4 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.6"
+#define SCF_DRIVER_VERSION "SCF driver 1.7"
#define SCF_DRIVER_NAME "scfd"
#define SCF_DEVICE_NAME "scfc"
@@ -732,6 +732,7 @@ typedef struct scf_comtbl {
uint_t scf_shut_event_sub; /* SHUTDOWN event status */
uint_t scf_alive_event_sub; /* ALIVE event status */
uint_t scf_report_event_sub; /* REPORT processing status */
+ uint_t scf_domain_event_sub; /* Domain processing status */
/* SCF command control */
scf_cmd_t *scf_cmdp; /* SCF command table address */
@@ -839,6 +840,9 @@ typedef struct scf_comtbl {
#define EVENT_SUB_REPORT_RUN_EXEC 2 /* Report (runnning) send exec */
#define EVENT_SUB_REPORT_SHUT_WAIT 3 /* Report (shutdown) send wait */
#define EVENT_SUB_REPORT_SHOT_EXEC 4 /* Report (shutdown) send exec */
+/* (scf_domain_event_sub) Domain processing status */
+#define EVENT_SUB_DOMAIN_WAIT 1 /* Domain info command wait */
+#define EVENT_SUB_DOMAIN_EXEC 2 /* Domain info command exec */
/* (scf_last_report) define */
#define NOT_SEND_REPORT 0xffffffff /* Not report send */
@@ -852,6 +856,7 @@ typedef struct scf_comtbl {
#define RESEND_ALSP (1 << 5) /* Alive check command (stop) */
#define RESEND_REPORT_RUN (1 << 6) /* Report command (system running) */
#define RESEND_REPORT_SHUT (1 << 7) /* Report command (shutdown start) */
+#define RESEND_DOMAIN (1 << 8) /* Domain info command */
#ifdef __cplusplus
}
diff --git a/usr/src/uts/sun4u/opl/sys/scfd/scftimer.h b/usr/src/uts/sun4u/opl/sys/scfd/scftimer.h
index 1314deb5c9..6869860d93 100644
--- a/usr/src/uts/sun4u/opl/sys/scfd/scftimer.h
+++ b/usr/src/uts/sun4u/opl/sys/scfd/scftimer.h
@@ -46,6 +46,7 @@ typedef enum {
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_DKMD_INIT, /* DKMD INIT_REQ retry timer */
SCF_TIMERCD_MAX /* Max timer code */
} scf_tm_code_t;