On 7/27/16 3:03 PM, Tom Herbert wrote:
diff --git a/net/strparser/strparser.c b/net/strparser/strparser.c
new file mode 100644
index 0000000..d7aec13
--- /dev/null
+++ b/net/strparser/strparser.c
@@ -0,0 +1,492 @@
missing copyright header?
+#include <linux/bpf.h>
+#include <linux/errno.h>
+#include <linux/errqueue.h>
+#include <linux/file.h>
+#include <linux/in.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/net.h>
+#include <linux/netdevice.h>
+#include <linux/poll.h>
+#include <linux/rculist.h>
+#include <linux/skbuff.h>
+#include <linux/socket.h>
+#include <linux/uaccess.h>
+#include <linux/workqueue.h>
+#include <net/strparser.h>
+#include <net/netns/generic.h>
+#include <net/sock.h>
+#include <net/tcp.h>
-----8<-----
+/* Lower sock lock held */
+void strp_tcp_data_ready(struct sock *sk)
+{
+ struct strparser *strp;
+
+ read_lock_bh(&sk->sk_callback_lock);
+
+ strp = (struct strparser *)sk->sk_user_data;
+ if (unlikely(!strp || strp->rx_stopped))
+ goto out;
+
+ if (strp->rx_paused)
+ goto out;
+
+ if (strp->rx_need_bytes) {
+ if (tcp_inq(sk) >= strp->rx_need_bytes)
+ strp->rx_need_bytes = 0;
+ else
+ goto out;
+ }
+
+ if (strp_tcp_read_sock(strp) == -ENOMEM)
+ queue_delayed_work(strp_wq, &strp->rx_delayed_work, 0);
+
+out:
+ read_unlock_bh(&sk->sk_callback_lock);
+}
+EXPORT_SYMBOL(strp_tcp_data_ready);
The module is GPL; did you want the symbol exports to be GPL as well?