Johannes Berg a écrit :
> On Sun, 2010-02-28 at 23:08 +0100, Benoit Papillault wrote:
>
>
>> - u64 tsf = ath5k_hw_reg_read(ah, AR5K_TSF_U32);
>> + u32 tsf_lower, tsf_upper;
>> +
>> + /*
>> + * While reading TSF upper and then lower part, the clock is still
>> + * counting so the lower part can rollover just after reading the
>> + * upper part. In this case, we expect the lower part to be quite
>> + * small (let's say less than 100us) and we would just need to read
>> + * the upper part again to get the correct value.
>> + *
>> + * Tested on AR2425 (AR5001)
>> + */
>> +
>> + tsf_upper = ath5k_hw_reg_read(ah, AR5K_TSF_U32);
>> + tsf_lower = ath5k_hw_reg_read(ah, AR5K_TSF_L32);
>> +
>> + if (tsf_lower < 100)
>> + tsf_upper = ath5k_hw_reg_read(ah, AR5K_TSF_U32);
>>
>
> You would typically do
>
> do {
> read upper 1
> read lower
> read upper 2
> } while (upper 1 != upper 2)
>
> or so but that obviously incurs another read in most cases.
>
> johannes
>
>
Indeed. I'll redo the patch. Derek has convinced me that accuracy is
sometimes more important than few register reads. So forget this patch.
Regards,
Benoit
_______________________________________________
ath5k-devel mailing list
[email protected]
https://lists.ath5k.org/mailman/listinfo/ath5k-devel