mirror of
https://github.com/Ysurac/openmptcprouter.git
synced 2025-03-09 15:40:20 +00:00
commit
8bf05c8dc9
8 changed files with 1188 additions and 1719 deletions
38
build.sh
38
build.sh
|
@ -26,10 +26,12 @@ OMR_REPO=${OMR_REPO:-http://$OMR_HOST:$OMR_PORT/release/$OMR_KERNEL}
|
||||||
OMR_KEEPBIN=${OMR_KEEPBIN:-no}
|
OMR_KEEPBIN=${OMR_KEEPBIN:-no}
|
||||||
OMR_IMG=${OMR_IMG:-yes}
|
OMR_IMG=${OMR_IMG:-yes}
|
||||||
#OMR_UEFI=${OMR_UEFI:-yes}
|
#OMR_UEFI=${OMR_UEFI:-yes}
|
||||||
|
OMR_PACKAGES=${OMR_PACKAGES:-full}
|
||||||
OMR_ALL_PACKAGES=${OMR_ALL_PACKAGES:-no}
|
OMR_ALL_PACKAGES=${OMR_ALL_PACKAGES:-no}
|
||||||
OMR_TARGET=${OMR_TARGET:-x86_64}
|
OMR_TARGET=${OMR_TARGET:-x86_64}
|
||||||
OMR_TARGET_CONFIG="config-$OMR_TARGET"
|
OMR_TARGET_CONFIG="config-$OMR_TARGET"
|
||||||
OMR_KERNEL=${OMR_KERNEL:-5.4}
|
OMR_KERNEL=${OMR_KERNEL:-5.4}
|
||||||
|
OMR_RELEASE=${OMR_RELEASE:-$(git describe --tags `git rev-list --tags --max-count=1` | sed 's/[^0-9.]//g')}
|
||||||
|
|
||||||
OMR_FEED_URL="${OMR_FEED_URL:-https://github.com/ysurac/openmptcprouter-feeds}"
|
OMR_FEED_URL="${OMR_FEED_URL:-https://github.com/ysurac/openmptcprouter-feeds}"
|
||||||
OMR_FEED_SRC="${OMR_FEED_SRC:-develop}"
|
OMR_FEED_SRC="${OMR_FEED_SRC:-develop}"
|
||||||
|
@ -61,9 +63,9 @@ fi
|
||||||
|
|
||||||
#_get_repo source https://github.com/ysurac/openmptcprouter-source "master"
|
#_get_repo source https://github.com/ysurac/openmptcprouter-source "master"
|
||||||
if [ "$OMR_OPENWRT" = "default" ]; then
|
if [ "$OMR_OPENWRT" = "default" ]; then
|
||||||
_get_repo "$OMR_TARGET/source" https://github.com/openwrt/openwrt "df27e949fbbf13e1e2ab4db49f608165ef0ba9fe"
|
_get_repo "$OMR_TARGET/source" https://github.com/openwrt/openwrt "e5aa498acb847320a382034ba0b9cfc55e6f13ca"
|
||||||
_get_repo feeds/packages https://github.com/openwrt/packages "a4bb706918c58c7f8718e5de1de2e719eecabbd2"
|
_get_repo feeds/packages https://github.com/openwrt/packages "69fd6ab319e170dd690a6495e8c1a7abe79f3960"
|
||||||
_get_repo feeds/luci https://github.com/openwrt/luci "d0518a11e124e124bfaa02551bc2d028fad2d69d"
|
_get_repo feeds/luci https://github.com/openwrt/luci "16f443bf4caf6e7dd85efd1ce111b45779acdf5e"
|
||||||
elif [ "$OMR_OPENWRT" = "master" ]; then
|
elif [ "$OMR_OPENWRT" = "master" ]; then
|
||||||
_get_repo "$OMR_TARGET/source" https://github.com/openwrt/openwrt "master"
|
_get_repo "$OMR_TARGET/source" https://github.com/openwrt/openwrt "master"
|
||||||
_get_repo feeds/packages https://github.com/openwrt/packages "master"
|
_get_repo feeds/packages https://github.com/openwrt/packages "master"
|
||||||
|
@ -107,13 +109,23 @@ src-link luci $(readlink -f feeds/luci)
|
||||||
src-link openmptcprouter $(readlink -f "$OMR_FEED")
|
src-link openmptcprouter $(readlink -f "$OMR_FEED")
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat > "$OMR_TARGET/source/package/system/opkg/files/customfeeds.conf" <<EOF
|
if [ "$OMR_DIST" = "openmptcprouter" ]; then
|
||||||
|
cat > "$OMR_TARGET/source/package/system/opkg/files/customfeeds.conf" <<-EOF
|
||||||
|
src/gz openwrt_luci http://packages.openmptcprouter.com/${OMR_RELEASE}/${OMR_REAL_TARGET}/luci
|
||||||
|
src/gz openwrt_packages http://packages.openmptcprouter.com/${OMR_RELEASE}/${OMR_REAL_TARGET}/packages
|
||||||
|
src/gz openwrt_base http://packages.openmptcprouter.com/${OMR_RELEASE}/${OMR_REAL_TARGET}/base
|
||||||
|
src/gz openwrt_routing http://packages.openmptcprouter.com/${OMR_RELEASE}/${OMR_REAL_TARGET}/routing
|
||||||
|
src/gz openwrt_telephony http://packages.openmptcprouter.com/${OMR_RELEASE}/${OMR_REAL_TARGET}/telephony
|
||||||
|
EOF
|
||||||
|
else
|
||||||
|
cat > "$OMR_TARGET/source/package/system/opkg/files/customfeeds.conf" <<-EOF
|
||||||
src/gz openwrt_luci http://downloads.openwrt.org/snapshots/packages/${OMR_REAL_TARGET}/luci
|
src/gz openwrt_luci http://downloads.openwrt.org/snapshots/packages/${OMR_REAL_TARGET}/luci
|
||||||
src/gz openwrt_packages http://downloads.openwrt.org/snapshots/packages/${OMR_REAL_TARGET}/packages
|
src/gz openwrt_packages http://downloads.openwrt.org/snapshots/packages/${OMR_REAL_TARGET}/packages
|
||||||
src/gz openwrt_base http://downloads.openwrt.org/snapshots/packages/${OMR_REAL_TARGET}/base
|
src/gz openwrt_base http://downloads.openwrt.org/snapshots/packages/${OMR_REAL_TARGET}/base
|
||||||
src/gz openwrt_routing http://downloads.openwrt.org/snapshots/packages/${OMR_REAL_TARGET}/routing
|
src/gz openwrt_routing http://downloads.openwrt.org/snapshots/packages/${OMR_REAL_TARGET}/routing
|
||||||
src/gz openwrt_telephony http://downloads.openwrt.org/snapshots/packages/${OMR_REAL_TARGET}/telephony
|
src/gz openwrt_telephony http://downloads.openwrt.org/snapshots/packages/${OMR_REAL_TARGET}/telephony
|
||||||
EOF
|
EOF
|
||||||
|
fi
|
||||||
#cat > "$OMR_TARGET/source/package/system/opkg/files/customfeeds.conf" <<EOF
|
#cat > "$OMR_TARGET/source/package/system/opkg/files/customfeeds.conf" <<EOF
|
||||||
#src/gz openwrt_luci http://downloads.openwrt.org/releases/18.06.0/packages/${OMR_REAL_TARGET}/luci
|
#src/gz openwrt_luci http://downloads.openwrt.org/releases/18.06.0/packages/${OMR_REAL_TARGET}/luci
|
||||||
#src/gz openwrt_packages http://downloads.openwrt.org/releases/18.06.0/packages/${OMR_REAL_TARGET}/packages
|
#src/gz openwrt_packages http://downloads.openwrt.org/releases/18.06.0/packages/${OMR_REAL_TARGET}/packages
|
||||||
|
@ -143,6 +155,7 @@ else
|
||||||
fi
|
fi
|
||||||
if [ "$OMR_ALL_PACKAGES" = "yes" ]; then
|
if [ "$OMR_ALL_PACKAGES" = "yes" ]; then
|
||||||
echo 'CONFIG_ALL=y' >> "$OMR_TARGET/source/.config"
|
echo 'CONFIG_ALL=y' >> "$OMR_TARGET/source/.config"
|
||||||
|
echo 'CONFIG_ALL_NONSHARED=y' >> "$OMR_TARGET/source/.config"
|
||||||
fi
|
fi
|
||||||
if [ "$OMR_IMG" = "yes" ] && [ "$OMR_TARGET" = "x86_64" ]; then
|
if [ "$OMR_IMG" = "yes" ] && [ "$OMR_TARGET" = "x86_64" ]; then
|
||||||
echo 'CONFIG_VDI_IMAGES=y' >> "$OMR_TARGET/source/.config"
|
echo 'CONFIG_VDI_IMAGES=y' >> "$OMR_TARGET/source/.config"
|
||||||
|
@ -150,6 +163,13 @@ if [ "$OMR_IMG" = "yes" ] && [ "$OMR_TARGET" = "x86_64" ]; then
|
||||||
echo 'CONFIG_VHDX_IMAGES=y' >> "$OMR_TARGET/source/.config"
|
echo 'CONFIG_VHDX_IMAGES=y' >> "$OMR_TARGET/source/.config"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$OMR_PACKAGES" = "full" ]; then
|
||||||
|
echo 'CONFIG_PACKAGE_${OMR_DIST}-full=y' >> "$OMR_TARGET/source/.config"
|
||||||
|
fi
|
||||||
|
if [ "$OMR_PACKAGES" = "mini" ]; then
|
||||||
|
echo 'CONFIG_PACKAGE_${OMR_DIST}-mini=y' >> "$OMR_TARGET/source/.config"
|
||||||
|
fi
|
||||||
|
|
||||||
cd "$OMR_TARGET/source"
|
cd "$OMR_TARGET/source"
|
||||||
|
|
||||||
#if [ "$OMR_UEFI" = "yes" ] && [ "$OMR_TARGET" = "x86_64" ]; then
|
#if [ "$OMR_UEFI" = "yes" ] && [ "$OMR_TARGET" = "x86_64" ]; then
|
||||||
|
@ -214,7 +234,7 @@ if ! patch -Rf -N -p1 -s --dry-run < ../../patches/package-too-long.patch; then
|
||||||
fi
|
fi
|
||||||
echo "Done"
|
echo "Done"
|
||||||
|
|
||||||
echo "Downlaod via IPv4"
|
echo "Download via IPv4"
|
||||||
if ! patch -Rf -N -p1 -s --dry-run < ../../patches/download-ipv4.patch; then
|
if ! patch -Rf -N -p1 -s --dry-run < ../../patches/download-ipv4.patch; then
|
||||||
patch -N -p1 -s < ../../patches/download-ipv4.patch
|
patch -N -p1 -s < ../../patches/download-ipv4.patch
|
||||||
fi
|
fi
|
||||||
|
@ -252,7 +272,11 @@ fi
|
||||||
# Remove patch that can make BPI-R2 slow
|
# Remove patch that can make BPI-R2 slow
|
||||||
rm -rf target/linux/mediatek/patches-4.14/0027-*.patch
|
rm -rf target/linux/mediatek/patches-4.14/0027-*.patch
|
||||||
|
|
||||||
|
rm -rf feeds/packages/libs/libwebp
|
||||||
|
|
||||||
echo "Update feeds index"
|
echo "Update feeds index"
|
||||||
|
rm -rf feeds/luci/modules/luci-mod-network
|
||||||
|
|
||||||
cp .config .config.keep
|
cp .config .config.keep
|
||||||
scripts/feeds clean
|
scripts/feeds clean
|
||||||
scripts/feeds update -a
|
scripts/feeds update -a
|
||||||
|
@ -267,8 +291,8 @@ scripts/feeds update -a
|
||||||
#cd "$OMR_TARGET/source"
|
#cd "$OMR_TARGET/source"
|
||||||
|
|
||||||
if [ "$OMR_ALL_PACKAGES" = "yes" ]; then
|
if [ "$OMR_ALL_PACKAGES" = "yes" ]; then
|
||||||
scripts/feeds install -a -p packages
|
scripts/feeds install -a -d m -p packages
|
||||||
scripts/feeds install -a -p luci
|
scripts/feeds install -a -d m -p luci
|
||||||
fi
|
fi
|
||||||
scripts/feeds install -a -d y -f -p openmptcprouter
|
scripts/feeds install -a -d y -f -p openmptcprouter
|
||||||
cp .config.keep .config
|
cp .config.keep .config
|
||||||
|
|
11
config
11
config
|
@ -194,17 +194,18 @@ CONFIG_KERNEL_TCP_CONG_BALIA=y
|
||||||
CONFIG_KERNEL_MPTCP_FULLMESH=y
|
CONFIG_KERNEL_MPTCP_FULLMESH=y
|
||||||
CONFIG_KERNEL_DEFAULT_FULLMESH=y
|
CONFIG_KERNEL_DEFAULT_FULLMESH=y
|
||||||
CONFIG_KERNEL_MPTCP_NDIFFPORTS=y
|
CONFIG_KERNEL_MPTCP_NDIFFPORTS=y
|
||||||
CONFIG_KERNEL_DEFAULT_NDIFFPORTS=n
|
# CONFIG_KERNEL_DEFAULT_NDIFFPORTS is not set
|
||||||
CONFIG_KERNEL_MPTCP_BINDER=y
|
CONFIG_KERNEL_MPTCP_BINDER=y
|
||||||
CONFIG_KERNEL_MPTCP_ECF=y
|
CONFIG_KERNEL_MPTCP_ECF=y
|
||||||
CONFIG_KERNEL_DEFAULT_BINDER=n
|
# CONFIG_KERNEL_DEFAULT_BINDER is not set
|
||||||
CONFIG_KERNEL_DEFAULT_DUMMY=n
|
# CONFIG_KERNEL_DEFAULT_DUMMY is not set
|
||||||
CONFIG_KERNEL_MPTCP_ROUNDROBIN=y
|
CONFIG_KERNEL_MPTCP_ROUNDROBIN=y
|
||||||
CONFIG_KERNEL_DEFAULT_ROUNDROBIN=n
|
# CONFIG_KERNEL_DEFAULT_ROUNDROBIN is not set
|
||||||
CONFIG_KERNEL_MPTCP_REDUNDANT=y
|
CONFIG_KERNEL_MPTCP_REDUNDANT=y
|
||||||
CONFIG_KERNEL_DEFAULT_REDUNDANT=n
|
# CONFIG_KERNEL_DEFAULT_REDUNDANT is not set
|
||||||
CONFIG_KERNEL_DEFAULT_SCHEDULER=y
|
CONFIG_KERNEL_DEFAULT_SCHEDULER=y
|
||||||
CONFIG_KERNEL_MPTCP=y
|
CONFIG_KERNEL_MPTCP=y
|
||||||
|
CONFIG_KERNEL_CRYPTO_SHA256=y
|
||||||
CONFIG_LUCI_LANG_hu=y
|
CONFIG_LUCI_LANG_hu=y
|
||||||
CONFIG_LUCI_LANG_pt=y
|
CONFIG_LUCI_LANG_pt=y
|
||||||
CONFIG_LUCI_LANG_sk=y
|
CONFIG_LUCI_LANG_sk=y
|
||||||
|
|
|
@ -4,3 +4,4 @@ CONFIG_TARGET_bcm27xx_bcm2709_DEVICE_rpi-2=y
|
||||||
CONFIG_PACKAGE_kmod-ath10k-ct=n
|
CONFIG_PACKAGE_kmod-ath10k-ct=n
|
||||||
CONFIG_PACKAGE_kmod-ath9k=y
|
CONFIG_PACKAGE_kmod-ath9k=y
|
||||||
CONFIG_PACKAGE_bcm27xx-eeprom=y
|
CONFIG_PACKAGE_bcm27xx-eeprom=y
|
||||||
|
CONFIG_PACKAGE_bcm27xx-userland=y
|
||||||
|
|
|
@ -4,3 +4,4 @@ CONFIG_TARGET_bcm27xx_bcm2711_DEVICE_rpi-4=y
|
||||||
CONFIG_PACKAGE_kmod-ath10k-ct=n
|
CONFIG_PACKAGE_kmod-ath10k-ct=n
|
||||||
CONFIG_PACKAGE_kmod-ath9k=y
|
CONFIG_PACKAGE_kmod-ath9k=y
|
||||||
CONFIG_PACKAGE_bcm27xx-eeprom=y
|
CONFIG_PACKAGE_bcm27xx-eeprom=y
|
||||||
|
CONFIG_PACKAGE_bcm27xx-userland=y
|
||||||
|
|
|
@ -81,24 +81,17 @@ CONFIG_64BIT_TIME=y
|
||||||
# CONFIG_AD9832 is not set
|
# CONFIG_AD9832 is not set
|
||||||
# CONFIG_AD9834 is not set
|
# CONFIG_AD9834 is not set
|
||||||
# CONFIG_ADAPTEC_STARFIRE is not set
|
# CONFIG_ADAPTEC_STARFIRE is not set
|
||||||
# CONFIG_ADE7753 is not set
|
|
||||||
# CONFIG_ADE7754 is not set
|
|
||||||
# CONFIG_ADE7758 is not set
|
|
||||||
# CONFIG_ADE7759 is not set
|
|
||||||
# CONFIG_ADE7854 is not set
|
# CONFIG_ADE7854 is not set
|
||||||
# CONFIG_ADF4350 is not set
|
# CONFIG_ADF4350 is not set
|
||||||
# CONFIG_ADF4371 is not set
|
# CONFIG_ADF4371 is not set
|
||||||
# CONFIG_ADFS_FS is not set
|
# CONFIG_ADFS_FS is not set
|
||||||
# CONFIG_ADIN_PHY is not set
|
# CONFIG_ADIN_PHY is not set
|
||||||
# CONFIG_ADIS16060 is not set
|
|
||||||
# CONFIG_ADIS16080 is not set
|
# CONFIG_ADIS16080 is not set
|
||||||
# CONFIG_ADIS16130 is not set
|
# CONFIG_ADIS16130 is not set
|
||||||
# CONFIG_ADIS16136 is not set
|
# CONFIG_ADIS16136 is not set
|
||||||
# CONFIG_ADIS16201 is not set
|
# CONFIG_ADIS16201 is not set
|
||||||
# CONFIG_ADIS16203 is not set
|
# CONFIG_ADIS16203 is not set
|
||||||
# CONFIG_ADIS16204 is not set
|
|
||||||
# CONFIG_ADIS16209 is not set
|
# CONFIG_ADIS16209 is not set
|
||||||
# CONFIG_ADIS16220 is not set
|
|
||||||
# CONFIG_ADIS16240 is not set
|
# CONFIG_ADIS16240 is not set
|
||||||
# CONFIG_ADIS16260 is not set
|
# CONFIG_ADIS16260 is not set
|
||||||
# CONFIG_ADIS16400 is not set
|
# CONFIG_ADIS16400 is not set
|
||||||
|
@ -118,6 +111,7 @@ CONFIG_AEABI=y
|
||||||
# CONFIG_AFE4403 is not set
|
# CONFIG_AFE4403 is not set
|
||||||
# CONFIG_AFE4404 is not set
|
# CONFIG_AFE4404 is not set
|
||||||
# CONFIG_AFFS_FS is not set
|
# CONFIG_AFFS_FS is not set
|
||||||
|
# CONFIG_AFS_DEBUG_CURSOR is not set
|
||||||
# CONFIG_AFS_FS is not set
|
# CONFIG_AFS_FS is not set
|
||||||
# CONFIG_AF_KCM is not set
|
# CONFIG_AF_KCM is not set
|
||||||
# CONFIG_AF_RXRPC is not set
|
# CONFIG_AF_RXRPC is not set
|
||||||
|
@ -161,7 +155,6 @@ CONFIG_ANON_INODES=y
|
||||||
# CONFIG_APDS9960 is not set
|
# CONFIG_APDS9960 is not set
|
||||||
# CONFIG_APM8018X is not set
|
# CONFIG_APM8018X is not set
|
||||||
# CONFIG_APM_EMULATION is not set
|
# CONFIG_APM_EMULATION is not set
|
||||||
# CONFIG_ENERGY_MODEL is not set
|
|
||||||
# CONFIG_APPLE_GMUX is not set
|
# CONFIG_APPLE_GMUX is not set
|
||||||
# CONFIG_APPLE_PROPERTIES is not set
|
# CONFIG_APPLE_PROPERTIES is not set
|
||||||
# CONFIG_APPLICOM is not set
|
# CONFIG_APPLICOM is not set
|
||||||
|
@ -172,10 +165,12 @@ CONFIG_ANON_INODES=y
|
||||||
# CONFIG_AR8216_PHY is not set
|
# CONFIG_AR8216_PHY is not set
|
||||||
# CONFIG_AR8216_PHY_LEDS is not set
|
# CONFIG_AR8216_PHY_LEDS is not set
|
||||||
# CONFIG_ARCH_ACTIONS is not set
|
# CONFIG_ARCH_ACTIONS is not set
|
||||||
|
# CONFIG_ARCH_AGILEX is not set
|
||||||
# CONFIG_ARCH_ALPINE is not set
|
# CONFIG_ARCH_ALPINE is not set
|
||||||
# CONFIG_ARCH_ARTPEC is not set
|
# CONFIG_ARCH_ARTPEC is not set
|
||||||
# CONFIG_ARCH_ASPEED is not set
|
# CONFIG_ARCH_ASPEED is not set
|
||||||
# CONFIG_ARCH_AT91 is not set
|
# CONFIG_ARCH_AT91 is not set
|
||||||
|
# CONFIG_ARCH_AXXIA is not set
|
||||||
# CONFIG_ARCH_BCM is not set
|
# CONFIG_ARCH_BCM is not set
|
||||||
# CONFIG_ARCH_BCM2835 is not set
|
# CONFIG_ARCH_BCM2835 is not set
|
||||||
# CONFIG_ARCH_BCM_21664 is not set
|
# CONFIG_ARCH_BCM_21664 is not set
|
||||||
|
@ -188,6 +183,7 @@ CONFIG_ANON_INODES=y
|
||||||
# CONFIG_ARCH_BCM_IPROC is not set
|
# CONFIG_ARCH_BCM_IPROC is not set
|
||||||
# CONFIG_ARCH_BCM_NSP is not set
|
# CONFIG_ARCH_BCM_NSP is not set
|
||||||
# CONFIG_ARCH_BERLIN is not set
|
# CONFIG_ARCH_BERLIN is not set
|
||||||
|
# CONFIG_ARCH_BITMAIN is not set
|
||||||
# CONFIG_ARCH_BRCMSTB is not set
|
# CONFIG_ARCH_BRCMSTB is not set
|
||||||
# CONFIG_ARCH_CLPS711X is not set
|
# CONFIG_ARCH_CLPS711X is not set
|
||||||
# CONFIG_ARCH_CNS3XXX is not set
|
# CONFIG_ARCH_CNS3XXX is not set
|
||||||
|
@ -248,7 +244,6 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
|
||||||
# CONFIG_ARCH_OMAP4 is not set
|
# CONFIG_ARCH_OMAP4 is not set
|
||||||
# CONFIG_ARCH_ORION5X is not set
|
# CONFIG_ARCH_ORION5X is not set
|
||||||
# CONFIG_ARCH_OXNAS is not set
|
# CONFIG_ARCH_OXNAS is not set
|
||||||
# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
|
|
||||||
# CONFIG_ARCH_PICOXCELL is not set
|
# CONFIG_ARCH_PICOXCELL is not set
|
||||||
# CONFIG_ARCH_PRIMA2 is not set
|
# CONFIG_ARCH_PRIMA2 is not set
|
||||||
# CONFIG_ARCH_PXA is not set
|
# CONFIG_ARCH_PXA is not set
|
||||||
|
@ -265,7 +260,6 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
|
||||||
# CONFIG_ARCH_SA1100 is not set
|
# CONFIG_ARCH_SA1100 is not set
|
||||||
# CONFIG_ARCH_SEATTLE is not set
|
# CONFIG_ARCH_SEATTLE is not set
|
||||||
# CONFIG_ARCH_SHMOBILE is not set
|
# CONFIG_ARCH_SHMOBILE is not set
|
||||||
# CONFIG_ARCH_SHMOBILE_MULTI is not set
|
|
||||||
# CONFIG_ARCH_SIRF is not set
|
# CONFIG_ARCH_SIRF is not set
|
||||||
# CONFIG_ARCH_SOCFPGA is not set
|
# CONFIG_ARCH_SOCFPGA is not set
|
||||||
# CONFIG_ARCH_SPRD is not set
|
# CONFIG_ARCH_SPRD is not set
|
||||||
|
@ -288,7 +282,6 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
|
||||||
# CONFIG_ARCH_VULCAN is not set
|
# CONFIG_ARCH_VULCAN is not set
|
||||||
# CONFIG_ARCH_W90X900 is not set
|
# CONFIG_ARCH_W90X900 is not set
|
||||||
# CONFIG_ARCH_WANTS_THP_SWAP is not set
|
# CONFIG_ARCH_WANTS_THP_SWAP is not set
|
||||||
# CONFIG_ARCH_WANTS_UBSAN_NO_NULL is not set
|
|
||||||
# CONFIG_ARCH_WM8505 is not set
|
# CONFIG_ARCH_WM8505 is not set
|
||||||
# CONFIG_ARCH_WM8750 is not set
|
# CONFIG_ARCH_WM8750 is not set
|
||||||
# CONFIG_ARCH_WM8850 is not set
|
# CONFIG_ARCH_WM8850 is not set
|
||||||
|
@ -299,6 +292,9 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
|
||||||
# CONFIG_ARCNET is not set
|
# CONFIG_ARCNET is not set
|
||||||
# CONFIG_ARC_EMAC is not set
|
# CONFIG_ARC_EMAC is not set
|
||||||
# CONFIG_ARC_IRQ_NO_AUTOSAVE is not set
|
# CONFIG_ARC_IRQ_NO_AUTOSAVE is not set
|
||||||
|
# CONFIG_ARM64_16K_PAGES is not set
|
||||||
|
# CONFIG_ARM64_64K_PAGES is not set
|
||||||
|
# CONFIG_ARM64_CRYPTO is not set
|
||||||
# CONFIG_ARM64_ERRATUM_1024718 is not set
|
# CONFIG_ARM64_ERRATUM_1024718 is not set
|
||||||
# CONFIG_ARM64_ERRATUM_1463225 is not set
|
# CONFIG_ARM64_ERRATUM_1463225 is not set
|
||||||
# CONFIG_ARM64_ERRATUM_819472 is not set
|
# CONFIG_ARM64_ERRATUM_819472 is not set
|
||||||
|
@ -310,11 +306,23 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
|
||||||
# CONFIG_ARM64_ERRATUM_843419 is not set
|
# CONFIG_ARM64_ERRATUM_843419 is not set
|
||||||
# CONFIG_ARM64_ERRATUM_845719 is not set
|
# CONFIG_ARM64_ERRATUM_845719 is not set
|
||||||
# CONFIG_ARM64_ERRATUM_858921 is not set
|
# CONFIG_ARM64_ERRATUM_858921 is not set
|
||||||
|
# CONFIG_ARM64_HW_AFDBM is not set
|
||||||
|
# CONFIG_ARM64_LSE_ATOMICS is not set
|
||||||
|
# CONFIG_ARM64_MODULE_PLTS is not set
|
||||||
|
# CONFIG_ARM64_PAN is not set
|
||||||
|
# CONFIG_ARM64_PMEM is not set
|
||||||
|
# CONFIG_ARM64_PSEUDO_NMI is not set
|
||||||
|
# CONFIG_ARM64_PTDUMP_DEBUGFS is not set
|
||||||
|
# CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set
|
||||||
# CONFIG_ARM64_RAS_EXTN is not set
|
# CONFIG_ARM64_RAS_EXTN is not set
|
||||||
# CONFIG_ARM64_RELOC_TEST is not set
|
# CONFIG_ARM64_RELOC_TEST is not set
|
||||||
CONFIG_ARM64_SW_TTBR0_PAN=y
|
CONFIG_ARM64_SW_TTBR0_PAN=y
|
||||||
|
# CONFIG_ARM64_UAO is not set
|
||||||
|
# CONFIG_ARM64_VA_BITS_48 is not set
|
||||||
|
# CONFIG_ARM64_VHE is not set
|
||||||
# CONFIG_ARM_APPENDED_DTB is not set
|
# CONFIG_ARM_APPENDED_DTB is not set
|
||||||
# CONFIG_ARM_ARCH_TIMER is not set
|
# CONFIG_ARM_ARCH_TIMER is not set
|
||||||
|
# CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND is not set
|
||||||
# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
|
# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
|
||||||
# CONFIG_ARM_CCI is not set
|
# CONFIG_ARM_CCI is not set
|
||||||
# CONFIG_ARM_CCI400_PMU is not set
|
# CONFIG_ARM_CCI400_PMU is not set
|
||||||
|
@ -344,29 +352,30 @@ CONFIG_ARM_DMA_MEM_BUFFERABLE=y
|
||||||
# CONFIG_ARM_ERRATA_773022 is not set
|
# CONFIG_ARM_ERRATA_773022 is not set
|
||||||
# CONFIG_ARM_ERRATA_775420 is not set
|
# CONFIG_ARM_ERRATA_775420 is not set
|
||||||
# CONFIG_ARM_ERRATA_798181 is not set
|
# CONFIG_ARM_ERRATA_798181 is not set
|
||||||
|
# CONFIG_ARM_ERRATA_814220 is not set
|
||||||
# CONFIG_ARM_ERRATA_818325_852422 is not set
|
# CONFIG_ARM_ERRATA_818325_852422 is not set
|
||||||
# CONFIG_ARM_ERRATA_821420 is not set
|
# CONFIG_ARM_ERRATA_821420 is not set
|
||||||
# CONFIG_ARM_ERRATA_825619 is not set
|
# CONFIG_ARM_ERRATA_825619 is not set
|
||||||
# CONFIG_ARM_ERRATA_857271 is not set
|
|
||||||
# CONFIG_ARM_ERRATA_852421 is not set
|
# CONFIG_ARM_ERRATA_852421 is not set
|
||||||
# CONFIG_ARM_ERRATA_852423 is not set
|
# CONFIG_ARM_ERRATA_852423 is not set
|
||||||
|
# CONFIG_ARM_ERRATA_857271 is not set
|
||||||
# CONFIG_ARM_ERRATA_857272 is not set
|
# CONFIG_ARM_ERRATA_857272 is not set
|
||||||
# CONFIG_ARM_ERRATA_814220 is not set
|
|
||||||
CONFIG_ARM_GIC_MAX_NR=1
|
CONFIG_ARM_GIC_MAX_NR=1
|
||||||
# CONFIG_ARM_KERNMEM_PERMS is not set
|
|
||||||
# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set
|
# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set
|
||||||
# CONFIG_ARM_KPROBES_TEST is not set
|
# CONFIG_ARM_KPROBES_TEST is not set
|
||||||
|
# CONFIG_ARM_LPAE is not set
|
||||||
# CONFIG_ARM_MHU is not set
|
# CONFIG_ARM_MHU is not set
|
||||||
# CONFIG_ARM_MODULE_PLTS is not set
|
# CONFIG_ARM_MODULE_PLTS is not set
|
||||||
# CONFIG_ARM_PATCH_PHYS_VIRT is not set
|
# CONFIG_ARM_PATCH_PHYS_VIRT is not set
|
||||||
# CONFIG_ARM_PSCI is not set
|
# CONFIG_ARM_PSCI is not set
|
||||||
# CONFIG_ARM_PSCI_CHECKER is not set
|
# CONFIG_ARM_PSCI_CHECKER is not set
|
||||||
# CONFIG_ARM_PTDUMP is not set
|
|
||||||
# CONFIG_ARM_PTDUMP_DEBUGFS is not set
|
# CONFIG_ARM_PTDUMP_DEBUGFS is not set
|
||||||
# CONFIG_ARM_SBSA_WATCHDOG is not set
|
# CONFIG_ARM_SBSA_WATCHDOG is not set
|
||||||
# CONFIG_ARM_SCPI_PROTOCOL is not set
|
# CONFIG_ARM_SCPI_PROTOCOL is not set
|
||||||
# CONFIG_ARM_SDE_INTERFACE is not set
|
# CONFIG_ARM_SDE_INTERFACE is not set
|
||||||
|
# CONFIG_ARM_SP805_WATCHDOG is not set
|
||||||
# CONFIG_ARM_SPE_PMU is not set
|
# CONFIG_ARM_SPE_PMU is not set
|
||||||
|
# CONFIG_ARM_THUMBEE is not set
|
||||||
# CONFIG_ARM_TIMER_SP804 is not set
|
# CONFIG_ARM_TIMER_SP804 is not set
|
||||||
# CONFIG_ARM_UNWIND is not set
|
# CONFIG_ARM_UNWIND is not set
|
||||||
# CONFIG_ARM_VIRT_EXT is not set
|
# CONFIG_ARM_VIRT_EXT is not set
|
||||||
|
@ -528,8 +537,6 @@ CONFIG_BITREVERSE=y
|
||||||
# CONFIG_BLK_CGROUP_IOCOST is not set
|
# CONFIG_BLK_CGROUP_IOCOST is not set
|
||||||
# CONFIG_BLK_CGROUP_IOLATENCY is not set
|
# CONFIG_BLK_CGROUP_IOLATENCY is not set
|
||||||
# CONFIG_BLK_CMDLINE_PARSER is not set
|
# CONFIG_BLK_CMDLINE_PARSER is not set
|
||||||
# CONFIG_BLK_CPQ_CISS_DA is not set
|
|
||||||
# CONFIG_BLK_CPQ_DA is not set
|
|
||||||
# CONFIG_BLK_DEBUG_FS is not set
|
# CONFIG_BLK_DEBUG_FS is not set
|
||||||
CONFIG_BLK_DEV=y
|
CONFIG_BLK_DEV=y
|
||||||
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
|
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
|
||||||
|
@ -556,7 +563,6 @@ CONFIG_BLK_DEV=y
|
||||||
# CONFIG_BLK_DEV_DTC2278 is not set
|
# CONFIG_BLK_DEV_DTC2278 is not set
|
||||||
# CONFIG_BLK_DEV_FD is not set
|
# CONFIG_BLK_DEV_FD is not set
|
||||||
# CONFIG_BLK_DEV_GENERIC is not set
|
# CONFIG_BLK_DEV_GENERIC is not set
|
||||||
# CONFIG_BLK_DEV_HD is not set
|
|
||||||
# CONFIG_BLK_DEV_HPT366 is not set
|
# CONFIG_BLK_DEV_HPT366 is not set
|
||||||
# CONFIG_BLK_DEV_HT6560B is not set
|
# CONFIG_BLK_DEV_HT6560B is not set
|
||||||
# CONFIG_BLK_DEV_IDEACPI is not set
|
# CONFIG_BLK_DEV_IDEACPI is not set
|
||||||
|
@ -625,9 +631,6 @@ CONFIG_BLOCK=y
|
||||||
# CONFIG_BMI160_I2C is not set
|
# CONFIG_BMI160_I2C is not set
|
||||||
# CONFIG_BMI160_SPI is not set
|
# CONFIG_BMI160_SPI is not set
|
||||||
# CONFIG_BMIPS_GENERIC is not set
|
# CONFIG_BMIPS_GENERIC is not set
|
||||||
# CONFIG_BMP085 is not set
|
|
||||||
# CONFIG_BMP085_I2C is not set
|
|
||||||
# CONFIG_BMP085_SPI is not set
|
|
||||||
# CONFIG_BMP280 is not set
|
# CONFIG_BMP280 is not set
|
||||||
# CONFIG_BNA is not set
|
# CONFIG_BNA is not set
|
||||||
# CONFIG_BNX2 is not set
|
# CONFIG_BNX2 is not set
|
||||||
|
@ -700,7 +703,6 @@ CONFIG_BT_BNEP_PROTO_FILTER=y
|
||||||
# CONFIG_BT_HCIBPA10X is not set
|
# CONFIG_BT_HCIBPA10X is not set
|
||||||
# CONFIG_BT_HCIBT3C is not set
|
# CONFIG_BT_HCIBT3C is not set
|
||||||
# CONFIG_BT_HCIBTSDIO is not set
|
# CONFIG_BT_HCIBTSDIO is not set
|
||||||
# CONFIG_BT_HCIBTUART is not set
|
|
||||||
# CONFIG_BT_HCIBTUSB is not set
|
# CONFIG_BT_HCIBTUSB is not set
|
||||||
# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set
|
# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set
|
||||||
# CONFIG_BT_HCIBTUSB_MTK is not set
|
# CONFIG_BT_HCIBTUSB_MTK is not set
|
||||||
|
@ -790,6 +792,7 @@ CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
|
||||||
# CONFIG_CGROUPS is not set
|
# CONFIG_CGROUPS is not set
|
||||||
# CONFIG_CGROUP_BPF is not set
|
# CONFIG_CGROUP_BPF is not set
|
||||||
# CONFIG_CGROUP_DEBUG is not set
|
# CONFIG_CGROUP_DEBUG is not set
|
||||||
|
# CONFIG_CGROUP_HUGETLB is not set
|
||||||
# CONFIG_CGROUP_NET_CLASSID is not set
|
# CONFIG_CGROUP_NET_CLASSID is not set
|
||||||
# CONFIG_CGROUP_NET_PRIO is not set
|
# CONFIG_CGROUP_NET_PRIO is not set
|
||||||
# CONFIG_CGROUP_RDMA is not set
|
# CONFIG_CGROUP_RDMA is not set
|
||||||
|
@ -903,6 +906,8 @@ CONFIG_CONSTRUCTORS=y
|
||||||
# CONFIG_CORTINA_PHY is not set
|
# CONFIG_CORTINA_PHY is not set
|
||||||
# CONFIG_COUNTER is not set
|
# CONFIG_COUNTER is not set
|
||||||
# CONFIG_CPA_DEBUG is not set
|
# CONFIG_CPA_DEBUG is not set
|
||||||
|
# CONFIG_CPU_BIG_ENDIAN is not set
|
||||||
|
# CONFIG_CPU_BPREDICT_DISABLE is not set
|
||||||
# CONFIG_CPU_DCACHE_DISABLE is not set
|
# CONFIG_CPU_DCACHE_DISABLE is not set
|
||||||
# CONFIG_CPU_FREQ is not set
|
# CONFIG_CPU_FREQ is not set
|
||||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
|
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
|
||||||
|
@ -912,8 +917,12 @@ CONFIG_CONSTRUCTORS=y
|
||||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
|
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
|
||||||
# CONFIG_CPU_FREQ_GOV_SCHEDUTIL is not set
|
# CONFIG_CPU_FREQ_GOV_SCHEDUTIL is not set
|
||||||
# CONFIG_CPU_FREQ_STAT_DETAILS is not set
|
# CONFIG_CPU_FREQ_STAT_DETAILS is not set
|
||||||
|
# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
|
||||||
|
# CONFIG_CPU_ICACHE_DISABLE is not set
|
||||||
|
# CONFIG_CPU_ICACHE_MISMATCH_WORKAROUND is not set
|
||||||
# CONFIG_CPU_IDLE is not set
|
# CONFIG_CPU_IDLE is not set
|
||||||
# CONFIG_CPU_IDLE_GOV_MENU is not set
|
# CONFIG_CPU_IDLE_GOV_MENU is not set
|
||||||
|
# CONFIG_CPU_IDLE_GOV_TEO is not set
|
||||||
# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
|
# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
|
||||||
# CONFIG_CPU_ISOLATION is not set
|
# CONFIG_CPU_ISOLATION is not set
|
||||||
# CONFIG_CPU_NO_EFFICIENT_FFS is not set
|
# CONFIG_CPU_NO_EFFICIENT_FFS is not set
|
||||||
|
@ -999,6 +1008,7 @@ CONFIG_CRYPTO_BLKCIPHER2=y
|
||||||
# CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC is not set
|
# CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC is not set
|
||||||
# CONFIG_CRYPTO_DEV_HIFN_795X is not set
|
# CONFIG_CRYPTO_DEV_HIFN_795X is not set
|
||||||
# CONFIG_CRYPTO_DEV_HISI_SEC is not set
|
# CONFIG_CRYPTO_DEV_HISI_SEC is not set
|
||||||
|
# CONFIG_CRYPTO_DEV_HISI_ZIP is not set
|
||||||
# CONFIG_CRYPTO_DEV_IMGTEC_HASH is not set
|
# CONFIG_CRYPTO_DEV_IMGTEC_HASH is not set
|
||||||
# CONFIG_CRYPTO_DEV_MARVELL_CESA is not set
|
# CONFIG_CRYPTO_DEV_MARVELL_CESA is not set
|
||||||
# CONFIG_CRYPTO_DEV_MV_CESA is not set
|
# CONFIG_CRYPTO_DEV_MV_CESA is not set
|
||||||
|
@ -1186,6 +1196,7 @@ CONFIG_DEBUG_KERNEL=y
|
||||||
# CONFIG_DEBUG_TIMEKEEPING is not set
|
# CONFIG_DEBUG_TIMEKEEPING is not set
|
||||||
# CONFIG_DEBUG_UART_8250_PALMCHIP is not set
|
# CONFIG_DEBUG_UART_8250_PALMCHIP is not set
|
||||||
# CONFIG_DEBUG_UART_BCM63XX is not set
|
# CONFIG_DEBUG_UART_BCM63XX is not set
|
||||||
|
# CONFIG_DEBUG_USER is not set
|
||||||
# CONFIG_DEBUG_VIRTUAL is not set
|
# CONFIG_DEBUG_VIRTUAL is not set
|
||||||
# CONFIG_DEBUG_VM is not set
|
# CONFIG_DEBUG_VM is not set
|
||||||
# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
|
# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
|
||||||
|
@ -1326,6 +1337,7 @@ CONFIG_DQL=y
|
||||||
# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
|
# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
|
||||||
# CONFIG_DRM_LVDS_ENCODER is not set
|
# CONFIG_DRM_LVDS_ENCODER is not set
|
||||||
# CONFIG_DRM_MALI_DISPLAY is not set
|
# CONFIG_DRM_MALI_DISPLAY is not set
|
||||||
|
# CONFIG_DRM_MCDE is not set
|
||||||
# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set
|
# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set
|
||||||
# CONFIG_DRM_MGAG200 is not set
|
# CONFIG_DRM_MGAG200 is not set
|
||||||
# CONFIG_DRM_MXSFB is not set
|
# CONFIG_DRM_MXSFB is not set
|
||||||
|
@ -1341,6 +1353,8 @@ CONFIG_DQL=y
|
||||||
# CONFIG_DRM_PANEL_LG_LG4573 is not set
|
# CONFIG_DRM_PANEL_LG_LG4573 is not set
|
||||||
# CONFIG_DRM_PANEL_LVDS is not set
|
# CONFIG_DRM_PANEL_LVDS is not set
|
||||||
# CONFIG_DRM_PANEL_NEC_NL8048HL11 is not set
|
# CONFIG_DRM_PANEL_NEC_NL8048HL11 is not set
|
||||||
|
# CONFIG_DRM_PANEL_NOVATEK_NT39016 is not set
|
||||||
|
# CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO is not set
|
||||||
# CONFIG_DRM_PANEL_ORISETECH_OTM8009A is not set
|
# CONFIG_DRM_PANEL_ORISETECH_OTM8009A is not set
|
||||||
# CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set
|
# CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set
|
||||||
# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set
|
# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set
|
||||||
|
@ -1348,16 +1362,18 @@ CONFIG_DQL=y
|
||||||
# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set
|
# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set
|
||||||
# CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set
|
# CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set
|
||||||
# CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03 is not set
|
# CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03 is not set
|
||||||
|
# CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 is not set
|
||||||
# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set
|
# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set
|
||||||
# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set
|
# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set
|
||||||
# CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 is not set
|
# CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 is not set
|
||||||
# CONFIG_DRM_PANEL_SHARP_LS037V7DW01 is not set
|
# CONFIG_DRM_PANEL_SHARP_LS037V7DW01 is not set
|
||||||
# CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set
|
# CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set
|
||||||
# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set
|
# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set
|
||||||
|
# CONFIG_DRM_PANEL_SONY_ACX565AKM is not set
|
||||||
# CONFIG_DRM_PANEL_TPO_TD043MTEA1 is not set
|
# CONFIG_DRM_PANEL_TPO_TD043MTEA1 is not set
|
||||||
|
# CONFIG_DRM_PANEL_TPO_TD028TTEC1 is not set
|
||||||
|
# CONFIG_DRM_PANEL_TPO_TPG110 is not set
|
||||||
# CONFIG_DRM_PANFROST is not set
|
# CONFIG_DRM_PANFROST is not set
|
||||||
# CONFIG_DRM_TOSHIBA_TC358764 is not set
|
|
||||||
# CONFIG_DRM_TI_SN65DSI86 is not set
|
|
||||||
# CONFIG_DRM_PARADE_PS8622 is not set
|
# CONFIG_DRM_PARADE_PS8622 is not set
|
||||||
# CONFIG_DRM_PL111 is not set
|
# CONFIG_DRM_PL111 is not set
|
||||||
# CONFIG_DRM_QXL is not set
|
# CONFIG_DRM_QXL is not set
|
||||||
|
@ -1374,7 +1390,9 @@ CONFIG_DQL=y
|
||||||
# CONFIG_DRM_THINE_THC63LVD1024 is not set
|
# CONFIG_DRM_THINE_THC63LVD1024 is not set
|
||||||
# CONFIG_DRM_TILCDC is not set
|
# CONFIG_DRM_TILCDC is not set
|
||||||
# CONFIG_DRM_TINYDRM is not set
|
# CONFIG_DRM_TINYDRM is not set
|
||||||
|
# CONFIG_DRM_TI_SN65DSI86 is not set
|
||||||
# CONFIG_DRM_TI_TFP410 is not set
|
# CONFIG_DRM_TI_TFP410 is not set
|
||||||
|
# CONFIG_DRM_TOSHIBA_TC358764 is not set
|
||||||
# CONFIG_DRM_TOSHIBA_TC358767 is not set
|
# CONFIG_DRM_TOSHIBA_TC358767 is not set
|
||||||
# CONFIG_DRM_UDL is not set
|
# CONFIG_DRM_UDL is not set
|
||||||
# CONFIG_DRM_VBOXVIDEO is not set
|
# CONFIG_DRM_VBOXVIDEO is not set
|
||||||
|
@ -1398,6 +1416,7 @@ CONFIG_DUMMY_CONSOLE_ROWS=25
|
||||||
# CONFIG_DVB_TUNER_DIB0070 is not set
|
# CONFIG_DVB_TUNER_DIB0070 is not set
|
||||||
# CONFIG_DVB_TUNER_DIB0090 is not set
|
# CONFIG_DVB_TUNER_DIB0090 is not set
|
||||||
# CONFIG_DWC_XLGMAC is not set
|
# CONFIG_DWC_XLGMAC is not set
|
||||||
|
# CONFIG_DWMAC_DWC_QOS_ETH is not set
|
||||||
# CONFIG_DWMAC_IPQ806X is not set
|
# CONFIG_DWMAC_IPQ806X is not set
|
||||||
# CONFIG_DWMAC_LPC18XX is not set
|
# CONFIG_DWMAC_LPC18XX is not set
|
||||||
# CONFIG_DWMAC_MESON is not set
|
# CONFIG_DWMAC_MESON is not set
|
||||||
|
@ -1446,6 +1465,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
|
||||||
# CONFIG_ENCLOSURE_SERVICES is not set
|
# CONFIG_ENCLOSURE_SERVICES is not set
|
||||||
# CONFIG_ENCRYPTED_KEYS is not set
|
# CONFIG_ENCRYPTED_KEYS is not set
|
||||||
# CONFIG_ENCX24J600 is not set
|
# CONFIG_ENCX24J600 is not set
|
||||||
|
# CONFIG_ENERGY_MODEL is not set
|
||||||
# CONFIG_ENIC is not set
|
# CONFIG_ENIC is not set
|
||||||
# CONFIG_ENVELOPE_DETECTOR is not set
|
# CONFIG_ENVELOPE_DETECTOR is not set
|
||||||
# CONFIG_EPAPR_PARAVIRT is not set
|
# CONFIG_EPAPR_PARAVIRT is not set
|
||||||
|
@ -1489,10 +1509,12 @@ CONFIG_EXTRA_TARGETS=""
|
||||||
# CONFIG_EXYNOS_VIDEO is not set
|
# CONFIG_EXYNOS_VIDEO is not set
|
||||||
# CONFIG_EZCHIP_NPS_MANAGEMENT_ENET is not set
|
# CONFIG_EZCHIP_NPS_MANAGEMENT_ENET is not set
|
||||||
# CONFIG_EZX_PCAP is not set
|
# CONFIG_EZX_PCAP is not set
|
||||||
|
# CONFIG_F2FS_CHECK_FS is not set
|
||||||
# CONFIG_F2FS_FAULT_INJECTION is not set
|
# CONFIG_F2FS_FAULT_INJECTION is not set
|
||||||
# CONFIG_F2FS_FS is not set
|
# CONFIG_F2FS_FS is not set
|
||||||
# CONFIG_F2FS_FS_ENCRYPTION is not set
|
# CONFIG_F2FS_FS_ENCRYPTION is not set
|
||||||
# CONFIG_F2FS_FS_POSIX_ACL is not set
|
# CONFIG_F2FS_FS_POSIX_ACL is not set
|
||||||
|
# CONFIG_F2FS_FS_SECURITY is not set
|
||||||
# CONFIG_F2FS_IO_TRACE is not set
|
# CONFIG_F2FS_IO_TRACE is not set
|
||||||
# CONFIG_FAILOVER is not set
|
# CONFIG_FAILOVER is not set
|
||||||
# CONFIG_FAIR_GROUP_SCHED is not set
|
# CONFIG_FAIR_GROUP_SCHED is not set
|
||||||
|
@ -1631,13 +1653,13 @@ CONFIG_FILE_LOCKING=y
|
||||||
# CONFIG_FIRMWARE_EDID is not set
|
# CONFIG_FIRMWARE_EDID is not set
|
||||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||||
# CONFIG_FIRMWARE_MEMMAP is not set
|
# CONFIG_FIRMWARE_MEMMAP is not set
|
||||||
# CONFIG_TRUSTED_FOUNDATIONS is not set
|
|
||||||
# CONFIG_FIXED_PHY is not set
|
# CONFIG_FIXED_PHY is not set
|
||||||
CONFIG_FLATMEM=y
|
CONFIG_FLATMEM=y
|
||||||
CONFIG_FLATMEM_MANUAL=y
|
CONFIG_FLATMEM_MANUAL=y
|
||||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
# CONFIG_FM10K is not set
|
# CONFIG_FM10K is not set
|
||||||
# CONFIG_FMC is not set
|
# CONFIG_FMC is not set
|
||||||
|
# CONFIG_FONTS is not set
|
||||||
# CONFIG_FONT_TER16x32 is not set
|
# CONFIG_FONT_TER16x32 is not set
|
||||||
# CONFIG_FORCEDETH is not set
|
# CONFIG_FORCEDETH is not set
|
||||||
CONFIG_FORCE_MAX_ZONEORDER=11
|
CONFIG_FORCE_MAX_ZONEORDER=11
|
||||||
|
@ -1652,10 +1674,10 @@ CONFIG_FRAME_WARN=1024
|
||||||
# CONFIG_FSCACHE is not set
|
# CONFIG_FSCACHE is not set
|
||||||
# CONFIG_FSI is not set
|
# CONFIG_FSI is not set
|
||||||
# CONFIG_FSL_EDMA is not set
|
# CONFIG_FSL_EDMA is not set
|
||||||
# CONFIG_FSL_QDMA is not set
|
|
||||||
# CONFIG_FSL_ERRATUM_A008585 is not set
|
# CONFIG_FSL_ERRATUM_A008585 is not set
|
||||||
# CONFIG_FSL_MC_BUS is not set
|
# CONFIG_FSL_MC_BUS is not set
|
||||||
# CONFIG_FSL_PQ_MDIO is not set
|
# CONFIG_FSL_PQ_MDIO is not set
|
||||||
|
# CONFIG_FSL_QDMA is not set
|
||||||
# CONFIG_FSL_XGMAC_MDIO is not set
|
# CONFIG_FSL_XGMAC_MDIO is not set
|
||||||
CONFIG_FSNOTIFY=y
|
CONFIG_FSNOTIFY=y
|
||||||
# CONFIG_FS_DAX is not set
|
# CONFIG_FS_DAX is not set
|
||||||
|
@ -1686,6 +1708,8 @@ CONFIG_FW_LOADER=y
|
||||||
CONFIG_FW_LOADER_USER_HELPER=y
|
CONFIG_FW_LOADER_USER_HELPER=y
|
||||||
CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
|
CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
|
||||||
# CONFIG_FXAS21002C is not set
|
# CONFIG_FXAS21002C is not set
|
||||||
|
# CONFIG_FXOS8700_I2C is not set
|
||||||
|
# CONFIG_FXOS8700_SPI is not set
|
||||||
CONFIG_GACT_PROB=y
|
CONFIG_GACT_PROB=y
|
||||||
# CONFIG_GADGET_UAC1 is not set
|
# CONFIG_GADGET_UAC1 is not set
|
||||||
# CONFIG_GAMEPORT is not set
|
# CONFIG_GAMEPORT is not set
|
||||||
|
@ -1969,6 +1993,7 @@ CONFIG_HPET_MMAP_DEFAULT=y
|
||||||
# CONFIG_HTC_PASIC3 is not set
|
# CONFIG_HTC_PASIC3 is not set
|
||||||
# CONFIG_HTS221 is not set
|
# CONFIG_HTS221 is not set
|
||||||
# CONFIG_HTU21 is not set
|
# CONFIG_HTU21 is not set
|
||||||
|
# CONFIG_HUGETLBFS is not set
|
||||||
# CONFIG_HUGETLB_PAGE is not set
|
# CONFIG_HUGETLB_PAGE is not set
|
||||||
# CONFIG_HVC_DCC is not set
|
# CONFIG_HVC_DCC is not set
|
||||||
# CONFIG_HVC_UDBG is not set
|
# CONFIG_HVC_UDBG is not set
|
||||||
|
@ -1998,8 +2023,8 @@ CONFIG_HW_RANDOM_TPM=y
|
||||||
# CONFIG_HYPERV is not set
|
# CONFIG_HYPERV is not set
|
||||||
# CONFIG_HYPERV_TSCPAGE is not set
|
# CONFIG_HYPERV_TSCPAGE is not set
|
||||||
# CONFIG_HYSDN is not set
|
# CONFIG_HYSDN is not set
|
||||||
CONFIG_HZ=100
|
# CONFIG_HZ is not set
|
||||||
CONFIG_HZ_100=y
|
# CONFIG_HZ_100 is not set
|
||||||
# CONFIG_HZ_1000 is not set
|
# CONFIG_HZ_1000 is not set
|
||||||
# CONFIG_HZ_1024 is not set
|
# CONFIG_HZ_1024 is not set
|
||||||
# CONFIG_HZ_128 is not set
|
# CONFIG_HZ_128 is not set
|
||||||
|
@ -2127,6 +2152,7 @@ CONFIG_HZ_100=y
|
||||||
# CONFIG_IGBVF is not set
|
# CONFIG_IGBVF is not set
|
||||||
# CONFIG_IGC is not set
|
# CONFIG_IGC is not set
|
||||||
# CONFIG_IIO is not set
|
# CONFIG_IIO is not set
|
||||||
|
# CONFIG_IIO_BUFFER is not set
|
||||||
# CONFIG_IIO_BUFFER_CB is not set
|
# CONFIG_IIO_BUFFER_CB is not set
|
||||||
# CONFIG_IIO_BUFFER_HW_CONSUMER is not set
|
# CONFIG_IIO_BUFFER_HW_CONSUMER is not set
|
||||||
# CONFIG_IIO_CONFIGFS is not set
|
# CONFIG_IIO_CONFIGFS is not set
|
||||||
|
@ -2146,6 +2172,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
|
||||||
# CONFIG_IIO_SW_DEVICE is not set
|
# CONFIG_IIO_SW_DEVICE is not set
|
||||||
# CONFIG_IIO_SW_TRIGGER is not set
|
# CONFIG_IIO_SW_TRIGGER is not set
|
||||||
# CONFIG_IIO_SYSFS_TRIGGER is not set
|
# CONFIG_IIO_SYSFS_TRIGGER is not set
|
||||||
|
# CONFIG_IIO_TRIGGER is not set
|
||||||
# CONFIG_IKCONFIG is not set
|
# CONFIG_IKCONFIG is not set
|
||||||
# CONFIG_IKCONFIG_PROC is not set
|
# CONFIG_IKCONFIG_PROC is not set
|
||||||
# CONFIG_IKHEADERS is not set
|
# CONFIG_IKHEADERS is not set
|
||||||
|
@ -2819,6 +2846,7 @@ CONFIG_MAY_USE_DEVLINK=y
|
||||||
CONFIG_MEMBARRIER=y
|
CONFIG_MEMBARRIER=y
|
||||||
# CONFIG_MEMORY is not set
|
# CONFIG_MEMORY is not set
|
||||||
# CONFIG_MEMORY_FAILURE is not set
|
# CONFIG_MEMORY_FAILURE is not set
|
||||||
|
# CONFIG_MEMORY_HOTPLUG is not set
|
||||||
# CONFIG_MEMSTICK is not set
|
# CONFIG_MEMSTICK is not set
|
||||||
# CONFIG_MEMTEST is not set
|
# CONFIG_MEMTEST is not set
|
||||||
# CONFIG_MEN_A21_WDT is not set
|
# CONFIG_MEN_A21_WDT is not set
|
||||||
|
@ -2828,6 +2856,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
|
||||||
# CONFIG_MFD_88PM805 is not set
|
# CONFIG_MFD_88PM805 is not set
|
||||||
# CONFIG_MFD_88PM860X is not set
|
# CONFIG_MFD_88PM860X is not set
|
||||||
# CONFIG_MFD_AAT2870_CORE is not set
|
# CONFIG_MFD_AAT2870_CORE is not set
|
||||||
|
# CONFIG_MFD_AC100 is not set
|
||||||
# CONFIG_MFD_ACT8945A is not set
|
# CONFIG_MFD_ACT8945A is not set
|
||||||
# CONFIG_MFD_ARIZONA_I2C is not set
|
# CONFIG_MFD_ARIZONA_I2C is not set
|
||||||
# CONFIG_MFD_ARIZONA_SPI is not set
|
# CONFIG_MFD_ARIZONA_SPI is not set
|
||||||
|
@ -2888,8 +2917,6 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
|
||||||
# CONFIG_MFD_RN5T618 is not set
|
# CONFIG_MFD_RN5T618 is not set
|
||||||
# CONFIG_MFD_ROHM_BD70528 is not set
|
# CONFIG_MFD_ROHM_BD70528 is not set
|
||||||
# CONFIG_MFD_ROHM_BD718XX is not set
|
# CONFIG_MFD_ROHM_BD718XX is not set
|
||||||
# CONFIG_MFD_ROHM_BD70528 is not set
|
|
||||||
# CONFIG_MFD_STPMIC1 is not set
|
|
||||||
# CONFIG_MFD_RT5033 is not set
|
# CONFIG_MFD_RT5033 is not set
|
||||||
# CONFIG_MFD_RTSX_PCI is not set
|
# CONFIG_MFD_RTSX_PCI is not set
|
||||||
# CONFIG_MFD_RTSX_USB is not set
|
# CONFIG_MFD_RTSX_USB is not set
|
||||||
|
@ -2926,7 +2953,6 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
|
||||||
# CONFIG_MFD_TQMX86 is not set
|
# CONFIG_MFD_TQMX86 is not set
|
||||||
# CONFIG_MFD_VIPERBOARD is not set
|
# CONFIG_MFD_VIPERBOARD is not set
|
||||||
# CONFIG_MFD_VX855 is not set
|
# CONFIG_MFD_VX855 is not set
|
||||||
# CONFIG_MFD_LOCHNAGAR is not set
|
|
||||||
# CONFIG_MFD_WL1273_CORE is not set
|
# CONFIG_MFD_WL1273_CORE is not set
|
||||||
# CONFIG_MFD_WM831X is not set
|
# CONFIG_MFD_WM831X is not set
|
||||||
# CONFIG_MFD_WM831X_I2C is not set
|
# CONFIG_MFD_WM831X_I2C is not set
|
||||||
|
@ -2989,7 +3015,6 @@ CONFIG_MISC_FILESYSTEMS=y
|
||||||
# CONFIG_MMC is not set
|
# CONFIG_MMC is not set
|
||||||
# CONFIG_MMC35240 is not set
|
# CONFIG_MMC35240 is not set
|
||||||
# CONFIG_MMC_ARMMMCI is not set
|
# CONFIG_MMC_ARMMMCI is not set
|
||||||
# CONFIG_MMC_STM32_SDMMC is not set
|
|
||||||
# CONFIG_MMC_AU1X is not set
|
# CONFIG_MMC_AU1X is not set
|
||||||
# CONFIG_MMC_BLOCK is not set
|
# CONFIG_MMC_BLOCK is not set
|
||||||
CONFIG_MMC_BLOCK_BOUNCE=y
|
CONFIG_MMC_BLOCK_BOUNCE=y
|
||||||
|
@ -3024,6 +3049,7 @@ CONFIG_MMC_BLOCK_MINORS=8
|
||||||
# CONFIG_MMC_SDHCI_XENON is not set
|
# CONFIG_MMC_SDHCI_XENON is not set
|
||||||
# CONFIG_MMC_SDRICOH_CS is not set
|
# CONFIG_MMC_SDRICOH_CS is not set
|
||||||
# CONFIG_MMC_SPI is not set
|
# CONFIG_MMC_SPI is not set
|
||||||
|
# CONFIG_MMC_STM32_SDMMC is not set
|
||||||
# CONFIG_MMC_TEST is not set
|
# CONFIG_MMC_TEST is not set
|
||||||
# CONFIG_MMC_TOSHIBA_PCI is not set
|
# CONFIG_MMC_TOSHIBA_PCI is not set
|
||||||
# CONFIG_MMC_USDHI6ROL0 is not set
|
# CONFIG_MMC_USDHI6ROL0 is not set
|
||||||
|
@ -3096,6 +3122,7 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||||
CONFIG_MTD_GEN_PROBE=y
|
CONFIG_MTD_GEN_PROBE=y
|
||||||
# CONFIG_MTD_GPIO_ADDR is not set
|
# CONFIG_MTD_GPIO_ADDR is not set
|
||||||
# CONFIG_MTD_HYPERBUS is not set
|
# CONFIG_MTD_HYPERBUS is not set
|
||||||
|
# CONFIG_MTD_IMPA7 is not set
|
||||||
# CONFIG_MTD_INTEL_VR_NOR is not set
|
# CONFIG_MTD_INTEL_VR_NOR is not set
|
||||||
# CONFIG_MTD_JEDECPROBE is not set
|
# CONFIG_MTD_JEDECPROBE is not set
|
||||||
# CONFIG_MTD_LATCH_ADDR is not set
|
# CONFIG_MTD_LATCH_ADDR is not set
|
||||||
|
@ -3187,7 +3214,6 @@ CONFIG_MTD_PHYSMAP_OF=y
|
||||||
# CONFIG_MTD_PMC551 is not set
|
# CONFIG_MTD_PMC551 is not set
|
||||||
# CONFIG_MTD_RAM is not set
|
# CONFIG_MTD_RAM is not set
|
||||||
# CONFIG_MTD_RAW_NAND is not set
|
# CONFIG_MTD_RAW_NAND is not set
|
||||||
# CONFIG_MTD_NAND_ECC_SW_BCH is not set
|
|
||||||
CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
|
CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
|
||||||
# CONFIG_MTD_REDBOOT_PARTS is not set
|
# CONFIG_MTD_REDBOOT_PARTS is not set
|
||||||
# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
|
# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
|
||||||
|
@ -3512,7 +3538,6 @@ CONFIG_NET_VENDOR_FARADAY=y
|
||||||
CONFIG_NET_VENDOR_FREESCALE=y
|
CONFIG_NET_VENDOR_FREESCALE=y
|
||||||
CONFIG_NET_VENDOR_FUJITSU=y
|
CONFIG_NET_VENDOR_FUJITSU=y
|
||||||
CONFIG_NET_VENDOR_GOOGLE=y
|
CONFIG_NET_VENDOR_GOOGLE=y
|
||||||
# CONFIG_GVE is not set
|
|
||||||
CONFIG_NET_VENDOR_HISILICON=y
|
CONFIG_NET_VENDOR_HISILICON=y
|
||||||
CONFIG_NET_VENDOR_HP=y
|
CONFIG_NET_VENDOR_HP=y
|
||||||
CONFIG_NET_VENDOR_HUAWEI=y
|
CONFIG_NET_VENDOR_HUAWEI=y
|
||||||
|
@ -3738,10 +3763,12 @@ CONFIG_NMI_LOG_BUF_SHIFT=13
|
||||||
# CONFIG_NTFS_RW is not set
|
# CONFIG_NTFS_RW is not set
|
||||||
# CONFIG_NTP_PPS is not set
|
# CONFIG_NTP_PPS is not set
|
||||||
# CONFIG_NULL_TTY is not set
|
# CONFIG_NULL_TTY is not set
|
||||||
|
# CONFIG_NUMA is not set
|
||||||
# CONFIG_NVM is not set
|
# CONFIG_NVM is not set
|
||||||
# CONFIG_NVMEM is not set
|
# CONFIG_NVMEM is not set
|
||||||
# CONFIG_NVMEM_BCM_OCOTP is not set
|
# CONFIG_NVMEM_BCM_OCOTP is not set
|
||||||
# CONFIG_NVMEM_IMX_OCOTP is not set
|
# CONFIG_NVMEM_IMX_OCOTP is not set
|
||||||
|
# CONFIG_NVMEM_REBOOT_MODE is not set
|
||||||
# CONFIG_NVMEM_SYSFS is not set
|
# CONFIG_NVMEM_SYSFS is not set
|
||||||
# CONFIG_NVME_FC is not set
|
# CONFIG_NVME_FC is not set
|
||||||
# CONFIG_NVME_TARGET is not set
|
# CONFIG_NVME_TARGET is not set
|
||||||
|
@ -3983,6 +4010,10 @@ CONFIG_PINCTRL_SINGLE=y
|
||||||
# CONFIG_PINCTRL_SX150X is not set
|
# CONFIG_PINCTRL_SX150X is not set
|
||||||
CONFIG_PINMUX=y
|
CONFIG_PINMUX=y
|
||||||
# CONFIG_PKCS7_MESSAGE_PARSER is not set
|
# CONFIG_PKCS7_MESSAGE_PARSER is not set
|
||||||
|
# CONFIG_PL310_ERRATA_588369 is not set
|
||||||
|
# CONFIG_PL310_ERRATA_727915 is not set
|
||||||
|
# CONFIG_PL310_ERRATA_753970 is not set
|
||||||
|
# CONFIG_PL310_ERRATA_769419 is not set
|
||||||
# CONFIG_PL320_MBOX is not set
|
# CONFIG_PL320_MBOX is not set
|
||||||
# CONFIG_PL330_DMA is not set
|
# CONFIG_PL330_DMA is not set
|
||||||
# CONFIG_PLATFORM_MHU is not set
|
# CONFIG_PLATFORM_MHU is not set
|
||||||
|
@ -3995,7 +4026,9 @@ CONFIG_PLUGIN_HOSTCC=""
|
||||||
# CONFIG_PMC_MSP is not set
|
# CONFIG_PMC_MSP is not set
|
||||||
# CONFIG_PMIC_ADP5520 is not set
|
# CONFIG_PMIC_ADP5520 is not set
|
||||||
# CONFIG_PMIC_DA903X is not set
|
# CONFIG_PMIC_DA903X is not set
|
||||||
|
# CONFIG_PMS7003 is not set
|
||||||
# CONFIG_PM_AUTOSLEEP is not set
|
# CONFIG_PM_AUTOSLEEP is not set
|
||||||
|
# CONFIG_PM_DEBUG is not set
|
||||||
# CONFIG_PM_DEVFREQ is not set
|
# CONFIG_PM_DEVFREQ is not set
|
||||||
# CONFIG_PM_WAKELOCKS is not set
|
# CONFIG_PM_WAKELOCKS is not set
|
||||||
# CONFIG_POSIX_MQUEUE is not set
|
# CONFIG_POSIX_MQUEUE is not set
|
||||||
|
@ -4137,12 +4170,14 @@ CONFIG_PWRSEQ_SIMPLE=y
|
||||||
# CONFIG_RAID_ATTRS is not set
|
# CONFIG_RAID_ATTRS is not set
|
||||||
# CONFIG_RALINK is not set
|
# CONFIG_RALINK is not set
|
||||||
# CONFIG_RANDOM32_SELFTEST is not set
|
# CONFIG_RANDOM32_SELFTEST is not set
|
||||||
|
# CONFIG_RANDOMIZE_BASE is not set
|
||||||
# CONFIG_RANDOM_TRUST_BOOTLOADER is not set
|
# CONFIG_RANDOM_TRUST_BOOTLOADER is not set
|
||||||
# CONFIG_RANDOM_TRUST_CPU is not set
|
# CONFIG_RANDOM_TRUST_CPU is not set
|
||||||
# CONFIG_RAPIDIO is not set
|
# CONFIG_RAPIDIO is not set
|
||||||
# CONFIG_RAS is not set
|
# CONFIG_RAS is not set
|
||||||
# CONFIG_RAW_DRIVER is not set
|
# CONFIG_RAW_DRIVER is not set
|
||||||
# CONFIG_RBTREE_TEST is not set
|
# CONFIG_RBTREE_TEST is not set
|
||||||
|
# CONFIG_RCU_BOOST is not set
|
||||||
CONFIG_RCU_CPU_STALL_TIMEOUT=60
|
CONFIG_RCU_CPU_STALL_TIMEOUT=60
|
||||||
# CONFIG_RCU_EQS_DEBUG is not set
|
# CONFIG_RCU_EQS_DEBUG is not set
|
||||||
# CONFIG_RCU_EXPEDITE_BOOT is not set
|
# CONFIG_RCU_EXPEDITE_BOOT is not set
|
||||||
|
@ -4277,7 +4312,7 @@ CONFIG_RFKILL=y
|
||||||
# CONFIG_RTC_DRV_BQ32K is not set
|
# CONFIG_RTC_DRV_BQ32K is not set
|
||||||
# CONFIG_RTC_DRV_BQ4802 is not set
|
# CONFIG_RTC_DRV_BQ4802 is not set
|
||||||
# CONFIG_RTC_DRV_CADENCE is not set
|
# CONFIG_RTC_DRV_CADENCE is not set
|
||||||
# CONFIG_RTC_DRV_CMOS is not set
|
CONFIG_RTC_DRV_CMOS=y
|
||||||
# CONFIG_RTC_DRV_DS1286 is not set
|
# CONFIG_RTC_DRV_DS1286 is not set
|
||||||
# CONFIG_RTC_DRV_DS1302 is not set
|
# CONFIG_RTC_DRV_DS1302 is not set
|
||||||
# CONFIG_RTC_DRV_DS1305 is not set
|
# CONFIG_RTC_DRV_DS1305 is not set
|
||||||
|
@ -4634,6 +4669,7 @@ CONFIG_SELECT_MEMORY_MODEL=y
|
||||||
# CONFIG_SENSORS_LTC4245 is not set
|
# CONFIG_SENSORS_LTC4245 is not set
|
||||||
# CONFIG_SENSORS_LTC4260 is not set
|
# CONFIG_SENSORS_LTC4260 is not set
|
||||||
# CONFIG_SENSORS_LTC4261 is not set
|
# CONFIG_SENSORS_LTC4261 is not set
|
||||||
|
# CONFIG_SENSORS_LTQ_CPUTEMP is not set
|
||||||
# CONFIG_SENSORS_MAX1111 is not set
|
# CONFIG_SENSORS_MAX1111 is not set
|
||||||
# CONFIG_SENSORS_MAX16064 is not set
|
# CONFIG_SENSORS_MAX16064 is not set
|
||||||
# CONFIG_SENSORS_MAX16065 is not set
|
# CONFIG_SENSORS_MAX16065 is not set
|
||||||
|
@ -4657,7 +4693,6 @@ CONFIG_SELECT_MEMORY_MODEL=y
|
||||||
# CONFIG_SENSORS_NCT7802 is not set
|
# CONFIG_SENSORS_NCT7802 is not set
|
||||||
# CONFIG_SENSORS_NCT7904 is not set
|
# CONFIG_SENSORS_NCT7904 is not set
|
||||||
# CONFIG_SENSORS_NPCM7XX is not set
|
# CONFIG_SENSORS_NPCM7XX is not set
|
||||||
# CONFIG_SENSORS_OCC_P8_I2C is not set
|
|
||||||
# CONFIG_SENSORS_NSA320 is not set
|
# CONFIG_SENSORS_NSA320 is not set
|
||||||
# CONFIG_SENSORS_NTC_THERMISTOR is not set
|
# CONFIG_SENSORS_NTC_THERMISTOR is not set
|
||||||
# CONFIG_SENSORS_OCC_P8_I2C is not set
|
# CONFIG_SENSORS_OCC_P8_I2C is not set
|
||||||
|
@ -4744,6 +4779,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
||||||
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
|
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
|
||||||
# CONFIG_SERIAL_ALTERA_UART is not set
|
# CONFIG_SERIAL_ALTERA_UART is not set
|
||||||
# CONFIG_SERIAL_AMBA_PL010 is not set
|
# CONFIG_SERIAL_AMBA_PL010 is not set
|
||||||
|
# CONFIG_SERIAL_AMBA_PL011 is not set
|
||||||
# CONFIG_SERIAL_ARC is not set
|
# CONFIG_SERIAL_ARC is not set
|
||||||
# CONFIG_SERIAL_BCM63XX is not set
|
# CONFIG_SERIAL_BCM63XX is not set
|
||||||
# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
|
# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
|
||||||
|
@ -5039,6 +5075,7 @@ CONFIG_SND_PROC_FS=y
|
||||||
# CONFIG_SND_SOC_CS53L30 is not set
|
# CONFIG_SND_SOC_CS53L30 is not set
|
||||||
# CONFIG_SND_SOC_CX2072X is not set
|
# CONFIG_SND_SOC_CX2072X is not set
|
||||||
# CONFIG_SND_SOC_DIO2125 is not set
|
# CONFIG_SND_SOC_DIO2125 is not set
|
||||||
|
# CONFIG_SND_SOC_DMIC is not set
|
||||||
# CONFIG_SND_SOC_ES7134 is not set
|
# CONFIG_SND_SOC_ES7134 is not set
|
||||||
# CONFIG_SND_SOC_ES7241 is not set
|
# CONFIG_SND_SOC_ES7241 is not set
|
||||||
# CONFIG_SND_SOC_ES8316 is not set
|
# CONFIG_SND_SOC_ES8316 is not set
|
||||||
|
@ -5246,6 +5283,7 @@ CONFIG_SND_X86=y
|
||||||
# CONFIG_SOUND is not set
|
# CONFIG_SOUND is not set
|
||||||
# CONFIG_SOUNDWIRE is not set
|
# CONFIG_SOUNDWIRE is not set
|
||||||
# CONFIG_SOUND_OSS_CORE is not set
|
# CONFIG_SOUND_OSS_CORE is not set
|
||||||
|
# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set
|
||||||
# CONFIG_SOUND_PRIME is not set
|
# CONFIG_SOUND_PRIME is not set
|
||||||
# CONFIG_SP5100_TCO is not set
|
# CONFIG_SP5100_TCO is not set
|
||||||
# CONFIG_SPARSEMEM_MANUAL is not set
|
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||||
|
@ -5289,8 +5327,8 @@ CONFIG_SND_X86=y
|
||||||
# CONFIG_SPI_PPC4xx is not set
|
# CONFIG_SPI_PPC4xx is not set
|
||||||
# CONFIG_SPI_PXA2XX is not set
|
# CONFIG_SPI_PXA2XX is not set
|
||||||
# CONFIG_SPI_PXA2XX_PCI is not set
|
# CONFIG_SPI_PXA2XX_PCI is not set
|
||||||
# CONFIG_SPI_ROCKCHIP is not set
|
|
||||||
# CONFIG_SPI_QCOM_QSPI is not set
|
# CONFIG_SPI_QCOM_QSPI is not set
|
||||||
|
# CONFIG_SPI_ROCKCHIP is not set
|
||||||
# CONFIG_SPI_S3C64XX is not set
|
# CONFIG_SPI_S3C64XX is not set
|
||||||
# CONFIG_SPI_SC18IS602 is not set
|
# CONFIG_SPI_SC18IS602 is not set
|
||||||
# CONFIG_SPI_SIFIVE is not set
|
# CONFIG_SPI_SIFIVE is not set
|
||||||
|
@ -5398,7 +5436,6 @@ CONFIG_SWAP=y
|
||||||
# CONFIG_SYNOPSYS_DWC_ETH_QOS is not set
|
# CONFIG_SYNOPSYS_DWC_ETH_QOS is not set
|
||||||
CONFIG_SYN_COOKIES=y
|
CONFIG_SYN_COOKIES=y
|
||||||
# CONFIG_SYSCON_REBOOT_MODE is not set
|
# CONFIG_SYSCON_REBOOT_MODE is not set
|
||||||
# CONFIG_NVMEM_REBOOT_MODE is not set
|
|
||||||
CONFIG_SYSCTL=y
|
CONFIG_SYSCTL=y
|
||||||
# CONFIG_SYSCTL_SYSCALL is not set
|
# CONFIG_SYSCTL_SYSCALL is not set
|
||||||
CONFIG_SYSFS=y
|
CONFIG_SYSFS=y
|
||||||
|
@ -5513,6 +5550,7 @@ CONFIG_TEXTSEARCH=y
|
||||||
# CONFIG_THINKPAD_ACPI is not set
|
# CONFIG_THINKPAD_ACPI is not set
|
||||||
CONFIG_THIN_ARCHIVES=y
|
CONFIG_THIN_ARCHIVES=y
|
||||||
# CONFIG_THRUSTMASTER_FF is not set
|
# CONFIG_THRUSTMASTER_FF is not set
|
||||||
|
# CONFIG_THUMB2_KERNEL is not set
|
||||||
# CONFIG_THUNDERBOLT is not set
|
# CONFIG_THUNDERBOLT is not set
|
||||||
# CONFIG_THUNDER_NIC_BGX is not set
|
# CONFIG_THUNDER_NIC_BGX is not set
|
||||||
# CONFIG_THUNDER_NIC_PF is not set
|
# CONFIG_THUNDER_NIC_PF is not set
|
||||||
|
@ -5712,6 +5750,7 @@ CONFIG_TRAD_SIGNALS=y
|
||||||
# CONFIG_TREE_RCU is not set
|
# CONFIG_TREE_RCU is not set
|
||||||
# CONFIG_TREE_RCU_TRACE is not set
|
# CONFIG_TREE_RCU_TRACE is not set
|
||||||
# CONFIG_TRIM_UNUSED_KSYMS is not set
|
# CONFIG_TRIM_UNUSED_KSYMS is not set
|
||||||
|
# CONFIG_TRUSTED_FOUNDATIONS is not set
|
||||||
# CONFIG_TRUSTED_KEYS is not set
|
# CONFIG_TRUSTED_KEYS is not set
|
||||||
# CONFIG_TSL2583 is not set
|
# CONFIG_TSL2583 is not set
|
||||||
# CONFIG_TSL2772 is not set
|
# CONFIG_TSL2772 is not set
|
||||||
|
@ -5762,6 +5801,7 @@ CONFIG_UNIX98_PTYS=y
|
||||||
# CONFIG_UNIX_DIAG is not set
|
# CONFIG_UNIX_DIAG is not set
|
||||||
CONFIG_UNIX_SCM=y
|
CONFIG_UNIX_SCM=y
|
||||||
# CONFIG_UNUSED_SYMBOLS is not set
|
# CONFIG_UNUSED_SYMBOLS is not set
|
||||||
|
# CONFIG_UNWINDER_FRAME_POINTER is not set
|
||||||
# CONFIG_UPROBES is not set
|
# CONFIG_UPROBES is not set
|
||||||
# CONFIG_UPROBE_EVENTS is not set
|
# CONFIG_UPROBE_EVENTS is not set
|
||||||
# CONFIG_US5182D is not set
|
# CONFIG_US5182D is not set
|
||||||
|
@ -5803,6 +5843,7 @@ CONFIG_USB_DEFAULT_PERSIST=y
|
||||||
# CONFIG_USB_DWC2_DUAL_ROLE is not set
|
# CONFIG_USB_DWC2_DUAL_ROLE is not set
|
||||||
# CONFIG_USB_DWC2_HOST is not set
|
# CONFIG_USB_DWC2_HOST is not set
|
||||||
# CONFIG_USB_DWC2_PERIPHERAL is not set
|
# CONFIG_USB_DWC2_PERIPHERAL is not set
|
||||||
|
# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
|
||||||
# CONFIG_USB_DWC3 is not set
|
# CONFIG_USB_DWC3 is not set
|
||||||
# CONFIG_USB_DWC3_EXYNOS is not set
|
# CONFIG_USB_DWC3_EXYNOS is not set
|
||||||
# CONFIG_USB_DWC3_HAPS is not set
|
# CONFIG_USB_DWC3_HAPS is not set
|
||||||
|
@ -5814,6 +5855,7 @@ CONFIG_USB_DEFAULT_PERSIST=y
|
||||||
# CONFIG_USB_DYNAMIC_MINORS is not set
|
# CONFIG_USB_DYNAMIC_MINORS is not set
|
||||||
# CONFIG_USB_EG20T is not set
|
# CONFIG_USB_EG20T is not set
|
||||||
# CONFIG_USB_EHCI_ATH79 is not set
|
# CONFIG_USB_EHCI_ATH79 is not set
|
||||||
|
# CONFIG_USB_EHCI_FSL is not set
|
||||||
# CONFIG_USB_EHCI_HCD_AT91 is not set
|
# CONFIG_USB_EHCI_HCD_AT91 is not set
|
||||||
# CONFIG_USB_EHCI_HCD_OMAP is not set
|
# CONFIG_USB_EHCI_HCD_OMAP is not set
|
||||||
# CONFIG_USB_EHCI_HCD_PPC_OF is not set
|
# CONFIG_USB_EHCI_HCD_PPC_OF is not set
|
||||||
|
@ -6284,7 +6326,6 @@ CONFIG_VMSPLIT_3G=y
|
||||||
# CONFIG_W1_MASTER_GPIO is not set
|
# CONFIG_W1_MASTER_GPIO is not set
|
||||||
# CONFIG_W1_MASTER_MATROX is not set
|
# CONFIG_W1_MASTER_MATROX is not set
|
||||||
# CONFIG_W1_MASTER_SGI is not set
|
# CONFIG_W1_MASTER_SGI is not set
|
||||||
# CONFIG_W1_SLAVE_BQ27000 is not set
|
|
||||||
# CONFIG_W1_SLAVE_DS2405 is not set
|
# CONFIG_W1_SLAVE_DS2405 is not set
|
||||||
# CONFIG_W1_SLAVE_DS2406 is not set
|
# CONFIG_W1_SLAVE_DS2406 is not set
|
||||||
# CONFIG_W1_SLAVE_DS2408 is not set
|
# CONFIG_W1_SLAVE_DS2408 is not set
|
||||||
|
@ -6294,7 +6335,6 @@ CONFIG_VMSPLIT_3G=y
|
||||||
# CONFIG_W1_SLAVE_DS2433 is not set
|
# CONFIG_W1_SLAVE_DS2433 is not set
|
||||||
# CONFIG_W1_SLAVE_DS2438 is not set
|
# CONFIG_W1_SLAVE_DS2438 is not set
|
||||||
# CONFIG_W1_SLAVE_DS250X is not set
|
# CONFIG_W1_SLAVE_DS250X is not set
|
||||||
# CONFIG_W1_SLAVE_DS2760 is not set
|
|
||||||
# CONFIG_W1_SLAVE_DS2780 is not set
|
# CONFIG_W1_SLAVE_DS2780 is not set
|
||||||
# CONFIG_W1_SLAVE_DS2781 is not set
|
# CONFIG_W1_SLAVE_DS2781 is not set
|
||||||
# CONFIG_W1_SLAVE_DS2805 is not set
|
# CONFIG_W1_SLAVE_DS2805 is not set
|
||||||
|
@ -6324,7 +6364,6 @@ CONFIG_WEXT_PROC=y
|
||||||
CONFIG_WEXT_SPY=y
|
CONFIG_WEXT_SPY=y
|
||||||
CONFIG_WILINK_PLATFORM_DATA=y
|
CONFIG_WILINK_PLATFORM_DATA=y
|
||||||
# CONFIG_WIMAX is not set
|
# CONFIG_WIMAX is not set
|
||||||
# CONFIG_WIMAX_GDM72XX is not set
|
|
||||||
CONFIG_WIRELESS=y
|
CONFIG_WIRELESS=y
|
||||||
CONFIG_WIRELESS_EXT=y
|
CONFIG_WIRELESS_EXT=y
|
||||||
# CONFIG_WIRELESS_WDS is not set
|
# CONFIG_WIRELESS_WDS is not set
|
||||||
|
@ -6351,14 +6390,11 @@ CONFIG_WLAN=y
|
||||||
# CONFIG_WLAN_VENDOR_TI is not set
|
# CONFIG_WLAN_VENDOR_TI is not set
|
||||||
# CONFIG_WLAN_VENDOR_ZYDAS is not set
|
# CONFIG_WLAN_VENDOR_ZYDAS is not set
|
||||||
# CONFIG_WLCORE is not set
|
# CONFIG_WLCORE is not set
|
||||||
# CONFIG_WL_MEDIATEK is not set
|
|
||||||
CONFIG_WL_TI=y
|
|
||||||
CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y
|
CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y
|
||||||
# CONFIG_WQ_WATCHDOG is not set
|
# CONFIG_WQ_WATCHDOG is not set
|
||||||
# CONFIG_WW_MUTEX_SELFTEST is not set
|
# CONFIG_WW_MUTEX_SELFTEST is not set
|
||||||
# CONFIG_X25 is not set
|
# CONFIG_X25 is not set
|
||||||
# CONFIG_X509_CERTIFICATE_PARSER is not set
|
# CONFIG_X509_CERTIFICATE_PARSER is not set
|
||||||
# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set
|
|
||||||
# CONFIG_X86_PKG_TEMP_THERMAL is not set
|
# CONFIG_X86_PKG_TEMP_THERMAL is not set
|
||||||
CONFIG_X86_SYSFB=y
|
CONFIG_X86_SYSFB=y
|
||||||
# CONFIG_XDP_SOCKETS is not set
|
# CONFIG_XDP_SOCKETS is not set
|
||||||
|
@ -6462,3 +6498,4 @@ CONFIG_DEFAULT_SCHEDULER=y
|
||||||
# CONFIG_DEFAULT_BLEST is not set
|
# CONFIG_DEFAULT_BLEST is not set
|
||||||
# CONFIG_DEFAULT_REDUNDANT is not set
|
# CONFIG_DEFAULT_REDUNDANT is not set
|
||||||
CONFIG_NF_CONNTRACK_CUSTOM=2
|
CONFIG_NF_CONNTRACK_CUSTOM=2
|
||||||
|
CONFIG_CRYPTO_SHA256=y
|
File diff suppressed because it is too large
Load diff
|
@ -1,988 +0,0 @@
|
||||||
From 025619486cf04c0beb9f395609d7711726fd63c6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Daniel Weber <weberdaniel@gmx.net>
|
|
||||||
Date: Mon, 5 Aug 2019 14:02:30 +0200
|
|
||||||
Subject: [PATCH 1/3] mptcp: Earliest Completion First (ECF) Scheduler
|
|
||||||
|
|
||||||
This scheduler works much like the default MPTCP scheduler. It always
|
|
||||||
prefers the subflow with the smallest round-trip-time that is available.
|
|
||||||
|
|
||||||
Signed-off-by: Daniel Weber <weberdaniel@gmx.net>
|
|
||||||
---
|
|
||||||
net/mptcp/Kconfig | 6 +
|
|
||||||
net/mptcp/Makefile | 1 +
|
|
||||||
net/mptcp/mptcp_ecf.c | 384 ++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
3 files changed, 391 insertions(+)
|
|
||||||
create mode 100644 net/mptcp/mptcp_ecf.c
|
|
||||||
|
|
||||||
diff --git a/net/mptcp/Kconfig b/net/mptcp/Kconfig
|
|
||||||
index 37f3af3db2a6..829ea084cf70 100644
|
|
||||||
--- a/net/mptcp/Kconfig
|
|
||||||
+++ b/net/mptcp/Kconfig
|
|
||||||
@@ -109,6 +109,12 @@ config MPTCP_REDUNDANT
|
|
||||||
This scheduler sends all packets redundantly over all subflows to decreases
|
|
||||||
latency and jitter on the cost of lower throughput.
|
|
||||||
|
|
||||||
+config MPTCP_ECF
|
|
||||||
+ tristate "MPTCP ECF"
|
|
||||||
+ depends on (MPTCP=y)
|
|
||||||
+ ---help---
|
|
||||||
+ This is an experimental Earliest Completion First (ECF) scheduler.
|
|
||||||
+
|
|
||||||
choice
|
|
||||||
prompt "Default MPTCP Scheduler"
|
|
||||||
default DEFAULT_SCHEDULER
|
|
||||||
diff --git a/net/mptcp/Makefile b/net/mptcp/Makefile
|
|
||||||
index 82a2d4d945ae..369248a2f68e 100644
|
|
||||||
--- a/net/mptcp/Makefile
|
|
||||||
+++ b/net/mptcp/Makefile
|
|
||||||
@@ -20,5 +20,6 @@ obj-$(CONFIG_MPTCP_NETLINK) += mptcp_netlink.o
|
|
||||||
obj-$(CONFIG_MPTCP_ROUNDROBIN) += mptcp_rr.o
|
|
||||||
obj-$(CONFIG_MPTCP_REDUNDANT) += mptcp_redundant.o
|
|
||||||
obj-$(CONFIG_MPTCP_BLEST) += mptcp_blest.o
|
|
||||||
+obj-$(CONFIG_MPTCP_ECF) += mptcp_ecf.o
|
|
||||||
|
|
||||||
mptcp-$(subst m,y,$(CONFIG_IPV6)) += mptcp_ipv6.o
|
|
||||||
diff --git a/net/mptcp/mptcp_ecf.c b/net/mptcp/mptcp_ecf.c
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..e0bd430a8943
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/net/mptcp/mptcp_ecf.c
|
|
||||||
@@ -0,0 +1,384 @@
|
|
||||||
+// SPDX-License-Identifier: GPL-2.0
|
|
||||||
+/* MPTCP ECF Scheduler
|
|
||||||
+ *
|
|
||||||
+ * Algorithm Design:
|
|
||||||
+ * Yeon-sup Lim <ylim@cs.umass.edu>
|
|
||||||
+ * Don Towsley <towsley@cs.umass.edu>
|
|
||||||
+ * Erich M. Nahum <nahum@us.ibm.com>
|
|
||||||
+ * Richard J. Gibbens <richard.gibbens@cl.cam.ac.uk>
|
|
||||||
+ *
|
|
||||||
+ * Initial Implementation:
|
|
||||||
+ * Yeon-sup Lim <ylim@cs.umass.edu>
|
|
||||||
+ *
|
|
||||||
+ * Additional Authors:
|
|
||||||
+ * Daniel Weber <weberd@cs.uni-bonn.de>
|
|
||||||
+ *
|
|
||||||
+ * This program is free software; you can redistribute it and/or
|
|
||||||
+ * modify it under the terms of the GNU General Public License
|
|
||||||
+ * as published by the Free Software Foundation; either version
|
|
||||||
+ * 2 of the License, or (at your option) any later version.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#include <linux/module.h>
|
|
||||||
+#include <net/mptcp.h>
|
|
||||||
+#include <trace/events/tcp.h>
|
|
||||||
+
|
|
||||||
+static unsigned int mptcp_ecf_r_beta __read_mostly = 4; /* beta = 1/r_beta = 0.25 */
|
|
||||||
+module_param(mptcp_ecf_r_beta, int, 0644);
|
|
||||||
+MODULE_PARM_DESC(mptcp_ecf_r_beta, "beta for ECF");
|
|
||||||
+
|
|
||||||
+struct ecfsched_priv {
|
|
||||||
+ u32 last_rbuf_opti;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+struct ecfsched_cb {
|
|
||||||
+ u32 switching_margin; /* this is "waiting" in algorithm description */
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static struct ecfsched_priv *ecfsched_get_priv(const struct tcp_sock *tp)
|
|
||||||
+{
|
|
||||||
+ return (struct ecfsched_priv *)&tp->mptcp->mptcp_sched[0];
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static struct ecfsched_cb *ecfsched_get_cb(const struct tcp_sock *tp)
|
|
||||||
+{
|
|
||||||
+ return (struct ecfsched_cb *)&tp->mpcb->mptcp_sched[0];
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* This is the ECF scheduler. This function decides on which flow to send
|
|
||||||
+ * a given MSS. If all subflows are found to be busy or the currently best
|
|
||||||
+ * subflow is estimated to be slower than waiting for minsk, NULL is returned.
|
|
||||||
+ */
|
|
||||||
+static struct sock *ecf_get_available_subflow(struct sock *meta_sk,
|
|
||||||
+ struct sk_buff *skb,
|
|
||||||
+ bool zero_wnd_test)
|
|
||||||
+{
|
|
||||||
+ struct mptcp_cb *mpcb = tcp_sk(meta_sk)->mpcb;
|
|
||||||
+ struct sock *bestsk, *minsk = NULL;
|
|
||||||
+ struct tcp_sock *besttp;
|
|
||||||
+ struct mptcp_tcp_sock *mptcp;
|
|
||||||
+ struct ecfsched_cb *ecf_cb = ecfsched_get_cb(tcp_sk(meta_sk));
|
|
||||||
+ u32 min_srtt = U32_MAX;
|
|
||||||
+ u32 sub_sndbuf = 0;
|
|
||||||
+ u32 sub_packets_out = 0;
|
|
||||||
+
|
|
||||||
+ /* Answer data_fin on same subflow!!! */
|
|
||||||
+ if (meta_sk->sk_shutdown & RCV_SHUTDOWN &&
|
|
||||||
+ skb && mptcp_is_data_fin(skb)) {
|
|
||||||
+ mptcp_for_each_sub(mpcb, mptcp) {
|
|
||||||
+ bestsk = mptcp_to_sock(mptcp);
|
|
||||||
+
|
|
||||||
+ if (tcp_sk(bestsk)->mptcp->path_index == mpcb->dfin_path_index &&
|
|
||||||
+ mptcp_is_available(bestsk, skb, zero_wnd_test))
|
|
||||||
+ return bestsk;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* First, find the overall best (fastest) subflow */
|
|
||||||
+ mptcp_for_each_sub(mpcb, mptcp) {
|
|
||||||
+ bestsk = mptcp_to_sock(mptcp);
|
|
||||||
+ besttp = tcp_sk(bestsk);
|
|
||||||
+
|
|
||||||
+ /* Set of states for which we are allowed to send data */
|
|
||||||
+ if (!mptcp_sk_can_send(bestsk))
|
|
||||||
+ continue;
|
|
||||||
+
|
|
||||||
+ /* We do not send data on this subflow unless it is
|
|
||||||
+ * fully established, i.e. the 4th ack has been received.
|
|
||||||
+ */
|
|
||||||
+ if (besttp->mptcp->pre_established)
|
|
||||||
+ continue;
|
|
||||||
+
|
|
||||||
+ sub_sndbuf += bestsk->sk_wmem_queued;
|
|
||||||
+ sub_packets_out += besttp->packets_out;
|
|
||||||
+
|
|
||||||
+ /* record minimal rtt */
|
|
||||||
+ if (besttp->srtt_us < min_srtt) {
|
|
||||||
+ min_srtt = besttp->srtt_us;
|
|
||||||
+ minsk = bestsk;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* find the current best subflow according to the default scheduler */
|
|
||||||
+ bestsk = get_available_subflow(meta_sk, skb, zero_wnd_test);
|
|
||||||
+
|
|
||||||
+ /* if we decided to use a slower flow, we have the option of not using it at all */
|
|
||||||
+ if (bestsk && minsk && bestsk != minsk) {
|
|
||||||
+ u32 mss = tcp_current_mss(bestsk); /* assuming equal MSS */
|
|
||||||
+ u32 sndbuf_meta = meta_sk->sk_wmem_queued;
|
|
||||||
+ u32 sndbuf_minus = sub_sndbuf;
|
|
||||||
+ u32 sndbuf = 0;
|
|
||||||
+
|
|
||||||
+ u32 cwnd_f = tcp_sk(minsk)->snd_cwnd;
|
|
||||||
+ u32 srtt_f = tcp_sk(minsk)->srtt_us >> 3;
|
|
||||||
+ u32 rttvar_f = tcp_sk(minsk)->rttvar_us >> 1;
|
|
||||||
+
|
|
||||||
+ u32 cwnd_s = tcp_sk(bestsk)->snd_cwnd;
|
|
||||||
+ u32 srtt_s = tcp_sk(bestsk)->srtt_us >> 3;
|
|
||||||
+ u32 rttvar_s = tcp_sk(bestsk)->rttvar_us >> 1;
|
|
||||||
+
|
|
||||||
+ u32 delta = max(rttvar_f, rttvar_s);
|
|
||||||
+
|
|
||||||
+ u32 x_f;
|
|
||||||
+ u64 lhs, rhs; /* to avoid overflow, using u64 */
|
|
||||||
+
|
|
||||||
+ if (tcp_sk(meta_sk)->packets_out > sub_packets_out)
|
|
||||||
+ sndbuf_minus += (tcp_sk(meta_sk)->packets_out - sub_packets_out) * mss;
|
|
||||||
+
|
|
||||||
+ if (sndbuf_meta > sndbuf_minus)
|
|
||||||
+ sndbuf = sndbuf_meta - sndbuf_minus;
|
|
||||||
+
|
|
||||||
+ /* we have something to send.
|
|
||||||
+ * at least one time tx over fastest subflow is required
|
|
||||||
+ */
|
|
||||||
+ x_f = sndbuf > cwnd_f * mss ? sndbuf : cwnd_f * mss;
|
|
||||||
+ lhs = srtt_f * (x_f + cwnd_f * mss);
|
|
||||||
+ rhs = cwnd_f * mss * (srtt_s + delta);
|
|
||||||
+
|
|
||||||
+ if (mptcp_ecf_r_beta * lhs < mptcp_ecf_r_beta * rhs + ecf_cb->switching_margin * rhs) {
|
|
||||||
+ u32 x_s = sndbuf > cwnd_s * mss ? sndbuf : cwnd_s * mss;
|
|
||||||
+ u64 lhs_s = srtt_s * x_s;
|
|
||||||
+ u64 rhs_s = cwnd_s * mss * (2 * srtt_f + delta);
|
|
||||||
+
|
|
||||||
+ if (lhs_s >= rhs_s) {
|
|
||||||
+ /* too slower than fastest */
|
|
||||||
+ ecf_cb->switching_margin = 1;
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ /* use slower one */
|
|
||||||
+ ecf_cb->switching_margin = 0;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return bestsk;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* copy from mptcp_sched.c: mptcp_rcv_buf_optimization */
|
|
||||||
+static struct sk_buff *mptcp_ecf_rcv_buf_optimization(struct sock *sk, int penal)
|
|
||||||
+{
|
|
||||||
+ struct sock *meta_sk;
|
|
||||||
+ const struct tcp_sock *tp = tcp_sk(sk);
|
|
||||||
+ struct mptcp_tcp_sock *mptcp;
|
|
||||||
+ struct sk_buff *skb_head;
|
|
||||||
+ struct ecfsched_priv *ecf_p = ecfsched_get_priv(tp);
|
|
||||||
+
|
|
||||||
+ meta_sk = mptcp_meta_sk(sk);
|
|
||||||
+ skb_head = tcp_rtx_queue_head(meta_sk);
|
|
||||||
+
|
|
||||||
+ if (!skb_head)
|
|
||||||
+ return NULL;
|
|
||||||
+
|
|
||||||
+ /* If penalization is optional (coming from mptcp_next_segment() and
|
|
||||||
+ * We are not send-buffer-limited we do not penalize. The retransmission
|
|
||||||
+ * is just an optimization to fix the idle-time due to the delay before
|
|
||||||
+ * we wake up the application.
|
|
||||||
+ */
|
|
||||||
+ if (!penal && sk_stream_memory_free(meta_sk))
|
|
||||||
+ goto retrans;
|
|
||||||
+
|
|
||||||
+ /* Only penalize again after an RTT has elapsed */
|
|
||||||
+ if (tcp_jiffies32 - ecf_p->last_rbuf_opti < usecs_to_jiffies(tp->srtt_us >> 3))
|
|
||||||
+ goto retrans;
|
|
||||||
+
|
|
||||||
+ /* Half the cwnd of the slow flows */
|
|
||||||
+ mptcp_for_each_sub(tp->mpcb, mptcp) {
|
|
||||||
+ struct tcp_sock *tp_it = mptcp->tp;
|
|
||||||
+
|
|
||||||
+ if (tp_it != tp &&
|
|
||||||
+ TCP_SKB_CB(skb_head)->path_mask & mptcp_pi_to_flag(tp_it->mptcp->path_index)) {
|
|
||||||
+ if (tp->srtt_us < tp_it->srtt_us && inet_csk((struct sock *)tp_it)->icsk_ca_state == TCP_CA_Open) {
|
|
||||||
+ u32 prior_cwnd = tp_it->snd_cwnd;
|
|
||||||
+
|
|
||||||
+ tp_it->snd_cwnd = max(tp_it->snd_cwnd >> 1U, 1U);
|
|
||||||
+
|
|
||||||
+ /* If in slow start, do not reduce the ssthresh */
|
|
||||||
+ if (prior_cwnd >= tp_it->snd_ssthresh)
|
|
||||||
+ tp_it->snd_ssthresh = max(tp_it->snd_ssthresh >> 1U, 2U);
|
|
||||||
+
|
|
||||||
+ ecf_p->last_rbuf_opti = tcp_jiffies32;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+retrans:
|
|
||||||
+
|
|
||||||
+ /* Segment not yet injected into this path? Take it!!! */
|
|
||||||
+ if (!(TCP_SKB_CB(skb_head)->path_mask & mptcp_pi_to_flag(tp->mptcp->path_index))) {
|
|
||||||
+ bool do_retrans = false;
|
|
||||||
+ mptcp_for_each_sub(tp->mpcb, mptcp) {
|
|
||||||
+ struct tcp_sock *tp_it = mptcp->tp;
|
|
||||||
+
|
|
||||||
+ if (tp_it != tp &&
|
|
||||||
+ TCP_SKB_CB(skb_head)->path_mask & mptcp_pi_to_flag(tp_it->mptcp->path_index)) {
|
|
||||||
+ if (tp_it->snd_cwnd <= 4) {
|
|
||||||
+ do_retrans = true;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (4 * tp->srtt_us >= tp_it->srtt_us) {
|
|
||||||
+ do_retrans = false;
|
|
||||||
+ break;
|
|
||||||
+ } else {
|
|
||||||
+ do_retrans = true;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (do_retrans && mptcp_is_available(sk, skb_head, false)) {
|
|
||||||
+ trace_mptcp_retransmit(sk, skb_head);
|
|
||||||
+ return skb_head;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ return NULL;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* copy from mptcp_sched.c: __mptcp_next_segment */
|
|
||||||
+/* Returns the next segment to be sent from the mptcp meta-queue.
|
|
||||||
+ * (chooses the reinject queue if any segment is waiting in it, otherwise,
|
|
||||||
+ * chooses the normal write queue).
|
|
||||||
+ * Sets *@reinject to 1 if the returned segment comes from the
|
|
||||||
+ * reinject queue. Sets it to 0 if it is the regular send-head of the meta-sk,
|
|
||||||
+ * and sets it to -1 if it is a meta-level retransmission to optimize the
|
|
||||||
+ * receive-buffer.
|
|
||||||
+ */
|
|
||||||
+static struct sk_buff *__mptcp_ecf_next_segment(struct sock *meta_sk, int *reinject)
|
|
||||||
+{
|
|
||||||
+ const struct mptcp_cb *mpcb = tcp_sk(meta_sk)->mpcb;
|
|
||||||
+ struct sk_buff *skb = NULL;
|
|
||||||
+
|
|
||||||
+ *reinject = 0;
|
|
||||||
+
|
|
||||||
+ /* If we are in fallback-mode, just take from the meta-send-queue */
|
|
||||||
+ if (mpcb->infinite_mapping_snd || mpcb->send_infinite_mapping)
|
|
||||||
+ return tcp_send_head(meta_sk);
|
|
||||||
+
|
|
||||||
+ skb = skb_peek(&mpcb->reinject_queue);
|
|
||||||
+
|
|
||||||
+ if (skb) {
|
|
||||||
+ *reinject = 1;
|
|
||||||
+ } else {
|
|
||||||
+ skb = tcp_send_head(meta_sk);
|
|
||||||
+
|
|
||||||
+ if (!skb && meta_sk->sk_socket &&
|
|
||||||
+ test_bit(SOCK_NOSPACE, &meta_sk->sk_socket->flags) &&
|
|
||||||
+ sk_stream_wspace(meta_sk) < sk_stream_min_wspace(meta_sk)) {
|
|
||||||
+ struct sock *subsk = ecf_get_available_subflow(meta_sk, NULL,
|
|
||||||
+ false);
|
|
||||||
+ if (!subsk)
|
|
||||||
+ return NULL;
|
|
||||||
+
|
|
||||||
+ skb = mptcp_ecf_rcv_buf_optimization(subsk, 0);
|
|
||||||
+ if (skb)
|
|
||||||
+ *reinject = -1;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ return skb;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* copy from mptcp_sched.c: mptcp_next_segment */
|
|
||||||
+static struct sk_buff *mptcp_ecf_next_segment(struct sock *meta_sk,
|
|
||||||
+ int *reinject,
|
|
||||||
+ struct sock **subsk,
|
|
||||||
+ unsigned int *limit)
|
|
||||||
+{
|
|
||||||
+ struct sk_buff *skb = __mptcp_ecf_next_segment(meta_sk, reinject);
|
|
||||||
+ unsigned int mss_now;
|
|
||||||
+ struct tcp_sock *subtp;
|
|
||||||
+ u16 gso_max_segs;
|
|
||||||
+ u32 max_len, max_segs, window, needed;
|
|
||||||
+
|
|
||||||
+ /* As we set it, we have to reset it as well. */
|
|
||||||
+ *limit = 0;
|
|
||||||
+
|
|
||||||
+ if (!skb)
|
|
||||||
+ return NULL;
|
|
||||||
+
|
|
||||||
+ *subsk = ecf_get_available_subflow(meta_sk, skb, false);
|
|
||||||
+ if (!*subsk)
|
|
||||||
+ return NULL;
|
|
||||||
+
|
|
||||||
+ subtp = tcp_sk(*subsk);
|
|
||||||
+ mss_now = tcp_current_mss(*subsk);
|
|
||||||
+
|
|
||||||
+ if (!*reinject && unlikely(!tcp_snd_wnd_test(tcp_sk(meta_sk), skb, mss_now))) {
|
|
||||||
+ skb = mptcp_ecf_rcv_buf_optimization(*subsk, 1);
|
|
||||||
+ if (skb)
|
|
||||||
+ *reinject = -1;
|
|
||||||
+ else
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* No splitting required, as we will only send one single segment */
|
|
||||||
+ if (skb->len <= mss_now)
|
|
||||||
+ return skb;
|
|
||||||
+
|
|
||||||
+ /* The following is similar to tcp_mss_split_point, but
|
|
||||||
+ * we do not care about nagle, because we will anyways
|
|
||||||
+ * use TCP_NAGLE_PUSH, which overrides this.
|
|
||||||
+ *
|
|
||||||
+ * So, we first limit according to the cwnd/gso-size and then according
|
|
||||||
+ * to the subflow's window.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+ gso_max_segs = (*subsk)->sk_gso_max_segs;
|
|
||||||
+ if (!gso_max_segs) /* No gso supported on the subflow's NIC */
|
|
||||||
+ gso_max_segs = 1;
|
|
||||||
+ max_segs = min_t(unsigned int, tcp_cwnd_test(subtp, skb), gso_max_segs);
|
|
||||||
+ if (!max_segs)
|
|
||||||
+ return NULL;
|
|
||||||
+
|
|
||||||
+ max_len = mss_now * max_segs;
|
|
||||||
+ window = tcp_wnd_end(subtp) - subtp->write_seq;
|
|
||||||
+
|
|
||||||
+ needed = min(skb->len, window);
|
|
||||||
+ if (max_len <= skb->len)
|
|
||||||
+ /* Take max_win, which is actually the cwnd/gso-size */
|
|
||||||
+ *limit = max_len;
|
|
||||||
+ else
|
|
||||||
+ /* Or, take the window */
|
|
||||||
+ *limit = needed;
|
|
||||||
+
|
|
||||||
+ return skb;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void ecfsched_init(struct sock *sk)
|
|
||||||
+{
|
|
||||||
+ struct ecfsched_priv *ecf_p = ecfsched_get_priv(tcp_sk(sk));
|
|
||||||
+ struct ecfsched_cb *ecf_cb = ecfsched_get_cb(tcp_sk(mptcp_meta_sk(sk)));
|
|
||||||
+
|
|
||||||
+ ecf_p->last_rbuf_opti = tcp_jiffies32;
|
|
||||||
+ ecf_cb->switching_margin = 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+struct mptcp_sched_ops mptcp_sched_ecf = {
|
|
||||||
+ .get_subflow = ecf_get_available_subflow,
|
|
||||||
+ .next_segment = mptcp_ecf_next_segment,
|
|
||||||
+ .init = ecfsched_init,
|
|
||||||
+ .name = "ecf",
|
|
||||||
+ .owner = THIS_MODULE,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static int __init ecf_register(void)
|
|
||||||
+{
|
|
||||||
+ BUILD_BUG_ON(sizeof(struct ecfsched_priv) > MPTCP_SCHED_SIZE);
|
|
||||||
+ BUILD_BUG_ON(sizeof(struct ecfsched_cb) > MPTCP_SCHED_DATA_SIZE);
|
|
||||||
+
|
|
||||||
+ if (mptcp_register_scheduler(&mptcp_sched_ecf))
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void ecf_unregister(void)
|
|
||||||
+{
|
|
||||||
+ mptcp_unregister_scheduler(&mptcp_sched_ecf);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+module_init(ecf_register);
|
|
||||||
+module_exit(ecf_unregister);
|
|
||||||
+
|
|
||||||
+MODULE_AUTHOR("Yeon-sup Lim, Daniel Weber");
|
|
||||||
+MODULE_LICENSE("GPL");
|
|
||||||
+MODULE_DESCRIPTION("ECF (Earliest Completion First) scheduler for MPTCP, based on default minimum RTT scheduler");
|
|
||||||
+MODULE_VERSION("0.95");
|
|
||||||
|
|
||||||
From 5a9641c84cbb5a49749d7533c20035631985dbe7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Daniel Weber <weberdaniel@gmx.net>
|
|
||||||
Date: Mon, 9 Mar 2020 11:00:23 +0100
|
|
||||||
Subject: [PATCH 2/3] mptcp: Reduce code-duplication for other schedulers
|
|
||||||
|
|
||||||
'mptcp_next_segment' now honors the function pointer to the actual part
|
|
||||||
that makes the scheduling decision in 'sched_ops->get_subflow'. This
|
|
||||||
allows for a better reuse by other schedulers.
|
|
||||||
|
|
||||||
The BLEST scheduler needs to adapt the direction of lambda value change
|
|
||||||
depending on the occurrence of a retransmission. In order to remove the
|
|
||||||
copied 'mptcp_rcv_buf_optimization' as well the scheduler now checks the
|
|
||||||
tcp 'retrans_stamp' of the meta socket.
|
|
||||||
|
|
||||||
Signed-off-by: Daniel Weber <weberdaniel@gmx.net>
|
|
||||||
---
|
|
||||||
include/net/mptcp.h | 4 +
|
|
||||||
net/mptcp/mptcp_blest.c | 200 +---------------------------------------
|
|
||||||
net/mptcp/mptcp_sched.c | 9 +-
|
|
||||||
3 files changed, 11 insertions(+), 202 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/include/net/mptcp.h b/include/net/mptcp.h
|
|
||||||
index 02312c9ea3a3..82f66ce206cc 100644
|
|
||||||
--- a/include/net/mptcp.h
|
|
||||||
+++ b/include/net/mptcp.h
|
|
||||||
@@ -902,6 +902,10 @@ bool subflow_is_active(const struct tcp_sock *tp);
|
|
||||||
bool subflow_is_backup(const struct tcp_sock *tp);
|
|
||||||
struct sock *get_available_subflow(struct sock *meta_sk, struct sk_buff *skb,
|
|
||||||
bool zero_wnd_test);
|
|
||||||
+struct sk_buff *mptcp_next_segment(struct sock *meta_sk,
|
|
||||||
+ int *reinject,
|
|
||||||
+ struct sock **subsk,
|
|
||||||
+ unsigned int *limit);
|
|
||||||
extern struct mptcp_sched_ops mptcp_sched_default;
|
|
||||||
|
|
||||||
/* Initializes function-pointers and MPTCP-flags */
|
|
||||||
diff --git a/net/mptcp/mptcp_blest.c b/net/mptcp/mptcp_blest.c
|
|
||||||
index 40905a0d1fe5..22e25dd0d44e 100644
|
|
||||||
--- a/net/mptcp/mptcp_blest.c
|
|
||||||
+++ b/net/mptcp/mptcp_blest.c
|
|
||||||
@@ -21,7 +21,6 @@
|
|
||||||
|
|
||||||
#include <linux/module.h>
|
|
||||||
#include <net/mptcp.h>
|
|
||||||
-#include <trace/events/tcp.h>
|
|
||||||
|
|
||||||
static unsigned char lambda __read_mostly = 12;
|
|
||||||
module_param(lambda, byte, 0644);
|
|
||||||
@@ -50,7 +49,6 @@ struct blestsched_priv {
|
|
||||||
};
|
|
||||||
|
|
||||||
struct blestsched_cb {
|
|
||||||
- bool retrans_flag;
|
|
||||||
s16 lambda_1000; /* values range from min_lambda * 100 to max_lambda * 100 */
|
|
||||||
u32 last_lambda_update;
|
|
||||||
};
|
|
||||||
@@ -77,14 +75,13 @@ static void blestsched_update_lambda(struct sock *meta_sk, struct sock *sk)
|
|
||||||
* during the slow flows last RTT => increase lambda
|
|
||||||
* otherwise decrease
|
|
||||||
*/
|
|
||||||
- if (blest_cb->retrans_flag) {
|
|
||||||
+ if (tcp_sk(meta_sk)->retrans_stamp) {
|
|
||||||
/* need to slow down on the slow flow */
|
|
||||||
blest_cb->lambda_1000 += dyn_lambda_bad;
|
|
||||||
} else {
|
|
||||||
/* use the slow flow more */
|
|
||||||
blest_cb->lambda_1000 -= dyn_lambda_good;
|
|
||||||
}
|
|
||||||
- blest_cb->retrans_flag = false;
|
|
||||||
|
|
||||||
/* cap lambda_1000 to its value range */
|
|
||||||
blest_cb->lambda_1000 = min_t(s16, blest_cb->lambda_1000, max_lambda * 100);
|
|
||||||
@@ -240,199 +237,6 @@ struct sock *blest_get_available_subflow(struct sock *meta_sk, struct sk_buff *s
|
|
||||||
return bestsk;
|
|
||||||
}
|
|
||||||
|
|
||||||
-/* copy from mptcp_sched.c: mptcp_rcv_buf_optimization */
|
|
||||||
-static struct sk_buff *mptcp_blest_rcv_buf_optimization(struct sock *sk, int penal)
|
|
||||||
-{
|
|
||||||
- struct sock *meta_sk;
|
|
||||||
- const struct tcp_sock *tp = tcp_sk(sk);
|
|
||||||
- struct mptcp_tcp_sock *mptcp;
|
|
||||||
- struct sk_buff *skb_head;
|
|
||||||
- struct blestsched_priv *blest_p = blestsched_get_priv(tp);
|
|
||||||
- struct blestsched_cb *blest_cb;
|
|
||||||
-
|
|
||||||
- meta_sk = mptcp_meta_sk(sk);
|
|
||||||
- skb_head = tcp_rtx_queue_head(meta_sk);
|
|
||||||
-
|
|
||||||
- if (!skb_head)
|
|
||||||
- return NULL;
|
|
||||||
-
|
|
||||||
- /* If penalization is optional (coming from mptcp_next_segment() and
|
|
||||||
- * We are not send-buffer-limited we do not penalize. The retransmission
|
|
||||||
- * is just an optimization to fix the idle-time due to the delay before
|
|
||||||
- * we wake up the application.
|
|
||||||
- */
|
|
||||||
- if (!penal && sk_stream_memory_free(meta_sk))
|
|
||||||
- goto retrans;
|
|
||||||
-
|
|
||||||
- /* Record the occurrence of a retransmission to update the lambda value */
|
|
||||||
- blest_cb = blestsched_get_cb(tcp_sk(meta_sk));
|
|
||||||
- blest_cb->retrans_flag = true;
|
|
||||||
-
|
|
||||||
- /* Only penalize again after an RTT has elapsed */
|
|
||||||
- if (tcp_jiffies32 - blest_p->last_rbuf_opti < usecs_to_jiffies(tp->srtt_us >> 3))
|
|
||||||
- goto retrans;
|
|
||||||
-
|
|
||||||
- /* Half the cwnd of the slow flows */
|
|
||||||
- mptcp_for_each_sub(tp->mpcb, mptcp) {
|
|
||||||
- struct tcp_sock *tp_it = mptcp->tp;
|
|
||||||
-
|
|
||||||
- if (tp_it != tp &&
|
|
||||||
- TCP_SKB_CB(skb_head)->path_mask & mptcp_pi_to_flag(tp_it->mptcp->path_index)) {
|
|
||||||
- if (tp->srtt_us < tp_it->srtt_us && inet_csk((struct sock *)tp_it)->icsk_ca_state == TCP_CA_Open) {
|
|
||||||
- u32 prior_cwnd = tp_it->snd_cwnd;
|
|
||||||
-
|
|
||||||
- tp_it->snd_cwnd = max(tp_it->snd_cwnd >> 1U, 1U);
|
|
||||||
-
|
|
||||||
- /* If in slow start, do not reduce the ssthresh */
|
|
||||||
- if (prior_cwnd >= tp_it->snd_ssthresh)
|
|
||||||
- tp_it->snd_ssthresh = max(tp_it->snd_ssthresh >> 1U, 2U);
|
|
||||||
-
|
|
||||||
- blest_p->last_rbuf_opti = tcp_jiffies32;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
-retrans:
|
|
||||||
-
|
|
||||||
- /* Segment not yet injected into this path? Take it!!! */
|
|
||||||
- if (!(TCP_SKB_CB(skb_head)->path_mask & mptcp_pi_to_flag(tp->mptcp->path_index))) {
|
|
||||||
- bool do_retrans = false;
|
|
||||||
- mptcp_for_each_sub(tp->mpcb, mptcp) {
|
|
||||||
- struct tcp_sock *tp_it = mptcp->tp;
|
|
||||||
-
|
|
||||||
- if (tp_it != tp &&
|
|
||||||
- TCP_SKB_CB(skb_head)->path_mask & mptcp_pi_to_flag(tp_it->mptcp->path_index)) {
|
|
||||||
- if (tp_it->snd_cwnd <= 4) {
|
|
||||||
- do_retrans = true;
|
|
||||||
- break;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- if (4 * tp->srtt_us >= tp_it->srtt_us) {
|
|
||||||
- do_retrans = false;
|
|
||||||
- break;
|
|
||||||
- } else {
|
|
||||||
- do_retrans = true;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- if (do_retrans && mptcp_is_available(sk, skb_head, false)) {
|
|
||||||
- trace_mptcp_retransmit(sk, skb_head);
|
|
||||||
- return skb_head;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- return NULL;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-/* copy from mptcp_sched.c: __mptcp_next_segment */
|
|
||||||
-/* Returns the next segment to be sent from the mptcp meta-queue.
|
|
||||||
- * (chooses the reinject queue if any segment is waiting in it, otherwise,
|
|
||||||
- * chooses the normal write queue).
|
|
||||||
- * Sets *@reinject to 1 if the returned segment comes from the
|
|
||||||
- * reinject queue. Sets it to 0 if it is the regular send-head of the meta-sk,
|
|
||||||
- * and sets it to -1 if it is a meta-level retransmission to optimize the
|
|
||||||
- * receive-buffer.
|
|
||||||
- */
|
|
||||||
-static struct sk_buff *__mptcp_blest_next_segment(struct sock *meta_sk, int *reinject)
|
|
||||||
-{
|
|
||||||
- const struct mptcp_cb *mpcb = tcp_sk(meta_sk)->mpcb;
|
|
||||||
- struct sk_buff *skb = NULL;
|
|
||||||
-
|
|
||||||
- *reinject = 0;
|
|
||||||
-
|
|
||||||
- /* If we are in fallback-mode, just take from the meta-send-queue */
|
|
||||||
- if (mpcb->infinite_mapping_snd || mpcb->send_infinite_mapping)
|
|
||||||
- return tcp_send_head(meta_sk);
|
|
||||||
-
|
|
||||||
- skb = skb_peek(&mpcb->reinject_queue);
|
|
||||||
-
|
|
||||||
- if (skb) {
|
|
||||||
- *reinject = 1;
|
|
||||||
- } else {
|
|
||||||
- skb = tcp_send_head(meta_sk);
|
|
||||||
-
|
|
||||||
- if (!skb && meta_sk->sk_socket &&
|
|
||||||
- test_bit(SOCK_NOSPACE, &meta_sk->sk_socket->flags) &&
|
|
||||||
- sk_stream_wspace(meta_sk) < sk_stream_min_wspace(meta_sk)) {
|
|
||||||
- struct sock *subsk = blest_get_available_subflow(meta_sk, NULL,
|
|
||||||
- false);
|
|
||||||
- if (!subsk)
|
|
||||||
- return NULL;
|
|
||||||
-
|
|
||||||
- skb = mptcp_blest_rcv_buf_optimization(subsk, 0);
|
|
||||||
- if (skb)
|
|
||||||
- *reinject = -1;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- return skb;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-/* copy from mptcp_sched.c: mptcp_next_segment */
|
|
||||||
-static struct sk_buff *mptcp_blest_next_segment(struct sock *meta_sk,
|
|
||||||
- int *reinject,
|
|
||||||
- struct sock **subsk,
|
|
||||||
- unsigned int *limit)
|
|
||||||
-{
|
|
||||||
- struct sk_buff *skb = __mptcp_blest_next_segment(meta_sk, reinject);
|
|
||||||
- unsigned int mss_now;
|
|
||||||
- struct tcp_sock *subtp;
|
|
||||||
- u16 gso_max_segs;
|
|
||||||
- u32 max_len, max_segs, window, needed;
|
|
||||||
-
|
|
||||||
- /* As we set it, we have to reset it as well. */
|
|
||||||
- *limit = 0;
|
|
||||||
-
|
|
||||||
- if (!skb)
|
|
||||||
- return NULL;
|
|
||||||
-
|
|
||||||
- *subsk = blest_get_available_subflow(meta_sk, skb, false);
|
|
||||||
- if (!*subsk)
|
|
||||||
- return NULL;
|
|
||||||
-
|
|
||||||
- subtp = tcp_sk(*subsk);
|
|
||||||
- mss_now = tcp_current_mss(*subsk);
|
|
||||||
-
|
|
||||||
- if (!*reinject && unlikely(!tcp_snd_wnd_test(tcp_sk(meta_sk), skb, mss_now))) {
|
|
||||||
- skb = mptcp_blest_rcv_buf_optimization(*subsk, 1);
|
|
||||||
- if (skb)
|
|
||||||
- *reinject = -1;
|
|
||||||
- else
|
|
||||||
- return NULL;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- /* No splitting required, as we will only send one single segment */
|
|
||||||
- if (skb->len <= mss_now)
|
|
||||||
- return skb;
|
|
||||||
-
|
|
||||||
- /* The following is similar to tcp_mss_split_point, but
|
|
||||||
- * we do not care about nagle, because we will anyways
|
|
||||||
- * use TCP_NAGLE_PUSH, which overrides this.
|
|
||||||
- *
|
|
||||||
- * So, we first limit according to the cwnd/gso-size and then according
|
|
||||||
- * to the subflow's window.
|
|
||||||
- */
|
|
||||||
-
|
|
||||||
- gso_max_segs = (*subsk)->sk_gso_max_segs;
|
|
||||||
- if (!gso_max_segs) /* No gso supported on the subflow's NIC */
|
|
||||||
- gso_max_segs = 1;
|
|
||||||
- max_segs = min_t(unsigned int, tcp_cwnd_test(subtp, skb), gso_max_segs);
|
|
||||||
- if (!max_segs)
|
|
||||||
- return NULL;
|
|
||||||
-
|
|
||||||
- max_len = mss_now * max_segs;
|
|
||||||
- window = tcp_wnd_end(subtp) - subtp->write_seq;
|
|
||||||
-
|
|
||||||
- needed = min(skb->len, window);
|
|
||||||
- if (max_len <= skb->len)
|
|
||||||
- /* Take max_win, which is actually the cwnd/gso-size */
|
|
||||||
- *limit = max_len;
|
|
||||||
- else
|
|
||||||
- /* Or, take the window */
|
|
||||||
- *limit = needed;
|
|
||||||
-
|
|
||||||
- return skb;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static void blestsched_init(struct sock *sk)
|
|
||||||
{
|
|
||||||
struct blestsched_priv *blest_p = blestsched_get_priv(tcp_sk(sk));
|
|
||||||
@@ -450,7 +254,7 @@ static void blestsched_init(struct sock *sk)
|
|
||||||
|
|
||||||
static struct mptcp_sched_ops mptcp_sched_blest = {
|
|
||||||
.get_subflow = blest_get_available_subflow,
|
|
||||||
- .next_segment = mptcp_blest_next_segment,
|
|
||||||
+ .next_segment = mptcp_next_segment,
|
|
||||||
.init = blestsched_init,
|
|
||||||
.name = "blest",
|
|
||||||
.owner = THIS_MODULE,
|
|
||||||
diff --git a/net/mptcp/mptcp_sched.c b/net/mptcp/mptcp_sched.c
|
|
||||||
index 18c3559b0d48..5bf2946a5caf 100644
|
|
||||||
--- a/net/mptcp/mptcp_sched.c
|
|
||||||
+++ b/net/mptcp/mptcp_sched.c
|
|
||||||
@@ -372,8 +372,8 @@ static struct sk_buff *__mptcp_next_segment(struct sock *meta_sk, int *reinject)
|
|
||||||
if (!skb && meta_sk->sk_socket &&
|
|
||||||
test_bit(SOCK_NOSPACE, &meta_sk->sk_socket->flags) &&
|
|
||||||
sk_stream_wspace(meta_sk) < sk_stream_min_wspace(meta_sk)) {
|
|
||||||
- struct sock *subsk = get_available_subflow(meta_sk, NULL,
|
|
||||||
- false);
|
|
||||||
+ struct sock *subsk = mpcb->sched_ops->get_subflow(meta_sk, NULL,
|
|
||||||
+ false);
|
|
||||||
if (!subsk)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
@@ -385,7 +385,7 @@ static struct sk_buff *__mptcp_next_segment(struct sock *meta_sk, int *reinject)
|
|
||||||
return skb;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static struct sk_buff *mptcp_next_segment(struct sock *meta_sk,
|
|
||||||
+struct sk_buff *mptcp_next_segment(struct sock *meta_sk,
|
|
||||||
int *reinject,
|
|
||||||
struct sock **subsk,
|
|
||||||
unsigned int *limit)
|
|
||||||
@@ -402,7 +402,7 @@ static struct sk_buff *mptcp_next_segment(struct sock *meta_sk,
|
|
||||||
if (!skb)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
- *subsk = get_available_subflow(meta_sk, skb, false);
|
|
||||||
+ *subsk = tcp_sk(meta_sk)->mpcb->sched_ops->get_subflow(meta_sk, skb, false);
|
|
||||||
if (!*subsk)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
@@ -449,6 +449,7 @@ static struct sk_buff *mptcp_next_segment(struct sock *meta_sk,
|
|
||||||
|
|
||||||
return skb;
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL_GPL(mptcp_next_segment);
|
|
||||||
|
|
||||||
static void defsched_init(struct sock *sk)
|
|
||||||
{
|
|
||||||
|
|
||||||
From 5e8425e43b38e7e0fe566ffd50e197c07807ebdf Mon Sep 17 00:00:00 2001
|
|
||||||
From: Daniel Weber <weberdaniel@gmx.net>
|
|
||||||
Date: Mon, 9 Mar 2020 11:09:27 +0100
|
|
||||||
Subject: [PATCH 3/3] mptcp: Remove code-duplication from ECF scheduler
|
|
||||||
|
|
||||||
The ECF scheduler relies on large parts of the default scheduler. This
|
|
||||||
commit removes the copied blocks and reuses 'mptcp_next_segment' and
|
|
||||||
'mptcp_rcv_buf_optimization' directly from it via function pointers.
|
|
||||||
|
|
||||||
Signed-off-by: Daniel Weber <weberdaniel@gmx.net>
|
|
||||||
---
|
|
||||||
net/mptcp/mptcp_ecf.c | 191 +-----------------------------------------
|
|
||||||
1 file changed, 1 insertion(+), 190 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/net/mptcp/mptcp_ecf.c b/net/mptcp/mptcp_ecf.c
|
|
||||||
index e0bd430a8943..6b976b2b0c72 100644
|
|
||||||
--- a/net/mptcp/mptcp_ecf.c
|
|
||||||
+++ b/net/mptcp/mptcp_ecf.c
|
|
||||||
@@ -21,7 +21,6 @@
|
|
||||||
|
|
||||||
#include <linux/module.h>
|
|
||||||
#include <net/mptcp.h>
|
|
||||||
-#include <trace/events/tcp.h>
|
|
||||||
|
|
||||||
static unsigned int mptcp_ecf_r_beta __read_mostly = 4; /* beta = 1/r_beta = 0.25 */
|
|
||||||
module_param(mptcp_ecf_r_beta, int, 0644);
|
|
||||||
@@ -154,194 +153,6 @@ static struct sock *ecf_get_available_subflow(struct sock *meta_sk,
|
|
||||||
return bestsk;
|
|
||||||
}
|
|
||||||
|
|
||||||
-/* copy from mptcp_sched.c: mptcp_rcv_buf_optimization */
|
|
||||||
-static struct sk_buff *mptcp_ecf_rcv_buf_optimization(struct sock *sk, int penal)
|
|
||||||
-{
|
|
||||||
- struct sock *meta_sk;
|
|
||||||
- const struct tcp_sock *tp = tcp_sk(sk);
|
|
||||||
- struct mptcp_tcp_sock *mptcp;
|
|
||||||
- struct sk_buff *skb_head;
|
|
||||||
- struct ecfsched_priv *ecf_p = ecfsched_get_priv(tp);
|
|
||||||
-
|
|
||||||
- meta_sk = mptcp_meta_sk(sk);
|
|
||||||
- skb_head = tcp_rtx_queue_head(meta_sk);
|
|
||||||
-
|
|
||||||
- if (!skb_head)
|
|
||||||
- return NULL;
|
|
||||||
-
|
|
||||||
- /* If penalization is optional (coming from mptcp_next_segment() and
|
|
||||||
- * We are not send-buffer-limited we do not penalize. The retransmission
|
|
||||||
- * is just an optimization to fix the idle-time due to the delay before
|
|
||||||
- * we wake up the application.
|
|
||||||
- */
|
|
||||||
- if (!penal && sk_stream_memory_free(meta_sk))
|
|
||||||
- goto retrans;
|
|
||||||
-
|
|
||||||
- /* Only penalize again after an RTT has elapsed */
|
|
||||||
- if (tcp_jiffies32 - ecf_p->last_rbuf_opti < usecs_to_jiffies(tp->srtt_us >> 3))
|
|
||||||
- goto retrans;
|
|
||||||
-
|
|
||||||
- /* Half the cwnd of the slow flows */
|
|
||||||
- mptcp_for_each_sub(tp->mpcb, mptcp) {
|
|
||||||
- struct tcp_sock *tp_it = mptcp->tp;
|
|
||||||
-
|
|
||||||
- if (tp_it != tp &&
|
|
||||||
- TCP_SKB_CB(skb_head)->path_mask & mptcp_pi_to_flag(tp_it->mptcp->path_index)) {
|
|
||||||
- if (tp->srtt_us < tp_it->srtt_us && inet_csk((struct sock *)tp_it)->icsk_ca_state == TCP_CA_Open) {
|
|
||||||
- u32 prior_cwnd = tp_it->snd_cwnd;
|
|
||||||
-
|
|
||||||
- tp_it->snd_cwnd = max(tp_it->snd_cwnd >> 1U, 1U);
|
|
||||||
-
|
|
||||||
- /* If in slow start, do not reduce the ssthresh */
|
|
||||||
- if (prior_cwnd >= tp_it->snd_ssthresh)
|
|
||||||
- tp_it->snd_ssthresh = max(tp_it->snd_ssthresh >> 1U, 2U);
|
|
||||||
-
|
|
||||||
- ecf_p->last_rbuf_opti = tcp_jiffies32;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
-retrans:
|
|
||||||
-
|
|
||||||
- /* Segment not yet injected into this path? Take it!!! */
|
|
||||||
- if (!(TCP_SKB_CB(skb_head)->path_mask & mptcp_pi_to_flag(tp->mptcp->path_index))) {
|
|
||||||
- bool do_retrans = false;
|
|
||||||
- mptcp_for_each_sub(tp->mpcb, mptcp) {
|
|
||||||
- struct tcp_sock *tp_it = mptcp->tp;
|
|
||||||
-
|
|
||||||
- if (tp_it != tp &&
|
|
||||||
- TCP_SKB_CB(skb_head)->path_mask & mptcp_pi_to_flag(tp_it->mptcp->path_index)) {
|
|
||||||
- if (tp_it->snd_cwnd <= 4) {
|
|
||||||
- do_retrans = true;
|
|
||||||
- break;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- if (4 * tp->srtt_us >= tp_it->srtt_us) {
|
|
||||||
- do_retrans = false;
|
|
||||||
- break;
|
|
||||||
- } else {
|
|
||||||
- do_retrans = true;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- if (do_retrans && mptcp_is_available(sk, skb_head, false)) {
|
|
||||||
- trace_mptcp_retransmit(sk, skb_head);
|
|
||||||
- return skb_head;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- return NULL;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-/* copy from mptcp_sched.c: __mptcp_next_segment */
|
|
||||||
-/* Returns the next segment to be sent from the mptcp meta-queue.
|
|
||||||
- * (chooses the reinject queue if any segment is waiting in it, otherwise,
|
|
||||||
- * chooses the normal write queue).
|
|
||||||
- * Sets *@reinject to 1 if the returned segment comes from the
|
|
||||||
- * reinject queue. Sets it to 0 if it is the regular send-head of the meta-sk,
|
|
||||||
- * and sets it to -1 if it is a meta-level retransmission to optimize the
|
|
||||||
- * receive-buffer.
|
|
||||||
- */
|
|
||||||
-static struct sk_buff *__mptcp_ecf_next_segment(struct sock *meta_sk, int *reinject)
|
|
||||||
-{
|
|
||||||
- const struct mptcp_cb *mpcb = tcp_sk(meta_sk)->mpcb;
|
|
||||||
- struct sk_buff *skb = NULL;
|
|
||||||
-
|
|
||||||
- *reinject = 0;
|
|
||||||
-
|
|
||||||
- /* If we are in fallback-mode, just take from the meta-send-queue */
|
|
||||||
- if (mpcb->infinite_mapping_snd || mpcb->send_infinite_mapping)
|
|
||||||
- return tcp_send_head(meta_sk);
|
|
||||||
-
|
|
||||||
- skb = skb_peek(&mpcb->reinject_queue);
|
|
||||||
-
|
|
||||||
- if (skb) {
|
|
||||||
- *reinject = 1;
|
|
||||||
- } else {
|
|
||||||
- skb = tcp_send_head(meta_sk);
|
|
||||||
-
|
|
||||||
- if (!skb && meta_sk->sk_socket &&
|
|
||||||
- test_bit(SOCK_NOSPACE, &meta_sk->sk_socket->flags) &&
|
|
||||||
- sk_stream_wspace(meta_sk) < sk_stream_min_wspace(meta_sk)) {
|
|
||||||
- struct sock *subsk = ecf_get_available_subflow(meta_sk, NULL,
|
|
||||||
- false);
|
|
||||||
- if (!subsk)
|
|
||||||
- return NULL;
|
|
||||||
-
|
|
||||||
- skb = mptcp_ecf_rcv_buf_optimization(subsk, 0);
|
|
||||||
- if (skb)
|
|
||||||
- *reinject = -1;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- return skb;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-/* copy from mptcp_sched.c: mptcp_next_segment */
|
|
||||||
-static struct sk_buff *mptcp_ecf_next_segment(struct sock *meta_sk,
|
|
||||||
- int *reinject,
|
|
||||||
- struct sock **subsk,
|
|
||||||
- unsigned int *limit)
|
|
||||||
-{
|
|
||||||
- struct sk_buff *skb = __mptcp_ecf_next_segment(meta_sk, reinject);
|
|
||||||
- unsigned int mss_now;
|
|
||||||
- struct tcp_sock *subtp;
|
|
||||||
- u16 gso_max_segs;
|
|
||||||
- u32 max_len, max_segs, window, needed;
|
|
||||||
-
|
|
||||||
- /* As we set it, we have to reset it as well. */
|
|
||||||
- *limit = 0;
|
|
||||||
-
|
|
||||||
- if (!skb)
|
|
||||||
- return NULL;
|
|
||||||
-
|
|
||||||
- *subsk = ecf_get_available_subflow(meta_sk, skb, false);
|
|
||||||
- if (!*subsk)
|
|
||||||
- return NULL;
|
|
||||||
-
|
|
||||||
- subtp = tcp_sk(*subsk);
|
|
||||||
- mss_now = tcp_current_mss(*subsk);
|
|
||||||
-
|
|
||||||
- if (!*reinject && unlikely(!tcp_snd_wnd_test(tcp_sk(meta_sk), skb, mss_now))) {
|
|
||||||
- skb = mptcp_ecf_rcv_buf_optimization(*subsk, 1);
|
|
||||||
- if (skb)
|
|
||||||
- *reinject = -1;
|
|
||||||
- else
|
|
||||||
- return NULL;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- /* No splitting required, as we will only send one single segment */
|
|
||||||
- if (skb->len <= mss_now)
|
|
||||||
- return skb;
|
|
||||||
-
|
|
||||||
- /* The following is similar to tcp_mss_split_point, but
|
|
||||||
- * we do not care about nagle, because we will anyways
|
|
||||||
- * use TCP_NAGLE_PUSH, which overrides this.
|
|
||||||
- *
|
|
||||||
- * So, we first limit according to the cwnd/gso-size and then according
|
|
||||||
- * to the subflow's window.
|
|
||||||
- */
|
|
||||||
-
|
|
||||||
- gso_max_segs = (*subsk)->sk_gso_max_segs;
|
|
||||||
- if (!gso_max_segs) /* No gso supported on the subflow's NIC */
|
|
||||||
- gso_max_segs = 1;
|
|
||||||
- max_segs = min_t(unsigned int, tcp_cwnd_test(subtp, skb), gso_max_segs);
|
|
||||||
- if (!max_segs)
|
|
||||||
- return NULL;
|
|
||||||
-
|
|
||||||
- max_len = mss_now * max_segs;
|
|
||||||
- window = tcp_wnd_end(subtp) - subtp->write_seq;
|
|
||||||
-
|
|
||||||
- needed = min(skb->len, window);
|
|
||||||
- if (max_len <= skb->len)
|
|
||||||
- /* Take max_win, which is actually the cwnd/gso-size */
|
|
||||||
- *limit = max_len;
|
|
||||||
- else
|
|
||||||
- /* Or, take the window */
|
|
||||||
- *limit = needed;
|
|
||||||
-
|
|
||||||
- return skb;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static void ecfsched_init(struct sock *sk)
|
|
||||||
{
|
|
||||||
struct ecfsched_priv *ecf_p = ecfsched_get_priv(tcp_sk(sk));
|
|
||||||
@@ -353,7 +164,7 @@ static void ecfsched_init(struct sock *sk)
|
|
||||||
|
|
||||||
struct mptcp_sched_ops mptcp_sched_ecf = {
|
|
||||||
.get_subflow = ecf_get_available_subflow,
|
|
||||||
- .next_segment = mptcp_ecf_next_segment,
|
|
||||||
+ .next_segment = mptcp_next_segment,
|
|
||||||
.init = ecfsched_init,
|
|
||||||
.name = "ecf",
|
|
||||||
.owner = THIS_MODULE,
|
|
|
@ -1,43 +0,0 @@
|
||||||
From 35082b70e998d5b419e351010005494e7a5b9412 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Landen Chao <landen.chao@mediatek.com>
|
|
||||||
Date: Tue, 31 Dec 2019 11:48:41 +0100
|
|
||||||
Subject: [PATCH] net: dsa: enable vlan without bridge on dsa user port
|
|
||||||
|
|
||||||
---
|
|
||||||
drivers/net/dsa/mt7530.c | 14 ++++++++++++--
|
|
||||||
1 file changed, 12 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
|
|
||||||
index 1d8d36de4d20..7e285aa9bd7c 100644
|
|
||||||
--- a/drivers/net/dsa/mt7530.c
|
|
||||||
+++ b/drivers/net/dsa/mt7530.c
|
|
||||||
@@ -1165,8 +1165,13 @@ mt7530_port_vlan_add(struct dsa_switch *ds, int port,
|
|
||||||
/* The port is kept as VLAN-unaware if bridge with vlan_filtering not
|
|
||||||
* being set.
|
|
||||||
*/
|
|
||||||
- if (!dsa_port_is_vlan_filtering(&ds->ports[port]))
|
|
||||||
+ if (!dsa_port_is_vlan_filtering(&ds->ports[port])){
|
|
||||||
+ /* Enable VLAN tagged in port-based vlan setting. */
|
|
||||||
+ if ((vlan->vid_begin != 0) && (vlan->vid_end != 0))
|
|
||||||
+ mt7530_rmw(priv, MT7530_PCR_P(port), EG_TAG(3),
|
|
||||||
+ EG_TAG(2));
|
|
||||||
return;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
mutex_lock(&priv->reg_mutex);
|
|
||||||
|
|
||||||
@@ -1196,8 +1201,13 @@ mt7530_port_vlan_del(struct dsa_switch *ds, int port,
|
|
||||||
/* The port is kept as VLAN-unaware if bridge with vlan_filtering not
|
|
||||||
* being set.
|
|
||||||
*/
|
|
||||||
- if (!dsa_port_is_vlan_filtering(&ds->ports[port]))
|
|
||||||
+ if (!dsa_port_is_vlan_filtering(&ds->ports[port])) {
|
|
||||||
+ /* Disable VLAN tagged in port-based vlan setting. */
|
|
||||||
+ if ((vlan->vid_begin != 0) && (vlan->vid_end != 0))
|
|
||||||
+ mt7530_rmw(priv, MT7530_PCR_P(port), EG_TAG(3),
|
|
||||||
+ EG_TAG(0));
|
|
||||||
return 0;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
mutex_lock(&priv->reg_mutex);
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue