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:
		
							
								
								
									
										6
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								Makefile
									
									
									
									
									
								
							@@ -79,6 +79,12 @@ endif
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# check prerequisites before starting to build
 | 
					# check prerequisites before starting to build
 | 
				
			||||||
prereq: $(target/stamp-prereq) tmp/.prereq_packages
 | 
					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
 | 
					checksum: FORCE
 | 
				
			||||||
	$(call sha256sums,$(BIN_DIR),$(CONFIG_BUILDBOT))
 | 
						$(call sha256sums,$(BIN_DIR),$(CONFIG_BUILDBOT))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -289,7 +289,6 @@ endef
 | 
				
			|||||||
define Download/default
 | 
					define Download/default
 | 
				
			||||||
  FILE:=$(PKG_SOURCE)
 | 
					  FILE:=$(PKG_SOURCE)
 | 
				
			||||||
  URL:=$(PKG_SOURCE_URL)
 | 
					  URL:=$(PKG_SOURCE_URL)
 | 
				
			||||||
  URL_FILE:=$(PKG_SOURCE_URL_FILE)
 | 
					 | 
				
			||||||
  SUBDIR:=$(PKG_SOURCE_SUBDIR)
 | 
					  SUBDIR:=$(PKG_SOURCE_SUBDIR)
 | 
				
			||||||
  PROTO:=$(PKG_SOURCE_PROTO)
 | 
					  PROTO:=$(PKG_SOURCE_PROTO)
 | 
				
			||||||
  $(if $(PKG_SOURCE_MIRROR),MIRROR:=$(filter 1,$(PKG_MIRROR)))
 | 
					  $(if $(PKG_SOURCE_MIRROR),MIRROR:=$(filter 1,$(PKG_MIRROR)))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -117,7 +117,7 @@ include $(INCLUDE_DIR)/autotools.mk
 | 
				
			|||||||
_pkg_target:=$(if $(QUILT),,.)
 | 
					_pkg_target:=$(if $(QUILT),,.)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
override MAKEFLAGS=
 | 
					override MAKEFLAGS=
 | 
				
			||||||
CONFIG_SITE:=$(TOOLCHAIN_DIR)/config.site
 | 
					CONFIG_SITE:=$(INCLUDE_DIR)/site/$(ARCH)
 | 
				
			||||||
CUR_MAKEFILE:=$(filter-out Makefile,$(firstword $(MAKEFILE_LIST)))
 | 
					CUR_MAKEFILE:=$(filter-out Makefile,$(firstword $(MAKEFILE_LIST)))
 | 
				
			||||||
SUBMAKE:=$(NO_TRACE_MAKE) $(if $(CUR_MAKEFILE),-f $(CUR_MAKEFILE))
 | 
					SUBMAKE:=$(NO_TRACE_MAKE) $(if $(CUR_MAKEFILE),-f $(CUR_MAKEFILE))
 | 
				
			||||||
PKG_CONFIG_PATH=$(STAGING_DIR)/usr/lib/pkgconfig:$(STAGING_DIR)/usr/share/pkgconfig
 | 
					PKG_CONFIG_PATH=$(STAGING_DIR)/usr/lib/pkgconfig:$(STAGING_DIR)/usr/share/pkgconfig
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										30
									
								
								include/site/aarch64
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								include/site/aarch64
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										30
									
								
								include/site/aarch64_be
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								include/site/aarch64_be
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										30
									
								
								include/site/arc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								include/site/arc
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										30
									
								
								include/site/arm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								include/site/arm
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										30
									
								
								include/site/armeb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								include/site/armeb
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										3
									
								
								include/site/i386
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								include/site/i386
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					. $TOPDIR/include/site/i486
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										30
									
								
								include/site/i486
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								include/site/i486
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										3
									
								
								include/site/i686
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								include/site/i686
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					. $TOPDIR/include/site/i486
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										78
									
								
								include/site/linux
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								include/site/linux
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										28
									
								
								include/site/m68k
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								include/site/m68k
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										30
									
								
								include/site/mips
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								include/site/mips
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										30
									
								
								include/site/mips64
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								include/site/mips64
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										30
									
								
								include/site/mips64el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								include/site/mips64el
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										30
									
								
								include/site/mipsel
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								include/site/mipsel
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										30
									
								
								include/site/powerpc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								include/site/powerpc
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										26
									
								
								include/site/powerpc64
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								include/site/powerpc64
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										30
									
								
								include/site/sparc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								include/site/sparc
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										30
									
								
								include/site/x86_64
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								include/site/x86_64
									
									
									
									
									
										Normal file
									
								
							@@ -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"
 | 
								"0:lan:3" "1:lan:2" "2:lan:1" "3:wan" "6@eth0"
 | 
				
			||||||
		;;
 | 
							;;
 | 
				
			||||||
	planex,mzk-dp150n|\
 | 
						planex,mzk-dp150n|\
 | 
				
			||||||
	sge,ap-mtkh7-0006|\
 | 
					 | 
				
			||||||
	vocore,vocore-8m|\
 | 
						vocore,vocore-8m|\
 | 
				
			||||||
	vocore,vocore-16m)
 | 
						vocore,vocore-16m)
 | 
				
			||||||
		ucidef_add_switch "switch0" \
 | 
							ucidef_add_switch "switch0" \
 | 
				
			||||||
@@ -453,10 +452,6 @@ ramips_setup_interfaces()
 | 
				
			|||||||
		ucidef_add_switch "switch0" \
 | 
							ucidef_add_switch "switch0" \
 | 
				
			||||||
			"0:lan" "2:lan" "6t@eth0"
 | 
								"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)
 | 
						wiznet,wizfi630a)
 | 
				
			||||||
		ucidef_add_switch "switch0" \
 | 
							ucidef_add_switch "switch0" \
 | 
				
			||||||
			"0:lan" "1:lan" "2:wan" "6@eth0"
 | 
								"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
 | 
					endef
 | 
				
			||||||
TARGET_DEVICES += xzwifi_creativebox-v1
 | 
					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
 | 
					define Device/youhua_wr1200js
 | 
				
			||||||
  MTK_SOC := mt7621
 | 
					  MTK_SOC := mt7621
 | 
				
			||||||
  IMAGE_SIZE := 16064k
 | 
					  IMAGE_SIZE := 16064k
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -91,8 +91,6 @@ CONFIG_GPIOLIB=y
 | 
				
			|||||||
CONFIG_GPIO_MT7621=y
 | 
					CONFIG_GPIO_MT7621=y
 | 
				
			||||||
# CONFIG_GPIO_RALINK is not set
 | 
					# CONFIG_GPIO_RALINK is not set
 | 
				
			||||||
CONFIG_GPIO_SYSFS=y
 | 
					CONFIG_GPIO_SYSFS=y
 | 
				
			||||||
CONFIG_GPIO_WATCHDOG=y
 | 
					 | 
				
			||||||
CONFIG_GPIO_WATCHDOG_ARCH_INITCALL=y
 | 
					 | 
				
			||||||
# CONFIG_GRO_CELLS is not set
 | 
					# CONFIG_GRO_CELLS is not set
 | 
				
			||||||
CONFIG_HANDLE_DOMAIN_IRQ=y
 | 
					CONFIG_HANDLE_DOMAIN_IRQ=y
 | 
				
			||||||
CONFIG_HARDWARE_WATCHPOINTS=y
 | 
					CONFIG_HARDWARE_WATCHPOINTS=y
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,7 +29,7 @@
 | 
				
			|||||||
curdir:=toolchain
 | 
					curdir:=toolchain
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# subdirectories to descend into
 | 
					# 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
 | 
					ifdef CONFIG_USE_UCLIBC
 | 
				
			||||||
  $(curdir)/builddirs += $(LIBC)/utils
 | 
					  $(curdir)/builddirs += $(LIBC)/utils
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
@@ -51,7 +51,6 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
 | 
				
			|||||||
  $(curdir)/$(LIBC)/compile:=$(curdir)/gcc/initial/compile
 | 
					  $(curdir)/$(LIBC)/compile:=$(curdir)/gcc/initial/compile
 | 
				
			||||||
  $(curdir)/gcc/final/compile:=$(curdir)/$(LIBC)/compile $(curdir)/kernel-headers/compile
 | 
					  $(curdir)/gcc/final/compile:=$(curdir)/$(LIBC)/compile $(curdir)/kernel-headers/compile
 | 
				
			||||||
  $(curdir)/$(LIBC)/utils/compile:=$(curdir)/gcc/final/compile
 | 
					  $(curdir)/$(LIBC)/utils/compile:=$(curdir)/gcc/final/compile
 | 
				
			||||||
  $(curdir)/autoconf-lean/compile:=$(curdir)/gcc/final/compile
 | 
					 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ifndef DUMP_TARGET_DB
 | 
					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 \
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user