On Wed, Nov 24, 2010 at 02:56, Hari Kanigeri <h-kanigeri2@xxxxxx> wrote: > Schedule the Tasklet to send only when mailbox fifo is full and there are > pending messages in kifo, else send the message directly in the Process Typo -> kifo > context. This would avoid needless scheduling of Tasklet for every message > transfer > > Signed-off-by: Hari Kanigeri <h-kanigeri2@xxxxxx> > --- > arch/arm/plat-omap/mailbox.c | 9 +++++++-- > 1 files changed, 7 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/plat-omap/mailbox.c b/arch/arm/plat-omap/mailbox.c > index 13698ab..f4177df 100644 > --- a/arch/arm/plat-omap/mailbox.c > +++ b/arch/arm/plat-omap/mailbox.c > @@ -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); > -- > 1.7.0 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html