[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