Annotation of sys/dev/ic/rt2661var.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: rt2661var.h,v 1.9 2006/10/22 12:14:44 damien Exp $ */
2:
3: /*-
4: * Copyright (c) 2006
5: * Damien Bergamini <damien.bergamini@free.fr>
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: struct rt2661_rx_radiotap_header {
21: struct ieee80211_radiotap_header wr_ihdr;
22: uint64_t wr_tsf;
23: uint8_t wr_flags;
24: uint8_t wr_rate;
25: uint16_t wr_chan_freq;
26: uint16_t wr_chan_flags;
27: uint8_t wr_antsignal;
28: } __packed;
29:
30: #define RT2661_RX_RADIOTAP_PRESENT \
31: ((1 << IEEE80211_RADIOTAP_TSFT) | \
32: (1 << IEEE80211_RADIOTAP_FLAGS) | \
33: (1 << IEEE80211_RADIOTAP_RATE) | \
34: (1 << IEEE80211_RADIOTAP_CHANNEL) | \
35: (1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL))
36:
37: struct rt2661_tx_radiotap_header {
38: struct ieee80211_radiotap_header wt_ihdr;
39: uint8_t wt_flags;
40: uint8_t wt_rate;
41: uint16_t wt_chan_freq;
42: uint16_t wt_chan_flags;
43: } __packed;
44:
45: #define RT2661_TX_RADIOTAP_PRESENT \
46: ((1 << IEEE80211_RADIOTAP_FLAGS) | \
47: (1 << IEEE80211_RADIOTAP_RATE) | \
48: (1 << IEEE80211_RADIOTAP_CHANNEL))
49:
50: struct rt2661_tx_data {
51: bus_dmamap_t map;
52: struct mbuf *m;
53: struct ieee80211_node *ni;
54: };
55:
56: struct rt2661_tx_ring {
57: bus_dmamap_t map;
58: bus_dma_segment_t seg;
59: bus_addr_t physaddr;
60: struct rt2661_tx_desc *desc;
61: struct rt2661_tx_data *data;
62: int count;
63: int queued;
64: int cur;
65: int next;
66: int stat;
67: };
68:
69: struct rt2661_rx_data {
70: bus_dmamap_t map;
71: struct mbuf *m;
72: };
73:
74: struct rt2661_rx_ring {
75: bus_dmamap_t map;
76: bus_dma_segment_t seg;
77: bus_addr_t physaddr;
78: struct rt2661_rx_desc *desc;
79: struct rt2661_rx_data *data;
80: int count;
81: int cur;
82: int next;
83: };
84:
85: struct rt2661_node {
86: struct ieee80211_node ni;
87: struct ieee80211_amrr_node amn;
88: };
89:
90: struct rt2661_softc {
91: struct device sc_dev;
92:
93: struct ieee80211com sc_ic;
94: int (*sc_newstate)(struct ieee80211com *,
95: enum ieee80211_state, int);
96: struct ieee80211_amrr amrr;
97:
98: int (*sc_enable)(struct rt2661_softc *);
99: void (*sc_disable)(struct rt2661_softc *);
100: void (*sc_power)(struct rt2661_softc *, int);
101:
102: bus_dma_tag_t sc_dmat;
103: bus_space_tag_t sc_st;
104: bus_space_handle_t sc_sh;
105:
106: struct timeout scan_to;
107: struct timeout amrr_to;
108:
109: int sc_id;
110: int sc_flags;
111: #define RT2661_ENABLED (1 << 0)
112: #define RT2661_FWLOADED (1 << 1)
113: #define RT2661_UPDATE_SLOT (1 << 2)
114: #define RT2661_SET_SLOTTIME (1 << 3)
115:
116: int sc_tx_timer;
117:
118: struct ieee80211_channel *sc_curchan;
119:
120: uint8_t rf_rev;
121:
122: uint8_t rfprog;
123: uint8_t rffreq;
124:
125: struct rt2661_tx_ring txq[5];
126: struct rt2661_tx_ring mgtq;
127: struct rt2661_rx_ring rxq;
128:
129: uint32_t rf_regs[4];
130: int8_t txpow[38];
131:
132: struct {
133: uint8_t reg;
134: uint8_t val;
135: } bbp_prom[16];
136:
137: int hw_radio;
138: int rx_ant;
139: int tx_ant;
140: int nb_ant;
141: int ext_2ghz_lna;
142: int ext_5ghz_lna;
143: int rssi_2ghz_corr;
144: int rssi_5ghz_corr;
145:
146: int ncalls;
147: int avg_rssi;
148: int sifs;
149:
150: uint32_t erp_csr;
151:
152: uint8_t bbp18;
153: uint8_t bbp21;
154: uint8_t bbp22;
155: uint8_t bbp16;
156: uint8_t bbp17;
157: uint8_t bbp64;
158:
159: #if NBPFILTER > 0
160: caddr_t sc_drvbpf;
161:
162: union {
163: struct rt2661_rx_radiotap_header th;
164: uint8_t pad[64];
165: } sc_rxtapu;
166: #define sc_rxtap sc_rxtapu.th
167: int sc_rxtap_len;
168:
169: union {
170: struct rt2661_tx_radiotap_header th;
171: uint8_t pad[64];
172: } sc_txtapu;
173: #define sc_txtap sc_txtapu.th
174: int sc_txtap_len;
175: #endif
176: void *sc_sdhook;
177: void *sc_powerhook;
178: };
179:
180: int rt2661_attach(void *, int);
181: int rt2661_detach(void *);
182: int rt2661_intr(void *);
183: void rt2661_shutdown(void *);
CVSweb