You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
smc: establish new socket family
* enable smc module loading and unloading * register new socket family * basic smc socket creation and deletion * use backing TCP socket to run CLC (Connection Layer Control) handshake of SMC protocol * Setup for infiniband traffic is implemented in follow-on patches. For now fallback to TCP socket is always used. Signed-off-by: Ursula Braun <ubraun@linux.vnet.ibm.com> Reviewed-by: Utz Bacher <utz.bacher@de.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
4b9d07a440
commit
ac7138746e
@@ -57,6 +57,7 @@ source "net/packet/Kconfig"
|
||||
source "net/unix/Kconfig"
|
||||
source "net/xfrm/Kconfig"
|
||||
source "net/iucv/Kconfig"
|
||||
source "net/smc/Kconfig"
|
||||
|
||||
config INET
|
||||
bool "TCP/IP networking"
|
||||
|
||||
@@ -51,6 +51,7 @@ obj-$(CONFIG_MAC80211) += mac80211/
|
||||
obj-$(CONFIG_TIPC) += tipc/
|
||||
obj-$(CONFIG_NETLABEL) += netlabel/
|
||||
obj-$(CONFIG_IUCV) += iucv/
|
||||
obj-$(CONFIG_SMC) += smc/
|
||||
obj-$(CONFIG_RFKILL) += rfkill/
|
||||
obj-$(CONFIG_NET_9P) += 9p/
|
||||
obj-$(CONFIG_CAIF) += caif/
|
||||
|
||||
+3
-3
@@ -222,7 +222,7 @@ static const char *const af_family_key_strings[AF_MAX+1] = {
|
||||
"sk_lock-AF_RXRPC" , "sk_lock-AF_ISDN" , "sk_lock-AF_PHONET" ,
|
||||
"sk_lock-AF_IEEE802154", "sk_lock-AF_CAIF" , "sk_lock-AF_ALG" ,
|
||||
"sk_lock-AF_NFC" , "sk_lock-AF_VSOCK" , "sk_lock-AF_KCM" ,
|
||||
"sk_lock-AF_MAX"
|
||||
"sk_lock-AF_SMC" , "sk_lock-AF_MAX"
|
||||
};
|
||||
static const char *const af_family_slock_key_strings[AF_MAX+1] = {
|
||||
"slock-AF_UNSPEC", "slock-AF_UNIX" , "slock-AF_INET" ,
|
||||
@@ -239,7 +239,7 @@ static const char *const af_family_slock_key_strings[AF_MAX+1] = {
|
||||
"slock-AF_RXRPC" , "slock-AF_ISDN" , "slock-AF_PHONET" ,
|
||||
"slock-AF_IEEE802154", "slock-AF_CAIF" , "slock-AF_ALG" ,
|
||||
"slock-AF_NFC" , "slock-AF_VSOCK" ,"slock-AF_KCM" ,
|
||||
"slock-AF_MAX"
|
||||
"slock-AF_SMC" , "slock-AF_MAX"
|
||||
};
|
||||
static const char *const af_family_clock_key_strings[AF_MAX+1] = {
|
||||
"clock-AF_UNSPEC", "clock-AF_UNIX" , "clock-AF_INET" ,
|
||||
@@ -256,7 +256,7 @@ static const char *const af_family_clock_key_strings[AF_MAX+1] = {
|
||||
"clock-AF_RXRPC" , "clock-AF_ISDN" , "clock-AF_PHONET" ,
|
||||
"clock-AF_IEEE802154", "clock-AF_CAIF" , "clock-AF_ALG" ,
|
||||
"clock-AF_NFC" , "clock-AF_VSOCK" , "clock-AF_KCM" ,
|
||||
"clock-AF_MAX"
|
||||
"closck-AF_smc" , "clock-AF_MAX"
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
config SMC
|
||||
tristate "SMC socket protocol family"
|
||||
depends on INET && INFINIBAND
|
||||
---help---
|
||||
SMC-R provides a "sockets over RDMA" solution making use of
|
||||
RDMA over Converged Ethernet (RoCE) technology to upgrade
|
||||
AF_INET TCP connections transparently.
|
||||
The Linux implementation of the SMC-R solution is designed as
|
||||
a separate socket family SMC.
|
||||
|
||||
Select this option if you want to run SMC socket applications
|
||||
@@ -0,0 +1,2 @@
|
||||
obj-$(CONFIG_SMC) += smc.o
|
||||
smc-y := af_smc.o
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Shared Memory Communications over RDMA (SMC-R) and RoCE
|
||||
*
|
||||
* Definitions for the SMC module (socket related)
|
||||
*
|
||||
* Copyright IBM Corp. 2016
|
||||
*
|
||||
* Author(s): Ursula Braun <ubraun@linux.vnet.ibm.com>
|
||||
*/
|
||||
#ifndef __SMC_H
|
||||
#define __SMC_H
|
||||
|
||||
#include <linux/socket.h>
|
||||
#include <linux/types.h>
|
||||
#include <net/sock.h>
|
||||
|
||||
#define SMCPROTO_SMC 0 /* SMC protocol */
|
||||
|
||||
enum smc_state { /* possible states of an SMC socket */
|
||||
SMC_ACTIVE = 1,
|
||||
SMC_INIT = 2,
|
||||
SMC_CLOSED = 7,
|
||||
SMC_LISTEN = 10,
|
||||
};
|
||||
|
||||
struct smc_sock { /* smc sock container */
|
||||
struct sock sk;
|
||||
struct socket *clcsock; /* internal tcp socket */
|
||||
bool use_fallback; /* fallback to tcp */
|
||||
};
|
||||
|
||||
static inline struct smc_sock *smc_sk(const struct sock *sk)
|
||||
{
|
||||
return (struct smc_sock *)sk;
|
||||
}
|
||||
|
||||
#endif /* __SMC_H */
|
||||
Reference in New Issue
Block a user