forked from Minki/linux
mptcp: remove mptcp_read_actor
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>
This commit is contained in:
parent
600911ff5f
commit
bfae9dae44
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user