History

mptcp: pm: in-kernel: rename 'add_addr_accept_max' to 'limit_add_addr_accepted'

A few variables linked to the in-kernel Path-Manager are confusing, and it would help current and future developers, to clarify them. One of them is 'add_addr_accept_max', which in fact represents the limit of ADD_ADDR that can be accepted: the limit set via 'ip mptcp limit add_addr_accepted X' for example. It is not linked to the maximum number of accepted ADD_ADDR. While at it, add an additional name for the corresponding variable in MPTCP INFO: mptcpi_limit_add_addr_accepted. Not to break the current uAPI, the new name is added as a 'define' pointing to the former name. This will then also help userspace devs. No functional changes intended.

Matthieu Baerts (NGI0) committed 1 year ago

Commit 37712d81 parent 45cae575 files · +21 −17Browse files

Unified · Split

5 files
  1. include/uapi/linux/mptcp.h +1 −0
  2. net/mptcp/pm.c +1 −1
  3. net/mptcp/pm_kernel.c +15 −12
  4. net/mptcp/protocol.h +2 −2
  5. net/mptcp/sockopt.c +2 −2
include/uapi/linux/mptcp.h+1−0
@@ -50,6 +50,7 @@ struct mptcp_info { · 49 unmodified lines
50 __u8 mptcpi_add_addr_signal_max;50 __u8 mptcpi_add_addr_signal_max;
51 #define mptcpi_endp_signal_max mptcpi_add_addr_signal_max51 #define mptcpi_endp_signal_max mptcpi_add_addr_signal_max
52 __u8 mptcpi_add_addr_accepted_max;52 __u8 mptcpi_add_addr_accepted_max;
53 #define mptcpi_limit_add_addr_accepted mptcpi_add_addr_accepted_max
53 __u32 mptcpi_flags;54 __u32 mptcpi_flags;
54 __u32 mptcpi_token;55 __u32 mptcpi_token;
55 __u64 mptcpi_write_seq;56 __u64 mptcpi_write_seq;
net/mptcp/pm.c+1−1
@@ -1039,7 +1039,7 @@ void mptcp_pm_data_reset(struct mptcp_sock *msk) · 1038 unmodified lines
1039 subflows_allowed) ||1039 subflows_allowed) ||
1040 !!mptcp_pm_get_endp_signal_max(msk));1040 !!mptcp_pm_get_endp_signal_max(msk));
1041 WRITE_ONCE(pm->accept_addr,1041 WRITE_ONCE(pm->accept_addr,
1042 !!mptcp_pm_get_add_addr_accept_max(msk) &&1042 !!mptcp_pm_get_limit_add_addr_accepted(msk) &&
1043 subflows_allowed);1043 subflows_allowed);
1044 WRITE_ONCE(pm->accept_subflow, subflows_allowed);1044 WRITE_ONCE(pm->accept_subflow, subflows_allowed);
1045 1045
net/mptcp/pm_kernel.c+15−12
@@ -21,7 +21,7 @@ struct pm_nl_pernet { · 20 unmodified lines
21 unsigned int addrs;21 unsigned int addrs;
22 unsigned int stale_loss_cnt;22 unsigned int stale_loss_cnt;
23 unsigned int endp_signal_max;23 unsigned int endp_signal_max;
24 unsigned int add_addr_accept_max;24 unsigned int limit_add_addr_accepted;
25 unsigned int local_addr_max;25 unsigned int local_addr_max;
26 unsigned int limit_extra_subflows;26 unsigned int limit_extra_subflows;
27 unsigned int next_id;27 unsigned int next_id;
@@ -54,13 +54,13 @@ unsigned int mptcp_pm_get_endp_signal_max(const struct mptcp_sock *msk) · 26 unmodified lines
54}54}
55EXPORT_SYMBOL_GPL(mptcp_pm_get_endp_signal_max);55EXPORT_SYMBOL_GPL(mptcp_pm_get_endp_signal_max);
56 56
57unsigned int mptcp_pm_get_add_addr_accept_max(const struct mptcp_sock *msk)57unsigned int mptcp_pm_get_limit_add_addr_accepted(const struct mptcp_sock *msk)
58{58{
59 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);59 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
60 60
61 return READ_ONCE(pernet->add_addr_accept_max);61 return READ_ONCE(pernet->limit_add_addr_accepted);
62}62}
63EXPORT_SYMBOL_GPL(mptcp_pm_get_add_addr_accept_max);63EXPORT_SYMBOL_GPL(mptcp_pm_get_limit_add_addr_accepted);
64 64
65unsigned int mptcp_pm_get_limit_extra_subflows(const struct mptcp_sock *msk)65unsigned int mptcp_pm_get_limit_extra_subflows(const struct mptcp_sock *msk)
66{66{
@@ -547,16 +547,16 @@ static void mptcp_pm_nl_add_addr_received(struct mptcp_sock *msk) · 480 unmodified lines
547 struct mptcp_pm_local locals[MPTCP_PM_ADDR_MAX];547 struct mptcp_pm_local locals[MPTCP_PM_ADDR_MAX];
548 struct sock *sk = (struct sock *)msk;548 struct sock *sk = (struct sock *)msk;
549 unsigned int limit_extra_subflows;549 unsigned int limit_extra_subflows;
550 unsigned int add_addr_accept_max;550 unsigned int limit_add_addr_accepted;
551 struct mptcp_addr_info remote;551 struct mptcp_addr_info remote;
552 bool sf_created = false;552 bool sf_created = false;
553 int i, nr;553 int i, nr;
554 554
555 add_addr_accept_max = mptcp_pm_get_add_addr_accept_max(msk);555 limit_add_addr_accepted = mptcp_pm_get_limit_add_addr_accepted(msk);
556 limit_extra_subflows = mptcp_pm_get_limit_extra_subflows(msk);556 limit_extra_subflows = mptcp_pm_get_limit_extra_subflows(msk);
557 557
558 pr_debug("accepted %d:%d remote family %d\n",558 pr_debug("accepted %d:%d remote family %d\n",
559 msk->pm.add_addr_accepted, add_addr_accept_max,559 msk->pm.add_addr_accepted, limit_add_addr_accepted,
560 msk->pm.remote.family);560 msk->pm.remote.family);
561 561
562 remote = msk->pm.remote;562 remote = msk->pm.remote;
@@ -587,7 +587,7 @@ static void mptcp_pm_nl_add_addr_received(struct mptcp_sock *msk) · 24 unmodified lines
587 /* add_addr_accepted is not decr for ID 0 */587 /* add_addr_accepted is not decr for ID 0 */
588 if (remote.id)588 if (remote.id)
589 msk->pm.add_addr_accepted++;589 msk->pm.add_addr_accepted++;
590 if (msk->pm.add_addr_accepted >= add_addr_accept_max ||590 if (msk->pm.add_addr_accepted >= limit_add_addr_accepted ||
591 msk->pm.extra_subflows >= limit_extra_subflows)591 msk->pm.extra_subflows >= limit_extra_subflows)
592 WRITE_ONCE(msk->pm.accept_addr, false);592 WRITE_ONCE(msk->pm.accept_addr, false);
593 }593 }
@@ -596,10 +596,13 @@ static void mptcp_pm_nl_add_addr_received(struct mptcp_sock *msk) · 2 unmodified lines
596void mptcp_pm_nl_rm_addr(struct mptcp_sock *msk, u8 rm_id)596void mptcp_pm_nl_rm_addr(struct mptcp_sock *msk, u8 rm_id)
597{597{
598 if (rm_id && WARN_ON_ONCE(msk->pm.add_addr_accepted == 0)) {598 if (rm_id && WARN_ON_ONCE(msk->pm.add_addr_accepted == 0)) {
599 unsigned int limit_add_addr_accepted =
600 mptcp_pm_get_limit_add_addr_accepted(msk);
601
599 /* Note: if the subflow has been closed before, this602 /* Note: if the subflow has been closed before, this
600 * add_addr_accepted counter will not be decremented.603 * add_addr_accepted counter will not be decremented.
601 */604 */
602 if (--msk->pm.add_addr_accepted < mptcp_pm_get_add_addr_accept_max(msk))605 if (--msk->pm.add_addr_accepted < limit_add_addr_accepted)
603 WRITE_ONCE(msk->pm.accept_addr, true);606 WRITE_ONCE(msk->pm.accept_addr, true);
604 }607 }
605}608}
@@ -1282,7 +1285,7 @@ int mptcp_pm_nl_set_limits_doit(struct sk_buff *skb, struct genl_info *info) · 676 unmodified lines
1282 int ret;1285 int ret;
1283 1286
1284 spin_lock_bh(&pernet->lock);1287 spin_lock_bh(&pernet->lock);
1285 rcv_addrs = pernet->add_addr_accept_max;1288 rcv_addrs = pernet->limit_add_addr_accepted;
1286 ret = parse_limit(info, MPTCP_PM_ATTR_RCV_ADD_ADDRS, &rcv_addrs);1289 ret = parse_limit(info, MPTCP_PM_ATTR_RCV_ADD_ADDRS, &rcv_addrs);
1287 if (ret)1290 if (ret)
1288 goto unlock;1291 goto unlock;
@@ -1292,7 +1295,7 @@ int mptcp_pm_nl_set_limits_doit(struct sk_buff *skb, struct genl_info *info) · 3 unmodified lines
1292 if (ret)1295 if (ret)
1293 goto unlock;1296 goto unlock;
1294 1297
1295 WRITE_ONCE(pernet->add_addr_accept_max, rcv_addrs);1298 WRITE_ONCE(pernet->limit_add_addr_accepted, rcv_addrs);
1296 WRITE_ONCE(pernet->limit_extra_subflows, subflows);1299 WRITE_ONCE(pernet->limit_extra_subflows, subflows);
1297 1300
1298unlock:1301unlock:
@@ -1316,7 +1319,7 @@ int mptcp_pm_nl_get_limits_doit(struct sk_buff *skb, struct genl_info *info) · 17 unmodified lines
1316 goto fail;1319 goto fail;
1317 1320
1318 if (nla_put_u32(msg, MPTCP_PM_ATTR_RCV_ADD_ADDRS,1321 if (nla_put_u32(msg, MPTCP_PM_ATTR_RCV_ADD_ADDRS,
1319 READ_ONCE(pernet->add_addr_accept_max)))1322 READ_ONCE(pernet->limit_add_addr_accepted)))
1320 goto fail;1323 goto fail;
1321 1324
1322 if (nla_put_u32(msg, MPTCP_PM_ATTR_SUBFLOWS,1325 if (nla_put_u32(msg, MPTCP_PM_ATTR_SUBFLOWS,
net/mptcp/protocol.h+2−2
@@ -1181,7 +1181,7 @@ void __init mptcp_pm_nl_init(void); · 1180 unmodified lines
1181void mptcp_pm_worker(struct mptcp_sock *msk);1181void mptcp_pm_worker(struct mptcp_sock *msk);
1182void __mptcp_pm_kernel_worker(struct mptcp_sock *msk);1182void __mptcp_pm_kernel_worker(struct mptcp_sock *msk);
1183unsigned int mptcp_pm_get_endp_signal_max(const struct mptcp_sock *msk);1183unsigned int mptcp_pm_get_endp_signal_max(const struct mptcp_sock *msk);
1184unsigned int mptcp_pm_get_add_addr_accept_max(const struct mptcp_sock *msk);1184unsigned int mptcp_pm_get_limit_add_addr_accepted(const struct mptcp_sock *msk);
1185unsigned int mptcp_pm_get_limit_extra_subflows(const struct mptcp_sock *msk);1185unsigned int mptcp_pm_get_limit_extra_subflows(const struct mptcp_sock *msk);
1186unsigned int mptcp_pm_get_local_addr_max(const struct mptcp_sock *msk);1186unsigned int mptcp_pm_get_local_addr_max(const struct mptcp_sock *msk);
1187 1187
@@ -1203,7 +1203,7 @@ static inline bool mptcp_pm_add_addr_c_flag_case(struct mptcp_sock *msk) · 15 unmodified lines
1203{1203{
1204 return READ_ONCE(msk->pm.remote_deny_join_id0) &&1204 return READ_ONCE(msk->pm.remote_deny_join_id0) &&
1205 msk->pm.local_addr_used == 0 &&1205 msk->pm.local_addr_used == 0 &&
1206 mptcp_pm_get_add_addr_accept_max(msk) == 0 &&1206 mptcp_pm_get_limit_add_addr_accepted(msk) == 0 &&
1207 msk->pm.extra_subflows < mptcp_pm_get_limit_extra_subflows(msk);1207 msk->pm.extra_subflows < mptcp_pm_get_limit_extra_subflows(msk);
1208}1208}
1209 1209
net/mptcp/sockopt.c+2−2
@@ -976,8 +976,8 @@ void mptcp_diag_fill_info(struct mptcp_sock *msk, struct mptcp_info *info) · 975 unmodified lines
976 mptcp_pm_get_limit_extra_subflows(msk);976 mptcp_pm_get_limit_extra_subflows(msk);
977 info->mptcpi_endp_signal_max =977 info->mptcpi_endp_signal_max =
978 mptcp_pm_get_endp_signal_max(msk);978 mptcp_pm_get_endp_signal_max(msk);
979 info->mptcpi_add_addr_accepted_max =979 info->mptcpi_limit_add_addr_accepted =
980 mptcp_pm_get_add_addr_accept_max(msk);980 mptcp_pm_get_limit_add_addr_accepted(msk);
981 info->mptcpi_local_addr_max =981 info->mptcpi_local_addr_max =
982 mptcp_pm_get_local_addr_max(msk);982 mptcp_pm_get_local_addr_max(msk);
983 }983 }