diff options
Diffstat (limited to 'drivers/net/ethernet')
-rw-r--r-- | drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c index 31f84ae41653..9789a082a3a8 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c @@ -203,7 +203,7 @@ static int dpaa2_xsk_enable_pool(struct net_device *dev, { struct dpaa2_eth_priv *priv = netdev_priv(dev); struct dpni_pools_cfg pools_params = { 0 }; - int i, err; + int i, err, err2; bool up; if (priv->dpni_attrs.wriop_version != DPAA2_WRIOP_VERSION(3, 0, 0)) @@ -242,7 +242,7 @@ static int dpaa2_xsk_enable_pool(struct net_device *dev, priv->bp[priv->num_bps] = dpaa2_eth_allocate_dpbp(priv); if (IS_ERR(priv->bp[priv->num_bps])) { err = PTR_ERR(priv->bp[priv->num_bps]); - goto err_mem_model; + goto err_bp_alloc; } priv->channel[qid]->xsk_zc = true; priv->channel[qid]->xsk_pool = pool; @@ -260,7 +260,7 @@ static int dpaa2_xsk_enable_pool(struct net_device *dev, err = dpni_set_pools(priv->mc_io, 0, priv->mc_token, &pools_params); if (err) { netdev_err(dev, "dpni_set_pools() failed\n"); - goto err_free_dpbp; + goto err_set_pools; } if (up) { @@ -274,19 +274,18 @@ static int dpaa2_xsk_enable_pool(struct net_device *dev, return 0; -err_free_dpbp: - err |= dpaa2_xsk_disable_pool(dev, qid); - if (up) - dpaa2_eth_open(dev); - return err; +err_set_pools: + err2 = dpaa2_xsk_disable_pool(dev, qid); + if (err2) + netdev_err(dev, "dpaa2_xsk_disable_pool() failed %d\n", err2); +err_bp_alloc: + err2 = xdp_rxq_info_reg_mem_model(&priv->channel[qid]->xdp_rxq, + MEM_TYPE_PAGE_ORDER0, NULL); + if (err2) + netdev_err(dev, "xsk_rxq_info_reg_mem_model() failed with %d)\n", err2); err_mem_model: - err = xdp_rxq_info_reg_mem_model(&priv->channel[qid]->xdp_rxq, - MEM_TYPE_PAGE_ORDER0, NULL); - if (err) - netdev_err(dev, "xsk_rxq_info_reg_mem_model() failed (err = %d)\n", - err); -err_dma_unmap: xsk_pool_dma_unmap(pool, 0); +err_dma_unmap: if (up) dpaa2_eth_open(dev); |