Search Linux Wireless

Re: Ath5k and Retransmissions (Retries)

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

 



Thanks to the help from Bob on which area to focus in the code I was
able to manipulate the number of retries per rate to the value I
needed.

It should be noted that any card that uses the
ath5k_hw_setup_4word_tx_desc function (e.g 5212 and like devices) has
an additional 4 retries, AR5K_TUNE_HWTXTRIES, added to the value in
tx_tries0 the sum of which , appears to be,  is written to the
AR5K_4W_TX_DESC_CTL2_XMIT_TRIES0 register on the device.  This is not
obvious to the rate control algorithm as it calculate its own set of
retries, and then has to deal with another 4 tries being added on in a
different portion of the driver, unless it was originally assumed that
this is going to calculated in?

-Andrew




On Fri, Feb 26, 2010 at 7:48 PM, Bob Copeland <me@xxxxxxxxxxxxxxx> wrote:
> On Thu, Feb 25, 2010 at 12:59:50PM -0500, Andrew Blaich wrote:
> (top posting undone)
>> The main file I focused on was net/mac80211/rc80211minstrel.c, but I
>> have tried forcing retry values through the other portions of the
>> code.
>>
>> I have tried setting the counts in the MRR array (ar[i].count) in the
>> minstrel_get_rate function, but that hasn't appeared to work,
>> additionally I tried limiting the max retry count.  I have had luck in
>> altering the rate used by changing the index value fed into ar[i].idx.
>>  Maybe my issue is with the MRR array.
>
> Well, this should work.  The ath5k side of this is ath5k_txbuf_setup:
>
>      ret = ah->ah_setup_tx_desc(ah, ds, pktlen,
>            ieee80211_get_hdrlen_from_skb(skb),
>            get_hw_packet_type(skb),
>            (sc->power_level * 2),
>            hw_rate,
>            info->control.rates[0].count, keyidx, ah->ah_tx_ant, flags,
>            cts_rate, duration);
>
> info->control.rates[0] is the TX rate (which may be different
> for e.g. rts/cts frames than the one from the rate controller),
> and the mrr rates are set up just after that:
>
>       ah->ah_setup_mrr_tx_desc(ah, ds,
>                mrr_rate[0], mrr_tries[0],
>                mrr_rate[1], mrr_tries[1],
>                mrr_rate[2], mrr_tries[2]);
>
>
> The .count field in the mac80211 rate struct is the number of
> tries, not retries, to be precise.
>
>> next entry in the MRR array ar[1].idx=-1 so as to not try any rate,
>> and then the count to 0 does this disable the rest of the MRR array,
>> or is it possible the hardware is populating the array with other
>> values?
>
> That should be the case due to memset and get_alt_retry_rate semantics,
> but if you suspect a problem you can printk in the above spots.
>
> If the hardware doesn't respect those, there is some bug somewhere.
>
> (Also see hw->max_rate_tries in ath5k_pci_probe()).
>
> --
> Bob Copeland %% www.bobcopeland.com
>
>
--
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