2014-02-06 13:26:38

by Cedric VONCKEN

[permalink] [raw]
Subject: ATH9K software retry

In xmit.c the function ath_tx_complete_aggr test if the fi->retries <
ATH_MAX_SW_RETRIES.

If this condition is true, ATH9K handle software retry.

Minstrel set in the frame one or more rates, for each rate minstrel set
a retries count. I think is sufficient.

Why ATH9K need to manage the software retries?

With the test we have a minimal of 30 retries (ATH_MAX_SW_RETRIES is set
to 30).

I plan to remove the software retry int ATH9K, before I would like to
know if theses retries is necessary.

Regards.

Cedric Voncken



2014-02-06 18:19:44

by Cedric VONCKEN

[permalink] [raw]
Subject: RE: ATH9K software retry

> >>
> > Is it possible to only applied software retrying for A-MPDU frame with
> > more one frame?
> > If I correctly understood the code, the function ath_tx_count_frames
> > return the number of frame in the A-MPDU. If nframes == 1 we don't use
> > the software retry.
> Software retry should be applied to any frame that is part of a BlockAck
> session, because any failed frame that is not retried requires the sender
to
> notify the receiver with a BlockAckRequest, which is expensive. I would
> suggest keeping the current behavior, unless you have a good reason to
> change it and understand the implications.
>
Thanks for your answers.

I think I am not on the good way. I would like to reduce the software
retries when we lost the AP (turn off). In this case, no BlockAck are
received.
Is it possible to reduce the software retries in this case? If yes, could
you give me some pointer?

Is it possible to reduce the ATH_MAX_SW_RETRIES value (for example reduces
to 10) without damage?

Cedric voncken


2014-02-06 16:56:07

by Felix Fietkau

[permalink] [raw]
Subject: Re: ATH9K software retry

On 2014-02-06 17:38, voncken wrote:
>> -----Message d'origine-----
>> De : Felix Fietkau [mailto:[email protected]]
>> Envoy? : jeudi 6 f?vrier 2014 15:42
>> ? : Cedric VONCKEN; [email protected]
>> Objet : Re: ATH9K software retry
>>
>> On 2014-02-06 14:06, Cedric VONCKEN wrote:
>> > In xmit.c the function ath_tx_complete_aggr test if the fi->retries <
>> > ATH_MAX_SW_RETRIES.
>> >
>> > If this condition is true, ATH9K handle software retry.
>> >
>> > Minstrel set in the frame one or more rates, for each rate minstrel
>> > set a retries count. I think is sufficient.
>> >
>> > Why ATH9K need to manage the software retries?
>> The retries configured for minstrel_ht are used for hardware retries of
> single
>> frames and full A-MPDU transmissions. Software retries are used for
>> individual subframes that are sent as part of A-MPDUs.
>> This is required, because failed subframes are frequent with higher MCS
> rates
>> and A-MPDU.
>>
> Is it possible to only applied software retrying for A-MPDU frame with more
> one frame?
> If I correctly understood the code, the function ath_tx_count_frames return
> the number of frame in the A-MPDU. If nframes == 1 we don't use the software
> retry.
Software retry should be applied to any frame that is part of a BlockAck
session, because any failed frame that is not retried requires the
sender to notify the receiver with a BlockAckRequest, which is
expensive. I would suggest keeping the current behavior, unless you have
a good reason to change it and understand the implications.

- Felix

2014-02-06 14:42:11

by Felix Fietkau

[permalink] [raw]
Subject: Re: ATH9K software retry

On 2014-02-06 14:06, Cedric VONCKEN wrote:
> In xmit.c the function ath_tx_complete_aggr test if the fi->retries <
> ATH_MAX_SW_RETRIES.
>
> If this condition is true, ATH9K handle software retry.
>
> Minstrel set in the frame one or more rates, for each rate minstrel set
> a retries count. I think is sufficient.
>
> Why ATH9K need to manage the software retries?
The retries configured for minstrel_ht are used for hardware retries of
single frames and full A-MPDU transmissions. Software retries are used
for individual subframes that are sent as part of A-MPDUs.
This is required, because failed subframes are frequent with higher MCS
rates and A-MPDU.

> With the test we have a minimal of 30 retries (ATH_MAX_SW_RETRIES is set
> to 30).
>
> I plan to remove the software retry int ATH9K, before I would like to
> know if theses retries is necessary.
Removing software retry functionality is a very bad idea.

- Felix


2014-02-06 16:38:49

by Cedric VONCKEN

[permalink] [raw]
Subject: RE: ATH9K software retry

> -----Message d'origine-----
> De?: Felix Fietkau [mailto:[email protected]]
> Envoy??: jeudi 6 f?vrier 2014 15:42
> ??: Cedric VONCKEN; [email protected]
> Objet?: Re: ATH9K software retry
>
> On 2014-02-06 14:06, Cedric VONCKEN wrote:
> > In xmit.c the function ath_tx_complete_aggr test if the fi->retries <
> > ATH_MAX_SW_RETRIES.
> >
> > If this condition is true, ATH9K handle software retry.
> >
> > Minstrel set in the frame one or more rates, for each rate minstrel
> > set a retries count. I think is sufficient.
> >
> > Why ATH9K need to manage the software retries?
> The retries configured for minstrel_ht are used for hardware retries of
single
> frames and full A-MPDU transmissions. Software retries are used for
> individual subframes that are sent as part of A-MPDUs.
> This is required, because failed subframes are frequent with higher MCS
rates
> and A-MPDU.
>
Is it possible to only applied software retrying for A-MPDU frame with more
one frame?
If I correctly understood the code, the function ath_tx_count_frames return
the number of frame in the A-MPDU. If nframes == 1 we don't use the software
retry.

> > With the test we have a minimal of 30 retries (ATH_MAX_SW_RETRIES is
> > set to 30).

Regards

Cedric Voncken