[rt2x00-users] [RFC 2/3] rt2x00: configure different tx parameters for non HT channel

Helmut Schaa helmut.schaa at googlemail.com
Wed Mar 28 23:50:29 EST 2012


On Wed, Mar 28, 2012 at 2:02 PM, Stanislaw Gruszka <sgruszka at redhat.com> wrote:
> For non HT channel configure TXWI_W0::TXOP filed differently and left 0
> on all other ht transmission settings.
>
> Reported-by: Walter Goldens <goldenstranger at yahoo.com>
> Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
> ---
>  drivers/net/wireless/rt2x00/rt2x00.h       |    1 +
>  drivers/net/wireless/rt2x00/rt2x00config.c |    3 +++
>  drivers/net/wireless/rt2x00/rt2x00queue.c  |   12 ++++++++++++
>  3 files changed, 16 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
> index 471f87c..8de9bfc 100644
> --- a/drivers/net/wireless/rt2x00/rt2x00.h
> +++ b/drivers/net/wireless/rt2x00/rt2x00.h
> @@ -692,6 +692,7 @@ enum rt2x00_state_flags {
>         */
>        CONFIG_CHANNEL_HT40,
>        CONFIG_POWERSAVING,
> +       CONFIG_HT_DISABLED,
>
>        /*
>         * Mark we currently are sequentially reading TX_STA_FIFO register
> diff --git a/drivers/net/wireless/rt2x00/rt2x00config.c b/drivers/net/wireless/rt2x00/rt2x00config.c
> index 293676b..60e29bb 100644
> --- a/drivers/net/wireless/rt2x00/rt2x00config.c
> +++ b/drivers/net/wireless/rt2x00/rt2x00config.c
> @@ -225,6 +225,9 @@ void rt2x00lib_config(struct rt2x00_dev *rt2x00dev,
>                        hw_value = conf->channel->hw_value;
>                }
>
> +               if (!conf_is_ht(conf))
> +                       set_bit(CONFIG_HT_DISABLED, &rt2x00dev->flags);
> +
>                memcpy(&libconf.rf,
>                       &rt2x00dev->spec.channels[hw_value],
>                       sizeof(libconf.rf));
> diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c
> index 9b1b2b7..03068bd 100644
> --- a/drivers/net/wireless/rt2x00/rt2x00queue.c
> +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
> @@ -320,6 +320,18 @@ static void rt2x00queue_create_tx_descriptor_ht(struct rt2x00_dev *rt2x00dev,
>                txdesc->u.ht.wcid = sta_priv->wcid;
>        }
>
> +       if (test_bit(CONFIG_HT_DISABLED, &rt2x00dev->flags)) {
> +               if (ieee80211_is_beacon(hdr->frame_control))
> +                       txdesc->u.ht.txop = TXOP_PIFS;
> +               else if (!(tx_info->flags & IEEE80211_TX_CTL_FIRST_FRAGMENT))
> +                       txdesc->u.ht.txop = TXOP_SIFS;
> +               else
> +                       txdesc->u.ht.txop = TXOP_BACKOFF;
> +
> +               /* Left zero on all other settings. */

So, we don't even fill in the legacy rate setting? This will result in
all frames being sent with 1Mbps, no?

Helmut



More information about the users mailing list