All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Mack <zonque@gmail.com>
To: Bing Zhao <bzhao@marvell.com>
Cc: linux-wireless@vger.kernel.org,
	"John W. Linville" <linville@tuxdriver.com>,
	Sven Neumann <s.neumann@raumfeld.com>,
	Andreas Fenkart <andreas.fenkart@streamunlimited.com>,
	Dylan Reid <dgreid@chromium.org>,
	Paul Stewart <pstew@chromium.org>,
	Amitkumar Karwar <akarwar@marvell.com>
Subject: Re: [PATCH 3.12] mwifiex: fix SDIO interrupt lost issue
Date: Fri, 27 Sep 2013 20:55:17 +0200	[thread overview]
Message-ID: <5245D495.3010505@gmail.com> (raw)
In-Reply-To: <1380304538-2816-1-git-send-email-bzhao@marvell.com>

On 27.09.2013 19:55, Bing Zhao wrote:
> From: Amitkumar Karwar <akarwar@marvell.com>
> 
> 601216e "mwifiex: process RX packets in SDIO IRQ thread directly"
> introduced a command timeout issue which can be reproduced easily on
> an AM33xx platform using a test application written by Daniel Mack:
> 
> https://gist.github.com/zonque/6579314

Actually, just out of pure curiosity, I would be interested whether the
issue is also as easily reproducible on other platform like Chromebooks.
Could anyone give that a try maybe?


Thanks,
Daniel


> 
> mwifiex_main_process() is called from both the SDIO handler and
> the workqueue. In case an interrupt occurs right after the
> int_status check, but before updating the mwifiex_processing flag,
> this interrupt gets lost, resulting in a command timeout and
> consequently a card reset.
> 
> Let main_proc_lock protect both int_status and mwifiex_processing
> flag. This fixes the interrupt lost issue.
> 
> Cc: <stable@vger.kernel.org> # 3.7+
> Reported-by: Sven Neumann <s.neumann@raumfeld.com>
> Reported-by: Andreas Fenkart <andreas.fenkart@streamunlimited.com>
> Tested-by: Daniel Mack <zonque@gmail.com>
> Reviewed-by: Dylan Reid <dgreid@chromium.org>
> Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
> Signed-off-by: Bing Zhao <bzhao@marvell.com>
> Signed-off-by: Paul Stewart <pstew@chromium.org>
> ---
>  drivers/net/wireless/mwifiex/main.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/wireless/mwifiex/main.c b/drivers/net/wireless/mwifiex/main.c
> index fd77833..c2b91f5 100644
> --- a/drivers/net/wireless/mwifiex/main.c
> +++ b/drivers/net/wireless/mwifiex/main.c
> @@ -358,10 +358,12 @@ process_start:
>  		}
>  	} while (true);
>  
> -	if ((adapter->int_status) || IS_CARD_RX_RCVD(adapter))
> +	spin_lock_irqsave(&adapter->main_proc_lock, flags);
> +	if ((adapter->int_status) || IS_CARD_RX_RCVD(adapter)) {
> +		spin_unlock_irqrestore(&adapter->main_proc_lock, flags);
>  		goto process_start;
> +	}
>  
> -	spin_lock_irqsave(&adapter->main_proc_lock, flags);
>  	adapter->mwifiex_processing = false;
>  	spin_unlock_irqrestore(&adapter->main_proc_lock, flags);
>  
> 


  reply	other threads:[~2013-09-27 18:55 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-27 17:55 [PATCH 3.12] mwifiex: fix SDIO interrupt lost issue Bing Zhao
2013-09-27 18:55 ` Daniel Mack [this message]
     [not found]   ` <CAMcMvsjFurVFS2f1zCPt0uqh2gCYAvHOvos-pY=k06=ynDH=aQ@mail.gmail.com>
2013-09-28  9:46     ` Daniel Mack
2013-10-15 10:38 ` Daniel Mack
2013-10-15 16:59   ` John W. Linville

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=5245D495.3010505@gmail.com \
    --to=zonque@gmail.com \
    --cc=akarwar@marvell.com \
    --cc=andreas.fenkart@streamunlimited.com \
    --cc=bzhao@marvell.com \
    --cc=dgreid@chromium.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    --cc=pstew@chromium.org \
    --cc=s.neumann@raumfeld.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.