• A
    net: Add device Rx page allocation function · 71dfda58
    Alexander Duyck 提交于
    This patch implements __dev_alloc_pages and __dev_alloc_page.  These are
    meant to replace the __skb_alloc_pages and __skb_alloc_page functions.  The
    reason for doing this is that it occurred to me that __skb_alloc_page is
    supposed to be passed an sk_buff pointer, but it is NULL in all cases where
    it is used.  Worse is that in the case of ixgbe it is passed NULL via the
    sk_buff pointer in the rx_buffer info structure which means the compiler is
    not correctly stripping it out.
    
    The naming for these functions is based on dev_alloc_skb and __dev_alloc_skb.
    There was originally a netdev_alloc_page, however that was passed a
    net_device pointer and this function is not so I thought it best to follow
    that naming scheme since that is the same difference between dev_alloc_skb
    and netdev_alloc_skb.
    
    In the case of anything greater than order 0 it is assumed that we want a
    compound page so __GFP_COMP is set for all allocations as we expect a
    compound page when assigning a page frag.
    
    The other change in this patch is to exploit the behaviors of the page
    allocator in how it handles flags.  So for example we can always set
    __GFP_COMP and __GFP_MEMALLOC since they are ignored if they are not
    applicable or are overridden by another flag.
    Signed-off-by: NAlexander Duyck <alexander.h.duyck@redhat.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    71dfda58
skbuff.h 95.6 KB