|
@@ -1276,20 +1276,36 @@ out:
|
|
|
}
|
|
|
EXPORT_SYMBOL(ib_resolve_eth_dmac);
|
|
|
|
|
|
-int ib_modify_qp(struct ib_qp *qp,
|
|
|
- struct ib_qp_attr *qp_attr,
|
|
|
- int qp_attr_mask)
|
|
|
+/**
|
|
|
+ * ib_modify_qp_with_udata - Modifies the attributes for the specified QP.
|
|
|
+ * @qp: The QP to modify.
|
|
|
+ * @attr: On input, specifies the QP attributes to modify. On output,
|
|
|
+ * the current values of selected QP attributes are returned.
|
|
|
+ * @attr_mask: A bit-mask used to specify which attributes of the QP
|
|
|
+ * are being modified.
|
|
|
+ * @udata: pointer to user's input output buffer information
|
|
|
+ * are being modified.
|
|
|
+ * It returns 0 on success and returns appropriate error code on error.
|
|
|
+ */
|
|
|
+int ib_modify_qp_with_udata(struct ib_qp *qp, struct ib_qp_attr *attr,
|
|
|
+ int attr_mask, struct ib_udata *udata)
|
|
|
{
|
|
|
+ int ret;
|
|
|
|
|
|
- if (qp_attr_mask & IB_QP_AV) {
|
|
|
- int ret;
|
|
|
-
|
|
|
- ret = ib_resolve_eth_dmac(qp->device, &qp_attr->ah_attr);
|
|
|
+ if (attr_mask & IB_QP_AV) {
|
|
|
+ ret = ib_resolve_eth_dmac(qp->device, &attr->ah_attr);
|
|
|
if (ret)
|
|
|
return ret;
|
|
|
}
|
|
|
+ return ib_security_modify_qp(qp, attr, attr_mask, udata);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(ib_modify_qp_with_udata);
|
|
|
|
|
|
- return ib_security_modify_qp(qp->real_qp, qp_attr, qp_attr_mask, NULL);
|
|
|
+int ib_modify_qp(struct ib_qp *qp,
|
|
|
+ struct ib_qp_attr *qp_attr,
|
|
|
+ int qp_attr_mask)
|
|
|
+{
|
|
|
+ return ib_modify_qp_with_udata(qp, qp_attr, qp_attr_mask, NULL);
|
|
|
}
|
|
|
EXPORT_SYMBOL(ib_modify_qp);
|
|
|
|