• Home
  • Raw
  • Download

Lines Matching refs:qp

663 				       struct ocrdma_qp *qp)  in ocrdma_process_qpcat_error()  argument
668 if (qp == NULL) in ocrdma_process_qpcat_error()
670 ocrdma_qp_state_machine(qp, new_ib_qps, &old_ib_qps); in ocrdma_process_qpcat_error()
676 struct ocrdma_qp *qp = NULL; in ocrdma_dispatch_ibevent() local
687 qp = dev->qp_tbl[cqe->qpvalid_qpid & OCRDMA_AE_MCQE_QPID_MASK]; in ocrdma_dispatch_ibevent()
705 ib_evt.element.qp = &qp->ibqp; in ocrdma_dispatch_ibevent()
707 ocrdma_process_qpcat_error(dev, qp); in ocrdma_dispatch_ibevent()
710 ib_evt.element.qp = &qp->ibqp; in ocrdma_dispatch_ibevent()
714 ib_evt.element.qp = &qp->ibqp; in ocrdma_dispatch_ibevent()
718 ib_evt.element.qp = &qp->ibqp; in ocrdma_dispatch_ibevent()
728 ib_evt.element.srq = &qp->srq->ibsrq; in ocrdma_dispatch_ibevent()
734 ib_evt.element.srq = &qp->srq->ibsrq; in ocrdma_dispatch_ibevent()
740 ib_evt.element.qp = &qp->ibqp; in ocrdma_dispatch_ibevent()
753 if (qp->ibqp.event_handler) in ocrdma_dispatch_ibevent()
754 qp->ibqp.event_handler(&ib_evt, qp->ibqp.qp_context); in ocrdma_dispatch_ibevent()
759 if (qp->srq->ibsrq.event_handler) in ocrdma_dispatch_ibevent()
760 qp->srq->ibsrq.event_handler(&ib_evt, in ocrdma_dispatch_ibevent()
761 qp->srq->ibsrq. in ocrdma_dispatch_ibevent()
825 struct ocrdma_qp *qp; in ocrdma_qp_buddy_cq_handler() local
834 list_for_each_entry(qp, &cq->sq_head, sq_entry) { in ocrdma_qp_buddy_cq_handler()
835 if (qp->srq) in ocrdma_qp_buddy_cq_handler()
840 if (qp->sq_cq == qp->rq_cq) in ocrdma_qp_buddy_cq_handler()
845 if (qp->sq_cq == cq) in ocrdma_qp_buddy_cq_handler()
846 cq = qp->rq_cq; in ocrdma_qp_buddy_cq_handler()
848 cq = qp->sq_cq; in ocrdma_qp_buddy_cq_handler()
1652 bool ocrdma_is_qp_in_sq_flushlist(struct ocrdma_cq *cq, struct ocrdma_qp *qp) in ocrdma_is_qp_in_sq_flushlist() argument
1657 if (qp == tmp) { in ocrdma_is_qp_in_sq_flushlist()
1665 bool ocrdma_is_qp_in_rq_flushlist(struct ocrdma_cq *cq, struct ocrdma_qp *qp) in ocrdma_is_qp_in_rq_flushlist() argument
1670 if (qp == tmp) { in ocrdma_is_qp_in_rq_flushlist()
1678 void ocrdma_flush_qp(struct ocrdma_qp *qp) in ocrdma_flush_qp() argument
1683 spin_lock_irqsave(&qp->dev->flush_q_lock, flags); in ocrdma_flush_qp()
1684 found = ocrdma_is_qp_in_sq_flushlist(qp->sq_cq, qp); in ocrdma_flush_qp()
1686 list_add_tail(&qp->sq_entry, &qp->sq_cq->sq_head); in ocrdma_flush_qp()
1687 if (!qp->srq) { in ocrdma_flush_qp()
1688 found = ocrdma_is_qp_in_rq_flushlist(qp->rq_cq, qp); in ocrdma_flush_qp()
1690 list_add_tail(&qp->rq_entry, &qp->rq_cq->rq_head); in ocrdma_flush_qp()
1692 spin_unlock_irqrestore(&qp->dev->flush_q_lock, flags); in ocrdma_flush_qp()
1695 int ocrdma_qp_state_machine(struct ocrdma_qp *qp, enum ib_qp_state new_ib_state, in ocrdma_qp_state_machine() argument
1704 spin_lock_irqsave(&qp->q_lock, flags); in ocrdma_qp_state_machine()
1707 *old_ib_state = get_ibqp_state(qp->state); in ocrdma_qp_state_machine()
1708 if (new_state == qp->state) { in ocrdma_qp_state_machine()
1709 spin_unlock_irqrestore(&qp->q_lock, flags); in ocrdma_qp_state_machine()
1713 switch (qp->state) { in ocrdma_qp_state_machine()
1731 ocrdma_flush_qp(qp); in ocrdma_qp_state_machine()
1744 ocrdma_flush_qp(qp); in ocrdma_qp_state_machine()
1758 ocrdma_flush_qp(qp); in ocrdma_qp_state_machine()
1802 qp->state = new_state; in ocrdma_qp_state_machine()
1804 spin_unlock_irqrestore(&qp->q_lock, flags); in ocrdma_qp_state_machine()
1808 static u32 ocrdma_set_create_qp_mbx_access_flags(struct ocrdma_qp *qp) in ocrdma_set_create_qp_mbx_access_flags() argument
1811 if (qp->cap_flags & OCRDMA_QP_INB_RD) in ocrdma_set_create_qp_mbx_access_flags()
1813 if (qp->cap_flags & OCRDMA_QP_INB_WR) in ocrdma_set_create_qp_mbx_access_flags()
1815 if (qp->cap_flags & OCRDMA_QP_MW_BIND) in ocrdma_set_create_qp_mbx_access_flags()
1817 if (qp->cap_flags & OCRDMA_QP_LKEY0) in ocrdma_set_create_qp_mbx_access_flags()
1819 if (qp->cap_flags & OCRDMA_QP_FAST_REG) in ocrdma_set_create_qp_mbx_access_flags()
1826 struct ocrdma_qp *qp) in ocrdma_set_create_qp_sq_cmd() argument
1831 struct ocrdma_dev *dev = qp->dev; in ocrdma_set_create_qp_sq_cmd()
1848 qp->sq.max_cnt = max_wqe_allocated; in ocrdma_set_create_qp_sq_cmd()
1851 qp->sq.va = dma_alloc_coherent(&pdev->dev, len, &pa, GFP_KERNEL); in ocrdma_set_create_qp_sq_cmd()
1852 if (!qp->sq.va) in ocrdma_set_create_qp_sq_cmd()
1854 memset(qp->sq.va, 0, len); in ocrdma_set_create_qp_sq_cmd()
1855 qp->sq.len = len; in ocrdma_set_create_qp_sq_cmd()
1856 qp->sq.pa = pa; in ocrdma_set_create_qp_sq_cmd()
1857 qp->sq.entry_size = dev->attr.wqe_size; in ocrdma_set_create_qp_sq_cmd()
1871 cmd->max_wqe_rqe |= (ilog2(qp->sq.max_cnt) << in ocrdma_set_create_qp_sq_cmd()
1882 struct ocrdma_qp *qp) in ocrdma_set_create_qp_rq_cmd() argument
1887 struct ocrdma_dev *dev = qp->dev; in ocrdma_set_create_qp_rq_cmd()
1898 qp->rq.max_cnt = max_rqe_allocated; in ocrdma_set_create_qp_rq_cmd()
1901 qp->rq.va = dma_alloc_coherent(&pdev->dev, len, &pa, GFP_KERNEL); in ocrdma_set_create_qp_rq_cmd()
1902 if (!qp->rq.va) in ocrdma_set_create_qp_rq_cmd()
1904 memset(qp->rq.va, 0, len); in ocrdma_set_create_qp_rq_cmd()
1905 qp->rq.pa = pa; in ocrdma_set_create_qp_rq_cmd()
1906 qp->rq.len = len; in ocrdma_set_create_qp_rq_cmd()
1907 qp->rq.entry_size = dev->attr.rqe_size; in ocrdma_set_create_qp_rq_cmd()
1918 cmd->max_wqe_rqe |= (ilog2(qp->rq.max_cnt) << in ocrdma_set_create_qp_rq_cmd()
1929 struct ocrdma_qp *qp, in ocrdma_set_create_qp_dpp_cmd() argument
1933 qp->dpp_enabled = true; in ocrdma_set_create_qp_dpp_cmd()
1944 struct ocrdma_qp *qp) in ocrdma_set_create_qp_ird_cmd() argument
1946 struct ocrdma_dev *dev = qp->dev; in ocrdma_set_create_qp_ird_cmd()
1955 qp->ird_q_va = dma_alloc_coherent(&pdev->dev, ird_q_len, in ocrdma_set_create_qp_ird_cmd()
1957 if (!qp->ird_q_va) in ocrdma_set_create_qp_ird_cmd()
1959 memset(qp->ird_q_va, 0, ird_q_len); in ocrdma_set_create_qp_ird_cmd()
1966 struct ocrdma_qp *qp, in ocrdma_get_create_qp_rsp() argument
1971 qp->id = rsp->qp_id & OCRDMA_CREATE_QP_RSP_QP_ID_MASK; in ocrdma_get_create_qp_rsp()
1972 qp->rq.dbid = rsp->sq_rq_id & OCRDMA_CREATE_QP_RSP_RQ_ID_MASK; in ocrdma_get_create_qp_rsp()
1973 qp->sq.dbid = rsp->sq_rq_id >> OCRDMA_CREATE_QP_RSP_SQ_ID_SHIFT; in ocrdma_get_create_qp_rsp()
1974 qp->max_ird = rsp->max_ord_ird & OCRDMA_CREATE_QP_RSP_MAX_IRD_MASK; in ocrdma_get_create_qp_rsp()
1975 qp->max_ord = (rsp->max_ord_ird >> OCRDMA_CREATE_QP_RSP_MAX_ORD_SHIFT); in ocrdma_get_create_qp_rsp()
1976 qp->dpp_enabled = false; in ocrdma_get_create_qp_rsp()
1978 qp->dpp_enabled = true; in ocrdma_get_create_qp_rsp()
1991 qp->sq.max_cnt = max_wqe_allocated; in ocrdma_get_create_qp_rsp()
1992 qp->sq.max_wqe_idx = max_wqe_allocated - 1; in ocrdma_get_create_qp_rsp()
1995 qp->rq.max_cnt = max_rqe_allocated; in ocrdma_get_create_qp_rsp()
1996 qp->rq.max_wqe_idx = max_rqe_allocated - 1; in ocrdma_get_create_qp_rsp()
2000 int ocrdma_mbx_create_qp(struct ocrdma_qp *qp, struct ib_qp_init_attr *attrs, in ocrdma_mbx_create_qp() argument
2006 struct ocrdma_dev *dev = qp->dev; in ocrdma_mbx_create_qp()
2007 struct ocrdma_pd *pd = qp->pd; in ocrdma_mbx_create_qp()
2033 status = ocrdma_set_create_qp_sq_cmd(cmd, attrs, qp); in ocrdma_mbx_create_qp()
2041 qp->srq = srq; in ocrdma_mbx_create_qp()
2043 status = ocrdma_set_create_qp_rq_cmd(cmd, attrs, qp); in ocrdma_mbx_create_qp()
2048 status = ocrdma_set_create_qp_ird_cmd(cmd, qp); in ocrdma_mbx_create_qp()
2055 flags = ocrdma_set_create_qp_mbx_access_flags(qp); in ocrdma_mbx_create_qp()
2067 qp->sq_cq = cq; in ocrdma_mbx_create_qp()
2071 qp->rq_cq = cq; in ocrdma_mbx_create_qp()
2075 ocrdma_set_create_qp_dpp_cmd(cmd, pd, qp, enable_dpp_cq, in ocrdma_mbx_create_qp()
2082 ocrdma_get_create_qp_rsp(rsp, qp, attrs, dpp_offset, dpp_credit_lmt); in ocrdma_mbx_create_qp()
2083 qp->state = OCRDMA_QPS_RST; in ocrdma_mbx_create_qp()
2087 if (qp->rq.va) in ocrdma_mbx_create_qp()
2088 dma_free_coherent(&pdev->dev, qp->rq.len, qp->rq.va, qp->rq.pa); in ocrdma_mbx_create_qp()
2091 dma_free_coherent(&pdev->dev, qp->sq.len, qp->sq.va, qp->sq.pa); in ocrdma_mbx_create_qp()
2098 int ocrdma_mbx_query_qp(struct ocrdma_dev *dev, struct ocrdma_qp *qp, in ocrdma_mbx_query_qp() argument
2108 cmd->qp_id = qp->id; in ocrdma_mbx_query_qp()
2136 static void ocrdma_set_av_params(struct ocrdma_qp *qp, in ocrdma_set_av_params() argument
2155 ocrdma_query_gid(&qp->dev->ibdev, 1, in ocrdma_set_av_params()
2157 qp->sgid_idx = ah_attr->grh.sgid_index; in ocrdma_set_av_params()
2159 ocrdma_resolve_dgid(qp->dev, &ah_attr->grh.dgid, &mac_addr[0]); in ocrdma_set_av_params()
2174 static int ocrdma_set_qp_params(struct ocrdma_qp *qp, in ocrdma_set_qp_params() argument
2180 struct net_device *netdev = qp->dev->nic_info.netdev; in ocrdma_set_qp_params()
2189 qp->qkey = attrs->qkey; in ocrdma_set_qp_params()
2194 ocrdma_set_av_params(qp, cmd, attrs); in ocrdma_set_qp_params()
2195 else if (qp->qp_type == IB_QPT_GSI || qp->qp_type == IB_QPT_UD) { in ocrdma_set_qp_params()
2197 cmd->params.dmac_b0_to_b3 = qp->dev->nic_info.mac_addr[0] | in ocrdma_set_qp_params()
2198 (qp->dev->nic_info.mac_addr[1] << 8) | in ocrdma_set_qp_params()
2199 (qp->dev->nic_info.mac_addr[2] << 16) | in ocrdma_set_qp_params()
2200 (qp->dev->nic_info.mac_addr[3] << 24); in ocrdma_set_qp_params()
2201 cmd->params.vlan_dmac_b4_to_b5 = qp->dev->nic_info.mac_addr[4] | in ocrdma_set_qp_params()
2202 (qp->dev->nic_info.mac_addr[5] << 8); in ocrdma_set_qp_params()
2259 if (attrs->max_rd_atomic > qp->dev->attr.max_ord_per_qp) { in ocrdma_set_qp_params()
2263 qp->max_ord = attrs->max_rd_atomic; in ocrdma_set_qp_params()
2267 if (attrs->max_dest_rd_atomic > qp->dev->attr.max_ird_per_qp) { in ocrdma_set_qp_params()
2271 qp->max_ird = attrs->max_dest_rd_atomic; in ocrdma_set_qp_params()
2274 cmd->params.max_ord_ird = (qp->max_ord << in ocrdma_set_qp_params()
2276 (qp->max_ird & OCRDMA_QP_PARAMS_MAX_IRD_MASK); in ocrdma_set_qp_params()
2281 int ocrdma_mbx_modify_qp(struct ocrdma_dev *dev, struct ocrdma_qp *qp, in ocrdma_mbx_modify_qp() argument
2292 cmd->params.id = qp->id; in ocrdma_mbx_modify_qp()
2302 (qp->state << OCRDMA_QP_PARAMS_STATE_SHIFT) & in ocrdma_mbx_modify_qp()
2304 status = ocrdma_set_qp_params(qp, cmd, attrs, attr_mask, old_qps); in ocrdma_mbx_modify_qp()
2316 int ocrdma_mbx_destroy_qp(struct ocrdma_dev *dev, struct ocrdma_qp *qp) in ocrdma_mbx_destroy_qp() argument
2325 cmd->qp_id = qp->id; in ocrdma_mbx_destroy_qp()
2332 if (qp->sq.va) in ocrdma_mbx_destroy_qp()
2333 dma_free_coherent(&pdev->dev, qp->sq.len, qp->sq.va, qp->sq.pa); in ocrdma_mbx_destroy_qp()
2334 if (!qp->srq && qp->rq.va) in ocrdma_mbx_destroy_qp()
2335 dma_free_coherent(&pdev->dev, qp->rq.len, qp->rq.va, qp->rq.pa); in ocrdma_mbx_destroy_qp()
2336 if (qp->dpp_enabled) in ocrdma_mbx_destroy_qp()
2337 qp->pd->num_dpp_qp++; in ocrdma_mbx_destroy_qp()