]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - include/linux/net.h
Revert "Apply SCST exec req fifo patch"
[mv-sheeva.git] / include / linux / net.h
index dee0b11a87590b31750706fec2bfe93bfec7d2bf..4c7c564bf558edbc1ca272e274b9fe27222d7360 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <linux/socket.h>
 #include <asm/socket.h>
+#include <linux/mm.h>
 
 #define NPROTO         AF_MAX
 
@@ -229,6 +230,8 @@ enum {
 extern int          sock_wake_async(struct socket *sk, int how, int band);
 extern int          sock_register(const struct net_proto_family *fam);
 extern void         sock_unregister(int family);
+extern int          __sock_create(struct net *net, int family, int type, int proto,
+                                struct socket **res, int kern);
 extern int          sock_create(int family, int type, int proto,
                                 struct socket **res);
 extern int          sock_create_kern(int family, int type, int proto,
@@ -291,5 +294,44 @@ extern int kernel_sock_shutdown(struct socket *sock,
 extern struct ratelimit_state net_ratelimit_state;
 #endif
 
+#if defined(CONFIG_TCP_ZERO_COPY_TRANSFER_COMPLETION_NOTIFICATION)
+/* Support for notification on zero-copy TCP transfer completion */
+typedef void (*net_get_page_callback_t)(struct page *page);
+typedef void (*net_put_page_callback_t)(struct page *page);
+
+extern net_get_page_callback_t net_get_page_callback;
+extern net_put_page_callback_t net_put_page_callback;
+
+extern int net_set_get_put_page_callbacks(
+       net_get_page_callback_t get_callback,
+       net_put_page_callback_t put_callback);
+
+/*
+ * See comment for net_set_get_put_page_callbacks() why those functions
+ * don't need any protection.
+ */
+static inline void net_get_page(struct page *page)
+{
+       if (page->net_priv != 0)
+               net_get_page_callback(page);
+       get_page(page);
+}
+static inline void net_put_page(struct page *page)
+{
+       if (page->net_priv != 0)
+               net_put_page_callback(page);
+       put_page(page);
+}
+#else
+static inline void net_get_page(struct page *page)
+{
+       get_page(page);
+}
+static inline void net_put_page(struct page *page)
+{
+       put_page(page);
+}
+#endif /* CONFIG_TCP_ZERO_COPY_TRANSFER_COMPLETION_NOTIFICATION */
+
 #endif /* __KERNEL__ */
 #endif /* _LINUX_NET_H */