1/*
2* This file is produced automatically.
3* Do not modify anything in here by hand.
4*
5* Created from source file
6*   sys/net/ifdi_if.m
7#
8# Copyright (c) 2014-2018, Matthew Macy (mmacy@mattmacy.io)
9# All rights reserved.
10#
11# Redistribution and use in source and binary forms, with or without
12# modification, are permitted provided that the following conditions are met:
13#
14#  1. Redistributions of source code must retain the above copyright notice,
15#     this list of conditions and the following disclaimer.
16#
17#  2. Neither the name of Matthew Macy nor the names of its
18#     contributors may be used to endorse or promote products derived from
19#     this software without specific prior written permission.
20#
21# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31# POSSIBILITY OF SUCH DAMAGE.
32*/
33
34#include <sys/param.h>
35#include <sys/queue.h>
36#include <sys/kernel.h>
37#include <sys/kobj.h>
38#include <sys/types.h>
39#include <sys/systm.h>
40#include <sys/socket.h>
41#include <machine/bus.h>
42#include <sys/bus.h>
43#include <net/ethernet.h>
44#include <net/if.h>
45#include <net/if_var.h>
46#include <net/if_media.h>
47#include <net/iflib.h>
48#include <net/if_dl.h>
49#include <net/if_types.h>
50#include <ifdi_if.h>
51
52
53
54	static void
55	null_void_op(if_ctx_t _ctx __unused)
56	{
57	}
58
59#ifndef __HAIKU__
60	static int
61	null_knlist_add(if_ctx_t _ctx __unused, struct knote *_kn)
62	{
63	    return (0);
64	}
65
66	static int
67	null_knote_event(if_ctx_t _ctx __unused, struct knote *_kn, int _hint)
68	{
69	    return (0);
70	}
71#endif
72
73	static void
74	null_timer_op(if_ctx_t _ctx __unused, uint16_t _qsidx __unused)
75	{
76	}
77
78	static int
79	null_int_op(if_ctx_t _ctx __unused)
80	{
81		return (0);
82	}
83
84	static int
85	null_int_int_op(if_ctx_t _ctx __unused, int arg0 __unused)
86	{
87		return (ENOTSUP);
88	}
89
90	static int
91	null_queue_intr_enable(if_ctx_t _ctx __unused, uint16_t _qid __unused)
92	{
93		return (ENOTSUP);
94	}
95
96	static void
97	null_led_func(if_ctx_t _ctx __unused, int _onoff __unused)
98	{
99	}
100
101	static void
102	null_vlan_register_op(if_ctx_t _ctx __unused, uint16_t vtag __unused)
103	{
104	}
105
106	static bool
107	null_needs_restart_op(if_ctx_t _ctx __unused, enum iflib_restart_event _event __unused)
108	{
109	}
110
111	static int
112	null_q_setup(if_ctx_t _ctx __unused, uint32_t _qid __unused)
113	{
114		return (0);
115	}
116
117	static int
118	null_i2c_req(if_ctx_t _sctx __unused, struct ifi2creq *_i2c __unused)
119	{
120		return (ENOTSUP);
121	}
122
123	static int
124	null_sysctl_int_delay(if_ctx_t _sctx __unused, if_int_delay_info_t _iidi __unused)
125	{
126		return (0);
127	}
128
129	static int
130	null_iov_init(if_ctx_t _ctx __unused, uint16_t num_vfs __unused, const nvlist_t *params __unused)
131	{
132		return (ENOTSUP);
133	}
134
135	static int
136	null_vf_add(if_ctx_t _ctx __unused, uint16_t num_vfs __unused, const nvlist_t *params __unused)
137	{
138		return (ENOTSUP);
139	}
140
141	static int
142	null_priv_ioctl(if_ctx_t _ctx __unused, u_long command, caddr_t *data __unused)
143	{
144		return (ENOTSUP);
145	}
146
147	static void
148	null_media_status(if_ctx_t ctx __unused, struct ifmediareq *ifmr)
149	{
150	    ifmr->ifm_status = IFM_AVALID | IFM_ACTIVE;
151	    ifmr->ifm_active = IFM_ETHER | IFM_FDX;
152	}
153
154	static int
155	null_cloneattach(if_ctx_t ctx __unused, struct if_clone *ifc __unused,
156			 const char *name __unused, caddr_t params __unused)
157	{
158	    return (0);
159	}
160
161	static void
162	null_rx_clset(if_ctx_t _ctx __unused, uint16_t _flid __unused,
163		      uint16_t _qid __unused, caddr_t *_sdcl __unused)
164	{
165	}
166	static void
167	null_object_info_get(if_ctx_t ctx __unused, void *data __unused, int size __unused)
168	{
169	}
170	static int
171	default_mac_set(if_ctx_t ctx, const uint8_t *mac)
172	{
173	    struct ifnet *ifp = iflib_get_ifp(ctx);
174	    struct sockaddr_dl *sdl;
175
176	    if (ifp && ifp->if_addr) {
177		sdl = (struct sockaddr_dl *)ifp->if_addr->ifa_addr;
178		MPASS(sdl->sdl_type == IFT_ETHER);
179		memcpy(LLADDR(sdl), mac, ETHER_ADDR_LEN);
180	    }
181	    return (0);
182	}
183
184#ifndef __HAIKU__
185struct kobjop_desc ifdi_knlist_add_desc = {
186	0, { NULL, ID_ifdi_knlist_add, (kobjop_t)null_knlist_add }
187};
188
189struct kobjop_desc ifdi_knote_event_desc = {
190	0, { NULL, ID_ifdi_knote_event, (kobjop_t)null_knote_event }
191};
192#endif
193
194struct kobjop_desc ifdi_object_info_get_desc = {
195	0, { NULL, ID_ifdi_object_info_get, (kobjop_t)null_object_info_get }
196};
197
198struct kobjop_desc ifdi_attach_pre_desc = {
199	0, { NULL, ID_ifdi_attach_pre, (kobjop_t)null_int_op }
200};
201
202struct kobjop_desc ifdi_attach_post_desc = {
203	0, { NULL, ID_ifdi_attach_post, (kobjop_t)null_int_op }
204};
205
206struct kobjop_desc ifdi_reinit_pre_desc = {
207	0, { NULL, ID_ifdi_reinit_pre, (kobjop_t)null_int_op }
208};
209
210struct kobjop_desc ifdi_reinit_post_desc = {
211	0, { NULL, ID_ifdi_reinit_post, (kobjop_t)null_int_op }
212};
213
214struct kobjop_desc ifdi_cloneattach_desc = {
215	0, { NULL, ID_ifdi_cloneattach, (kobjop_t)null_cloneattach }
216};
217
218struct kobjop_desc ifdi_detach_desc = {
219	0, { NULL, ID_ifdi_detach, (kobjop_t)kobj_error_method }
220};
221
222struct kobjop_desc ifdi_suspend_desc = {
223	0, { NULL, ID_ifdi_suspend, (kobjop_t)null_int_op }
224};
225
226struct kobjop_desc ifdi_shutdown_desc = {
227	0, { NULL, ID_ifdi_shutdown, (kobjop_t)null_int_op }
228};
229
230struct kobjop_desc ifdi_resume_desc = {
231	0, { NULL, ID_ifdi_resume, (kobjop_t)null_int_op }
232};
233
234struct kobjop_desc ifdi_tx_queues_alloc_desc = {
235	0, { NULL, ID_ifdi_tx_queues_alloc, (kobjop_t)kobj_error_method }
236};
237
238struct kobjop_desc ifdi_rx_queues_alloc_desc = {
239	0, { NULL, ID_ifdi_rx_queues_alloc, (kobjop_t)kobj_error_method }
240};
241
242struct kobjop_desc ifdi_queues_free_desc = {
243	0, { NULL, ID_ifdi_queues_free, (kobjop_t)null_void_op }
244};
245
246struct kobjop_desc ifdi_rx_clset_desc = {
247	0, { NULL, ID_ifdi_rx_clset, (kobjop_t)null_rx_clset }
248};
249
250struct kobjop_desc ifdi_init_desc = {
251	0, { NULL, ID_ifdi_init, (kobjop_t)kobj_error_method }
252};
253
254struct kobjop_desc ifdi_stop_desc = {
255	0, { NULL, ID_ifdi_stop, (kobjop_t)kobj_error_method }
256};
257
258struct kobjop_desc ifdi_msix_intr_assign_desc = {
259	0, { NULL, ID_ifdi_msix_intr_assign, (kobjop_t)null_int_int_op }
260};
261
262struct kobjop_desc ifdi_intr_enable_desc = {
263	0, { NULL, ID_ifdi_intr_enable, (kobjop_t)kobj_error_method }
264};
265
266struct kobjop_desc ifdi_intr_disable_desc = {
267	0, { NULL, ID_ifdi_intr_disable, (kobjop_t)kobj_error_method }
268};
269
270struct kobjop_desc ifdi_rx_queue_intr_enable_desc = {
271	0, { NULL, ID_ifdi_rx_queue_intr_enable, (kobjop_t)null_queue_intr_enable }
272};
273
274struct kobjop_desc ifdi_tx_queue_intr_enable_desc = {
275	0, { NULL, ID_ifdi_tx_queue_intr_enable, (kobjop_t)null_queue_intr_enable }
276};
277
278struct kobjop_desc ifdi_link_intr_enable_desc = {
279	0, { NULL, ID_ifdi_link_intr_enable, (kobjop_t)null_void_op }
280};
281
282struct kobjop_desc ifdi_multi_set_desc = {
283	0, { NULL, ID_ifdi_multi_set, (kobjop_t)kobj_error_method }
284};
285
286struct kobjop_desc ifdi_mtu_set_desc = {
287	0, { NULL, ID_ifdi_mtu_set, (kobjop_t)kobj_error_method }
288};
289
290struct kobjop_desc ifdi_mac_set_desc = {
291	0, { NULL, ID_ifdi_mac_set, (kobjop_t)default_mac_set }
292};
293
294struct kobjop_desc ifdi_media_set_desc = {
295	0, { NULL, ID_ifdi_media_set, (kobjop_t)null_void_op }
296};
297
298struct kobjop_desc ifdi_promisc_set_desc = {
299	0, { NULL, ID_ifdi_promisc_set, (kobjop_t)kobj_error_method }
300};
301
302struct kobjop_desc ifdi_crcstrip_set_desc = {
303	0, { NULL, ID_ifdi_crcstrip_set, (kobjop_t)kobj_error_method }
304};
305
306struct kobjop_desc ifdi_vflr_handle_desc = {
307	0, { NULL, ID_ifdi_vflr_handle, (kobjop_t)null_void_op }
308};
309
310struct kobjop_desc ifdi_iov_init_desc = {
311	0, { NULL, ID_ifdi_iov_init, (kobjop_t)null_iov_init }
312};
313
314struct kobjop_desc ifdi_iov_uninit_desc = {
315	0, { NULL, ID_ifdi_iov_uninit, (kobjop_t)null_void_op }
316};
317
318struct kobjop_desc ifdi_iov_vf_add_desc = {
319	0, { NULL, ID_ifdi_iov_vf_add, (kobjop_t)null_vf_add }
320};
321
322struct kobjop_desc ifdi_update_admin_status_desc = {
323	0, { NULL, ID_ifdi_update_admin_status, (kobjop_t)kobj_error_method }
324};
325
326struct kobjop_desc ifdi_media_status_desc = {
327	0, { NULL, ID_ifdi_media_status, (kobjop_t)null_media_status }
328};
329
330struct kobjop_desc ifdi_media_change_desc = {
331	0, { NULL, ID_ifdi_media_change, (kobjop_t)null_int_op }
332};
333
334struct kobjop_desc ifdi_get_counter_desc = {
335	0, { NULL, ID_ifdi_get_counter, (kobjop_t)kobj_error_method }
336};
337
338struct kobjop_desc ifdi_priv_ioctl_desc = {
339	0, { NULL, ID_ifdi_priv_ioctl, (kobjop_t)null_priv_ioctl }
340};
341
342struct kobjop_desc ifdi_i2c_req_desc = {
343	0, { NULL, ID_ifdi_i2c_req, (kobjop_t)null_i2c_req }
344};
345
346struct kobjop_desc ifdi_txq_setup_desc = {
347	0, { NULL, ID_ifdi_txq_setup, (kobjop_t)null_q_setup }
348};
349
350struct kobjop_desc ifdi_rxq_setup_desc = {
351	0, { NULL, ID_ifdi_rxq_setup, (kobjop_t)null_q_setup }
352};
353
354struct kobjop_desc ifdi_timer_desc = {
355	0, { NULL, ID_ifdi_timer, (kobjop_t)null_timer_op }
356};
357
358struct kobjop_desc ifdi_watchdog_reset_desc = {
359	0, { NULL, ID_ifdi_watchdog_reset, (kobjop_t)null_void_op }
360};
361
362struct kobjop_desc ifdi_watchdog_reset_queue_desc = {
363	0, { NULL, ID_ifdi_watchdog_reset_queue, (kobjop_t)null_timer_op }
364};
365
366struct kobjop_desc ifdi_led_func_desc = {
367	0, { NULL, ID_ifdi_led_func, (kobjop_t)null_led_func }
368};
369
370struct kobjop_desc ifdi_vlan_register_desc = {
371	0, { NULL, ID_ifdi_vlan_register, (kobjop_t)null_vlan_register_op }
372};
373
374struct kobjop_desc ifdi_vlan_unregister_desc = {
375	0, { NULL, ID_ifdi_vlan_unregister, (kobjop_t)null_vlan_register_op }
376};
377
378struct kobjop_desc ifdi_sysctl_int_delay_desc = {
379	0, { NULL, ID_ifdi_sysctl_int_delay, (kobjop_t)null_sysctl_int_delay }
380};
381
382struct kobjop_desc ifdi_debug_desc = {
383	0, { NULL, ID_ifdi_debug, (kobjop_t)null_void_op }
384};
385
386struct kobjop_desc ifdi_needs_restart_desc = {
387	0, { NULL, ID_ifdi_needs_restart, (kobjop_t)null_needs_restart_op }
388};
389