brcm2708: bcm2710: add 64 bit support for Raspberry Pi 3
[openwrt/openwrt.git] / target / linux / brcm2708 / patches-4.9 / 0090-net-Fix-rtl8192cu-build-errors-on-other-platforms.patch
1 From 911b758ea2b7741fdc71ab47685d55d0a6452c72 Mon Sep 17 00:00:00 2001
2 From: Phil Elwell <phil@raspberrypi.org>
3 Date: Wed, 23 Mar 2016 17:20:58 +0000
4 Subject: [PATCH] net: Fix rtl8192cu build errors on other platforms
5
6 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
7
8 suppress spurious messages
9
10 Add #if for 3.14 kernel change (#87)
11
12 Fixes compiling after changes in https://github.com/torvalds/linux/commit/f663dd9aaf9ed124f25f0f8452edf238f087ad50 and https://github.com/torvalds/linux/commit/99932d4fc03a13bb3e94938fe25458fabc8f2fc3
13
14 Fixes #86
15
16 Set dev_type to wlan
17
18 Fixes #23
19
20 Tentatively added support for more 8188CUS based devices.
21
22 Add support for more 8188CUS and 8192CUS devices
23
24 Add ProductId for the Netgear N150 - WNA1000M
25
26 Fixes CONFIG_CONCURRENT_MODE CONFIG_MULTI_VIR_IFACES
27
28 Fixes compatibility with 3.13
29
30 Enables warning in the compiler and fixes some issues, reference => https://github.com/diederikdehaas/rtl8812AU
31
32 Starts device in station mode instead of monitor, fixes NetworkManager issues
33
34 Enable cfg80211 support
35
36 Fix cfg80211 for kernel >= 4.7
37
38 Fixes rtl8192cu for kernel >= 4.8
39 ---
40 drivers/net/wireless/realtek/rtl8192cu/Makefile | 20 ++-
41 .../net/wireless/realtek/rtl8192cu/core/rtw_ap.c | 7 +-
42 .../realtek/rtl8192cu/core/rtw_ieee80211.c | 3 +-
43 .../realtek/rtl8192cu/core/rtw_ioctl_set.c | 5 +-
44 .../wireless/realtek/rtl8192cu/core/rtw_mlme_ext.c | 8 +-
45 .../net/wireless/realtek/rtl8192cu/core/rtw_p2p.c | 6 +-
46 .../net/wireless/realtek/rtl8192cu/core/rtw_recv.c | 7 +-
47 .../wireless/realtek/rtl8192cu/core/rtw_sta_mgt.c | 4 +-
48 .../realtek/rtl8192cu/core/rtw_wlan_util.c | 2 +-
49 .../net/wireless/realtek/rtl8192cu/core/rtw_xmit.c | 2 +-
50 .../rtl8192cu/hal/rtl8192c/rtl8192c_rf6052.c | 4 +-
51 .../wireless/realtek/rtl8192cu/include/autoconf.h | 9 +-
52 .../realtek/rtl8192cu/include/ioctl_cfg80211.h | 9 +-
53 .../realtek/rtl8192cu/include/osdep_service.h | 4 +-
54 .../wireless/realtek/rtl8192cu/include/rtw_debug.h | 6 +-
55 .../realtek/rtl8192cu/include/rtw_ioctl_set.h | 5 +-
56 .../wireless/realtek/rtl8192cu/include/sta_info.h | 4 +-
57 .../net/wireless/realtek/rtl8192cu/include/wifi.h | 2 +-
58 .../rtl8192cu/os_dep/linux/ioctl_cfg80211.c | 176 ++++++++++++++-------
59 .../realtek/rtl8192cu/os_dep/linux/ioctl_linux.c | 3 +-
60 .../realtek/rtl8192cu/os_dep/linux/os_intfs.c | 18 ++-
61 .../realtek/rtl8192cu/os_dep/linux/recv_linux.c | 2 +-
62 .../realtek/rtl8192cu/os_dep/linux/rtw_android.c | 6 -
63 .../realtek/rtl8192cu/os_dep/linux/usb_intf.c | 9 +-
64 .../realtek/rtl8192cu/os_dep/osdep_service.c | 4 +-
65 25 files changed, 214 insertions(+), 111 deletions(-)
66
67 --- a/drivers/net/wireless/realtek/rtl8192cu/Makefile
68 +++ b/drivers/net/wireless/realtek/rtl8192cu/Makefile
69 @@ -1,12 +1,20 @@
70 EXTRA_CFLAGS += $(USER_EXTRA_CFLAGS)
71 EXTRA_CFLAGS += -O1
72 #EXTRA_CFLAGS += -O3
73 -#EXTRA_CFLAGS += -Wall
74 -#EXTRA_CFLAGS += -Wextra
75 +EXTRA_CFLAGS += -Wall
76 +EXTRA_CFLAGS += -Wextra
77 #EXTRA_CFLAGS += -Werror
78 #EXTRA_CFLAGS += -pedantic
79 #EXTRA_CFLAGS += -Wshadow -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes
80
81 +# The "$(call cc-option,-Wxxx)" macro only includes that option when it's
82 +# supported by the compiler used. It may only work on Debian systems.
83 +
84 +# Wdate-time was added in gcc-4.9
85 +EXTRA_CFLAGS += $(call cc-option,-Werror=date-time)
86 +# Wincompatible-pointer-types was added in gcc-5.0
87 +EXTRA_CFLAGS += $(call cc-option,-Werror=incompatible-pointer-types)
88 +
89 EXTRA_CFLAGS += -Wno-unused-variable
90 EXTRA_CFLAGS += -Wno-unused-value
91 EXTRA_CFLAGS += -Wno-unused-label
92 @@ -14,10 +22,16 @@ EXTRA_CFLAGS += -Wno-unused-parameter
93 EXTRA_CFLAGS += -Wno-unused-function
94 EXTRA_CFLAGS += -Wno-unused
95
96 -EXTRA_CFLAGS += -Wno-uninitialized
97 +# Relax some warnings from '-Wextra' so we won't get flooded with warnings
98 +EXTRA_CFLAGS += -Wno-sign-compare
99 +EXTRA_CFLAGS += -Wno-missing-field-initializers
100 +
101 +#EXTRA_CFLAGS += -Wno-uninitialized
102
103 EXTRA_CFLAGS += -I$(src)/include
104
105 +EXTRA_LDFLAGS += --strip-debug
106 +
107 CONFIG_AUTOCFG_CP = n
108
109 CONFIG_RTL8192C = y
110 --- a/drivers/net/wireless/realtek/rtl8192cu/core/rtw_ap.c
111 +++ b/drivers/net/wireless/realtek/rtl8192cu/core/rtw_ap.c
112 @@ -210,7 +210,7 @@ void rtw_add_bcn_ie(_adapter *padapter,
113 PNDIS_802_11_VARIABLE_IEs pIE;
114 u8 bmatch = _FALSE;
115 u8 *pie = pnetwork->IEs;
116 - u8 *p, *dst_ie, *premainder_ie=NULL, *pbackup_remainder_ie=NULL;
117 + u8 *p=NULL, *dst_ie=NULL, *premainder_ie=NULL, *pbackup_remainder_ie=NULL;
118 u32 i, offset, ielen, ie_offset, remainder_ielen = 0;
119
120 for (i = sizeof(NDIS_802_11_FIXED_IEs); i < pnetwork->IELength;)
121 @@ -250,6 +250,9 @@ void rtw_add_bcn_ie(_adapter *padapter,
122 dst_ie = (p+ielen);
123 }
124
125 + if(dst_ie == NULL)
126 + return;
127 +
128 if(remainder_ielen>0)
129 {
130 pbackup_remainder_ie = rtw_malloc(remainder_ielen);
131 @@ -357,7 +360,7 @@ void expire_timeout_chk(_adapter *padapt
132 {
133 _irqL irqL;
134 _list *phead, *plist;
135 - u8 updated;
136 + u8 updated = _FALSE;
137 struct sta_info *psta=NULL;
138 struct sta_priv *pstapriv = &padapter->stapriv;
139 u8 chk_alive_num = 0;
140 --- a/drivers/net/wireless/realtek/rtl8192cu/core/rtw_ieee80211.c
141 +++ b/drivers/net/wireless/realtek/rtl8192cu/core/rtw_ieee80211.c
142 @@ -1859,7 +1859,8 @@ int rtw_action_frame_parse(const u8 *fra
143 {
144 const u8 *frame_body = frame + sizeof(struct rtw_ieee80211_hdr_3addr);
145 u16 fc;
146 - u8 c, a;
147 + u8 c;
148 + u8 a = ACT_PUBLIC_MAX;
149
150 fc = le16_to_cpu(((struct rtw_ieee80211_hdr_3addr *)frame)->frame_ctl);
151
152 --- a/drivers/net/wireless/realtek/rtl8192cu/core/rtw_ioctl_set.c
153 +++ b/drivers/net/wireless/realtek/rtl8192cu/core/rtw_ioctl_set.c
154 @@ -43,7 +43,7 @@ extern void indicate_wx_scan_complete_ev
155 (addr[4] == 0xff) && (addr[5] == 0xff) ) ? _TRUE : _FALSE \
156 )
157
158 -u8 rtw_validate_bssid(u8 *bssid)
159 +u8 rtw_validate_bssid(const u8 *bssid)
160 {
161 u8 ret = _TRUE;
162
163 @@ -535,7 +535,8 @@ _func_exit_;
164
165 }
166
167 -u8 rtw_set_802_11_connect(_adapter* padapter, u8 *bssid, NDIS_802_11_SSID *ssid)
168 +u8 rtw_set_802_11_connect(_adapter *padapter, const u8 *bssid
169 + , NDIS_802_11_SSID *ssid)
170 {
171 _irqL irqL;
172 u8 status = _SUCCESS;
173 --- a/drivers/net/wireless/realtek/rtl8192cu/core/rtw_mlme_ext.c
174 +++ b/drivers/net/wireless/realtek/rtl8192cu/core/rtw_mlme_ext.c
175 @@ -2454,7 +2454,7 @@ unsigned int OnDeAuth(_adapter *padapter
176 psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe));
177 if(psta)
178 {
179 - u8 updated;
180 + u8 updated = _FALSE;
181
182 _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL);
183 if(rtw_is_list_empty(&psta->asoc_list)==_FALSE)
184 @@ -2548,7 +2548,7 @@ unsigned int OnDisassoc(_adapter *padapt
185 psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe));
186 if(psta)
187 {
188 - u8 updated;
189 + u8 updated = _FALSE;
190
191 _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL);
192 if(rtw_is_list_empty(&psta->asoc_list)==_FALSE)
193 @@ -5663,7 +5663,7 @@ unsigned int on_action_public_p2p(union
194
195 // Commented by Kurt 20120113
196 // Get peer_dev_addr here if peer doesn't issue prov_disc frame.
197 - if( _rtw_memcmp(pwdinfo->rx_prov_disc_info.peerDevAddr, empty_addr, ETH_ALEN) );
198 + if( _rtw_memcmp(pwdinfo->rx_prov_disc_info.peerDevAddr, empty_addr, ETH_ALEN) )
199 _rtw_memcpy(pwdinfo->rx_prov_disc_info.peerDevAddr, GetAddr2Ptr(pframe), ETH_ALEN);
200
201 result = process_p2p_group_negotation_req( pwdinfo, frame_body, len );
202 @@ -11932,7 +11932,7 @@ u8 setkey_hdl(_adapter *padapter, u8 *pb
203 u8 set_stakey_hdl(_adapter *padapter, u8 *pbuf)
204 {
205 u16 ctrl=0;
206 - u8 cam_id;//cam_entry
207 + u8 cam_id=0;//cam_entry
208 struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
209 struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
210 struct set_stakey_parm *pparm = (struct set_stakey_parm *)pbuf;
211 --- a/drivers/net/wireless/realtek/rtl8192cu/core/rtw_p2p.c
212 +++ b/drivers/net/wireless/realtek/rtl8192cu/core/rtw_p2p.c
213 @@ -4896,9 +4896,9 @@ void init_wifidirect_info( _adapter* pad
214 #endif
215 #ifdef CONFIG_CONCURRENT_MODE
216 _adapter *pbuddy_adapter = padapter->pbuddy_adapter;
217 - struct wifidirect_info *pbuddy_wdinfo;
218 - struct mlme_priv *pbuddy_mlmepriv;
219 - struct mlme_ext_priv *pbuddy_mlmeext;
220 + struct wifidirect_info *pbuddy_wdinfo = NULL;
221 + struct mlme_priv *pbuddy_mlmepriv = NULL;
222 + struct mlme_ext_priv *pbuddy_mlmeext = NULL;
223 #endif
224
225 pwdinfo = &padapter->wdinfo;
226 --- a/drivers/net/wireless/realtek/rtl8192cu/core/rtw_recv.c
227 +++ b/drivers/net/wireless/realtek/rtl8192cu/core/rtw_recv.c
228 @@ -3894,7 +3894,7 @@ int process_recv_indicatepkts(_adapter *
229
230 }
231
232 -int recv_func_prehandle(_adapter *padapter, union recv_frame *rframe)
233 +static int recv_func_prehandle(_adapter *padapter, union recv_frame *rframe)
234 {
235 int ret = _SUCCESS;
236 struct rx_pkt_attrib *pattrib = &rframe->u.hdr.attrib;
237 @@ -3935,7 +3935,7 @@ exit:
238 return ret;
239 }
240
241 -int recv_func_posthandle(_adapter *padapter, union recv_frame *prframe)
242 +static int recv_func_posthandle(_adapter *padapter, union recv_frame *prframe)
243 {
244 int ret = _SUCCESS;
245 union recv_frame *orig_prframe = prframe;
246 @@ -4107,8 +4107,7 @@ _recv_data_drop:
247 }
248
249
250 -int recv_func(_adapter *padapter, union recv_frame *rframe);
251 -int recv_func(_adapter *padapter, union recv_frame *rframe)
252 +static int recv_func(_adapter *padapter, union recv_frame *rframe)
253 {
254 int ret;
255 struct rx_pkt_attrib *prxattrib = &rframe->u.hdr.attrib;
256 --- a/drivers/net/wireless/realtek/rtl8192cu/core/rtw_sta_mgt.c
257 +++ b/drivers/net/wireless/realtek/rtl8192cu/core/rtw_sta_mgt.c
258 @@ -685,7 +685,7 @@ _func_exit_;
259 }
260
261 /* any station allocated can be searched by hash list */
262 -struct sta_info *rtw_get_stainfo(struct sta_priv *pstapriv, u8 *hwaddr)
263 +struct sta_info *rtw_get_stainfo(struct sta_priv *pstapriv, const u8 *hwaddr)
264 {
265
266 _irqL irqL;
267 @@ -696,7 +696,7 @@ struct sta_info *rtw_get_stainfo(struct
268
269 u32 index;
270
271 - u8 *addr;
272 + const u8 *addr;
273
274 u8 bc_addr[ETH_ALEN] = {0xff,0xff,0xff,0xff,0xff,0xff};
275
276 --- a/drivers/net/wireless/realtek/rtl8192cu/core/rtw_wlan_util.c
277 +++ b/drivers/net/wireless/realtek/rtl8192cu/core/rtw_wlan_util.c
278 @@ -853,7 +853,7 @@ void flush_all_cam_entry(_adapter *padap
279 {
280 struct sta_priv *pstapriv = &padapter->stapriv;
281 struct sta_info *psta;
282 - u8 cam_id;//cam_entry
283 + u8 cam_id=0;//cam_entry
284
285 psta = rtw_get_stainfo(pstapriv, pmlmeinfo->network.MacAddress);
286 if(psta) {
287 --- a/drivers/net/wireless/realtek/rtl8192cu/core/rtw_xmit.c
288 +++ b/drivers/net/wireless/realtek/rtl8192cu/core/rtw_xmit.c
289 @@ -2590,7 +2590,7 @@ exit:
290 s32 rtw_free_xmitframe(struct xmit_priv *pxmitpriv, struct xmit_frame *pxmitframe)
291 {
292 _irqL irqL;
293 - _queue *queue;
294 + _queue *queue = NULL;
295 _adapter *padapter = pxmitpriv->adapter;
296 _pkt *pndis_pkt = NULL;
297
298 --- a/drivers/net/wireless/realtek/rtl8192cu/hal/rtl8192c/rtl8192c_rf6052.c
299 +++ b/drivers/net/wireless/realtek/rtl8192cu/hal/rtl8192c/rtl8192c_rf6052.c
300 @@ -373,7 +373,7 @@ static void getTxPowerWriteValByRegulato
301 {
302 HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
303 struct dm_priv *pdmpriv = &pHalData->dmpriv;
304 - u8 i, chnlGroup, pwr_diff_limit[4];
305 + u8 i, chnlGroup = 0, pwr_diff_limit[4];
306 u32 writeVal, customer_limit, rf;
307
308 //
309 @@ -615,7 +615,7 @@ phy_RF6052_Config_ParaFile(
310 IN PADAPTER Adapter
311 )
312 {
313 - u32 u4RegValue;
314 + u32 u4RegValue=0;
315 u8 eRFPath;
316 BB_REGISTER_DEFINITION_T *pPhyReg;
317
318 --- a/drivers/net/wireless/realtek/rtl8192cu/include/autoconf.h
319 +++ b/drivers/net/wireless/realtek/rtl8192cu/include/autoconf.h
320 @@ -31,10 +31,11 @@
321
322 #define PLATFORM_LINUX 1
323
324 -//#define CONFIG_IOCTL_CFG80211 1
325 +#define CONFIG_IOCTL_CFG80211 1
326 #ifdef CONFIG_IOCTL_CFG80211
327 - //#define RTW_USE_CFG80211_STA_EVENT /* Indecate new sta asoc through cfg80211_new_sta */
328 - #define CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER
329 + /* Indicate new sta asoc through cfg80211_new_sta */
330 + #define RTW_USE_CFG80211_STA_EVENT
331 + /*#define CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER*/
332 //#define CONFIG_DEBUG_CFG80211 1
333 //#define CONFIG_DRV_ISSUE_PROV_REQ // IOT FOR S2
334 #define CONFIG_SET_SCAN_DENY_TIMER
335 @@ -324,7 +325,7 @@
336
337 //#define DBG_MEMORY_LEAK 1
338
339 -#define DBG_CONFIG_ERROR_DETECT
340 +/*#define DBG_CONFIG_ERROR_DETECT*/
341 //#define DBG_CONFIG_ERROR_RESET
342
343 //TX use 1 urb
344 --- a/drivers/net/wireless/realtek/rtl8192cu/include/ioctl_cfg80211.h
345 +++ b/drivers/net/wireless/realtek/rtl8192cu/include/ioctl_cfg80211.h
346 @@ -149,8 +149,15 @@ bool rtw_cfg80211_pwr_mgmt(_adapter *ada
347 #define rtw_cfg80211_rx_mgmt(adapter, freq, sig_dbm, buf, len, gfp) cfg80211_rx_mgmt((adapter)->pnetdev, freq, buf, len, gfp)
348 #elif (LINUX_VERSION_CODE < KERNEL_VERSION(3,6,0))
349 #define rtw_cfg80211_rx_mgmt(adapter, freq, sig_dbm, buf, len, gfp) cfg80211_rx_mgmt((adapter)->pnetdev, freq, sig_dbm, buf, len, gfp)
350 -#else
351 +#elif (LINUX_VERSION_CODE < KERNEL_VERSION(3,12,0))
352 #define rtw_cfg80211_rx_mgmt(adapter, freq, sig_dbm, buf, len, gfp) cfg80211_rx_mgmt((adapter)->rtw_wdev, freq, sig_dbm, buf, len, gfp)
353 +#elif (LINUX_VERSION_CODE < KERNEL_VERSION(3,18,0))
354 +/* 3.12 added a flags argument which is just set to zero*/
355 +#define rtw_cfg80211_rx_mgmt(adapter, freq, sig_dbm, buf, len, gfp) \
356 + cfg80211_rx_mgmt((adapter)->rtw_wdev, freq, sig_dbm, buf, len, 0, gfp)
357 +#else
358 +#define rtw_cfg80211_rx_mgmt(adapter, freq, sig_dbm, buf, len, gfp) \
359 + cfg80211_rx_mgmt((adapter)->rtw_wdev, freq, sig_dbm, buf, len, 0)
360 #endif
361
362 #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) && !defined(COMPAT_KERNEL_RELEASE)
363 --- a/drivers/net/wireless/realtek/rtl8192cu/include/osdep_service.h
364 +++ b/drivers/net/wireless/realtek/rtl8192cu/include/osdep_service.h
365 @@ -1395,8 +1395,8 @@ void _rtw_usb_buffer_free(struct usb_dev
366 extern void* rtw_malloc2d(int h, int w, int size);
367 extern void rtw_mfree2d(void *pbuf, int h, int w, int size);
368
369 -extern void _rtw_memcpy(void* dec, void* sour, u32 sz);
370 -extern int _rtw_memcmp(void *dst, void *src, u32 sz);
371 +extern void _rtw_memcpy(void *dec, const void *sour, u32 sz);
372 +extern int _rtw_memcmp(const void *dst, const void *src, u32 sz);
373 extern void _rtw_memset(void *pbuf, int c, u32 sz);
374
375 extern void _rtw_init_listhead(_list *list);
376 --- a/drivers/net/wireless/realtek/rtl8192cu/include/rtw_debug.h
377 +++ b/drivers/net/wireless/realtek/rtl8192cu/include/rtw_debug.h
378 @@ -313,15 +313,15 @@ extern u32 GlobalDebugLevel;
379 #if defined (_dbgdump)
380 #undef DBG_871X
381 // #define DBG_871X _dbgdump
382 - #define DBG_871X(...) LOG_LEVEL(_drv_emerg_ , __VA_ARGS__)
383 + #define DBG_871X(...) LOG_LEVEL(_drv_debug_ , __VA_ARGS__)
384
385 #undef MSG_8192C
386 // #define MSG_8192C _dbgdump
387 - #define MSG_8192C(...) LOG_LEVEL(_drv_emerg_ , __VA_ARGS__)
388 + #define MSG_8192C(...) LOG_LEVEL(_drv_info_ , __VA_ARGS__)
389
390 #undef DBG_8192C
391 // #define DBG_8192C _dbgdump
392 - #define DBG_8192C(...) LOG_LEVEL(_drv_emerg_ , __VA_ARGS__)
393 + #define DBG_8192C(...) LOG_LEVEL(_drv_debug_ , __VA_ARGS__)
394
395
396 #undef WRN_8192C
397 --- a/drivers/net/wireless/realtek/rtl8192cu/include/rtw_ioctl_set.h
398 +++ b/drivers/net/wireless/realtek/rtl8192cu/include/rtw_ioctl_set.h
399 @@ -63,10 +63,11 @@ u8 rtw_set_802_11_bssid_list_scan(_adapt
400 u8 rtw_set_802_11_infrastructure_mode(_adapter * padapter, NDIS_802_11_NETWORK_INFRASTRUCTURE networktype);
401 u8 rtw_set_802_11_remove_wep(_adapter * padapter, u32 keyindex);
402 u8 rtw_set_802_11_ssid(_adapter * padapter, NDIS_802_11_SSID * ssid);
403 -u8 rtw_set_802_11_connect(_adapter* padapter, u8 *bssid, NDIS_802_11_SSID *ssid);
404 +u8 rtw_set_802_11_connect(_adapter *padapter, const u8 *bssid
405 + , NDIS_802_11_SSID *ssid);
406 u8 rtw_set_802_11_remove_key(_adapter * padapter, NDIS_802_11_REMOVE_KEY * key);
407
408 -u8 rtw_validate_bssid(u8 *bssid);
409 +u8 rtw_validate_bssid(const u8 *bssid);
410 u8 rtw_validate_ssid(NDIS_802_11_SSID *ssid);
411
412 u16 rtw_get_cur_max_rate(_adapter *adapter);
413 --- a/drivers/net/wireless/realtek/rtl8192cu/include/sta_info.h
414 +++ b/drivers/net/wireless/realtek/rtl8192cu/include/sta_info.h
415 @@ -395,7 +395,7 @@ struct sta_priv {
416 };
417
418
419 -__inline static u32 wifi_mac_hash(u8 *mac)
420 +__inline static u32 wifi_mac_hash(const u8 *mac)
421 {
422 u32 x;
423
424 @@ -423,7 +423,7 @@ struct sta_info *rtw_get_stainfo_by_offs
425 extern struct sta_info *rtw_alloc_stainfo(struct sta_priv *pstapriv, u8 *hwaddr);
426 extern u32 rtw_free_stainfo(_adapter *padapter , struct sta_info *psta);
427 extern void rtw_free_all_stainfo(_adapter *padapter);
428 -extern struct sta_info *rtw_get_stainfo(struct sta_priv *pstapriv, u8 *hwaddr);
429 +extern struct sta_info *rtw_get_stainfo(struct sta_priv *pstapriv, const u8 *hwaddr);
430 extern u32 rtw_init_bcmc_stainfo(_adapter* padapter);
431 extern struct sta_info* rtw_get_bcmc_stainfo(_adapter* padapter);
432 extern u8 rtw_access_ctrl(_adapter *padapter, u8 *mac_addr);
433 --- a/drivers/net/wireless/realtek/rtl8192cu/include/wifi.h
434 +++ b/drivers/net/wireless/realtek/rtl8192cu/include/wifi.h
435 @@ -425,7 +425,7 @@ enum WIFI_REG_DOMAIN {
436 (addr[4] == 0xff) && (addr[5] == 0xff) ) ? _TRUE : _FALSE \
437 )
438
439 -__inline static int IS_MCAST(unsigned char *da)
440 +__inline static int IS_MCAST(const unsigned char *da)
441 {
442 if ((*da) & 0x01)
443 return _TRUE;
444 --- a/drivers/net/wireless/realtek/rtl8192cu/os_dep/linux/ioctl_cfg80211.c
445 +++ b/drivers/net/wireless/realtek/rtl8192cu/os_dep/linux/ioctl_cfg80211.c
446 @@ -57,7 +57,7 @@ static const u32 rtw_cipher_suites[] = {
447 }
448
449 #define CHAN2G(_channel, _freq, _flags) { \
450 - .band = IEEE80211_BAND_2GHZ, \
451 + .band = NL80211_BAND_2GHZ, \
452 .center_freq = (_freq), \
453 .hw_value = (_channel), \
454 .flags = (_flags), \
455 @@ -66,7 +66,7 @@ static const u32 rtw_cipher_suites[] = {
456 }
457
458 #define CHAN5G(_channel, _flags) { \
459 - .band = IEEE80211_BAND_5GHZ, \
460 + .band = NL80211_BAND_5GHZ, \
461 .center_freq = 5000 + (5 * (_channel)), \
462 .hw_value = (_channel), \
463 .flags = (_flags), \
464 @@ -166,18 +166,18 @@ void rtw_5g_rates_init(struct ieee80211_
465 }
466
467 struct ieee80211_supported_band *rtw_spt_band_alloc(
468 - enum ieee80211_band band
469 + enum nl80211_band band
470 )
471 {
472 struct ieee80211_supported_band *spt_band = NULL;
473 int n_channels, n_bitrates;
474
475 - if(band == IEEE80211_BAND_2GHZ)
476 + if(band == NL80211_BAND_2GHZ)
477 {
478 n_channels = RTW_2G_CHANNELS_NUM;
479 n_bitrates = RTW_G_RATES_NUM;
480 }
481 - else if(band == IEEE80211_BAND_5GHZ)
482 + else if(band == NL80211_BAND_5GHZ)
483 {
484 n_channels = RTW_5G_CHANNELS_NUM;
485 n_bitrates = RTW_A_RATES_NUM;
486 @@ -201,12 +201,12 @@ struct ieee80211_supported_band *rtw_spt
487 spt_band->n_channels = n_channels;
488 spt_band->n_bitrates = n_bitrates;
489
490 - if(band == IEEE80211_BAND_2GHZ)
491 + if(band == NL80211_BAND_2GHZ)
492 {
493 rtw_2g_channels_init(spt_band->channels);
494 rtw_2g_rates_init(spt_band->bitrates);
495 }
496 - else if(band == IEEE80211_BAND_5GHZ)
497 + else if(band == NL80211_BAND_5GHZ)
498 {
499 rtw_5g_channels_init(spt_band->channels);
500 rtw_5g_rates_init(spt_band->bitrates);
501 @@ -221,18 +221,18 @@ exit:
502
503 void rtw_spt_band_free(struct ieee80211_supported_band *spt_band)
504 {
505 - u32 size;
506 + u32 size = 0;
507
508 if(!spt_band)
509 return;
510
511 - if(spt_band->band == IEEE80211_BAND_2GHZ)
512 + if(spt_band->band == NL80211_BAND_2GHZ)
513 {
514 size = sizeof(struct ieee80211_supported_band)
515 + sizeof(struct ieee80211_channel)*RTW_2G_CHANNELS_NUM
516 + sizeof(struct ieee80211_rate)*RTW_G_RATES_NUM;
517 }
518 - else if(spt_band->band == IEEE80211_BAND_5GHZ)
519 + else if(spt_band->band == NL80211_BAND_5GHZ)
520 {
521 size = sizeof(struct ieee80211_supported_band)
522 + sizeof(struct ieee80211_channel)*RTW_5G_CHANNELS_NUM
523 @@ -301,12 +301,12 @@ static int rtw_ieee80211_channel_to_freq
524 /* see 802.11 17.3.8.3.2 and Annex J
525 * there are overlapping channel numbers in 5GHz and 2GHz bands */
526
527 - if (band == IEEE80211_BAND_5GHZ) {
528 + if (band == NL80211_BAND_5GHZ) {
529 if (chan >= 182 && chan <= 196)
530 return 4000 + chan * 5;
531 else
532 return 5000 + chan * 5;
533 - } else { /* IEEE80211_BAND_2GHZ */
534 + } else { /* NL80211_BAND_2GHZ */
535 if (chan == 14)
536 return 2484;
537 else if (chan < 14)
538 @@ -331,7 +331,7 @@ static int rtw_cfg80211_inform_bss(_adap
539 u8 *notify_ie;
540 size_t notify_ielen;
541 s32 notify_signal;
542 - u8 buf[MAX_BSSINFO_LEN], *pbuf;
543 + u8 *buf, *pbuf;
544 size_t len,bssinf_len=0;
545 struct rtw_ieee80211_hdr *pwlanhdr;
546 unsigned short *fctrl;
547 @@ -391,9 +391,9 @@ static int rtw_cfg80211_inform_bss(_adap
548 DBG_871X("%s, got sr, but ssid mismatch, to remove this bss\n", __func__);
549
550 if (pselect_network->Configuration.DSConfig <= RTW_CH_MAX_2G_CHANNEL)
551 - freq = rtw_ieee80211_channel_to_frequency(pselect_network->Configuration.DSConfig, IEEE80211_BAND_2GHZ);
552 + freq = rtw_ieee80211_channel_to_frequency(pselect_network->Configuration.DSConfig, NL80211_BAND_2GHZ);
553 else
554 - freq = rtw_ieee80211_channel_to_frequency(pselect_network->Configuration.DSConfig, IEEE80211_BAND_5GHZ);
555 + freq = rtw_ieee80211_channel_to_frequency(pselect_network->Configuration.DSConfig, NL80211_BAND_5GHZ);
556
557 notify_channel = ieee80211_get_channel(wiphy, freq);
558 pselect_bss = cfg80211_get_bss(wiphy, NULL/*notify_channel*/,
559 @@ -424,9 +424,9 @@ static int rtw_cfg80211_inform_bss(_adap
560
561 channel = pnetwork->network.Configuration.DSConfig;
562 if (channel <= RTW_CH_MAX_2G_CHANNEL)
563 - freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
564 + freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
565 else
566 - freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
567 + freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
568
569 notify_channel = ieee80211_get_channel(wiphy, freq);
570
571 @@ -459,6 +459,7 @@ static int rtw_cfg80211_inform_bss(_adap
572 DBG_8192C("notify_timestamp: %#018llx\n", notify_timestamp);
573 */
574
575 + buf = rtw_zmalloc(MAX_BSSINFO_LEN);
576 pbuf = buf;
577
578 pwlanhdr = (struct rtw_ieee80211_hdr *)pbuf;
579 @@ -486,6 +487,8 @@ static int rtw_cfg80211_inform_bss(_adap
580 _rtw_memcpy(pbuf, pnetwork->network.IEs, pnetwork->network.IELength);
581 len += pnetwork->network.IELength;
582
583 + rtw_mfree(buf, MAX_BSSINFO_LEN);
584 +
585 //#ifdef CONFIG_P2P
586 //if(rtw_get_p2p_ie(pnetwork->network.IEs+12, pnetwork->network.IELength-12, NULL, NULL))
587 //{
588 @@ -569,15 +572,19 @@ int rtw_cfg80211_check_bss(_adapter *pad
589 return _FALSE;
590
591 if (pnetwork->Configuration.DSConfig <= RTW_CH_MAX_2G_CHANNEL)
592 - freq = rtw_ieee80211_channel_to_frequency(pnetwork->Configuration.DSConfig, IEEE80211_BAND_2GHZ);
593 + freq = rtw_ieee80211_channel_to_frequency(pnetwork->Configuration.DSConfig, NL80211_BAND_2GHZ);
594 else
595 - freq = rtw_ieee80211_channel_to_frequency(pnetwork->Configuration.DSConfig, IEEE80211_BAND_5GHZ);
596 + freq = rtw_ieee80211_channel_to_frequency(pnetwork->Configuration.DSConfig, NL80211_BAND_5GHZ);
597
598 notify_channel = ieee80211_get_channel(padapter->rtw_wdev->wiphy, freq);
599 bss = cfg80211_get_bss(padapter->rtw_wdev->wiphy, notify_channel,
600 pnetwork->MacAddress, pnetwork->Ssid.Ssid,
601 pnetwork->Ssid.SsidLength,
602 +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0)
603 WLAN_CAPABILITY_ESS, WLAN_CAPABILITY_ESS);
604 +#else
605 + IEEE80211_BSS_TYPE_ESS, IEEE80211_PRIVACY_ANY);
606 +#endif
607
608 return (bss!=NULL);
609 }
610 @@ -626,9 +633,9 @@ void rtw_cfg80211_indicate_connect(_adap
611 u16 channel = cur_network->network.Configuration.DSConfig;
612
613 if (channel <= RTW_CH_MAX_2G_CHANNEL)
614 - freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
615 + freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
616 else
617 - freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
618 + freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
619
620 notify_channel = ieee80211_get_channel(wiphy, freq);
621 #endif
622 @@ -700,13 +707,16 @@ void rtw_cfg80211_indicate_disconnect(_a
623 if (!padapter->mlmepriv.not_indic_disco) {
624 DBG_8192C("pwdev->sme_state(b)=%d\n", pwdev->sme_state);
625
626 - if(pwdev->sme_state==CFG80211_SME_CONNECTING)
627 + if (check_fwstate(pmlmepriv, WIFI_UNDER_LINKING)) {
628 cfg80211_connect_result(padapter->pnetdev, NULL, NULL, 0, NULL, 0,
629 WLAN_STATUS_UNSPECIFIED_FAILURE, GFP_ATOMIC/*GFP_KERNEL*/);
630 - else if(pwdev->sme_state==CFG80211_SME_CONNECTED)
631 + } else {
632 +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0)
633 cfg80211_disconnected(padapter->pnetdev, 0, NULL, 0, GFP_ATOMIC);
634 - //else
635 - //DBG_8192C("pwdev->sme_state=%d\n", pwdev->sme_state);
636 +#else
637 + cfg80211_disconnected(padapter->pnetdev, 0, NULL, 0, false, GFP_ATOMIC);
638 +#endif
639 + }
640
641 DBG_8192C("pwdev->sme_state(a)=%d\n", pwdev->sme_state);
642 }
643 @@ -1549,7 +1559,7 @@ static int cfg80211_rtw_set_default_key(
644
645 static int cfg80211_rtw_get_station(struct wiphy *wiphy,
646 struct net_device *ndev,
647 - u8 *mac, struct station_info *sinfo)
648 + const u8 *mac, struct station_info *sinfo)
649 {
650 int ret = 0;
651 _adapter *padapter = wiphy_to_adapter(wiphy);
652 @@ -1589,16 +1599,32 @@ static int cfg80211_rtw_get_station(stru
653 goto exit;
654 }
655
656 +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,0,0))
657 + sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
658 +#else
659 sinfo->filled |= STATION_INFO_SIGNAL;
660 +#endif
661 sinfo->signal = translate_percentage_to_dbm(padapter->recvpriv.signal_strength);
662
663 +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,0,0))
664 + sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE);
665 +#else
666 sinfo->filled |= STATION_INFO_TX_BITRATE;
667 +#endif
668 sinfo->txrate.legacy = rtw_get_cur_max_rate(padapter);
669
670 +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,0,0))
671 + sinfo->filled |= BIT(NL80211_STA_INFO_RX_PACKETS);
672 +#else
673 sinfo->filled |= STATION_INFO_RX_PACKETS;
674 +#endif
675 sinfo->rx_packets = sta_rx_data_pkts(psta);
676
677 +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,0,0))
678 + sinfo->filled |= BIT(NL80211_STA_INFO_TX_PACKETS);
679 +#else
680 sinfo->filled |= STATION_INFO_TX_PACKETS;
681 +#endif
682 sinfo->tx_packets = psta->sta_stats.tx_pkts;
683
684 }
685 @@ -1789,7 +1815,15 @@ void rtw_cfg80211_indicate_scan_done(str
686 }
687 else
688 {
689 + #if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0))
690 cfg80211_scan_done(pwdev_priv->scan_request, aborted);
691 + #else
692 + struct cfg80211_scan_info info = {
693 + .aborted = aborted,
694 + };
695 +
696 + cfg80211_scan_done(pwdev_priv->scan_request, &info);
697 + #endif
698 }
699
700 pwdev_priv->scan_request = NULL;
701 @@ -2419,7 +2453,7 @@ static int rtw_cfg80211_set_key_mgt(stru
702 return 0;
703 }
704
705 -static int rtw_cfg80211_set_wpa_ie(_adapter *padapter, u8 *pie, size_t ielen)
706 +static int rtw_cfg80211_set_wpa_ie(_adapter *padapter, const u8 *pie, size_t ielen)
707 {
708 u8 *buf=NULL, *pos=NULL;
709 u32 left;
710 @@ -3089,7 +3123,9 @@ void rtw_cfg80211_indicate_sta_assoc(_ad
711 ie_offset = _REASOCREQ_IE_OFFSET_;
712
713 sinfo.filled = 0;
714 +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0))
715 sinfo.filled = STATION_INFO_ASSOC_REQ_IES;
716 +#endif
717 sinfo.assoc_req_ies = pmgmt_frame + WLAN_HDR_A3_LEN + ie_offset;
718 sinfo.assoc_req_ies_len = frame_len - WLAN_HDR_A3_LEN - ie_offset;
719 cfg80211_new_sta(ndev, GetAddr2Ptr(pmgmt_frame), &sinfo, GFP_ATOMIC);
720 @@ -3097,9 +3133,9 @@ void rtw_cfg80211_indicate_sta_assoc(_ad
721 #else /* defined(RTW_USE_CFG80211_STA_EVENT) */
722 channel = pmlmeext->cur_channel;
723 if (channel <= RTW_CH_MAX_2G_CHANNEL)
724 - freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
725 + freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
726 else
727 - freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
728 + freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
729
730 #ifdef COMPAT_KERNEL_RELEASE
731 rtw_cfg80211_rx_mgmt(padapter, freq, 0, pmgmt_frame, frame_len, GFP_ATOMIC);
732 @@ -3142,9 +3178,9 @@ void rtw_cfg80211_indicate_sta_disassoc(
733 #else /* defined(RTW_USE_CFG80211_STA_EVENT) */
734 channel = pmlmeext->cur_channel;
735 if (channel <= RTW_CH_MAX_2G_CHANNEL)
736 - freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
737 + freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
738 else
739 - freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
740 + freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
741
742 pmgmt_frame = mgmt_buf;
743 pwlanhdr = (struct rtw_ieee80211_hdr *)pmgmt_frame;
744 @@ -3387,7 +3423,11 @@ static const struct net_device_ops rtw_c
745 };
746 #endif
747
748 +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0))
749 +static int rtw_cfg80211_add_monitor_if(_adapter *padapter, char *name, unsigned char name_assign_type, struct net_device **ndev)
750 +#else
751 static int rtw_cfg80211_add_monitor_if(_adapter *padapter, char *name, struct net_device **ndev)
752 +#endif
753 {
754 int ret = 0;
755 struct net_device* mon_ndev = NULL;
756 @@ -3418,6 +3458,9 @@ static int rtw_cfg80211_add_monitor_if(_
757 mon_ndev->type = ARPHRD_IEEE80211_RADIOTAP;
758 strncpy(mon_ndev->name, name, IFNAMSIZ);
759 mon_ndev->name[IFNAMSIZ - 1] = 0;
760 +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0))
761 + mon_ndev->name_assign_type = name_assign_type;
762 +#endif
763 mon_ndev->destructor = rtw_ndev_destructor;
764
765 #if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,29))
766 @@ -3482,6 +3525,9 @@ static int
767 #else
768 char *name,
769 #endif
770 +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0))
771 + unsigned char name_assign_type,
772 +#endif
773 enum nl80211_iftype type, u32 *flags, struct vif_params *params)
774 {
775 int ret = 0;
776 @@ -3499,7 +3545,11 @@ static int
777 ret = -ENODEV;
778 break;
779 case NL80211_IFTYPE_MONITOR:
780 +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0))
781 + ret = rtw_cfg80211_add_monitor_if(padapter, (char *)name, name_assign_type, &ndev);
782 +#else
783 ret = rtw_cfg80211_add_monitor_if(padapter, (char *)name, &ndev);
784 +#endif
785 break;
786
787 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE)
788 @@ -3760,7 +3810,7 @@ static int cfg80211_rtw_stop_ap(struct w
789 #endif //(LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0))
790
791 static int cfg80211_rtw_add_station(struct wiphy *wiphy, struct net_device *ndev,
792 - u8 *mac, struct station_parameters *params)
793 + const u8 *mac, struct station_parameters *params)
794 {
795 DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev));
796
797 @@ -3768,12 +3818,19 @@ static int cfg80211_rtw_add_station(stru
798 }
799
800 static int cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev,
801 - u8 *mac)
802 +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,15,0))
803 + u8 *mac) {
804 +#elif (LINUX_VERSION_CODE < KERNEL_VERSION(4,1,0))
805 + const u8 *mac) {
806 +#else
807 + struct station_del_parameters *params)
808 {
809 + const u8 *mac = params->mac;
810 +#endif
811 int ret=0;
812 _irqL irqL;
813 _list *phead, *plist;
814 - u8 updated;
815 + u8 updated = _FALSE;
816 struct sta_info *psta = NULL;
817 _adapter *padapter = (_adapter *)rtw_netdev_priv(ndev);
818 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
819 @@ -3859,7 +3916,7 @@ static int cfg80211_rtw_del_station(stru
820 }
821
822 static int cfg80211_rtw_change_station(struct wiphy *wiphy, struct net_device *ndev,
823 - u8 *mac, struct station_parameters *params)
824 + const u8 *mac, struct station_parameters *params)
825 {
826 DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev));
827
828 @@ -3950,9 +4007,9 @@ void rtw_cfg80211_rx_action_p2p(_adapter
829
830 indicate:
831 if (channel <= RTW_CH_MAX_2G_CHANNEL)
832 - freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
833 + freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
834 else
835 - freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
836 + freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
837
838 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE)
839 rtw_cfg80211_rx_mgmt(padapter, freq, 0, pmgmt_frame, frame_len, GFP_ATOMIC);
840 @@ -3990,9 +4047,9 @@ void rtw_cfg80211_rx_p2p_action_public(_
841
842 indicate:
843 if (channel <= RTW_CH_MAX_2G_CHANNEL)
844 - freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
845 + freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
846 else
847 - freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
848 + freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
849
850 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE)
851 rtw_cfg80211_rx_mgmt(padapter, freq, 0, pmgmt_frame, frame_len, GFP_ATOMIC);
852 @@ -4020,9 +4077,9 @@ void rtw_cfg80211_rx_action(_adapter *ad
853 DBG_871X("RTW_Rx:category(%u), action(%u)\n", category, action);
854
855 if (channel <= RTW_CH_MAX_2G_CHANNEL)
856 - freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
857 + freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
858 else
859 - freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
860 + freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
861
862 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE)
863 rtw_cfg80211_rx_mgmt(adapter, freq, 0, frame, frame_len, GFP_ATOMIC);
864 @@ -4643,6 +4700,9 @@ static int cfg80211_rtw_mgmt_tx(struct w
865 #else
866 struct net_device *ndev,
867 #endif
868 +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
869 + struct cfg80211_mgmt_tx_params *params,
870 +#else
871 struct ieee80211_channel *chan,
872 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)) || defined(COMPAT_KERNEL_RELEASE)
873 bool offchan,
874 @@ -4663,8 +4723,15 @@ static int cfg80211_rtw_mgmt_tx(struct w
875 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
876 bool dont_wait_for_ack,
877 #endif
878 +#endif
879 u64 *cookie)
880 {
881 +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
882 + struct ieee80211_channel *chan = params->chan;
883 + const u8 *buf = params->buf;
884 + size_t len = params->len;
885 +#endif
886 +
887 _adapter *padapter = (_adapter *)wiphy_to_adapter(wiphy);
888 struct rtw_wdev_priv *pwdev_priv = wdev_to_priv(padapter->rtw_wdev);
889 int ret = 0;
890 @@ -5199,7 +5266,7 @@ static struct cfg80211_ops rtw_cfg80211_
891 #endif
892 };
893
894 -static void rtw_cfg80211_init_ht_capab(struct ieee80211_sta_ht_cap *ht_cap, enum ieee80211_band band, u8 rf_type)
895 +static void rtw_cfg80211_init_ht_capab(struct ieee80211_sta_ht_cap *ht_cap, enum nl80211_band band, u8 rf_type)
896 {
897
898 #define MAX_BIT_RATE_40MHZ_MCS15 300 /* Mbps */
899 @@ -5223,7 +5290,7 @@ static void rtw_cfg80211_init_ht_capab(s
900 ht_cap->mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
901
902 /*
903 - *hw->wiphy->bands[IEEE80211_BAND_2GHZ]
904 + *hw->wiphy->bands[NL80211_BAND_2GHZ]
905 *base on ant_num
906 *rx_mask: RX mask
907 *if rx_ant =1 rx_mask[0]=0xff;==>MCS0-MCS7
908 @@ -5268,16 +5335,16 @@ void rtw_cfg80211_init_wiphy(_adapter *p
909
910 /* if (padapter->registrypriv.wireless_mode & WIRELESS_11G) */
911 {
912 - bands = wiphy->bands[IEEE80211_BAND_2GHZ];
913 + bands = wiphy->bands[NL80211_BAND_2GHZ];
914 if(bands)
915 - rtw_cfg80211_init_ht_capab(&bands->ht_cap, IEEE80211_BAND_2GHZ, rf_type);
916 + rtw_cfg80211_init_ht_capab(&bands->ht_cap, NL80211_BAND_2GHZ, rf_type);
917 }
918
919 /* if (padapter->registrypriv.wireless_mode & WIRELESS_11A) */
920 {
921 - bands = wiphy->bands[IEEE80211_BAND_5GHZ];
922 + bands = wiphy->bands[NL80211_BAND_5GHZ];
923 if(bands)
924 - rtw_cfg80211_init_ht_capab(&bands->ht_cap, IEEE80211_BAND_5GHZ, rf_type);
925 + rtw_cfg80211_init_ht_capab(&bands->ht_cap, NL80211_BAND_5GHZ, rf_type);
926 }
927 }
928
929 @@ -5348,9 +5415,9 @@ static void rtw_cfg80211_preinit_wiphy(_
930 wiphy->n_cipher_suites = ARRAY_SIZE(rtw_cipher_suites);
931
932 /* if (padapter->registrypriv.wireless_mode & WIRELESS_11G) */
933 - wiphy->bands[IEEE80211_BAND_2GHZ] = rtw_spt_band_alloc(IEEE80211_BAND_2GHZ);
934 + wiphy->bands[NL80211_BAND_2GHZ] = rtw_spt_band_alloc(NL80211_BAND_2GHZ);
935 /* if (padapter->registrypriv.wireless_mode & WIRELESS_11A) */
936 - wiphy->bands[IEEE80211_BAND_5GHZ] = rtw_spt_band_alloc(IEEE80211_BAND_5GHZ);
937 + wiphy->bands[NL80211_BAND_5GHZ] = rtw_spt_band_alloc(NL80211_BAND_5GHZ);
938
939 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38) && LINUX_VERSION_CODE < KERNEL_VERSION(3,0,0))
940 wiphy->flags |= WIPHY_FLAG_SUPPORTS_SEPARATE_DEFAULT_KEYS;
941 @@ -5402,8 +5469,11 @@ int rtw_wdev_alloc(_adapter *padapter, s
942 }
943 wdev->wiphy = wiphy;
944 wdev->netdev = pnetdev;
945 - //wdev->iftype = NL80211_IFTYPE_STATION;
946 - wdev->iftype = NL80211_IFTYPE_MONITOR; // for rtw_setopmode_cmd() in cfg80211_rtw_change_iface()
947 +
948 + wdev->iftype = NL80211_IFTYPE_STATION; // will be init in rtw_hal_init()
949 + // Must sync with _rtw_init_mlme_priv()
950 + // pmlmepriv->fw_state = WIFI_STATION_STATE
951 + //wdev->iftype = NL80211_IFTYPE_MONITOR; // for rtw_setopmode_cmd() in cfg80211_rtw_change_iface()
952 padapter->rtw_wdev = wdev;
953 pnetdev->ieee80211_ptr = wdev;
954
955 @@ -5456,8 +5526,8 @@ void rtw_wdev_free(struct wireless_dev *
956
957 pwdev_priv = wdev_to_priv(wdev);
958
959 - rtw_spt_band_free(wdev->wiphy->bands[IEEE80211_BAND_2GHZ]);
960 - rtw_spt_band_free(wdev->wiphy->bands[IEEE80211_BAND_5GHZ]);
961 + rtw_spt_band_free(wdev->wiphy->bands[NL80211_BAND_2GHZ]);
962 + rtw_spt_band_free(wdev->wiphy->bands[NL80211_BAND_5GHZ]);
963
964 wiphy_free(wdev->wiphy);
965
966 --- a/drivers/net/wireless/realtek/rtl8192cu/os_dep/linux/ioctl_linux.c
967 +++ b/drivers/net/wireless/realtek/rtl8192cu/os_dep/linux/ioctl_linux.c
968 @@ -6584,7 +6584,6 @@ static int rtw_dbg_port(struct net_devic
969 case 0x01: //dbg mode
970 padapter->recvpriv.is_signal_dbg = 1;
971 extra_arg = extra_arg>100?100:extra_arg;
972 - extra_arg = extra_arg<0?0:extra_arg;
973 padapter->recvpriv.signal_strength_dbg=extra_arg;
974 break;
975 }
976 @@ -6956,7 +6955,7 @@ static int rtw_dbg_port(struct net_devic
977 {
978 struct registry_priv *pregpriv = &padapter->registrypriv;
979 // 0: disable, 0x1:enable (but wifi_spec should be 0), 0x2: force enable (don't care wifi_spec)
980 - if( pregpriv && extra_arg >= 0 && extra_arg < 3 )
981 + if( pregpriv && extra_arg < 3 )
982 {
983 pregpriv->ampdu_enable= extra_arg;
984 DBG_871X("set ampdu_enable=%d\n",pregpriv->ampdu_enable);
985 --- a/drivers/net/wireless/realtek/rtl8192cu/os_dep/linux/os_intfs.c
986 +++ b/drivers/net/wireless/realtek/rtl8192cu/os_dep/linux/os_intfs.c
987 @@ -945,8 +945,14 @@ unsigned int rtw_classify8021d(struct sk
988 return dscp >> 5;
989 }
990
991 -static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb,
992 - void *accel_priv, select_queue_fallback_t fallback)
993 +static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb
994 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0)
995 + , void *accel_priv
996 +#endif
997 +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(3,14,0))
998 + , select_queue_fallback_t fallback
999 +#endif
1000 +)
1001 {
1002 _adapter *padapter = rtw_netdev_priv(dev);
1003 struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
1004 @@ -1057,6 +1063,10 @@ int rtw_init_netdev_name(struct net_devi
1005 return 0;
1006 }
1007
1008 +static const struct device_type wlan_type = {
1009 + .name = "wlan",
1010 +};
1011 +
1012 struct net_device *rtw_init_netdev(_adapter *old_padapter)
1013 {
1014 _adapter *padapter;
1015 @@ -1072,6 +1082,7 @@ struct net_device *rtw_init_netdev(_adap
1016 if (!pnetdev)
1017 return NULL;
1018
1019 + pnetdev->dev.type = &wlan_type;
1020 padapter = rtw_netdev_priv(pnetdev);
1021 padapter->pnetdev = pnetdev;
1022
1023 @@ -1681,9 +1692,6 @@ int _netdev_vir_if_open(struct net_devic
1024
1025 padapter->bup = _TRUE;
1026 padapter->hw_init_completed = _TRUE;
1027 -
1028 - rtw_start_mbssid_cam(padapter);//start mbssid_cam after bup = _TRUE & hw_init_completed = _TRUE
1029 -
1030 }
1031
1032 padapter->net_closed = _FALSE;
1033 --- a/drivers/net/wireless/realtek/rtl8192cu/os_dep/linux/recv_linux.c
1034 +++ b/drivers/net/wireless/realtek/rtl8192cu/os_dep/linux/recv_linux.c
1035 @@ -136,7 +136,7 @@ int rtw_os_recvbuf_resource_free(_adapte
1036 void rtw_handle_tkip_mic_err(_adapter *padapter,u8 bgroup)
1037 {
1038 #ifdef CONFIG_IOCTL_CFG80211
1039 - enum nl80211_key_type key_type;
1040 + enum nl80211_key_type key_type = 0;
1041 #endif
1042 union iwreq_data wrqu;
1043 struct iw_michaelmicfailure ev;
1044 --- a/drivers/net/wireless/realtek/rtl8192cu/os_dep/linux/rtw_android.c
1045 +++ b/drivers/net/wireless/realtek/rtl8192cu/os_dep/linux/rtw_android.c
1046 @@ -96,13 +96,7 @@ typedef struct cmd_tlv {
1047 #endif /* PNO_SUPPORT */
1048
1049 typedef struct android_wifi_priv_cmd {
1050 -
1051 -#ifdef CONFIG_COMPAT
1052 - compat_uptr_t buf;
1053 -#else
1054 char *buf;
1055 -#endif
1056 -
1057 int used_len;
1058 int total_len;
1059 } android_wifi_priv_cmd;
1060 --- a/drivers/net/wireless/realtek/rtl8192cu/os_dep/linux/usb_intf.c
1061 +++ b/drivers/net/wireless/realtek/rtl8192cu/os_dep/linux/usb_intf.c
1062 @@ -102,6 +102,7 @@ static void rtw_dev_remove(struct usb_in
1063 {USB_DEVICE(0x103C, 0x1629)},/* HP - Lite-On ,8188CUS Slim Combo */ \
1064 {USB_DEVICE(0x2001, 0x3308)},/* D-Link - Alpha */ \
1065 {USB_DEVICE(0x050D, 0x1102)},/* Belkin - Edimax */ \
1066 + {USB_DEVICE(0x050D, 0x11F2)},/* ISY - Edimax */ \
1067 {USB_DEVICE(0x2019, 0xAB2A)},/* Planex - Abocom */ \
1068 {USB_DEVICE(0x20F4, 0x648B)},/* TRENDnet - Cameo */ \
1069 {USB_DEVICE(0x4855, 0x0090)},/* - Feixun */ \
1070 @@ -110,6 +111,8 @@ static void rtw_dev_remove(struct usb_in
1071 {USB_DEVICE(0x0BDA, 0x5088)},/* Thinkware - CC&C */ \
1072 {USB_DEVICE(0x4856, 0x0091)},/* NetweeN - Feixun */ \
1073 {USB_DEVICE(0x0846, 0x9041)}, /* Netgear - Cameo */ \
1074 + {USB_DEVICE(0x0846, 0x9042)}, /* On Networks - N150MA */ \
1075 + {USB_DEVICE(0x0846, 0x9043)}, /* Netgear N150 -WNA1000M */ \
1076 {USB_DEVICE(0x2019, 0x4902)},/* Planex - Etop */ \
1077 {USB_DEVICE(0x2019, 0xAB2E)},/* SW-WF02-AD15 -Abocom */ \
1078 {USB_DEVICE(0x2001, 0x330B)}, /* D-LINK - T&W */ \
1079 @@ -117,6 +120,7 @@ static void rtw_dev_remove(struct usb_in
1080 {USB_DEVICE(0x0B05, 0x17BA)}, /* ASUS - Edimax */ \
1081 {USB_DEVICE(0x0BDA, 0x1E1E)}, /* Intel - - */ \
1082 {USB_DEVICE(0x04BB, 0x094c)}, /* I-O DATA - Edimax */ \
1083 + {USB_DEVICE(0X0BDA, 0x8176)}, /* TP-Link TL-WN723N */ \
1084 /****** 8188CTV ********/ \
1085 {USB_DEVICE(0xCDAB, 0x8011)}, /* - - compare */ \
1086 {USB_DEVICE(0x0BDA, 0x0A8A)}, /* Sony - Foxconn */ \
1087 @@ -991,7 +995,7 @@ static int rtw_resume(struct usb_interfa
1088 int rtw_resume_process(_adapter *padapter)
1089 {
1090 struct net_device *pnetdev;
1091 - struct pwrctrl_priv *pwrpriv;
1092 + struct pwrctrl_priv *pwrpriv=NULL;
1093 int ret = -1;
1094 u32 start_time = rtw_get_current_time();
1095 _func_enter_;
1096 @@ -1054,7 +1058,8 @@ exit:
1097 rtw_unlock_suspend();
1098 #endif //CONFIG_RESUME_IN_WORKQUEUE
1099
1100 - pwrpriv->bInSuspend = _FALSE;
1101 + if (pwrpriv)
1102 + pwrpriv->bInSuspend = _FALSE;
1103 DBG_871X("<=== %s return %d.............. in %dms\n", __FUNCTION__
1104 , ret, rtw_get_passing_time_ms(start_time));
1105
1106 --- a/drivers/net/wireless/realtek/rtl8192cu/os_dep/osdep_service.c
1107 +++ b/drivers/net/wireless/realtek/rtl8192cu/os_dep/osdep_service.c
1108 @@ -790,7 +790,7 @@ void rtw_mfree2d(void *pbuf, int h, int
1109 rtw_mfree((u8 *)pbuf, h*sizeof(void*) + w*h*size);
1110 }
1111
1112 -void _rtw_memcpy(void* dst, void* src, u32 sz)
1113 +void _rtw_memcpy(void* dst, const void* src, u32 sz)
1114 {
1115
1116 #if defined (PLATFORM_LINUX)|| defined (PLATFORM_FREEBSD)
1117 @@ -807,7 +807,7 @@ void _rtw_memcpy(void* dst, void* src, u
1118
1119 }
1120
1121 -int _rtw_memcmp(void *dst, void *src, u32 sz)
1122 +int _rtw_memcmp(const void *dst, const void *src, u32 sz)
1123 {
1124
1125 #if defined (PLATFORM_LINUX)|| defined (PLATFORM_FREEBSD)