msk->pm.local = *addr;
                add_addr |= BIT(MPTCP_ADD_ADDR_SIGNAL);
        }
-       if (addr->family == AF_INET6)
-               add_addr |= BIT(MPTCP_ADD_ADDR_IPV6);
-       if (addr->port)
-               add_addr |= BIT(MPTCP_ADD_ADDR_PORT);
        WRITE_ONCE(msk->pm.addr_signal, add_addr);
        return 0;
 }
        }
 
        *echo = mptcp_pm_should_add_signal_echo(msk);
-       *port = mptcp_pm_should_add_signal_port(msk);
+       *port = !!(*echo ? msk->pm.remote.port : msk->pm.local.port);
 
        family = *echo ? msk->pm.remote.family : msk->pm.local.family;
        if (remaining < mptcp_add_addr_len(family, *echo, *port))
 
                bool slow;
 
                spin_unlock_bh(&msk->pm.lock);
-               pr_debug("send ack for %s%s%s",
-                        mptcp_pm_should_add_signal(msk) ? "add_addr" : "rm_addr",
-                        mptcp_pm_should_add_signal_ipv6(msk) ? " [ipv6]" : "",
-                        mptcp_pm_should_add_signal_port(msk) ? " [port]" : "");
+               pr_debug("send ack for %s",
+                        mptcp_pm_should_add_signal(msk) ? "add_addr" : "rm_addr");
 
                slow = lock_sock_fast(ssk);
                tcp_send_ack(ssk);
 
 enum mptcp_addr_signal_status {
        MPTCP_ADD_ADDR_SIGNAL,
        MPTCP_ADD_ADDR_ECHO,
-       MPTCP_ADD_ADDR_IPV6,
-       MPTCP_ADD_ADDR_PORT,
        MPTCP_RM_ADDR_SIGNAL,
 };
 
        return READ_ONCE(msk->pm.addr_signal) & BIT(MPTCP_ADD_ADDR_ECHO);
 }
 
-static inline bool mptcp_pm_should_add_signal_ipv6(struct mptcp_sock *msk)
-{
-       return READ_ONCE(msk->pm.addr_signal) & BIT(MPTCP_ADD_ADDR_IPV6);
-}
-
-static inline bool mptcp_pm_should_add_signal_port(struct mptcp_sock *msk)
-{
-       return READ_ONCE(msk->pm.addr_signal) & BIT(MPTCP_ADD_ADDR_PORT);
-}
-
 static inline bool mptcp_pm_should_rm_signal(struct mptcp_sock *msk)
 {
        return READ_ONCE(msk->pm.addr_signal) & BIT(MPTCP_RM_ADDR_SIGNAL);