aboutsummaryrefslogtreecommitdiffstats
path: root/net/rds/ib.h
diff options
context:
space:
mode:
Diffstat (limited to 'net/rds/ib.h')
-rw-r--r--net/rds/ib.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/net/rds/ib.h b/net/rds/ib.h
index 420afb95ca1a..c0de7af6cf60 100644
--- a/net/rds/ib.h
+++ b/net/rds/ib.h
@@ -358,17 +358,25 @@ extern ctl_table rds_ib_sysctl_table[];
358/* 358/*
359 * Helper functions for getting/setting the header and data SGEs in 359 * Helper functions for getting/setting the header and data SGEs in
360 * RDS packets (not RDMA) 360 * RDS packets (not RDMA)
361 *
362 * From version 3.1 onwards, header is in front of data in the sge.
361 */ 363 */
362static inline struct ib_sge * 364static inline struct ib_sge *
363rds_ib_header_sge(struct rds_ib_connection *ic, struct ib_sge *sge) 365rds_ib_header_sge(struct rds_ib_connection *ic, struct ib_sge *sge)
364{ 366{
365 return &sge[0]; 367 if (ic->conn->c_version > RDS_PROTOCOL_3_0)
368 return &sge[0];
369 else
370 return &sge[1];
366} 371}
367 372
368static inline struct ib_sge * 373static inline struct ib_sge *
369rds_ib_data_sge(struct rds_ib_connection *ic, struct ib_sge *sge) 374rds_ib_data_sge(struct rds_ib_connection *ic, struct ib_sge *sge)
370{ 375{
371 return &sge[1]; 376 if (ic->conn->c_version > RDS_PROTOCOL_3_0)
377 return &sge[1];
378 else
379 return &sge[0];
372} 380}
373 381
374#endif 382#endif