Subject: [PATCH 2/6] brcmfmac: Handling the interrupt in ISR directly for non-OOB

From: [email-masked] (Stephen Warren)
Date: Tue, 28 Aug 2012 15:39:40 -0700

On 08/28/2012 09:45 AM, Franky Lin wrote:
> On 08/28/2012 04:13 AM, Wei Ni wrote:
>> On Tue, 2012-08-28 at 04:06 +0800, Stephen Warren wrote:
>>> On 08/27/2012 09:24 AM, Arend van Spriel wrote:
>>>> On 08/27/2012 12:25 PM, Wei Ni wrote:
>>>>> In case of inband interrupts, if we handle the interrupt in dpc
>>>>> thread,
>>>>> two level of thread switching takes place to process wifi interrupts.
>>>>> One in SDHCI driver and the other in Wifi driver. This may cause the
>>>>> system
>>>>> instability.
...
>>>> Not sure if I can follow this explanation. The isr is called with host
>>>> claimed (by sdio_irq_thread) and all it does is at a linked list member
>>>> and signal the dpc thread. After doing this the host is released.
>>>
>>> Is the issue something like the ISR handler or first level of threading
>>> does:
>>>
>>> * Trigger DPC
>>> * Re-enable interrupt
>>>
>>> So that the interrupt then fires again before the triggered DPC can run
>>> to handle/clear it, thus causing an interrupt storm?
>>>
>>> Whereas handling the interrupt directly prevents this race condition?
>>
>> Above is my understanding.
> 
> I understand the issue here and totally agree that we should treat
> in-band and out-band interrupts differently. But my concern is that the
> behavior of releasing the host before calling brcmf_sdbrcm_isr and grab
> it after is likely error prone. Also we are restructuring the dpc
> routine internally and it's almost done. I will find a better solution
> for in-band interrupt and get it the queue as well. So I suggest
> dropping this patch.

Franky, do you know which kernel release the DPC restructuring will make
it into? I ask because I can't apply the rest of the patches in this
series without first resolving the stability issues with the Broadcom
WiFi enabled, since that'd de-stabilize the Tegra platform
significantly, and I'd like to plan when we can apply these patches to
Tegra. Thanks!