lkml.org 
[lkml]   [2010]   [Dec]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v16 02/17]Add a new struct for device to manipulate external buffer.
    Date
    From: Xin Xiaohui <xiaohui.xin@intel.com>

    Add a structure in structure net_device, the new field is
    named as mp_port. It's for mediate passthru (zero-copy).
    It contains the capability for the net device driver,
    a socket, and an external buffer creator, external means
    skb buffer belongs to the device may not be allocated from
    kernel space.

    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>
    ---
    include/linux/netdevice.h | 25 ++++++++++++++++++++++++-
    1 files changed, 24 insertions(+), 1 deletions(-)

    diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
    index 46c36ff..f6b1870 100644
    --- a/include/linux/netdevice.h
    +++ b/include/linux/netdevice.h
    @@ -325,6 +325,28 @@ enum netdev_state_t {
    __LINK_STATE_DORMANT,
    };

    +/*The structure for mediate passthru(zero-copy). */
    +struct mp_port {
    + /* the header len */
    + int hdr_len;
    + /* the max payload len for one descriptor */
    + int data_len;
    + /* the pages for DMA in one time */
    + int npages;
    + /* the socket bind to */
    + struct socket *sock;
    + /* the header len for virtio-net */
    + int vnet_hlen;
    + /* the external buffer page creator */
    + struct skb_ext_page *(*ctor)(struct mp_port *,
    + struct sk_buff *, int);
    + /* the hash function attached to find according
    + * backend ring descriptor info for one external
    + * buffer page.
    + */
    + struct skb_ext_page *(*hash)(struct net_device *,
    + struct page *);
    +};

    /*
    * This structure holds at boot time configured netdevice settings. They
    @@ -1045,7 +1067,8 @@ struct net_device {

    /* GARP */
    struct garp_port *garp_port;
    -
    + /* mpassthru */
    + struct mp_port *mp_port;
    /* class/net/name entry */
    struct device dev;
    /* space for optional device, statistics, and wireless sysfs groups */
    --
    1.7.3


    \
     
     \ /
      Last update: 2010-12-01 08:55    [W:0.021 / U:0.516 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site