wok-current rev 20393

Add broadcom-wl64
author Pascal Bellard <pascal.bellard@slitaz.org>
date Mon Jun 25 12:10:04 2018 +0200 (2018-06-25)
parents 34360d1221d9
children 36685884d4f6
files broadcom-wl64/receipt broadcom-wl64/stuff/3.14.0.patch broadcom-wl64/stuff/3.4.0.patch broadcom-wl64/stuff/3.6.0.patch broadcom-wl64/stuff/3.8.0.patch broadcom-wl64/stuff/3.9.0.patch broadcom-wl64/stuff/semaphore.patch
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/broadcom-wl64/receipt	Mon Jun 25 12:10:04 2018 +0200
     1.3 @@ -0,0 +1,52 @@
     1.4 +# SliTaz package receipt.
     1.5 +
     1.6 +PACKAGE="broadcom-wl64"
     1.7 +VERSION="5_100_82_112"
     1.8 +CATEGORY="network"
     1.9 +MAINTAINER="jozee@slitaz.org"
    1.10 +LICENSE="other"
    1.11 +SHORT_DESC="Broadcom 802.11abg Linux STA Networking Drivers"
    1.12 +WEB_SITE="http://www.broadcom.com/support/802.11/linux_sta.php"
    1.13 +TARBALL="hybrid-portsrc_x86_64-v${VERSION}.tar.gz"
    1.14 +WGET_URL="http://www.broadcom.com/docs/linux_sta/$TARBALL"
    1.15 +TAGS="wireless wifi driver"
    1.16 +PROVIDE="broadcom-wl:linux64"
    1.17 +
    1.18 +DEPENDS="linux"
    1.19 +BUILD_DEPENDS="linux64-module-headers xz uclibc-cross-compiler-x86_64"
    1.20 +
    1.21 +AUFS_NOT_RAMFS="uclibc-cross-compiler-x86_64 is not compatible with aufs+tmpfs 8("
    1.22 +
    1.23 +# Rules to configure and make the package.
    1.24 +compile_rules()
    1.25 +{
    1.26 +	sed -i 's|ndo_set_multicast_list|ndo_set_rx_mode|' src/wl/sys/wl_linux.c
    1.27 +	sed -i 's|linux/autoconf.h|generated/autoconf.h|' src/include/linuxver.h
    1.28 +	for i in semaphore 3.4.0 3.6.0 3.8.0 3.9.0 3.14.0 ; do
    1.29 +		echo "patch $i ..."
    1.30 +		patch -Np2 -i $stuff/$i.patch
    1.31 +	done
    1.32 +	KBUILD_NOPEDANTIC=1 make -C /usr/src/linux M=`pwd`
    1.33 +	xz wl.ko
    1.34 +}
    1.35 +
    1.36 +# Rules to gen a SliTaz package suitable for Tazpkg.
    1.37 +genpkg_rules()
    1.38 +{
    1.39 +	EXTRAVERSION=_${kvers}
    1.40 +	mkdir -p $fs/lib/modules/${kvers}-slitaz64/kernel/drivers/net/wireless
    1.41 +	# Compress and install module
    1.42 +	install -o root -m 0644 $src/wl.ko.xz \
    1.43 +		$fs/lib/modules/${kvers}-slitaz64/kernel/drivers/net/wireless/wl.ko.xz
    1.44 +}
    1.45 +
    1.46 +# Post install/remove commands for Tazpkg.
    1.47 +post_install()
    1.48 +{
    1.49 +	chroot "$1/" depmod -a ${EXTRAVERSION#_}-slitaz64
    1.50 +}
    1.51 +
    1.52 +post_remove()
    1.53 +{
    1.54 +	chroot "$1/" depmod -a ${EXTRAVERSION#_}-slitaz64
    1.55 +}
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/broadcom-wl64/stuff/3.14.0.patch	Mon Jun 25 12:10:04 2018 +0200
     2.3 @@ -0,0 +1,103 @@
     2.4 +--- a/amd64/src/wl/sys/wl_linux.c
     2.5 ++++ a/amd64/src/wl/sys/wl_linux.c
     2.6 +@@ -1192,7 +1192,11 @@
     2.7 + #else
     2.8 + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29))
     2.9 + 
    2.10 ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0))
    2.11 + 	dev = alloc_netdev(sizeof(wl_if_t), name, ether_setup);
    2.12 ++#else
    2.13 ++	dev = alloc_netdev(sizeof(wl_if_t), name, NET_NAME_UNKNOWN, ether_setup);
    2.14 ++#endif
    2.15 + 	wlif = netdev_priv(dev);
    2.16 + 	if (!dev) {
    2.17 + #else
    2.18 +@@ -3180,6 +3184,7 @@
    2.19 + {
    2.20 + 	char tmp[32];
    2.21 + 	sprintf(tmp, "%s%d", HYBRID_PROC, wl->pub->unit);
    2.22 ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
    2.23 + 	if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) {
    2.24 + 		WL_ERROR(("%s: create_proc_entry %s failed\n", __FUNCTION__, tmp));
    2.25 + 		ASSERT(0);
    2.26 +@@ -3188,5 +3193,17 @@
    2.27 + 	wl->proc_entry->read_proc = wl_proc_read;
    2.28 + 	wl->proc_entry->write_proc = wl_proc_write;
    2.29 + 	wl->proc_entry->data = wl;
    2.30 ++#else
    2.31 ++	static const struct file_operations wl_proc_fops = {
    2.32 ++		.owner = THIS_MODULE,
    2.33 ++		.read = wl_proc_read,
    2.34 ++		.write = wl_proc_write,
    2.35 ++	};
    2.36 ++	if ((wl->proc_entry = proc_create(tmp, 0644, NULL,&wl_proc_fops)) == NULL) {
    2.37 ++		WL_ERROR(("%s: create_proc_entry %s failed\n", __FUNCTION__, tmp));
    2.38 ++		ASSERT(0);
    2.39 ++		return -1;
    2.40 ++	}
    2.41 ++#endif
    2.42 + 	return 0;
    2.43 + }
    2.44 +--- a/amd64/src/wl/sys/wl_cfg80211.c
    2.45 ++++ a/amd64/src/wl/sys/wl_cfg80211.c
    2.46 +@@ -1838,8 +1838,13 @@
    2.47 + 		mgmt->u.beacon.capab_info, &bi->BSSID));
    2.48 + 
    2.49 + 	signal = notif_bss_info->rssi * 100;
    2.50 ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0)
    2.51 + 	if (!cfg80211_inform_bss_frame(wiphy, channel, mgmt,
    2.52 + 	    le16_to_cpu(notif_bss_info->frame_len), signal, GFP_KERNEL)) {
    2.53 ++#else
    2.54 ++	if (!cfg80211_inform_bss_frame(wiphy, channel, CFG80211_BSS_FTYPE_UNKNOWN, mgmt,
    2.55 ++	    le16_to_cpu(notif_bss_info->frame_len), signal, GFP_KERNEL)) {
    2.56 ++#endif
    2.57 + 		WL_ERR(("cfg80211_inform_bss_frame error\n"));
    2.58 + 		kfree(notif_bss_info);
    2.59 + 		return -EINVAL;
    2.60 +@@ -1857,6 +1862,12 @@
    2.61 + 	u32 event = EVENT_TYPE(e);
    2.62 + 	u16 flags = EVENT_FLAGS(e);
    2.63 + 	u32 status = EVENT_STATUS(e);
    2.64 ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)
    2.65 ++	struct ieee80211_channel *channel = NULL;
    2.66 ++	struct wiphy *wiphy;
    2.67 ++	u32 chanspec, chan;
    2.68 ++	u32 freq, band;
    2.69 ++#endif
    2.70 + 
    2.71 + 	WL_DBG(("\n"));
    2.72 + 
    2.73 +@@ -1868,7 +1879,11 @@
    2.74 + 		}
    2.75 + 		else if ((event == WLC_E_LINK && ~(flags & WLC_EVENT_MSG_LINK)) ||
    2.76 + 			event == WLC_E_DEAUTH_IND || event == WLC_E_DISASSOC_IND) {
    2.77 ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0)
    2.78 + 			cfg80211_disconnected(ndev, 0, NULL, 0, GFP_KERNEL);
    2.79 ++#else
    2.80 ++			cfg80211_disconnected(ndev, 0, NULL, 0, false, GFP_KERNEL);
    2.81 ++#endif
    2.82 + 			clear_bit(WL_STATUS_CONNECTED, &wl->status);
    2.83 + 			wl_link_down(wl);
    2.84 + 			wl_init_prof(wl->profile);
    2.85 +@@ -1892,7 +1907,21 @@
    2.86 + 			wl_get_assoc_ies(wl);
    2.87 + 			memcpy(&wl->bssid, &e->addr, ETHER_ADDR_LEN);
    2.88 + 			wl_update_bss_info(wl);
    2.89 ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)
    2.90 ++			wiphy = wl_to_wiphy(wl);
    2.91 ++			err = wl_dev_intvar_get(ndev, "chanspec", &chanspec);
    2.92 ++			if (err) {
    2.93 ++				WL_ERR(("Could not get chanspec, err %d\n", err));
    2.94 ++				return err;
    2.95 ++			}
    2.96 ++			chan = wf_chspec_ctlchan(chanspec);
    2.97 ++			band = (chan <= CH_MAX_2G_CHANNEL) ? IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ;
    2.98 ++			freq = ieee80211_channel_to_frequency(chan, band);
    2.99 ++			channel = ieee80211_get_channel(wiphy, freq);
   2.100 ++			cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, channel, GFP_KERNEL);
   2.101 ++#else
   2.102 + 			cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, GFP_KERNEL);
   2.103 ++#endif
   2.104 + 			set_bit(WL_STATUS_CONNECTED, &wl->status);
   2.105 + 			wl->profile->active = true;
   2.106 + 		}
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/broadcom-wl64/stuff/3.4.0.patch	Mon Jun 25 12:10:04 2018 +0200
     3.3 @@ -0,0 +1,17 @@
     3.4 +Description: Enable compilation with 3.4 kernels
     3.5 +Author: Eugene San (eugenesan) <eugenesan@gmail.com>
     3.6 +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/bcmwl/+bug/994255
     3.7 +Last-Update: 2012-05-07
     3.8 +
     3.9 +--- a/amd64/src/wl/sys/wl_linux.c
    3.10 ++++ b/amd64/src/wl/sys/wl_linux.c
    3.11 +@@ -40,7 +40,9 @@
    3.12 + #include <linux/pci_ids.h>
    3.13 + #define WLC_MAXBSSCFG		1	
    3.14 + 
    3.15 ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 4, 0)
    3.16 + #include <asm/system.h>
    3.17 ++#endif
    3.18 + #include <asm/io.h>
    3.19 + #include <asm/irq.h>
    3.20 + #include <asm/pgtable.h>
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/broadcom-wl64/stuff/3.6.0.patch	Mon Jun 25 12:10:04 2018 +0200
     4.3 @@ -0,0 +1,39 @@
     4.4 +Description: Fix kernel oops with 3.6 and newer kernels
     4.5 +Author: Cyril Lacoux <clacoux@easter-eggs.com>
     4.6 +Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=698216
     4.7 +Last-Update: 2013-24-01
     4.8 +
     4.9 +--- a/amd64/src/wl/sys/wl_cfg80211.c
    4.10 ++++ b/amd64/src/wl/sys/wl_cfg80211.c
    4.11 +@@ -42,8 +42,12 @@
    4.12 +            enum nl80211_iftype type, u32 *flags, struct vif_params *params);
    4.13 + static s32 __wl_cfg80211_scan(struct wiphy *wiphy, struct net_device *ndev,
    4.14 +            struct cfg80211_scan_request *request, struct cfg80211_ssid *this_ssid);
    4.15 ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)
    4.16 ++static s32 wl_cfg80211_scan(struct wiphy *wiphy, struct cfg80211_scan_request *request);
    4.17 ++#else
    4.18 + static s32 wl_cfg80211_scan(struct wiphy *wiphy, struct net_device *ndev,
    4.19 +            struct cfg80211_scan_request *request);
    4.20 ++#endif
    4.21 + static s32 wl_cfg80211_set_wiphy_params(struct wiphy *wiphy, u32 changed);
    4.22 + static s32 wl_cfg80211_join_ibss(struct wiphy *wiphy, struct net_device *dev,
    4.23 +            struct cfg80211_ibss_params *params);
    4.24 +@@ -570,10 +574,18 @@
    4.25 + }
    4.26 + 
    4.27 + static s32
    4.28 ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)
    4.29 ++wl_cfg80211_scan(struct wiphy *wiphy, struct cfg80211_scan_request *request)
    4.30 ++#else
    4.31 + wl_cfg80211_scan(struct wiphy *wiphy, struct net_device *ndev,
    4.32 +                  struct cfg80211_scan_request *request)
    4.33 ++#endif
    4.34 + {
    4.35 + 	s32 err = 0;
    4.36 ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)
    4.37 ++    struct wl_priv *wl = wiphy_to_wl(wiphy);
    4.38 ++    struct net_device *ndev = wl_to_ndev(wl);
    4.39 ++#endif
    4.40 + 
    4.41 + 	CHECK_SYS_UP();
    4.42 + 	err = __wl_cfg80211_scan(wiphy, ndev, request, NULL);
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/broadcom-wl64/stuff/3.8.0.patch	Mon Jun 25 12:10:04 2018 +0200
     5.3 @@ -0,0 +1,75 @@
     5.4 +Description: Kernel 3.8 compatibility
     5.5 +Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=702788
     5.6 +Last-Update: 2013-03-08
     5.7 +
     5.8 +--- a/amd64/src/include/bcmutils.h
     5.9 ++++ b/amd64/src/include/bcmutils.h
    5.10 +@@ -555,7 +555,11 @@
    5.11 + extern void prhex(const char *msg, uchar *buf, uint len);
    5.12 + 
    5.13 + extern bcm_tlv_t *BCMROMFN(bcm_next_tlv)(bcm_tlv_t *elt, int *buflen);
    5.14 ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 8, 0)
    5.15 + extern bcm_tlv_t *BCMROMFN(bcm_parse_tlvs)(void *buf, int buflen, uint key);
    5.16 ++#else
    5.17 ++extern bcm_tlv_t *BCMROMFN(bcm_parse_tlvs)(const void *buf, int buflen, uint key);
    5.18 ++#endif
    5.19 + extern bcm_tlv_t *BCMROMFN(bcm_parse_ordered_tlvs)(void *buf, int buflen, uint key);
    5.20 + 
    5.21 + extern const char *bcmerrorstr(int bcmerror);
    5.22 +--- a/amd64/src/wl/sys/wl_cfg80211.c
    5.23 ++++ b/amd64/src/wl/sys/wl_cfg80211.c
    5.24 +@@ -754,7 +754,11 @@
    5.25 + 	else
    5.26 + 		memset(&join_params.params.bssid, 0, ETHER_ADDR_LEN);
    5.27 + 
    5.28 +-	wl_ch_to_chanspec(params->channel, &join_params, &join_params_size);
    5.29 ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 8, 0)
    5.30 ++ 	wl_ch_to_chanspec(params->channel, &join_params, &join_params_size);
    5.31 ++#else
    5.32 ++	wl_ch_to_chanspec(params->chandef.chan, &join_params, &join_params_size);
    5.33 ++#endif
    5.34 + 
    5.35 + 	err = wl_dev_ioctl(dev, WLC_SET_SSID, &join_params, join_params_size);
    5.36 + 	if (err) {
    5.37 +@@ -2054,9 +2058,14 @@
    5.38 + 	struct bcm_tlv *tim;
    5.39 + 	u16 beacon_interval;
    5.40 + 	s32 dtim_period;
    5.41 +-	size_t ie_len;
    5.42 +-	u8 *ie;
    5.43 + 	s32 err = 0;
    5.44 ++ 	size_t ie_len;
    5.45 ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 8, 0)
    5.46 ++ 	u8 *ie;
    5.47 ++#else
    5.48 ++	const u8 *ie;
    5.49 ++	const struct cfg80211_bss_ies *ies;
    5.50 ++#endif
    5.51 + 
    5.52 + 	ssid = &wl->profile->ssid;
    5.53 + 	bss = cfg80211_get_bss(wl_to_wiphy(wl), NULL, (s8 *)&wl->bssid,
    5.54 +@@ -2086,8 +2095,22 @@
    5.55 + 		beacon_interval = cpu_to_le16(bi->beacon_period);
    5.56 + 	} else {
    5.57 + 		WL_DBG(("Found the AP in the list - BSSID %pM\n", bss->bssid));
    5.58 +-		ie = bss->information_elements;
    5.59 +-		ie_len = bss->len_information_elements;
    5.60 ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 8, 0)
    5.61 ++ 		ie = bss->information_elements;
    5.62 ++ 		ie_len = bss->len_information_elements;
    5.63 ++#else
    5.64 ++		rcu_read_lock();
    5.65 ++		ies = (const struct cfg80211_bss_ies*)rcu_dereference(bss->ies);
    5.66 ++		if (!ies) {
    5.67 ++			/* This should never happen */
    5.68 ++			rcu_read_unlock();
    5.69 ++			err = -EIO;
    5.70 ++			goto update_bss_info_out;
    5.71 ++		}
    5.72 ++		ie = ies->data;
    5.73 ++		ie_len = (size_t)(ies->len);
    5.74 ++		rcu_read_unlock();
    5.75 ++#endif
    5.76 + 		beacon_interval = bss->beacon_interval;
    5.77 + 		cfg80211_put_bss(bss);
    5.78 + 	}
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/broadcom-wl64/stuff/3.9.0.patch	Mon Jun 25 12:10:04 2018 +0200
     6.3 @@ -0,0 +1,17 @@
     6.4 +Description: Kernel 3.9 compatibility
     6.5 +Last-Update: 2013-05-07
     6.6 +
     6.7 +--- a/amd64/src/wl/sys/wl_cfg80211.c
     6.8 ++++ b/amd64/src/wl/sys/wl_cfg80211.c
     6.9 +@@ -2112,7 +2112,11 @@
    6.10 + 		rcu_read_unlock();
    6.11 + #endif
    6.12 + 		beacon_interval = bss->beacon_interval;
    6.13 ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0)
    6.14 + 		cfg80211_put_bss(bss);
    6.15 ++#else
    6.16 ++		cfg80211_put_bss(wl_to_wiphy(wl), bss);
    6.17 ++#endif
    6.18 + 	}
    6.19 + 
    6.20 + 	tim = bcm_parse_tlvs(ie, ie_len, WLAN_EID_TIM);
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/broadcom-wl64/stuff/semaphore.patch	Mon Jun 25 12:10:04 2018 +0200
     7.3 @@ -0,0 +1,11 @@
     7.4 +diff -aur bla/src/wl/sys/wl_iw.h bla.new/src/wl/sys/wl_iw.h
     7.5 +--- a/amd64/src/wl/sys/wl_iw.h	2010-02-06 02:59:15.000000000 +0100
     7.6 ++++ b/amd64/src/wl/sys/wl_iw.h	2010-08-07 23:17:35.368641722 +0200
     7.7 +@@ -15,6 +15,7 @@
     7.8 + #ifndef _wl_iw_h_
     7.9 + #define _wl_iw_h_
    7.10 + 
    7.11 ++#include <linux/semaphore.h>
    7.12 + #include <linux/wireless.h>
    7.13 + 
    7.14 + #include <typedefs.h>