Package Details: broadcom-wl 6.30.223.271-6

Git Clone URL: https://aur.archlinux.org/broadcom-wl.git (read-only)
Package Base: broadcom-wl
Description: Broadcom 802.11abgn hybrid Linux networking device driver
Upstream URL: https://www.broadcom.com/support/802.11
Keywords: network wireless
Licenses: custom
Submitter: kyrias
Maintainer: Raimar
Last Packager: Raimar
Votes: 65
Popularity: 1.477158
First Submitted: 2015-08-10 02:51
Last Updated: 2017-06-29 22:24

Latest Comments

Raimar commented on 2017-06-29 22:27

@dome22xl Yes, you are right. Now the update has been pushed.

dome22xl commented on 2017-06-28 19:45

Hi Raimar i can't see the linux412.patch in the sources ?

Raimar commented on 2017-06-23 21:26

Added linux412.patch from wichmannpas to be compatible with kernel >= 4.12.0.

wichmannpas commented on 2017-06-20 12:13

I have created a patch for the broadcom-wl module to work with kernel version 4.12:

Since Linux 4.12, the signature of cfg80211_roamed takes
struct cfg80211_roam_info as parameter.
u32 *flags has been removed from the signature of wl_cfg80211_change_iface.

Reference:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v4.12-rc1&id=29ce6ecbb83c9185d76e3a7c340c9702d2a54961

Signed-off-by: Pascal Wichmann <pascal.wichmann at pa-w.de>

diff --git a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c
index 1d8ad8e..6ec791a 100644
--- a/src/wl/sys/wl_cfg80211_hybrid.c
+++ b/src/wl/sys/wl_cfg80211_hybrid.c
@@ -50,8 +50,13 @@ u32 wl_dbg_level = WL_DBG_ERR | WL_DBG_INFO;
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,
@@ -462,10 +467,17 @@ wl_dev_ioctl(struct net_device *dev, u32 cmd, void *arg, u32 len)
return err;
}

+#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
{
struct wl_cfg80211_priv *wl = wiphy_to_wl(wiphy);
struct wireless_dev *wdev;
@@ -2359,19 +2371,37 @@ 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);
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)
cfg80211_roamed(ndev,
#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)
&wl->conf->channel,
-#endif
+#endif /* LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39) */
(u8 *)&wl->bssid,
conn_info->req_ie, conn_info->req_ie_len,
conn_info->resp_ie, conn_info->resp_ie_len, GFP_KERNEL);
+#else
+ cfg80211_roamed(ndev, &roam_info, GFP_KERNEL);
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0) */
WL_DBG(("Report roaming result\n"));

set_bit(WL_STATUS_CONNECTED, &wl->status);

Raimar commented on 2017-05-03 20:18

Added linux411.patch from wichmannpas to be compatible with kernel >= 4.11.0.

wichmannpas commented on 2017-05-02 12:20

I have created a patch for the broadcom-wl module to build with kernel version 4.11 (which can be used for broadcom-wl-dkms[0] as well).

As send_sig and allow_signal now need an include of linux/sched/signal.h, the patch does not build with older kernel versions (where this include does not exist).

$ cat linux411.patch
--- srca/src/wl/sys/wl_cfg80211_hybrid.c 2017-05-02 12:27:40.253557540 +0200
+++ srcg/src/wl/sys/wl_cfg80211_hybrid.c 2017-05-02 13:41:58.252225082 +0200
@@ -30,6 +30,7 @@
#include <linux/kthread.h>
#include <linux/netdevice.h>
#include <linux/ieee80211.h>
+#include <linux/sched/signal.h>
#include <net/cfg80211.h>
#include <linux/nl80211.h>
#include <net/rtnetlink.h>
--- srca/src/wl/sys/wl_linux.c 2017-05-02 12:57:48.890791119 +0200
+++ srcg/src/wl/sys/wl_linux.c 2017-05-02 13:41:53.655498874 +0200
@@ -117,6 +117,7 @@

typedef struct priv_link {
wl_if_t *wlif;
+ unsigned long last_rx;
} priv_link_t;

#define WL_DEV_IF(dev) ((wl_if_t*)((priv_link_t*)DEV_PRIV(dev))->wlif)
@@ -2450,6 +2451,7 @@
{
struct sk_buff *oskb = (struct sk_buff *)p;
struct sk_buff *skb;
+ priv_link_t *priv_link;
uchar *pdata;
uint len;

@@ -2916,7 +2918,11 @@
if (skb == NULL) return;

skb->dev = wl->monitor_dev;
- skb->dev->last_rx = jiffies;
+
+ priv_link = MALLOC(wl->osh, sizeof(priv_link_t));
+ priv_link = netdev_priv(skb->dev);
+
+ priv_link->last_rx = jiffies;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
skb_reset_mac_header(skb);
#else

[0] https://www.archlinux.org/packages/community/x86_64/broadcom-wl-dkms/

jmartl109 commented on 2017-04-17 23:09

Doesn't build on 4.11 (I tried with 4.11-rc2 but assume later rc's don't help):

./arch/x86/include/asm/compat.h: In function ‘arch_compat_alloc_user_space’:
./include/linux/thread_info.h:75:22: warning: passing argument 1 of ‘test_ti_thread_flag’ makes pointer from integer without a cast [-Wint-conversion]
test_ti_thread_flag(current_thread_info(), flag)
^
./arch/x86/include/asm/compat.h:309:6: note: in expansion of macro ‘test_thread_flag’
if (test_thread_flag(TIF_IA32)) {
^~~~~~~~~~~~~~~~
./include/linux/thread_info.h:61:19: note: expected ‘struct thread_info *’ but argument is of type ‘int’
static inline int test_ti_thread_flag(struct thread_info *ti, int flag)
^~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:295: <broadcom-wl dir>/src/src/shared/linux_osl.o] Error 1
make[1]: *** [Makefile:1492: _module_<broadcom-wl dir>/src] Error 2
make[1]: Leaving directory '<kernel source dir>'
make: *** [Makefile:159: all] Error 2

Does anyone know who to contact about getting this patched for the new kernel?

Raimar commented on 2017-04-01 20:55

@MrR060t_104: Currently kernel 4.10.6 works. Try to rebuild this package. As mentioned below using brodcom-wl-dkms is an alternative for an automatic rebuild process.

Raimar commented on 2017-04-01 20:15

@hobarrera: Technically it should be possible to rebuild this package automatically, after the linux kernel has been installed or updated.
In more detail: A solution using the current pacman hook can call a script to build this AUR package, This should look like the example shown at https://www.reddit.com/r/archlinux/comments/55p7mw/force_pacman_to_upgrade_some_packages_through/
To be independend from the concrete used AUR helper tool the PKGBUILD file could be downloaded with wget, build with makepkg and installed with pacman. I wonder, if there is a more elegant way to avoid calling pacman from pacman.

MrR060t_104 commented on 2017-04-01 14:33

Your package seems broken under linux-4.10.

==> Starting prepare()...
patching file src/wl/sys/wl_linux.c
Hunk #1 succeeded at 207 (offset 2 lines).
patching file src/wl/sys/wl_linux.c
patching file src/wl/sys/wl_cfg80211_hybrid.c
patching file src/wl/sys/wl_cfg80211_hybrid.c
==> Starting build()...
make: Entering directory '/usr/lib/modules/4.10.1-1-ARCH/build'
make: *** No targets specified and no makefile found. Stop.
make: Leaving directory '/usr/lib/modules/4.10.1-1-ARCH/build'
==> ERROR: A failure occurred in build().
Aborting...
==> ERROR: Makepkg was unable to build broadcom-wl.

All comments