PB
#define PB_D(x) PB(x) /* This is specific to port B only */
#define PB_D0 PB(0) /* Use D0 as PB(0) */
#define PB_D1 PB(1) /* Use D1 as PB(1) */
#define PB_D2 PB(2) /* Use D2 as PB(2) */
#define PB_D3 PB(3) /* Use D3 as PB(3) */
#define PB_D4 PB(4) /* Use D4 as PB(4) */
#define PB_D5 PB(5) /* Use D5 as PB(5) */
#define PB_D6 PB(6) /* Use D6 as PB(6) */
#define PB_D7 PB(7) /* Use D7 as PB(7) */
smc->y[PB].scrub = 0 ;
smc->y[PB].cem_pst = CEM_PST_DOWN ;
smc->y[PB].pc_mode != PM_TREE)
if ( !THRU_ENABLED(smc) && smc->y[PB].cf_join ) {
if (np != PA && np != PB) {
smc->y[PB].pc_mode == PM_PEER) ||
smc->mib.p[PB].fddiPORTCurrentPath = MIB_PATH_ISOLATED ;
smc->mib.p[PB].fddiPORTMACPlacement = 0 ;
smc->y[PB].cf_join || smc->y[PB].cf_loop)) {
if ((smc->y[PB].cem_pst == CEM_PST_UP && smc->y[PB].cf_join &&
!smc->y[PB].wc_flag) || smc->y[PB].cf_loop) {
smc->mib.p[PB].fddiPORTCurrentPath = MIB_PATH_ISOLATED ;
smc->mib.p[PB].fddiPORTMACPlacement = 0 ;
else if ( (smc->y[PB].cf_loop && smc->y[PA].cf_join &&
((smc->y[PB].cf_loop ||
(smc->y[PB].cf_join &&
smc->y[PB].cem_pst == CEM_PST_UP)) &&
smc->y[PB].pc_mode == PM_TREE))) {
smc->y[PA].pc_mode == PM_PEER && smc->y[PB].cf_join &&
smc->y[PB].cem_pst == CEM_PST_UP &&
smc->y[PB].pc_mode == PM_PEER) {
smc->y[PB].scrub = TRUE ;
smc->y[PB].cf_join &&
smc->y[PB].cem_pst == CEM_PST_UP &&
smc->y[PB].pc_mode == PM_PEER) {
smc->y[PB].scrub = TRUE ;
smc->mib.p[PB].fddiPORTCurrentPath = MIB_PATH_CONCATENATED ;
smc->mib.p[PB].fddiPORTMACPlacement = INDEX_MAC ;
if (smc->y[PB].cf_loop) {
if (smc->y[PB].cf_join) {
if ( !smc->y[PB].cf_join && !smc->y[PB].cf_loop ) {
smc->y[PB].cf_join && smc->y[PB].pc_mode == PM_PEER) {
smc->y[PB].scrub = TRUE ;
smc->y[PB].cf_join && smc->y[PB].pc_mode == PM_PEER) {
smc->y[PB].scrub = TRUE ;
smc->y[PB].cf_join && smc->y[PB].pc_mode == PM_PEER) {
smc->y[PB].scrub = TRUE ;
smc->mib.p[PB].fddiPORTCurrentPath = MIB_PATH_THRU ;
smc->mib.p[PB].fddiPORTMACPlacement = INDEX_MAC ;
if (smc->y[PB].wc_flag || !smc->y[PB].cf_join) {
smc->y[PB].scrub = TRUE ;
smc->y[PB].scrub = TRUE ;
smc->mib.p[PB].fddiPORTCurrentPath = MIB_PATH_THRU ;
smc->mib.p[PB].fddiPORTMACPlacement = 0 ;
if (!smc->y[PB].cf_join || smc->y[PB].wc_flag) {
smc->y[PB].scrub = TRUE ;
if (smc->y[PA].cf_loop || smc->y[PB].cf_loop) {
if (smc->y[PA].cf_join || smc->y[PB].cf_join) {
!smc->y[PB].cf_join && !smc->y[PB].cf_loop) {
smc->mib.fddiSMTCF_State == SC5_THRU_B) ? PB : PA;
smc->mib.fddiSMTCF_State == SC4_THRU_A) ? PB : PA;
0,0, 0,RES_PORT, 0,PB + INDEX_PORT, 0,PATH_ISO
0,0, 0,RES_PORT, 0,PB + INDEX_PORT, 0,PATH_ISO
0,0, 0,RES_PORT, 0,PB + INDEX_PORT, 0,PATH_PRIM,
0,0, 0,RES_PORT, 0,PB + INDEX_PORT, 0,PATH_PRIM
u_short st = inpw(PLC(PB,PL_INTR_EVENT)) ;
plc_irq(smc,PB,st) ;
smc->y[PB].pmd_type[PMD_SK_CONN] = ConnectorType ;
smc->y[PB].pmd_type[PMD_SK_PMD ] = PmdType ;
phy = &smc->y[PB] ;
ls_b = sm_pm_get_ls(smc,PB) ;
else if ((smc->e.trace_prop & ENTITY_BIT(ENTITY_PHY(PB))) &&
port_out != PB) {
DB_PCMN(1, "LEM %c :", phy->np == PB ? 'B' : 'A');
if ((np == PB) || ((np == PA) &&
(smc->y[PB].mib->fddiPORTConnectState !=
if (np == PB)
if (np == PB)
if (smc->y[PB].twisted && (smc->y[PB].mib->fddiPORTPCMState == PC8_ACTIVE))
(np == PB) ? TB : TM ;
smc->y[PB].mib->fddiPORTPCMState = PC0_OFF ;
mib->fddiPORTMy_Type = (np == PB) ? TB : TA ;
CLEAR(PLC(PB,PL_CNTRL_B),PL_CONFIG_CNTRL) ;
CLEAR(PLC(PB,PL_CNTRL_A),PL_SC_REM_LOOP) ;
if (smc->s.sas == SMT_DAS && np == PB &&
smc->y[PB].pc_mode == PM_TREE)) {
if (smc->y[PB].pc_mode == PM_PEER) {
queue_event(smc,EVENT_PCM+PB,PC_DISABLE) ;