From: Geliang Tang <geliang@kernel.org>
To: Matthieu Baerts <matttbe@kernel.org>, mptcp@lists.linux.dev
Cc: Geliang Tang <tanggeliang@kylinos.cn>
Subject: Re: [PATCH mptcp-next v2 03/36] mptcp: add mptcp_for_each_address macros
Date: Thu, 31 Oct 2024 15:55:49 +0800 [thread overview]
Message-ID: <dcf330f030ea45dbd06058e95de119bc94e81e3d.camel@kernel.org> (raw)
In-Reply-To: <293210ee-ef7c-4ad7-a46d-82beb1dec193@kernel.org>
On Wed, 2024-10-30 at 19:20 +0100, Matthieu Baerts wrote:
> Hi Geliang,
>
> On 22/10/2024 11:14, Geliang Tang wrote:
> > From: Geliang Tang <tanggeliang@kylinos.cn>
> >
> > Similar to mptcp_for_each_subflow() and
> > mptcp_for_each_subflow_safe()
> > macros, this patch adds two new macros mptcp_for_each_address() and
> > mptcp_for_each_address_safe() to iterate over the address entries
> > on
> > userspace_pm_local_addr_list of the mptcp socket.
> >
> > Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
> > ---
> > net/mptcp/pm_userspace.c | 12 ++++++------
> > net/mptcp/protocol.h | 5 +++++
> > 2 files changed, 11 insertions(+), 6 deletions(-)
> >
> > diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
> > index 2cceded3a83a..00a7f9dd90cf 100644
> > --- a/net/mptcp/pm_userspace.c
> > +++ b/net/mptcp/pm_userspace.c
> > @@ -41,7 +41,7 @@ static int
> > mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk,
> > bitmap_zero(id_bitmap, MPTCP_PM_MAX_ADDR_ID + 1);
> >
> > spin_lock_bh(&msk->pm.lock);
> > - list_for_each_entry(e, &msk-
> > >pm.userspace_pm_local_addr_list, list) {
> > + mptcp_for_each_address(msk, e) {
> > addr_match = mptcp_addresses_equal(&e->addr,
> > &entry->addr, true);
> > if (addr_match && entry->addr.id == 0 && needs_id)
> > entry->addr.id = e->addr.id;
> > @@ -92,7 +92,7 @@ static int
> > mptcp_userspace_pm_delete_local_addr(struct mptcp_sock *msk,
> > {
> > struct mptcp_pm_addr_entry *entry, *tmp;
> >
> > - list_for_each_entry_safe(entry, tmp, &msk-
> > >pm.userspace_pm_local_addr_list, list) {
> > + mptcp_for_each_address_safe(msk, entry, tmp) {
> > if (mptcp_addresses_equal(&entry->addr, &addr-
> > >addr, false)) {
> > /* TODO: a refcount is needed because the
> > entry can
> > * be used multiple times (e.g. fullmesh
> > mode).
> > @@ -112,7 +112,7 @@ mptcp_userspace_pm_lookup_addr_by_id(struct
> > mptcp_sock *msk, unsigned int id)
> > {
> > struct mptcp_pm_addr_entry *entry;
> >
> > - list_for_each_entry(entry, &msk-
> > >pm.userspace_pm_local_addr_list, list) {
> > + mptcp_for_each_address(msk, entry) {
> > if (entry->addr.id == id)
> > return entry;
> > }
> > @@ -127,7 +127,7 @@ int mptcp_userspace_pm_get_local_id(struct
> > mptcp_sock *msk,
> > inet_sk((struct sock *)msk))-
> > >inet_sport;
> >
> > spin_lock_bh(&msk->pm.lock);
> > - list_for_each_entry(e, &msk-
> > >pm.userspace_pm_local_addr_list, list) {
> > + mptcp_for_each_address(msk, e) {
> > if (mptcp_addresses_equal(&e->addr, skc, false)) {
> > entry = e;
> > break;
> > @@ -155,7 +155,7 @@ bool mptcp_userspace_pm_is_backup(struct
> > mptcp_sock *msk,
> > bool backup = false;
> >
> > spin_lock_bh(&msk->pm.lock);
> > - list_for_each_entry(entry, &msk-
> > >pm.userspace_pm_local_addr_list, list) {
> > + mptcp_for_each_address(msk, entry) {
> > if (mptcp_addresses_equal(&entry->addr, skc,
> > false)) {
> > backup = !!(entry->flags &
> > MPTCP_PM_ADDR_FLAG_BACKUP);
> > break;
> > @@ -642,7 +642,7 @@ int mptcp_userspace_pm_dump_addr(struct sk_buff
> > *msg,
> >
> > lock_sock(sk);
> > spin_lock_bh(&msk->pm.lock);
> > - list_for_each_entry(entry, &msk-
> > >pm.userspace_pm_local_addr_list, list) {
> > + mptcp_for_each_address(msk, entry) {
> > if (test_bit(entry->addr.id, bitmap->map))
> > continue;
> >
> > diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
> > index b4c72a73594f..ce3b12778b3f 100644
> > --- a/net/mptcp/protocol.h
> > +++ b/net/mptcp/protocol.h
> > @@ -354,6 +354,11 @@ struct mptcp_sock {
> > #define mptcp_for_each_subflow_safe(__msk, __subflow,
> > __tmp) \
> > list_for_each_entry_safe(__subflow, __tmp, &((__msk)-
> > >conn_list), node)
> >
> > +#define mptcp_for_each_address(__msk, __entry) \
> > + list_for_each_entry(__entry, &((__msk)-
> > >pm.userspace_pm_local_addr_list), list)
> > +#define mptcp_for_each_address_safe(__msk, __entry,
> > __tmp) \
> > + list_for_each_entry_safe(__entry, __tmp, &((__msk)-
> > >pm.userspace_pm_local_addr_list), list)
>
> If it is specific to the userspace PM, maybe best to declare them in
> pm_userspace.c, no?
>
> Also, the name is very generic for something so specific. Maybe:
>
> mptcp_for_each_pm_userspace_local_addr(_safe)
>
> Otherwise, if we see "mptcp_for_each_address(msk, entry)" in the
> code,
> it is really not clear what you are looking at I think, no?
Good idea! I moved it into pm_userspace.c and renamed it as
mptcp_for_each_userspace_pm_addr.
Furthermore, I renamed mptcp_address bpf_iter in another set "add
mptcp_address bpf_iter" as mptcp_userspace_pm_addr bpf_iter to keep it
consistent with this patch.
Thanks,
-Geliang
>
> > +
> > extern struct genl_family mptcp_genl_family;
> >
> > static inline void msk_owned_by_me(const struct mptcp_sock *msk)
>
> Cheers,
> Matt
next prev parent reply other threads:[~2024-10-31 7:55 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-22 9:14 [PATCH mptcp-next v2 00/36] BPF path manager Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 01/36] mptcp: drop else in mptcp_pm_addr_families_match Geliang Tang
2024-10-22 17:01 ` Matthieu Baerts
2024-10-23 9:53 ` Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 02/36] mptcp: use __lookup_addr in pm_netlink Geliang Tang
2024-10-22 17:09 ` Matthieu Baerts
2024-10-23 9:59 ` Geliang Tang
2024-10-23 10:03 ` Matthieu Baerts
2024-10-23 10:06 ` Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 03/36] mptcp: add mptcp_for_each_address macros Geliang Tang
2024-10-30 18:20 ` Matthieu Baerts
2024-10-31 7:55 ` Geliang Tang [this message]
2024-10-22 9:14 ` [PATCH mptcp-next v2 04/36] mptcp: use sock_kfree_s instead of kfree Geliang Tang
2024-10-30 18:21 ` Matthieu Baerts
2024-10-31 7:43 ` Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 05/36] mptcp: add lookup_addr for userspace pm Geliang Tang
2024-10-30 18:21 ` Matthieu Baerts
2024-10-22 9:14 ` [PATCH mptcp-next v2 06/36] mptcp: add mptcp_userspace_pm_get_sock helper Geliang Tang
2024-10-30 18:23 ` Matthieu Baerts
2024-10-22 9:14 ` [PATCH mptcp-next v2 07/36] mptcp: make three pm wrappers static Geliang Tang
2024-10-30 18:31 ` Matthieu Baerts
2024-10-31 7:58 ` Geliang Tang
2024-10-31 16:33 ` Matthieu Baerts
2024-10-22 9:14 ` [PATCH mptcp-next v2 08/36] mptcp: drop skb parameter of get_addr Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 09/36] mptcp: add id parameter for get_addr Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 10/36] mptcp: add addr " Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 11/36] mptcp: reuse sending nlmsg code in get_addr Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 12/36] mptcp: change info of get_addr as const Geliang Tang
2024-10-31 18:41 ` Matthieu Baerts
2024-10-22 9:14 ` [PATCH mptcp-next v2 13/36] mptcp: add struct mptcp_id_bitmap Geliang Tang
2024-10-31 18:45 ` Matthieu Baerts
2024-11-04 9:12 ` Geliang Tang
2024-11-04 10:16 ` Matthieu Baerts
2024-10-22 9:14 ` [PATCH mptcp-next v2 14/36] mptcp: refactor dump_addr with id bitmap Geliang Tang
2024-11-04 17:18 ` Matthieu Baerts
2024-10-22 9:14 ` [PATCH mptcp-next v2 15/36] mptcp: refactor dump_addr with get_addr Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 16/36] mptcp: reuse sending nlmsg code in dump_addr Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 17/36] mptcp: update local address flags when setting it Geliang Tang
2024-11-04 18:20 ` Matthieu Baerts
2024-10-22 9:14 ` [PATCH mptcp-next v2 18/36] mptcp: change rem type of set_flags Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 19/36] mptcp: drop skb parameter " Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 20/36] mptcp: add loc and rem for set_flags Geliang Tang
2024-11-04 18:36 ` Matthieu Baerts
2024-10-22 9:14 ` [PATCH mptcp-next v2 21/36] mptcp: update address type of get_local_id Geliang Tang
2024-11-04 18:48 ` Matthieu Baerts
2024-11-07 7:35 ` Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 22/36] mptcp: change is_backup interfaces as get_flags Geliang Tang
2024-11-04 18:55 ` Matthieu Baerts
2025-01-14 9:27 ` Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 23/36] mptcp: drop struct mptcp_pm_local Geliang Tang
2024-11-04 19:08 ` Matthieu Baerts
2024-11-07 7:29 ` Geliang Tang
2024-11-07 10:00 ` Matthieu Baerts
2024-11-07 10:19 ` Geliang Tang
2024-11-10 4:32 ` Geliang Tang
2024-11-27 6:17 ` Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 24/36] mptcp: drop struct mptcp_pm_add_entry Geliang Tang
2024-11-04 19:13 ` Matthieu Baerts
2024-10-22 9:14 ` [PATCH mptcp-next v2 25/36] mptcp: change local type of subflow_destroy Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 26/36] mptcp: hold pm lock when deleting entry Geliang Tang
2024-11-04 19:17 ` Matthieu Baerts
2024-10-22 9:14 ` [PATCH mptcp-next v2 27/36] mptcp: rename mptcp_pm_remove_addrs Geliang Tang
2024-11-04 19:24 ` Matthieu Baerts
2024-10-22 9:14 ` [PATCH mptcp-next v2 28/36] mptcp: drop free_list for deleting entries Geliang Tang
2024-11-04 19:27 ` Matthieu Baerts
2024-10-22 9:14 ` [PATCH mptcp-next v2 29/36] mptcp: define struct mptcp_pm_ops Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 30/36] mptcp: implement userspace pm interfaces Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 31/36] mptcp: register default userspace pm Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 32/36] bpf: Add mptcp path manager struct_ops Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 33/36] bpf: Register mptcp struct_ops kfunc set Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 34/36] Squash to "bpf: Export mptcp packet scheduler helpers" Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 35/36] selftests/bpf: Add mptcp userspace pm subtest Geliang Tang
2024-10-22 9:14 ` [PATCH mptcp-next v2 36/36] selftests/bpf: Add mptcp bpf path manager subtest Geliang Tang
2024-10-22 10:12 ` [PATCH mptcp-next v2 00/36] BPF path manager MPTCP CI
2024-10-22 10:24 ` MPTCP CI
2024-11-04 19:31 ` Matthieu Baerts
2024-11-05 10:12 ` Geliang Tang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=dcf330f030ea45dbd06058e95de119bc94e81e3d.camel@kernel.org \
--to=geliang@kernel.org \
--cc=matttbe@kernel.org \
--cc=mptcp@lists.linux.dev \
--cc=tanggeliang@kylinos.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.