|
@@ -2725,19 +2725,17 @@ enum {
|
|
|
static int _mlx4_ib_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
|
|
static int _mlx4_ib_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
|
|
|
int attr_mask, struct ib_udata *udata)
|
|
int attr_mask, struct ib_udata *udata)
|
|
|
{
|
|
{
|
|
|
|
|
+ enum rdma_link_layer ll = IB_LINK_LAYER_UNSPECIFIED;
|
|
|
struct mlx4_ib_dev *dev = to_mdev(ibqp->device);
|
|
struct mlx4_ib_dev *dev = to_mdev(ibqp->device);
|
|
|
struct mlx4_ib_qp *qp = to_mqp(ibqp);
|
|
struct mlx4_ib_qp *qp = to_mqp(ibqp);
|
|
|
enum ib_qp_state cur_state, new_state;
|
|
enum ib_qp_state cur_state, new_state;
|
|
|
int err = -EINVAL;
|
|
int err = -EINVAL;
|
|
|
- int ll;
|
|
|
|
|
mutex_lock(&qp->mutex);
|
|
mutex_lock(&qp->mutex);
|
|
|
|
|
|
|
|
cur_state = attr_mask & IB_QP_CUR_STATE ? attr->cur_qp_state : qp->state;
|
|
cur_state = attr_mask & IB_QP_CUR_STATE ? attr->cur_qp_state : qp->state;
|
|
|
new_state = attr_mask & IB_QP_STATE ? attr->qp_state : cur_state;
|
|
new_state = attr_mask & IB_QP_STATE ? attr->qp_state : cur_state;
|
|
|
|
|
|
|
|
- if (cur_state == new_state && cur_state == IB_QPS_RESET) {
|
|
|
|
|
- ll = IB_LINK_LAYER_UNSPECIFIED;
|
|
|
|
|
- } else {
|
|
|
|
|
|
|
+ if (cur_state != new_state || cur_state != IB_QPS_RESET) {
|
|
|
int port = attr_mask & IB_QP_PORT ? attr->port_num : qp->port;
|
|
int port = attr_mask & IB_QP_PORT ? attr->port_num : qp->port;
|
|
|
ll = rdma_port_get_link_layer(&dev->ib_dev, port);
|
|
ll = rdma_port_get_link_layer(&dev->ib_dev, port);
|
|
|
}
|
|
}
|