linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 2/4] mwifiex: rework internal scan for association
@ 2014-08-18  9:12 Avinash Patil
  2014-08-28 18:41 ` John W. Linville
  0 siblings, 1 reply; 3+ messages in thread
From: Avinash Patil @ 2014-08-18  9:12 UTC (permalink / raw)
  To: linux-wireless@vger.kernel.org
  Cc: John W. Linville, Amitkumar Karwar, Cathy Luo, Marc Yang,
	Xinming Hu

There was an issue with internal scan during association wherein
we would complete internal scan on first scan command response.
This would cause association failure if AP is not found in first scan
response e.g. APs from A band.
This patch fixes this issue by completing internal scan only when all
scan commands from scan pending queue and command pending queue are
sent to FW and response to last scan command is received.

Signed-off-by: Avinash Patil <patila@marvell.com>
Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Cathy Luo <cluo@marvell.com>
Tested-by: Xinmin Hu <huxm@marvell.com>
---
 drivers/net/wireless/mwifiex/scan.c | 27 ++++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/mwifiex/scan.c b/drivers/net/wireless/mwifiex/scan.c
index dee717a..bec48cc 100644
--- a/drivers/net/wireless/mwifiex/scan.c
+++ b/drivers/net/wireless/mwifiex/scan.c
@@ -1970,9 +1970,34 @@ int mwifiex_cmd_802_11_scan_ext(struct mwifiex_private *priv,
 /* This function handles the command response of extended scan */
 int mwifiex_ret_802_11_scan_ext(struct mwifiex_private *priv)
 {
+       struct mwifiex_adapter *adapter = priv->adapter;
+       struct host_cmd_ds_command *cmd_ptr;
+       struct cmd_ctrl_node *cmd_node;
+       unsigned long cmd_flags, scan_flags;
+       bool complete_scan = false;
+
        dev_dbg(priv->adapter->dev, "info: EXT scan returns successfully\n");

-       mwifiex_complete_scan(priv);
+       spin_lock_irqsave(&adapter->cmd_pending_q_lock, cmd_flags);
+       spin_lock_irqsave(&adapter->scan_pending_q_lock, scan_flags);
+       if (list_empty(&adapter->scan_pending_q)) {
+               complete_scan = true;
+               list_for_each_entry(cmd_node, &adapter->cmd_pending_q, list) {
+                       cmd_ptr = (void *)cmd_node->cmd_skb->data;
+                       if (le16_to_cpu(cmd_ptr->command) ==
+                           HostCmd_CMD_802_11_SCAN_EXT) {
+                               dev_dbg(priv->adapter->dev,
+                                       "Scan pending in command pending list");
+                               complete_scan = false;
+                               break;
+                       }
+               }
+       }
+       spin_unlock_irqrestore(&adapter->scan_pending_q_lock, scan_flags);
+       spin_unlock_irqrestore(&adapter->cmd_pending_q_lock, cmd_flags);
+
+       if (complete_scan)
+               mwifiex_complete_scan(priv);

        return 0;
 }
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH 2/4] mwifiex: rework internal scan for association
  2014-08-18  9:12 [PATCH 2/4] mwifiex: rework internal scan for association Avinash Patil
@ 2014-08-28 18:41 ` John W. Linville
  2014-08-29  4:13   ` Avinash Patil
  0 siblings, 1 reply; 3+ messages in thread
From: John W. Linville @ 2014-08-28 18:41 UTC (permalink / raw)
  To: Avinash Patil
  Cc: linux-wireless@vger.kernel.org, Amitkumar Karwar, Cathy Luo,
	Marc Yang, Xinming Hu

This one either, nor the rest in the series.

Please rebase as necessary and repost the series.  I'm dropping
these patches.

John

On Mon, Aug 18, 2014 at 02:12:50AM -0700, Avinash Patil wrote:
> There was an issue with internal scan during association wherein
> we would complete internal scan on first scan command response.
> This would cause association failure if AP is not found in first scan
> response e.g. APs from A band.
> This patch fixes this issue by completing internal scan only when all
> scan commands from scan pending queue and command pending queue are
> sent to FW and response to last scan command is received.
> 
> Signed-off-by: Avinash Patil <patila@marvell.com>
> Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
> Signed-off-by: Cathy Luo <cluo@marvell.com>
> Tested-by: Xinmin Hu <huxm@marvell.com>
> ---
>  drivers/net/wireless/mwifiex/scan.c | 27 ++++++++++++++++++++++++++-
>  1 file changed, 26 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/wireless/mwifiex/scan.c b/drivers/net/wireless/mwifiex/scan.c
> index dee717a..bec48cc 100644
> --- a/drivers/net/wireless/mwifiex/scan.c
> +++ b/drivers/net/wireless/mwifiex/scan.c
> @@ -1970,9 +1970,34 @@ int mwifiex_cmd_802_11_scan_ext(struct mwifiex_private *priv,
>  /* This function handles the command response of extended scan */
>  int mwifiex_ret_802_11_scan_ext(struct mwifiex_private *priv)
>  {
> +       struct mwifiex_adapter *adapter = priv->adapter;
> +       struct host_cmd_ds_command *cmd_ptr;
> +       struct cmd_ctrl_node *cmd_node;
> +       unsigned long cmd_flags, scan_flags;
> +       bool complete_scan = false;
> +
>         dev_dbg(priv->adapter->dev, "info: EXT scan returns successfully\n");
> 
> -       mwifiex_complete_scan(priv);
> +       spin_lock_irqsave(&adapter->cmd_pending_q_lock, cmd_flags);
> +       spin_lock_irqsave(&adapter->scan_pending_q_lock, scan_flags);
> +       if (list_empty(&adapter->scan_pending_q)) {
> +               complete_scan = true;
> +               list_for_each_entry(cmd_node, &adapter->cmd_pending_q, list) {
> +                       cmd_ptr = (void *)cmd_node->cmd_skb->data;
> +                       if (le16_to_cpu(cmd_ptr->command) ==
> +                           HostCmd_CMD_802_11_SCAN_EXT) {
> +                               dev_dbg(priv->adapter->dev,
> +                                       "Scan pending in command pending list");
> +                               complete_scan = false;
> +                               break;
> +                       }
> +               }
> +       }
> +       spin_unlock_irqrestore(&adapter->scan_pending_q_lock, scan_flags);
> +       spin_unlock_irqrestore(&adapter->cmd_pending_q_lock, cmd_flags);
> +
> +       if (complete_scan)
> +               mwifiex_complete_scan(priv);
> 
>         return 0;
>  }
> -- 
> 1.8.1.4
> 

-- 
John W. Linville		Someday the world will need a hero, and you
linville@tuxdriver.com			might be all we have.  Be ready.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* RE: [PATCH 2/4] mwifiex: rework internal scan for association
  2014-08-28 18:41 ` John W. Linville
@ 2014-08-29  4:13   ` Avinash Patil
  0 siblings, 0 replies; 3+ messages in thread
From: Avinash Patil @ 2014-08-29  4:13 UTC (permalink / raw)
  To: John W. Linville
  Cc: linux-wireless@vger.kernel.org, Amitkumar Karwar, Cathy Luo,
	Marc Yang, Xinming Hu

Hi John,

Thanks for the information.
I will rebase these patches on top of 3.17rc2 and resend them.

Thanks,
Avinash

-----Original Message-----
From: John W. Linville [mailto:linville@tuxdriver.com] 
Sent: Friday, August 29, 2014 12:12 AM
To: Avinash Patil
Cc: linux-wireless@vger.kernel.org; Amitkumar Karwar; Cathy Luo; Marc Yang; Xinming Hu
Subject: Re: [PATCH 2/4] mwifiex: rework internal scan for association

This one either, nor the rest in the series.

Please rebase as necessary and repost the series.  I'm dropping these patches.

John

On Mon, Aug 18, 2014 at 02:12:50AM -0700, Avinash Patil wrote:
> There was an issue with internal scan during association wherein we 
> would complete internal scan on first scan command response.
> This would cause association failure if AP is not found in first scan 
> response e.g. APs from A band.
> This patch fixes this issue by completing internal scan only when all 
> scan commands from scan pending queue and command pending queue are 
> sent to FW and response to last scan command is received.
> 
> Signed-off-by: Avinash Patil <patila@marvell.com>
> Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
> Signed-off-by: Cathy Luo <cluo@marvell.com>
> Tested-by: Xinmin Hu <huxm@marvell.com>
> ---
>  drivers/net/wireless/mwifiex/scan.c | 27 ++++++++++++++++++++++++++-
>  1 file changed, 26 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/wireless/mwifiex/scan.c 
> b/drivers/net/wireless/mwifiex/scan.c
> index dee717a..bec48cc 100644
> --- a/drivers/net/wireless/mwifiex/scan.c
> +++ b/drivers/net/wireless/mwifiex/scan.c
> @@ -1970,9 +1970,34 @@ int mwifiex_cmd_802_11_scan_ext(struct 
> mwifiex_private *priv,
>  /* This function handles the command response of extended scan */  
> int mwifiex_ret_802_11_scan_ext(struct mwifiex_private *priv)  {
> +       struct mwifiex_adapter *adapter = priv->adapter;
> +       struct host_cmd_ds_command *cmd_ptr;
> +       struct cmd_ctrl_node *cmd_node;
> +       unsigned long cmd_flags, scan_flags;
> +       bool complete_scan = false;
> +
>         dev_dbg(priv->adapter->dev, "info: EXT scan returns 
> successfully\n");
> 
> -       mwifiex_complete_scan(priv);
> +       spin_lock_irqsave(&adapter->cmd_pending_q_lock, cmd_flags);
> +       spin_lock_irqsave(&adapter->scan_pending_q_lock, scan_flags);
> +       if (list_empty(&adapter->scan_pending_q)) {
> +               complete_scan = true;
> +               list_for_each_entry(cmd_node, &adapter->cmd_pending_q, list) {
> +                       cmd_ptr = (void *)cmd_node->cmd_skb->data;
> +                       if (le16_to_cpu(cmd_ptr->command) ==
> +                           HostCmd_CMD_802_11_SCAN_EXT) {
> +                               dev_dbg(priv->adapter->dev,
> +                                       "Scan pending in command pending list");
> +                               complete_scan = false;
> +                               break;
> +                       }
> +               }
> +       }
> +       spin_unlock_irqrestore(&adapter->scan_pending_q_lock, scan_flags);
> +       spin_unlock_irqrestore(&adapter->cmd_pending_q_lock, 
> + cmd_flags);
> +
> +       if (complete_scan)
> +               mwifiex_complete_scan(priv);
> 
>         return 0;
>  }
> --
> 1.8.1.4
> 

-- 
John W. Linville		Someday the world will need a hero, and you
linville@tuxdriver.com			might be all we have.  Be ready.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-08-29  4:13 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-18  9:12 [PATCH 2/4] mwifiex: rework internal scan for association Avinash Patil
2014-08-28 18:41 ` John W. Linville
2014-08-29  4:13   ` Avinash Patil

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).