Revert faulty tree push
Revert "mac80211: add new minstrel_ht patches to improve probing on mt76x2" (9861050b85
) Revert "kernel: use bulk free in kfree_skb_list to improve performance" (98b654de2e
) Revert "ramips: add preliminary support for WIO ONE" (085141dc5b
) Revert "ramips: add preliminary support for SGE AP-MTKH7-0006 developer board" (b1db6d0539
) Revert "build: use config.site generated by autoconf-lean, drop hardcoded sitefiles" (363ce4329d
) Revert "toolchain: add autoconf-lean" (fdb30eed03
) Revert "build: allow overriding the filename on the remote server when downloading" (6fa0e07758
) Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
9861050b85
commit
7ec092e641
6
Makefile
6
Makefile
|
@ -79,6 +79,12 @@ endif
|
|||
|
||||
# check prerequisites before starting to build
|
||||
prereq: $(target/stamp-prereq) tmp/.prereq_packages
|
||||
@if [ ! -f "$(INCLUDE_DIR)/site/$(ARCH)" ]; then \
|
||||
echo 'ERROR: Missing site config for architecture "$(ARCH)" !'; \
|
||||
echo ' The missing file will cause configure scripts to fail during compilation.'; \
|
||||
echo ' Please provide a "$(INCLUDE_DIR)/site/$(ARCH)" file and restart the build.'; \
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
checksum: FORCE
|
||||
$(call sha256sums,$(BIN_DIR),$(CONFIG_BUILDBOT))
|
||||
|
|
|
@ -289,7 +289,6 @@ endef
|
|||
define Download/default
|
||||
FILE:=$(PKG_SOURCE)
|
||||
URL:=$(PKG_SOURCE_URL)
|
||||
URL_FILE:=$(PKG_SOURCE_URL_FILE)
|
||||
SUBDIR:=$(PKG_SOURCE_SUBDIR)
|
||||
PROTO:=$(PKG_SOURCE_PROTO)
|
||||
$(if $(PKG_SOURCE_MIRROR),MIRROR:=$(filter 1,$(PKG_MIRROR)))
|
||||
|
|
|
@ -117,7 +117,7 @@ include $(INCLUDE_DIR)/autotools.mk
|
|||
_pkg_target:=$(if $(QUILT),,.)
|
||||
|
||||
override MAKEFLAGS=
|
||||
CONFIG_SITE:=$(TOOLCHAIN_DIR)/config.site
|
||||
CONFIG_SITE:=$(INCLUDE_DIR)/site/$(ARCH)
|
||||
CUR_MAKEFILE:=$(filter-out Makefile,$(firstword $(MAKEFILE_LIST)))
|
||||
SUBMAKE:=$(NO_TRACE_MAKE) $(if $(CUR_MAKEFILE),-f $(CUR_MAKEFILE))
|
||||
PKG_CONFIG_PATH=$(STAGING_DIR)/usr/lib/pkgconfig:$(STAGING_DIR)/usr/share/pkgconfig
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
#!/bin/sh
|
||||
. $TOPDIR/include/site/linux
|
||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=yes}
|
||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
|
||||
|
||||
ac_cv_sizeof___int64=8
|
||||
ac_cv_sizeof_char=1
|
||||
ac_cv_sizeof_int=4
|
||||
ac_cv_sizeof_int16_t=2
|
||||
ac_cv_sizeof_int32_t=4
|
||||
ac_cv_sizeof_int64_t=8
|
||||
ac_cv_sizeof_long_int=8
|
||||
ac_cv_sizeof_long_long=8
|
||||
ac_cv_sizeof_long=8
|
||||
ac_cv_sizeof_off_t=8
|
||||
ac_cv_sizeof_short_int=2
|
||||
ac_cv_sizeof_short=2
|
||||
ac_cv_sizeof_size_t=8
|
||||
ac_cv_sizeof_ssize_t=8
|
||||
ac_cv_sizeof_u_int16_t=2
|
||||
ac_cv_sizeof_u_int32_t=4
|
||||
ac_cv_sizeof_u_int64_t=8
|
||||
ac_cv_sizeof_uint16_t=2
|
||||
ac_cv_sizeof_uint32_t=4
|
||||
ac_cv_sizeof_uint64_t=8
|
||||
ac_cv_sizeof_unsigned_int=4
|
||||
ac_cv_sizeof_unsigned_long=8
|
||||
ac_cv_sizeof_unsigned_long_long=8
|
||||
ac_cv_sizeof_unsigned_short=2
|
||||
ac_cv_sizeof_void_p=8
|
|
@ -0,0 +1,30 @@
|
|||
#!/bin/sh
|
||||
. $TOPDIR/include/site/linux
|
||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
|
||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
|
||||
|
||||
ac_cv_sizeof___int64=8
|
||||
ac_cv_sizeof_char=1
|
||||
ac_cv_sizeof_int=4
|
||||
ac_cv_sizeof_int16_t=2
|
||||
ac_cv_sizeof_int32_t=4
|
||||
ac_cv_sizeof_int64_t=8
|
||||
ac_cv_sizeof_long_int=8
|
||||
ac_cv_sizeof_long_long=8
|
||||
ac_cv_sizeof_long=8
|
||||
ac_cv_sizeof_off_t=8
|
||||
ac_cv_sizeof_short_int=2
|
||||
ac_cv_sizeof_short=2
|
||||
ac_cv_sizeof_size_t=8
|
||||
ac_cv_sizeof_ssize_t=8
|
||||
ac_cv_sizeof_u_int16_t=2
|
||||
ac_cv_sizeof_u_int32_t=4
|
||||
ac_cv_sizeof_u_int64_t=8
|
||||
ac_cv_sizeof_uint16_t=2
|
||||
ac_cv_sizeof_uint32_t=4
|
||||
ac_cv_sizeof_uint64_t=8
|
||||
ac_cv_sizeof_unsigned_int=4
|
||||
ac_cv_sizeof_unsigned_long=8
|
||||
ac_cv_sizeof_unsigned_long_long=8
|
||||
ac_cv_sizeof_unsigned_short=2
|
||||
ac_cv_sizeof_void_p=8
|
|
@ -0,0 +1,30 @@
|
|||
#!/bin/sh
|
||||
. $TOPDIR/include/site/linux
|
||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=yes}
|
||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
|
||||
|
||||
ac_cv_sizeof___int64=0
|
||||
ac_cv_sizeof_char=1
|
||||
ac_cv_sizeof_int=4
|
||||
ac_cv_sizeof_int16_t=2
|
||||
ac_cv_sizeof_int32_t=4
|
||||
ac_cv_sizeof_int64_t=8
|
||||
ac_cv_sizeof_long_int=4
|
||||
ac_cv_sizeof_long_long=8
|
||||
ac_cv_sizeof_long=4
|
||||
ac_cv_sizeof_off_t=8
|
||||
ac_cv_sizeof_short_int=2
|
||||
ac_cv_sizeof_short=2
|
||||
ac_cv_sizeof_size_t=4
|
||||
ac_cv_sizeof_ssize_t=4
|
||||
ac_cv_sizeof_u_int16_t=2
|
||||
ac_cv_sizeof_u_int32_t=4
|
||||
ac_cv_sizeof_u_int64_t=8
|
||||
ac_cv_sizeof_uint16_t=2
|
||||
ac_cv_sizeof_uint32_t=4
|
||||
ac_cv_sizeof_uint64_t=8
|
||||
ac_cv_sizeof_unsigned_int=4
|
||||
ac_cv_sizeof_unsigned_long=4
|
||||
ac_cv_sizeof_unsigned_long_long=8
|
||||
ac_cv_sizeof_unsigned_short=2
|
||||
ac_cv_sizeof_void_p=4
|
|
@ -0,0 +1,30 @@
|
|||
#!/bin/sh
|
||||
. $TOPDIR/include/site/linux
|
||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=yes}
|
||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
|
||||
|
||||
ac_cv_sizeof___int64=0
|
||||
ac_cv_sizeof_char=1
|
||||
ac_cv_sizeof_int=4
|
||||
ac_cv_sizeof_int16_t=2
|
||||
ac_cv_sizeof_int32_t=4
|
||||
ac_cv_sizeof_int64_t=8
|
||||
ac_cv_sizeof_long_int=4
|
||||
ac_cv_sizeof_long_long=8
|
||||
ac_cv_sizeof_long=4
|
||||
ac_cv_sizeof_off_t=8
|
||||
ac_cv_sizeof_short_int=2
|
||||
ac_cv_sizeof_short=2
|
||||
ac_cv_sizeof_size_t=4
|
||||
ac_cv_sizeof_ssize_t=4
|
||||
ac_cv_sizeof_u_int16_t=2
|
||||
ac_cv_sizeof_u_int32_t=4
|
||||
ac_cv_sizeof_u_int64_t=8
|
||||
ac_cv_sizeof_uint16_t=2
|
||||
ac_cv_sizeof_uint32_t=4
|
||||
ac_cv_sizeof_uint64_t=8
|
||||
ac_cv_sizeof_unsigned_int=4
|
||||
ac_cv_sizeof_unsigned_long=4
|
||||
ac_cv_sizeof_unsigned_long_long=8
|
||||
ac_cv_sizeof_unsigned_short=2
|
||||
ac_cv_sizeof_void_p=4
|
|
@ -0,0 +1,30 @@
|
|||
#!/bin/sh
|
||||
. $TOPDIR/include/site/linux
|
||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
|
||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
|
||||
|
||||
ac_cv_sizeof___int64=0
|
||||
ac_cv_sizeof_char=1
|
||||
ac_cv_sizeof_int=4
|
||||
ac_cv_sizeof_int16_t=2
|
||||
ac_cv_sizeof_int32_t=4
|
||||
ac_cv_sizeof_int64_t=8
|
||||
ac_cv_sizeof_long_int=4
|
||||
ac_cv_sizeof_long_long=8
|
||||
ac_cv_sizeof_long=4
|
||||
ac_cv_sizeof_off_t=8
|
||||
ac_cv_sizeof_short_int=2
|
||||
ac_cv_sizeof_short=2
|
||||
ac_cv_sizeof_size_t=4
|
||||
ac_cv_sizeof_ssize_t=4
|
||||
ac_cv_sizeof_u_int16_t=2
|
||||
ac_cv_sizeof_u_int32_t=4
|
||||
ac_cv_sizeof_u_int64_t=8
|
||||
ac_cv_sizeof_uint16_t=2
|
||||
ac_cv_sizeof_uint32_t=4
|
||||
ac_cv_sizeof_uint64_t=8
|
||||
ac_cv_sizeof_unsigned_int=4
|
||||
ac_cv_sizeof_unsigned_long=4
|
||||
ac_cv_sizeof_unsigned_long_long=8
|
||||
ac_cv_sizeof_unsigned_short=2
|
||||
ac_cv_sizeof_void_p=4
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
. $TOPDIR/include/site/i486
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
#!/bin/sh
|
||||
. $TOPDIR/include/site/linux
|
||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=yes}
|
||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
|
||||
|
||||
ac_cv_sizeof___int64=0
|
||||
ac_cv_sizeof_char=1
|
||||
ac_cv_sizeof_int=4
|
||||
ac_cv_sizeof_int16_t=2
|
||||
ac_cv_sizeof_int32_t=4
|
||||
ac_cv_sizeof_int64_t=8
|
||||
ac_cv_sizeof_long_int=4
|
||||
ac_cv_sizeof_long_long=8
|
||||
ac_cv_sizeof_long=4
|
||||
ac_cv_sizeof_off_t=8
|
||||
ac_cv_sizeof_short_int=2
|
||||
ac_cv_sizeof_short=2
|
||||
ac_cv_sizeof_size_t=4
|
||||
ac_cv_sizeof_ssize_t=4
|
||||
ac_cv_sizeof_u_int16_t=2
|
||||
ac_cv_sizeof_u_int32_t=4
|
||||
ac_cv_sizeof_u_int64_t=8
|
||||
ac_cv_sizeof_uint16_t=2
|
||||
ac_cv_sizeof_uint32_t=4
|
||||
ac_cv_sizeof_uint64_t=8
|
||||
ac_cv_sizeof_unsigned_int=4
|
||||
ac_cv_sizeof_unsigned_long=4
|
||||
ac_cv_sizeof_unsigned_long_long=8
|
||||
ac_cv_sizeof_unsigned_short=2
|
||||
ac_cv_sizeof_void_p=4
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
. $TOPDIR/include/site/i486
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
ac_atomic_add=yes
|
||||
ac_atomic_sub=yes
|
||||
ac_cv_c_gettext_without_libintl=yes
|
||||
ac_cv_c_long_double=no
|
||||
ac_cv_conv_longlong_to_float=yes
|
||||
ac_cv_file__dev_zero=yes
|
||||
ac_cv_func___va_copy=no
|
||||
ac_cv_func__exit=yes
|
||||
ac_cv_func_bcopy=yes
|
||||
ac_cv_func_bzero=yes
|
||||
ac_cv_func_bcmp=yes
|
||||
ac_cv_func_creal=yes
|
||||
ac_cv_func_cimag=yes
|
||||
ac_cv_func_fchmod=yes
|
||||
ac_cv_func_getaddrinfo=yes
|
||||
ac_cv_func_getcwd=yes
|
||||
ac_cv_func_getdomainname=yes
|
||||
ac_cv_func_getpgrp_void=yes
|
||||
ac_cv_func_getpwuid_r=yes
|
||||
ac_cv_func_gettimeofday=yes
|
||||
ac_cv_func_index=yes
|
||||
ac_cv_func_lstat_dereferences_slashed_symlink=yes
|
||||
ac_cv_func_lstat_empty_string_bug=no
|
||||
ac_cv_func_lstat=yes
|
||||
ac_cv_func_malloc_0_nonnull=yes
|
||||
ac_cv_func_malloc_works=yes
|
||||
ac_cv_func_memcmp_clean=yes
|
||||
ac_cv_func_memcmp_working=yes
|
||||
ac_cv_func_posix_getgrgid_r=yes
|
||||
ac_cv_func_posix_getpwuid_r=yes
|
||||
ac_cv_func_psignal=yes
|
||||
ac_cv_func_pthread_key_delete=yes
|
||||
ac_cv_func_realloc_0_nonnull=yes
|
||||
ac_cv_func_realloc_works=yes
|
||||
ac_cv_func_rename=yes
|
||||
ac_cv_func_rindex=yes
|
||||
ac_cv_func_setlocale=yes
|
||||
ac_cv_func_setgrent_void=yes
|
||||
ac_cv_func_setpgrp_void=yes
|
||||
ac_cv_func_setresuid=no
|
||||
ac_cv_func_setvbuf_reversed=no
|
||||
ac_cv_func_stat_empty_string_bug=no
|
||||
ac_cv_func_stat_ignores_trailing_slash=no
|
||||
ac_cv_func_strerror=yes
|
||||
ac_cv_func_strftime=yes
|
||||
ac_cv_func_utimes=yes
|
||||
ac_cv_func___adjtimex=yes
|
||||
ac_cv_func_va_copy=no
|
||||
ac_cv_func_vsnprintf=yes
|
||||
ac_cv_have_accrights_in_msghdr=no
|
||||
ac_cv_have_broken_snprintf=no
|
||||
ac_cv_have_control_in_msghdr=yes
|
||||
ac_cv_have_decl_sys_siglist=no
|
||||
ac_cv_have_openpty_ctty_bug=yes
|
||||
ac_cv_have_space_d_name_in_struct_dirent=yes
|
||||
ac_cv_header_netinet_sctp_h=no
|
||||
ac_cv_header_netinet_sctp_uio_h=no
|
||||
ac_cv_int64_t=yes
|
||||
ac_cv_lbl_unaligned_fail=no
|
||||
ac_cv_linux_kernel_pppoe=yes
|
||||
ac_cv_linux_vers=2
|
||||
ac_cv_pack_bitfields_reversed=yes
|
||||
ac_cv_path_LDCONFIG=
|
||||
ac_cv_regexec_segfault_emptystr=no
|
||||
ac_cv_sctp=no
|
||||
ac_cv_sys_restartable_syscalls=yes
|
||||
ac_cv_time_r_type=POSIX
|
||||
ac_cv_type_suseconds_t=yes
|
||||
ac_cv_uchar=no
|
||||
ac_cv_uint=yes
|
||||
ac_cv_uint64_t=yes
|
||||
ac_cv_ulong=yes
|
||||
ac_cv_ushort=yes
|
||||
ac_cv_va_copy=C99
|
||||
ac_cv_va_val_copy=yes
|
||||
as_cv_unaligned_access=yes
|
||||
ac_cv_func_malloc_0_nonnull=yes
|
||||
ac_cv_func_realloc_0_nonnull=yes
|
|
@ -0,0 +1,28 @@
|
|||
#!/bin/sh
|
||||
. $TOPDIR/include/site/linux
|
||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
|
||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
|
||||
|
||||
ac_cv_sizeof___int64=0
|
||||
ac_cv_sizeof_char=1
|
||||
ac_cv_sizeof_int=4
|
||||
ac_cv_sizeof_int16_t=2
|
||||
ac_cv_sizeof_int32_t=4
|
||||
ac_cv_sizeof_int64_t=8
|
||||
ac_cv_sizeof_long_int=4
|
||||
ac_cv_sizeof_long_long=8
|
||||
ac_cv_sizeof_long=4
|
||||
ac_cv_sizeof_off_t=8
|
||||
ac_cv_sizeof_short_int=2
|
||||
ac_cv_sizeof_short=2
|
||||
ac_cv_sizeof_size_t=4
|
||||
ac_cv_sizeof_u_int16_t=2
|
||||
ac_cv_sizeof_u_int32_t=4
|
||||
ac_cv_sizeof_u_int64_t=8
|
||||
ac_cv_sizeof_uint16_t=2
|
||||
ac_cv_sizeof_uint32_t=4
|
||||
ac_cv_sizeof_uint64_t=8
|
||||
ac_cv_sizeof_unsigned_int=4
|
||||
ac_cv_sizeof_unsigned_long=4
|
||||
ac_cv_sizeof_unsigned_short=2
|
||||
ac_cv_sizeof_void_p=4
|
|
@ -0,0 +1,30 @@
|
|||
#!/bin/sh
|
||||
. $TOPDIR/include/site/linux
|
||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
|
||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
|
||||
|
||||
ac_cv_sizeof___int64=0
|
||||
ac_cv_sizeof_char=1
|
||||
ac_cv_sizeof_int=4
|
||||
ac_cv_sizeof_int16_t=2
|
||||
ac_cv_sizeof_int32_t=4
|
||||
ac_cv_sizeof_int64_t=8
|
||||
ac_cv_sizeof_long_int=4
|
||||
ac_cv_sizeof_long_long=8
|
||||
ac_cv_sizeof_long=4
|
||||
ac_cv_sizeof_off_t=8
|
||||
ac_cv_sizeof_short_int=2
|
||||
ac_cv_sizeof_short=2
|
||||
ac_cv_sizeof_size_t=4
|
||||
ac_cv_sizeof_ssize_t=4
|
||||
ac_cv_sizeof_u_int16_t=2
|
||||
ac_cv_sizeof_u_int32_t=4
|
||||
ac_cv_sizeof_u_int64_t=8
|
||||
ac_cv_sizeof_uint16_t=2
|
||||
ac_cv_sizeof_uint32_t=4
|
||||
ac_cv_sizeof_uint64_t=8
|
||||
ac_cv_sizeof_unsigned_int=4
|
||||
ac_cv_sizeof_unsigned_long=4
|
||||
ac_cv_sizeof_unsigned_long_long=8
|
||||
ac_cv_sizeof_unsigned_short=2
|
||||
ac_cv_sizeof_void_p=4
|
|
@ -0,0 +1,30 @@
|
|||
#!/bin/sh
|
||||
. $TOPDIR/include/site/linux
|
||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
|
||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
|
||||
|
||||
ac_cv_sizeof___int64=8
|
||||
ac_cv_sizeof_char=1
|
||||
ac_cv_sizeof_int=4
|
||||
ac_cv_sizeof_int16_t=2
|
||||
ac_cv_sizeof_int32_t=4
|
||||
ac_cv_sizeof_int64_t=8
|
||||
ac_cv_sizeof_long_int=8
|
||||
ac_cv_sizeof_long_long=8
|
||||
ac_cv_sizeof_long=8
|
||||
ac_cv_sizeof_off_t=8
|
||||
ac_cv_sizeof_short_int=2
|
||||
ac_cv_sizeof_short=2
|
||||
ac_cv_sizeof_size_t=8
|
||||
ac_cv_sizeof_ssize_t=8
|
||||
ac_cv_sizeof_u_int16_t=2
|
||||
ac_cv_sizeof_u_int32_t=4
|
||||
ac_cv_sizeof_u_int64_t=8
|
||||
ac_cv_sizeof_uint16_t=2
|
||||
ac_cv_sizeof_uint32_t=4
|
||||
ac_cv_sizeof_uint64_t=8
|
||||
ac_cv_sizeof_unsigned_int=4
|
||||
ac_cv_sizeof_unsigned_long=8
|
||||
ac_cv_sizeof_unsigned_long_long=8
|
||||
ac_cv_sizeof_unsigned_short=2
|
||||
ac_cv_sizeof_void_p=8
|
|
@ -0,0 +1,30 @@
|
|||
#!/bin/sh
|
||||
. $TOPDIR/include/site/linux
|
||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=yes}
|
||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
|
||||
|
||||
ac_cv_sizeof___int64=8
|
||||
ac_cv_sizeof_char=1
|
||||
ac_cv_sizeof_int=4
|
||||
ac_cv_sizeof_int16_t=2
|
||||
ac_cv_sizeof_int32_t=4
|
||||
ac_cv_sizeof_int64_t=8
|
||||
ac_cv_sizeof_long_int=8
|
||||
ac_cv_sizeof_long_long=8
|
||||
ac_cv_sizeof_long=8
|
||||
ac_cv_sizeof_off_t=8
|
||||
ac_cv_sizeof_short_int=2
|
||||
ac_cv_sizeof_short=2
|
||||
ac_cv_sizeof_size_t=8
|
||||
ac_cv_sizeof_ssize_t=8
|
||||
ac_cv_sizeof_u_int16_t=2
|
||||
ac_cv_sizeof_u_int32_t=4
|
||||
ac_cv_sizeof_u_int64_t=8
|
||||
ac_cv_sizeof_uint16_t=2
|
||||
ac_cv_sizeof_uint32_t=4
|
||||
ac_cv_sizeof_uint64_t=8
|
||||
ac_cv_sizeof_unsigned_int=4
|
||||
ac_cv_sizeof_unsigned_long=8
|
||||
ac_cv_sizeof_unsigned_long_long=8
|
||||
ac_cv_sizeof_unsigned_short=2
|
||||
ac_cv_sizeof_void_p=8
|
|
@ -0,0 +1,30 @@
|
|||
#!/bin/sh
|
||||
. $TOPDIR/include/site/linux
|
||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=yes}
|
||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
|
||||
|
||||
ac_cv_sizeof___int64=0
|
||||
ac_cv_sizeof_char=1
|
||||
ac_cv_sizeof_int=4
|
||||
ac_cv_sizeof_int16_t=2
|
||||
ac_cv_sizeof_int32_t=4
|
||||
ac_cv_sizeof_int64_t=8
|
||||
ac_cv_sizeof_long_int=4
|
||||
ac_cv_sizeof_long_long=8
|
||||
ac_cv_sizeof_long=4
|
||||
ac_cv_sizeof_off_t=8
|
||||
ac_cv_sizeof_short_int=2
|
||||
ac_cv_sizeof_short=2
|
||||
ac_cv_sizeof_size_t=4
|
||||
ac_cv_sizeof_ssize_t=4
|
||||
ac_cv_sizeof_u_int16_t=2
|
||||
ac_cv_sizeof_u_int32_t=4
|
||||
ac_cv_sizeof_u_int64_t=8
|
||||
ac_cv_sizeof_uint16_t=2
|
||||
ac_cv_sizeof_uint32_t=4
|
||||
ac_cv_sizeof_uint64_t=8
|
||||
ac_cv_sizeof_unsigned_int=4
|
||||
ac_cv_sizeof_unsigned_long=4
|
||||
ac_cv_sizeof_unsigned_long_long=8
|
||||
ac_cv_sizeof_unsigned_short=2
|
||||
ac_cv_sizeof_void_p=4
|
|
@ -0,0 +1,30 @@
|
|||
#!/bin/sh
|
||||
. $TOPDIR/include/site/linux
|
||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
|
||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
|
||||
|
||||
ac_cv_sizeof___int64=0
|
||||
ac_cv_sizeof_char=1
|
||||
ac_cv_sizeof_int=4
|
||||
ac_cv_sizeof_int16_t=2
|
||||
ac_cv_sizeof_int32_t=4
|
||||
ac_cv_sizeof_int64_t=8
|
||||
ac_cv_sizeof_long_int=4
|
||||
ac_cv_sizeof_long_long=8
|
||||
ac_cv_sizeof_long=4
|
||||
ac_cv_sizeof_off_t=8
|
||||
ac_cv_sizeof_short_int=2
|
||||
ac_cv_sizeof_short=2
|
||||
ac_cv_sizeof_size_t=4
|
||||
ac_cv_sizeof_ssize_t=4
|
||||
ac_cv_sizeof_u_int16_t=2
|
||||
ac_cv_sizeof_u_int32_t=4
|
||||
ac_cv_sizeof_u_int64_t=8
|
||||
ac_cv_sizeof_uint16_t=2
|
||||
ac_cv_sizeof_uint32_t=4
|
||||
ac_cv_sizeof_uint64_t=8
|
||||
ac_cv_sizeof_unsigned_int=4
|
||||
ac_cv_sizeof_unsigned_long=4
|
||||
ac_cv_sizeof_unsigned_long_long=8
|
||||
ac_cv_sizeof_unsigned_short=2
|
||||
ac_cv_sizeof_void_p=4
|
|
@ -0,0 +1,26 @@
|
|||
#!/bin/sh
|
||||
. $TOPDIR/include/site/linux
|
||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
|
||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
|
||||
|
||||
ac_cv_sizeof_char=1
|
||||
ac_cv_sizeof_char_p=8
|
||||
ac_cv_sizeof_double=8
|
||||
ac_cv_sizeof_float=4
|
||||
ac_cv_sizeof_int=4
|
||||
ac_cv_sizeof_long=8
|
||||
ac_cv_sizeof_long_double=16
|
||||
ac_cv_sizeof_long_int=8
|
||||
ac_cv_sizeof_long_long=8
|
||||
ac_cv_sizeof_long_long_int=8
|
||||
ac_cv_sizeof_short=2
|
||||
ac_cv_sizeof_short_int=2
|
||||
ac_cv_sizeof_signed_char=1
|
||||
ac_cv_sizeof_unsigned_char=1
|
||||
ac_cv_sizeof_unsigned_int=4
|
||||
ac_cv_sizeof_unsigned_long=8
|
||||
ac_cv_sizeof_unsigned_long_int=8
|
||||
ac_cv_sizeof_unsigned_long_long_int=8
|
||||
ac_cv_sizeof_unsigned_short=2
|
||||
ac_cv_sizeof_unsigned_short_int=2
|
||||
ac_cv_sizeof_void_p=8
|
|
@ -0,0 +1,30 @@
|
|||
#!/bin/sh
|
||||
. $TOPDIR/include/site/linux
|
||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
|
||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
|
||||
|
||||
ac_cv_sizeof___int64=0
|
||||
ac_cv_sizeof_char=1
|
||||
ac_cv_sizeof_int=4
|
||||
ac_cv_sizeof_int16_t=2
|
||||
ac_cv_sizeof_int32_t=4
|
||||
ac_cv_sizeof_int64_t=8
|
||||
ac_cv_sizeof_long_int=4
|
||||
ac_cv_sizeof_long_long=8
|
||||
ac_cv_sizeof_long=4
|
||||
ac_cv_sizeof_off_t=8
|
||||
ac_cv_sizeof_short_int=2
|
||||
ac_cv_sizeof_short=2
|
||||
ac_cv_sizeof_size_t=4
|
||||
ac_cv_sizeof_ssize_t=4
|
||||
ac_cv_sizeof_u_int16_t=2
|
||||
ac_cv_sizeof_u_int32_t=4
|
||||
ac_cv_sizeof_u_int64_t=8
|
||||
ac_cv_sizeof_uint16_t=2
|
||||
ac_cv_sizeof_uint32_t=4
|
||||
ac_cv_sizeof_uint64_t=8
|
||||
ac_cv_sizeof_unsigned_int=4
|
||||
ac_cv_sizeof_unsigned_long=4
|
||||
ac_cv_sizeof_unsigned_long_long=8
|
||||
ac_cv_sizeof_unsigned_short=2
|
||||
ac_cv_sizeof_void_p=4
|
|
@ -0,0 +1,30 @@
|
|||
#!/bin/sh
|
||||
. $TOPDIR/include/site/linux
|
||||
ac_cv_c_littleendian=${ac_cv_c_littleendian=yes}
|
||||
ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
|
||||
|
||||
ac_cv_sizeof___int64=0
|
||||
ac_cv_sizeof_char=1
|
||||
ac_cv_sizeof_int=4
|
||||
ac_cv_sizeof_int16_t=2
|
||||
ac_cv_sizeof_int32_t=4
|
||||
ac_cv_sizeof_int64_t=8
|
||||
ac_cv_sizeof_long_int=8
|
||||
ac_cv_sizeof_long_long=8
|
||||
ac_cv_sizeof_long=8
|
||||
ac_cv_sizeof_off_t=8
|
||||
ac_cv_sizeof_short_int=2
|
||||
ac_cv_sizeof_short=2
|
||||
ac_cv_sizeof_size_t=8
|
||||
ac_cv_sizeof_ssize_t=8
|
||||
ac_cv_sizeof_u_int16_t=2
|
||||
ac_cv_sizeof_u_int32_t=4
|
||||
ac_cv_sizeof_u_int64_t=8
|
||||
ac_cv_sizeof_uint16_t=2
|
||||
ac_cv_sizeof_uint32_t=4
|
||||
ac_cv_sizeof_uint64_t=8
|
||||
ac_cv_sizeof_unsigned_int=4
|
||||
ac_cv_sizeof_unsigned_long=8
|
||||
ac_cv_sizeof_unsigned_long_long=8
|
||||
ac_cv_sizeof_unsigned_short=2
|
||||
ac_cv_sizeof_void_p=8
|
|
@ -1,22 +0,0 @@
|
|||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Fri, 14 Jun 2019 21:12:04 +0200
|
||||
Subject: [PATCH] mac80211: minstrel_ht: fix per-group max throughput rate
|
||||
initialization
|
||||
|
||||
The group number needs to be multiplied by the number of rates per group
|
||||
to get the full rate index
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/rc80211_minstrel_ht.c
|
||||
+++ b/net/mac80211/rc80211_minstrel_ht.c
|
||||
@@ -576,7 +576,7 @@ minstrel_ht_update_stats(struct minstrel
|
||||
|
||||
/* (re)Initialize group rate indexes */
|
||||
for(j = 0; j < MAX_THR_RATES; j++)
|
||||
- tmp_group_tp_rate[j] = group;
|
||||
+ tmp_group_tp_rate[j] = MCS_GROUP_RATES * group;
|
||||
|
||||
for (i = 0; i < MCS_GROUP_RATES; i++) {
|
||||
if (!(mi->supported[group] & BIT(i)))
|
|
@ -1,42 +0,0 @@
|
|||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Wed, 5 Jun 2019 20:42:49 +0200
|
||||
Subject: [PATCH] mac80211: minstrel_ht: reduce unnecessary rate probing
|
||||
attempts
|
||||
|
||||
On hardware with static fallback tables (e.g. mt76x2), rate probing attempts
|
||||
can be very expensive.
|
||||
On such devices, avoid sampling rates slower than the per-group max throughput
|
||||
rate, based on the assumption that the fallback table will take care of probing
|
||||
lower rates within that group if the higher rates fail.
|
||||
To make this work, this also fixes a wrong initialization in the previously
|
||||
unused per-group sorted rate array.
|
||||
To further reduce unnecessary probing attempts, skip duplicate attempts on
|
||||
rates slower than the max throughput rate.
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/rc80211_minstrel_ht.c
|
||||
+++ b/net/mac80211/rc80211_minstrel_ht.c
|
||||
@@ -1062,6 +1062,21 @@ minstrel_get_sample_rate(struct minstrel
|
||||
minstrel_get_duration(mi->max_prob_rate) * 3 < sample_dur)
|
||||
return -1;
|
||||
|
||||
+
|
||||
+ /*
|
||||
+ * For devices with no configurable multi-rate retry, skip sampling
|
||||
+ * below the per-group max throughput rate, and only use one sampling
|
||||
+ * attempt per rate
|
||||
+ */
|
||||
+ if (mp->hw->max_rates == 1 &&
|
||||
+ (minstrel_get_duration(mg->max_group_tp_rate[0]) < sample_dur ||
|
||||
+ mrs->attempts))
|
||||
+ return -1;
|
||||
+
|
||||
+ /* Skip already sampled slow rates */
|
||||
+ if (sample_dur >= minstrel_get_duration(tp_rate1) && mrs->attempts)
|
||||
+ return -1;
|
||||
+
|
||||
/*
|
||||
* Make sure that lower rates get sampled only occasionally,
|
||||
* if the link is working perfectly.
|
|
@ -1,46 +0,0 @@
|
|||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Fri, 14 Jun 2019 21:14:22 +0200
|
||||
Subject: [PATCH] mac80211: minstrel_ht: fix default max throughput rate
|
||||
indexes
|
||||
|
||||
Use the first supported rate instead of 0 (which can be invalid)
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/rc80211_minstrel_ht.c
|
||||
+++ b/net/mac80211/rc80211_minstrel_ht.c
|
||||
@@ -487,7 +487,7 @@ minstrel_ht_assign_best_tp_rates(struct
|
||||
tmp_prob = mi->groups[tmp_group].rates[tmp_idx].prob_ewma;
|
||||
tmp_mcs_tp = minstrel_ht_get_tp_avg(mi, tmp_group, tmp_idx, tmp_prob);
|
||||
|
||||
- if (tmp_cck_tp > tmp_mcs_tp) {
|
||||
+ if (tmp_cck_tp_rate && tmp_cck_tp > tmp_mcs_tp) {
|
||||
for(i = 0; i < MAX_THR_RATES; i++) {
|
||||
minstrel_ht_sort_best_tp_rates(mi, tmp_cck_tp_rate[i],
|
||||
tmp_mcs_tp_rate);
|
||||
@@ -559,11 +559,19 @@ minstrel_ht_update_stats(struct minstrel
|
||||
mi->sample_slow = 0;
|
||||
mi->sample_count = 0;
|
||||
|
||||
- /* Initialize global rate indexes */
|
||||
- for(j = 0; j < MAX_THR_RATES; j++){
|
||||
- tmp_mcs_tp_rate[j] = 0;
|
||||
- tmp_cck_tp_rate[j] = 0;
|
||||
- }
|
||||
+ memset(tmp_mcs_tp_rate, 0, sizeof(tmp_mcs_tp_rate));
|
||||
+ memset(tmp_cck_tp_rate, 0, sizeof(tmp_cck_tp_rate));
|
||||
+ if (mi->supported[MINSTREL_CCK_GROUP])
|
||||
+ for (j = 0; j < ARRAY_SIZE(tmp_cck_tp_rate); j++)
|
||||
+ tmp_cck_tp_rate[j] = MINSTREL_CCK_GROUP * MCS_GROUP_RATES;
|
||||
+
|
||||
+ if (mi->supported[MINSTREL_VHT_GROUP_0])
|
||||
+ index = MINSTREL_VHT_GROUP_0 * MCS_GROUP_RATES;
|
||||
+ else
|
||||
+ index = MINSTREL_HT_GROUP_0 * MCS_GROUP_RATES;
|
||||
+
|
||||
+ for (j = 0; j < ARRAY_SIZE(tmp_mcs_tp_rate); j++)
|
||||
+ tmp_mcs_tp_rate[j] = index;
|
||||
|
||||
/* Find best rate sets within all MCS groups*/
|
||||
for (group = 0; group < ARRAY_SIZE(minstrel_mcs_groups); group++) {
|
|
@ -1,481 +0,0 @@
|
|||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Fri, 14 Jun 2019 21:15:47 +0200
|
||||
Subject: [PATCH] mac80211: minstrel_ht: improve rate probing for devices
|
||||
with static fallback
|
||||
|
||||
On some devices that only support static rate fallback tables sending rate
|
||||
control probing packets can be really expensive.
|
||||
Probing lower rates can already hurt throughput quite a bit. What hurts even
|
||||
more is the fact that on mt76x0/mt76x2, single probing packets can only be
|
||||
forced by directing packets at a different internal hardware queue, which
|
||||
causes some heavy reordering and extra latency.
|
||||
The reordering issue is mainly problematic while pushing lots of packets to
|
||||
a particular station. If there is little activity, the overhead of probing is
|
||||
neglegible.
|
||||
|
||||
The static fallback behavior is designed to pretty much only handle rate
|
||||
control algorithms that use only a very limited set of rates on which the
|
||||
algorithm switches up/down based on packet error rate.
|
||||
|
||||
In order to better support that kind of hardware, this patch implements a
|
||||
different approach to rate probing where it switches to a slightly higher rate,
|
||||
waits for tx status feedback, then updates the stats and switches back to
|
||||
the new max throughput rate. This only triggers above a packet rate of 100
|
||||
per stats interval (~50ms).
|
||||
For that kind of probing, the code has to reduce the set of probing rates
|
||||
a lot more compared to single packet probing, so it uses only one packet
|
||||
per MCS group which is either slightly faster, or as close as possible to
|
||||
the max throughput rate.
|
||||
This allows switching between similar rates with different numbers of
|
||||
streams. The algorithm assumes that the hardware will work its way lower
|
||||
within an MCS group in case of retransmissions, so that lower rates don't
|
||||
have to be probed by the high packets per second rate probing code.
|
||||
|
||||
To further reduce the search space, it also does not probe rates with lower
|
||||
channel bandwidth than the max throughput rate.
|
||||
|
||||
At the moment, these changes will only affect mt76x0/mt76x2.
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/rc80211_minstrel.h
|
||||
+++ b/net/mac80211/rc80211_minstrel.h
|
||||
@@ -114,6 +114,7 @@ struct minstrel_sta_info {
|
||||
struct minstrel_priv {
|
||||
struct ieee80211_hw *hw;
|
||||
bool has_mrr;
|
||||
+ u32 sample_switch;
|
||||
unsigned int cw_min;
|
||||
unsigned int cw_max;
|
||||
unsigned int max_retry;
|
||||
--- a/net/mac80211/rc80211_minstrel_ht.c
|
||||
+++ b/net/mac80211/rc80211_minstrel_ht.c
|
||||
@@ -21,6 +21,8 @@
|
||||
#define AVG_AMPDU_SIZE 16
|
||||
#define AVG_PKT_SIZE 1200
|
||||
|
||||
+#define SAMPLE_SWITCH_THR 100
|
||||
+
|
||||
/* Number of bits for an average sized packet */
|
||||
#define MCS_NBITS ((AVG_PKT_SIZE * AVG_AMPDU_SIZE) << 3)
|
||||
|
||||
@@ -59,6 +61,7 @@
|
||||
[GROUP_IDX(_streams, _sgi, _ht40)] = { \
|
||||
.streams = _streams, \
|
||||
.shift = _s, \
|
||||
+ .bw = _ht40, \
|
||||
.flags = \
|
||||
IEEE80211_TX_RC_MCS | \
|
||||
(_sgi ? IEEE80211_TX_RC_SHORT_GI : 0) | \
|
||||
@@ -95,6 +98,7 @@
|
||||
[VHT_GROUP_IDX(_streams, _sgi, _bw)] = { \
|
||||
.streams = _streams, \
|
||||
.shift = _s, \
|
||||
+ .bw = _bw, \
|
||||
.flags = \
|
||||
IEEE80211_TX_RC_VHT_MCS | \
|
||||
(_sgi ? IEEE80211_TX_RC_SHORT_GI : 0) | \
|
||||
@@ -527,6 +531,133 @@ minstrel_ht_prob_rate_reduce_streams(str
|
||||
}
|
||||
}
|
||||
|
||||
+static inline int
|
||||
+minstrel_get_duration(int index)
|
||||
+{
|
||||
+ const struct mcs_group *group = &minstrel_mcs_groups[index / MCS_GROUP_RATES];
|
||||
+ unsigned int duration = group->duration[index % MCS_GROUP_RATES];
|
||||
+ return duration << group->shift;
|
||||
+}
|
||||
+
|
||||
+static bool
|
||||
+minstrel_ht_probe_group(struct minstrel_ht_sta *mi, const struct mcs_group *tp_group,
|
||||
+ int tp_idx, const struct mcs_group *group)
|
||||
+{
|
||||
+ if (group->bw < tp_group->bw)
|
||||
+ return false;
|
||||
+
|
||||
+ if (group->streams == tp_group->streams)
|
||||
+ return true;
|
||||
+
|
||||
+ if (tp_idx < 4 && group->streams == tp_group->streams - 1)
|
||||
+ return true;
|
||||
+
|
||||
+ return group->streams == tp_group->streams + 1;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+minstrel_ht_find_probe_rates(struct minstrel_ht_sta *mi, u16 *rates, int *n_rates,
|
||||
+ bool faster_rate)
|
||||
+{
|
||||
+ const struct mcs_group *group, *tp_group;
|
||||
+ int i, g, max_dur;
|
||||
+ int tp_idx;
|
||||
+
|
||||
+ tp_group = &minstrel_mcs_groups[mi->max_tp_rate[0] / MCS_GROUP_RATES];
|
||||
+ tp_idx = mi->max_tp_rate[0] % MCS_GROUP_RATES;
|
||||
+
|
||||
+ max_dur = minstrel_get_duration(mi->max_tp_rate[0]);
|
||||
+ if (faster_rate)
|
||||
+ max_dur -= max_dur / 16;
|
||||
+
|
||||
+ for (g = 0; g < MINSTREL_GROUPS_NB; g++) {
|
||||
+ u16 supported = mi->supported[g];
|
||||
+
|
||||
+ if (!supported)
|
||||
+ continue;
|
||||
+
|
||||
+ group = &minstrel_mcs_groups[g];
|
||||
+ if (!minstrel_ht_probe_group(mi, tp_group, tp_idx, group))
|
||||
+ continue;
|
||||
+
|
||||
+ for (i = 0; supported; supported >>= 1, i++) {
|
||||
+ int idx;
|
||||
+
|
||||
+ if (!(supported & 1))
|
||||
+ continue;
|
||||
+
|
||||
+ if ((group->duration[i] << group->shift) > max_dur)
|
||||
+ continue;
|
||||
+
|
||||
+ idx = g * MCS_GROUP_RATES + i;
|
||||
+ if (idx == mi->max_tp_rate[0])
|
||||
+ continue;
|
||||
+
|
||||
+ rates[(*n_rates)++] = idx;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+minstrel_ht_rate_sample_switch(struct minstrel_priv *mp,
|
||||
+ struct minstrel_ht_sta *mi)
|
||||
+{
|
||||
+ struct minstrel_rate_stats *mrs;
|
||||
+ u16 rates[MINSTREL_GROUPS_NB];
|
||||
+ int n_rates = 0;
|
||||
+ int probe_rate = 0;
|
||||
+ bool faster_rate;
|
||||
+ int i;
|
||||
+ u8 random;
|
||||
+
|
||||
+ /*
|
||||
+ * Use rate switching instead of probing packets for devices with
|
||||
+ * little control over retry fallback behavior
|
||||
+ */
|
||||
+ if (mp->hw->max_rates > 1)
|
||||
+ return;
|
||||
+
|
||||
+ /*
|
||||
+ * If the current EWMA prob is >75%, look for a rate that's 6.25%
|
||||
+ * faster than the max tp rate.
|
||||
+ * If that fails, look again for a rate that is at least as fast
|
||||
+ */
|
||||
+ mrs = minstrel_get_ratestats(mi, mi->max_tp_rate[0]);
|
||||
+ faster_rate = mrs->prob_ewma > MINSTREL_FRAC(75, 100);
|
||||
+ minstrel_ht_find_probe_rates(mi, rates, &n_rates, faster_rate);
|
||||
+ if (!n_rates && faster_rate)
|
||||
+ minstrel_ht_find_probe_rates(mi, rates, &n_rates, false);
|
||||
+
|
||||
+ /* If no suitable rate was found, try to pick the next one in the group */
|
||||
+ if (!n_rates) {
|
||||
+ int g_idx = mi->max_tp_rate[0] / MCS_GROUP_RATES;
|
||||
+ u16 supported = mi->supported[g_idx];
|
||||
+
|
||||
+ supported >>= mi->max_tp_rate[0] % MCS_GROUP_RATES;
|
||||
+ for (i = 0; supported; i++) {
|
||||
+ if (!(supported & 1))
|
||||
+ continue;
|
||||
+
|
||||
+ probe_rate = mi->max_tp_rate[0] + i;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ i = 0;
|
||||
+ if (n_rates > 1) {
|
||||
+ random = prandom_u32();
|
||||
+ i = random % n_rates;
|
||||
+ }
|
||||
+ probe_rate = rates[i];
|
||||
+
|
||||
+out:
|
||||
+ mi->sample_rate = probe_rate;
|
||||
+ mi->sample_mode = MINSTREL_SAMPLE_ACTIVE;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Update rate statistics and select new primary rates
|
||||
*
|
||||
@@ -537,7 +668,8 @@ minstrel_ht_prob_rate_reduce_streams(str
|
||||
* higher throughput rates, even if the probablity is a bit lower
|
||||
*/
|
||||
static void
|
||||
-minstrel_ht_update_stats(struct minstrel_priv *mp, struct minstrel_ht_sta *mi)
|
||||
+minstrel_ht_update_stats(struct minstrel_priv *mp, struct minstrel_ht_sta *mi,
|
||||
+ bool sample)
|
||||
{
|
||||
struct minstrel_mcs_group_data *mg;
|
||||
struct minstrel_rate_stats *mrs;
|
||||
@@ -545,6 +677,18 @@ minstrel_ht_update_stats(struct minstrel
|
||||
u16 tmp_mcs_tp_rate[MAX_THR_RATES], tmp_group_tp_rate[MAX_THR_RATES];
|
||||
u16 tmp_cck_tp_rate[MAX_THR_RATES], index;
|
||||
|
||||
+ mi->sample_mode = MINSTREL_SAMPLE_IDLE;
|
||||
+
|
||||
+ if (sample) {
|
||||
+ mi->total_packets_cur = mi->total_packets -
|
||||
+ mi->total_packets_last;
|
||||
+ mi->total_packets_last = mi->total_packets;
|
||||
+ }
|
||||
+ if (!mp->sample_switch)
|
||||
+ sample = false;
|
||||
+ if (mi->total_packets_cur < SAMPLE_SWITCH_THR && mp->sample_switch != 1)
|
||||
+ sample = false;
|
||||
+
|
||||
if (mi->ampdu_packets > 0) {
|
||||
if (!ieee80211_hw_check(mp->hw, TX_STATUS_NO_AMPDU_LEN))
|
||||
mi->avg_ampdu_len = minstrel_ewma(mi->avg_ampdu_len,
|
||||
@@ -631,12 +775,16 @@ minstrel_ht_update_stats(struct minstrel
|
||||
/* try to sample all available rates during each interval */
|
||||
mi->sample_count *= 8;
|
||||
|
||||
+ if (sample)
|
||||
+ minstrel_ht_rate_sample_switch(mp, mi);
|
||||
+
|
||||
#ifdef CPTCFG_MAC80211_DEBUGFS
|
||||
/* use fixed index if set */
|
||||
if (mp->fixed_rate_idx != -1) {
|
||||
for (i = 0; i < 4; i++)
|
||||
mi->max_tp_rate[i] = mp->fixed_rate_idx;
|
||||
mi->max_prob_rate = mp->fixed_rate_idx;
|
||||
+ mi->sample_mode = MINSTREL_SAMPLE_IDLE;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -740,15 +888,17 @@ minstrel_ht_tx_status(void *priv, struct
|
||||
struct minstrel_ht_sta_priv *msp = priv_sta;
|
||||
struct minstrel_ht_sta *mi = &msp->ht;
|
||||
struct ieee80211_tx_rate *ar = info->status.rates;
|
||||
- struct minstrel_rate_stats *rate, *rate2;
|
||||
+ struct minstrel_rate_stats *rate, *rate2, *rate_sample = NULL;
|
||||
struct minstrel_priv *mp = priv;
|
||||
bool last, update = false;
|
||||
+ bool sample_status = false;
|
||||
int i;
|
||||
|
||||
if (!msp->is_ht)
|
||||
return mac80211_minstrel.tx_status_ext(priv, sband,
|
||||
&msp->legacy, st);
|
||||
|
||||
+
|
||||
/* This packet was aggregated but doesn't carry status info */
|
||||
if ((info->flags & IEEE80211_TX_CTL_AMPDU) &&
|
||||
!(info->flags & IEEE80211_TX_STAT_AMPDU))
|
||||
@@ -774,12 +924,17 @@ minstrel_ht_tx_status(void *priv, struct
|
||||
if (info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE)
|
||||
mi->sample_packets += info->status.ampdu_len;
|
||||
|
||||
+ if (mi->sample_mode != MINSTREL_SAMPLE_IDLE)
|
||||
+ rate_sample = minstrel_get_ratestats(mi, mi->sample_rate);
|
||||
+
|
||||
last = !minstrel_ht_txstat_valid(mp, &ar[0]);
|
||||
for (i = 0; !last; i++) {
|
||||
last = (i == IEEE80211_TX_MAX_RATES - 1) ||
|
||||
!minstrel_ht_txstat_valid(mp, &ar[i + 1]);
|
||||
|
||||
rate = minstrel_ht_get_stats(mp, mi, &ar[i]);
|
||||
+ if (rate == rate_sample)
|
||||
+ sample_status = true;
|
||||
|
||||
if (last)
|
||||
rate->success += info->status.ampdu_ack_len;
|
||||
@@ -787,44 +942,60 @@ minstrel_ht_tx_status(void *priv, struct
|
||||
rate->attempts += ar[i].count * info->status.ampdu_len;
|
||||
}
|
||||
|
||||
- /*
|
||||
- * check for sudden death of spatial multiplexing,
|
||||
- * downgrade to a lower number of streams if necessary.
|
||||
- */
|
||||
- rate = minstrel_get_ratestats(mi, mi->max_tp_rate[0]);
|
||||
- if (rate->attempts > 30 &&
|
||||
- MINSTREL_FRAC(rate->success, rate->attempts) <
|
||||
- MINSTREL_FRAC(20, 100)) {
|
||||
- minstrel_downgrade_rate(mi, &mi->max_tp_rate[0], true);
|
||||
+ switch (mi->sample_mode) {
|
||||
+ case MINSTREL_SAMPLE_IDLE:
|
||||
+ break;
|
||||
+
|
||||
+ case MINSTREL_SAMPLE_ACTIVE:
|
||||
+ if (!sample_status)
|
||||
+ break;
|
||||
+
|
||||
+ mi->sample_mode = MINSTREL_SAMPLE_PENDING;
|
||||
update = true;
|
||||
- }
|
||||
+ break;
|
||||
+
|
||||
+ case MINSTREL_SAMPLE_PENDING:
|
||||
+ if (sample_status)
|
||||
+ break;
|
||||
|
||||
- rate2 = minstrel_get_ratestats(mi, mi->max_tp_rate[1]);
|
||||
- if (rate2->attempts > 30 &&
|
||||
- MINSTREL_FRAC(rate2->success, rate2->attempts) <
|
||||
- MINSTREL_FRAC(20, 100)) {
|
||||
- minstrel_downgrade_rate(mi, &mi->max_tp_rate[1], false);
|
||||
update = true;
|
||||
+ minstrel_ht_update_stats(mp, mi, false);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+
|
||||
+ if (mp->hw->max_rates > 1) {
|
||||
+ /*
|
||||
+ * check for sudden death of spatial multiplexing,
|
||||
+ * downgrade to a lower number of streams if necessary.
|
||||
+ */
|
||||
+ rate = minstrel_get_ratestats(mi, mi->max_tp_rate[0]);
|
||||
+ if (rate->attempts > 30 &&
|
||||
+ MINSTREL_FRAC(rate->success, rate->attempts) <
|
||||
+ MINSTREL_FRAC(20, 100)) {
|
||||
+ minstrel_downgrade_rate(mi, &mi->max_tp_rate[0], true);
|
||||
+ update = true;
|
||||
+ }
|
||||
+
|
||||
+ rate2 = minstrel_get_ratestats(mi, mi->max_tp_rate[1]);
|
||||
+ if (rate2->attempts > 30 &&
|
||||
+ MINSTREL_FRAC(rate2->success, rate2->attempts) <
|
||||
+ MINSTREL_FRAC(20, 100)) {
|
||||
+ minstrel_downgrade_rate(mi, &mi->max_tp_rate[1], false);
|
||||
+ update = true;
|
||||
+ }
|
||||
}
|
||||
|
||||
if (time_after(jiffies, mi->last_stats_update +
|
||||
(mp->update_interval / 2 * HZ) / 1000)) {
|
||||
update = true;
|
||||
- minstrel_ht_update_stats(mp, mi);
|
||||
+ minstrel_ht_update_stats(mp, mi, true);
|
||||
}
|
||||
|
||||
if (update)
|
||||
minstrel_ht_update_rates(mp, mi);
|
||||
}
|
||||
|
||||
-static inline int
|
||||
-minstrel_get_duration(int index)
|
||||
-{
|
||||
- const struct mcs_group *group = &minstrel_mcs_groups[index / MCS_GROUP_RATES];
|
||||
- unsigned int duration = group->duration[index % MCS_GROUP_RATES];
|
||||
- return duration << group->shift;
|
||||
-}
|
||||
-
|
||||
static void
|
||||
minstrel_calc_retransmit(struct minstrel_priv *mp, struct minstrel_ht_sta *mi,
|
||||
int index)
|
||||
@@ -989,14 +1160,18 @@ static void
|
||||
minstrel_ht_update_rates(struct minstrel_priv *mp, struct minstrel_ht_sta *mi)
|
||||
{
|
||||
struct ieee80211_sta_rates *rates;
|
||||
+ u16 first_rate = mi->max_tp_rate[0];
|
||||
int i = 0;
|
||||
|
||||
+ if (mi->sample_mode == MINSTREL_SAMPLE_ACTIVE)
|
||||
+ first_rate = mi->sample_rate;
|
||||
+
|
||||
rates = kzalloc(sizeof(*rates), GFP_ATOMIC);
|
||||
if (!rates)
|
||||
return;
|
||||
|
||||
/* Start with max_tp_rate[0] */
|
||||
- minstrel_ht_set_rate(mp, mi, rates, i++, mi->max_tp_rate[0]);
|
||||
+ minstrel_ht_set_rate(mp, mi, rates, i++, first_rate);
|
||||
|
||||
if (mp->hw->max_rates >= 3) {
|
||||
/* At least 3 tx rates supported, use max_tp_rate[1] next */
|
||||
@@ -1023,6 +1198,11 @@ minstrel_get_sample_rate(struct minstrel
|
||||
int tp_rate1, tp_rate2;
|
||||
int sample_idx = 0;
|
||||
|
||||
+ if (mp->hw->max_rates == 1 && mp->sample_switch &&
|
||||
+ (mi->total_packets_cur >= SAMPLE_SWITCH_THR ||
|
||||
+ mp->sample_switch == 1))
|
||||
+ return -1;
|
||||
+
|
||||
if (mi->sample_wait > 0) {
|
||||
mi->sample_wait--;
|
||||
return -1;
|
||||
@@ -1349,7 +1529,7 @@ minstrel_ht_update_caps(void *priv, stru
|
||||
mi->supported[MINSTREL_CCK_GROUP] |= mi->cck_supported_short << 4;
|
||||
|
||||
/* create an initial rate table with the lowest supported rates */
|
||||
- minstrel_ht_update_stats(mp, mi);
|
||||
+ minstrel_ht_update_stats(mp, mi, true);
|
||||
minstrel_ht_update_rates(mp, mi);
|
||||
|
||||
return;
|
||||
@@ -1467,6 +1647,8 @@ minstrel_ht_alloc(struct ieee80211_hw *h
|
||||
if (!mp)
|
||||
return NULL;
|
||||
|
||||
+ mp->sample_switch = -1;
|
||||
+
|
||||
/* contention window settings
|
||||
* Just an approximation. Using the per-queue values would complicate
|
||||
* the calculations and is probably unnecessary */
|
||||
@@ -1498,6 +1680,8 @@ minstrel_ht_alloc(struct ieee80211_hw *h
|
||||
mp->fixed_rate_idx = (u32) -1;
|
||||
debugfs_create_u32("fixed_rate_idx", S_IRUGO | S_IWUGO, debugfsdir,
|
||||
&mp->fixed_rate_idx);
|
||||
+ debugfs_create_u32("sample_switch", S_IRUGO | S_IWUSR, debugfsdir,
|
||||
+ &mp->sample_switch);
|
||||
#endif
|
||||
|
||||
minstrel_ht_init_cck_rates(mp);
|
||||
--- a/net/mac80211/rc80211_minstrel_ht.h
|
||||
+++ b/net/mac80211/rc80211_minstrel_ht.h
|
||||
@@ -36,6 +36,7 @@ struct mcs_group {
|
||||
u16 flags;
|
||||
u8 streams;
|
||||
u8 shift;
|
||||
+ u8 bw;
|
||||
u16 duration[MCS_GROUP_RATES];
|
||||
};
|
||||
|
||||
@@ -53,6 +54,12 @@ struct minstrel_mcs_group_data {
|
||||
struct minstrel_rate_stats rates[MCS_GROUP_RATES];
|
||||
};
|
||||
|
||||
+enum minstrel_sample_mode {
|
||||
+ MINSTREL_SAMPLE_IDLE,
|
||||
+ MINSTREL_SAMPLE_ACTIVE,
|
||||
+ MINSTREL_SAMPLE_PENDING,
|
||||
+};
|
||||
+
|
||||
struct minstrel_ht_sta {
|
||||
struct ieee80211_sta *sta;
|
||||
|
||||
@@ -74,6 +81,8 @@ struct minstrel_ht_sta {
|
||||
unsigned int overhead;
|
||||
unsigned int overhead_rtscts;
|
||||
|
||||
+ unsigned int total_packets_last;
|
||||
+ unsigned int total_packets_cur;
|
||||
unsigned int total_packets;
|
||||
unsigned int sample_packets;
|
||||
|
||||
@@ -85,6 +94,9 @@ struct minstrel_ht_sta {
|
||||
u8 sample_count;
|
||||
u8 sample_slow;
|
||||
|
||||
+ enum minstrel_sample_mode sample_mode;
|
||||
+ u16 sample_rate;
|
||||
+
|
||||
/* current MCS group to be sampled */
|
||||
u8 sample_group;
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Sat, 23 Mar 2019 18:26:10 +0100
|
||||
Subject: [PATCH] net: use bulk free in kfree_skb_list
|
||||
|
||||
Since we're freeing multiple skbs, we might as well use bulk free to save a
|
||||
few cycles. Use the same conditions for bulk free as in napi_consume_skb.
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/core/skbuff.c
|
||||
+++ b/net/core/skbuff.c
|
||||
@@ -666,12 +666,44 @@ EXPORT_SYMBOL(kfree_skb);
|
||||
|
||||
void kfree_skb_list(struct sk_buff *segs)
|
||||
{
|
||||
- while (segs) {
|
||||
- struct sk_buff *next = segs->next;
|
||||
+ struct sk_buff *next = segs;
|
||||
+ void *skbs[16];
|
||||
+ int n_skbs = 0;
|
||||
|
||||
- kfree_skb(segs);
|
||||
- segs = next;
|
||||
+ while ((segs = next) != NULL) {
|
||||
+ next = segs->next;
|
||||
+
|
||||
+ if (segs->fclone != SKB_FCLONE_UNAVAILABLE) {
|
||||
+ kfree_skb(segs);
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ if (!skb_unref(segs))
|
||||
+ continue;
|
||||
+
|
||||
+ trace_kfree_skb(segs, __builtin_return_address(0));
|
||||
+
|
||||
+ /* drop skb->head and call any destructors for packet */
|
||||
+ skb_release_all(segs);
|
||||
+
|
||||
+#ifdef CONFIG_SLUB
|
||||
+ /* SLUB writes into objects when freeing */
|
||||
+ prefetchw(segs);
|
||||
+#endif
|
||||
+
|
||||
+ skbs[n_skbs++] = segs;
|
||||
+
|
||||
+ if (n_skbs < ARRAY_SIZE(skbs))
|
||||
+ continue;
|
||||
+
|
||||
+ kmem_cache_free_bulk(skbuff_head_cache, n_skbs, skbs);
|
||||
+ n_skbs = 0;
|
||||
}
|
||||
+
|
||||
+ if (!n_skbs)
|
||||
+ return;
|
||||
+
|
||||
+ kmem_cache_free_bulk(skbuff_head_cache, n_skbs, skbs);
|
||||
}
|
||||
EXPORT_SYMBOL(kfree_skb_list);
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Sat, 23 Mar 2019 18:26:10 +0100
|
||||
Subject: [PATCH] net: use bulk free in kfree_skb_list
|
||||
|
||||
Since we're freeing multiple skbs, we might as well use bulk free to save a
|
||||
few cycles. Use the same conditions for bulk free as in napi_consume_skb.
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/core/skbuff.c
|
||||
+++ b/net/core/skbuff.c
|
||||
@@ -666,12 +666,44 @@ EXPORT_SYMBOL(kfree_skb);
|
||||
|
||||
void kfree_skb_list(struct sk_buff *segs)
|
||||
{
|
||||
- while (segs) {
|
||||
- struct sk_buff *next = segs->next;
|
||||
+ struct sk_buff *next = segs;
|
||||
+ void *skbs[16];
|
||||
+ int n_skbs = 0;
|
||||
|
||||
- kfree_skb(segs);
|
||||
- segs = next;
|
||||
+ while ((segs = next) != NULL) {
|
||||
+ next = segs->next;
|
||||
+
|
||||
+ if (segs->fclone != SKB_FCLONE_UNAVAILABLE) {
|
||||
+ kfree_skb(segs);
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ if (!skb_unref(segs))
|
||||
+ continue;
|
||||
+
|
||||
+ trace_kfree_skb(segs, __builtin_return_address(0));
|
||||
+
|
||||
+ /* drop skb->head and call any destructors for packet */
|
||||
+ skb_release_all(segs);
|
||||
+
|
||||
+#ifdef CONFIG_SLUB
|
||||
+ /* SLUB writes into objects when freeing */
|
||||
+ prefetchw(segs);
|
||||
+#endif
|
||||
+
|
||||
+ skbs[n_skbs++] = segs;
|
||||
+
|
||||
+ if (n_skbs < ARRAY_SIZE(skbs))
|
||||
+ continue;
|
||||
+
|
||||
+ kmem_cache_free_bulk(skbuff_head_cache, n_skbs, skbs);
|
||||
+ n_skbs = 0;
|
||||
}
|
||||
+
|
||||
+ if (!n_skbs)
|
||||
+ return;
|
||||
+
|
||||
+ kmem_cache_free_bulk(skbuff_head_cache, n_skbs, skbs);
|
||||
}
|
||||
EXPORT_SYMBOL(kfree_skb_list);
|
||||
|
|
@ -415,7 +415,6 @@ ramips_setup_interfaces()
|
|||
"0:lan:3" "1:lan:2" "2:lan:1" "3:wan" "6@eth0"
|
||||
;;
|
||||
planex,mzk-dp150n|\
|
||||
sge,ap-mtkh7-0006|\
|
||||
vocore,vocore-8m|\
|
||||
vocore,vocore-16m)
|
||||
ucidef_add_switch "switch0" \
|
||||
|
@ -453,10 +452,6 @@ ramips_setup_interfaces()
|
|||
ucidef_add_switch "switch0" \
|
||||
"0:lan" "2:lan" "6t@eth0"
|
||||
;;
|
||||
wio,wio-one)
|
||||
ucidef_add_switch "switch0" \
|
||||
"0:lan:1" "1:lan:2" "2:lan:3" "3:lan:4" "4:wan" "6@eth0"
|
||||
;;
|
||||
wiznet,wizfi630a)
|
||||
ucidef_add_switch "switch0" \
|
||||
"0:lan" "1:lan" "2:wan" "6@eth0"
|
||||
|
|
|
@ -1,111 +0,0 @@
|
|||
/dts-v1/;
|
||||
|
||||
#include "mt7621.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
||||
/ {
|
||||
compatible = "sge,ap-mtkh7-0006", "mediatek,mt7621-soc";
|
||||
model = "SGE AP-MTKH7-0006";
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttyS0,57600";
|
||||
};
|
||||
|
||||
wdt@18 {
|
||||
status = "okay";
|
||||
compatible = "linux,wdt-gpio";
|
||||
|
||||
always-running;
|
||||
hw_algo = "level";
|
||||
hw_margin_ms = <60000>;
|
||||
gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
&wdt {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
status = "okay";
|
||||
|
||||
m25p80@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <10000000>;
|
||||
m25p,chunked-io = <32>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "u-boot";
|
||||
reg = <0x0 0x30000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@30000 {
|
||||
label = "u-boot-env";
|
||||
reg = <0x30000 0x10000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
factory: partition@40000 {
|
||||
label = "factory";
|
||||
reg = <0x40000 0x10000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@50000 {
|
||||
label = "firmware";
|
||||
reg = <0x50000 0x7b0000>;
|
||||
};
|
||||
|
||||
partition@850000 {
|
||||
label = "firmware2";
|
||||
reg = <0x850000 0x7b0000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
ðernet {
|
||||
mtd-mac-address = <&factory 4>;
|
||||
mtd-mac-address-increment = <(-2)>;
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
state_default: pinctrl0 {
|
||||
gpio {
|
||||
ralink,group = "i2c", "uart2", "uart3", "rgmii2", "sdhci", "wdt";
|
||||
ralink,function = "gpio";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pcie {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
mt76@0,0 {
|
||||
reg = <0x0000 0 0 0 0>;
|
||||
mediatek,mtd-eeprom = <&factory 0x8000>;
|
||||
ieee80211-freq-limit = <5000000 6000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&pcie1 {
|
||||
mt76@0,0 {
|
||||
reg = <0x0000 0 0 0 0>;
|
||||
mediatek,mtd-eeprom = <&factory 0x0000>;
|
||||
};
|
||||
};
|
||||
|
||||
&xhci {
|
||||
status = "disabled";
|
||||
};
|
|
@ -1,130 +0,0 @@
|
|||
/dts-v1/;
|
||||
|
||||
#include "mt7621.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
||||
/ {
|
||||
compatible = "wio,wio-one", "mediatek,mt7621-soc";
|
||||
model = "WIO ONE";
|
||||
|
||||
aliases {
|
||||
led-boot = &led_power;
|
||||
led-failsafe = &led_power;
|
||||
led-running = &led_power;
|
||||
led-upgrade = &led_power;
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttyS0,57600";
|
||||
};
|
||||
|
||||
gpio-leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led_power: power {
|
||||
label = "wio-one:green:power";
|
||||
gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
alarm {
|
||||
label = "wio-one:red:alarm";
|
||||
gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
gpio_export {
|
||||
compatible = "gpio-export";
|
||||
#size-cells = <0>;
|
||||
|
||||
usb_power {
|
||||
gpio-export,name = "usb";
|
||||
gpio-export,output = <1>;
|
||||
gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
status = "okay";
|
||||
|
||||
m25p80@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <104000000>;
|
||||
m25p,fast-read;
|
||||
m25p,chunked-io = <32>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "u-boot";
|
||||
reg = <0x0 0x30000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@30000 {
|
||||
label = "u-boot-env";
|
||||
reg = <0x30000 0x10000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
factory: partition@40000 {
|
||||
label = "factory";
|
||||
reg = <0x40000 0x10000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@50000 {
|
||||
label = "firmware";
|
||||
reg = <0x50000 0xfb0000>;
|
||||
compatible = "denx,uimage";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
ðernet {
|
||||
mtd-mac-address = <&factory 4>;
|
||||
mtd-mac-address-increment = <(-2)>;
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
state_default: pinctrl0 {
|
||||
gpio {
|
||||
ralink,group = "i2c", "uart2", "uart3", "rgmii2", "sdhci", "jtag";
|
||||
ralink,function = "gpio";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pcie {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
mt76@0,0 {
|
||||
reg = <0x0000 0 0 0 0>;
|
||||
mediatek,mtd-eeprom = <&factory 0x8000>;
|
||||
ieee80211-freq-limit = <5000000 6000000>;
|
||||
adant,sas-devid = <1>;
|
||||
adant,sas-gpio = <45 46 47 48>;
|
||||
};
|
||||
};
|
||||
|
||||
&pcie1 {
|
||||
mt76@0,0 {
|
||||
reg = <0x0000 0 0 0 0>;
|
||||
mediatek,mtd-eeprom = <&factory 0x0000>;
|
||||
adant,sas-devid = <0>;
|
||||
adant,sas-gpio = <41 42 43 44>;
|
||||
};
|
||||
};
|
||||
|
||||
&xhci {
|
||||
status = "disabled";
|
||||
};
|
|
@ -685,27 +685,6 @@ define Device/xzwifi_creativebox-v1
|
|||
endef
|
||||
TARGET_DEVICES += xzwifi_creativebox-v1
|
||||
|
||||
define Device/ap-mtkh7-0006
|
||||
DTS := AP-MTKH7-0006
|
||||
IMAGE_SIZE := $(ralink_default_fw_size_32M)
|
||||
SUPPORTED_DEVICES := sge,ap-mtkh7-0006
|
||||
DEVICE_TITLE := SGE AP-MTKH7-0006
|
||||
DEVICE_PACKAGES := \
|
||||
kmod-sdhci-mt7620 kmod-mt7603 kmod-mt76x2 \
|
||||
kmod-usb3 kmod-usb-ledtrig-usbport wpad-mini
|
||||
endef
|
||||
TARGET_DEVICES += ap-mtkh7-0006
|
||||
|
||||
define Device/wio-one
|
||||
DTS := WIO-ONE
|
||||
IMAGE_SIZE := $(ralink_default_fw_size_16M)
|
||||
SUPPORTED_DEVICES := wio,wio-one
|
||||
DEVICE_TITLE := WIO ONE
|
||||
DEVICE_PACKAGES := \
|
||||
kmod-mt7603 kmod-mt76x2 kmod-usb3 wpad-mini
|
||||
endef
|
||||
TARGET_DEVICES += wio-one
|
||||
|
||||
define Device/youhua_wr1200js
|
||||
MTK_SOC := mt7621
|
||||
IMAGE_SIZE := 16064k
|
||||
|
|
|
@ -91,8 +91,6 @@ CONFIG_GPIOLIB=y
|
|||
CONFIG_GPIO_MT7621=y
|
||||
# CONFIG_GPIO_RALINK is not set
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
CONFIG_GPIO_WATCHDOG=y
|
||||
CONFIG_GPIO_WATCHDOG_ARCH_INITCALL=y
|
||||
# CONFIG_GRO_CELLS is not set
|
||||
CONFIG_HANDLE_DOMAIN_IRQ=y
|
||||
CONFIG_HARDWARE_WATCHPOINTS=y
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
curdir:=toolchain
|
||||
|
||||
# subdirectories to descend into
|
||||
$(curdir)/builddirs := $(if $(CONFIG_GDB),gdb) $(if $(CONFIG_EXTERNAL_TOOLCHAIN),wrapper,kernel-headers binutils gcc/initial gcc/final $(LIBC) fortify-headers) $(if $(CONFIG_NASM),nasm) autoconf-lean
|
||||
$(curdir)/builddirs := $(if $(CONFIG_GDB),gdb) $(if $(CONFIG_EXTERNAL_TOOLCHAIN),wrapper,kernel-headers binutils gcc/initial gcc/final $(LIBC) fortify-headers) $(if $(CONFIG_NASM),nasm)
|
||||
ifdef CONFIG_USE_UCLIBC
|
||||
$(curdir)/builddirs += $(LIBC)/utils
|
||||
endif
|
||||
|
@ -51,7 +51,6 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
|||
$(curdir)/$(LIBC)/compile:=$(curdir)/gcc/initial/compile
|
||||
$(curdir)/gcc/final/compile:=$(curdir)/$(LIBC)/compile $(curdir)/kernel-headers/compile
|
||||
$(curdir)/$(LIBC)/utils/compile:=$(curdir)/gcc/final/compile
|
||||
$(curdir)/autoconf-lean/compile:=$(curdir)/gcc/final/compile
|
||||
endif
|
||||
|
||||
ifndef DUMP_TARGET_DB
|
||||
|
|
|
@ -1,65 +0,0 @@
|
|||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=autoconf-lean
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2012-09-01
|
||||
PKG_SOURCE_URL:=https://github.com/GregorR/autoconf-lean
|
||||
PKG_SOURCE_VERSION:=bd81206959881c511b28e16e81b0a281fd15bd02
|
||||
|
||||
PKG_HASH:=e728ed296fe9f069a0e005003c3d6b2dde3d9cad453422a10d6558616d304cc8
|
||||
|
||||
HOST_FIXUP := autoreconf
|
||||
|
||||
HOST_BUILD_PREFIX:=$(TOOLCHAIN_DIR)
|
||||
BUILD_DIR_HOST:=$(BUILD_DIR_TOOLCHAIN)
|
||||
|
||||
include $(INCLUDE_DIR)/host-build.mk
|
||||
|
||||
HOST_CONFIG_SITE:=$(CURDIR)/config.site
|
||||
|
||||
CONFIGURE_PATH := config-site-generator
|
||||
|
||||
HOST_CONFIGURE_VARS := \
|
||||
$(TARGET_CONFIGURE_OPTS) \
|
||||
CFLAGS="$(TARGET_CFLAGS)" \
|
||||
CXXFLAGS="$(TARGET_CXXFLAGS)" \
|
||||
CPPFLAGS="$(TARGET_CPPFLAGS)" \
|
||||
LDFLAGS="$(TARGET_LDFLAGS)"
|
||||
|
||||
HOST_CONFIGURE_ARGS := \
|
||||
--target=$(GNU_TARGET_NAME) \
|
||||
--host=$(GNU_TARGET_NAME) \
|
||||
--build=$(GNU_HOST_NAME) \
|
||||
--program-prefix="" \
|
||||
--program-suffix="" \
|
||||
--prefix=$(TOOLCHAIN_DIR) \
|
||||
--exec-prefix=$(TOOLCHAIN_DIR) \
|
||||
--bindir=$(TOOLCHAIN_DIR)/bin \
|
||||
--sbindir=$(TOOLCHAIN_DIR)/sbin \
|
||||
--libexecdir=$(TOOLCHAIN_DIR)/lib
|
||||
|
||||
HOST_MAKE_VARS :=
|
||||
|
||||
HOST_MAKE_FLAGS :=
|
||||
|
||||
define Host/Configure
|
||||
$(call Host/Configure/Default,,,config-site-generator)
|
||||
endef
|
||||
|
||||
define Host/Compile
|
||||
$(MAKE) -C $(HOST_BUILD_DIR)/config-site-generator
|
||||
endef
|
||||
|
||||
define Host/Install
|
||||
grep -v '/' \
|
||||
$(HOST_BUILD_DIR)/config-site-generator/config.site \
|
||||
> $(TOOLCHAIN_DIR)/config.site
|
||||
endef
|
||||
|
||||
$(eval $(call HostBuild))
|
File diff suppressed because it is too large
Load Diff
|
@ -1,93 +0,0 @@
|
|||
--- a/config-site-generator/configure.ac
|
||||
+++ b/config-site-generator/configure.ac
|
||||
@@ -31,16 +31,16 @@ AC_PROG_GCC_TRADITIONAL
|
||||
AC_PROG_CXX
|
||||
AC_PROG_CXXCPP
|
||||
AC_PROG_CXX_C_O
|
||||
-AC_PROG_OBJC
|
||||
-AC_PROG_OBJCPP
|
||||
-AC_PROG_OBJCXX
|
||||
-AC_PROG_OBJCXXCPP
|
||||
+#AC_PROG_OBJC
|
||||
+#AC_PROG_OBJCPP
|
||||
+#AC_PROG_OBJCXX
|
||||
+#AC_PROG_OBJCXXCPP
|
||||
#AC_ERLANG_PATH_ERLC
|
||||
#AC_ERLANG_PATH_ERL
|
||||
-AC_PROG_F77
|
||||
-AC_PROG_FC
|
||||
-AC_PROG_F77_C_O
|
||||
-AC_PROG_FC_C_O
|
||||
+#AC_PROG_F77
|
||||
+#AC_PROG_FC
|
||||
+#AC_PROG_F77_C_O
|
||||
+#AC_PROG_FC_C_O
|
||||
#AC_PROG_GO
|
||||
AC_PROG_AWK
|
||||
AC_PROG_GREP
|
||||
@@ -52,13 +52,13 @@ AC_PROG_LEX
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_RANLIB
|
||||
AC_PROG_SED
|
||||
-AC_PROG_YACC
|
||||
+#AC_PROG_YACC
|
||||
|
||||
AM_PROG_AS
|
||||
|
||||
# Checks for system services.
|
||||
-AC_PATH_X
|
||||
-AC_PATH_XTRA
|
||||
+#AC_PATH_X
|
||||
+#AC_PATH_XTRA
|
||||
AC_SYS_INTERPRETER
|
||||
AC_SYS_LARGEFILE
|
||||
AC_SYS_LONG_FILE_NAMES
|
||||
@@ -163,27 +163,27 @@ AC_C_FLEXIBLE_ARRAY_MEMBER
|
||||
AC_C_VARARRAYS
|
||||
AC_C_TYPEOF
|
||||
AC_C_PROTOTYPES
|
||||
-AC_F77_LIBRARY_LDFLAGS
|
||||
-AC_FC_LIBRARY_LDFLAGS
|
||||
-AC_F77_DUMMY_MAIN
|
||||
-AC_FC_DUMMY_MAIN
|
||||
-AC_F77_MAIN
|
||||
-AC_FC_MAIN
|
||||
-AC_F77_WRAPPERS
|
||||
-AC_FC_WRAPPERS
|
||||
-AC_F77_FUNC
|
||||
-AC_FC_FUNC
|
||||
-AC_FC_PP_SRCEXT
|
||||
-AC_FC_PP_DEFINE
|
||||
-AC_FC_FREEFORM
|
||||
-AC_FC_FIXEDFORM
|
||||
-AC_FC_LINE_LENGTH
|
||||
-AC_FC_CHECK_BOUNDS
|
||||
-AC_F77_IMPLICIT_NONE
|
||||
-AC_FC_IMPLICIT_NONE
|
||||
-AC_FC_MODULE_EXTENSION
|
||||
-AC_FC_MODULE_FLAG
|
||||
-AC_FC_MODULE_OUTPUT_FLAG
|
||||
+#AC_F77_LIBRARY_LDFLAGS
|
||||
+#AC_FC_LIBRARY_LDFLAGS
|
||||
+#AC_F77_DUMMY_MAIN
|
||||
+#AC_FC_DUMMY_MAIN
|
||||
+#AC_F77_MAIN
|
||||
+#AC_FC_MAIN
|
||||
+#AC_F77_WRAPPERS
|
||||
+#AC_FC_WRAPPERS
|
||||
+#AC_F77_FUNC
|
||||
+#AC_FC_FUNC
|
||||
+#AC_FC_PP_SRCEXT
|
||||
+#AC_FC_PP_DEFINE
|
||||
+#AC_FC_FREEFORM
|
||||
+#AC_FC_FIXEDFORM
|
||||
+#AC_FC_LINE_LENGTH
|
||||
+#AC_FC_CHECK_BOUNDS
|
||||
+#AC_F77_IMPLICIT_NONE
|
||||
+#AC_FC_IMPLICIT_NONE
|
||||
+#AC_FC_MODULE_EXTENSION
|
||||
+#AC_FC_MODULE_FLAG
|
||||
+#AC_FC_MODULE_OUTPUT_FLAG
|
||||
|
||||
# Checks for library functions.
|
||||
AC_FUNC_ALLOCA
|
|
@ -1,48 +0,0 @@
|
|||
--- a/config-site-generator/configure.ac
|
||||
+++ b/config-site-generator/configure.ac
|
||||
@@ -23,6 +23,7 @@ AC_DEFUN([AC_MSG_ERROR], [
|
||||
test -e conftest.dir && rm -rf conftest.dir ])
|
||||
|
||||
# Checks for programs.
|
||||
+AC_PROG_CC
|
||||
AC_PROG_CC_C89
|
||||
AC_PROG_CC_C_O
|
||||
AC_PROG_CPP
|
||||
@@ -52,9 +53,11 @@ AC_PROG_LEX
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_RANLIB
|
||||
AC_PROG_SED
|
||||
+AC_PROG_LEX
|
||||
#AC_PROG_YACC
|
||||
|
||||
AM_PROG_AS
|
||||
+AM_PROG_AR
|
||||
|
||||
# Checks for system services.
|
||||
#AC_PATH_X
|
||||
@@ -118,6 +121,8 @@ sys/ucontext.h sys/uio.h sys/un.h sys/us
|
||||
sys/wait.h sys/xattr.h tar.h termios.h tgmath.h time.h ucontext.h ulimit.h \
|
||||
unistd.h utime.h utmp.h utmpx.h wchar.h wctype.h wordexp.h
|
||||
])
|
||||
+# extra headers
|
||||
+AC_CHECK_HEADERS([sys/cdefs.h])
|
||||
|
||||
# Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_TYPE_GETGROUPS
|
||||
@@ -217,6 +222,16 @@ AC_FUNC_STRTOLD
|
||||
AC_FUNC_UTIME_NULL
|
||||
AC_FUNC_VPRINTF
|
||||
|
||||
+AC_CHECK_SIZEOF(short)
|
||||
+AC_CHECK_SIZEOF(int)
|
||||
+AC_CHECK_SIZEOF(long)
|
||||
+AC_CHECK_SIZEOF(long long)
|
||||
+AC_CHECK_SIZEOF(unsigned int)
|
||||
+AC_CHECK_SIZEOF(unsigned long)
|
||||
+AC_CHECK_SIZEOF(unsigned long long)
|
||||
+AC_CHECK_SIZEOF(off_t)
|
||||
+AC_CHECK_SIZEOF(size_t)
|
||||
+
|
||||
# Functions list scraped from musl 0.9.4 x86_64
|
||||
AC_CHECK_FUNCS([ \
|
||||
a64l abort abs accept access acos acosf acosh acoshf acoshl acosl addmntent \
|
Loading…
Reference in New Issue