Amitkumar Karwar <[email protected]> writes:
> From: Prameela Rani Garnepudi <[email protected]>
>
> 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 <[email protected]>
> Signed-off-by: Siva Rebbagondla <[email protected]>
> Signed-off-by: Amitkumar Karwar <[email protected]>
[...]
> +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