On Wed, 1 Mar 2017 19:20:07 -0500 Allain Legacy <allain.leg...@windriver.com> wrote:
> + > +static void > +avp_dev_close(struct rte_eth_dev *eth_dev) > +{ > + struct avp_dev *avp = AVP_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); > + int ret; > + > + rte_spinlock_lock(&avp->lock); > + if (avp->flags & AVP_F_DETACHED) { > + PMD_DRV_LOG(ERR, "Operation not supported during VM live > migration\n"); > + goto unlock; > + } > + > + /* remember current link state */ > + avp->flags &= ~AVP_F_LINKUP; > + avp->flags &= ~AVP_F_CONFIGURED; > + > + ret = avp_dev_disable_interrupts(eth_dev); > + if (ret < 0) { > + PMD_DRV_LOG(ERR, "Failed to disable interrupts\n"); > + /* continue */ > + } > + > + /* update device state */ > + ret = avp_dev_ctrl_shutdown(eth_dev); > + if (ret < 0) { > + PMD_DRV_LOG(ERR, "Device shutdown failed by host, ret=%d\n", > + ret); > + goto unlock; > + } > + > +unlock: > + rte_spinlock_unlock(&avp->lock); > +} The second goto is unnecessary.