smc: establish new socket family
[platform/kernel/linux-rpi.git] / net / smc / smc.h
1 /*
2  *  Shared Memory Communications over RDMA (SMC-R) and RoCE
3  *
4  *  Definitions for the SMC module (socket related)
5  *
6  *  Copyright IBM Corp. 2016
7  *
8  *  Author(s):  Ursula Braun <ubraun@linux.vnet.ibm.com>
9  */
10 #ifndef __SMC_H
11 #define __SMC_H
12
13 #include <linux/socket.h>
14 #include <linux/types.h>
15 #include <net/sock.h>
16
17 #define SMCPROTO_SMC            0       /* SMC protocol */
18
19 enum smc_state {                /* possible states of an SMC socket */
20         SMC_ACTIVE      = 1,
21         SMC_INIT        = 2,
22         SMC_CLOSED      = 7,
23         SMC_LISTEN      = 10,
24 };
25
26 struct smc_sock {                               /* smc sock container */
27         struct sock             sk;
28         struct socket           *clcsock;       /* internal tcp socket */
29         bool                    use_fallback;   /* fallback to tcp */
30 };
31
32 static inline struct smc_sock *smc_sk(const struct sock *sk)
33 {
34         return (struct smc_sock *)sk;
35 }
36
37 #endif  /* __SMC_H */