1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * CDDL HEADER START
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * The contents of this file are subject to the terms of the
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * Common Development and Distribution License (the "License").
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * You may not use this file except in compliance with the License.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * See the License for the specific language governing permissions
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * and limitations under the License.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * When distributing Covered Code, include this CDDL HEADER in each
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * If applicable, add the following below this CDDL HEADER, with the
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * fields enclosed by brackets "[]" replaced with your own identifying
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * information: Portions Copyright [yyyy] [name of copyright owner]
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * CDDL HEADER END
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * Use is subject to license terms.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * Device Management Agent private prototypes and structures.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson#include <sys/ib/ibtl/ibvti.h> /* IB verrbs interfaces */
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson#include <sys/ib/mgt/ib_dm_attr.h> /* IB DM defines/structures */
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson#include <sys/ib/mgt/ib_mad.h> /* IB MAD defines/structures */
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * Implementation of handle returned to consumer.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * Each I/O Controller slot for the I/O Unit.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * Just to map handle back to slot number and hca
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * Profile provided by the I/O Controller, must be stored
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * in network order. Note that the profile indicates the
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * number of service entries pointed to by ii_srvcs.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * The ibdma_hca_t structure is only used internally by the
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * IB DM Agent. It is created when the associated HCA is
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * opened as part of initialization or as a result of a
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * notification via IBTF. It is destroyed when the HCA
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * is closed as part of fini processing or as a result of
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * a notification via IBTF. The structure is not directly
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * accessed by IBMF call-backs or the consumer API.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * Consumer handles associated with I/O Controllers
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * that have registered with this I/O Unit.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * The I/O Unit that is presented to the IB Fabric.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * It is stored in network order.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * The IBDMA module state information created and initialized
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * at _init() and freed at _fini().
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * The HCA list lock is used protect the HCA list and
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * is held during consumer routines (in place of a
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * reference count) to ensure the HCA exists for the
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * duration of it's use in the routine.
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson * Client API internal helpers
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleesonibdma_set_ioc_state(ibdma_hca_t *hca, int slot, ibdma_ioc_state_t state);
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleesonstatic ibdma_ioc_state_t ibdma_get_ioc_state(ibdma_hca_t *hca, int slot);
1bdd6c0e3710e91cb1f31aa78de33cb638494480Sue Gleeson#endif /* _IBDMA_IMPL_H */