Search Linux Wireless

Re: [PATCH] ath5k: Fix 64 bits TSF reading.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux