vnet_mailbox.h revision 678453a8ed49104d8adad58f3ba591bdc39883e8
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/*
678453a8ed49104d8adad58f3ba591bdc39883e8speer * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Use is subject to license terms.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#ifndef _SYS_VNET_MAILBOX_H
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define _SYS_VNET_MAILBOX_H
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#pragma ident "%Z%%M% %I% %E% SMI"
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#ifdef __cplusplus
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppoextern "C" {
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#endif
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#include <sys/vio_mailbox.h>
678453a8ed49104d8adad58f3ba591bdc39883e8speer#include <sys/dds.h>
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#include <sys/ethernet.h>
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/*
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * VNET specific Control envelopes: 0x0100 - 0x01FF
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * type == VIO_TYPE_CTRL
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * subtype == VIO_SUBTYPE_{INFO|ACK|NACK}
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VNET_MCAST_INFO 0x0101
678453a8ed49104d8adad58f3ba591bdc39883e8speer#define VNET_DDS_INFO 0x0102
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/*
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Vnet/Vswitch device attributes information message.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * tag.msgtype == VIO_TYPE_CTRL
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * tag.submsgtype = VIO_SUBTYPE_{INFO|ACK|NACK}
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * tag.subtype_env == VIO_ATTR_INFO
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo */
17cadca83cc82e37ff517ea2783eb4bfcc07b950lm
17cadca83cc82e37ff517ea2783eb4bfcc07b950lm/* Value for 'addr_type' in vnet attribute message */
17cadca83cc82e37ff517ea2783eb4bfcc07b950lm#define ADDR_TYPE_MAC 0x1
17cadca83cc82e37ff517ea2783eb4bfcc07b950lm
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppotypedef struct vnet_attr_msg {
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo /* Common tag */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo vio_msg_tag_t tag;
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo /* attributes specific payload */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint8_t xfer_mode; /* data transfer mode */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint8_t addr_type; /* device address type */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint16_t ack_freq; /* ack after rcving # of pkts */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint32_t resv1; /* padding */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint64_t addr; /* device address */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint64_t mtu; /* maximum data xfer unit */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo /* padding to align things */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint64_t resv2[3];
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo} vnet_attr_msg_t;
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/*
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Vnet/Vswitch enable/disable multicast address msg
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * tag.msgtype == VIO_TYPE_CTRL
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * tag.subtype == VIO_SUBTYPE_{INFO|ACK|NACK}
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * tag.subtype_env == VNET_MCAST_INFO
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VNET_NUM_MCAST 7 /* max # of multicast addresses in the msg */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppotypedef struct vnet_mcast_msg {
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo /* Common tag */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo vio_msg_tag_t tag;
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo /* multicast address information */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint8_t set; /* add if set to 1, else remove */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint8_t count; /* number of addrs in the msg */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo struct ether_addr mca[VNET_NUM_MCAST]; /* mcast addrs */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint32_t resv1; /* padding */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo} vnet_mcast_msg_t;
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#ifdef __cplusplus
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo}
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#endif
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#endif /* _SYS_VNET_MAILBOX_H */