From: Mohammed Shafi Shajakhan <[email protected]>
when we run high bandwidth UDP traffic and we trigger a scan, the scan
state machine seems to be looping in SUSPEND->RESUME->DECISION->SUSPEND
and SET_CHANNEL seems to be never called as 'tx_empty' is never true
while running UDP traffic. fix this by settting SET_CHANNEL state when
we get into RESUME state.
Signed-off-by: Mohammed Shafi Shajakhan <[email protected]>
---
net/mac80211/scan.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c
index 2c5041c..2908e56 100644
--- a/net/mac80211/scan.c
+++ b/net/mac80211/scan.c
@@ -625,7 +625,7 @@ static void ieee80211_scan_state_resume(struct ieee80211_local *local,
local->leave_oper_channel_time = jiffies;
/* advance to the next channel to be scanned */
- local->next_scan_state = SCAN_DECISION;
+ local->next_scan_state = SCAN_SET_CHANNEL;
}
void ieee80211_scan_work(struct work_struct *work)
--
1.7.0.4
On Wednesday 21 December 2011 09:01 PM, Helmut Schaa wrote:
> Hi,
Hi Helmut,
>
> On Wed, Dec 21, 2011 at 3:51 PM, Mohammed Shafi Shajakhan
> <[email protected]> wrote:
>> From: Mohammed Shafi Shajakhan<[email protected]>
>>
>> when we run high bandwidth UDP traffic and we trigger a scan, the scan
>> state machine seems to be looping in SUSPEND->RESUME->DECISION->SUSPEND
>> and SET_CHANNEL seems to be never called as 'tx_empty' is never true
>> while running UDP traffic. fix this by settting SET_CHANNEL state when
>> we get into RESUME state.
>
> Your analysis looks correct to me. Previously (before the
> simplification patches)
> the logic to always scan at least one channel was put in scan_state_decision but
> maybe it makes sense to have it in scan_state_resume.
thanks for the review.
i compared "ieee80211_scan_state_resume" with the older code's
"ieee80211_scan_state_leave_oper_channel"
>
> So, to me the patch looks good.
>
> Helmut
>
--
thanks,
shafi
On Wednesday 21 December 2011 08:21 PM, Mohammed Shafi Shajakhan wrote:
> From: Mohammed Shafi Shajakhan<[email protected]>
>
> when we run high bandwidth UDP traffic and we trigger a scan, the scan
> state machine seems to be looping in SUSPEND->RESUME->DECISION->SUSPEND
> and SET_CHANNEL seems to be never called as 'tx_empty' is never true
> while running UDP traffic. fix this by settting SET_CHANNEL state when
> we get into RESUME state.
Hi johannes,
i am not completely familiar with the scan state machine. used some
previous before some of your latest changes in scan state machine and
found this might help. please let me know if this does not helps
something. thank you!
>
> Signed-off-by: Mohammed Shafi Shajakhan<[email protected]>
> ---
> net/mac80211/scan.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c
> index 2c5041c..2908e56 100644
> --- a/net/mac80211/scan.c
> +++ b/net/mac80211/scan.c
> @@ -625,7 +625,7 @@ static void ieee80211_scan_state_resume(struct ieee80211_local *local,
> local->leave_oper_channel_time = jiffies;
>
> /* advance to the next channel to be scanned */
> - local->next_scan_state = SCAN_DECISION;
> + local->next_scan_state = SCAN_SET_CHANNEL;
> }
>
> void ieee80211_scan_work(struct work_struct *work)
--
thanks,
shafi
Hi,
On Wed, Dec 21, 2011 at 3:51 PM, Mohammed Shafi Shajakhan
<[email protected]> wrote:
> From: Mohammed Shafi Shajakhan <[email protected]>
>
> when we run high bandwidth UDP traffic and we trigger a scan, the scan
> state machine seems to be looping in SUSPEND->RESUME->DECISION->SUSPEND
> and SET_CHANNEL seems to be never called as 'tx_empty' is never true
> while running UDP traffic. fix this by settting SET_CHANNEL state when
> we get into RESUME state.
Your analysis looks correct to me. Previously (before the
simplification patches)
the logic to always scan at least one channel was put in scan_state_decision but
maybe it makes sense to have it in scan_state_resume.
So, to me the patch looks good.
Helmut
> Signed-off-by: Mohammed Shafi Shajakhan <[email protected]>
> ---
> ?net/mac80211/scan.c | ? ?2 +-
> ?1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c
> index 2c5041c..2908e56 100644
> --- a/net/mac80211/scan.c
> +++ b/net/mac80211/scan.c
> @@ -625,7 +625,7 @@ static void ieee80211_scan_state_resume(struct ieee80211_local *local,
> ? ? ? ?local->leave_oper_channel_time = jiffies;
>
> ? ? ? ?/* advance to the next channel to be scanned */
> - ? ? ? local->next_scan_state = SCAN_DECISION;
> + ? ? ? local->next_scan_state = SCAN_SET_CHANNEL;
> ?}
>
> ?void ieee80211_scan_work(struct work_struct *work)
> --
> 1.7.0.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at ?http://vger.kernel.org/majordomo-info.html