--- /dev/null
+--- rtl8812au_linux-master/os_dep/linux/ioctl_cfg80211.c.orig 2015-09-27 12:11:20.000000000 +0200
++++ rtl8812au_linux-master/os_dep/linux/ioctl_cfg80211.c 2015-09-27 13:53:42.644724720 +0200
+@@ -3741,7 +3737,11 @@
+ };
+ #endif
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0))
++static int rtw_cfg80211_add_monitor_if(_adapter *padapter, char *name, unsigned char name_assign_type, struct net_device **ndev)
++#else
+ static int rtw_cfg80211_add_monitor_if(_adapter *padapter, char *name, struct net_device **ndev)
++#endif
+ {
+ int ret = 0;
+ struct net_device* mon_ndev = NULL;
+@@ -3772,6 +3772,9 @@
+ mon_ndev->type = ARPHRD_IEEE80211_RADIOTAP;
+ strncpy(mon_ndev->name, name, IFNAMSIZ);
+ mon_ndev->name[IFNAMSIZ - 1] = 0;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0))
++ mon_ndev->name_assign_type = name_assign_type;
++#endif
+ mon_ndev->destructor = rtw_ndev_destructor;
+
+ #if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,29))
+@@ -3836,6 +3839,9 @@
+ #else
+ char *name,
+ #endif
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0))
++ unsigned char name_assign_type,
++#endif
+ enum nl80211_iftype type, u32 *flags, struct vif_params *params)
+ {
+ int ret = 0;
+@@ -3853,7 +3859,11 @@
+ ret = -ENODEV;
+ break;
+ case NL80211_IFTYPE_MONITOR:
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0))
++ ret = rtw_cfg80211_add_monitor_if(padapter, (char *)name, name_assign_type, &ndev);
++#else
+ ret = rtw_cfg80211_add_monitor_if(padapter, (char *)name, &ndev);
++#endif
+ break;
+
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE)
+@@ -4130,12 +4140,15 @@
+ }
+
+ static int cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev,
+-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0))
+- const u8 *mac)
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,15,0))
++ u8 *mac) {
++#elif (LINUX_VERSION_CODE < KERNEL_VERSION(4,1,0))
++ const u8 *mac) {
+ #else
+- u8 *mac)
+-#endif
++ struct station_del_parameters *params)
+ {
++ const u8 *mac = params->mac;
++#endif
+ int ret=0;
+ _irqL irqL;
+ _list *phead, *plist;
--- /dev/null
+--- rtl8812au_linux-master/os_dep/linux/ioctl_cfg80211.c.orig 2015-09-27 12:11:20.000000000 +0200
++++ rtl8812au_linux-master/os_dep/linux/ioctl_cfg80211.c 2015-09-27 13:53:42.644724720 +0200
+@@ -860,17 +860,17 @@
+ #endif //CONFIG_P2P
+
+ if (!padapter->mlmepriv.not_indic_disco) {
+- DBG_8192C("pwdev->sme_state(b)=%d\n", pwdev->sme_state);
+-
+- if(pwdev->sme_state==CFG80211_SME_CONNECTING)
++ if (check_fwstate(pmlmepriv, WIFI_UNDER_LINKING)) {
+ cfg80211_connect_result(padapter->pnetdev, NULL, NULL, 0, NULL, 0,
+ WLAN_STATUS_UNSPECIFIED_FAILURE, GFP_ATOMIC/*GFP_KERNEL*/);
+- else if(pwdev->sme_state==CFG80211_SME_CONNECTED)
++ } else {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0)
+ cfg80211_disconnected(padapter->pnetdev, 0, NULL, 0, GFP_ATOMIC);
+- //else
+- //DBG_8192C("pwdev->sme_state=%d\n", pwdev->sme_state);
+-
+- DBG_8192C("pwdev->sme_state(a)=%d\n", pwdev->sme_state);
++#else
++ cfg80211_disconnected(padapter->pnetdev, 0, NULL, 0, false, GFP_ATOMIC);
++#endif
++ }
++ DBG_8192C("pwdev->sme_state(a)=%d\n", pwdev->sme_state);
+ }
+ }
+
+--- rtl8812au_linux-master/hal/hal_com_phycfg.c.orig 2015-09-27 13:54:46.694957018 +0200
++++ rtl8812au_linux-master/hal/hal_com_phycfg.c 2015-09-27 13:57:14.855000882 +0200
+@@ -2575,7 +2575,7 @@
+ #ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE
+
+ extern char *rtw_phy_file_path;
+-char file_path[PATH_LENGTH_MAX];
++char rtw_file_path[PATH_LENGTH_MAX];
+
+ #define GetLineFromBuffer(buffer) strsep(&buffer, "\n")
+
+@@ -2597,11 +2597,11 @@
+
+ if ((pHalData->mac_reg_len == 0) && (pHalData->mac_reg == NULL))
+ {
+- rtw_merge_string(file_path, PATH_LENGTH_MAX, rtw_phy_file_path, pFileName);
++ rtw_merge_string(rtw_file_path, PATH_LENGTH_MAX, rtw_phy_file_path, pFileName);
+
+- if (rtw_is_file_readable(file_path) == _TRUE)
++ if (rtw_is_file_readable(rtw_file_path) == _TRUE)
+ {
+- rlen = rtw_retrive_from_file(file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
++ rlen = rtw_retrive_from_file(rtw_file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
+ if (rlen > 0)
+ {
+ rtStatus = _SUCCESS;
+@@ -2696,11 +2696,11 @@
+
+ if ((pBufLen != NULL) && (*pBufLen == 0) && (pBuf == NULL))
+ {
+- rtw_merge_string(file_path, PATH_LENGTH_MAX, rtw_phy_file_path, pFileName);
++ rtw_merge_string(rtw_file_path, PATH_LENGTH_MAX, rtw_phy_file_path, pFileName);
+
+- if (rtw_is_file_readable(file_path) == _TRUE)
++ if (rtw_is_file_readable(rtw_file_path) == _TRUE)
+ {
+- rlen = rtw_retrive_from_file(file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
++ rlen = rtw_retrive_from_file(rtw_file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
+ if (rlen > 0)
+ {
+ rtStatus = _SUCCESS;
+@@ -3149,11 +3149,11 @@
+
+ if ((pHalData->bb_phy_reg_pg_len == 0) && (pHalData->bb_phy_reg_pg == NULL))
+ {
+- rtw_merge_string(file_path, PATH_LENGTH_MAX, rtw_phy_file_path, pFileName);
++ rtw_merge_string(rtw_file_path, PATH_LENGTH_MAX, rtw_phy_file_path, pFileName);
+
+- if (rtw_is_file_readable(file_path) == _TRUE)
++ if (rtw_is_file_readable(rtw_file_path) == _TRUE)
+ {
+- rlen = rtw_retrive_from_file(file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
++ rlen = rtw_retrive_from_file(rtw_file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
+ if (rlen > 0)
+ {
+ rtStatus = _SUCCESS;
+@@ -3212,11 +3212,11 @@
+
+ if ((pHalData->bb_phy_reg_mp_len == 0) && (pHalData->bb_phy_reg_mp == NULL))
+ {
+- rtw_merge_string(file_path, PATH_LENGTH_MAX, rtw_phy_file_path, pFileName);
++ rtw_merge_string(rtw_file_path, PATH_LENGTH_MAX, rtw_phy_file_path, pFileName);
+
+- if (rtw_is_file_readable(file_path) == _TRUE)
++ if (rtw_is_file_readable(rtw_file_path) == _TRUE)
+ {
+- rlen = rtw_retrive_from_file(file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
++ rlen = rtw_retrive_from_file(rtw_file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
+ if (rlen > 0)
+ {
+ rtStatus = _SUCCESS;
+@@ -3348,11 +3348,11 @@
+
+ if ((pBufLen != NULL) && (*pBufLen == 0) && (pBuf == NULL))
+ {
+- rtw_merge_string(file_path, PATH_LENGTH_MAX, rtw_phy_file_path, pFileName);
++ rtw_merge_string(rtw_file_path, PATH_LENGTH_MAX, rtw_phy_file_path, pFileName);
+
+- if (rtw_is_file_readable(file_path) == _TRUE)
++ if (rtw_is_file_readable(rtw_file_path) == _TRUE)
+ {
+- rlen = rtw_retrive_from_file(file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
++ rlen = rtw_retrive_from_file(rtw_file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
+ if (rlen > 0)
+ {
+ rtStatus = _SUCCESS;
+@@ -3626,11 +3626,11 @@
+
+ if ((pHalData->rf_tx_pwr_track_len == 0) && (pHalData->rf_tx_pwr_track == NULL))
+ {
+- rtw_merge_string(file_path, PATH_LENGTH_MAX, rtw_phy_file_path, pFileName);
++ rtw_merge_string(rtw_file_path, PATH_LENGTH_MAX, rtw_phy_file_path, pFileName);
+
+- if (rtw_is_file_readable(file_path) == _TRUE)
++ if (rtw_is_file_readable(rtw_file_path) == _TRUE)
+ {
+- rlen = rtw_retrive_from_file(file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
++ rlen = rtw_retrive_from_file(rtw_file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
+ if (rlen > 0)
+ {
+ rtStatus = _SUCCESS;
+@@ -3995,11 +3995,11 @@
+
+ if ((pHalData->rf_tx_pwr_lmt_len == 0) && (pHalData->rf_tx_pwr_lmt == NULL))
+ {
+- rtw_merge_string(file_path, PATH_LENGTH_MAX, rtw_phy_file_path, pFileName);
++ rtw_merge_string(rtw_file_path, PATH_LENGTH_MAX, rtw_phy_file_path, pFileName);
+
+- if (rtw_is_file_readable(file_path) == _TRUE)
++ if (rtw_is_file_readable(rtw_file_path) == _TRUE)
+ {
+- rlen = rtw_retrive_from_file(file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
++ rlen = rtw_retrive_from_file(rtw_file_path, pHalData->para_file_buf, MAX_PARA_FILE_BUF_LEN);
+ if (rlen > 0)
+ {
+ rtStatus = _SUCCESS;