]> 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 16faa130088c298fe8540b7fa29d365d0ea579b7..4c7c564bf558edbc1ca272e274b9fe27222d7360 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <linux/socket.h>
 #include <asm/socket.h>
+#include <linux/mm.h>
 
 #define NPROTO         AF_MAX
 
@@ -293,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 */