2012-06-05 03:08:45

by Qasim Javed

[permalink] [raw]
Subject: [PATCH] mac80211_hwsim: Set IEEE80211_STAT_ACK flag when userspace indicates that the frame has been acknowledged.

The station fail average is not updated correctly since the IEEE80211_STAT_ACK flag is not set when using wmediumd with mac80211_hwsim. Set this flag when wmediumd indicates that the frame was successfully transmitted (eventually).

Signed-off-by: Qasim Javed <[email protected]>
---
drivers/net/wireless/mac80211_hwsim.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
index 4c9336c..a0b7cfd 100644
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
@@ -1555,6 +1555,7 @@ static int hwsim_tx_info_frame_received_nl(struct sk_buff *skb_2,
hdr = (struct ieee80211_hdr *) skb->data;
mac80211_hwsim_monitor_ack(data2->hw, hdr->addr2);
}
+ txi->flags |= IEEE80211_TX_STAT_ACK;
}
ieee80211_tx_status_irqsafe(data2->hw, skb);
return 0;
--
1.7.1



2012-06-05 16:42:58

by Javier Cardona

[permalink] [raw]
Subject: Re: [PATCH] mac80211_hwsim: Set IEEE80211_STAT_ACK flag when userspace indicates that the frame has been acknowledged.

Qasim,

While reviewing your patch I also noticed that the flags
HWSIM_TX_CTL_NO_ACK and HWSIM_TX_CTL_REQ_TX_STATUS are not converted
back to IEEE80211_TX_CTL_NO_ACK and IEEE80211_TX_CTL_REQ_TX_STATUS on
frames received from userspace. Do you think that might affect rate
adaptation or the failed average?

Cheers,

Javier



On Tue, Jun 5, 2012 at 9:39 AM, Javier Cardona <[email protected]> wrote:
> On Mon, Jun 4, 2012 at 11:25 PM, Qasim Javed <[email protected]> wrote:
>> The station fail average is not updated correctly since the IEEE80211_STAT_ACK flag is not set when using wmediumd with mac80211_hwsim. Set this flag when wmediumd indicates that the frame was successfully transmitted (eventually).
>>
>> Signed-off-by: Qasim Javed <[email protected]>
> Signed-off-by: Javier Cardona <[email protected]>
>
>> ---
>> ?drivers/net/wireless/mac80211_hwsim.c | ? ?1 +
>> ?1 files changed, 1 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
>> index 4c9336c..a0b7cfd 100644
>> --- a/drivers/net/wireless/mac80211_hwsim.c
>> +++ b/drivers/net/wireless/mac80211_hwsim.c
>> @@ -1555,6 +1555,7 @@ static int hwsim_tx_info_frame_received_nl(struct sk_buff *skb_2,
>> ? ? ? ? ? ? ? ? ? ? ? ?hdr = (struct ieee80211_hdr *) skb->data;
>> ? ? ? ? ? ? ? ? ? ? ? ?mac80211_hwsim_monitor_ack(data2->hw, hdr->addr2);
>> ? ? ? ? ? ? ? ?}
>> + ? ? ? ? ? ? ? txi->flags |= IEEE80211_TX_STAT_ACK;
>> ? ? ? ?}
>> ? ? ? ?ieee80211_tx_status_irqsafe(data2->hw, skb);
>> ? ? ? ?return 0;
>> --
>> 1.7.1
>>
>
>
>
> --
> Javier Cardona
> cozybit Inc.
> http://www.cozybit.com



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

2012-06-05 16:39:24

by Javier Cardona

[permalink] [raw]
Subject: Re: [PATCH] mac80211_hwsim: Set IEEE80211_STAT_ACK flag when userspace indicates that the frame has been acknowledged.

On Mon, Jun 4, 2012 at 11:25 PM, Qasim Javed <[email protected]> wrote:
> The station fail average is not updated correctly since the IEEE80211_STAT_ACK flag is not set when using wmediumd with mac80211_hwsim. Set this flag when wmediumd indicates that the frame was successfully transmitted (eventually).
>
> Signed-off-by: Qasim Javed <[email protected]>
Signed-off-by: Javier Cardona <[email protected]>

> ---
> ?drivers/net/wireless/mac80211_hwsim.c | ? ?1 +
> ?1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
> index 4c9336c..a0b7cfd 100644
> --- a/drivers/net/wireless/mac80211_hwsim.c
> +++ b/drivers/net/wireless/mac80211_hwsim.c
> @@ -1555,6 +1555,7 @@ static int hwsim_tx_info_frame_received_nl(struct sk_buff *skb_2,
> ? ? ? ? ? ? ? ? ? ? ? ?hdr = (struct ieee80211_hdr *) skb->data;
> ? ? ? ? ? ? ? ? ? ? ? ?mac80211_hwsim_monitor_ack(data2->hw, hdr->addr2);
> ? ? ? ? ? ? ? ?}
> + ? ? ? ? ? ? ? txi->flags |= IEEE80211_TX_STAT_ACK;
> ? ? ? ?}
> ? ? ? ?ieee80211_tx_status_irqsafe(data2->hw, skb);
> ? ? ? ?return 0;
> --
> 1.7.1
>



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

2012-06-05 20:11:27

by Qasim Javed

[permalink] [raw]
Subject: Re: [PATCH] mac80211_hwsim: Set IEEE80211_STAT_ACK flag when userspace indicates that the frame has been acknowledged.

Javier,

wmediumd is not honoring HWSIM_TX_CTL_REQ_TX_STATUS right now, I can
send a separate wmediumd patch for that. This flag does not need to be
converted back to IEEE80211_TX_CTL_REQ_TX_STATUS since we request the
status of transmission using this flag and its only relevant to
wmediumd for deciding whether to send TX information back to hwsim or
not.

HWSIM_TX_CTL_NO_ACK could be used to disable the generation of an ACK
(currently just "inserted" in to the hwsim monitor interface) for
unicast frames. Of course normally you would need an ACK, but someone
might want to test a scenario without ACKs. In that case, we should
not insert an ACK on the hwsim monitor interface when
HWSIM_TX_CTL_NO_ACK is set. Still, in this case we do not need to
convert back to IEEE80211_TX_CTL_NO_ACK.

So, basically converting back to IEEE80211_* flags is not required
(according to my understanding). This also implies that rate control
and the fail average will not be impacted by not converting the flags.

Rate control is interested in the number of retries which is already
being conveyed through TX info sent from the userspace to
mac80211_hwsim and further utilized by ieee80211_tx_status. Failed
average is only impacted by IEEE80211_STAT_ACK which has already been
set properly by the proposed patch.

-Qasim

On Tue, Jun 5, 2012 at 11:42 AM, Javier Cardona <[email protected]> wrote:
> Qasim,
>
> While reviewing your patch I also noticed that the flags
> HWSIM_TX_CTL_NO_ACK and HWSIM_TX_CTL_REQ_TX_STATUS are not converted
> back to IEEE80211_TX_CTL_NO_ACK and IEEE80211_TX_CTL_REQ_TX_STATUS on
> frames received from userspace. ?Do you think that might affect rate
> adaptation or the failed average?
>
> Cheers,
>
> Javier
>
>
>
> On Tue, Jun 5, 2012 at 9:39 AM, Javier Cardona <[email protected]> wrote:
>> On Mon, Jun 4, 2012 at 11:25 PM, Qasim Javed <[email protected]> wrote:
>>> The station fail average is not updated correctly since the IEEE80211_STAT_ACK flag is not set when using wmediumd with mac80211_hwsim. Set this flag when wmediumd indicates that the frame was successfully transmitted (eventually).
>>>
>>> Signed-off-by: Qasim Javed <[email protected]>
>> Signed-off-by: Javier Cardona <[email protected]>
>>
>>> ---
>>> ?drivers/net/wireless/mac80211_hwsim.c | ? ?1 +
>>> ?1 files changed, 1 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
>>> index 4c9336c..a0b7cfd 100644
>>> --- a/drivers/net/wireless/mac80211_hwsim.c
>>> +++ b/drivers/net/wireless/mac80211_hwsim.c
>>> @@ -1555,6 +1555,7 @@ static int hwsim_tx_info_frame_received_nl(struct sk_buff *skb_2,
>>> ? ? ? ? ? ? ? ? ? ? ? ?hdr = (struct ieee80211_hdr *) skb->data;
>>> ? ? ? ? ? ? ? ? ? ? ? ?mac80211_hwsim_monitor_ack(data2->hw, hdr->addr2);
>>> ? ? ? ? ? ? ? ?}
>>> + ? ? ? ? ? ? ? txi->flags |= IEEE80211_TX_STAT_ACK;
>>> ? ? ? ?}
>>> ? ? ? ?ieee80211_tx_status_irqsafe(data2->hw, skb);
>>> ? ? ? ?return 0;
>>> --
>>> 1.7.1
>>>
>>
>>
>>
>> --
>> Javier Cardona
>> cozybit Inc.
>> http://www.cozybit.com
>
>
>
> --
> Javier Cardona
> cozybit Inc.
> http://www.cozybit.com