0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #ifndef __DESC_H__
0017 #define __DESC_H__
0018
0019 #include <linux/types.h>
0020 #include <linux/mm.h>
0021 #include "linux/ieee80211.h"
0022
0023 #define B_OWNED_BY_CHIP 1
0024 #define B_OWNED_BY_HOST 0
0025
0026
0027 #define RSR_ADDRBROAD 0x80
0028 #define RSR_ADDRMULTI 0x40
0029 #define RSR_ADDRUNI 0x00
0030 #define RSR_IVLDTYP 0x20
0031 #define RSR_IVLDLEN 0x10
0032 #define RSR_BSSIDOK 0x08
0033 #define RSR_CRCOK 0x04
0034 #define RSR_BCNSSIDOK 0x02
0035 #define RSR_ADDROK 0x01
0036
0037
0038 #define NEWRSR_DECRYPTOK 0x10
0039 #define NEWRSR_CFPIND 0x08
0040 #define NEWRSR_HWUTSF 0x04
0041 #define NEWRSR_BCNHITAID 0x02
0042 #define NEWRSR_BCNHITAID0 0x01
0043
0044
0045 #define TSR0_PWRSTS1_2 0xC0
0046 #define TSR0_PWRSTS7 0x20
0047 #define TSR0_NCR 0x1F
0048
0049
0050 #define TSR1_TERR 0x80
0051 #define TSR1_PWRSTS4_6 0x70
0052 #define TSR1_RETRYTMO 0x08
0053 #define TSR1_TMO 0x04
0054 #define TSR1_PWRSTS3 0x02
0055 #define ACK_DATA 0x01
0056
0057
0058 #define EDMSDU 0x04
0059 #define TCR_EDP 0x02
0060 #define TCR_STP 0x01
0061
0062
0063 #define CB_MAX_BUF_SIZE 2900U
0064
0065 #define CB_MAX_TX_BUF_SIZE CB_MAX_BUF_SIZE
0066 #define CB_MAX_RX_BUF_SIZE_NORMAL CB_MAX_BUF_SIZE
0067
0068 #define CB_BEACON_BUF_SIZE 512U
0069
0070 #define CB_MAX_RX_DESC 128
0071 #define CB_MIN_RX_DESC 16
0072 #define CB_MAX_TX_DESC 64
0073 #define CB_MIN_TX_DESC 16
0074
0075 #define CB_MAX_RECEIVED_PACKETS 16
0076
0077
0078
0079
0080
0081
0082
0083 #define CB_EXTRA_RD_NUM 32
0084 #define CB_RD_NUM 32
0085 #define CB_TD_NUM 32
0086
0087
0088
0089
0090
0091 #define CB_MAX_SEGMENT 4
0092
0093 #define CB_MIN_MAP_REG_NUM 4
0094 #define CB_MAX_MAP_REG_NUM CB_MAX_TX_DESC
0095
0096 #define CB_PROTOCOL_RESERVED_SECTION 16
0097
0098
0099
0100
0101
0102 #define CB_MAX_TX_ABORT_RETRY 3
0103
0104
0105 #define FIFOCTL_AUTO_FB_1 0x1000
0106 #define FIFOCTL_AUTO_FB_0 0x0800
0107 #define FIFOCTL_GRPACK 0x0400
0108 #define FIFOCTL_11GA 0x0300
0109 #define FIFOCTL_11GB 0x0200
0110 #define FIFOCTL_11B 0x0100
0111 #define FIFOCTL_11A 0x0000
0112 #define FIFOCTL_RTS 0x0080
0113 #define FIFOCTL_ISDMA0 0x0040
0114 #define FIFOCTL_GENINT 0x0020
0115 #define FIFOCTL_TMOEN 0x0010
0116 #define FIFOCTL_LRETRY 0x0008
0117 #define FIFOCTL_CRCDIS 0x0004
0118 #define FIFOCTL_NEEDACK 0x0002
0119 #define FIFOCTL_LHEAD 0x0001
0120
0121
0122 #define FRAGCTL_AES 0x0300
0123 #define FRAGCTL_TKIP 0x0200
0124 #define FRAGCTL_LEGACY 0x0100
0125 #define FRAGCTL_NONENCRYPT 0x0000
0126 #define FRAGCTL_ENDFRAG 0x0003
0127 #define FRAGCTL_MIDFRAG 0x0002
0128 #define FRAGCTL_STAFRAG 0x0001
0129 #define FRAGCTL_NONFRAG 0x0000
0130
0131 #define TYPE_TXDMA0 0
0132 #define TYPE_AC0DMA 1
0133 #define TYPE_ATIMDMA 2
0134 #define TYPE_SYNCDMA 3
0135 #define TYPE_MAXTD 2
0136
0137 #define TYPE_BEACONDMA 4
0138
0139 #define TYPE_RXDMA0 0
0140 #define TYPE_RXDMA1 1
0141 #define TYPE_MAXRD 2
0142
0143
0144 #define TD_FLAGS_NETIF_SKB 0x01
0145
0146 #define TD_FLAGS_PRIV_SKB 0x02
0147 #define TD_FLAGS_PS_RETRY 0x04
0148
0149
0150
0151
0152
0153
0154
0155
0156 struct vnt_rd_info {
0157 struct sk_buff *skb;
0158 dma_addr_t skb_dma;
0159 };
0160
0161 struct vnt_rdes0 {
0162 volatile __le16 res_count;
0163 #ifdef __BIG_ENDIAN
0164 union {
0165 volatile u16 f15_reserved;
0166 struct {
0167 volatile u8 f8_reserved1;
0168 volatile u8 owner:1;
0169 volatile u8 f7_reserved:7;
0170 } __packed;
0171 } __packed;
0172 #else
0173 u16 f15_reserved:15;
0174 u16 owner:1;
0175 #endif
0176 } __packed;
0177
0178 struct vnt_rdes1 {
0179 __le16 req_count;
0180 u16 reserved;
0181 } __packed;
0182
0183
0184 struct vnt_rx_desc {
0185 volatile struct vnt_rdes0 rd0;
0186 volatile struct vnt_rdes1 rd1;
0187 volatile __le32 buff_addr;
0188 volatile __le32 next_desc;
0189 struct vnt_rx_desc *next __aligned(8);
0190 struct vnt_rd_info *rd_info __aligned(8);
0191 } __packed;
0192
0193 struct vnt_tdes0 {
0194 volatile u8 tsr0;
0195 volatile u8 tsr1;
0196 #ifdef __BIG_ENDIAN
0197 union {
0198 volatile u16 f15_txtime;
0199 struct {
0200 volatile u8 f8_reserved;
0201 volatile u8 owner:1;
0202 volatile u8 f7_reserved:7;
0203 } __packed;
0204 } __packed;
0205 #else
0206 volatile u16 f15_txtime:15;
0207 volatile u16 owner:1;
0208 #endif
0209 } __packed;
0210
0211 struct vnt_tdes1 {
0212 volatile __le16 req_count;
0213 volatile u8 tcr;
0214 volatile u8 reserved;
0215 } __packed;
0216
0217 struct vnt_td_info {
0218 void *mic_hdr;
0219 struct sk_buff *skb;
0220 unsigned char *buf;
0221 dma_addr_t buf_dma;
0222 u16 req_count;
0223 u8 flags;
0224 };
0225
0226
0227 struct vnt_tx_desc {
0228 volatile struct vnt_tdes0 td0;
0229 volatile struct vnt_tdes1 td1;
0230 volatile __le32 buff_addr;
0231 volatile __le32 next_desc;
0232 struct vnt_tx_desc *next __aligned(8);
0233 struct vnt_td_info *td_info __aligned(8);
0234 } __packed;
0235
0236
0237 struct vnt_phy_field {
0238 u8 signal;
0239 u8 service;
0240 __le16 len;
0241 } __packed;
0242
0243 union vnt_phy_field_swap {
0244 struct vnt_phy_field field_read;
0245 u16 swap[2];
0246 u32 field_write;
0247 };
0248
0249 #endif