Commit | Line | Data |
---|---|---|
18d30067 G |
1 | /****************************************************************************** |
2 | * | |
c1d6604d | 3 | * Copyright(c) 2009-2012 Realtek Corporation. All rights reserved. |
18d30067 G |
4 | * |
5 | * This program is free software; you can redistribute it and/or modify it | |
6 | * under the terms of version 2 of the GNU General Public License as | |
7 | * published by the Free Software Foundation. | |
8 | * | |
9 | * This program is distributed in the hope that it will be useful, but WITHOUT | |
10 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | |
12 | * more details. | |
13 | * | |
14 | * You should have received a copy of the GNU General Public License along with | |
15 | * this program; if not, write to the Free Software Foundation, Inc., | |
16 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA | |
17 | * | |
18 | * The full GNU General Public License is included in this distribution in the | |
19 | * file called LICENSE. | |
20 | * | |
21 | * Contact Information: | |
22 | * wlanfae <wlanfae@realtek.com> | |
23 | * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, | |
24 | * Hsinchu 300, Taiwan. | |
25 | * | |
26 | * Larry Finger <Larry.Finger@lwfinger.net> | |
27 | * | |
28 | *****************************************************************************/ | |
29 | ||
30 | #ifndef __RTL92C_MAC_H__ | |
31 | #define __RTL92C_MAC_H__ | |
32 | ||
33 | #define LLT_LAST_ENTRY_OF_TX_PKT_BUFFER 255 | |
34 | #define DRIVER_EARLY_INT_TIME 0x05 | |
35 | #define BCN_DMA_ATIME_INT_TIME 0x02 | |
36 | ||
37 | void rtl92c_read_chip_version(struct ieee80211_hw *hw); | |
38 | bool rtl92c_llt_write(struct ieee80211_hw *hw, u32 address, u32 data); | |
39 | bool rtl92c_init_llt_table(struct ieee80211_hw *hw, u32 boundary); | |
40 | void rtl92c_set_key(struct ieee80211_hw *hw, u32 key_index, | |
41 | u8 *p_macaddr, bool is_group, u8 enc_algo, | |
42 | bool is_wepkey, bool clear_all); | |
43 | void rtl92c_enable_interrupt(struct ieee80211_hw *hw); | |
44 | void rtl92c_disable_interrupt(struct ieee80211_hw *hw); | |
45 | void rtl92c_set_qos(struct ieee80211_hw *hw, int aci); | |
46 | ||
47 | ||
48 | /*--------------------------------------------------------------- | |
49 | * Hardware init functions | |
50 | *---------------------------------------------------------------*/ | |
18d30067 G |
51 | void rtl92c_init_interrupt(struct ieee80211_hw *hw); |
52 | void rtl92c_init_driver_info_size(struct ieee80211_hw *hw, u8 size); | |
53 | ||
54 | int rtl92c_set_network_type(struct ieee80211_hw *hw, enum nl80211_iftype type); | |
55 | void rtl92c_init_network_type(struct ieee80211_hw *hw); | |
56 | void rtl92c_init_adaptive_ctrl(struct ieee80211_hw *hw); | |
57 | void rtl92c_init_rate_fallback(struct ieee80211_hw *hw); | |
58 | ||
59 | void rtl92c_init_edca_param(struct ieee80211_hw *hw, | |
60 | u16 queue, | |
61 | u16 txop, | |
62 | u8 ecwmax, | |
63 | u8 ecwmin, | |
64 | u8 aifs); | |
65 | ||
66 | void rtl92c_init_edca(struct ieee80211_hw *hw); | |
67 | void rtl92c_init_ampdu_aggregation(struct ieee80211_hw *hw); | |
bfe3d2bf | 68 | void rtl92c_init_beacon_max_error(struct ieee80211_hw *hw); |
18d30067 G |
69 | void rtl92c_init_rdg_setting(struct ieee80211_hw *hw); |
70 | void rtl92c_init_retry_function(struct ieee80211_hw *hw); | |
71 | ||
18d30067 G |
72 | void rtl92c_disable_fast_edca(struct ieee80211_hw *hw); |
73 | void rtl92c_set_min_space(struct ieee80211_hw *hw, bool is2T); | |
74 | ||
18d30067 G |
75 | u32 rtl92c_get_txdma_status(struct ieee80211_hw *hw); |
76 | ||
18d30067 G |
77 | struct rx_fwinfo_92c { |
78 | u8 gain_trsw[4]; | |
79 | u8 pwdb_all; | |
80 | u8 cfosho[4]; | |
81 | u8 cfotail[4]; | |
82 | char rxevm[2]; | |
83 | char rxsnr[4]; | |
84 | u8 pdsnr[2]; | |
85 | u8 csi_current[2]; | |
86 | u8 csi_target[2]; | |
87 | u8 sigevm; | |
88 | u8 max_ex_pwr; | |
89 | u8 ex_intf_flag:1; | |
90 | u8 sgi_en:1; | |
91 | u8 rxsc:2; | |
92 | u8 reserve:4; | |
93 | } __packed; | |
94 | ||
95 | struct rx_desc_92c { | |
96 | u32 length:14; | |
97 | u32 crc32:1; | |
98 | u32 icverror:1; | |
99 | u32 drv_infosize:4; | |
100 | u32 security:3; | |
101 | u32 qos:1; | |
102 | u32 shift:2; | |
103 | u32 phystatus:1; | |
104 | u32 swdec:1; | |
105 | u32 lastseg:1; | |
106 | u32 firstseg:1; | |
107 | u32 eor:1; | |
108 | u32 own:1; | |
109 | u32 macid:5; /* word 1 */ | |
110 | u32 tid:4; | |
111 | u32 hwrsvd:5; | |
112 | u32 paggr:1; | |
113 | u32 faggr:1; | |
114 | u32 a1_fit:4; | |
115 | u32 a2_fit:4; | |
116 | u32 pam:1; | |
117 | u32 pwr:1; | |
118 | u32 moredata:1; | |
119 | u32 morefrag:1; | |
120 | u32 type:2; | |
121 | u32 mc:1; | |
122 | u32 bc:1; | |
123 | u32 seq:12; /* word 2 */ | |
124 | u32 frag:4; | |
125 | u32 nextpktlen:14; | |
126 | u32 nextind:1; | |
127 | u32 rsvd:1; | |
128 | u32 rxmcs:6; /* word 3 */ | |
129 | u32 rxht:1; | |
130 | u32 amsdu:1; | |
131 | u32 splcp:1; | |
132 | u32 bandwidth:1; | |
133 | u32 htc:1; | |
134 | u32 tcpchk_rpt:1; | |
135 | u32 ipcchk_rpt:1; | |
136 | u32 tcpchk_valid:1; | |
137 | u32 hwpcerr:1; | |
138 | u32 hwpcind:1; | |
139 | u32 iv0:16; | |
140 | u32 iv1; /* word 4 */ | |
141 | u32 tsfl; /* word 5 */ | |
142 | u32 bufferaddress; /* word 6 */ | |
143 | u32 bufferaddress64; /* word 7 */ | |
144 | } __packed; | |
145 | ||
146 | enum rtl_desc_qsel rtl92c_map_hwqueue_to_fwqueue(u16 fc, | |
147 | unsigned int | |
148 | skb_queue); | |
149 | void rtl92c_translate_rx_signal_stuff(struct ieee80211_hw *hw, | |
150 | struct sk_buff *skb, | |
151 | struct rtl_stats *pstats, | |
152 | struct rx_desc_92c *pdesc, | |
153 | struct rx_fwinfo_92c *p_drvinfo); | |
154 | ||
155 | /*--------------------------------------------------------------- | |
156 | * Card disable functions | |
157 | *---------------------------------------------------------------*/ | |
158 | ||
159 | ||
160 | ||
161 | #endif |