diff --git a/packages/linux-drivers/bcm_sta/package.mk b/packages/linux-drivers/bcm_sta/package.mk index 6a693825b1..ee7d34d368 100644 --- a/packages/linux-drivers/bcm_sta/package.mk +++ b/packages/linux-drivers/bcm_sta/package.mk @@ -36,6 +36,11 @@ PKG_LONGDESC="These packages contain Broadcom's IEEE 802.11a/b/g/n hybrid Linux PKG_IS_ADDON="no" PKG_AUTORECONF="no" +pre_make_target() { + # rename binary to comply with upstream patches + mv $ROOT/$PKG_BUILD/x86-64/lib/wlc_hybrid.o_shipped $ROOT/$PKG_BUILD/x86-64/lib/wlc_hybrid.o_shipped_x86_64 +} + make_target() { cd x86-64 KBUILD_NOPEDANTIC=1 make V=1 CC=$CC -C $(kernel_path) M=`pwd` BINARCH=$TARGET_ARCH diff --git a/packages/linux-drivers/bcm_sta/patches/bcm_sta-0001-MODULE_LICENSE.patch b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0001-MODULE_LICENSE.patch new file mode 100644 index 0000000000..4c303f8dd2 --- /dev/null +++ b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0001-MODULE_LICENSE.patch @@ -0,0 +1,24 @@ +From 2903f0610336ac96411206c9458bd2885d11ea2d Mon Sep 17 00:00:00 2001 +From: Alberto Milone +Date: Tue, 11 Dec 2012 15:51:26 +0100 +Subject: [PATCH 1/2] Make sure that the module licence is "MIXED/Proprietary" + +--- + src/wl/sys/wl_linux.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/x86-64/src/wl/sys/wl_linux.c b/x86-64/src/wl/sys/wl_linux.c +index f64496b..af3bea6 100644 +--- a/x86-64/src/wl/sys/wl_linux.c ++++ b/x86-64/src/wl/sys/wl_linux.c +@@ -159,6 +159,8 @@ static int wl_set_radio_block(void *data, bool blocked); + static void wl_report_radio_state(wl_info_t *wl); + #endif + ++MODULE_LICENSE("MIXED/Proprietary"); ++ + static struct pci_device_id wl_id_table[] = + { + { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, +-- +1.7.9.5 diff --git a/packages/linux-drivers/bcm_sta/patches/bcm_sta-0002-Makefile.patch b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0002-Makefile.patch new file mode 100644 index 0000000000..43e4cf3fd9 --- /dev/null +++ b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0002-Makefile.patch @@ -0,0 +1,37 @@ +From 15bdf69c7c1fc0d674261b08a22c958e4826bc6b Mon Sep 17 00:00:00 2001 +From: Alberto Milone +Date: Tue, 11 Dec 2012 15:55:08 +0100 +Subject: [PATCH 2/2] Make sure to use the binary for the correct architecture + +--- + Makefile | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index bf30b03..1f9b974 100644 +--- a/x86-64/Makefile ++++ b/x86-64/Makefile +@@ -113,6 +113,12 @@ ifeq ($(APIFINAL),WEXT) + $(info Using Wireless Extension API) + endif + ++ifeq ($(shell dpkg --print-architecture),amd64) ++BINARCH = x86_64 ++else ++BINARCH = i386 ++endif ++ + obj-m += wl.o + + wl-objs := +@@ -125,7 +131,7 @@ EXTRA_CFLAGS += -I$(src)/src/include + EXTRA_CFLAGS += -I$(src)/src/wl/sys -I$(src)/src/wl/clm/api -I$(src)/src/wl/phy + #EXTRA_CFLAGS += -DBCMDBG_ASSERT + +-EXTRA_LDFLAGS := $(src)/lib/wlc_hybrid.o_shipped ++EXTRA_LDFLAGS := $(src)/lib/wlc_hybrid.o_shipped_$(BINARCH) + + KBASE ?= /lib/modules/`uname -r` + KBUILD_DIR ?= $(KBASE)/build +-- +1.7.9.5 diff --git a/packages/linux-drivers/bcm_sta/patches/bcm_sta-0003-Make-up-for-missing-init_MUTEX.patch b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0003-Make-up-for-missing-init_MUTEX.patch new file mode 100644 index 0000000000..25b77282f2 --- /dev/null +++ b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0003-Make-up-for-missing-init_MUTEX.patch @@ -0,0 +1,32 @@ +From 9dab8884095e0710d62c41c45191a85d0dae59b3 Mon Sep 17 00:00:00 2001 +From: Henrik Rydberg +Date: Sun, 9 Jan 2011 19:47:43 +0100 +Subject: [PATCH] Make up for the missing init_MUTEX + +The init_MUTEX is a wrapper for sema_init(), and has been +deprecated and removed in 2.6.37. In order for the dkms +package to work also for earlier kernel versions, simply +define the wrapper if it is missing. + +Signed-off-by: Henrik Rydberg +--- + src/src/wl/sys/wl_linux.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +diff --git a/x86-64/src/src/wl/sys/wl_linux.c b/x86-64/src/src/wl/sys/wl_linux.c +index c11678f..6f4b7a6 100644 +--- a/x86-64/src.orig/wl/sys/wl_linux.c ++++ b/x86-64/src/wl/sys/wl_linux.c +@@ -99,6 +99,10 @@ static void wl_dpc_rxwork(struct wl_task *task); + + #endif + ++#ifndef init_MUTEX ++#define init_MUTEX(sem) sema_init(sem, 1) ++#endif ++ + static int wl_linux_watchdog(void *ctx); + static + int wl_found = 0; +-- +1.7.2.3 diff --git a/packages/linux-drivers/bcm_sta/patches/bcm_sta-001-MODULE_LICENSE.patch b/packages/linux-drivers/bcm_sta/patches/bcm_sta-001-MODULE_LICENSE.patch deleted file mode 100644 index f40a354802..0000000000 --- a/packages/linux-drivers/bcm_sta/patches/bcm_sta-001-MODULE_LICENSE.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- a/x86-32/src/wl/sys/wl_linux.c -+++ b/x86-32/src/wl/sys/wl_linux.c -@@ -159,6 +159,8 @@ static int wl_set_radio_block(void *data, bool blocked); - static void wl_report_radio_state(wl_info_t *wl); - #endif - -+MODULE_LICENSE("MIXED/Proprietary"); -+ - static struct pci_device_id wl_id_table[] = - { - { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, - ---- a/x86-64/src/wl/sys/wl_linux.c -+++ b/x86-64/src/wl/sys/wl_linux.c -@@ -159,6 +159,8 @@ static int wl_set_radio_block(void *data, bool blocked); - static void wl_report_radio_state(wl_info_t *wl); - #endif - -+MODULE_LICENSE("MIXED/Proprietary"); -+ - static struct pci_device_id wl_id_table[] = - { - { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, - diff --git a/packages/linux-drivers/bcm_sta/patches/bcm_sta-0010-change-the-network-interface-name-from-eth-to-wlan.patch b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0010-change-the-network-interface-name-from-eth-to-wlan.patch new file mode 100644 index 0000000000..7398820ca4 --- /dev/null +++ b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0010-change-the-network-interface-name-from-eth-to-wlan.patch @@ -0,0 +1,25 @@ +From c51168b8481e84743b50d3d5cba18a4a0a188448 Mon Sep 17 00:00:00 2001 +From: Alberto Milone +Date: Fri, 22 Nov 2013 10:07:33 +0100 +Subject: [PATCH 1/1] Change the network interface name from eth to wlan + +Thanks to Shuduo Sang for the patch. +--- + src/wl/sys/wl_linux.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/x86-64/src/wl/sys/wl_linux.c b/x86-64/src/wl/sys/wl_linux.c +index 3ead3c3..b662ff7 100644 +--- a/x86-64/src/wl/sys/wl_linux.c ++++ b/x86-64/src/wl/sys/wl_linux.c +@@ -235,7 +235,7 @@ module_param(nompc, int, 0); + #define to_str(s) #s + #define quote_str(s) to_str(s) + +-#define BRCM_WLAN_IFNAME eth%d ++#define BRCM_WLAN_IFNAME wlan%d + + static char intf_name[IFNAMSIZ] = quote_str(BRCM_WLAN_IFNAME); + +-- +1.7.9.5 diff --git a/packages/linux-drivers/bcm_sta/patches/bcm_sta-0011-do-not-define-__devinit-as-__init-in-linux-3.8-as-__.patch b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0011-do-not-define-__devinit-as-__init-in-linux-3.8-as-__.patch new file mode 100644 index 0000000000..1dae0ccfe8 --- /dev/null +++ b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0011-do-not-define-__devinit-as-__init-in-linux-3.8-as-__.patch @@ -0,0 +1,30 @@ +From 463082d4d3141d89f5d174d4a85800501f71d5db Mon Sep 17 00:00:00 2001 +From: Alberto Milone +Date: Fri, 22 Nov 2013 10:15:22 +0100 +Subject: [PATCH 1/1] Do not define __devinit as __init in linux >= 3.8 as + __init was removed + +Thanks to Krzysztof Kolasa for the patch. +--- + src/include/linuxver.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/x86-64/src/include/linuxver.h b/x86-64/src/include/linuxver.h +index 5548e71..5044739 100644 +--- a/x86-64/src/include/linuxver.h ++++ b/x86-64/src/include/linuxver.h +@@ -169,8 +169,12 @@ typedef irqreturn_t(*FN_ISR) (int irq, void *dev_id, struct pt_regs *ptregs); + #define __devexit + #endif + #ifndef __devinit ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) ++#define __devinit ++#else + #define __devinit __init + #endif ++#endif + #ifndef __devinitdata + #define __devinitdata + #endif +-- +1.7.9.5 diff --git a/packages/linux-drivers/bcm_sta/patches/bcm_sta-0012-add-support-for-Linux-3.15.patch b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0012-add-support-for-Linux-3.15.patch new file mode 100644 index 0000000000..6bab6c161a --- /dev/null +++ b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0012-add-support-for-Linux-3.15.patch @@ -0,0 +1,45 @@ +From 05dd11abffe27c2fd8f618e79036be026f71b20c Mon Sep 17 00:00:00 2001 +From: Alberto Milone +Date: Mon, 12 May 2014 17:32:44 +0200 +Subject: [PATCH 1/1] Add support for Linux 3.15 + +Make sure to pass the channel to cfg80211_ibss_joined(). + +This should fix LP: #1307744 +--- + src/wl/sys/wl_cfg80211_hybrid.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +diff --git a/x86-64/src/wl/sys/wl_cfg80211_hybrid.c b/x86-64/src/wl/sys/wl_cfg80211_hybrid.c +index 3a5e46b..6384e58 100644 +--- a/x86-64/src/wl/sys/wl_cfg80211_hybrid.c ++++ b/x86-64/src/wl/sys/wl_cfg80211_hybrid.c +@@ -1841,7 +1841,26 @@ wl_notify_connect_status(struct wl_cfg80211_priv *wl, struct net_device *ndev, + wl_get_assoc_ies(wl); + memcpy(&wl->bssid, &e->addr, ETHER_ADDR_LEN); + wl_update_bss_info(wl); ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) ++ { ++ struct wl_bss_info *bi; ++ u16 bss_info_channel; ++ struct ieee80211_channel *channel; ++ u32 freq; ++ ++ bi = (struct wl_bss_info *)(wl->extra_buf + 4); ++ bss_info_channel = bi->ctl_ch ? bi->ctl_ch : CHSPEC_CHANNEL(bi->chanspec); ++ ++ freq = ieee80211_channel_to_frequency(bss_info_channel, ++ (bss_info_channel <= CH_MAX_2G_CHANNEL) ? ++ IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ); ++ ++ channel = ieee80211_get_channel(wl_to_wiphy(wl), freq); ++ cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, channel, GFP_KERNEL); ++ } ++#else + cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, GFP_KERNEL); ++#endif + set_bit(WL_STATUS_CONNECTED, &wl->status); + wl->profile->active = true; + } +-- +1.9.1 diff --git a/packages/linux-drivers/bcm_sta/patches/bcm_sta-0013-gcc.patch b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0013-gcc.patch new file mode 100644 index 0000000000..4d14dbdffe --- /dev/null +++ b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0013-gcc.patch @@ -0,0 +1,11 @@ +--- a/x86-64/Makefile 2014-06-26 10:42:08.000000000 +0000 ++++ b/x86-64/Makefile 2014-07-17 22:44:01.662297228 +0000 +@@ -132,6 +132,8 @@ + EXTRA_CFLAGS += -I$(src)/src/shared/bcmwifi/include + #EXTRA_CFLAGS += -DBCMDBG_ASSERT -DBCMDBG_ERR + ++EXTRA_CFLAGS += -Wno-date-time ++ + EXTRA_LDFLAGS := $(src)/lib/wlc_hybrid.o_shipped_$(BINARCH) + + KBASE ?= /lib/modules/`uname -r` diff --git a/packages/linux-drivers/bcm_sta/patches/bcm_sta-0014-add-support-for-Linux-3.17.patch b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0014-add-support-for-Linux-3.17.patch new file mode 100644 index 0000000000..5c0e7e9766 --- /dev/null +++ b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0014-add-support-for-Linux-3.17.patch @@ -0,0 +1,29 @@ +From 05dd11abffe27c2fd8f618e79036be026f71b20c Mon Sep 17 00:00:00 2001 +From: Brian Norris +Date: Tue, 26 Aug 2014 01:21:19 -0800 + +Subject: [PATCH] Add support for Linux 3.17 + +--- + src/wl/sys/wl_linux.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +diff --git a/x86-64/src/wl/sys/wl_linux.c b/x86-64/src/wl/sys/wl_linux.c +index 3a5e46b..6384e58 100644 +--- a/x86-64/src/wl/sys/wl_linux.c ++++ b/x86-64/src/wl/sys/wl_linux.c +@@ -1351,7 +1351,12 @@ + dev->priv = priv_link; + #else + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0)) + dev = alloc_netdev(sizeof(priv_link_t), intf_name, ether_setup); ++#else ++ dev = alloc_netdev(sizeof(priv_link_t), intf_name, NET_NAME_UNKNOWN, ++ ether_setup); ++#endif + if (!dev) { + WL_ERROR(("wl%d: %s: alloc_netdev failed\n", + (wl->pub)?wl->pub->unit:wlif->subunit, __FUNCTION__)); +-- +1.9.1 diff --git a/packages/linux-drivers/bcm_sta/patches/bcm_sta-0015-add-support-for-Linux-3.18.patch b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0015-add-support-for-Linux-3.18.patch new file mode 100644 index 0000000000..a4cafeda66 --- /dev/null +++ b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0015-add-support-for-Linux-3.18.patch @@ -0,0 +1,36 @@ +From 8b6f3f87c81fa35eef24831e9a93eff1e6e1444f Mon Sep 17 00:00:00 2001 +From: Alberto Milone +Date: Mon, 10 Nov 2014 09:22:09 +0100 +Subject: [PATCH 1/1] Update cfg80211_inform_bss() to use + CFG80211_BSS_FTYPE_UNKNOWN + +This is only necessary with Linux >= 3.18. + +Original author: Krzysztof Kolasa +Source: https://raw.githubusercontent.com/kolasa/bcmwl-6.30.223.248/master/patches/0015-CFG80211_BSS_FTYPE_UNKNOWN-linux-3.18.0.patch +--- + src/wl/sys/wl_cfg80211_hybrid.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/x86-64/src/wl/sys/wl_cfg80211_hybrid.c b/x86-64/src/wl/sys/wl_cfg80211_hybrid.c +index ea0726f..ee0d3a0 100644 +--- a/x86-64/src/wl/sys/wl_cfg80211_hybrid.c ++++ b/x86-64/src/wl/sys/wl_cfg80211_hybrid.c +@@ -2010,9 +2010,15 @@ static s32 wl_inform_single_bss(struct wl_cfg80211_priv *wl, struct wl_bss_info + + notify_ie = (u8 *)bi + le16_to_cpu(bi->ie_offset); + notify_ielen = le32_to_cpu(bi->ie_length); ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0) + cbss = cfg80211_inform_bss(wiphy, channel, (const u8 *)(bi->BSSID.octet), + 0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int, + (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL); ++#else ++ cbss = cfg80211_inform_bss(wiphy, channel, CFG80211_BSS_FTYPE_UNKNOWN, (const u8 *)(bi->BSSID.octet), ++ 0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int, ++ (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL); ++#endif + + if (unlikely(!cbss)) + return -ENOMEM; +-- +1.9.1 diff --git a/packages/linux-drivers/bcm_sta/patches/bcm_sta-0016-repair-make-warnings.patch b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0016-repair-make-warnings.patch new file mode 100644 index 0000000000..7e0e7244ce --- /dev/null +++ b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0016-repair-make-warnings.patch @@ -0,0 +1,56 @@ +From 92fc12028553831a87cfa87ffa8d676ab0f60522 Mon Sep 17 00:00:00 2001 +From: Simon Eisenmann +Date: Sat, 14 Mar 2015 15:02:08 +0100 +Subject: [PATCH] Repair make warnings + +Orginal author: Krzysztof Kolasa +Source: https://raw.githubusercontent.com/kolasa/bcmwl-6.30.223.248/9fafc1faa6dc410bf8aba340a7929f404c73d30e/patches/0016-repair-make-warnings.patch +--- + src/wl/sys/wl_cfg80211_hybrid.c | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/x86-64/src/wl/sys/wl_cfg80211_hybrid.c b/x86-64/src/wl/sys/wl_cfg80211_hybrid.c +index ea0726f..b265e25 100644 +--- a/x86-64/src/wl/sys/wl_cfg80211_hybrid.c ++++ b/x86-64/src/wl/sys/wl_cfg80211_hybrid.c +@@ -63,8 +63,13 @@ static s32 wl_cfg80211_set_wiphy_params(struct wiphy *wiphy, u32 changed); + static s32 wl_cfg80211_join_ibss(struct wiphy *wiphy, struct net_device *dev, + struct cfg80211_ibss_params *params); + static s32 wl_cfg80211_leave_ibss(struct wiphy *wiphy, struct net_device *dev); ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0) + static s32 wl_cfg80211_get_station(struct wiphy *wiphy, + struct net_device *dev, u8 *mac, struct station_info *sinfo); ++#else ++static s32 wl_cfg80211_get_station(struct wiphy *wiphy, ++ struct net_device *dev, const u8 *mac, struct station_info *sinfo); ++#endif + static s32 wl_cfg80211_set_power_mgmt(struct wiphy *wiphy, + struct net_device *dev, bool enabled, s32 timeout); + static int wl_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev, +@@ -1387,7 +1392,7 @@ wl_cfg80211_get_key(struct wiphy *wiphy, struct net_device *dev, + key_endian_to_host(&key); + + params.key_len = (u8) min_t(u8, DOT11_MAX_KEY_SIZE, key.len); +- memcpy(params.key, key.data, params.key_len); ++ memcpy((char *)params.key, key.data, params.key_len); + + if ((err = wl_dev_ioctl(dev, WLC_GET_WSEC, &wsec, sizeof(wsec)))) { + return err; +@@ -1421,9 +1426,15 @@ wl_cfg80211_get_key(struct wiphy *wiphy, struct net_device *dev, + return err; + } + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0) + static s32 + wl_cfg80211_get_station(struct wiphy *wiphy, struct net_device *dev, + u8 *mac, struct station_info *sinfo) ++#else ++static s32 ++wl_cfg80211_get_station(struct wiphy *wiphy, struct net_device *dev, ++ const u8 *mac, struct station_info *sinfo) ++#endif + { + struct wl_cfg80211_priv *wl = wiphy_to_wl(wiphy); + scb_val_t scb_val; +-- +2.1.0 diff --git a/packages/linux-drivers/bcm_sta/patches/bcm_sta-0017-add-support-for-Linux-4.0.patch b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0017-add-support-for-Linux-4.0.patch new file mode 100644 index 0000000000..cd5710c7c2 --- /dev/null +++ b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0017-add-support-for-Linux-4.0.patch @@ -0,0 +1,39 @@ +From a97b0a39f016589e38706d7d32f902847dcbbf27 Mon Sep 17 00:00:00 2001 +From: Simon Eisenmann +Date: Sat, 14 Mar 2015 15:10:48 +0100 +Subject: [PATCH] Add support for Linux 4.0 + +--- + src/wl/sys/wl_cfg80211_hybrid.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/x86-64/src/wl/sys/wl_cfg80211_hybrid.c b/x86-64/src/wl/sys/wl_cfg80211_hybrid.c +index b265e25..425c7c5 100644 +--- a/x86-64/src/wl/sys/wl_cfg80211_hybrid.c ++++ b/x86-64/src/wl/sys/wl_cfg80211_hybrid.c +@@ -1452,7 +1452,11 @@ wl_cfg80211_get_station(struct wiphy *wiphy, struct net_device *dev, + WL_DBG(("Could not get rate (%d)\n", err)); + } else { + rate = dtoh32(rate); ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) + sinfo->filled |= STATION_INFO_TX_BITRATE; ++#else ++ sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE); ++#endif + sinfo->txrate.legacy = rate * 5; + WL_DBG(("Rate %d Mbps\n", (rate / 2))); + } +@@ -1465,7 +1469,11 @@ wl_cfg80211_get_station(struct wiphy *wiphy, struct net_device *dev, + return err; + } + rssi = dtoh32(scb_val.val); ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) + sinfo->filled |= STATION_INFO_SIGNAL; ++#else ++ sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL); ++#endif + sinfo->signal = rssi; + WL_DBG(("RSSI %d dBm\n", rssi)); + } +-- +2.1.0 diff --git a/packages/linux-drivers/bcm_sta/patches/bcm_sta-002-Makefile.patch b/packages/linux-drivers/bcm_sta/patches/bcm_sta-002-Makefile.patch deleted file mode 100644 index 293677bb9e..0000000000 --- a/packages/linux-drivers/bcm_sta/patches/bcm_sta-002-Makefile.patch +++ /dev/null @@ -1,23 +0,0 @@ ---- a/x86-32/Makefile 2014-06-26 10:42:08.000000000 +0000 -+++ b/x86-32/Makefile 2014-07-17 22:44:01.662297228 +0000 -@@ -126,6 +126,8 @@ - EXTRA_CFLAGS += -I$(src)/src/shared/bcmwifi/include - #EXTRA_CFLAGS += -DBCMDBG_ASSERT -DBCMDBG_ERR - -+EXTRA_CFLAGS += -Wno-date-time -+ - EXTRA_LDFLAGS := $(src)/lib/wlc_hybrid.o_shipped - - KBASE ?= /lib/modules/`uname -r` ---- a/x86-64/Makefile 2014-06-26 10:42:08.000000000 +0000 -+++ b/x86-64/Makefile 2014-07-17 22:44:01.662297228 +0000 -@@ -126,6 +126,8 @@ - EXTRA_CFLAGS += -I$(src)/src/shared/bcmwifi/include - #EXTRA_CFLAGS += -DBCMDBG_ASSERT -DBCMDBG_ERR - -+EXTRA_CFLAGS += -Wno-date-time -+ - EXTRA_LDFLAGS := $(src)/lib/wlc_hybrid.o_shipped - - KBASE ?= /lib/modules/`uname -r` - diff --git a/packages/linux-drivers/bcm_sta/patches/bcm_sta-003-rename-interface.patch b/packages/linux-drivers/bcm_sta/patches/bcm_sta-003-rename-interface.patch deleted file mode 100644 index 474f748c75..0000000000 --- a/packages/linux-drivers/bcm_sta/patches/bcm_sta-003-rename-interface.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- a/x86-32/src/wl/sys/wl_linux.c 2014-06-26 14:42:08.000000000 +0400 -+++ b/x86-32/src/wl/sys/wl_linux.c 2014-10-23 06:28:36.987479544 +0400 -@@ -215,7 +217,7 @@ - #define to_str(s) #s - #define quote_str(s) to_str(s) - --#define BRCM_WLAN_IFNAME eth%d -+#define BRCM_WLAN_IFNAME wlan%d - - static char intf_name[IFNAMSIZ] = quote_str(BRCM_WLAN_IFNAME); - ---- a/x86-64/src/wl/sys/wl_linux.c 2014-06-26 14:42:08.000000000 +0400 -+++ b/x86-64/src/wl/sys/wl_linux.c 2014-10-23 06:28:36.987479544 +0400 -@@ -215,7 +217,7 @@ - #define to_str(s) #s - #define quote_str(s) to_str(s) - --#define BRCM_WLAN_IFNAME eth%d -+#define BRCM_WLAN_IFNAME wlan%d - - static char intf_name[IFNAMSIZ] = quote_str(BRCM_WLAN_IFNAME); diff --git a/packages/linux-drivers/bcm_sta/patches/bcm_sta-004-linux-recent.patch b/packages/linux-drivers/bcm_sta/patches/bcm_sta-004-linux-recent.patch deleted file mode 100644 index b2914101c6..0000000000 --- a/packages/linux-drivers/bcm_sta/patches/bcm_sta-004-linux-recent.patch +++ /dev/null @@ -1,102 +0,0 @@ ---- a/x86-32/src/wl/sys/wl_cfg80211_hybrid.c 2014-06-26 12:42:08.000000000 +0200 -+++ b/x86-32/src/wl/sys/wl_cfg80211_hybrid.c 2014-10-08 18:47:07.549476082 +0200 -@@ -2071,7 +2071,22 @@ - wl_get_assoc_ies(wl); - memcpy(&wl->bssid, &e->addr, ETHER_ADDR_LEN); - wl_update_bss_info(wl); -- cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, GFP_KERNEL); -+ { -+ struct wl_bss_info *bi; -+ u16 bss_info_channel; -+ struct ieee80211_channel *channel; -+ u32 freq; -+ -+ bi = (struct wl_bss_info *)(wl->extra_buf + 4); -+ bss_info_channel = bi->ctl_ch ? bi->ctl_ch : CHSPEC_CHANNEL(bi->chanspec); -+ -+ freq = ieee80211_channel_to_frequency(bss_info_channel, -+ (bss_info_channel <= CH_MAX_2G_CHANNEL) ? -+ IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ); -+ -+ channel = ieee80211_get_channel(wl_to_wiphy(wl), freq); -+ cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, channel, GFP_KERNEL); -+ } - set_bit(WL_STATUS_CONNECTED, &wl->status); - wl->profile->active = true; - } ---- a/x86-32/src/wl/sys/wl_linux.c 2014-06-26 12:42:08.000000000 +0200 -+++ b/x86-32/src/wl/sys/wl_linux.c 2014-10-08 18:47:19.526693719 +0200 -@@ -878,7 +878,7 @@ - static SIMPLE_DEV_PM_OPS(wl_pm_ops, wl_suspend, wl_resume); - #endif - --static struct pci_driver wl_pci_driver = { -+static struct pci_driver wl_pci_driver __refdata = { - .name = "wl", - .probe = wl_pci_probe, - .remove = __devexit_p(wl_remove), -@@ -1307,7 +1307,12 @@ - dev->priv = priv_link; - #else - -+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0)) - dev = alloc_netdev(sizeof(priv_link_t), intf_name, ether_setup); -+#else -+ dev = alloc_netdev(sizeof(priv_link_t), intf_name, NET_NAME_UNKNOWN, -+ ether_setup); -+#endif - if (!dev) { - WL_ERROR(("wl%d: %s: alloc_netdev failed\n", - (wl->pub)?wl->pub->unit:wlif->subunit, __FUNCTION__)); - ---- a/x86-64/src/wl/sys/wl_cfg80211_hybrid.c 2014-06-26 12:42:08.000000000 +0200 -+++ b/x86-64/src/wl/sys/wl_cfg80211_hybrid.c 2014-10-08 18:47:07.549476082 +0200 -@@ -2071,7 +2071,22 @@ - wl_get_assoc_ies(wl); - memcpy(&wl->bssid, &e->addr, ETHER_ADDR_LEN); - wl_update_bss_info(wl); -- cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, GFP_KERNEL); -+ { -+ struct wl_bss_info *bi; -+ u16 bss_info_channel; -+ struct ieee80211_channel *channel; -+ u32 freq; -+ -+ bi = (struct wl_bss_info *)(wl->extra_buf + 4); -+ bss_info_channel = bi->ctl_ch ? bi->ctl_ch : CHSPEC_CHANNEL(bi->chanspec); -+ -+ freq = ieee80211_channel_to_frequency(bss_info_channel, -+ (bss_info_channel <= CH_MAX_2G_CHANNEL) ? -+ IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ); -+ -+ channel = ieee80211_get_channel(wl_to_wiphy(wl), freq); -+ cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, channel, GFP_KERNEL); -+ } - set_bit(WL_STATUS_CONNECTED, &wl->status); - wl->profile->active = true; - } ---- a/x86-64/src/wl/sys/wl_linux.c 2014-06-26 12:42:08.000000000 +0200 -+++ b/x86-64/src/wl/sys/wl_linux.c 2014-10-08 18:47:19.526693719 +0200 -@@ -878,7 +878,7 @@ - static SIMPLE_DEV_PM_OPS(wl_pm_ops, wl_suspend, wl_resume); - #endif - --static struct pci_driver wl_pci_driver = { -+static struct pci_driver wl_pci_driver __refdata = { - .name = "wl", - .probe = wl_pci_probe, - .remove = __devexit_p(wl_remove), -@@ -1307,7 +1307,12 @@ - dev->priv = priv_link; - #else - -+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0)) - dev = alloc_netdev(sizeof(priv_link_t), intf_name, ether_setup); -+#else -+ dev = alloc_netdev(sizeof(priv_link_t), intf_name, NET_NAME_UNKNOWN, -+ ether_setup); -+#endif - if (!dev) { - WL_ERROR(("wl%d: %s: alloc_netdev failed\n", - (wl->pub)?wl->pub->unit:wlif->subunit, __FUNCTION__)); - diff --git a/packages/linux-drivers/bcm_sta/patches/bcm_sta-005-CFG80211_BSS_FTYPE_UNKNOWN-linux-3.18.0.patch b/packages/linux-drivers/bcm_sta/patches/bcm_sta-005-CFG80211_BSS_FTYPE_UNKNOWN-linux-3.18.0.patch deleted file mode 100644 index ffeaf17784..0000000000 --- a/packages/linux-drivers/bcm_sta/patches/bcm_sta-005-CFG80211_BSS_FTYPE_UNKNOWN-linux-3.18.0.patch +++ /dev/null @@ -1,38 +0,0 @@ -diff -ur bcm_sta-6.30.223.248.ori/x86-32/src/wl/sys/wl_cfg80211_hybrid.c bcm_sta-6.30.223.248/x86-32/src/wl/sys/wl_cfg80211_hybrid.c ---- bcm_sta-6.30.223.248.ori/x86-32/src/wl/sys/wl_cfg80211_hybrid.c 2015-01-14 07:28:39.000000000 +0100 -+++ bcm_sta-6.30.223.248/x86-32/src/wl/sys/wl_cfg80211_hybrid.c 2015-01-14 07:32:16.000000000 +0100 -@@ -2010,9 +2010,15 @@ - - notify_ie = (u8 *)bi + le16_to_cpu(bi->ie_offset); - notify_ielen = le32_to_cpu(bi->ie_length); -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) -+ cbss = cfg80211_inform_bss(wiphy, channel, CFG80211_BSS_FTYPE_UNKNOWN, (const u8 *)(bi->BSSID.octet), -+ 0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int, -+ (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL); -+#else - cbss = cfg80211_inform_bss(wiphy, channel, (const u8 *)(bi->BSSID.octet), - 0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int, - (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL); -+#endif - - if (unlikely(!cbss)) - return -ENOMEM; -diff -ur bcm_sta-6.30.223.248.ori/x86-64/src/wl/sys/wl_cfg80211_hybrid.c bcm_sta-6.30.223.248/x86-64/src/wl/sys/wl_cfg80211_hybrid.c ---- bcm_sta-6.30.223.248.ori/x86-64/src/wl/sys/wl_cfg80211_hybrid.c 2015-01-14 07:28:39.000000000 +0100 -+++ bcm_sta-6.30.223.248/x86-64/src/wl/sys/wl_cfg80211_hybrid.c 2015-01-14 07:33:35.000000000 +0100 -@@ -2010,9 +2010,15 @@ - - notify_ie = (u8 *)bi + le16_to_cpu(bi->ie_offset); - notify_ielen = le32_to_cpu(bi->ie_length); -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) -+ cbss = cfg80211_inform_bss(wiphy, channel,CFG80211_BSS_FTYPE_UNKNOWN, (const u8 *)(bi->BSSID.octet), -+ 0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int, -+ (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL); -+#else - cbss = cfg80211_inform_bss(wiphy, channel, (const u8 *)(bi->BSSID.octet), - 0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int, - (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL); -+#endif - - if (unlikely(!cbss)) - return -ENOMEM; diff --git a/projects/Generic/linux/linux.x86_64.conf b/projects/Generic/linux/linux.x86_64.conf index 8335e43fbf..6969ff0b79 100644 --- a/projects/Generic/linux/linux.x86_64.conf +++ b/projects/Generic/linux/linux.x86_64.conf @@ -1609,31 +1609,12 @@ CONFIG_AR5523=m # CONFIG_ATH10K is not set CONFIG_WCN36XX=m # CONFIG_WCN36XX_DEBUGFS is not set -CONFIG_B43=m -CONFIG_B43_BCMA=y -CONFIG_B43_SSB=y -CONFIG_B43_BUSES_BCMA_AND_SSB=y +# CONFIG_B43 is not set +# CONFIG_B43_BUSES_BCMA_AND_SSB is not set # CONFIG_B43_BUSES_BCMA is not set # CONFIG_B43_BUSES_SSB is not set -CONFIG_B43_PCI_AUTOSELECT=y -CONFIG_B43_PCICORE_AUTOSELECT=y -CONFIG_B43_SDIO=y -CONFIG_B43_BCMA_PIO=y -CONFIG_B43_PIO=y -CONFIG_B43_PHY_G=y -CONFIG_B43_PHY_N=y -CONFIG_B43_PHY_LP=y -CONFIG_B43_PHY_HT=y -CONFIG_B43_LEDS=y -# CONFIG_B43_DEBUG is not set -CONFIG_B43LEGACY=m -CONFIG_B43LEGACY_PCI_AUTOSELECT=y -CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y -CONFIG_B43LEGACY_LEDS=y -# CONFIG_B43LEGACY_DEBUG is not set -CONFIG_B43LEGACY_DMA=y -CONFIG_B43LEGACY_PIO=y -CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y +# CONFIG_B43LEGACY is not set +# CONFIG_B43LEGACY_DMA_AND_PIO_MODE is not set # CONFIG_B43LEGACY_DMA_MODE is not set # CONFIG_B43LEGACY_PIO_MODE is not set CONFIG_BRCMUTIL=m @@ -2226,10 +2207,9 @@ CONFIG_SSB_POSSIBLE=y # CONFIG_SSB=y CONFIG_SSB_SPROM=y -CONFIG_SSB_BLOCKIO=y CONFIG_SSB_PCIHOST_POSSIBLE=y CONFIG_SSB_PCIHOST=y -CONFIG_SSB_B43_PCI_BRIDGE=y +# CONFIG_SSB_B43_PCI_BRIDGE is not set CONFIG_SSB_SDIOHOST_POSSIBLE=y CONFIG_SSB_SDIOHOST=y # CONFIG_SSB_SILENT is not set @@ -2242,7 +2222,6 @@ CONFIG_BCMA_POSSIBLE=y # Broadcom specific AMBA # CONFIG_BCMA=m -CONFIG_BCMA_BLOCKIO=y CONFIG_BCMA_HOST_PCI_POSSIBLE=y CONFIG_BCMA_HOST_PCI=y # CONFIG_BCMA_HOST_SOC is not set diff --git a/projects/Generic/options b/projects/Generic/options index eae4e70583..1c990cd377 100644 --- a/projects/Generic/options +++ b/projects/Generic/options @@ -97,4 +97,4 @@ # for a list of additinoal drivers see packages/linux-drivers # Space separated list is supported, # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" - ADDITIONAL_DRIVERS="$ADDITIONAL_DRIVERS mt7601u" + ADDITIONAL_DRIVERS="$ADDITIONAL_DRIVERS mt7601u bcm_sta" diff --git a/projects/Nvidia-Legacy/linux/linux.x86_64.conf b/projects/Nvidia-Legacy/linux/linux.x86_64.conf index 41760a4e9c..505fb6b175 100644 --- a/projects/Nvidia-Legacy/linux/linux.x86_64.conf +++ b/projects/Nvidia-Legacy/linux/linux.x86_64.conf @@ -1609,31 +1609,12 @@ CONFIG_AR5523=m # CONFIG_ATH10K is not set CONFIG_WCN36XX=m # CONFIG_WCN36XX_DEBUGFS is not set -CONFIG_B43=m -CONFIG_B43_BCMA=y -CONFIG_B43_SSB=y -CONFIG_B43_BUSES_BCMA_AND_SSB=y +# CONFIG_B43 is not set +# CONFIG_B43_BUSES_BCMA_AND_SSB is not set # CONFIG_B43_BUSES_BCMA is not set # CONFIG_B43_BUSES_SSB is not set -CONFIG_B43_PCI_AUTOSELECT=y -CONFIG_B43_PCICORE_AUTOSELECT=y -CONFIG_B43_SDIO=y -CONFIG_B43_BCMA_PIO=y -CONFIG_B43_PIO=y -CONFIG_B43_PHY_G=y -CONFIG_B43_PHY_N=y -CONFIG_B43_PHY_LP=y -CONFIG_B43_PHY_HT=y -CONFIG_B43_LEDS=y -# CONFIG_B43_DEBUG is not set -CONFIG_B43LEGACY=m -CONFIG_B43LEGACY_PCI_AUTOSELECT=y -CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y -CONFIG_B43LEGACY_LEDS=y -# CONFIG_B43LEGACY_DEBUG is not set -CONFIG_B43LEGACY_DMA=y -CONFIG_B43LEGACY_PIO=y -CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y +# CONFIG_B43LEGACY is not set +# CONFIG_B43LEGACY_DMA_AND_PIO_MODE is not set # CONFIG_B43LEGACY_DMA_MODE is not set # CONFIG_B43LEGACY_PIO_MODE is not set CONFIG_BRCMUTIL=m @@ -2226,10 +2207,9 @@ CONFIG_SSB_POSSIBLE=y # CONFIG_SSB=y CONFIG_SSB_SPROM=y -CONFIG_SSB_BLOCKIO=y CONFIG_SSB_PCIHOST_POSSIBLE=y CONFIG_SSB_PCIHOST=y -CONFIG_SSB_B43_PCI_BRIDGE=y +# CONFIG_SSB_B43_PCI_BRIDGE is not set CONFIG_SSB_SDIOHOST_POSSIBLE=y CONFIG_SSB_SDIOHOST=y # CONFIG_SSB_SILENT is not set @@ -2242,7 +2222,6 @@ CONFIG_BCMA_POSSIBLE=y # Broadcom specific AMBA # CONFIG_BCMA=m -CONFIG_BCMA_BLOCKIO=y CONFIG_BCMA_HOST_PCI_POSSIBLE=y CONFIG_BCMA_HOST_PCI=y # CONFIG_BCMA_HOST_SOC is not set diff --git a/projects/Nvidia-Legacy/options b/projects/Nvidia-Legacy/options index 1d21727628..32a1be6aec 100644 --- a/projects/Nvidia-Legacy/options +++ b/projects/Nvidia-Legacy/options @@ -97,7 +97,7 @@ # for a list of additinoal drivers see packages/linux-drivers # Space separated list is supported, # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" - ADDITIONAL_DRIVERS="$ADDITIONAL_DRIVERS mt7601u" + ADDITIONAL_DRIVERS="$ADDITIONAL_DRIVERS mt7601u bcm_sta" # Xorg Graphic drivers to use (all / i915,i965,r200,r300,r600,nvidia) # Space separated list is supported,