summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO4
-rw-r--r--PKGBUILD7
-rw-r--r--linux412.patch68
3 files changed, 76 insertions, 3 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 444a6eeb12c4..62789afd4bdb 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = broadcom-wl
pkgdesc = Broadcom 802.11abgn hybrid Linux networking device driver
pkgver = 6.30.223.271
- pkgrel = 5
+ pkgrel = 6
url = https://www.broadcom.com/support/802.11
install = install
arch = i686
@@ -15,12 +15,14 @@ pkgbase = broadcom-wl
source = linux47.patch
source = linux48.patch
source = linux411.patch
+ source = linux412.patch
sha256sums = b4aca51ac5ed20cb79057437be7baf3650563b7a9d5efc515f0b9b34fbb9dc32
sha256sums = 2f70be509aac743bec2cc3a19377be311a60a1c0e4a70ddd63ea89fae5df08ac
sha256sums = 583335a6edb2ed1094977c401643d3e60471c6bc5c3ea81f45910a9cccb06032
sha256sums = 30ce1d5e8bf78aee487d0f3ac76756e1060777f70ed1a9cf95215c3a52cfbe2e
sha256sums = 833af3b209d6a101d9094db16480bda2ad9a85797059b0ae0b13235ad3818e9c
sha256sums = 977b1663ce055860b0b60e7cf882658f507d81909f935d1a8b785896f64176e8
+ sha256sums = a3d13e8abb96ad440dbfae29acae82d31d1ced2ea62052f1efb2c3c4add347ce
source_i686 = https://docs.broadcom.com/docs-and-downloads/docs/linux_sta/hybrid-v35-nodebug-pcoem-6_30_223_271.tar.gz
sha256sums_i686 = 4f8b70b293ac8cc5c70e571ad5d1878d0f29d133a46fe7869868d9c19b5058cd
source_x86_64 = https://docs.broadcom.com/docs-and-downloads/docs/linux_sta/hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz
diff --git a/PKGBUILD b/PKGBUILD
index a1fc7ed834c6..b4ba97c6d0c1 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -6,7 +6,7 @@
pkgname=broadcom-wl
pkgver=6.30.223.271
-pkgrel=5
+pkgrel=6
pkgdesc='Broadcom 802.11abgn hybrid Linux networking device driver'
url='https://www.broadcom.com/support/802.11'
@@ -22,6 +22,7 @@ source=('modprobe.d'
'linux47.patch'
'linux48.patch'
'linux411.patch'
+ 'linux412.patch'
)
source_i686=("https://docs.broadcom.com/docs-and-downloads/docs/linux_sta/hybrid-v35-nodebug-pcoem-${pkgver//./_}.tar.gz")
@@ -31,7 +32,8 @@ sha256sums=('b4aca51ac5ed20cb79057437be7baf3650563b7a9d5efc515f0b9b34fbb9dc32'
'583335a6edb2ed1094977c401643d3e60471c6bc5c3ea81f45910a9cccb06032'
'30ce1d5e8bf78aee487d0f3ac76756e1060777f70ed1a9cf95215c3a52cfbe2e'
'833af3b209d6a101d9094db16480bda2ad9a85797059b0ae0b13235ad3818e9c'
- '977b1663ce055860b0b60e7cf882658f507d81909f935d1a8b785896f64176e8')
+ '977b1663ce055860b0b60e7cf882658f507d81909f935d1a8b785896f64176e8'
+ 'a3d13e8abb96ad440dbfae29acae82d31d1ced2ea62052f1efb2c3c4add347ce')
sha256sums_i686=('4f8b70b293ac8cc5c70e571ad5d1878d0f29d133a46fe7869868d9c19b5058cd')
sha256sums_x86_64=('5f79774d5beec8f7636b59c0fb07a03108eef1e3fd3245638b20858c714144be')
@@ -46,6 +48,7 @@ prepare() {
patch -p1 -i linux47.patch
patch -p1 -i linux48.patch
patch -p1 -i linux411.patch
+ patch -p1 -i linux412.patch
sed -e "/BRCM_WLAN_IFNAME/s:eth:wlan:" \
-i src/wl/sys/wl_linux.c
diff --git a/linux412.patch b/linux412.patch
new file mode 100644
index 000000000000..8abc73db4db1
--- /dev/null
+++ b/linux412.patch
@@ -0,0 +1,68 @@
+diff --git a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c
+index da36405..d3741eb 100644
+--- a/src/wl/sys/wl_cfg80211_hybrid.c
++++ b/src/wl/sys/wl_cfg80211_hybrid.c
+@@ -53,7 +53,11 @@ u32 wl_dbg_level = WL_DBG_ERR;
+ #endif
+
+ static s32 wl_cfg80211_change_iface(struct wiphy *wiphy, struct net_device *ndev,
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
++ enum nl80211_iftype type, struct vif_params *params);
++#else
+ enum nl80211_iftype type, u32 *flags, struct vif_params *params);
++#endif
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)
+ static s32
+ wl_cfg80211_scan(struct wiphy *wiphy,
+@@ -466,7 +470,11 @@ wl_dev_ioctl(struct net_device *dev, u32 cmd, void *arg, u32 len)
+
+ static s32
+ wl_cfg80211_change_iface(struct wiphy *wiphy, struct net_device *ndev,
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
++ enum nl80211_iftype type,
++#else
+ enum nl80211_iftype type, u32 *flags,
++#endif
+ struct vif_params *params)
+ {
+ struct wl_cfg80211_priv *wl = wiphy_to_wl(wiphy);
+@@ -2361,6 +2369,20 @@ wl_bss_roaming_done(struct wl_cfg80211_priv *wl, struct net_device *ndev,
+ const wl_event_msg_t *e, void *data)
+ {
+ struct wl_cfg80211_connect_info *conn_info = wl_to_conn(wl);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
++ struct cfg80211_bss *bss;
++ struct wlc_ssid *ssid;
++ ssid = &wl->profile->ssid;
++ bss = cfg80211_get_bss(wl_to_wiphy(wl), NULL, (s8 *)&wl->bssid,
++ ssid->SSID, ssid->SSID_len, WLAN_CAPABILITY_ESS, WLAN_CAPABILITY_ESS);
++ struct cfg80211_roam_info roam_info = {
++ .bss = bss,
++ .req_ie = conn_info->req_ie,
++ .req_ie_len = conn_info->req_ie_len,
++ .resp_ie = conn_info->resp_ie,
++ .resp_ie_len = conn_info->resp_ie_len,
++ };
++#endif
+ s32 err = 0;
+
+ wl_get_assoc_ies(wl);
+@@ -2368,12 +2390,17 @@ wl_bss_roaming_done(struct wl_cfg80211_priv *wl, struct net_device *ndev,
+ memcpy(&wl->bssid, &e->addr, ETHER_ADDR_LEN);
+ wl_update_bss_info(wl);
+ cfg80211_roamed(ndev,
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
++ &roam_info,
++#else
+ #if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)
+ &wl->conf->channel,
+ #endif
+ (u8 *)&wl->bssid,
+ conn_info->req_ie, conn_info->req_ie_len,
+- conn_info->resp_ie, conn_info->resp_ie_len, GFP_KERNEL);
++ conn_info->resp_ie, conn_info->resp_ie_len,
++#endif
++ GFP_KERNEL);
+ WL_DBG(("Report roaming result\n"));
+
+ set_bit(WL_STATUS_CONNECTED, &wl->status);