]> git.pld-linux.org Git - packages/rtl8812au.git/commitdiff
- enable cfg80211 use in driver and update code to 3.15+
authorJan Rękorajski <baggins@pld-linux.org>
Sun, 7 Sep 2014 17:50:36 +0000 (19:50 +0200)
committerJan Rękorajski <baggins@pld-linux.org>
Sun, 7 Sep 2014 17:50:36 +0000 (19:50 +0200)
- fix 'const' related warnings
- really disable debug

enable-cfg80211-support.patch [new file with mode: 0644]
rtl8812au.spec
update-cfg80211-support.patch [new file with mode: 0644]
warnings.patch [new file with mode: 0644]

diff --git a/enable-cfg80211-support.patch b/enable-cfg80211-support.patch
new file mode 100644 (file)
index 0000000..c108983
--- /dev/null
@@ -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
index de80ba8a3dac52fb37406183751d7973bc886753..ab43a45190e691553b9670cfc9b8c61ddbd5fc1f 100644 (file)
@@ -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/update-cfg80211-support.patch b/update-cfg80211-support.patch
new file mode 100644 (file)
index 0000000..82fb7cf
--- /dev/null
@@ -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 (file)
index 0000000..fc29dea
--- /dev/null
@@ -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)
This page took 0.218785 seconds and 4 git commands to generate.