linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sachin Kulkarni <Sachin.Kulkarni@imgtec.com>
To: Johannes Berg <johannes@sipsolutions.net>
Cc: <linux-wireless@vger.kernel.org>
Subject: Re: [PATCH] mac80211: Requeue work for all iftypes after scan completion
Date: Mon, 21 Jul 2014 15:56:30 +0530	[thread overview]
Message-ID: <53CCEAD6.7030205@imgtec.com> (raw)
In-Reply-To: <1405935434.32255.2.camel@jlt4.sipsolutions.net>

On 07/21/2014 03:07 PM, Johannes Berg wrote:
> On Thu, 2014-07-10 at 21:32 +0530, Sachin Kulkarni wrote:
>> From: Sachin Kulkarni<sachin.kulkarni@imgtec.com>
>>
>> During a hw scan ieee80211_iface_work ignores work items for all vifs. However
>> after the scan complete work is requeued only for STA, ADHOC and MESH iftypes.
>> This occasionally results in event processing getting delayed for iftype AP when
>> it coexists with a STA, and when the scan durations are very long.
>>
>> Signed-off-by: Sachin Kulkarni<sachin.kulkarni@imgtec.com>
>> Cc: linux-wireless@vger.kernel.org
>> Cc: johannes@sipsolutions.net
>> ---
>> We have a test scenario where there are 2 VIFs: one STA and one AP. The STA is
>> not connected to anyone while the AP has a station connected to it. The hardware
>> we are using currently has scan durations of ~8 sec and a new scan request is
>> generated every 10 s. This results in a window of only 2 s when work items can
>> be processed by ieee80211_iface_work. We came across scenarios where the AP is
>> trying to tear down a AMPDU session, and the IEEE80211_SDATA_QUEUE_AGG_STOP
>> event gets queued. However the work item for this gets ignored by the ieee80211_iface_work
>> since a hw scan is in progress most of the time. When the scan completes however
>> the work item for the AP does not get requeued, and by the time the
>> IEEE80211_SDATA_QUEUE_AGG_STOP gets processed in some other work items context,
>> the TX frames just keep getting queued up, since the tid has not been destroyed.
>> This results in disconnections since things like ARP timeouts etc start
>> happening.
>> ---
>>    net/mac80211/mlme.c |    5 +++--
>>    1 files changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
>> index 931330b..49af420 100644
>> --- a/net/mac80211/mlme.c
>> +++ b/net/mac80211/mlme.c
>> @@ -3647,9 +3647,10 @@ static void ieee80211_restart_sta_timer(struct ieee80211_sub_if_data *sdata)
>>    		if (!(flags&   IEEE80211_HW_CONNECTION_MONITOR))
>>    			ieee80211_queue_work(&sdata->local->hw,
>>    					&sdata->u.mgd.monitor_work);
>> -		/* and do all the other regular work too */
>> -		ieee80211_queue_work(&sdata->local->hw,&sdata->work);
>>    	}
>> +
>> +	/* and do all the other regular work too */
>> +	ieee80211_queue_work(&sdata->local->hw,&sdata->work);
> Please fix the space while at it. :)
Thanks for getting back Johannes. Just a quick question. When you said 
"..fix the space.." did you mean the spaces in the following lines:

   		if (!(flags&   IEEE80211_HW_CONNECTION_MONITOR))
   			ieee80211_queue_work(&sdata->local->hw,
   					&sdata->u.mgd.monitor_work);


or the newline I introduced here:

+
+	/* and do all the other regular work too */
+	ieee80211_queue_work(&sdata->local->hw,&sdata->work);


(I verified the patch with ./scripts/checkpatch.pl and it passed.)

Regards,
Sachin

  reply	other threads:[~2014-07-21 10:26 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <82A67CC48AF04D43A69EB66645975134218BA7EE@hbmail01.hb.imgtec.org>
2014-07-10 16:02 ` [PATCH] mac80211: Requeue work for all iftypes after scan completion Sachin Kulkarni
2014-07-10 17:47   ` Eliad Peller
2014-07-21  9:37   ` Johannes Berg
2014-07-21 10:26     ` Sachin Kulkarni [this message]
2014-07-21 10:30       ` Johannes Berg
2014-07-21 11:08   ` [PATCH-v2] " Sachin Kulkarni
2014-07-21 11:12     ` Sachin Kulkarni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53CCEAD6.7030205@imgtec.com \
    --to=sachin.kulkarni@imgtec.com \
    --cc=johannes@sipsolutions.net \
    --cc=linux-wireless@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).