|  | # /bin/sh | 
|  |  | 
|  | # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. | 
|  | # Distributed under the terms of the GNU General Public License v2 | 
|  |  | 
|  | # | 
|  | # Helper script to setup compat-wireless configuration. | 
|  | # | 
|  |  | 
|  | S=${1:?No kernel source directory specified} | 
|  |  | 
|  | COMPAT_WIRELESS="${S}"/chromeos/compat-wireless | 
|  | COMPAT_VERSION=`cat ${COMPAT_WIRELESS}/compat_version` | 
|  | COMPAT_RELEASE=`cat ${COMPAT_WIRELESS}/compat_version` | 
|  | COMPAT_BASE_TREE=`cat ${COMPAT_WIRELESS}/compat_base_tree` | 
|  | COMPAT_BASE_TREE_VERSION=`cat ${COMPAT_WIRELESS}/compat_base_tree_version` | 
|  | # TODO(sleffler) calculate CONFIG_COMPAT_KERNEL version | 
|  |  | 
|  | COMPAT_CONFIG=' | 
|  | CONFIG_COMPAT_KERNEL_33=y | 
|  | CONFIG_COMPAT_FIRMWARE_CLASS=m | 
|  |  | 
|  | CONFIG_COMPAT_RFKILL=y | 
|  | CONFIG_RFKILL_BACKPORT=y | 
|  | CONFIG_RFKILL_BACKPORT_INPUT=y | 
|  |  | 
|  | CONFIG_COMPAT_WIRELESS=m | 
|  | CONFIG_COMPAT_WIRELESS_MODULES=m | 
|  |  | 
|  | CONFIG_MAC80211=m | 
|  | CONFIG_MAC80211_LEDS=y | 
|  | CONFIG_MAC80211_DEBUGFS=y | 
|  | CONFIG_MAC80211_RC_MINSTREL=y | 
|  | CONFIG_MAC80211_RC_DEFAULT="minstrel" | 
|  | CONFIG_COMPAT_MAC80211_RC_DEFAULT="minstrel" | 
|  |  | 
|  | CONFIG_CFG80211=m | 
|  | CONFIG_CFG80211_DEBUGFS=y | 
|  | CONFIG_CFG80211_DEFAULT_PS=y | 
|  | CONFIG_CFG80211_WEXT=y | 
|  |  | 
|  | CONFIG_ATH=y | 
|  | CONFIG_ATH_COMMON=m | 
|  | CONFIG_ATH_DEBUG=y | 
|  | CONFIG_ATH5K=m | 
|  | CONFIG_ATH9K=m | 
|  | CONFIG_ATH9K_HW=m | 
|  | CONFIG_ATH9K_COMMON=m | 
|  | CONFIG_ATH9K_DEBUGFS=y | 
|  |  | 
|  | CONFIG_IWLWIFI=m | 
|  | CONFIG_IWLWIFI_SPECTRUM_MANAGEMENT=y | 
|  | CONFIG_IWLAGN=m | 
|  | CONFIG_COMPAT_IWL4965=y | 
|  | CONFIG_IWL5000=y | 
|  | CONFIG_IWL3945=m | 
|  | CONFIG_IWL3945_SPECTRUM_MANAGEMENT=y | 
|  | CONFIG_IWLWIFI_DEBUG=y | 
|  | CONFIG_IWLWIFI_DEBUGFS=y | 
|  |  | 
|  | CONFIG_USB_NET_COMPAT_CDCETHER=m | 
|  | CONFIG_USB_NET_COMPAT_RNDIS_HOST=m | 
|  | CONFIG_USB_COMPAT_USBNET=m | 
|  | ' | 
|  | echo "Configure compat-wireless: ${COMPAT_CONFIG}" | 
|  |  | 
|  | # | 
|  | # Edit Makefiles to reflect configuration knobs | 
|  | # | 
|  | SED_ARGS= | 
|  | for c in $COMPAT_CONFIG; do | 
|  | a=`echo $c | sed s/=.*//` | 
|  | b=`echo $c | sed s/.*=//` | 
|  | SED_ARGS="$SED_ARGS -e s/[\$]("$a")/"$b"/" | 
|  | done | 
|  |  | 
|  | Makefiles=`find -L "${COMPAT_WIRELESS}" -name Makefile` | 
|  | for m in $Makefiles; do | 
|  | sed $SED_ARGS -i $m | 
|  | done | 
|  |  | 
|  | # Construct include/linux/compat_autoconf.h | 
|  | (cat<<EOF | 
|  | #ifndef COMPAT_AUTOCONF_INCLUDED | 
|  | #define COMPAT_AUTOCONF_INCLUDED | 
|  | /* | 
|  | * Automatically generated by chromeos-base/kernel/kernel-*.ebuild | 
|  | * compat-wireless-2.6: $COMPAT_VERSION | 
|  | * linux-2.6: v2.6.32 | 
|  | */ | 
|  | #define COMPAT_BASE_TREE "$COMPAT_BASE_TREE" | 
|  | #define COMPAT_BASE_TREE_VERSION "$COMPAT_BASE_TREE_VERSION" | 
|  | #define COMPAT_PROJECT "Compat-wireless" | 
|  | #define COMPAT_VERSION "$COMPAT_VERSION" | 
|  |  | 
|  | #ifndef CONFIG_WIRELESS_EXT | 
|  | #error Compat-wireless requirement: CONFIG_WIRELESS_EXT must be enabled in your kernel | 
|  | #endif /* CONFIG_WIRELESS_EXT */ | 
|  | EOF | 
|  | for c in $COMPAT_CONFIG; do | 
|  | a=`echo $c | sed s/=.*//` | 
|  | b=`echo $c | sed s/.*=//` | 
|  | case $b in | 
|  | m|y) | 
|  | echo "#define $a 1";; | 
|  | *) | 
|  | echo "#define $a $b";; | 
|  | esac | 
|  | done | 
|  | cat<<'EOF' | 
|  | #ifdef CONFIG_NET_SCHED | 
|  | #ifdef CONFIG_NETDEVICES_MULTIQUEUE | 
|  | #ifndef CONFIG_MAC80211_QOS | 
|  | #define CONFIG_MAC80211_QOS 1 | 
|  | #endif /* CONFIG_MAC80211_QOS */ | 
|  | #endif | 
|  | #endif | 
|  | #endif /* COMPAT_AUTOCONF_INCLUDED */ | 
|  | EOF | 
|  | )>"${COMPAT_WIRELESS}"/include/linux/compat_autoconf.h |