added compat-wireless with runtime fragmentation support

This commit is contained in:
jensp 2009-11-29 14:37:03 +00:00
parent fd85be0a50
commit e0e4a646f8
4 changed files with 117 additions and 0 deletions

View file

@ -4,6 +4,7 @@ AUX 4004_zd1211rw-2.6.28.patch 1412 RMD160 70c7cd8a8e03199b33c76ff16974d4a4980b8
AUX 4005_ath5k-frequency-expansion-2.6.30.patch 4838 RMD160 e175138fd025ef0750178146c0c038c1664557bb SHA1 99322fe5cdf1a8ded58f65267503fddc90c934be SHA256 563a1644c51804d6014be54a7ce26cd4db70991a4b75c4b66370ea9136d40467
AUX 4007_ath5k-pass-failed-crc.patch 568 RMD160 1f38abc77887fc23b5f09b1ddd7e4159ab190e91 SHA1 22ecfbd59b4e7f1038ac9415003e182cddae8df2 SHA256 12e8549aa3fd85d83fc7c80ab2dbd4ed5a22ae446af6979bfbdd4a3c2d4e9fe6
AUX 4012_openwrt-b43-disable_qos_when_openfw.patch 721 RMD160 cd67c2425cd5b29f637781652a49a951a9ffda21 SHA1 382947ee332836c43c4eeb32eb8358b88e18fd22 SHA256 f03374faa0d41a5dca7e20079d7a7bd59aebd309b56aa6c7f7108b596d3f0da2
AUX 4013-runtime-enable-disable-of-mac80211-packet-injection.patch 1490 RMD160 cf2b087a76a9a8839bc7113f048dd9d475151784 SHA1 7d0b8be0e119308efdaafc1ff97f5ee046b77005 SHA256 483ac63c753882d0e1f520101c437bd0594cbca8ecebeac2454b2f198c1f4959
AUX blinky.patch 357 RMD160 6c93e916efc56412f316076e836c1c5d98e58047 SHA1 e23568801309cdf2a01fa5be8cd3b9a3fcff5edd SHA256 1c2f0e18ecbcf2c07ba732671e77408326d2566d260f0252002c5698f9e65e30
AUX compat-chaos.patch 6187 RMD160 2b8477fbf8b8bde456c5c32a8146330232ae355f SHA1 7bd56bcb3c50eb6f22be7ec24b886ae70bf747cd SHA256 5e8c11b46bc8acf10a2ce8b934fec32662b57c003c99e5e0ca4717a8c6b19474
AUX failed_ath5k-frequency-chaos-2.6.28.patch 5787 RMD160 978b39113ebdc4ec1543bd4379d4428431524cb6 SHA1 a1b9268aedeb0d9035fd13214fe465145f1c5334 SHA256 8e9e0888e890a2970274a7ba9d40d75e01ebaedb0e16700d8994b9ecfe921185
@ -33,4 +34,5 @@ EBUILD compat-wireless-2.6.32_rc5-r1.ebuild 1779 RMD160 c943d857694cddcb21c92ace
EBUILD compat-wireless-2.6.32_rc5.ebuild 1742 RMD160 dc0e574a6fa4d34fad5dc08a308ba4e88a28d8f8 SHA1 d7e130851c8578aa17fb74c5c3b3234d62121a04 SHA256 6a313e003762690538692f1022e75858a630c9c01bfc399697a28f8ab3e3230a
EBUILD compat-wireless-2.6.32_rc6.ebuild 1779 RMD160 c943d857694cddcb21c92ace853a5a06116b7a1e SHA1 8636e437ad0edd666a8b919e0da0443f998b7b64 SHA256 2c2668bf82abc183816662e80068d3e37a788c70b4fd0ff7eb450fcc239f240e
EBUILD compat-wireless-2.6.32_rc7-r1.ebuild 1929 RMD160 42b7a5c62813aa6f1f0681b9246efd34f217717a SHA1 81882c26de50066c171d5d0b521d2669bb127504 SHA256 8baad26721e3033629e64afd144f5f430d4ad3d6db6bee810d4c68775ea275c3
EBUILD compat-wireless-2.6.32_rc7-r2.ebuild 2073 RMD160 bc2f37c5686f91affda5a7021d168b61915e0b9d SHA1 8c2957a0d2160ec73343a8890a702a150dd529cd SHA256 614ae861f626f90a9fa85084fe280d9bb47cfe18aa6815b9daeb7b078a660737
EBUILD compat-wireless-2.6.32_rc7.ebuild 1804 RMD160 184e3e153488b5dbbefd92368035086a9e15825f SHA1 11626bb82f0b04485fefcef2efaae9ef9e62f017 SHA256 fb33ffed690e34491e2d7bf50a99d1aea334fac7e814ce2e3cf61644dab23130

View file

@ -0,0 +1,70 @@
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
EAPI="2"
inherit linux-mod linux-info
##Stable
MY_P=${P/_rc/-rc}
DESCRIPTION="Stable kernel pre-release wifi subsystem backport"
HOMEPAGE="http://wireless.kernel.org/en/users/Download/stable"
SRC_URI="http://www.orbit-lab.org/kernel/${PN}-2.6-stable/v2.6.32/${MY_P}.tar.bz2"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 x86"
IUSE="+injection runtime-injection"
DEPEND=""
RDEPEND="=sys-kernel/linux-firmware-99999999"
S=${WORKDIR}/${MY_P}
RESTRICT="strip"
CONFIG_CHECK="!DYNAMIC_FTRACE"
pkg_setup() {
linux-mod_pkg_setup
kernel_is -lt 2 6 27 && die "kernel 2.6.27 or higher is required"
linux_chkconfig_module MAC80211 || die "CONFIG_MAC80211 must be built as a _module_ !"
linux_chkconfig_module CFG80211 || die "CONFIG_CFG80211 must be built as a _module_ !"
}
src_prepare() {
#whynot patch is against the makefile to fix general brokeness
epatch "${FILESDIR}"/whynot-2.6.32.patch
if use injection; then
epatch "${FILESDIR}"/400[24]_*.patch
epatch "${FILESDIR}"/mac80211.compat08082009.wl_frag+ack_v1.patch
if use runtime-injection; then
epatch "${FILESDIR}"/4013-runtime-enable-disable-of-mac80211-packet-injection.patch
fi
epatch "${FILESDIR}"/compat-chaos.patch;
fi
}
src_compile() {
addpredict "${KERNEL_DIR}"
set_arch_to_kernel
emake KVER="${KV_FULL}" || die "emake failed"
}
src_install() {
for file in $(find -name \*.ko); do
insinto "/lib/modules/${KV_FULL}/updates/$(dirname ${file})"
doins "${file}" || die "failed to install module ${file}"
done
dosbin scripts/athenable scripts/b43load scripts/iwl-enable \
scripts/madwifi-unload scripts/athload scripts/iwl-load \
scripts/modlib.sh scripts/b43enable scripts/load.sh \
scripts/unload.sh || die "script installation failed"
dodoc README || die
}
pkg_postinst() {
update_depmod
einfo 'You may have problem if you do not run "depmod -ae" after this installation'
einfo 'To switch to the new drivers without reboot run unload.sh then load.sh'
}

View file

@ -0,0 +1,37 @@
--- net/mac80211/tx.c 2009-11-29 14:59:53.474095955 +0100
+++ net/mac80211/tx.c 2009-11-29 15:03:06.436871431 +0100
@@ -670,6 +670,10 @@
return TX_CONTINUE;
}
+static int ieee80211_injection_patch = 0;
+module_param(ieee80211_injection_patch, int, 0644);
+MODULE_PARM_DESC(ieee80211_injection_patch, "Enable packet injection patch");
+
static ieee80211_tx_result debug_noinline
ieee80211_tx_h_sequence(struct ieee80211_tx_data *tx)
{
@@ -686,14 +690,20 @@
* excessive retries (ACKing and retrying should be
* handled by the injecting application).
* FIXME This may break hostapd and some other injectors.
- * This should be done using a radiotap flag.
+ * This should be done using a radiotap flag. For the time being, this
+ * may be enabled/disabled in
+ * /sys/module/mac80211/parameters/ieee80211_injection_patch
*/
- if (unlikely((info->flags & IEEE80211_TX_CTL_INJECTED) &&
- !(tx->sdata->u.mntr_flags & MONITOR_FLAG_COOK_FRAMES))) {
+ if (unlikely(ieee80211_injection_patch &&
+ (info->flags & IEEE80211_TX_CTL_INJECTED) &&
+ !(tx->sdata->u.mntr_flags & MONITOR_FLAG_COOK_FRAMES))) {
if (!ieee80211_has_morefrags(hdr->frame_control))
info->flags |= IEEE80211_TX_CTL_NO_ACK;
return TX_CONTINUE;
}
+ if (unlikely(!ieee80211_injection_patch &&
+ info->control.vif->type == NL80211_IFTYPE_MONITOR))
+ return TX_CONTINUE;
if (unlikely(ieee80211_is_ctl(hdr->frame_control)))
return TX_CONTINUE;

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<use>
<flag name="injection">Add patches for better wifi injection support</flag>
<flag name="runtime-injection">Allow fragmentation support to be toggled at runtime</flag>
</use>
</pkgmetadata>