1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#ifndef __RTL92C_MAC_H__
27#define __RTL92C_MAC_H__
28
29#define LLT_LAST_ENTRY_OF_TX_PKT_BUFFER 255
30#define DRIVER_EARLY_INT_TIME 0x05
31#define BCN_DMA_ATIME_INT_TIME 0x02
32
33void rtl92c_read_chip_version(struct ieee80211_hw *hw);
34bool rtl92c_llt_write(struct ieee80211_hw *hw, u32 address, u32 data);
35bool rtl92c_init_llt_table(struct ieee80211_hw *hw, u32 boundary);
36void rtl92c_set_key(struct ieee80211_hw *hw, u32 key_index,
37 u8 *p_macaddr, bool is_group, u8 enc_algo,
38 bool is_wepkey, bool clear_all);
39void rtl92c_enable_interrupt(struct ieee80211_hw *hw);
40void rtl92c_disable_interrupt(struct ieee80211_hw *hw);
41void rtl92c_set_qos(struct ieee80211_hw *hw, int aci);
42
43
44
45
46
47void rtl92c_init_interrupt(struct ieee80211_hw *hw);
48void rtl92c_init_driver_info_size(struct ieee80211_hw *hw, u8 size);
49
50int rtl92c_set_network_type(struct ieee80211_hw *hw, enum nl80211_iftype type);
51void rtl92c_init_network_type(struct ieee80211_hw *hw);
52void rtl92c_init_adaptive_ctrl(struct ieee80211_hw *hw);
53void rtl92c_init_rate_fallback(struct ieee80211_hw *hw);
54
55void rtl92c_init_edca_param(struct ieee80211_hw *hw,
56 u16 queue,
57 u16 txop,
58 u8 ecwmax,
59 u8 ecwmin,
60 u8 aifs);
61
62void rtl92c_init_edca(struct ieee80211_hw *hw);
63void rtl92c_init_ampdu_aggregation(struct ieee80211_hw *hw);
64void rtl92c_init_beacon_max_error(struct ieee80211_hw *hw);
65void rtl92c_init_rdg_setting(struct ieee80211_hw *hw);
66void rtl92c_init_retry_function(struct ieee80211_hw *hw);
67
68void rtl92c_disable_fast_edca(struct ieee80211_hw *hw);
69void rtl92c_set_min_space(struct ieee80211_hw *hw, bool is2T);
70
71u32 rtl92c_get_txdma_status(struct ieee80211_hw *hw);
72
73struct rx_fwinfo_92c {
74 u8 gain_trsw[4];
75 u8 pwdb_all;
76 u8 cfosho[4];
77 u8 cfotail[4];
78 s8 rxevm[2];
79 s8 rxsnr[4];
80 u8 pdsnr[2];
81 u8 csi_current[2];
82 u8 csi_target[2];
83 u8 sigevm;
84 u8 max_ex_pwr;
85 u8 ex_intf_flag:1;
86 u8 sgi_en:1;
87 u8 rxsc:2;
88 u8 reserve:4;
89} __packed;
90
91struct rx_desc_92c {
92 u32 length:14;
93 u32 crc32:1;
94 u32 icverror:1;
95 u32 drv_infosize:4;
96 u32 security:3;
97 u32 qos:1;
98 u32 shift:2;
99 u32 phystatus:1;
100 u32 swdec:1;
101 u32 lastseg:1;
102 u32 firstseg:1;
103 u32 eor:1;
104 u32 own:1;
105 u32 macid:5;
106 u32 tid:4;
107 u32 hwrsvd:5;
108 u32 paggr:1;
109 u32 faggr:1;
110 u32 a1_fit:4;
111 u32 a2_fit:4;
112 u32 pam:1;
113 u32 pwr:1;
114 u32 moredata:1;
115 u32 morefrag:1;
116 u32 type:2;
117 u32 mc:1;
118 u32 bc:1;
119 u32 seq:12;
120 u32 frag:4;
121 u32 nextpktlen:14;
122 u32 nextind:1;
123 u32 rsvd:1;
124 u32 rxmcs:6;
125 u32 rxht:1;
126 u32 amsdu:1;
127 u32 splcp:1;
128 u32 bandwidth:1;
129 u32 htc:1;
130 u32 tcpchk_rpt:1;
131 u32 ipcchk_rpt:1;
132 u32 tcpchk_valid:1;
133 u32 hwpcerr:1;
134 u32 hwpcind:1;
135 u32 iv0:16;
136 u32 iv1;
137 u32 tsfl;
138 u32 bufferaddress;
139 u32 bufferaddress64;
140} __packed;
141
142enum rtl_desc_qsel rtl92c_map_hwqueue_to_fwqueue(u16 fc,
143 unsigned int
144 skb_queue);
145void rtl92c_translate_rx_signal_stuff(struct ieee80211_hw *hw,
146 struct sk_buff *skb,
147 struct rtl_stats *pstats,
148 struct rx_desc_92c *pdesc,
149 struct rx_fwinfo_92c *p_drvinfo);
150
151
152
153
154
155
156
157#endif
158