Commit d85a8fde authored by Mat Martineau's avatar Mat Martineau Committed by Jakub Kicinski
Browse files

mptcp: Add a member to mptcp_pm_data to track kernel vs userspace mode



When adding support for netlink path management commands, the kernel
needs to know whether paths are being controlled by the in-kernel path
manager or a userspace PM.

Acked-by: default avatarPaolo Abeni <pabeni@redhat.com>
Signed-off-by: default avatarMat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 9273b9d5
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -424,6 +424,10 @@ void mptcp_pm_data_reset(struct mptcp_sock *msk)
	pm->subflows = 0;
	pm->rm_list_tx.nr = 0;
	pm->rm_list_rx.nr = 0;
	WRITE_ONCE(pm->pm_type, MPTCP_PM_TYPE_KERNEL);
	/* pm->work_pending must be only be set to 'true' when
	 * pm->pm_type is set to MPTCP_PM_TYPE_KERNEL
	 */
	WRITE_ONCE(pm->work_pending,
		   (!!mptcp_pm_get_local_addr_max(msk) && subflows_allowed) ||
		   !!mptcp_pm_get_add_addr_signal_max(msk));
+9 −0
Original line number Diff line number Diff line
@@ -184,6 +184,14 @@ enum mptcp_pm_status {
					 */
};

enum mptcp_pm_type {
	MPTCP_PM_TYPE_KERNEL = 0,
	MPTCP_PM_TYPE_USERSPACE,

	__MPTCP_PM_TYPE_NR,
	__MPTCP_PM_TYPE_MAX = __MPTCP_PM_TYPE_NR - 1,
};

/* Status bits below MPTCP_PM_ALREADY_ESTABLISHED need pm worker actions */
#define MPTCP_PM_WORK_MASK ((1 << MPTCP_PM_ALREADY_ESTABLISHED) - 1)

@@ -212,6 +220,7 @@ struct mptcp_pm_data {
	u8		add_addr_signaled;
	u8		add_addr_accepted;
	u8		local_addr_used;
	u8		pm_type;
	u8		subflows;
	u8		status;
	DECLARE_BITMAP(id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1);