From: Michael Bringmann <michael.bringm...@lsi.com> Correct 'slot' argument to outb msg callback, and remove unnecessary memory allocations.
Signed-off-by: Michael Bringmann <michael.bringm...@lsi.com> --- drivers/rapidio/devices/lsi/axxia-rio-irq.c | 47 +++++++++------------------ drivers/rapidio/devices/lsi/axxia-rio-irq.h | 6 ---- 2 files changed, 15 insertions(+), 38 deletions(-) diff --git a/drivers/rapidio/devices/lsi/axxia-rio-irq.c b/drivers/rapidio/devices/lsi/axxia-rio-irq.c index 91175a0..2ffa34b 100644 --- a/drivers/rapidio/devices/lsi/axxia-rio-irq.c +++ b/drivers/rapidio/devices/lsi/axxia-rio-irq.c @@ -919,9 +919,6 @@ static void release_dme(struct kref *kref) struct rio_msg_desc *desc; int i; - if (me->tx_ack != NULL) - kfree(me->tx_ack); - if (me->desc) { for (i = 0, desc = me->desc; i < me->entries; i++, desc++) { if (desc->msg_virt != NULL) @@ -1116,12 +1113,6 @@ static struct rio_msg_dme *alloc_message_engine(struct rio_mport *mport, entries, GFP_KERNEL); if (!me->descriptors) goto err; - if (ack_buf) { - me->tx_ack = kzalloc(sizeof(struct rio_msg_tx_ack) * entries, - GFP_KERNEL); - if (!me->tx_ack) - goto err; - } me->entries = entries; me->dev_id = dev_id; me->entries_in_use = 0; @@ -1207,7 +1198,7 @@ static void ob_dme_irq_handler(struct rio_irq_handler *h, u32 state) struct rio_mport *mport = h->mport; struct rio_priv *priv = mport->priv; struct rio_msg_dme *mbox = h->data; - int i, ack_id = 0; + int i; u32 dme_stat, dw0, dme_no = 31 - CNTLZW(state); u32 dme_ctrl; unsigned long flags; @@ -1244,11 +1235,6 @@ static void ob_dme_irq_handler(struct rio_irq_handler *h, u32 state) if ((dw0 & DME_DESC_DW0_VALID) && (dw0 & DME_DESC_DW0_READY_MASK)) { - struct rio_msg_tx_ack *tx_ack = &mbox->tx_ack[ack_id++]; - - tx_ack->err_state = DESC_STATE_TO_ERRNO(dw0); - tx_ack->cookie = desc->cookie; - if (!priv->internalDesc) { *((u32 *)DESC_TABLE_W0_MEM(mbox, desc->desc_no)) = dw0 & DME_DESC_DW0_NXT_DESC_VALID; @@ -1260,26 +1246,23 @@ static void ob_dme_irq_handler(struct rio_irq_handler *h, u32 state) __ob_dme_dw_dbg(priv, dw0); mbox->entries_in_use--; - } - } - spin_unlock_irqrestore(&mbox->lock, flags); - /** - * UP-call to net device handler - */ - if (mport->outb_msg[dme_no].mcback) { - for (i = 0; i < ack_id; i++) { - struct rio_msg_tx_ack *tx_ack = &mbox->tx_ack[i]; - - __ob_dme_event_dbg(priv, dme_no, - 1 << RIO_OB_DME_TX_DESC_READY); - mport->outb_msg[dme_no].mcback(mport, - mbox->dev_id, - dme_no, - tx_ack->err_state, - tx_ack->cookie); + /** + * UP-call to net device handler + */ + if (mport->outb_msg[dme_no].mcback) { + __ob_dme_event_dbg(priv, dme_no, + 1 << RIO_OB_DME_TX_DESC_READY); + + mport->outb_msg[dme_no].mcback(mport, + mbox->dev_id, + dme_no, + i, + desc->cookie); + } } } + spin_unlock_irqrestore(&mbox->lock, flags); } /** diff --git a/drivers/rapidio/devices/lsi/axxia-rio-irq.h b/drivers/rapidio/devices/lsi/axxia-rio-irq.h index b456541..d98ebfd 100644 --- a/drivers/rapidio/devices/lsi/axxia-rio-irq.h +++ b/drivers/rapidio/devices/lsi/axxia-rio-irq.h @@ -205,11 +205,6 @@ struct rio_msg_desc { void *cookie; }; -struct rio_msg_tx_ack { - int err_state; - void *cookie; -}; - struct rio_msg_dme { spinlock_t lock; char name[16]; @@ -227,7 +222,6 @@ struct rio_msg_dme { int dme_no; struct rio_msg_desc *desc; struct rio_desc *descriptors; - struct rio_msg_tx_ack *tx_ack; #ifdef CONFIG_SRIO_IRQ_TIME u64 start_irq_tb; u64 start_thrd_tb; -- 1.7.9.5 -- _______________________________________________ linux-yocto mailing list linux-yo...@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto