summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Vihrov2015-10-02 18:30:05 +0300
committerAndrey Vihrov2015-10-02 18:30:05 +0300
commitee906ab040c612f5ba0a79910f5a162b34548811 (patch)
tree08b0c42727eea171a0f1eedc999a49df56f5f601
parent2b7a13592e2d22f46d1f1a8bb957985506ca2a8d (diff)
downloadaur-ee906ab040c612f5ba0a79910f5a162b34548811.tar.gz
New upstream version
-rw-r--r--.SRCINFO16
-rw-r--r--PKGBUILD21
-rw-r--r--dkms.conf2
-rw-r--r--linux-recent.patch390
4 files changed, 17 insertions, 412 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 9b8b46612842..b51d65c37d60 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = broadcom-wl-dkms
pkgdesc = Broadcom 802.11 Linux STA wireless driver
- pkgver = 6.30.223.248
- pkgrel = 7
+ pkgver = 6.30.223.271
+ pkgrel = 1
url = http://www.broadcom.com/support/802.11/linux_sta.php
install = broadcom-wl-dkms.install
arch = i686
@@ -14,17 +14,15 @@ pkgbase = broadcom-wl-dkms
source = broadcom-wl-dkms.conf
source = dkms.conf
source = license.patch
- source = linux-recent.patch
source = gcc.patch
sha256sums = b97bc588420d1542f73279e71975ccb5d81d75e534e7b5717e01d6e6adf6a283
- sha256sums = 4e719f9c8468f7c802bb0e52939f2680abb1287d3817d91252958f0ae82f983b
+ sha256sums = e81085522db72b0bd6418600507c8a18202aee6dcc07b1befe16ad2e2cfbd971
sha256sums = 2f70be509aac743bec2cc3a19377be311a60a1c0e4a70ddd63ea89fae5df08ac
- sha256sums = dfed527953ece43b407ae2016cc45d82463e2107d74ad9a3a780aea0ee64de03
sha256sums = b07ce80f2e079cce08c8ec006dda091f6f73f158c8a62df5bac2fbabb6989849
- source_i686 = http://www.broadcom.com/docs/linux_sta/hybrid-v35-nodebug-pcoem-6_30_223_248.tar.gz
- sha256sums_i686 = b196543a429c22b2b8d75d0c1d9e6e7ff212c3d3e1f42cc6fd9e4858f01da1ad
- source_x86_64 = http://www.broadcom.com/docs/linux_sta/hybrid-v35_64-nodebug-pcoem-6_30_223_248.tar.gz
- sha256sums_x86_64 = 3d994cc6c05198f4b6f07a213ac1e9e45a45159899e6c4a7feca5e6c395c3022
+ source_i686 = http://www.broadcom.com/docs/linux_sta/hybrid-v35-nodebug-pcoem-6_30_223_271.tar.gz
+ sha256sums_i686 = 4f8b70b293ac8cc5c70e571ad5d1878d0f29d133a46fe7869868d9c19b5058cd
+ source_x86_64 = http://www.broadcom.com/docs/linux_sta/hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz
+ sha256sums_x86_64 = 5f79774d5beec8f7636b59c0fb07a03108eef1e3fd3245638b20858c714144be
pkgname = broadcom-wl-dkms
diff --git a/PKGBUILD b/PKGBUILD
index a4e873285a84..0ade08d0e8a0 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,8 +1,8 @@
# Maintainer: Frank Vanderham <twelve.eighty (at) gmail.>
pkgname=broadcom-wl-dkms
_pkgname=broadcom-wl
-pkgver=6.30.223.248
-pkgrel=7
+pkgver=6.30.223.271
+pkgrel=1
pkgdesc="Broadcom 802.11 Linux STA wireless driver"
url='http://www.broadcom.com/support/802.11/linux_sta.php'
arch=('i686' 'x86_64')
@@ -14,22 +14,19 @@ conflicts=('broadcom-wl')
source=('broadcom-wl-dkms.conf'
'dkms.conf'
'license.patch'
- 'linux-recent.patch'
'gcc.patch')
-sha256sums=('b97bc588420d1542f73279e71975ccb5d81d75e534e7b5717e01d6e6adf6a283'
- '4e719f9c8468f7c802bb0e52939f2680abb1287d3817d91252958f0ae82f983b'
- '2f70be509aac743bec2cc3a19377be311a60a1c0e4a70ddd63ea89fae5df08ac'
- 'dfed527953ece43b407ae2016cc45d82463e2107d74ad9a3a780aea0ee64de03'
- 'b07ce80f2e079cce08c8ec006dda091f6f73f158c8a62df5bac2fbabb6989849')
-source_x86_64=("http://www.broadcom.com/docs/linux_sta/hybrid-v35_64-nodebug-pcoem-${pkgver//./_}.tar.gz")
-sha256sums_x86_64=('3d994cc6c05198f4b6f07a213ac1e9e45a45159899e6c4a7feca5e6c395c3022')
source_i686=("http://www.broadcom.com/docs/linux_sta/hybrid-v35-nodebug-pcoem-${pkgver//./_}.tar.gz")
-sha256sums_i686=('b196543a429c22b2b8d75d0c1d9e6e7ff212c3d3e1f42cc6fd9e4858f01da1ad')
+source_x86_64=("http://www.broadcom.com/docs/linux_sta/hybrid-v35_64-nodebug-pcoem-${pkgver//./_}.tar.gz")
+sha256sums=('b97bc588420d1542f73279e71975ccb5d81d75e534e7b5717e01d6e6adf6a283'
+ 'e81085522db72b0bd6418600507c8a18202aee6dcc07b1befe16ad2e2cfbd971'
+ '2f70be509aac743bec2cc3a19377be311a60a1c0e4a70ddd63ea89fae5df08ac'
+ 'b07ce80f2e079cce08c8ec006dda091f6f73f158c8a62df5bac2fbabb6989849')
+sha256sums_i686=('4f8b70b293ac8cc5c70e571ad5d1878d0f29d133a46fe7869868d9c19b5058cd')
+sha256sums_x86_64=('5f79774d5beec8f7636b59c0fb07a03108eef1e3fd3245638b20858c714144be')
backup=('etc/modprobe.d/broadcom-wl-dkms.conf')
build() {
cd "${srcdir}"
- patch -p1 -i linux-recent.patch
patch -p1 -i license.patch
patch -p1 -i gcc.patch
diff --git a/dkms.conf b/dkms.conf
index 359970e795f2..79bb304a0233 100644
--- a/dkms.conf
+++ b/dkms.conf
@@ -1,5 +1,5 @@
PACKAGE_NAME="broadcom-wl"
-PACKAGE_VERSION="6.30.223.248"
+PACKAGE_VERSION="6.30.223.271"
BUILT_MODULE_NAME[0]="wl"
DEST_MODULE_LOCATION[0]="/kernel/drivers/net/wireless"
AUTOINSTALL="yes"
diff --git a/linux-recent.patch b/linux-recent.patch
deleted file mode 100644
index d7a9550b3ef7..000000000000
--- a/linux-recent.patch
+++ /dev/null
@@ -1,390 +0,0 @@
---- a/src/wl/sys/wl_cfg80211_hybrid.c 2014-06-26 10:42:08.000000000 +0000
-+++ b/src/wl/sys/wl_cfg80211_hybrid.c 2014-12-30 17:02:13.602127370 +0000
-@@ -63,8 +63,13 @@
- static s32 wl_cfg80211_join_ibss(struct wiphy *wiphy, struct net_device *dev,
- struct cfg80211_ibss_params *params);
- static s32 wl_cfg80211_leave_ibss(struct wiphy *wiphy, struct net_device *dev);
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)
- static s32 wl_cfg80211_get_station(struct wiphy *wiphy,
- struct net_device *dev, u8 *mac, struct station_info *sinfo);
-+#else
-+static s32 wl_cfg80211_get_station(struct wiphy *wiphy,
-+ struct net_device *dev, const u8 *mac, struct station_info *sinfo);
-+#endif
- static s32 wl_cfg80211_set_power_mgmt(struct wiphy *wiphy,
- struct net_device *dev, bool enabled, s32 timeout);
- static int wl_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev,
-@@ -1387,7 +1392,7 @@
- key_endian_to_host(&key);
-
- params.key_len = (u8) min_t(u8, DOT11_MAX_KEY_SIZE, key.len);
-- memcpy(params.key, key.data, params.key_len);
-+ memcpy((char *)params.key, key.data, params.key_len);
-
- if ((err = wl_dev_ioctl(dev, WLC_GET_WSEC, &wsec, sizeof(wsec)))) {
- return err;
-@@ -1421,9 +1426,15 @@
- return err;
- }
-
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)
- static s32
- wl_cfg80211_get_station(struct wiphy *wiphy, struct net_device *dev,
- u8 *mac, struct station_info *sinfo)
-+#else
-+static s32
-+wl_cfg80211_get_station(struct wiphy *wiphy, struct net_device *dev,
-+ const u8 *mac, struct station_info *sinfo)
-+#endif
- {
- struct wl_cfg80211_priv *wl = wiphy_to_wl(wiphy);
- scb_val_t scb_val;
-@@ -2010,9 +2021,15 @@
-
- notify_ie = (u8 *)bi + le16_to_cpu(bi->ie_offset);
- notify_ielen = le32_to_cpu(bi->ie_length);
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0)
- cbss = cfg80211_inform_bss(wiphy, channel, (const u8 *)(bi->BSSID.octet),
- 0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int,
- (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL);
-+#else
-+ cbss = cfg80211_inform_bss(wiphy, channel, CFG80211_BSS_FTYPE_UNKNOWN, (const u8 *)(bi->BSSID.octet),
-+ 0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int,
-+ (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL);
-+#endif
-
- if (unlikely(!cbss))
- return -ENOMEM;
-@@ -2071,7 +2088,26 @@
- wl_get_assoc_ies(wl);
- memcpy(&wl->bssid, &e->addr, ETHER_ADDR_LEN);
- wl_update_bss_info(wl);
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)
-+ {
-+ struct wl_bss_info *bi;
-+ u16 bss_info_channel;
-+ struct ieee80211_channel *channel;
-+ u32 freq;
-+
-+ bi = (struct wl_bss_info *)(wl->extra_buf + 4);
-+ bss_info_channel = bi->ctl_ch ? bi->ctl_ch : CHSPEC_CHANNEL(bi->chanspec);
-+
-+ freq = ieee80211_channel_to_frequency(bss_info_channel,
-+ (bss_info_channel <= CH_MAX_2G_CHANNEL) ?
-+ IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ);
-+
-+ channel = ieee80211_get_channel(wl_to_wiphy(wl), freq);
-+ cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, channel, GFP_KERNEL);
-+ }
-+#else
- cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, GFP_KERNEL);
-+#endif
- set_bit(WL_STATUS_CONNECTED, &wl->status);
- wl->profile->active = true;
- }
-@@ -2629,7 +2665,15 @@
-
- void wl_cfg80211_detach(struct net_device *ndev)
- {
-- struct wl_cfg80211_priv *wl = ndev_to_wl(ndev);
-+ struct wl_cfg80211_priv *wl;
-+ struct wireless_dev *wdev;
-+
-+ wdev = ndev->ieee80211_ptr;
-+ if (wdev == NULL) {
-+ printk(KERN_ERR "[%s()] in ndev=%p: IEEE80211ptr=%p\n", __FUNCTION__, ndev, wdev);
-+ return;
-+ }
-+ wl = ndev_to_wl(ndev);
-
- wl_deinit_cfg80211_priv(wl);
- wl_free_wdev(wl);
---- a/src/wl/sys/wl_cfg80211_hybrid.c 2015-03-16 14:39:29.899350026 +0100
-+++ b/src/wl/sys/wl_cfg80211_hybrid.c 2015-03-16 14:39:06.732682365 +0100
-@@ -1452,7 +1452,11 @@
- WL_DBG(("Could not get rate (%d)\n", err));
- } else {
- rate = dtoh32(rate);
-+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)
-+ sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE);
-+ #else
- sinfo->filled |= STATION_INFO_TX_BITRATE;
-+ #endif
- sinfo->txrate.legacy = rate * 5;
- WL_DBG(("Rate %d Mbps\n", (rate / 2)));
- }
-@@ -1465,7 +1469,11 @@
- return err;
- }
- rssi = dtoh32(scb_val.val);
-+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)
-+ sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
-+ #else
- sinfo->filled |= STATION_INFO_SIGNAL;
-+ #endif
- sinfo->signal = rssi;
- WL_DBG(("RSSI %d dBm\n", rssi));
- }
---- a/src/wl/sys/wl_dbg.h 2014-06-26 10:42:08.000000000 +0000
-+++ b/src/wl/sys/wl_dbg.h 2014-12-30 17:02:03.840957429 +0000
-@@ -55,10 +55,12 @@
-
- #define WL_NONE(args)
-
-+#define FORCE_TRACE_LEVEL(fmt, ...) do { printk(KERN_ERR fmt, ## __VA_ARGS__); } while (0) /* ## is GCC specific syntax to remove comma when single arg */
-+
- #ifdef BCMDBG_ERR
- #define WL_ERROR(args) WL_PRINT(args)
- #else
--#define WL_ERROR(args)
-+#define WL_ERROR(args) FORCE_TRACE_LEVEL args
- #endif
- #define WL_TRACE(args)
- #define WL_APSTA_UPDN(args)
---- a/src/wl/sys/wl_linux.c 2014-06-26 10:42:08.000000000 +0000
-+++ b/src/wl/sys/wl_linux.c 2014-12-30 17:02:03.841957446 +0000
-@@ -878,7 +878,7 @@ wl_remove(struct pci_dev *pdev)
- static SIMPLE_DEV_PM_OPS(wl_pm_ops, wl_suspend, wl_resume);
- #endif
-
--static struct pci_driver wl_pci_driver = {
-+static struct pci_driver wl_pci_driver __refdata = {
- .name = "wl",
- .probe = wl_pci_probe,
- .remove = __devexit_p(wl_remove),
-@@ -1270,6 +1270,7 @@ wl_free_if(wl_info_t *wl, wl_if_t *wlif)
- MFREE(wl->osh, wlif->dev, sizeof(struct net_device));
- #else
- free_netdev(wlif->dev);
-+ wlif->dev = NULL;
- #endif
- }
-
-@@ -1307,7 +1308,12 @@ wl_alloc_linux_if(wl_if_t *wlif)
- dev->priv = priv_link;
- #else
-
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0))
- dev = alloc_netdev(sizeof(priv_link_t), intf_name, ether_setup);
-+#else
-+ dev = alloc_netdev(sizeof(priv_link_t), intf_name, NET_NAME_UNKNOWN,
-+ ether_setup);
-+#endif
- if (!dev) {
- WL_ERROR(("wl%d: %s: alloc_netdev failed\n",
- (wl->pub)?wl->pub->unit:wlif->subunit, __FUNCTION__));
-@@ -1651,11 +1657,7 @@ wl_ioctl(struct net_device *dev, struct
- }
-
- WL_LOCK(wl);
-- if (!capable(CAP_NET_ADMIN)) {
-- bcmerror = BCME_EPERM;
-- } else {
-- bcmerror = wlc_ioctl(wl->wlc, ioc.cmd, buf, ioc.len, wlif->wlcif);
-- }
-+ bcmerror = wlc_ioctl(wl->wlc, ioc.cmd, buf, ioc.len, wlif->wlcif);
- WL_UNLOCK(wl);
-
- done1:
-@@ -2157,8 +2159,8 @@ wl_start(struct sk_buff *skb, struct net
- wlif = WL_DEV_IF(dev);
- wl = WL_INFO(dev);
-
-+ skb->prev = NULL;
- if (WL_ALL_PASSIVE_ENAB(wl) || (WL_RTR() && WL_CONFIG_SMP())) {
-- skb->prev = NULL;
-
- TXQ_LOCK(wl);
-
-@@ -2455,8 +2457,10 @@ wl_monitor(wl_info_t *wl, wl_rxsts_t *rx
- p80211msg_t *phdr;
-
- len = sizeof(p80211msg_t) + oskb->len - D11_PHY_HDR_LEN;
-- if ((skb = dev_alloc_skb(len)) == NULL)
-+ if ((skb = dev_alloc_skb(len)) == NULL) {
-+ WL_ERROR(("in %s:%d [%s()] dev_alloc_skb() failure!", __FILE__, __LINE__, __FUNCTION__));
- return;
-+ }
-
- skb_put(skb, len);
- phdr = (p80211msg_t*)skb->data;
-@@ -2535,8 +2539,10 @@ wl_monitor(wl_info_t *wl, wl_rxsts_t *rx
- rtap_len = sizeof(wl_radiotap_ht_brcm_2_t);
-
- len = rtap_len + (oskb->len - D11_PHY_HDR_LEN);
-- if ((skb = dev_alloc_skb(len)) == NULL)
-+ if ((skb = dev_alloc_skb(len)) == NULL) {
-+ WL_ERROR(("in %s:%d [%s()] dev_alloc_skb() failure!", __FILE__, __LINE__, __FUNCTION__));
- return;
-+ }
-
- skb_put(skb, len);
-
-@@ -2664,8 +2670,10 @@ wl_monitor(wl_info_t *wl, wl_rxsts_t *rx
- len += amsdu_len;
- }
-
-- if ((skb = dev_alloc_skb(len)) == NULL)
-+ if ((skb = dev_alloc_skb(len)) == NULL) {
-+ WL_ERROR(("in %s:%d [%s()] dev_alloc_skb() failure!", __FILE__, __LINE__, __FUNCTION__));
- return;
-+ }
-
- skb_put(skb, len);
-
-@@ -2990,7 +2998,7 @@ _wl_del_monitor(wl_task_t *task)
- }
-
- void
--wl_set_monitor(wl_info_t *wl, int val)
-+wl_set_monitor(wl_info_t *wl, int val) /* public => is called by wlc_hybrid.o_shipped */
- {
- const char *devname;
- wl_if_t *wlif;
-@@ -3224,42 +3232,75 @@ wl_linux_watchdog(void *ctx)
- #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
- static int
- wl_proc_read(char *buffer, char **start, off_t offset, int length, int *eof, void *data)
-+{
-+ wl_info_t * wl = (wl_info_t *)data;
- #else
- static ssize_t
--wl_proc_read(struct file *filp, char __user *buffer, size_t length, loff_t *data)
--#endif
-+wl_proc_read(struct file *filp, char __user *buffer, size_t length, loff_t *offp)
- {
-- wl_info_t * wl = (wl_info_t *)data;
-- int to_user;
-- int len;
-+ wl_info_t * wl = PDE_DATA(file_inode(filp));
-+#endif
-+ int bcmerror, len;
-+ int to_user = 0;
-+ char tmp[8];
-
- #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
- if (offset > 0) {
- *eof = 1;
- return 0;
- }
-+#else
-+ if (*offp > 0) { /* for example, stop: cat /proc/brcm_monitor0 */
-+ return 0; /* 0 <=> EOF */
-+ }
- #endif
-
-- if (!length) {
-- WL_ERROR(("%s: Not enough return buf space\n", __FUNCTION__));
-- return 0;
-- }
- WL_LOCK(wl);
-- wlc_ioctl(wl->wlc, WLC_GET_MONITOR, &to_user, sizeof(int), NULL);
-- len = sprintf(buffer, "%d\n", to_user);
-- WL_UNLOCK(wl);
-- return len;
-+ bcmerror = wlc_ioctl(wl->wlc, WLC_GET_MONITOR, &to_user, sizeof(int), NULL);
-+ WL_UNLOCK(wl);
-+
-+ if (bcmerror != BCME_OK) {
-+ WL_ERROR(("%s: GET_MONITOR failed with %d\n", __FUNCTION__, bcmerror));
-+ return -EIO;
-+ }
-+
-+ len = snprintf(tmp, ARRAY_SIZE(tmp), "%d\n", to_user);
-+ tmp[ARRAY_SIZE(tmp) - 1] = '\0';
-+ if (len >= ARRAY_SIZE(tmp)) {
-+ printk(KERN_ERR "%s:%d [%s()] output would be truncated (ret=%d)!", __FILE__, __LINE__, __FUNCTION__, len);
-+ return -ERANGE;
-+ }
-+ else if (len < 0) {
-+ printk(KERN_ERR "%s:%d [%s()] unable to convert value (ret=%d)!", __FILE__, __LINE__, __FUNCTION__, len);
-+ return len;
-+ }
-+ if (length < len) {
-+ printk(KERN_ERR "%s:%d [%s()] user buffer is too small (at least=%d ; user=%d)!", __FILE__, __LINE__, __FUNCTION__, len, (int)length);
-+ return -EMSGSIZE;
-+ }
-+ if (copy_to_user(buffer, tmp, len) != 0) {
-+ printk(KERN_ERR "%s:%d [%s()] unable to copy data!", __FILE__, __LINE__, __FUNCTION__);
-+ return -EFAULT;
-+ }
-+
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)
-+ *offp += len;
-+#endif
-+
-+ return len;
- }
-
- #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
- static int
- wl_proc_write(struct file *filp, const char *buff, unsigned long length, void *data)
-+{
-+ wl_info_t * wl = (wl_info_t *)data;
- #else
- static ssize_t
--wl_proc_write(struct file *filp, const char __user *buff, size_t length, loff_t *data)
--#endif
-+wl_proc_write(struct file *filp, const char __user *buff, size_t length, loff_t *offp)
- {
-- wl_info_t * wl = (wl_info_t *)data;
-+ wl_info_t * wl = PDE_DATA(file_inode(filp));
-+#endif
- int from_user = 0;
- int bcmerror;
-
-@@ -3270,7 +3311,11 @@ wl_proc_write(struct file *filp, const c
- }
- if (copy_from_user(&from_user, buff, 1)) {
- WL_ERROR(("%s: copy from user failed\n", __FUNCTION__));
-- return -EIO;
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
-+ return -EIO;
-+#else
-+ return -EFAULT;
-+#endif
- }
-
- if (from_user >= 0x30)
-@@ -3280,10 +3325,15 @@ wl_proc_write(struct file *filp, const c
- bcmerror = wlc_ioctl(wl->wlc, WLC_SET_MONITOR, &from_user, sizeof(int), NULL);
- WL_UNLOCK(wl);
-
-- if (bcmerror < 0) {
-+ if (bcmerror != BCME_OK) {
- WL_ERROR(("%s: SET_MONITOR failed with %d\n", __FUNCTION__, bcmerror));
- return -EIO;
- }
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)) && 0 /* no need to update offset because this file should only trigger action... */
-+ *offp += length;
-+#endif
-+
- return length;
- }
-
-@@ -3304,8 +3354,8 @@ wl_reg_proc_entry(wl_info_t *wl)
- if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) {
- WL_ERROR(("%s: create_proc_entry %s failed\n", __FUNCTION__, tmp));
- #else
-- if ((wl->proc_entry = proc_create(tmp, 0644, NULL, &wl_fops)) == NULL) {
-- WL_ERROR(("%s: proc_create %s failed\n", __FUNCTION__, tmp));
-+ if ((wl->proc_entry = proc_create_data(tmp, 0644, NULL, &wl_fops, wl)) == NULL) {
-+ WL_ERROR(("%s: proc_create_data %s failed\n", __FUNCTION__, tmp));
- #endif
- ASSERT(0);
- return -1;
---- a/src/wl/sys/wl_cfg80211_hybrid.c 2015-06-11 10:54:19.000000000 -0600
-+++ b/src/wl/sys/wl_cfg80211_hybrid.c 2015-08-16 14:13:19.886705389 -0600
-@@ -2072,7 +2072,11 @@ wl_notify_connect_status(struct wl_cfg80
- }
- else if ((event == WLC_E_LINK && ~(flags & WLC_EVENT_MSG_LINK)) ||
- event == WLC_E_DEAUTH_IND || event == WLC_E_DISASSOC_IND) {
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0)
- cfg80211_disconnected(ndev, 0, NULL, 0, GFP_KERNEL);
-+#else
-+ cfg80211_disconnected(ndev, 0, NULL, 0, false, GFP_KERNEL);
-+#endif
- clear_bit(WL_STATUS_CONNECTED, &wl->status);
- wl_link_down(wl);
- wl_init_prof(wl->profile);