Browse Source

Initial commit

master
xenia 3 years ago
commit
0298024043
  1. 4
      .gitignore
  2. 36
      0001-mac80211-Ignore-beacon-advertised-txpower.patch
  3. 209
      PKGBUILD
  4. 16
      README.md
  5. 10494
      config

4
.gitignore

@ -0,0 +1,4 @@
/archlinux-linux/
/pkg/
/src/
/*.tar.xz

36
0001-mac80211-Ignore-beacon-advertised-txpower.patch

@ -0,0 +1,36 @@
From bf1e42ac2cd29a3aac82ef610fd1713baaa7c725 Mon Sep 17 00:00:00 2001
From: haskal <haskal@bepis.xyz>
Date: Sun, 3 Nov 2019 01:38:46 +0000
Subject: [PATCH] mac80211: Ignore beacon-advertised txpower
This patch disables checking for AP-advertised txpower in received
beacon frames. This allows the currently configured radio txpower to
remain the same.
---
net/mac80211/mlme.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index a826f9ccc03f..826877bef6ef 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -1452,6 +1452,8 @@ ieee80211_find_80211h_pwr_constr(struct ieee80211_sub_if_data *sdata,
const u8 *pwr_constr_elem,
int *chan_pwr, int *pwr_reduction)
{
+ return false;
+#if 0
struct ieee80211_country_ie_triplet *triplet;
int chan = ieee80211_frequency_to_channel(channel->center_freq);
int i, chan_increment;
@@ -1505,6 +1507,7 @@ ieee80211_find_80211h_pwr_constr(struct ieee80211_sub_if_data *sdata,
*pwr_reduction = 0;
return have_chan_pwr;
+#endif
}
static void ieee80211_find_cisco_dtpc(struct ieee80211_sub_if_data *sdata,
--
2.23.0

209
PKGBUILD

@ -0,0 +1,209 @@
# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
pkgbase=linux
pkgver=5.3.8.1
pkgrel=1
_srcver=${pkgver%.*}-arch${pkgver##*.}
url="https://git.archlinux.org/linux.git/log/?h=v$_srcver"
arch=(x86_64)
license=(GPL2)
makedepends=(
xmlto kmod inetutils bc libelf
python-sphinx python-sphinx_rtd_theme graphviz imagemagick
git
)
options=('!strip')
_srcname=archlinux-linux
source=(
"$_srcname::git+https://git.archlinux.org/linux.git?signed#tag=v$_srcver"
config # the main kernel config file
0001-mac80211-Ignore-beacon-advertised-txpower.patch
)
validpgpkeys=(
'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds
'647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman
'8218F88849AAC522E94CF470A5E9288C4FA415FA' # Jan Alexander Steffens (heftig)
)
sha256sums=('SKIP'
'1da444b9f2f55de39072f267598f80b6858adbf912deb5c08222b58cb0466ecb'
'SKIP')
export KBUILD_BUILD_HOST=archlinux
export KBUILD_BUILD_USER=$pkgbase
export KBUILD_BUILD_TIMESTAMP="@${SOURCE_DATE_EPOCH:-$(date +%s)}"
prepare() {
cd $_srcname
msg2 "Setting version..."
scripts/setlocalversion --save-scmversion
echo "-$pkgrel" > localversion.10-pkgrel
echo "${pkgbase#linux}" > localversion.20-pkgname
local src
for src in "${source[@]}"; do
src="${src%%::*}"
src="${src##*/}"
[[ $src = *.patch ]] || continue
msg2 "Applying patch $src..."
patch -Np1 < "../$src"
done
msg2 "Setting config..."
cp ../config .config
make olddefconfig
make -s kernelrelease > version
msg2 "Prepared %s version %s" "$pkgbase" "$(<version)"
}
build() {
cd $_srcname
make bzImage modules htmldocs
}
_package() {
pkgdesc="The ${pkgbase/linux/Linux} kernel and modules"
depends=(coreutils kmod initramfs)
optdepends=('crda: to set the correct wireless channels of your country'
'linux-firmware: firmware images needed for some devices')
cd $_srcname
local kernver="$(<version)"
local modulesdir="$pkgdir/usr/lib/modules/$kernver"
msg2 "Installing boot image..."
# systemd expects to find the kernel here to allow hibernation
# https://github.com/systemd/systemd/commit/edda44605f06a41fb86b7ab8128dcf99161d2344
install -Dm644 "$(make -s image_name)" "$modulesdir/vmlinuz"
# Used by mkinitcpio to name the kernel
echo "$pkgbase" | install -Dm644 /dev/stdin "$modulesdir/pkgbase"
msg2 "Installing modules..."
make INSTALL_MOD_PATH="$pkgdir/usr" modules_install
# remove build and source links
rm "$modulesdir"/{source,build}
msg2 "Fixing permissions..."
chmod -Rc u=rwX,go=rX "$pkgdir"
}
_package-headers() {
pkgdesc="Header files and scripts for building modules for ${pkgbase/linux/Linux} kernel"
cd $_srcname
local builddir="$pkgdir/usr/lib/modules/$(<version)/build"
msg2 "Installing build files..."
install -Dt "$builddir" -m644 .config Makefile Module.symvers System.map \
localversion.* version vmlinux
install -Dt "$builddir/kernel" -m644 kernel/Makefile
install -Dt "$builddir/arch/x86" -m644 arch/x86/Makefile
cp -t "$builddir" -a scripts
# add objtool for external module building and enabled VALIDATION_STACK option
install -Dt "$builddir/tools/objtool" tools/objtool/objtool
# add xfs and shmem for aufs building
mkdir -p "$builddir"/{fs/xfs,mm}
msg2 "Installing headers..."
cp -t "$builddir" -a include
cp -t "$builddir/arch/x86" -a arch/x86/include
install -Dt "$builddir/arch/x86/kernel" -m644 arch/x86/kernel/asm-offsets.s
install -Dt "$builddir/drivers/md" -m644 drivers/md/*.h
install -Dt "$builddir/net/mac80211" -m644 net/mac80211/*.h
# http://bugs.archlinux.org/task/13146
install -Dt "$builddir/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h
# http://bugs.archlinux.org/task/20402
install -Dt "$builddir/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h
install -Dt "$builddir/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h
install -Dt "$builddir/drivers/media/tuners" -m644 drivers/media/tuners/*.h
msg2 "Installing KConfig files..."
find . -name 'Kconfig*' -exec install -Dm644 {} "$builddir/{}" \;
msg2 "Removing unneeded architectures..."
local arch
for arch in "$builddir"/arch/*/; do
[[ $arch = */x86/ ]] && continue
echo "Removing $(basename "$arch")"
rm -r "$arch"
done
msg2 "Removing documentation..."
rm -r "$builddir/Documentation"
msg2 "Removing broken symlinks..."
find -L "$builddir" -type l -printf 'Removing %P\n' -delete
msg2 "Removing loose objects..."
find "$builddir" -type f -name '*.o' -printf 'Removing %P\n' -delete
msg2 "Stripping build tools..."
local file
while read -rd '' file; do
case "$(file -bi "$file")" in
application/x-sharedlib\;*) # Libraries (.so)
strip -v $STRIP_SHARED "$file" ;;
application/x-archive\;*) # Libraries (.a)
strip -v $STRIP_STATIC "$file" ;;
application/x-executable\;*) # Binaries
strip -v $STRIP_BINARIES "$file" ;;
application/x-pie-executable\;*) # Relocatable binaries
strip -v $STRIP_SHARED "$file" ;;
esac
done < <(find "$builddir" -type f -perm -u+x ! -name vmlinux -print0)
msg2 "Adding symlink..."
mkdir -p "$pkgdir/usr/src"
ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase"
msg2 "Fixing permissions..."
chmod -Rc u=rwX,go=rX "$pkgdir"
}
_package-docs() {
pkgdesc="Kernel hackers manual - HTML documentation that comes with the ${pkgbase/linux/Linux} kernel"
cd $_srcname
local builddir="$pkgdir/usr/lib/modules/$(<version)/build"
msg2 "Installing documentation..."
mkdir -p "$builddir"
cp -t "$builddir" -a Documentation
msg2 "Removing doctrees..."
rm -r "$builddir/Documentation/output/.doctrees"
msg2 "Moving HTML docs..."
local src dst
while read -rd '' src; do
dst="$builddir/Documentation/${src#$builddir/Documentation/output/}"
mkdir -p "${dst%/*}"
mv "$src" "$dst"
rmdir -p --ignore-fail-on-non-empty "${src%/*}"
done < <(find "$builddir/Documentation/output" -type f -print0)
msg2 "Adding symlink..."
mkdir -p "$pkgdir/usr/share/doc"
ln -sr "$builddir/Documentation" "$pkgdir/usr/share/doc/$pkgbase"
msg2 "Fixing permissions..."
chmod -Rc u=rwX,go=rX "$pkgdir"
}
pkgname=("$pkgbase" "$pkgbase-headers" "$pkgbase-docs")
for _p in "${pkgname[@]}"; do
eval "package_$_p() {
$(declare -f "_package${_p#$pkgbase}")
_package${_p#$pkgbase}
}"
done
# vim:set ts=8 sts=2 sw=2 et:

16
README.md

@ -0,0 +1,16 @@
This is a dumb proof-of-concept Linux kernel patch that lets you keep your configured 802.11 tx power in STA mode even if the AP you're associated with is advertising a different tx power in their beacon frames.
## Mandatory Disclaimer ##
Something something proof of concept...educational purposes...
Running this may be illegal depending on your jurisdiction. Probably don't do it. For the official record, I never have. I just made it, for, reasons,
## How to build ##
This is an archlinux kernel. If you run arch (btw):
```bash
makepkg -si
```
For other distros, you can manually apply the patch on top of your distro's linux kernel sources and use whatever build process they have.

10494
config
File diff suppressed because it is too large
View File

Loading…
Cancel
Save