Messages in this thread | | | Date | Thu, 4 Jul 2019 11:48:04 +0200 | From | Jesper Dangaard Brouer <> | Subject | Re: [PATCH net-next 3/3] net: stmmac: Introducing support for Page Pool |
| |
On Wed, 3 Jul 2019 12:37:50 +0200 Jose Abreu <Jose.Abreu@synopsys.com> wrote:
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > @@ -1197,26 +1197,14 @@ static int stmmac_init_rx_buffers(struct stmmac_priv *priv, struct dma_desc *p, > int i, gfp_t flags, u32 queue) > { > struct stmmac_rx_queue *rx_q = &priv->rx_queue[queue]; > - struct sk_buff *skb; > + struct stmmac_rx_buffer *buf = &rx_q->buf_pool[i]; > > - skb = __netdev_alloc_skb_ip_align(priv->dev, priv->dma_buf_sz, flags); > - if (!skb) { > - netdev_err(priv->dev, > - "%s: Rx init fails; skb is NULL\n", __func__); > + buf->page = page_pool_dev_alloc_pages(rx_q->page_pool); > + if (!buf->page) > return -ENOMEM; > - } > - rx_q->rx_skbuff[i] = skb; > - rx_q->rx_skbuff_dma[i] = dma_map_single(priv->device, skb->data, > - priv->dma_buf_sz, > - DMA_FROM_DEVICE); > - if (dma_mapping_error(priv->device, rx_q->rx_skbuff_dma[i])) { > - netdev_err(priv->dev, "%s: DMA mapping error\n", __func__); > - dev_kfree_skb_any(skb); > - return -EINVAL; > - } > - > - stmmac_set_desc_addr(priv, p, rx_q->rx_skbuff_dma[i]); > > + buf->addr = buf->page->dma_addr;
We/Ilias added a wrapper/helper function for accessing dma_addr, as it will help us later identifying users.
page_pool_get_dma_addr(page)
> + stmmac_set_desc_addr(priv, p, buf->addr); > if (priv->dma_buf_sz == BUF_SIZE_16KiB) > stmmac_init_desc3(priv, p); >
-- Best regards, Jesper Dangaard Brouer MSc.CS, Principal Kernel Engineer at Red Hat LinkedIn: http://www.linkedin.com/in/brouer
| |