/* Timer function called every second to gather statistics from the 77105. This is done because the h/w registers will overflow if not read at least once per second. The kernel's stats are much higher precision. Also, having a separate copy of the stats allows implementation of an ioctl which gathers the stats  */
static void idt77105_stats_timer_func(unsigned long)
/* Timer function called every second to gather statistics from the 77105. This is done because the h/w registers will overflow if not read at least once per second. The kernel's stats are much higher precision. Also, having a separate copy of the stats allows implementation of an ioctl which gathers the stats  */
static void idt77105_stats_timer_func(unsigned long)
{
	struct idt77105_priv *walk;
	struct atm_dev *dev;
	struct idt77105_stats *stats;
        DPRINTK("IDT77105 gathering statistics\n");
	for (walk = idt77105_all; walk; walk = walk->next) {
		dev = walk->dev;
		stats = &walk->stats;
                stats->symbol_errors += get_counter(dev, IDT77105_CTRSEL_SEC);
                stats->tx_cells += get_counter(dev, IDT77105_CTRSEL_TCC);
                stats->rx_cells += get_counter(dev, IDT77105_CTRSEL_RCC);
                stats->rx_hec_errors += get_counter(dev, IDT77105_CTRSEL_RHEC);
	}
        if (!start_timer) mod_timer(&stats_timer,jiffies+IDT77105_STATS_TIMER_PERIOD);
}