2 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
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.
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.
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.
36 /*--------------------- Export Definitions -------------------------*/
38 /*--------------------- Export Variables --------------------------*/
40 /*--------------------- Export Functions --------------------------*/
42 /* MIC HDR data header */
46 u8 mic_addr2[ETH_ALEN];
47 u8 ccmp_pn[IEEE80211_CCMP_PN_LEN];
56 u16 packing; /* packing to 48 bytes */
59 /* RsvTime buffer header */
60 struct vnt_rrv_time_rts {
61 __le16 rts_rrv_time_ba;
62 __le16 rts_rrv_time_aa;
63 __le16 rts_rrv_time_bb;
69 struct vnt_rrv_time_cts {
70 __le16 cts_rrv_time_ba;
76 struct vnt_rrv_time_ab {
82 struct vnt_tx_datahead_g {
83 struct vnt_phy_field b;
84 struct vnt_phy_field a;
87 __le16 time_stamp_off_b;
88 __le16 time_stamp_off_a;
91 struct vnt_tx_datahead_g_fb {
92 struct vnt_phy_field b;
93 struct vnt_phy_field a;
98 __le16 time_stamp_off_b;
99 __le16 time_stamp_off_a;
102 struct vnt_tx_datahead_ab {
103 struct vnt_phy_field ab;
105 __le16 time_stamp_off;
108 struct vnt_tx_datahead_a_fb {
109 struct vnt_phy_field a;
111 __le16 time_stamp_off;
116 /* RTS buffer header */
118 struct vnt_phy_field b;
119 struct vnt_phy_field a;
124 struct ieee80211_rts data;
127 struct vnt_rts_g_fb {
128 struct vnt_phy_field b;
129 struct vnt_phy_field a;
134 __le16 rts_duration_ba_f0;
135 __le16 rts_duration_aa_f0;
136 __le16 rts_duration_ba_f1;
137 __le16 rts_duration_aa_f1;
138 struct ieee80211_rts data;
142 struct vnt_phy_field ab;
145 struct ieee80211_rts data;
148 struct vnt_rts_a_fb {
149 struct vnt_phy_field a;
152 __le16 rts_duration_f0;
153 __le16 rts_duration_f1;
154 struct ieee80211_rts data;
157 /* CTS buffer header */
159 struct vnt_phy_field b;
162 struct ieee80211_cts data;
167 struct vnt_phy_field b;
170 __le16 cts_duration_ba_f0;
171 __le16 cts_duration_ba_f1;
172 struct ieee80211_cts data;
176 struct vnt_tx_fifo_head {
177 u8 tx_key[WLAN_KEY_LEN_CCMP];
184 struct vnt_tx_short_buf_head {
187 struct vnt_phy_field ab;
189 __le16 time_stamp_off;
194 struct vnt_private *,
195 unsigned char *pbyBufferAddr,
196 unsigned short wDuration,
197 PSEthernetHeader psEthHeader,
199 unsigned short wFragType,
200 unsigned int uDMAIdx,
201 unsigned int uFragIdx
206 struct vnt_private *,
207 PSKeyItem pTransmitKey,
208 unsigned int cbFrameBodySize,
209 PSEthernetHeader psEthHeader
213 vGenerateFIFOHeader(struct vnt_private *, unsigned char byPktTyp,
214 unsigned char *pbyTxBufferAddr, bool bNeedEncrypt,
215 unsigned int cbPayloadSize, unsigned int uDMAIdx,
216 PSTxDesc pHeadTD, PSEthernetHeader psEthHeader,
217 unsigned char *pPacket, PSKeyItem pTransmitKey,
218 unsigned int uNodeIndex, unsigned int *puMACfragNum,
219 unsigned int *pcbHeaderSize);
221 void vDMA0_tx_80211(struct vnt_private *, struct sk_buff *skb,
222 unsigned char *pbMPDU, unsigned int cbMPDULen);
223 CMD_STATUS csMgmt_xmit(struct vnt_private *, PSTxMgmtPacket pPacket);
224 CMD_STATUS csBeacon_xmit(struct vnt_private *, PSTxMgmtPacket pPacket);
226 int vnt_generate_fifo_header(struct vnt_private *, u32,
227 PSTxDesc head_td, struct sk_buff *);
228 int vnt_beacon_make(struct vnt_private *, struct ieee80211_vif *);
229 int vnt_beacon_enable(struct vnt_private *, struct ieee80211_vif *,
230 struct ieee80211_bss_conf *);