> Date: Fri, 7 Oct 2016 08:33:06 +0200
> From: Stefan Sperling <s...@stsp.name>
> 
> On Thu, Oct 06, 2016 at 06:51:04PM +0200, Stefan Sperling wrote:
> > athn(4) has a hack which disables lower Tx retry rates if RTS is used.
> > 
> > I don't understand why this was added. Perhaps the assumption was
> > that RTS will prevent transmission failures outright.
> 
> I believe I've found the reason for this after examining the frame
> exchanges more closely. OK to commit these comments instead?
> 
> The duration field mentioned below specifies the air time required
> to send the data frame + ack. And of course different data rates
> use up different amounts of air time.

Not to familliar with the specs, but you explanation Sounds plausible.
I wouldn't hesitate to commit this.

> Index: ar5008.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/ic/ar5008.c,v
> retrieving revision 1.35
> diff -u -p -r1.35 ar5008.c
> --- ar5008.c  5 Jan 2016 18:41:15 -0000       1.35
> +++ ar5008.c  7 Oct 2016 06:26:03 -0000
> @@ -1467,8 +1467,12 @@ ar5008_tx(struct athn_softc *sc, struct 
>                               ds->ds_ctl0 |= AR_TXC0_CTS_ENABLE;
>               }
>       }
> +     /* 
> +      * Disable multi-rate retries when protection is used.
> +      * The RTS/CTS frame's duration field is fixed and won't be
> +      * updated by hardware when the data rate changes.
> +      */
>       if (ds->ds_ctl0 & (AR_TXC0_RTS_ENABLE | AR_TXC0_CTS_ENABLE)) {
> -             /* Disable multi-rate retries when protection is used. */
>               ridx[1] = ridx[2] = ridx[3] = ridx[0];
>       }
>       /* Setup multi-rate retries. */
> Index: ar9003.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/ic/ar9003.c,v
> retrieving revision 1.39
> diff -u -p -r1.39 ar9003.c
> --- ar9003.c  5 Jan 2016 18:41:15 -0000       1.39
> +++ ar9003.c  7 Oct 2016 06:26:18 -0000
> @@ -1613,8 +1613,12 @@ ar9003_tx(struct athn_softc *sc, struct 
>                               ds->ds_ctl11 |= AR_TXC11_CTS_ENABLE;
>               }
>       }
> +     /* 
> +      * Disable multi-rate retries when protection is used.
> +      * The RTS/CTS frame's duration field is fixed and won't be
> +      * updated by hardware when the data rate changes.
> +      */
>       if (ds->ds_ctl11 & (AR_TXC11_RTS_ENABLE | AR_TXC11_CTS_ENABLE)) {
> -             /* Disable multi-rate retries when protection is used. */
>               ridx[1] = ridx[2] = ridx[3] = ridx[0];
>       }
>       /* Setup multi-rate retries. */
> 
> 
> 

Reply via email to