diff options
-rw-r--r-- | .SRCINFO | 4 | ||||
-rw-r--r-- | PKGBUILD | 7 | ||||
-rw-r--r-- | linux412.patch | 68 |
3 files changed, 76 insertions, 3 deletions
@@ -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 @@ -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); |