[packages/rtl8812au] - enable cfg80211 use in driver and update code to 3.15+ - fix 'const' related warnings - really dis
baggins
baggins at pld-linux.org
Sun Sep 7 19:51:51 CEST 2014
commit e46e556c84515dea7fe03ecc3bb3ec8dfd6958c1
Author: Jan Rękorajski <baggins at pld-linux.org>
Date: Sun Sep 7 19:50:36 2014 +0200
- enable cfg80211 use in driver and update code to 3.15+
- fix 'const' related warnings
- really disable debug
enable-cfg80211-support.patch | 19 ++++
rtl8812au.spec | 7 ++
update-cfg80211-support.patch | 212 ++++++++++++++++++++++++++++++++++++++++++
warnings.patch | 146 +++++++++++++++++++++++++++++
4 files changed, 384 insertions(+)
---
diff --git a/rtl8812au.spec b/rtl8812au.spec
index de80ba8..ab43a45 100644
--- a/rtl8812au.spec
+++ b/rtl8812au.spec
@@ -36,6 +36,9 @@ Source0: https://github.com/austinmarton/rtl8812au_linux/archive/master/%{name}-
URL: https://github.com/austinmarton/rtl8812au_linux
Patch0: linux-3.11.patch
Patch1: disable-debug.patch
+Patch2: enable-cfg80211-support.patch
+Patch3: update-cfg80211-support.patch
+Patch4: warnings.patch
BuildRequires: rpmbuild(macros) >= 1.678
%{?with_dist_kernel:%{expand:%kbrs}}
BuildRoot: %{tmpdir}/%{pname}-%{version}-root-%(id -u -n)
@@ -80,6 +83,10 @@ Driver for AC1200 (802.11ac) Wireless Dual-Band USB Adapter\
#%setup -q -n %{pname}-%{version}
%setup -q -n rtl8812au_linux-master
%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
%build
%{expand:%bkpkg}
diff --git a/enable-cfg80211-support.patch b/enable-cfg80211-support.patch
new file mode 100644
index 0000000..c108983
--- /dev/null
+++ b/enable-cfg80211-support.patch
@@ -0,0 +1,19 @@
+diff --git a/include/autoconf.h b/include/autoconf.h
+index 6f579b3..c6511d8 100644
+--- a/include/autoconf.h
++++ b/include/autoconf.h
+@@ -38,11 +38,11 @@
+ #define PLATFORM_LINUX 1
+
+
+-//#define CONFIG_IOCTL_CFG80211 1
++#define CONFIG_IOCTL_CFG80211 1
+
+ #ifdef CONFIG_IOCTL_CFG80211
+- //#define RTW_USE_CFG80211_STA_EVENT /* Indecate new sta asoc through cfg80211_new_sta */
+- #define CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER
++ #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_DRV_ISSUE_PROV_REQ // IOT FOR S2
+ #define CONFIG_SET_SCAN_DENY_TIMER
diff --git a/update-cfg80211-support.patch b/update-cfg80211-support.patch
new file mode 100644
index 0000000..82fb7cf
--- /dev/null
+++ b/update-cfg80211-support.patch
@@ -0,0 +1,212 @@
+diff --git a/include/ioctl_cfg80211.h b/include/ioctl_cfg80211.h
+index df878ea..b3431c3 100644
+--- a/include/ioctl_cfg80211.h
++++ b/include/ioctl_cfg80211.h
+@@ -143,8 +143,11 @@ bool rtw_cfg80211_pwr_mgmt(_adapter *adapter);
+ #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))
+ #define rtw_cfg80211_rx_mgmt(adapter, freq, sig_dbm, buf, len, gfp) cfg80211_rx_mgmt((adapter)->pnetdev, freq, sig_dbm, buf, len, gfp)
+-#else
++#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
++// 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
+
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) && !defined(COMPAT_KERNEL_RELEASE)
+diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c
+index 3abcad9..3a5f667 100644
+--- a/os_dep/linux/ioctl_cfg80211.c
++++ b/os_dep/linux/ioctl_cfg80211.c
+@@ -642,6 +642,11 @@ void rtw_cfg80211_ibss_indicate_connect(_adapter *padapter)
+ struct wlan_network *cur_network = &(pmlmepriv->cur_network);
+ struct wireless_dev *pwdev = padapter->rtw_wdev;
+ struct cfg80211_bss *bss = NULL;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)
++ WLAN_BSSID_EX *pnetwork = &(padapter->mlmeextpriv.mlmext_info.network);
++ struct ieee80211_channel *chan = NULL;
++ u32 freq;
++#endif
+
+ DBG_871X(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(padapter));
+ if (pwdev->iftype != NL80211_IFTYPE_ADHOC)
+@@ -693,7 +698,20 @@ void rtw_cfg80211_ibss_indicate_connect(_adapter *padapter)
+ DBG_871X_LEVEL(_drv_always_, FUNC_ADPT_FMT" BSS not found !!\n", FUNC_ADPT_ARG(padapter));
+ }
+ //notify cfg80211 that device joined an IBSS
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)
++ if (!(pnetwork) || !(padapter->rtw_wdev))
++ return;
++
++ if (pnetwork->Configuration.DSConfig <= RTW_CH_MAX_2G_CHANNEL)
++ freq = rtw_ieee80211_channel_to_frequency(pnetwork->Configuration.DSConfig, IEEE80211_BAND_2GHZ);
++ else
++ freq = rtw_ieee80211_channel_to_frequency(pnetwork->Configuration.DSConfig, IEEE80211_BAND_5GHZ);
++
++ chan = ieee80211_get_channel(padapter->rtw_wdev->wiphy, freq);
++ cfg80211_ibss_joined(padapter->pnetdev, cur_network->network.MacAddress, chan, GFP_ATOMIC);
++#else
+ cfg80211_ibss_joined(padapter->pnetdev, cur_network->network.MacAddress, GFP_ATOMIC);
++#endif
+ }
+
+ void rtw_cfg80211_indicate_connect(_adapter *padapter)
+@@ -792,14 +810,18 @@ check_bss:
+ }
+ else
+ {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0)
+ DBG_8192C("pwdev->sme_state(b)=%d\n", pwdev->sme_state);
++#endif
+ cfg80211_connect_result(padapter->pnetdev, cur_network->network.MacAddress
+ , pmlmepriv->assoc_req+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_len-sizeof(struct rtw_ieee80211_hdr_3addr)-6
+ , WLAN_STATUS_SUCCESS, GFP_ATOMIC);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0)
+ DBG_8192C("pwdev->sme_state(a)=%d\n", pwdev->sme_state);
++#endif
+ }
+ }
+
+@@ -838,6 +860,7 @@ void rtw_cfg80211_indicate_disconnect(_adapter *padapter)
+ #endif //CONFIG_P2P
+
+ if (!padapter->mlmepriv.not_indic_disco) {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0)
+ DBG_8192C("pwdev->sme_state(b)=%d\n", pwdev->sme_state);
+
+ if(pwdev->sme_state==CFG80211_SME_CONNECTING)
+@@ -849,6 +872,9 @@ void rtw_cfg80211_indicate_disconnect(_adapter *padapter)
+ //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, GFP_ATOMIC);
++#endif
+ }
+ }
+
+@@ -1666,7 +1692,7 @@ static int cfg80211_rtw_set_default_key(struct wiphy *wiphy,
+
+ static int cfg80211_rtw_get_station(struct wiphy *wiphy,
+ struct net_device *ndev,
+- u8 *mac, struct station_info *sinfo)
++ const u8 *mac, struct station_info *sinfo)
+ {
+ int ret = 0;
+ _adapter *padapter = (_adapter *)rtw_netdev_priv(ndev);
+@@ -4070,7 +4096,7 @@ static int cfg80211_rtw_stop_ap(struct wiphy *wiphy, struct net_device *ndev)
+ #endif //(LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0))
+
+ static int cfg80211_rtw_add_station(struct wiphy *wiphy, struct net_device *ndev,
+- u8 *mac, struct station_parameters *params)
++ const u8 *mac, struct station_parameters *params)
+ {
+ DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev));
+
+@@ -4078,7 +4104,7 @@ static int cfg80211_rtw_add_station(struct wiphy *wiphy, struct net_device *ndev
+ }
+
+ static int cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev,
+- u8 *mac)
++ const u8 *mac)
+ {
+ int ret=0;
+ _irqL irqL;
+@@ -4169,7 +4195,7 @@ static int cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev
+ }
+
+ static int cfg80211_rtw_change_station(struct wiphy *wiphy, struct net_device *ndev,
+- u8 *mac, struct station_parameters *params)
++ const u8 *mac, struct station_parameters *params)
+ {
+ DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev));
+
+@@ -4997,6 +5023,9 @@ static int cfg80211_rtw_mgmt_tx(struct wiphy *wiphy,
+ #else
+ struct net_device *ndev,
+ #endif
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
++ struct cfg80211_mgmt_tx_params *params,
++#else
+ struct ieee80211_channel *chan,
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)) || defined(COMPAT_KERNEL_RELEASE)
+ bool offchan,
+@@ -5017,11 +5046,17 @@ static int cfg80211_rtw_mgmt_tx(struct wiphy *wiphy,
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
+ bool dont_wait_for_ack,
+ #endif
++#endif
+ u64 *cookie)
+ {
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
+ struct net_device *ndev = wdev_to_ndev(wdev);
+ #endif
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
++ struct ieee80211_channel *chan = params->chan;
++ const u8 *buf = params->buf;
++ size_t len = params->len;
++#endif
+ int ret = 0;
+ int tx_ret;
+ u32 dump_limit = RTW_MAX_MGMT_TX_CNT;
+@@ -5897,7 +5932,7 @@ static void rtw_cfg80211_preinit_wiphy(_adapter *padapter, struct wiphy *wiphy)
+ #endif
+
+ #if defined(CONFIG_PM) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0))
+- wiphy->wowlan = wowlan_stub;
++ wiphy->wowlan = &wowlan_stub;
+ #endif
+
+ #if defined(CONFIG_TDLS) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
+diff --git a/os_dep/linux/wifi_regd.c b/os_dep/linux/wifi_regd.c
+index faa2c14..6c1b90d 100644
+--- a/os_dep/linux/wifi_regd.c
++++ b/os_dep/linux/wifi_regd.c
+@@ -270,9 +270,14 @@ static void _rtw_reg_apply_radar_flags(struct wiphy *wiphy)
+ #ifdef CONFIG_DFS
+ if (!(ch->flags & IEEE80211_CHAN_DISABLED))
+ ch->flags |= IEEE80211_CHAN_RADAR |
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)
++ IEEE80211_CHAN_NO_IR;
++#else
+ IEEE80211_CHAN_NO_IBSS;
+ #endif
+
++#endif
++
+ #if 0
+ /*
+ * We always enable radar detection/DFS on this
+@@ -357,7 +362,11 @@ static void _rtw_reg_apply_flags(struct wiphy *wiphy)
+ ch = ieee80211_get_channel(wiphy, freq);
+ if (ch) {
+ if (channel_set[i].ScanType == SCAN_PASSIVE)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)
++ ch->flags = IEEE80211_CHAN_NO_IR;
++#else
+ ch->flags = IEEE80211_CHAN_PASSIVE_SCAN;
++#endif
+ else
+ ch->flags = 0;
+ }
+@@ -484,9 +493,16 @@ static void _rtw_regd_init_wiphy(struct rtw_regulatory *reg,
+
+ wiphy->reg_notifier = reg_notifier;
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)
++ wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG;
++ wiphy->regulatory_flags &= ~REGULATORY_DISABLE_BEACON_HINTS;
++ wiphy->regulatory_flags &= ~REGULATORY_STRICT_REG;
++
++#else
+ wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY;
+ wiphy->flags &= ~WIPHY_FLAG_STRICT_REGULATORY;
+ wiphy->flags &= ~WIPHY_FLAG_DISABLE_BEACON_HINTS;
++#endif
+
+ regd = _rtw_regdomain_select(reg);
+ wiphy_apply_custom_regulatory(wiphy, regd);
diff --git a/warnings.patch b/warnings.patch
new file mode 100644
index 0000000..fc29dea
--- /dev/null
+++ b/warnings.patch
@@ -0,0 +1,146 @@
+diff --git a/core/rtw_ioctl_set.c b/core/rtw_ioctl_set.c
+index 255453b..87e6840 100644
+--- a/core/rtw_ioctl_set.c
++++ b/core/rtw_ioctl_set.c
+@@ -31,7 +31,7 @@ extern void indicate_wx_scan_complete_event(_adapter *padapter);
+ (addr[4] == 0xff) && (addr[5] == 0xff) ) ? _TRUE : _FALSE \
+ )
+
+-u8 rtw_validate_bssid(u8 *bssid)
++u8 rtw_validate_bssid(const u8 *bssid)
+ {
+ u8 ret = _TRUE;
+
+@@ -525,7 +525,7 @@ _func_exit_;
+
+ }
+
+-u8 rtw_set_802_11_connect(_adapter* padapter, u8 *bssid, NDIS_802_11_SSID *ssid)
++u8 rtw_set_802_11_connect(_adapter* padapter, const u8 *bssid, NDIS_802_11_SSID *ssid)
+ {
+ _irqL irqL;
+ u8 status = _SUCCESS;
+diff --git a/core/rtw_sta_mgt.c b/core/rtw_sta_mgt.c
+index f03f727..d425120 100644
+--- a/core/rtw_sta_mgt.c
++++ b/core/rtw_sta_mgt.c
+@@ -685,7 +685,7 @@ _func_exit_;
+ }
+
+ /* any station allocated can be searched by hash list */
+-struct sta_info *rtw_get_stainfo(struct sta_priv *pstapriv, u8 *hwaddr)
++struct sta_info *rtw_get_stainfo(struct sta_priv *pstapriv, const u8 *hwaddr)
+ {
+
+ _irqL irqL;
+@@ -696,7 +696,7 @@ struct sta_info *rtw_get_stainfo(struct sta_priv *pstapriv, u8 *hwaddr)
+
+ u32 index;
+
+- u8 *addr;
++ const u8 *addr;
+
+ u8 bc_addr[ETH_ALEN] = {0xff,0xff,0xff,0xff,0xff,0xff};
+
+diff --git a/include/osdep_service.h b/include/osdep_service.h
+index 76026b9..25809e4 100644
+--- a/include/osdep_service.h
++++ b/include/osdep_service.h
+@@ -255,8 +255,8 @@ void _rtw_usb_buffer_free(struct usb_device *dev, size_t size, void *addr, dma_a
+ extern void* rtw_malloc2d(int h, int w, int size);
+ extern void rtw_mfree2d(void *pbuf, int h, int w, int size);
+
+-extern void _rtw_memcpy(void* dec, void* sour, u32 sz);
+-extern int _rtw_memcmp(void *dst, void *src, u32 sz);
++extern void _rtw_memcpy(void* dec, const void* sour, u32 sz);
++extern int _rtw_memcmp(const void *dst, const void *src, u32 sz);
+ extern void _rtw_memset(void *pbuf, int c, u32 sz);
+
+ extern void _rtw_init_listhead(_list *list);
+diff --git a/include/rtw_ioctl_set.h b/include/rtw_ioctl_set.h
+index da08376..10b3507 100644
+--- a/include/rtw_ioctl_set.h
++++ b/include/rtw_ioctl_set.h
+@@ -60,10 +60,10 @@ u8 rtw_set_802_11_bssid_list_scan(_adapter* padapter, NDIS_802_11_SSID *pssid, i
+ u8 rtw_set_802_11_infrastructure_mode(_adapter * padapter, NDIS_802_11_NETWORK_INFRASTRUCTURE networktype);
+ u8 rtw_set_802_11_remove_wep(_adapter * padapter, u32 keyindex);
+ u8 rtw_set_802_11_ssid(_adapter * padapter, NDIS_802_11_SSID * ssid);
+-u8 rtw_set_802_11_connect(_adapter* padapter, u8 *bssid, NDIS_802_11_SSID *ssid);
++u8 rtw_set_802_11_connect(_adapter* padapter, const u8 *bssid, NDIS_802_11_SSID *ssid);
+ u8 rtw_set_802_11_remove_key(_adapter * padapter, NDIS_802_11_REMOVE_KEY * key);
+
+-u8 rtw_validate_bssid(u8 *bssid);
++u8 rtw_validate_bssid(const u8 *bssid);
+ u8 rtw_validate_ssid(NDIS_802_11_SSID *ssid);
+
+ u16 rtw_get_cur_max_rate(_adapter *adapter);
+diff --git a/include/sta_info.h b/include/sta_info.h
+index 15964d7..553d5ab 100644
+--- a/include/sta_info.h
++++ b/include/sta_info.h
+@@ -443,7 +443,7 @@ struct sta_priv {
+ };
+
+
+-__inline static u32 wifi_mac_hash(u8 *mac)
++__inline static u32 wifi_mac_hash(const u8 *mac)
+ {
+ u32 x;
+
+@@ -471,7 +471,7 @@ struct sta_info *rtw_get_stainfo_by_offset(struct sta_priv *stapriv, int offset)
+ extern struct sta_info *rtw_alloc_stainfo(struct sta_priv *pstapriv, u8 *hwaddr);
+ extern u32 rtw_free_stainfo(_adapter *padapter , struct sta_info *psta);
+ extern void rtw_free_all_stainfo(_adapter *padapter);
+-extern struct sta_info *rtw_get_stainfo(struct sta_priv *pstapriv, u8 *hwaddr);
++extern struct sta_info *rtw_get_stainfo(struct sta_priv *pstapriv, const u8 *hwaddr);
+ extern u32 rtw_init_bcmc_stainfo(_adapter* padapter);
+ extern struct sta_info* rtw_get_bcmc_stainfo(_adapter* padapter);
+ extern u8 rtw_access_ctrl(_adapter *padapter, u8 *mac_addr);
+diff --git a/include/wifi.h b/include/wifi.h
+index dff95b4..d148ba8 100644
+--- a/include/wifi.h
++++ b/include/wifi.h
+@@ -431,7 +431,7 @@ enum WIFI_REG_DOMAIN {
+ (addr[4] == 0xff) && (addr[5] == 0xff) ) ? _TRUE : _FALSE \
+ )
+
+-__inline static int IS_MCAST(unsigned char *da)
++__inline static int IS_MCAST(const unsigned char *da)
+ {
+ if ((*da) & 0x01)
+ return _TRUE;
+diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c
+index 3abcad9..4b6ce41 100644
+--- a/os_dep/linux/ioctl_cfg80211.c
++++ b/os_dep/linux/ioctl_cfg80211.c
+@@ -2584,7 +2610,7 @@ static int rtw_cfg80211_set_key_mgt(struct security_priv *psecuritypriv, u32 key
+ return 0;
+ }
+
+-static int rtw_cfg80211_set_wpa_ie(_adapter *padapter, u8 *pie, size_t ielen)
++static int rtw_cfg80211_set_wpa_ie(_adapter *padapter, const u8 *pie, size_t ielen)
+ {
+ u8 *buf=NULL, *pos=NULL;
+ u32 left;
+diff --git a/os_dep/osdep_service.c b/os_dep/osdep_service.c
+index 97a904b..ae46f26 100644
+--- a/os_dep/osdep_service.c
++++ b/os_dep/osdep_service.c
+@@ -804,7 +804,7 @@ void rtw_mfree2d(void *pbuf, int h, int w, int size)
+ rtw_mfree((u8 *)pbuf, h*sizeof(void*) + w*h*size);
+ }
+
+-void _rtw_memcpy(void* dst, void* src, u32 sz)
++void _rtw_memcpy(void* dst, const void* src, u32 sz)
+ {
+
+ #if defined (PLATFORM_LINUX)|| defined (PLATFORM_FREEBSD)
+@@ -821,7 +821,7 @@ void _rtw_memcpy(void* dst, void* src, u32 sz)
+
+ }
+
+-int _rtw_memcmp(void *dst, void *src, u32 sz)
++int _rtw_memcmp(const void *dst, const void *src, u32 sz)
+ {
+
+ #if defined (PLATFORM_LINUX)|| defined (PLATFORM_FREEBSD)
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/rtl8812au.git/commitdiff/5ea72e3c9b22a12a35185fe30464e5836fb3d710
More information about the pld-cvs-commit
mailing list