Re: [PATCH RFC] net: davinci_emac: Fix rollback of emac_dev_open()
From: Prabhakar Lad <prabhakar.csengg@gmail.com>
Date: 2014-03-13 18:18:11
Hi Mugunthan, On Mon, Mar 10, 2014 at 12:46 PM, Christian Riesch [off-list ref] wrote:
--On March 07, 2014 20:15 +0530 Mugunthan V N [off-list ref] wrote:quoted
On Friday 07 March 2014 07:37 PM, Christian Riesch wrote:quoted
Signed-off-by: Christian Riesch <redacted> Cc: Prabhakar Lad <prabhakar.csengg@gmail.com> Cc: Mugunthan V N <redacted> Cc: Florian Fainelli <f.fainelli@gmail.com> --- Hi again, How about this solution for fixing the rollback of emac_dev_open()? Especially the change in davinci_cpdma.c, would this break anything? The patch applies on top of [PATCH] net: davinci_emac: Replace devm_request_irq with request_irq Regards, Christian drivers/net/ethernet/ti/davinci_cpdma.c | 4 +-- drivers/net/ethernet/ti/davinci_emac.c | 44 ++++++++++++++++++++----------- 2 files changed, 31 insertions(+), 17 deletions(-)diff --git a/drivers/net/ethernet/ti/davinci_cpdma.cb/drivers/net/ethernet/ti/davinci_cpdma.c index 364d0c7..88ef270 100644--- a/drivers/net/ethernet/ti/davinci_cpdma.c +++ b/drivers/net/ethernet/ti/davinci_cpdma.c@@ -355,7 +355,7 @@ int cpdma_ctlr_stop(struct cpdma_ctlr *ctlr) int i; spin_lock_irqsave(&ctlr->lock, flags); - if (ctlr->state != CPDMA_STATE_ACTIVE) { + if (ctlr->state == CPDMA_STATE_TEARDOWN) { spin_unlock_irqrestore(&ctlr->lock, flags); return -EINVAL; }@@ -891,7 +891,7 @@ int cpdma_chan_stop(struct cpdma_chan *chan) unsigned timeout; spin_lock_irqsave(&chan->lock, flags); - if (chan->state != CPDMA_STATE_ACTIVE) { + if (chan->state == CPDMA_STATE_TEARDOWN) { spin_unlock_irqrestore(&chan->lock, flags); return -EINVAL; }Even when in idle mode chan stop should return error.Can you please explain? I do not see why. I must be able to call cpdma_ctlr_stop in idle mode to free the rx descriptors in case ndo_open in davinci_emac.c fails. Any other ideas how to solve the problem addressed in the rest of the patch?
Do you have any comments on this patch ? I have tested it on OMAP-L138 evm and works fine. If you have none comments may be Christian can consolidate this patch with earlier and repost it. Thanks, --Prabhakar Lad