Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0+ */
0002 /*
0003  * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
0004  * All rights reserved.
0005  *
0006  * Purpose:
0007  *
0008  * Author: Jerry Chen
0009  *
0010  * Date: Jun. 27, 2002
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 /* 64us */
0020 #define DEFAULT_MGN_LIFETIME_RES_64us   125  /* 64us */
0021 
0022 
0023 /*---------------------  Export Definitions -------------------------*/
0024 
0025 /*---------------------  Export Variables  --------------------------*/
0026 
0027 /*---------------------  Export Functions  --------------------------*/
0028 
0029 /* MIC HDR data header */
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; /* packing to 48 bytes */
0044 } __packed;
0045 
0046 /* RsvTime buffer header */
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 /* TX data header */
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 /* RTS buffer header */
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 /* CTS buffer header */
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 /* __RXTX_H__ */