diff options
| author | David S. Miller <davem@davemloft.net> | 2015-05-25 07:06:59 +0300 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2015-05-25 07:06:59 +0300 |
| commit | b10e3d6c2e557e1dd62c0b6276707b68aa0e5287 (patch) | |
| tree | 1fd7303692dfbbf1c9c3348cb79961ceb5078cd1 /include/linux | |
| parent | d98c3edcbbbfae903f138edd7855544cd8d09bc2 (diff) | |
| parent | 2b514574f7e88c8498027ee366fd6e7aae5aa4b5 (diff) | |
| download | linux-b10e3d6c2e557e1dd62c0b6276707b68aa0e5287.tar.xz | |
Merge branch 'af_unix_sendpage'
Hannes Frederic Sowa says:
====================
net: af_unix: zerocopy stream bits
This series implements zerocopy support for AF_UNIX SOCK_STREAM sockets.
Changelog in the specific patches. Thanks to all the reviewers!
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/skbuff.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index b617095adb88..6b41c15efa27 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -35,6 +35,7 @@ #include <linux/netdev_features.h> #include <linux/sched.h> #include <net/flow_dissector.h> +#include <linux/splice.h> /* A. Checksumming of received packets by device. * @@ -861,6 +862,9 @@ int skb_append_datato_frags(struct sock *sk, struct sk_buff *skb, int len, int odd, struct sk_buff *skb), void *from, int length); +int skb_append_pagefrags(struct sk_buff *skb, struct page *page, + int offset, size_t size); + struct skb_seq_state { __u32 lower_offset; __u32 upper_offset; @@ -2696,9 +2700,15 @@ int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len); int skb_store_bits(struct sk_buff *skb, int offset, const void *from, int len); __wsum skb_copy_and_csum_bits(const struct sk_buff *skb, int offset, u8 *to, int len, __wsum csum); -int skb_splice_bits(struct sk_buff *skb, unsigned int offset, +ssize_t skb_socket_splice(struct sock *sk, + struct pipe_inode_info *pipe, + struct splice_pipe_desc *spd); +int skb_splice_bits(struct sk_buff *skb, struct sock *sk, unsigned int offset, struct pipe_inode_info *pipe, unsigned int len, - unsigned int flags); + unsigned int flags, + ssize_t (*splice_cb)(struct sock *, + struct pipe_inode_info *, + struct splice_pipe_desc *)); void skb_copy_and_csum_dev(const struct sk_buff *skb, u8 *to); unsigned int skb_zerocopy_headlen(const struct sk_buff *from); int skb_zerocopy(struct sk_buff *to, struct sk_buff *from, |
