summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/sys/mac_impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/sys/mac_impl.h')
-rw-r--r--usr/src/uts/common/sys/mac_impl.h130
1 files changed, 130 insertions, 0 deletions
diff --git a/usr/src/uts/common/sys/mac_impl.h b/usr/src/uts/common/sys/mac_impl.h
new file mode 100644
index 0000000000..4c3aea7d43
--- /dev/null
+++ b/usr/src/uts/common/sys/mac_impl.h
@@ -0,0 +1,130 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (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
+ * or http://www.opensolaris.org/os/licensing.
+ * 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 2005 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef _SYS_MAC_IMPL_H
+#define _SYS_MAC_IMPL_H
+
+#pragma ident "%Z%%M% %I% %E% SMI"
+
+#include <sys/mac.h>
+#include <sys/ght.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct mac_multicst_addr_s mac_multicst_addr_t;
+
+struct mac_multicst_addr_s {
+ mac_multicst_addr_t *mma_nextp;
+ uint_t mma_ref;
+ uint8_t mma_addr[MAXADDRLEN];
+};
+
+typedef struct mac_notify_fn_s mac_notify_fn_t;
+
+struct mac_notify_fn_s {
+ mac_notify_fn_t *mnf_nextp;
+ mac_notify_t mnf_fn;
+ void *mnf_arg;
+};
+
+typedef struct mac_rx_fn_s mac_rx_fn_t;
+
+struct mac_rx_fn_s {
+ mac_rx_fn_t *mrf_nextp;
+ mac_rx_t mrf_fn;
+ void *mrf_arg;
+};
+
+typedef struct mac_txloop_fn_s mac_txloop_fn_t;
+
+struct mac_txloop_fn_s {
+ mac_txloop_fn_t *mtf_nextp;
+ mac_txloop_t mtf_fn;
+ void *mtf_arg;
+};
+
+typedef boolean_t (*mac_unicst_verify_t)(mac_impl_t *,
+ const uint8_t *);
+typedef boolean_t (*mac_multicst_verify_t)(mac_impl_t *,
+ const uint8_t *);
+
+struct mac_impl_s {
+ mac_t *mi_mp;
+ char mi_dev[MAXNAMELEN];
+ uint_t mi_port;
+ char mi_name[MAXNAMELEN];
+
+ ghte_t mi_hte;
+ uint32_t mi_ref;
+ boolean_t mi_destroying;
+
+ krwlock_t mi_state_lock;
+ uint_t mi_active;
+
+ krwlock_t mi_data_lock;
+ link_state_t mi_link;
+ uint_t mi_promisc;
+ uint_t mi_devpromisc;
+ uint8_t mi_addr[MAXADDRLEN];
+ mac_multicst_addr_t *mi_mmap;
+
+ uint_t mi_addr_length;
+
+ krwlock_t mi_notify_lock;
+ mac_notify_fn_t *mi_mnfp;
+
+ krwlock_t mi_rx_lock;
+ mac_rx_fn_t *mi_mrfp;
+
+ krwlock_t mi_txloop_lock;
+ mac_txloop_fn_t *mi_mtfp;
+
+ krwlock_t mi_resource_lock;
+ mac_resource_add_t mi_resource_add;
+ void *mi_resource_add_arg;
+
+ kstat_t *mi_ksp;
+
+ mac_unicst_verify_t mi_unicst_verify;
+ mac_multicst_verify_t mi_multicst_verify;
+
+ kmutex_t mi_activelink_lock;
+ boolean_t mi_activelink;
+};
+
+extern void mac_init(void);
+extern int mac_fini(void);
+
+extern void mac_stat_create(mac_impl_t *);
+extern void mac_stat_destroy(mac_impl_t *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_MAC_IMPL_H */