mirror of
https://github.com/ipxe/ipxe
synced 2025-12-19 19:49:45 +03:00
[ipoib] Remove the queue set abstraction
Now that IPoIB has to deal with only one set of queues, the queue set abstraction becomes merely an inconvenient wrapper.
This commit is contained in:
@@ -1,97 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2009 Michael Brown <mbrown@fensystems.co.uk>.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
FILE_LICENCE ( GPL2_OR_LATER );
|
||||
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <gpxe/iobuf.h>
|
||||
#include <gpxe/infiniband.h>
|
||||
#include <gpxe/ib_qset.h>
|
||||
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* Infiniband queue sets
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Create queue set
|
||||
*
|
||||
* @v ibdev Infiniband device
|
||||
* @v qset Queue set
|
||||
* @v num_cqes Number of completion queue entries
|
||||
* @v cq_op Completion queue operations
|
||||
* @v num_send_wqes Number of send work queue entries
|
||||
* @v num_recv_wqes Number of receive work queue entries
|
||||
* @v qkey Queue key
|
||||
* @ret rc Return status code
|
||||
*/
|
||||
int ib_create_qset ( struct ib_device *ibdev, struct ib_queue_set *qset,
|
||||
unsigned int num_cqes,
|
||||
struct ib_completion_queue_operations *cq_op,
|
||||
unsigned int num_send_wqes, unsigned int num_recv_wqes,
|
||||
unsigned long qkey ) {
|
||||
int rc;
|
||||
|
||||
/* Sanity check */
|
||||
assert ( qset->cq == NULL );
|
||||
assert ( qset->qp == NULL );
|
||||
|
||||
/* Allocate completion queue */
|
||||
qset->cq = ib_create_cq ( ibdev, num_cqes, cq_op );
|
||||
if ( ! qset->cq ) {
|
||||
DBGC ( ibdev, "IBDEV %p could not allocate completion queue\n",
|
||||
ibdev );
|
||||
rc = -ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
|
||||
/* Allocate queue pair */
|
||||
qset->qp = ib_create_qp ( ibdev, num_send_wqes, qset->cq,
|
||||
num_recv_wqes, qset->cq, qkey );
|
||||
if ( ! qset->qp ) {
|
||||
DBGC ( ibdev, "IBDEV %p could not allocate queue pair\n",
|
||||
ibdev );
|
||||
rc = -ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err:
|
||||
ib_destroy_qset ( ibdev, qset );
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Destroy queue set
|
||||
*
|
||||
* @v ibdev Infiniband device
|
||||
* @v qset Queue set
|
||||
*/
|
||||
void ib_destroy_qset ( struct ib_device *ibdev,
|
||||
struct ib_queue_set *qset ) {
|
||||
|
||||
if ( qset->qp )
|
||||
ib_destroy_qp ( ibdev, qset->qp );
|
||||
if ( qset->cq )
|
||||
ib_destroy_cq ( ibdev, qset->cq );
|
||||
memset ( qset, 0, sizeof ( *qset ) );
|
||||
}
|
||||
Reference in New Issue
Block a user