Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
4 * All rights reserved.
5 *
6 * File: rxtx.h
7 *
8 * Purpose:
9 *
10 * Author: Jerry Chen
11 *
12 * Date: Jun. 27, 2002
13 *
14 */
15
16#ifndef __RXTX_H__
17#define __RXTX_H__
18
19#include "device.h"
20#include "wcmd.h"
21#include "baseband.h"
22
23#define DEFAULT_MGN_LIFETIME_RES_64us 125 /* 64us */
24#define DEFAULT_MSDU_LIFETIME_RES_64us 8000
25
26/* Length, Service, and Signal fields of Phy for Tx */
27struct vnt_phy_field {
28 u8 signal;
29 u8 service;
30 __le16 len;
31} __packed;
32
33/* MIC HDR data header */
34struct vnt_mic_hdr {
35 u8 id;
36 u8 tx_priority;
37 u8 mic_addr2[6];
38 u8 ccmp_pn[IEEE80211_CCMP_PN_LEN];
39 __be16 payload_len;
40 __be16 hlen;
41 __le16 frame_control;
42 u8 addr1[6];
43 u8 addr2[6];
44 u8 addr3[6];
45 __le16 seq_ctrl;
46 u8 addr4[6];
47 u16 packing; /* packing to 48 bytes */
48} __packed;
49
50/* RsvTime buffer header */
51struct vnt_rrv_time_rts {
52 __le16 rts_rrv_time_ba;
53 __le16 rts_rrv_time_aa;
54 __le16 rts_rrv_time_bb;
55 u16 wReserved;
56 __le16 rrv_time_b;
57 __le16 rrv_time_a;
58} __packed;
59
60struct vnt_rrv_time_cts {
61 __le16 cts_rrv_time_ba;
62 u16 wReserved;
63 __le16 rrv_time_b;
64 __le16 rrv_time_a;
65} __packed;
66
67struct vnt_rrv_time_ab {
68 __le16 rts_rrv_time;
69 __le16 rrv_time;
70} __packed;
71
72/* TX data header */
73struct vnt_tx_datahead_g {
74 struct vnt_phy_field b;
75 struct vnt_phy_field a;
76 __le16 duration_b;
77 __le16 duration_a;
78 __le16 time_stamp_off_b;
79 __le16 time_stamp_off_a;
80} __packed;
81
82struct vnt_tx_datahead_ab {
83 struct vnt_phy_field ab;
84 __le16 duration;
85 __le16 time_stamp_off;
86} __packed;
87
88/* RTS buffer header */
89struct vnt_rts_g {
90 struct vnt_phy_field b;
91 struct vnt_phy_field a;
92 __le16 duration_ba;
93 __le16 duration_aa;
94 __le16 duration_bb;
95 u16 wReserved;
96 struct ieee80211_rts data;
97 struct vnt_tx_datahead_g data_head;
98} __packed;
99
100struct vnt_rts_ab {
101 struct vnt_phy_field ab;
102 __le16 duration;
103 u16 wReserved;
104 struct ieee80211_rts data;
105 struct vnt_tx_datahead_ab data_head;
106} __packed;
107
108/* CTS buffer header */
109struct vnt_cts {
110 struct vnt_phy_field b;
111 __le16 duration_ba;
112 u16 wReserved;
113 struct ieee80211_cts data;
114 u16 reserved2;
115 struct vnt_tx_datahead_g data_head;
116} __packed;
117
118union vnt_tx_data_head {
119 /* rts g */
120 struct vnt_rts_g rts_g;
121 /* rts a/b */
122 struct vnt_rts_ab rts_ab;
123 /* cts g */
124 struct vnt_cts cts_g;
125 /* no rts/cts */
126 struct vnt_tx_datahead_ab data_head_ab;
127};
128
129struct vnt_tx_mic_hdr {
130 struct vnt_mic_hdr hdr;
131 union vnt_tx_data_head head;
132} __packed;
133
134union vnt_tx {
135 struct vnt_tx_mic_hdr mic;
136 union vnt_tx_data_head head;
137};
138
139union vnt_tx_head {
140 struct {
141 struct vnt_rrv_time_rts rts;
142 union vnt_tx tx;
143 } __packed tx_rts;
144 struct {
145 struct vnt_rrv_time_cts cts;
146 union vnt_tx tx;
147 } __packed tx_cts;
148 struct {
149 struct vnt_rrv_time_ab ab;
150 union vnt_tx tx;
151 } __packed tx_ab;
152};
153
154struct vnt_tx_fifo_head {
155 u8 tx_key[WLAN_KEY_LEN_CCMP];
156 __le16 fifo_ctl;
157 __le16 time_stamp;
158 __le16 frag_ctl;
159 __le16 current_rate;
160} __packed;
161
162struct vnt_tx_buffer {
163 struct vnt_tx_fifo_head fifo_head;
164 union vnt_tx_head tx_head;
165} __packed;
166
167struct vnt_tx_short_buf_head {
168 __le16 fifo_ctl;
169 u16 time_stamp;
170 struct vnt_phy_field ab;
171 __le16 duration;
172 __le16 time_stamp_off;
173} __packed;
174
175int vnt_tx_packet(struct vnt_private *priv, struct sk_buff *skb);
176int vnt_beacon_make(struct vnt_private *priv, struct ieee80211_vif *vif);
177int vnt_beacon_enable(struct vnt_private *priv, struct ieee80211_vif *vif,
178 struct ieee80211_bss_conf *conf);
179
180#endif /* __RXTX_H__ */