mptcp: remove mptcp_read_actor
authorFlorian Westphal <fw@strlen.de>
Wed, 26 Feb 2020 09:14:50 +0000 (10:14 +0100)
committerDavid S. Miller <davem@davemloft.net>
Thu, 27 Feb 2020 04:46:26 +0000 (20:46 -0800)
Only used to discard stale data from the subflow, so move
it where needed.

Signed-off-by: Florian Westphal <fw@strlen.de>
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/mptcp/protocol.c
net/mptcp/protocol.h
net/mptcp/subflow.c

index 381d564..b781498 100644 (file)
@@ -430,33 +430,6 @@ fallback:
        return ret;
 }
 
-int mptcp_read_actor(read_descriptor_t *desc, struct sk_buff *skb,
-                    unsigned int offset, size_t len)
-{
-       struct mptcp_read_arg *arg = desc->arg.data;
-       size_t copy_len;
-
-       copy_len = min(desc->count, len);
-
-       if (likely(arg->msg)) {
-               int err;
-
-               err = skb_copy_datagram_msg(skb, offset, arg->msg, copy_len);
-               if (err) {
-                       pr_debug("error path");
-                       desc->error = err;
-                       return err;
-               }
-       } else {
-               pr_debug("Flushing skb payload");
-       }
-
-       desc->count -= copy_len;
-
-       pr_debug("consumed %zu bytes, %zu left", copy_len, desc->count);
-       return copy_len;
-}
-
 static void mptcp_wait_data(struct sock *sk, long *timeo)
 {
        DEFINE_WAIT_FUNC(wait, woken_wake_function);
index 6e6e162..d06170c 100644 (file)
@@ -191,13 +191,6 @@ void mptcp_proto_init(void);
 int mptcp_proto_v6_init(void);
 #endif
 
-struct mptcp_read_arg {
-       struct msghdr *msg;
-};
-
-int mptcp_read_actor(read_descriptor_t *desc, struct sk_buff *skb,
-                    unsigned int offset, size_t len);
-
 void mptcp_get_options(const struct sk_buff *skb,
                       struct tcp_options_received *opt_rx);
 
index 3dad662..37a4767 100644 (file)
@@ -408,6 +408,18 @@ validate_seq:
        return MAPPING_OK;
 }
 
+static int subflow_read_actor(read_descriptor_t *desc,
+                             struct sk_buff *skb,
+                             unsigned int offset, size_t len)
+{
+       size_t copy_len = min(desc->count, len);
+
+       desc->count -= copy_len;
+
+       pr_debug("flushed %zu bytes, %zu left", copy_len, desc->count);
+       return copy_len;
+}
+
 static bool subflow_check_data_avail(struct sock *ssk)
 {
        struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk);
@@ -482,16 +494,12 @@ static bool subflow_check_data_avail(struct sock *ssk)
                pr_debug("discarding %zu bytes, current map len=%d", delta,
                         map_remaining);
                if (delta) {
-                       struct mptcp_read_arg arg = {
-                               .msg = NULL,
-                       };
                        read_descriptor_t desc = {
                                .count = delta,
-                               .arg.data = &arg,
                        };
                        int ret;
 
-                       ret = tcp_read_sock(ssk, &desc, mptcp_read_actor);
+                       ret = tcp_read_sock(ssk, &desc, subflow_read_actor);
                        if (ret < 0) {
                                ssk->sk_err = -ret;
                                goto fatal;