diff options
author | Roland Dreier <rolandd@cisco.com> | 2006-02-13 15:48:12 -0500 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2006-03-20 13:08:12 -0500 |
commit | 8a51866f08103ba04894ce0f65eef567ddc3ed40 (patch) | |
tree | 39af79ce5995900c14610acc768850a749961ee9 /include/rdma | |
parent | 3fa1fa3e809dc009a080ca9f052cee2e17836c63 (diff) |
IB: Add ib_modify_qp_is_ok() library function
The in-kernel mthca driver contains a table of which attributes are
valid for each queue pair state transition. It turns out that both
other IB drivers -- ipath and ehca -- which are being prepared for
merging have copied this table, errors and all.
To forestall this code duplication, move this table and the code to
check parameters against it into a midlayer library function,
ib_modify_qp_is_ok().
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'include/rdma')
-rw-r--r-- | include/rdma/ib_verbs.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 61a4390ae9d8..010287c844e7 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h | |||
@@ -990,6 +990,24 @@ static inline int ib_copy_to_udata(struct ib_udata *udata, void *src, size_t len | |||
990 | return copy_to_user(udata->outbuf, src, len) ? -EFAULT : 0; | 990 | return copy_to_user(udata->outbuf, src, len) ? -EFAULT : 0; |
991 | } | 991 | } |
992 | 992 | ||
993 | /** | ||
994 | * ib_modify_qp_is_ok - Check that the supplied attribute mask | ||
995 | * contains all required attributes and no attributes not allowed for | ||
996 | * the given QP state transition. | ||
997 | * @cur_state: Current QP state | ||
998 | * @next_state: Next QP state | ||
999 | * @type: QP type | ||
1000 | * @mask: Mask of supplied QP attributes | ||
1001 | * | ||
1002 | * This function is a helper function that a low-level driver's | ||
1003 | * modify_qp method can use to validate the consumer's input. It | ||
1004 | * checks that cur_state and next_state are valid QP states, that a | ||
1005 | * transition from cur_state to next_state is allowed by the IB spec, | ||
1006 | * and that the attribute mask supplied is allowed for the transition. | ||
1007 | */ | ||
1008 | int ib_modify_qp_is_ok(enum ib_qp_state cur_state, enum ib_qp_state next_state, | ||
1009 | enum ib_qp_type type, enum ib_qp_attr_mask mask); | ||
1010 | |||
993 | int ib_register_event_handler (struct ib_event_handler *event_handler); | 1011 | int ib_register_event_handler (struct ib_event_handler *event_handler); |
994 | int ib_unregister_event_handler(struct ib_event_handler *event_handler); | 1012 | int ib_unregister_event_handler(struct ib_event_handler *event_handler); |
995 | void ib_dispatch_event(struct ib_event *event); | 1013 | void ib_dispatch_event(struct ib_event *event); |