[PATCH 01/14] staging: brcm80211: use wait queues instead of semaphores in wl_cfg80211.c

Arend van Spriel arend at broadcom.com
Fri Aug 12 16:44:39 UTC 2011


On 08/12/2011 04:07 PM, Rafał Miłecki wrote:
> 2011/8/12 Arend van Spriel<arend at broadcom.com>:
>> @@ -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,&param);
>>         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?

Gr. AvS

-- 
Almost nobody dances sober, unless they happen to be insane.
-- H.P. Lovecraft --





More information about the devel mailing list