net: page pool: allow to pass zero flags to page_pool_init()
authorDenis Kirjanov <kda@linux-powerpc.org>
Wed, 25 Mar 2020 20:35:28 +0000 (23:35 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 30 Mar 2020 04:49:20 +0000 (21:49 -0700)
page pool API can be useful for non-DMA cases like
xen-netfront driver so let's allow to pass zero flags to
page pool flags.

v2: check DMA direction only if PP_FLAG_DMA_MAP is set

Signed-off-by: Denis Kirjanov <kda@linux-powerpc.org>
Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/page_pool.c

index 626db91..ef98372 100644 (file)
@@ -43,9 +43,11 @@ static int page_pool_init(struct page_pool *pool,
         * DMA_BIDIRECTIONAL is for allowing page used for DMA sending,
         * which is the XDP_TX use-case.
         */
-       if ((pool->p.dma_dir != DMA_FROM_DEVICE) &&
-           (pool->p.dma_dir != DMA_BIDIRECTIONAL))
-               return -EINVAL;
+       if (pool->p.flags & PP_FLAG_DMA_MAP) {
+               if ((pool->p.dma_dir != DMA_FROM_DEVICE) &&
+                   (pool->p.dma_dir != DMA_BIDIRECTIONAL))
+                       return -EINVAL;
+       }
 
        if (pool->p.flags & PP_FLAG_DMA_SYNC_DEV) {
                /* In order to request DMA-sync-for-device the page