summaryrefslogtreecommitdiff
path: root/net/smc/smc_inet.h
diff options
context:
space:
mode:
authorD. Wythe <alibuda@linux.alibaba.com>2024-06-14 02:00:30 +0800
committerDavid S. Miller <davem@davemloft.net>2024-06-17 13:14:09 +0100
commitd25a92ccae6bed02327b63d138e12e7806830f78 (patch)
treed2648151ef19251c559aa1f6a6790b7759d08d50 /net/smc/smc_inet.h
parent13543d02c90d6195b31bef8fb51dfeff77c0b368 (diff)
downloadlwn-d25a92ccae6bed02327b63d138e12e7806830f78.tar.gz
lwn-d25a92ccae6bed02327b63d138e12e7806830f78.zip
net/smc: Introduce IPPROTO_SMC
This patch allows to create smc socket via AF_INET, similar to the following code, /* create v4 smc sock */ v4 = socket(AF_INET, SOCK_STREAM, IPPROTO_SMC); /* create v6 smc sock */ v6 = socket(AF_INET6, SOCK_STREAM, IPPROTO_SMC); There are several reasons why we believe it is appropriate here: 1. For smc sockets, it actually use IPv4 (AF-INET) or IPv6 (AF-INET6) address. There is no AF_SMC address at all. 2. Create smc socket in the AF_INET(6) path, which allows us to reuse the infrastructure of AF_INET(6) path, such as common ebpf hooks. Otherwise, smc have to implement it again in AF_SMC path. Signed-off-by: D. Wythe <alibuda@linux.alibaba.com> Reviewed-by: Wenjia Zhang <wenjia@linux.ibm.com> Reviewed-by: Dust Li <dust.li@linux.alibaba.com> Tested-by: Niklas Schnelle <schnelle@linux.ibm.com> Tested-by: Wenjia Zhang <wenjia@linux.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/smc/smc_inet.h')
-rw-r--r--net/smc/smc_inet.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/net/smc/smc_inet.h b/net/smc/smc_inet.h
new file mode 100644
index 000000000000..a489c8a2b8ef
--- /dev/null
+++ b/net/smc/smc_inet.h
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Shared Memory Communications over RDMA (SMC-R) and RoCE
+ *
+ * Definitions for the IPPROTO_SMC (socket related)
+
+ * Copyright IBM Corp. 2016
+ * Copyright (c) 2024, Alibaba Inc.
+ *
+ * Author: D. Wythe <alibuda@linux.alibaba.com>
+ */
+#ifndef __INET_SMC
+#define __INET_SMC
+
+/* Initialize protocol registration on IPPROTO_SMC,
+ * @return 0 on success
+ */
+int smc_inet_init(void);
+
+void smc_inet_exit(void);
+
+#endif /* __INET_SMC */