aboutsummaryrefslogtreecommitdiffstats
path: root/package/mac80211/files
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2013-04-28 12:37:09 +0000
committerFelix Fietkau <nbd@openwrt.org>2013-04-28 12:37:09 +0000
commitd520c048d8eda9083b3fffb4e4e0a82a8a8b0c6b (patch)
tree55111555c00d21d4857262bd9ca3ee0bc2bcf222 /package/mac80211/files
parentacd03cf8d8c3a047108b7983944b0c8d0228f812 (diff)
downloadupstream-d520c048d8eda9083b3fffb4e4e0a82a8a8b0c6b.tar.gz
upstream-d520c048d8eda9083b3fffb4e4e0a82a8a8b0c6b.tar.bz2
upstream-d520c048d8eda9083b3fffb4e4e0a82a8a8b0c6b.zip
mac80211: update to 2013-02-22 from trunk + backports
Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/branches/attitude_adjustment@36470 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/mac80211/files')
-rw-r--r--package/mac80211/files/b43-fwcutter-fw-dirname.patch16
-rwxr-xr-xpackage/mac80211/files/host_bin/b43-fwsquash.py122
-rw-r--r--package/mac80211/files/lib/wifi/mac80211.sh71
3 files changed, 38 insertions, 171 deletions
diff --git a/package/mac80211/files/b43-fwcutter-fw-dirname.patch b/package/mac80211/files/b43-fwcutter-fw-dirname.patch
deleted file mode 100644
index c2f49ab781..0000000000
--- a/package/mac80211/files/b43-fwcutter-fw-dirname.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- a/fwcutter.c
-+++ b/fwcutter.c
-@@ -48,13 +48,8 @@
- #include "fwcutter.h"
- #include "fwcutter_list.h"
-
--#if defined(__DragonFly__) || defined(__FreeBSD__)
--#define V3_FW_DIRNAME "v3"
--#define V4_FW_DIRNAME "v4"
--#else
- #define V3_FW_DIRNAME "b43legacy"
- #define V4_FW_DIRNAME "b43"
--#endif
-
- static struct cmdline_args cmdargs;
-
diff --git a/package/mac80211/files/host_bin/b43-fwsquash.py b/package/mac80211/files/host_bin/b43-fwsquash.py
deleted file mode 100755
index cd8818167e..0000000000
--- a/package/mac80211/files/host_bin/b43-fwsquash.py
+++ /dev/null
@@ -1,122 +0,0 @@
-#!/usr/bin/env python
-#
-# b43 firmware file squasher
-# Removes unnecessary firmware files
-#
-# Copyright (c) 2009 Michael Buesch <mb@bu3sch.de>
-#
-# Licensed under the GNU/GPL version 2 or (at your option) any later version.
-#
-
-import sys
-import os
-
-def usage():
- print("Usage: %s PHYTYPES COREREVS /path/to/extracted/firmware" % sys.argv[0])
- print("")
- print("PHYTYPES is a comma separated list of:")
- print("A => A-PHY")
- print("AG => Dual A-PHY G-PHY")
- print("G => G-PHY")
- print("LP => LP-PHY")
- print("N => N-PHY")
- print("HT => HT-PHY")
- print("LCN => LCN-PHY")
- print("")
- print("COREREVS is a comma separated list of core revision numbers.")
-
-if len(sys.argv) != 4:
- usage()
- sys.exit(1)
-
-phytypes = sys.argv[1]
-corerevs = sys.argv[2]
-fwpath = sys.argv[3]
-
-phytypes = phytypes.split(',')
-try:
- corerevs = map(lambda r: int(r), corerevs.split(','))
-except ValueError:
- print("ERROR: \"%s\" is not a valid COREREVS string\n" % corerevs)
- usage()
- sys.exit(1)
-
-
-fwfiles = os.listdir(fwpath)
-fwfiles = filter(lambda str: str.endswith(".fw"), fwfiles)
-if not fwfiles:
- print("ERROR: No firmware files found in %s" % fwpath)
- sys.exit(1)
-
-required_fwfiles = []
-
-def revs_match(revs_a, revs_b):
- for rev in revs_a:
- if rev in revs_b:
- return True
- return False
-
-def phytypes_match(types_a, types_b):
- for type in types_a:
- type = type.strip().upper()
- if type in types_b:
- return True
- return False
-
-revmapping = {
- "ucode2.fw" : (2,3,),
- "ucode4.fw" : (4,),
- "ucode5.fw" : (5,6,7,8,9,10,),
- "ucode11.fw" : (11,12,),
- "ucode13.fw" : (13,),
- "ucode14.fw" : (14,),
- "ucode15.fw" : (15,),
- "ucode16_mimo.fw" : (16,),
- "ucode24_mimo.fw" : (24,),
- "ucode29_mimo.fw" : (29,),
- "pcm4.fw" : (1,2,3,4,),
- "pcm5.fw" : (5,6,7,8,9,10,),
-}
-
-initvalmapping = {
- "a0g1initvals5.fw" : ( (5,6,7,8,9,10,), ("AG",), ),
- "a0g0initvals5.fw" : ( (5,6,7,8,9,10,), ("A", "AG",), ),
- "b0g0initvals2.fw" : ( (2,4,), ("G",), ),
- "b0g0initvals5.fw" : ( (5,6,7,8,9,10,), ("G",), ),
- "b0g0initvals13.fw" : ( (13,), ("G",), ),
- "n0initvals11.fw" : ( (11,12,), ("N",), ),
- "n0initvals16.fw" : ( (16,), ("N",), ),
- "lp0initvals13.fw" : ( (13,), ("LP",), ),
- "lp0initvals14.fw" : ( (14,), ("LP",), ),
- "lp0initvals15.fw" : ( (15,), ("LP",), ),
- "lcn0initvals24.fw" : ( (24,), ("LCN",), ),
- "ht0initvals29.fw" : ( (29,), ("HT",), ),
- "a0g1bsinitvals5.fw" : ( (5,6,7,8,9,10,), ("AG",), ),
- "a0g0bsinitvals5.fw" : ( (5,6,7,8,9,10,), ("A", "AG"), ),
- "b0g0bsinitvals5.fw" : ( (5,6,7,8,9,10,), ("G",), ),
- "n0bsinitvals11.fw" : ( (11,12,), ("N",), ),
- "n0bsinitvals16.fw" : ( (16,), ("N",), ),
- "lp0bsinitvals13.fw" : ( (13,), ("LP",), ),
- "lp0bsinitvals14.fw" : ( (14,), ("LP",), ),
- "lp0bsinitvals15.fw" : ( (15,), ("LP",), ),
- "lcn0bsinitvals24.fw" : ( (24,), ("LCN",), ),
- "ht0bsinitvals29.fw" : ( (29,), ("HT",), ),
-}
-
-for f in fwfiles:
- if f in revmapping:
- if revs_match(corerevs, revmapping[f]):
- required_fwfiles += [f]
- continue
- if f in initvalmapping:
- if revs_match(corerevs, initvalmapping[f][0]) and\
- phytypes_match(phytypes, initvalmapping[f][1]):
- required_fwfiles += [f]
- continue
- print("WARNING: Firmware file %s not found in the mapping lists" % f)
-
-for f in fwfiles:
- if f not in required_fwfiles:
- print("Deleting %s" % f)
- os.unlink(fwpath + '/' + f)
-
diff --git a/package/mac80211/files/lib/wifi/mac80211.sh b/package/mac80211/files/lib/wifi/mac80211.sh
index c3fbc5017e..081dc4d886 100644
--- a/package/mac80211/files/lib/wifi/mac80211.sh
+++ b/package/mac80211/files/lib/wifi/mac80211.sh
@@ -6,8 +6,6 @@ mac80211_hostapd_setup_base() {
local ifname="$2"
cfgfile="/var/run/hostapd-$phy.conf"
- macfile="/var/run/hostapd-$phy.maclist"
- [ -e "$macfile" ] && rm -f "$macfile"
config_get device "$vif" device
config_get country "$device" country
@@ -16,7 +14,6 @@ mac80211_hostapd_setup_base() {
config_get beacon_int "$device" beacon_int
config_get basic_rate_list "$device" basic_rate
config_get_bool noscan "$device" noscan
- config_get_bool short_preamble "$device" short_preamble "0"
hostapd_set_log_options base_cfg "$device"
@@ -51,24 +48,6 @@ mac80211_hostapd_setup_base() {
config_get_bool country_ie "$device" country_ie "$country_ie"
[ "$country_ie" -gt 0 ] && append base_cfg "ieee80211d=1" "$N"
- config_get macfilter "$vif" macfilter
- case "$macfilter" in
- allow)
- append base_cfg "macaddr_acl=1" "$N"
- append base_cfg "accept_mac_file=$macfile" "$N"
- ;;
- deny)
- append base_cfg "macaddr_acl=0" "$N"
- append base_cfg "deny_mac_file=$macfile" "$N"
- ;;
- esac
- config_get maclist "$vif" maclist
- [ -n "$maclist" ] && {
- for mac in $maclist; do
- echo "$mac" >> $macfile
- done
- }
-
local br brval brstr
[ -n "$basic_rate_list" ] && {
for br in $basic_rate_list; do
@@ -78,8 +57,6 @@ mac80211_hostapd_setup_base() {
done
}
- append base_cfg "preamble=$short_preamble" "$N"
-
cat >> "$cfgfile" <<EOF
ctrl_interface=/var/run/hostapd-$phy
driver=nl80211
@@ -184,26 +161,46 @@ mac80211_start_vif() {
set_wifi_up "$vif" "$ifname"
}
-find_mac80211_phy() {
- local device="$1"
+lookup_phy() {
+ [ -n "$phy" ] && {
+ [ -d /sys/class/ieee80211/$phy ] && return
+ }
+
+ local devpath
+ config_get devpath "$device" path
+ [ -n "$devpath" -a -d "/sys/devices/$devpath/ieee80211" ] && {
+ phy="$(ls /sys/devices/$devpath/ieee80211 | grep -m 1 phy)"
+ [ -n "$phy" ] && return
+ }
local macaddr="$(config_get "$device" macaddr | tr 'A-Z' 'a-z')"
- config_get phy "$device" phy
- [ -z "$phy" -a -n "$macaddr" ] && {
- for phy in $(ls /sys/class/ieee80211 2>/dev/null); do
- [ "$macaddr" = "$(cat /sys/class/ieee80211/${phy}/macaddress)" ] || continue
- config_set "$device" phy "$phy"
- break
+ [ -n "$macaddr" ] && {
+ for _phy in $(ls /sys/class/ieee80211 2>/dev/null); do
+ [ "$macaddr" = "$(cat /sys/class/ieee80211/${_phy}/macaddress)" ] || continue
+ phy="$_phy"
+ return
done
- config_get phy "$device" phy
}
+ phy=
+ return
+}
+
+find_mac80211_phy() {
+ local device="$1"
+
+ config_get phy "$device" phy
+ lookup_phy
[ -n "$phy" -a -d "/sys/class/ieee80211/$phy" ] || {
echo "PHY for wifi device $1 not found"
return 1
}
+ config_set "$device" phy "$phy"
+
+ config_get macaddr "$device" macaddr
[ -z "$macaddr" ] && {
config_set "$device" macaddr "$(cat /sys/class/ieee80211/${phy}/macaddress)"
}
+
return 0
}
@@ -593,12 +590,20 @@ detect_mac80211() {
}
iw phy "$dev" info | grep -q '2412 MHz' || { mode_band="a"; channel="36"; }
+ if [ -x /usr/bin/readlink ]; then
+ path="$(readlink -f /sys/class/ieee80211/${dev}/device)"
+ path="${path##/sys/devices/}"
+ dev_id=" option path '$path'"
+ else
+ dev_id=" option macaddr $(cat /sys/class/ieee80211/${dev}/macaddress)"
+ fi
+
cat <<EOF
config wifi-device radio$devidx
option type mac80211
option channel ${channel}
- option macaddr $(cat /sys/class/ieee80211/${dev}/macaddress)
option hwmode 11${mode_11n}${mode_band}
+$dev_id
$ht_capab
# REMOVE THIS LINE TO ENABLE WIFI:
option disabled 1