diff options
author | Sowmini Varadhan <sowmini.varadhan@oracle.com> | 2016-06-13 12:44:29 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-06-15 02:50:42 -0400 |
commit | 5e833e025d9dc3f61c04e74936a14419efb6a032 (patch) | |
tree | 2713c6d03ce866b5e40c76df593d38764f0e76f2 /net/rds | |
parent | ef9e62c2e5087cb9bc713e3d9776336e1bb40df1 (diff) |
RDS: rds_inc_path_init() helper function for MP capable transports
t_mp_capable transports can use rds_inc_path_init to initialize
all fields in struct rds_incoming, including the i_conn_path.
Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/rds')
-rw-r--r-- | net/rds/rds.h | 2 | ||||
-rw-r--r-- | net/rds/recv.c | 14 |
2 files changed, 16 insertions, 0 deletions
diff --git a/net/rds/rds.h b/net/rds/rds.h index 7c85b2d792b6..c3b14ccd7037 100644 --- a/net/rds/rds.h +++ b/net/rds/rds.h | |||
@@ -764,6 +764,8 @@ void rds_page_exit(void); | |||
764 | /* recv.c */ | 764 | /* recv.c */ |
765 | void rds_inc_init(struct rds_incoming *inc, struct rds_connection *conn, | 765 | void rds_inc_init(struct rds_incoming *inc, struct rds_connection *conn, |
766 | __be32 saddr); | 766 | __be32 saddr); |
767 | void rds_inc_path_init(struct rds_incoming *inc, struct rds_conn_path *conn, | ||
768 | __be32 saddr); | ||
767 | void rds_inc_put(struct rds_incoming *inc); | 769 | void rds_inc_put(struct rds_incoming *inc); |
768 | void rds_recv_incoming(struct rds_connection *conn, __be32 saddr, __be32 daddr, | 770 | void rds_recv_incoming(struct rds_connection *conn, __be32 saddr, __be32 daddr, |
769 | struct rds_incoming *inc, gfp_t gfp); | 771 | struct rds_incoming *inc, gfp_t gfp); |
diff --git a/net/rds/recv.c b/net/rds/recv.c index e36652cfbd35..6d7bd63121fc 100644 --- a/net/rds/recv.c +++ b/net/rds/recv.c | |||
@@ -53,6 +53,20 @@ void rds_inc_init(struct rds_incoming *inc, struct rds_connection *conn, | |||
53 | } | 53 | } |
54 | EXPORT_SYMBOL_GPL(rds_inc_init); | 54 | EXPORT_SYMBOL_GPL(rds_inc_init); |
55 | 55 | ||
56 | void rds_inc_path_init(struct rds_incoming *inc, struct rds_conn_path *cp, | ||
57 | __be32 saddr) | ||
58 | { | ||
59 | atomic_set(&inc->i_refcount, 1); | ||
60 | INIT_LIST_HEAD(&inc->i_item); | ||
61 | inc->i_conn = cp->cp_conn; | ||
62 | inc->i_conn_path = cp; | ||
63 | inc->i_saddr = saddr; | ||
64 | inc->i_rdma_cookie = 0; | ||
65 | inc->i_rx_tstamp.tv_sec = 0; | ||
66 | inc->i_rx_tstamp.tv_usec = 0; | ||
67 | } | ||
68 | EXPORT_SYMBOL_GPL(rds_inc_path_init); | ||
69 | |||
56 | static void rds_inc_addref(struct rds_incoming *inc) | 70 | static void rds_inc_addref(struct rds_incoming *inc) |
57 | { | 71 | { |
58 | rdsdebug("addref inc %p ref %d\n", inc, atomic_read(&inc->i_refcount)); | 72 | rdsdebug("addref inc %p ref %d\n", inc, atomic_read(&inc->i_refcount)); |