From: "Guy, Wey-Yi" <wey-yi.w.guy@intel.com>
To: Stanislaw Gruszka <sgruszka@redhat.com>
Cc: Johannes Berg <johannes@sipsolutions.net>,
"Chatre, Reinette" <reinette.chatre@intel.com>,
"John W. Linville" <linville@tuxdriver.com>,
"linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>,
"Berg, Johannes" <johannes.berg@intel.com>
Subject: Re: [PATCH 03/13] iwlwifi: move scan completed flags handling
Date: Fri, 03 Sep 2010 07:29:19 -0700 [thread overview]
Message-ID: <1283524159.5211.13.camel@wwguy-ubuntu> (raw)
In-Reply-To: <1283515056-11523-4-git-send-email-sgruszka@redhat.com>
Hi Johannes,
On Fri, 2010-09-03 at 04:57 -0700, Stanislaw Gruszka wrote:
> From: Johannes Berg <johannes.berg@intel.com>
>
> Move the scan completed flags handling so that we
> can notify mac80211 about aborted scans with the
> correct status. Also queue the scan_completed work
> before the BT status update so that it won't see
> the bits still set (unless a new scan was started
> in which case that's fine.)
>
> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
> Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
> ---
> drivers/net/wireless/iwlwifi/iwl-scan.c | 30 ++++++++++++++----------------
> 1 files changed, 14 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/net/wireless/iwlwifi/iwl-scan.c b/drivers/net/wireless/iwlwifi/iwl-scan.c
> index 01a4907..9df8bb8 100644
> --- a/drivers/net/wireless/iwlwifi/iwl-scan.c
> +++ b/drivers/net/wireless/iwlwifi/iwl-scan.c
> @@ -222,21 +222,11 @@ static void iwl_rx_scan_complete_notif(struct iwl_priv *priv,
> jiffies_to_msecs(elapsed_jiffies
> (priv->scan_start, jiffies)));
>
> - /*
> - * If a request to abort was given, or the scan did not succeed
> - * then we reset the scan state machine and terminate,
> - * re-queuing another scan if one has been requested
> - */
> - if (test_and_clear_bit(STATUS_SCAN_ABORTING, &priv->status))
> - IWL_DEBUG_INFO(priv, "Aborted scan completed.\n");
> -
> - IWL_DEBUG_INFO(priv, "Setting scan to off\n");
> -
> - clear_bit(STATUS_SCANNING, &priv->status);
> + queue_work(priv->workqueue, &priv->scan_completed);
>
> if (priv->iw_mode != NL80211_IFTYPE_ADHOC &&
> - priv->cfg->advanced_bt_coexist && priv->bt_status !=
> - scan_notif->bt_status) {
> + priv->cfg->advanced_bt_coexist &&
> + priv->bt_status != scan_notif->bt_status) {
> if (scan_notif->bt_status) {
> /* BT on */
> if (!priv->bt_ch_announce)
> @@ -254,7 +244,6 @@ static void iwl_rx_scan_complete_notif(struct iwl_priv *priv,
> priv->bt_status = scan_notif->bt_status;
> queue_work(priv->workqueue, &priv->bt_traffic_change_work);
> }
> - queue_work(priv->workqueue, &priv->scan_completed);
> }
>
> void iwl_setup_rx_scan_handlers(struct iwl_priv *priv)
> @@ -554,7 +543,7 @@ static void iwl_bg_scan_completed(struct work_struct *work)
> {
> struct iwl_priv *priv =
> container_of(work, struct iwl_priv, scan_completed);
> - bool internal = false;
> + bool internal = false, aborted;
> struct iwl_rxon_context *ctx;
>
> IWL_DEBUG_SCAN(priv, "SCAN complete scan\n");
> @@ -562,6 +551,15 @@ static void iwl_bg_scan_completed(struct work_struct *work)
> cancel_delayed_work(&priv->scan_check);
>
> mutex_lock(&priv->mutex);
> +
> + aborted = test_and_clear_bit(STATUS_SCAN_ABORTING, &priv->status);
> + if (aborted)
> + IWL_DEBUG_INFO(priv, "Aborted scan completed.\n");
> +
> + IWL_DEBUG_INFO(priv, "Setting scan to off\n");
> +
> + clear_bit(STATUS_SCANNING, &priv->status);
> +
> if (priv->is_internal_short_scan) {
> priv->is_internal_short_scan = false;
> IWL_DEBUG_SCAN(priv, "internal short scan completed\n");
> @@ -569,7 +567,7 @@ static void iwl_bg_scan_completed(struct work_struct *work)
> } else if (priv->scan_request) {
> priv->scan_request = NULL;
> priv->scan_vif = NULL;
> - ieee80211_scan_completed(priv->hw, false);
> + ieee80211_scan_completed(priv->hw, aborted);
> }
>
> if (test_bit(STATUS_EXIT_PENDING, &priv->status))
Not too sure about the flow, just asking is it ok to do all thses before
check "STATUS_EXIT_PENFING"?
Wey
next prev parent reply other threads:[~2010-09-03 14:29 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-03 11:57 [PATCH 0/13] iwlwifi: rewrite iwl-scan.c to avoid race conditions Stanislaw Gruszka
2010-09-03 11:57 ` [PATCH 01/13] iwlwifi: remove unused conf variables Stanislaw Gruszka
2010-09-03 11:57 ` [PATCH 02/13] iwlwifi: unify scan start checks Stanislaw Gruszka
2010-09-03 14:23 ` Guy, Wey-Yi
2010-09-03 14:25 ` Berg, Johannes
2010-09-06 7:30 ` Stanislaw Gruszka
2010-09-03 11:57 ` [PATCH 03/13] iwlwifi: move scan completed flags handling Stanislaw Gruszka
2010-09-03 14:29 ` Guy, Wey-Yi [this message]
2010-09-03 14:31 ` Berg, Johannes
2010-09-03 11:57 ` [PATCH 04/13] iwlwifi: cancel scan when down the device Stanislaw Gruszka
2010-09-03 12:07 ` Johannes Berg
2010-09-03 14:38 ` Guy, Wey-Yi
2010-09-06 7:32 ` Stanislaw Gruszka
2010-09-03 11:57 ` [PATCH 05/13] iwlwifi: use IWL_DEBUG_SCAN Stanislaw Gruszka
2010-09-03 11:57 ` [PATCH 06/13] iwlwifi: report scan completion when abort fail Stanislaw Gruszka
2010-09-03 11:57 ` [PATCH 07/13] iwlwifi: do not queue abort_scan work if can sleep Stanislaw Gruszka
2010-09-03 11:57 ` [PATCH 08/13] iwlwifi: avoid dropping muttex in iwl_scan_cancel_timeout Stanislaw Gruszka
2010-09-03 14:53 ` Guy, Wey-Yi
2010-09-06 7:33 ` Stanislaw Gruszka
2010-09-03 11:57 ` [PATCH 09/13] iwlwifi: rewrite scan completion Stanislaw Gruszka
2010-09-03 11:57 ` [PATCH 10/13] iwlwifi: force scan complete after timeout Stanislaw Gruszka
2010-09-03 12:15 ` Johannes Berg
2010-09-03 11:57 ` [PATCH 11/13] iwlwifi: assure we complete scan in scan_abort and scan_check works Stanislaw Gruszka
2010-09-03 11:57 ` [PATCH 12/13] iwlwifi: do not force complete scan too early Stanislaw Gruszka
2010-09-03 11:57 ` [PATCH 13/13] mac80211: wait for scan work complete before restarting hw Stanislaw Gruszka
2010-09-03 12:21 ` [PATCH 0/13] iwlwifi: rewrite iwl-scan.c to avoid race conditions Johannes Berg
2010-09-03 12:55 ` Stanislaw Gruszka
2010-09-03 13:11 ` Johannes Berg
2010-09-03 15:04 ` Guy, Wey-Yi
2010-09-06 7:37 ` Stanislaw Gruszka
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=1283524159.5211.13.camel@wwguy-ubuntu \
--to=wey-yi.w.guy@intel.com \
--cc=johannes.berg@intel.com \
--cc=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
--cc=reinette.chatre@intel.com \
--cc=sgruszka@redhat.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.