diff options
author | Michael Brown <mcb30@ipxe.org> | 2012-08-29 22:11:58 +0100 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2012-08-31 21:22:57 +0100 |
commit | f747fac3e1dad31378579326d8e9dce0df85c214 (patch) | |
tree | 68393b4686b7d28737b16b26c6f49c4d2db431d0 /src/drivers | |
parent | 96be171be572496f0ee4c1cfdc9c507b97caba00 (diff) | |
download | ipxe-f747fac3e1dad31378579326d8e9dce0df85c214.zip ipxe-f747fac3e1dad31378579326d8e9dce0df85c214.tar.gz ipxe-f747fac3e1dad31378579326d8e9dce0df85c214.tar.bz2 |
[infiniband] Allow queue pairs to have a custom allocator for receive iobufs
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers')
-rw-r--r-- | src/drivers/infiniband/hermon.c | 8 | ||||
-rw-r--r-- | src/drivers/net/ipoib.c | 11 |
2 files changed, 15 insertions, 4 deletions
diff --git a/src/drivers/infiniband/hermon.c b/src/drivers/infiniband/hermon.c index e7db035..ff95e95 100644 --- a/src/drivers/infiniband/hermon.c +++ b/src/drivers/infiniband/hermon.c @@ -3128,6 +3128,11 @@ static int hermon_eth_transmit ( struct net_device *netdev, return 0; } +/** Hermon Ethernet queue pair operations */ +static struct ib_queue_pair_operations hermon_eth_qp_op = { + .alloc_iob = alloc_iob, +}; + /** * Handle Hermon Ethernet device send completion * @@ -3225,7 +3230,8 @@ static int hermon_eth_open ( struct net_device *netdev ) { /* Allocate queue pair */ port->eth_qp = ib_create_qp ( ibdev, IB_QPT_ETH, HERMON_ETH_NUM_SEND_WQES, port->eth_cq, - HERMON_ETH_NUM_RECV_WQES, port->eth_cq ); + HERMON_ETH_NUM_RECV_WQES, port->eth_cq, + &hermon_eth_qp_op ); if ( ! port->eth_qp ) { DBGC ( hermon, "Hermon %p port %d could not create queue " "pair\n", hermon, ibdev->port ); diff --git a/src/drivers/net/ipoib.c b/src/drivers/net/ipoib.c index 44afa2b..8d4cc49 100644 --- a/src/drivers/net/ipoib.c +++ b/src/drivers/net/ipoib.c @@ -534,6 +534,11 @@ static struct ib_completion_queue_operations ipoib_cq_op = { .complete_recv = ipoib_complete_recv, }; +/** IPoIB queue pair operations */ +static struct ib_queue_pair_operations ipoib_qp_op = { + .alloc_iob = alloc_iob, +}; + /** * Poll IPoIB network device * @@ -667,9 +672,9 @@ static int ipoib_open ( struct net_device *netdev ) { } /* Allocate queue pair */ - ipoib->qp = ib_create_qp ( ibdev, IB_QPT_UD, - IPOIB_NUM_SEND_WQES, ipoib->cq, - IPOIB_NUM_RECV_WQES, ipoib->cq ); + ipoib->qp = ib_create_qp ( ibdev, IB_QPT_UD, IPOIB_NUM_SEND_WQES, + ipoib->cq, IPOIB_NUM_RECV_WQES, ipoib->cq, + &ipoib_qp_op ); if ( ! ipoib->qp ) { DBGC ( ipoib, "IPoIB %p could not allocate queue pair\n", ipoib ); |