]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
RDMA/bnxt_re: Fix to export port num to ib_query_qp
authorHongguang Gao <hongguang.gao@broadcom.com>
Wed, 11 Dec 2024 08:39:30 +0000 (14:09 +0530)
committerLeon Romanovsky <leon@kernel.org>
Mon, 16 Dec 2024 13:33:31 +0000 (08:33 -0500)
Current driver implementation doesn't populate the port_num
field in query_qp. Adding the code to convert internal firmware
port id to ibv defined port number and export it.

Reviewed-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com>
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: Hongguang Gao <hongguang.gao@broadcom.com>
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
Link: https://patch.msgid.link/20241211083931.968831-5-kalesh-anakkur.purayil@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/bnxt_re/ib_verbs.c
drivers/infiniband/hw/bnxt_re/ib_verbs.h
drivers/infiniband/hw/bnxt_re/qplib_fp.c
drivers/infiniband/hw/bnxt_re/qplib_fp.h

index a609e1635a3d403e1335126f6a8d3d14a040c97c..bcb7cfc63d094d92508515ef563b68cd12a35a2b 100644 (file)
@@ -2325,6 +2325,7 @@ int bnxt_re_query_qp(struct ib_qp *ib_qp, struct ib_qp_attr *qp_attr,
        qp_attr->retry_cnt = qplib_qp->retry_cnt;
        qp_attr->rnr_retry = qplib_qp->rnr_retry;
        qp_attr->min_rnr_timer = qplib_qp->min_rnr_timer;
+       qp_attr->port_num = __to_ib_port_num(qplib_qp->port_id);
        qp_attr->rq_psn = qplib_qp->rq.psn;
        qp_attr->max_rd_atomic = qplib_qp->max_rd_atomic;
        qp_attr->sq_psn = qplib_qp->sq.psn;
index ac59f1d73b152b5210e353c9a1106d1108991ff9..fbb16a411d6a35850a7236ab3132f207a9e67246 100644 (file)
@@ -268,6 +268,10 @@ void bnxt_re_dealloc_ucontext(struct ib_ucontext *context);
 int bnxt_re_mmap(struct ib_ucontext *context, struct vm_area_struct *vma);
 void bnxt_re_mmap_free(struct rdma_user_mmap_entry *rdma_entry);
 
+static inline u32 __to_ib_port_num(u16 port_id)
+{
+       return (u32)port_id + 1;
+}
 
 unsigned long bnxt_re_lock_cqs(struct bnxt_re_qp *qp);
 void bnxt_re_unlock_cqs(struct bnxt_re_qp *qp, unsigned long flags);
index 5169804e6f12754519ac2d792dff04f5891b9d03..d8a2a929bbe325c526bf5896f96ac14dd88a0060 100644 (file)
@@ -1532,6 +1532,7 @@ int bnxt_qplib_query_qp(struct bnxt_qplib_res *res, struct bnxt_qplib_qp *qp)
        qp->dest_qpn = le32_to_cpu(sb->dest_qp_id);
        memcpy(qp->smac, sb->src_mac, 6);
        qp->vlan_id = le16_to_cpu(sb->vlan_pcp_vlan_dei_vlan_id);
+       qp->port_id = le16_to_cpu(sb->port_id);
 bail:
        dma_free_coherent(&rcfw->pdev->dev, sbuf.size,
                          sbuf.sb, sbuf.dma_addr);
index 19e279871f107d2870ba4151857d536aa388ac6b..0660101b5310eb8ea9b584b3488c70cefb7284e8 100644 (file)
@@ -298,6 +298,7 @@ struct bnxt_qplib_qp {
        u32                             dest_qpn;
        u8                              smac[6];
        u16                             vlan_id;
+       u16                             port_id;
        u8                              nw_type;
        struct bnxt_qplib_ah            ah;