From 444c4043db9e8f8e965dc38ad7fdef38e5c0cef9 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Mon, 24 Jul 2017 19:58:56 +0100 Subject: broadcom-sta-dkms : patch for Linux 4.12 changes --- sys-kernel/broadcom-sta-dkms/Manifest | 6 +- .../broadcom-sta-dkms-6.30.223.271-r1706.ebuild | 5 +- .../broadcom-sta-6.30.223.271-r3-linux-4.7.patch | 14 --- .../broadcom-sta-6.30.223.271-r4-linux-4.11.patch | 52 ++++++++++ .../broadcom-sta-6.30.223.271-r4-linux-4.12.patch | 64 ++++++++++++ .../broadcom-sta-6.30.223.271-r4-linux-4.7.patch | 109 +++++++++++++++++++++ .../broadcom-sta-6.30.223.271-r4-linux-4.8.patch | 64 ++++++++++++ 7 files changed, 296 insertions(+), 18 deletions(-) delete mode 100644 sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r3-linux-4.7.patch create mode 100644 sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r4-linux-4.11.patch create mode 100644 sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r4-linux-4.12.patch create mode 100644 sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r4-linux-4.7.patch create mode 100644 sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r4-linux-4.8.patch (limited to 'sys-kernel/broadcom-sta-dkms') diff --git a/sys-kernel/broadcom-sta-dkms/Manifest b/sys-kernel/broadcom-sta-dkms/Manifest index 7c91415d..a88de488 100644 --- a/sys-kernel/broadcom-sta-dkms/Manifest +++ b/sys-kernel/broadcom-sta-dkms/Manifest @@ -1,3 +1,3 @@ -DIST README-broadcom-sta-dkms-6.30.223.271.txt 16755 SHA256 4d6d63f6eb40f84359be06f1f6f26075827a0d25cdaa364d8ccb6561bf162e34 SHA512 ce277af132b656705aee3f8072d1082bfd2a1b7c63a9e330a470546437d4034e7964c64a4f9c326bf15c5f74b9c09a56d720542a41e5ae6e0d42d335488f31f5 WHIRLPOOL 3a544132315cbbc633ac6b6102d71109fea3b9e7742c299f2fe403ecc43206380051c91353c4d79033ac1939fe862b84cb8e435f06687af804fdc2ad5619beb7 -DIST hybrid-v35-nodebug-pcoem-6_30_223_271.tar.gz 2869247 SHA256 4f8b70b293ac8cc5c70e571ad5d1878d0f29d133a46fe7869868d9c19b5058cd SHA512 0361ba30d97bcb1dedf46c11ef1b9a16f09cde3faa6be87b3ccc28679f34183c2fdf511e7c3b5c26b304f6961da454ccf71844b92bbb2f25aa876249496a2f1b WHIRLPOOL c96c21e4d497136c4ac5a8f3f1d3e84a7b5f5478ca7c1276262481d66b919639f475b99783ad993c01c94e380275fdd6eb39dd53f224b43912f7a395cada575c -DIST hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz 2928541 SHA256 5f79774d5beec8f7636b59c0fb07a03108eef1e3fd3245638b20858c714144be SHA512 6855781f7c69a9aecb9461932423688964879d5a4df571f01ae7adaa7bf21a410bef839605d555afb6c8f4eec92fe8510af6cb120930095617ff6cdcccedaf17 WHIRLPOOL 8a905a35581f5c4a1177a3da7356731a360ba5c72e2897d363682afc49b73c46b031776012bba983842b894505d71e6f20f9404120b676e0b79b9ef003342e56 +DIST README-broadcom-sta-dkms-6.30.223.271.txt 102 SHA256 fca823b798143b6b7bc24fceaa404073a363b7bd8089e1a033625e3a756d1b01 SHA512 ca1bda36ee07d00d40fc7a336c10058c01d7454d96b8dd7bbaef5ca1b4762af9746b939300ff2b57f42aed73243f1c6aff7cb731b183a6a2f797a1c181da90d5 WHIRLPOOL 018ceb1f652bf52fdce2a4f232cbb5fbcf013a3550447f341da9f698ac37d8654cd41181db2047939cf04c205225445ed05e55aecf2b98f8fc23ac4eeef4a591 +DIST hybrid-v35-nodebug-pcoem-6_30_223_271.tar.gz 102 SHA256 fca823b798143b6b7bc24fceaa404073a363b7bd8089e1a033625e3a756d1b01 SHA512 ca1bda36ee07d00d40fc7a336c10058c01d7454d96b8dd7bbaef5ca1b4762af9746b939300ff2b57f42aed73243f1c6aff7cb731b183a6a2f797a1c181da90d5 WHIRLPOOL 018ceb1f652bf52fdce2a4f232cbb5fbcf013a3550447f341da9f698ac37d8654cd41181db2047939cf04c205225445ed05e55aecf2b98f8fc23ac4eeef4a591 +DIST hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz 102 SHA256 fca823b798143b6b7bc24fceaa404073a363b7bd8089e1a033625e3a756d1b01 SHA512 ca1bda36ee07d00d40fc7a336c10058c01d7454d96b8dd7bbaef5ca1b4762af9746b939300ff2b57f42aed73243f1c6aff7cb731b183a6a2f797a1c181da90d5 WHIRLPOOL 018ceb1f652bf52fdce2a4f232cbb5fbcf013a3550447f341da9f698ac37d8654cd41181db2047939cf04c205225445ed05e55aecf2b98f8fc23ac4eeef4a591 diff --git a/sys-kernel/broadcom-sta-dkms/broadcom-sta-dkms-6.30.223.271-r1706.ebuild b/sys-kernel/broadcom-sta-dkms/broadcom-sta-dkms-6.30.223.271-r1706.ebuild index 566d93ed..e03f2e03 100644 --- a/sys-kernel/broadcom-sta-dkms/broadcom-sta-dkms-6.30.223.271-r1706.ebuild +++ b/sys-kernel/broadcom-sta-dkms/broadcom-sta-dkms-6.30.223.271-r1706.ebuild @@ -32,7 +32,10 @@ src_prepare() { "${FILESDIR}/broadcom-sta-6.30.223.248-r3-Wno-date-time.patch" \ "${FILESDIR}/broadcom-sta-6.30.223.271-r1-linux-3.18.patch" \ "${FILESDIR}/broadcom-sta-6.30.223.271-r2-linux-4.3-v2.patch" \ - "${FILESDIR}/broadcom-sta-6.30.223.271-r3-linux-4.7.patch" + "${FILESDIR}/broadcom-sta-6.30.223.271-r4-linux-4.7.patch" \ + "${FILESDIR}/broadcom-sta-6.30.223.271-r4-linux-4.8.patch" \ + "${FILESDIR}/broadcom-sta-6.30.223.271-r4-linux-4.11.patch" \ + "${FILESDIR}/broadcom-sta-6.30.223.271-r4-linux-4.12.patch" epatch_user } diff --git a/sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r3-linux-4.7.patch b/sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r3-linux-4.7.patch deleted file mode 100644 index 55b30e34..00000000 --- a/sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r3-linux-4.7.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- a/src/wl/sys/wl_cfg80211_hybrid.c 2016-08-20 17:19:11.285578121 +0200 -+++ b/src/wl/sys/wl_cfg80211_hybrid.c 2016-08-20 17:20:55.611574041 +0200 -@@ -49,6 +49,11 @@ - u32 wl_dbg_level = WL_DBG_ERR; - #endif - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0) -+#define IEEE80211_BAND_2GHZ NL80211_BAND_2GHZ -+#define IEEE80211_BAND_5GHZ NL80211_BAND_5GHZ -+#endif -+ - static s32 wl_cfg80211_change_iface(struct wiphy *wiphy, struct net_device *ndev, - enum nl80211_iftype type, u32 *flags, struct vif_params *params); - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) diff --git a/sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r4-linux-4.11.patch b/sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r4-linux-4.11.patch new file mode 100644 index 00000000..a779f8c8 --- /dev/null +++ b/sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r4-linux-4.11.patch @@ -0,0 +1,52 @@ +diff --git a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c +index a9671e2..da36405 100644 +--- a/src/wl/sys/wl_cfg80211_hybrid.c ++++ b/src/wl/sys/wl_cfg80211_hybrid.c +@@ -30,6 +30,9 @@ + #include + #include + #include ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) ++#include ++#endif + #include + #include + #include +diff --git a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c +index 489c9f5..f8278ad 100644 +--- a/src/wl/sys/wl_linux.c ++++ b/src/wl/sys/wl_linux.c +@@ -117,6 +117,9 @@ int wl_found = 0; + + typedef struct priv_link { + wl_if_t *wlif; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) ++ unsigned long last_rx; ++#endif + } priv_link_t; + + #define WL_DEV_IF(dev) ((wl_if_t*)((priv_link_t*)DEV_PRIV(dev))->wlif) +@@ -2450,6 +2453,9 @@ wl_monitor(wl_info_t *wl, wl_rxsts_t *rxsts, void *p) + { + struct sk_buff *oskb = (struct sk_buff *)p; + struct sk_buff *skb; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) ++ priv_link_t *priv_link; ++#endif + uchar *pdata; + uint len; + +@@ -2916,7 +2922,13 @@ wl_monitor(wl_info_t *wl, wl_rxsts_t *rxsts, void *p) + if (skb == NULL) return; + + skb->dev = wl->monitor_dev; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) ++ priv_link = MALLOC(wl->osh, sizeof(priv_link_t)); ++ priv_link = netdev_priv(skb->dev); ++ priv_link->last_rx = jiffies; ++#else + skb->dev->last_rx = jiffies; ++#endif + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22) + skb_reset_mac_header(skb); + #else diff --git a/sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r4-linux-4.12.patch b/sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r4-linux-4.12.patch new file mode 100644 index 00000000..94c6253f --- /dev/null +++ b/sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r4-linux-4.12.patch @@ -0,0 +1,64 @@ +diff -ru work.orig/src/wl/sys/wl_cfg80211_hybrid.c work.patched/src/wl/sys/wl_cfg80211_hybrid.c +--- work.orig/src/wl/sys/wl_cfg80211_hybrid.c 2017-06-10 15:50:27.328823384 -0700 ++++ work.patched/src/wl/sys/wl_cfg80211_hybrid.c 2017-06-10 15:52:40.540809187 -0700 +@@ -52,8 +52,13 @@ + u32 wl_dbg_level = WL_DBG_ERR; + #endif + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) ++static s32 wl_cfg80211_change_iface(struct wiphy *wiphy, struct net_device *ndev, ++ enum nl80211_iftype type, struct vif_params *params); ++#else + static s32 wl_cfg80211_change_iface(struct wiphy *wiphy, struct net_device *ndev, + 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 +471,11 @@ + + 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,12 +2370,26 @@ + 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_roam_info roam_info = {}; ++#endif + s32 err = 0; + + wl_get_assoc_ies(wl); + memcpy(wl->profile->bssid, &e->addr, ETHER_ADDR_LEN); + memcpy(&wl->bssid, &e->addr, ETHER_ADDR_LEN); + wl_update_bss_info(wl); ++ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) ++ roam_info.channel = &wl->conf->channel, ++ roam_info.bssid = (u8 *)&wl->bssid, ++ roam_info.req_ie = conn_info->req_ie, ++ roam_info.req_ie_len = conn_info->req_ie_len, ++ roam_info.resp_ie = conn_info->resp_ie, ++ roam_info.resp_ie_len = conn_info->resp_ie_len, ++ ++ cfg80211_roamed(ndev, &roam_info, GFP_KERNEL); ++#else + cfg80211_roamed(ndev, + #if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39) + &wl->conf->channel, +@@ -2374,6 +2397,7 @@ + (u8 *)&wl->bssid, + conn_info->req_ie, conn_info->req_ie_len, + conn_info->resp_ie, conn_info->resp_ie_len, GFP_KERNEL); ++#endif + WL_DBG(("Report roaming result\n")); + + set_bit(WL_STATUS_CONNECTED, &wl->status); diff --git a/sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r4-linux-4.7.patch b/sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r4-linux-4.7.patch new file mode 100644 index 00000000..566680a0 --- /dev/null +++ b/sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r4-linux-4.7.patch @@ -0,0 +1,109 @@ +Since Linux 4.7, the enum ieee80211_band is no longer used + +This shall cause no problem's since both enums ieee80211_band +and nl80211_band were added in the same commit: +https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=13ae75b103e07304a34ab40c9136e9f53e06475c + +This patch refactors the references of IEEE80211_BAND_* to NL80211_BAND_* + +Reference: +https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=57fbcce37be7c1d2622b56587c10ade00e96afa3 + +--- a/src/wl/sys/wl_cfg80211_hybrid.c 2016-06-13 11:57:36.159340297 -0500 ++++ b/src/wl/sys/wl_cfg80211_hybrid.c 2016-06-13 11:58:18.442323435 -0500 +@@ -236,7 +236,7 @@ + #endif + + #define CHAN2G(_channel, _freq, _flags) { \ +- .band = IEEE80211_BAND_2GHZ, \ ++ .band = NL80211_BAND_2GHZ, \ + .center_freq = (_freq), \ + .hw_value = (_channel), \ + .flags = (_flags), \ +@@ -245,7 +245,7 @@ + } + + #define CHAN5G(_channel, _flags) { \ +- .band = IEEE80211_BAND_5GHZ, \ ++ .band = NL80211_BAND_5GHZ, \ + .center_freq = 5000 + (5 * (_channel)), \ + .hw_value = (_channel), \ + .flags = (_flags), \ +@@ -379,7 +379,7 @@ + }; + + static struct ieee80211_supported_band __wl_band_2ghz = { +- .band = IEEE80211_BAND_2GHZ, ++ .band = NL80211_BAND_2GHZ, + .channels = __wl_2ghz_channels, + .n_channels = ARRAY_SIZE(__wl_2ghz_channels), + .bitrates = wl_g_rates, +@@ -387,7 +387,7 @@ + }; + + static struct ieee80211_supported_band __wl_band_5ghz_a = { +- .band = IEEE80211_BAND_5GHZ, ++ .band = NL80211_BAND_5GHZ, + .channels = __wl_5ghz_a_channels, + .n_channels = ARRAY_SIZE(__wl_5ghz_a_channels), + .bitrates = wl_a_rates, +@@ -395,7 +395,7 @@ + }; + + static struct ieee80211_supported_band __wl_band_5ghz_n = { +- .band = IEEE80211_BAND_5GHZ, ++ .band = NL80211_BAND_5GHZ, + .channels = __wl_5ghz_n_channels, + .n_channels = ARRAY_SIZE(__wl_5ghz_n_channels), + .bitrates = wl_a_rates, +@@ -1876,8 +1876,8 @@ + wdev->wiphy->max_num_pmkids = WL_NUM_PMKIDS_MAX; + #endif + wdev->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | BIT(NL80211_IFTYPE_ADHOC); +- wdev->wiphy->bands[IEEE80211_BAND_2GHZ] = &__wl_band_2ghz; +- wdev->wiphy->bands[IEEE80211_BAND_5GHZ] = &__wl_band_5ghz_a; ++ wdev->wiphy->bands[NL80211_BAND_2GHZ] = &__wl_band_2ghz; ++ wdev->wiphy->bands[NL80211_BAND_5GHZ] = &__wl_band_5ghz_a; + wdev->wiphy->signal_type = CFG80211_SIGNAL_TYPE_MBM; + wdev->wiphy->cipher_suites = __wl_cipher_suites; + wdev->wiphy->n_cipher_suites = ARRAY_SIZE(__wl_cipher_suites); +@@ -2000,7 +2000,7 @@ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39) + freq = ieee80211_channel_to_frequency(notif_bss_info->channel, + (notif_bss_info->channel <= CH_MAX_2G_CHANNEL) ? +- IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ); ++ NL80211_BAND_2GHZ : NL80211_BAND_5GHZ); + #else + freq = ieee80211_channel_to_frequency(notif_bss_info->channel); + #endif +@@ -2116,7 +2116,7 @@ + return err; + } + chan = wf_chspec_ctlchan(chanspec); +- band = (chan <= CH_MAX_2G_CHANNEL) ? IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ; ++ band = (chan <= CH_MAX_2G_CHANNEL) ? NL80211_BAND_2GHZ : NL80211_BAND_5GHZ; + freq = ieee80211_channel_to_frequency(chan, band); + channel = ieee80211_get_channel(wiphy, freq); + cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, channel, GFP_KERNEL); +@@ -2250,10 +2250,10 @@ + join_params->params.chanspec_list[0] = + ieee80211_frequency_to_channel(chan->center_freq); + +- if (chan->band == IEEE80211_BAND_2GHZ) { ++ if (chan->band == NL80211_BAND_2GHZ) { + chanspec |= WL_CHANSPEC_BAND_2G; + } +- else if (chan->band == IEEE80211_BAND_5GHZ) { ++ else if (chan->band == NL80211_BAND_5GHZ) { + chanspec |= WL_CHANSPEC_BAND_5G; + } + else { +@@ -2885,7 +2885,7 @@ + + if (phy == 'n' || phy == 'a' || phy == 'v') { + wiphy = wl_to_wiphy(wl); +- wiphy->bands[IEEE80211_BAND_5GHZ] = &__wl_band_5ghz_n; ++ wiphy->bands[NL80211_BAND_5GHZ] = &__wl_band_5ghz_n; + } + + return err; diff --git a/sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r4-linux-4.8.patch b/sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r4-linux-4.8.patch new file mode 100644 index 00000000..20e8a9ae --- /dev/null +++ b/sys-kernel/broadcom-sta-dkms/files/broadcom-sta-6.30.223.271-r4-linux-4.8.patch @@ -0,0 +1,64 @@ +From d3f93542326a06d920c6eb89b703384290d37b8b Mon Sep 17 00:00:00 2001 +From: Alberto Milone +Date: Fri, 2 Sep 2016 17:35:34 +0200 +Subject: [PATCH 1/1] Add support for Linux 4.8 + +Orginal author: Krzysztof Kolasa +--- + src/wl/sys/wl_cfg80211_hybrid.c | 22 ++++++++++++++++++++++ + 1 file changed, 22 insertions(+) + +diff --git a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c +index 2fc71fe..ec5e472 100644 +--- a/src/wl/sys/wl_cfg80211_hybrid.c ++++ b/src/wl/sys/wl_cfg80211_hybrid.c +@@ -2388,8 +2388,16 @@ wl_bss_connect_done(struct wl_cfg80211_priv *wl, struct net_device *ndev, + s32 err = 0; + + if (wl->scan_request) { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) ++ struct cfg80211_scan_info info = { ++ .aborted = true, ++ }; ++ WL_DBG(("%s: Aborting scan\n", __FUNCTION__)); ++ cfg80211_scan_done(wl->scan_request, &info); ++#else + WL_DBG(("%s: Aborting scan\n", __FUNCTION__)); + cfg80211_scan_done(wl->scan_request, true); ++#endif + wl->scan_request = NULL; + } + +@@ -2490,7 +2498,14 @@ wl_notify_scan_status(struct wl_cfg80211_priv *wl, struct net_device *ndev, + + scan_done_out: + if (wl->scan_request) { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) ++ struct cfg80211_scan_info info = { ++ .aborted = false, ++ }; ++ cfg80211_scan_done(wl->scan_request, &info); ++#else + cfg80211_scan_done(wl->scan_request, false); ++#endif + wl->scan_request = NULL; + } + rtnl_unlock(); +@@ -2909,7 +2924,14 @@ s32 wl_cfg80211_down(struct net_device *ndev) + s32 err = 0; + + if (wl->scan_request) { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) ++ struct cfg80211_scan_info info = { ++ .aborted = true, ++ }; ++ cfg80211_scan_done(wl->scan_request, &info); ++#else + cfg80211_scan_done(wl->scan_request, true); ++#endif + wl->scan_request = NULL; + } + +-- +2.7.4 + -- cgit v1.2.3