mirror of
https://github.com/torvalds/linux.git
synced 2024-12-12 22:23:55 +00:00
ath5k: Disable interrupts in ath5k_hw_get_tsf64
The code in ath5k_hw_get_tsf64() is time critical and will return wrong results if we get interrupted, so disable local interrupts. Signed-off-by: Bruno Randolf <br1@einfach.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
11f21df36c
commit
28df897a42
@ -495,6 +495,10 @@ u64 ath5k_hw_get_tsf64(struct ath5k_hw *ah)
|
||||
{
|
||||
u32 tsf_lower, tsf_upper1, tsf_upper2;
|
||||
int i;
|
||||
unsigned long flags;
|
||||
|
||||
/* This code is time critical - we don't want to be interrupted here */
|
||||
local_irq_save(flags);
|
||||
|
||||
/*
|
||||
* While reading TSF upper and then lower part, the clock is still
|
||||
@ -517,6 +521,8 @@ u64 ath5k_hw_get_tsf64(struct ath5k_hw *ah)
|
||||
tsf_upper1 = tsf_upper2;
|
||||
}
|
||||
|
||||
local_irq_restore(flags);
|
||||
|
||||
WARN_ON( i == ATH5K_MAX_TSF_READ );
|
||||
|
||||
return (((u64)tsf_upper1 << 32) | tsf_lower);
|
||||
|
Loading…
Reference in New Issue
Block a user