Re: [ath5k-devel] [PATCH 5/7] ath5k: remove ts_retry from ath5k_tx_status
Hi, Isn't there any chance in which info-status.rates[x].count has different retry-count value from the one which the firmware actually did. For example, driver requests invalid value of retry count and firmware rejects it (take other value). no such chance ? Thanks Takayuki Kaiso Reusing the configured retry counts from the skb cb is more efficient than reloading the data from uncached memory. Replace ts_longretry (unused) with ts_final_retry which contains the retry count for the final rate only Signed-off-by: Felix Fietkaun...@openwrt.org --- drivers/net/wireless/ath/ath5k/ath5k.h |3 +- drivers/net/wireless/ath/ath5k/base.c | 11 - drivers/net/wireless/ath/ath5k/desc.c | 34 ++- 3 files changed, 13 insertions(+), 35 deletions(-) diff --git a/drivers/net/wireless/ath/ath5k/ath5k.h b/drivers/net/wireless/ath/ath5k/ath5k.h index aa588a0..fcaf4ed 100644 --- a/drivers/net/wireless/ath/ath5k/ath5k.h +++ b/drivers/net/wireless/ath/ath5k/ath5k.h @@ -452,11 +452,10 @@ struct ath5k_tx_status { u16 ts_seqnum; u16 ts_tstamp; u8 ts_status; - u8 ts_retry[4]; u8 ts_final_idx; + u8 ts_final_retry; s8 ts_rssi; u8 ts_shortretry; - u8 ts_longretry; u8 ts_virtcol; u8 ts_antenna; }; diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c index 753662f..1a561b8 100644 --- a/drivers/net/wireless/ath/ath5k/base.c +++ b/drivers/net/wireless/ath/ath5k/base.c @@ -1573,20 +1573,27 @@ ath5k_tx_frame_completed(struct ath5k_softc *sc, struct sk_buff *skb, struct ath5k_txq *txq, struct ath5k_tx_status *ts) { struct ieee80211_tx_info *info; + u8 tries[3]; int i; sc-stats.tx_all_count++; sc-stats.tx_bytes_count += skb-len; info = IEEE80211_SKB_CB(skb); + tries[0] = info-status.rates[0].count; + tries[1] = info-status.rates[1].count; + tries[2] = info-status.rates[2].count; + ieee80211_tx_info_clear_status(info); - for (i = 0; i= ts-ts_final_idx; i++) { + + for (i = 0; i ts-ts_final_idx; i++) { struct ieee80211_tx_rate *r = info-status.rates[i]; - r-count = ts-ts_retry[i]; + r-count = tries[i]; } + info-status.rates[ts-ts_final_idx].count = ts-ts_final_retry; info-status.rates[ts-ts_final_idx + 1].idx = -1; if (unlikely(ts-ts_status)) { diff --git a/drivers/net/wireless/ath/ath5k/desc.c b/drivers/net/wireless/ath/ath5k/desc.c index e366d30..0391813 100644 --- a/drivers/net/wireless/ath/ath5k/desc.c +++ b/drivers/net/wireless/ath/ath5k/desc.c @@ -366,7 +366,7 @@ static int ath5k_hw_proc_2word_tx_status(struct ath5k_hw *ah, AR5K_DESC_TX_STATUS0_SEND_TIMESTAMP); ts-ts_shortretry = AR5K_REG_MS(tx_status-tx_status_0, AR5K_DESC_TX_STATUS0_SHORT_RETRY_COUNT); - ts-ts_longretry = AR5K_REG_MS(tx_status-tx_status_0, + ts-ts_final_retry = AR5K_REG_MS(tx_status-tx_status_0, AR5K_DESC_TX_STATUS0_LONG_RETRY_COUNT); /*TODO: ts-ts_virtcol + test*/ ts-ts_seqnum = AR5K_REG_MS(tx_status-tx_status_1, @@ -375,7 +375,6 @@ static int ath5k_hw_proc_2word_tx_status(struct ath5k_hw *ah, AR5K_DESC_TX_STATUS1_ACK_SIG_STRENGTH); ts-ts_antenna = 1; ts-ts_status = 0; - ts-ts_retry[0] = ts-ts_longretry; ts-ts_final_idx = 0; if (!(tx_status-tx_status_0 AR5K_DESC_TX_STATUS0_FRAME_XMIT_OK)) { @@ -401,7 +400,7 @@ static int ath5k_hw_proc_4word_tx_status(struct ath5k_hw *ah, { struct ath5k_hw_4w_tx_ctl *tx_ctl; struct ath5k_hw_tx_status *tx_status; - u32 txstat0, txstat1, txctl2; + u32 txstat0, txstat1; tx_ctl =desc-ud.ds_tx5212.tx_ctl; tx_status =desc-ud.ds_tx5212.tx_stat; @@ -413,7 +412,6 @@ static int ath5k_hw_proc_4word_tx_status(struct ath5k_hw *ah, return -EINPROGRESS; txstat0 = ACCESS_ONCE(tx_status-tx_status_0); - txctl2 = ACCESS_ONCE(tx_ctl-tx_control_2); /* * Get descriptor status @@ -422,7 +420,7 @@ static int ath5k_hw_proc_4word_tx_status(struct ath5k_hw *ah, AR5K_DESC_TX_STATUS0_SEND_TIMESTAMP); ts-ts_shortretry = AR5K_REG_MS(txstat0, AR5K_DESC_TX_STATUS0_SHORT_RETRY_COUNT); - ts-ts_longretry = AR5K_REG_MS(txstat0, + ts-ts_final_retry = AR5K_REG_MS(txstat0, AR5K_DESC_TX_STATUS0_LONG_RETRY_COUNT); ts-ts_seqnum = AR5K_REG_MS(txstat1, AR5K_DESC_TX_STATUS1_SEQ_NUM); @@ -435,32 +433,6 @@ static int ath5k_hw_proc_4word_tx_status(struct ath5k_hw *ah, ts-ts_final_idx = AR5K_REG_MS(txstat1, AR5K_DESC_TX_STATUS1_FINAL_TS_IX_5212); - /* The longretry counter has the number of
Re: [ath5k-devel] [PATCH 4/5] ath5k: Reimplement clock rate to usec conversion
text/html; charset=UTF-16BE: Unrecognized ___ ath5k-devel mailing list ath5k-devel@lists.ath5k.org https://lists.ath5k.org/mailman/listinfo/ath5k-devel
Re: [ath5k-devel] [PATCH 4/5] ath5k: Reimplement clock rate to usec conversion
, - AR5K_TIME_OUT), AR5K_TIME_OUT_CTS), ah-ah_turbo); + return ath5k_hw_clocktoh(ah, AR5K_REG_MS(ath5k_hw_reg_read(ah, + AR5K_TIME_OUT), AR5K_TIME_OUT_CTS)); } /** @@ -231,17 +231,61 @@ unsigned int ath5k_hw_get_cts_timeout(struct ath5k_hw *ah) int ath5k_hw_set_cts_timeout(struct ath5k_hw *ah, unsigned int timeout) { ATH5K_TRACE(ah-ah_sc); - if (ath5k_hw_clocktoh(AR5K_REG_MS(0x, AR5K_TIME_OUT_CTS), - ah-ah_turbo) = timeout) + if (ath5k_hw_clocktoh(ah, AR5K_REG_MS(0x, AR5K_TIME_OUT_CTS)) + = timeout) return -EINVAL; AR5K_REG_WRITE_BITS(ah, AR5K_TIME_OUT, AR5K_TIME_OUT_CTS, - ath5k_hw_htoclock(timeout, ah-ah_turbo)); + ath5k_hw_htoclock(ah, timeout)); return 0; } /** + * ath5k_hw_htoclock - Translate usec to hw clock units + * + * @ah: The struct ath5k_hw + * @usec: value in microseconds + */ +unsigned int ath5k_hw_htoclock(struct ath5k_hw *ah, unsigned int usec) +{ + return usec * ath5k_hw_get_clockrate(ah); +} + +/** + * ath5k_hw_clocktoh - Translate hw clock units to usec + * @clock: value in hw clock units + */ +unsigned int ath5k_hw_clocktoh(struct ath5k_hw *ah, unsigned int clock) +{ + return clock / ath5k_hw_get_clockrate(ah); +} + +/** + * ath5k_hw_get_clockrate - Get the clock rate for current mode + * + * @ah: The struct ath5k_hw + */ +unsigned int ath5k_hw_get_clockrate(struct ath5k_hw *ah) +{ + struct ieee80211_channel *channel = ah-ah_current_channel; + int clock; + + if (channel-hw_value CHANNEL_5GHZ) + clock = 40; /* 802.11a */ + else if (channel-hw_value CHANNEL_CCK) + clock = 22; /* 802.11b */ + else + clock = 44; /* 802.11g */ + + /* Clock rate in turbo modes is twice the normal rate */ + if (channel-hw_value CHANNEL_TURBO) + clock *= 2; + + return clock; +} + +/** * ath5k_hw_set_lladdr - Set station id * * @ah: The struct ath5k_hw diff --git a/drivers/net/wireless/ath/ath5k/qcu.c b/drivers/net/wireless/ath/ath5k/qcu.c index ed9021a..6af0ac8 100644 --- a/drivers/net/wireless/ath/ath5k/qcu.c +++ b/drivers/net/wireless/ath/ath5k/qcu.c @@ -529,7 +529,7 @@ unsigned int ath5k_hw_get_slot_time(struct ath5k_hw *ah) else slot_time_clock = ath5k_hw_reg_read(ah, AR5K_DCU_GBL_IFS_SLOT); - return ath5k_hw_clocktoh(slot_time_clock 0x, ah-ah_turbo); + return ath5k_hw_clocktoh(ah, slot_time_clock 0x); } /* @@ -537,7 +537,7 @@ unsigned int ath5k_hw_get_slot_time(struct ath5k_hw *ah) */ int ath5k_hw_set_slot_time(struct ath5k_hw *ah, unsigned int slot_time) { - u32 slot_time_clock = ath5k_hw_htoclock(slot_time, ah-ah_turbo); + u32 slot_time_clock = ath5k_hw_htoclock(ah, slot_time); ATH5K_TRACE(ah-ah_sc); diff --git a/drivers/net/wireless/ath/ath5k/reset.c b/drivers/net/wireless/ath/ath5k/reset.c index 62954fc..f1dc4c8 100644 --- a/drivers/net/wireless/ath/ath5k/reset.c +++ b/drivers/net/wireless/ath/ath5k/reset.c @@ -64,8 +64,7 @@ static inline int ath5k_hw_write_ofdm_timings(struct ath5k_hw *ah, * we scale coef by shifting clock value by 24 for * better precision since we use integers */ /* TODO: Half/quarter rate */ - clock = ath5k_hw_htoclock(1, channel-hw_value CHANNEL_TURBO); - + clock = (channel-hw_value CHANNEL_TURBO) ? 80 : 40; coef_scaled = ((5 * (clock 24)) / 2) / channel-center_freq; /* Get exponent -- * 株式会社 シンクチューブ 海藻 敬之 tka...@thinktube.com 〒658-0032 神戸市東灘区向洋町中6-9 KFMビル 4E-10 Phone: 078-857-8390 Fax: 078-857-8389 www.thinktube.com ___ ath5k-devel mailing list ath5k-devel@lists.ath5k.org https://lists.ath5k.org/mailman/listinfo/ath5k-devel
Re: [ath5k-devel] [PATCH 4/5] ath5k: Reimplement clock rate to usec conversion
ath5k_hw_get_ack_timeout(struct ath5k_hw *ah) int ath5k_hw_set_ack_timeout(struct ath5k_hw *ah, unsigned int timeout) { ATH5K_TRACE(ah-ah_sc); - if (ath5k_hw_clocktoh(AR5K_REG_MS(0x, AR5K_TIME_OUT_ACK), - ah-ah_turbo) = timeout) + if (ath5k_hw_clocktoh(ah, AR5K_REG_MS(0x, AR5K_TIME_OUT_ACK)) + = timeout) return -EINVAL; AR5K_REG_WRITE_BITS(ah, AR5K_TIME_OUT, AR5K_TIME_OUT_ACK, - ath5k_hw_htoclock(timeout, ah-ah_turbo)); + ath5k_hw_htoclock(ah, timeout)); return 0; } @@ -218,8 +218,8 @@ int ath5k_hw_set_ack_timeout(struct ath5k_hw *ah, unsigned int timeout) unsigned int ath5k_hw_get_cts_timeout(struct ath5k_hw *ah) { ATH5K_TRACE(ah-ah_sc); - return ath5k_hw_clocktoh(AR5K_REG_MS(ath5k_hw_reg_read(ah, - AR5K_TIME_OUT), AR5K_TIME_OUT_CTS), ah-ah_turbo); + return ath5k_hw_clocktoh(ah, AR5K_REG_MS(ath5k_hw_reg_read(ah, + AR5K_TIME_OUT), AR5K_TIME_OUT_CTS)); } /** @@ -231,17 +231,61 @@ unsigned int ath5k_hw_get_cts_timeout(struct ath5k_hw *ah) int ath5k_hw_set_cts_timeout(struct ath5k_hw *ah, unsigned int timeout) { ATH5K_TRACE(ah-ah_sc); - if (ath5k_hw_clocktoh(AR5K_REG_MS(0x, AR5K_TIME_OUT_CTS), - ah-ah_turbo) = timeout) + if (ath5k_hw_clocktoh(ah, AR5K_REG_MS(0x, AR5K_TIME_OUT_CTS)) + = timeout) return -EINVAL; AR5K_REG_WRITE_BITS(ah, AR5K_TIME_OUT, AR5K_TIME_OUT_CTS, - ath5k_hw_htoclock(timeout, ah-ah_turbo)); + ath5k_hw_htoclock(ah, timeout)); return 0; } /** + * ath5k_hw_htoclock - Translate usec to hw clock units + * + * @ah: The struct ath5k_hw + * @usec: value in microseconds + */ +unsigned int ath5k_hw_htoclock(struct ath5k_hw *ah, unsigned int usec) +{ + return usec * ath5k_hw_get_clockrate(ah); +} + +/** + * ath5k_hw_clocktoh - Translate hw clock units to usec + * @clock: value in hw clock units + */ +unsigned int ath5k_hw_clocktoh(struct ath5k_hw *ah, unsigned int clock) +{ + return clock / ath5k_hw_get_clockrate(ah); +} + +/** + * ath5k_hw_get_clockrate - Get the clock rate for current mode + * + * @ah: The struct ath5k_hw + */ +unsigned int ath5k_hw_get_clockrate(struct ath5k_hw *ah) +{ + struct ieee80211_channel *channel = ah-ah_current_channel; + int clock; + + if (channel-hw_value CHANNEL_5GHZ) + clock = 40; /* 802.11a */ + else if (channel-hw_value CHANNEL_CCK) + clock = 22; /* 802.11b */ + else + clock = 44; /* 802.11g */ + + /* Clock rate in turbo modes is twice the normal rate */ + if (channel-hw_value CHANNEL_TURBO) + clock *= 2; + + return clock; +} + +/** * ath5k_hw_set_lladdr - Set station id * * @ah: The struct ath5k_hw diff --git a/drivers/net/wireless/ath/ath5k/qcu.c b/drivers/net/wireless/ath/ath5k/qcu.c index ed9021a..6af0ac8 100644 --- a/drivers/net/wireless/ath/ath5k/qcu.c +++ b/drivers/net/wireless/ath/ath5k/qcu.c @@ -529,7 +529,7 @@ unsigned int ath5k_hw_get_slot_time(struct ath5k_hw *ah) else slot_time_clock = ath5k_hw_reg_read(ah, AR5K_DCU_GBL_IFS_SLOT); - return ath5k_hw_clocktoh(slot_time_clock 0x, ah-ah_turbo); + return ath5k_hw_clocktoh(ah, slot_time_clock 0x); } /* @@ -537,7 +537,7 @@ unsigned int ath5k_hw_get_slot_time(struct ath5k_hw *ah) */ int ath5k_hw_set_slot_time(struct ath5k_hw *ah, unsigned int slot_time) { - u32 slot_time_clock = ath5k_hw_htoclock(slot_time, ah-ah_turbo); + u32 slot_time_clock = ath5k_hw_htoclock(ah, slot_time); ATH5K_TRACE(ah-ah_sc); diff --git a/drivers/net/wireless/ath/ath5k/reset.c b/drivers/net/wireless/ath/ath5k/reset.c index 62954fc..f1dc4c8 100644 --- a/drivers/net/wireless/ath/ath5k/reset.c +++ b/drivers/net/wireless/ath/ath5k/reset.c @@ -64,8 +64,7 @@ static inline int ath5k_hw_write_ofdm_timings(struct ath5k_hw *ah, * we scale coef by shifting clock value by 24 for * better precision since we use integers */ /* TODO: Half/quarter rate */ - clock = ath5k_hw_htoclock(1, channel-hw_value CHANNEL_TURBO); - + clock = (channel-hw_value CHANNEL_TURBO) ? 80 : 40; coef_scaled = ((5 * (clock 24)) / 2) / channel-center_freq; /* Get exponent -- * 株式会社 シンクチューブ 海藻 敬之 tka...@thinktube.com 〒658-0032 神戸市東灘区向洋町中6-9 KFMビル 4E-10 Phone: 078-857-8390 Fax: 078-857-8389 www.thinktube.com ___ ath5k-devel mailing list ath5k-devel@lists.ath5k.org https://lists.ath5k.org/mailman/listinfo/ath5k-devel
Re: [ath5k-devel] [PATCH 4/5] ath5k: Reimplement clock rate to usec conversion
text/html; charset=UTF-16BE: Unrecognized ___ ath5k-devel mailing list ath5k-devel@lists.ath5k.org https://lists.ath5k.org/mailman/listinfo/ath5k-devel
Re: [ath5k-devel] [PATCH 4/5] ath5k: Reimplement clock rate to usec conversion
Hi, Lukas and Bob my last post looks blank and corrupted, sorry for the junk mail.. Below shows my local patch. Does original Atheros HAL calls the function just for 5GHz or calls for both 2GHz and 5 GHz.? In ath5k, ath5k_hw_write_ofdm_timings() is called when AR_5212 and CHANNEL_OFDM are true, which means for both 2GHz and 5GHz. --- reset.c_org 2009-12-17 17:01:29.0 +0900 +++ reset.c 2009-12-22 09:51:16.0 +0900 @@ -64,7 +64,14 @@ * we scale coef by shifting clock value by 24 for * better precision since we use integers */ /* TODO: Half/quarter rate */ - clock = (channel-hw_value CHANNEL_TURBO) ? 80 : 40; + if (channel-hw_value CHANNEL_2GHZ) + clock = 44; /* here, we do not have to worry about CCK */ + else + clock = 40; + + if (channel-hw_value CHANNEL_TURBO) + clock *= 2; + coef_scaled = ((5 * (clock 24)) / 2) / channel-center_freq; /* Get exponent Takayuki Kaiso On 21.12.2009 11:26 wrote: Didn't we have to handle CHANNEL_2GHZ case in ath5k_hw_write_ofdm_timings() shown below ? The ath5k gives exactly the same results as original Atheros HAL: #define INIT_CLOCKMHZSCALED 0x6400 unsigned long clockMhzScaled = INIT_CLOCKMHZSCALED; if (IS_CHAN_TURBO(chan)) clockMhzScaled *= 2; coef_scaled = clockMhzScaled / chan-channel; I don't know how the calculations work, they might be explained in the referenced patent, but I didn't change their semantics at all. I think we should do. then I made my own patch to hadle it and it seemed to improve the throughput of 2.4GHz. (even still not as good as 5Ghz case ) Where's the patch? Lukas Turek ___ ath5k-devel mailing list ath5k-devel@lists.ath5k.org https://lists.ath5k.org/mailman/listinfo/ath5k-devel
Re: [ath5k-devel] 802.11a vs. 802.11g performance
: Connection refused == whuuum.. this shows the receiver kept on receiving for 51 seconds while the sender completed its xmit at 30 seconds. 38266 pkts were received while 38267 pkts were xmitted by the sender.. this is UDP, not TCP .. thanks Takayuki Kaiso Hi, it helped in 11g for us. Prevoius to the patch, Minstrel reported that 36Mbit/sec was optimal. Even though the boxes were adjacent to each other. Madwifi would have acieved 54 in that configuration. With the patch, both boxes did 54. In testing these calibration issues, minstrel is your friend. Minstrel reports what rates are tried, and what rates succeededd. If throughput decreases after a softwar change, check the minstrel stats. Is minstrel trying on all rates?? Derek. On Fri, 20 Nov 2009, 海藻敬之 wrote: Hi, Lukas and Nick I'm sending my own patch in a hope it will finally make it through. Thanks. I did brief test with the patch and those test results show the throughput issues (receiving throughput of ath5k) was fixed. It's so great. Thanks a lot, Lukas. (but with my cases, the problem was for 11g not for 11a ) -- * 株式会社 シンクチューブ 海藻 敬之 tka...@thinktube.com 〒658-0032 神戸市東灘区向洋町中6-9 KFMビル 4E-10 Phone: 078-857-8390 Fax: 078-857-8389 www.thinktube.com ___ ath5k-devel mailing list ath5k-devel@lists.ath5k.org https://lists.ath5k.org/mailman/listinfo/ath5k-devel
Re: [ath5k-devel] Ath5k Packet loss
Hi, I am now facing the same (or similar) problem which Qasim reported 3 weeks before. (In my case, mode is Ad-Hoc rather than STA/AP ) Details are reported below, but in short things have bogged down here with me while I am start looking around ath5k_hw_noise_floor_calibration() and related register settings in reg.h, configuration of my network -simple 2 nodes : one is Soekris 4826 with Madwifi-0.9.4 and the other is Ubiquity RS-Pro with Ath5k (compat-wireless-2009-0820) - wireless card : SparkLAN 166AG (MAC AR5414) on both nodes - operation mode : IBSS a d-hoc test scenario - iperf (UDP) between the PC(A) connected to Soekris 4826 with Madwifi-0.9.4 and another PC(B) connected to Ubiquity RS-Pro with Ath5k (compat-wireless-2009-0820) - IBSS ad-hoc wireless between Soekris 4826 and Ubiquity RS-Pro result 1. when iperf packets go from PC(B) to PC(A), iperf UDP receiver showed up to 16Mbps and loss is 0.0% -- looks so great . 2. change the flow direction and when iperf packets go from PC(A) to PC(B), iperf UDP receiver showed following results. (in this case ath5 is receiver side ) (iperf -c x.x.x.x -u -b 12M -t 30 ) - 90% loss (when sender(madwifi) set as rate 54M fixed) - 90% loss (when sender(madwifi) set as rate 48M fixed) - 1% ~ 3% loss (when sender(madwifi) set as rate 36M fixed) - 0.2% ~ 0.7% loss (when sender(madwifi) set as rate 24M fixed) - 5%~20%(when sender(madwifi) set as rate auto) I added some lines in ath5k_tasklet_rx() for investigating the error reason and found huge number of AR5K_RXERR_CRC error happened for 54M and 48Mbps cases. Why AR5K_RXERR_CRC happened in just one direction ? I modified AR5K_DEFAULT_ANTENNA from 0 to 1 to disable antenna diversity , but the iperf results showed no change. HW (wireless card / Antenna ) itself does not have problem (verified with 4 or 5 HW sets ), I believe. Takayuki Kaiso I have a gentoo system and the latest Ath5k drivers from compat-wireless. I downloaded them about a week back. I understand that the tarball is updated daily. I have three Ubiquiti SRC cards (AR5212). I have configured one of them as an AP in 802.11a mode using channel 149. The other two are stations connected to the AP. I fixed the rate to 6Mbps. I have an iperf server running on the AP which accepts UDP traffic. One of the stations sends UDP packets at a rate of 6Mbps to the AP. Because there are no surrounding APs in 802.11a mode, the band is very quiet. However, I am surprised that I get 2.6% packet loss when I run the above mentioned experiment. The distance of both stations is no more than 10 meters from the AP. Also, the txpower for both STAs is 30dbm. One STA sends UDP packets to the AP at 6Mbps for 30 seconds and the report that iperf generates is as follows: [ ID] Interval Transfer Bandwidth JitterLost/Total Datagrams [ 3] 0.0-30.1 sec 18.3 MBytes 5.11 Mbits/sec 0.301 ms 352/13434 (2.6%) Considering that there is no activity on this channel except the beacons of AP and probe requests/responses from the other STA, how can 352 packets get lost? To make things worse, I tried the above experiment with minimal bandwidth. Very oddly, the results are as follows: [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 0.0-31.0 sec 44.5 KBytes 11.8 Kbits/sec 0.060 ms1/ 32 (3.1%) Why would even a packet get lost at this very slow data rate? I have repeated the above several times, and it always results in about the same numbers. Earlier, I had also noticed that if I ping one STA from the other STA, about every 10 seconds, the ping response time jumps from 0.8 milliseconds to 25 milliseconds. I would be really grateful if I can get some feedback fro myou guys on this so that we can fix whatever is messing things up here. Thanks, -Qasim ___ ath5k-devel mailing list ath5k-devel@lists.ath5k.org https://lists.ath5k.org/mailman/listinfo/ath5k-devel -- * 株式会社 シンクチューブ 海藻 敬之 tka...@thinktube.com 〒658-0032 神戸市東灘区向洋町中6-9 KFMビル 4E-10 Phone: 078-857-8390 Fax: 078-857-8389 www.thinktube.com ___ ath5k-devel mailing list ath5k-devel@lists.ath5k.org https://lists.ath5k.org/mailman/listinfo/ath5k-devel