lkml.org 
[lkml]   [2010]   [Sep]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC PATCH v10 07/16] Modify netdev_alloc_page() to get external buffer
    Date
    From: Xin Xiaohui <xiaohui.xin@intel.com>

    Currently, it can get external buffers from mp device.

    Signed-off-by: Xin Xiaohui <xiaohui.xin@intel.com>
    Signed-off-by: Zhao Yu <yzhao81new@gmail.com>
    Reviewed-by: Jeff Dike <jdike@linux.intel.com>
    ---
    net/core/skbuff.c | 27 +++++++++++++++++++++++++++
    1 files changed, 27 insertions(+), 0 deletions(-)

    diff --git a/net/core/skbuff.c b/net/core/skbuff.c
    index 117d82b..1a61e2b 100644
    --- a/net/core/skbuff.c
    +++ b/net/core/skbuff.c
    @@ -269,11 +269,38 @@ struct sk_buff *__netdev_alloc_skb(struct net_device *dev,
    }
    EXPORT_SYMBOL(__netdev_alloc_skb);

    +struct page *netdev_alloc_ext_pages(struct net_device *dev, int npages)
    +{
    + struct mpassthru_port *port;
    + struct skb_ext_page *ext_page = NULL;
    +
    + port = dev->mp_port;
    + if (!port)
    + goto out;
    + ext_page = port->ctor(port, NULL, npages);
    + if (ext_page)
    + return ext_page->page;
    +out:
    + return NULL;
    +
    +}
    +EXPORT_SYMBOL(netdev_alloc_ext_pages);
    +
    +struct page *netdev_alloc_ext_page(struct net_device *dev)
    +{
    + return netdev_alloc_ext_pages(dev, 1);
    +
    +}
    +EXPORT_SYMBOL(netdev_alloc_ext_page);
    +
    struct page *__netdev_alloc_page(struct net_device *dev, gfp_t gfp_mask)
    {
    int node = dev->dev.parent ? dev_to_node(dev->dev.parent) : -1;
    struct page *page;

    + if (dev_is_mpassthru(dev))
    + return netdev_alloc_ext_page(dev);
    +
    page = alloc_pages_node(node, gfp_mask, 0);
    return page;
    }
    --
    1.5.4.4


    \
     
     \ /
      Last update: 2010-09-11 11:41    [W:0.020 / U:59.164 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site