diff options
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/uts/sun4u/opl/io/oplmsu/oplmsu_ioctl_lrp.c | 16 | ||||
-rw-r--r-- | usr/src/uts/sun4u/opl/io/scfd/scfdscp.c | 179 | ||||
-rw-r--r-- | usr/src/uts/sun4u/opl/io/scfd/scfops.c | 78 | ||||
-rw-r--r-- | usr/src/uts/sun4u/opl/io/scfd/scftimer.c | 12 | ||||
-rw-r--r-- | usr/src/uts/sun4u/opl/sys/scfd/opcio.h | 8 | ||||
-rw-r--r-- | usr/src/uts/sun4u/opl/sys/scfd/scfreg.h | 1 | ||||
-rw-r--r-- | usr/src/uts/sun4u/opl/sys/scfd/scfsys.h | 4 | ||||
-rw-r--r-- | usr/src/uts/sun4u/opl/sys/scfd/scftimer.h | 7 |
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 |