Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[infiniband] Allow completion queue operations to be optional
The send completion handler typically will just free the I/O buffer,
so allow this common case to be handled by the Infiniband core.
  • Loading branch information
Michael Brown committed Jul 17, 2009
1 parent 0582a84 commit 3f4972d
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 24 deletions.
14 changes: 12 additions & 2 deletions src/net/infiniband.c
Expand Up @@ -424,7 +424,12 @@ int ib_post_recv ( struct ib_device *ibdev, struct ib_queue_pair *qp,
*/
void ib_complete_send ( struct ib_device *ibdev, struct ib_queue_pair *qp,
struct io_buffer *iobuf, int rc ) {
qp->send.cq->op->complete_send ( ibdev, qp, iobuf, rc );

if ( qp->send.cq->op->complete_send ) {
qp->send.cq->op->complete_send ( ibdev, qp, iobuf, rc );
} else {
free_iob ( iobuf );
}
qp->send.fill--;
}

Expand All @@ -440,7 +445,12 @@ void ib_complete_send ( struct ib_device *ibdev, struct ib_queue_pair *qp,
void ib_complete_recv ( struct ib_device *ibdev, struct ib_queue_pair *qp,
struct ib_address_vector *av,
struct io_buffer *iobuf, int rc ) {
qp->recv.cq->op->complete_recv ( ibdev, qp, av, iobuf, rc );

if ( qp->recv.cq->op->complete_recv ) {
qp->recv.cq->op->complete_recv ( ibdev, qp, av, iobuf, rc );
} else {
free_iob ( iobuf );
}
qp->recv.fill--;
}

Expand Down
22 changes: 0 additions & 22 deletions src/net/infiniband/ib_gma.c
Expand Up @@ -207,30 +207,8 @@ static void ib_gma_complete_recv ( struct ib_device *ibdev,
free_iob ( iobuf );
}

/**
* Complete GMA send
*
*
* @v ibdev Infiniband device
* @v qp Queue pair
* @v iobuf I/O buffer
* @v rc Completion status code
*/
static void ib_gma_complete_send ( struct ib_device *ibdev __unused,
struct ib_queue_pair *qp,
struct io_buffer *iobuf, int rc ) {
struct ib_gma *gma = ib_qp_get_ownerdata ( qp );

if ( rc != 0 ) {
DBGC ( gma, "GMA %p send completion error: %s\n",
gma, strerror ( rc ) );
}
free_iob ( iobuf );
}

/** GMA completion operations */
static struct ib_completion_queue_operations ib_gma_completion_ops = {
.complete_send = ib_gma_complete_send,
.complete_recv = ib_gma_complete_recv,
};

Expand Down

0 comments on commit 3f4972d

Please sign in to comment.