From: hwg <hwg@rock-chips.com>
Date: Fri, 13 Feb 2015 07:02:37 +0000 (+0800)
Subject: update rtl8189es wifi driver to rtl8189ES_linux_v4.3.10.1_13373.20150129
X-Git-Tag: firefly_0821_release~4263^2~45
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=759b5f79fbbbbe3ef935a716cfef2e87fd4f4967;p=firefly-linux-kernel-4.4.55.git

update rtl8189es wifi driver to rtl8189ES_linux_v4.3.10.1_13373.20150129
---

diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/Kconfig b/drivers/net/wireless/rockchip_wlan/rtl8189es/Kconfig
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/Makefile b/drivers/net/wireless/rockchip_wlan/rtl8189es/Makefile
index 80818b060b27..3d07385a66f1 100755
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/Makefile
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/Makefile
@@ -68,7 +68,7 @@ CONFIG_PNO_SUPPORT = n
 CONFIG_PNO_SET_DEBUG = n
 CONFIG_AP_WOWLAN = n
 ######### Notify SDIO Host Keep Power During Syspend ##########
-CONFIG_RTW_SDIO_PM_KEEP_POWER = n
+CONFIG_RTW_SDIO_PM_KEEP_POWER = y
 ###################### Platform Related #######################
 CONFIG_PLATFORM_I386_PC = n
 CONFIG_PLATFORM_ANDROID_X86 = n
@@ -92,9 +92,9 @@ CONFIG_PLATFORM_TEGRA4_DALMORE = n
 CONFIG_PLATFORM_ARM_TCC8900 = n
 CONFIG_PLATFORM_ARM_TCC8920 = n
 CONFIG_PLATFORM_ARM_TCC8920_JB42 = n
-CONFIG_PLATFORM_ARM_RK2818 = y
+CONFIG_PLATFORM_ARM_RK2818 = n
 CONFIG_PLATFORM_ARM_RK3066 = n
-CONFIG_PLATFORM_ARM_RK3188 = n
+CONFIG_PLATFORM_ARM_RK3188 = y
 CONFIG_PLATFORM_ARM_URBETTER = n
 CONFIG_PLATFORM_ARM_TI_PANDA = n
 CONFIG_PLATFORM_MIPS_JZ4760 = n
@@ -107,12 +107,14 @@ CONFIG_PLATFORM_ARM_SUN6I = n
 CONFIG_PLATFORM_ARM_SUN7I = n
 CONFIG_PLATFORM_ARM_SUN8I = n
 CONFIG_PLATFORM_ACTIONS_ATM702X = n
+CONFIG_PLATFORM_ACTIONS_ATM705X = n
 CONFIG_PLATFORM_ACTIONS_ATV5201 = n
 CONFIG_PLATFORM_ARM_RTD299X = n
 CONFIG_PLATFORM_ARM_SPREADTRUM_6820 = n
 CONFIG_PLATFORM_ARM_SPREADTRUM_8810 = n
 CONFIG_PLATFORM_ARM_WMT = n
 CONFIG_PLATFORM_TI_DM365 = n
+CONFIG_PLATFORM_AML = n
 CONFIG_PLATFORM_MOZART = n
 CONFIG_PLATFORM_RTK119X = n
 ###############################################################
@@ -837,6 +839,27 @@ KSRC := $(KERNEL_BUILD_PATH)
 MODULE_NAME :=wlan
 endif
 
+ifeq ($(CONFIG_PLATFORM_ACTIONS_ATM705X), y)
+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
+# default setting for Android 4.1, 4.2, 4.3, 4.4
+EXTRA_CFLAGS += -DCONFIG_PLATFORM_ACTIONS_ATM705X
+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
+EXTRA_CFLAGS += -DCONFIG_P2P_IPS
+
+# Enable this for Android 5.0
+EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
+
+ifeq ($(CONFIG_SDIO_HCI), y)
+EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
+_PLATFORM_FILES += platform/platform_arm_act_sdio.o
+endif
+
+ARCH := arm
+CROSS_COMPILE := /opt/arm-2011.09/bin/arm-none-linux-gnueabi-
+KSRC := /home/android_sdk/Action-semi/705a_android_L/android/kernel
+endif
+
 ifeq ($(CONFIG_PLATFORM_TI_AM3517), y)
 EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_SHUTTLE
 CROSS_COMPILE := arm-eabi-
@@ -1023,6 +1046,17 @@ KERNELOUTPUT := ${PRODUCTDIR}/tmp
 KVER  := 2.6.18
 endif
 
+ifeq ($(CONFIG_PLATFORM_AML), y)
+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -fno-pic
+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DCONFIG_CONCURRENT_MODE
+EXTRA_CFLAGS += -DCONFIG_P2P_IPS -DRTW_USE_CFG80211_STA_EVENT
+EXTRA_CFLAGS += -DCONFIG_LPS_SLOW_TRANSITION
+ARCH := arm
+KVER := 
+CROSS_COMPILE := arm-none-linux-gnueabi-
+KSRC := ../../../../
+endif
+
 ifeq ($(CONFIG_PLATFORM_MOZART), y)
 EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MOZART
 ARCH := arm
@@ -1107,6 +1141,9 @@ EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
 EXTRA_CFLAGS += -DRTW_SUPPORT_PLATFORM_SHUTDOWN
 # default setting for Special function
 EXTRA_CFLAGS += -DCONFIG_P2P_IPS
+ifeq ($(CONFIG_SDIO_HCI), y)
+EXTRA_CFLAGS += -DCONFIG_RESUME_IN_WORKQUEUE
+endif
 ARCH := arm
 CROSS_COMPILE := /home/android_sdk/Rockchip/Rk3188/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
 KSRC := /home/android_sdk/Rockchip/Rk3188/kernel
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/clean b/drivers/net/wireless/rockchip_wlan/rtl8189es/clean
new file mode 100755
index 000000000000..87664218b889
--- /dev/null
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/clean
@@ -0,0 +1,5 @@
+#!/bin/bash
+rmmod 8192cu
+rmmod 8192ce
+rmmod 8192du
+rmmod 8192de
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/efuse/rtw_efuse.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/efuse/rtw_efuse.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_ap.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_ap.c
old mode 100644
new mode 100755
index ca634367f4fe..92f35c104f8d
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_ap.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_ap.c
@@ -3185,6 +3185,7 @@ void start_ap_mode(_adapter *padapter)
 	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
 	struct sta_priv *pstapriv = &padapter->stapriv;
 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+	struct mlme_ext_info	*pmlmeinfo = &(pmlmeext->mlmext_info);
 	struct wlan_acl_pool *pacl_list = &pstapriv->acl_list;
 	
 	pmlmepriv->update_bcn = _FALSE;
@@ -3202,6 +3203,11 @@ void start_ap_mode(_adapter *padapter)
 #ifdef CONFIG_80211N_HT
 	pmlmepriv->num_sta_no_ht = 0;
 #endif //CONFIG_80211N_HT
+
+	pmlmeinfo->HT_info_enable =0;
+	pmlmeinfo->HT_caps_enable=0;
+	pmlmeinfo->HT_enable=0;
+
 	pmlmepriv->num_sta_ht_20mhz = 0;
 
 	pmlmepriv->olbc = _FALSE;
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_beamforming.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_beamforming.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_br_ext.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_br_ext.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_bt_mp.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_bt_mp.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_btcoex.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_btcoex.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_cmd.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_cmd.c
old mode 100644
new mode 100755
index bf9d31c6c37c..b94f93f0a76a
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_cmd.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_cmd.c
@@ -863,6 +863,10 @@ u8 rtw_sitesurvey_cmd(_adapter  *padapter, NDIS_802_11_SSID *ssid, int ssid_num,
 	struct rtw_ieee80211_channel *ch, int ch_num)
 {
 	u8 res = _FAIL;
+#ifdef CONFIG_STA_MODE_SCAN_UNDER_AP_MODE
+	u8 wireless_mode = 0;
+	u32 mlmext_info_state = 0;
+#endif
 	struct cmd_obj		*ph2c;
 	struct sitesurvey_parm	*psurveyPara;
 	struct cmd_priv 	*pcmdpriv = &padapter->cmdpriv;
@@ -939,12 +943,19 @@ _func_enter_;
 	if(res == _SUCCESS) {
 
 		pmlmepriv->scan_start_time = rtw_get_current_time();
-
 #ifdef CONFIG_STA_MODE_SCAN_UNDER_AP_MODE
-		if((padapter->pbuddy_adapter->mlmeextpriv.mlmext_info.state&0x03) == WIFI_FW_AP_STATE)
-			_set_timer(&pmlmepriv->scan_to_timer, SURVEY_TO * 
-						( padapter->mlmeextpriv.max_chan_nums + ( padapter->mlmeextpriv.max_chan_nums / RTW_SCAN_NUM_OF_CH ) * RTW_STAY_AP_CH_MILLISECOND ) + 1000 );
-		else
+		mlmext_info_state =
+			padapter->pbuddy_adapter->mlmeextpriv.mlmext_info.state;
+		wireless_mode = padapter->registrypriv.wireless_mode;
+
+		if((mlmext_info_state & 0x03) == WIFI_FW_AP_STATE) {
+			if(IsSupported5G(wireless_mode) && IsSupported24G(wireless_mode))
+				_set_timer(&pmlmepriv->scan_to_timer,
+						CONC_SCANNING_TIMEOUT_DUAL_BAND);
+			else
+				_set_timer(&pmlmepriv->scan_to_timer,
+						CONC_SCANNING_TIMEOUT_SINGLE_BAND);
+		} else
 #endif //CONFIG_STA_MODE_SCAN_UNDER_AP_MODE
 			_set_timer(&pmlmepriv->scan_to_timer, SCANNING_TIMEOUT);
 
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_debug.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_debug.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_eeprom.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_eeprom.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_ieee80211.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_ieee80211.c
old mode 100644
new mode 100755
index 224714b06c24..3d88c55e44f5
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_ieee80211.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_ieee80211.c
@@ -933,41 +933,45 @@ u8 *rtw_get_wps_ie_from_scan_queue(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps
 u8 *rtw_get_wps_ie(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen)
 {
 	uint cnt;
-	u8 *wpsie_ptr=NULL;
-	u8 eid, wps_oui[4]={0x0,0x50,0xf2,0x04};
+	u8 *wpsie_ptr = NULL;
+	u8 eid, wps_oui[4] = {0x00, 0x50, 0xf2, 0x04};
 
-	if(wps_ielen)
+	if (wps_ielen)
 		*wps_ielen = 0;
 
-	if(!in_ie || in_len<=0)
+	if (!in_ie) {
+		rtw_warn_on(1);
+		return wpsie_ptr;
+	}
+
+	if (in_len <= 0)
 		return wpsie_ptr;
 
 	cnt = 0;
 
-	while(cnt<in_len)
-	{
+	while (cnt + 1 + 4 < in_len) {
 		eid = in_ie[cnt];
 
-		if((eid==_WPA_IE_ID_)&&(_rtw_memcmp(&in_ie[cnt+2], wps_oui, 4)==_TRUE))
-		{
-			wpsie_ptr = &in_ie[cnt];
+		if (cnt + 1 + 4 >= MAX_IE_SZ) {
+			rtw_warn_on(1);
+			return NULL;
+		}
 
-			if(wps_ie)
-				_rtw_memcpy(wps_ie, &in_ie[cnt], in_ie[cnt+1]+2);
-			
-			if(wps_ielen)
-				*wps_ielen = in_ie[cnt+1]+2;
-			
-			cnt+=in_ie[cnt+1]+2;
+		if (eid == WLAN_EID_VENDOR_SPECIFIC && _rtw_memcmp(&in_ie[cnt + 2], wps_oui, 4) == _TRUE) {
+			wpsie_ptr = in_ie + cnt;
+
+			if (wps_ie)
+				_rtw_memcpy(wps_ie, &in_ie[cnt], in_ie[cnt + 1] + 2);
+
+			if (wps_ielen)
+				*wps_ielen = in_ie[cnt + 1] + 2;
 
 			break;
+		} else {
+			cnt += in_ie[cnt + 1] + 2;
 		}
-		else
-		{
-			cnt+=in_ie[cnt+1]+2; //goto next	
-		}		
 
-	}	
+	}
 
 	return wpsie_ptr;
 }
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_io.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_io.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_ioctl_query.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_ioctl_query.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_ioctl_rtl.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_ioctl_rtl.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_ioctl_set.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_ioctl_set.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_iol.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_iol.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_mem.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_mem.c
old mode 100644
new mode 100755
index a4de3e61431f..1c0c80b3a27f
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_mem.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_mem.c
@@ -47,6 +47,7 @@ EXPORT_SYMBOL(rtw_free_skb_premem);
 static int __init rtw_mem_init(void)
 {
 	int i;
+	u32 max_recvbuf_sz = 0;
 	SIZE_PTR tmpaddr=0;
 	SIZE_PTR alignment=0;
 	struct sk_buff *pskb=NULL;
@@ -62,9 +63,14 @@ static int __init rtw_mem_init(void)
 
 	skb_queue_head_init(&rtk_skb_mem_q);
 
+	if (max_recvbuf_sz == 0)
+		max_recvbuf_sz = MAX_RECVBUF_SZ;
+
+	DBG_871X("%s: max_recvbuf_sz: %d\n", __func__, max_recvbuf_sz);
+
 	for(i=0; i<NR_PREALLOC_RECV_SKB; i++)
 	{
-		pskb = __dev_alloc_skb(MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL);
+		pskb = __dev_alloc_skb(max_recvbuf_sz + RECVBUFF_ALIGN_SZ, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL);
 		if(pskb)
 		{		
 			tmpaddr = (SIZE_PTR)pskb->data;
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_mlme.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_mlme.c
old mode 100644
new mode 100755
index eb40179e81cc..56be22cb7018
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_mlme.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_mlme.c
@@ -1203,46 +1203,35 @@ _func_exit_;
 void rtw_surveydone_event_callback(_adapter	*adapter, u8 *pbuf)
 {
 	_irqL  irqL;
-	u8 timer_cancelled = _FALSE;
+	u8 timer_cancelled;
 	struct	mlme_priv	*pmlmepriv = &(adapter->mlmepriv);
 	
 #ifdef CONFIG_MLME_EXT	
-
 	mlmeext_surveydone_event_callback(adapter);
-
 #endif
 
-_func_enter_;			
+_func_enter_;
 
 	_enter_critical_bh(&pmlmepriv->lock, &irqL);
-	if(pmlmepriv->wps_probe_req_ie)
-	{
+	if(pmlmepriv->wps_probe_req_ie) {
 		u32 free_len = pmlmepriv->wps_probe_req_ie_len;
 		pmlmepriv->wps_probe_req_ie_len = 0;
 		rtw_mfree(pmlmepriv->wps_probe_req_ie, free_len);
-		pmlmepriv->wps_probe_req_ie = NULL;			
+		pmlmepriv->wps_probe_req_ie = NULL;
 	}
-	
+
 	RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("rtw_surveydone_event_callback: fw_state:%x\n\n", get_fwstate(pmlmepriv)));
-	
-	if (check_fwstate(pmlmepriv,_FW_UNDER_SURVEY))
-	{
-		//u8 timer_cancelled;
 
-		timer_cancelled = _TRUE;
-		//_cancel_timer(&pmlmepriv->scan_to_timer, &timer_cancelled);
-		
-		_clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY);
+	if (check_fwstate(pmlmepriv,_FW_UNDER_SURVEY) == _FALSE) {
+		DBG_871X(FUNC_ADPT_FMT" fw_state:0x%x\n", FUNC_ADPT_ARG(adapter), get_fwstate(pmlmepriv));
+		//rtw_warn_on(1);
 	}
-	else {
-	
-		RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("nic status =%x, survey done event comes too late!\n", get_fwstate(pmlmepriv)));	
-	}
-	_exit_critical_bh(&pmlmepriv->lock, &irqL);
 
-	if(timer_cancelled)
-		_cancel_timer(&pmlmepriv->scan_to_timer, &timer_cancelled);
+	_clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY);
+
+	_exit_critical_bh(&pmlmepriv->lock, &irqL);
 
+	_cancel_timer(&pmlmepriv->scan_to_timer, &timer_cancelled);
 
 	_enter_critical_bh(&pmlmepriv->lock, &irqL);
 
@@ -1260,7 +1249,7 @@ _func_enter_;
 				
 		   		if(rtw_select_and_join_from_scanned_queue(pmlmepriv)==_SUCCESS)
 		   		{
-		       			_set_timer(&pmlmepriv->assoc_timer, MAX_JOIN_TIMEOUT );
+					_set_timer(&pmlmepriv->assoc_timer, MAX_JOIN_TIMEOUT );
                   		}
 		   		else	
 		  		{
@@ -4378,6 +4367,7 @@ void rtw_append_exented_cap(_adapter *padapter, u8 *out_ie, uint *pout_len)
 #endif //CONFIG_80211AC_VHT
 	u8	cap_content[8] = {0};
 	u8	*pframe;
+	u8	null_content[8] = {0};
 
 
 	if (phtpriv->bss_coexist) {
@@ -4390,7 +4380,16 @@ void rtw_append_exented_cap(_adapter *padapter, u8 *out_ie, uint *pout_len)
 	}
 #endif //CONFIG_80211AC_VHT
 
-	pframe = rtw_set_ie(out_ie+*pout_len, EID_EXTCapability, 8, cap_content , pout_len);
+	/*
+	 * From 802.11 specification,if a STA does not support any of
+	 * capabilities defined in the Extended Capabilities element,
+	 * then the STA is not required to transmit the
+	 * Extended Capabilities element.
+	 */
+	if (_FALSE == _rtw_memcmp(cap_content, null_content, 8)) {
+		pframe = rtw_set_ie(out_ie + *pout_len,
+				EID_EXTCapability, 8, cap_content , pout_len);
+	}
 }
 #endif
 
@@ -4534,3 +4533,18 @@ u8 rtw_get_buddy_bBusyTraffic(_adapter *padapter)
 }
 
 #endif //CONFIG_CONCURRENT_MODE
+
+static const char *miracast_mode_str[] = {
+	"DISABLED",
+	"SOURCE",
+	"SINK",
+	"INVALID",
+};
+
+const char *get_miracast_mode_str(int mode)
+{
+	if (mode < MIRACAST_DISABLED || mode >= MIRACAST_INVALID)
+		mode = MIRACAST_INVALID;
+
+	return miracast_mode_str[mode];
+}
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_mlme_ext.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_mlme_ext.c
index 16b6801ecc96..6034ef326088 100755
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_mlme_ext.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_mlme_ext.c
@@ -2598,8 +2598,6 @@ unsigned int OnDeAuth(_adapter *padapter, union recv_frame *precv_frame)
 
 	reason = le16_to_cpu(*(unsigned short *)(pframe + WLAN_HDR_A3_LEN));
 
-	DBG_871X("%s Reason code(%d)\n", __FUNCTION__,reason);
-
 	rtw_lock_rx_suspend_timeout(8000);
 
 #ifdef CONFIG_AP_MODE
@@ -2613,8 +2611,8 @@ unsigned int OnDeAuth(_adapter *padapter, union recv_frame *precv_frame)
 		//rtw_free_stainfo(padapter, psta);
 		//_exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL);		
 
-		DBG_871X_LEVEL(_drv_always_, "ap recv deauth reason code(%d) sta:%pM\n",
-			       	reason, GetAddr2Ptr(pframe));
+		DBG_871X_LEVEL(_drv_always_, FUNC_ADPT_FMT" reason=%u, ta=%pM\n"
+			, FUNC_ADPT_ARG(padapter), reason, GetAddr2Ptr(pframe));
 
 		psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe));	
 		if(psta)
@@ -2659,12 +2657,12 @@ unsigned int OnDeAuth(_adapter *padapter, union recv_frame *precv_frame)
 			}
 		}
 
-		DBG_871X_LEVEL(_drv_always_, "sta recv deauth reason code(%d) sta:%pM, ignore = %d\n",
-			       	reason, GetAddr3Ptr(pframe), ignore_received_deauth);
-		
+		DBG_871X_LEVEL(_drv_always_, FUNC_ADPT_FMT" reason=%u, ta=%pM, ignore=%d\n"
+			, FUNC_ADPT_ARG(padapter), reason, GetAddr2Ptr(pframe), ignore_received_deauth);
+
 		if ( 0 == ignore_received_deauth )
 		{
-			receive_disconnect(padapter, GetAddr3Ptr(pframe) ,reason);
+			receive_disconnect(padapter, GetAddr2Ptr(pframe), reason);
 		}
 	}	
 	pmlmepriv->LinkDetectInfo.bBusyTraffic = _FALSE;
@@ -2697,8 +2695,6 @@ unsigned int OnDisassoc(_adapter *padapter, union recv_frame *precv_frame)
 
 	reason = le16_to_cpu(*(unsigned short *)(pframe + WLAN_HDR_A3_LEN));
 
-        DBG_871X("%s Reason code(%d)\n", __FUNCTION__,reason);
-
 	rtw_lock_rx_suspend_timeout(8000);
 	
 #ifdef CONFIG_AP_MODE
@@ -2712,8 +2708,8 @@ unsigned int OnDisassoc(_adapter *padapter, union recv_frame *precv_frame)
 		//rtw_free_stainfo(padapter, psta);
 		//_exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL);		
 
-		DBG_871X_LEVEL(_drv_always_, "ap recv disassoc reason code(%d) sta:%pM\n",
-				reason, GetAddr2Ptr(pframe));
+		DBG_871X_LEVEL(_drv_always_, FUNC_ADPT_FMT" reason=%u, ta=%pM\n"
+			, FUNC_ADPT_ARG(padapter), reason, GetAddr2Ptr(pframe));
 
 		psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe));	
 		if(psta)
@@ -2738,10 +2734,10 @@ unsigned int OnDisassoc(_adapter *padapter, union recv_frame *precv_frame)
 	else
 #endif
 	{
-		DBG_871X_LEVEL(_drv_always_, "sta recv disassoc reason code(%d) sta:%pM\n",
-				reason, GetAddr3Ptr(pframe));
-		
-		receive_disconnect(padapter, GetAddr3Ptr(pframe), reason);
+		DBG_871X_LEVEL(_drv_always_, FUNC_ADPT_FMT" reason=%u, ta=%pM\n"
+			, FUNC_ADPT_ARG(padapter), reason, GetAddr2Ptr(pframe));
+
+		receive_disconnect(padapter, GetAddr2Ptr(pframe), reason);
 	}	
 	pmlmepriv->LinkDetectInfo.bBusyTraffic = _FALSE;
 	return _SUCCESS;
@@ -9588,18 +9584,25 @@ void site_survey(_adapter *padapter)
 		//val8 |= 0x0f;
 		//rtw_hal_set_hwreg(padapter, HW_VAR_TXPAUSE, (u8 *)(&val8));
 #if defined(CONFIG_STA_MODE_SCAN_UNDER_AP_MODE) || defined(CONFIG_ATMEL_RC_PATCH)
-		if((padapter->pbuddy_adapter->mlmeextpriv.mlmext_info.state&0x03) == WIFI_FW_AP_STATE)
-		{
-			if( pmlmeinfo->scan_cnt == RTW_SCAN_NUM_OF_CH )
-			{
-				pmlmeinfo->scan_cnt = 0;
-				survey_channel = pbuddy_mlmeext->cur_channel;
-				stay_buddy_ch = 1;
-			}
-			else 
-			{
-				if( pmlmeinfo->scan_cnt == 0 )
+		if ((padapter->pbuddy_adapter->mlmeextpriv.mlmext_info.state&0x03) == WIFI_FW_AP_STATE) {
+			if (pmlmeinfo->scan_cnt == RTW_SCAN_NUM_OF_CH) {
+				if (pmlmeinfo->backop_cnt == 0)
+					stay_buddy_ch = 1;
+				else if (pmlmeinfo->backop_cnt == RTW_STAY_AP_CH_MILLISECOND)
 					stay_buddy_ch = 2;
+
+				if (stay_buddy_ch == 2) {
+					pmlmeinfo->scan_cnt = 1;
+					pmlmeinfo->backop_cnt = 0;
+				} else if (stay_buddy_ch == 1) {
+					pmlmeinfo->backop_cnt++;
+					survey_channel = pbuddy_mlmeext->cur_channel;
+				} else {
+					pmlmeinfo->backop_cnt++;
+					set_survey_timer(pmlmeext, pmlmeext->chan_scan_time);
+					return;	
+				}
+			} else {
 				pmlmeinfo->scan_cnt++;
 			}
 		}
@@ -9684,26 +9687,14 @@ void site_survey(_adapter *padapter)
 		// assume home channel is 6, channel switch sequence will be 
 		//	1,2-6-3,4-6-5,6-6-7,8-6-9,10-6-11,12-6-13,14
 		//if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)==_TRUE)
-
-		if( stay_buddy_ch == 1 ){
-			channel_scan_time_ms = pmlmeext->chan_scan_time * RTW_STAY_AP_CH_MILLISECOND;			
-		}
-		else {
-			if( check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE)
-				channel_scan_time_ms = 20;
-			else
-				channel_scan_time_ms = 40
-		}
-#elif defined(CONFIG_STA_MODE_SCAN_UNDER_AP_MODE)
-		if( stay_buddy_ch == 1 )
-			channel_scan_time_ms = pmlmeext->chan_scan_time * RTW_STAY_AP_CH_MILLISECOND ;
-		else		
-			channel_scan_time_ms = pmlmeext->chan_scan_time;
+		if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE)
+			set_survey_timer(pmlmeext, 20);
+		else
+			set_survey_timer(pmlmeext, 40);
 #else
-			channel_scan_time_ms = pmlmeext->chan_scan_time;
+		set_survey_timer(pmlmeext, pmlmeext->chan_scan_time);
 #endif
 
-		set_survey_timer(pmlmeext, channel_scan_time_ms);
 #if defined(CONFIG_SIGNAL_DISPLAY_DBM) && defined(CONFIG_BACKGROUND_NOISE_MONITOR)
 		{
 			struct noise_info info;
@@ -9789,6 +9780,7 @@ void site_survey(_adapter *padapter)
 
 #if defined(CONFIG_STA_MODE_SCAN_UNDER_AP_MODE) || defined(CONFIG_ATMEL_RC_PATCH) 
 			pmlmeinfo->scan_cnt = 0;
+			pmlmeinfo->backop_cnt = 0;
 #endif
 
 #ifdef CONFIG_ANTENNA_DIVERSITY
@@ -10390,7 +10382,6 @@ unsigned int receive_disconnect(_adapter *padapter, unsigned char *MacAddr, unsi
 	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
 	struct mlme_ext_info	*pmlmeinfo = &(pmlmeext->mlmext_info);
 
-	//check A3
 	if (!(_rtw_memcmp(MacAddr, get_my_bssid(&pmlmeinfo->network), ETH_ALEN)))
 		return _SUCCESS;
 
@@ -11892,7 +11883,8 @@ void survey_timer_hdl(_adapter *padapter)
 		if(pmlmeext->sitesurvey_res.state ==  SCAN_PROCESS)
 		{
 #if defined(CONFIG_STA_MODE_SCAN_UNDER_AP_MODE) || defined(CONFIG_ATMEL_RC_PATCH) 
-			if( padapter->mlmeextpriv.mlmext_info.scan_cnt != RTW_SCAN_NUM_OF_CH )
+			if (padapter->mlmeextpriv.mlmext_info.scan_cnt != RTW_SCAN_NUM_OF_CH
+				|| padapter->mlmeextpriv.mlmext_info.backop_cnt == RTW_STAY_AP_CH_MILLISECOND)
 #endif
 				pmlmeext->sitesurvey_res.channel_idx++;
 		}
@@ -12610,6 +12602,106 @@ u8 disconnect_hdl(_adapter *padapter, unsigned char *pbuf)
 	return 	H2C_SUCCESS;
 }
 
+u8 rtw_scan_sparse(_adapter *adapter, struct rtw_ieee80211_channel *ch, u8 ch_num)
+{
+/* interval larger than this is treated as backgroud scan */
+#ifndef RTW_SCAN_SPARSE_BG_INTERVAL_MS
+#define RTW_SCAN_SPARSE_BG_INTERVAL_MS 12000
+#endif
+
+#ifndef RTW_SCAN_SPARSE_CH_NUM_MIRACAST
+#define RTW_SCAN_SPARSE_CH_NUM_MIRACAST 1
+#endif
+#ifndef RTW_SCAN_SPARSE_CH_NUM_BG
+#define RTW_SCAN_SPARSE_CH_NUM_BG 4
+#endif
+
+#define SCAN_SPARSE_CH_NUM_INVALID 255
+
+	static u8 token = 255;
+	u32 interval;
+	bool busy_traffic = _FALSE;
+	bool miracast_enabled = _FALSE;
+	bool bg_scan = _FALSE;
+	u8 max_allow_ch = SCAN_SPARSE_CH_NUM_INVALID;
+	u8 scan_division_num;
+	u8 ret_num = ch_num;
+	struct registry_priv *regsty = dvobj_to_regsty(adapter_to_dvobj(adapter));
+	struct mlme_ext_priv *mlmeext = &adapter->mlmeextpriv;
+
+	if (regsty->wifi_spec)
+		goto exit;
+
+	/* assume ch_num > 6 is normal scan */
+	if (ch_num <= 6)
+		goto exit;
+
+	if (mlmeext->last_scan_time == 0)
+		mlmeext->last_scan_time = rtw_get_current_time();
+
+	interval = rtw_get_passing_time_ms(mlmeext->last_scan_time);
+
+	if (adapter->mlmepriv.LinkDetectInfo.bBusyTraffic == _TRUE
+		#ifdef CONFIG_CONCURRENT_MODE
+		|| (adapter->pbuddy_adapter && adapter->pbuddy_adapter->mlmepriv.LinkDetectInfo.bBusyTraffic == _TRUE)
+		#endif
+	)
+			busy_traffic = _TRUE;
+
+	#ifdef CONFIG_WFD
+	if (is_miracast_enabled(adapter->wfd_info.stack_wfd_mode)
+		#ifdef CONFIG_CONCURRENT_MODE
+		|| (adapter->pbuddy_adapter && is_miracast_enabled(adapter->pbuddy_adapter->wfd_info.stack_wfd_mode))
+		#endif
+	)
+		miracast_enabled = _TRUE;
+	#endif
+
+	if (interval > RTW_SCAN_SPARSE_BG_INTERVAL_MS)
+		bg_scan = _TRUE;
+
+	/* max_allow_ch by conditions*/
+
+	#if RTW_SCAN_SPARSE_MIRACAST
+	if (miracast_enabled == _TRUE && busy_traffic == _TRUE)
+		max_allow_ch = rtw_min(max_allow_ch, RTW_SCAN_SPARSE_CH_NUM_MIRACAST);
+	#endif
+
+	#if RTW_SCAN_SPARSE_BG
+	if (bg_scan == _TRUE)
+		max_allow_ch = rtw_min(max_allow_ch, RTW_SCAN_SPARSE_CH_NUM_BG);
+	#endif
+
+
+	if (max_allow_ch != SCAN_SPARSE_CH_NUM_INVALID) {
+		int i;
+		int k = 0;
+
+		scan_division_num = (ch_num / max_allow_ch) + ((ch_num % max_allow_ch)?1:0);
+		token = (token + 1) % scan_division_num;
+		
+		if (0)
+			DBG_871X("scan_division_num:%u, token:%u\n", scan_division_num, token);
+		
+		for (i = 0; i < ch_num; i++) {
+			if (ch[i].hw_value && (i % scan_division_num) == token
+			) {
+				if (i != k)
+					_rtw_memcpy(&ch[k], &ch[i], sizeof(struct rtw_ieee80211_channel));
+				k++;
+			}
+		}
+
+		_rtw_memset(&ch[k], 0, sizeof(struct rtw_ieee80211_channel));
+
+		ret_num = k;
+		mlmeext->last_scan_time = rtw_get_current_time();
+	}
+
+exit:
+	return ret_num;
+}
+
 int rtw_scan_ch_decision(_adapter *padapter, struct rtw_ieee80211_channel *out,
 	u32 out_num, struct rtw_ieee80211_channel *in, u32 in_num)
 {
@@ -12675,49 +12767,8 @@ int rtw_scan_ch_decision(_adapter *padapter, struct rtw_ieee80211_channel *out,
 		}
 	}
 
-#ifdef CONFIG_SCAN_SPARSE //partial scan, ASUS RK3188 use the feature
-	/* assume j>6 is normal scan */
-	if ((j > 6) && (padapter->registrypriv.wifi_spec != 1))
-	{
-		static u8 token = 0;
-		u32 interval;
-
-		if (pmlmeext->last_scan_time == 0)
-			pmlmeext->last_scan_time = rtw_get_current_time();
-
-		interval = rtw_get_passing_time_ms(pmlmeext->last_scan_time);
-		if ((interval > ALLOW_SCAN_INTERVAL)
-#if 0 // Miracast can't do AP scan
-			|| (padapter->mlmepriv.LinkDetectInfo.bBusyTraffic == _TRUE)
-#ifdef CONFIG_CONCURRENT_MODE
-			|| (padapter->pbuddy_adapter
-				&& (padapter->pbuddy_adapter->mlmepriv.LinkDetectInfo.bBusyTraffic == _TRUE))
-#endif // CONFIG_CONCURRENT_MODE
-#endif
-			)
-		{
-			// modify scan plan
-			int k = 0;
-			_rtw_memset(in, 0, sizeof(struct rtw_ieee80211_channel)*in_num);
-			_rtw_memcpy(in, out, sizeof(struct rtw_ieee80211_channel)*j);
-			_rtw_memset(out, 0, sizeof(struct rtw_ieee80211_channel)*j);
-
-			for (i=0;i<j;i++) {
-				if (in[i].hw_value && (i%SCAN_DIVISION_NUM) == token) {
-					_rtw_memcpy(&out[k], &in[i], sizeof(struct rtw_ieee80211_channel));
-					k++;
-				}
-				if(k>=out_num)
-					break;
-			}
-
-			j = k;
-			token  = (token+1)%SCAN_DIVISION_NUM;
-		}
-
-		pmlmeext->last_scan_time = rtw_get_current_time();
-	}
-#endif //CONFIG_SCAN_SPARSE
+	/* scan_sparse */
+	j = rtw_scan_sparse(padapter, out, j);
 
 	return j;
 }
@@ -14159,7 +14210,23 @@ int rtw_chk_start_clnt_join(_adapter *padapter, u8 *ch, u8 *bw, u8 *offset)
 	struct mlme_ext_priv *pbuddy_mlmeext;
 	struct mlme_ext_info	*pbuddy_pmlmeinfo;
 	struct mlme_priv *pbuddy_mlmepriv;
+#endif
+
+	if (!ch || !bw || !offset) {
+		connect_allow = _FALSE;
+		rtw_warn_on(1);
+		goto exit;
+	}
+
+	if (cur_ch == 0) {
+		connect_allow = _FALSE;
+		DBG_871X_LEVEL(_drv_err_, FUNC_ADPT_FMT" cur_ch:%u\n"
+			, FUNC_ADPT_ARG(padapter), cur_ch);
+		rtw_warn_on(1);
+		goto exit;
+	}
 
+#ifdef CONFIG_CONCURRENT_MODE
 	if (!rtw_buddy_adapter_up(padapter)) {
 		goto exit;
 	}
@@ -14292,15 +14359,8 @@ int rtw_chk_start_clnt_join(_adapter *padapter, u8 *ch, u8 *bw, u8 *offset)
 			rtw_free_assoc_resources(pbuddy_adapter, 1);
 		}
 	}	
-
-exit:
 #endif /* CONFIG_CONCURRENT_MODE */
-
-	if (!ch || !bw || !offset) {
-		rtw_warn_on(1);
-		connect_allow = _FALSE;
-	}
-
+exit:
 	if (connect_allow == _TRUE) {
 		DBG_871X("start_join_set_ch_bw: ch=%d, bwmode=%d, ch_offset=%d\n", cur_ch, cur_bw, cur_ch_offset);
 		*ch = cur_ch;
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_mp.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_mp.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_mp_ioctl.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_mp_ioctl.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_odm.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_odm.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_p2p.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_p2p.c
old mode 100644
new mode 100755
index 5f2f99c0a2cd..465a36ba3d0b
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_p2p.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_p2p.c
@@ -3483,7 +3483,8 @@ _func_enter_;
 
 			set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode);
 		
-			issue_nulldata(pbuddy_adapter, NULL, 0, 3, 500);
+			if (check_buddy_fwstate(padapter, WIFI_FW_STATION_STATE))
+				issue_nulldata(pbuddy_adapter, NULL, 0, 3, 500);
 		}
 		else if( pwdinfo->driver_interface == DRIVER_WEXT )
 		{
@@ -3626,11 +3627,9 @@ _func_enter_;
 	pcfg80211_wdinfo->is_ro_ch = _FALSE;
 	pcfg80211_wdinfo->last_ro_ch_time = rtw_get_current_time();
 
-	if (pcfg80211_wdinfo->not_indic_ro_ch_exp == _TRUE)
-		return;
-
-	DBG_871X("cfg80211_remain_on_channel_expired, ch=%d, bw=%d, offset=%d\n", 
-		rtw_get_oper_ch(padapter), rtw_get_oper_bw(padapter), rtw_get_oper_choffset(padapter));
+	DBG_871X("cfg80211_remain_on_channel_expired cookie:0x%llx, ch=%d, bw=%d, offset=%d\n"
+		, pcfg80211_wdinfo->remain_on_ch_cookie
+		, rtw_get_oper_ch(padapter), rtw_get_oper_bw(padapter), rtw_get_oper_choffset(padapter));
 
 	rtw_cfg80211_remain_on_channel_expired(padapter, 
 		pcfg80211_wdinfo->remain_on_ch_cookie, 
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_pwrctrl.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_pwrctrl.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_recv.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_recv.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_rf.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_rf.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_security.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_security.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_sreset.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_sreset.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_sta_mgt.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_sta_mgt.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_tdls.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_tdls.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_vht.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_vht.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_wapi.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_wapi.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_wapi_sms4.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_wapi_sms4.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_wlan_util.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/core/rtw_wlan_util.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/HalPwrSeqCmd.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/HalPwrSeqCmd.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8188c2Ant.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8188c2Ant.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8188c2Ant.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8188c2Ant.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8192d2Ant.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8192d2Ant.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8192d2Ant.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8192d2Ant.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8192e1Ant.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8192e1Ant.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8192e1Ant.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8192e1Ant.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8192e2Ant.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8192e2Ant.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8192e2Ant.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8192e2Ant.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8723a1Ant.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8723a1Ant.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8723a1Ant.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8723a1Ant.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8723a2Ant.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8723a2Ant.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8723a2Ant.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8723a2Ant.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8723b1Ant.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8723b1Ant.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8723b1Ant.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8723b1Ant.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8723b2Ant.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8723b2Ant.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8723b2Ant.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8723b2Ant.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8812a1Ant.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8812a1Ant.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8812a1Ant.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8812a1Ant.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8812a2Ant.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8812a2Ant.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8812a2Ant.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8812a2Ant.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8821a1Ant.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8821a1Ant.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8821a1Ant.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8821a1Ant.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8821a2Ant.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8821a2Ant.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8821a2Ant.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8821a2Ant.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8821aCsr2Ant.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8821aCsr2Ant.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8821aCsr2Ant.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtc8821aCsr2Ant.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtcOutSrc.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/HalBtcOutSrc.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/Mp_Precomp.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC-BTCoexist/Mp_Precomp.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/HalPhyRf.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/HalPhyRf.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/HalPhyRf.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/HalPhyRf.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/Mp_Precomp.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/Mp_Precomp.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/PhyDM_Adaptivity.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/PhyDM_Adaptivity.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/PhyDM_Adaptivity.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/PhyDM_Adaptivity.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_ACS.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_ACS.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_ACS.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_ACS.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_AntDect.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_AntDect.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_AntDect.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_AntDect.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_AntDiv.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_AntDiv.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_AntDiv.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_AntDiv.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_CfoTracking.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_CfoTracking.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_CfoTracking.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_CfoTracking.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_DIG.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_DIG.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_DIG.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_DIG.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_DynamicBBPowerSaving.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_DynamicBBPowerSaving.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_DynamicBBPowerSaving.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_DynamicBBPowerSaving.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_DynamicTxPower.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_DynamicTxPower.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_DynamicTxPower.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_DynamicTxPower.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_EdcaTurboCheck.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_EdcaTurboCheck.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_EdcaTurboCheck.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_EdcaTurboCheck.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_HWConfig.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_HWConfig.c
old mode 100644
new mode 100755
index e8dc0a60b356..75b0349c073b
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_HWConfig.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_HWConfig.c
@@ -1457,7 +1457,7 @@ odm_Process_RSSIForDM(
 	u4Byte			Weighting=0;
 	PSTA_INFO_T           	pEntry;
 
-	if(pPktinfo->StationID == 0xFF)
+	if (pPktinfo->StationID >= ODM_ASSOCIATE_ENTRY_NUM)
 		return;
 
 #if (RTL8723B_SUPPORT == 1)||(RTL8821A_SUPPORT == 1)
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_HWConfig.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_HWConfig.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_NoiseMonitor.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_NoiseMonitor.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_NoiseMonitor.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_NoiseMonitor.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_PathDiv.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_PathDiv.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_PathDiv.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_PathDiv.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_PowerTracking.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_PowerTracking.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_PowerTracking.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_PowerTracking.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_RXHP.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_RXHP.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_RXHP.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_RXHP.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_RaInfo.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_RaInfo.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_RaInfo.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_RaInfo.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_RegDefine11AC.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_RegDefine11AC.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_RegDefine11N.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_RegDefine11N.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_debug.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_debug.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_debug.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_debug.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_interface.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_interface.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_interface.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_interface.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_precomp.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_precomp.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_reg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_reg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_types.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/phydm_types.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/Hal8188ERateAdaptive.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/Hal8188ERateAdaptive.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/Hal8188ERateAdaptive.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/Hal8188ERateAdaptive.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/Hal8188EReg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/Hal8188EReg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalHWImg8188E_BB.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalHWImg8188E_BB.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalHWImg8188E_BB.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalHWImg8188E_BB.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalHWImg8188E_FW.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalHWImg8188E_FW.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalHWImg8188E_FW.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalHWImg8188E_FW.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalHWImg8188E_MAC.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalHWImg8188E_MAC.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalHWImg8188E_MAC.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalHWImg8188E_MAC.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalHWImg8188E_RF.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalHWImg8188E_RF.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalHWImg8188E_RF.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalHWImg8188E_RF.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalPhyRf_8188e.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalPhyRf_8188e.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalPhyRf_8188e.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/HalPhyRf_8188e.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/Mp_Precomp.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/Mp_Precomp.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/phydm_RTL8188E.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/phydm_RTL8188E.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/phydm_RTL8188E.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/phydm_RTL8188E.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/phydm_RegConfig8188E.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/phydm_RegConfig8188E.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/phydm_RegConfig8188E.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/OUTSRC/rtl8188e/phydm_RegConfig8188E.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/hal_btcoex.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/hal_btcoex.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/hal_com.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/hal_com.c
old mode 100644
new mode 100755
index b8c87857f950..1a294da12186
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/hal_com.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/hal_com.c
@@ -5729,7 +5729,7 @@ int check_phy_efuse_tx_power_info_valid(PADAPTER padapter) {
 			tx_index_offset = 0x0010;
 		break;
 	}
-	for (index = 0 ; index < 12 ; index++) {
+	for (index = 0 ; index < 11 ; index++) {
 		if (pContent[tx_index_offset + index] == 0xFF) {
 			return _FALSE;
 		} else {
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/hal_com_phycfg.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/hal_com_phycfg.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/hal_dm.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/hal_dm.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/hal_dm.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/hal_dm.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/hal_hci/hal_sdio.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/hal_hci/hal_sdio.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/hal_intf.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/hal_intf.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/hal_phy.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/hal_phy.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/led/hal_sdio_led.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/led/hal_sdio_led.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/Hal8188EPwrSeq.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/Hal8188EPwrSeq.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_cmd.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_cmd.c
old mode 100644
new mode 100755
index 845f3d79a919..8f0b8b8096ec
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_cmd.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_cmd.c
@@ -41,13 +41,10 @@ static u8 _is_fw_read_cmd_down(_adapter* padapter, u8 msgbox_num)
 
 	do{
 		valid = rtw_read8(padapter,REG_HMETFR) & BIT(msgbox_num);
-		if(0 == valid ){
+		if (0 == valid)
 			read_down = _TRUE;
-		}
-#ifdef CONFIG_WOWLAN
 		else
 			rtw_msleep_os(1);
-#endif
 	}while( (!read_down) && (retry_cnts--));
 
 	return read_down;
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_dm.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_dm.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_hal_init.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_hal_init.c
old mode 100644
new mode 100755
index 7f367f07d9b8..850bddd600f9
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_hal_init.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_hal_init.c
@@ -4396,6 +4396,20 @@ static void hw_var_set_mlme_sitesurvey(PADAPTER Adapter, u8 variable, u8* val)
 
 #endif /* CONFIG_FIND_BEST_CHANNEL */
 
+	if( (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE)
+#ifdef CONFIG_CONCURRENT_MODE
+		|| (check_buddy_fwstate(Adapter, WIFI_AP_STATE) == _TRUE)
+#endif
+	) {
+		rcr_clear_bit = RCR_CBSSID_BCN;
+	}
+#ifdef CONFIG_TDLS
+	// TDLS will clear RCR_CBSSID_DATA bit for connection.
+	else if (Adapter->tdlsinfo.link_established == _TRUE) {
+		rcr_clear_bit = RCR_CBSSID_BCN;
+	}
+#endif // CONFIG_TDLS
+
 	value_rcr = rtw_read32(Adapter, REG_RCR);
 	if(*((u8 *)val))//under sitesurvey
 	{
@@ -4706,7 +4720,15 @@ _func_enter_;
 				value_rxfltmap2 = 0;
 
 	#endif /* CONFIG_FIND_BEST_CHANNEL */
-			
+				if (check_fwstate(&adapter->mlmepriv, WIFI_AP_STATE) == _TRUE) {
+					rcr_clear_bit = RCR_CBSSID_BCN;
+				}
+	#ifdef CONFIG_TDLS
+				// TDLS will clear RCR_CBSSID_DATA bit for connection.
+				else if (adapter->tdlsinfo.link_established == _TRUE) {
+					rcr_clear_bit = RCR_CBSSID_BCN;
+				}
+	#endif // CONFIG_TDLS
 				value_rcr = rtw_read32(adapter, REG_RCR);
 				if(*((u8 *)val))//under sitesurvey
 				{
@@ -5450,7 +5472,7 @@ break;
 			*(( u32*)pValue) = DRVINFO_SZ;
 			break;	
 		case HAL_DEF_MAX_RECVBUF_SZ:
-			*(( u32*)pValue) = MAX_RECVBUF_SZ;
+			*(( u32*)pValue) = MAX_RX_DMA_BUFFER_SIZE_88E(Adapter);
 			break;
 		case HAL_DEF_RX_PACKET_OFFSET:
 			*(( u32*)pValue) = RXDESC_SIZE + DRVINFO_SZ;
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_mp.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_mp.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_phycfg.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_phycfg.c
old mode 100644
new mode 100755
index 6f9314e68598..1d23d6e30b4e
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_phycfg.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_phycfg.c
@@ -806,9 +806,15 @@ s32 PHY_MACConfig8188E(PADAPTER Adapter)
 	}
 
 	// 2010.07.13 AMPDU aggregation number B
+#ifdef CONFIG_MINIMAL_MEMORY_USAGE
+	val |= 1;
+	val = val << 8;
+	val |= 1;
+#else
 	val |= MAX_AGGR_NUM;
 	val = val << 8;
 	val |= MAX_AGGR_NUM;
+#endif
 	rtw_write16(Adapter, REG_MAX_AGGR_NUM, val);
 	//rtw_write8(Adapter, REG_MAX_AGGR_NUM, 0x0B); 
 
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_rf6052.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_rf6052.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_rxdesc.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_rxdesc.c
old mode 100644
new mode 100755
index 4bdc6e3792cc..a9283d0805fa
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_rxdesc.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_rxdesc.c
@@ -263,7 +263,7 @@ void update_recvframe_phyinfo_88e(
 	ODM_PACKET_INFO_T	pkt_info;
 	u8 *sa = NULL;
 	struct sta_priv *pstapriv;
-	struct sta_info *psta;
+	struct sta_info *psta = NULL;
 	//_irqL		irqL;
 	
 	pkt_info.bPacketMatchBSSID =_FALSE;
@@ -304,15 +304,22 @@ void update_recvframe_phyinfo_88e(
 	}	
 */	
 	sa = get_ta(wlanhdr);	
-	
-	pstapriv = &padapter->stapriv;
 	pkt_info.StationID = 0xFF;
-	psta = rtw_get_stainfo(pstapriv, sa);
-	if (psta)
-	{
-		pkt_info.StationID = psta->mac_id;		
-		//DBG_8192C("%s ==> StationID(%d)\n",__FUNCTION__,pkt_info.StationID);
-	}			
+
+	if (_rtw_memcmp(myid(&padapter->eeprompriv), sa, ETH_ALEN) == _TRUE) {
+		static u32 start_time = 0;
+
+		if ((start_time == 0) || (rtw_get_passing_time_ms(start_time) > 5000)) {
+			DBG_871X_LEVEL(_drv_always_, "Warning!!! %s: Confilc mac addr!!\n", __func__);
+			start_time = rtw_get_current_time();
+		}
+	} else {
+		pstapriv = &padapter->stapriv;
+		psta = rtw_get_stainfo(pstapriv, sa);
+		if (psta)
+			pkt_info.StationID = psta->mac_id;
+	}
+
 	pkt_info.DataRate = pattrib->data_rate;	
 	//rtl8188e_query_rx_phy_status(precvframe, pphy_status);
 
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_sreset.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_sreset.c
old mode 100644
new mode 100755
index a76668d60fcc..b2b985f4ab23
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_sreset.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_sreset.c
@@ -33,19 +33,26 @@ void rtl8188e_sreset_xmit_status_check(_adapter *padapter)
 	struct xmit_priv	*pxmitpriv = &padapter->xmitpriv;
 	unsigned int diff_time;
 	u32 txdma_status;
+	u16 timeout = 0;
 	
 	if( (txdma_status=rtw_read32(padapter, REG_TXDMA_STATUS)) !=0x00){
 		DBG_871X("%s REG_TXDMA_STATUS:0x%08x\n", __FUNCTION__, txdma_status);	
 		rtw_hal_sreset_reset(padapter);
 	}
-#ifdef CONFIG_USB_HCI
+
 	//total xmit irp = 4
-	//DBG_8192C("==>%s free_xmitbuf_cnt(%d),txirp_cnt(%d)\n",__FUNCTION__,pxmitpriv->free_xmitbuf_cnt,pxmitpriv->txirp_cnt);
+	//DBG_8192C("==>%s free_xmitbuf_cnt(%d), free_xmit_extbuf_cnt(%d)\n",
+	//		__func__, pxmitpriv->free_xmitbuf_cnt,
+	//		pxmitpriv->free_xmit_extbuf_cnt);
 	//if(pxmitpriv->txirp_cnt == NR_XMITBUFF+1)
 	current_time = rtw_get_current_time();
 
 	if(0 == pxmitpriv->free_xmitbuf_cnt || 0 == pxmitpriv->free_xmit_extbuf_cnt) {
 
+		if (padapter->interface_type == RTW_SDIO &&
+				pxmitpriv->free_xmitbuf_cnt == 0)
+			return;
+
 		diff_time = rtw_get_passing_time_ms(psrtpriv->last_tx_time);
 
 		if (diff_time > 2000) {
@@ -69,7 +76,6 @@ void rtl8188e_sreset_xmit_status_check(_adapter *padapter)
 			}
 		}
 	}
-#endif //CONFIG_USB_HCI
 
 	if (psrtpriv->dbg_trigger_point == SRESET_TGP_XMIT_STATUS) {
 		psrtpriv->dbg_trigger_point = SRESET_TGP_NULL;
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_xmit.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/rtl8188e_xmit.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/sdio/rtl8189es_led.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/sdio/rtl8189es_led.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/sdio/rtl8189es_recv.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/sdio/rtl8189es_recv.c
old mode 100644
new mode 100755
index 2a462df61e9a..a394be3e0601
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/sdio/rtl8189es_recv.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/sdio/rtl8189es_recv.c
@@ -56,6 +56,7 @@ s32 rtl8188es_init_recv_priv(PADAPTER padapter)
 {
 	s32			res;
 	u32			i, n;
+	u32 max_recvbuf_sz = 0;
 	struct recv_priv	*precvpriv;
 	struct recv_buf		*precvbuf;
 
@@ -96,7 +97,11 @@ s32 rtl8188es_init_recv_priv(PADAPTER padapter)
 			SIZE_PTR tmpaddr=0;
 			SIZE_PTR alignment=0;
 
-			precvbuf->pskb = rtw_skb_alloc(MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ);
+			rtw_hal_get_def_var(padapter, HAL_DEF_MAX_RECVBUF_SZ, &max_recvbuf_sz);
+			if (max_recvbuf_sz == 0)
+				max_recvbuf_sz = MAX_RECVBUF_SZ;
+
+			precvbuf->pskb = rtw_skb_alloc(max_recvbuf_sz + RECVBUFF_ALIGN_SZ);
 
 			if(precvbuf->pskb)
 			{
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/sdio/rtl8189es_xmit.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/sdio/rtl8189es_xmit.c
old mode 100644
new mode 100755
index 4b706923697f..8d40f9056987
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/sdio/rtl8189es_xmit.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/sdio/rtl8189es_xmit.c
@@ -1395,7 +1395,6 @@ thread_return rtl8188es_xmit_thread(thread_context context)
 	_rtw_up_sema(&pxmitpriv->SdioXmitTerminateSema);
 
 	RT_TRACE(_module_hal_xmit_c_, _drv_notice_, ("-%s\n", __FUNCTION__));
-	DBG_871X("exit %s\n", __FUNCTION__);
 
 	thread_exit();
 }
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/sdio/sdio_halinit.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/sdio/sdio_halinit.c
old mode 100644
new mode 100755
index 1919eb31d476..2f6a9179db22
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/sdio/sdio_halinit.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/sdio/sdio_halinit.c
@@ -547,30 +547,34 @@ static void _InitQueueReservedPage(PADAPTER padapter)
 	HAL_DATA_TYPE		*pHalData = GET_HAL_DATA(padapter);
 	struct registry_priv	*pregistrypriv = &padapter->registrypriv;
 	u32			outEPNum	= (u32)pHalData->OutEpNumber;
-	u32			numHQ		= NORMAL_PAGE_NUM_HPQ_88E;
-	u32			numLQ		= NORMAL_PAGE_NUM_LPQ_88E;
-	u32			numNQ		= NORMAL_PAGE_NUM_NPQ_88E;
+	u32			numHQ		= 0;
+	u32			numLQ		= 0;
+	u32			numNQ		= 0;
 	u32			numPubQ	= 0x00;
 	u32			value32;
 	u8			value8;
 	BOOLEAN			bWiFiConfig	= pregistrypriv->wifi_spec;
 
-	if(bWiFiConfig)
-	{
+	if(bWiFiConfig){
 		if (pHalData->OutEpQueueSel & TX_SELE_HQ)
-		{
 			numHQ =  WMM_NORMAL_PAGE_NUM_HPQ_88E;
-		}
 
 		if (pHalData->OutEpQueueSel & TX_SELE_LQ)
-		{
 			numLQ = WMM_NORMAL_PAGE_NUM_LPQ_88E;
-		}
 
 		// NOTE: This step shall be proceed before writting REG_RQPN.
-		if (pHalData->OutEpQueueSel & TX_SELE_NQ) {
+		if (pHalData->OutEpQueueSel & TX_SELE_NQ)
 			numNQ = WMM_NORMAL_PAGE_NUM_NPQ_88E;
-		}
+	} else {
+		if(pHalData->OutEpQueueSel & TX_SELE_HQ)		
+			numHQ = NORMAL_PAGE_NUM_HPQ_88E;	
+		
+		if(pHalData->OutEpQueueSel & TX_SELE_LQ)
+			numLQ = NORMAL_PAGE_NUM_LPQ_88E;
+				
+		// NOTE: This step shall be proceed before writting REG_RQPN.		
+		if(pHalData->OutEpQueueSel & TX_SELE_NQ)
+			numNQ = NORMAL_PAGE_NUM_NPQ_88E;
 	}
 
 	value8 = (u8)_NPQ(numNQ);
@@ -898,6 +902,7 @@ static void HalRxAggr8188ESdio(PADAPTER padapter)
 	struct registry_priv *pregistrypriv;
 	u8	valueDMATimeout;
 	u8	valueDMAPageCount;
+	u32	pagesize = 0;
 
 
 	pregistrypriv = &padapter->registrypriv;
@@ -912,8 +917,18 @@ static void HalRxAggr8188ESdio(PADAPTER padapter)
 	}
 	else
 	{
+#ifdef CONFIG_MINIMAL_MEMORY_USAGE
+		valueDMATimeout = 0x06;
+		rtw_hal_get_def_var(padapter, HAL_DEF_TX_PAGE_SIZE, (u8 *)&pagesize);
+		if (pagesize != 0 && MAX_RECVBUF_SZ < 8192)
+		    valueDMAPageCount = (MAX_RECVBUF_SZ / pagesize) + 1;
+		else
+		    valueDMAPageCount = 0x24;
+		DBG_871X("%s DMAPageCount: 0x%02x\n", __func__, valueDMAPageCount);
+#else
 		valueDMATimeout = 0x06;
 		valueDMAPageCount = 0x24;
+#endif
 	}
 
 	rtw_write8(padapter, REG_RXDMA_AGG_PG_TH+1, valueDMATimeout);
@@ -1231,6 +1246,7 @@ static u32 rtl8188es_hal_init(PADAPTER padapter)
 	s32 ret;
 	u8	txpktbuf_bndy;
 	HAL_DATA_TYPE		*pHalData = GET_HAL_DATA(padapter);
+	PDM_ODM_T		pDM_Odm = &pHalData->odmpriv;
 	struct pwrctrl_priv		*pwrctrlpriv = adapter_to_pwrctl(padapter);
 	struct registry_priv	*pregistrypriv = &padapter->registrypriv;
 	u8 is92C = IS_92C_SERIAL(pHalData->VersionID);
@@ -1864,6 +1880,11 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC31);
 	rtw_write32(padapter, REG_FWHW_TXQ_CTRL, rtw_read32(padapter, REG_FWHW_TXQ_CTRL)|BIT(12));
 #endif //CONFIG_XMIT_ACK
 
+	if (padapter->registrypriv.wifi_spec==1) {
+		ODM_SetBBReg(pDM_Odm,
+				rOFDM0_ECCAThreshold, bMaskDWord, 0x00fe0301);
+	}
+
 	//RT_TRACE(COMP_INIT, DBG_LOUD, ("<---Initializepadapter8192CSdio()\n"));
 	DBG_8192C("-rtl8188es_hal_init\n");
 
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/sdio/sdio_ops.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/sdio/sdio_ops.c
old mode 100644
new mode 100755
index a3a2e4922293..9b25c89f30c8
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/sdio/sdio_ops.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/hal/rtl8188e/sdio/sdio_ops.c
@@ -1251,7 +1251,7 @@ void InitInterrupt8188ESdio(PADAPTER padapter)
 								SDIO_HIMR_BCNERLY_INT_MSK			|
 #endif //CONFIG_EXT_CLK
 //								SDIO_HIMR_C2HCMD_MSK				|
-#ifdef CONFIG_LPS_LCLK
+#if defined(CONFIG_LPS_LCLK) && !defined(CONFIG_DETECT_CPWM_BY_POLLING)
 								SDIO_HIMR_CPWM1_MSK				|
 								SDIO_HIMR_CPWM2_MSK				|
 #endif
@@ -1465,6 +1465,7 @@ static void sd_recv_loopback(PADAPTER padapter, u32 size)
 static struct recv_buf* sd_recv_rxfifo(PADAPTER padapter, u32 size)
 {
 	u32 readsize, ret;
+	u32 max_recvbuf_sz = 0;
 	u8 *preadbuf;
 	struct recv_priv *precvpriv;
 	struct recv_buf	*precvbuf;
@@ -1487,7 +1488,11 @@ static struct recv_buf* sd_recv_rxfifo(PADAPTER padapter, u32 size)
 
 		DBG_871X("%s: alloc_skb for rx buffer\n", __FUNCTION__);
 
-		precvbuf->pskb = rtw_skb_alloc(MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ);
+		rtw_hal_get_def_var(padapter, HAL_DEF_MAX_RECVBUF_SZ, &max_recvbuf_sz);
+		if (max_recvbuf_sz == 0)
+			max_recvbuf_sz = MAX_RECVBUF_SZ;
+
+		precvbuf->pskb = rtw_skb_alloc(max_recvbuf_sz + RECVBUFF_ALIGN_SZ);
 
 		if(precvbuf->pskb)
 		{
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/ifcfg-wlan0 b/drivers/net/wireless/rockchip_wlan/rtl8189es/ifcfg-wlan0
new file mode 100755
index 000000000000..20dcbec2b1ae
--- /dev/null
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/ifcfg-wlan0
@@ -0,0 +1,4 @@
+#DHCP client
+DEVICE=wlan0
+BOOTPROTO=dhcp
+ONBOOT=yes
\ No newline at end of file
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8188EPhyCfg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8188EPhyCfg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8188EPhyReg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8188EPhyReg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8188EPwrSeq.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8188EPwrSeq.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8192CPhyCfg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8192CPhyCfg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8192CPhyReg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8192CPhyReg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8192DPhyCfg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8192DPhyCfg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8192DPhyReg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8192DPhyReg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8192EPhyCfg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8192EPhyCfg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8192EPhyReg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8192EPhyReg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8192EPwrSeq.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8192EPwrSeq.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8723APhyCfg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8723APhyCfg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8723APhyReg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8723APhyReg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8723BPhyCfg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8723BPhyCfg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8723BPhyReg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8723BPhyReg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8723BPwrSeq.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8723BPwrSeq.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8723PwrSeq.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8723PwrSeq.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8812PhyCfg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8812PhyCfg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8812PhyReg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8812PhyReg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8812PwrSeq.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8812PwrSeq.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8821APwrSeq.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/Hal8821APwrSeq.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/HalPwrSeqCmd.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/HalPwrSeqCmd.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/HalVerDef.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/HalVerDef.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/autoconf.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/autoconf.h
old mode 100644
new mode 100755
index 4616ead23c8f..22c4d0b3ad37
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/autoconf.h
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/autoconf.h
@@ -34,17 +34,17 @@
 
 #ifdef CONFIG_EFUSE_CONFIG_FILE
 #ifndef EFUSE_MAP_PATH
-#define EFUSE_MAP_PATH "/system/etc/firmware/wifi_efuse_8189e.map"
+#define EFUSE_MAP_PATH "/system/etc/wifi/wifi_efuse_8189e.map"
 #endif //EFUSE_MAP_PATH
 #endif
 
 #define CONFIG_SDIO_HCI
 #define PLATFORM_LINUX
 
-#define CONFIG_IOCTL_CFG80211
+//#define CONFIG_IOCTL_CFG80211
 
 #ifdef CONFIG_IOCTL_CFG80211
-	#define RTW_USE_CFG80211_STA_EVENT /* Indecate new sta asoc through cfg80211_new_sta */
+	//#define RTW_USE_CFG80211_STA_EVENT /* Indecate new sta asoc through cfg80211_new_sta */
 	#define CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER
 	//#define CONFIG_DEBUG_CFG80211
 	#define CONFIG_SET_SCAN_DENY_TIMER
@@ -60,7 +60,7 @@
 #define CONFIG_80211N_HT
 #define CONFIG_RECV_REORDERING_CTRL
 
-#define CONFIG_CONCURRENT_MODE
+//#define CONFIG_CONCURRENT_MODE
 #ifdef CONFIG_CONCURRENT_MODE
 	#define CONFIG_TSF_RESET_OFFLOAD		// For 2 PORT TSF SYNC.
 	//#define CONFIG_HWPORT_SWAP				//Port0->Sec , Port1 -> Pri
@@ -72,7 +72,7 @@
 #define CONFIG_AP_MODE
 #ifdef CONFIG_AP_MODE
 
-	#define CONFIG_INTERRUPT_BASED_TXBCN // Tx Beacon when driver early interrupt occurs	
+	#define CONFIG_INTERRUPT_BASED_TXBCN
 	#if defined(CONFIG_CONCURRENT_MODE) && defined(CONFIG_INTERRUPT_BASED_TXBCN)
 		#undef CONFIG_INTERRUPT_BASED_TXBCN
 	#endif
@@ -103,7 +103,7 @@
 	//#define CONFIG_DBG_P2P
 
 	#define CONFIG_P2P_PS
-	#define CONFIG_P2P_IPS
+	//#define CONFIG_P2P_IPS
 	#define CONFIG_P2P_OP_CHK_SOCIAL_CH
 	#define CONFIG_CFG80211_ONECHANNEL_UNDER_CONCURRENT  //replace CONFIG_P2P_CHK_INVITE_CH_LIST flag
 	#define CONFIG_P2P_INVITE_IOT
@@ -277,7 +277,7 @@
 /*
  * Debug Related Config
  */
-#define DBG	0
+#define DBG	1
 
 //#define CONFIG_DEBUG /* DBG_871X, etc... */
 //#define CONFIG_DEBUG_RTL871X /* RT_TRACE, RT_PRINT_DATA, _func_enter_, _func_exit_ */
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/basic_types.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/basic_types.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/byteorder/big_endian.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/byteorder/big_endian.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/byteorder/generic.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/byteorder/generic.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/byteorder/little_endian.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/byteorder/little_endian.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/byteorder/swab.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/byteorder/swab.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/byteorder/swabb.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/byteorder/swabb.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/circ_buf.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/circ_buf.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/cmd_osdep.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/cmd_osdep.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/custom_gpio.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/custom_gpio.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_conf.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_conf.h
old mode 100644
new mode 100755
index 09befee96811..b93d60db9449
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_conf.h
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_conf.h
@@ -77,6 +77,9 @@
 
 #define DYNAMIC_CAMID_ALLOC
 
+#define RTW_SCAN_SPARSE_MIRACAST 1
+#define RTW_SCAN_SPARSE_BG 0
+
 #ifndef CONFIG_RTW_HIQ_FILTER
 	#define CONFIG_RTW_HIQ_FILTER 1
 #endif
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_types.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_types.h
old mode 100644
new mode 100755
index b42c42bab969..fb965383fb06
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_types.h
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_types.h
@@ -757,6 +757,7 @@ struct dvobj_priv
 
 #define dvobj_to_pwrctl(dvobj) (&(dvobj->pwrctl_priv))
 #define pwrctl_to_dvobj(pwrctl) container_of(pwrctl, struct dvobj_priv, pwrctl_priv)
+#define dvobj_to_regsty(dvobj) (&(dvobj->if1->registrypriv))
 #define dvobj_to_macidctl(dvobj) (&(dvobj->macid_ctl))
 
 #ifdef PLATFORM_LINUX
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_types_ce.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_types_ce.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_types_gspi.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_types_gspi.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_types_linux.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_types_linux.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_types_pci.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_types_pci.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_types_sdio.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_types_sdio.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_types_xp.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/drv_types_xp.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/ethernet.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/ethernet.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/gspi_hal.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/gspi_hal.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/gspi_ops.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/gspi_ops.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/gspi_ops_linux.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/gspi_ops_linux.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/gspi_osintf.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/gspi_osintf.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/h2clbk.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/h2clbk.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_btcoex.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_btcoex.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_com.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_com.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_com_h2c.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_com_h2c.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_com_led.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_com_led.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_com_phycfg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_com_phycfg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_gspi.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_gspi.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_intf.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_intf.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_pg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_pg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_phy.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_phy.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_phy_reg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_phy_reg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_sdio.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/hal_sdio.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/ieee80211.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/ieee80211.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/ieee80211_ext.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/ieee80211_ext.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/if_ether.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/if_ether.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/ip.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/ip.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/linux/wireless.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/linux/wireless.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/mlme_osdep.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/mlme_osdep.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/mp_custom_oid.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/mp_custom_oid.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/nic_spec.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/nic_spec.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/osdep_intf.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/osdep_intf.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/osdep_service.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/osdep_service.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/osdep_service_bsd.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/osdep_service_bsd.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/osdep_service_ce.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/osdep_service_ce.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/osdep_service_linux.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/osdep_service_linux.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/osdep_service_xp.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/osdep_service_xp.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/pci_osintf.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/pci_osintf.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/recv_osdep.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/recv_osdep.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_cmd.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_cmd.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_dm.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_dm.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_hal.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_hal.h
old mode 100644
new mode 100755
index e0dc8ef902cd..53f120dc938e
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_hal.h
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_hal.h
@@ -139,10 +139,10 @@ typedef struct _RT_8188E_FIRMWARE_HDR
 
 
 //#define MAX_RX_DMA_BUFFER_SIZE_88E	      0x2400 //9k for 88E nornal chip , //MaxRxBuff=10k-max(TxReportSize(64*8), WOLPattern(16*24))
-#define MAX_RX_DMA_BUFFER_SIZE_88E(__Adapter)	((!IS_VENDOR_8188E_I_CUT_SERIES(__Adapter))?0x2400:0x3C00)
+#define MAX_RX_DMA_BUFFER_SIZE_88E(__Adapter)	((!IS_VENDOR_8188E_I_CUT_SERIES(__Adapter))?0x2600:0x3E00)
 
 
-#define MAX_TX_REPORT_BUFFER_SIZE			0x0400 // 1k 
+#define MAX_TX_REPORT_BUFFER_SIZE			0x0200 // 1k 
 
 
 // Note: We will divide number of page equally for each queue other than public queue!
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_led.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_led.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_recv.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_recv.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_rf.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_rf.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_spec.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_spec.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_sreset.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_sreset.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_xmit.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8188e_xmit.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_cmd.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_cmd.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_dm.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_dm.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_event.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_event.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_hal.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_hal.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_led.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_led.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_recv.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_recv.h
old mode 100644
new mode 100755
index ad4d37010700..5f2736cb60d8
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_recv.h
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_recv.h
@@ -55,9 +55,11 @@
 
 
 #elif defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
-
-#define MAX_RECVBUF_SZ (10240)
-
+    #ifdef CONFIG_MINIMAL_MEMORY_USAGE
+	#define MAX_RECVBUF_SZ (4000)
+    #else
+	#define MAX_RECVBUF_SZ (10240)
+    #endif
 #endif
 
 
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_rf.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_rf.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_spec.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_spec.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_sreset.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_sreset.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_xmit.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192c_xmit.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192d_cmd.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192d_cmd.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192d_dm.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192d_dm.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192d_hal.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192d_hal.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192d_led.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192d_led.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192d_recv.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192d_recv.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192d_rf.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192d_rf.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192d_spec.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192d_spec.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192d_xmit.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192d_xmit.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192e_cmd.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192e_cmd.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192e_dm.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192e_dm.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192e_hal.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192e_hal.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192e_led.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192e_led.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192e_recv.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192e_recv.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192e_rf.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192e_rf.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192e_spec.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192e_spec.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192e_sreset.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192e_sreset.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192e_xmit.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8192e_xmit.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_cmd.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_cmd.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_dm.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_dm.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_hal.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_hal.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_led.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_led.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_pg.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_pg.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_recv.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_recv.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_rf.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_rf.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_spec.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_spec.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_sreset.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_sreset.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_xmit.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723a_xmit.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723b_cmd.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723b_cmd.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723b_dm.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723b_dm.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723b_rf.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723b_rf.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723b_sreset.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8723b_sreset.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8812a_cmd.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8812a_cmd.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8812a_dm.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8812a_dm.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8812a_hal.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8812a_hal.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8812a_led.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8812a_led.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8812a_recv.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8812a_recv.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8812a_rf.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8812a_rf.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8812a_spec.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8812a_spec.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8812a_sreset.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8812a_sreset.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8812a_xmit.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8812a_xmit.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8821a_spec.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8821a_spec.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8821a_xmit.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtl8821a_xmit.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_android.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_android.h
old mode 100644
new mode 100755
index cc59417397a1..1a0852fc5e0e
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_android.h
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_android.h
@@ -57,6 +57,7 @@ enum ANDROID_WIFI_CMD {
 
 	ANDROID_WIFI_CMD_MACADDR,
 
+	ANDROID_WIFI_CMD_BLOCK_SCAN,
 	ANDROID_WIFI_CMD_BLOCK,
 
 	ANDROID_WIFI_CMD_WFD_ENABLE,
@@ -88,7 +89,7 @@ int rtw_android_cfg80211_pno_setup(struct net_device *net,
 #if defined(RTW_ENABLE_WIFI_CONTROL_FUNC)
 int rtw_android_wifictrl_func_add(void);
 void rtw_android_wifictrl_func_del(void);
-void* wl_android_prealloc(int section, unsigned long size);
+void* rtw_wl_android_prealloc(int section, unsigned long size);
 
 int wifi_get_irq_number(unsigned long *irq_flags_ptr);
 int wifi_set_power(int on, unsigned long msec);
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_ap.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_ap.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_beamforming.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_beamforming.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_br_ext.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_br_ext.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_bt_mp.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_bt_mp.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_btcoex.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_btcoex.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_byteorder.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_byteorder.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_cmd.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_cmd.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_debug.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_debug.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_eeprom.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_eeprom.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_efuse.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_efuse.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_event.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_event.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_ht.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_ht.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_io.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_io.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_ioctl.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_ioctl.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_ioctl_query.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_ioctl_query.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_ioctl_rtl.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_ioctl_rtl.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_ioctl_set.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_ioctl_set.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_iol.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_iol.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_mem.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_mem.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_mlme.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_mlme.h
old mode 100644
new mode 100755
index 908a1733bd9f..3190d4f38ca1
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_mlme.h
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_mlme.h
@@ -30,6 +30,10 @@
 //	Increase the scanning timeout because of increasing the SURVEY_TO value.
 
 #define 	SCANNING_TIMEOUT 	8000
+#ifdef CONFIG_STA_MODE_SCAN_UNDER_AP_MODE
+#define		CONC_SCANNING_TIMEOUT_SINGLE_BAND 10000
+#define		CONC_SCANNING_TIMEOUT_DUAL_BAND 15000
+#endif //CONFIG_STA_MODE_SCAN_UNDER_AP_MODE
 
 #ifdef PALTFORM_OS_WINCE
 #define	SCANQUEUE_LIFETIME 12000000 // unit:us
@@ -187,6 +191,16 @@ struct tx_invite_resp_info{
 	u8					token;	//	Used to record the dialog token of p2p invitation request frame.
 };
 
+#define MIRACAST_DISABLED 0
+#define MIRACAST_SOURCE 1
+#define MIRACAST_SINK 2
+#define MIRACAST_INVALID 3
+
+#define is_miracast_enabled(mode) \
+	(mode == MIRACAST_SOURCE || mode == MIRACAST_SINK)
+
+const char *get_miracast_mode_str(int mode);
+
 #ifdef CONFIG_WFD
 
 struct wifi_display_info{
@@ -208,7 +222,7 @@ struct wifi_display_info{
 													//	0 -> WFD Source Device
 													//	1 -> WFD Primary Sink Device
 	enum	SCAN_RESULT_TYPE	scan_result_type;	//	Used when P2P is enable. This parameter will impact the scan result.
-
+	u8 stack_wfd_mode;
 };
 #endif //CONFIG_WFD
 
@@ -253,7 +267,8 @@ struct cfg80211_wifidirect_info{
 	u8						restore_channel;
 	struct ieee80211_channel	remain_on_ch_channel;
 	enum nl80211_channel_type	remain_on_ch_type;
-	u64						remain_on_ch_cookie;
+	ATOMIC_T ro_ch_cookie_gen;
+	u64 remain_on_ch_cookie;
 	bool not_indic_ro_ch_exp;
 	bool is_ro_ch;
 	u32 last_ro_ch_time; /* this will be updated at the beginning and end of ro_ch */
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_mlme_ext.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_mlme_ext.h
old mode 100644
new mode 100755
index 3c781d0e5648..71576df7ae88
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_mlme_ext.h
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_mlme_ext.h
@@ -493,6 +493,7 @@ struct mlme_ext_info
 
 #if defined(CONFIG_STA_MODE_SCAN_UNDER_AP_MODE) || defined(CONFIG_ATMEL_RC_PATCH)
 	u8 scan_cnt;
+	u8 backop_cnt;
 #endif //CONFIG_STA_MODE_SCAN_UNDER_AP_MODE
 };
 
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_mp.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_mp.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_mp_ioctl.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_mp_ioctl.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_mp_phy_regdef.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_mp_phy_regdef.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_odm.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_odm.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_p2p.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_p2p.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_pwrctrl.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_pwrctrl.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_qos.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_qos.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_recv.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_recv.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_rf.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_rf.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_security.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_security.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_sreset.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_sreset.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_tdls.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_tdls.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_version.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_version.h
old mode 100644
new mode 100755
index a8c2f5aecbba..05e1f9a34291
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_version.h
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_version.h
@@ -1 +1 @@
-#define DRIVERVERSION	"v4.3.10_12447.20141008"
+#define DRIVERVERSION	"v4.3.10.1_13373.20150129"
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_vht.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_vht.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_wapi.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_wapi.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_wifi_regd.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_wifi_regd.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_xmit.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/rtw_xmit.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/sdio_hal.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/sdio_hal.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/sdio_ops.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/sdio_ops.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/sdio_ops_ce.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/sdio_ops_ce.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/sdio_ops_linux.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/sdio_ops_linux.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/sdio_ops_xp.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/sdio_ops_xp.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/sdio_osintf.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/sdio_osintf.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/sta_info.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/sta_info.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/usb_hal.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/usb_hal.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/usb_ops.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/usb_ops.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/usb_ops_linux.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/usb_ops_linux.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/usb_osintf.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/usb_osintf.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/usb_vendor_req.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/usb_vendor_req.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/wifi.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/wifi.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/wlan_bssdef.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/wlan_bssdef.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/include/xmit_osdep.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/include/xmit_osdep.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/custom_gpio_linux.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/custom_gpio_linux.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/ioctl_cfg80211.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/ioctl_cfg80211.c
old mode 100644
new mode 100755
index ad259219b696..822fe5bde467
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/ioctl_cfg80211.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/ioctl_cfg80211.c
@@ -2184,6 +2184,7 @@ static int cfg80211_rtw_scan(struct wiphy *wiphy
 	struct cfg80211_ssid *ssids = request->ssids;
 	int social_channel = 0, j = 0;
 	bool need_indicate_scan_done = _FALSE;
+	bool ps_denied = _FALSE;
 
 	_adapter *padapter;
 	struct rtw_wdev_priv *pwdev_priv;
@@ -2242,6 +2243,12 @@ if (padapter->registrypriv.mp_mode == 1)
 	pwdev_priv->scan_request = request;
 	_exit_critical_bh(&pwdev_priv->scan_req_lock, &irqL);
 
+	if (adapter_wdev_data(padapter)->block_scan == _TRUE) {
+		DBG_871X(FUNC_ADPT_FMT" wdev_priv.block_scan is set\n", FUNC_ADPT_ARG(padapter));
+		need_indicate_scan_done = _TRUE;
+		goto check_need_indicate_scan_done;
+	}
+
 	if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE)
 	{
 #ifdef CONFIG_DEBUG_CFG80211
@@ -2263,6 +2270,7 @@ if (padapter->registrypriv.mp_mode == 1)
 	}
 
 	rtw_ps_deny(padapter, PS_DENY_SCAN);
+	ps_denied = _TRUE;
 	if(_FAIL == rtw_pwr_wakeup(padapter)) {
 		need_indicate_scan_done = _TRUE;
 		goto check_need_indicate_scan_done;
@@ -2456,7 +2464,8 @@ check_need_indicate_scan_done:
 	}
 
 cancel_ps_deny:
-	rtw_ps_deny_cancel(padapter, PS_DENY_SCAN);
+	if (ps_denied == _TRUE)
+		 rtw_ps_deny_cancel(padapter, PS_DENY_SCAN);
 
 exit:
 	return ret;
@@ -4271,7 +4280,10 @@ static int	cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev
 				pstapriv->asoc_list_cnt--;
 
 				//_exit_critical_bh(&pstapriv->asoc_list_lock, &irqL);
-				updated = ap_free_sta(padapter, psta, _TRUE, WLAN_REASON_DEAUTH_LEAVING);
+				if (check_fwstate(pmlmepriv, (WIFI_AP_STATE)) == _TRUE)
+					updated = ap_free_sta(padapter, psta, _TRUE, WLAN_REASON_PREV_AUTH_NOT_VALID);
+				else
+					updated = ap_free_sta(padapter, psta, _TRUE, WLAN_REASON_DEAUTH_LEAVING);
 				//_enter_critical_bh(&pstapriv->asoc_list_lock, &irqL);
 
 				psta = NULL;
@@ -4760,8 +4772,12 @@ static s32 cfg80211_rtw_remain_on_channel(struct wiphy *wiphy,
 	struct mlme_ext_priv *pmlmeext;
 	struct wifidirect_info *pwdinfo;
 	struct cfg80211_wifidirect_info *pcfg80211_wdinfo;
-	u8 is_p2p_find = _FALSE;
-	
+
+#ifndef CONFIG_RADIO_WORK
+	#define RTW_ROCH_DURATION_ENLARGE
+	#define RTW_ROCH_BACK_OP
+#endif
+
 	if (ndev == NULL) {
 		return  -EINVAL;
 	}
@@ -4771,21 +4787,20 @@ static s32 cfg80211_rtw_remain_on_channel(struct wiphy *wiphy,
 	pmlmeext = &padapter->mlmeextpriv;
 	pwdinfo = &padapter->wdinfo;
 	pcfg80211_wdinfo = &padapter->cfg80211_wdinfo;
-	#ifdef CONFIG_CONCURRENT_MODE
-	is_p2p_find=(duration < (pwdinfo->ext_listen_interval))? _TRUE : _FALSE;
-	#endif
-	DBG_871X(FUNC_ADPT_FMT" ch:%u duration:%d\n", FUNC_ADPT_ARG(padapter), remain_ch, duration);
+
+	*cookie = ATOMIC_INC_RETURN(&pcfg80211_wdinfo->ro_ch_cookie_gen);
+
+	DBG_871X(FUNC_ADPT_FMT" ch:%u duration:%d, cookie:0x%llx\n",
+			FUNC_ADPT_ARG(padapter), remain_ch, duration, *cookie);
 
 	if(pcfg80211_wdinfo->is_ro_ch == _TRUE)
 	{
-		pcfg80211_wdinfo->not_indic_ro_ch_exp = _TRUE;
 		DBG_8192C("%s, cancel ro ch timer\n", __func__);
 		_cancel_timer_ex(&padapter->cfg80211_wdinfo.remain_on_ch_timer);
 		#ifdef CONFIG_CONCURRENT_MODE
 		ATOMIC_SET(&pwdev_priv->ro_ch_to, 1);
 		#endif //CONFIG_CONCURRENT_MODE
 		p2p_protocol_wk_hdl(padapter, P2P_RO_CH_WK);
-		pcfg80211_wdinfo->not_indic_ro_ch_exp = _FALSE;
 	}
 
 	pcfg80211_wdinfo->is_ro_ch = _TRUE;
@@ -4804,8 +4819,8 @@ static s32 cfg80211_rtw_remain_on_channel(struct wiphy *wiphy,
 
 	rtw_scan_abort(padapter);
 #ifdef CONFIG_CONCURRENT_MODE		
-	if ((rtw_buddy_adapter_up(padapter)) && is_p2p_find)		//don't scan_abort during p2p_listen.
-		rtw_scan_abort(padapter->pbuddy_adapter);			
+	if (rtw_buddy_adapter_up(padapter))
+		rtw_scan_abort(padapter->pbuddy_adapter);
 #endif //CONFIG_CONCURRENT_MODE
 
 	if (check_fwstate(&padapter->mlmepriv, _FW_UNDER_LINKING|WIFI_UNDER_WPS) == _TRUE)
@@ -4839,21 +4854,19 @@ static s32 cfg80211_rtw_remain_on_channel(struct wiphy *wiphy,
 
 	rtw_p2p_set_state(pwdinfo, P2P_STATE_LISTEN);
 	
-	
-	if(duration < 400)
-		duration = duration*3;//extend from exper.
-
+	#ifdef RTW_ROCH_DURATION_ENLARGE
+	if (duration < 400)
+		duration = duration * 3; /* extend from exper */
+	#endif
 
+#ifdef RTW_ROCH_BACK_OP
 #ifdef	CONFIG_CONCURRENT_MODE
-	if   (check_buddy_fwstate(padapter, _FW_LINKED))
-	{
-		if (is_p2p_find)				// p2p_find , duration<1000
-			duration = duration + 	pwdinfo->ext_listen_interval;
-		else							// p2p_listen, duration=5000
-			duration = pwdinfo->ext_listen_interval  
-				     + (pwdinfo->ext_listen_interval/4);
+	if(check_buddy_fwstate(padapter, _FW_LINKED) &&
+		(duration<pwdinfo->ext_listen_interval)) {
+		duration = duration + 	pwdinfo->ext_listen_interval;
 	}
 #endif
+#endif /* RTW_ROCH_BACK_OP */
 
 	pcfg80211_wdinfo->restore_channel = rtw_get_oper_ch(padapter);
 
@@ -4869,14 +4882,18 @@ static s32 cfg80211_rtw_remain_on_channel(struct wiphy *wiphy,
 				if(ATOMIC_READ(&pwdev_priv->switch_ch_to)==1 ||
 					(remain_ch != pmlmeext->cur_channel))
 				{
-					DBG_8192C("%s, issue nulldata pwrbit=1\n", __func__);		
-					issue_nulldata(padapter->pbuddy_adapter, NULL, 1, 3, 500);
-				
+					if (check_buddy_fwstate(padapter, WIFI_FW_STATION_STATE)) {
+						DBG_8192C("%s, issue nulldata pwrbit=1\n", __func__);
+						issue_nulldata(padapter->pbuddy_adapter, NULL, 1, 3, 500);
+					}
+			
 					ATOMIC_SET(&pwdev_priv->switch_ch_to, 0);
 			
+					#ifdef RTW_ROCH_BACK_OP
 					DBG_8192C("%s, set switch ch timer, duration=%d\n", __func__, duration-pwdinfo->ext_listen_interval);
-					_set_timer(&pwdinfo->ap_p2p_switch_timer, duration-pwdinfo->ext_listen_interval);	
-				}			
+					_set_timer(&pwdinfo->ap_p2p_switch_timer, duration-pwdinfo->ext_listen_interval);
+					#endif
+				}
 			}
 		
 			ready_on_channel = _TRUE;
@@ -4966,17 +4983,16 @@ static s32 cfg80211_rtw_cancel_remain_on_channel(struct wiphy *wiphy,
 	pwdinfo = &padapter->wdinfo;
 	pcfg80211_wdinfo = &padapter->cfg80211_wdinfo;
 
-	DBG_871X(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(padapter));
+	DBG_871X(FUNC_ADPT_FMT" cookie:0x%llx\n",
+			FUNC_ADPT_ARG(padapter), cookie);
 
 	if (pcfg80211_wdinfo->is_ro_ch == _TRUE) {
-		pcfg80211_wdinfo->not_indic_ro_ch_exp = _TRUE;
 		DBG_8192C("%s, cancel ro ch timer\n", __func__);
 		_cancel_timer_ex(&padapter->cfg80211_wdinfo.remain_on_ch_timer);
 		#ifdef CONFIG_CONCURRENT_MODE
 		ATOMIC_SET(&pwdev_priv->ro_ch_to, 1);
 		#endif
 		p2p_protocol_wk_hdl(padapter, P2P_RO_CH_WK);
-		pcfg80211_wdinfo->not_indic_ro_ch_exp = _FALSE;
 	}
 
 	#if 0
@@ -5976,14 +5992,14 @@ void rtw_cfg80211_init_wiphy(_adapter *padapter)
 
 	DBG_8192C("%s:rf_type=%d\n", __func__, rf_type);
 
-	/* if (padapter->registrypriv.wireless_mode & WIRELESS_11G) */
+	if (padapter->registrypriv.wireless_mode & WIRELESS_11G)
 	{
 		bands = wiphy->bands[IEEE80211_BAND_2GHZ];
 		if(bands)
 			rtw_cfg80211_init_ht_capab(&bands->ht_cap, IEEE80211_BAND_2GHZ, rf_type);
 	}
 
-	/* if (padapter->registrypriv.wireless_mode & WIRELESS_11A) */
+	if (padapter->registrypriv.wireless_mode & WIRELESS_11A)
 	{
 		bands = wiphy->bands[IEEE80211_BAND_5GHZ];
 		if(bands)
@@ -6038,7 +6054,9 @@ static void rtw_cfg80211_preinit_wiphy(_adapter *padapter, struct wiphy *wiphy)
 								| BIT(NL80211_IFTYPE_ADHOC)
 #ifdef CONFIG_AP_MODE
 								| BIT(NL80211_IFTYPE_AP)
+								#ifndef CONFIG_RADIO_WORK
 								| BIT(NL80211_IFTYPE_MONITOR)
+								#endif
 #endif
 #if defined(CONFIG_P2P) && ((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE))
 								| BIT(NL80211_IFTYPE_P2P_CLIENT)
@@ -6053,7 +6071,9 @@ static void rtw_cfg80211_preinit_wiphy(_adapter *padapter, struct wiphy *wiphy)
 #endif		
 
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0))
+	#ifndef CONFIG_RADIO_WORK
 	wiphy->software_iftypes |= BIT(NL80211_IFTYPE_MONITOR);
+	#endif
 #endif
 
 	/*
@@ -6064,9 +6084,9 @@ static void rtw_cfg80211_preinit_wiphy(_adapter *padapter, struct wiphy *wiphy)
 	wiphy->cipher_suites = rtw_cipher_suites;
 	wiphy->n_cipher_suites = ARRAY_SIZE(rtw_cipher_suites);
 
-	/* if (padapter->registrypriv.wireless_mode & WIRELESS_11G) */
+	if (padapter->registrypriv.wireless_mode & WIRELESS_11G)
 		wiphy->bands[IEEE80211_BAND_2GHZ] = rtw_spt_band_alloc(IEEE80211_BAND_2GHZ);
-	/* if (padapter->registrypriv.wireless_mode & WIRELESS_11A) */
+	if (padapter->registrypriv.wireless_mode & WIRELESS_11A)
 		wiphy->bands[IEEE80211_BAND_5GHZ] = rtw_spt_band_alloc(IEEE80211_BAND_5GHZ);
 	
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38) && LINUX_VERSION_CODE < KERNEL_VERSION(3,0,0))
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/ioctl_cfg80211.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/ioctl_cfg80211.h
old mode 100644
new mode 100755
index 3727922c43ba..9eaa8889d709
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/ioctl_cfg80211.h
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/ioctl_cfg80211.h
@@ -98,6 +98,7 @@ struct rtw_wdev_priv
 
 	u8 bandroid_scan;
 	bool block;
+	bool block_scan;
 	bool power_mgmt;
 
 #ifdef CONFIG_CONCURRENT_MODE
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/ioctl_linux.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/ioctl_linux.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/mlme_linux.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/mlme_linux.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/os_intfs.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/os_intfs.c
old mode 100644
new mode 100755
index 0004e9a77992..bac9bccbc540
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/os_intfs.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/os_intfs.c
@@ -43,7 +43,7 @@ int rtw_lbkmode = 0;//RTL8712_AIR_TRX;
 int rtw_network_mode = Ndis802_11IBSS;//Ndis802_11Infrastructure;//infra, ad-hoc, auto
 //NDIS_802_11_SSID	ssid;
 int rtw_channel = 1;//ad-hoc support requirement
-int rtw_wireless_mode = WIRELESS_MODE_MAX;
+int rtw_wireless_mode = WIRELESS_11BG_24N;
 int rtw_vrtl_carrier_sense = AUTO_VCS;
 int rtw_vcs_type = RTS_CTS;//*
 int rtw_rts_thresh = 2347;//*
@@ -54,11 +54,7 @@ int rtw_adhoc_tx_pwr = 1;
 int rtw_soft_ap = 0;
 //int smart_ps = 1;
 #ifdef CONFIG_POWER_SAVING
-#ifdef CONFIG_PLATFORM_INTEL_BYT
 int rtw_power_mgnt = PS_MODE_MAX;
-#else
-int rtw_power_mgnt = PS_MODE_MIN;
-#endif 
 #ifdef CONFIG_IPS_LEVEL_2
 int rtw_ips_mode = IPS_LEVEL_2;
 #else
@@ -3235,7 +3231,7 @@ int rtw_suspend_wow(_adapter *padapter)
 		}
 		#ifdef CONFIG_LPS
 		else
-			rtw_set_ps_mode(padapter, PS_MODE_DTIM, 0, 0, "WOWLAN");
+			rtw_set_ps_mode(padapter, PS_MODE_MAX, 0, 0, "WOWLAN");
 		#endif //#ifdef CONFIG_LPS
 
 	}
@@ -3679,6 +3675,7 @@ _func_enter_;
 
 	if (rtw_chk_roam_flags(padapter, RTW_ROAM_ON_RESUME)) {
 		if (pwrpriv->wowlan_wake_reason == FWDecisionDisconnect ||
+			pwrpriv->wowlan_wake_reason == Rx_Pairwisekey ||
 			pwrpriv->wowlan_wake_reason == Rx_DisAssoc ||
 			pwrpriv->wowlan_wake_reason == Rx_DeAuth) {
 
@@ -3704,6 +3701,7 @@ _func_enter_;
 	}
 
 	if (pwrpriv->wowlan_wake_reason == Rx_GTK ||
+		pwrpriv->wowlan_wake_reason == Rx_Pairwisekey ||
 		pwrpriv->wowlan_wake_reason == Rx_DisAssoc ||
 		pwrpriv->wowlan_wake_reason == Rx_DeAuth) {
 		rtw_lock_ext_suspend_timeout(8000);
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/recv_linux.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/recv_linux.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/rtw_android.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/rtw_android.c
old mode 100644
new mode 100755
index d6fe5924452c..09af62d8c8f5
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/rtw_android.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/rtw_android.c
@@ -76,6 +76,7 @@ const char *android_wifi_cmd_str[ANDROID_WIFI_CMD_MAX] = {
 
 	"MACADDR",
 
+	"BLOCK_SCAN",
 	"BLOCK",
 	"WFD-ENABLE",
 	"WFD-DISABLE",
@@ -409,6 +410,18 @@ int rtw_android_get_p2p_dev_addr(struct net_device *net, char *command, int tota
 	return bytes_written;
 }
 
+int rtw_android_set_block_scan(struct net_device *net, char *command, int total_len)
+{
+	_adapter *adapter = (_adapter *)rtw_netdev_priv(net);
+	char *block_value = command + strlen(android_wifi_cmd_str[ANDROID_WIFI_CMD_BLOCK_SCAN]) + 1;
+
+	#ifdef CONFIG_IOCTL_CFG80211
+	adapter_wdev_data(adapter)->block_scan = (*block_value == '0')?_FALSE:_TRUE;
+	#endif
+
+	return 0;
+}
+
 int rtw_android_set_block(struct net_device *net, char *command, int total_len)
 {
 	_adapter *adapter = (_adapter *)rtw_netdev_priv(net);
@@ -444,28 +457,6 @@ int rtw_android_getband(struct net_device *net, char *command, int total_len)
 	return bytes_written;
 }
 
-enum {
-	MIRACAST_DISABLED = 0,
-	MIRACAST_SOURCE,
-	MIRACAST_SINK,
-	MIRACAST_INVALID,
-};
-
-static const char *miracast_mode_str[] = {
-	"DISABLED",
-	"SOURCE",
-	"SINK",
-	"INVALID",
-};
-
-static const char *get_miracast_mode_str(int mode)
-{
-	if (mode < MIRACAST_DISABLED || mode >= MIRACAST_INVALID)
-		mode = MIRACAST_INVALID;
-
-	return miracast_mode_str[mode];
-}
-
 int rtw_android_set_miracast_mode(struct net_device *net, char *command, int total_len)
 {
 	_adapter *adapter = (_adapter *)rtw_netdev_priv(net);
@@ -659,7 +650,11 @@ int rtw_android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd)
 	case ANDROID_WIFI_CMD_MACADDR:
 		bytes_written = rtw_android_get_macaddr(net, command, priv_cmd.total_len);
 		break;
-		
+
+	case ANDROID_WIFI_CMD_BLOCK_SCAN:
+		bytes_written = rtw_android_set_block_scan(net, command, priv_cmd.total_len);
+		break;
+
 	case ANDROID_WIFI_CMD_BLOCK:
 		bytes_written = rtw_android_set_block(net, command, priv_cmd.total_len);
 		break;
@@ -912,9 +907,14 @@ static struct resource *wifi_irqres = NULL;
 static int wifi_add_dev(void);
 static void wifi_del_dev(void);
 
+extern int rockchip_wifi_get_oob_irq(void);
 int rtw_android_wifictrl_func_add(void)
 {
 	int ret = 0;
+#if 1
+        oob_irq = rockchip_wifi_get_oob_irq();
+        printk("%s: rockchip_wifi_get_oob_irq :%d\n", __func__, oob_irq);
+#else
 	sema_init(&wifi_control_sem, 0);
 
 	ret = wifi_add_dev();
@@ -929,20 +929,22 @@ int rtw_android_wifictrl_func_add(void)
 		ret = -EINVAL;
 		DBG_871X("%s: platform_driver_register timeout\n", __FUNCTION__);
 	}
-
+#endif
 	return ret;
 }
 
 void rtw_android_wifictrl_func_del(void)
 {
+#if 0
 	if (g_wifidev_registered)
 	{
 		wifi_del_dev();
 		g_wifidev_registered = 0;
 	}
+#endif
 }
 
-void *wl_android_prealloc(int section, unsigned long size)
+void *rtw_wl_android_prealloc(int section, unsigned long size)
 {
 	void *alloc_ptr = NULL;
 	if (wifi_control_data && wifi_control_data->mem_prealloc) {
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/rtw_cfgvendor.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/rtw_cfgvendor.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/rtw_cfgvendor.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/rtw_cfgvendor.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/rtw_proc.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/rtw_proc.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/rtw_proc.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/rtw_proc.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/sdio_intf.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/sdio_intf.c
old mode 100644
new mode 100755
index 0e9d5ecae0e7..c72e7bc02b81
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/sdio_intf.c
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/sdio_intf.c
@@ -238,6 +238,7 @@ static u32 sdio_init(struct dvobj_priv *dvobj)
 	PSDIO_DATA psdio_data;
 	struct sdio_func *func;
 	int err;
+	int i = 0;
 
 _func_enter_;
 
@@ -247,8 +248,23 @@ _func_enter_;
 	//3 1. init SDIO bus
 	sdio_claim_host(func);
 
-	err = sdio_enable_func(func);
-	if (err) {
+	//try several times if fail
+	for(i=0; i<10; i++)
+	{
+		err = sdio_enable_func(func);
+		if(err)
+		{
+			printk("%s:err=%d,i=%d\n",__func__, err, i);
+			mdelay(2);
+			continue;
+		}
+		else
+		{
+			break;
+		}
+	}
+
+	if (i>=10 && err) {
 		dvobj->drv_dbg.dbg_sdio_init_error_cnt++;
 		DBG_8192C(KERN_CRIT "%s: sdio_enable_func FAIL(%d)!\n", __func__, err);
 		goto release;
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/sdio_ops_linux.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/sdio_ops_linux.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/wifi_regd.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/wifi_regd.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/wifi_version.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/wifi_version.h
index 9c8bfe52fdc5..6af269ff3923 100755
--- a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/wifi_version.h
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/wifi_version.h
@@ -7,7 +7,7 @@
 /*
  * Broadcom BCM4319 driver version.
  */
-#define RTL8192_DRV_VERSION "4.00"
+#define RTL8192_DRV_VERSION "4.20"
 
 #endif /* WIFI_VERSION_H */
 
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/xmit_linux.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/linux/xmit_linux.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/osdep_service.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/os_dep/osdep_service.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/platform/platform_ARM_SUNnI_sdio.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/platform/platform_ARM_SUNnI_sdio.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/platform/platform_ARM_SUNxI_sdio.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/platform/platform_ARM_SUNxI_sdio.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/platform/platform_ARM_SUNxI_usb.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/platform/platform_ARM_SUNxI_usb.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/platform/platform_ARM_WMT_sdio.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/platform/platform_ARM_WMT_sdio.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/platform/platform_RTK_DMP_usb.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/platform/platform_RTK_DMP_usb.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/platform/platform_ops.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/platform/platform_ops.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/platform/platform_ops.h b/drivers/net/wireless/rockchip_wlan/rtl8189es/platform/platform_ops.h
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/platform/platform_sprd_sdio.c b/drivers/net/wireless/rockchip_wlan/rtl8189es/platform/platform_sprd_sdio.c
old mode 100644
new mode 100755
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/runwpa b/drivers/net/wireless/rockchip_wlan/rtl8189es/runwpa
new file mode 100755
index 000000000000..f825e8bdb123
--- /dev/null
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/runwpa
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+if [ "`which iwconfig`" = "" ] ; then 
+	echo "WARNING:Wireless tool not exist!"
+	echo "        Please install it!"
+	exit
+else
+	if [ `uname -r | cut -d. -f2` -eq 4 ]; then
+		wpa_supplicant -D ipw -c wpa1.conf -i wlan0	
+	else
+	if [ `iwconfig -v |awk '{print $4}' | head -n 1` -lt  18 ] ; then
+		wpa_supplicant -D ipw -c wpa1.conf -i wlan0  
+	else	  
+		wpa_supplicant -D wext -c wpa1.conf -i wlan0 
+	fi
+
+	fi
+fi
+
+
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8189es/wlan0dhcp b/drivers/net/wireless/rockchip_wlan/rtl8189es/wlan0dhcp
new file mode 100755
index 000000000000..60433829cfe6
--- /dev/null
+++ b/drivers/net/wireless/rockchip_wlan/rtl8189es/wlan0dhcp
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+var0=`ps aux|awk '/dhclient wlan0/'|awk '$11!="awk"{print $2}'`
+
+kill $var0
+cp ifcfg-wlan0 /etc/sysconfig/network-scripts/
+
+dhclient wlan0
+
+var1=`ifconfig wlan0 |awk '/inet/{print $2}'|awk -F: '{print $2}'`
+
+
+rm -f /etc/sysconfig/network-scripts/ifcfg-wlan0
+
+echo "get ip: $var1"
+