Commit Graph

8 Commits

Author SHA1 Message Date
Davide Caratti e1742e5983 mptcp: pr_debug: add missing \n at the end
JIRA: https://issues.redhat.com/browse/RHEL-62871
Upstream Status: net.git commit cb41b195e634d3f1ecfcd845314e64fd4bb3c7aa
Conflicts:
 - net/mptcp/protocol.c: preserve the old version of inet_csk_accept()
   as we don't have upstream commit 92ef0fd55ac8 ("net: change proto and
   proto_ops accept type")

commit cb41b195e634d3f1ecfcd845314e64fd4bb3c7aa
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Mon Aug 26 19:11:21 2024 +0200

    mptcp: pr_debug: add missing \n at the end

    pr_debug() have been added in various places in MPTCP code to help
    developers to debug some situations. With the dynamic debug feature, it
    is easy to enable all or some of them, and asks users to reproduce
    issues with extra debug.

    Many of these pr_debug() don't end with a new line, while no 'pr_cont()'
    are used in MPTCP code. So the goal was not to display multiple debug
    messages on one line: they were then not missing the '\n' on purpose.
    Not having the new line at the end causes these messages to be printed
    with a delay, when something else needs to be printed. This issue is not
    visible when many messages need to be printed, but it is annoying and
    confusing when only specific messages are expected, e.g.

      # echo "func mptcp_pm_add_addr_echoed +fmp" \
            > /sys/kernel/debug/dynamic_debug/control
      # ./mptcp_join.sh "signal address"; \
            echo "$(awk '{print $1}' /proc/uptime) - end"; \
            sleep 5s; \
            echo "$(awk '{print $1}' /proc/uptime) - restart"; \
            ./mptcp_join.sh "signal address"
      013 signal address
          (...)
      10.75 - end
      15.76 - restart
      013 signal address
      [  10.367935] mptcp:mptcp_pm_add_addr_echoed: MPTCP: msk=(...)
          (...)

      => a delay of 5 seconds: printed with a 10.36 ts, but after 'restart'
         which was printed at the 15.76 ts.

    The 'Fixes' tag here below points to the first pr_debug() used without
    '\n' in net/mptcp. This patch could be split in many small ones, with
    different Fixes tag, but it doesn't seem worth it, because it is easy to
    re-generate this patch with this simple 'sed' command:

      git grep -l pr_debug -- net/mptcp |
        xargs sed -i "s/\(pr_debug(\".*[^n]\)\(\"[,)]\)/\1\\\n\2/g"

    So in case of conflicts, simply drop the modifications, and launch this
    command.

    Fixes: f870fa0b57 ("mptcp: Add MPTCP socket stubs")
    Cc: stable@vger.kernel.org
    Reviewed-by: Geliang Tang <geliang@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20240826-net-mptcp-close-extra-sf-fin-v1-4-905199fe1172@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>

Signed-off-by: Davide Caratti <dcaratti@redhat.com>
2024-11-12 10:19:01 +01:00
Paolo Abeni cc61893ec8 mptcp: register default scheduler
JIRA: https://issues.redhat.com/browse/RHEL-15036
Tested: LNST, Tier1

Upstream commit:
commit ed1ad86b8527f8f864df3c182adbfcd12a445de6
Author: Geliang Tang <geliang.tang@suse.com>
Date:   Mon Aug 21 15:25:21 2023 -0700

    mptcp: register default scheduler

    This patch defines the default packet scheduler mptcp_sched_default.
    Register it in mptcp_sched_init(), which is invoked in mptcp_proto_init().
    Skip deleting this default scheduler in mptcp_unregister_scheduler().

    Set msk->sched to the default scheduler when the input parameter of
    mptcp_init_sched() is NULL.

    Invoke mptcp_sched_default_get_subflow in get_send() and get_retrans()
    if the defaut scheduler is set or msk->sched is NULL.

    Acked-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Geliang Tang <geliang.tang@suse.com>
    Signed-off-by: Mat Martineau <martineau@kernel.org>
    Link: https://lore.kernel.org/r/20230821-upstream-net-next-20230818-v1-10-0c860fb256a8@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2023-10-31 21:50:01 +01:00
Paolo Abeni 0fddb44ac7 mptcp: use get_retrans wrapper
JIRA: https://issues.redhat.com/browse/RHEL-15036
Tested: LNST, Tier1

Upstream commit:
commit ee2708aedad00544d38dba6df88efeb4a330bd66
Author: Geliang Tang <geliang.tang@suse.com>
Date:   Mon Aug 21 15:25:20 2023 -0700

    mptcp: use get_retrans wrapper

    This patch adds the multiple subflows support for __mptcp_retrans(). Use
    get_retrans() wrapper instead of mptcp_subflow_get_retrans() in it.

    Check the subflow scheduled flags to test which subflow or subflows are
    picked by the scheduler, use them to send data.

    Move msk_owned_by_me() and fallback checks into get_retrans() wrapper
    from mptcp_subflow_get_retrans().

    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Geliang Tang <geliang.tang@suse.com>
    Signed-off-by: Mat Martineau <martineau@kernel.org>
    Link: https://lore.kernel.org/r/20230821-upstream-net-next-20230818-v1-9-0c860fb256a8@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2023-10-31 21:50:01 +01:00
Paolo Abeni c4d4f2179e mptcp: use get_send wrapper
JIRA: https://issues.redhat.com/browse/RHEL-15036
Tested: LNST, Tier1

Upstream commit:
commit 0fa1b3783a17d75a4aa1651a18ede041ffca5750
Author: Geliang Tang <geliang.tang@suse.com>
Date:   Mon Aug 21 15:25:19 2023 -0700

    mptcp: use get_send wrapper

    This patch adds the multiple subflows support for __mptcp_push_pending
    and __mptcp_subflow_push_pending. Use get_send() wrapper instead of
    mptcp_subflow_get_send() in them.

    Check the subflow scheduled flags to test which subflow or subflows are
    picked by the scheduler, use them to send data.

    Move msk_owned_by_me() and fallback checks into get_send() wrapper from
    mptcp_subflow_get_send().

    This commit allows the scheduler to set the subflow->scheduled bit in
    multiple subflows, but it does not allow for sending redundant data.
    Multiple scheduled subflows will send sequential data on each subflow.

    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Geliang Tang <geliang.tang@suse.com>
    Signed-off-by: Mat Martineau <martineau@kernel.org>
    Link: https://lore.kernel.org/r/20230821-upstream-net-next-20230818-v1-8-0c860fb256a8@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2023-10-31 21:50:01 +01:00
Paolo Abeni 60003c4ba6 mptcp: add scheduler wrappers
JIRA: https://issues.redhat.com/browse/RHEL-15036
Tested: LNST, Tier1

Upstream commit:
commit 07336a87fe871518a7b3508e29a21ca1735b3edc
Author: Geliang Tang <geliang.tang@suse.com>
Date:   Mon Aug 21 15:25:18 2023 -0700

    mptcp: add scheduler wrappers

    This patch defines two packet scheduler wrappers mptcp_sched_get_send()
    and mptcp_sched_get_retrans(), invoke get_subflow() of msk->sched in
    them.

    Set data->reinject to true in mptcp_sched_get_retrans(), set it false in
    mptcp_sched_get_send().

    If msk->sched is NULL, use default functions mptcp_subflow_get_send()
    and mptcp_subflow_get_retrans() to send data.

    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Geliang Tang <geliang.tang@suse.com>
    Signed-off-by: Mat Martineau <martineau@kernel.org>
    Link: https://lore.kernel.org/r/20230821-upstream-net-next-20230818-v1-7-0c860fb256a8@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2023-10-31 21:50:01 +01:00
Paolo Abeni 09d27aa2b0 mptcp: add scheduled in mptcp_subflow_context
JIRA: https://issues.redhat.com/browse/RHEL-15036
Tested: LNST, Tier1

Upstream commit:
commit fce68b03086fd00eb5a8ba4744f36f0d007d0f9d
Author: Geliang Tang <geliang.tang@suse.com>
Date:   Mon Aug 21 15:25:17 2023 -0700

    mptcp: add scheduled in mptcp_subflow_context

    This patch adds a new member scheduled in struct mptcp_subflow_context,
    which will be set in the MPTCP scheduler context when the scheduler
    picks this subflow to send data.

    Add a new helper mptcp_subflow_set_scheduled() to set this flag using
    WRITE_ONCE().

    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Geliang Tang <geliang.tang@suse.com>
    Signed-off-by: Mat Martineau <martineau@kernel.org>
    Link: https://lore.kernel.org/r/20230821-upstream-net-next-20230818-v1-6-0c860fb256a8@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2023-10-31 21:50:01 +01:00
Paolo Abeni e690e9e26a mptcp: add sched in mptcp_sock
JIRA: https://issues.redhat.com/browse/RHEL-15036
Tested: LNST, Tier1

Upstream commit:
commit 1730b2b2c5a5a886007b247366aebe0976dc8881
Author: Geliang Tang <geliang.tang@suse.com>
Date:   Mon Aug 21 15:25:16 2023 -0700

    mptcp: add sched in mptcp_sock

    This patch adds a new struct member sched in struct mptcp_sock.
    And two helpers mptcp_init_sched() and mptcp_release_sched() to
    init and release it.

    Init it with the sysctl scheduler in mptcp_init_sock(), copy the
    scheduler from the parent in mptcp_sk_clone(), and release it in
    __mptcp_destroy_sock().

    Acked-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Geliang Tang <geliang.tang@suse.com>
    Signed-off-by: Mat Martineau <martineau@kernel.org>
    Link: https://lore.kernel.org/r/20230821-upstream-net-next-20230818-v1-5-0c860fb256a8@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2023-10-31 21:50:01 +01:00
Paolo Abeni 32774b335d mptcp: add struct mptcp_sched_ops
JIRA: https://issues.redhat.com/browse/RHEL-15036
Tested: LNST, Tier1

Upstream commit:
commit 740ebe35bd3f5c4ff8ec60e5e521e47ea8f5492c
Author: Geliang Tang <geliang.tang@suse.com>
Date:   Mon Aug 21 15:25:14 2023 -0700

    mptcp: add struct mptcp_sched_ops

    This patch defines struct mptcp_sched_ops, which has three struct members,
    name, owner and list, and four function pointers: init(), release() and
    get_subflow().

    The scheduler function get_subflow() have a struct mptcp_sched_data
    parameter, which contains a reinject flag for retrans or not, a subflows
    number and a mptcp_subflow_context array.

    Add the scheduler registering, unregistering and finding functions to add,
    delete and find a packet scheduler on the global list mptcp_sched_list.

    Acked-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Geliang Tang <geliang.tang@suse.com>
    Signed-off-by: Mat Martineau <martineau@kernel.org>
    Link: https://lore.kernel.org/r/20230821-upstream-net-next-20230818-v1-3-0c860fb256a8@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2023-10-31 21:50:01 +01:00