kernels/linux-2.4.0/drivers/net/wan/sdla_fr.c
/*============================================================================
 * Timer interrupt handler.
 FIXME: update comments as we modify the code
 * The timer interrupt is used for three purposes:
 *    1) Processing udp calls from 'fpipemon'.
 *    2) Processing update calls from /proc file system
 *    2) Reading board-level statistics for updating the proc file system.
 *    3) Sending inverse ARP request packets.
 */
Timer interrupt handler.
FIXME: update comments as we modify the code
The timer interrupt is used for three purposes:
1) Processing udp calls from 'fpipemon'.
2) Processing update calls from /proc file system
2) Reading board-level statistics for updating the proc file system.
3) Sending inverse ARP request packets.
Timer interrupt handler . FIXME : update comments as we modify the code The timer interrupt is used for three purposes : 1 ) Processing udp calls from ' fpipemon ' . 2 ) Processing update calls from / proc file system 2 ) Reading board - level statistics for updating the proc file system . 3 ) Sending inverse ARP request packets .
static void timer_intr(sdla_t *card)
{
	fr508_flags_t* flags = card->flags;
        if(card->u.f.timer_int_enabled & TMR_INT_ENABLED_UDP) {
		if(card->u.f.udp_type == UDP_FPIPE_TYPE) {
                    	if(process_udp_mgmt_pkt(card)) {
		                card->u.f.timer_int_enabled &=
					~TMR_INT_ENABLED_UDP;
			}
		}
        }
	if(card->u.f.timer_int_enabled & TMR_INT_ENABLED_UPDATE) {
		fr_get_err_stats(card);
		fr_get_stats(card);
		card->u.f.update_comms_stats = 0;
		card->u.f.timer_int_enabled &= ~TMR_INT_ENABLED_UPDATE;
	}
        if(!card->u.f.timer_int_enabled)
                flags->imask &= ~FR_INTR_TIMER;
}
static void timer_intr ( sdla_t * card ) { fr508_flags_t * flags = card -> flags ; if ( card -> u . f . timer_int_enabled & TMR_INT_ENABLED_UDP ) { if ( card -> u . f . udp_type == UDP_FPIPE_TYPE ) { if ( process_udp_mgmt_pkt ( card ) ) { card -> u . f . timer_int_enabled &= ~ TMR_INT_ENABLED_UDP ; } } } if ( card -> u . f . timer_int_enabled & TMR_INT_ENABLED_UPDATE ) { fr_get_err_stats ( card ) ; fr_get_stats ( card ) ; card -> u . f . update_comms_stats = 0 ; card -> u . f . timer_int_enabled &= ~ TMR_INT_ENABLED_UPDATE ; } if ( ! card -> u . f . timer_int_enabled ) flags -> imask &= ~ FR_INTR_TIMER ; }
Timer interrupt handler.
Timer interrupt handler .
//FIXME: Fix the dynamic IP addressing /*
goto L4;

	// Used to send inarp request at given interval 
	if (card->wandev.state == WAN_CONNECTED) {
        	int num_remaining = 0;

		dev = card->wandev.dev;
		while (dev) {
                	fr_channel_t *chan = dev->priv;

                        if (chan->inarp == INARP_REQUEST &&
                        	chan->state == WAN_CONNECTED) {
                                num_remaining++;

                                if ((jiffies - chan->inarp_tick) > (chan->inarp_interval * HZ)) {
                                	send_inarp_request(card,dev);
                                	chan->inarp_tick = jiffies;
                                }
			}
			dev = chan->slave;
		}
		if (!num_remaining) {   // no more to process 
                        flags->imask &= ~FR_INTR_TIMER;
		}
	}
L4:
	;
*/