dld.h revision 9c1751294cd1ff9c27007f40ee6aacc943076cbf
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SYS_DLD_H
#define _SYS_DLD_H
#pragma ident "%Z%%M% %I% %E% SMI"
/*
* Data-Link Driver (public header).
*/
#ifdef __cplusplus
extern "C" {
#endif
/*
* Data-Link Driver Information (text emitted by modinfo(1m))
*/
#define DLD_INFO "Data-Link Driver v%I%"
#define DLD_MAX_PPA 999
/*
* Options: To enable an option set the property name to a non-zero value
*/
/*
* Prevent use of the IP fast-path (direct M_DATA transmit).
*/
#define DLD_PROP_NO_FASTPATH "no-fastpath"
/*
* Prevent advertising of the DL_CAPAB_POLL capability.
*/
#define DLD_PROP_NO_POLL "no-poll"
/*
* Prevent advertising of the DL_CAPAB_ZEROCOPY capability.
*/
#define DLD_PROP_NO_ZEROCOPY "no-zerocopy"
/*
* Prevent advertising of the DL_CAPAB_SOFTRING capability.
*/
#define DLD_PROP_NO_SOFTRING "no-softring"
/*
* The name of the driver.
*/
#define DLD_DRIVER_NAME "dld"
/*
* The name of the control minor node of dld.
*/
#define DLD_CONTROL_MINOR_NAME "ctl"
#define DLD_CONTROL_MINOR 0
/*
* IOCTL codes and data structures.
*/
typedef struct dld_ioc_attr {
char dia_dev[MAXNAMELEN];
typedef struct dld_ioc_vlan {
typedef struct dld_vlan_info {
typedef struct dld_hold_vlan {
/*
* Secure objects ioctls
*/
typedef enum {
#define DLD_SECOBJ_OPT_CREATE 0x00000001
#define DLD_SECOBJ_NAME_MAX 32
#define DLD_SECOBJ_VAL_MAX 256
typedef struct dld_secobj {
char so_name[DLD_SECOBJ_NAME_MAX];
} dld_secobj_t;
typedef struct dld_ioc_secobj_set {
typedef struct dld_ioc_secobj_get {
typedef struct dld_ioc_secobj_unset {
char su_name[DLD_SECOBJ_NAME_MAX];
/*
* DLDIOCHOLDVLAN/DLDIOCRELEVLAN are added to support a "hold/release"
* operation on a VLAN. A hold will cause a VLAN to be created or the
* reference count will be increased, release will do the reverse.
*/
#ifdef _KERNEL
void dld_init_ops(struct dev_ops *, const char *);
void dld_fini_ops(struct dev_ops *);
#endif
#ifdef __cplusplus
}
#endif
#endif /* _SYS_DLD_H */