Re: [PATCH net-next 4/6] kcm: Kernel Connection Multiplexor module

2015-11-23 Thread Daniel Borkmann
On 11/20/2015 10:21 PM, Tom Herbert wrote: [...] + +/* Macro to invoke filter function. */ +#define KCM_RUN_FILTER(prog, ctx) \ + (*prog->bpf_func)(ctx, prog->insnsi) Any reason to redefine this macro? We already have the same one as: #define BPF_PROG_RUN(filter, ctx) (*filter->bpf_fun

Re: [PATCH net-next 4/6] kcm: Kernel Connection Multiplexor module

2015-11-20 Thread Sowmini Varadhan
On (11/20/15 15:19), Tom Herbert wrote: > > I did notice that RDS is just creating sglist, but I also noticed that > this requires allocating "struct rds_message" which holds pointers to > the sglist, list pointers for a queue, etc. This looks to me like its > emulating skbuffs anyway. I haven't l

Re: [PATCH net-next 4/6] kcm: Kernel Connection Multiplexor module

2015-11-20 Thread Tom Herbert
On Fri, Nov 20, 2015 at 3:10 PM, Alexei Starovoitov wrote: > On Fri, Nov 20, 2015 at 01:21:58PM -0800, Tom Herbert wrote: >> + >> + while (eaten < orig_len) { >> + /* Always clone since we will consume something */ >> + skb = skb_clone(orig_skb, GFP_ATOMIC); >> +

Re: [PATCH net-next 4/6] kcm: Kernel Connection Multiplexor module

2015-11-20 Thread Tom Herbert
On Fri, Nov 20, 2015 at 2:50 PM, Sowmini Varadhan wrote: > On (11/20/15 13:21), Tom Herbert wrote: >> +static int kcm_sendmsg(struct socket *sock, struct msghdr *msg, size_t len) >: >> + >> + if (msg->msg_flags & MSG_BATCH) { >> + kcm->tx_wait_more = true; >> +

Re: [PATCH net-next 4/6] kcm: Kernel Connection Multiplexor module

2015-11-20 Thread Alexei Starovoitov
On Fri, Nov 20, 2015 at 01:21:58PM -0800, Tom Herbert wrote: > + > + while (eaten < orig_len) { > + /* Always clone since we will consume something */ > + skb = skb_clone(orig_skb, GFP_ATOMIC); > + if (!skb) { > + desc->error = -ENOMEM; >

Re: [PATCH net-next 4/6] kcm: Kernel Connection Multiplexor module

2015-11-20 Thread Sowmini Varadhan
On (11/20/15 13:21), Tom Herbert wrote: > +static int kcm_sendmsg(struct socket *sock, struct msghdr *msg, size_t len) : > + > + if (msg->msg_flags & MSG_BATCH) { > + kcm->tx_wait_more = true; > + } else if (kcm->tx_wait_more || not_busy) { > +

[PATCH net-next 4/6] kcm: Kernel Connection Multiplexor module

2015-11-20 Thread Tom Herbert
This module implement the Kernel Connection Multiplexor. Kernel Connection Multiplexor (KCM) is a facility that provides a message based interface over TCP for generic application protocols. With KCM an application can efficiently send and receive application protocol messages over TCP using datag