diff options
author | Felix Fietkau <nbd@nbd.name> | 2024-01-26 20:16:32 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2024-02-03 16:16:36 +0100 |
commit | e772b75d5d50be4d541751a871057186439c25c2 (patch) | |
tree | c0d4f83a3930f1caddd7a049d4f8195b11dc674d | |
parent | 0e3f1475743d8f1360306e5d32da97c55517aa90 (diff) | |
download | openwrt-e772b75d5d50be4d541751a871057186439c25c2.tar.gz openwrt-e772b75d5d50be4d541751a871057186439c25c2.tar.bz2 openwrt-e772b75d5d50be4d541751a871057186439c25c2.zip |
broadcom-wl: remove package
Also remove remaining wireless extension support, since this package
was the only in-tree user of it
Signed-off-by: Felix Fietkau <nbd@nbd.name>
45 files changed, 0 insertions, 4053 deletions
diff --git a/config/Config-kernel.in b/config/Config-kernel.in index 4c43190e40..78155eb592 100644 --- a/config/Config-kernel.in +++ b/config/Config-kernel.in @@ -1184,21 +1184,6 @@ config KERNEL_XDP_SOCKETS XDP sockets allows a channel between XDP programs and userspace applications. -config KERNEL_WIRELESS_EXT - def_bool n - -config KERNEL_WEXT_CORE - def_bool KERNEL_WIRELESS_EXT - -config KERNEL_WEXT_PRIV - def_bool KERNEL_WIRELESS_EXT - -config KERNEL_WEXT_PROC - def_bool KERNEL_WIRELESS_EXT - -config KERNEL_WEXT_SPY - def_bool KERNEL_WIRELESS_EXT - config KERNEL_PAGE_POOL def_bool n diff --git a/package/kernel/broadcom-wl/Makefile b/package/kernel/broadcom-wl/Makefile deleted file mode 100644 index 101dbccbb5..0000000000 --- a/package/kernel/broadcom-wl/Makefile +++ /dev/null @@ -1,192 +0,0 @@ -# -# Copyright (C) 2006-2014 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk -include $(INCLUDE_DIR)/kernel.mk - -PKG_NAME:=broadcom-wl -PKG_VERSION:=5.10.56.27.3 -PKG_RELEASE:=10 - -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(ARCH).tar.bz2 -PKG_SOURCE_URL:=@OPENWRT - -ifeq ($(ARCH),mipsel) -PKG_HASH:=26a8c370f48fc129d0731cfd751c36cae1419b0bc8ca35781126744e60eae009 -endif -ifeq ($(ARCH),mips) -PKG_HASH:=ca6a86ca3e3e9c85b6dbb665b35bcbf338c37829c1b2f1994487d55664886045 -endif - -PKG_EXTMOD_SUBDIRS:=driver driver-mini glue - -PKG_BUILD_FLAGS:=no-mips16 -PKG_FLAGS:=nonshared - -include $(INCLUDE_DIR)/package.mk - -define Package/broadcom-wl/Default - SECTION:=kernel - CATEGORY:=Kernel modules - DEPENDS:=@(PACKAGE_kmod-brcm-wl||PACKAGE_kmod-brcm-wl-mini) - SUBMENU:=Proprietary BCM43xx WiFi driver - SUBMENUDEP:=(TARGET_bcm47xx||TARGET_bcm63xx) -endef - -define KernelPackage/brcm-wl/Default - $(call Package/broadcom-wl/Default) - SECTION:=kernel - DEPENDS:=@(TARGET_bcm47xx||TARGET_bcm63xx) +wireless-tools +wifi-scripts +@KERNEL_WIRELESS_EXT - TITLE:=Kernel driver for BCM43xx chipsets - FILES:=$(PKG_BUILD_DIR)/driver$(1)/wl.ko $(PKG_BUILD_DIR)/glue/wl_glue.ko - AUTOLOAD:=$(call AutoProbe,wl) -endef - -define KernelPackage/brcm-wl/Default/description - This package contains the proprietary wireless driver for the Broadcom - BCM43xx chipset. -endef - -define KernelPackage/brcm-wl -$(call KernelPackage/brcm-wl/Default,) - TITLE+= (normal version) -endef - -define KernelPackage/brcm-wl/description -$(call KernelPackage/brcm-wl/Default/description) -endef - -define KernelPackage/brcm-wl-mini -$(call KernelPackage/brcm-wl/Default,-mini) - TITLE+= (Legacy version) -endef - -define KernelPackage/brcm-wl-mini/description -$(call KernelPackage/brcm-wl/Default/description) -endef - -define Package/wlc -$(call Package/broadcom-wl/Default) - TITLE:=wl driver setup utility -endef - -define Package/wlc/description - This package contains an utility for initializing the proprietary Broadcom - wl driver. -endef - -define Package/wl -$(call Package/broadcom-wl/Default) - TITLE:=Proprietary Broadcom wl driver config utility -endef - -define Package/wl/description - This package contains the proprietary utility (wl) for configuring the - proprietary Broadcom wl driver. -endef - -define Package/nas -$(call Package/broadcom-wl/Default) - TITLE:=Proprietary Broadcom WPA/WPA2 authenticator -endef - -define Package/nas/description - This package contains the proprietary WPA/WPA2 authenticator (nas) for the - proprietary Broadcom wl driver. -endef - -MAKE_KMOD := $(KERNEL_MAKE) \ - PATH="$(TARGET_PATH)" \ - M="$(PKG_BUILD_DIR)/kmod" \ - -define Build/Prepare - $(call Build/Prepare/Default) - - # New kernel version changed the sysmbol exported from printk to _printk - # The object file provided by broadcom require modification to correctly - # modprobe and generate a .ko - $(TARGET_CROSS)objcopy $(PKG_BUILD_DIR)/driver/wl_apsta/wl_prebuilt.o \ - --redefine-sym printk=_printk - $(TARGET_CROSS)objcopy $(PKG_BUILD_DIR)/driver/wl_apsta_mini/wl_prebuilt.o \ - --redefine-sym printk=_printk - - $(CP) $(PKG_BUILD_DIR)/driver $(PKG_BUILD_DIR)/driver-mini - $(CP) ./src/glue $(PKG_BUILD_DIR)/glue -endef - -define Build/Compile - # Compile glue driver - $(MAKE_KMOD) -C "$(LINUX_DIR)" \ - M="$(PKG_BUILD_DIR)/glue" \ - modules - - # Compile the kernel part - $(MAKE_KMOD) \ - M="$(PKG_BUILD_DIR)/driver" \ - MODFLAGS="-DMODULE -mlong-calls" \ - KBUILD_EXTRA_SYMBOLS="$(PKG_BUILD_DIR)/glue/Module.symvers" \ - modules - - $(MAKE_KMOD) \ - M="$(PKG_BUILD_DIR)/driver-mini" \ - MODFLAGS="-DMODULE -mlong-calls" \ - BUILD_TYPE="wl_apsta_mini" \ - KBUILD_EXTRA_SYMBOLS="$(PKG_BUILD_DIR)/glue/Module.symvers" \ - modules - - # Compile libshared - $(MAKE) -C $(PKG_BUILD_DIR)/shared \ - $(TARGET_CONFIGURE_OPTS) \ - CFLAGS="$(TARGET_CFLAGS) -I. -I$(PKG_BUILD_DIR)/driver/include" \ - all - - $(TARGET_CC) -o $(PKG_BUILD_DIR)/wlc \ - -I$(PKG_BUILD_DIR)/shared -I$(PKG_BUILD_DIR)/driver/include \ - ./src/wlc.c $(PKG_BUILD_DIR)/shared/libshared.a - - $(TARGET_CC) -o $(PKG_BUILD_DIR)/nas \ - $(PKG_BUILD_DIR)/nas_exe.o \ - $(PKG_BUILD_DIR)/shared/libshared.a - - $(TARGET_CC) -o $(PKG_BUILD_DIR)/wl \ - $(PKG_BUILD_DIR)/wl_exe.o \ - $(PKG_BUILD_DIR)/shared/libshared.a -endef - -define Build/InstallDev - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_BUILD_DIR)/shared/libshared.a $(1)/usr/lib/ -endef - -define Package/wlc/install - $(CP) ./files/* $(1)/ - $(INSTALL_DIR) $(1)/sbin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/wlc $(1)/sbin/ -endef - -define Package/wlc/postinst -#!/bin/sh -[ -n "$${IPKG_INSTROOT}" ] || /etc/init.d/wlunbind enable || true -endef - -define Package/wl/install - $(INSTALL_DIR) $(1)/usr/sbin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/wl $(1)/usr/sbin/ -endef - -define Package/nas/install - $(INSTALL_DIR) $(1)/usr/sbin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/nas $(1)/usr/sbin/ - $(LN) nas $(1)/usr/sbin/nas4not - $(LN) nas $(1)/usr/sbin/nas4wds -endef - -$(eval $(call KernelPackage,brcm-wl)) -$(eval $(call KernelPackage,brcm-wl-mini)) -$(eval $(call BuildPackage,wlc)) -$(eval $(call BuildPackage,wl)) -$(eval $(call BuildPackage,nas)) diff --git a/package/kernel/broadcom-wl/files/etc/hotplug.d/net/00-broadcom-wifi-detect b/package/kernel/broadcom-wl/files/etc/hotplug.d/net/00-broadcom-wifi-detect deleted file mode 100644 index a63d6bce60..0000000000 --- a/package/kernel/broadcom-wl/files/etc/hotplug.d/net/00-broadcom-wifi-detect +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -[ "${ACTION}" = "add" ] && [ "${INTERFACE%%[0-9]}" = "wl" ] && { - /sbin/wifi config -} diff --git a/package/kernel/broadcom-wl/files/etc/hotplug.d/net/20-broadcom_wds b/package/kernel/broadcom-wl/files/etc/hotplug.d/net/20-broadcom_wds deleted file mode 100644 index 35c4218e03..0000000000 --- a/package/kernel/broadcom-wl/files/etc/hotplug.d/net/20-broadcom_wds +++ /dev/null @@ -1,61 +0,0 @@ -include /lib/wifi - -setup_broadcom_wds() { - local iface="$1" - local remote="$(wlc ifname "$iface" wdsmac)" - - [ -z "$remote" ] && return - - config_cb() { - [ -z "$CONFIG_SECTION" ] && return - - config_get type "$CONFIG_SECTION" TYPE - [ "$type" = "wifi-iface" ] || return - - config_get network "$CONFIG_SECTION" network - [ -z "$network" ] && return - - config_get addr "$CONFIG_SECTION" bssid - addr=$(echo "$addr" | tr 'A-F' 'a-f') - [ "$addr" = "$remote" ] && { - local cfg="$CONFIG_SECTION" - - include /lib/network - scan_interfaces - - for network in $network; do - setup_interface "$iface" "$network" - done - - config_get encryption "$cfg" encryption - config_get key "$cfg" key - config_get ssid "$cfg" ssid - - [ "$encryption" != "none" ] && { - sleep 5 - case "$encryption" in - psk|PSK) - nas4not "$network" "$iface" up auto tkip psk "$key" "$ssid" - ;; - psk2|PSK2) - nas4not "$network" "$iface" up auto aes psk "$key" "$ssid" - ;; - psk+psk2|psk2+psk|PSK+PSK2|PSK2+PSK) - nas4not "$network" "$iface" up auto aes+tkip psk "$key" "$ssid" - ;; - *) - nas4not lan "$iface" up auto aes "$encryption" "$key" "$ssid" - ;; - esac - } - } - } - - config_load wireless -} - -case "$ACTION" in - add|register) - [ "${INTERFACE%%[0-1]-*}" = wds ] && setup_broadcom_wds "$INTERFACE" - ;; -esac diff --git a/package/kernel/broadcom-wl/files/etc/init.d/wlunbind b/package/kernel/broadcom-wl/files/etc/init.d/wlunbind deleted file mode 100755 index 0a29db565f..0000000000 --- a/package/kernel/broadcom-wl/files/etc/init.d/wlunbind +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh /etc/rc.common -# Copyright (C) 2010-2011 OpenWrt.org - -START=09 - -unbind_driver() { - local driver="$1" - local sysfs="/sys/bus/pci/drivers/$driver" - if [ -d "$sysfs" ]; then - local lnk - for lnk in $sysfs/*; do - [ -h "$lnk" ] || continue - case "${lnk##*/}" in - *:*:*.*) - logger "Unbinding WL PCI device ${lnk##*/} from $driver" - echo -n "${lnk##*/}" > "$sysfs/unbind" - ;; - esac - done - fi -} - -boot() { - unbind_driver b43-pci-bridge - unbind_driver bcma-pci-bridge -} - -start() { :; } -stop() { :; } diff --git a/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh b/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh deleted file mode 100644 index 352c365f27..0000000000 --- a/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh +++ /dev/null @@ -1,480 +0,0 @@ -append DRIVERS "broadcom" - -scan_broadcom() { - local device="$1" - local vif vifs wds - local adhoc sta apmode mon disabled - local adhoc_if sta_if ap_if mon_if - - config_get vifs "$device" vifs - for vif in $vifs; do - config_get_bool disabled "$vif" disabled 0 - [ $disabled -eq 0 ] || continue - - local mode - config_get mode "$vif" mode - case "$mode" in - adhoc) - adhoc=1 - adhoc_if="$vif" - ;; - sta) - sta=1 - sta_if="$vif" - ;; - ap) - apmode=1 - ap_if="${ap_if:+$ap_if }$vif" - ;; - wds) - local addr - config_get addr "$vif" bssid - [ -z "$addr" ] || { - addr=$(echo "$addr" | tr 'A-F' 'a-f') - append wds "$addr" - } - ;; - monitor) - mon=1 - mon_if="$vif" - ;; - *) echo "$device($vif): Invalid mode";; - esac - done - config_set "$device" wds "$wds" - - local _c= - for vif in ${adhoc_if:-$sta_if $ap_if $mon_if}; do - config_set "$vif" ifname "${device}${_c:+-$_c}" - _c=$((${_c:-0} + 1)) - done - config_set "$device" vifs "${adhoc_if:-$sta_if $ap_if $mon_if}" - - ap=1 - infra=1 - if [ "$_c" -gt 1 ]; then - mssid=1 - else - mssid= - fi - apsta=0 - radio=1 - monitor=0 - case "$adhoc:$sta:$apmode:$mon" in - 1*) - ap=0 - mssid= - infra=0 - ;; - :1:1:) - apsta=1 - wet=1 - ;; - :1::) - wet=1 - ap=0 - mssid= - ;; - :::1) - wet=1 - ap=0 - mssid= - monitor=1 - ;; - ::) - radio=0 - ;; - esac -} - -disable_broadcom() { - local device="$1" - set_wifi_down "$device" - ( - include /lib/network - - local pid_file=/var/run/nas.$device.pid - [ -e $pid_file ] && start-stop-daemon -K -q -s SIGKILL -p $pid_file && rm $pid_file - - # make sure the interfaces are down and removed from all bridges - local dev ifname - for dev in /sys/class/net/wds${device##wl}-* /sys/class/net/${device}-* /sys/class/net/${device}; do - if [ -e "$dev" ]; then - ifname=${dev##/sys/class/net/} - ip link set dev "$ifname" down - unbridge "$ifname" - fi - done - - # make sure all of the devices are disabled in the driver - local ifdown= - local bssmax=$(wlc ifname "$device" bssmax) - local vif=$((${bssmax:-4} - 1)) - append ifdown "down" "$N" - append ifdown "wds none" "$N" - while [ $vif -ge 0 ]; do - append ifdown "vif $vif" "$N" - append ifdown "enabled 0" "$N" - vif=$(($vif - 1)) - done - - wlc ifname "$device" stdin <<EOF -$ifdown -leddc 0xffff -EOF - ) - true -} - -enable_broadcom() { - local device="$1" - local channel country maxassoc wds vifs distance slottime rxantenna txantenna - local frameburst macfilter maclist macaddr txpower frag rts hwmode htmode - config_get channel "$device" channel - config_get country "$device" country - config_get maxassoc "$device" maxassoc - config_get wds "$device" wds - config_get vifs "$device" vifs - config_get distance "$device" distance - config_get slottime "$device" slottime - config_get rxantenna "$device" rxantenna - config_get txantenna "$device" txantenna - config_get_bool frameburst "$device" frameburst - config_get macfilter "$device" macfilter - config_get maclist "$device" maclist - config_get macaddr "$device" macaddr $(wlc ifname "$device" default_bssid) - config_get txpower "$device" txpower - config_get frag "$device" frag - config_get rts "$device" rts - config_get hwmode "$device" hwmode - config_get htmode "$device" htmode - local doth=0 - local wmm=1 - - [ -z "$slottime" ] && { - [ -n "$distance" ] && { - # slottime = 9 + (distance / 150) + (distance % 150 ? 1 : 0) - slottime="$((9 + ($distance / 150) + 1 - (150 - ($distance % 150)) / 150 ))" - } - } || { - slottime="${slottime:--1}" - } - - case "$macfilter" in - allow|2) - macfilter=2; - ;; - deny|1) - macfilter=1; - ;; - disable|none|0) - macfilter=0; - ;; - esac - - local gmode=2 nmode=0 nreqd= - case "$hwmode" in - *a) gmode=;; - *b) gmode=0;; - *bg) gmode=1;; - *g) gmode=2;; - *gst) gmode=4;; - *lrs) gmode=5;; - *) nmode=1; nreqd=0;; - esac - - case "$hwmode" in - n|11n) nmode=1; nreqd=1;; - *n*) nmode=1; nreqd=0;; - esac - - # Use 'nmode' for N-Phy only - [ "$(wlc ifname "$device" phytype)" = 4 ] || nmode= - - local band chanspec - [ ${channel:-0} -ge 1 -a ${channel:-0} -le 14 ] && band=2 - [ ${channel:-0} -ge 36 ] && { - band=1 - gmode= - } - - # Use 'chanspec' instead of 'channel' for 'N' modes (See bcmwifi.h) - [ -n "$nmode" -a -n "$band" -a -n "$channel" ] && { - case "$htmode" in - HT40) - if [ -n "$gmode" ]; then - [ $channel -lt 7 ] && htmode="HT40+" || htmode="HT40-" - else - [ $(( ($channel / 4) % 2 )) -eq 1 ] && htmode="HT40+" || htmode="HT40-" - fi - ;; - esac - case "$htmode" in - HT40-) chanspec=$(printf 0x%x%x%02x $band 0xe $(($channel - 2))); nmode=1; channel=;; - HT40+) chanspec=$(printf 0x%x%x%02x $band 0xd $(($channel + 2))); nmode=1; channel=;; - HT20) chanspec=$(printf 0x%x%x%02x $band 0xb $channel); nmode=1; channel=;; - *) ;; - esac - } - - local leddc=$(wlc ifname "$device" leddc) - [ $((leddc)) -eq $((0xffff)) ] && { - leddc=0x005a000a; - } - - local _c=0 - local nas="$(command -v nas)" - local if_pre_up if_up nas_cmd - local vif vif_pre_up vif_post_up vif_do_up vif_txpower - local bssmax=$(wlc ifname "$device" bssmax) - bssmax=${bssmax:-4} - - for vif in $vifs; do - [ $_c -ge $bssmax ] && break - - config_get vif_txpower "$vif" txpower - - local mode - config_get mode "$vif" mode - append vif_pre_up "vif $_c" "$N" - append vif_post_up "vif $_c" "$N" - append vif_do_up "vif $_c" "$N" - - config_get_bool wmm "$vif" wmm "$wmm" - config_get_bool doth "$vif" doth "$doth" - - [ "$mode" = "sta" ] || { - local hidden isolate - config_get_bool hidden "$vif" hidden 0 - append vif_pre_up "closed $hidden" "$N" - config_get_bool isolate "$vif" isolate 0 - append vif_pre_up "ap_isolate $isolate" "$N" - } - - local wsec_r=0 - local eap_r=0 - local wsec=0 - local auth=0 - local nasopts= - local enc key rekey - - config_get enc "$vif" encryption - case "$enc" in - *wep*) - local def defkey k knr - wsec_r=1 - wsec=1 - defkey=1 - config_get key "$vif" key - case "$enc" in - *shared*) append vif_do_up "wepauth 1" "$N";; - *) append vif_do_up "wepauth 0" "$N";; - esac - case "$key" in - [1234]) - defkey="$key" - for knr in 1 2 3 4; do - config_get k "$vif" key$knr - [ -n "$k" ] || continue - [ "$defkey" = "$knr" ] && def="=" || def="" - append vif_do_up "wepkey $def$knr,$k" "$N" - done - ;; - "");; - *) append vif_do_up "wepkey =1,$key" "$N";; - esac - ;; - *psk*) - wsec_r=1 - config_get key "$vif" key - - # psk version + default cipher - case "$enc" in - *mixed*|*psk+psk2*) auth=132; wsec=6;; - *psk2*) auth=128; wsec=4;; - *) auth=4; wsec=2;; - esac - - # cipher override - case "$enc" in - *tkip+aes*|*tkip+ccmp*|*aes+tkip*|*ccmp+tkip*) wsec=6;; - *aes*|*ccmp*) wsec=4;; - *tkip*) wsec=2;; - esac - - # group rekey interval - config_get rekey "$vif" wpa_group_rekey - - eval "${vif}_key=\"\$key\"" - nasopts="-k \"\$${vif}_key\"${rekey:+ -g $rekey}" - ;; - *wpa*) - local auth_port auth_secret auth_server - wsec_r=1 - eap_r=1 - config_get auth_server "$vif" auth_server - [ -z "$auth_server" ] && config_get auth_server "$vif" server - config_get auth_port "$vif" auth_port - [ -z "$auth_port" ] && config_get auth_port "$vif" port - config_get auth_secret "$vif" auth_secret - [ -z "$auth_secret" ] && config_get auth_secret "$vif" key - - # wpa version + default cipher - case "$enc" in - *mixed*|*wpa+wpa2*) auth=66; wsec=6;; - *wpa2*) auth=64; wsec=4;; - *) auth=2; wsec=2;; - esac - - # cipher override - case "$enc" in - *tkip+aes*|*tkip+ccmp*|*aes+tkip*|*ccmp+tkip*) wsec=6;; - *aes*|*ccmp*) wsec=4;; - *tkip*) wsec=2;; - esac - - # group rekey interval - config_get rekey "$vif" wpa_group_rekey - - eval "${vif}_key=\"\$auth_secret\"" - nasopts="-r \"\$${vif}_key\" -h $auth_server -p ${auth_port:-1812}${rekey:+ -g $rekey}" - ;; - esac - append vif_do_up "wsec $wsec" "$N" - append vif_do_up "wpa_auth $auth" "$N" - append vif_do_up "wsec_restrict $wsec_r" "$N" - append vif_do_up "eap_restrict $eap_r" "$N" - - local ssid - config_get ssid "$vif" ssid - append vif_post_up "vlan_mode 0" "$N" - append vif_pre_up "ssid $ssid" "$N" - - [ "$mode" = "monitor" ] && { - append vif_post_up "monitor $monitor" "$N" - } - - [ "$mode" = "adhoc" ] && { - local bssid - config_get bssid "$vif" bssid - [ -n "$bssid" ] && { - append vif_pre_up "bssid $bssid" "$N" - append vif_pre_up "ibss_merge 0" "$N" - } || { - append vif_pre_up "ibss_merge 1" "$N" - } - } - - append vif_post_up "enabled 1" "$N" - - local ifname - config_get ifname "$vif" ifname - local if_cmd="if_pre_up" - [ "$ifname" != "${ifname##${device}-}" ] && if_cmd="if_up" - append $if_cmd "macaddr=\$(wlc ifname '$ifname' cur_etheraddr)" ";$N" - append $if_cmd "ip link set dev '$ifname' address \$macaddr" ";$N" - append if_up "ip link set dev '$ifname' up" ";$N" - - local net_cfg="$(find_net_config "$vif")" - [ -z "$net_cfg" ] || { - ubus -t 30 wait_for network.interface."$net_cfg" - append if_up "set_wifi_up '$vif' '$ifname'" ";$N" - append if_up "start_net '$ifname' '$net_cfg'" ";$N" - } - [ -z "$nas" -o -z "$nasopts" ] || { - eval "${vif}_ssid=\"\$ssid\"" - local nas_mode="-A" - [ "$mode" = "sta" ] && nas_mode="-S" - [ -z "$nas_cmd" ] && { - local pid_file=/var/run/nas.$device.pid - nas_cmd="start-stop-daemon -S -b -p $pid_file -x $nas -- -P $pid_file -H 34954" - } - append nas_cmd "-i $ifname $nas_mode -m $auth -w $wsec -s \"\$${vif}_ssid\" -g 3600 -F $nasopts" - } - _c=$(($_c + 1)) - done - wlc ifname "$device" stdin <<EOF -${macaddr:+bssid $macaddr} -${macaddr:+cur_etheraddr $macaddr} -band ${band:-0} -${nmode:+nmode $nmode} -${nmode:+${nreqd:+nreqd $nreqd}} -${gmode:+gmode $gmode} -leddc $leddc -apsta $apsta -ap $ap -${mssid:+mssid $mssid} -infra $infra -${wet:+wet 1} -802.11d 0 -802.11h ${doth:-0} -wme ${wmm:-1} -rxant ${rxantenna:-3} -txant ${txantenna:-3} -fragthresh ${frag:-2346} -rtsthresh ${rts:-2347} -monitor ${monitor:-0} - -radio ${radio:-1} -macfilter ${macfilter:-0} -maclist ${maclist:-none} -${wds:+wds $wds} -country ${country:-US} -${channel:+channel $channel} -${chanspec:+chanspec $chanspec} -maxassoc ${maxassoc:-128} -slottime ${slottime:--1} -${frameburst:+frameburst $frameburst} - -$vif_pre_up -EOF - eval "$if_pre_up" - wlc ifname "$device" stdin <<EOF -up -$vif_post_up -EOF - eval "$if_up" - wlc ifname "$device" stdin <<EOF -$vif_do_up -EOF - - # use vif_txpower (from last wifi-iface) instead of txpower (from - # wifi-device) if the latter does not exist - txpower=${txpower:-$vif_txpower} - [ -z "$txpower" ] || iwconfig $device txpower ${txpower}dBm - - # fd 1000 is an inherited lock file descriptor for preventing concurrent - # init script executions. Close it here to prevent the nas daemon from - # inheriting it further to avoid holding the lock indefinitely. - eval "$nas_cmd 1000>&-" -} - - -detect_broadcom() { - local i=-1 - - while grep -qs "^ *wl$((++i)):" /proc/net/dev; do - local channel type - - config_get type wl${i} type - [ "$type" = broadcom ] && continue - channel=`wlc ifname wl${i} channel` - - uci -q batch <<-EOF - set wireless.wl${i}=wifi-device - set wireless.wl${i}.type=broadcom - set wireless.wl${i}.channel=${channel:-11} - set wireless.wl${i}.txantenna=3 - set wireless.wl${i}.rxantenna=3 - set wireless.wl${i}.disabled=1 - - set wireless.default_wl${i}=wifi-iface - set wireless.default_wl${i}.device=wl${i} - set wireless.default_wl${i}.network=lan - set wireless.default_wl${i}.mode=ap - set wireless.default_wl${i}.ssid=OpenWrt${i#0} - set wireless.default_wl${i}.encryption=none -EOF - uci -q commit wireless - done -} diff --git a/package/kernel/broadcom-wl/patches/003-compat-2.6.35.patch b/package/kernel/broadcom-wl/patches/003-compat-2.6.35.patch deleted file mode 100644 index 89b665371d..0000000000 --- a/package/kernel/broadcom-wl/patches/003-compat-2.6.35.patch +++ /dev/null @@ -1,39 +0,0 @@ ---- a/driver/wl_linux.c -+++ b/driver/wl_linux.c -@@ -2082,7 +2082,11 @@ static void - _wl_set_multicast_list(struct net_device *dev) - { - wl_info_t *wl; -+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,34) - struct dev_mc_list *mclist; -+#else -+ struct netdev_hw_addr *ha; -+#endif - int i; - - if (!dev) -@@ -2098,14 +2102,24 @@ _wl_set_multicast_list(struct net_device - wl->pub->allmulti = (dev->flags & IFF_ALLMULTI)? TRUE: FALSE; - - /* copy the list of multicasts into our private table */ -+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,34) - for (i = 0, mclist = dev->mc_list; mclist && (i < dev->mc_count); - i++, mclist = mclist->next) { -+#else -+ i = 0; -+ netdev_for_each_mc_addr(ha, dev) { -+#endif - if (i >= MAXMULTILIST) { - wl->pub->allmulti = TRUE; - i = 0; - break; - } -+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,34) - wl->pub->multicast[i] = *((struct ether_addr*) mclist->dmi_addr); -+#else -+ wl->pub->multicast[i] = *((struct ether_addr*) ha->addr); -+ i++; -+#endif - } - wl->pub->nmulticast = i; - wlc_set(wl->wlc, WLC_SET_PROMISC, (dev->flags & IFF_PROMISC)); diff --git a/package/kernel/broadcom-wl/patches/004-remove-pcmcia.patch b/package/kernel/broadcom-wl/patches/004-remove-pcmcia.patch deleted file mode 100644 index 36dda47e10..0000000000 --- a/package/kernel/broadcom-wl/patches/004-remove-pcmcia.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- a/driver/include/linuxver.h -+++ b/driver/include/linuxver.h -@@ -111,7 +111,7 @@ typedef irqreturn_t(*FN_ISR) (int irq, v - #endif /* not SANDGATE2G */ - #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 67) */ - --#if defined(CONFIG_PCMCIA) || defined(CONFIG_PCMCIA_MODULE) -+#if 0 - - #include <pcmcia/cs_types.h> - #include <pcmcia/cs.h> ---- a/driver/linux_osl.c -+++ b/driver/linux_osl.c -@@ -62,7 +62,7 @@ struct osl_info { - }; - - /* PCMCIA attribute space access macros */ --#if defined(CONFIG_PCMCIA) || defined(CONFIG_PCMCIA_MODULE) -+#if 0 - struct pcmcia_dev { - dev_link_t link; /* PCMCIA device pointer */ - dev_node_t node; /* PCMCIA node structure */ diff --git a/package/kernel/broadcom-wl/patches/005-fix-mem-leak-on-unload.patch b/package/kernel/broadcom-wl/patches/005-fix-mem-leak-on-unload.patch deleted file mode 100644 index 41c246ff80..0000000000 --- a/package/kernel/broadcom-wl/patches/005-fix-mem-leak-on-unload.patch +++ /dev/null @@ -1,31 +0,0 @@ -From: George Kashperko <george@znau.edu.ua> - -Release nvram variables buffer. -Prevent block reserved by alloc_etherdev from being freed. -Signed-off-by: George Kashperko <george@znau.edu.ua> ---- ---- ---- a/driver/siutils.c -+++ b/driver/siutils.c -@@ -647,7 +647,10 @@ si_detach(si_t *sih) - #if !defined(BCMBUSTYPE) || (BCMBUSTYPE == SI_BUS) - if (sii != &ksii) - #endif /* !BCMBUSTYPE || (BCMBUSTYPE == SI_BUS) */ -- MFREE(sii->osh, sii, sizeof(si_info_t)); -+ do { -+ MFREE(sii->osh, sii, sizeof(si_info_t)); -+ nvram_exit((void *)&(sii->pub)); -+ } while (0); - } - - void * ---- a/driver/wl_linux.c -+++ b/driver/wl_linux.c -@@ -1477,7 +1477,6 @@ wl_free_if(wl_info_t *wl, wl_if_t *wlif) - free_netdev(wlif->dev); - #endif - } -- MFREE(wl->osh, wlif, sizeof(wl_if_t)); - } - - #ifdef AP diff --git a/package/kernel/broadcom-wl/patches/006-generic-dma-api.patch b/package/kernel/broadcom-wl/patches/006-generic-dma-api.patch deleted file mode 100644 index d6dd5f0aae..0000000000 --- a/package/kernel/broadcom-wl/patches/006-generic-dma-api.patch +++ /dev/null @@ -1,88 +0,0 @@ -From: George Kashperko <george@znau.edu.ua> - -broadcom-wl driver bound to ssb device with ssb driver probe -have osh handle struct pdev pointer value initialized with -ssb_device pointer. Later on pdev is used with legacy pci -dma api as pci_dev thus causing oops sometimes. - -The patch replaces legacy pci dma api and pass relevant -device struct pointer to avoid crashes. -Signed-off-by: George Kashperko <george@znau.edu.ua> ---- - driver/linux_osl.c | 28 +++++++++++++++++++++++----- - 1 file changed, 23 insertions(+), 5 deletions(-) ---- a/driver/linux_osl.c -+++ b/driver/linux_osl.c -@@ -25,6 +25,9 @@ - #include <asm/paccess.h> - #endif /* mips */ - #include <pcicfg.h> -+#ifdef CONFIG_SSB -+#include <linux/ssb/ssb.h> -+#endif - - #define PCI_CFG_RETRY 10 - -@@ -364,12 +367,27 @@ osl_dma_consistent_align(void) - return (PAGE_SIZE); - } - -+static struct device * -+osl_get_dmadev(osl_t *osh) -+{ -+#ifdef CONFIG_SSB -+ if (osh->bustype == SI_BUS) { -+ /* This can be SiliconBackplane emulated as pci with Broadcom or -+ * ssb device. Less harmful is to check for pci_bus_type and if -+ * no match then assume we got ssb */ -+ if (((struct pci_dev *)osh->pdev)->dev.bus != &pci_bus_type) -+ return ((struct ssb_device *)osh->pdev)->dma_dev; -+ } -+#endif -+ return &((struct pci_dev *)osh->pdev)->dev; -+} -+ - void* - osl_dma_alloc_consistent(osl_t *osh, uint size, ulong *pap) - { - ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC))); - -- return (pci_alloc_consistent(osh->pdev, size, (dma_addr_t*)pap)); -+ return (dma_alloc_coherent(osl_get_dmadev(osh), size, (dma_addr_t*)pap, GFP_ATOMIC)); - } - - void -@@ -377,7 +395,7 @@ osl_dma_free_consistent(osl_t *osh, void - { - ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC))); - -- pci_free_consistent(osh->pdev, size, va, (dma_addr_t)pa); -+ dma_free_coherent(osl_get_dmadev(osh), size, va, (dma_addr_t)pa); - } - - uint BCMFASTPATH -@@ -386,13 +404,13 @@ osl_dma_map(osl_t *osh, void *va, uint s - ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC))); - - if (direction == DMA_TX) -- return (pci_map_single(osh->pdev, va, size, PCI_DMA_TODEVICE)); -+ return (dma_map_single(osl_get_dmadev(osh), va, size, PCI_DMA_TODEVICE)); - else { - #ifdef mips - dma_cache_inv((uint)va, size); - return (virt_to_phys(va)); - #else /* mips */ -- return (pci_map_single(osh->pdev, va, size, PCI_DMA_FROMDEVICE)); -+ return (dma_map_single(osl_get_dmadev(osh), va, size, PCI_DMA_FROMDEVICE)); - #endif /* mips */ - } - } -@@ -404,7 +422,7 @@ osl_dma_unmap(osl_t *osh, uint pa, uint - - ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC))); - dir = (direction == DMA_TX)? PCI_DMA_TODEVICE: PCI_DMA_FROMDEVICE; -- pci_unmap_single(osh->pdev, (uint32)pa, size, dir); -+ dma_unmap_single(osl_get_dmadev(osh), (uint32)pa, size, dir); - } - - diff --git a/package/kernel/broadcom-wl/patches/007-use-glue-driver.patch b/package/kernel/broadcom-wl/patches/007-use-glue-driver.patch deleted file mode 100644 index a30dcc4edf..0000000000 --- a/package/kernel/broadcom-wl/patches/007-use-glue-driver.patch +++ /dev/null @@ -1,188 +0,0 @@ ---- a/driver/wl_linux.c -+++ b/driver/wl_linux.c -@@ -85,10 +85,9 @@ typedef void wlc_hw_info_t; - #include <bcmjtag.h> - #endif /* BCMJTAG */ - -- --#ifdef CONFIG_SSB --#include <linux/ssb/ssb.h> --#endif -+#if defined(CONFIG_SSB) || defined(CONFIG_BCMA) -+#include <wl_glue.h> -+#endif /* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */ - - /* Linux wireless extension support */ - #ifdef CONFIG_WIRELESS_EXT -@@ -997,62 +996,32 @@ static struct pci_driver wl_pci_driver = - #endif /* CONFIG_PCI */ - #endif - -+#ifdef BCMJTAG -+static bcmjtag_driver_t wl_jtag_driver = { -+ wl_jtag_probe, -+ wl_jtag_detach, -+ wl_jtag_poll, -+ }; -+#endif /* BCMJTAG */ - --static int wl_ssb_probe(struct ssb_device *dev, const struct ssb_device_id *id) -+#if defined(CONFIG_SSB) || defined(CONFIG_BCMA) -+static void * glue_attach_cb(u16 vendor, u16 device, -+ ulong mmio, void *dev, u32 irq) - { -- wl_info_t *wl; -- void *mmio; -- -- if (dev->bus->bustype != SSB_BUSTYPE_SSB) { -- printk("Attaching to SSB behind PCI is not supported. Please remove the b43 ssb bridge\n"); -- return -EINVAL; -- } -- -- mmio = (void *) 0x18000000 + dev->core_index * 0x1000; -- wl = wl_attach(id->vendor, id->coreid, (ulong) mmio, SI_BUS, dev, dev->irq); -- if (!wl) { -- printk("wl_attach failed\n"); -- return -ENODEV; -- } -- -- ssb_set_drvdata(dev, wl); -- -- return 0; -+ return wl_attach(vendor, device, mmio, SI_BUS, dev, irq); - } - --static void wl_ssb_remove(struct ssb_device *dev) -+static void glue_remove_cb(void *wldev) - { -- wl_info_t *wl = (wl_info_t *) ssb_get_drvdata(dev); -+ wl_info_t *wl = (wl_info_t *)wldev; - - WL_LOCK(wl); - WL_APSTA_UPDN(("wl%d (%s): wl_remove() -> wl_down()\n", wl->pub->unit, wl->dev->name)); - wl_down(wl); - WL_UNLOCK(wl); - wl_free(wl); -- ssb_set_drvdata(dev, NULL); - } -- --static const struct ssb_device_id wl_ssb_tbl[] = { -- SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, SSB_ANY_REV), -- SSB_DEVTABLE_END --}; -- --#ifdef CONFIG_SSB --static struct ssb_driver wl_ssb_driver = { -- .name = KBUILD_MODNAME, -- .id_table = wl_ssb_tbl, -- .probe = wl_ssb_probe, -- .remove = wl_ssb_remove, --}; --#endif -- --#ifdef BCMJTAG --static bcmjtag_driver_t wl_jtag_driver = { -- wl_jtag_probe, -- wl_jtag_detach, -- wl_jtag_poll, -- }; --#endif /* BCMJTAG */ -+#endif/* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */ - - - /** -@@ -1067,11 +1036,13 @@ wl_module_init(void) - { - int error = -ENODEV; - --#ifdef CONFIG_SSB -- error = ssb_driver_register(&wl_ssb_driver); -+#if defined(CONFIG_SSB) || defined(CONFIG_BCMA) -+ wl_glue_set_attach_callback(&glue_attach_cb); -+ wl_glue_set_remove_callback(&glue_remove_cb); -+ error = wl_glue_register(); - if (error) - return error; --#endif /* CONFIG_SSB */ -+#endif /* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */ - - #ifdef CONFIG_PCI - error = pci_register_driver(&wl_pci_driver); -@@ -1082,7 +1053,11 @@ wl_module_init(void) - return 0; - - error_pci: -- ssb_driver_unregister(&wl_ssb_driver); -+#if defined(CONFIG_SSB) || defined(CONFIG_BCMA) -+ wl_glue_unregister(); -+ wl_glue_set_attach_callback(NULL); -+ wl_glue_set_remove_callback(NULL); -+#endif /* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */ - return error; - } - -@@ -1099,9 +1074,11 @@ wl_module_exit(void) - #ifdef CONFIG_PCI - pci_unregister_driver(&wl_pci_driver); - #endif /* CONFIG_PCI */ --#ifdef CONFIG_SSB -- ssb_driver_unregister(&wl_ssb_driver); --#endif /* CONFIG_SSB */ -+#if defined(CONFIG_SSB) || defined(CONFIG_BCMA) -+ wl_glue_unregister(); -+ wl_glue_set_attach_callback(NULL); -+ wl_glue_set_remove_callback(NULL); -+#endif /* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */ - } - - module_init(wl_module_init); ---- a/driver/linux_osl.c -+++ b/driver/linux_osl.c -@@ -25,9 +25,9 @@ - #include <asm/paccess.h> - #endif /* mips */ - #include <pcicfg.h> --#ifdef CONFIG_SSB --#include <linux/ssb/ssb.h> --#endif -+#if defined(CONFIG_SSB) || defined(CONFIG_BCMA) -+#include <wl_glue.h> -+#endif /* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */ - - #define PCI_CFG_RETRY 10 - -@@ -370,15 +370,17 @@ osl_dma_consistent_align(void) - static struct device * - osl_get_dmadev(osl_t *osh) - { --#ifdef CONFIG_SSB -+#if defined(CONFIG_SSB) || defined(CONFIG_BCMA) - if (osh->bustype == SI_BUS) { -- /* This can be SiliconBackplane emulated as pci with Broadcom or -- * ssb device. Less harmful is to check for pci_bus_type and if -- * no match then assume we got ssb */ -+ /* This can be SiliconBackplane emulated as pci with Broadcom, -+ * ssb or bcma device. Less harmful is to check for pci_bus_type and if -+ * no match then assume we got either ssb or bcma */ - if (((struct pci_dev *)osh->pdev)->dev.bus != &pci_bus_type) -- return ((struct ssb_device *)osh->pdev)->dma_dev; -+ { -+ return wl_glue_get_dmadev(osh->pdev); -+ } - } --#endif -+#endif /* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */ - return &((struct pci_dev *)osh->pdev)->dev; - } - ---- a/driver/Makefile -+++ b/driver/Makefile -@@ -1,7 +1,7 @@ - BUILD_TYPE=wl_apsta - include $(src)/$(BUILD_TYPE)/buildflags.mk - --EXTRA_CFLAGS += -I$(src)/include -I$(src) -DBCMDRIVER $(WLFLAGS) -+EXTRA_CFLAGS += -I$(src)/include -I$(src) -I$(realpath $(src)/../glue) -DBCMDRIVER $(WLFLAGS) - - wl-objs := $(BUILD_TYPE)/wl_prebuilt.o wl_iw.o wl_linux.o linux_osl.o siutils.o aiutils.o hndpmu.o bcmutils.o sbutils.o nicpci.o hnddma.o bcmsrom.o nvram_stub.o - diff --git a/package/kernel/broadcom-wl/patches/008-fix_virtual_interfaces.patch b/package/kernel/broadcom-wl/patches/008-fix_virtual_interfaces.patch deleted file mode 100644 index 23831df5ba..0000000000 --- a/package/kernel/broadcom-wl/patches/008-fix_virtual_interfaces.patch +++ /dev/null @@ -1,132 +0,0 @@ ---- a/driver/wl_linux.c -+++ b/driver/wl_linux.c -@@ -354,6 +354,7 @@ static int wl_read_proc(char *buffer, ch - static int wl_dump(wl_info_t *wl, struct bcmstrbuf *b); - #endif /* BCMDBG */ - struct wl_if *wl_alloc_if(wl_info_t *wl, int iftype, uint unit, struct wlc_if* wlc_if); -+static void wl_link_if(wl_info_t *wl, wl_if_t *wlif); - static void wl_free_if(wl_info_t *wl, wl_if_t *wlif); - - -@@ -566,6 +567,9 @@ wl_attach(uint16 vendor, uint16 device, - wl->dev = dev; - wl_if_setup(dev); - -+ /* add the interface to the interface linked list */ -+ wl_link_if(wl, wlif); -+ - /* map chip registers (47xx: and sprom) */ - dev->base_addr = regs; - -@@ -1106,10 +1110,14 @@ wl_free(wl_info_t *wl) - free_irq(wl->dev->irq, wl); - } - -- if (wl->dev) { -- wl_free_if(wl, WL_DEV_IF(wl->dev)); -- wl->dev = NULL; -+ /* free all interfaces */ -+ while (wl->if_list) { -+ if ((wl->if_list->dev != wl->dev) || wl->if_list->next == NULL) -+ wl_free_if(wl, wl->if_list); -+ else -+ wl_free_if(wl, wl->if_list->next); - } -+ wl->dev = NULL; - - #ifdef TOE - wl_toe_detach(wl->toei); -@@ -1355,10 +1363,12 @@ wl_txflowcontrol(wl_info_t *wl, bool sta - - ASSERT(prio == ALLPRIO); - for (wlif = wl->if_list; wlif != NULL; wlif = wlif->next) { -- if (state == ON) -- netif_stop_queue(wlif->dev); -- else -- netif_wake_queue(wlif->dev); -+ if (wlif->dev_registed) { -+ if (state == ON) -+ netif_stop_queue(wlif->dev); -+ else -+ netif_wake_queue(wlif->dev); -+ } - } - } - -@@ -1398,7 +1408,6 @@ wl_alloc_if(wl_info_t *wl, int iftype, u - { - struct net_device *dev; - wl_if_t *wlif; -- wl_if_t *p; - - dev = alloc_etherdev(sizeof(wl_if_t)); - wlif = netdev_priv(dev); -@@ -1411,9 +1420,13 @@ wl_alloc_if(wl_info_t *wl, int iftype, u - wlif->wlcif = wlcif; - wlif->subunit = subunit; - -- /* match current flow control state */ -- if (iftype != WL_IFTYPE_MON && wl->dev && netif_queue_stopped(wl->dev)) -- netif_stop_queue(dev); -+ return wlif; -+} -+ -+static void -+wl_link_if(wl_info_t *wl, wl_if_t *wlif) -+{ -+ wl_if_t *p; - - /* add the interface to the interface linked list */ - if (wl->if_list == NULL) -@@ -1424,7 +1437,6 @@ wl_alloc_if(wl_info_t *wl, int iftype, u - p = p->next; - p->next = wlif; - } -- return wlif; - } - - static void -@@ -1504,6 +1516,9 @@ _wl_add_if(wl_task_t *task) - wl_info_t *wl = wlif->wl; - struct net_device *dev = wlif->dev; - -+ /* add the interface to the interface linked list */ -+ wl_link_if(wl, wlif); -+ - if (wlif->type == WL_IFTYPE_WDS) - dev->netdev_ops = &wl_wds_ops; - -@@ -1516,6 +1531,14 @@ _wl_add_if(wl_task_t *task) - } - wlif->dev_registed = TRUE; - -+ /* match current flow control state */ -+ if (wl->dev) { -+ if (netif_queue_stopped(wl->dev)) -+ netif_stop_queue(dev); -+ else -+ netif_wake_queue(dev); -+ } -+ - done: - MFREE(wl->osh, task, sizeof(wl_task_t)); - atomic_dec(&wl->callbacks); -@@ -1545,6 +1568,8 @@ wl_add_if(wl_info_t *wl, struct wlc_if* - return NULL; - } - -+ wl_if_setup(wlif->dev); -+ - sprintf(wlif->dev->name, "%s%d.%d", devname, wl->pub->unit, wlif->subunit); - if (remote) - bcopy(remote, &wlif->remote, ETHER_ADDR_LEN); -@@ -2778,6 +2803,9 @@ wl_add_monitor(wl_task_t *task) - dev = wlif->dev; - wl->monitor = dev; - -+ /* add the interface to the interface linked list */ -+ wl_link_if(wl, wlif); -+ - /* override some fields */ - sprintf(dev->name, "prism%d", wl->pub->unit); - bcopy(wl->dev->dev_addr, dev->dev_addr, ETHER_ADDR_LEN); diff --git a/package/kernel/broadcom-wl/patches/009-fix_compile_3_2.patch b/package/kernel/broadcom-wl/patches/009-fix_compile_3_2.patch deleted file mode 100644 index cb388a1125..0000000000 --- a/package/kernel/broadcom-wl/patches/009-fix_compile_3_2.patch +++ /dev/null @@ -1,27 +0,0 @@ ---- a/driver/wl_linux.c -+++ b/driver/wl_linux.c -@@ -463,6 +463,16 @@ wl_schedule_fn(wl_info_t *wl, void (*fn) - } - #endif /* DSLCPE_DELAY */ - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0) -+#define WL_DEFAULT_OPS \ -+ .ndo_open = wl_open, \ -+ .ndo_stop = wl_close, \ -+ .ndo_start_xmit = wl_start, \ -+ .ndo_get_stats = wl_get_stats, \ -+ .ndo_set_mac_address = wl_set_mac_address, \ -+ .ndo_set_rx_mode = wl_set_multicast_list, \ -+ .ndo_do_ioctl = wl_ioctl -+#else - #define WL_DEFAULT_OPS \ - .ndo_open = wl_open, \ - .ndo_stop = wl_close, \ -@@ -471,6 +481,7 @@ wl_schedule_fn(wl_info_t *wl, void (*fn) - .ndo_set_mac_address = wl_set_mac_address, \ - .ndo_set_multicast_list = wl_set_multicast_list, \ - .ndo_do_ioctl = wl_ioctl -+#endif - - static const struct net_device_ops wl_ops = { - WL_DEFAULT_OPS, diff --git a/package/kernel/broadcom-wl/patches/010-remove_irqf_samble_random.patch b/package/kernel/broadcom-wl/patches/010-remove_irqf_samble_random.patch deleted file mode 100644 index 7b60873ebb..0000000000 --- a/package/kernel/broadcom-wl/patches/010-remove_irqf_samble_random.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/driver/wl_linux.c -+++ b/driver/wl_linux.c -@@ -695,7 +695,7 @@ wl_attach(uint16 vendor, uint16 device, - if (wl->bustype != JTAG_BUS) - #endif /* BCMJTAG */ - { -- if (request_irq(irq, wl_isr, IRQF_SHARED|IRQF_SAMPLE_RANDOM, dev->name, wl)) { -+ if (request_irq(irq, wl_isr, IRQF_SHARED, dev->name, wl)) { - WL_ERROR(("wl%d: request_irq() failed\n", unit)); - goto fail; - } diff --git a/package/kernel/broadcom-wl/patches/011-fix_compile_3_4.patch b/package/kernel/broadcom-wl/patches/011-fix_compile_3_4.patch deleted file mode 100644 index 585d53c7df..0000000000 --- a/package/kernel/broadcom-wl/patches/011-fix_compile_3_4.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- a/driver/wl_linux.c -+++ b/driver/wl_linux.c -@@ -49,7 +49,9 @@ - #include <linux/ieee80211.h> - #endif - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0) - #include <asm/system.h> -+#endif - #include <asm/io.h> - #include <asm/irq.h> - #include <asm/pgtable.h> diff --git a/package/kernel/broadcom-wl/patches/012-compat-3.10.patch b/package/kernel/broadcom-wl/patches/012-compat-3.10.patch deleted file mode 100644 index e36028a634..0000000000 --- a/package/kernel/broadcom-wl/patches/012-compat-3.10.patch +++ /dev/null @@ -1,47 +0,0 @@ ---- a/driver/wl_linux.c -+++ b/driver/wl_linux.c -@@ -349,7 +349,7 @@ static void wl_mic_error(wl_info_t *wl, - defined(WL_MONITOR) - static int wl_schedule_task(wl_info_t *wl, void (*fn)(struct wl_task *), void *context); - #endif --#if defined(CONFIG_PROC_FS) -+#if defined(CONFIG_PROC_FS) && (LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)) - static int wl_read_proc(char *buffer, char **start, off_t offset, int length, int *eof, void *data); - #endif /* defined(CONFIG_PROC_FS) */ - #ifdef BCMDBG -@@ -517,7 +517,7 @@ wl_attach(uint16 vendor, uint16 device, - struct net_device *dev; - wl_if_t *wlif; - wl_info_t *wl; --#if defined(CONFIG_PROC_FS) -+#if defined(CONFIG_PROC_FS) && (LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)) - char tmp[128]; - #endif - osl_t *osh; -@@ -664,7 +664,7 @@ wl_attach(uint16 vendor, uint16 device, - WL_ERROR(("wl%d: Error setting MPC variable to 0\n", unit)); - } - } --#if defined(CONFIG_PROC_FS) -+#if defined(CONFIG_PROC_FS) && (LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)) - /* create /proc/net/wl<unit> */ - sprintf(tmp, "net/wl%d", wl->pub->unit); - create_proc_read_entry(tmp, 0, 0, wl_read_proc, (void*)wl); -@@ -810,7 +810,7 @@ wl_dbus_disconnect_cb(void *arg) - } - #endif /* BCMDBUS */ - --#if defined(CONFIG_PROC_FS) -+#if defined(CONFIG_PROC_FS) && (LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)) - static int - wl_read_proc(char *buffer, char **start, off_t offset, int length, int *eof, void *data) - { -@@ -1149,7 +1149,7 @@ wl_free(wl_info_t *wl) - - /* free common resources */ - if (wl->wlc) { --#if defined(CONFIG_PROC_FS) -+#if defined(CONFIG_PROC_FS) && (LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)) - char tmp[128]; - /* remove /proc/net/wl<unit> */ - sprintf(tmp, "net/wl%d", wl->pub->unit); diff --git a/package/kernel/broadcom-wl/patches/013-interface-name.patch b/package/kernel/broadcom-wl/patches/013-interface-name.patch deleted file mode 100644 index dbe1bdb89a..0000000000 --- a/package/kernel/broadcom-wl/patches/013-interface-name.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/driver/wl_linux.c -+++ b/driver/wl_linux.c -@@ -1583,7 +1583,7 @@ wl_add_if(wl_info_t *wl, struct wlc_if* - - wl_if_setup(wlif->dev); - -- sprintf(wlif->dev->name, "%s%d.%d", devname, wl->pub->unit, wlif->subunit); -+ sprintf(wlif->dev->name, "%s%d-%d", devname, wl->pub->unit, wlif->subunit); - if (remote) - bcopy(remote, &wlif->remote, ETHER_ADDR_LEN); - diff --git a/package/kernel/broadcom-wl/patches/014-fix-band-reporting.patch b/package/kernel/broadcom-wl/patches/014-fix-band-reporting.patch deleted file mode 100644 index b231fed98d..0000000000 --- a/package/kernel/broadcom-wl/patches/014-fix-band-reporting.patch +++ /dev/null @@ -1,41 +0,0 @@ ---- a/driver/wl_iw.c -+++ b/driver/wl_iw.c -@@ -314,7 +314,7 @@ wl_iw_get_name( - ) - { - int phytype, err; -- uint band[3]; -+ uint i, band[3], bands; - char cap[5]; - - WL_TRACE(("%s: SIOCGIWNAME\n", dev->name)); -@@ -335,16 +335,20 @@ wl_iw_get_name( - break; - case WLC_PHY_TYPE_LP: - case WLC_PHY_TYPE_G: -- if (band[0] >= 2) -- strcpy(cap, "abg"); -- else -- strcpy(cap, "bg"); -- break; - case WLC_PHY_TYPE_N: -- if (band[0] >= 2) -- strcpy(cap, "abgn"); -- else -- strcpy(cap, "bgn"); -+ bands = 0; -+ for (i = 1; i <= band[0]; i++) { -+ bands |= dtoh32(band[i]); -+ } -+ strcpy(cap, ""); -+ if (bands & WLC_BAND_5G) -+ strcat(cap, "a"); -+ if (bands & WLC_BAND_2G) -+ strcat(cap, "bg"); -+ if (phytype == WLC_PHY_TYPE_N) -+ strcat(cap, "n"); -+ break; -+ default: - break; - } - done: diff --git a/package/kernel/broadcom-wl/patches/015-support-probe-of-wds-interfaces.patch b/package/kernel/broadcom-wl/patches/015-support-probe-of-wds-interfaces.patch deleted file mode 100644 index f44921a954..0000000000 --- a/package/kernel/broadcom-wl/patches/015-support-probe-of-wds-interfaces.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/shared/wl.c -+++ b/shared/wl.c -@@ -27,7 +27,7 @@ wl_probe(char *name) - { - int ret, val; - -- if ((name[0] != 'w') || (name[1] != 'l')) -+ if ((name[0] != 'w') || ((name[1] != 'l') && ((name[1] != 'd') || (name[2] != 's')))) - return -1; - - /* Check interface */ diff --git a/package/kernel/broadcom-wl/patches/020-musl-fixes.patch b/package/kernel/broadcom-wl/patches/020-musl-fixes.patch deleted file mode 100644 index a985b9c24a..0000000000 --- a/package/kernel/broadcom-wl/patches/020-musl-fixes.patch +++ /dev/null @@ -1,75 +0,0 @@ ---- a/shared/wl_linux.c -+++ b/shared/wl_linux.c -@@ -13,6 +13,7 @@ - */ - - #include <stdio.h> -+#include <stdint.h> - #include <unistd.h> - #include <string.h> - #include <errno.h> -@@ -20,10 +21,10 @@ - #include <net/if.h> - #include <linux/types.h> - --typedef u_int64_t u64; --typedef u_int32_t u32; --typedef u_int16_t u16; --typedef u_int8_t u8; -+typedef uint64_t u64; -+typedef uint32_t u32; -+typedef uint16_t u16; -+typedef uint8_t u8; - #include <linux/sockios.h> - #include <linux/ethtool.h> - ---- a/shared/linux_timer.c -+++ b/shared/linux_timer.c -@@ -125,7 +125,7 @@ void unblock_timer(); - - static struct event *event_queue = NULL; - static struct event *event_freelist; --static uint g_granularity; -+static unsigned int g_granularity; - static int g_maxevents = 0; - - uclock_t uclock() ---- a/shared/wl.c -+++ b/shared/wl.c -@@ -14,6 +14,7 @@ - #include <typedefs.h> - #include <string.h> - #include <stdio.h> -+#include <stdlib.h> - #include <unistd.h> - #include <errno.h> - #include <sys/ioctl.h> -@@ -263,3 +264,28 @@ wl_printlasterror(char *name) - fprintf(stderr, err_buf); - } - */ -+ -+static int in_assert; /* bss inits to 0. */ -+ -+void __assert(const char *assertion, const char * filename, -+ unsigned int linenumber, register const char * function) -+{ -+ if (!in_assert) { -+ in_assert = 1; -+ -+ fprintf(stderr, -+#ifdef ASSERT_SHOW_PROGNAME -+ "%s: %s: %d: %s: Assertion `%s' failed.\n", __uclibc_progname, -+#else -+ "%s: %d: %s: Assertion `%s' failed.\n", -+#endif -+ filename, -+ linenumber, -+ /* Function name isn't available with some compilers. */ -+ ((function == NULL) ? "?function?" : function), -+ assertion -+ ); -+ } -+ /* shouldn't we? fflush(stderr); */ -+ abort(); -+} diff --git a/package/kernel/broadcom-wl/patches/030-remove_devinit_devexit.patch b/package/kernel/broadcom-wl/patches/030-remove_devinit_devexit.patch deleted file mode 100644 index ead108e5b2..0000000000 --- a/package/kernel/broadcom-wl/patches/030-remove_devinit_devexit.patch +++ /dev/null @@ -1,74 +0,0 @@ ---- a/driver/include/linuxver.h -+++ b/driver/include/linuxver.h -@@ -139,22 +139,6 @@ typedef struct pcmcia_device dev_link_t; - - #endif /* CONFIG_PCMCIA */ - --#ifndef __exit --#define __exit --#endif --#ifndef __devexit --#define __devexit --#endif --#ifndef __devinit --#define __devinit __init --#endif --#ifndef __devinitdata --#define __devinitdata --#endif --#ifndef __devexit_p --#define __devexit_p(x) x --#endif -- - #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0)) - - #define pci_get_drvdata(dev) (dev)->sysdata ---- a/driver/wl_linux.c -+++ b/driver/wl_linux.c -@@ -854,7 +854,7 @@ wl_read_proc(char *buffer, char **start, - */ - #if !defined(BCMJTAG) - #ifdef CONFIG_PCI --static void __devexit wl_remove(struct pci_dev *pdev); -+static void wl_remove(struct pci_dev *pdev); - /** - * determines if a device is a WL device, and if so, attaches it. - * -@@ -862,7 +862,7 @@ static void __devexit wl_remove(struct p - * and if so, performs a wl_attach() on it. - * - */ --int __devinit -+int - wl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) - { - int rc; -@@ -976,7 +976,7 @@ wl_resume(struct pci_dev *pdev) - } - #endif /* LINUXSTA_PS */ - --static void __devexit -+static void - wl_remove(struct pci_dev *pdev) - { - wl_info_t *wl = (wl_info_t *) pci_get_drvdata(pdev); -@@ -1007,7 +1007,7 @@ static struct pci_driver wl_pci_driver = - suspend: wl_suspend, - resume: wl_resume, - #endif /* LINUXSTA_PS */ -- remove: __devexit_p(wl_remove), -+ remove: wl_remove, - id_table: wl_id_table, - }; - #endif /* CONFIG_PCI */ ---- a/driver/wl_linux.h -+++ b/driver/wl_linux.h -@@ -33,7 +33,7 @@ extern irqreturn_t wl_isr(int irq, void - extern irqreturn_t wl_isr(int irq, void *dev_id, struct pt_regs *ptregs); - #endif - --extern int __devinit wl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent); -+extern int wl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent); - extern void wl_free(wl_info_t *wl); - extern int wl_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd); - extern struct net_device * wl_netdev_get(wl_info_t *wl); diff --git a/package/kernel/broadcom-wl/patches/040-remove_last_rx_usage.patch b/package/kernel/broadcom-wl/patches/040-remove_last_rx_usage.patch deleted file mode 100644 index 5c3e72a229..0000000000 --- a/package/kernel/broadcom-wl/patches/040-remove_last_rx_usage.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/driver/wl_linux.c -+++ b/driver/wl_linux.c -@@ -2762,7 +2762,6 @@ wl_monitor(wl_info_t *wl, wl_rxsts_t *rx - bcopy(oskb->data + D11_PHY_HDR_LEN, pdata, oskb->len - D11_PHY_HDR_LEN); - - skb->dev = wl->monitor; -- skb->dev->last_rx = jiffies; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22) - skb_reset_mac_header(skb); - #else diff --git a/package/kernel/broadcom-wl/patches/100-fix_nvram_two_devices.patch b/package/kernel/broadcom-wl/patches/100-fix_nvram_two_devices.patch deleted file mode 100644 index 6cf6faeddd..0000000000 --- a/package/kernel/broadcom-wl/patches/100-fix_nvram_two_devices.patch +++ /dev/null @@ -1,32 +0,0 @@ ---- a/driver/nvram_stub.c -+++ b/driver/nvram_stub.c -@@ -22,6 +22,7 @@ typedef struct _vars { - #define VARS_T_OH sizeof(vars_t) - - static vars_t *vars = NULL; -+static int nvram_init_done = 0; - extern char *nvram_buf[]; - - int -@@ -33,6 +34,10 @@ BCMATTACHFN(nvram_init)(void *si) - uint nvs, bufsz; - vars_t *new; - -+ nvram_init_done++; -+ if (nvram_init_done != 1) -+ return 0; -+ - osh = si_osh(sih); - - nvs = R_REG(osh, &nvh->len) - sizeof(struct nvram_header); -@@ -79,6 +84,10 @@ BCMATTACHFN(nvram_exit)(void *si) - vars_t *this, *next; - si_t *sih; - -+ nvram_init_done--; -+ if (nvram_init_done != 0) -+ return; -+ - sih = (si_t *)si; - this = vars; - while (this) { diff --git a/package/kernel/broadcom-wl/patches/101-wl_id-fix-compilation-warning-if-does-not-guard.patch b/package/kernel/broadcom-wl/patches/101-wl_id-fix-compilation-warning-if-does-not-guard.patch deleted file mode 100644 index e5c17cb9b9..0000000000 --- a/package/kernel/broadcom-wl/patches/101-wl_id-fix-compilation-warning-if-does-not-guard.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- a/driver/wl_iw.c -+++ a/driver/wl_iw.c -@@ -381,9 +381,9 @@ wl_iw_set_freq( - while (fwrq->e++ < 6) - fwrq->m /= 10; - } -- /* handle 4.9GHz frequencies as Japan 4 GHz based channelization */ -- if (fwrq->m > 4000 && fwrq->m < 5000) -- sf = WF_CHAN_FACTOR_4_G; /* start factor for 4 GHz */ -+ /* handle 4.9GHz frequencies as Japan 4 GHz based channelization */ -+ if (fwrq->m > 4000 && fwrq->m < 5000) -+ sf = WF_CHAN_FACTOR_4_G; /* start factor for 4 GHz */ - - chan = wf_mhz2channel(fwrq->m, sf); - } diff --git a/package/kernel/broadcom-wl/patches/110-add_number_to_dev_name.patch b/package/kernel/broadcom-wl/patches/110-add_number_to_dev_name.patch deleted file mode 100644 index 95f0beb73c..0000000000 --- a/package/kernel/broadcom-wl/patches/110-add_number_to_dev_name.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/driver/wl_linux.c -+++ b/driver/wl_linux.c -@@ -1425,7 +1425,7 @@ wl_alloc_if(wl_info_t *wl, int iftype, u - dev = alloc_etherdev(sizeof(wl_if_t)); - wlif = netdev_priv(dev); - bzero(wlif, sizeof(wl_if_t)); -- strncpy(dev->name, name, IFNAMSIZ); -+ snprintf(dev->name, IFNAMSIZ, name, subunit); - - wlif->type = iftype; - wlif->dev = dev; diff --git a/package/kernel/broadcom-wl/patches/120-fixup-mac-addresses.patch b/package/kernel/broadcom-wl/patches/120-fixup-mac-addresses.patch deleted file mode 100644 index 422f7f784f..0000000000 --- a/package/kernel/broadcom-wl/patches/120-fixup-mac-addresses.patch +++ /dev/null @@ -1,93 +0,0 @@ ---- a/driver/nvram_stub.c -+++ b/driver/nvram_stub.c -@@ -5,6 +5,8 @@ - #include <siutils.h> - #include <bcmendian.h> - #include <bcmnvram.h> -+#include <proto/ethernet.h> -+#include <linux/errno.h> - - #ifdef BCMDBG_ERR - #define NVR_MSG(x) printf x -@@ -24,6 +26,7 @@ typedef struct _vars { - static vars_t *vars = NULL; - static int nvram_init_done = 0; - extern char *nvram_buf[]; -+static void fixup_mac_addr(vars_t *new); - - int - BCMATTACHFN(nvram_init)(void *si) -@@ -55,6 +58,7 @@ BCMATTACHFN(nvram_init)(void *si) - vars = new; - - bcopy((char *)(&nvh[1]), new->vars, nvs); -+ fixup_mac_addr(new); - return 0; - } - -@@ -164,3 +168,65 @@ nvram_getall(char *buf, int count) - *buf = '\0'; - return 0; - } -+ -+static bool nvram_is_valid_mac(struct ether_addr *mac) -+{ -+ return mac && !(mac->octet[0] == 0x00 && mac->octet[1] == 0x90 && mac->octet[2] == 0x4c); -+} -+ -+static int nvram_increase_mac_addr(struct ether_addr *mac, u8 num) -+{ -+ u8 *oui = mac->octet + ETHER_ADDR_LEN/2 - 1; -+ u8 *p = mac->octet + ETHER_ADDR_LEN - 1; -+ -+ do { -+ (*p) += num; -+ if (*p > num) -+ break; -+ p--; -+ num = 1; -+ } while (p != oui); -+ -+ if (p == oui) { -+ pr_err("unable to fetch mac address\n"); -+ return -ENOENT; -+ } -+ return 0; -+} -+ -+static void nvram_change_mac_addr(vars_t *new, struct ether_addr *valid, const char *name) -+{ -+ char *macaddr_c; -+ struct ether_addr macaddr; -+ -+ macaddr_c = findvar(new->vars, new->vars + new->size, name); -+ if (!macaddr_c) -+ return; -+ -+ bcm_ether_atoe(macaddr_c, &macaddr); -+ if (nvram_is_valid_mac(&macaddr)) -+ return; -+ nvram_increase_mac_addr(valid, 1); -+ bcm_ether_ntoa(valid, macaddr_c); -+} -+ -+static void fixup_mac_addr(vars_t *new) -+{ -+ char *macaddr_base_c; -+ struct ether_addr macaddr_base; -+ -+ macaddr_base_c = findvar(new->vars, new->vars + new->size, "et0macaddr"); -+ if (!macaddr_base_c) -+ return; -+ -+ bcm_ether_atoe(macaddr_base_c, &macaddr_base); -+ if (!nvram_is_valid_mac(&macaddr_base)) -+ return; -+ -+ /* jump over the first free address so it can be used for wan */ -+ nvram_increase_mac_addr(&macaddr_base, 1); -+ nvram_change_mac_addr(new, &macaddr_base, "sb/1/macaddr"); -+ nvram_change_mac_addr(new, &macaddr_base, "pci/1/1/macaddr"); -+ nvram_change_mac_addr(new, &macaddr_base, "pci/1/2/macaddr"); -+ nvram_change_mac_addr(new, &macaddr_base, "pci/2/1/macaddr"); -+} diff --git a/package/kernel/broadcom-wl/patches/200-add_bcm_a8xx_support.patch b/package/kernel/broadcom-wl/patches/200-add_bcm_a8xx_support.patch deleted file mode 100644 index c1d1344003..0000000000 --- a/package/kernel/broadcom-wl/patches/200-add_bcm_a8xx_support.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- a/driver/wl_linux.c -+++ b/driver/wl_linux.c -@@ -876,7 +876,8 @@ wl_pci_probe(struct pci_dev *pdev, const - - if ((pdev->vendor != PCI_VENDOR_ID_BROADCOM) || - (((pdev->device & 0xff00) != 0x4300) && -- ((pdev->device & 0xff00) != 0x4700))) -+ ((pdev->device & 0xff00) != 0x4700) && -+ ((pdev->device & 0xff00) != 0xa800))) - return (-ENODEV); - - rc = pci_enable_device(pdev); diff --git a/package/kernel/broadcom-wl/patches/910-fallback-sprom.patch b/package/kernel/broadcom-wl/patches/910-fallback-sprom.patch deleted file mode 100644 index a85e40bc14..0000000000 --- a/package/kernel/broadcom-wl/patches/910-fallback-sprom.patch +++ /dev/null @@ -1,78 +0,0 @@ ---- a/driver/bcmsrom.c -+++ b/driver/bcmsrom.c -@@ -39,6 +39,11 @@ - #include <sbsdpcmdev.h> - #endif - -+#if defined(CONFIG_SSB_PCIHOST) && defined(CONFIG_BOARD_BCM963XX) -+#include <linux/ssb/ssb.h> -+extern int bcm63xx_get_fallback_sprom(uint pci_bus, uint pci_slot, struct ssb_sprom *out); -+#endif -+ - #ifdef WLTEST - #include <sbsprom.h> - #endif /* WLTEST */ -@@ -2120,6 +2125,63 @@ BCMATTACHFN(initvars_srom_pci)(si_t *sih - goto varscont; - } - -+#if defined(CONFIG_SSB_PCIHOST) && defined(CONFIG_BOARD_BCM963XX) -+ base = vp = MALLOC(osh, MAXSZ_NVRAM_VARS); -+ -+ if( base != NULL ) -+ { -+ char eabuf[18]; -+ struct ssb_sprom bcm63xx_sprom; -+ uint pci_bus = osl_pci_bus(osh), pci_slot = osl_pci_slot(osh); -+ -+ bcm63xx_get_fallback_sprom(pci_bus, pci_slot, &bcm63xx_sprom); -+ printk("BCM%X(%02x:%02x) using sprom version %i\n", sih->chip, pci_bus, pci_slot, bcm63xx_sprom.revision); -+ -+ varbuf_init(&b, base, MAXSZ_NVRAM_VARS); -+ -+ varbuf_append(&b, vstr_sromrev, bcm63xx_sprom.revision); -+ varbuf_append(&b, vstr_boardrev, bcm63xx_sprom.board_rev); -+ -+ /* ToDo: map bcm63xx_sprom.country_code */ -+ varbuf_append(&b, vstr_noccode); -+ -+ varbuf_append(&b, vstr_aa2g, bcm63xx_sprom.ant_available_bg); -+ -+ varbuf_append(&b, vstr_pa0b[0], bcm63xx_sprom.pa0b0); -+ varbuf_append(&b, vstr_pa1b[0], bcm63xx_sprom.pa1b0); -+ varbuf_append(&b, vstr_pa0b[1], bcm63xx_sprom.pa0b1); -+ varbuf_append(&b, vstr_pa1b[1], bcm63xx_sprom.pa1b1); -+ varbuf_append(&b, vstr_pa0b[2], bcm63xx_sprom.pa0b2); -+ varbuf_append(&b, vstr_pa1b[2], bcm63xx_sprom.pa1b2); -+ -+ varbuf_append(&b, vstr_pa0maxpwr, bcm63xx_sprom.maxpwr_bg); -+ varbuf_append(&b, vstr_pa0itssit, bcm63xx_sprom.itssi_bg); -+ -+ varbuf_append(&b, vstr_boardflags, (bcm63xx_sprom.boardflags_hi << 16) | bcm63xx_sprom.boardflags_lo); -+ varbuf_append(&b, vstr_boardflags2, (bcm63xx_sprom.boardflags2_hi << 16) | bcm63xx_sprom.boardflags2_lo); -+ -+ snprintf(eabuf, sizeof(eabuf), "%02x:%02x:%02x:%02x:%02x:%02x", -+ bcm63xx_sprom.il0mac[0], bcm63xx_sprom.il0mac[1], bcm63xx_sprom.il0mac[2], -+ bcm63xx_sprom.il0mac[3], bcm63xx_sprom.il0mac[4], bcm63xx_sprom.il0mac[5] -+ ); -+ -+ varbuf_append(&b, vstr_macaddr, eabuf); -+ -+ /* final nullbyte terminator */ -+ ASSERT(b.size >= 1); -+ vp = b.buf; -+ *vp++ = '\0'; -+ -+ ASSERT((vp - base) <= MAXSZ_NVRAM_VARS); -+ goto varsdone; -+ } -+ else -+ { -+ err = -2; -+ goto errout; -+ } -+#endif -+ - BS_ERROR(("SROM CRC Error\n")); - - #if defined(WLTEST) diff --git a/package/kernel/broadcom-wl/patches/912-pci-bus-nvram-hack.patch b/package/kernel/broadcom-wl/patches/912-pci-bus-nvram-hack.patch deleted file mode 100644 index 65e8bd3958..0000000000 --- a/package/kernel/broadcom-wl/patches/912-pci-bus-nvram-hack.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/driver/siutils.c -+++ b/driver/siutils.c -@@ -1859,7 +1859,7 @@ BCMINITFN(si_devpath)(si_t *sih, char *p - case PCI_BUS: - ASSERT((SI_INFO(sih))->osh != NULL); - slen = snprintf(path, (size_t)size, "pci/%u/%u/", -- OSL_PCI_BUS((SI_INFO(sih))->osh), -+ OSL_PCI_BUS((SI_INFO(sih))->osh) + 1, - OSL_PCI_SLOT((SI_INFO(sih))->osh)); - break; - case PCMCIA_BUS: diff --git a/package/kernel/broadcom-wl/patches/913-avoid-dbe-on-ifs_ctl-readw-hack.patch b/package/kernel/broadcom-wl/patches/913-avoid-dbe-on-ifs_ctl-readw-hack.patch deleted file mode 100644 index 412bce92c8..0000000000 --- a/package/kernel/broadcom-wl/patches/913-avoid-dbe-on-ifs_ctl-readw-hack.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- a/driver/linux_osl.c -+++ b/driver/linux_osl.c -@@ -723,6 +723,9 @@ osl_readl(volatile uint32 *r) - uint16 - osl_readw(volatile uint16 *r) - { -+ uint32 addr = (uintptr)r & 0xffff3fff; -+ if (addr == 0xa8000688) /* ifs_ctl */ -+ readl(r); - return (readw(r)); - } - diff --git a/package/kernel/broadcom-wl/patches/914-eliminate-date-time-error.patch b/package/kernel/broadcom-wl/patches/914-eliminate-date-time-error.patch deleted file mode 100644 index 394a06d98c..0000000000 --- a/package/kernel/broadcom-wl/patches/914-eliminate-date-time-error.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- a/driver/wl_linux.c -+++ b/driver/wl_linux.c -@@ -762,7 +762,7 @@ wl_attach(uint16 vendor, uint16 device, - dev->name, device); - - #ifdef BCMDBG -- printf(" (Compiled in " SRCBASE " at " __TIME__ " on " __DATE__ ")"); -+ printf(" (Compiled in " SRCBASE ")"); - #endif /* BCMDBG */ - printf("\n"); - -@@ -2298,8 +2298,7 @@ wl_sendup(wl_info_t *wl, wl_if_t *wlif, - void - wl_dump_ver(wl_info_t *wl, struct bcmstrbuf *b) - { -- bcm_bprintf(b, "wl%d: %s %s version %s\n", wl->pub->unit, -- __DATE__, __TIME__, EPI_VERSION_STR); -+ bcm_bprintf(b, "wl%d: version %s\n", wl->pub->unit, EPI_VERSION_STR); - } - - #ifdef BCMDBG diff --git a/package/kernel/broadcom-wl/patches/915-fix-wl_timer-for-4_15.patch b/package/kernel/broadcom-wl/patches/915-fix-wl_timer-for-4_15.patch deleted file mode 100644 index 66eba968cf..0000000000 --- a/package/kernel/broadcom-wl/patches/915-fix-wl_timer-for-4_15.patch +++ /dev/null @@ -1,55 +0,0 @@ ---- a/driver/wl_linux.c -+++ b/driver/wl_linux.c -@@ -235,7 +235,11 @@ struct wl_info { - - }; - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) -+static void wl_timer(struct timer_list *tl); -+#else - static void wl_timer(ulong data); -+#endif - static void _wl_timer(wl_timer_t *t); - - #ifdef WLC_HIGH_ONLY -@@ -2512,6 +2516,18 @@ wl_timer_task(wl_task_t *task) - } - #endif /* WLC_HIGH_ONLY */ - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) -+static void -+wl_timer(struct timer_list *tl) -+{ -+ wl_timer_t *t = from_timer(t, tl, timer); -+#ifndef WLC_HIGH_ONLY -+ _wl_timer(t); -+#else -+ wl_schedule_task(t->wl, wl_timer_task, t); -+#endif /* WLC_HIGH_ONLY */ -+} -+#else - static void - wl_timer(ulong data) - { -@@ -2522,6 +2538,7 @@ wl_timer(ulong data) - wl_schedule_task(t->wl, wl_timer_task, t); - #endif /* WLC_HIGH_ONLY */ - } -+#endif /* linux >= 4.15.0 */ - - static void - _wl_timer(wl_timer_t *t) -@@ -2573,9 +2590,13 @@ wl_init_timer(wl_info_t *wl, void (*fn)( - - bzero(t, sizeof(wl_timer_t)); - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) -+ timer_setup(&t->timer, wl_timer, 0); -+#else - init_timer(&t->timer); - t->timer.data = (ulong) t; - t->timer.function = wl_timer; -+#endif - t->wl = wl; - t->fn = fn; - t->arg = arg; diff --git a/package/kernel/broadcom-wl/patches/916-fix-compilation-for-5_4.patch b/package/kernel/broadcom-wl/patches/916-fix-compilation-for-5_4.patch deleted file mode 100644 index e59c95722c..0000000000 --- a/package/kernel/broadcom-wl/patches/916-fix-compilation-for-5_4.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- a/driver/wl_iw.c -+++ b/driver/wl_iw.c -@@ -112,10 +112,14 @@ dev_wlc_ioctl( - ifr.ifr_data = (caddr_t) &ioc; - - /* Must be up for virtually all useful ioctls */ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0) -+ dev_open(dev, NULL); -+#else - dev_open(dev); -+#endif - - fs = get_fs(); -- set_fs(get_ds()); -+ set_fs(KERNEL_DS); - ret = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, SIOCDEVPRIVATE); - set_fs(fs); - diff --git a/package/kernel/broadcom-wl/patches/917-fix-compilation-for-5_10.patch b/package/kernel/broadcom-wl/patches/917-fix-compilation-for-5_10.patch deleted file mode 100644 index 98c0375be3..0000000000 --- a/package/kernel/broadcom-wl/patches/917-fix-compilation-for-5_10.patch +++ /dev/null @@ -1,42 +0,0 @@ -Index: broadcom-wl-5.10.56.27.3/driver/wl_linux.c -=================================================================== ---- broadcom-wl-5.10.56.27.3.orig/driver/wl_linux.c -+++ broadcom-wl-5.10.56.27.3/driver/wl_linux.c -@@ -74,6 +74,10 @@ - #error "No support for Kernel Rev <= 2.4.5, As the older kernel revs doesn't support Tasklets" - #endif - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) -+#define ioremap_nocache ioremap -+#endif -+ - typedef void wlc_info_t; - typedef void wlc_hw_info_t; - #include <wlc_pub.h> -@@ -1915,7 +1919,11 @@ wl_ioctl(struct net_device *dev, struct - } - - /* optimization for direct ioctl calls from kernel */ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 9, 0) - if (segment_eq(get_fs(), KERNEL_DS)) -+#else -+ if (uaccess_kernel()) -+#endif - buf = ioc.buf; - - else if (ioc.buf) { -Index: broadcom-wl-5.10.56.27.3/driver/linux_osl.c -=================================================================== ---- broadcom-wl-5.10.56.27.3.orig/driver/linux_osl.c -+++ broadcom-wl-5.10.56.27.3/driver/linux_osl.c -@@ -34,6 +34,10 @@ - #define OS_HANDLE_MAGIC 0x1234abcd /* Magic # to recognise osh */ - #define BCM_MEM_FILENAME_LEN 24 /* Mem. filename length */ - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) -+#define ioremap_nocache ioremap -+#endif -+ - typedef struct bcm_mem_link { - struct bcm_mem_link *prev; - struct bcm_mem_link *next; diff --git a/package/kernel/broadcom-wl/patches/918-fix-warning-compilation-for-5_15.patch b/package/kernel/broadcom-wl/patches/918-fix-warning-compilation-for-5_15.patch deleted file mode 100644 index 4ddb643373..0000000000 --- a/package/kernel/broadcom-wl/patches/918-fix-warning-compilation-for-5_15.patch +++ /dev/null @@ -1,27 +0,0 @@ ---- a/driver/wl_iw.c -+++ a/driver/wl_iw.c -@@ -100,7 +100,9 @@ dev_wlc_ioctl( - { - struct ifreq ifr; - wl_ioctl_t ioc; -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 13, 0) - mm_segment_t fs; -+#endif - int ret; - - memset(&ioc, 0, sizeof(ioc)); -@@ -118,10 +120,14 @@ dev_wlc_ioctl( - dev_open(dev); - #endif - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 13, 0) - fs = get_fs(); - set_fs(KERNEL_DS); -+#endif - ret = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, SIOCDEVPRIVATE); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 13, 0) - set_fs(fs); -+#endif - - return ret; - } diff --git a/package/kernel/broadcom-wl/patches/919-fix-compilation-warning-for-stack-limit.patch b/package/kernel/broadcom-wl/patches/919-fix-compilation-warning-for-stack-limit.patch deleted file mode 100644 index 3149ce34b9..0000000000 --- a/package/kernel/broadcom-wl/patches/919-fix-compilation-warning-for-stack-limit.patch +++ /dev/null @@ -1,297 +0,0 @@ ---- a/driver/wl_iw.c -+++ b/driver/wl_iw.c -@@ -495,9 +495,9 @@ wl_iw_get_range( - ) - { - struct iw_range *range = (struct iw_range *) extra; -- int channels[MAXCHANNEL+1]; -- wl_uint32_list_t *list = (wl_uint32_list_t *) channels; -- wl_rateset_t rateset; -+ int *channels; -+ wl_uint32_list_t *list; -+ wl_rateset_t *rateset; - int error, i; - uint sf, ch; - -@@ -506,6 +506,17 @@ wl_iw_get_range( - if (!extra) - return -EINVAL; - -+ channels = kcalloc(MAXCHANNEL+1, sizeof(*channels), GFP_KERNEL); -+ if (!channels) -+ return -ENOMEM; -+ list = (wl_uint32_list_t *) channels; -+ -+ rateset = kzalloc(sizeof(*rateset), GFP_KERNEL); -+ if (!rateset) { -+ error = -ENOMEM; -+ goto free_channels; -+ } -+ - dwrq->length = sizeof(struct iw_range); - memset(range, 0, sizeof(range)); - -@@ -514,8 +525,9 @@ wl_iw_get_range( - - /* Set available channels/frequencies */ - list->count = htod32(MAXCHANNEL); -- if ((error = dev_wlc_ioctl(dev, WLC_GET_VALID_CHANNELS, channels, sizeof(channels)))) -- return error; -+ if ((error = dev_wlc_ioctl(dev, WLC_GET_VALID_CHANNELS, channels, -+ (MAXCHANNEL+1) * sizeof(*channels)))) -+ goto free_rateset; - for (i = 0; i < dtoh32(list->count) && i < IW_MAX_FREQUENCIES; i++) { - range->freq[i].i = dtoh32(list->element[i]); - -@@ -549,19 +561,19 @@ wl_iw_get_range( - #endif /* WIRELESS_EXT > 11 */ - - /* Set available bitrates */ -- if ((error = dev_wlc_ioctl(dev, WLC_GET_CURR_RATESET, &rateset, sizeof(rateset)))) -- return error; -- rateset.count = dtoh32(rateset.count); -- range->num_bitrates = rateset.count; -- for (i = 0; i < rateset.count && i < IW_MAX_BITRATES; i++) -- range->bitrate[i] = (rateset.rates[i] & 0x7f) * 500000; /* convert to bps */ -+ if ((error = dev_wlc_ioctl(dev, WLC_GET_CURR_RATESET, rateset, sizeof(*rateset)))) -+ goto free_rateset; -+ rateset->count = dtoh32(rateset->count); -+ range->num_bitrates = rateset->count; -+ for (i = 0; i < rateset->count && i < IW_MAX_BITRATES; i++) -+ range->bitrate[i] = (rateset->rates[i] & 0x7f) * 500000; /* convert to bps */ - - /* Set an indication of the max TCP throughput - * in bit/s that we can expect using this interface. - * May be use for QoS stuff... Jean II - */ - if ((error = dev_wlc_ioctl(dev, WLC_GET_PHYTYPE, &i, sizeof(i)))) -- return error; -+ goto free_rateset; - i = dtoh32(i); - if (i == WLC_PHY_TYPE_A) - range->throughput = 24000000; /* 24 Mbits/s */ -@@ -624,7 +636,12 @@ wl_iw_get_range( - #endif - #endif /* WIRELESS_EXT > 17 */ - -- return 0; -+free_rateset: -+ kfree(rateset); -+free_channels: -+ kfree(channels); -+ -+ return error; - } - - static int ---- a/driver/bcmsrom.c -+++ b/driver/bcmsrom.c -@@ -437,20 +437,37 @@ srom_write(si_t *sih, uint bustype, void *curmap, osl_t *osh, - uint byteoff, uint nbytes, uint16 *buf) - { - uint i, nw, crc_range; -- uint16 old[SROM_MAXW], new[SROM_MAXW]; -+ uint16 *old, *new; - uint8 crc; - volatile uint32 val32; -+ int rc = 0; - - ASSERT(bustype == BUSTYPE(bustype)); - -+ old = MALLOC(osh, SROM_MAXW); -+ ASSERT(old != NULL); -+ if (!old) -+ return -2; -+ -+ new = MALLOC(osh, SROM_MAXW); -+ ASSERT(new != NULL); -+ if (!new) { -+ rc = -2; -+ goto free_old; -+ } -+ - /* check input - 16-bit access only. use byteoff 0x55aa to indicate - * srclear - */ -- if ((byteoff != 0x55aa) && ((byteoff & 1) || (nbytes & 1))) -- return 1; -+ if ((byteoff != 0x55aa) && ((byteoff & 1) || (nbytes & 1))) { -+ rc = 1; -+ goto free_new; -+ } - -- if ((byteoff != 0x55aa) && ((byteoff + nbytes) > SROM_MAX)) -- return 1; -+ if ((byteoff != 0x55aa) && ((byteoff + nbytes) > SROM_MAX)) { -+ rc = 1; -+ goto free_new; -+ } - - if (BUSTYPE(bustype) == PCMCIA_BUS) { - crc_range = SROM_MAX; -@@ -467,8 +484,10 @@ srom_write(si_t *sih, uint bustype, void *curmap, osl_t *osh, - - nw = crc_range / 2; - /* read first small number words from srom, then adjust the length, read all */ -- if (srom_read(sih, bustype, curmap, osh, 0, crc_range, old, FALSE)) -- return 1; -+ if (srom_read(sih, bustype, curmap, osh, 0, crc_range, old, FALSE)) { -+ rc = 1; -+ goto free_new; -+ } - - BS_ERROR(("%s: old[SROM4_SIGN] 0x%x, old[SROM8_SIGN] 0x%x\n", - __FUNCTION__, old[SROM4_SIGN], old[SROM8_SIGN])); -@@ -481,10 +500,13 @@ srom_write(si_t *sih, uint bustype, void *curmap, osl_t *osh, - __FUNCTION__, buf[SROM4_SIGN], buf[SROM8_SIGN])); - - /* block invalid buffer size */ -- if (nbytes < SROM4_WORDS * 2) -- return BCME_BUFTOOSHORT; -- else if (nbytes > SROM4_WORDS * 2) -- return BCME_BUFTOOLONG; -+ if (nbytes < SROM4_WORDS * 2) { -+ rc = BCME_BUFTOOSHORT; -+ goto free_new; -+ } else if (nbytes > SROM4_WORDS * 2) { -+ rc = BCME_BUFTOOLONG; -+ goto free_new; -+ } - - nw = SROM4_WORDS; - } else if (nbytes == SROM_WORDS * 2){ /* the other possible SROM format */ -@@ -493,17 +515,22 @@ srom_write(si_t *sih, uint bustype, void *curmap, osl_t *osh, - nw = SROM_WORDS; - } else { - BS_ERROR(("%s: Invalid input file signature\n", __FUNCTION__)); -- return BCME_BADARG; -+ rc = BCME_BADARG; -+ goto free_new; - } - crc_range = nw * 2; -- if (srom_read(sih, bustype, curmap, osh, 0, crc_range, old, FALSE)) -- return 1; -+ if (srom_read(sih, bustype, curmap, osh, 0, crc_range, old, FALSE)) { -+ rc = 1; -+ goto free_new; -+ } - } else if ((old[SROM4_SIGN] == SROM4_SIGNATURE) || - (old[SROM8_SIGN] == SROM4_SIGNATURE)) { - nw = SROM4_WORDS; - crc_range = nw * 2; -- if (srom_read(sih, bustype, curmap, osh, 0, crc_range, old, FALSE)) -- return 1; -+ if (srom_read(sih, bustype, curmap, osh, 0, crc_range, old, FALSE)) { -+ rc = 1; -+ goto free_new; -+ } - } else { - /* Assert that we have already read enough for sromrev 2 */ - ASSERT(crc_range >= SROM_WORDS * 2); -@@ -562,8 +589,10 @@ srom_write(si_t *sih, uint bustype, void *curmap, osl_t *osh, - } - } else if (BUSTYPE(bustype) == PCMCIA_BUS) { - /* enable writes to the SPROM */ -- if (sprom_cmd_pcmcia(osh, SROM_WEN)) -- return 1; -+ if (sprom_cmd_pcmcia(osh, SROM_WEN)) { -+ rc = 1; -+ goto free_new; -+ } - bcm_mdelay(WRITE_ENABLE_DELAY); - /* write srom */ - for (i = 0; i < nw; i++) { -@@ -573,14 +602,15 @@ srom_write(si_t *sih, uint bustype, void *curmap, osl_t *osh, - } - } - /* disable writes to the SPROM */ -- if (sprom_cmd_pcmcia(osh, SROM_WDS)) -- return 1; -+ if (sprom_cmd_pcmcia(osh, SROM_WDS)) { -+ rc = 1; -+ goto free_new; -+ } - } else if (BUSTYPE(bustype) == SI_BUS) { - #if defined(BCMUSBDEV) - if (SPROMBUS == PCMCIA_BUS) { - uint origidx; - void *regs; -- int rc; - bool wasup; - - origidx = si_coreidx(sih); -@@ -596,16 +626,24 @@ srom_write(si_t *sih, uint bustype, void *curmap, osl_t *osh, - si_core_disable(sih, 0); - - si_setcoreidx(sih, origidx); -- return rc; -+ goto free_new; - } - #endif -- return 1; -+ rc = 1; -+ goto free_new; - } else { -- return 1; -+ rc = 1; -+ goto free_new; - } - - bcm_mdelay(WRITE_ENABLE_DELAY); -- return 0; -+ rc = 0; -+ -+free_new: -+ MFREE(osh, new, SROM_MAXW); -+free_old: -+ MFREE(osh, old, SROM_MAXW); -+ return rc; - } - - #if defined(BCMUSBDEV) ---- a/driver/linux_osl.c -+++ b/driver/linux_osl.c -@@ -600,20 +600,29 @@ int - osl_printf(const char *format, ...) - { - va_list args; -- char buf[1024]; -+ char *buf; - int len; - -+ buf = kcalloc(1024, sizeof(*buf), GFP_KERNEL); -+ if (!buf) -+ return (-ENOMEM); -+ - /* sprintf into a local buffer because there *is* no "vprintk()".. */ - va_start(args, format); - len = vsnprintf(buf, 1024, format, args); - va_end(args); - -- if (len > sizeof(buf)) { -+ if (len > (sizeof(*buf) * 1024)) { - printk("osl_printf: buffer overrun\n"); -- return (0); -+ goto exit; - } - -- return (printk(buf)); -+ printk(buf); -+ -+exit: -+ kfree(buf); -+ -+ return (0); - } - - int ---- a/driver/bcmutils.c -+++ b/driver/bcmutils.c -@@ -13,6 +13,7 @@ - - #include <typedefs.h> - #include <bcmdefs.h> -+#define __need___va_list - #include <stdarg.h> - #include <bcmutils.h> - #ifdef BCMDRIVER diff --git a/package/kernel/broadcom-wl/patches/920-aiutils-fix-wrong-misleading-if.patch b/package/kernel/broadcom-wl/patches/920-aiutils-fix-wrong-misleading-if.patch deleted file mode 100644 index c43dca9e89..0000000000 --- a/package/kernel/broadcom-wl/patches/920-aiutils-fix-wrong-misleading-if.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- a/driver/aiutils.c -+++ b/driver/aiutils.c -@@ -228,9 +228,10 @@ ai_scan(si_t *sih, void *regs, uint devid) - do { - asd = get_asd(sih, &eromptr, 0, j, AD_ST_SLAVE, &addrl, &addrh, - &sizel, &sizeh); -- if ((asd != 0) && (j == 1) && (sizel == SI_CORE_SIZE)) -+ if ((asd != 0) && (j == 1) && (sizel == SI_CORE_SIZE)) { - sii->coresba2[idx] = addrl; - sii->coresba2_size[idx] = sizel; -+ } - j++; - } while (asd != 0); - diff --git a/package/kernel/broadcom-wl/patches/921-fix-simple-compilation-warning.patch b/package/kernel/broadcom-wl/patches/921-fix-simple-compilation-warning.patch deleted file mode 100644 index 2158dc67b8..0000000000 --- a/package/kernel/broadcom-wl/patches/921-fix-simple-compilation-warning.patch +++ /dev/null @@ -1,63 +0,0 @@ ---- a/driver/hnddma.c -+++ b/driver/hnddma.c -@@ -1896,7 +1896,8 @@ dma64_txfast(dma_info_t *di, void *p0, bool commit) - if (!(flags & D64_CTRL1_EOF)) { - #if defined(linux) && defined(__mips__) - if (CHIPID(di->sih->chip) == BCM5356_CHIP_ID && di->sih->chiprev == 0) { -- uint32 ctrl1, ctrl2, addrlow, addrhigh; -+ uint32 ctrl2, addrlow, addrhigh; -+ // uint32 ctrl1; - - addrlow = R_SM((volatile uint32 *)&di->txd64[PREVTXD(txout)].addrlow); - addrhigh = R_SM((volatile uint32 *)&di->txd64[PREVTXD(txout)].addrhigh); - ---- a/driver/include/linux_osl.h -+++ b/driver/include/linux_osl.h -@@ -580,9 +580,9 @@ extern void osl_writew(uint16 v, volatile uint16 *r); - extern void osl_writel(uint32 v, volatile uint32 *r); - - /* uncached/cached virtual address */ --#define OSL_UNCACHED(va) osl_uncached((va)) -+#define OSL_UNCACHED(va) osl_uncached((void *)(va)) - extern void *osl_uncached(void *va); --#define OSL_CACHED(va) osl_cached((va)) -+#define OSL_CACHED(va) osl_cached((void *)(va)) - extern void *osl_cached(void *va); - - /* get processor cycle count */ ---- a/driver/siutils.c -+++ b/driver/siutils.c -@@ -495,11 +495,13 @@ BCMATTACHFN(si_doattach)(si_info_t *sii, uint devid, osl_t *osh, void *regs, - } - - sih->bustype = bustype; -+#ifdef BCMBUSTYPE - if (bustype != BUSTYPE(bustype)) { - SI_ERROR(("si_doattach: bus type %d does not match configured bus type %d\n", - bustype, BUSTYPE(bustype))); - return NULL; - } -+#endif - - /* bus/core/clk setup for register access */ - if (!si_buscore_prep(sii, bustype, devid, sdh)) { -@@ -1716,6 +1718,9 @@ si_clkctl_xtal(si_t *sih, uint what, bool on) - outen); - } - -+ return (0); -+ -+ - default: - return (-1); - } ---- a/driver/bcmsrom.c -+++ b/driver/bcmsrom.c -@@ -1005,6 +1043,7 @@ BCMNMIATTACHFN(srom_parsecis)(osl_t *osh, uint8 *pcis[], uint ciscnt, char **var - break; - } - -+ fallthrough; - case CISTPL_MANFID: FROMHOST(); - varbuf_append(&b, vstr_manfid, (cis[i + 1] << 8) + cis[i]); - varbuf_append(&b, vstr_prodid, (cis[i + 3] << 8) + cis[i + 2]); diff --git a/package/kernel/broadcom-wl/patches/930-wl_linux-set-module-license-Proprietary.patch b/package/kernel/broadcom-wl/patches/930-wl_linux-set-module-license-Proprietary.patch deleted file mode 100644 index 6d0571711c..0000000000 --- a/package/kernel/broadcom-wl/patches/930-wl_linux-set-module-license-Proprietary.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/driver/wl_linux.c -+++ b/driver/wl_linux.c -@@ -1109,6 +1109,7 @@ wl_module_exit(void) - - module_init(wl_module_init); - module_exit(wl_module_exit); -+MODULE_LICENSE("Proprietary"); - - /** - * This function frees the WL per-device resources. diff --git a/package/kernel/broadcom-wl/src/glue/Makefile b/package/kernel/broadcom-wl/src/glue/Makefile deleted file mode 100644 index f434d2430e..0000000000 --- a/package/kernel/broadcom-wl/src/glue/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -# -# Makefile for wl_glue driver -# -# Copyright (C) 2011 Jo-Philipp Wich <jo@mein.io> -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version -# 2 of the License, or (at your option) any later version. -# - -obj-m := wl_glue.o - -ifeq ($(MAKING_MODULES),1) --include $(TOPDIR)/Rules.make -endif - diff --git a/package/kernel/broadcom-wl/src/glue/wl_glue.c b/package/kernel/broadcom-wl/src/glue/wl_glue.c deleted file mode 100644 index 7851f414db..0000000000 --- a/package/kernel/broadcom-wl/src/glue/wl_glue.c +++ /dev/null @@ -1,315 +0,0 @@ -/* - * wl_glue.c: Broadcom WL support module providing a unified SSB/BCMA handling. - * Copyright (C) 2011 Jo-Philipp Wich <jo@mein.io> - */ - -#include "wl_glue.h" - -#include <linux/kernel.h> -#include <linux/module.h> -#include <linux/init.h> - -#ifdef CONFIG_BCM47XX -#include <bcm47xx.h> -#endif - -#ifdef CONFIG_SSB -#include <linux/ssb/ssb.h> -#endif - -#ifdef CONFIG_BCMA -#include <linux/bcma/bcma.h> -#endif - -MODULE_AUTHOR("Jo-Philipp Wich (jo@mein.io)"); -MODULE_DESCRIPTION("Broadcom WL SSB/BCMA compatibility layer"); -MODULE_LICENSE("GPL"); - -static wl_glue_attach_cb_t attach_cb = NULL; -static wl_glue_remove_cb_t remove_cb = NULL; -static enum wl_glue_bus_type active_bus_type = WL_GLUE_BUS_TYPE_UNSPEC; -static int wl_glue_attached = 0; - - -#ifdef CONFIG_SSB -static int wl_glue_ssb_probe(struct ssb_device *dev, const struct ssb_device_id *id) -{ - void *mmio; - void *wldev; - - if (!attach_cb) - { - pr_err("No attach callback registered\n"); - return -ENOSYS; - } - - if (dev->bus->bustype != SSB_BUSTYPE_SSB) - { - pr_err("Attaching to SSB behind PCI is not supported. Please remove the b43 ssb bridge\n"); - return -EINVAL; - } - - mmio = (void *) 0x18000000 + dev->core_index * 0x1000; - wldev = attach_cb(id->vendor, id->coreid, (ulong)mmio, dev, dev->irq); - - if (!wldev) - { - pr_err("The attach callback failed, SSB probe aborted\n"); - return -ENODEV; - } - - ssb_set_drvdata(dev, wldev); - return 0; -} - -static void wl_glue_ssb_remove(struct ssb_device *dev) -{ - void *wldev = ssb_get_drvdata(dev); - - if (remove_cb) - remove_cb(wldev); - - ssb_set_drvdata(dev, NULL); -} - -static const struct ssb_device_id wl_glue_ssb_tbl[] = { - SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, SSB_ANY_REV), - {}, -}; - -static struct ssb_driver wl_glue_ssb_driver = { - .name = KBUILD_MODNAME, - .id_table = wl_glue_ssb_tbl, - .probe = wl_glue_ssb_probe, - .remove = wl_glue_ssb_remove, -}; -#endif /* CONFIG_SSB */ - -#ifdef CONFIG_BCMA -static int wl_glue_bcma_probe(struct bcma_device *dev) -{ - void *wldev; - - if (!attach_cb) - { - pr_err("No attach callback registered\n"); - return -ENOSYS; - } - - if (dev->bus->hosttype != BCMA_HOSTTYPE_SOC) - { - pr_err("Unsupported BCMA bus type %d\n", dev->bus->hosttype); - return -EINVAL; - } - - /* - * NB: - * 0x18000000 = BCMA_ADDR_BASE - * 0x1000 = BCMA_CORE_SIZE - */ - - wldev = attach_cb(dev->id.manuf, dev->id.id, (ulong)dev->addr, dev, dev->irq); - - if (!wldev) - { - pr_err("The attach callback failed, BCMA probe aborted\n"); - return -ENODEV; - } - - bcma_set_drvdata(dev, wldev); - return 0; -} - -static void wl_glue_bcma_remove(struct bcma_device *dev) -{ - void *wldev = bcma_get_drvdata(dev); - - if (remove_cb) - remove_cb(wldev); - - bcma_set_drvdata(dev, NULL); -} - -static const struct bcma_device_id wl_glue_bcma_tbl[] = { - BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, BCMA_ANY_REV, BCMA_ANY_CLASS), - {}, -}; - -static struct bcma_driver wl_glue_bcma_driver = { - .name = KBUILD_MODNAME, - .id_table = wl_glue_bcma_tbl, - .probe = wl_glue_bcma_probe, - .remove = wl_glue_bcma_remove, -}; -#endif /* CONFIG_BCMA */ - - -void wl_glue_set_attach_callback(wl_glue_attach_cb_t cb) -{ - attach_cb = cb; -} -EXPORT_SYMBOL(wl_glue_set_attach_callback); - -void wl_glue_set_remove_callback(wl_glue_remove_cb_t cb) -{ - remove_cb = cb; -} -EXPORT_SYMBOL(wl_glue_set_remove_callback); - -int wl_glue_register(void) -{ - int err; - - switch(active_bus_type) - { -#ifdef CONFIG_SSB - case WL_GLUE_BUS_TYPE_SSB: - err = ssb_driver_register(&wl_glue_ssb_driver); - break; -#endif /* CONFIG_SSB */ - -#ifdef CONFIG_BCMA - case WL_GLUE_BUS_TYPE_BCMA: - err = bcma_driver_register(&wl_glue_bcma_driver); - break; -#endif /* CONFIG_BCMA */ - - default: - pr_err("Not attaching through glue driver due to unsupported bus\n"); - err = -ENOSYS; - break; - } - - if (!err) - { - pr_info("SSB/BCMA glue driver successfully attached\n"); - wl_glue_attached = 1; - } - - return err; -} -EXPORT_SYMBOL(wl_glue_register); - -int wl_glue_unregister(void) -{ - int err; - - if (!wl_glue_attached) - return -ENOSYS; - - switch (active_bus_type) - { -#ifdef CONFIG_SSB - case WL_GLUE_BUS_TYPE_SSB: - ssb_driver_unregister(&wl_glue_ssb_driver); - err = 0; - break; -#endif /* CONFIG_SSB */ - -#ifdef CONFIG_BCMA - case WL_GLUE_BUS_TYPE_BCMA: - bcma_driver_unregister(&wl_glue_bcma_driver); - err = 0; - break; -#endif /* CONFIG_BCMA */ - - default: - pr_err("Not removing glue driver due to unsupported bus\n"); - err = -ENOSYS; - break; - } - - if (!err) - { - pr_info("SSB/BCMA glue driver successfully detached\n"); - wl_glue_attached = 0; - } - - return err; -} -EXPORT_SYMBOL(wl_glue_unregister); - -struct device * wl_glue_get_dmadev(void *dev) -{ - struct device *dma_dev; - - switch (active_bus_type) - { -#ifdef CONFIG_SSB - case WL_GLUE_BUS_TYPE_SSB: - dma_dev = ((struct ssb_device *)dev)->dma_dev; - break; -#endif /* CONFIG_SSB */ - -#ifdef CONFIG_BCMA - case WL_GLUE_BUS_TYPE_BCMA: - dma_dev = ((struct bcma_device *)dev)->dma_dev; - break; -#endif /* CONFIG_BCMA */ - - default: - BUG(); - dma_dev = NULL; - break; - } - - return dma_dev; -} -EXPORT_SYMBOL(wl_glue_get_dmadev); - - -static int __init wl_glue_init(void) -{ -#ifdef CONFIG_BCM47XX - /* - * BCM47xx currently supports either SSB or BCMA bus, - * determine the used one from the info set by the - * platform setup code. - */ - switch (bcm47xx_bus_type) - { -#ifdef CONFIG_BCM47XX_SSB - case BCM47XX_BUS_TYPE_SSB: - active_bus_type = WL_GLUE_BUS_TYPE_SSB; - break; -#endif /* CONFIG_BCM47XX_SSB */ - -#ifdef CONFIG_BCM47XX_BCMA - case BCM47XX_BUS_TYPE_BCMA: - active_bus_type = WL_GLUE_BUS_TYPE_BCMA; - break; -#endif /* CONFIG_BCM47XX_BCMA */ - } -#endif /* CONFIG_BCM47XX */ - -#ifdef CONFIG_BCM63XX -#ifdef CONFIG_SSB - /* - * BCM63xx currently only uses SSB, so assume that. - */ - active_bus_type = WL_GLUE_BUS_TYPE_SSB; -#endif /* CONFIG_SSB */ -#endif /* CONFIG_BCM63XX */ - - /* do not fail here, let wl_glue_register() return -ENOSYS later */ - if (active_bus_type == WL_GLUE_BUS_TYPE_UNSPEC) - pr_err("Unable to determine used system bus type\n"); - - return 0; -} - -static void __exit wl_glue_exit(void) -{ - if (wl_glue_attached) - { - if (wl_glue_unregister()) - pr_err("Failed to unregister glue driver\n"); - - wl_glue_attached = 0; - } - - return; -} - -module_init(wl_glue_init); -module_exit(wl_glue_exit); diff --git a/package/kernel/broadcom-wl/src/glue/wl_glue.h b/package/kernel/broadcom-wl/src/glue/wl_glue.h deleted file mode 100644 index 49610ab909..0000000000 --- a/package/kernel/broadcom-wl/src/glue/wl_glue.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * wl_glue.h: Broadcom WL support module providing a unified SSB/BCMA handling. - * Copyright (C) 2011 Jo-Philipp Wich <jo@mein.io> - */ - -#include <linux/types.h> - -typedef void * (*wl_glue_attach_cb_t)(u16, u16, ulong, void *, u32); -typedef void (*wl_glue_remove_cb_t)(void *); - -enum wl_glue_bus_type { - WL_GLUE_BUS_TYPE_UNSPEC, - WL_GLUE_BUS_TYPE_SSB, - WL_GLUE_BUS_TYPE_BCMA -}; - -extern void wl_glue_set_attach_callback(wl_glue_attach_cb_t cb); -extern void wl_glue_set_remove_callback(wl_glue_remove_cb_t cb); -extern int wl_glue_register(void); -extern int wl_glue_unregister(void); -extern struct device * wl_glue_get_dmadev(void *); - diff --git a/package/kernel/broadcom-wl/src/wlc.c b/package/kernel/broadcom-wl/src/wlc.c deleted file mode 100644 index 46ccf94bff..0000000000 --- a/package/kernel/broadcom-wl/src/wlc.c +++ /dev/null @@ -1,1181 +0,0 @@ -/* - * wlc - Broadcom Wireless Driver Control Utility - * - * Copyright (C) 2006 Felix Fietkau <nbd@nbd.name> - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#include <sys/types.h> -#include <sys/stat.h> -#include <unistd.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <fcntl.h> -#include <glob.h> -#include <ctype.h> - -#include <typedefs.h> -#include <wlutils.h> -#include <proto/802.11.h> - -#define VERSION "0.1" -#define BUFSIZE 8192 -#define PTABLE_MAGIC 0xbadc0ded -#define PTABLE_SLT1 1 -#define PTABLE_SLT2 2 -#define PTABLE_ACKW 3 -#define PTABLE_ADHM 4 -#define PTABLE_END 0xffffffff - -/* - * Copy each token in wordlist delimited by space into word - * Taken from Broadcom shutils.h - */ -#define foreach(word, wordlist, next) \ - for (next = &wordlist[strspn(wordlist, " ")], \ - strncpy(word, next, sizeof(word)), \ - word[strcspn(word, " ")] = '\0', \ - word[sizeof(word) - 1] = '\0', \ - next = strchr(next, ' '); \ - strlen(word); \ - next = next ? &next[strspn(next, " ")] : "", \ - strncpy(word, next, sizeof(word)), \ - word[strcspn(word, " ")] = '\0', \ - word[sizeof(word) - 1] = '\0', \ - next = strchr(next, ' ')) - -static char wlbuf[8192]; -static char interface[16] = "wl0"; -static unsigned long kmem_offset = 0; -static int vif = 0, debug = 1, fromstdin = 0; - -typedef enum { - NONE = 0x00, - - /* types */ - PARAM_TYPE = 0x00f, - INT = 0x001, - STRING = 0x002, - MAC = 0x003, - - /* options */ - PARAM_OPTIONS = 0x0f0, - NOARG = 0x010, - - /* modes */ - PARAM_MODE = 0xf00, - GET = 0x100, - SET = 0x200, -} wlc_param; - -struct wlc_call { - const char *name; - wlc_param param; - int (*handler)(wlc_param param, void *data, void *value); - union { - int num; - char *str; - void *ptr; - } data; - const char *desc; -}; - -/* can't use the system include because of the stupid broadcom header files */ -extern struct ether_addr *ether_aton(const char *asc); -static inline int my_ether_ntoa(unsigned char *ea, char *buf) -{ - return sprintf(buf, "%02x:%02x:%02x:%02x:%02x:%02x", - ea[0], ea[1], ea[2], ea[3], ea[4], ea[5]); -} - -static int wlc_ioctl(wlc_param param, void *data, void *value) -{ - unsigned int *var = ((unsigned int *) data); - unsigned int ioc = *var; - - if (param & NOARG) { - return wl_ioctl(interface, ioc, NULL, 0); - } - switch(param & PARAM_TYPE) { - case MAC: - return wl_ioctl(interface, ((param & SET) ? (ioc) : (ioc >> 16)) & 0xffff, value, 6); - case INT: - return wl_ioctl(interface, ((param & SET) ? (ioc) : (ioc >> 16)) & 0xffff, value, sizeof(int)); - case STRING: - return wl_ioctl(interface, ((param & SET) ? (ioc) : (ioc >> 16)) & 0xffff, value, BUFSIZE); - } - return 0; -} - -static int wlc_iovar(wlc_param param, void *data, void *value) -{ - int *val = (int *) value; - char *iov = *((char **) data); - int ret = 0; - - if (param & SET) { - switch(param & PARAM_TYPE) { - case INT: - ret = wl_iovar_setint(interface, iov, *val); - break; - case MAC: - ret = wl_iovar_set(interface, iov, value, 6); - break; - } - } - if (param & GET) { - switch(param & PARAM_TYPE) { - case INT: - ret = wl_iovar_get(interface, iov, val, sizeof(int)); - break; - case MAC: - ret = wl_iovar_get(interface, iov, value, 6); - break; - } - } - - return ret; -} - -static int wlc_bssiovar(wlc_param param, void *data, void *value) -{ - int *val = (int *) value; - char *iov = *((char **) data); - int ret = 0; - - if (param & SET) { - switch(param & PARAM_TYPE) { - case INT: - ret = wl_bssiovar_setint(interface, iov, vif, *val); - } - } - if (param & GET) { - switch(param & PARAM_TYPE) { - case INT: - ret = wl_bssiovar_get(interface, iov, vif, val, sizeof(int)); - } - } - - return ret; -} - -static int wlc_vif_enabled(wlc_param param, void *data, void *value) -{ - int *val = (int *) value; - int buf[3]; - int ret = 0; - - sprintf((char *) buf, "bss"); - buf[1] = vif; - if (param & SET) { - buf[2] = (*val ? 1 : 0); - ret = wl_ioctl(interface, WLC_SET_VAR, buf, sizeof(buf)); - } else if (param & GET) { - ret = wl_ioctl(interface, WLC_GET_VAR, buf, sizeof(buf)); - *val = buf[0]; - } - - return ret; -} - -static int wlc_ssid(wlc_param param, void *data, void *value) -{ - int ret = -1, ret2 = -1; - char *dest = (char *) value; - wlc_ssid_t ssid; - - if ((param & PARAM_MODE) == GET) { - ret = wl_bssiovar_get(interface, "ssid", vif, &ssid, sizeof(ssid)); - - if (ret) - /* if we can't get the ssid through the bssiovar, try WLC_GET_SSID */ - ret = wl_ioctl(interface, WLC_GET_SSID, &ssid, sizeof(ssid)); - - if (!ret) { - memcpy(dest, ssid.SSID, ssid.SSID_len); - dest[ssid.SSID_len] = 0; - } - } else if ((param & PARAM_MODE) == SET) { - strncpy(ssid.SSID, value, 32); - ssid.SSID_len = strlen(value); - - if (ssid.SSID_len > 32) - ssid.SSID_len = 32; - - if (vif == 0) { - /* for the main interface, also try the WLC_SET_SSID call */ - ret2 = wl_ioctl(interface, WLC_SET_SSID, &ssid, sizeof(ssid)); - } - - ret = wl_bssiovar_set(interface, "ssid", vif, &ssid, sizeof(ssid)); - ret = (!ret2 ? 0 : ret); - } - - return ret; -} - -static int wlc_int(wlc_param param, void *data, void *value) -{ - int *var = *((int **) data); - int *val = (int *) value; - - if ((param & PARAM_MODE) == SET) { - *var = *val; - } else if ((param & PARAM_MODE) == GET) { - *val = *var; - } - - return 0; -} - -static int wlc_flag(wlc_param param, void *data, void *value) -{ - int *var = *((int **) data); - - *var = 1; - - return 0; -} - -static int wlc_string(wlc_param param, void *data, void *value) -{ - char *var = *((char **) data); - - if ((param & PARAM_MODE) == GET) { - strcpy(value, var); - } - - return 0; -} - -static int wlc_afterburner(wlc_param param, void *data, void *value) -{ - int *val = (int *) value; - int ret = 0; - - if ((param & PARAM_MODE) == GET) { - ret = wl_iovar_get(interface, "afterburner", val, sizeof(int)); - } else { - wl_iovar_setint(interface, "wlfeatureflag", (*val ? 3 : 0)); - ret = wl_iovar_setint(interface, "afterburner", (*val ? 1 : 0)); - wl_iovar_setint(interface, "afterburner_override", *val); - } - - return ret; -} - -static int wlc_maclist(wlc_param param, void *data, void *value) -{ - unsigned int *var = ((unsigned int *) data); - unsigned int ioc = *var; - int limit = (sizeof(wlbuf) - 4) / sizeof(struct ether_addr); - struct maclist *list = (struct maclist *) wlbuf; - char *str = (char *) value; - char astr[30], *p; - struct ether_addr *addr; - int isset = 0; - int ret; - - if ((param & PARAM_MODE) == GET) { - list->count = limit; - ret = wl_ioctl(interface, (ioc >> 16) & 0xffff, wlbuf, sizeof(wlbuf)); - - if (!ret) - while (list->count) { - str += sprintf(str, "%s", ((((char *) value) == str) ? "" : " ")); - str += my_ether_ntoa((unsigned char *) &list->ea[list->count-- - 1], str); - } - - return ret; - } else { - while (*str && isspace(*str)) - *str++; - - if (*str == '+') { - str++; - - list->count = limit; - if (wl_ioctl(interface, (ioc >> 16) & 0xffff, wlbuf, sizeof(wlbuf)) == 0) - isset = 1; - - while (*str && isspace(*str)) - str++; - } - - if (!isset) - memset(wlbuf, 0, sizeof(wlbuf)); - - foreach(astr, str, p) { - if (list->count >= limit) - break; - - if ((addr = ether_aton(astr)) != NULL) - memcpy(&list->ea[list->count++], addr, sizeof(struct ether_addr)); - } - - return wl_ioctl(interface, ioc & 0xffff, wlbuf, sizeof(wlbuf)); - } -} - -static int wlc_radio(wlc_param param, void *data, void *value) -{ - int *val = (int *) value; - int ret; - - if ((param & PARAM_MODE) == GET) { - ret = wl_ioctl(interface, WLC_GET_RADIO, val, sizeof(int)); - *val = ((*val & 1) ? 0 : 1); - } else { - *val = (1 << 16) | (*val ? 0 : 1); - ret = wl_ioctl(interface, WLC_SET_RADIO, val, sizeof(int)); - } - - return ret; -} - -static int wlc_wsec_key(wlc_param param, void *null, void *value) -{ - wl_wsec_key_t wsec_key; - unsigned char *index = value; - unsigned char *key; - unsigned char *data; - unsigned char hex[3]; - - if ((param & PARAM_MODE) != SET) - return 0; - - memset(&wsec_key, 0, sizeof(wsec_key)); - if (index[0] == '=') { - wsec_key.flags = WL_PRIMARY_KEY; - index++; - } - - if ((index[0] < '1') || (index[0] > '4') || (index[1] != ',')) - return -1; - - key = index + 2; - if (strncmp(key, "d:", 2) == 0) { /* delete key */ - } else if (strncmp(key, "s:", 2) == 0) { /* ascii key */ - key += 2; - wsec_key.len = strlen(key); - - if ((wsec_key.len != 5) && (wsec_key.len != 13)) - return -1; - - strcpy(wsec_key.data, key); - } else { /* hex key */ - wsec_key.len = strlen(key); - if ((wsec_key.len != 10) && (wsec_key.len != 26)) - return -1; - - wsec_key.len /= 2; - data = wsec_key.data; - hex[2] = 0; - do { - hex[0] = *(key++); - hex[1] = *(key++); - *(data++) = (unsigned char) strtoul(hex, NULL, 16); - } while (*key != 0); - } - - return wl_bssiovar_set(interface, "wsec_key", vif, &wsec_key, sizeof(wsec_key)); -} - -static int wlc_cap(wlc_param param, void *data, void *value) -{ - char *iov = *((char **) data); - - if (param & GET) - return wl_iovar_get(interface, iov, value, BUFSIZE); - - return -1; -} - -static int wlc_bssmax(wlc_param param, void *data, void *value) -{ - int *val = (int *) value; - char *iov = *((char **) data); - int ret = -1; - - if (param & GET) { - ret = wl_iovar_get(interface, iov, wlbuf, BUFSIZE); - if (!ret) { - if (strstr(wlbuf, "mbss4")) - *val = 4; - else if (strstr(wlbuf, "mbss16")) - *val = 16; - else - *val = 1; - } - } - - return ret; -} - -static inline int cw2ecw(int cw) -{ - int i; - for (cw++, i = 0; cw; i++) cw >>=1; - return i - 1; -} - -static int wlc_wme_ac(wlc_param param, void *data, void *value) -{ - char *type = *((char **) data); - char *settings = (char *) value; - char cmd[100], *p, *val; - edcf_acparam_t params[AC_COUNT]; - int ret; - int intval; - int cur = -1; - char *buf = wlbuf; - - if ((param & PARAM_MODE) != SET) - return -1; - - memset(params, 0, sizeof(params)); - ret = wl_iovar_get(interface, type, params, sizeof(params)); - memset(buf, 0, BUFSIZE); - strcpy(buf, type); - buf += strlen(buf) + 1; - - foreach(cmd, settings, p) { - val = strchr(cmd, '='); - if (val == NULL) { - if (strcmp(cmd, "be") == 0) - cur = AC_BE; - else if (strcmp(cmd, "bk") == 0) - cur = AC_BK; - else if (strcmp(cmd, "vi") == 0) - cur = AC_VI; - else if (strcmp(cmd, "vo") == 0) - cur = AC_VO; - else - return -1; - - /* just in case */ - params[cur].ACI = (params[cur].ACI & (0x3 << 5)) | (cur << 5); - } else { - *(val++) = 0; - - intval = strtoul(val, NULL, 10); - if (strcmp(cmd, "cwmin") == 0) - params[cur].ECW = (params[cur].ECW & ~(0xf)) | cw2ecw(intval); - else if (strcmp(cmd, "ecwmin") == 0) - params[cur].ECW = (params[cur].ECW & ~(0xf)) | (intval & 0xf); - else if (strcmp(cmd, "cwmax") == 0) - params[cur].ECW = (params[cur].ECW & ~(0xf << 4)) | (cw2ecw(intval) << 4); - else if (strcmp(cmd, "ecwmax") == 0) - params[cur].ECW = (params[cur].ECW & ~(0xf << 4)) | ((intval & 0xf) << 4); - else if (strcmp(cmd, "aifsn") == 0) - params[cur].ACI = (params[cur].ACI & ~(0xf)) | (intval & 0xf); - else if (strcmp(cmd, "txop") == 0) - params[cur].TXOP = intval >> 5; - else if (strcmp(cmd, "force") == 0) - params[cur].ACI = (params[cur].ACI & ~(1 << 4)) | ((intval) ? (1 << 4) : 0); - else return -1; - - memcpy(buf, ¶ms[cur], sizeof(edcf_acparam_t)); - wl_ioctl(interface, WLC_SET_VAR, wlbuf, BUFSIZE); - } - } - return ret; -} - -static int wlc_ifname(wlc_param param, void *data, void *value) -{ - char *val = (char *) value; - int ret = 0; - - if (param & SET) { - if (strlen(val) < 16) - strcpy(interface, val); - else ret = -1; - } - if (param & GET) { - strcpy(val, interface); - } - - return ret; -} - -static int wlc_wdsmac(wlc_param param, void *data, void *value) -{ - unsigned char mac[6]; - int ret = 0; - - ret = wl_ioctl(interface, WLC_WDS_GET_REMOTE_HWADDR, &mac, 6); - if (ret == 0) - my_ether_ntoa(mac, value); - - return ret; -} - -static int wlc_pmk(wlc_param param, void *data, void *value) -{ - int ret = -1; - char *str = (char *) value; - wsec_pmk_t pmk; - - /* driver doesn't support GET */ - - if ((param & PARAM_MODE) == SET) { - strncpy(pmk.key, str, WSEC_MAX_PSK_LEN); - pmk.key_len = strlen(str); - - if (pmk.key_len > WSEC_MAX_PSK_LEN) - pmk.key_len = WSEC_MAX_PSK_LEN; - - pmk.flags = WSEC_PASSPHRASE; - - ret = wl_ioctl(interface, WLC_SET_WSEC_PMK, &pmk, sizeof(pmk)); - } - - return ret; -} - -static const struct wlc_call wlc_calls[] = { - { - .name = "version", - .param = STRING|NOARG, - .handler = wlc_string, - .data.str = VERSION, - .desc = "Version of this program" - }, - { - .name = "debug", - .param = INT, - .handler = wlc_int, - .data.ptr = &debug, - .desc = "wlc debug level" - }, - { - .name = "stdin", - .param = NOARG, - .handler = wlc_flag, - .data.ptr = &fromstdin, - .desc = "Accept input from stdin" - }, - { - .name = "ifname", - .param = STRING, - .handler = wlc_ifname, - .desc = "interface to send commands to" - }, - { - .name = "up", - .param = NOARG, - .handler = wlc_ioctl, - .data.num = WLC_UP, - .desc = "Bring the interface up" - }, - { - .name = "down", - .param = NOARG, - .handler = wlc_ioctl, - .data.num = WLC_DOWN, - .desc = "Bring the interface down" - }, - { - .name = "radio", - .param = INT, - .handler = wlc_radio, - .desc = "Radio enabled flag" - }, - { - .name = "ap", - .param = INT, - .handler = wlc_ioctl, - .data.num = ((WLC_GET_AP << 16) | WLC_SET_AP), - .desc = "Access Point mode" - }, - { - .name = "mssid", - .param = INT, - .handler = wlc_iovar, - .data.str = "mbss", - .desc = "Multi-ssid mode" - }, - { - .name = "apsta", - .param = INT, - .handler = wlc_iovar, - .data.str = "apsta", - .desc = "AP+STA mode" - }, - { - .name = "infra", - .param = INT, - .handler = wlc_ioctl, - .data.num = ((WLC_GET_INFRA << 16) | WLC_SET_INFRA), - .desc = "Infrastructure mode" - }, - { - .name = "wet", - .param = INT, - .handler = wlc_ioctl, - .data.num = ((WLC_GET_WET << 16) | WLC_SET_WET), - .desc = "Wireless repeater mode", - }, - { - .name = "statimeout", - .param = INT, - .handler = wlc_iovar, - .data.str = "sta_retry_time", - .desc = "STA connection timeout" - }, - { - .name = "country", - .param = STRING, - .handler = wlc_ioctl, - .data.num = ((WLC_GET_COUNTRY << 16) | WLC_SET_COUNTRY), - .desc = "Country code" - }, - { - .name = "channel", - .param = INT, - .handler = wlc_ioctl, - .data.num = ((WLC_GET_CHANNEL << 16) | WLC_SET_CHANNEL), - .desc = "Channel", - }, - { - .name = "vlan_mode", - .param = INT, - .handler = wlc_bssiovar, - .data.str = "vlan_mode", - .desc = "Parse 802.1Q tags", - }, - { - .name = "vif", - .param = INT, - .handler = wlc_int, - .data.ptr = &vif, - .desc = "Current vif index" - }, - { - .name = "enabled", - .param = INT, - .handler = wlc_vif_enabled, - .desc = "vif enabled flag" - }, - { - .name = "ssid", - .param = STRING, - .handler = wlc_ssid, - .desc = "Interface ESSID" - }, - { - .name = "closed", - .param = INT, - .handler = wlc_bssiovar, - .data.str = "closednet", - .desc = "Hidden ESSID flag" - }, - { - .name = "wsec", - .param = INT, - .handler = wlc_bssiovar, - .data.str = "wsec", - .desc = "Security mode flags" - }, - { - .name = "wepkey", - .param = STRING, - .handler = wlc_wsec_key, - .desc = "Set/Remove WEP keys" - }, - { - .name = "wepauth", - .param = INT, - .handler = wlc_ioctl, - .data.num = ((WLC_GET_AUTH << 16) | WLC_SET_AUTH), - .desc = "WEP authentication type. 0 = OpenSystem, 1 = SharedKey" - }, - { - .name = "wsec_restrict", - .param = INT, - .handler = wlc_bssiovar, - .data.str = "wsec_restrict", - .desc = "Drop unencrypted traffic" - }, - { - .name = "eap_restrict", - .param = INT, - .handler = wlc_bssiovar, - .data.str = "eap_restrict", - .desc = "Only allow 802.1X traffic until 802.1X authorized" - }, - { - .name = "wpa_auth", - .param = INT, - .handler = wlc_bssiovar, - .data.str = "wpa_auth", - .desc = "WPA authentication modes" - }, - { - .name = "ap_isolate", - .param = INT, - .handler = wlc_bssiovar, - .data.str = "ap_isolate", - .desc = "Isolate connected clients" - }, - { - .name = "supplicant", - .param = INT, - .handler = wlc_iovar, - .data.str = "sup_wpa", - .desc = "Built-in WPA supplicant" - }, - { - .name = "passphrase", - .param = STRING, - .handler = wlc_pmk, - .desc = "Passphrase for built-in WPA supplicant", - }, - { - .name = "maxassoc", - .param = INT, - .handler = wlc_iovar, - .data.str = "maxassoc", - .desc = "Max. number of associated clients", - }, - { - .name = "wme", - .param = INT, - .handler = wlc_iovar, - .data.str = "wme", - .desc = "WME enabled" - }, - { - .name = "wme_ac_ap", - .param = STRING, - .handler = wlc_wme_ac, - .data.str = "wme_ac_ap", - .desc = "Set WME AC options for AP mode", - }, - { - .name = "wme_ac_sta", - .param = STRING, - .handler = wlc_wme_ac, - .data.str = "wme_ac_sta", - .desc = "Set WME AC options for STA mode", - }, - { - .name = "wme_noack", - .param = INT, - .handler = wlc_iovar, - .data.str = "wme_noack", - .desc = "WME ACK disable request", - }, - { - .name = "802.11d", - .param = INT, - .handler = wlc_ioctl, - .data.num = ((WLC_GET_REGULATORY << 16) | WLC_SET_REGULATORY), - .desc = "Enable/disable 802.11d regulatory management", - }, - { - .name = "802.11h", - .param = INT, - .handler = wlc_ioctl, - .data.num = ((WLC_GET_SPECT_MANAGMENT << 16) | WLC_SET_SPECT_MANAGMENT), - .desc = "Enable/disable 802.11h spectrum management", - }, - { - .name = "fragthresh", - .param = INT, - .handler = wlc_iovar, - .data.str = "fragthresh", - .desc = "Fragmentation threshold", - }, - { - .name = "rtsthresh", - .param = INT, - .handler = wlc_iovar, - .data.str = "rtsthresh", - .desc = "RTS threshold" - }, - { - .name = "slottime", - .param = INT, - .handler = wlc_iovar, - .data.str = "acktiming", - .desc = "Slot time" - }, - { - .name = "rxant", - .param = INT, - .handler = wlc_ioctl, - .data.num = ((WLC_GET_ANTDIV << 16) | WLC_SET_ANTDIV), - .desc = "Rx antenna selection" - }, - { - .name = "txant", - .param = INT, - .handler = wlc_ioctl, - .data.num = ((WLC_GET_TXANT << 16) | WLC_SET_TXANT), - .desc = "Tx antenna selection" - }, - { - .name = "dtim", - .param = INT, - .handler = wlc_ioctl, - .data.num = ((WLC_GET_DTIMPRD << 16) | WLC_SET_DTIMPRD), - .desc = "DTIM period", - }, - { - .name = "bcn", - .param = INT, - .handler = wlc_ioctl, - .data.num = ((WLC_GET_BCNPRD << 16) | WLC_SET_BCNPRD), - .desc = "Beacon interval" - }, - { - .name = "frameburst", - .param = INT, - .handler = wlc_ioctl, - .data.num = ((WLC_GET_FAKEFRAG << 16) | WLC_SET_FAKEFRAG), - .desc = "Framebursting" - }, - { - .name = "monitor", - .param = INT, - .handler = wlc_ioctl, - .data.num = ((WLC_GET_MONITOR << 16) | WLC_SET_MONITOR), - .desc = "Monitor mode" - }, - { - .name = "passive_scan", - .param = INT, - .handler = wlc_ioctl, - .data.num = ((WLC_GET_PASSIVE_SCAN << 16) | WLC_SET_PASSIVE_SCAN), - .desc = "Passive scan mode" - }, - { - .name = "macfilter", - .param = INT, - .handler = wlc_ioctl, - .data.num = ((WLC_GET_MACMODE << 16) | WLC_SET_MACMODE), - .desc = "MAC filter mode (0:disabled, 1:deny, 2:allow)" - }, - { - .name = "maclist", - .param = STRING, - .data.num = ((WLC_GET_MACLIST << 16) | WLC_SET_MACLIST), - .handler = wlc_maclist, - .desc = "MAC filter list" - }, - { - .name = "autowds", - .param = INT, - .handler = wlc_ioctl, - .data.num = ((WLC_GET_LAZYWDS << 16) | WLC_SET_LAZYWDS), - .desc = "Automatic WDS" - }, - { - .name = "wds", - .param = STRING, - .data.num = ((WLC_GET_WDSLIST << 16) | WLC_SET_WDSLIST), - .handler = wlc_maclist, - .desc = "WDS connection list" - }, - { - .name = "wdstimeout", - .param = INT, - .handler = wlc_iovar, - .data.str = "wdstimeout", - .desc = "WDS link detection timeout" - }, - { - .name = "wdsmac", - .param = STRING|NOARG, - .handler = wlc_wdsmac, - .desc = "MAC of the remote WDS endpoint (only with wds0.* interfaces)" - }, - { - .name = "afterburner", - .param = INT, - .handler = wlc_afterburner, - .desc = "Broadcom Afterburner" - }, - { - .name = "ibss_merge", - .param = INT, - .handler = wlc_iovar, - .data.str = "ibss_coalesce_allowed", - .desc = "Allow IBSS merges" - }, - { - .name = "bssid", - .param = MAC, - .handler = wlc_ioctl, - .data.num = ((WLC_GET_BSSID << 16) | WLC_SET_BSSID), - .desc = "BSSID" - }, - { - .name = "cur_etheraddr", - .param = MAC, - .handler = wlc_iovar, - .data.str = "cur_etheraddr", - .desc = "Current MAC Address" - }, - { - .name = "default_bssid", - .param = MAC, - .handler = wlc_iovar, - .data.str = "perm_etheraddr", - .desc = "Default BSSID (read-only)" - }, - { - .name = "assoclist", - .param = STRING, - .data.num = (WLC_GET_ASSOCLIST << 16), - .handler = wlc_maclist, - .desc = "MACs of associated stations" - }, - { - .name = "gmode", - .param = INT, - .data.num = ((WLC_GET_GMODE << 16) | WLC_SET_GMODE), - .handler = wlc_ioctl, - .desc = "G Mode" - }, - { - .name = "phytype", - .param = INT, - .data.num = (WLC_GET_PHYTYPE << 16), - .handler = wlc_ioctl, - .desc = "PHY Type (read-only)" - }, - { - .name = "nmode", - .param = INT, - .handler = wlc_iovar, - .data.str = "nmode", - .desc = "N Mode" - }, - { - .name = "nreqd", - .param = INT, - .handler = wlc_iovar, - .data.str = "nreqd", - .desc = "N Mode required" - }, - { - .name = "chanspec", - .param = INT, - .handler = wlc_iovar, - .data.str = "chanspec", - .desc = "Channel Spec (See bcmwifi.h)" - }, - { - .name = "band", - .param = INT, - .data.num = ((WLC_GET_BAND << 16) | WLC_SET_BAND), - .handler = wlc_ioctl, - .desc = "Band (0=auto, 1=5Ghz, 2=2.4GHz)" - }, - { - .name = "cap", - .param = STRING|NOARG, - .handler = wlc_cap, - .data.str = "cap", - .desc = "Capabilities" - }, - { - .name = "bssmax", - .param = INT|NOARG, - .handler = wlc_bssmax, - .data.str = "cap", - .desc = "Number of VIF's supported" - }, - { - .name = "leddc", - .param = INT, - .handler = wlc_iovar, - .data.str = "leddc", - .desc = "LED Duty Cycle" - }, - -}; -#define wlc_calls_size (sizeof(wlc_calls) / sizeof(struct wlc_call)) - -static void usage(char *cmd) -{ - int i; - fprintf(stderr, "Usage: %s <command> [<argument> ...]\n" - "\n" - "Available commands:\n", cmd); - for (i = 0; i < wlc_calls_size; i++) { - fprintf(stderr, "\t%-16s\t%s\n", wlc_calls[i].name ?: "", wlc_calls[i].desc ?: ""); - } - fprintf(stderr, "\n"); - exit(1); -} - -static int do_command(const struct wlc_call *cmd, char *arg) -{ - static char buf[BUFSIZE]; - int set; - int ret = 0; - char *format, *end; - int intval; - void *ptr = (void *) buf; - - if (debug >= 10) { - fprintf(stderr, "do_command %-16s\t'%s'\n", cmd->name, arg); - } - - if ((arg == NULL) && ((cmd->param & PARAM_TYPE) != NONE)) { - set = 0; - ret = cmd->handler(cmd->param | GET, (void *) &cmd->data, (void *) buf); - if (ret == 0) { - switch(cmd->param & PARAM_TYPE) { - case INT: - intval = *((int *) buf); - - if (intval > 65535) - format = "0x%08x\n"; - else if (intval > 255) - format = "0x%04x\n"; - else - format = "%d\n"; - - fprintf(stdout, format, intval); - break; - case STRING: - fprintf(stdout, "%s\n", buf); - break; - case MAC: - my_ether_ntoa(buf, buf + 6); - fprintf(stdout, "%s\n", buf + 6); - break; - } - } - } else { /* SET */ - set = 1; - switch(cmd->param & PARAM_TYPE) { - case INT: - intval = strtoul(arg, &end, 0); - if (end && !(*end)) { - memcpy(buf, &intval, sizeof(intval)); - } else { - fprintf(stderr, "%s: Invalid argument\n", cmd->name); - return -1; - } - break; - case STRING: - strncpy(buf, arg, BUFSIZE); - buf[BUFSIZE - 1] = 0; - break; - case MAC: - ptr = ether_aton(arg); - if (!ptr) { - fprintf(stderr, "%s: Invalid mac address '%s'\n", cmd->name, arg); - return -1; - } - break; - } - - ret = cmd->handler(cmd->param | SET, (void *) &cmd->data, ptr); - } - - if ((debug > 0) && (ret != 0)) - fprintf(stderr, "Command '%s %s' failed: %d\n", (set == 1 ? "set" : "get"), cmd->name, ret); - - return ret; -} - -static struct wlc_call *find_cmd(char *name) -{ - int found = 0, i = 0; - - while (!found && (i < wlc_calls_size)) { - if (strcmp(name, wlc_calls[i].name) == 0) - found = 1; - else - i++; - } - - return (struct wlc_call *) (found ? &wlc_calls[i] : NULL); -} - -int main(int argc, char **argv) -{ - static char buf[BUFSIZE]; - char *s, *s2; - char *cmd = argv[0]; - struct wlc_call *call; - int ret = 0; - - if (argc < 2) - usage(argv[0]); - - for(interface[2] = '0'; (interface[2] < '3') && (wl_probe(interface) != 0); interface[2]++); - if (interface[2] == '3') { - fprintf(stderr, "No Broadcom wl interface found!\n"); - return -1; - } - - argv++; - argc--; - while ((argc > 0) && (argv[0] != NULL)) { - if ((call = find_cmd(argv[0])) == NULL) { - fprintf(stderr, "Invalid command: %s\n\n", argv[0]); - usage(cmd); - } - if ((argc > 1) && (!(call->param & NOARG))) { - ret = do_command(call, argv[1]); - argv += 2; - argc -= 2; - } else { - ret = do_command(call, NULL); - argv++; - argc--; - } - } - - while (fromstdin && !feof(stdin)) { - *buf = 0; - fgets(buf, BUFSIZE - 1, stdin); - - if (*buf == 0) - continue; - - if ((s = strchr(buf, '\r')) != NULL) - *s = 0; - if ((s = strchr(buf, '\n')) != NULL) - *s = 0; - - s = buf; - while (isspace(*s)) - s++; - - if (!*s) - continue; - - if ((s2 = strchr(s, ' ')) != NULL) - *(s2++) = 0; - - while (s2 && isspace(*s2)) - s2++; - - if ((call = find_cmd(s)) == NULL) { - fprintf(stderr, "Invalid command: %s\n", s); - ret = -1; - } else - ret = do_command(call, ((call->param & NOARG) ? NULL : s2)); - } - - return ret; -} diff --git a/target/linux/generic/hack-5.15/251-kconfig.patch b/target/linux/generic/hack-5.15/251-kconfig.patch index 9350e366d8..00c23db955 100644 --- a/target/linux/generic/hack-5.15/251-kconfig.patch +++ b/target/linux/generic/hack-5.15/251-kconfig.patch @@ -124,59 +124,6 @@ Signed-off-by: John Crispin <john@phrozen.org> config NETFILTER_FAMILY_BRIDGE bool ---- a/net/wireless/Kconfig -+++ b/net/wireless/Kconfig -@@ -1,6 +1,6 @@ - # SPDX-License-Identifier: GPL-2.0-only - config WIRELESS_EXT -- bool -+ bool "Wireless extensions" - - config WEXT_CORE - def_bool y -@@ -12,10 +12,10 @@ config WEXT_PROC - depends on WEXT_CORE - - config WEXT_SPY -- bool -+ bool "WEXT_SPY" - - config WEXT_PRIV -- bool -+ bool "WEXT_PRIV" - - config CFG80211 - tristate "cfg80211 - wireless configuration API" -@@ -204,7 +204,7 @@ config CFG80211_WEXT_EXPORT - endif # CFG80211 - - config LIB80211 -- tristate -+ tristate "LIB80211" - default n - help - This options enables a library of common routines used -@@ -213,17 +213,17 @@ config LIB80211 - Drivers should select this themselves if needed. - - config LIB80211_CRYPT_WEP -- tristate -+ tristate "LIB80211_CRYPT_WEP" - select CRYPTO_LIB_ARC4 - - config LIB80211_CRYPT_CCMP -- tristate -+ tristate "LIB80211_CRYPT_CCMP" - select CRYPTO - select CRYPTO_AES - select CRYPTO_CCM - - config LIB80211_CRYPT_TKIP -- tristate -+ tristate "LIB80211_CRYPT_TKIP" - select CRYPTO_LIB_ARC4 - - config LIB80211_DEBUG --- a/sound/core/Kconfig +++ b/sound/core/Kconfig @@ -17,7 +17,7 @@ config SND_DMAENGINE_PCM diff --git a/target/linux/generic/hack-6.1/251-kconfig.patch b/target/linux/generic/hack-6.1/251-kconfig.patch index e1ecbca6fe..fcf4eaf6e8 100644 --- a/target/linux/generic/hack-6.1/251-kconfig.patch +++ b/target/linux/generic/hack-6.1/251-kconfig.patch @@ -124,59 +124,6 @@ Signed-off-by: John Crispin <john@phrozen.org> config NETFILTER_FAMILY_BRIDGE bool ---- a/net/wireless/Kconfig -+++ b/net/wireless/Kconfig -@@ -1,6 +1,6 @@ - # SPDX-License-Identifier: GPL-2.0-only - config WIRELESS_EXT -- bool -+ bool "Wireless extensions" - - config WEXT_CORE - def_bool y -@@ -12,10 +12,10 @@ config WEXT_PROC - depends on WEXT_CORE - - config WEXT_SPY -- bool -+ bool "WEXT_SPY" - - config WEXT_PRIV -- bool -+ bool "WEXT_PRIV" - - config CFG80211 - tristate "cfg80211 - wireless configuration API" -@@ -208,7 +208,7 @@ config CFG80211_WEXT_EXPORT - endif # CFG80211 - - config LIB80211 -- tristate -+ tristate "LIB80211" - default n - help - This options enables a library of common routines used -@@ -217,17 +217,17 @@ config LIB80211 - Drivers should select this themselves if needed. - - config LIB80211_CRYPT_WEP -- tristate -+ tristate "LIB80211_CRYPT_WEP" - select CRYPTO_LIB_ARC4 - - config LIB80211_CRYPT_CCMP -- tristate -+ tristate "LIB80211_CRYPT_CCMP" - select CRYPTO - select CRYPTO_AES - select CRYPTO_CCM - - config LIB80211_CRYPT_TKIP -- tristate -+ tristate "LIB80211_CRYPT_TKIP" - select CRYPTO_LIB_ARC4 - - config LIB80211_DEBUG --- a/sound/core/Kconfig +++ b/sound/core/Kconfig @@ -17,7 +17,7 @@ config SND_DMAENGINE_PCM |