4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
23 * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
28 * This file contains *private* MAC API definitions. This header file
29 * should only be included by kernel components which are part of the
30 * GLDv3 stack (dld, dls, aggr, softmac).
33 #ifndef _SYS_MAC_CLIENT_PRIV_H
34 #define _SYS_MAC_CLIENT_PRIV_H
37 #include <sys/mac_flow.h>
46 #define MAC_PERIM_HELD(mph) mac_perim_held(mph)
48 #define MAC_PERIM_HELD(mph)
51 extern boolean_t
mac_rx_bypass_set(mac_client_handle_t
, mac_direct_rx_t
,
54 extern const mac_info_t
*mac_info(mac_handle_t
);
55 extern boolean_t
mac_info_get(const char *, mac_info_t
*);
56 extern int mac_promisc_set(mac_handle_t
, boolean_t
, mac_promisc_type_t
);
57 extern boolean_t
mac_promisc_get(mac_handle_t
, mac_promisc_type_t
);
59 extern int mac_start(mac_handle_t
);
60 extern void mac_stop(mac_handle_t
);
62 extern void mac_ioctl(mac_handle_t
, queue_t
*, mblk_t
*);
63 extern link_state_t
mac_link_get(mac_handle_t
);
64 extern void mac_resource_set(mac_client_handle_t
, mac_resource_add_t
, void *);
65 extern dev_info_t
*mac_devinfo_get(mac_handle_t
);
66 extern boolean_t
mac_capab_get(mac_handle_t
, mac_capab_t
, void *);
67 extern boolean_t
mac_sap_verify(mac_handle_t
, uint32_t, uint32_t *);
68 extern mblk_t
*mac_header(mac_handle_t
, const uint8_t *, uint32_t, mblk_t
*,
70 extern int mac_header_info(mac_handle_t
, mblk_t
*, mac_header_info_t
*);
71 extern mblk_t
*mac_header_cook(mac_handle_t
, mblk_t
*);
72 extern mblk_t
*mac_header_uncook(mac_handle_t
, mblk_t
*);
74 extern void mac_resource_set_common(mac_client_handle_t
,
75 mac_resource_add_t
, mac_resource_remove_t
, mac_resource_quiesce_t
,
76 mac_resource_restart_t
, mac_resource_bind_t
, void *);
78 extern void mac_perim_enter_by_mh(mac_handle_t
, mac_perim_handle_t
*);
79 extern int mac_perim_enter_by_macname(const char *, mac_perim_handle_t
*);
80 extern int mac_perim_enter_by_linkid(datalink_id_t
, mac_perim_handle_t
*);
81 extern void mac_perim_exit(mac_perim_handle_t
);
82 extern boolean_t
mac_perim_held(mac_handle_t
);
84 extern uint16_t mac_client_vid(mac_client_handle_t
);
85 extern int mac_vnic_unicast_set(mac_client_handle_t
, const uint8_t *);
87 extern void mac_client_poll_enable(mac_client_handle_t
);
88 extern void mac_client_poll_disable(mac_client_handle_t
);
90 extern int mac_resource_ctl_set(mac_client_handle_t
, mac_resource_props_t
*);
91 extern void mac_resource_ctl_get(mac_client_handle_t
, mac_resource_props_t
*);
94 * Flow-related APIs for MAC clients.
97 extern void mac_link_init_flows(mac_client_handle_t
);
98 extern void mac_link_release_flows(mac_client_handle_t
);
99 extern int mac_link_flow_add(datalink_id_t
, char *, flow_desc_t
*,
100 mac_resource_props_t
*);
101 extern int mac_link_flow_remove(char *);
102 extern int mac_link_flow_modify(char *, mac_resource_props_t
*);
103 extern boolean_t
mac_link_has_flows(mac_client_handle_t
);
106 char fi_flow_name
[MAXFLOWNAMELEN
];
107 datalink_id_t fi_link_id
;
108 flow_desc_t fi_flow_desc
;
109 mac_resource_props_t fi_resource_props
;
112 extern int mac_link_flow_walk(datalink_id_t
,
113 int (*)(mac_flowinfo_t
*, void *), void *);
114 extern int mac_link_flow_info(char *, mac_flowinfo_t
*);
116 extern void *mac_tx_hold(mac_client_handle_t
);
117 extern void mac_tx_rele(mac_client_handle_t
, void *);
118 extern void mac_rx_client_quiesce(mac_client_handle_t
);
119 extern void mac_rx_client_restart(mac_client_handle_t
);
120 extern void mac_srs_perm_quiesce(mac_client_handle_t
, boolean_t
);
121 extern int mac_hwrings_get(mac_client_handle_t
, mac_group_handle_t
*,
122 mac_ring_handle_t
*);
123 extern void mac_hwring_setup(mac_ring_handle_t
, mac_resource_handle_t
);
124 extern void mac_hwring_teardown(mac_ring_handle_t
);
125 extern int mac_hwring_disable_intr(mac_ring_handle_t
);
126 extern int mac_hwring_enable_intr(mac_ring_handle_t
);
127 extern int mac_hwring_start(mac_ring_handle_t
);
128 extern void mac_hwring_stop(mac_ring_handle_t
);
129 extern mblk_t
*mac_hwring_poll(mac_ring_handle_t
, int);
130 #define MAC_HWRING_POLL(ring, bytes) \
131 (((ring)->mr_info.mri_poll) \
132 ((ring)->mr_info.mri_driver, (bytes)))
134 extern int mac_hwgroup_addmac(mac_group_handle_t
, const uint8_t *);
135 extern int mac_hwgroup_remmac(mac_group_handle_t
, const uint8_t *);
137 extern void mac_set_upper_mac(mac_client_handle_t
, mac_handle_t
);
139 extern int mac_mark_exclusive(mac_handle_t
);
140 extern void mac_unmark_exclusive(mac_handle_t
);
142 extern int32_t mac_client_intr_cpu(mac_client_handle_t
);
143 extern void mac_client_set_intr_cpu(void *, mac_client_handle_t
, int32_t);
144 extern void *mac_get_devinfo(mac_handle_t
);
152 #endif /* _SYS_MAC_CLIENT_PRIV_H */