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 21#define DEFAULT_MSDU_LIFETIME_RES_64us 8000 /* 64us */ 22#define DEFAULT_MGN_LIFETIME_RES_64us 125 /* 64us */ 23 24 25/*--------------------- Export Definitions -------------------------*/ 26 27/*--------------------- Export Variables --------------------------*/ 28 29/*--------------------- Export Functions --------------------------*/ 30 31/* MIC HDR data header */ 32struct vnt_mic_hdr { 33 u8 id; 34 u8 tx_priority; 35 u8 mic_addr2[ETH_ALEN]; 36 u8 ccmp_pn[IEEE80211_CCMP_PN_LEN]; 37 __be16 payload_len; 38 __be16 hlen; 39 __le16 frame_control; 40 u8 addr1[ETH_ALEN]; 41 u8 addr2[ETH_ALEN]; 42 u8 addr3[ETH_ALEN]; 43 __le16 seq_ctrl; 44 u8 addr4[ETH_ALEN]; 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 reserved; 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 reserved; 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_g_fb { 81 struct vnt_phy_field b; 82 struct vnt_phy_field a; 83 __le16 duration_b; 84 __le16 duration_a; 85 __le16 duration_a_f0; 86 __le16 duration_a_f1; 87 __le16 time_stamp_off_b; 88 __le16 time_stamp_off_a; 89} __packed; 90 91struct vnt_tx_datahead_ab { 92 struct vnt_phy_field ab; 93 __le16 duration; 94 __le16 time_stamp_off; 95} __packed; 96 97struct vnt_tx_datahead_a_fb { 98 struct vnt_phy_field a; 99 __le16 duration; 100 __le16 time_stamp_off; 101 __le16 duration_f0; 102 __le16 duration_f1; 103} __packed; 104 105/* RTS buffer header */ 106struct vnt_rts_g { 107 struct vnt_phy_field b; 108 struct vnt_phy_field a; 109 __le16 duration_ba; 110 __le16 duration_aa; 111 __le16 duration_bb; 112 u16 reserved; 113 struct ieee80211_rts data; 114} __packed; 115 116struct vnt_rts_g_fb { 117 struct vnt_phy_field b; 118 struct vnt_phy_field a; 119 __le16 duration_ba; 120 __le16 duration_aa; 121 __le16 duration_bb; 122 u16 wReserved; 123 __le16 rts_duration_ba_f0; 124 __le16 rts_duration_aa_f0; 125 __le16 rts_duration_ba_f1; 126 __le16 rts_duration_aa_f1; 127 struct ieee80211_rts data; 128} __packed; 129 130struct vnt_rts_ab { 131 struct vnt_phy_field ab; 132 __le16 duration; 133 u16 reserved; 134 struct ieee80211_rts data; 135} __packed; 136 137struct vnt_rts_a_fb { 138 struct vnt_phy_field a; 139 __le16 duration; 140 u16 reserved; 141 __le16 rts_duration_f0; 142 __le16 rts_duration_f1; 143 struct ieee80211_rts data; 144} __packed; 145 146/* CTS buffer header */ 147struct vnt_cts { 148 struct vnt_phy_field b; 149 __le16 duration_ba; 150 u16 reserved; 151 struct ieee80211_cts data; 152 u16 reserved2; 153} __packed; 154 155struct vnt_cts_fb { 156 struct vnt_phy_field b; 157 __le16 duration_ba; 158 u16 reserved; 159 __le16 cts_duration_ba_f0; 160 __le16 cts_duration_ba_f1; 161 struct ieee80211_cts data; 162 u16 reserved2; 163} __packed; 164 165struct vnt_tx_fifo_head { 166 u8 tx_key[WLAN_KEY_LEN_CCMP]; 167 __le16 fifo_ctl; 168 __le16 time_stamp; 169 __le16 frag_ctl; 170 __le16 current_rate; 171} __packed; 172 173struct vnt_tx_short_buf_head { 174 __le16 fifo_ctl; 175 u16 time_stamp; 176 struct vnt_phy_field ab; 177 __le16 duration; 178 __le16 time_stamp_off; 179} __packed; 180 181int vnt_generate_fifo_header(struct vnt_private *priv, u32 dma_idx, 182 struct vnt_tx_desc *head_td, struct sk_buff *skb); 183int vnt_beacon_make(struct vnt_private *priv, struct ieee80211_vif *vif); 184int vnt_beacon_enable(struct vnt_private *priv, struct ieee80211_vif *vif, 185 struct ieee80211_bss_conf *conf); 186 187#endif /* __RXTX_H__ */ 188