From 85c2118a1198532875e0b1db9979b4057c53a8f7 Mon Sep 17 00:00:00 2001 From: Chris Lew Date: Wed, 22 Apr 2020 16:09:43 -0700 Subject: [PATCH] neuron: block_client: Wait for channel to init Wait until all conditions are met instead of busy looping to check if the channels are finished initializing. Change-Id: I50bd3bad6ccf3f4957ed0a98cdceed45d49fe851 Acked-by: Chris Henroid Signed-off-by: Chris Lew --- net/neuron/protocol/prot_block_client.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/net/neuron/protocol/prot_block_client.c b/net/neuron/protocol/prot_block_client.c index f82d0b92b5de..651129f124fc 100644 --- a/net/neuron/protocol/prot_block_client.c +++ b/net/neuron/protocol/prot_block_client.c @@ -178,8 +178,8 @@ static int protocol_block_client_thread(void *data) skb_req = NULL; /* Wait for the channels to start */ + wakeup_mask = 0; while (!kthread_should_stop()) { - wakeup_mask = 0; if (!channel_dev->max_size || !channel_dev->queue_length) wakeup_mask |= CHANNEL_BIT(C_IN); @@ -190,8 +190,13 @@ static int protocol_block_client_thread(void *data) break; wait_event_killable(kdata->wait_q, - kthread_should_stop() || - (kdata->wakeups & wakeup_mask)); + (kdata->wakeups && + channel_dev->max_size && + channel_dev->queue_length && + channel_dev_r->max_size && + channel_dev_r->queue_length) || + kthread_should_stop()); + wakeup_mask = 0; } if (kthread_should_stop()) return 0;