Message ID | 1469534545-14478-2-git-send-email-u.kleine-koenig@pengutronix.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 07/26/2016 03:02 PM, Uwe Kleine-König wrote: > The only user of cpdma_control_set (i.e. cpsw_ndo_open) doesn't check > the return code, so it doesn't matter, which error triggers. So the > checks that are independant of the fields protected by ctlr->lock can be > moved out of the critical section. > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com> > --- > drivers/net/ethernet/ti/davinci_cpdma.c | 20 +++++++++----------- > 1 file changed, 9 insertions(+), 11 deletions(-) > > diff --git a/drivers/net/ethernet/ti/davinci_cpdma.c b/drivers/net/ethernet/ti/davinci_cpdma.c > index 73638f7a55d4..5ffa04a306c6 100644 > --- a/drivers/net/ethernet/ti/davinci_cpdma.c > +++ b/drivers/net/ethernet/ti/davinci_cpdma.c > @@ -877,23 +877,21 @@ int cpdma_control_set(struct cpdma_ctlr *ctlr, int control, int value) > int ret; > u32 val; > > - spin_lock_irqsave(&ctlr->lock, flags); > - > - ret = -ENOTSUPP; > if (!ctlr->params.has_ext_regs) > - goto unlock_ret; > + return -ENOTSUPP; > > - ret = -EINVAL; > - if (ctlr->state != CPDMA_STATE_ACTIVE) > - goto unlock_ret; > - > - ret = -ENOENT; > if (control < 0 || control >= ARRAY_SIZE(controls)) > - goto unlock_ret; > + return -ENOENT; > > - ret = -EPERM; > if ((info->access & ACCESS_WO) != ACCESS_WO) > + return -EPERM; > + > + spin_lock_irqsave(&ctlr->lock, flags); > + > + if (ctlr->state != CPDMA_STATE_ACTIVE) { > + ret = -EINVAL; > goto unlock_ret; > + } > > val = dma_reg_read(ctlr, info->reg); > val &= ~(info->mask << info->shift); >
On Tuesday 26 July 2016 05:32 PM, Uwe Kleine-König wrote: > The only user of cpdma_control_set (i.e. cpsw_ndo_open) doesn't check > the return code, so it doesn't matter, which error triggers. So the > checks that are independant of the fields protected by ctlr->lock can be > moved out of the critical section. > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Reviewed-by: Mugunthan V N <mugunthanvnm@ti.com> Regards Mugunthan V N -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/ethernet/ti/davinci_cpdma.c b/drivers/net/ethernet/ti/davinci_cpdma.c index 73638f7a55d4..5ffa04a306c6 100644 --- a/drivers/net/ethernet/ti/davinci_cpdma.c +++ b/drivers/net/ethernet/ti/davinci_cpdma.c @@ -877,23 +877,21 @@ int cpdma_control_set(struct cpdma_ctlr *ctlr, int control, int value) int ret; u32 val; - spin_lock_irqsave(&ctlr->lock, flags); - - ret = -ENOTSUPP; if (!ctlr->params.has_ext_regs) - goto unlock_ret; + return -ENOTSUPP; - ret = -EINVAL; - if (ctlr->state != CPDMA_STATE_ACTIVE) - goto unlock_ret; - - ret = -ENOENT; if (control < 0 || control >= ARRAY_SIZE(controls)) - goto unlock_ret; + return -ENOENT; - ret = -EPERM; if ((info->access & ACCESS_WO) != ACCESS_WO) + return -EPERM; + + spin_lock_irqsave(&ctlr->lock, flags); + + if (ctlr->state != CPDMA_STATE_ACTIVE) { + ret = -EINVAL; goto unlock_ret; + } val = dma_reg_read(ctlr, info->reg); val &= ~(info->mask << info->shift);
The only user of cpdma_control_set (i.e. cpsw_ndo_open) doesn't check the return code, so it doesn't matter, which error triggers. So the checks that are independant of the fields protected by ctlr->lock can be moved out of the critical section. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> --- drivers/net/ethernet/ti/davinci_cpdma.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-)