Loading drivers/infiniband/core/uverbs_cmd.c +7 −4 Original line number Diff line number Diff line Loading @@ -1550,6 +1550,7 @@ static int create_qp(struct ib_uverbs_file *file, qp->qp_type = attr.qp_type; atomic_set(&qp->usecnt, 0); atomic_inc(&pd->usecnt); qp->port = 0; if (attr.send_cq) atomic_inc(&attr.send_cq->usecnt); if (attr.recv_cq) Loading Loading @@ -1991,6 +1992,7 @@ static int modify_qp(struct ib_uverbs_file *file, attr->alt_timeout = cmd->base.alt_timeout; attr->rate_limit = cmd->rate_limit; if (cmd->base.attr_mask & IB_QP_AV) attr->ah_attr.type = rdma_ah_find_type(qp->device, cmd->base.dest.port_num); if (cmd->base.dest.is_global) { Loading @@ -2011,8 +2013,9 @@ static int modify_qp(struct ib_uverbs_file *file, cmd->base.dest.port_num); rdma_ah_set_make_grd(&attr->ah_attr, false); attr->alt_ah_attr.type = rdma_ah_find_type(qp->device, cmd->base.dest.port_num); if (cmd->base.attr_mask & IB_QP_ALT_PATH) attr->alt_ah_attr.type = rdma_ah_find_type(qp->device, cmd->base.dest.port_num); if (cmd->base.alt_dest.is_global) { rdma_ah_set_grh(&attr->alt_ah_attr, NULL, cmd->base.alt_dest.flow_label, Loading drivers/infiniband/core/verbs.c +6 −1 Original line number Diff line number Diff line Loading @@ -838,6 +838,7 @@ struct ib_qp *ib_create_qp(struct ib_pd *pd, spin_lock_init(&qp->mr_lock); INIT_LIST_HEAD(&qp->rdma_mrs); INIT_LIST_HEAD(&qp->sig_mrs); qp->port = 0; if (qp_init_attr->qp_type == IB_QPT_XRC_TGT) return ib_create_xrc_qp(qp, qp_init_attr); Loading Loading @@ -1309,7 +1310,11 @@ int ib_modify_qp_with_udata(struct ib_qp *qp, struct ib_qp_attr *attr, if (ret) return ret; } return ib_security_modify_qp(qp, attr, attr_mask, udata); ret = ib_security_modify_qp(qp, attr, attr_mask, udata); if (!ret && (attr_mask & IB_QP_PORT)) qp->port = attr->port_num; return ret; } EXPORT_SYMBOL(ib_modify_qp_with_udata); Loading drivers/infiniband/hw/mlx5/main.c +6 −0 Original line number Diff line number Diff line Loading @@ -1122,6 +1122,12 @@ static int mlx5_ib_modify_port(struct ib_device *ibdev, u8 port, int mask, bool is_ib = (mlx5_ib_port_link_layer(ibdev, port) == IB_LINK_LAYER_INFINIBAND); /* CM layer calls ib_modify_port() regardless of the link layer. For * Ethernet ports, qkey violation and Port capabilities are meaningless. */ if (!is_ib) return 0; if (MLX5_CAP_GEN(dev->mdev, ib_virt) && is_ib) { change_mask = props->clr_port_cap_mask | props->set_port_cap_mask; value = ~props->clr_port_cap_mask | props->set_port_cap_mask; Loading drivers/infiniband/hw/mlx5/qp.c +1 −0 Original line number Diff line number Diff line Loading @@ -1253,6 +1253,7 @@ static int create_raw_packet_qp(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp, goto err_destroy_tis; sq->base.container_mibqp = qp; sq->base.mqp.event = mlx5_ib_qp_event; } if (qp->rq.wqe_cnt) { Loading include/rdma/ib_verbs.h +1 −0 Original line number Diff line number Diff line Loading @@ -1696,6 +1696,7 @@ struct ib_qp { enum ib_qp_type qp_type; struct ib_rwq_ind_table *rwq_ind_tbl; struct ib_qp_security *qp_sec; u8 port; }; struct ib_mr { Loading Loading
drivers/infiniband/core/uverbs_cmd.c +7 −4 Original line number Diff line number Diff line Loading @@ -1550,6 +1550,7 @@ static int create_qp(struct ib_uverbs_file *file, qp->qp_type = attr.qp_type; atomic_set(&qp->usecnt, 0); atomic_inc(&pd->usecnt); qp->port = 0; if (attr.send_cq) atomic_inc(&attr.send_cq->usecnt); if (attr.recv_cq) Loading Loading @@ -1991,6 +1992,7 @@ static int modify_qp(struct ib_uverbs_file *file, attr->alt_timeout = cmd->base.alt_timeout; attr->rate_limit = cmd->rate_limit; if (cmd->base.attr_mask & IB_QP_AV) attr->ah_attr.type = rdma_ah_find_type(qp->device, cmd->base.dest.port_num); if (cmd->base.dest.is_global) { Loading @@ -2011,8 +2013,9 @@ static int modify_qp(struct ib_uverbs_file *file, cmd->base.dest.port_num); rdma_ah_set_make_grd(&attr->ah_attr, false); attr->alt_ah_attr.type = rdma_ah_find_type(qp->device, cmd->base.dest.port_num); if (cmd->base.attr_mask & IB_QP_ALT_PATH) attr->alt_ah_attr.type = rdma_ah_find_type(qp->device, cmd->base.dest.port_num); if (cmd->base.alt_dest.is_global) { rdma_ah_set_grh(&attr->alt_ah_attr, NULL, cmd->base.alt_dest.flow_label, Loading
drivers/infiniband/core/verbs.c +6 −1 Original line number Diff line number Diff line Loading @@ -838,6 +838,7 @@ struct ib_qp *ib_create_qp(struct ib_pd *pd, spin_lock_init(&qp->mr_lock); INIT_LIST_HEAD(&qp->rdma_mrs); INIT_LIST_HEAD(&qp->sig_mrs); qp->port = 0; if (qp_init_attr->qp_type == IB_QPT_XRC_TGT) return ib_create_xrc_qp(qp, qp_init_attr); Loading Loading @@ -1309,7 +1310,11 @@ int ib_modify_qp_with_udata(struct ib_qp *qp, struct ib_qp_attr *attr, if (ret) return ret; } return ib_security_modify_qp(qp, attr, attr_mask, udata); ret = ib_security_modify_qp(qp, attr, attr_mask, udata); if (!ret && (attr_mask & IB_QP_PORT)) qp->port = attr->port_num; return ret; } EXPORT_SYMBOL(ib_modify_qp_with_udata); Loading
drivers/infiniband/hw/mlx5/main.c +6 −0 Original line number Diff line number Diff line Loading @@ -1122,6 +1122,12 @@ static int mlx5_ib_modify_port(struct ib_device *ibdev, u8 port, int mask, bool is_ib = (mlx5_ib_port_link_layer(ibdev, port) == IB_LINK_LAYER_INFINIBAND); /* CM layer calls ib_modify_port() regardless of the link layer. For * Ethernet ports, qkey violation and Port capabilities are meaningless. */ if (!is_ib) return 0; if (MLX5_CAP_GEN(dev->mdev, ib_virt) && is_ib) { change_mask = props->clr_port_cap_mask | props->set_port_cap_mask; value = ~props->clr_port_cap_mask | props->set_port_cap_mask; Loading
drivers/infiniband/hw/mlx5/qp.c +1 −0 Original line number Diff line number Diff line Loading @@ -1253,6 +1253,7 @@ static int create_raw_packet_qp(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp, goto err_destroy_tis; sq->base.container_mibqp = qp; sq->base.mqp.event = mlx5_ib_qp_event; } if (qp->rq.wqe_cnt) { Loading
include/rdma/ib_verbs.h +1 −0 Original line number Diff line number Diff line Loading @@ -1696,6 +1696,7 @@ struct ib_qp { enum ib_qp_type qp_type; struct ib_rwq_ind_table *rwq_ind_tbl; struct ib_qp_security *qp_sec; u8 port; }; struct ib_mr { Loading