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
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
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);
>> +
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;
>> +
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;
>
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) {
> +
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