diff options
Diffstat (limited to 'net/rds/ib.h')
-rw-r--r-- | net/rds/ib.h | 12 |
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 | */ |
362 | static inline struct ib_sge * | 364 | static inline struct ib_sge * |
363 | rds_ib_header_sge(struct rds_ib_connection *ic, struct ib_sge *sge) | 365 | rds_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 | ||
368 | static inline struct ib_sge * | 373 | static inline struct ib_sge * |
369 | rds_ib_data_sge(struct rds_ib_connection *ic, struct ib_sge *sge) | 374 | rds_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 |