Search Linux Wireless

Re: [PATCH] mac80211_hwsim: Report rate info in tx status

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

 



On Wed, Mar 28, 2012 at 2:17 AM, Timo Lindhorst <tlnd@xxxxxxxxx> wrote:
> Assuming an ideal channel, always the first transmission is considered
> successful if an ACK is received. If no ACK is received, the
> rates/attempts are reported as set by the rate control.
>
> Signed-off-by: Timo Lindhorst <tlnd@xxxxxxxxx>

I just tested this patch and rate control in hwsim seems to be
operational once again.  Attached you'll find a rate plot that shows
the data rate evolution over time.
I believe the periodic dips in data rate are due to minstrel sampling
different rates, although I'm not certain about that...

Signed-off-by: Javier Cardona <javier@xxxxxxxxxxx>

Cheers,

Javier

> ---
>  drivers/net/wireless/mac80211_hwsim.c |   15 +++++++++++++++
>  1 files changed, 15 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/wireless/mac80211_hwsim.c
> b/drivers/net/wireless/mac80211_hwsim.c
> index b7ce6a6..64adb3c 100644
> --- a/drivers/net/wireless/mac80211_hwsim.c
> +++ b/drivers/net/wireless/mac80211_hwsim.c
> @@ -698,6 +698,8 @@ static void mac80211_hwsim_tx(struct ieee80211_hw *hw,
> struct sk_buff *skb)
>        bool ack;
>        struct ieee80211_tx_info *txi;
>        u32 _pid;
> +       u8 tx_count[IEEE80211_TX_MAX_RATES];
> +       int i;
>        struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *) skb->data;
>        struct mac80211_hwsim_data *data = hw->priv;
>
> @@ -734,9 +736,22 @@ static void mac80211_hwsim_tx(struct ieee80211_hw *hw,
> struct sk_buff *skb)
>        if (txi->control.sta)
>                hwsim_check_sta_magic(txi->control.sta);
>
> +       if (!ack)
> +               for (i = 0; i < IEEE80211_TX_MAX_RATES; i++)
> +                       tx_count[i] = txi->control.rates[i].count;
> +
>        ieee80211_tx_info_clear_status(txi);
>        if (!(txi->flags & IEEE80211_TX_CTL_NO_ACK) && ack)
>                txi->flags |= IEEE80211_TX_STAT_ACK;
> +
> +       if (ack) {
> +               txi->status.rates[0].count = 1;
> +               txi->status.rates[1].idx = -1;
> +       } else {
> +               for (i = 0; i < IEEE80211_TX_MAX_RATES; i++)
> +                       txi->control.rates[i].count = tx_count[i];
> +       }
> +
>        ieee80211_tx_status_irqsafe(hw, skb);
>  }
>
> --
> 1.7.9.1
>
> --
> 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

-- 
Javier Cardona
cozybit Inc.
http://www.cozybit.com

Attachment: rate.png
Description: PNG image


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux