]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/staging/vt6656/rxtx.h
3fd8507e8b9eba0acebbf38f592c12a983cddfdc
[karo-tx-linux.git] / drivers / staging / vt6656 / rxtx.h
1 /*
2  * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
3  * All rights reserved.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  *
19  * File: rxtx.h
20  *
21  * Purpose:
22  *
23  * Author: Jerry Chen
24  *
25  * Date: Jun. 27, 2002
26  *
27  */
28
29 #ifndef __RXTX_H__
30 #define __RXTX_H__
31
32 #include "device.h"
33 #include "wcmd.h"
34 #include "baseband.h"
35
36 /* MIC HDR data header */
37 struct vnt_mic_hdr {
38         u8 id;
39         u8 tx_priority;
40         u8 mic_addr2[6];
41         __be32 tsc_47_16;
42         __be16 tsc_15_0;
43         __be16 payload_len;
44         __be16 hlen;
45         __le16 frame_control;
46         u8 addr1[6];
47         u8 addr2[6];
48         u8 addr3[6];
49         __le16 seq_ctrl;
50         u8 addr4[6];
51         u16 packing; /* packing to 48 bytes */
52 } __packed;
53
54 /* RsvTime buffer header */
55 struct vnt_rrv_time_rts {
56         u16 wRTSTxRrvTime_ba;
57         u16 wRTSTxRrvTime_aa;
58         u16 wRTSTxRrvTime_bb;
59         u16 wReserved;
60         u16 wTxRrvTime_b;
61         u16 wTxRrvTime_a;
62 } __packed;
63
64 struct vnt_rrv_time_cts {
65         u16 wCTSTxRrvTime_ba;
66         u16 wReserved;
67         u16 wTxRrvTime_b;
68         u16 wTxRrvTime_a;
69 } __packed;
70
71 struct vnt_rrv_time_ab {
72         u16 wRTSTxRrvTime;
73         u16 wTxRrvTime;
74 } __packed;
75
76 /* TX data header */
77 struct vnt_tx_datahead_g {
78         struct vnt_phy_field b;
79         struct vnt_phy_field a;
80         u16 wDuration_b;
81         u16 wDuration_a;
82         u16 wTimeStampOff_b;
83         u16 wTimeStampOff_a;
84 } __packed;
85
86 struct vnt_tx_datahead_g_fb {
87         struct vnt_phy_field b;
88         struct vnt_phy_field a;
89         u16 wDuration_b;
90         u16 wDuration_a;
91         u16 wDuration_a_f0;
92         u16 wDuration_a_f1;
93         u16 wTimeStampOff_b;
94         u16 wTimeStampOff_a;
95 } __packed;
96
97 struct vnt_tx_datahead_ab {
98         struct vnt_phy_field ab;
99         u16 wDuration;
100         u16 wTimeStampOff;
101 } __packed;
102
103 struct vnt_tx_datahead_a_fb {
104         struct vnt_phy_field a;
105         u16 wDuration;
106         u16 wTimeStampOff;
107         u16 wDuration_f0;
108         u16 wDuration_f1;
109 } __packed;
110
111 /* RTS buffer header */
112 struct vnt_rts_g {
113         struct vnt_phy_field b;
114         struct vnt_phy_field a;
115         u16 wDuration_ba;
116         u16 wDuration_aa;
117         u16 wDuration_bb;
118         u16 wReserved;
119         struct ieee80211_rts data;
120         struct vnt_tx_datahead_g data_head;
121 } __packed;
122
123 struct vnt_rts_g_fb {
124         struct vnt_phy_field b;
125         struct vnt_phy_field a;
126         u16 wDuration_ba;
127         u16 wDuration_aa;
128         u16 wDuration_bb;
129         u16 wReserved;
130         u16 wRTSDuration_ba_f0;
131         u16 wRTSDuration_aa_f0;
132         u16 wRTSDuration_ba_f1;
133         u16 wRTSDuration_aa_f1;
134         struct ieee80211_rts data;
135         struct vnt_tx_datahead_g_fb data_head;
136 } __packed;
137
138 struct vnt_rts_ab {
139         struct vnt_phy_field ab;
140         u16 wDuration;
141         u16 wReserved;
142         struct ieee80211_rts data;
143 } __packed;
144
145 struct vnt_rts_a_fb {
146         struct vnt_phy_field a;
147         u16 wDuration;
148         u16 wReserved;
149         u16 wRTSDuration_f0;
150         u16 wRTSDuration_f1;
151         struct ieee80211_rts data;
152         struct vnt_tx_datahead_a_fb data_head;
153 } __packed;
154
155 /* CTS buffer header */
156 struct vnt_cts {
157         struct vnt_phy_field b;
158         u16 wDuration_ba;
159         u16 wReserved;
160         struct ieee80211_cts data;
161         u16 reserved2;
162         struct vnt_tx_datahead_g data_head;
163 } __packed;
164
165 struct vnt_cts_fb {
166         struct vnt_phy_field b;
167         u16 wDuration_ba;
168         u16 wReserved;
169         u16 wCTSDuration_ba_f0;
170         u16 wCTSDuration_ba_f1;
171         struct ieee80211_cts data;
172         u16 reserved2;
173         struct vnt_tx_datahead_g_fb data_head;
174 } __packed;
175
176 union vnt_tx_data_head {
177         /* rts g */
178         struct vnt_rts_g rts_g;
179         struct vnt_rts_g_fb rts_g_fb;
180         /* rts a/b */
181         struct vnt_rts_ab rts_ab;
182         struct vnt_rts_a_fb rts_a_fb;
183         /* cts g */
184         struct vnt_cts cts_g;
185         struct vnt_cts_fb cts_g_fb;
186 };
187
188 struct vnt_tx_mic_hdr {
189         struct vnt_mic_hdr hdr;
190         union vnt_tx_data_head head;
191 } __packed;
192
193 union vnt_tx {
194         struct vnt_tx_mic_hdr mic;
195         union vnt_tx_data_head head;
196 };
197
198 union vnt_tx_head {
199         struct {
200                 struct vnt_rrv_time_rts rts;
201                 union vnt_tx tx;
202         } __packed tx_rts;
203         struct {
204                 struct vnt_rrv_time_cts cts;
205                 union vnt_tx tx;
206         } __packed tx_cts;
207         struct {
208                 struct vnt_rrv_time_ab ab;
209                 union vnt_tx tx;
210         } __packed tx_ab;
211 };
212
213 struct vnt_tx_fifo_head {
214         u32 adwTxKey[4];
215         u16 wFIFOCtl;
216         u16 wTimeStamp;
217         u16 wFragCtl;
218         u16 wReserved;
219 } __packed;
220
221 struct vnt_tx_buffer {
222         u8 byType;
223         u8 byPKTNO;
224         u16 wTxByteCount;
225         struct vnt_tx_fifo_head fifo_head;
226         union vnt_tx_head tx_head;
227 } __packed;
228
229 struct vnt_beacon_buffer {
230         u8 byType;
231         u8 byPKTNO;
232         u16 wTxByteCount;
233         u16 wFIFOCtl;
234         u16 wTimeStamp;
235 } __packed;
236
237 void vDMA0_tx_80211(struct vnt_private *, struct sk_buff *skb);
238 int nsDMA_tx_packet(struct vnt_private *, u32 uDMAIdx, struct sk_buff *skb);
239 CMD_STATUS csMgmt_xmit(struct vnt_private *, struct vnt_tx_mgmt *);
240 CMD_STATUS csBeacon_xmit(struct vnt_private *, struct vnt_tx_mgmt *);
241 int bRelayPacketSend(struct vnt_private *, u8 *pbySkbData, u32 uDataLen,
242         u32 uNodeIndex);
243
244 #endif /* __RXTX_H__ */