0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #ifndef __RXTX_H__
0015 #define __RXTX_H__
0016
0017 #include "device.h"
0018
0019 #define DEFAULT_MSDU_LIFETIME_RES_64us 8000
0020 #define DEFAULT_MGN_LIFETIME_RES_64us 125
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 struct vnt_mic_hdr {
0031 u8 id;
0032 u8 tx_priority;
0033 u8 mic_addr2[ETH_ALEN];
0034 u8 ccmp_pn[IEEE80211_CCMP_PN_LEN];
0035 __be16 payload_len;
0036 __be16 hlen;
0037 __le16 frame_control;
0038 u8 addr1[ETH_ALEN];
0039 u8 addr2[ETH_ALEN];
0040 u8 addr3[ETH_ALEN];
0041 __le16 seq_ctrl;
0042 u8 addr4[ETH_ALEN];
0043 u16 packing;
0044 } __packed;
0045
0046
0047 struct vnt_rrv_time_rts {
0048 __le16 rts_rrv_time_ba;
0049 __le16 rts_rrv_time_aa;
0050 __le16 rts_rrv_time_bb;
0051 u16 reserved;
0052 __le16 rrv_time_b;
0053 __le16 rrv_time_a;
0054 } __packed;
0055
0056 struct vnt_rrv_time_cts {
0057 __le16 cts_rrv_time_ba;
0058 u16 reserved;
0059 __le16 rrv_time_b;
0060 __le16 rrv_time_a;
0061 } __packed;
0062
0063 struct vnt_rrv_time_ab {
0064 __le16 rts_rrv_time;
0065 __le16 rrv_time;
0066 } __packed;
0067
0068
0069 struct vnt_tx_datahead_g {
0070 struct vnt_phy_field b;
0071 struct vnt_phy_field a;
0072 __le16 duration_b;
0073 __le16 duration_a;
0074 __le16 time_stamp_off_b;
0075 __le16 time_stamp_off_a;
0076 } __packed;
0077
0078 struct vnt_tx_datahead_g_fb {
0079 struct vnt_phy_field b;
0080 struct vnt_phy_field a;
0081 __le16 duration_b;
0082 __le16 duration_a;
0083 __le16 duration_a_f0;
0084 __le16 duration_a_f1;
0085 __le16 time_stamp_off_b;
0086 __le16 time_stamp_off_a;
0087 } __packed;
0088
0089 struct vnt_tx_datahead_ab {
0090 struct vnt_phy_field ab;
0091 __le16 duration;
0092 __le16 time_stamp_off;
0093 } __packed;
0094
0095 struct vnt_tx_datahead_a_fb {
0096 struct vnt_phy_field a;
0097 __le16 duration;
0098 __le16 time_stamp_off;
0099 __le16 duration_f0;
0100 __le16 duration_f1;
0101 } __packed;
0102
0103
0104 struct vnt_rts_g {
0105 struct vnt_phy_field b;
0106 struct vnt_phy_field a;
0107 __le16 duration_ba;
0108 __le16 duration_aa;
0109 __le16 duration_bb;
0110 u16 reserved;
0111 struct ieee80211_rts data;
0112 } __packed __aligned(2);
0113
0114 struct vnt_rts_g_fb {
0115 struct vnt_phy_field b;
0116 struct vnt_phy_field a;
0117 __le16 duration_ba;
0118 __le16 duration_aa;
0119 __le16 duration_bb;
0120 u16 wReserved;
0121 __le16 rts_duration_ba_f0;
0122 __le16 rts_duration_aa_f0;
0123 __le16 rts_duration_ba_f1;
0124 __le16 rts_duration_aa_f1;
0125 struct ieee80211_rts data;
0126 } __packed __aligned(2);
0127
0128 struct vnt_rts_ab {
0129 struct vnt_phy_field ab;
0130 __le16 duration;
0131 u16 reserved;
0132 struct ieee80211_rts data;
0133 } __packed __aligned(2);
0134
0135 struct vnt_rts_a_fb {
0136 struct vnt_phy_field a;
0137 __le16 duration;
0138 u16 reserved;
0139 __le16 rts_duration_f0;
0140 __le16 rts_duration_f1;
0141 struct ieee80211_rts data;
0142 } __packed __aligned(2);
0143
0144
0145 struct vnt_cts {
0146 struct vnt_phy_field b;
0147 __le16 duration_ba;
0148 u16 reserved;
0149 struct ieee80211_cts data;
0150 u16 reserved2;
0151 } __packed __aligned(2);
0152
0153 struct vnt_cts_fb {
0154 struct vnt_phy_field b;
0155 __le16 duration_ba;
0156 u16 reserved;
0157 __le16 cts_duration_ba_f0;
0158 __le16 cts_duration_ba_f1;
0159 struct ieee80211_cts data;
0160 u16 reserved2;
0161 } __packed __aligned(2);
0162
0163 struct vnt_tx_fifo_head {
0164 u8 tx_key[WLAN_KEY_LEN_CCMP];
0165 __le16 fifo_ctl;
0166 __le16 time_stamp;
0167 __le16 frag_ctl;
0168 __le16 current_rate;
0169 } __packed;
0170
0171 struct vnt_tx_short_buf_head {
0172 __le16 fifo_ctl;
0173 u16 time_stamp;
0174 struct vnt_phy_field ab;
0175 __le16 duration;
0176 __le16 time_stamp_off;
0177 } __packed;
0178
0179 int vnt_generate_fifo_header(struct vnt_private *priv, u32 dma_idx,
0180 struct vnt_tx_desc *head_td, struct sk_buff *skb);
0181 int vnt_beacon_make(struct vnt_private *priv, struct ieee80211_vif *vif);
0182 int vnt_beacon_enable(struct vnt_private *priv, struct ieee80211_vif *vif,
0183 struct ieee80211_bss_conf *conf);
0184
0185 #endif