2011-09-26 09:43:05

by Rajkumar Manoharan

[permalink] [raw]
Subject: [RFC] mac80211: Send nullfunc frames at lower rate

Recently mac80211 was changed to send nullfunc instead of probe
request for connection monitoring. These nullfunc data frames
are being sent at higer rates and also as aggregated ones. This
could probably delays the nullfunc_ack so the connection is getting
disconnected as max retries reached. In order to improve the
connectivity send the nullfunc at lower rate.

Signed-off-by: Rajkumar Manoharan <[email protected]>
---
net/mac80211/rate.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c
index f61244c..213e1e9 100644
--- a/net/mac80211/rate.c
+++ b/net/mac80211/rate.c
@@ -208,7 +208,8 @@ static bool rc_no_data_or_no_ack(struct ieee80211_tx_rate_control *txrc)

fc = hdr->frame_control;

- return (info->flags & IEEE80211_TX_CTL_NO_ACK) || !ieee80211_is_data(fc);
+ return (info->flags & IEEE80211_TX_CTL_NO_ACK) ||
+ !ieee80211_is_data(fc) || ieee80211_is_nullfunc(fc);
}

static void rc_send_low_broadcast(s8 *idx, u32 basic_rates,
--
1.7.6.4



2011-09-26 11:16:02

by Stanislaw Gruszka

[permalink] [raw]
Subject: Re: [RFC] mac80211: Send nullfunc frames at lower rate

On Mon, Sep 26, 2011 at 03:13:45PM +0530, Rajkumar Manoharan wrote:
> Recently mac80211 was changed to send nullfunc instead of probe
> request for connection monitoring. These nullfunc data frames
> are being sent at higer rates and also as aggregated ones. This
> could probably delays the nullfunc_ack so the connection is getting
> disconnected as max retries reached. In order to improve the
> connectivity send the nullfunc at lower rate.

We send nullfunc frames for connection monitoring also on older
kernels if hw.flags & IEEE80211_HW_REPORTS_TX_ACK_STATUS. I think
this is -stable fix.

Perhaps also rc_no_data_or_no_ack name should be changed to
something more appropriate.

Stanislaw