{
        u8 subtype = *ptr >> 4;
        int expected_opsize;
+       u16 subopt;
        u8 version;
        u8 flags;
        u8 i;
                                expected_opsize = TCPOLEN_MPTCP_MPC_ACK_DATA;
                        else
                                expected_opsize = TCPOLEN_MPTCP_MPC_ACK;
+                       subopt = OPTION_MPTCP_MPC_ACK;
                } else {
-                       if (TCP_SKB_CB(skb)->tcp_flags & TCPHDR_ACK)
+                       if (TCP_SKB_CB(skb)->tcp_flags & TCPHDR_ACK) {
                                expected_opsize = TCPOLEN_MPTCP_MPC_SYNACK;
-                       else
+                               subopt = OPTION_MPTCP_MPC_SYNACK;
+                       } else {
                                expected_opsize = TCPOLEN_MPTCP_MPC_SYN;
+                               subopt = OPTION_MPTCP_MPC_SYN;
+                       }
                }
 
                /* Cfr RFC 8684 Section 3.3.0:
 
                mp_opt->deny_join_id0 = !!(flags & MPTCP_CAP_DENY_JOIN_ID0);
 
-               mp_opt->suboptions |= OPTIONS_MPTCP_MPC;
+               mp_opt->suboptions |= subopt;
                if (opsize >= TCPOLEN_MPTCP_MPC_SYNACK) {
                        mp_opt->sndr_key = get_unaligned_be64(ptr);
                        ptr += 8;