From: Xin Xiaohui <xiaohui....@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....@intel.com>
    Signed-off-by: Zhao Yu <yzhao81...@gmail.com>
    Reviewed-by: Jeff Dike <jd...@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

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to