Re: [PATCH v4 4/5] OMAP: mailbox: send message in process context

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux