[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
missing timer interrupt
I am trying to put IPSec security freeware FreeS/WAN
on etrax board. This freeware patches the kernel by
adding a virtual network driver(using register_netdev())
and routing all network traffic thru that driver. This
network device driver then does an encryption/decryption
on top of IP layer to achieve security.
Unfortunately, heavy computaion in (de)encryption is having
a bad effect - when there is a lot of network traffic
(note that every network packet is encrypted/decrypted),
my system clock slows down. When the traffic gets low,
the clock runs normal.
I digged a lot about this in kernel books and source code -
1. In linux 2.0.38, are bottom halves atomic w.r.t. each
other? Encryption is called in net_bh() bottom half
(via dev_transmit()). Is it possible that when a
bottom half net_bh() is running, in some way, I am
sometimes missing the timer interrupt. Ideally it
shouldnt happen :-)
2. Why is timer_interrupt() shared(SA_SHIRQ) with "serial
dma timeout"(what is that, by the way?) in etrax-uclinux?
3. Any other possible guesses?
4. Where are interrupt priorities mentioned in linux
kernel? In request_irq(), you assign a number to
IRQ, make it shared+fast/slow, then add a bottom
half to ISR. But can I someway assign a priority
level to an interrupt? In a similar thought, can
I someway make bottom half of one interrupt at a
higher priority than other one, if necessary?
Prabhat Avasare IMEC (DESICS) email: firstname.lastname@example.org
Kapeldreef 75 Tel: +32-16-281525
B3001 Leuven Fax: +32-16-281515