Annotation of sys/dev/usb/if_rumvar.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: if_rumvar.h,v 1.8 2007/06/06 19:25:49 mk Exp $ */
2:
3: /*-
4: * Copyright (c) 2005, 2006 Damien Bergamini <damien.bergamini@free.fr>
5: * Copyright (c) 2006 Niall O'Higgins <niallo@openbsd.org>
6: *
7: * Permission to use, copy, modify, and distribute this software for any
8: * purpose with or without fee is hereby granted, provided that the above
9: * copyright notice and this permission notice appear in all copies.
10: *
11: * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12: * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13: * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14: * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15: * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16: * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17: * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18: */
19:
20: #define RUM_RX_LIST_COUNT 1
21: #define RUM_TX_LIST_COUNT 8
22:
23: struct rum_rx_radiotap_header {
24: struct ieee80211_radiotap_header wr_ihdr;
25: uint8_t wr_flags;
26: uint8_t wr_rate;
27: uint16_t wr_chan_freq;
28: uint16_t wr_chan_flags;
29: uint8_t wr_antenna;
30: uint8_t wr_antsignal;
31: } __packed;
32:
33: #define RT2573_RX_RADIOTAP_PRESENT \
34: ((1 << IEEE80211_RADIOTAP_FLAGS) | \
35: (1 << IEEE80211_RADIOTAP_RATE) | \
36: (1 << IEEE80211_RADIOTAP_CHANNEL) | \
37: (1 << IEEE80211_RADIOTAP_ANTENNA) | \
38: (1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL))
39:
40: struct rum_tx_radiotap_header {
41: struct ieee80211_radiotap_header wt_ihdr;
42: uint8_t wt_flags;
43: uint8_t wt_rate;
44: uint16_t wt_chan_freq;
45: uint16_t wt_chan_flags;
46: uint8_t wt_antenna;
47: } __packed;
48:
49: #define RT2573_TX_RADIOTAP_PRESENT \
50: ((1 << IEEE80211_RADIOTAP_FLAGS) | \
51: (1 << IEEE80211_RADIOTAP_RATE) | \
52: (1 << IEEE80211_RADIOTAP_CHANNEL) | \
53: (1 << IEEE80211_RADIOTAP_ANTENNA))
54:
55: struct rum_softc;
56:
57: struct rum_tx_data {
58: struct rum_softc *sc;
59: usbd_xfer_handle xfer;
60: uint8_t *buf;
61: struct ieee80211_node *ni;
62: };
63:
64: struct rum_rx_data {
65: struct rum_softc *sc;
66: usbd_xfer_handle xfer;
67: uint8_t *buf;
68: struct mbuf *m;
69: };
70:
71: struct rum_softc {
72: struct device sc_dev;
73: struct ieee80211com sc_ic;
74: int (*sc_newstate)(struct ieee80211com *,
75: enum ieee80211_state, int);
76:
77: usbd_device_handle sc_udev;
78: usbd_interface_handle sc_iface;
79:
80: struct ieee80211_channel *sc_curchan;
81:
82: int sc_rx_no;
83: int sc_tx_no;
84:
85: uint16_t macbbp_rev;
86: uint8_t rf_rev;
87: uint8_t rffreq;
88:
89: usbd_xfer_handle amrr_xfer;
90:
91: usbd_pipe_handle sc_rx_pipeh;
92: usbd_pipe_handle sc_tx_pipeh;
93:
94: enum ieee80211_state sc_state;
95: int sc_arg;
96: struct usb_task sc_task;
97:
98: struct ieee80211_amrr amrr;
99: struct ieee80211_amrr_node amn;
100:
101: struct rum_rx_data rx_data[RUM_RX_LIST_COUNT];
102: struct rum_tx_data tx_data[RUM_TX_LIST_COUNT];
103: int tx_queued;
104: int tx_cur;
105:
106: struct timeout scan_to;
107: struct timeout amrr_to;
108:
109: int sc_tx_timer;
110:
111: uint32_t sta[6];
112: uint32_t rf_regs[4];
113: uint8_t txpow[44];
114:
115: struct {
116: uint8_t val;
117: uint8_t reg;
118: } __packed bbp_prom[16];
119:
120: int hw_radio;
121: int rx_ant;
122: int tx_ant;
123: int nb_ant;
124: int ext_2ghz_lna;
125: int ext_5ghz_lna;
126: int rssi_2ghz_corr;
127: int rssi_5ghz_corr;
128: int sifs;
129: uint8_t bbp17;
130:
131: #if NBPFILTER > 0
132: caddr_t sc_drvbpf;
133:
134: union {
135: struct rum_rx_radiotap_header th;
136: uint8_t pad[64];
137: } sc_rxtapu;
138: #define sc_rxtap sc_rxtapu.th
139: int sc_rxtap_len;
140:
141: union {
142: struct rum_tx_radiotap_header th;
143: uint8_t pad[64];
144: } sc_txtapu;
145: #define sc_txtap sc_txtapu.th
146: int sc_txtap_len;
147: #endif
148: };
CVSweb