Search Linux Wireless

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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/12/2011 06:44 PM, 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,&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

A colleague pointed out you probably meant the while condition. The extra braces may be there because an assignment is done, but in this case it does not make much sense.

I will fix it.

Gr. AvS

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


--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux