static void suni_hz(struct timer_list *timer) { struct suni_priv *walk; struct atm_dev *dev; struct k_sonet_stats *stats; for (walk = sunis; walk; walk = walk->next) { dev = walk->dev; stats = &walk->sonet_stats; PUT(0,MRI); /* latch counters */ udelay(1); ADD_LIMITED(section_bip,(GET(RSOP_SBL) & 0xff) | ((GET(RSOP_SBM) & 0xff) << 8)); ADD_LIMITED(line_bip,(GET(RLOP_LBL) & 0xff) | ((GET(RLOP_LB) & 0xff) << 8) | ((GET(RLOP_LBM) & 0xf) << 16)); ADD_LIMITED(path_bip,(GET(RPOP_PBL) & 0xff) | ((GET(RPOP_PBM) & 0xff) << 8)); ADD_LIMITED(line_febe,(GET(RLOP_LFL) & 0xff) | ((GET(RLOP_LF) & 0xff) << 8) | ((GET(RLOP_LFM) & 0xf) << 16)); ADD_LIMITED(path_febe,(GET(RPOP_PFL) & 0xff) | ((GET(RPOP_PFM) & 0xff) << 8)); ADD_LIMITED(corr_hcs,GET(RACP_CHEC) & 0xff); ADD_LIMITED(uncorr_hcs,GET(RACP_UHEC) & 0xff); ADD_LIMITED(rx_cells,(GET(RACP_RCCL) & 0xff) | ((GET(RACP_RCC) & 0xff) << 8) | ((GET(RACP_RCCM) & 7) << 16)); ADD_LIMITED(tx_cells,(GET(TACP_TCCL) & 0xff) | ((GET(TACP_TCC) & 0xff) << 8) | ((GET(TACP_TCCM) & 7) << 16)); } if (timer) mod_timer(&poll_timer,jiffies+HZ); }
static void stat_event(struct atm_dev *dev) { unsigned char events; events = GET(PCR); if (events & uPD98402_PFM_PFEB) ADD_LIMITED(path_febe,PFECB); if (events & uPD98402_PFM_LFEB) ADD_LIMITED(line_febe,LECCT); if (events & uPD98402_PFM_B3E) ADD_LIMITED(path_bip,B3ECT); if (events & uPD98402_PFM_B2E) ADD_LIMITED(line_bip,B2ECT); if (events & uPD98402_PFM_B1E) ADD_LIMITED(section_bip,B1ECT); }