On Wed, Sep 15, 2010 at 10:58 AM, Bruno Randolf <br1@xxxxxxxxxxx> wrote: > On Wed September 15 2010 08:07:36 Jonathan Guerin wrote: >> I'm capturing using a third-party station. I've had to use a Madwifi >> station, as ath5k throws a lot of spurious timestamps up, which make >> calculating this very, very difficult. > > ah, that's interesting and something we should check, too... > >> Actually, I've found that they were exactly one slot time negative >> (give or take 1us). That said, I was doing these calculations using >> the 802.11a OFDM spec timings. I looked at the driver and realised >> that SIFS is actually being initialised to 14us, whereas it should be >> set to 16us. This will also affect DIFS. Once I take these into >> consideration, they come up as approximately 4-5us out. Now that I >> think about it, it could make sense. > > hmm, we have a function ath5k_hw_get_default_sifs() which returns 16 for > 802.11a, but it's not used for setting the IFS... > > also i think current ath5k_hw_reset_tx_queue() is buggy and sets the AIFS > wrongly. it uses ah->ah_aifs + tq->tqi_aifs which is 2 + AR5K_TXQ_USEDEFAULT > which results in 2 + (-1). that does not make sense to me and i will post a > patch fixing up some of that confusion (but not the SIFS issue) today. I'm getting these values from: initval.c /* Initial mode-specific settings for AR5212 (Written before ar5212_ini) */ static const struct ath5k_ini_mode ar5212_ini_mode_start[] = { <...> { AR5K_DCU_GBL_IFS_SIFS, /* a/XR aTurbo b g (DYN) gTurbo */ { 0x00000230, 0x000001e0, 0x000000b0, 0x00000160, 0x000001e0 } }, { AR5K_DCU_GBL_IFS_SLOT, { 0x00000168, 0x000001e0, 0x000001b8, 0x0000018c, 0x000001e0 } }, <...> The IFS_SLOT time is correct: 0x168/0x28 (clock multiplier) = 9us SIFS is coming up short: ox230/0x28 = 14us I assume that the card calculates the DIFS from these two values, as described in Section 9.2.10 DCF timing relations in the spec? By the way, I may be completely wrong about some of these things, I'm just going off the understanding I have regarding the register values. > > bruno > Thanks for looking into this! Jonathan -- 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