From 5c105d9f3fd086aff195d3849dcf847d6b0bd927 Mon Sep 17 00:00:00 2001 From: blogic Date: Fri, 5 Oct 2012 10:12:53 +0000 Subject: branch Attitude Adjustment git-svn-id: svn://svn.openwrt.org/openwrt/branches/attitude_adjustment@33625 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../mac80211/files/b43-fwcutter-fw-dirname.patch | 16 + package/mac80211/files/host_bin/b43-fwsquash.py | 122 ++++ package/mac80211/files/lib/wifi/mac80211.sh | 599 ++++++++++++++++++ package/mac80211/files/regdb.txt | 697 +++++++++++++++++++++ 4 files changed, 1434 insertions(+) create mode 100644 package/mac80211/files/b43-fwcutter-fw-dirname.patch create mode 100755 package/mac80211/files/host_bin/b43-fwsquash.py create mode 100644 package/mac80211/files/lib/wifi/mac80211.sh create mode 100644 package/mac80211/files/regdb.txt (limited to 'package/mac80211/files') diff --git a/package/mac80211/files/b43-fwcutter-fw-dirname.patch b/package/mac80211/files/b43-fwcutter-fw-dirname.patch new file mode 100644 index 000000000..c2f49ab78 --- /dev/null +++ b/package/mac80211/files/b43-fwcutter-fw-dirname.patch @@ -0,0 +1,16 @@ +--- 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 new file mode 100755 index 000000000..cd8818167 --- /dev/null +++ b/package/mac80211/files/host_bin/b43-fwsquash.py @@ -0,0 +1,122 @@ +#!/usr/bin/env python +# +# b43 firmware file squasher +# Removes unnecessary firmware files +# +# Copyright (c) 2009 Michael Buesch +# +# 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 new file mode 100644 index 000000000..1b0bea70e --- /dev/null +++ b/package/mac80211/files/lib/wifi/mac80211.sh @@ -0,0 +1,599 @@ +#!/bin/sh +append DRIVERS "mac80211" + +mac80211_hostapd_setup_base() { + local phy="$1" + 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 + config_get hwmode "$device" hwmode + config_get channel "$device" channel + 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" + + [ -n "$channel" -a -z "$hwmode" ] && wifi_fixup_hwmode "$device" + + [ "$channel" = auto ] && { + channel=$(iw phy "$phy" info | \ + sed -ne '/MHz/ { /disabled\|passive\|radar/d; s/.*\[//; s/\].*//; p; q }') + config_set "$device" channel "$channel" + } + + [ -n "$hwmode" ] && { + config_get hwmode_11n "$device" hwmode_11n + [ -n "$hwmode_11n" ] && { + hwmode="$hwmode_11n" + append base_cfg "ieee80211n=1" "$N" + config_get htmode "$device" htmode + config_get ht_capab_list "$device" ht_capab + case "$htmode" in + HT20|HT40+|HT40-) ht_capab="[$htmode]";; + *)ht_capab=;; + esac + for cap in $ht_capab_list; do + ht_capab="$ht_capab[$cap]" + done + [ -n "$ht_capab" ] && append base_cfg "ht_capab=$ht_capab" "$N" + } + } + + local country_ie=0 + [ -n "$country" ] && country_ie=1 + 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 + brval="$(($br / 100))" + [ -n "$brstr" ] && brstr="$brstr " + brstr="$brstr$brval" + done + } + + append base_cfg "preamble=$short_preamble" "$N" + + cat >> "$cfgfile" <