2011/8/12 Franky Lin <frankyl@xxxxxxxxxxxx>: > On 08/12/2011 09:44 AM, Arend van Spriel wrote: >> >> On 08/12/2011 04:07 PM, Rafał Miłecki wrote: >>> >>> 2011/8/12 Arend van Spriel<arend@xxxxxxxxxxxx>: >>>> >>>> @@ -3537,27 +3544,39 @@ static s32 brcmf_event_handler(void *data) >>>> (struct brcmf_cfg80211_priv *)data; >>>> struct sched_param param = {.sched_priority = MAX_RT_PRIO - 1 }; >>>> struct brcmf_cfg80211_event_q *e; >>>> + DECLARE_WAITQUEUE(wait, current); >>>> >>>> sched_setscheduler(current, SCHED_FIFO,¶m); >>>> allow_signal(SIGTERM); >>>> - while (likely(!down_interruptible(&cfg_priv->event_sync))) { >>>> + add_wait_queue(&cfg_priv->event_waitq,&wait); >>>> + while (1) { >>>> + prepare_to_wait(&cfg_priv->event_waitq,&wait, >>>> + TASK_INTERRUPTIBLE); >>>> + >>>> + schedule(); >>>> + >>>> if (kthread_should_stop()) >>>> break; >>>> + >>>> e = brcmf_deq_event(cfg_priv); >>>> if (unlikely(!e)) { >>>> WL_ERR("event queue empty...\n"); >>>> - BUG(); >>>> + continue; >>>> } >>>> - WL_INFO("event type (%d)\n", e->etype); >>>> - if (cfg_priv->el.handler[e->etype]) >>>> - cfg_priv->el.handler[e->etype](cfg_priv, >>>> - >>>> cfg_to_ndev(cfg_priv), >>>> -&e->emsg, e->edata); >>>> - else >>>> - WL_INFO("Unknown Event (%d): ignoring\n", >>>> e->etype); >>>> >>>> - brcmf_put_event(e); >>>> + do { >>>> + WL_INFO("event type (%d)\n", e->etype); >>>> + if (cfg_priv->el.handler[e->etype]) >>>> + cfg_priv->el.handler[e->etype](cfg_priv, >>>> + cfg_to_ndev(cfg_priv), >>>> +&e->emsg, e->edata); >>>> + else >>>> + WL_INFO("Unknown Event (%d): >>>> ignoring\n", >>>> + e->etype); >>>> + brcmf_put_event(e); >>>> + } while ((e = brcmf_deq_event(cfg_priv))); >>> >>> if (((((care_coding_style))))) >>> fix(); >>> >>> :-) >>> >> >> I assume you refer to the indents above. Not sure what exactly happened >> there, but the patch email as I received it looks. Could it be a mail >> reader issue? > > Hi Rafał, > > If you are refering to this line >>>> + } while ((e = brcmf_deq_event(cfg_priv))); > > The extra parentheses are added to fix a compiler warning: > drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c: In function > ‘brcmf_event_handler’: > drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c:3576: warning: > suggest parentheses around assignment used as truth value Sorry for confusing you, I though it's OK to use while (e = sth()) I caused a little of mess and discussion, ups :| -- Rafał ��.n��������+%������w��{.n�����{���zW����ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f