Commit 40d866095df3bb70ded1813f4852cab445ef678b

Authored by Andy Grover
Committed by David S. Miller
1 parent 616b757ae1

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: Andy Grover <andy.grover@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

Showing 4 changed files with 35 additions and 16 deletions Side-by-side Diff

1 1  
2 2 config RDS
3   - tristate "Reliable Datagram Sockets (RDS) (EXPERIMENTAL)"
4   - depends on INET && INFINIBAND_IPOIB && EXPERIMENTAL
5   - depends on INFINIBAND && INFINIBAND_ADDR_TRANS
  3 + tristate "The RDS Protocol (EXPERIMENTAL)"
  4 + depends on INET && EXPERIMENTAL
6 5 ---help---
7   - RDS provides reliable, sequenced delivery of datagrams
8   - over Infiniband.
  6 + The RDS (Reliable Datagram Sockets) protocol provides reliable,
  7 + sequenced delivery of datagrams over Infiniband, iWARP,
  8 + or TCP.
9 9  
  10 +config RDS_RDMA
  11 + tristate "RDS over Infiniband and iWARP"
  12 + depends on RDS && INFINIBAND && INFINIBAND_ADDR_TRANS
  13 + ---help---
  14 + Allow RDS to use Infiniband and iWARP as a transport.
  15 + This transport supports RDMA operations.
  16 +
  17 +config RDS_TCP
  18 + tristate "RDS over TCP"
  19 + depends on RDS
  20 + ---help---
  21 + Allow RDS to use TCP as a transport.
  22 + This transport does not support RDMA operations.
  23 +
10 24 config RDS_DEBUG
11   - bool "Debugging messages"
  25 + bool "RDS debugging messages"
12 26 depends on RDS
13 27 default n
1 1 obj-$(CONFIG_RDS) += rds.o
2 2 rds-y := af_rds.o bind.o cong.o connection.o info.o message.o \
3 3 recv.o send.o stats.o sysctl.o threads.o transport.o \
4   - loop.o page.o rdma.o \
5   - rdma_transport.o \
  4 + loop.o page.o rdma.o
  5 +
  6 +obj-$(CONFIG_RDS_RDMA) += rds_rdma.o
  7 +rds_rdma-objs := rdma_transport.o \
6 8 ib.o ib_cm.o ib_recv.o ib_ring.o ib_send.o ib_stats.o \
7 9 ib_sysctl.o ib_rdma.o \
8 10 iw.o iw_cm.o iw_recv.o iw_ring.o iw_send.o iw_stats.o \
9 11 iw_sysctl.o iw_rdma.o
  12 +
  13 +
  14 +obj-$(CONFIG_RDS_TCP) += rds_tcp.o
  15 +rds_tcp-objs := tcp.o tcp_connect.o tcp_listen.o tcp_recv.o \
  16 + tcp_send.o tcp_stats.o
10 17  
11 18 ifeq ($(CONFIG_RDS_DEBUG), y)
12 19 EXTRA_CFLAGS += -DDEBUG
... ... @@ -39,7 +39,6 @@
39 39  
40 40 #include "rds.h"
41 41 #include "rdma.h"
42   -#include "rdma_transport.h"
43 42  
44 43 /* this is just used for stats gathering :/ */
45 44 static DEFINE_SPINLOCK(rds_sock_lock);
... ... @@ -509,7 +508,6 @@
509 508  
510 509 static void __exit rds_exit(void)
511 510 {
512   - rds_rdma_exit();
513 511 sock_unregister(rds_family_ops.family);
514 512 proto_unregister(&rds_proto);
515 513 rds_conn_exit();
516 514  
... ... @@ -549,14 +547,8 @@
549 547 rds_info_register_func(RDS_INFO_SOCKETS, rds_sock_info);
550 548 rds_info_register_func(RDS_INFO_RECV_MESSAGES, rds_sock_inc_info);
551 549  
552   - /* ib/iwarp transports currently compiled-in */
553   - ret = rds_rdma_init();
554   - if (ret)
555   - goto out_sock;
556 550 goto out;
557 551  
558   -out_sock:
559   - sock_unregister(rds_family_ops.family);
560 552 out_proto:
561 553 proto_unregister(&rds_proto);
562 554 out_stats:
net/rds/rdma_transport.c
... ... @@ -203,6 +203,7 @@
203 203 out:
204 204 return ret;
205 205 }
  206 +module_init(rds_rdma_init);
206 207  
207 208 void rds_rdma_exit(void)
208 209 {
... ... @@ -211,4 +212,9 @@
211 212 rds_ib_exit();
212 213 rds_iw_exit();
213 214 }
  215 +module_exit(rds_rdma_exit);
  216 +
  217 +MODULE_AUTHOR("Oracle Corporation <rds-devel@oss.oracle.com>");
  218 +MODULE_DESCRIPTION("RDS: IB/iWARP transport");
  219 +MODULE_LICENSE("Dual BSD/GPL");