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>
This commit is contained in:
@@ -990,6 +990,24 @@ static inline int ib_copy_to_udata(struct ib_udata *udata, void *src, size_t len
|
||||
return copy_to_user(udata->outbuf, src, len) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* ib_modify_qp_is_ok - Check that the supplied attribute mask
|
||||
* contains all required attributes and no attributes not allowed for
|
||||
* the given QP state transition.
|
||||
* @cur_state: Current QP state
|
||||
* @next_state: Next QP state
|
||||
* @type: QP type
|
||||
* @mask: Mask of supplied QP attributes
|
||||
*
|
||||
* This function is a helper function that a low-level driver's
|
||||
* modify_qp method can use to validate the consumer's input. It
|
||||
* checks that cur_state and next_state are valid QP states, that a
|
||||
* transition from cur_state to next_state is allowed by the IB spec,
|
||||
* and that the attribute mask supplied is allowed for the transition.
|
||||
*/
|
||||
int ib_modify_qp_is_ok(enum ib_qp_state cur_state, enum ib_qp_state next_state,
|
||||
enum ib_qp_type type, enum ib_qp_attr_mask mask);
|
||||
|
||||
int ib_register_event_handler (struct ib_event_handler *event_handler);
|
||||
int ib_unregister_event_handler(struct ib_event_handler *event_handler);
|
||||
void ib_dispatch_event(struct ib_event *event);
|
||||
|
Reference in New Issue
Block a user