From: Ilias Apalodimas Date: Tue, 9 Jul 2019 12:35:53 +0000 (+0300) Subject: net: netsec: start using buffers if page_pool registration succeeded X-Git-Tag: v5.3-rc1~140^2~12 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=7715ff1647139bc87aa20bd456ac4f143411b377;p=tomoyo%2Ftomoyo-test1.git net: netsec: start using buffers if page_pool registration succeeded The current driver starts using page_pool buffers before calling xdp_rxq_info_reg_mem_model(). Start using the buffers after the registration succeeded, so we won't have to call page_pool_request_shutdown() in case of failure Fixes: 5c67bf0ec4d0 ("net: netsec: Use page_pool API") Signed-off-by: Ilias Apalodimas Signed-off-by: David S. Miller --- diff --git a/drivers/net/ethernet/socionext/netsec.c b/drivers/net/ethernet/socionext/netsec.c index d7307ab90d74..c3a4f86f56ee 100644 --- a/drivers/net/ethernet/socionext/netsec.c +++ b/drivers/net/ethernet/socionext/netsec.c @@ -1309,6 +1309,15 @@ static int netsec_setup_rx_dring(struct netsec_priv *priv) goto err_out; } + err = xdp_rxq_info_reg(&dring->xdp_rxq, priv->ndev, 0); + if (err) + goto err_out; + + err = xdp_rxq_info_reg_mem_model(&dring->xdp_rxq, MEM_TYPE_PAGE_POOL, + dring->page_pool); + if (err) + goto err_out; + for (i = 0; i < DESC_NUM; i++) { struct netsec_desc *desc = &dring->desc[i]; dma_addr_t dma_handle; @@ -1327,14 +1336,6 @@ static int netsec_setup_rx_dring(struct netsec_priv *priv) } netsec_rx_fill(priv, 0, DESC_NUM); - err = xdp_rxq_info_reg(&dring->xdp_rxq, priv->ndev, 0); - if (err) - goto err_out; - - err = xdp_rxq_info_reg_mem_model(&dring->xdp_rxq, MEM_TYPE_PAGE_POOL, - dring->page_pool); - if (err) - goto err_out; return 0;