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?