diag: Update masks to peripherals in workqueue context
The patch updates the logging masks to diag_id supported peripherals
in workqueue context after processing diag_id request control packet
for root pd and clears the mask_update variable after the peripheral
is updated with logging mask.
CRs-Fixed: 2147011
Change-Id: I948da01ca63bd98923c87cace3e35aedacc2482c
Signed-off-by: Manoj Prabhu B <bmanoj@codeaurora.org>
diff --git a/drivers/char/diag/diagfwd_cntl.c b/drivers/char/diag/diagfwd_cntl.c
index eaca17a..162d53f 100644
--- a/drivers/char/diag/diagfwd_cntl.c
+++ b/drivers/char/diag/diagfwd_cntl.c
@@ -39,9 +39,6 @@
for (peripheral = 0; peripheral <= NUM_PERIPHERALS; peripheral++) {
if (!(driver->mask_update & PERIPHERAL_MASK(peripheral)))
continue;
- mutex_lock(&driver->cntl_lock);
- driver->mask_update ^= PERIPHERAL_MASK(peripheral);
- mutex_unlock(&driver->cntl_lock);
diag_send_updates_peripheral(peripheral);
}
}
@@ -834,7 +831,7 @@
*/
if (root_str) {
driver->diag_id_sent[peripheral] = 1;
- diag_send_updates_peripheral(peripheral);
+ queue_work(driver->cntl_wq, &driver->mask_update_work);
}
fwd_info = &peripheral_info[TYPE_DATA][peripheral];
diagfwd_buffers_init(fwd_info);