1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/*
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * CDDL HEADER START
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * The contents of this file are subject to the terms of the
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Common Development and Distribution License (the "License").
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * You may not use this file except in compliance with the License.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * or http://www.opensolaris.org/os/licensing.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * See the License for the specific language governing permissions
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * and limitations under the License.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * When distributing Covered Code, include this CDDL HEADER in each
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * If applicable, add the following below this CDDL HEADER, with the
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * fields enclosed by brackets "[]" replaced with your own identifying
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * information: Portions Copyright [yyyy] [name of copyright owner]
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * CDDL HEADER END
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/*
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Use is subject to license terms.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#ifndef _VLDC_H
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define _VLDC_H
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#pragma ident "%Z%%M% %I% %E% SMI"
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#ifdef __cplusplus
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppoextern "C" {
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#endif
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#include <sys/types.h>
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#include <sys/ioctl.h>
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/* Channel IOCTL Commands */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VLDC_IOCTL_SHIFT 8
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VLDC_IOCTL ('1' << VLDC_IOCTL_SHIFT)
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VLDC_IOCTL_OPT_OP (VLDC_IOCTL | 0x1) /* ctrl op */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VLDC_IOCTL_READ_COOKIE (VLDC_IOCTL | 0x2) /* read cookie */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VLDC_IOCTL_WRITE_COOKIE (VLDC_IOCTL | 0x3) /* write cookie */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/* supported ctrl operations */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VLDC_OP_GET 0x1 /* get specified value */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VLDC_OP_SET 0x2 /* set specified value */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/* supported ctrl operation options */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VLDC_OPT_MTU_SZ 0x1 /* MTU */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VLDC_OPT_STATUS 0x2 /* port status */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VLDC_OPT_MODE 0x3 /* port channel mode */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/* values returned by VLDC_OPT_OP_STATUS */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VLDC_PORT_CLOSED 0x1 /* port is closed */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VLDC_PORT_OPEN 0x2 /* port is already open */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VLDC_PORT_READY 0x4 /* port is open and ready */
3af08d828975d7e2581b6829e0eecff14d87a483lm#define VLDC_PORT_RESET 0x8 /* port has been reset */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/*
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Values for VLDC_OPT_MODE are defined in ldc.h.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/*
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Structure that is used by vldc driver and all its clients to communicate
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * the type and nature of the option as well as for clients to get port
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * status.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppotypedef struct vldc_opt_op {
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo int32_t op_sel; /* operation selector(ex: GET) */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo int32_t opt_sel; /* option selector (ex: MTU) */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint32_t opt_val; /* option value to set or returned */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo} vldc_opt_op_t;
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/*
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Structure that is used by the LDom manager to download instruction
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * sequences and read/write new machine descriptions.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppotypedef struct vldc_data {
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint64_t src_addr; /* source address */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint64_t dst_addr; /* destination address */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint64_t length; /* size of transfer */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo} vldc_data_t;
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#ifdef __cplusplus
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo}
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#endif
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#endif /* _VLDC_H */