diff options
Diffstat (limited to 'src/net')
| -rw-r--r-- | src/net/infiniband.c | 5 | ||||
| -rw-r--r-- | src/net/infiniband/ib_gma.c | 8 | ||||
| -rw-r--r-- | src/net/infiniband/ib_sma.c | 2 |
3 files changed, 10 insertions, 5 deletions
diff --git a/src/net/infiniband.c b/src/net/infiniband.c index f7f86cab3..42ffbcec5 100644 --- a/src/net/infiniband.c +++ b/src/net/infiniband.c @@ -143,6 +143,7 @@ void ib_poll_cq ( struct ib_device *ibdev, * Create queue pair * * @v ibdev Infiniband device + * @v type Queue pair type * @v num_send_wqes Number of send work queue entries * @v send_cq Send completion queue * @v num_recv_wqes Number of receive work queue entries @@ -151,6 +152,7 @@ void ib_poll_cq ( struct ib_device *ibdev, * @ret qp Queue pair */ struct ib_queue_pair * ib_create_qp ( struct ib_device *ibdev, + enum ib_queue_pair_type type, unsigned int num_send_wqes, struct ib_completion_queue *send_cq, unsigned int num_recv_wqes, @@ -171,6 +173,7 @@ struct ib_queue_pair * ib_create_qp ( struct ib_device *ibdev, goto err_alloc_qp; qp->ibdev = ibdev; list_add ( &qp->list, &ibdev->qps ); + qp->type = type; qp->qkey = qkey; qp->send.qp = qp; qp->send.is_send = 1; @@ -515,7 +518,7 @@ int ib_open ( struct ib_device *ibdev ) { } /* Create general management agent */ - if ( ( rc = ib_create_gma ( &ibdev->gma, ibdev, IB_QKEY_GMA ) ) != 0 ){ + if ( ( rc = ib_create_gma ( &ibdev->gma, ibdev, IB_QPT_GMA ) ) != 0 ) { DBGC ( ibdev, "IBDEV %p could not create GMA: %s\n", ibdev, strerror ( rc ) ); goto err_create_gma; diff --git a/src/net/infiniband/ib_gma.c b/src/net/infiniband/ib_gma.c index 649533ab1..1968bc275 100644 --- a/src/net/infiniband/ib_gma.c +++ b/src/net/infiniband/ib_gma.c @@ -343,11 +343,12 @@ int ib_gma_request ( struct ib_gma *gma, union ib_mad *mad, * * @v gma General management agent * @v ibdev Infiniband device - * @v qkey Queue key + * @v type Queue pair type * @ret rc Return status code */ int ib_create_gma ( struct ib_gma *gma, struct ib_device *ibdev, - unsigned long qkey ) { + enum ib_queue_pair_type type ) { + unsigned long qkey; int rc; /* Initialise fields */ @@ -366,7 +367,8 @@ int ib_create_gma ( struct ib_gma *gma, struct ib_device *ibdev, } /* Create queue pair */ - gma->qp = ib_create_qp ( ibdev, IB_GMA_NUM_SEND_WQES, gma->cq, + qkey = ( ( type == IB_QPT_SMA ) ? IB_QKEY_SMA : IB_QKEY_GMA ); + gma->qp = ib_create_qp ( ibdev, type, IB_GMA_NUM_SEND_WQES, gma->cq, IB_GMA_NUM_RECV_WQES, gma->cq, qkey ); if ( ! gma->qp ) { DBGC ( gma, "GMA %p could not allocate queue pair\n", gma ); diff --git a/src/net/infiniband/ib_sma.c b/src/net/infiniband/ib_sma.c index 9e99703f8..8fb332410 100644 --- a/src/net/infiniband/ib_sma.c +++ b/src/net/infiniband/ib_sma.c @@ -286,7 +286,7 @@ int ib_create_sma ( struct ib_sma *sma, struct ib_device *ibdev ) { int rc; /* Initialise GMA */ - if ( ( rc = ib_create_gma ( &sma->gma, ibdev, 0 ) ) != 0 ) { + if ( ( rc = ib_create_gma ( &sma->gma, ibdev, IB_QPT_SMA ) ) != 0 ) { DBGC ( sma, "SMA %p could not create GMA: %s\n", sma, strerror ( rc ) ); goto err_create_gma; |
