From: "D. Wythe" <alibuda@xxxxxxxxxxxxxxxxx> For inet version of SMC, one of the key goals is to make a fallbacked smc sock can be recognazied as a tcp sock by net tools. So, it is necessary to embedded the tcp sock into smc sock and make the tcp sock as the first member of smc sock. Signed-off-by: D. Wythe <alibuda@xxxxxxxxxxxxxxxxx> --- net/smc/smc.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/net/smc/smc.h b/net/smc/smc.h index fce6a7a..932d61f 100644 --- a/net/smc/smc.h +++ b/net/smc/smc.h @@ -248,7 +248,11 @@ struct smc_connection { }; struct smc_sock { /* smc sock container */ - struct sock sk; + union { + struct tcp6_sock tp6sk; + struct tcp_sock tpsk; + struct sock sk; + }; struct socket *clcsock; /* internal tcp socket */ void (*clcsk_state_change)(struct sock *sk); /* original stat_change fct. */ @@ -388,6 +392,11 @@ static inline void smc_sock_set_flag(struct sock *sk, enum sock_flags flag) set_bit(flag, &sk->sk_flags); } +static __always_inline bool smc_sock_is_inet_sock(const struct sock *sk) +{ + return inet_test_bit(IS_ICSK, sk); +} + #define smc_sock_flag(sk, flag) sock_flag(sk, flag) #endif /* __SMC_H */ -- 1.8.3.1