Skip to content

Commit

Permalink
OMAP: mailbox: send message in process context
Browse files Browse the repository at this point in the history
Schedule the Tasklet to send only when mailbox fifo is full and there are
pending messages in kfifo, else send the message directly in the Process
context. This would avoid needless scheduling of Tasklet for every message
transfer

Signed-off-by: Hari Kanigeri <h-kanigeri2@ti.com>
Acked-by: Hiroshi Doyu <hiroshi.doyu@nokia.com>
  • Loading branch information
Kanigeri, Hari committed Dec 2, 2010
1 parent ab66ac3 commit a42743c
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions arch/arm/plat-omap/mailbox.c
Original file line number Diff line number Diff line change
Expand Up @@ -92,20 +92,25 @@ int omap_mbox_msg_send(struct omap_mbox *mbox, mbox_msg_t msg)
struct omap_mbox_queue *mq = mbox->txq;
int ret = 0, len;

spin_lock(&mq->lock);
spin_lock_bh(&mq->lock);

if (kfifo_avail(&mq->fifo) < sizeof(msg)) {
ret = -ENOMEM;
goto out;
}

if (kfifo_is_empty(&mq->fifo) && !__mbox_poll_for_space(mbox)) {
mbox_fifo_write(mbox, msg);
goto out;
}

len = kfifo_in(&mq->fifo, (unsigned char *)&msg, sizeof(msg));
WARN_ON(len != sizeof(msg));

tasklet_schedule(&mbox->txq->tasklet);

out:
spin_unlock(&mq->lock);
spin_unlock_bh(&mq->lock);
return ret;
}
EXPORT_SYMBOL(omap_mbox_msg_send);
Expand Down

0 comments on commit a42743c

Please sign in to comment.