1
0
mirror of https://github.com/abperiasamy/rtl8812AU_8821AU_linux.git synced 2025-12-08 17:46:21 +01:00

Update cfg80211 support to work with kernel up to 3.13. Also enable cfg80211 for AP mode

This commit is contained in:
John Lenz
2014-02-18 15:09:14 -06:00
parent f1008f6d87
commit b22cbdf3b9
3 changed files with 29 additions and 17 deletions

View File

@@ -40,7 +40,7 @@
#define PLATFORM_LINUX 1 #define PLATFORM_LINUX 1
//#define CONFIG_IOCTL_CFG80211 1 #define CONFIG_IOCTL_CFG80211 1
#ifdef CONFIG_PLATFORM_ARM_SUNxI #ifdef CONFIG_PLATFORM_ARM_SUNxI
#ifndef CONFIG_IOCTL_CFG80211 #ifndef CONFIG_IOCTL_CFG80211
@@ -49,8 +49,8 @@
#endif #endif
#ifdef 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_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER
//#define CONFIG_DEBUG_CFG80211 //#define CONFIG_DEBUG_CFG80211
//#define CONFIG_DRV_ISSUE_PROV_REQ // IOT FOR S2 //#define CONFIG_DRV_ISSUE_PROV_REQ // IOT FOR S2
#define CONFIG_SET_SCAN_DENY_TIMER #define CONFIG_SET_SCAN_DENY_TIMER

View File

@@ -104,11 +104,14 @@ int rtw_cfg80211_set_mgnt_wpsp2pie(struct net_device *net, char *buf, int len, i
bool rtw_cfg80211_pwr_mgmt(_adapter *adapter); bool rtw_cfg80211_pwr_mgmt(_adapter *adapter);
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) && !defined(COMPAT_KERNEL_RELEASE) #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) && !defined(COMPAT_KERNEL_RELEASE)
#define rtw_cfg80211_rx_mgmt(adapter, freq, sig_dbm, buf, len, gfp) cfg80211_rx_mgmt((adapter)->pnetdev, freq, buf, len, gfp) #define rtw_cfg80211_rx_mgmt(adapter, freq, sig_dbm, buf, len, gfp) cfg80211_rx_mgmt((adapter)->pnetdev, freq, buf, len, gfp)
#elif (LINUX_VERSION_CODE < KERNEL_VERSION(3,6,0)) #elif (LINUX_VERSION_CODE < KERNEL_VERSION(3,6,0))
#define rtw_cfg80211_rx_mgmt(adapter, freq, sig_dbm, buf, len, gfp) cfg80211_rx_mgmt((adapter)->pnetdev, freq, sig_dbm, buf, len, gfp) #define rtw_cfg80211_rx_mgmt(adapter, freq, sig_dbm, buf, len, gfp) cfg80211_rx_mgmt((adapter)->pnetdev, freq, sig_dbm, buf, len, gfp)
#elif (LINUX_VERSION_CODE < KERNEL_VERSION(3,12,0))
#define rtw_cfg80211_rx_mgmt(adapter, freq, sig_dbm, buf, len, gfp) cfg80211_rx_mgmt((adapter)->rtw_wdev, freq, sig_dbm, buf, len, gfp)
#else #else
#define rtw_cfg80211_rx_mgmt(adapter, freq, sig_dbm, buf, len, gfp) cfg80211_rx_mgmt((adapter)->rtw_wdev, freq, sig_dbm, buf, len, gfp) // 3.12 added a flags argument which is just set to zero
#define rtw_cfg80211_rx_mgmt(adapter, freq, sig_dbm, buf, len, gfp) cfg80211_rx_mgmt((adapter)->rtw_wdev, freq, sig_dbm, buf, len, 0, gfp)
#endif #endif
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) && !defined(COMPAT_KERNEL_RELEASE) #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) && !defined(COMPAT_KERNEL_RELEASE)

View File

@@ -461,7 +461,12 @@ static int rtw_cfg80211_inform_bss(_adapter *padapter, struct wlan_network *pnet
} }
*/ */
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
cfg80211_put_bss(bss); cfg80211_put_bss(bss);
#else
//See 5b112d3d098c97b867cc580f590395cd1e72f18c
cfg80211_put_bss(wiphy, bss);
#endif
exit: exit:
return ret; return ret;
@@ -535,14 +540,14 @@ void rtw_cfg80211_indicate_connect(_adapter *padapter)
else else
#endif #endif
{ {
DBG_8192C("pwdev->sme_state(b)=%d\n", pwdev->sme_state); //DBG_8192C("pwdev->sme_state(b)=%d\n", pwdev->sme_state);
cfg80211_connect_result(padapter->pnetdev, cur_network->network.MacAddress cfg80211_connect_result(padapter->pnetdev, cur_network->network.MacAddress
, pmlmepriv->assoc_req+sizeof(struct rtw_ieee80211_hdr_3addr)+2 , pmlmepriv->assoc_req+sizeof(struct rtw_ieee80211_hdr_3addr)+2
, pmlmepriv->assoc_req_len-sizeof(struct rtw_ieee80211_hdr_3addr)-2 , pmlmepriv->assoc_req_len-sizeof(struct rtw_ieee80211_hdr_3addr)-2
, pmlmepriv->assoc_rsp+sizeof(struct rtw_ieee80211_hdr_3addr)+6 , pmlmepriv->assoc_rsp+sizeof(struct rtw_ieee80211_hdr_3addr)+6
, pmlmepriv->assoc_rsp_len-sizeof(struct rtw_ieee80211_hdr_3addr)-6 , pmlmepriv->assoc_rsp_len-sizeof(struct rtw_ieee80211_hdr_3addr)-6
, WLAN_STATUS_SUCCESS, GFP_ATOMIC); , WLAN_STATUS_SUCCESS, GFP_ATOMIC);
DBG_8192C("pwdev->sme_state(a)=%d\n", pwdev->sme_state); //DBG_8192C("pwdev->sme_state(a)=%d\n", pwdev->sme_state);
} }
} }
@@ -585,17 +590,21 @@ void rtw_cfg80211_indicate_disconnect(_adapter *padapter)
#endif //CONFIG_P2P #endif //CONFIG_P2P
if (!padapter->mlmepriv.not_indic_disco) { if (!padapter->mlmepriv.not_indic_disco) {
DBG_8192C("pwdev->sme_state(b)=%d\n", pwdev->sme_state); // see ceca7b7121795ef81bd598a240d53a925662d0c1, which removed sme_state variable in 3.11
//DBG_8192C("pwdev->sme_state(b)=%d\n", pwdev->sme_state);
if(pwdev->sme_state==CFG80211_SME_CONNECTING) #if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0)
cfg80211_connect_result(padapter->pnetdev, NULL, NULL, 0, NULL, 0, if(pwdev->sme_state==CFG80211_SME_CONNECTING)^M
WLAN_STATUS_UNSPECIFIED_FAILURE, GFP_ATOMIC/*GFP_KERNEL*/); cfg80211_connect_result(padapter->pnetdev, NULL, NULL, 0, NULL, 0, ^M
else if(pwdev->sme_state==CFG80211_SME_CONNECTED) WLAN_STATUS_UNSPECIFIED_FAILURE, GFP_ATOMIC/*GFP_KERNEL*/);^M
cfg80211_disconnected(padapter->pnetdev, 0, NULL, 0, GFP_ATOMIC); else if(pwdev->sme_state==CFG80211_SME_CONNECTED)^M
//else cfg80211_disconnected(padapter->pnetdev, 0, NULL, 0, GFP_ATOMIC);^M
//DBG_8192C("pwdev->sme_state=%d\n", pwdev->sme_state); #else
cfg80211_disconnected(padapter->pnetdev, 0, NULL, 0, GFP_ATOMIC);
#endif
DBG_8192C("pwdev->sme_state(a)=%d\n", pwdev->sme_state); //DBG_8192C("pwdev->sme_state(a)=%d\n", pwdev->sme_state);
} }
} }