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