Commit 40d86609 authored by Andy Grover's avatar Andy Grover Committed by David S. Miller

RDS: Modularize RDMA and TCP transports

Enable the building of transports as modules.

Also, improve consistency of Kconfig messages in relation to other
protocols, and move build dependency on IB from the RDS core code
to the rds_rdma module.
Signed-off-by: default avatarAndy Grover <andy.grover@oracle.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 616b757a
config RDS config RDS
tristate "Reliable Datagram Sockets (RDS) (EXPERIMENTAL)" tristate "The RDS Protocol (EXPERIMENTAL)"
depends on INET && INFINIBAND_IPOIB && EXPERIMENTAL depends on INET && EXPERIMENTAL
depends on INFINIBAND && INFINIBAND_ADDR_TRANS
---help--- ---help---
RDS provides reliable, sequenced delivery of datagrams The RDS (Reliable Datagram Sockets) protocol provides reliable,
over Infiniband. sequenced delivery of datagrams over Infiniband, iWARP,
or TCP.
config RDS_RDMA
tristate "RDS over Infiniband and iWARP"
depends on RDS && INFINIBAND && INFINIBAND_ADDR_TRANS
---help---
Allow RDS to use Infiniband and iWARP as a transport.
This transport supports RDMA operations.
config RDS_TCP
tristate "RDS over TCP"
depends on RDS
---help---
Allow RDS to use TCP as a transport.
This transport does not support RDMA operations.
config RDS_DEBUG config RDS_DEBUG
bool "Debugging messages" bool "RDS debugging messages"
depends on RDS depends on RDS
default n default n
obj-$(CONFIG_RDS) += rds.o obj-$(CONFIG_RDS) += rds.o
rds-y := af_rds.o bind.o cong.o connection.o info.o message.o \ rds-y := af_rds.o bind.o cong.o connection.o info.o message.o \
recv.o send.o stats.o sysctl.o threads.o transport.o \ recv.o send.o stats.o sysctl.o threads.o transport.o \
loop.o page.o rdma.o \ loop.o page.o rdma.o
rdma_transport.o \
obj-$(CONFIG_RDS_RDMA) += rds_rdma.o
rds_rdma-objs := rdma_transport.o \
ib.o ib_cm.o ib_recv.o ib_ring.o ib_send.o ib_stats.o \ ib.o ib_cm.o ib_recv.o ib_ring.o ib_send.o ib_stats.o \
ib_sysctl.o ib_rdma.o \ ib_sysctl.o ib_rdma.o \
iw.o iw_cm.o iw_recv.o iw_ring.o iw_send.o iw_stats.o \ iw.o iw_cm.o iw_recv.o iw_ring.o iw_send.o iw_stats.o \
iw_sysctl.o iw_rdma.o iw_sysctl.o iw_rdma.o
obj-$(CONFIG_RDS_TCP) += rds_tcp.o
rds_tcp-objs := tcp.o tcp_connect.o tcp_listen.o tcp_recv.o \
tcp_send.o tcp_stats.o
ifeq ($(CONFIG_RDS_DEBUG), y) ifeq ($(CONFIG_RDS_DEBUG), y)
EXTRA_CFLAGS += -DDEBUG EXTRA_CFLAGS += -DDEBUG
endif endif
......
...@@ -39,7 +39,6 @@ ...@@ -39,7 +39,6 @@
#include "rds.h" #include "rds.h"
#include "rdma.h" #include "rdma.h"
#include "rdma_transport.h"
/* this is just used for stats gathering :/ */ /* this is just used for stats gathering :/ */
static DEFINE_SPINLOCK(rds_sock_lock); static DEFINE_SPINLOCK(rds_sock_lock);
...@@ -509,7 +508,6 @@ static void rds_sock_info(struct socket *sock, unsigned int len, ...@@ -509,7 +508,6 @@ static void rds_sock_info(struct socket *sock, unsigned int len,
static void __exit rds_exit(void) static void __exit rds_exit(void)
{ {
rds_rdma_exit();
sock_unregister(rds_family_ops.family); sock_unregister(rds_family_ops.family);
proto_unregister(&rds_proto); proto_unregister(&rds_proto);
rds_conn_exit(); rds_conn_exit();
...@@ -549,14 +547,8 @@ static int __init rds_init(void) ...@@ -549,14 +547,8 @@ static int __init rds_init(void)
rds_info_register_func(RDS_INFO_SOCKETS, rds_sock_info); rds_info_register_func(RDS_INFO_SOCKETS, rds_sock_info);
rds_info_register_func(RDS_INFO_RECV_MESSAGES, rds_sock_inc_info); rds_info_register_func(RDS_INFO_RECV_MESSAGES, rds_sock_inc_info);
/* ib/iwarp transports currently compiled-in */
ret = rds_rdma_init();
if (ret)
goto out_sock;
goto out; goto out;
out_sock:
sock_unregister(rds_family_ops.family);
out_proto: out_proto:
proto_unregister(&rds_proto); proto_unregister(&rds_proto);
out_stats: out_stats:
......
...@@ -203,6 +203,7 @@ int __init rds_rdma_init(void) ...@@ -203,6 +203,7 @@ int __init rds_rdma_init(void)
out: out:
return ret; return ret;
} }
module_init(rds_rdma_init);
void rds_rdma_exit(void) void rds_rdma_exit(void)
{ {
...@@ -211,4 +212,9 @@ void rds_rdma_exit(void) ...@@ -211,4 +212,9 @@ void rds_rdma_exit(void)
rds_ib_exit(); rds_ib_exit();
rds_iw_exit(); rds_iw_exit();
} }
module_exit(rds_rdma_exit);
MODULE_AUTHOR("Oracle Corporation <rds-devel@oss.oracle.com>");
MODULE_DESCRIPTION("RDS: IB/iWARP transport");
MODULE_LICENSE("Dual BSD/GPL");
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment