Amitkumar Karwar <amitkar...@gmail.com> writes:

> From: Prameela Rani Garnepudi <prameela.j0...@gmail.com>
>
> With BT support, driver has to handle two streams of data
> (i.e. wlan and BT). Actual coex implementation is in firmware.
> Coex module just schedule the packets to firmware by taking them
> from the corresponding paths.
>
> Structures for module and protocol operations are introduced for
> this purpose. Protocol operations structure is global structure
> which can be shared among different modules. Initialization of
> coex and operating mode values is moved to rsi_91x_init().
>
> Signed-off-by: Prameela Rani Garnepudi <prameela.j0...@gmail.com>
> Signed-off-by: Siva Rebbagondla <siva.rebbagon...@redpinesignals.com>
> Signed-off-by: Amitkumar Karwar <amit.kar...@redpinesignals.com>

[...]

> +static void rsi_coex_sched_tx_pkts(struct rsi_coex_ctrl_block *coex_cb)
> +{
> +     enum rsi_coex_queues coex_q;
> +     struct sk_buff *skb;
> +
> +     while (1) {
> +             coex_q = rsi_coex_determine_coex_q(coex_cb);
> +             rsi_dbg(INFO_ZONE, "queue = %d\n", coex_q);
> +
> +             if (coex_q == RSI_COEX_Q_INVALID) {
> +                     rsi_dbg(DATA_TX_ZONE, "No more pkt\n");
> +                     break;
> +             }
> +
> +             if (coex_q == RSI_COEX_Q_BT)
> +                     skb = skb_dequeue(&coex_cb->coex_tx_qs[RSI_COEX_Q_BT]);
> +     }
> +}

Neverending loops are dangerous in kernel. Can you put a limit so that
if there's a bug the loop will not run forever?

-- 
Kalle Valo

Reply via email to