소스 검색

RDMA/qedr: notify user application if DPM is supported

Direct Packet Mode support may be disabled, e.g, due to limited
resources. Notifying the user application prevents wasting cycles
on attempting to send these kind of packets.

Signed-off-by: Ram Amrani <Ram.Amrani@cavium.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Amrani, Ram 8 년 전
부모
커밋
ad84dad216
4개의 변경된 파일5개의 추가작업 그리고 0개의 파일을 삭제
  1. 1 0
      drivers/infiniband/hw/qedr/main.c
  2. 2 0
      drivers/infiniband/hw/qedr/qedr.h
  3. 1 0
      drivers/infiniband/hw/qedr/verbs.c
  4. 1 0
      include/uapi/rdma/qedr-abi.h

+ 1 - 0
drivers/infiniband/hw/qedr/main.c

@@ -777,6 +777,7 @@ static struct qedr_dev *qedr_add(struct qed_dev *cdev, struct pci_dev *pdev,
 	if (rc)
 		goto init_err;
 
+	dev->user_dpm_enabled = dev_info.user_dpm_enabled;
 	dev->num_hwfns = dev_info.common.num_hwfns;
 	dev->rdma_ctx = dev->ops->rdma_get_rdma_ctx(cdev);
 

+ 2 - 0
drivers/infiniband/hw/qedr/qedr.h

@@ -162,6 +162,8 @@ struct qedr_dev {
 	struct qedr_qp		*gsi_qp;
 
 	unsigned long enet_state;
+
+	u8 user_dpm_enabled;
 };
 
 #define QEDR_MAX_SQ_PBL			(0x8000)

+ 1 - 0
drivers/infiniband/hw/qedr/verbs.c

@@ -376,6 +376,7 @@ struct ib_ucontext *qedr_alloc_ucontext(struct ib_device *ibdev,
 
 	memset(&uresp, 0, sizeof(uresp));
 
+	uresp.dpm_enabled = dev->user_dpm_enabled;
 	uresp.db_pa = ctx->dpi_phys_addr;
 	uresp.db_size = ctx->dpi_size;
 	uresp.max_send_wr = dev->attr.max_sqe;

+ 1 - 0
include/uapi/rdma/qedr-abi.h

@@ -49,6 +49,7 @@ struct qedr_alloc_ucontext_resp {
 	__u32 sges_per_recv_wr;
 	__u32 sges_per_srq_wr;
 	__u32 max_cqes;
+	__u8 dpm_enabled;
 };
 
 struct qedr_alloc_pd_ureq {