summaryrefslogtreecommitdiffstats
path: root/net/rds/rds.h
diff options
context:
space:
mode:
authorAndy Grover <andy.grover@oracle.com>2009-08-21 12:28:34 +0000
committerDavid S. Miller <davem@davemloft.net>2009-08-23 19:13:12 -0700
commit335776bd696a6bf95134baf8ad95847371e4d5f6 (patch)
tree76393aa4683e02b87209981ae96ed44f9689a080 /net/rds/rds.h
parent40d866095df3bb70ded1813f4852cab445ef678b (diff)
downloadlinux-stable-335776bd696a6bf95134baf8ad95847371e4d5f6.tar.gz
linux-stable-335776bd696a6bf95134baf8ad95847371e4d5f6.tar.bz2
linux-stable-335776bd696a6bf95134baf8ad95847371e4d5f6.zip
RDS: Track transports via an array, not a list
Now that transports can be loaded in arbitrary order, it is important for rds_trans_get_preferred() to look for them in a particular order, instead of walking the list until it finds a transport that works for a given address. Now, each transport registers for a specific transport slot, and these are ordered so that preferred transports come first, and then if they are not loaded, other transports are queried. Signed-off-by: Andy Grover <andy.grover@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/rds/rds.h')
-rw-r--r--net/rds/rds.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/net/rds/rds.h b/net/rds/rds.h
index 290566c69d28..85d6f897ecc7 100644
--- a/net/rds/rds.h
+++ b/net/rds/rds.h
@@ -311,11 +311,17 @@ struct rds_notifier {
* flag and header.
*/
+#define RDS_TRANS_IB 0
+#define RDS_TRANS_IWARP 1
+#define RDS_TRANS_TCP 2
+#define RDS_TRANS_COUNT 3
+
struct rds_transport {
char t_name[TRANSNAMSIZ];
struct list_head t_item;
struct module *t_owner;
unsigned int t_prefer_loopback:1;
+ unsigned int t_type;
int (*laddr_check)(__be32 addr);
int (*conn_alloc)(struct rds_connection *conn, gfp_t gfp);