Print this page
11493 aggr needs support for multiple pseudo rx groups
Portions contributed by: Dan McDonald <danmcd@joyent.com>
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/uts/common/sys/mac_client_priv.h
+++ new/usr/src/uts/common/sys/mac_client_priv.h
1 1 /*
2 2 * CDDL HEADER START
3 3 *
4 4 * The contents of this file are subject to the terms of the
5 5 * Common Development and Distribution License (the "License").
6 6 * You may not use this file except in compliance with the License.
7 7 *
8 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 9 * or http://www.opensolaris.org/os/licensing.
10 10 * See the License for the specific language governing permissions
11 11 * and limitations under the License.
12 12 *
13 13 * When distributing Covered Code, include this CDDL HEADER in each
14 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 15 * If applicable, add the following below this CDDL HEADER, with the
16 16 * fields enclosed by brackets "[]" replaced with your own identifying
17 17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 18 *
19 19 * CDDL HEADER END
20 20 */
21 21
22 22 /*
23 23 * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
24 24 * Use is subject to license terms.
25 25 * Copyright 2018 Joyent, Inc.
26 26 */
27 27
28 28 /*
29 29 * This file contains *private* MAC API definitions. This header file
30 30 * should only be included by kernel components which are part of the
31 31 * GLDv3 stack (dld, dls, aggr, softmac).
32 32 */
33 33
34 34 #ifndef _SYS_MAC_CLIENT_PRIV_H
35 35 #define _SYS_MAC_CLIENT_PRIV_H
36 36
37 37 #include <sys/mac.h>
38 38 #include <sys/mac_flow.h>
39 39
40 40 #ifdef __cplusplus
41 41 extern "C" {
42 42 #endif
43 43
44 44 #ifdef _KERNEL
45 45
46 46 #ifdef DEBUG
47 47 #define MAC_PERIM_HELD(mph) mac_perim_held(mph)
48 48 #else
49 49 #define MAC_PERIM_HELD(mph)
50 50 #endif
51 51
52 52 extern boolean_t mac_rx_bypass_set(mac_client_handle_t, mac_direct_rx_t,
53 53 void *);
54 54 extern void mac_rx_bypass_enable(mac_client_handle_t);
55 55 extern void mac_rx_bypass_disable(mac_client_handle_t);
56 56
57 57 extern const mac_info_t *mac_info(mac_handle_t);
58 58 extern boolean_t mac_info_get(const char *, mac_info_t *);
59 59 extern boolean_t mac_promisc_get(mac_handle_t);
60 60
61 61 extern int mac_start(mac_handle_t);
62 62 extern void mac_stop(mac_handle_t);
63 63
64 64 extern void mac_ioctl(mac_handle_t, queue_t *, mblk_t *);
65 65 extern link_state_t mac_link_get(mac_handle_t);
66 66 extern void mac_resource_set(mac_client_handle_t, mac_resource_add_t, void *);
67 67 extern dev_info_t *mac_devinfo_get(mac_handle_t);
68 68 extern void *mac_driver(mac_handle_t);
69 69 extern boolean_t mac_capab_get(mac_handle_t, mac_capab_t, void *);
70 70 extern boolean_t mac_sap_verify(mac_handle_t, uint32_t, uint32_t *);
71 71 extern mblk_t *mac_header(mac_handle_t, const uint8_t *, uint32_t, mblk_t *,
72 72 size_t);
73 73 extern int mac_header_info(mac_handle_t, mblk_t *, mac_header_info_t *);
74 74 extern int mac_vlan_header_info(mac_handle_t, mblk_t *, mac_header_info_t *);
75 75 extern mblk_t *mac_header_cook(mac_handle_t, mblk_t *);
76 76 extern mblk_t *mac_header_uncook(mac_handle_t, mblk_t *);
77 77
78 78 extern void mac_resource_set_common(mac_client_handle_t,
79 79 mac_resource_add_t, mac_resource_remove_t, mac_resource_quiesce_t,
80 80 mac_resource_restart_t, mac_resource_bind_t, void *);
81 81
82 82 extern void mac_perim_enter_by_mh(mac_handle_t, mac_perim_handle_t *);
83 83 extern int mac_perim_enter_by_macname(const char *, mac_perim_handle_t *);
84 84 extern int mac_perim_enter_by_linkid(datalink_id_t, mac_perim_handle_t *);
85 85 extern void mac_perim_exit(mac_perim_handle_t);
86 86 extern boolean_t mac_perim_held(mac_handle_t);
87 87
88 88 extern uint16_t mac_client_vid(mac_client_handle_t);
89 89 extern int mac_vnic_unicast_set(mac_client_handle_t, const uint8_t *);
90 90 extern boolean_t mac_client_is_vlan_vnic(mac_client_handle_t);
91 91
92 92 extern void mac_client_poll_enable(mac_client_handle_t);
93 93 extern void mac_client_poll_disable(mac_client_handle_t);
94 94
95 95 /*
96 96 * Flow-related APIs for MAC clients.
97 97 */
98 98
99 99 extern void mac_link_init_flows(mac_client_handle_t);
100 100 extern void mac_link_release_flows(mac_client_handle_t);
101 101 extern int mac_link_flow_add(datalink_id_t, char *, flow_desc_t *,
102 102 mac_resource_props_t *);
103 103 extern int mac_link_flow_remove(char *);
104 104 extern int mac_link_flow_modify(char *, mac_resource_props_t *);
105 105 extern boolean_t mac_link_has_flows(mac_client_handle_t);
106 106
107 107 typedef struct {
108 108 char fi_flow_name[MAXFLOWNAMELEN];
109 109 datalink_id_t fi_link_id;
110 110 flow_desc_t fi_flow_desc;
111 111 mac_resource_props_t fi_resource_props;
112 112 } mac_flowinfo_t;
113 113
↓ open down ↓ |
113 lines elided |
↑ open up ↑ |
114 114 extern int mac_link_flow_walk(datalink_id_t,
115 115 int (*)(mac_flowinfo_t *, void *), void *);
116 116 extern int mac_link_flow_info(char *, mac_flowinfo_t *);
117 117
118 118 extern void mac_rx_client_quiesce(mac_client_handle_t);
119 119 extern void mac_rx_client_restart(mac_client_handle_t);
120 120 extern void mac_tx_client_quiesce(mac_client_handle_t);
121 121 extern void mac_tx_client_condemn(mac_client_handle_t);
122 122 extern void mac_tx_client_restart(mac_client_handle_t);
123 123 extern void mac_srs_perm_quiesce(mac_client_handle_t, boolean_t);
124 +extern uint_t mac_hwrings_idx_get(mac_handle_t, uint_t, mac_group_handle_t *,
125 + mac_ring_handle_t *, mac_ring_type_t);
124 126 extern int mac_hwrings_get(mac_client_handle_t, mac_group_handle_t *,
125 127 mac_ring_handle_t *, mac_ring_type_t);
126 128 extern uint_t mac_hwring_getinfo(mac_ring_handle_t);
129 +extern void mac_hwring_set_passthru(mac_ring_handle_t, mac_rx_t, void *,
130 + mac_resource_handle_t);
131 +extern void mac_hwring_clear_passthru(mac_ring_handle_t);
132 +extern void mac_client_set_flow_cb(mac_client_handle_t, mac_rx_t, void *);
133 +extern void mac_client_clear_flow_cb(mac_client_handle_t);
134 +
127 135 extern void mac_hwring_setup(mac_ring_handle_t, mac_resource_handle_t,
128 136 mac_ring_handle_t);
129 137 extern void mac_hwring_teardown(mac_ring_handle_t);
130 138 extern int mac_hwring_disable_intr(mac_ring_handle_t);
131 139 extern int mac_hwring_enable_intr(mac_ring_handle_t);
132 140 extern int mac_hwring_start(mac_ring_handle_t);
133 141 extern void mac_hwring_stop(mac_ring_handle_t);
142 +extern int mac_hwring_activate(mac_ring_handle_t);
143 +extern void mac_hwring_quiesce(mac_ring_handle_t);
134 144 extern mblk_t *mac_hwring_poll(mac_ring_handle_t, int);
135 145 extern mblk_t *mac_hwring_tx(mac_ring_handle_t, mblk_t *);
136 146 extern int mac_hwring_getstat(mac_ring_handle_t, uint_t, uint64_t *);
137 147 extern mblk_t *mac_hwring_send_priv(mac_client_handle_t,
138 148 mac_ring_handle_t, mblk_t *);
139 149 extern void mac_hwring_set_default(mac_handle_t, mac_ring_handle_t);
140 150
141 151 #define MAC_HWRING_POLL(ring, bytes) \
142 152 (((ring)->mr_info.mri_poll) \
143 153 ((ring)->mr_info.mri_driver, (bytes)))
144 154
145 155 extern int mac_hwgroup_addmac(mac_group_handle_t, const uint8_t *);
146 156 extern int mac_hwgroup_remmac(mac_group_handle_t, const uint8_t *);
147 157 extern int mac_hwgroup_addvlan(mac_group_handle_t, uint16_t);
148 158 extern int mac_hwgroup_remvlan(mac_group_handle_t, uint16_t);
149 159
150 160 extern boolean_t mac_has_hw_vlan(mac_handle_t);
151 161
162 +extern uint_t mac_get_num_rx_groups(mac_handle_t);
163 +extern int mac_set_promisc(mac_handle_t, boolean_t);
164 +
152 165 extern void mac_set_upper_mac(mac_client_handle_t, mac_handle_t,
153 166 mac_resource_props_t *);
154 167
155 168 extern int mac_mark_exclusive(mac_handle_t);
156 169 extern void mac_unmark_exclusive(mac_handle_t);
157 170
158 171 extern uint_t mac_hwgrp_num(mac_handle_t, int);
159 172 extern void mac_get_hwrxgrp_info(mac_handle_t, int, uint_t *, uint_t *,
160 173 uint_t *, uint_t *, uint_t *, char *);
161 174 extern void mac_get_hwtxgrp_info(mac_handle_t, int, uint_t *, uint_t *,
162 175 uint_t *, uint_t *, uint_t *, char *);
163 176
164 177 extern uint_t mac_txavail_get(mac_handle_t);
165 178 extern uint_t mac_rxavail_get(mac_handle_t);
166 179 extern uint_t mac_txrsvd_get(mac_handle_t);
167 180 extern uint_t mac_rxrsvd_get(mac_handle_t);
168 181 extern uint_t mac_rxhwlnksavail_get(mac_handle_t);
169 182 extern uint_t mac_rxhwlnksrsvd_get(mac_handle_t);
170 183 extern uint_t mac_txhwlnksavail_get(mac_handle_t);
171 184 extern uint_t mac_txhwlnksrsvd_get(mac_handle_t);
172 185
173 186 extern int32_t mac_client_intr_cpu(mac_client_handle_t);
174 187 extern void mac_client_set_intr_cpu(void *, mac_client_handle_t, int32_t);
175 188 extern void *mac_get_devinfo(mac_handle_t);
176 189
177 190 extern boolean_t mac_is_vnic(mac_handle_t);
178 191 extern uint32_t mac_no_notification(mac_handle_t);
179 192
180 193 extern int mac_set_prop(mac_handle_t, mac_prop_id_t, char *, void *, uint_t);
181 194 extern int mac_get_prop(mac_handle_t, mac_prop_id_t, char *, void *, uint_t);
182 195 extern int mac_prop_info(mac_handle_t, mac_prop_id_t, char *, void *,
183 196 uint_t, mac_propval_range_t *, uint_t *);
184 197 extern boolean_t mac_prop_check_size(mac_prop_id_t, uint_t, boolean_t);
185 198
186 199 extern uint64_t mac_pseudo_rx_ring_stat_get(mac_ring_handle_t, uint_t);
187 200 extern uint64_t mac_pseudo_tx_ring_stat_get(mac_ring_handle_t, uint_t);
188 201
189 202 #endif /* _KERNEL */
190 203
191 204 #ifdef __cplusplus
192 205 }
193 206 #endif
194 207
195 208 #endif /* _SYS_MAC_CLIENT_PRIV_H */
↓ open down ↓ |
34 lines elided |
↑ open up ↑ |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX