diff options
author | Ilias Apalodimas <ilias.apalodimas@linaro.org> | 2019-07-09 15:35:53 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-07-09 13:00:01 -0700 |
commit | 7715ff1647139bc87aa20bd456ac4f143411b377 (patch) | |
tree | 88f1ce3914a352dbc997af8b501190af2e06de56 /drivers/net/ethernet/socionext | |
parent | de90573e30948459a37e32f432e65529573ff757 (diff) |
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 <ilias.apalodimas@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/socionext')
-rw-r--r-- | drivers/net/ethernet/socionext/netsec.c | 17 |
1 files changed, 9 insertions, 8 deletions
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; |