The Keystone II DMA hardware can only access addresses in the lower 2 GiB of SDRAM. This patch makes sure the RX buffers are allocated using the __GFP_DMA flag so they meet this requirement.
Signed-off-by: WingMan Kwok <w-kw...@ti.com> Signed-off-by: Reece R. Pollack <x0183...@ti.com> --- drivers/net/ethernet/ti/netcp_core.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/ti/netcp_core.c b/drivers/net/ethernet/ti/netcp_core.c index 2d07701..39c68df 100644 --- a/drivers/net/ethernet/ti/netcp_core.c +++ b/drivers/net/ethernet/ti/netcp_core.c @@ -820,11 +820,13 @@ static void netcp_allocate_rx_buf(struct netcp_intf *netcp, int fdq) SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); if (primary_buf_len <= PAGE_SIZE) { - bufptr = netdev_alloc_frag(primary_buf_len); + bufptr = __netdev_alloc_frag(primary_buf_len, + GFP_ATOMIC | __GFP_COLD | + __GFP_DMA); pad[1] = primary_buf_len; } else { bufptr = kmalloc(primary_buf_len, GFP_ATOMIC | - GFP_DMA32 | __GFP_COLD); + __GFP_COLD | __GFP_DMA); pad[1] = 0; } @@ -838,9 +840,10 @@ static void netcp_allocate_rx_buf(struct netcp_intf *netcp, int fdq) } else { /* Allocate a secondary receive queue entry */ - page = alloc_page(GFP_ATOMIC | GFP_DMA32 | __GFP_COLD); + page = alloc_page(GFP_ATOMIC | __GFP_COLD | __GFP_DMA); if (unlikely(!page)) { - dev_warn_ratelimited(netcp->ndev_dev, "Secondary page alloc failed\n"); + dev_warn_ratelimited(netcp->ndev_dev, + "Secondary page alloc failed\n"); goto fail; } buf_len = PAGE_SIZE; -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html