return false;
 }
 
-void mptcp_subflow_eof(struct sock *sk)
-{
-       if (!test_and_set_bit(MPTCP_WORK_EOF, &mptcp_sk(sk)->flags))
-               mptcp_schedule_work(sk);
-}
-
-static void mptcp_check_for_eof(struct mptcp_sock *msk)
-{
-       struct mptcp_subflow_context *subflow;
-       struct sock *sk = (struct sock *)msk;
-       int receivers = 0;
-
-       mptcp_for_each_subflow(msk, subflow)
-               receivers += !subflow->rx_eof;
-       if (receivers)
-               return;
-
-       if (!(sk->sk_shutdown & RCV_SHUTDOWN)) {
-               /* hopefully temporary hack: propagate shutdown status
-                * to msk, when all subflows agree on it
-                */
-               WRITE_ONCE(sk->sk_shutdown, sk->sk_shutdown | RCV_SHUTDOWN);
-
-               smp_mb__before_atomic(); /* SHUTDOWN must be visible first */
-               sk->sk_data_ready(sk);
-       }
-
-       switch (sk->sk_state) {
-       case TCP_ESTABLISHED:
-               inet_sk_state_store(sk, TCP_CLOSE_WAIT);
-               break;
-       case TCP_FIN_WAIT1:
-               inet_sk_state_store(sk, TCP_CLOSING);
-               break;
-       case TCP_FIN_WAIT2:
-               inet_sk_state_store(sk, TCP_CLOSE);
-               break;
-       default:
-               return;
-       }
-       mptcp_close_wake_up(sk);
-}
-
 static struct sock *mptcp_subflow_recv_lookup(const struct mptcp_sock *msk)
 {
        struct mptcp_subflow_context *subflow;
                                break;
                        }
 
-                       if (test_and_clear_bit(MPTCP_WORK_EOF, &msk->flags))
-                               mptcp_check_for_eof(msk);
-
                        if (sk->sk_shutdown & RCV_SHUTDOWN) {
                                /* race breaker: the shutdown could be after the
                                 * previous receive queue check
 
        mptcp_pm_nl_work(msk);
 
-       if (test_and_clear_bit(MPTCP_WORK_EOF, &msk->flags))
-               mptcp_check_for_eof(msk);
-
        mptcp_check_send_data_fin(sk);
        mptcp_check_data_fin_ack(sk);
        mptcp_check_data_fin(sk);
 
 /* MPTCP socket atomic flags */
 #define MPTCP_NOSPACE          1
 #define MPTCP_WORK_RTX         2
-#define MPTCP_WORK_EOF         3
 #define MPTCP_FALLBACK_DONE    4
 #define MPTCP_WORK_CLOSE_SUBFLOW 5
 
                send_mp_fail : 1,
                send_fastclose : 1,
                send_infinite_map : 1,
-               rx_eof : 1,
                remote_key_valid : 1,        /* received the peer key from */
                disposable : 1,     /* ctx can be free at ulp release time */
                stale : 1,          /* unable to snd/rcv data, do not use for xmit */
                local_id_valid : 1, /* local_id is correctly initialized */
                valid_csum_seen : 1,        /* at least one csum validated */
                is_mptfo : 1,       /* subflow is doing TFO */
-               __unused : 8;
+               __unused : 9;
        enum mptcp_data_avail data_avail;
        u32     remote_nonce;
        u64     thmac;
 void __mptcp_check_push(struct sock *sk, struct sock *ssk);
 void __mptcp_data_acked(struct sock *sk);
 void __mptcp_error_report(struct sock *sk);
-void mptcp_subflow_eof(struct sock *sk);
 bool mptcp_update_rcv_data_fin(struct mptcp_sock *msk, u64 data_fin_seq, bool use_64bit);
 static inline bool mptcp_data_fin_enabled(const struct mptcp_sock *msk)
 {