xref: /openbsd-src/sys/dev/usb/if_urndisreg.h (revision 7591b6e060dca587595c3c891d913c714a8ee740)
1*7591b6e0Smikeb /*	$OpenBSD: if_urndisreg.h,v 1.20 2016/09/16 11:13:37 mikeb Exp $ */
2f8bfa4e2Smk 
3f8bfa4e2Smk /*
418b419daSfabien  * Copyright (c) 2010 Jonathan Armani <armani@openbsd.org>
518b419daSfabien  * Copyright (c) 2010 Fabien Romano <fabien@openbsd.org>
6f8bfa4e2Smk  * Copyright (c) 2010 Michael Knudsen <mk@openbsd.org>
7f8bfa4e2Smk  * All rights reserved.
8f8bfa4e2Smk  *
9f8bfa4e2Smk  * Permission to use, copy, modify, and distribute this software for any
10f8bfa4e2Smk  * purpose with or without fee is hereby granted, provided that the above
11f8bfa4e2Smk  * copyright notice and this permission notice appear in all copies.
12f8bfa4e2Smk  *
13f8bfa4e2Smk  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
14f8bfa4e2Smk  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
15f8bfa4e2Smk  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
16f8bfa4e2Smk  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
17f8bfa4e2Smk  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
18f8bfa4e2Smk  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
19f8bfa4e2Smk  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20f8bfa4e2Smk  */
21f8bfa4e2Smk 
22f8bfa4e2Smk #define RNDIS_RX_LIST_CNT	1
23f8bfa4e2Smk #define RNDIS_TX_LIST_CNT	1
2460ea0ce4Sckuethe #define RNDIS_BUFSZ		1562
25f8bfa4e2Smk 
26f8bfa4e2Smk struct urndis_chain {
270497a875Smk 	struct urndis_softc	*sc_softc;
28ab0b1be7Smglocker 	struct usbd_xfer	*sc_xfer;
29f8bfa4e2Smk 	char			*sc_buf;
30f8bfa4e2Smk 	struct mbuf		*sc_mbuf;
31f8bfa4e2Smk 	int			 sc_idx;
32f8bfa4e2Smk };
33f8bfa4e2Smk 
34f8bfa4e2Smk struct urndis_cdata {
35f8bfa4e2Smk 	struct urndis_chain	sc_rx_chain[RNDIS_RX_LIST_CNT];
36f8bfa4e2Smk 	struct urndis_chain	sc_tx_chain[RNDIS_TX_LIST_CNT];
37f8bfa4e2Smk 	int			sc_tx_cnt;
38f8bfa4e2Smk };
39f8bfa4e2Smk 
40f8bfa4e2Smk #define GET_IFP(sc) (&(sc)->sc_arpcom.ac_if)
41f8bfa4e2Smk struct urndis_softc {
42f8bfa4e2Smk 	struct device			sc_dev;
43f8bfa4e2Smk 
44b896039bSmpi 	char				sc_attached;
45f8bfa4e2Smk 	struct arpcom			sc_arpcom;
46f8bfa4e2Smk 
47f8bfa4e2Smk 	/* RNDIS device info */
48f8bfa4e2Smk 	u_int32_t			sc_lim_pktsz;
49f8bfa4e2Smk 	u_int32_t			sc_filter;
50f8bfa4e2Smk 
51f8bfa4e2Smk 	/* USB goo */
52ab0b1be7Smglocker 	struct usbd_device		*sc_udev;
53f8bfa4e2Smk 	int				sc_ifaceno_ctl;
54ab0b1be7Smglocker 	struct usbd_interface		*sc_iface_data;
55f8bfa4e2Smk 
56a87747bfSmk 	struct timeval			sc_rx_notice;
57f8bfa4e2Smk 	int				sc_bulkin_no;
58ab0b1be7Smglocker 	struct usbd_pipe		*sc_bulkin_pipe;
59f8bfa4e2Smk 	int				sc_bulkout_no;
60ab0b1be7Smglocker 	struct usbd_pipe		*sc_bulkout_pipe;
61f8bfa4e2Smk 
62f8bfa4e2Smk 	struct urndis_cdata		sc_data;
63f8bfa4e2Smk };
64