mptcp: add csum_enabled in mptcp_sock
authorGeliang Tang <geliangtang@gmail.com>
Thu, 17 Jun 2021 23:46:07 +0000 (16:46 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 18 Jun 2021 18:40:11 +0000 (11:40 -0700)
This patch added a new member named csum_enabled in struct mptcp_sock,
used a dummy mptcp_is_checksum_enabled() helper to initialize it.

Also added a new member named mptcpi_csum_enabled in struct mptcp_info
to expose the csum_enabled flag.

Acked-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/mptcp.h
net/mptcp/mptcp_diag.c
net/mptcp/protocol.c
net/mptcp/protocol.h

index 8eb3c08..7b05f71 100644 (file)
@@ -105,6 +105,7 @@ struct mptcp_info {
        __u64   mptcpi_rcv_nxt;
        __u8    mptcpi_local_addr_used;
        __u8    mptcpi_local_addr_max;
+       __u8    mptcpi_csum_enabled;
 };
 
 /*
index f16d9b5..8f88dde 100644 (file)
@@ -144,6 +144,7 @@ static void mptcp_diag_get_info(struct sock *sk, struct inet_diag_msg *r,
        info->mptcpi_write_seq = READ_ONCE(msk->write_seq);
        info->mptcpi_snd_una = READ_ONCE(msk->snd_una);
        info->mptcpi_rcv_nxt = READ_ONCE(msk->ack_seq);
+       info->mptcpi_csum_enabled = READ_ONCE(msk->csum_enabled);
        unlock_sock_fast(sk, slow);
 }
 
index 9930950..2caca0d 100644 (file)
@@ -2453,6 +2453,7 @@ static int __mptcp_init_sock(struct sock *sk)
        msk->ack_hint = NULL;
        msk->first = NULL;
        inet_csk(sk)->icsk_sync_mss = mptcp_sync_mss;
+       WRITE_ONCE(msk->csum_enabled, mptcp_is_checksum_enabled(sock_net(sk)));
 
        mptcp_pm_data_init(msk);
 
index 89f6b73..1fc6693 100644 (file)
@@ -234,6 +234,7 @@ struct mptcp_sock {
        bool            snd_data_fin_enable;
        bool            rcv_fastclose;
        bool            use_64bit_ack; /* Set when we received a 64-bit DSN */
+       bool            csum_enabled;
        spinlock_t      join_list_lock;
        struct sock     *ack_hint;
        struct work_struct work;
@@ -525,6 +526,7 @@ static inline void mptcp_subflow_delegated_done(struct mptcp_subflow_context *su
 
 int mptcp_is_enabled(struct net *net);
 unsigned int mptcp_get_add_addr_timeout(struct net *net);
+static inline int mptcp_is_checksum_enabled(struct net *net) { return false; }
 void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow,
                                     struct mptcp_options_received *mp_opt);
 bool mptcp_subflow_data_available(struct sock *sk);