diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 67c4fd801575..75b2828ae9e6 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -1,8409 +1,8412 @@ # # $FreeBSD$ # # This file lists old files (OLD_FILES), libraries (OLD_LIBS) and # directories (OLD_DIRS) which should get removed at an update. Recently # removed entries first (with the date as a comment). Dynamic libraries are # special cased (OLD_LIBS). Static libraries or the generic links to # the dynamic libraries (lib*.so) should (if you don't know why to make an # exception, make this a "must") be viewed as normal files (OLD_FILES). # # In case of a complete directory hierarchy the sorting is in depth first # order. # # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # # Before you commit changes to this file please check if any entries in # tools/build/mk/OptionalObsoleteFiles.inc can be removed. The following # command tells which files are listed more than once regardless of some # architecture specific conditionals, so you can not blindly trust the # output: # ( grep '+=' /usr/src/ObsoleteFiles.inc | sort -u ; \ # grep '+=' /usr/src/tools/build/mk/OptionalObsoleteFiles.inc | sort -u) | \ # sort | uniq -d # # To find regular duplicates not dependent on optional components, you can # also use something that will not give you false positives, e.g.: # for t in `make -V TARGETS universe`; do # __MAKE_CONF=/dev/null make -f Makefile.inc1 TARGET=$t \ # -V OLD_FILES -V OLD_LIBS -V OLD_DIRS check-old | \ # xargs -n1 | sort | uniq -d; # done # # For optional components, you can use the following to see if some entries # in OptionalObsoleteFiles.inc have been obsoleted by ObsoleteFiles.inc # for o in tools/build/options/WITH*; do # __MAKE_CONF=/dev/null make -f Makefile.inc1 -D${o##*/} \ # -V OLD_FILES -V OLD_LIBS -V OLD_DIRS check-old | \ # xargs -n1 | sort | uniq -d; # done +# 20161016: urtwn(4) was merged into rtwn(4) +OLD_FILES+=usr/share/man/man4/urtwn.4.gz +OLD_FILES+=usr/share/man/man4/urtwnfw.4.gz # 20161015: Remove GNU rcs OLD_FILES+=usr/bin/ci OLD_FILES+=usr/bin/co OLD_FILES+=usr/bin/merge OLD_FILES+=usr/bin/rcs OLD_FILES+=usr/bin/rcsclean OLD_FILES+=usr/bin/rcsdiff OLD_FILES+=usr/bin/rcsfreeze OLD_FILES+=usr/bin/rcsmerge OLD_FILES+=usr/bin/rlog OLD_FILES+=usr/share/doc/psd/13.rcs/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/13.rcs/rcs_func.ascii.gz OLD_DIRS+=usr/share/doc/psd/13.rcs OLD_FILES+=usr/share/man/man1/ci.1.gz OLD_FILES+=usr/share/man/man1/co.1.gz OLD_FILES+=usr/share/man/man1/merge.1.gz OLD_FILES+=usr/share/man/man1/rcs.1.gz OLD_FILES+=usr/share/man/man1/rcsclean.1.gz OLD_FILES+=usr/share/man/man1/rcsdiff.1.gz OLD_FILES+=usr/share/man/man1/rcsfreeze.1.gz OLD_FILES+=usr/share/man/man1/rcsintro.1.gz OLD_FILES+=usr/share/man/man1/rcsmerge.1.gz OLD_FILES+=usr/share/man/man1/rlog.1.gz OLD_FILES+=usr/share/man/man5/rcsfile.5.gz # 20161010: remove link to removed m_getclr(9) macro OLD_FILES+=usr/share/man/man9/m_getclr.9.gz # 20161003: MK_ELFCOPY_AS_OBJCOPY option retired OLD_FILES+=usr/bin/elfcopy OLD_FILES+=usr/share/man/man1/elfcopy.1.gz # 20160906: libkqueue tests moved to /usr/tests/sys/kqueue/libkqueue OLD_FILES+=usr/tests/sys/kqueue/kqtest OLD_FILES+=usr/tests/sys/kqueue/kqueue_test # 20160903: idle page zeroing support removed OLD_FILES+=usr/share/man/man9/pmap_zero_idle.9.gz # 20160901: Remove digi(4) OLD_FILES+=usr/share/man/man4/digi.4.gz # 20160819: Remove ie(4) OLD_FILES+=usr/share/man/man4/i386/ie.4.gz # 20160819: Remove spic(4) OLD_FILES+=usr/share/man/man4/spic.4.gz # 20160819: Remove wl(4) and wlconfig(8) OLD_FILES+=usr/share/man/man4/i386/wl.4.gz OLD_FILES+=usr/sbin/wlconfig OLD_FILES+=usr/share/man/man8/i386/wlconfig.8.gz # 20160819: Remove si(4) and sicontrol(8) OLD_FILES+=usr/share/man/man4/si.4.gz OLD_FILES+=usr/sbin/sicontrol OLD_FILES+=usr/share/man/man8/sicontrol.8.gz # 20160819: Remove scd(4) OLD_FILES+=usr/share/man/man4/scd.4.gz # 20160815: Remove mcd(4) OLD_FILES+=usr/share/man/man4/mcd.4.gz # 20160805: lockmgr_waiters(9) removed OLD_FILES+=usr/share/man/man9/lockmgr_waiters.9.gz # 20160703: POSIXify locales with variants OLD_FILES+=usr/share/locale/zh_Hant_TW.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/zh_Hant_TW.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/zh_Hant_TW.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/zh_Hant_TW.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/zh_Hant_TW.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/zh_Hant_TW.UTF-8/LC_TIME OLD_DIRS+=usr/share/locale/zh_Hant_TW.UTF-8 OLD_FILES+=usr/share/locale/zh_Hant_TW.Big5/LC_COLLATE OLD_FILES+=usr/share/locale/zh_Hant_TW.Big5/LC_CTYPE OLD_FILES+=usr/share/locale/zh_Hant_TW.Big5/LC_MESSAGES OLD_FILES+=usr/share/locale/zh_Hant_TW.Big5/LC_MONETARY OLD_FILES+=usr/share/locale/zh_Hant_TW.Big5/LC_NUMERIC OLD_FILES+=usr/share/locale/zh_Hant_TW.Big5/LC_TIME OLD_DIRS+=usr/share/locale/zh_Hant_TW.Big5 OLD_FILES+=usr/share/locale/zh_Hant_HK.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/zh_Hant_HK.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/zh_Hant_HK.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/zh_Hant_HK.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/zh_Hant_HK.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/zh_Hant_HK.UTF-8/LC_TIME OLD_DIRS+=usr/share/locale/zh_Hant_HK.UTF-8 OLD_FILES+=usr/share/locale/zh_Hans_CN.eucCN/LC_COLLATE OLD_FILES+=usr/share/locale/zh_Hans_CN.eucCN/LC_CTYPE OLD_FILES+=usr/share/locale/zh_Hans_CN.eucCN/LC_MESSAGES OLD_FILES+=usr/share/locale/zh_Hans_CN.eucCN/LC_MONETARY OLD_FILES+=usr/share/locale/zh_Hans_CN.eucCN/LC_NUMERIC OLD_FILES+=usr/share/locale/zh_Hans_CN.eucCN/LC_TIME OLD_DIRS+=usr/share/locale/zh_Hans_CN.eucCN OLD_FILES+=usr/share/locale/zh_Hans_CN.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/zh_Hans_CN.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/zh_Hans_CN.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/zh_Hans_CN.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/zh_Hans_CN.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/zh_Hans_CN.UTF-8/LC_TIME OLD_DIRS+=usr/share/locale/zh_Hans_CN.UTF-8 OLD_FILES+=usr/share/locale/zh_Hans_CN.GBK/LC_COLLATE OLD_FILES+=usr/share/locale/zh_Hans_CN.GBK/LC_CTYPE OLD_FILES+=usr/share/locale/zh_Hans_CN.GBK/LC_MESSAGES OLD_FILES+=usr/share/locale/zh_Hans_CN.GBK/LC_MONETARY OLD_FILES+=usr/share/locale/zh_Hans_CN.GBK/LC_NUMERIC OLD_FILES+=usr/share/locale/zh_Hans_CN.GBK/LC_TIME OLD_DIRS+=usr/share/locale/zh_Hans_CN.GBK OLD_FILES+=usr/share/locale/zh_Hans_CN.GB2312/LC_COLLATE OLD_FILES+=usr/share/locale/zh_Hans_CN.GB2312/LC_CTYPE OLD_FILES+=usr/share/locale/zh_Hans_CN.GB2312/LC_MESSAGES OLD_FILES+=usr/share/locale/zh_Hans_CN.GB2312/LC_MONETARY OLD_FILES+=usr/share/locale/zh_Hans_CN.GB2312/LC_NUMERIC OLD_FILES+=usr/share/locale/zh_Hans_CN.GB2312/LC_TIME OLD_DIRS+=usr/share/locale/zh_Hans_CN.GB2312 OLD_FILES+=usr/share/locale/zh_Hans_CN.GB18030/LC_COLLATE OLD_FILES+=usr/share/locale/zh_Hans_CN.GB18030/LC_CTYPE OLD_FILES+=usr/share/locale/zh_Hans_CN.GB18030/LC_MESSAGES OLD_FILES+=usr/share/locale/zh_Hans_CN.GB18030/LC_MONETARY OLD_FILES+=usr/share/locale/zh_Hans_CN.GB18030/LC_NUMERIC OLD_FILES+=usr/share/locale/zh_Hans_CN.GB18030/LC_TIME OLD_DIRS+=usr/share/locale/zh_Hans_CN.GB18030 OLD_FILES+=usr/share/locale/sr_Latn_RS.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/sr_Latn_RS.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/sr_Latn_RS.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/sr_Latn_RS.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/sr_Latn_RS.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/sr_Latn_RS.UTF-8/LC_TIME OLD_DIRS+=usr/share/locale/sr_Latn_RS.UTF-8 OLD_FILES+=usr/share/locale/sr_Latn_RS.ISO8859-2/LC_COLLATE OLD_FILES+=usr/share/locale/sr_Latn_RS.ISO8859-2/LC_CTYPE OLD_FILES+=usr/share/locale/sr_Latn_RS.ISO8859-2/LC_MESSAGES OLD_FILES+=usr/share/locale/sr_Latn_RS.ISO8859-2/LC_MONETARY OLD_FILES+=usr/share/locale/sr_Latn_RS.ISO8859-2/LC_NUMERIC OLD_FILES+=usr/share/locale/sr_Latn_RS.ISO8859-2/LC_TIME OLD_DIRS+=usr/share/locale/sr_Latn_RS.ISO8859-2 OLD_FILES+=usr/share/locale/sr_Cyrl_RS.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/sr_Cyrl_RS.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/sr_Cyrl_RS.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/sr_Cyrl_RS.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/sr_Cyrl_RS.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/sr_Cyrl_RS.UTF-8/LC_TIME OLD_DIRS+=usr/share/locale/sr_Cyrl_RS.UTF-8 OLD_FILES+=usr/share/locale/sr_Cyrl_RS.ISO8859-5/LC_COLLATE OLD_FILES+=usr/share/locale/sr_Cyrl_RS.ISO8859-5/LC_CTYPE OLD_FILES+=usr/share/locale/sr_Cyrl_RS.ISO8859-5/LC_MESSAGES OLD_FILES+=usr/share/locale/sr_Cyrl_RS.ISO8859-5/LC_MONETARY OLD_FILES+=usr/share/locale/sr_Cyrl_RS.ISO8859-5/LC_NUMERIC OLD_FILES+=usr/share/locale/sr_Cyrl_RS.ISO8859-5/LC_TIME OLD_DIRS+=usr/share/locale/sr_Cyrl_RS.ISO8859-5 OLD_FILES+=usr/share/locale/mn_Cyrl_MN.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/mn_Cyrl_MN.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/mn_Cyrl_MN.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/mn_Cyrl_MN.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/mn_Cyrl_MN.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/mn_Cyrl_MN.UTF-8/LC_TIME OLD_DIRS+=usr/share/locale/mn_Cyrl_MN.UTF-8 OLD_FILES+=usr/share/locale/kk_Cyrl_KZ.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/kk_Cyrl_KZ.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/kk_Cyrl_KZ.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/kk_Cyrl_KZ.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/kk_Cyrl_KZ.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/kk_Cyrl_KZ.UTF-8/LC_TIME OLD_DIRS+=usr/share/locale/kk_Cyrl_KZ.UTF-8 # 20160608: removed pam_verbose_error OLD_LIBS+=usr/lib/libpam.so.5 OLD_LIBS+=usr/lib/pam_chroot.so.5 OLD_LIBS+=usr/lib/pam_deny.so.5 OLD_LIBS+=usr/lib/pam_echo.so.5 OLD_LIBS+=usr/lib/pam_exec.so.5 OLD_LIBS+=usr/lib/pam_ftpusers.so.5 OLD_LIBS+=usr/lib/pam_group.so.5 OLD_LIBS+=usr/lib/pam_guest.so.5 OLD_LIBS+=usr/lib/pam_krb5.so.5 OLD_LIBS+=usr/lib/pam_ksu.so.5 OLD_LIBS+=usr/lib/pam_lastlog.so.5 OLD_LIBS+=usr/lib/pam_login_access.so.5 OLD_LIBS+=usr/lib/pam_nologin.so.5 OLD_LIBS+=usr/lib/pam_opie.so.5 OLD_LIBS+=usr/lib/pam_opieaccess.so.5 OLD_LIBS+=usr/lib/pam_passwdqc.so.5 OLD_LIBS+=usr/lib/pam_permit.so.5 OLD_LIBS+=usr/lib/pam_radius.so.5 OLD_LIBS+=usr/lib/pam_rhosts.so.5 OLD_LIBS+=usr/lib/pam_rootok.so.5 OLD_LIBS+=usr/lib/pam_securetty.so.5 OLD_LIBS+=usr/lib/pam_self.so.5 OLD_LIBS+=usr/lib/pam_ssh.so.5 OLD_LIBS+=usr/lib/pam_tacplus.so.5 OLD_LIBS+=usr/lib/pam_unix.so.5 OLD_LIBS+=usr/lib32/libpam.so.5 OLD_LIBS+=usr/lib32/pam_chroot.so.5 OLD_LIBS+=usr/lib32/pam_deny.so.5 OLD_LIBS+=usr/lib32/pam_echo.so.5 OLD_LIBS+=usr/lib32/pam_exec.so.5 OLD_LIBS+=usr/lib32/pam_ftpusers.so.5 OLD_LIBS+=usr/lib32/pam_group.so.5 OLD_LIBS+=usr/lib32/pam_guest.so.5 OLD_LIBS+=usr/lib32/pam_krb5.so.5 OLD_LIBS+=usr/lib32/pam_ksu.so.5 OLD_LIBS+=usr/lib32/pam_lastlog.so.5 OLD_LIBS+=usr/lib32/pam_login_access.so.5 OLD_LIBS+=usr/lib32/pam_nologin.so.5 OLD_LIBS+=usr/lib32/pam_opie.so.5 OLD_LIBS+=usr/lib32/pam_opieaccess.so.5 OLD_LIBS+=usr/lib32/pam_passwdqc.so.5 OLD_LIBS+=usr/lib32/pam_permit.so.5 OLD_LIBS+=usr/lib32/pam_radius.so.5 OLD_LIBS+=usr/lib32/pam_rhosts.so.5 OLD_LIBS+=usr/lib32/pam_rootok.so.5 OLD_LIBS+=usr/lib32/pam_securetty.so.5 OLD_LIBS+=usr/lib32/pam_self.so.5 OLD_LIBS+=usr/lib32/pam_ssh.so.5 OLD_LIBS+=usr/lib32/pam_tacplus.so.5 OLD_LIBS+=usr/lib32/pam_unix.so.5 # 20160523: remove extranous ALTQ files OLD_FILES+=usr/include/altq/altq_codel.h OLD_FILES+=usr/include/altq/altq_fairq.h # 20160519: remove DTrace Toolkit from base OLD_FILES+=usr/sbin/dtruss OLD_FILES+=usr/share/dtrace/toolkit/execsnoop OLD_FILES+=usr/share/dtrace/toolkit/hotkernel OLD_FILES+=usr/share/dtrace/toolkit/hotuser OLD_FILES+=usr/share/dtrace/toolkit/opensnoop OLD_FILES+=usr/share/dtrace/toolkit/procsystime OLD_DIRS+=usr/share/dtrace/toolkit OLD_FILES+=usr/share/man/man1/dtruss.1.gz # 20160519: stale MLINK removed OLD_FILES+=usr/share/man/man9/rman_await_resource.9.gz # 20160517: ReiserFS removed OLD_FILES+=usr/share/man/man5/reiserfs.5.gz # 20160504: tests rework OLD_FILES+=usr/tests/lib/libc/regex/data/README # 20160430: kvm_getfiles(3) removed from kvm(3) OLD_LIBS+=lib/libkvm.so.6 OLD_LIBS+=usr/lib32/libkvm.so.6 OLD_FILES+=usr/share/man/man3/kvm_getfiles.3.gz # 20160423: remove mroute6d OLD_FILES+=etc/rc.d/mroute6d # 20160419: rename units.lib -> definitions.units OLD_FILES+=usr/share/misc/units.lib # 20160419: remove Big5HKSCS locales OLD_FILES+=usr/share/locale/zh_HK.Big5HKSCS/LC_COLLATE OLD_FILES+=usr/share/locale/zh_HK.Big5HKSCS/LC_CTYPE OLD_FILES+=usr/share/locale/zh_HK.Big5HKSCS/LC_MESSAGES OLD_FILES+=usr/share/locale/zh_HK.Big5HKSCS/LC_MONETARY OLD_FILES+=usr/share/locale/zh_HK.Big5HKSCS/LC_NUMERIC OLD_FILES+=usr/share/locale/zh_HK.Big5HKSCS/LC_TIME OLD_DIRS+=usr/share/locale/zh_HK.Big5HKSCS OLD_FILES+=usr/share/locale/zh_Hant_HK.Big5HKSCS/LC_COLLATE OLD_FILES+=usr/share/locale/zh_Hant_HK.Big5HKSCS/LC_CTYPE OLD_FILES+=usr/share/locale/zh_Hant_HK.Big5HKSCS/LC_MESSAGES OLD_FILES+=usr/share/locale/zh_Hant_HK.Big5HKSCS/LC_MONETARY OLD_FILES+=usr/share/locale/zh_Hant_HK.Big5HKSCS/LC_NUMERIC OLD_FILES+=usr/share/locale/zh_Hant_HK.Big5HKSCS/LC_TIME OLD_DIRS+=usr/share/locale/zh_Hant_HK.Big5HKSCS # 20160317: rman_res_t size bump to uintmax_t OLD_LIBS+=usr/lib/libdevinfo.so.5 OLD_LIBS+=usr/lib32/libdevinfo.so.5 # 20160305: new clang import which bumps version from 3.7.1 to 3.8.0. OLD_FILES+=usr/bin/macho-dump OLD_FILES+=usr/bin/tblgen OLD_FILES+=usr/lib/clang/3.7.1/include/sanitizer/allocator_interface.h OLD_FILES+=usr/lib/clang/3.7.1/include/sanitizer/asan_interface.h OLD_FILES+=usr/lib/clang/3.7.1/include/sanitizer/common_interface_defs.h OLD_FILES+=usr/lib/clang/3.7.1/include/sanitizer/coverage_interface.h OLD_FILES+=usr/lib/clang/3.7.1/include/sanitizer/dfsan_interface.h OLD_FILES+=usr/lib/clang/3.7.1/include/sanitizer/linux_syscall_hooks.h OLD_FILES+=usr/lib/clang/3.7.1/include/sanitizer/lsan_interface.h OLD_FILES+=usr/lib/clang/3.7.1/include/sanitizer/msan_interface.h OLD_FILES+=usr/lib/clang/3.7.1/include/sanitizer/tsan_interface_atomic.h OLD_DIRS+=usr/lib/clang/3.7.1/include/sanitizer OLD_FILES+=usr/lib/clang/3.7.1/include/__stddef_max_align_t.h OLD_FILES+=usr/lib/clang/3.7.1/include/__wmmintrin_aes.h OLD_FILES+=usr/lib/clang/3.7.1/include/__wmmintrin_pclmul.h OLD_FILES+=usr/lib/clang/3.7.1/include/adxintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/altivec.h OLD_FILES+=usr/lib/clang/3.7.1/include/ammintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/arm_acle.h OLD_FILES+=usr/lib/clang/3.7.1/include/arm_neon.h OLD_FILES+=usr/lib/clang/3.7.1/include/avx2intrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/avx512bwintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/avx512cdintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/avx512dqintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/avx512erintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/avx512fintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/avx512vlbwintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/avx512vldqintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/avx512vlintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/avxintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/bmi2intrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/bmiintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/cpuid.h OLD_FILES+=usr/lib/clang/3.7.1/include/cuda_builtin_vars.h OLD_FILES+=usr/lib/clang/3.7.1/include/emmintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/f16cintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/fma4intrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/fmaintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/fxsrintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/htmintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/htmxlintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/ia32intrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/immintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/lzcntintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/mm3dnow.h OLD_FILES+=usr/lib/clang/3.7.1/include/mm_malloc.h OLD_FILES+=usr/lib/clang/3.7.1/include/mmintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/module.modulemap OLD_FILES+=usr/lib/clang/3.7.1/include/nmmintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/pmmintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/popcntintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/prfchwintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/rdseedintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/rtmintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/s390intrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/shaintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/smmintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/tbmintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/tmmintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/vadefs.h OLD_FILES+=usr/lib/clang/3.7.1/include/vecintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/wmmintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/x86intrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/xmmintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/xopintrin.h OLD_FILES+=usr/lib/clang/3.7.1/include/xtestintrin.h OLD_DIRS+=usr/lib/clang/3.7.1/include OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.asan-i386.a OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.asan-preinit-i386.a OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.asan-preinit-x86_64.a OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.asan-x86_64.a OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.asan_cxx-i386.a OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.asan_cxx-x86_64.a OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.profile-arm.a OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.profile-i386.a OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.profile-x86_64.a OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.safestack-i386.a OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.safestack-x86_64.a OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.ubsan_standalone-i386.a OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a OLD_DIRS+=usr/lib/clang/3.7.1/lib/freebsd OLD_DIRS+=usr/lib/clang/3.7.1/lib OLD_DIRS+=usr/lib/clang/3.7.1 # 20160301: Remove taskqueue_enqueue_fast OLD_FILES+=usr/share/man/man9/taskqueue_enqueue_fast.9.gz # 20160225: Remove casperd and libcapsicum. OLD_FILES+=sbin/casperd OLD_FILES+=etc/rc.d/casperd OLD_FILES+=usr/share/man/man8/casperd.8.gz OLD_FILES+=usr/include/libcapsicum.h OLD_FILES+=usr/include/libcapsicum_service.h OLD_FILES+=usr/include/libcapsicum.h OLD_FILES+=usr/share/man/man3/libcapsicum.3.gz OLD_FILES+=usr/include/libcapsicum_dns.h OLD_FILES+=usr/include/libcapsicum_grp.h OLD_FILES+=usr/include/libcapsicum_impl.h OLD_FILES+=usr/include/libcapsicum_pwd.h OLD_FILES+=usr/include/libcapsicum_random.h OLD_FILES+=usr/include/libcapsicum_sysctl.h OLD_FILES+=libexec/casper/dns OLD_FILES+=libexec/casper/grp OLD_FILES+=libexec/casper/pwd OLD_FILES+=libexec/casper/random OLD_FILES+=libexec/casper/sysctl OLD_FILES+=libexec/casper/.debug/random.debug OLD_FILES+=libexec/casper/.debug/dns.debug OLD_FILES+=libexec/casper/.debug/sysctl.debug OLD_FILES+=libexec/casper/.debug/pwd.debug OLD_FILES+=libexec/casper/.debug/grp.debug OLD_DIRS+=libexec/casper/.debug OLD_DIRS+=libexec/casper OLD_FILES+=usr/lib/libcapsicum.a OLD_FILES+=usr/lib/libcapsicum.so OLD_LIBS+=lib/libcapsicum.so.0 OLD_FILES+=usr/lib/libcapsicum_p.a OLD_FILES+=usr/lib32/libcapsicum.a OLD_FILES+=usr/lib32/libcapsicum.so OLD_LIBS+=usr/lib32/libcapsicum.so.0 OLD_FILES+=usr/lib32/libcapsicum_p.a # 20160223: functionality from mkulzma(1) merged into mkuzip(1) OLD_FILES+=usr/bin/mkulzma OLD_FILES+=usr/share/man/man4/geom_uncompress.4.gz OLD_FILES+=usr/share/man/man8/mkulzma.8.gz # 20160211: Remove obsolete unbound-control-setup OLD_FILES+=usr/sbin/unbound-control-setup # 20160121: cc.h moved OLD_FILES+=usr/include/netinet/cc.h # 20160116: Update mandoc to cvs snapshot 20160116 OLD_FILES+=usr/share/mdocml/example.style.css OLD_FILES+=usr/share/mdocml/style.css OLD_DIRS+=usr/share/mdocml # 20160114: SA-16:06.snmpd OLD_FILES+=usr/share/examples/etc/snmpd.config # 20151225: new clang import which bumps version from 3.7.0 to 3.7.1. OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/allocator_interface.h OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/asan_interface.h OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/common_interface_defs.h OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/coverage_interface.h OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/dfsan_interface.h OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/linux_syscall_hooks.h OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/lsan_interface.h OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/msan_interface.h OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/tsan_interface_atomic.h OLD_DIRS+=usr/lib/clang/3.7.0/include/sanitizer OLD_FILES+=usr/lib/clang/3.7.0/include/__stddef_max_align_t.h OLD_FILES+=usr/lib/clang/3.7.0/include/__wmmintrin_aes.h OLD_FILES+=usr/lib/clang/3.7.0/include/__wmmintrin_pclmul.h OLD_FILES+=usr/lib/clang/3.7.0/include/adxintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/altivec.h OLD_FILES+=usr/lib/clang/3.7.0/include/ammintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/arm_acle.h OLD_FILES+=usr/lib/clang/3.7.0/include/arm_neon.h OLD_FILES+=usr/lib/clang/3.7.0/include/avx2intrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/avx512bwintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/avx512cdintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/avx512dqintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/avx512erintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/avx512fintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/avx512vlbwintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/avx512vldqintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/avx512vlintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/avxintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/bmi2intrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/bmiintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/cpuid.h OLD_FILES+=usr/lib/clang/3.7.0/include/cuda_builtin_vars.h OLD_FILES+=usr/lib/clang/3.7.0/include/emmintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/f16cintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/fma4intrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/fmaintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/fxsrintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/htmintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/htmxlintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/ia32intrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/immintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/lzcntintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/mm3dnow.h OLD_FILES+=usr/lib/clang/3.7.0/include/mm_malloc.h OLD_FILES+=usr/lib/clang/3.7.0/include/mmintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/module.modulemap OLD_FILES+=usr/lib/clang/3.7.0/include/nmmintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/pmmintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/popcntintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/prfchwintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/rdseedintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/rtmintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/s390intrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/shaintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/smmintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/tbmintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/tmmintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/vadefs.h OLD_FILES+=usr/lib/clang/3.7.0/include/vecintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/wmmintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/x86intrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/xmmintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/xopintrin.h OLD_FILES+=usr/lib/clang/3.7.0/include/xtestintrin.h OLD_DIRS+=usr/lib/clang/3.7.0/include OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.asan-i386.a OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.asan-preinit-i386.a OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.asan-preinit-x86_64.a OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.asan-x86_64.a OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.asan_cxx-i386.a OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.profile-arm.a OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.profile-i386.a OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.profile-x86_64.a OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.safestack-i386.a OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.safestack-x86_64.a OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.ubsan_standalone-i386.a OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a OLD_DIRS+=usr/lib/clang/3.7.0/lib/freebsd OLD_DIRS+=usr/lib/clang/3.7.0/lib OLD_DIRS+=usr/lib/clang/3.7.0 # 20151130: libelf moved from /usr/lib to /lib (libkvm dependency in r291406) OLD_LIBS+=usr/lib/libelf.so.2 # 20151115: Fox bad upgrade scheme OLD_FILES+=usr/share/locale/zh_CN.GB18030/zh_Hans_CN.GB18030 OLD_FILES+=usr/share/locale/zh_CN.GB2312/zh_Hans_CN.GB2312 OLD_FILES+=usr/share/locale/zh_CN.GBK/zh_Hans_CN.GBK OLD_FILES+=usr/share/locale/zh_CN.UTF-8/zh_Hans_CN.UTF-8 OLD_FILES+=usr/share/locale/zh_CN.eucCN/zh_Hans_CN.eucCN OLD_FILES+=usr/share/locale/zh_TW.Big5/zh_Hant_TW.Big5 OLD_FILES+=usr/share/locale/zh_TW.UTF-8/zh_Hant_TW.UTF-8 # 20151107: String collation improvements OLD_FILES+=usr/share/locale/UTF-8/LC_CTYPE OLD_DIRS+=usr/share/locale/UTF-8 OLD_FILES+=usr/share/locale/kk_KZ.PT154/LC_COLLATE OLD_FILES+=usr/share/locale/kk_KZ.PT154/LC_CTYPE OLD_FILES+=usr/share/locale/kk_KZ.PT154/LC_MESSAGES OLD_FILES+=usr/share/locale/kk_KZ.PT154/LC_MONETARY OLD_FILES+=usr/share/locale/kk_KZ.PT154/LC_NUMERIC OLD_FILES+=usr/share/locale/kk_KZ.PT154/LC_TIME OLD_DIRS+=usr/share/locale/kk_KZ.PT154/ OLD_FILES+=usr/share/locale/la_LN.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/la_LN.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/la_LN.ISO8859-1/LC_TIME OLD_DIRS+=usr/share/locale/la_LN.ISO8859-1 OLD_FILES+=usr/share/locale/la_LN.ISO8859-13/LC_COLLATE OLD_FILES+=usr/share/locale/la_LN.ISO8859-13/LC_CTYPE OLD_DIRS+=usr/share/locale/la_LN.ISO8859-13 OLD_FILES+=usr/share/locale/la_LN.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/la_LN.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/la_LN.ISO8859-15/LC_TIME OLD_DIRS+=usr/share/locale/la_LN.ISO8859-15 OLD_FILES+=usr/share/locale/la_LN.ISO8859-2/LC_COLLATE OLD_FILES+=usr/share/locale/la_LN.ISO8859-2/LC_CTYPE OLD_FILES+=usr/share/locale/la_LN.ISO8859-2/LC_TIME OLD_DIRS+=usr/share/locale/la_LN.ISO8859-2 OLD_FILES+=usr/share/locale/la_LN.ISO8859-4/LC_COLLATE OLD_FILES+=usr/share/locale/la_LN.ISO8859-4/LC_CTYPE OLD_FILES+=usr/share/locale/la_LN.ISO8859-4/LC_TIME OLD_DIRS+=usr/share/locale/la_LN.ISO8859-4 OLD_FILES+=usr/share/locale/la_LN.US-ASCII/LC_COLLATE OLD_FILES+=usr/share/locale/la_LN.US-ASCII/LC_CTYPE OLD_FILES+=usr/share/locale/la_LN.US-ASCII/LC_TIME OLD_DIRS+=usr/share/locale/la_LN.US-ASCII OLD_FILES+=usr/share/locale/lt_LT.ISO8859-4/LC_MESSAGES OLD_FILES+=usr/share/locale/lt_LT.ISO8859-4/LC_TIME OLD_FILES+=usr/share/locale/lt_LT.ISO8859-4/LC_COLLATE OLD_FILES+=usr/share/locale/lt_LT.ISO8859-4/LC_MONETARY OLD_FILES+=usr/share/locale/lt_LT.ISO8859-4/LC_CTYPE OLD_FILES+=usr/share/locale/lt_LT.ISO8859-4/LC_NUMERIC OLD_DIRS+=usr/share/locale/lt_LT.ISO8859-4 OLD_FILES+=usr/share/locale/no_NO.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/no_NO.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/no_NO.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/no_NO.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/no_NO.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/no_NO.ISO8859-1/LC_TIME OLD_DIRS+=usr/share/locale/no_NO.ISO8859-1 OLD_FILES+=usr/share/locale/no_NO.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/no_NO.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/no_NO.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/no_NO.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/no_NO.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/no_NO.ISO8859-15/LC_TIME OLD_DIRS+=usr/share/locale/no_NO.ISO8859-15 OLD_FILES+=usr/share/locale/no_NO.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/no_NO.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/no_NO.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/no_NO.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/no_NO.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/no_NO.UTF-8/LC_TIME OLD_DIRS+=usr/share/locale/no_NO.UTF-8 OLD_FILES+=usr/share/locale/sr_YU.ISO8859-2/LC_COLLATE OLD_FILES+=usr/share/locale/sr_YU.ISO8859-2/LC_TIME OLD_FILES+=usr/share/locale/sr_YU.ISO8859-2/LC_CTYPE OLD_FILES+=usr/share/locale/sr_YU.ISO8859-2/LC_MESSAGES OLD_FILES+=usr/share/locale/sr_YU.ISO8859-2/LC_NUMERIC OLD_FILES+=usr/share/locale/sr_YU.ISO8859-2/LC_MONETARY OLD_DIRS+=usr/share/locale/sr_YU.ISO8859-2 OLD_FILES+=usr/share/locale/sr_YU.ISO8859-5/LC_COLLATE OLD_FILES+=usr/share/locale/sr_YU.ISO8859-5/LC_MONETARY OLD_FILES+=usr/share/locale/sr_YU.ISO8859-5/LC_NUMERIC OLD_FILES+=usr/share/locale/sr_YU.ISO8859-5/LC_CTYPE OLD_FILES+=usr/share/locale/sr_YU.ISO8859-5/LC_TIME OLD_FILES+=usr/share/locale/sr_YU.ISO8859-5/LC_MESSAGES OLD_DIRS+=usr/share/locale/sr_YU.ISO8859-5 OLD_FILES+=usr/share/locale/sr_YU.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/sr_YU.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/sr_YU.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/sr_YU.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/sr_YU.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/sr_YU.UTF-8/LC_MESSAGES OLD_DIRS+=usr/share/locale/sr_YU.UTF-8 # 20151101: added missing _test suffix on multiple tests in lib/libc OLD_FILES+=usr/tests/lib/libc/c063/faccessat OLD_FILES+=usr/tests/lib/libc/c063/fchmodat OLD_FILES+=usr/tests/lib/libc/c063/fchownat OLD_FILES+=usr/tests/lib/libc/c063/fexecve OLD_FILES+=usr/tests/lib/libc/c063/fstatat OLD_FILES+=usr/tests/lib/libc/c063/linkat OLD_FILES+=usr/tests/lib/libc/c063/mkdirat OLD_FILES+=usr/tests/lib/libc/c063/mkfifoat OLD_FILES+=usr/tests/lib/libc/c063/mknodat OLD_FILES+=usr/tests/lib/libc/c063/openat OLD_FILES+=usr/tests/lib/libc/c063/readlinkat OLD_FILES+=usr/tests/lib/libc/c063/renameat OLD_FILES+=usr/tests/lib/libc/c063/symlinkat OLD_FILES+=usr/tests/lib/libc/c063/unlinkat OLD_FILES+=usr/tests/lib/libc/c063/utimensat OLD_FILES+=usr/tests/lib/libc/string/memchr OLD_FILES+=usr/tests/lib/libc/string/memcpy OLD_FILES+=usr/tests/lib/libc/string/memmem OLD_FILES+=usr/tests/lib/libc/string/memset OLD_FILES+=usr/tests/lib/libc/string/strcat OLD_FILES+=usr/tests/lib/libc/string/strchr OLD_FILES+=usr/tests/lib/libc/string/strcmp OLD_FILES+=usr/tests/lib/libc/string/strcpy OLD_FILES+=usr/tests/lib/libc/string/strcspn OLD_FILES+=usr/tests/lib/libc/string/strerror OLD_FILES+=usr/tests/lib/libc/string/strlen OLD_FILES+=usr/tests/lib/libc/string/strpbrk OLD_FILES+=usr/tests/lib/libc/string/strrchr OLD_FILES+=usr/tests/lib/libc/string/strspn OLD_FILES+=usr/tests/lib/libc/string/swab # 20151101: 430.status-rwho was renamed to 430.status-uptime OLD_FILES+=etc/periodic/daily/430.status-rwho # 20151030: OpenSSL 1.0.2d import OLD_FILES+=usr/share/openssl/man/man3/CMS_set1_signer_certs.3.gz OLD_FILES+=usr/share/openssl/man/man3/EVP_PKEY_ctrl.3.gz OLD_FILES+=usr/share/openssl/man/man3/EVP_PKEY_ctrl_str.3.gz OLD_FILES+=usr/share/openssl/man/man3/d2i_509_CRL_fp.3.gz OLD_LIBS+=lib/libcrypto.so.7 OLD_LIBS+=usr/lib/libssl.so.7 OLD_LIBS+=usr/lib32/libcrypto.so.7 OLD_LIBS+=usr/lib32/libssl.so.7 # 20151029: LinuxKPI moved to sys/compat/linuxkpi OLD_FILES+=usr/include/dev/usb/usb_compat_linux.h # 20151015: test symbols moved to /usr/lib/debug OLD_DIRS+=usr/tests/lib/atf/libatf-c++/.debug OLD_FILES+=usr/tests/lib/atf/libatf-c++/.debug/atf_c++_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c++/.debug/build_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c++/.debug/check_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c++/.debug/config_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c++/.debug/macros_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c++/.debug/tests_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c++/.debug/utils_test.debug OLD_DIRS+=usr/tests/lib/atf/libatf-c++/detail/.debug OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/.debug/application_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/.debug/env_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/.debug/exceptions_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/.debug/fs_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/.debug/process_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/.debug/sanity_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/.debug/text_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/.debug/version_helper.debug OLD_DIRS+=usr/tests/lib/atf/libatf-c/.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/.debug/atf_c_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/.debug/build_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/.debug/check_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/.debug/config_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/.debug/error_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/.debug/macros_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/.debug/tc_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/.debug/tp_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/.debug/utils_test.debug OLD_DIRS+=usr/tests/lib/atf/libatf-c/detail/.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/dynstr_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/env_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/fs_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/list_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/map_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/process_helpers.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/process_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/sanity_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/text_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/user_test.debug OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/version_helper.debug OLD_DIRS+=usr/tests/lib/atf/test-programs/.debug OLD_FILES+=usr/tests/lib/atf/test-programs/.debug/c_helpers.debug OLD_FILES+=usr/tests/lib/atf/test-programs/.debug/cpp_helpers.debug OLD_DIRS+=usr/tests/lib/libc/c063/.debug OLD_FILES+=usr/tests/lib/libc/c063/.debug/faccessat.debug OLD_FILES+=usr/tests/lib/libc/c063/.debug/fchmodat.debug OLD_FILES+=usr/tests/lib/libc/c063/.debug/fchownat.debug OLD_FILES+=usr/tests/lib/libc/c063/.debug/fexecve.debug OLD_FILES+=usr/tests/lib/libc/c063/.debug/fstatat.debug OLD_FILES+=usr/tests/lib/libc/c063/.debug/linkat.debug OLD_FILES+=usr/tests/lib/libc/c063/.debug/mkdirat.debug OLD_FILES+=usr/tests/lib/libc/c063/.debug/mkfifoat.debug OLD_FILES+=usr/tests/lib/libc/c063/.debug/mknodat.debug OLD_FILES+=usr/tests/lib/libc/c063/.debug/openat.debug OLD_FILES+=usr/tests/lib/libc/c063/.debug/readlinkat.debug OLD_FILES+=usr/tests/lib/libc/c063/.debug/renameat.debug OLD_FILES+=usr/tests/lib/libc/c063/.debug/symlinkat.debug OLD_FILES+=usr/tests/lib/libc/c063/.debug/unlinkat.debug OLD_FILES+=usr/tests/lib/libc/c063/.debug/utimensat.debug OLD_DIRS+=usr/tests/lib/libc/db/.debug OLD_FILES+=usr/tests/lib/libc/db/.debug/h_db.debug OLD_DIRS+=usr/tests/lib/libc/gen/.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/alarm_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/arc4random_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/assert_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/basedirname_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/dir_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/floatunditf_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/fnmatch_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/fpclassify2_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/fpclassify_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/fpsetmask_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/fpsetround_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/ftok_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/getcwd_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/getgrent_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/glob_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/humanize_number_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/isnan_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/nice_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/pause_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/raise_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/realpath_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/setdomainname_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/sethostname_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/sleep_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/syslog_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/time_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/ttyname_test.debug OLD_FILES+=usr/tests/lib/libc/gen/.debug/vis_test.debug OLD_DIRS+=usr/tests/lib/libc/gen/execve/.debug OLD_FILES+=usr/tests/lib/libc/gen/execve/.debug/execve_test.debug OLD_DIRS+=usr/tests/lib/libc/gen/posix_spawn/.debug OLD_FILES+=usr/tests/lib/libc/gen/posix_spawn/.debug/fileactions_test.debug OLD_FILES+=usr/tests/lib/libc/gen/posix_spawn/.debug/h_fileactions.debug OLD_FILES+=usr/tests/lib/libc/gen/posix_spawn/.debug/h_spawn.debug OLD_FILES+=usr/tests/lib/libc/gen/posix_spawn/.debug/h_spawnattr.debug OLD_FILES+=usr/tests/lib/libc/gen/posix_spawn/.debug/spawn_test.debug OLD_FILES+=usr/tests/lib/libc/gen/posix_spawn/.debug/spawnattr_test.debug OLD_DIRS+=usr/tests/lib/libc/hash/.debug OLD_FILES+=usr/tests/lib/libc/hash/.debug/h_hash.debug OLD_FILES+=usr/tests/lib/libc/hash/.debug/sha2_test.debug OLD_DIRS+=usr/tests/lib/libc/inet/.debug OLD_FILES+=usr/tests/lib/libc/inet/.debug/inet_network_test.debug OLD_DIRS+=usr/tests/lib/libc/locale/.debug OLD_FILES+=usr/tests/lib/libc/locale/.debug/io_test.debug OLD_FILES+=usr/tests/lib/libc/locale/.debug/mbrtowc_test.debug OLD_FILES+=usr/tests/lib/libc/locale/.debug/mbsnrtowcs_test.debug OLD_FILES+=usr/tests/lib/libc/locale/.debug/mbstowcs_test.debug OLD_FILES+=usr/tests/lib/libc/locale/.debug/mbtowc_test.debug OLD_FILES+=usr/tests/lib/libc/locale/.debug/wcscspn_test.debug OLD_FILES+=usr/tests/lib/libc/locale/.debug/wcspbrk_test.debug OLD_FILES+=usr/tests/lib/libc/locale/.debug/wcsspn_test.debug OLD_FILES+=usr/tests/lib/libc/locale/.debug/wcstod_test.debug OLD_FILES+=usr/tests/lib/libc/locale/.debug/wctomb_test.debug OLD_DIRS+=usr/tests/lib/libc/net/.debug OLD_FILES+=usr/tests/lib/libc/net/.debug/ether_aton_test.debug OLD_FILES+=usr/tests/lib/libc/net/.debug/getprotoent_test.debug OLD_FILES+=usr/tests/lib/libc/net/.debug/h_dns_server.debug OLD_FILES+=usr/tests/lib/libc/net/.debug/h_nsd_recurse.debug OLD_FILES+=usr/tests/lib/libc/net/.debug/h_protoent.debug OLD_FILES+=usr/tests/lib/libc/net/.debug/h_servent.debug OLD_DIRS+=usr/tests/lib/libc/regex/.debug OLD_FILES+=usr/tests/lib/libc/regex/.debug/exhaust_test.debug OLD_FILES+=usr/tests/lib/libc/regex/.debug/h_regex.debug OLD_FILES+=usr/tests/lib/libc/regex/.debug/regex_att_test.debug OLD_DIRS+=usr/tests/lib/libc/ssp/.debug OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_fgets.debug OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_getcwd.debug OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_gets.debug OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_memcpy.debug OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_memmove.debug OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_memset.debug OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_raw.debug OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_read.debug OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_readlink.debug OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_snprintf.debug OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_sprintf.debug OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_stpcpy.debug OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_stpncpy.debug OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_strcat.debug OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_strcpy.debug OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_strncat.debug OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_strncpy.debug OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_vsnprintf.debug OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_vsprintf.debug OLD_DIRS+=usr/tests/lib/libc/stdio/.debug OLD_FILES+=usr/tests/lib/libc/stdio/.debug/clearerr_test.debug OLD_FILES+=usr/tests/lib/libc/stdio/.debug/fflush_test.debug OLD_FILES+=usr/tests/lib/libc/stdio/.debug/fmemopen2_test.debug OLD_FILES+=usr/tests/lib/libc/stdio/.debug/fmemopen_test.debug OLD_FILES+=usr/tests/lib/libc/stdio/.debug/fopen_test.debug OLD_FILES+=usr/tests/lib/libc/stdio/.debug/fputc_test.debug OLD_FILES+=usr/tests/lib/libc/stdio/.debug/mktemp_test.debug OLD_FILES+=usr/tests/lib/libc/stdio/.debug/popen_test.debug OLD_FILES+=usr/tests/lib/libc/stdio/.debug/printf_test.debug OLD_FILES+=usr/tests/lib/libc/stdio/.debug/scanf_test.debug OLD_DIRS+=usr/tests/lib/libc/stdlib/.debug OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/abs_test.debug OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/atoi_test.debug OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/div_test.debug OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/exit_test.debug OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/getenv_test.debug OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/h_getopt.debug OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/h_getopt_long.debug OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/hsearch_test.debug OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/posix_memalign_test.debug OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/random_test.debug OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/strtod_test.debug OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/strtol_test.debug OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/system_test.debug OLD_DIRS+=usr/tests/lib/libc/string/.debug OLD_FILES+=usr/tests/lib/libc/string/.debug/memchr.debug OLD_FILES+=usr/tests/lib/libc/string/.debug/memcpy.debug OLD_FILES+=usr/tests/lib/libc/string/.debug/memmem.debug OLD_FILES+=usr/tests/lib/libc/string/.debug/memset.debug OLD_FILES+=usr/tests/lib/libc/string/.debug/strcat.debug OLD_FILES+=usr/tests/lib/libc/string/.debug/strchr.debug OLD_FILES+=usr/tests/lib/libc/string/.debug/strcmp.debug OLD_FILES+=usr/tests/lib/libc/string/.debug/strcpy.debug OLD_FILES+=usr/tests/lib/libc/string/.debug/strcspn.debug OLD_FILES+=usr/tests/lib/libc/string/.debug/strerror.debug OLD_FILES+=usr/tests/lib/libc/string/.debug/strlen.debug OLD_FILES+=usr/tests/lib/libc/string/.debug/strpbrk.debug OLD_FILES+=usr/tests/lib/libc/string/.debug/strrchr.debug OLD_FILES+=usr/tests/lib/libc/string/.debug/strspn.debug OLD_FILES+=usr/tests/lib/libc/string/.debug/swab.debug OLD_DIRS+=usr/tests/lib/libc/sys/.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/access_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/chroot_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/clock_gettime_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/connect_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/dup_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/fsync_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/getcontext_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/getgroups_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/getitimer_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/getlogin_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/getpid_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/getrusage_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/getsid_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/gettimeofday_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/issetugid_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/kevent_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/kill_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/link_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/listen_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/mincore_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/mkdir_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/mkfifo_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/mknod_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/mlock_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/mmap_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/mprotect_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/msgctl_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/msgget_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/msgrcv_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/msgsnd_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/msync_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/nanosleep_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/pipe2_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/pipe_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/poll_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/revoke_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/select_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/setrlimit_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/setuid_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/sigaction_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/sigqueue_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/sigtimedwait_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/socketpair_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/stat_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/timer_create_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/truncate_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/ucontext_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/umask_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/unlink_test.debug OLD_FILES+=usr/tests/lib/libc/sys/.debug/write_test.debug OLD_DIRS+=usr/tests/lib/libc/termios/.debug OLD_FILES+=usr/tests/lib/libc/termios/.debug/tcsetpgrp_test.debug OLD_DIRS+=usr/tests/lib/libc/tls/.debug OLD_FILES+=usr/tests/lib/libc/tls/.debug/h_tls_dlopen.so.debug OLD_FILES+=usr/tests/lib/libc/tls/.debug/libh_tls_dynamic.so.1.debug OLD_FILES+=usr/tests/lib/libc/tls/.debug/tls_dlopen_test.debug OLD_FILES+=usr/tests/lib/libc/tls/.debug/tls_dynamic_test.debug OLD_DIRS+=usr/tests/lib/libc/ttyio/.debug OLD_FILES+=usr/tests/lib/libc/ttyio/.debug/ttyio_test.debug OLD_DIRS+=usr/tests/lib/libcrypt/.debug OLD_FILES+=usr/tests/lib/libcrypt/.debug/crypt_tests.debug OLD_DIRS+=usr/tests/lib/libmp/.debug OLD_FILES+=usr/tests/lib/libmp/.debug/legacy_test.debug OLD_DIRS+=usr/tests/lib/libnv/.debug OLD_FILES+=usr/tests/lib/libnv/.debug/dnv_tests.debug OLD_FILES+=usr/tests/lib/libnv/.debug/nv_array_tests.debug OLD_FILES+=usr/tests/lib/libnv/.debug/nv_tests.debug OLD_FILES+=usr/tests/lib/libnv/.debug/nvlist_add_test.debug OLD_FILES+=usr/tests/lib/libnv/.debug/nvlist_exists_test.debug OLD_FILES+=usr/tests/lib/libnv/.debug/nvlist_free_test.debug OLD_FILES+=usr/tests/lib/libnv/.debug/nvlist_get_test.debug OLD_FILES+=usr/tests/lib/libnv/.debug/nvlist_move_test.debug OLD_FILES+=usr/tests/lib/libnv/.debug/nvlist_send_recv_test.debug OLD_DIRS+=usr/tests/lib/libpam/.debug OLD_FILES+=usr/tests/lib/libpam/.debug/t_openpam_ctype.debug OLD_FILES+=usr/tests/lib/libpam/.debug/t_openpam_readlinev.debug OLD_FILES+=usr/tests/lib/libpam/.debug/t_openpam_readword.debug OLD_DIRS+=usr/tests/lib/libproc/.debug OLD_FILES+=usr/tests/lib/libproc/.debug/proc_test.debug OLD_FILES+=usr/tests/lib/libproc/.debug/target_prog.debug OLD_DIRS+=usr/tests/lib/librt/.debug OLD_FILES+=usr/tests/lib/librt/.debug/sched_test.debug OLD_FILES+=usr/tests/lib/librt/.debug/sem_test.debug OLD_DIRS+=usr/tests/lib/libthr/.debug OLD_FILES+=usr/tests/lib/libthr/.debug/barrier_test.debug OLD_FILES+=usr/tests/lib/libthr/.debug/cond_test.debug OLD_FILES+=usr/tests/lib/libthr/.debug/condwait_test.debug OLD_FILES+=usr/tests/lib/libthr/.debug/detach_test.debug OLD_FILES+=usr/tests/lib/libthr/.debug/equal_test.debug OLD_FILES+=usr/tests/lib/libthr/.debug/fork_test.debug OLD_FILES+=usr/tests/lib/libthr/.debug/fpu_test.debug OLD_FILES+=usr/tests/lib/libthr/.debug/h_atexit.debug OLD_FILES+=usr/tests/lib/libthr/.debug/h_cancel.debug OLD_FILES+=usr/tests/lib/libthr/.debug/h_exit.debug OLD_FILES+=usr/tests/lib/libthr/.debug/h_resolv.debug OLD_FILES+=usr/tests/lib/libthr/.debug/join_test.debug OLD_FILES+=usr/tests/lib/libthr/.debug/kill_test.debug OLD_FILES+=usr/tests/lib/libthr/.debug/mutex_test.debug OLD_FILES+=usr/tests/lib/libthr/.debug/once_test.debug OLD_FILES+=usr/tests/lib/libthr/.debug/preempt_test.debug OLD_FILES+=usr/tests/lib/libthr/.debug/rwlock_test.debug OLD_FILES+=usr/tests/lib/libthr/.debug/sem_test.debug OLD_FILES+=usr/tests/lib/libthr/.debug/siglongjmp_test.debug OLD_FILES+=usr/tests/lib/libthr/.debug/sigmask_test.debug OLD_FILES+=usr/tests/lib/libthr/.debug/sigsuspend_test.debug OLD_FILES+=usr/tests/lib/libthr/.debug/sleep_test.debug OLD_FILES+=usr/tests/lib/libthr/.debug/swapcontext_test.debug OLD_DIRS+=usr/tests/lib/libthr/dlopen/.debug OLD_FILES+=usr/tests/lib/libthr/dlopen/.debug/dlopen_test.debug OLD_FILES+=usr/tests/lib/libthr/dlopen/.debug/h_pthread_dlopen.so.1.debug OLD_FILES+=usr/tests/lib/libthr/dlopen/.debug/main_pthread_create_test.debug OLD_DIRS+=usr/tests/lib/libutil/.debug OLD_FILES+=usr/tests/lib/libutil/.debug/flopen_test.debug OLD_FILES+=usr/tests/lib/libutil/.debug/grp_test.debug OLD_FILES+=usr/tests/lib/libutil/.debug/humanize_number_test.debug OLD_FILES+=usr/tests/lib/libutil/.debug/pidfile_test.debug OLD_FILES+=usr/tests/lib/libutil/.debug/trimdomain-nodomain_test.debug OLD_FILES+=usr/tests/lib/libutil/.debug/trimdomain_test.debug OLD_DIRS+=usr/tests/lib/libxo/.debug OLD_FILES+=usr/tests/lib/libxo/.debug/libenc_test.so.debug OLD_FILES+=usr/tests/lib/libxo/.debug/test_01.debug OLD_FILES+=usr/tests/lib/libxo/.debug/test_02.debug OLD_FILES+=usr/tests/lib/libxo/.debug/test_03.debug OLD_FILES+=usr/tests/lib/libxo/.debug/test_04.debug OLD_FILES+=usr/tests/lib/libxo/.debug/test_05.debug OLD_FILES+=usr/tests/lib/libxo/.debug/test_06.debug OLD_FILES+=usr/tests/lib/libxo/.debug/test_07.debug OLD_FILES+=usr/tests/lib/libxo/.debug/test_08.debug OLD_FILES+=usr/tests/lib/libxo/.debug/test_09.debug OLD_FILES+=usr/tests/lib/libxo/.debug/test_10.debug OLD_FILES+=usr/tests/lib/libxo/.debug/test_11.debug OLD_DIRS+=usr/tests/lib/msun/.debug OLD_FILES+=usr/tests/lib/msun/.debug/acos_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/asin_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/atan_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/cbrt_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/ceil_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/cos_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/cosh_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/erf_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/exp_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/fmod_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/infinity_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/ldexp_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/log_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/pow_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/precision_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/round_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/scalbn_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/sin_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/sinh_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/sqrt_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/tan_test.debug OLD_FILES+=usr/tests/lib/msun/.debug/tanh_test.debug OLD_DIRS+=usr/tests/libexec/rtld-elf/.debug OLD_FILES+=usr/tests/libexec/rtld-elf/.debug/ld_library_pathfds.debug OLD_FILES+=usr/tests/libexec/rtld-elf/.debug/libpythagoras.so.0.debug OLD_FILES+=usr/tests/libexec/rtld-elf/.debug/target.debug OLD_DIRS+=usr/tests/sbin/devd/.debug OLD_FILES+=usr/tests/sbin/devd/.debug/client_test.debug OLD_DIRS+=usr/tests/sbin/dhclient/.debug OLD_FILES+=usr/tests/sbin/dhclient/.debug/option-domain-search_test.debug OLD_DIRS+=usr/tests/share/examples/tests/atf/.debug OLD_FILES+=usr/tests/share/examples/tests/atf/.debug/printf_test.debug OLD_DIRS+=usr/tests/share/examples/tests/plain/.debug OLD_FILES+=usr/tests/share/examples/tests/plain/.debug/printf_test.debug OLD_DIRS+=usr/tests/sys/aio/.debug OLD_FILES+=usr/tests/sys/aio/.debug/aio_kqueue_test.debug OLD_FILES+=usr/tests/sys/aio/.debug/aio_test.debug OLD_FILES+=usr/tests/sys/aio/.debug/lio_kqueue_test.debug OLD_DIRS+=usr/tests/sys/fifo/.debug OLD_FILES+=usr/tests/sys/fifo/.debug/fifo_create.debug OLD_FILES+=usr/tests/sys/fifo/.debug/fifo_io.debug OLD_FILES+=usr/tests/sys/fifo/.debug/fifo_misc.debug OLD_FILES+=usr/tests/sys/fifo/.debug/fifo_open.debug OLD_DIRS+=usr/tests/sys/file/.debug OLD_FILES+=usr/tests/sys/file/.debug/closefrom_test.debug OLD_FILES+=usr/tests/sys/file/.debug/dup_test.debug OLD_FILES+=usr/tests/sys/file/.debug/fcntlflags_test.debug OLD_FILES+=usr/tests/sys/file/.debug/flock_helper.debug OLD_FILES+=usr/tests/sys/file/.debug/ftruncate_test.debug OLD_FILES+=usr/tests/sys/file/.debug/newfileops_on_fork_test.debug OLD_DIRS+=usr/tests/sys/kern/.debug OLD_FILES+=usr/tests/sys/kern/.debug/kern_descrip_test.debug OLD_FILES+=usr/tests/sys/kern/.debug/ptrace_test.debug OLD_FILES+=usr/tests/sys/kern/.debug/unix_seqpacket_test.debug OLD_DIRS+=usr/tests/sys/kern/execve/.debug OLD_FILES+=usr/tests/sys/kern/execve/.debug/execve_helper.debug OLD_FILES+=usr/tests/sys/kern/execve/.debug/good_aout.debug OLD_DIRS+=usr/tests/sys/kqueue/.debug OLD_FILES+=usr/tests/sys/kqueue/.debug/kqtest.debug OLD_DIRS+=usr/tests/sys/mqueue/.debug OLD_FILES+=usr/tests/sys/mqueue/.debug/mqtest1.debug OLD_FILES+=usr/tests/sys/mqueue/.debug/mqtest2.debug OLD_FILES+=usr/tests/sys/mqueue/.debug/mqtest3.debug OLD_FILES+=usr/tests/sys/mqueue/.debug/mqtest4.debug OLD_FILES+=usr/tests/sys/mqueue/.debug/mqtest5.debug OLD_DIRS+=usr/tests/sys/netinet/.debug OLD_FILES+=usr/tests/sys/netinet/.debug/udp_dontroute.debug OLD_DIRS+=usr/tests/sys/pjdfstest/.debug OLD_FILES+=usr/tests/sys/pjdfstest/.debug/pjdfstest.debug OLD_DIRS+=usr/tests/sys/vm/.debug OLD_FILES+=usr/tests/sys/vm/.debug/mmap_test.debug # 20151015: Rename files due to file-installed-as-dir bug OLD_FILES+=usr/share/doc/legal/realtek OLD_FILES+=usr/share/doc/legal/realtek/LICENSE OLD_DIRS+=usr/share/doc/legal/realtek OLD_DIRS+=usr/share/doc/legal/intel_ipw OLD_FILES+=usr/share/doc/legal/intel_ipw/LICENSE OLD_FILES+=usr/share/doc/legal/intel_iwn OLD_FILES+=usr/share/doc/legal/intel_iwn/LICENSE OLD_DIRS+=usr/share/doc/legal/intel_iwn OLD_DIRS+=usr/share/doc/legal/intel_iwi OLD_FILES+=usr/share/doc/legal/intel_iwi/LICENSE OLD_DIRS+=usr/share/doc/legal/intel_wpi OLD_FILES+=usr/share/doc/legal/intel_wpi/LICENSE # 20151006: new libc++ import OLD_FILES+=usr/include/c++/__tuple_03 OLD_FILES+=usr/include/c++/v1/__tuple_03 OLD_FILES+=usr/include/c++/v1/tr1/__tuple_03 # 20151006: new clang import which bumps version from 3.6.1 to 3.7.0. OLD_FILES+=usr/lib/clang/3.6.1/include/__stddef_max_align_t.h OLD_FILES+=usr/lib/clang/3.6.1/include/__wmmintrin_aes.h OLD_FILES+=usr/lib/clang/3.6.1/include/__wmmintrin_pclmul.h OLD_FILES+=usr/lib/clang/3.6.1/include/adxintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/altivec.h OLD_FILES+=usr/lib/clang/3.6.1/include/ammintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/arm_acle.h OLD_FILES+=usr/lib/clang/3.6.1/include/arm_neon.h OLD_FILES+=usr/lib/clang/3.6.1/include/avx2intrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/avx512bwintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/avx512erintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/avx512fintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/avx512vlbwintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/avx512vlintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/avxintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/bmi2intrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/bmiintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/cpuid.h OLD_FILES+=usr/lib/clang/3.6.1/include/emmintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/f16cintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/fma4intrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/fmaintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/ia32intrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/immintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/lzcntintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/mm3dnow.h OLD_FILES+=usr/lib/clang/3.6.1/include/mm_malloc.h OLD_FILES+=usr/lib/clang/3.6.1/include/mmintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/module.modulemap OLD_FILES+=usr/lib/clang/3.6.1/include/nmmintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/pmmintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/popcntintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/prfchwintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/rdseedintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/rtmintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/shaintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/smmintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/tbmintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/tmmintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/wmmintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/x86intrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/xmmintrin.h OLD_FILES+=usr/lib/clang/3.6.1/include/xopintrin.h OLD_DIRS+=usr/lib/clang/3.6.1/include OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.asan-i386.a OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.asan-x86_64.a OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.asan_cxx-i386.a OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.asan_cxx-x86_64.a OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.profile-arm.a OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.profile-i386.a OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.profile-x86_64.a OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.san-i386.a OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.san-x86_64.a OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.ubsan-i386.a OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.ubsan-x86_64.a OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.ubsan_cxx-i386.a OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.ubsan_cxx-x86_64.a OLD_DIRS+=usr/lib/clang/3.6.1/lib/freebsd OLD_DIRS+=usr/lib/clang/3.6.1/lib OLD_DIRS+=usr/lib/clang/3.6.1 # 20150928: unused sgsmsg utility is removed OLD_FILES+=usr/bin/sgsmsg # 20150926: remove links to removed/unimplemented mbuf(9) macros OLD_FILES+=usr/share/man/man9/MEXT_ADD_REF.9.gz OLD_FILES+=usr/share/man/man9/MEXTFREE.9.gz OLD_FILES+=usr/share/man/man9/MEXT_IS_REF.9.gz OLD_FILES+=usr/share/man/man9/MEXT_REM_REF.9.gz OLD_FILES+=usr/share/man/man9/MFREE.9.gz # 20150818: *allocm() are gone in jemalloc 4.0.0 OLD_FILES+=usr/share/man/man3/allocm.3.gz OLD_FILES+=usr/share/man/man3/dallocm.3.gz OLD_FILES+=usr/share/man/man3/nallocm.3.gz OLD_FILES+=usr/share/man/man3/rallocm.3.gz OLD_FILES+=usr/share/man/man3/sallocm.3.gz # 20150802: Remove netbsd's test on pw(8) OLD_FILES+=usr/tests/usr.sbin/pw/pw_test # 20150719: Remove libarchive.pc OLD_FILES+=usr/libdata/pkgconfig/libarchive.pc # 20150705: Rename DTrace provider man pages. OLD_FILES+=usr/share/man/man4/dtrace-io.4.gz OLD_FILES+=usr/share/man/man4/dtrace-ip.4.gz OLD_FILES+=usr/share/man/man4/dtrace-proc.4.gz OLD_FILES+=usr/share/man/man4/dtrace-sched.4.gz OLD_FILES+=usr/share/man/man4/dtrace-tcp.4.gz OLD_FILES+=usr/share/man/man4/dtrace-udp.4.gz # 20150704: nvlist private headers no longer installed OLD_FILES+=usr/include/sys/nv_impl.h OLD_FILES+=usr/include/sys/nvlist_impl.h OLD_FILES+=usr/include/sys/nvpair_impl.h # 20150624 OLD_LIBS+=usr/lib/libugidfw.so.4 OLD_LIBS+=usr/lib32/libugidfw.so.4 # 20150604: Move nvlist man pages to section 9. OLD_FILES+=usr/share/man/man3/libnv.3.gz OLD_FILES+=usr/share/man/man3/nv.3.gz OLD_FILES+=usr/share/man/man3/nvlist.3.gz OLD_FILES+=usr/share/man/man3/nvlist_add_binary.3.gz OLD_FILES+=usr/share/man/man3/nvlist_add_bool.3.gz OLD_FILES+=usr/share/man/man3/nvlist_add_descriptor.3.gz OLD_FILES+=usr/share/man/man3/nvlist_add_null.3.gz OLD_FILES+=usr/share/man/man3/nvlist_add_number.3.gz OLD_FILES+=usr/share/man/man3/nvlist_add_nvlist.3.gz OLD_FILES+=usr/share/man/man3/nvlist_add_string.3.gz OLD_FILES+=usr/share/man/man3/nvlist_add_stringf.3.gz OLD_FILES+=usr/share/man/man3/nvlist_add_stringv.3.gz OLD_FILES+=usr/share/man/man3/nvlist_clone.3.gz OLD_FILES+=usr/share/man/man3/nvlist_create.3.gz OLD_FILES+=usr/share/man/man3/nvlist_destroy.3.gz OLD_FILES+=usr/share/man/man3/nvlist_dump.3.gz OLD_FILES+=usr/share/man/man3/nvlist_empty.3.gz OLD_FILES+=usr/share/man/man3/nvlist_error.3.gz OLD_FILES+=usr/share/man/man3/nvlist_exists.3.gz OLD_FILES+=usr/share/man/man3/nvlist_exists_binary.3.gz OLD_FILES+=usr/share/man/man3/nvlist_exists_bool.3.gz OLD_FILES+=usr/share/man/man3/nvlist_exists_descriptor.3.gz OLD_FILES+=usr/share/man/man3/nvlist_exists_null.3.gz OLD_FILES+=usr/share/man/man3/nvlist_exists_number.3.gz OLD_FILES+=usr/share/man/man3/nvlist_exists_nvlist.3.gz OLD_FILES+=usr/share/man/man3/nvlist_exists_string.3.gz OLD_FILES+=usr/share/man/man3/nvlist_exists_type.3.gz OLD_FILES+=usr/share/man/man3/nvlist_fdump.3.gz OLD_FILES+=usr/share/man/man3/nvlist_flags.3.gz OLD_FILES+=usr/share/man/man3/nvlist_free.3.gz OLD_FILES+=usr/share/man/man3/nvlist_free_binary.3.gz OLD_FILES+=usr/share/man/man3/nvlist_free_bool.3.gz OLD_FILES+=usr/share/man/man3/nvlist_free_descriptor.3.gz OLD_FILES+=usr/share/man/man3/nvlist_free_null.3.gz OLD_FILES+=usr/share/man/man3/nvlist_free_number.3.gz OLD_FILES+=usr/share/man/man3/nvlist_free_nvlist.3.gz OLD_FILES+=usr/share/man/man3/nvlist_free_string.3.gz OLD_FILES+=usr/share/man/man3/nvlist_free_type.3.gz OLD_FILES+=usr/share/man/man3/nvlist_get_binary.3.gz OLD_FILES+=usr/share/man/man3/nvlist_get_bool.3.gz OLD_FILES+=usr/share/man/man3/nvlist_get_descriptor.3.gz OLD_FILES+=usr/share/man/man3/nvlist_get_number.3.gz OLD_FILES+=usr/share/man/man3/nvlist_get_nvlist.3.gz OLD_FILES+=usr/share/man/man3/nvlist_get_parent.3.gz OLD_FILES+=usr/share/man/man3/nvlist_get_string.3.gz OLD_FILES+=usr/share/man/man3/nvlist_move_binary.3.gz OLD_FILES+=usr/share/man/man3/nvlist_move_descriptor.3.gz OLD_FILES+=usr/share/man/man3/nvlist_move_nvlist.3.gz OLD_FILES+=usr/share/man/man3/nvlist_move_string.3.gz OLD_FILES+=usr/share/man/man3/nvlist_next.3.gz OLD_FILES+=usr/share/man/man3/nvlist_pack.3.gz OLD_FILES+=usr/share/man/man3/nvlist_recv.3.gz OLD_FILES+=usr/share/man/man3/nvlist_send.3.gz OLD_FILES+=usr/share/man/man3/nvlist_set_error.3.gz OLD_FILES+=usr/share/man/man3/nvlist_size.3.gz OLD_FILES+=usr/share/man/man3/nvlist_take_binary.3.gz OLD_FILES+=usr/share/man/man3/nvlist_take_bool.3.gz OLD_FILES+=usr/share/man/man3/nvlist_take_descriptor.3.gz OLD_FILES+=usr/share/man/man3/nvlist_take_number.3.gz OLD_FILES+=usr/share/man/man3/nvlist_take_nvlist.3.gz OLD_FILES+=usr/share/man/man3/nvlist_take_string.3.gz OLD_FILES+=usr/share/man/man3/nvlist_unpack.3.gz OLD_FILES+=usr/share/man/man3/nvlist_xfer.3.gz # 20150702: Remove duplicated nvlist includes. OLD_FILES+=usr/include/dnv.h OLD_FILES+=usr/include/nv.h # 20150528: PCI IOV device driver methods moved to a separate kobj interface. OLD_FILES+=usr/share/man/man9/PCI_ADD_VF.9.gz OLD_FILES+=usr/share/man/man9/PCI_INIT_IOV.9.gz OLD_FILES+=usr/share/man/man9/PCI_UNINIT_IOV.9.gz # 20150525: new clang import which bumps version from 3.6.0 to 3.6.1. OLD_FILES+=usr/lib/clang/3.6.0/include/__stddef_max_align_t.h OLD_FILES+=usr/lib/clang/3.6.0/include/__wmmintrin_aes.h OLD_FILES+=usr/lib/clang/3.6.0/include/__wmmintrin_pclmul.h OLD_FILES+=usr/lib/clang/3.6.0/include/adxintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/altivec.h OLD_FILES+=usr/lib/clang/3.6.0/include/ammintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/arm_acle.h OLD_FILES+=usr/lib/clang/3.6.0/include/arm_neon.h OLD_FILES+=usr/lib/clang/3.6.0/include/avx2intrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/avx512bwintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/avx512erintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/avx512fintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/avx512vlbwintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/avx512vlintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/avxintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/bmi2intrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/bmiintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/cpuid.h OLD_FILES+=usr/lib/clang/3.6.0/include/emmintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/f16cintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/fma4intrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/fmaintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/ia32intrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/immintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/lzcntintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/mm3dnow.h OLD_FILES+=usr/lib/clang/3.6.0/include/mm_malloc.h OLD_FILES+=usr/lib/clang/3.6.0/include/mmintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/module.modulemap OLD_FILES+=usr/lib/clang/3.6.0/include/nmmintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/pmmintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/popcntintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/prfchwintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/rdseedintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/rtmintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/shaintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/smmintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/tbmintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/tmmintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/wmmintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/x86intrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/xmmintrin.h OLD_FILES+=usr/lib/clang/3.6.0/include/xopintrin.h OLD_DIRS+=usr/lib/clang/3.6.0/include OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.asan-i386.a OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.asan-x86_64.a OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.asan_cxx-i386.a OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.profile-arm.a OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.profile-i386.a OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.profile-x86_64.a OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.san-i386.a OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.san-x86_64.a OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.ubsan-i386.a OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.ubsan-x86_64.a OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.ubsan_cxx-i386.a OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.ubsan_cxx-x86_64.a OLD_DIRS+=usr/lib/clang/3.6.0/lib/freebsd OLD_DIRS+=usr/lib/clang/3.6.0/lib OLD_DIRS+=usr/lib/clang/3.6.0 # 20150521 OLD_FILES+=usr/bin/demandoc OLD_FILES+=usr/share/man/man1/demandoc.1.gz OLD_FILES+=usr/share/man/man3/mandoc.3.gz OLD_FILES+=usr/share/man/man3/mandoc_headers.3.gz # 20150520 OLD_FILES+=usr/lib/libheimsqlite.a OLD_FILES+=usr/lib/libheimsqlite.so OLD_LIBS+=usr/lib/libheimsqlite.so.11 OLD_FILES+=usr/lib/libheimsqlite_p.a OLD_FILES+=usr/lib32/libheimsqlite.a OLD_FILES+=usr/lib32/libheimsqlite.so OLD_LIBS+=usr/lib32/libheimsqlite.so.11 OLD_FILES+=usr/lib32/libheimsqlite_p.a # 20150518: tzdata2015c update OLD_FILES+=usr/share/zoneinfo/America/Montreal # 20150506 OLD_FILES+=usr/share/man/man9/NDHASGIANT.9.gz # 20150504 OLD_FILES+=usr/share/examples/etc/libmap32.conf OLD_FILES+=usr/include/bsdstat.h OLD_LIBS+=usr/lib32/private/libatf-c++.so.2 OLD_LIBS+=usr/lib32/private/libbsdstat.so.1 OLD_LIBS+=usr/lib32/private/libheimipcs.so.11 OLD_LIBS+=usr/lib32/private/libsqlite3.so.0 OLD_LIBS+=usr/lib32/private/libunbound.so.5 OLD_LIBS+=usr/lib32/private/libatf-c.so.1 OLD_LIBS+=usr/lib32/private/libheimipcc.so.11 OLD_LIBS+=usr/lib32/private/libldns.so.5 OLD_LIBS+=usr/lib32/private/libssh.so.5 OLD_LIBS+=usr/lib32/private/libucl.so.1 OLD_DIRS+=usr/lib32/private OLD_LIBS+=usr/lib/private/libatf-c++.so.2 OLD_LIBS+=usr/lib/private/libbsdstat.so.1 OLD_LIBS+=usr/lib/private/libheimipcs.so.11 OLD_LIBS+=usr/lib/private/libsqlite3.so.0 OLD_LIBS+=usr/lib/private/libunbound.so.5 OLD_LIBS+=usr/lib/private/libatf-c.so.1 OLD_LIBS+=usr/lib/private/libheimipcc.so.11 OLD_LIBS+=usr/lib/private/libldns.so.5 OLD_LIBS+=usr/lib/private/libssh.so.5 OLD_LIBS+=usr/lib/private/libucl.so.1 OLD_DIRS+=usr/lib/private # 20150501 OLD_FILES+=usr/bin/soeliminate OLD_FILES+=usr/share/man/man1/soeliminate.1.gz # 20150501: Remove the nvlist_.*[vf] functions manpages. OLD_FILES+=usr/share/man/man3/nvlist_addf_binary.3.gz OLD_FILES+=usr/share/man/man3/nvlist_addf_bool.3.gz OLD_FILES+=usr/share/man/man3/nvlist_addf_descriptor.3.gz OLD_FILES+=usr/share/man/man3/nvlist_addf_null.3.gz OLD_FILES+=usr/share/man/man3/nvlist_addf_number.3.gz OLD_FILES+=usr/share/man/man3/nvlist_addf_nvlist.3.gz OLD_FILES+=usr/share/man/man3/nvlist_addf_string.3.gz OLD_FILES+=usr/share/man/man3/nvlist_addv_binary.3.gz OLD_FILES+=usr/share/man/man3/nvlist_addv_bool.3.gz OLD_FILES+=usr/share/man/man3/nvlist_addv_descriptor.3.gz OLD_FILES+=usr/share/man/man3/nvlist_addv_null.3.gz OLD_FILES+=usr/share/man/man3/nvlist_addv_number.3.gz OLD_FILES+=usr/share/man/man3/nvlist_addv_nvlist.3.gz OLD_FILES+=usr/share/man/man3/nvlist_addv_string.3.gz OLD_FILES+=usr/share/man/man3/nvlist_existsf.3.gz OLD_FILES+=usr/share/man/man3/nvlist_existsf_binary.3.gz OLD_FILES+=usr/share/man/man3/nvlist_existsf_bool.3.gz OLD_FILES+=usr/share/man/man3/nvlist_existsf_descriptor.3.gz OLD_FILES+=usr/share/man/man3/nvlist_existsf_null.3.gz OLD_FILES+=usr/share/man/man3/nvlist_existsf_number.3.gz OLD_FILES+=usr/share/man/man3/nvlist_existsf_nvlist.3.gz OLD_FILES+=usr/share/man/man3/nvlist_existsf_string.3.gz OLD_FILES+=usr/share/man/man3/nvlist_existsf_type.3.gz OLD_FILES+=usr/share/man/man3/nvlist_existsv.3.gz OLD_FILES+=usr/share/man/man3/nvlist_existsv_binary.3.gz OLD_FILES+=usr/share/man/man3/nvlist_existsv_bool.3.gz OLD_FILES+=usr/share/man/man3/nvlist_existsv_descriptor.3.gz OLD_FILES+=usr/share/man/man3/nvlist_existsv_null.3.gz OLD_FILES+=usr/share/man/man3/nvlist_existsv_number.3.gz OLD_FILES+=usr/share/man/man3/nvlist_existsv_nvlist.3.gz OLD_FILES+=usr/share/man/man3/nvlist_existsv_string.3.gz OLD_FILES+=usr/share/man/man3/nvlist_existsv_type.3.gz OLD_FILES+=usr/share/man/man3/nvlist_freef.3.gz OLD_FILES+=usr/share/man/man3/nvlist_freef_binary.3.gz OLD_FILES+=usr/share/man/man3/nvlist_freef_bool.3.gz OLD_FILES+=usr/share/man/man3/nvlist_freef_descriptor.3.gz OLD_FILES+=usr/share/man/man3/nvlist_freef_null.3.gz OLD_FILES+=usr/share/man/man3/nvlist_freef_number.3.gz OLD_FILES+=usr/share/man/man3/nvlist_freef_nvlist.3.gz OLD_FILES+=usr/share/man/man3/nvlist_freef_string.3.gz OLD_FILES+=usr/share/man/man3/nvlist_freef_type.3.gz OLD_FILES+=usr/share/man/man3/nvlist_freev.3.gz OLD_FILES+=usr/share/man/man3/nvlist_freev_binary.3.gz OLD_FILES+=usr/share/man/man3/nvlist_freev_bool.3.gz OLD_FILES+=usr/share/man/man3/nvlist_freev_descriptor.3.gz OLD_FILES+=usr/share/man/man3/nvlist_freev_null.3.gz OLD_FILES+=usr/share/man/man3/nvlist_freev_number.3.gz OLD_FILES+=usr/share/man/man3/nvlist_freev_nvlist.3.gz OLD_FILES+=usr/share/man/man3/nvlist_freev_string.3.gz OLD_FILES+=usr/share/man/man3/nvlist_freev_type.3.gz OLD_FILES+=usr/share/man/man3/nvlist_getf_binary.3.gz OLD_FILES+=usr/share/man/man3/nvlist_getf_bool.3.gz OLD_FILES+=usr/share/man/man3/nvlist_getf_descriptor.3.gz OLD_FILES+=usr/share/man/man3/nvlist_getf_number.3.gz OLD_FILES+=usr/share/man/man3/nvlist_getf_nvlist.3.gz OLD_FILES+=usr/share/man/man3/nvlist_getf_string.3.gz OLD_FILES+=usr/share/man/man3/nvlist_getv_binary.3.gz OLD_FILES+=usr/share/man/man3/nvlist_getv_bool.3.gz OLD_FILES+=usr/share/man/man3/nvlist_getv_descriptor.3.gz OLD_FILES+=usr/share/man/man3/nvlist_getv_number.3.gz OLD_FILES+=usr/share/man/man3/nvlist_getv_nvlist.3.gz OLD_FILES+=usr/share/man/man3/nvlist_getv_string.3.gz OLD_FILES+=usr/share/man/man3/nvlist_movef_binary.3.gz OLD_FILES+=usr/share/man/man3/nvlist_movef_descriptor.3.gz OLD_FILES+=usr/share/man/man3/nvlist_movef_nvlist.3.gz OLD_FILES+=usr/share/man/man3/nvlist_movef_string.3.gz OLD_FILES+=usr/share/man/man3/nvlist_movev_binary.3.gz OLD_FILES+=usr/share/man/man3/nvlist_movev_descriptor.3.gz OLD_FILES+=usr/share/man/man3/nvlist_movev_nvlist.3.gz OLD_FILES+=usr/share/man/man3/nvlist_movev_string.3.gz OLD_FILES+=usr/share/man/man3/nvlist_takef_binary.3.gz OLD_FILES+=usr/share/man/man3/nvlist_takef_bool.3.gz OLD_FILES+=usr/share/man/man3/nvlist_takef_descriptor.3.gz OLD_FILES+=usr/share/man/man3/nvlist_takef_number.3.gz OLD_FILES+=usr/share/man/man3/nvlist_takef_nvlist.3.gz OLD_FILES+=usr/share/man/man3/nvlist_takef_string.3.gz OLD_FILES+=usr/share/man/man3/nvlist_takev_binary.3.gz OLD_FILES+=usr/share/man/man3/nvlist_takev_bool.3.gz OLD_FILES+=usr/share/man/man3/nvlist_takev_descriptor.3.gz OLD_FILES+=usr/share/man/man3/nvlist_takev_number.3.gz OLD_FILES+=usr/share/man/man3/nvlist_takev_nvlist.3.gz OLD_FILES+=usr/share/man/man3/nvlist_takev_string.3.gz # 20150429: remove never written documentation OLD_FILES+=usr/share/doc/papers/hwpmc.ascii.gz # 20150427: test/sys/kern/mmap_test moved to test/sys/vm/mmap_test OLD_FILES+=usr/tests/sys/kern/mmap_test # 20150422: zlib.c moved from net to libkern OLD_FILES+=usr/include/net/zlib.h OLD_FILES+=usr/include/net/zutil.h # 20150418 OLD_FILES+=sbin/mount_oldnfs OLD_FILES+=usr/share/man/man8/mount_oldnfs.8.gz # 20150416: ALTQ moved to net/altq OLD_FILES+=usr/include/altq/altq_rmclass_debug.h OLD_FILES+=usr/include/altq/altq.h OLD_FILES+=usr/include/altq/altq_cdnr.h OLD_FILES+=usr/include/altq/altq_hfsc.h OLD_FILES+=usr/include/altq/altq_priq.h OLD_FILES+=usr/include/altq/altqconf.h OLD_FILES+=usr/include/altq/altq_classq.h OLD_FILES+=usr/include/altq/altq_red.h OLD_FILES+=usr/include/altq/if_altq.h OLD_FILES+=usr/include/altq/altq_var.h OLD_FILES+=usr/include/altq/altq_rmclass.h OLD_FILES+=usr/include/altq/altq_cbq.h OLD_FILES+=usr/include/altq/altq_rio.h OLD_DIRS+=usr/include/altq # 20150330: ntp 4.2.8p1 OLD_FILES+=usr/share/doc/ntp/driver1.html OLD_FILES+=usr/share/doc/ntp/driver10.html OLD_FILES+=usr/share/doc/ntp/driver11.html OLD_FILES+=usr/share/doc/ntp/driver12.html OLD_FILES+=usr/share/doc/ntp/driver16.html OLD_FILES+=usr/share/doc/ntp/driver18.html OLD_FILES+=usr/share/doc/ntp/driver19.html OLD_FILES+=usr/share/doc/ntp/driver2.html OLD_FILES+=usr/share/doc/ntp/driver20.html OLD_FILES+=usr/share/doc/ntp/driver22.html OLD_FILES+=usr/share/doc/ntp/driver26.html OLD_FILES+=usr/share/doc/ntp/driver27.html OLD_FILES+=usr/share/doc/ntp/driver28.html OLD_FILES+=usr/share/doc/ntp/driver29.html OLD_FILES+=usr/share/doc/ntp/driver3.html OLD_FILES+=usr/share/doc/ntp/driver30.html OLD_FILES+=usr/share/doc/ntp/driver32.html OLD_FILES+=usr/share/doc/ntp/driver33.html OLD_FILES+=usr/share/doc/ntp/driver34.html OLD_FILES+=usr/share/doc/ntp/driver35.html OLD_FILES+=usr/share/doc/ntp/driver36.html OLD_FILES+=usr/share/doc/ntp/driver37.html OLD_FILES+=usr/share/doc/ntp/driver4.html OLD_FILES+=usr/share/doc/ntp/driver5.html OLD_FILES+=usr/share/doc/ntp/driver6.html OLD_FILES+=usr/share/doc/ntp/driver7.html OLD_FILES+=usr/share/doc/ntp/driver8.html OLD_FILES+=usr/share/doc/ntp/driver9.html OLD_FILES+=usr/share/doc/ntp/ldisc.html OLD_FILES+=usr/share/doc/ntp/measure.html OLD_FILES+=usr/share/doc/ntp/mx4200data.html OLD_FILES+=usr/share/doc/ntp/notes.html OLD_FILES+=usr/share/doc/ntp/patches.html OLD_FILES+=usr/share/doc/ntp/porting.html OLD_FILES+=usr/share/man/man1/sntp.1.gz # 20150329 .if ${TARGET_ARCH} == "arm" OLD_FILES+=usr/include/bootconfig.h .endif # 20150326 OLD_FILES+=usr/share/man/man1/pmcstudy.1.gz # 20150315: new clang import which bumps version from 3.5.1 to 3.6.0. OLD_FILES+=usr/include/clang/3.5.1/__wmmintrin_aes.h OLD_FILES+=usr/include/clang/3.5.1/__wmmintrin_pclmul.h OLD_FILES+=usr/include/clang/3.5.1/altivec.h OLD_FILES+=usr/include/clang/3.5.1/ammintrin.h OLD_FILES+=usr/include/clang/3.5.1/arm_acle.h OLD_FILES+=usr/include/clang/3.5.1/arm_neon.h OLD_FILES+=usr/include/clang/3.5.1/avx2intrin.h OLD_FILES+=usr/include/clang/3.5.1/avxintrin.h OLD_FILES+=usr/include/clang/3.5.1/bmi2intrin.h OLD_FILES+=usr/include/clang/3.5.1/bmiintrin.h OLD_FILES+=usr/include/clang/3.5.1/cpuid.h OLD_FILES+=usr/include/clang/3.5.1/emmintrin.h OLD_FILES+=usr/include/clang/3.5.1/f16cintrin.h OLD_FILES+=usr/include/clang/3.5.1/fma4intrin.h OLD_FILES+=usr/include/clang/3.5.1/fmaintrin.h OLD_FILES+=usr/include/clang/3.5.1/ia32intrin.h OLD_FILES+=usr/include/clang/3.5.1/immintrin.h OLD_FILES+=usr/include/clang/3.5.1/lzcntintrin.h OLD_FILES+=usr/include/clang/3.5.1/mm3dnow.h OLD_FILES+=usr/include/clang/3.5.1/mm_malloc.h OLD_FILES+=usr/include/clang/3.5.1/mmintrin.h OLD_FILES+=usr/include/clang/3.5.1/module.modulemap OLD_FILES+=usr/include/clang/3.5.1/nmmintrin.h OLD_FILES+=usr/include/clang/3.5.1/pmmintrin.h OLD_FILES+=usr/include/clang/3.5.1/popcntintrin.h OLD_FILES+=usr/include/clang/3.5.1/prfchwintrin.h OLD_FILES+=usr/include/clang/3.5.1/rdseedintrin.h OLD_FILES+=usr/include/clang/3.5.1/rtmintrin.h OLD_FILES+=usr/include/clang/3.5.1/shaintrin.h OLD_FILES+=usr/include/clang/3.5.1/smmintrin.h OLD_FILES+=usr/include/clang/3.5.1/tbmintrin.h OLD_FILES+=usr/include/clang/3.5.1/tmmintrin.h OLD_FILES+=usr/include/clang/3.5.1/wmmintrin.h OLD_FILES+=usr/include/clang/3.5.1/x86intrin.h OLD_FILES+=usr/include/clang/3.5.1/xmmintrin.h OLD_FILES+=usr/include/clang/3.5.1/xopintrin.h OLD_DIRS+=usr/include/clang/3.5.1 OLD_DIRS+=usr/include/clang OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.asan-i386.a OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.asan-x86_64.a OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.asan_cxx-i386.a OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.asan_cxx-x86_64.a OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.profile-arm.a OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.profile-i386.a OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.profile-x86_64.a OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.san-i386.a OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.san-x86_64.a OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.ubsan-i386.a OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.ubsan-x86_64.a OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.ubsan_cxx-i386.a OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.ubsan_cxx-x86_64.a OLD_DIRS+=usr/lib/clang/3.5.1/lib/freebsd OLD_DIRS+=usr/lib/clang/3.5.1/lib OLD_DIRS+=usr/lib/clang/3.5.1 # 20150302: binutils documentation distributed as a manpage OLD_FILES+=usr/share/doc/binutils/as.txt OLD_FILES+=usr/share/doc/binutils/ld.txt OLD_DIRS+=usr/share/doc/binutils # 20150222: Removed bcd(6) and ppt(6) OLD_FILES+=usr/bin/bcd OLD_FILES+=usr/bin/ppt OLD_FILES+=usr/share/man/man6/bcd.6.gz OLD_FILES+=usr/share/man/man6/ppt.6.gz # 20150217: Removed remnants of ar(4) driver OLD_FILES+=usr/include/dev/ic/hd64570.h # 20150212: /usr/games moving into /usr/bin OLD_FILES+=usr/games/bcd OLD_FILES+=usr/games/caesar OLD_FILES+=usr/games/factor OLD_FILES+=usr/games/fortune OLD_FILES+=usr/games/grdc OLD_FILES+=usr/games/morse OLD_FILES+=usr/games/number OLD_FILES+=usr/games/pom OLD_FILES+=usr/games/ppt OLD_FILES+=usr/games/primes OLD_FILES+=usr/games/random OLD_FILES+=usr/games/rot13 OLD_FILES+=usr/games/strfile OLD_FILES+=usr/games/unstr OLD_DIRS+=usr/games # 20150209: liblzma header OLD_FILES+=usr/include/lzma/lzma.h # 20150124: spl.9 and friends OLD_FILES+=usr/share/man/man9/spl.9.gz OLD_FILES+=usr/share/man/man9/spl0.9.gz OLD_FILES+=usr/share/man/man9/splbio.9.gz OLD_FILES+=usr/share/man/man9/splclock.9.gz OLD_FILES+=usr/share/man/man9/splhigh.9.gz OLD_FILES+=usr/share/man/man9/splimp.9.gz OLD_FILES+=usr/share/man/man9/splnet.9.gz OLD_FILES+=usr/share/man/man9/splsoftclock.9.gz OLD_FILES+=usr/share/man/man9/splsofttty.9.gz OLD_FILES+=usr/share/man/man9/splstatclock.9.gz OLD_FILES+=usr/share/man/man9/spltty.9.gz OLD_FILES+=usr/share/man/man9/splvm.9.gz OLD_FILES+=usr/share/man/man9/splx.9.gz # 20150118: toeplitz.c moved from netinet to net OLD_FILES+=usr/include/netinet/toeplitz.h # 20150118: new clang import which bumps version from 3.5.0 to 3.5.1. OLD_FILES+=usr/include/clang/3.5.0/__wmmintrin_aes.h OLD_FILES+=usr/include/clang/3.5.0/__wmmintrin_pclmul.h OLD_FILES+=usr/include/clang/3.5.0/altivec.h OLD_FILES+=usr/include/clang/3.5.0/ammintrin.h OLD_FILES+=usr/include/clang/3.5.0/arm_acle.h OLD_FILES+=usr/include/clang/3.5.0/arm_neon.h OLD_FILES+=usr/include/clang/3.5.0/avx2intrin.h OLD_FILES+=usr/include/clang/3.5.0/avxintrin.h OLD_FILES+=usr/include/clang/3.5.0/bmi2intrin.h OLD_FILES+=usr/include/clang/3.5.0/bmiintrin.h OLD_FILES+=usr/include/clang/3.5.0/cpuid.h OLD_FILES+=usr/include/clang/3.5.0/emmintrin.h OLD_FILES+=usr/include/clang/3.5.0/f16cintrin.h OLD_FILES+=usr/include/clang/3.5.0/fma4intrin.h OLD_FILES+=usr/include/clang/3.5.0/fmaintrin.h OLD_FILES+=usr/include/clang/3.5.0/ia32intrin.h OLD_FILES+=usr/include/clang/3.5.0/immintrin.h OLD_FILES+=usr/include/clang/3.5.0/lzcntintrin.h OLD_FILES+=usr/include/clang/3.5.0/mm3dnow.h OLD_FILES+=usr/include/clang/3.5.0/mm_malloc.h OLD_FILES+=usr/include/clang/3.5.0/mmintrin.h OLD_FILES+=usr/include/clang/3.5.0/module.modulemap OLD_FILES+=usr/include/clang/3.5.0/nmmintrin.h OLD_FILES+=usr/include/clang/3.5.0/pmmintrin.h OLD_FILES+=usr/include/clang/3.5.0/popcntintrin.h OLD_FILES+=usr/include/clang/3.5.0/prfchwintrin.h OLD_FILES+=usr/include/clang/3.5.0/rdseedintrin.h OLD_FILES+=usr/include/clang/3.5.0/rtmintrin.h OLD_FILES+=usr/include/clang/3.5.0/shaintrin.h OLD_FILES+=usr/include/clang/3.5.0/smmintrin.h OLD_FILES+=usr/include/clang/3.5.0/tbmintrin.h OLD_FILES+=usr/include/clang/3.5.0/tmmintrin.h OLD_FILES+=usr/include/clang/3.5.0/wmmintrin.h OLD_FILES+=usr/include/clang/3.5.0/x86intrin.h OLD_FILES+=usr/include/clang/3.5.0/xmmintrin.h OLD_FILES+=usr/include/clang/3.5.0/xopintrin.h OLD_DIRS+=usr/include/clang/3.5.0 OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.asan-i386.a OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.asan-x86_64.a OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.asan_cxx-i386.a OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.profile-arm.a OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.profile-i386.a OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.profile-x86_64.a OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.san-i386.a OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.san-x86_64.a OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.ubsan-i386.a OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.ubsan-x86_64.a OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.ubsan_cxx-i386.a OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.ubsan_cxx-x86_64.a OLD_DIRS+=usr/lib/clang/3.5.0/lib/freebsd OLD_DIRS+=usr/lib/clang/3.5.0/lib OLD_DIRS+=usr/lib/clang/3.5.0 # 20150102: removal of asr(4) OLD_FILES+=usr/share/man/man4/asr.4.gz # 20150102: removal of texinfo OLD_FILES+=usr/bin/info OLD_FILES+=usr/bin/infokey OLD_FILES+=usr/bin/install-info OLD_FILES+=usr/bin/makeinfo OLD_FILES+=usr/bin/texindex OLD_FILES+=usr/share/info/am-utils.info.gz OLD_FILES+=usr/share/info/as-utils.info.gz OLD_FILES+=usr/share/info/binutils.info.gz OLD_FILES+=usr/share/info/com_err.info.gz OLD_FILES+=usr/share/info/diff.info.gz OLD_FILES+=usr/share/info/gdb.info.gz OLD_FILES+=usr/share/info/gdbint.info.gz OLD_FILES+=usr/share/info/gperf.info.gz OLD_FILES+=usr/share/info/grep.info.gz OLD_FILES+=usr/share/info/groff.info.gz OLD_FILES+=usr/share/info/heimdal.info.gz OLD_FILES+=usr/share/info/history.info.gz OLD_FILES+=usr/share/info/info-stnd.info.gz OLD_FILES+=usr/share/info/info.info.gz OLD_FILES+=usr/share/info/ld.info.gz OLD_FILES+=usr/share/info/regex.info.gz OLD_FILES+=usr/share/info/rluserman.info.gz OLD_FILES+=usr/share/info/stabs.info.gz OLD_FILES+=usr/share/info/texinfo.info.gz OLD_FILES+=usr/share/man/man1/info.1.gz OLD_FILES+=usr/share/man/man1/infokey.1.gz OLD_FILES+=usr/share/man/man1/install-info.1.gz OLD_FILES+=usr/share/man/man1/makeinfo.1.gz OLD_FILES+=usr/share/man/man1/texindex.1.gz OLD_FILES+=usr/share/man/man5/info.5.gz OLD_FILES+=usr/share/man/man5/texinfo.5.gz # 20141231: new clang import which bumps version from 3.4.1 to 3.5.0. OLD_FILES+=usr/include/clang/3.4.1/__wmmintrin_aes.h OLD_FILES+=usr/include/clang/3.4.1/__wmmintrin_pclmul.h OLD_FILES+=usr/include/clang/3.4.1/altivec.h OLD_FILES+=usr/include/clang/3.4.1/ammintrin.h OLD_FILES+=usr/include/clang/3.4.1/arm_neon.h OLD_FILES+=usr/include/clang/3.4.1/avx2intrin.h OLD_FILES+=usr/include/clang/3.4.1/avxintrin.h OLD_FILES+=usr/include/clang/3.4.1/bmi2intrin.h OLD_FILES+=usr/include/clang/3.4.1/bmiintrin.h OLD_FILES+=usr/include/clang/3.4.1/cpuid.h OLD_FILES+=usr/include/clang/3.4.1/emmintrin.h OLD_FILES+=usr/include/clang/3.4.1/f16cintrin.h OLD_FILES+=usr/include/clang/3.4.1/fma4intrin.h OLD_FILES+=usr/include/clang/3.4.1/fmaintrin.h OLD_FILES+=usr/include/clang/3.4.1/immintrin.h OLD_FILES+=usr/include/clang/3.4.1/lzcntintrin.h OLD_FILES+=usr/include/clang/3.4.1/mm3dnow.h OLD_FILES+=usr/include/clang/3.4.1/mm_malloc.h OLD_FILES+=usr/include/clang/3.4.1/mmintrin.h OLD_FILES+=usr/include/clang/3.4.1/module.map OLD_FILES+=usr/include/clang/3.4.1/nmmintrin.h OLD_FILES+=usr/include/clang/3.4.1/pmmintrin.h OLD_FILES+=usr/include/clang/3.4.1/popcntintrin.h OLD_FILES+=usr/include/clang/3.4.1/prfchwintrin.h OLD_FILES+=usr/include/clang/3.4.1/rdseedintrin.h OLD_FILES+=usr/include/clang/3.4.1/rtmintrin.h OLD_FILES+=usr/include/clang/3.4.1/shaintrin.h OLD_FILES+=usr/include/clang/3.4.1/smmintrin.h OLD_FILES+=usr/include/clang/3.4.1/tbmintrin.h OLD_FILES+=usr/include/clang/3.4.1/tmmintrin.h OLD_FILES+=usr/include/clang/3.4.1/wmmintrin.h OLD_FILES+=usr/include/clang/3.4.1/x86intrin.h OLD_FILES+=usr/include/clang/3.4.1/xmmintrin.h OLD_FILES+=usr/include/clang/3.4.1/xopintrin.h OLD_DIRS+=usr/include/clang/3.4.1 # 20141225: Remove gpib/ieee488 OLD_FILES+=usr/include/dev/ieee488/ibfoo_int.h OLD_FILES+=usr/include/dev/ieee488/tnt4882.h OLD_FILES+=usr/include/dev/ieee488/ugpib.h OLD_FILES+=usr/include/dev/ieee488/upd7210.h OLD_DIRS+=usr/include/dev/ieee488 OLD_FILES+=usr/include/gpib/gpib.h OLD_DIRS+=usr/include/gpib OLD_FILES+=usr/lib/libgpib.a OLD_FILES+=usr/lib/libgpib_p.a OLD_FILES+=usr/lib/libgpib.so OLD_LIBS+=usr/lib/libgpib.so.3 OLD_FILES+=usr/lib/libgpib_p.a OLD_FILES+=usr/lib32/libgpib.a OLD_FILES+=usr/lib32/libgpib_p.a OLD_FILES+=usr/lib32/libgpib.so OLD_LIBS+=usr/lib32/libgpib.so.3 OLD_FILES+=usr/share/man/man3/gpib.3.gz OLD_FILES+=usr/share/man/man3/ibclr.3.gz OLD_FILES+=usr/share/man/man3/ibdev.3.gz OLD_FILES+=usr/share/man/man3/ibdma.3.gz OLD_FILES+=usr/share/man/man3/ibeos.3.gz OLD_FILES+=usr/share/man/man3/ibeot.3.gz OLD_FILES+=usr/share/man/man3/ibloc.3.gz OLD_FILES+=usr/share/man/man3/ibonl.3.gz OLD_FILES+=usr/share/man/man3/ibpad.3.gz OLD_FILES+=usr/share/man/man3/ibrd.3.gz OLD_FILES+=usr/share/man/man3/ibsad.3.gz OLD_FILES+=usr/share/man/man3/ibsic.3.gz OLD_FILES+=usr/share/man/man3/ibtmo.3.gz OLD_FILES+=usr/share/man/man3/ibtrg.3.gz OLD_FILES+=usr/share/man/man3/ibwrt.3.gz OLD_FILES+=usr/share/man/man4/gpib.4.gz OLD_FILES+=usr/share/man/man4/pcii.4.gz OLD_FILES+=usr/share/man/man4/tnt4882.4.gz # 20141224: libxo moved to /lib OLD_LIBS+=usr/lib/libxo.so.0 # 20141223: remove in6_gif.h, in_gif.h and if_stf.h OLD_FILES+=usr/include/net/if_stf.h OLD_FILES+=usr/include/netinet/in_gif.h OLD_FILES+=usr/include/netinet6/in6_gif.h # 20141209: pw tests broken into a file per command OLD_FILES+=usr/tests/usr.sbin/pw/pw_delete OLD_FILES+=usr/tests/usr.sbin/pw/pw_modify # 20141202: update to mandoc CVS 20141201 OLD_FILES+=usr.bin/preconv OLD_FILES+=share/man/man1/preconv.1.gz # 20141129: mrouted rc.d scripts removed from base OLD_FILES+=etc/rc.d/mrouted # 20141126: convert sbin/mdconfig/tests to ATF format tests OLD_FILES+=usr/tests/sbin/mdconfig/legacy_test OLD_FILES+=usr/tests/sbin/mdconfig/mdconfig.test OLD_FILES+=usr/tests/sbin/mdconfig/run.pl # 20141126: remove xform_ipip decapsulation fallback OLD_FILES+=usr/include/netipsec/ipip_var.h # 20141122: mandoc updated to 1.13.1 OLD_FILES+=usr/share/mdocml/external.png # 20141111: SF_KQUEUE code removed OLD_FILES+=usr/include/sys/sf_base.h OLD_FILES+=usr/include/sys/sf_sync.h # 20141109: faith/faithd removal OLD_FILES+=etc/rc.d/faith OLD_FILES+=usr/share/man/man4/faith.4.gz OLD_FILES+=usr/share/man/man4/if_faith.4.gz OLD_FILES+=usr/sbin/faithd OLD_FILES+=usr/share/man/man8/faithd.8.gz # 20141107: overhaul if_gre(4) OLD_FILES+=usr/include/netinet/ip_gre.h # 20141102: postrandom obsoleted by new /dev/random code OLD_FILES+=etc/rc.d/postrandom # 20141031: initrandom obsoleted by new /dev/random code OLD_FILES+=etc/rc.d/initrandom # 20141030: atf 0.21 import OLD_FILES+=usr/share/man/man3/atf-c++-api.3.gz # 20141028: debug files accidentally installed as directory name OLD_FILES+=usr/lib/debug/usr/lib/i18n OLD_FILES+=usr/lib/debug/usr/lib/private OLD_FILES+=usr/lib/debug/usr/lib32/i18n OLD_FILES+=usr/lib/debug/usr/lib32/private # 20141015: OpenSSL 1.0.1j import OLD_FILES+=usr/share/openssl/man/man3/CMS_sign_add1_signer.3.gz # 20141003: libproc version bump OLD_LIBS+=usr/lib/libproc.so.2 OLD_LIBS+=usr/lib32/libproc.so.2 # 20140922: sleepq_calc_signal_retval.9 and sleepq_catch_signals.9 removed OLD_FILES+=usr/share/man/man9/sleepq_calc_signal_retval.9.gz OLD_FILES+=usr/share/man/man9/sleepq_catch_signals.9.gz # 20140917: hv_kvpd rc.d script removed in favor of devd configuration OLD_FILES+=etc/rc.d/hv_kvpd # 20140917: libnv was accidentally being installed to /usr/lib instead of /lib OLD_LIBS+=usr/lib/libnv.so.0 # 20140829: rc.d/kerberos removed OLD_FILES+=etc/rc.d/kerberos # 20140827: tzdata2014f import OLD_FILES+=usr/share/zoneinfo/Asia/Chongqing OLD_FILES+=usr/share/zoneinfo/Asia/Harbin OLD_FILES+=usr/share/zoneinfo/Asia/Kashgar # 20140814: libopie version bump OLD_LIBS+=usr/lib/libopie.so.7 OLD_LIBS+=usr/lib32/libopie.so.7 # 20140811: otp-sha renamed to otp-sha1 OLD_FILES+=usr/bin/otp-sha OLD_FILES+=usr/share/man/man1/otp-sha.1.gz # 20140807: Remove private lib files that should not be installed. OLD_FILES+=usr/lib32/private/libatf-c.a OLD_FILES+=usr/lib32/private/libatf-c.so OLD_FILES+=usr/lib32/private/libatf-c_p.a OLD_FILES+=usr/lib32/private/libatf-c++.a OLD_FILES+=usr/lib32/private/libatf-c++.so OLD_FILES+=usr/lib32/private/libatf-c++_p.a OLD_FILES+=usr/lib32/private/libbsdstat.a OLD_FILES+=usr/lib32/private/libbsdstat.so OLD_FILES+=usr/lib32/private/libbsdstat_p.a OLD_FILES+=usr/lib32/private/libheimipcc.a OLD_FILES+=usr/lib32/private/libheimipcc.so OLD_FILES+=usr/lib32/private/libheimipcc_p.a OLD_FILES+=usr/lib32/private/libheimipcs.a OLD_FILES+=usr/lib32/private/libheimipcs.so OLD_FILES+=usr/lib32/private/libheimipcs_p.a OLD_FILES+=usr/lib32/private/libldns.a OLD_FILES+=usr/lib32/private/libldns.so OLD_FILES+=usr/lib32/private/libldns_p.a OLD_FILES+=usr/lib32/private/libssh.a OLD_FILES+=usr/lib32/private/libssh.so OLD_FILES+=usr/lib32/private/libssh_p.a OLD_FILES+=usr/lib32/private/libunbound.a OLD_FILES+=usr/lib32/private/libunbound.so OLD_FILES+=usr/lib32/private/libunbound_p.a OLD_FILES+=usr/lib32/private/libucl.a OLD_FILES+=usr/lib32/private/libucl.so OLD_FILES+=usr/lib32/private/libucl_p.a OLD_FILES+=usr/lib/private/libatf-c.a OLD_FILES+=usr/lib/private/libatf-c.so OLD_FILES+=usr/lib/private/libatf-c_p.a OLD_FILES+=usr/lib/private/libatf-c++.a OLD_FILES+=usr/lib/private/libatf-c++.so OLD_FILES+=usr/lib/private/libatf-c++_p.a OLD_FILES+=usr/lib/private/libbsdstat.a OLD_FILES+=usr/lib/private/libbsdstat.so OLD_FILES+=usr/lib/private/libbsdstat_p.a OLD_FILES+=usr/lib/private/libheimipcc.a OLD_FILES+=usr/lib/private/libheimipcc.so OLD_FILES+=usr/lib/private/libheimipcc_p.a OLD_FILES+=usr/lib/private/libheimipcs.a OLD_FILES+=usr/lib/private/libheimipcs.so OLD_FILES+=usr/lib/private/libheimipcs_p.a OLD_FILES+=usr/lib/private/libldns.a OLD_FILES+=usr/lib/private/libldns.so OLD_FILES+=usr/lib/private/libldns_p.a OLD_FILES+=usr/lib/private/libssh.a OLD_FILES+=usr/lib/private/libssh.so OLD_FILES+=usr/lib/private/libssh_p.a OLD_FILES+=usr/lib/private/libunbound.a OLD_FILES+=usr/lib/private/libunbound.so OLD_FILES+=usr/lib/private/libunbound_p.a OLD_FILES+=usr/lib/private/libucl.a OLD_FILES+=usr/lib/private/libucl.so OLD_FILES+=usr/lib/private/libucl_p.a # 20140803: Remove an obsolete man page OLD_FILES+=usr/share/man/man9/pmap_change_wiring.9.gz # 20140731 OLD_FILES+=usr/share/man/man9/SYSCTL_ADD_OID.9.gz # 20140728: libsbuf restored to old version. OLD_LIBS+=lib/libsbuf.so.7 OLD_LIBS+=usr/lib32/libsbuf.so.7 # 20140728: Remove an obsolete man page OLD_FILES+=usr/share/man/man9/VOP_GETVOBJECT.9.gz OLD_FILES+=usr/share/man/man9/VOP_CREATEVOBJECT.9.gz OLD_FILES+=usr/share/man/man9/VOP_DESTROYVOBJECT.9.gz # 20140723: renamed to PCBGROUP.9 OLD_FILES+=usr/share/man/man9/PCBGROUPS.9.gz # 20140722: browse_packages_ftp.sh removed OLD_FILES+=usr/share/examples/bsdconfig/browse_packages_ftp.sh # 20140718: Remove obsolete man pages OLD_FILES+=usr/share/man/man9/zero_copy.9.gz OLD_FILES+=usr/share/man/man9/zero_copy_sockets.9.gz # 20140718: Remove an obsolete man page OLD_FILES+=usr/share/man/man9/pmap_page_protect.9.gz # 20140717: Remove an obsolete man page OLD_FILES+=usr/share/man/man9/pmap_clear_reference.9.gz # 20140716: Remove an incorrectly named man page OLD_FILES+=usr/share/man/man9/pmap_ts_modified.9.gz # 20140712: Removal of bsd.dtrace.mk OLD_FILES+=usr/share/mk/bsd.dtrace.mk # 20140705: turn libreadline into an internal lib OLD_LIBS+=lib/libreadline.so.8 OLD_FILES+=usr/lib/libreadline.a OLD_FILES+=usr/lib/libreadline_p.a OLD_FILES+=usr/lib/libreadline.so OLD_FILES+=usr/lib/libhistory.a OLD_FILES+=usr/lib/libhistory_p.a OLD_FILES+=usr/lib/libhistory.so OLD_LIBS+=usr/lib/libhistory.so.8 OLD_FILES+=usr/lib32/libhistory.a OLD_FILES+=usr/lib32/libhistory.so OLD_LIBS+=usr/lib32/libhistory.so.8 OLD_FILES+=usr/lib32/libhistory_p.a OLD_FILES+=usr/lib32/libreadline.a OLD_FILES+=usr/lib32/libreadline.so OLD_LIBS+=usr/lib32/libreadline.so.8 OLD_FILES+=usr/lib32/libreadline_p.a OLD_FILES+=usr/include/readline/chardefs.h OLD_FILES+=usr/include/readline/history.h OLD_FILES+=usr/include/readline/keymaps.h OLD_FILES+=usr/include/readline/readline.h OLD_FILES+=usr/include/readline/tilde.h OLD_FILES+=usr/include/readline/rlconf.h OLD_FILES+=usr/include/readline/rlstdc.h OLD_FILES+=usr/include/readline/rltypedefs.h OLD_FILES+=usr/include/readline/rltypedefs.h OLD_DIRS+=usr/include/readline OLD_FILES+=usr/share/info/readline.info.gz OLD_FILES+=usr/share/man/man3/readline.3.gz OLD_FILES+=usr/share/man/man3/rlhistory.3.gz # 20140625: csup removal OLD_FILES+=usr/bin/csup OLD_FILES+=usr/bin/cpasswd OLD_FILES+=usr/share/man/man1/csup.1.gz OLD_FILES+=usr/share/man/man1/cpasswd.1.gz OLD_FILES+=usr/share/examples/cvsup/README OLD_FILES+=usr/share/examples/cvsup/cvs-supfile OLD_FILES+=usr/share/examples/cvsup/stable-supfile OLD_FILES+=usr/share/examples/cvsup/standard-supfile OLD_DIRS+=usr/share/examples/cvsup # 20140614: send-pr removal OLD_FILES+=usr/bin/sendbug OLD_FILES+=usr/share/info/send-pr.info.gz OLD_FILES+=usr/share/man/man1/send-pr.1.gz OLD_FILES+=usr/share/man/man1/sendbug.1.gz OLD_FILES+=etc/gnats/freefall OLD_DIRS+=etc/gnats # 20140512: new clang import which bumps version from 3.4 to 3.4.1. OLD_FILES+=usr/include/clang/3.4/__wmmintrin_aes.h OLD_FILES+=usr/include/clang/3.4/__wmmintrin_pclmul.h OLD_FILES+=usr/include/clang/3.4/altivec.h OLD_FILES+=usr/include/clang/3.4/ammintrin.h OLD_FILES+=usr/include/clang/3.4/avx2intrin.h OLD_FILES+=usr/include/clang/3.4/avxintrin.h OLD_FILES+=usr/include/clang/3.4/bmi2intrin.h OLD_FILES+=usr/include/clang/3.4/bmiintrin.h OLD_FILES+=usr/include/clang/3.4/cpuid.h OLD_FILES+=usr/include/clang/3.4/emmintrin.h OLD_FILES+=usr/include/clang/3.4/f16cintrin.h OLD_FILES+=usr/include/clang/3.4/fma4intrin.h OLD_FILES+=usr/include/clang/3.4/fmaintrin.h OLD_FILES+=usr/include/clang/3.4/immintrin.h OLD_FILES+=usr/include/clang/3.4/lzcntintrin.h OLD_FILES+=usr/include/clang/3.4/mm3dnow.h OLD_FILES+=usr/include/clang/3.4/mm_malloc.h OLD_FILES+=usr/include/clang/3.4/mmintrin.h OLD_FILES+=usr/include/clang/3.4/module.map OLD_FILES+=usr/include/clang/3.4/nmmintrin.h OLD_FILES+=usr/include/clang/3.4/pmmintrin.h OLD_FILES+=usr/include/clang/3.4/popcntintrin.h OLD_FILES+=usr/include/clang/3.4/prfchwintrin.h OLD_FILES+=usr/include/clang/3.4/rdseedintrin.h OLD_FILES+=usr/include/clang/3.4/rtmintrin.h OLD_FILES+=usr/include/clang/3.4/shaintrin.h OLD_FILES+=usr/include/clang/3.4/smmintrin.h OLD_FILES+=usr/include/clang/3.4/tbmintrin.h OLD_FILES+=usr/include/clang/3.4/tmmintrin.h OLD_FILES+=usr/include/clang/3.4/wmmintrin.h OLD_FILES+=usr/include/clang/3.4/x86intrin.h OLD_FILES+=usr/include/clang/3.4/xmmintrin.h OLD_FILES+=usr/include/clang/3.4/xopintrin.h OLD_FILES+=usr/include/clang/3.4/arm_neon.h OLD_FILES+=usr/include/clang/3.4/module.map OLD_DIRS+=usr/include/clang/3.4 # 20140505: Bogusly installing src.opts.mk OLD_FILES+=usr/share/mk/src.opts.mk # 20140505: Reject PR kern/187551 OLD_FILES+=usr/tests/sbin/ifconfig/fibs_test # 20140502: Removal of lindev(4) OLD_FILES+=usr/share/man/man4/lindev.4.gz # 20140425 OLD_FILES+=usr/lib/libssp_p.a OLD_FILES+=usr/lib/libstand_p.a OLD_FILES+=usr/lib32/libssp_p.a OLD_FILES+=usr/lib32/libstand_p.a # 20140314: AppleTalk OLD_DIRS+=usr/include/netatalk OLD_FILES+=usr/include/netatalk/aarp.h OLD_FILES+=usr/include/netatalk/at.h OLD_FILES+=usr/include/netatalk/at_extern.h OLD_FILES+=usr/include/netatalk/at_var.h OLD_FILES+=usr/include/netatalk/ddp.h OLD_FILES+=usr/include/netatalk/ddp_pcb.h OLD_FILES+=usr/include/netatalk/ddp_var.h OLD_FILES+=usr/include/netatalk/endian.h OLD_FILES+=usr/include/netatalk/phase2.h # 20140314: Remove IPX/SPX OLD_LIBS+=lib/libipx.so.5 OLD_FILES+=usr/include/netipx/ipx.h OLD_FILES+=usr/include/netipx/ipx_if.h OLD_FILES+=usr/include/netipx/ipx_pcb.h OLD_FILES+=usr/include/netipx/ipx_var.h OLD_FILES+=usr/include/netipx/spx.h OLD_FILES+=usr/include/netipx/spx_debug.h OLD_FILES+=usr/include/netipx/spx_timer.h OLD_FILES+=usr/include/netipx/spx_var.h OLD_DIRS+=usr/include/netipx OLD_FILES+=usr/lib/libipx.a OLD_FILES+=usr/lib/libipx.so OLD_FILES+=usr/lib/libipx_p.a OLD_FILES+=usr/lib32/libipx.a OLD_FILES+=usr/lib32/libipx.so OLD_LIBS+=usr/lib32/libipx.so.5 OLD_FILES+=usr/lib32/libipx_p.a OLD_FILES+=usr/sbin/IPXrouted OLD_FILES+=usr/share/man/man3/ipx.3.gz OLD_FILES+=usr/share/man/man3/ipx_addr.3.gz OLD_FILES+=usr/share/man/man3/ipx_ntoa.3.gz OLD_FILES+=usr/share/man/man4/ef.4.gz OLD_FILES+=usr/share/man/man4/if_ef.4.gz OLD_FILES+=usr/share/man/man8/IPXrouted.8.gz # 20140314: bsdconfig usermgmt rewrite OLD_FILES+=usr/libexec/bsdconfig/070.usermgmt/userinput # 20140307: bsdconfig groupmgmt rewrite OLD_FILES+=usr/libexec/bsdconfig/070.usermgmt/groupinput # 20140223: Remove libyaml OLD_FILES+=usr/lib/private/libyaml.a OLD_FILES+=usr/lib/private/libyaml.so OLD_LIBS+=usr/lib/private/libyaml.so.1 OLD_FILES+=usr/lib/private/libyaml_p.a OLD_FILES+=usr/lib32/private/libyaml.a OLD_FILES+=usr/lib32/private/libyaml.so OLD_LIBS+=usr/lib32/private/libyaml.so.1 OLD_FILES+=usr/lib32/private/libyaml_p.a # 20140216: new clang import which bumps version from 3.3 to 3.4. OLD_FILES+=usr/bin/llvm-prof OLD_FILES+=usr/bin/llvm-ranlib OLD_FILES+=usr/include/clang/3.3/__wmmintrin_aes.h OLD_FILES+=usr/include/clang/3.3/__wmmintrin_pclmul.h OLD_FILES+=usr/include/clang/3.3/altivec.h OLD_FILES+=usr/include/clang/3.3/ammintrin.h OLD_FILES+=usr/include/clang/3.3/avx2intrin.h OLD_FILES+=usr/include/clang/3.3/avxintrin.h OLD_FILES+=usr/include/clang/3.3/bmi2intrin.h OLD_FILES+=usr/include/clang/3.3/bmiintrin.h OLD_FILES+=usr/include/clang/3.3/cpuid.h OLD_FILES+=usr/include/clang/3.3/emmintrin.h OLD_FILES+=usr/include/clang/3.3/f16cintrin.h OLD_FILES+=usr/include/clang/3.3/fma4intrin.h OLD_FILES+=usr/include/clang/3.3/fmaintrin.h OLD_FILES+=usr/include/clang/3.3/immintrin.h OLD_FILES+=usr/include/clang/3.3/lzcntintrin.h OLD_FILES+=usr/include/clang/3.3/mm3dnow.h OLD_FILES+=usr/include/clang/3.3/mm_malloc.h OLD_FILES+=usr/include/clang/3.3/mmintrin.h OLD_FILES+=usr/include/clang/3.3/module.map OLD_FILES+=usr/include/clang/3.3/nmmintrin.h OLD_FILES+=usr/include/clang/3.3/pmmintrin.h OLD_FILES+=usr/include/clang/3.3/popcntintrin.h OLD_FILES+=usr/include/clang/3.3/prfchwintrin.h OLD_FILES+=usr/include/clang/3.3/rdseedintrin.h OLD_FILES+=usr/include/clang/3.3/rtmintrin.h OLD_FILES+=usr/include/clang/3.3/smmintrin.h OLD_FILES+=usr/include/clang/3.3/tmmintrin.h OLD_FILES+=usr/include/clang/3.3/wmmintrin.h OLD_FILES+=usr/include/clang/3.3/x86intrin.h OLD_FILES+=usr/include/clang/3.3/xmmintrin.h OLD_FILES+=usr/include/clang/3.3/xopintrin.h OLD_FILES+=usr/share/man/man1/llvm-prof.1.gz OLD_FILES+=usr/share/man/man1/llvm-ranlib.1.gz OLD_DIRS+=usr/include/clang/3.3 # 20140216: nve(4) removed OLD_FILES+=usr/share/man/man4/if_nve.4.gz OLD_FILES+=usr/share/man/man4/nve.4.gz # 20140205: Open Firmware device moved OLD_FILES+=usr/include/dev/ofw/ofw_nexus.h # 20140128: libelf and libdwarf import OLD_LIBS+=usr/lib/libelf.so.1 OLD_LIBS+=usr/lib32/libelf.so.1 OLD_LIBS+=usr/lib/libdwarf.so.3 OLD_LIBS+=usr/lib32/libdwarf.so.3 # 20140123: apicvar header moved to x86 OLD_FILES+=usr/include/machine/apicvar.h # 20131215: libcam version bumped OLD_LIBS+=lib/libcam.so.6 usr/lib32/libcam.so.6 # 20131202: libcapsicum and libcasper moved to /lib/ OLD_LIBS+=usr/lib/libcapsicum.so.0 OLD_LIBS+=usr/lib/libcasper.so.0 # 20131109: extattr(2) mlinks fixed OLD_FILES+=usr/share/man/man2/extattr_delete_list.2.gz OLD_FILES+=usr/share/man/man2/extattr_get_list.2.gz # 20131107: example files removed OLD_FILES+=usr/share/examples/libusb20/aux.c OLD_FILES+=usr/share/examples/libusb20/aux.h # 20131105: tzdata 2013h import OLD_FILES+=usr/share/zoneinfo/America/Shiprock OLD_FILES+=usr/share/zoneinfo/Antarctica/South_Pole # 20131103: WITH_LIBICONV_COMPAT removal OLD_FILES+=usr/include/_libiconv_compat.h OLD_FILES+=usr/lib/libiconv.a OLD_FILES+=usr/lib/libiconv.so OLD_FILES+=usr/lib/libiconv.so.3 OLD_FILES+=usr/lib/libiconv_p.a OLD_FILES+=usr/lib32/libiconv.a OLD_FILES+=usr/lib32/libiconv.so OLD_FILES+=usr/lib32/libiconv.so.3 OLD_FILES+=usr/lib32/libiconv_p.a # 20131103: removal of utxrm(8), use 'utx rm' instead. OLD_FILES+=usr/sbin/utxrm OLD_FILES+=usr/share/man/man8/utxrm.8.gz # 20131031: pkg_install has been removed OLD_FILES+=etc/periodic/daily/220.backup-pkgdb OLD_FILES+=etc/periodic/daily/490.status-pkg-changes OLD_FILES+=etc/periodic/security/460.chkportsum OLD_FILES+=etc/periodic/weekly/400.status-pkg OLD_FILES+=usr/sbin/pkg_add OLD_FILES+=usr/sbin/pkg_create OLD_FILES+=usr/sbin/pkg_delete OLD_FILES+=usr/sbin/pkg_info OLD_FILES+=usr/sbin/pkg_updating OLD_FILES+=usr/sbin/pkg_version OLD_FILES+=usr/share/man/man1/pkg_add.1.gz OLD_FILES+=usr/share/man/man1/pkg_create.1.gz OLD_FILES+=usr/share/man/man1/pkg_delete.1.gz OLD_FILES+=usr/share/man/man1/pkg_info.1.gz OLD_FILES+=usr/share/man/man1/pkg_updating.1.gz OLD_FILES+=usr/share/man/man1/pkg_version.1.gz # 20131030: /etc/keys moved to /usr/share/keys OLD_DIRS+=etc/keys OLD_DIRS+=etc/keys/pkg OLD_DIRS+=etc/keys/pkg/revoked OLD_DIRS+=etc/keys/pkg/trusted OLD_FILES+=etc/keys/pkg/trusted/pkg.freebsd.org.2013102301 # 20131028: ng_fec(4) removed OLD_FILES+=usr/include/netgraph/ng_fec.h OLD_FILES+=usr/share/man/man4/ng_fec.4.gz # 20131027: header moved OLD_FILES+=usr/include/net/pf_mtag.h # 20131023: remove never used iscsi directory OLD_DIRS+=usr/share/examples/iscsi # 20131021: isf(4) removed OLD_FILES+=usr/sbin/isfctl OLD_FILES+=usr/share/man/man4/isf.4.gz OLD_FILES+=usr/share/man/man8/isfctl.8.gz # 20131014: libbsdyml becomes private OLD_FILES+=usr/lib/libbsdyml.a OLD_FILES+=usr/lib/libbsdyml.so OLD_LIBS+=usr/lib/libbsdyml.so.0 OLD_FILES+=usr/lib/libbsdyml_p.a OLD_FILES+=usr/lib32/libbsdyml.a OLD_FILES+=usr/lib32/libbsdyml.so OLD_LIBS+=usr/lib32/libbsdyml.so.0 OLD_FILES+=usr/lib32/libbsdyml_p.a OLD_FILES+=usr/share/man/man3/libbsdyml.3.gz OLD_FILES+=usr/include/bsdyml.h # 20131013: Removal of the ATF tools OLD_FILES+=etc/atf/FreeBSD.conf OLD_FILES+=etc/atf/atf-run.hooks OLD_FILES+=etc/atf/common.conf OLD_FILES+=usr/bin/atf-config OLD_FILES+=usr/bin/atf-report OLD_FILES+=usr/bin/atf-run OLD_FILES+=usr/bin/atf-version OLD_FILES+=usr/share/atf/atf-run.hooks OLD_FILES+=usr/share/examples/atf/atf-run.hooks OLD_FILES+=usr/share/examples/atf/tests-results.css OLD_FILES+=usr/share/man/man1/atf-config.1.gz OLD_FILES+=usr/share/man/man1/atf-report.1.gz OLD_FILES+=usr/share/man/man1/atf-run.1.gz OLD_FILES+=usr/share/man/man1/atf-version.1.gz OLD_FILES+=usr/share/man/man5/atf-formats.5.gz OLD_FILES+=usr/share/xml/atf/tests-results.dtd OLD_FILES+=usr/share/xsl/atf/tests-results.xsl # 20131009: freebsd-version moved from /libexec to /bin OLD_FILES+=libexec/freebsd-version # 20131001: ar and ranlib from binutils not used OLD_FILES+=usr/bin/gnu-ar OLD_FILES+=usr/bin/gnu-ranlib OLD_FILES+=usr/share/man/man1/gnu-ar.1.gz OLD_FILES+=usr/share/man/man1/gnu-ranlib.1.gz # 20130930: BIND removed from base OLD_FILES+=etc/mtree/BIND.chroot.dist OLD_FILES+=etc/namedb OLD_FILES+=etc/periodic/daily/470.status-named OLD_FILES+=usr/bin/dig OLD_FILES+=usr/bin/nslookup OLD_FILES+=usr/bin/nsupdate OLD_DIRS+=usr/include/lwres OLD_FILES+=usr/include/lwres/context.h OLD_FILES+=usr/include/lwres/int.h OLD_FILES+=usr/include/lwres/ipv6.h OLD_FILES+=usr/include/lwres/lang.h OLD_FILES+=usr/include/lwres/list.h OLD_FILES+=usr/include/lwres/lwbuffer.h OLD_FILES+=usr/include/lwres/lwpacket.h OLD_FILES+=usr/include/lwres/lwres.h OLD_FILES+=usr/include/lwres/net.h OLD_FILES+=usr/include/lwres/netdb.h OLD_FILES+=usr/include/lwres/platform.h OLD_FILES+=usr/include/lwres/result.h OLD_FILES+=usr/include/lwres/string.h OLD_FILES+=usr/include/lwres/version.h OLD_FILES+=usr/lib/liblwres.a OLD_FILES+=usr/lib/liblwres.so OLD_LIBS+=usr/lib/liblwres.so.90 OLD_FILES+=usr/lib/liblwres_p.a OLD_FILES+=usr/sbin/arpaname OLD_FILES+=usr/sbin/ddns-confgen OLD_FILES+=usr/sbin/dnssec-dsfromkey OLD_FILES+=usr/sbin/dnssec-keyfromlabel OLD_FILES+=usr/sbin/dnssec-keygen OLD_FILES+=usr/sbin/dnssec-revoke OLD_FILES+=usr/sbin/dnssec-settime OLD_FILES+=usr/sbin/dnssec-signzone OLD_FILES+=usr/sbin/dnssec-verify OLD_FILES+=usr/sbin/genrandom OLD_FILES+=usr/sbin/isc-hmac-fixup OLD_FILES+=usr/sbin/lwresd OLD_FILES+=usr/sbin/named OLD_FILES+=usr/sbin/named-checkconf OLD_FILES+=usr/sbin/named-checkzone OLD_FILES+=usr/sbin/named-compilezone OLD_FILES+=usr/sbin/named-journalprint OLD_FILES+=usr/sbin/named.reconfig OLD_FILES+=usr/sbin/named.reload OLD_FILES+=usr/sbin/nsec3hash OLD_FILES+=usr/sbin/rndc OLD_FILES+=usr/sbin/rndc-confgen OLD_DIRS+=usr/share/doc/bind9 OLD_FILES+=usr/share/doc/bind9/CHANGES OLD_FILES+=usr/share/doc/bind9/COPYRIGHT OLD_FILES+=usr/share/doc/bind9/FAQ OLD_FILES+=usr/share/doc/bind9/HISTORY OLD_FILES+=usr/share/doc/bind9/README OLD_DIRS+=usr/share/doc/bind9/arm OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch01.html OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch02.html OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch03.html OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch04.html OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch05.html OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch06.html OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch07.html OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch08.html OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch09.html OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch10.html OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.html OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.pdf OLD_FILES+=usr/share/doc/bind9/arm/man.arpaname.html OLD_FILES+=usr/share/doc/bind9/arm/man.ddns-confgen.html OLD_FILES+=usr/share/doc/bind9/arm/man.dig.html OLD_FILES+=usr/share/doc/bind9/arm/man.dnssec-dsfromkey.html OLD_FILES+=usr/share/doc/bind9/arm/man.dnssec-keyfromlabel.html OLD_FILES+=usr/share/doc/bind9/arm/man.dnssec-keygen.html OLD_FILES+=usr/share/doc/bind9/arm/man.dnssec-revoke.html OLD_FILES+=usr/share/doc/bind9/arm/man.dnssec-settime.html OLD_FILES+=usr/share/doc/bind9/arm/man.dnssec-signzone.html OLD_FILES+=usr/share/doc/bind9/arm/man.dnssec-verify.html OLD_FILES+=usr/share/doc/bind9/arm/man.genrandom.html OLD_FILES+=usr/share/doc/bind9/arm/man.host.html OLD_FILES+=usr/share/doc/bind9/arm/man.isc-hmac-fixup.html OLD_FILES+=usr/share/doc/bind9/arm/man.named-checkconf.html OLD_FILES+=usr/share/doc/bind9/arm/man.named-checkzone.html OLD_FILES+=usr/share/doc/bind9/arm/man.named-journalprint.html OLD_FILES+=usr/share/doc/bind9/arm/man.named.html OLD_FILES+=usr/share/doc/bind9/arm/man.nsec3hash.html OLD_FILES+=usr/share/doc/bind9/arm/man.nsupdate.html OLD_FILES+=usr/share/doc/bind9/arm/man.rndc-confgen.html OLD_FILES+=usr/share/doc/bind9/arm/man.rndc.conf.html OLD_FILES+=usr/share/doc/bind9/arm/man.rndc.html OLD_DIRS+=usr/share/doc/bind9/misc OLD_FILES+=usr/share/doc/bind9/misc/dnssec OLD_FILES+=usr/share/doc/bind9/misc/format-options.pl OLD_FILES+=usr/share/doc/bind9/misc/ipv6 OLD_FILES+=usr/share/doc/bind9/misc/migration OLD_FILES+=usr/share/doc/bind9/misc/migration-4to9 OLD_FILES+=usr/share/doc/bind9/misc/options OLD_FILES+=usr/share/doc/bind9/misc/rfc-compliance OLD_FILES+=usr/share/doc/bind9/misc/roadmap OLD_FILES+=usr/share/doc/bind9/misc/sdb OLD_FILES+=usr/share/doc/bind9/misc/sort-options.pl OLD_FILES+=usr/share/man/man1/arpaname.1.gz OLD_FILES+=usr/share/man/man1/dig.1.gz OLD_FILES+=usr/share/man/man1/nslookup.1.gz OLD_FILES+=usr/share/man/man1/nsupdate.1.gz OLD_FILES+=usr/share/man/man3/lwres.3.gz OLD_FILES+=usr/share/man/man3/lwres_addr_parse.3.gz OLD_FILES+=usr/share/man/man3/lwres_buffer.3.gz OLD_FILES+=usr/share/man/man3/lwres_buffer_add.3.gz OLD_FILES+=usr/share/man/man3/lwres_buffer_back.3.gz OLD_FILES+=usr/share/man/man3/lwres_buffer_clear.3.gz OLD_FILES+=usr/share/man/man3/lwres_buffer_first.3.gz OLD_FILES+=usr/share/man/man3/lwres_buffer_forward.3.gz OLD_FILES+=usr/share/man/man3/lwres_buffer_getmem.3.gz OLD_FILES+=usr/share/man/man3/lwres_buffer_getuint16.3.gz OLD_FILES+=usr/share/man/man3/lwres_buffer_getuint32.3.gz OLD_FILES+=usr/share/man/man3/lwres_buffer_getuint8.3.gz OLD_FILES+=usr/share/man/man3/lwres_buffer_init.3.gz OLD_FILES+=usr/share/man/man3/lwres_buffer_invalidate.3.gz OLD_FILES+=usr/share/man/man3/lwres_buffer_putmem.3.gz OLD_FILES+=usr/share/man/man3/lwres_buffer_putuint16.3.gz OLD_FILES+=usr/share/man/man3/lwres_buffer_putuint32.3.gz OLD_FILES+=usr/share/man/man3/lwres_buffer_putuint8.3.gz OLD_FILES+=usr/share/man/man3/lwres_buffer_subtract.3.gz OLD_FILES+=usr/share/man/man3/lwres_conf_clear.3.gz OLD_FILES+=usr/share/man/man3/lwres_conf_get.3.gz OLD_FILES+=usr/share/man/man3/lwres_conf_init.3.gz OLD_FILES+=usr/share/man/man3/lwres_conf_parse.3.gz OLD_FILES+=usr/share/man/man3/lwres_conf_print.3.gz OLD_FILES+=usr/share/man/man3/lwres_config.3.gz OLD_FILES+=usr/share/man/man3/lwres_context.3.gz OLD_FILES+=usr/share/man/man3/lwres_context_allocmem.3.gz OLD_FILES+=usr/share/man/man3/lwres_context_create.3.gz OLD_FILES+=usr/share/man/man3/lwres_context_destroy.3.gz OLD_FILES+=usr/share/man/man3/lwres_context_freemem.3.gz OLD_FILES+=usr/share/man/man3/lwres_context_initserial.3.gz OLD_FILES+=usr/share/man/man3/lwres_context_nextserial.3.gz OLD_FILES+=usr/share/man/man3/lwres_context_sendrecv.3.gz OLD_FILES+=usr/share/man/man3/lwres_endhostent.3.gz OLD_FILES+=usr/share/man/man3/lwres_endhostent_r.3.gz OLD_FILES+=usr/share/man/man3/lwres_freeaddrinfo.3.gz OLD_FILES+=usr/share/man/man3/lwres_freehostent.3.gz OLD_FILES+=usr/share/man/man3/lwres_gabn.3.gz OLD_FILES+=usr/share/man/man3/lwres_gabnrequest_free.3.gz OLD_FILES+=usr/share/man/man3/lwres_gabnrequest_parse.3.gz OLD_FILES+=usr/share/man/man3/lwres_gabnrequest_render.3.gz OLD_FILES+=usr/share/man/man3/lwres_gabnresponse_free.3.gz OLD_FILES+=usr/share/man/man3/lwres_gabnresponse_parse.3.gz OLD_FILES+=usr/share/man/man3/lwres_gabnresponse_render.3.gz OLD_FILES+=usr/share/man/man3/lwres_gai_strerror.3.gz OLD_FILES+=usr/share/man/man3/lwres_getaddrinfo.3.gz OLD_FILES+=usr/share/man/man3/lwres_getaddrsbyname.3.gz OLD_FILES+=usr/share/man/man3/lwres_gethostbyaddr.3.gz OLD_FILES+=usr/share/man/man3/lwres_gethostbyaddr_r.3.gz OLD_FILES+=usr/share/man/man3/lwres_gethostbyname.3.gz OLD_FILES+=usr/share/man/man3/lwres_gethostbyname2.3.gz OLD_FILES+=usr/share/man/man3/lwres_gethostbyname_r.3.gz OLD_FILES+=usr/share/man/man3/lwres_gethostent.3.gz OLD_FILES+=usr/share/man/man3/lwres_gethostent_r.3.gz OLD_FILES+=usr/share/man/man3/lwres_getipnode.3.gz OLD_FILES+=usr/share/man/man3/lwres_getipnodebyaddr.3.gz OLD_FILES+=usr/share/man/man3/lwres_getipnodebyname.3.gz OLD_FILES+=usr/share/man/man3/lwres_getnamebyaddr.3.gz OLD_FILES+=usr/share/man/man3/lwres_getnameinfo.3.gz OLD_FILES+=usr/share/man/man3/lwres_getrrsetbyname.3.gz OLD_FILES+=usr/share/man/man3/lwres_gnba.3.gz OLD_FILES+=usr/share/man/man3/lwres_gnbarequest_free.3.gz OLD_FILES+=usr/share/man/man3/lwres_gnbarequest_parse.3.gz OLD_FILES+=usr/share/man/man3/lwres_gnbarequest_render.3.gz OLD_FILES+=usr/share/man/man3/lwres_gnbaresponse_free.3.gz OLD_FILES+=usr/share/man/man3/lwres_gnbaresponse_parse.3.gz OLD_FILES+=usr/share/man/man3/lwres_gnbaresponse_render.3.gz OLD_FILES+=usr/share/man/man3/lwres_herror.3.gz OLD_FILES+=usr/share/man/man3/lwres_hstrerror.3.gz OLD_FILES+=usr/share/man/man3/lwres_inetntop.3.gz OLD_FILES+=usr/share/man/man3/lwres_lwpacket_parseheader.3.gz OLD_FILES+=usr/share/man/man3/lwres_lwpacket_renderheader.3.gz OLD_FILES+=usr/share/man/man3/lwres_net_ntop.3.gz OLD_FILES+=usr/share/man/man3/lwres_noop.3.gz OLD_FILES+=usr/share/man/man3/lwres_nooprequest_free.3.gz OLD_FILES+=usr/share/man/man3/lwres_nooprequest_parse.3.gz OLD_FILES+=usr/share/man/man3/lwres_nooprequest_render.3.gz OLD_FILES+=usr/share/man/man3/lwres_noopresponse_free.3.gz OLD_FILES+=usr/share/man/man3/lwres_noopresponse_parse.3.gz OLD_FILES+=usr/share/man/man3/lwres_noopresponse_render.3.gz OLD_FILES+=usr/share/man/man3/lwres_packet.3.gz OLD_FILES+=usr/share/man/man3/lwres_resutil.3.gz OLD_FILES+=usr/share/man/man3/lwres_sethostent.3.gz OLD_FILES+=usr/share/man/man3/lwres_sethostent_r.3.gz OLD_FILES+=usr/share/man/man3/lwres_string_parse.3.gz OLD_FILES+=usr/share/man/man5/named.conf.5.gz OLD_FILES+=usr/share/man/man5/rndc.conf.5.gz OLD_FILES+=usr/share/man/man8/ddns-confgen.8.gz OLD_FILES+=usr/share/man/man8/dnssec-dsfromkey.8.gz OLD_FILES+=usr/share/man/man8/dnssec-keyfromlabel.8.gz OLD_FILES+=usr/share/man/man8/dnssec-keygen.8.gz OLD_FILES+=usr/share/man/man8/dnssec-revoke.8.gz OLD_FILES+=usr/share/man/man8/dnssec-settime.8.gz OLD_FILES+=usr/share/man/man8/dnssec-signzone.8.gz OLD_FILES+=usr/share/man/man8/dnssec-verify.8.gz OLD_FILES+=usr/share/man/man8/genrandom.8.gz OLD_FILES+=usr/share/man/man8/isc-hmac-fixup.8.gz OLD_FILES+=usr/share/man/man8/lwresd.8.gz OLD_FILES+=usr/share/man/man8/named-checkconf.8.gz OLD_FILES+=usr/share/man/man8/named-checkzone.8.gz OLD_FILES+=usr/share/man/man8/named-compilezone.8.gz OLD_FILES+=usr/share/man/man8/named-journalprint.8.gz OLD_FILES+=usr/share/man/man8/named.8.gz OLD_FILES+=usr/share/man/man8/named.reconfig.8.gz OLD_FILES+=usr/share/man/man8/named.reload.8.gz OLD_FILES+=usr/share/man/man8/nsec3hash.8.gz OLD_FILES+=usr/share/man/man8/rndc-confgen.8.gz OLD_FILES+=usr/share/man/man8/rndc.8.gz OLD_DIRS+=var/named/dev OLD_DIRS+=var/named/etc OLD_DIRS+=var/named/etc/namedb OLD_FILES+=var/named/etc/namedb/PROTO.localhost-v6.rev OLD_FILES+=var/named/etc/namedb/PROTO.localhost.rev OLD_DIRS+=var/named/etc/namedb/dynamic OLD_FILES+=var/named/etc/namedb/make-localhost OLD_DIRS+=var/named/etc/namedb/master OLD_FILES+=var/named/etc/namedb/master/empty.db OLD_FILES+=var/named/etc/namedb/master/localhost-forward.db OLD_FILES+=var/named/etc/namedb/master/localhost-reverse.db #OLD_FILES+=var/named/etc/namedb/named.conf # intentionally left out OLD_FILES+=var/named/etc/namedb/named.root OLD_DIRS+=var/named/etc/namedb/working OLD_DIRS+=var/named/etc/namedb/slave OLD_DIRS+=var/named/var OLD_DIRS+=var/named/var/dump OLD_DIRS+=var/named/var/log OLD_DIRS+=var/named/var/run OLD_DIRS+=var/named/var/run/named OLD_DIRS+=var/named/var/stats OLD_DIRS+=var/run/named # 20130923: example moved OLD_FILES+=usr/share/examples/bsdconfig/browse_packages.sh # 20130908: libssh becomes private OLD_FILES+=usr/lib/libssh.a OLD_FILES+=usr/lib/libssh.so OLD_LIBS+=usr/lib/libssh.so.5 OLD_FILES+=usr/lib/libssh_p.a OLD_FILES+=usr/lib32/libssh.a OLD_FILES+=usr/lib32/libssh.so OLD_LIBS+=usr/lib32/libssh.so.5 OLD_FILES+=usr/lib32/libssh_p.a # 20130903: gnupatch is no more OLD_FILES+=usr/bin/gnupatch OLD_FILES+=usr/share/man/man1/gnupatch.1.gz # 20130829: bsdpatch is patch unconditionally OLD_FILES+=usr/bin/bsdpatch OLD_FILES+=usr/share/man/man1/bsdpatch.1.gz # 20130822: bind 9.9.3-P2 import OLD_LIBS+=usr/lib/liblwres.so.80 # 20130814: vm_page_busy(9) OLD_FILES+=usr/share/man/man9/vm_page_flash.9.gz OLD_FILES+=usr/share/man/man9/vm_page_io.9.gz OLD_FILES+=usr/share/man/man9/vm_page_io_finish.9.gz OLD_FILES+=usr/share/man/man9/vm_page_io_start.9.gz OLD_FILES+=usr/share/man/man9/vm_page_wakeup.9.gz # 20130710: libkvm version bump OLD_LIBS+=lib/libkvm.so.5 OLD_LIBS+=usr/lib32/libkvm.so.5 # 20130623: dialog update from 1.1 to 1.2 OLD_LIBS+=usr/lib/libdialog.so.7 OLD_LIBS+=usr/lib32/libdialog.so.7 # 20130616: vfs_mount.9 removed OLD_FILES+=usr/share/man/man9/vfs_mount.9.gz # 20130614: remove CVS from base OLD_FILES+=usr/bin/cvs OLD_FILES+=usr/bin/cvsbug OLD_FILES+=usr/share/doc/psd/28.cvs/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/28.cvs/paper.ps.gz OLD_DIRS+=usr/share/doc/psd/28.cvs OLD_FILES+=usr/share/examples/cvs/contrib/README OLD_FILES+=usr/share/examples/cvs/contrib/clmerge OLD_FILES+=usr/share/examples/cvs/contrib/cln_hist OLD_FILES+=usr/share/examples/cvs/contrib/commit_prep OLD_FILES+=usr/share/examples/cvs/contrib/cvs2vendor OLD_FILES+=usr/share/examples/cvs/contrib/cvs_acls OLD_FILES+=usr/share/examples/cvs/contrib/cvscheck OLD_FILES+=usr/share/examples/cvs/contrib/cvscheck.man OLD_FILES+=usr/share/examples/cvs/contrib/cvshelp.man OLD_FILES+=usr/share/examples/cvs/contrib/descend.man OLD_FILES+=usr/share/examples/cvs/contrib/easy-import OLD_FILES+=usr/share/examples/cvs/contrib/intro.doc OLD_FILES+=usr/share/examples/cvs/contrib/log OLD_FILES+=usr/share/examples/cvs/contrib/log_accum OLD_FILES+=usr/share/examples/cvs/contrib/mfpipe OLD_FILES+=usr/share/examples/cvs/contrib/rcs-to-cvs OLD_FILES+=usr/share/examples/cvs/contrib/rcs2log OLD_FILES+=usr/share/examples/cvs/contrib/rcslock OLD_FILES+=usr/share/examples/cvs/contrib/sccs2rcs OLD_DIRS+=usr/share/examples/cvs/contrib OLD_DIRS+=usr/share/examples/cvs OLD_FILES+=usr/share/info/cvs.info.gz OLD_FILES+=usr/share/info/cvsclient.info.gz OLD_FILES+=usr/share/man/man1/cvs.1.gz OLD_FILES+=usr/share/man/man5/cvs.5.gz OLD_FILES+=usr/share/man/man8/cvsbug.8.gz # 20130607: WITH_DEBUG_FILES added OLD_FILES+=lib/libufs.so.6.symbols OLD_FILES+=usr/lib32/libufs.so.6.symbols # 20130417: nfs fha moved from nfsserver to nfs OLD_FILES+=usr/include/nfsserver/nfs_fha.h # 20130411: new clang import which bumps version from 3.2 to 3.3. OLD_FILES+=usr/include/clang/3.2/__wmmintrin_aes.h OLD_FILES+=usr/include/clang/3.2/__wmmintrin_pclmul.h OLD_FILES+=usr/include/clang/3.2/altivec.h OLD_FILES+=usr/include/clang/3.2/ammintrin.h OLD_FILES+=usr/include/clang/3.2/avx2intrin.h OLD_FILES+=usr/include/clang/3.2/avxintrin.h OLD_FILES+=usr/include/clang/3.2/bmi2intrin.h OLD_FILES+=usr/include/clang/3.2/bmiintrin.h OLD_FILES+=usr/include/clang/3.2/cpuid.h OLD_FILES+=usr/include/clang/3.2/emmintrin.h OLD_FILES+=usr/include/clang/3.2/f16cintrin.h OLD_FILES+=usr/include/clang/3.2/fma4intrin.h OLD_FILES+=usr/include/clang/3.2/fmaintrin.h OLD_FILES+=usr/include/clang/3.2/immintrin.h OLD_FILES+=usr/include/clang/3.2/lzcntintrin.h OLD_FILES+=usr/include/clang/3.2/mm3dnow.h OLD_FILES+=usr/include/clang/3.2/mm_malloc.h OLD_FILES+=usr/include/clang/3.2/mmintrin.h OLD_FILES+=usr/include/clang/3.2/module.map OLD_FILES+=usr/include/clang/3.2/nmmintrin.h OLD_FILES+=usr/include/clang/3.2/pmmintrin.h OLD_FILES+=usr/include/clang/3.2/popcntintrin.h OLD_FILES+=usr/include/clang/3.2/rtmintrin.h OLD_FILES+=usr/include/clang/3.2/smmintrin.h OLD_FILES+=usr/include/clang/3.2/tmmintrin.h OLD_FILES+=usr/include/clang/3.2/wmmintrin.h OLD_FILES+=usr/include/clang/3.2/x86intrin.h OLD_FILES+=usr/include/clang/3.2/xmmintrin.h OLD_FILES+=usr/include/clang/3.2/xopintrin.h OLD_DIRS+=usr/include/clang/3.2 # 20130404: legacy ATA stack removed OLD_FILES+=etc/periodic/daily/405.status-ata-raid OLD_FILES+=rescue/atacontrol OLD_FILES+=sbin/atacontrol OLD_FILES+=usr/share/man/man8/atacontrol.8.gz OLD_FILES+=usr/share/man/man4/atapicam.4.gz OLD_FILES+=usr/share/man/man4/ataraid.4.gz OLD_FILES+=usr/sbin/burncd OLD_FILES+=usr/share/man/man8/burncd.8.gz # 20130316: vinum.4 removed OLD_FILES+=usr/share/man/man4/vinum.4.gz # 20130312: fortunes-o removed OLD_FILES+=usr/share/games/fortune/fortunes-o OLD_FILES+=usr/share/games/fortune/fortunes-o.dat # 20130311: Ports are no more available via cvsup OLD_FILES+=usr/share/examples/cvsup/ports-supfile OLD_FILES+=usr/share/examples/cvsup/refuse OLD_FILES+=usr/share/examples/cvsup/refuse.README # 20130309: NWFS and NCP supports removed OLD_FILES+=usr/bin/ncplist OLD_FILES+=usr/bin/ncplogin OLD_FILES+=usr/bin/ncplogout OLD_FILES+=usr/include/fs/nwfs/nwfs.h OLD_FILES+=usr/include/fs/nwfs/nwfs_mount.h OLD_FILES+=usr/include/fs/nwfs/nwfs_node.h OLD_FILES+=usr/include/fs/nwfs/nwfs_subr.h OLD_DIRS+=usr/include/fs/nwfs OLD_FILES+=usr/include/netncp/ncp.h OLD_FILES+=usr/include/netncp/ncp_cfg.h OLD_FILES+=usr/include/netncp/ncp_conn.h OLD_FILES+=usr/include/netncp/ncp_file.h OLD_FILES+=usr/include/netncp/ncp_lib.h OLD_FILES+=usr/include/netncp/ncp_ncp.h OLD_FILES+=usr/include/netncp/ncp_nls.h OLD_FILES+=usr/include/netncp/ncp_rcfile.h OLD_FILES+=usr/include/netncp/ncp_rq.h OLD_FILES+=usr/include/netncp/ncp_sock.h OLD_FILES+=usr/include/netncp/ncp_subr.h OLD_FILES+=usr/include/netncp/ncp_user.h OLD_FILES+=usr/include/netncp/ncpio.h OLD_FILES+=usr/include/netncp/nwerror.h OLD_DIRS+=usr/include/netncp OLD_FILES+=usr/lib/libncp.a OLD_FILES+=usr/lib/libncp.so OLD_LIBS+=usr/lib/libncp.so.4 OLD_FILES+=usr/lib/libncp_p.a OLD_FILES+=usr/lib32/libncp.a OLD_FILES+=usr/lib32/libncp.so OLD_LIBS+=usr/lib32/libncp.so.4 OLD_FILES+=usr/lib32/libncp_p.a OLD_FILES+=usr/sbin/mount_nwfs OLD_FILES+=usr/share/examples/nwclient/dot.nwfsrc OLD_FILES+=usr/share/examples/nwclient/nwfs.sh.sample OLD_DIRS+=usr/share/examples/nwclient OLD_FILES+=usr/share/man/man1/ncplist.1.gz OLD_FILES+=usr/share/man/man1/ncplogin.1.gz OLD_FILES+=usr/share/man/man1/ncplogout.1.gz OLD_FILES+=usr/share/man/man8/mount_nwfs.8.gz # 20130302: NTFS support removed OLD_FILES+=rescue/mount_ntfs OLD_FILES+=sbin/mount_ntfs OLD_FILES+=usr/include/fs/ntfs/ntfs.h OLD_FILES+=usr/include/fs/ntfs/ntfs_compr.h OLD_FILES+=usr/include/fs/ntfs/ntfs_ihash.h OLD_FILES+=usr/include/fs/ntfs/ntfs_inode.h OLD_FILES+=usr/include/fs/ntfs/ntfs_subr.h OLD_FILES+=usr/include/fs/ntfs/ntfs_vfsops.h OLD_FILES+=usr/include/fs/ntfs/ntfsmount.h OLD_DIRS+=usr/include/fs/ntfs OLD_FILES+=usr/share/man/man8/mount_ntfs.8.gz # 20130302: PORTALFS support removed OLD_FILES+=usr/include/fs/portalfs/portal.h OLD_DIRS+=usr/include/fs/portalfs OLD_FILES+=usr/sbin/mount_portalfs OLD_FILES+=usr/share/examples/portal/README OLD_FILES+=usr/share/examples/portal/portal.conf OLD_DIRS+=usr/share/examples/portal OLD_FILES+=usr/share/man/man8/mount_portalfs.8.gz # 20130302: CODAFS support removed OLD_FILES+=usr/share/man/man4/coda.4.gz # 20130302: XFS support removed OLD_FILES+=usr/share/man/man5/xfs.5.gz # 20130302: Capsicum overhaul OLD_FILES+=usr/share/man/man2/cap_getrights.2.gz OLD_FILES+=usr/share/man/man2/cap_new.2.gz # 20130213: OpenSSL 1.0.1e import OLD_FILES+=usr/share/openssl/man/man3/EVP_PKEY_verifyrecover.3.gz OLD_FILES+=usr/share/openssl/man/man3/EVP_PKEY_verifyrecover_init.3.gz # 20130116: removed long unused directories for .1aout section manpages OLD_FILES+=usr/share/man/en.ISO8859-1/man1aout OLD_FILES+=usr/share/man/en.UTF-8/man1aout OLD_DIRS+=usr/share/man/man1aout OLD_DIRS+=usr/share/man/cat1aout OLD_DIRS+=usr/share/man/en.ISO8859-1/cat1aout OLD_DIRS+=usr/share/man/en.UTF-8/cat1aout # 20130110: bsd.compat.mk removed OLD_FILES+=usr/share/mk/bsd.compat.mk # 20130103: gnats-supfile removed OLD_FILES+=usr/share/examples/cvsup/gnats-supfile # 20121230: libdisk removed OLD_FILES+=usr/share/man/man3/libdisk.3.gz usr/include/libdisk.h OLD_FILES+=usr/lib/libdisk.a usr/lib32/libdisk.a # 20121230: remove wrongly created directories for auditdistd OLD_DIRS+=var/dist OLD_DIRS+=var/remote # 20121114: zpool-features manual page moved from section 5 to 7 OLD_FILES+=usr/share/man/man5/zpool-features.5.gz # 20121022: remove harp, hfa and idt man page OLD_FILES+=usr/share/man/man4/harp.4.gz OLD_FILES+=usr/share/man/man4/hfa.4.gz OLD_FILES+=usr/share/man/man4/idt.4.gz OLD_FILES+=usr/share/man/man4/if_idt.4.gz # 20121022: VFS_LOCK_GIANT elimination OLD_FILES+=usr/share/man/man9/VFS_LOCK_GIANT.9.gz OLD_FILES+=usr/share/man/man9/VFS_UNLOCK_GIANT.9.gz # 20121004: remove incomplete unwind.h OLD_FILES+=usr/include/clang/3.2/unwind.h # 20120910: NetBSD compat shims removed OLD_FILES+=usr/include/cam/scsi/scsi_low_pisa.h OLD_FILES+=usr/include/sys/device_port.h # 20120909: doc and www supfiles removed OLD_FILES+=usr/share/examples/cvsup/doc-supfile OLD_FILES+=usr/share/examples/cvsup/www-supfile # 20120908: pf cleanup OLD_FILES+=usr/include/net/if_pflow.h # 20120816: new clang import which bumps version from 3.1 to 3.2 OLD_FILES+=usr/bin/llvm-ld OLD_FILES+=usr/bin/llvm-stub OLD_FILES+=usr/include/clang/3.1/altivec.h OLD_FILES+=usr/include/clang/3.1/avx2intrin.h OLD_FILES+=usr/include/clang/3.1/avxintrin.h OLD_FILES+=usr/include/clang/3.1/bmi2intrin.h OLD_FILES+=usr/include/clang/3.1/bmiintrin.h OLD_FILES+=usr/include/clang/3.1/cpuid.h OLD_FILES+=usr/include/clang/3.1/emmintrin.h OLD_FILES+=usr/include/clang/3.1/fma4intrin.h OLD_FILES+=usr/include/clang/3.1/immintrin.h OLD_FILES+=usr/include/clang/3.1/lzcntintrin.h OLD_FILES+=usr/include/clang/3.1/mm3dnow.h OLD_FILES+=usr/include/clang/3.1/mm_malloc.h OLD_FILES+=usr/include/clang/3.1/mmintrin.h OLD_FILES+=usr/include/clang/3.1/module.map OLD_FILES+=usr/include/clang/3.1/nmmintrin.h OLD_FILES+=usr/include/clang/3.1/pmmintrin.h OLD_FILES+=usr/include/clang/3.1/popcntintrin.h OLD_FILES+=usr/include/clang/3.1/smmintrin.h OLD_FILES+=usr/include/clang/3.1/tmmintrin.h OLD_FILES+=usr/include/clang/3.1/unwind.h OLD_FILES+=usr/include/clang/3.1/wmmintrin.h OLD_FILES+=usr/include/clang/3.1/x86intrin.h OLD_FILES+=usr/include/clang/3.1/xmmintrin.h OLD_DIRS+=usr/include/clang/3.1 OLD_FILES+=usr/share/man/man1/llvm-ld.1.gz # 20120712: OpenSSL 1.0.1c import OLD_LIBS+=lib/libcrypto.so.6 OLD_LIBS+=usr/lib/libssl.so.6 OLD_LIBS+=usr/lib32/libcrypto.so.6 OLD_LIBS+=usr/lib32/libssl.so.6 OLD_FILES+=usr/include/openssl/aes_locl.h OLD_FILES+=usr/include/openssl/bio_lcl.h OLD_FILES+=usr/include/openssl/e_os.h OLD_FILES+=usr/include/openssl/fips.h OLD_FILES+=usr/include/openssl/fips_rand.h OLD_FILES+=usr/include/openssl/md2.h OLD_FILES+=usr/include/openssl/pq_compat.h OLD_FILES+=usr/include/openssl/store.h OLD_FILES+=usr/include/openssl/tmdiff.h OLD_FILES+=usr/include/openssl/ui_locl.h OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_set_id_callback.3.gz # 20120621: remove old man page OLD_FILES+=usr/share/man/man8/vnconfig.8.gz # 20120619: TOE support updated OLD_FILES+=usr/include/netinet/toedev.h # 20120613: auth.conf removed OLD_FILES+=etc/auth.conf OLD_FILES+=usr/share/examples/etc/auth.conf OLD_FILES+=usr/share/man/man3/auth.3.gz OLD_FILES+=usr/share/man/man3/auth_getval.3.gz OLD_FILES+=usr/share/man/man5/auth.conf.5.gz # 20120530: kde pam lives now in ports OLD_FILES+=etc/pam.d/kde # 20120521: byacc import OLD_FILES+=usr/bin/yyfix OLD_FILES+=usr/share/man/man1/yyfix.1.gz # 20120505: new clang import installed a redundant internal header OLD_FILES+=usr/include/clang/3.1/stdalign.h # 20120428: MD2 removed from libmd OLD_LIBS+=lib/libmd.so.5 OLD_FILES+=usr/include/md2.h OLD_LIBS+=usr/lib32/libmd.so.5 OLD_FILES+=usr/share/man/man3/MD2Data.3.gz OLD_FILES+=usr/share/man/man3/MD2End.3.gz OLD_FILES+=usr/share/man/man3/MD2File.3.gz OLD_FILES+=usr/share/man/man3/MD2FileChunk.3.gz OLD_FILES+=usr/share/man/man3/MD2Final.3.gz OLD_FILES+=usr/share/man/man3/MD2Init.3.gz OLD_FILES+=usr/share/man/man3/MD2Update.3.gz OLD_FILES+=usr/share/man/man3/md2.3.gz # 20120425: libusb version bump (r234684) OLD_LIBS+=usr/lib/libusb.so.2 OLD_LIBS+=usr/lib32/libusb.so.2 OLD_FILES+=usr/share/man/man3/libsub_get_active_config_descriptor.3.gz # 20120415: new clang import which bumps version from 3.0 to 3.1 OLD_FILES+=usr/include/clang/3.0/altivec.h OLD_FILES+=usr/include/clang/3.0/avxintrin.h OLD_FILES+=usr/include/clang/3.0/emmintrin.h OLD_FILES+=usr/include/clang/3.0/immintrin.h OLD_FILES+=usr/include/clang/3.0/mm3dnow.h OLD_FILES+=usr/include/clang/3.0/mm_malloc.h OLD_FILES+=usr/include/clang/3.0/mmintrin.h OLD_FILES+=usr/include/clang/3.0/nmmintrin.h OLD_FILES+=usr/include/clang/3.0/pmmintrin.h OLD_FILES+=usr/include/clang/3.0/smmintrin.h OLD_FILES+=usr/include/clang/3.0/tmmintrin.h OLD_FILES+=usr/include/clang/3.0/wmmintrin.h OLD_FILES+=usr/include/clang/3.0/x86intrin.h OLD_FILES+=usr/include/clang/3.0/xmmintrin.h OLD_DIRS+=usr/include/clang/3.0 # 20120412: BIND 9.8.1 release notes removed OLD_FILES+=usr/share/doc/bind9/RELEASE-NOTES-BIND-9.8.1.pdf OLD_FILES+=usr/share/doc/bind9/RELEASE-NOTES-BIND-9.8.1.txt OLD_FILES+=usr/share/doc/bind9/RELEASE-NOTES-BIND-9.8.1.html OLD_FILES+=usr/share/doc/bind9/release-notes.css # 20120330: legacy(4) moved to x86 OLD_FILES+=usr/include/machine/legacyvar.h # 20120324: MPI headers updated OLD_FILES+=usr/include/dev/mpt/mpilib/mpi_inb.h # 20120322: hwpmc_mips24k.h removed OLD_FILES+=usr/include/dev/hwpmc/hwpmc_mips24k.h # 20120322: Update heimdal to 1.5.1. OLD_FILES+=usr/include/krb5-v4compat.h \ usr/include/krb_err.h \ usr/include/hdb-private.h \ usr/share/man/man3/krb5_addresses.3.gz \ usr/share/man/man3/krb5_cc_cursor.3.gz \ usr/share/man/man3/krb5_cc_ops.3.gz \ usr/share/man/man3/krb5_config.3.gz \ usr/share/man/man3/krb5_config_get_int_default.3.gz \ usr/share/man/man3/krb5_context.3.gz \ usr/share/man/man3/krb5_data.3.gz \ usr/share/man/man3/krb5_err.3.gz \ usr/share/man/man3/krb5_errx.3.gz \ usr/share/man/man3/krb5_keyblock.3.gz \ usr/share/man/man3/krb5_keytab_entry.3.gz \ usr/share/man/man3/krb5_kt_cursor.3.gz \ usr/share/man/man3/krb5_kt_ops.3.gz \ usr/share/man/man3/krb5_set_warn_dest.3.gz \ usr/share/man/man3/krb5_verr.3.gz \ usr/share/man/man3/krb5_verrx.3.gz \ usr/share/man/man3/krb5_vwarnx.3.gz \ usr/share/man/man3/krb5_warn.3.gz \ usr/share/man/man3/krb5_warnx.3.gz OLD_LIBS+=usr/lib/libasn1.so.10 \ usr/lib/libhdb.so.10 \ usr/lib/libheimntlm.so.10 \ usr/lib/libhx509.so.10 \ usr/lib/libkadm5clnt.so.10 \ usr/lib/libkadm5srv.so.10 \ usr/lib/libkafs5.so.10 \ usr/lib/libkrb5.so.10 \ usr/lib/libroken.so.10 \ usr/lib32/libasn1.so.10 \ usr/lib32/libhdb.so.10 \ usr/lib32/libheimntlm.so.10 \ usr/lib32/libhx509.so.10 \ usr/lib32/libkadm5clnt.so.10 \ usr/lib32/libkadm5srv.so.10 \ usr/lib32/libkafs5.so.10 \ usr/lib32/libkrb5.so.10 \ usr/lib32/libroken.so.10 # 20120309: Remove fifofs header files. OLD_FILES+=usr/include/fs/fifofs/fifo.h OLD_DIRS+=usr/include/fs/fifofs # 20120304: xlocale cleanup OLD_FILES+=usr/include/_xlocale_ctype.h # 20120225: libarchive 3.0.3 OLD_FILES+=usr/share/man/man3/archive_read_data_into_buffer.3.gz \ usr/share/man/man3/archive_read_support_compression_all.3.gz \ usr/share/man/man3/archive_read_support_compression_bzip2.3.gz \ usr/share/man/man3/archive_read_support_compression_compress.3.gz \ usr/share/man/man3/archive_read_support_compression_gzip.3.gz \ usr/share/man/man3/archive_read_support_compression_lzma.3.gz \ usr/share/man/man3/archive_read_support_compression_none.3.gz \ usr/share/man/man3/archive_read_support_compression_program.3.gz \ usr/share/man/man3/archive_read_support_compression_program_signature.3.gz \ usr/share/man/man3/archive_read_support_compression_xz.3.gz \ usr/share/man/man3/archive_write_set_callbacks.3.gz \ usr/share/man/man3/archive_write_set_compression_bzip2.3.gz \ usr/share/man/man3/archive_write_set_compression_compress.3.gz \ usr/share/man/man3/archive_write_set_compression_gzip.3.gz \ usr/share/man/man3/archive_write_set_compression_none.3.gz \ usr/share/man/man3/archive_write_set_compression_program.3.gz OLD_LIBS+=usr/lib/libarchive.so.5 OLD_LIBS+=usr/lib32/libarchive.so.5 # 20120113: removal of wtmpcvt(1) OLD_FILES+=usr/bin/wtmpcvt OLD_FILES+=usr/share/man/man1/wtmpcvt.1.gz # 20111214: eventtimers(7) moved to eventtimers(4) OLD_FILES+=usr/share/man/man7/eventtimers.7.gz # 20111125: amd(4) removed OLD_FILES+=usr/share/man/man4/amd.4.gz # 20111125: libodialog removed OLD_FILES+=usr/lib/libodialog.a OLD_FILES+=usr/lib/libodialog.so OLD_LIBS+=usr/lib/libodialog.so.7 OLD_FILES+=usr/lib/libodialog_p.a OLD_FILES+=usr/lib32/libodialog.a OLD_FILES+=usr/lib32/libodialog.so OLD_LIBS+=usr/lib32/libodialog.so.7 OLD_FILES+=usr/lib32/libodialog_p.a # 20110930: sysinstall removed OLD_FILES+=usr/sbin/sysinstall OLD_FILES+=usr/share/man/man8/sysinstall.8.gz OLD_FILES+=usr/lib/libftpio.a OLD_FILES+=usr/lib/libftpio.so OLD_LIBS+=usr/lib/libftpio.so.8 OLD_FILES+=usr/lib/libftpio_p.a OLD_FILES+=usr/lib32/libftpio.a OLD_FILES+=usr/lib32/libftpio.so OLD_LIBS+=usr/lib32/libftpio.so.8 OLD_FILES+=usr/lib32/libftpio_p.a OLD_FILES+=usr/include/ftpio.h OLD_FILES+=usr/share/man/man3/ftpio.3.gz # 20110915: rename congestion control manpages OLD_FILES+=usr/share/man/man4/cc.4.gz OLD_FILES+=usr/share/man/man9/cc.9.gz # 20110831: atomic page flags operations OLD_FILES+=usr/share/man/man9/vm_page_flag.9.gz OLD_FILES+=usr/share/man/man9/vm_page_flag_clear.9.gz OLD_FILES+=usr/share/man/man9/vm_page_flag_set.9.gz # 20110828: library version bump for 9.0 OLD_LIBS+=lib/libcam.so.5 OLD_LIBS+=lib/libpcap.so.7 OLD_LIBS+=lib/libufs.so.5 OLD_LIBS+=usr/lib/libbsnmp.so.5 OLD_LIBS+=usr/lib/libdwarf.so.2 OLD_LIBS+=usr/lib/libopie.so.6 OLD_LIBS+=usr/lib/librtld_db.so.1 OLD_LIBS+=usr/lib/libtacplus.so.4 OLD_LIBS+=usr/lib32/libcam.so.5 OLD_LIBS+=usr/lib32/libpcap.so.7 OLD_LIBS+=usr/lib32/libufs.so.5 OLD_LIBS+=usr/lib32/libbsnmp.so.5 OLD_LIBS+=usr/lib32/libdwarf.so.2 OLD_LIBS+=usr/lib32/libopie.so.6 OLD_LIBS+=usr/lib32/librtld_db.so.1 OLD_LIBS+=usr/lib32/libtacplus.so.4 # 20110817: no more acd.4, ad.4, afd.4 and ast.4 OLD_FILES+=usr/share/man/man4/acd.4.gz OLD_FILES+=usr/share/man/man4/ad.4.gz OLD_FILES+=usr/share/man/man4/afd.4.gz OLD_FILES+=usr/share/man/man4/ast.4.gz # 20110718: no longer useful in the age of rc.d OLD_FILES+=usr/sbin/named.reconfig OLD_FILES+=usr/sbin/named.reload OLD_FILES+=usr/share/man/man8/named.reconfig.8.gz OLD_FILES+=usr/share/man/man8/named.reload.8.gz # 20110716: bind 9.8.0 import OLD_LIBS+=usr/lib/liblwres.so.50 OLD_FILES+=usr/share/doc/bind9/KNOWN-DEFECTS OLD_FILES+=usr/share/doc/bind9/NSEC3-NOTES OLD_FILES+=usr/share/doc/bind9/README.idnkit OLD_FILES+=usr/share/doc/bind9/README.pkcs11 # 20110709: vm_map_clean.9 -> vm_map_sync.9 OLD_FILES+=usr/share/man/man9/vm_map_clean.9.gz # 20110709: Catch up with removal of these functions. OLD_FILES+=usr/share/man/man9/vm_page_copy.9.gz OLD_FILES+=usr/share/man/man9/vm_page_protect.9.gz OLD_FILES+=usr/share/man/man9/vm_page_zero_fill.9.gz # 20110707: script no longer needed by /etc/rc.d/nfsd OLD_FILES+=etc/rc.d/nfsserver # 20110705: files moved so both NFS clients can share them OLD_FILES+=usr/include/nfsclient/krpc.h OLD_FILES+=usr/include/nfsclient/nfsdiskless.h # 20110705: the switch of default NFS client to the new one OLD_FILES+=sbin/mount_newnfs OLD_FILES+=usr/share/man/man8/mount_newnfs.8.gz OLD_FILES+=usr/include/nfsclient/nfs_kdtrace.h # 20110628: calendar.msk removed OLD_FILES+=usr/share/calendar/ru_RU.KOI8-R/calendar.msk # 20110517: libpkg removed OLD_FILES+=usr/include/pkg.h OLD_FILES+=usr/lib/libpkg.a OLD_FILES+=usr/lib/libpkg.so OLD_LIBS+=usr/lib/libpkg.so.0 OLD_FILES+=usr/lib/libpkg_p.a OLD_FILES+=usr/lib32/libpkg.a OLD_FILES+=usr/lib32/libpkg.so OLD_LIBS+=usr/lib32/libpkg.so.0 OLD_FILES+=usr/lib32/libpkg_p.a # 20110517: libsbuf version bump OLD_LIBS+=lib/libsbuf.so.5 OLD_LIBS+=usr/lib32/libsbuf.so.5 # 20110502: new clang import which bumps version from 2.9 to 3.0 OLD_FILES+=usr/include/clang/2.9/emmintrin.h OLD_FILES+=usr/include/clang/2.9/mm_malloc.h OLD_FILES+=usr/include/clang/2.9/mmintrin.h OLD_FILES+=usr/include/clang/2.9/pmmintrin.h OLD_FILES+=usr/include/clang/2.9/tmmintrin.h OLD_FILES+=usr/include/clang/2.9/xmmintrin.h OLD_DIRS+=usr/include/clang/2.9 # 20110417: removal of Objective-C support OLD_FILES+=usr/include/objc/encoding.h OLD_FILES+=usr/include/objc/hash.h OLD_FILES+=usr/include/objc/NXConstStr.h OLD_FILES+=usr/include/objc/objc-api.h OLD_FILES+=usr/include/objc/objc-decls.h OLD_FILES+=usr/include/objc/objc-list.h OLD_FILES+=usr/include/objc/objc.h OLD_FILES+=usr/include/objc/Object.h OLD_FILES+=usr/include/objc/Protocol.h OLD_FILES+=usr/include/objc/runtime.h OLD_FILES+=usr/include/objc/sarray.h OLD_FILES+=usr/include/objc/thr.h OLD_FILES+=usr/include/objc/typedstream.h OLD_FILES+=usr/lib/libobjc.a OLD_FILES+=usr/lib/libobjc.so OLD_FILES+=usr/lib/libobjc_p.a OLD_FILES+=usr/libexec/cc1obj OLD_LIBS+=usr/lib/libobjc.so.4 OLD_DIRS+=usr/include/objc OLD_FILES+=usr/lib32/libobjc.a OLD_FILES+=usr/lib32/libobjc.so OLD_FILES+=usr/lib32/libobjc_p.a OLD_LIBS+=usr/lib32/libobjc.so.4 # 20110331: firmware.img created at build time OLD_FILES+=usr/share/examples/kld/firmware/fwimage/firmware.img # 20110224: sticky.8 -> sticky.7 OLD_FILES+=usr/share/man/man8/sticky.8.gz # 20110220: new clang import which bumps version from 2.8 to 2.9 OLD_FILES+=usr/include/clang/2.8/emmintrin.h OLD_FILES+=usr/include/clang/2.8/mm_malloc.h OLD_FILES+=usr/include/clang/2.8/mmintrin.h OLD_FILES+=usr/include/clang/2.8/pmmintrin.h OLD_FILES+=usr/include/clang/2.8/tmmintrin.h OLD_FILES+=usr/include/clang/2.8/xmmintrin.h OLD_DIRS+=usr/include/clang/2.8 # 20110119: netinet/sctp_cc_functions.h removed OLD_FILES+=usr/include/netinet/sctp_cc_functions.h # 20110119: Remove SYSCTL_*X* sysctl additions. OLD_FILES+=usr/share/man/man9/SYSCTL_XINT.9.gz \ usr/share/man/man9/SYSCTL_XLONG.9.gz # 20110112: Update dialog to new version, rename old libdialog to libodialog, # removing associated man pages and header files. OLD_FILES+=usr/share/man/man3/draw_shadow.3.gz \ usr/share/man/man3/draw_box.3.gz usr/share/man/man3/line_edit.3.gz \ usr/share/man/man3/strheight.3.gz usr/share/man/man3/strwidth.3.gz \ usr/share/man/man3/dialog_create_rc.3.gz \ usr/share/man/man3/dialog_yesno.3.gz usr/share/man/man3/dialog_noyes.3.gz \ usr/share/man/man3/dialog_prgbox.3.gz \ usr/share/man/man3/dialog_textbox.3.gz usr/share/man/man3/dialog_menu.3.gz \ usr/share/man/man3/dialog_checklist.3.gz \ usr/share/man/man3/dialog_radiolist.3.gz \ usr/share/man/man3/dialog_inputbox.3.gz \ usr/share/man/man3/dialog_clear_norefresh.3.gz \ usr/share/man/man3/dialog_clear.3.gz usr/share/man/man3/dialog_update.3.gz \ usr/share/man/man3/dialog_fselect.3.gz \ usr/share/man/man3/dialog_notify.3.gz \ usr/share/man/man3/dialog_mesgbox.3.gz \ usr/share/man/man3/dialog_gauge.3.gz usr/share/man/man3/init_dialog.3.gz \ usr/share/man/man3/end_dialog.3.gz usr/share/man/man3/use_helpfile.3.gz \ usr/share/man/man3/use_helpline.3.gz usr/share/man/man3/get_helpline.3.gz \ usr/share/man/man3/restore_helpline.3.gz \ usr/share/man/man3/dialog_msgbox.3.gz \ usr/share/man/man3/dialog_ftree.3.gz usr/share/man/man3/dialog_tree.3.gz \ usr/share/examples/dialog/README usr/share/examples/dialog/checklist \ usr/share/examples/dialog/ftreebox usr/share/examples/dialog/infobox \ usr/share/examples/dialog/inputbox usr/share/examples/dialog/menubox \ usr/share/examples/dialog/msgbox usr/share/examples/dialog/prgbox \ usr/share/examples/dialog/radiolist usr/share/examples/dialog/textbox \ usr/share/examples/dialog/treebox usr/share/examples/dialog/yesno \ usr/share/examples/libdialog/Makefile usr/share/examples/libdialog/check1.c\ usr/share/examples/libdialog/check2.c usr/share/examples/libdialog/check3.c\ usr/share/examples/libdialog/dselect.c \ usr/share/examples/libdialog/fselect.c \ usr/share/examples/libdialog/ftree1.c \ usr/share/examples/libdialog/ftree1.test \ usr/share/examples/libdialog/ftree2.c \ usr/share/examples/libdialog/ftree2.test \ usr/share/examples/libdialog/gauge.c usr/share/examples/libdialog/input1.c \ usr/share/examples/libdialog/input2.c usr/share/examples/libdialog/menu1.c \ usr/share/examples/libdialog/menu2.c usr/share/examples/libdialog/menu3.c \ usr/share/examples/libdialog/msg.c usr/share/examples/libdialog/prgbox.c \ usr/share/examples/libdialog/radio1.c usr/share/examples/libdialog/radio2.c\ usr/share/examples/libdialog/radio3.c usr/share/examples/libdialog/text.c \ usr/share/examples/libdialog/tree.c usr/share/examples/libdialog/yesno.c OLD_DIRS+=usr/share/examples/libdialog usr/share/examples/dialog # 20101114: Remove long-obsolete MAKEDEV.8 OLD_FILES+=usr/share/man/man8/MAKEDEV.8.gz # 20101112: vgonel(9) has gone to private API a while ago OLD_FILES+=usr/share/man/man9/vgonel.9.gz # 20101112: removed gasp.info OLD_FILES+=usr/share/info/gasp.info.gz # 20101109: machine/mutex.h removed OLD_FILES+=usr/include/machine/mutex.h # 20101109: headers moved from machine/ to x86/ .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386" OLD_FILES+=usr/include/machine/mptable.h .endif # 20101101: headers moved from machine/ to x86/ .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386" OLD_FILES+=usr/include/machine/apicreg.h OLD_FILES+=usr/include/machine/mca.h .endif # 20101020: catch up with vm_page_sleep_if_busy rename OLD_FILES+=usr/share/man/man9/vm_page_sleep_busy.9.gz # 20101018: taskqueue(9) updates OLD_FILES+=usr/share/man/man9/taskqueue_find.9.gz # 20101011: removed subblock.h from liblzma OLD_FILES+=usr/include/lzma/subblock.h # 20101002: removed manpath.config OLD_FILES+=etc/manpath.config OLD_FILES+=usr/share/examples/etc/manpath.config # 20100910: renamed sbuf_overflowed to sbuf_error OLD_FILES+=usr/share/man/man9/sbuf_overflowed.9.gz # 20100815: retired last traces of chooseproc(9) OLD_FILES+=usr/share/man/man9/chooseproc.9.gz # 20100806: removal of unused libcompat routines OLD_FILES+=usr/share/man/man3/ascftime.3.gz OLD_FILES+=usr/share/man/man3/cfree.3.gz OLD_FILES+=usr/share/man/man3/cftime.3.gz OLD_FILES+=usr/share/man/man3/getpw.3.gz # 20100801: tzdata2010k import OLD_FILES+=usr/share/zoneinfo/Pacific/Ponape OLD_FILES+=usr/share/zoneinfo/Pacific/Truk # 20100725: acpi_aiboost(4) removal. OLD_FILES+=usr/share/man/man4/acpi_aiboost.4.gz # 20100724: nfsclient/nfs_lock.h moved to nfs/nfs_lock.h OLD_FILES+=usr/include/nfsclient/nfs_lock.h # 20100720: new clang import which bumps version from 2.0 to 2.8 OLD_FILES+=usr/include/clang/2.0/emmintrin.h OLD_FILES+=usr/include/clang/2.0/mm_malloc.h OLD_FILES+=usr/include/clang/2.0/mmintrin.h OLD_FILES+=usr/include/clang/2.0/pmmintrin.h OLD_FILES+=usr/include/clang/2.0/tmmintrin.h OLD_FILES+=usr/include/clang/2.0/xmmintrin.h OLD_DIRS+=usr/include/clang/2.0 # 20100706: removed pc-sysinstall's detect-vmware.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/detect-vmware.sh # 20100701: [powerpc] removed .if ${TARGET_ARCH} == "powerpc" OLD_FILES+=usr/include/machine/intr.h .endif # 20100514: library version bump for versioned symbols for liblzma OLD_LIBS+=usr/lib/liblzma.so.0 OLD_LIBS+=usr/lib32/liblzma.so.0 # 20100511: move GCC-specific headers to /usr/include/gcc .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386" OLD_FILES+=usr/include/emmintrin.h OLD_FILES+=usr/include/mm_malloc.h OLD_FILES+=usr/include/pmmintrin.h OLD_FILES+=usr/include/xmmintrin.h .endif .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386" || ${TARGET_ARCH} == "arm" OLD_FILES+=usr/include/mmintrin.h .endif .if ${TARGET_ARCH} == "powerpc" OLD_FILES+=usr/include/altivec.h OLD_FILES+=usr/include/ppc-asm.h OLD_FILES+=usr/include/spe.h .endif # 20100416: [mips] removed .if ${TARGET_ARCH} == "mips" OLD_FILES+=usr/include/machine/psl.h .endif # 20100415: [mips] removed unused headers .if ${TARGET_ARCH} == "mips" OLD_FILES+=usr/include/machine/archtype.h OLD_FILES+=usr/include/machine/segments.h OLD_FILES+=usr/include/machine/rm7000.h OLD_FILES+=usr/include/machine/defs.h OLD_FILES+=usr/include/machine/queue.h .endif # 20100326: gcpio removal OLD_FILES+=usr/bin/gcpio OLD_FILES+=usr/share/info/cpio.info.gz OLD_FILES+=usr/share/man/man1/gcpio.1.gz # 20100322: libz update OLD_LIBS+=lib/libz.so.5 OLD_LIBS+=usr/lib32/libz.so.5 # 20100314: removal of regexp.h OLD_FILES+=usr/include/regexp.h OLD_FILES+=usr/share/man/man3/regexp.3.gz OLD_FILES+=usr/share/man/man3/regsub.3.gz # 20100303: actual removal of utmp.h OLD_FILES+=usr/include/utmp.h # 20100208: man pages moved .if ${TARGET_ARCH} == "i386" OLD_FILES+=usr/share/man/man4/i386/alpm.4.gz OLD_FILES+=usr/share/man/man4/i386/amdpm.4.gz OLD_FILES+=usr/share/man/man4/i386/mcd.4.gz OLD_FILES+=usr/share/man/man4/i386/padlock.4.gz OLD_FILES+=usr/share/man/man4/i386/pcf.4.gz OLD_FILES+=usr/share/man/man4/i386/scd.4.gz OLD_FILES+=usr/share/man/man4/i386/viapm.4.gz .endif # 20100122: move BSDL bc/dc USD documents to /usr/share/doc/usd OLD_FILES+=usr/share/doc/papers/bc.ascii.gz OLD_FILES+=usr/share/doc/papers/dc.ascii.gz # 20100120: replacing GNU bc/dc with BSDL versions OLD_FILES+=usr/share/examples/bc/ckbook.b OLD_FILES+=usr/share/examples/bc/pi.b OLD_FILES+=usr/share/examples/bc/primes.b OLD_FILES+=usr/share/examples/bc/twins.b OLD_FILES+=usr/share/info/dc.info.gz OLD_DIRS+=usr/share/examples/bc # 20100114: removal of ttyslot(3) OLD_FILES+=usr/share/man/man3/ttyslot.3.gz # 20100113: remove utmp.h, replace it by utmpx.h OLD_FILES+=usr/share/man/man3/login.3.gz OLD_FILES+=usr/share/man/man3/logout.3.gz OLD_FILES+=usr/share/man/man3/logwtmp.3.gz OLD_FILES+=usr/share/man/man3/ulog_endutxent.3.gz OLD_FILES+=usr/share/man/man3/ulog_getutxent.3.gz OLD_FILES+=usr/share/man/man3/ulog_getutxline.3.gz OLD_FILES+=usr/share/man/man3/ulog_getutxuser.3.gz OLD_FILES+=usr/share/man/man3/ulog_pututxline.3.gz OLD_FILES+=usr/share/man/man3/ulog_setutxent.3.gz OLD_FILES+=usr/share/man/man3/ulog_setutxfile.3.gz OLD_FILES+=usr/share/man/man5/lastlog.5.gz OLD_FILES+=usr/share/man/man5/utmp.5.gz OLD_FILES+=usr/share/man/man5/wtmp.5.gz OLD_LIBS+=lib/libutil.so.8 OLD_LIBS+=usr/lib32/libutil.so.8 # 20100105: new userland semaphore implementation OLD_FILES+=usr/include/sys/semaphore.h # 20100103: ntptrace(8) removed OLD_FILES+=usr/sbin/ntptrace OLD_FILES+=usr/share/man/man8/ntptrace.8.gz # 20091229: remove no longer relevant examples OLD_FILES+=usr/share/examples/pppd/auth-down.sample OLD_FILES+=usr/share/examples/pppd/auth-up.sample OLD_FILES+=usr/share/examples/pppd/chap-secrets.sample OLD_FILES+=usr/share/examples/pppd/chat.sh.sample OLD_FILES+=usr/share/examples/pppd/ip-down.sample OLD_FILES+=usr/share/examples/pppd/ip-up.sample OLD_FILES+=usr/share/examples/pppd/options.sample OLD_FILES+=usr/share/examples/pppd/pap-secrets.sample OLD_FILES+=usr/share/examples/pppd/ppp.deny.sample OLD_FILES+=usr/share/examples/pppd/ppp.shells.sample OLD_DIRS+=usr/share/examples/pppd OLD_FILES+=usr/share/examples/slattach/unit-command.sh OLD_DIRS+=usr/share/examples/slattach OLD_FILES+=usr/share/examples/sliplogin/slip.hosts OLD_FILES+=usr/share/examples/sliplogin/slip.login OLD_FILES+=usr/share/examples/sliplogin/slip.logout OLD_FILES+=usr/share/examples/sliplogin/slip.slparms OLD_DIRS+=usr/share/examples/sliplogin OLD_FILES+=usr/share/examples/startslip/sldown.sh OLD_FILES+=usr/share/examples/startslip/slip.sh OLD_FILES+=usr/share/examples/startslip/slup.sh OLD_DIRS+=usr/share/examples/startslip # 20091202: unify rc.firewall and rc.firewall6. OLD_FILES+=etc/rc.d/ip6fw OLD_FILES+=etc/rc.firewall6 OLD_FILES+=usr/share/examples/etc/rc.firewall6 # 20091117: removal of rc.early(8) link OLD_FILES+=usr/share/man/man8/rc.early.8.gz # 20091117: usr/share/zoneinfo/GMT link removed OLD_FILES+=usr/share/zoneinfo/GMT # 20091027: pselect.3 implemented as syscall OLD_FILES+=usr/share/man/man3/pselect.3.gz # 20091005: fusword.9 and susword.9 removed OLD_FILES+=usr/share/man/man9/fusword.9.gz OLD_FILES+=usr/share/man/man9/susword.9.gz # 20090909: vesa and dpms promoted to be i386/amd64 common OLD_FILES+=usr/include/machine/pc/vesa.h OLD_FILES+=usr/share/man/man4/i386/dpms.4.gz # 20090904: remove lukemftpd OLD_FILES+=usr/libexec/lukemftpd OLD_FILES+=usr/share/man/man5/ftpd.conf.5.gz OLD_FILES+=usr/share/man/man5/ftpusers.5.gz OLD_FILES+=usr/share/man/man8/lukemftpd.8.gz # 20090902: BSD.{x11,x11-4}.dist are dead and BSD.local.dist lives in ports/ OLD_FILES+=etc/mtree/BSD.local.dist OLD_FILES+=etc/mtree/BSD.x11.dist OLD_FILES+=etc/mtree/BSD.x11-4.dist # 20090812: net80211 documentation overhaul OLD_FILES+=usr/share/man/man9/ieee80211_add_rates.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_add_xrates.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_alloc_node.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_attach.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_begin_scan.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_cfgget.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_cfgset.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_chan2ieee.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_chan2mode.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_create_ibss.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_crypto_attach.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_crypto_detach.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_decap.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_dump_pkt.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_dup_bss.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_encap.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_end_scan.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_find_node.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_fix_rate.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_free_allnodes.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_ieee2mhz.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_ioctl.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_lookup_node.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_media2rate.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_media_change.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_media_init.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_media_status.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_mhz2ieee.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_next_scan.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_node_attach.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_node_detach.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_node_lateattach.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_print_essid.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_proto_attach.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_proto_detach.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_rate2media.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_recv_mgmt.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_send_mgmt.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_setmode.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_timeout_nodes.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_watchdog.9.gz OLD_FILES+=usr/share/man/man9/ieee80211_wep_crypt.9.gz # 20090801: vimage.h removed in favour of vnet.h OLD_FILES+=usr/include/sys/vimage.h # 20101208: libbsnmp was moved to usr/lib OLD_LIBS+=lib/libbsnmp.so.5 # 20090719: library version bump for 8.0 OLD_LIBS+=lib/libalias.so.6 OLD_LIBS+=lib/libavl.so.1 OLD_LIBS+=lib/libbegemot.so.3 OLD_LIBS+=lib/libbsdxml.so.3 OLD_LIBS+=lib/libbsnmp.so.4 OLD_LIBS+=lib/libcam.so.4 OLD_LIBS+=lib/libcrypt.so.4 OLD_LIBS+=lib/libcrypto.so.5 OLD_LIBS+=lib/libctf.so.1 OLD_LIBS+=lib/libdevstat.so.6 OLD_LIBS+=lib/libdtrace.so.1 OLD_LIBS+=lib/libedit.so.6 OLD_LIBS+=lib/libgeom.so.4 OLD_LIBS+=lib/libipsec.so.3 OLD_LIBS+=lib/libipx.so.4 OLD_LIBS+=lib/libkiconv.so.3 OLD_LIBS+=lib/libkvm.so.4 OLD_LIBS+=lib/libmd.so.4 OLD_LIBS+=lib/libncurses.so.7 OLD_LIBS+=lib/libncursesw.so.7 OLD_LIBS+=lib/libnvpair.so.1 OLD_LIBS+=lib/libpcap.so.6 OLD_LIBS+=lib/libreadline.so.7 OLD_LIBS+=lib/libsbuf.so.4 OLD_LIBS+=lib/libufs.so.4 OLD_LIBS+=lib/libumem.so.1 OLD_LIBS+=lib/libutil.so.7 OLD_LIBS+=lib/libuutil.so.1 OLD_LIBS+=lib/libz.so.4 OLD_LIBS+=lib/libzfs.so.1 OLD_LIBS+=lib/libzpool.so.1 OLD_LIBS+=usr/lib/libarchive.so.4 OLD_LIBS+=usr/lib/libauditd.so.4 OLD_LIBS+=usr/lib/libbluetooth.so.3 OLD_LIBS+=usr/lib/libbsm.so.2 OLD_LIBS+=usr/lib/libbz2.so.3 OLD_LIBS+=usr/lib/libcalendar.so.4 OLD_LIBS+=usr/lib/libcom_err.so.4 OLD_LIBS+=usr/lib/libdevinfo.so.4 OLD_LIBS+=usr/lib/libdialog.so.6 OLD_LIBS+=usr/lib/libdwarf.so.1 OLD_LIBS+=usr/lib/libfetch.so.5 OLD_LIBS+=usr/lib/libform.so.4 OLD_LIBS+=usr/lib/libformw.so.4 OLD_LIBS+=usr/lib/libftpio.so.7 OLD_LIBS+=usr/lib/libgnuregex.so.4 OLD_LIBS+=usr/lib/libgpib.so.2 OLD_LIBS+=usr/lib/libhistory.so.7 OLD_LIBS+=usr/lib/libmagic.so.3 OLD_LIBS+=usr/lib/libmemstat.so.2 OLD_LIBS+=usr/lib/libmenu.so.4 OLD_LIBS+=usr/lib/libmenuw.so.4 OLD_LIBS+=usr/lib/libmilter.so.4 OLD_LIBS+=usr/lib/libncp.so.3 OLD_LIBS+=usr/lib/libnetgraph.so.3 OLD_LIBS+=usr/lib/libngatm.so.3 OLD_LIBS+=usr/lib/libobjc.so.3 OLD_LIBS+=usr/lib/libopie.so.5 OLD_LIBS+=usr/lib/libpam.so.4 OLD_LIBS+=usr/lib/libpanel.so.4 OLD_LIBS+=usr/lib/libpanelw.so.4 OLD_LIBS+=usr/lib/libpmc.so.4 OLD_LIBS+=usr/lib/libproc.so.1 OLD_LIBS+=usr/lib/libradius.so.3 OLD_LIBS+=usr/lib/librpcsvc.so.4 OLD_LIBS+=usr/lib/libsdp.so.3 OLD_LIBS+=usr/lib/libsmb.so.3 OLD_LIBS+=usr/lib/libssh.so.4 OLD_LIBS+=usr/lib/libssl.so.5 OLD_LIBS+=usr/lib/libtacplus.so.3 OLD_LIBS+=usr/lib/libugidfw.so.3 OLD_LIBS+=usr/lib/libusb.so.1 OLD_LIBS+=usr/lib/libusbhid.so.3 OLD_LIBS+=usr/lib/libvgl.so.5 OLD_LIBS+=usr/lib/libwrap.so.5 OLD_LIBS+=usr/lib/libypclnt.so.3 OLD_LIBS+=usr/lib/pam_chroot.so.4 OLD_LIBS+=usr/lib/pam_deny.so.4 OLD_LIBS+=usr/lib/pam_echo.so.4 OLD_LIBS+=usr/lib/pam_exec.so.4 OLD_LIBS+=usr/lib/pam_ftpusers.so.4 OLD_LIBS+=usr/lib/pam_group.so.4 OLD_LIBS+=usr/lib/pam_guest.so.4 OLD_LIBS+=usr/lib/pam_krb5.so.4 OLD_LIBS+=usr/lib/pam_ksu.so.4 OLD_LIBS+=usr/lib/pam_lastlog.so.4 OLD_LIBS+=usr/lib/pam_login_access.so.4 OLD_LIBS+=usr/lib/pam_nologin.so.4 OLD_LIBS+=usr/lib/pam_opie.so.4 OLD_LIBS+=usr/lib/pam_opieaccess.so.4 OLD_LIBS+=usr/lib/pam_passwdqc.so.4 OLD_LIBS+=usr/lib/pam_permit.so.4 OLD_LIBS+=usr/lib/pam_radius.so.4 OLD_LIBS+=usr/lib/pam_rhosts.so.4 OLD_LIBS+=usr/lib/pam_rootok.so.4 OLD_LIBS+=usr/lib/pam_securetty.so.4 OLD_LIBS+=usr/lib/pam_self.so.4 OLD_LIBS+=usr/lib/pam_ssh.so.4 OLD_LIBS+=usr/lib/pam_tacplus.so.4 OLD_LIBS+=usr/lib/pam_unix.so.4 OLD_LIBS+=usr/lib/snmp_atm.so.5 OLD_LIBS+=usr/lib/snmp_bridge.so.5 OLD_LIBS+=usr/lib/snmp_hostres.so.5 OLD_LIBS+=usr/lib/snmp_mibII.so.5 OLD_LIBS+=usr/lib/snmp_netgraph.so.5 OLD_LIBS+=usr/lib/snmp_pf.so.5 OLD_LIBS+=usr/lib32/libalias.so.6 OLD_LIBS+=usr/lib32/libarchive.so.4 OLD_LIBS+=usr/lib32/libauditd.so.4 OLD_LIBS+=usr/lib32/libavl.so.1 OLD_LIBS+=usr/lib32/libbegemot.so.3 OLD_LIBS+=usr/lib32/libbluetooth.so.3 OLD_LIBS+=usr/lib32/libbsdxml.so.3 OLD_LIBS+=usr/lib32/libbsm.so.2 OLD_LIBS+=usr/lib32/libbsnmp.so.4 OLD_LIBS+=usr/lib32/libbz2.so.3 OLD_LIBS+=usr/lib32/libcalendar.so.4 OLD_LIBS+=usr/lib32/libcam.so.4 OLD_LIBS+=usr/lib32/libcom_err.so.4 OLD_LIBS+=usr/lib32/libcrypt.so.4 OLD_LIBS+=usr/lib32/libcrypto.so.5 OLD_LIBS+=usr/lib32/libctf.so.1 OLD_LIBS+=usr/lib32/libdevinfo.so.4 OLD_LIBS+=usr/lib32/libdevstat.so.6 OLD_LIBS+=usr/lib32/libdialog.so.6 OLD_LIBS+=usr/lib32/libdtrace.so.1 OLD_LIBS+=usr/lib32/libdwarf.so.1 OLD_LIBS+=usr/lib32/libedit.so.6 OLD_LIBS+=usr/lib32/libfetch.so.5 OLD_LIBS+=usr/lib32/libform.so.4 OLD_LIBS+=usr/lib32/libformw.so.4 OLD_LIBS+=usr/lib32/libftpio.so.7 OLD_LIBS+=usr/lib32/libgeom.so.4 OLD_LIBS+=usr/lib32/libgnuregex.so.4 OLD_LIBS+=usr/lib32/libgpib.so.2 OLD_LIBS+=usr/lib32/libhistory.so.7 OLD_LIBS+=usr/lib32/libipsec.so.3 OLD_LIBS+=usr/lib32/libipx.so.4 OLD_LIBS+=usr/lib32/libkiconv.so.3 OLD_LIBS+=usr/lib32/libkvm.so.4 OLD_LIBS+=usr/lib32/libmagic.so.3 OLD_LIBS+=usr/lib32/libmd.so.4 OLD_LIBS+=usr/lib32/libmemstat.so.2 OLD_LIBS+=usr/lib32/libmenu.so.4 OLD_LIBS+=usr/lib32/libmenuw.so.4 OLD_LIBS+=usr/lib32/libmilter.so.4 OLD_LIBS+=usr/lib32/libncp.so.3 OLD_LIBS+=usr/lib32/libncurses.so.7 OLD_LIBS+=usr/lib32/libncursesw.so.7 OLD_LIBS+=usr/lib32/libnetgraph.so.3 OLD_LIBS+=usr/lib32/libngatm.so.3 OLD_LIBS+=usr/lib32/libnvpair.so.1 OLD_LIBS+=usr/lib32/libobjc.so.3 OLD_LIBS+=usr/lib32/libopie.so.5 OLD_LIBS+=usr/lib32/libpam.so.4 OLD_LIBS+=usr/lib32/libpanel.so.4 OLD_LIBS+=usr/lib32/libpanelw.so.4 OLD_LIBS+=usr/lib32/libpcap.so.6 OLD_LIBS+=usr/lib32/libpmc.so.4 OLD_LIBS+=usr/lib32/libproc.so.1 OLD_LIBS+=usr/lib32/libradius.so.3 OLD_LIBS+=usr/lib32/libreadline.so.7 OLD_LIBS+=usr/lib32/librpcsvc.so.4 OLD_LIBS+=usr/lib32/libsbuf.so.4 OLD_LIBS+=usr/lib32/libsdp.so.3 OLD_LIBS+=usr/lib32/libsmb.so.3 OLD_LIBS+=usr/lib32/libssh.so.4 OLD_LIBS+=usr/lib32/libssl.so.5 OLD_LIBS+=usr/lib32/libtacplus.so.3 OLD_LIBS+=usr/lib32/libufs.so.4 OLD_LIBS+=usr/lib32/libugidfw.so.3 OLD_LIBS+=usr/lib32/libumem.so.1 OLD_LIBS+=usr/lib32/libusb.so.1 OLD_LIBS+=usr/lib32/libusbhid.so.3 OLD_LIBS+=usr/lib32/libutil.so.7 OLD_LIBS+=usr/lib32/libuutil.so.1 OLD_LIBS+=usr/lib32/libvgl.so.5 OLD_LIBS+=usr/lib32/libwrap.so.5 OLD_LIBS+=usr/lib32/libypclnt.so.3 OLD_LIBS+=usr/lib32/libz.so.4 OLD_LIBS+=usr/lib32/libzfs.so.1 OLD_LIBS+=usr/lib32/libzpool.so.1 OLD_LIBS+=usr/lib32/pam_chroot.so.4 OLD_LIBS+=usr/lib32/pam_deny.so.4 OLD_LIBS+=usr/lib32/pam_echo.so.4 OLD_LIBS+=usr/lib32/pam_exec.so.4 OLD_LIBS+=usr/lib32/pam_ftpusers.so.4 OLD_LIBS+=usr/lib32/pam_group.so.4 OLD_LIBS+=usr/lib32/pam_guest.so.4 OLD_LIBS+=usr/lib32/pam_krb5.so.4 OLD_LIBS+=usr/lib32/pam_ksu.so.4 OLD_LIBS+=usr/lib32/pam_lastlog.so.4 OLD_LIBS+=usr/lib32/pam_login_access.so.4 OLD_LIBS+=usr/lib32/pam_nologin.so.4 OLD_LIBS+=usr/lib32/pam_opie.so.4 OLD_LIBS+=usr/lib32/pam_opieaccess.so.4 OLD_LIBS+=usr/lib32/pam_passwdqc.so.4 OLD_LIBS+=usr/lib32/pam_permit.so.4 OLD_LIBS+=usr/lib32/pam_radius.so.4 OLD_LIBS+=usr/lib32/pam_rhosts.so.4 OLD_LIBS+=usr/lib32/pam_rootok.so.4 OLD_LIBS+=usr/lib32/pam_securetty.so.4 OLD_LIBS+=usr/lib32/pam_self.so.4 OLD_LIBS+=usr/lib32/pam_ssh.so.4 OLD_LIBS+=usr/lib32/pam_tacplus.so.4 OLD_LIBS+=usr/lib32/pam_unix.so.4 # 20090718: the gdm pam.d file is no longer required. OLD_FILES+=etc/pam.d/gdm # 20090714: net_add_domain(9) renamed to domain_add(9) OLD_FILES+=usr/share/man/man9/net_add_domain.9.gz # 20090713: vimage container structs removed. OLD_FILES+=usr/include/netinet/vinet.h OLD_FILES+=usr/include/netinet6/vinet6.h OLD_FILES+=usr/include/netipsec/vipsec.h # 20090712: ieee80211.4 -> net80211.4 OLD_FILES+=usr/share/man/man4/ieee80211.4.gz # 20090711: typo fixed, kproc_resume,.9 -> kproc_resume.9 OLD_FILES+=usr/share/man/man9/kproc_resume,.9.gz # 20090709: msgctl.3 msgget.3 msgrcv.3 msgsnd.3 manual pages moved OLD_FILES+=usr/share/man/man3/msgctl.3.gz OLD_FILES+=usr/share/man/man3/msgget.3.gz OLD_FILES+=usr/share/man/man3/msgrcv.3.gz OLD_FILES+=usr/share/man/man3/msgsnd.3.gz # 20090630: old kernel RPC implementation removal OLD_FILES+=usr/include/nfs/rpcv2.h # 20090624: update usbdi(9) OLD_FILES+=usr/share/man/man9/usbd_abort_default_pipe.9.gz OLD_FILES+=usr/share/man/man9/usbd_abort_pipe.9.gz OLD_FILES+=usr/share/man/man9/usbd_alloc_buffer.9.gz OLD_FILES+=usr/share/man/man9/usbd_alloc_xfer.9.gz OLD_FILES+=usr/share/man/man9/usbd_clear_endpoint_stall.9.gz OLD_FILES+=usr/share/man/man9/usbd_clear_endpoint_stall_async.9.gz OLD_FILES+=usr/share/man/man9/usbd_clear_endpoint_toggle.9.gz OLD_FILES+=usr/share/man/man9/usbd_close_pipe.9.gz OLD_FILES+=usr/share/man/man9/usbd_device2interface_handle.9.gz OLD_FILES+=usr/share/man/man9/usbd_do_request_async.9.gz OLD_FILES+=usr/share/man/man9/usbd_do_request_flags_pipe.9.gz OLD_FILES+=usr/share/man/man9/usbd_endpoint_count.9.gz OLD_FILES+=usr/share/man/man9/usbd_find_edesc.9.gz OLD_FILES+=usr/share/man/man9/usbd_find_idesc.9.gz OLD_FILES+=usr/share/man/man9/usbd_free_buffer.9.gz OLD_FILES+=usr/share/man/man9/usbd_free_xfer.9.gz OLD_FILES+=usr/share/man/man9/usbd_get_buffer.9.gz OLD_FILES+=usr/share/man/man9/usbd_get_config.9.gz OLD_FILES+=usr/share/man/man9/usbd_get_config_desc.9.gz OLD_FILES+=usr/share/man/man9/usbd_get_config_desc_full.9.gz OLD_FILES+=usr/share/man/man9/usbd_get_config_descriptor.9.gz OLD_FILES+=usr/share/man/man9/usbd_get_device_descriptor.9.gz OLD_FILES+=usr/share/man/man9/usbd_get_endpoint_descriptor.9.gz OLD_FILES+=usr/share/man/man9/usbd_get_interface_altindex.9.gz OLD_FILES+=usr/share/man/man9/usbd_get_interface_descriptor.9.gz OLD_FILES+=usr/share/man/man9/usbd_get_no_alts.9.gz OLD_FILES+=usr/share/man/man9/usbd_get_quirks.9.gz OLD_FILES+=usr/share/man/man9/usbd_get_speed.9.gz OLD_FILES+=usr/share/man/man9/usbd_get_string.9.gz OLD_FILES+=usr/share/man/man9/usbd_get_string_desc.9.gz OLD_FILES+=usr/share/man/man9/usbd_get_xfer_status.9.gz OLD_FILES+=usr/share/man/man9/usbd_interface2device_handle.9.gz OLD_FILES+=usr/share/man/man9/usbd_interface2endpoint_descriptor.9.gz OLD_FILES+=usr/share/man/man9/usbd_interface_count.9.gz OLD_FILES+=usr/share/man/man9/usbd_open_pipe.9.gz OLD_FILES+=usr/share/man/man9/usbd_open_pipe_intr.9.gz OLD_FILES+=usr/share/man/man9/usbd_pipe2device_handle.9.gz OLD_FILES+=usr/share/man/man9/usbd_set_config_index.9.gz OLD_FILES+=usr/share/man/man9/usbd_set_config_no.9.gz OLD_FILES+=usr/share/man/man9/usbd_set_interface.9.gz OLD_FILES+=usr/share/man/man9/usbd_setup_default_xfer.9.gz OLD_FILES+=usr/share/man/man9/usbd_setup_isoc_xfer.9.gz OLD_FILES+=usr/share/man/man9/usbd_setup_xfer.9.gz OLD_FILES+=usr/share/man/man9/usbd_sync_transfer.9.gz OLD_FILES+=usr/share/man/man9/usbd_transfer.9.gz OLD_FILES+=usr/share/man/man9/usb_find_desc.9.gz # 20090623: number of headers needed for a usb driver reduced OLD_FILES+=usr/include/dev/usb/usb_defs.h OLD_FILES+=usr/include/dev/usb/usb_error.h OLD_FILES+=usr/include/dev/usb/usb_handle_request.h OLD_FILES+=usr/include/dev/usb/usb_hid.h OLD_FILES+=usr/include/dev/usb/usb_lookup.h OLD_FILES+=usr/include/dev/usb/usb_mfunc.h OLD_FILES+=usr/include/dev/usb/usb_parse.h OLD_FILES+=usr/include/dev/usb/usb_revision.h # 20090609: devclass_add_driver is no longer public OLD_FILES+=usr/share/man/man9/devclass_add_driver.9.gz OLD_FILES+=usr/share/man/man9/devclass_delete_driver.9.gz OLD_FILES+=usr/share/man/man9/devclass_find_driver.9.gz # 20090605: removal of clists OLD_FILES+=usr/include/sys/clist.h # 20090602: removal of window(1) OLD_FILES+=usr/bin/window OLD_FILES+=usr/share/man/man1/window.1.gz # 20090531: bind 9.6.1rc1 import OLD_LIBS+=usr/lib/liblwres.so.30 # 20090530: removal of early.sh OLD_FILES+=etc/rc.d/early.sh # 20090527: renaming of S{LIST,TAILQ}_REMOVE_NEXT() to _REMOVE_AFTER() OLD_FILES+=usr/share/man/man3/SLIST_REMOVE_NEXT.3.gz OLD_FILES+=usr/share/man/man3/STAILQ_REMOVE_NEXT.3.gz # 20090527: removal of legacy USB stack OLD_FILES+=usr/include/legacy/dev/usb/dsbr100io.h OLD_FILES+=usr/include/legacy/dev/usb/ehcireg.h OLD_FILES+=usr/include/legacy/dev/usb/ehcivar.h OLD_FILES+=usr/include/legacy/dev/usb/hid.h OLD_FILES+=usr/include/legacy/dev/usb/if_urtwreg.h OLD_FILES+=usr/include/legacy/dev/usb/if_urtwvar.h OLD_FILES+=usr/include/legacy/dev/usb/ohcireg.h OLD_FILES+=usr/include/legacy/dev/usb/ohcivar.h OLD_FILES+=usr/include/legacy/dev/usb/rio500_usb.h OLD_FILES+=usr/include/legacy/dev/usb/rt2573_ucode.h OLD_FILES+=usr/include/legacy/dev/usb/sl811hsreg.h OLD_FILES+=usr/include/legacy/dev/usb/sl811hsvar.h OLD_FILES+=usr/include/legacy/dev/usb/ubser.h OLD_FILES+=usr/include/legacy/dev/usb/ucomvar.h OLD_FILES+=usr/include/legacy/dev/usb/udbp.h OLD_FILES+=usr/include/legacy/dev/usb/uftdireg.h OLD_FILES+=usr/include/legacy/dev/usb/ugraphire_rdesc.h OLD_FILES+=usr/include/legacy/dev/usb/uhcireg.h OLD_FILES+=usr/include/legacy/dev/usb/uhcivar.h OLD_FILES+=usr/include/legacy/dev/usb/usb.h OLD_FILES+=usr/include/legacy/dev/usb/usb_mem.h OLD_FILES+=usr/include/legacy/dev/usb/usb_port.h OLD_FILES+=usr/include/legacy/dev/usb/usb_quirks.h OLD_FILES+=usr/include/legacy/dev/usb/usbcdc.h OLD_FILES+=usr/include/legacy/dev/usb/usbdi.h OLD_FILES+=usr/include/legacy/dev/usb/usbdi_util.h OLD_FILES+=usr/include/legacy/dev/usb/usbdivar.h OLD_FILES+=usr/include/legacy/dev/usb/usbhid.h OLD_FILES+=usr/include/legacy/dev/usb/uxb360gp_rdesc.h OLD_DIRS+=usr/include/legacy/dev/usb OLD_DIRS+=usr/include/legacy/dev OLD_DIRS+=usr/include/legacy # 20090526: removal of makekey(8) OLD_FILES+=usr/libexec/makekey OLD_FILES+=usr/share/man/man8/makekey.8.gz # 20090522: removal of University of Michigan NFSv4 client OLD_FILES+=etc/rc.d/idmapd OLD_FILES+=sbin/idmapd OLD_FILES+=sbin/mount_nfs4 OLD_FILES+=usr/share/man/man8/idmapd.8.gz OLD_FILES+=usr/share/man/man8/mount_nfs4.8.gz # 20090513: removal of legacy versions of USB network interface drivers OLD_FILES+=usr/include/legacy/dev/usb/if_upgtvar.h OLD_FILES+=usr/include/legacy/dev/usb/usb_ethersubr.h # 20090417: removal of legacy versions of USB network interface drivers OLD_FILES+=usr/include/legacy/dev/usb/if_auereg.h OLD_FILES+=usr/include/legacy/dev/usb/if_axereg.h OLD_FILES+=usr/include/legacy/dev/usb/if_cdcereg.h OLD_FILES+=usr/include/legacy/dev/usb/if_cuereg.h OLD_FILES+=usr/include/legacy/dev/usb/if_kuereg.h OLD_FILES+=usr/include/legacy/dev/usb/if_ruereg.h OLD_FILES+=usr/include/legacy/dev/usb/if_rumreg.h OLD_FILES+=usr/include/legacy/dev/usb/if_rumvar.h OLD_FILES+=usr/include/legacy/dev/usb/if_udavreg.h OLD_FILES+=usr/include/legacy/dev/usb/if_uralreg.h OLD_FILES+=usr/include/legacy/dev/usb/if_uralvar.h OLD_FILES+=usr/include/legacy/dev/usb/if_zydfw.h OLD_FILES+=usr/include/legacy/dev/usb/if_zydreg.h OLD_FILES+=usr/include/legacy/dev/usb/kue_fw.h # 20090416: removal of ar(4), ray(4), sr(4), raycontrol(8) OLD_FILES+=usr/sbin/raycontrol OLD_FILES+=usr/share/man/man4/i386/ar.4.gz OLD_FILES+=usr/share/man/man4/i386/ray.4.gz OLD_FILES+=usr/share/man/man4/i386/sr.4.gz OLD_FILES+=usr/share/man/man8/raycontrol.8.gz # 20090410: VOP_LEASE.9 removed OLD_FILES+=usr/share/man/man9/VOP_LEASE.9.gz # 20090406: usb_sw_transfer.h removed OLD_FILES+=usr/include/dev/usb/usb_sw_transfer.h # 20090405: removal of if_ppp(4) and if_sl(4) OLD_FILES+=sbin/slattach rescue/slattach OLD_FILES+=sbin/startslip rescue/startslip OLD_FILES+=usr/include/net/if_ppp.h OLD_FILES+=usr/include/net/if_pppvar.h OLD_FILES+=usr/include/net/if_slvar.h OLD_FILES+=usr/include/net/ppp_comp.h OLD_FILES+=usr/include/net/slip.h OLD_FILES+=usr/sbin/sliplogin OLD_FILES+=usr/sbin/slstat OLD_FILES+=usr/sbin/pppd OLD_FILES+=usr/sbin/pppstats OLD_FILES+=usr/share/man/man1/startslip.1.gz OLD_FILES+=usr/share/man/man4/if_ppp.4.gz OLD_FILES+=usr/share/man/man4/if_sl.4.gz OLD_FILES+=usr/share/man/man4/ppp.4.gz OLD_FILES+=usr/share/man/man4/sl.4.gz OLD_FILES+=usr/share/man/man8/pppd.8.gz OLD_FILES+=usr/share/man/man8/pppstats.8.gz OLD_FILES+=usr/share/man/man8/slattach.8.gz OLD_FILES+=usr/share/man/man8/slip.8.gz OLD_FILES+=usr/share/man/man8/sliplogin.8.gz OLD_FILES+=usr/share/man/man8/slstat.8.gz # 20090321: libpcap upgraded to 1.0.0 OLD_LIBS+=lib/libpcap.so.5 OLD_LIBS+=usr/lib32/libpcap.so.5 # 20090319: uscanner(4) has been removed OLD_FILES+=usr/share/man/man4/uscanner.4.gz # 20090313: k8temp(4) renamed to amdtemp(4) OLD_FILES+=usr/share/man/man4/k8temp.4.gz # 20090308: libusb.so.1 renamed OLD_LIBS+=usr/lib/libusb20.so.1 OLD_FILES+=usr/lib/libusb20.a OLD_FILES+=usr/lib/libusb20.so OLD_FILES+=usr/lib/libusb20_p.a OLD_FILES+=usr/include/libusb20_compat01.h OLD_FILES+=usr/include/libusb20_compat10.h OLD_LIBS+=usr/lib32/libusb20.so.1 OLD_FILES+=usr/lib32/libusb20.a OLD_FILES+=usr/lib32/libusb20.so OLD_FILES+=usr/lib32/libusb20_p.a # 20090226: libmp(3) functions renamed OLD_LIBS+=usr/lib/libmp.so.6 OLD_LIBS+=usr/lib32/libmp.so.6 # 20090223: changeover of USB stacks OLD_FILES+=usr/include/dev/usb2/include/ufm2_ioctl.h OLD_FILES+=usr/include/dev/usb2/include/urio2_ioctl.h OLD_FILES+=usr/include/dev/usb2/include/usb2_cdc.h OLD_FILES+=usr/include/dev/usb2/include/usb2_defs.h OLD_FILES+=usr/include/dev/usb2/include/usb2_devid.h OLD_FILES+=usr/include/dev/usb2/include/usb2_devtable.h OLD_FILES+=usr/include/dev/usb2/include/usb2_endian.h OLD_FILES+=usr/include/dev/usb2/include/usb2_error.h OLD_FILES+=usr/include/dev/usb2/include/usb2_hid.h OLD_FILES+=usr/include/dev/usb2/include/usb2_ioctl.h OLD_FILES+=usr/include/dev/usb2/include/usb2_mfunc.h OLD_FILES+=usr/include/dev/usb2/include/usb2_revision.h OLD_FILES+=usr/include/dev/usb2/include/usb2_standard.h OLD_DIRS+=usr/include/dev/usb2/include OLD_DIRS+=usr/include/dev/usb2 OLD_FILES+=usr/include/dev/usb/dsbr100io.h OLD_FILES+=usr/include/dev/usb/ehcireg.h OLD_FILES+=usr/include/dev/usb/ehcivar.h OLD_FILES+=usr/include/dev/usb/hid.h OLD_FILES+=usr/include/dev/usb/if_auereg.h OLD_FILES+=usr/include/dev/usb/if_axereg.h OLD_FILES+=usr/include/dev/usb/if_cdcereg.h OLD_FILES+=usr/include/dev/usb/if_cuereg.h OLD_FILES+=usr/include/dev/usb/if_kuereg.h OLD_FILES+=usr/include/dev/usb/if_ruereg.h OLD_FILES+=usr/include/dev/usb/if_rumreg.h OLD_FILES+=usr/include/dev/usb/if_rumvar.h OLD_FILES+=usr/include/dev/usb/if_udavreg.h OLD_FILES+=usr/include/dev/usb/if_upgtvar.h OLD_FILES+=usr/include/dev/usb/if_uralreg.h OLD_FILES+=usr/include/dev/usb/if_uralvar.h OLD_FILES+=usr/include/dev/usb/if_urtwreg.h OLD_FILES+=usr/include/dev/usb/if_urtwvar.h OLD_FILES+=usr/include/dev/usb/if_zydfw.h OLD_FILES+=usr/include/dev/usb/if_zydreg.h OLD_FILES+=usr/include/dev/usb/kue_fw.h OLD_FILES+=usr/include/dev/usb/ohcireg.h OLD_FILES+=usr/include/dev/usb/ohcivar.h OLD_FILES+=usr/include/dev/usb/rio500_usb.h OLD_FILES+=usr/include/dev/usb/rt2573_ucode.h OLD_FILES+=usr/include/dev/usb/sl811hsreg.h OLD_FILES+=usr/include/dev/usb/sl811hsvar.h OLD_FILES+=usr/include/dev/usb/ubser.h OLD_FILES+=usr/include/dev/usb/ucomvar.h OLD_FILES+=usr/include/dev/usb/udbp.h OLD_FILES+=usr/include/dev/usb/uftdireg.h OLD_FILES+=usr/include/dev/usb/ugraphire_rdesc.h OLD_FILES+=usr/include/dev/usb/uhcireg.h OLD_FILES+=usr/include/dev/usb/uhcivar.h OLD_FILES+=usr/include/dev/usb/usb_ethersubr.h OLD_FILES+=usr/include/dev/usb/usb_mem.h OLD_FILES+=usr/include/dev/usb/usb_port.h OLD_FILES+=usr/include/dev/usb/usb_quirks.h OLD_FILES+=usr/include/dev/usb/usbcdc.h OLD_FILES+=usr/include/dev/usb/usbdivar.h OLD_FILES+=usr/include/dev/usb/uxb360gp_rdesc.h OLD_FILES+=usr/sbin/usbdevs OLD_FILES+=usr/share/man/man8/usbdevs.8.gz # 20090203: removal of pccard header files OLD_FILES+=usr/include/pccard/cardinfo.h OLD_FILES+=usr/include/pccard/cis.h OLD_DIRS+=usr/include/pccard # 20090203: adding_user.8 moved to adding_user.7 OLD_FILES+=usr/share/man/man8/adding_user.8.gz # 20090122: tzdata2009a import OLD_FILES+=usr/share/zoneinfo/Asia/Katmandu # 20090102: file 4.26 import OLD_FILES+=usr/share/misc/magic.mime OLD_FILES+=usr/share/misc/magic.mime.mgc # 20081223: bind 9.4.3 import, nsupdate.8 moved to nsupdate.1 OLD_FILES+=usr/share/man/man8/nsupdate.8.gz # 20081223: ipprotosw.h removed OLD_FILES+=usr/include/netinet/ipprotosw.h # 20081123: vfs_mountedon.9 removed OLD_FILES+=usr/share/man/man9/vfs_mountedon.9.gz # 20081023: FREE.9 and MALLOC.9 removed OLD_FILES+=usr/share/man/man9/FREE.9.gz OLD_FILES+=usr/share/man/man9/MALLOC.9.gz # 20080928: removal of inaccurate device_ids(9) manual page OLD_FILES+=usr/share/man/man9/device_ids.9.gz OLD_FILES+=usr/share/man/man9/major.9.gz OLD_FILES+=usr/share/man/man9/minor.9.gz OLD_FILES+=usr/share/man/man9/umajor.9.gz OLD_FILES+=usr/share/man/man9/uminor.9.gz # 20080917: removal of manpage for axed kernel primitive suser(9) OLD_FILES+=usr/share/man/man9/suser.9.gz OLD_FILES+=usr/share/man/man9/suser_cred.9.gz # 20080913: pax removed from rescue OLD_FILES+=rescue/pax # 20080823: removal of unneeded pt_chown, to implement grantpt(3) OLD_FILES+=usr/libexec/pt_chown # 20080822: ntp 4.2.4p5 import OLD_FILES+=usr/share/doc/ntp/driver23.html OLD_FILES+=usr/share/doc/ntp/driver24.html # 20080821: several man pages moved from man4.i386 to man4 .if ${TARGET_ARCH} == "i386" OLD_FILES+=usr/share/man/man4/i386/acpi_aiboost.4.gz OLD_FILES+=usr/share/man/man4/i386/acpi_asus.4.gz OLD_FILES+=usr/share/man/man4/i386/acpi_fujitsu.4.gz OLD_FILES+=usr/share/man/man4/i386/acpi_ibm.4.gz OLD_FILES+=usr/share/man/man4/i386/acpi_panasonic.4.gz OLD_FILES+=usr/share/man/man4/i386/acpi_sony.4.gz OLD_FILES+=usr/share/man/man4/i386/acpi_toshiba.4.gz OLD_FILES+=usr/share/man/man4/i386/ichwd.4.gz OLD_FILES+=usr/share/man/man4/i386/if_ndis.4.gz OLD_FILES+=usr/share/man/man4/i386/io.4.gz OLD_FILES+=usr/share/man/man4/i386/linux.4.gz OLD_FILES+=usr/share/man/man4/i386/ndis.4.gz .endif # 20080820: MPSAFE TTY layer integrated OLD_FILES+=usr/include/sys/linedisc.h OLD_FILES+=usr/share/man/man3/posix_openpt.3.gz # 20080725: sgtty.h removed OLD_FILES+=usr/include/sgtty.h # 20080706: bsdlabel(8) removed on powerpc .if ${TARGET_ARCH} == "powerpc" OLD_FILES+=sbin/bsdlabel OLD_FILES+=usr/share/man/man8/bsdlabel.8.gz .endif # 20080704: sbsh(4) removed OLD_FILES+=usr/share/man/man4/if_sbsh.4.gz OLD_FILES+=usr/share/man/man4/sbsh.4.gz # 20080704: cnw(4) removed OLD_FILES+=usr/share/man/man4/if_cnw.4.gz OLD_FILES+=usr/share/man/man4/cnw.4.gz # 20080704: oltr(4) removed .if ${TARGET_ARCH} == "i386" OLD_FILES+=usr/share/man/man4/i386/if_oltr.4.gz OLD_FILES+=usr/share/man/man4/i386/oltr.4.gz .endif # 20080704: arl(4) removed .if ${TARGET_ARCH} == "i386" OLD_FILES+=usr/sbin/arlcontrol OLD_FILES+=usr/share/man/man4/i386/arl.4.gz OLD_FILES+=usr/share/man/man8/arlcontrol.8.gz .endif # 20080703: sunlabel only for sparc64 .if ${TARGET_ARCH} != "sparc64" OLD_FILES+=sbin/sunlabel OLD_FILES+=usr/share/man/man8/sunlabel.8.gz .endif # 20080701: wpa_supplicant.conf moved to share/examples/etc/ OLD_FILES+=usr/share/examples/wpa_supplicant/wpa_supplicant.conf OLD_DIRS+=usr/share/examples/wpa_supplicant # 20080614: pecoff image activator removed .if ${TARGET_ARCH} == "i386" OLD_FILES+=usr/include/machine/pecoff_machdep.h .endif # 20080614: sgtty removed OLD_FILES+=usr/include/sys/ttychars.h OLD_FILES+=usr/include/sys/ttydev.h OLD_FILES+=usr/share/man/man3/gtty.3.gz OLD_FILES+=usr/share/man/man3/stty.3.gz # 20080609: gpt(8) removed OLD_FILES+=sbin/gpt OLD_FILES+=usr/share/man/man8/gpt.8.gz # 20080525: I4B removed OLD_FILES+=etc/isdn/answer OLD_FILES+=etc/isdn/isdntel OLD_FILES+=etc/isdn/record OLD_FILES+=etc/isdn/tell OLD_FILES+=etc/isdn/tell-record OLD_FILES+=etc/isdn/unknown_incoming OLD_FILES+=etc/isdn/holidays.D OLD_FILES+=etc/isdn/isdnd.rates.A OLD_FILES+=etc/isdn/isdnd.rates.D OLD_FILES+=etc/isdn/isdnd.rates.F OLD_FILES+=etc/isdn/isdnd.rates.L OLD_FILES+=etc/isdn/isdnd.rates.UK.BT OLD_FILES+=etc/isdn/isdnd.rc.sample OLD_FILES+=etc/isdn/isdntel.alias.sample OLD_DIRS+=etc/isdn OLD_FILES+=etc/rc.d/isdnd OLD_FILES+=usr/include/i4b/i4b_cause.h OLD_FILES+=usr/include/i4b/i4b_debug.h OLD_FILES+=usr/include/i4b/i4b_ioctl.h OLD_FILES+=usr/include/i4b/i4b_rbch_ioctl.h OLD_FILES+=usr/include/i4b/i4b_tel_ioctl.h OLD_FILES+=usr/include/i4b/i4b_trace.h OLD_DIRS+=usr/include/i4b OLD_FILES+=usr/sbin/dtmfdecode OLD_FILES+=usr/sbin/g711conv OLD_FILES+=usr/sbin/isdnd OLD_FILES+=usr/sbin/isdndebug OLD_FILES+=usr/sbin/isdndecode OLD_FILES+=usr/sbin/isdnmonitor OLD_FILES+=usr/sbin/isdnphone OLD_FILES+=usr/sbin/isdntel OLD_FILES+=usr/sbin/isdntelctl OLD_FILES+=usr/sbin/isdntrace OLD_FILES+=usr/share/isdn/0.al OLD_FILES+=usr/share/isdn/1.al OLD_FILES+=usr/share/isdn/2.al OLD_FILES+=usr/share/isdn/3.al OLD_FILES+=usr/share/isdn/4.al OLD_FILES+=usr/share/isdn/5.al OLD_FILES+=usr/share/isdn/6.al OLD_FILES+=usr/share/isdn/7.al OLD_FILES+=usr/share/isdn/8.al OLD_FILES+=usr/share/isdn/9.al OLD_FILES+=usr/share/isdn/beep.al OLD_FILES+=usr/share/isdn/msg.al OLD_DIRS+=usr/share/isdn OLD_FILES+=usr/share/man/man1/dtmfdecode.1.gz OLD_FILES+=usr/share/man/man1/g711conv.1.gz OLD_FILES+=usr/share/man/man4/i4b.4.gz OLD_FILES+=usr/share/man/man4/i4bcapi.4.gz OLD_FILES+=usr/share/man/man4/i4bctl.4.gz OLD_FILES+=usr/share/man/man4/i4bing.4.gz OLD_FILES+=usr/share/man/man4/i4bipr.4.gz OLD_FILES+=usr/share/man/man4/i4bisppp.4.gz OLD_FILES+=usr/share/man/man4/i4bq921.4.gz OLD_FILES+=usr/share/man/man4/i4bq931.4.gz OLD_FILES+=usr/share/man/man4/i4brbch.4.gz OLD_FILES+=usr/share/man/man4/i4btel.4.gz OLD_FILES+=usr/share/man/man4/i4btrc.4.gz OLD_FILES+=usr/share/man/man4/iavc.4.gz OLD_FILES+=usr/share/man/man4/isic.4.gz OLD_FILES+=usr/share/man/man4/ifpi.4.gz OLD_FILES+=usr/share/man/man4/ifpi2.4.gz OLD_FILES+=usr/share/man/man4/ifpnp.4.gz OLD_FILES+=usr/share/man/man4/ihfc.4.gz OLD_FILES+=usr/share/man/man4/itjc.4.gz OLD_FILES+=usr/share/man/man4/iwic.4.gz OLD_FILES+=usr/share/man/man5/isdnd.rc.5.gz OLD_FILES+=usr/share/man/man5/isdnd.rates.5.gz OLD_FILES+=usr/share/man/man5/isdnd.acct.5.gz OLD_FILES+=usr/share/man/man8/isdnd.8.gz OLD_FILES+=usr/share/man/man8/isdndebug.8.gz OLD_FILES+=usr/share/man/man8/isdndecode.8.gz OLD_FILES+=usr/share/man/man8/isdnmonitor.8.gz OLD_FILES+=usr/share/man/man8/isdnphone.8.gz OLD_FILES+=usr/share/man/man8/isdntel.8.gz OLD_FILES+=usr/share/man/man8/isdntelctl.8.gz OLD_FILES+=usr/share/man/man8/isdntrace.8.gz OLD_FILES+=usr/share/examples/isdn/contrib/README OLD_FILES+=usr/share/examples/isdn/contrib/anleitung.ppp OLD_FILES+=usr/share/examples/isdn/contrib/answer.c OLD_FILES+=usr/share/examples/isdn/contrib/answer.sh OLD_FILES+=usr/share/examples/isdn/contrib/convert.sh OLD_FILES+=usr/share/examples/isdn/contrib/hplay.c OLD_FILES+=usr/share/examples/isdn/contrib/i4b-ppp-newbie.txt OLD_FILES+=usr/share/examples/isdn/contrib/isdnctl OLD_FILES+=usr/share/examples/isdn/contrib/isdnd_acct OLD_FILES+=usr/share/examples/isdn/contrib/isdnd_acct.pl OLD_FILES+=usr/share/examples/isdn/contrib/isdntelmux.c OLD_FILES+=usr/share/examples/isdn/contrib/mrtg-isp0.sh OLD_FILES+=usr/share/examples/isdn/i4brunppp/Makefile OLD_FILES+=usr/share/examples/isdn/i4brunppp/README OLD_FILES+=usr/share/examples/isdn/i4brunppp/i4brunppp-isdnd.rc OLD_FILES+=usr/share/examples/isdn/i4brunppp/i4brunppp.8 OLD_FILES+=usr/share/examples/isdn/i4brunppp/i4brunppp.c OLD_FILES+=usr/share/examples/isdn/v21/Makefile OLD_FILES+=usr/share/examples/isdn/v21/README OLD_FILES+=usr/share/examples/isdn/v21/v21modem.c OLD_FILES+=usr/share/examples/isdn/FAQ OLD_FILES+=usr/share/examples/isdn/KERNEL OLD_FILES+=usr/share/examples/isdn/Overview OLD_FILES+=usr/share/examples/isdn/README OLD_FILES+=usr/share/examples/isdn/ROADMAP OLD_FILES+=usr/share/examples/isdn/ReleaseNotes OLD_FILES+=usr/share/examples/isdn/Resources OLD_FILES+=usr/share/examples/isdn/SupportedCards OLD_FILES+=usr/share/examples/isdn/ThankYou OLD_DIRS+=usr/share/examples/isdn/contrib OLD_DIRS+=usr/share/examples/isdn/i4brunppp OLD_DIRS+=usr/share/examples/isdn/v21 OLD_DIRS+=usr/share/examples/isdn OLD_FILES+=usr/share/examples/ppp/isdnd.rc OLD_FILES+=usr/share/examples/ppp/ppp.conf.isdn # 20080525: ng_atmpif removed OLD_FILES+=usr/include/netgraph/atm/ng_atmpif.h OLD_FILES+=usr/share/man/man4/ng_atmpif.4.gz # 20080522: pmap_addr_hint removed OLD_FILES+=usr/share/man/man9/pmap_addr_hint.9.gz # 20080517: ipsec_osdep.h removed OLD_FILES+=usr/include/netipsec/ipsec_osdep.h # 20080507: heimdal 1.1 import OLD_LIBS+=usr/lib/libasn1.so.9 OLD_LIBS+=usr/lib/libgssapi.so.9 OLD_LIBS+=usr/lib/libgssapi_krb5.so.9 OLD_LIBS+=usr/lib/libhdb.so.9 OLD_LIBS+=usr/lib/libkadm5clnt.so.9 OLD_LIBS+=usr/lib/libkadm5srv.so.9 OLD_LIBS+=usr/lib/libkafs5.so.9 OLD_LIBS+=usr/lib/libkrb5.so.9 OLD_LIBS+=usr/lib/libroken.so.9 OLD_LIBS+=usr/lib32/libgssapi.so.9 # 20080420: Symbol card support dropped OLD_FILES+=usr/include/dev/wi/spectrum24t_cf.h # 20080420: awi removal OLD_FILES+=usr/share/man/man4/awi.4.gz OLD_FILES+=usr/share/man/man4/if_awi.4.gz # 20080331: pkg_sign has been removed OLD_FILES+=usr/sbin/pkg_check OLD_FILES+=usr/sbin/pkg_sign OLD_FILES+=usr/share/man/man1/pkg_check.1.gz OLD_FILES+=usr/share/man/man1/pkg_sign.1.gz # 20080325: tzdata2008b import OLD_FILES+=usr/share/zoneinfo/Asia/Calcutta OLD_FILES+=usr/share/zoneinfo/Asia/Saigon # 20080314: stack_print(9) mlink fixed OLD_FILES+=usr/share/man/man9/stack_printf.9.gz # 20080312: libkse removal OLD_FILES+=usr/include/sys/kse.h OLD_FILES+=usr/lib/libkse.so OLD_LIBS+=usr/lib/libkse.so.3 OLD_FILES+=usr/share/man/man2/kse.2.gz OLD_FILES+=usr/share/man/man2/kse_create.2.gz OLD_FILES+=usr/share/man/man2/kse_exit.2.gz OLD_FILES+=usr/share/man/man2/kse_release.2.gz OLD_FILES+=usr/share/man/man2/kse_switchin.2.gz OLD_FILES+=usr/share/man/man2/kse_thr_interrupt.2.gz OLD_FILES+=usr/share/man/man2/kse_wakeup.2.gz OLD_FILES+=usr/lib32/libkse.so OLD_LIBS+=usr/lib32/libkse.so.3 # 20080225: bsdar/bsdranlib rename to ar/ranlib OLD_FILES+=usr/bin/bsdar OLD_FILES+=usr/bin/bsdranlib OLD_FILES+=usr/share/man/man1/bsdar.1.gz OLD_FILES+=usr/share/man/man1/bsdranlib.1.gz # 20080220: geom_lvm rename to geom_linux_lvm OLD_FILES+=usr/share/man/man4/geom_lvm.4.gz # 20080126: oldcard.4 removal OLD_FILES+=usr/share/man/man4/card.4.gz OLD_FILES+=usr/share/man/man4/oldcard.4.gz # 20080122: Removed from the tree OLD_FILES+=usr/share/man/man9/BUF_REFCNT.9.gz # 20080108: Moved to section 2 OLD_FILES+=usr/share/man/man3/shm_open.3.gz OLD_FILES+=usr/share/man/man3/shm_unlink.3.gz # 20071207: Merged with fortunes-o.real OLD_FILES+=usr/share/games/fortune/fortunes2-o OLD_FILES+=usr/share/games/fortune/fortunes2-o.dat # 20071201: Removal of XRPU driver OLD_FILES+=usr/include/sys/xrpuio.h # 20071129: Disabled static versions of libkse by default OLD_FILES+=usr/lib/libkse.a OLD_FILES+=usr/lib/libkse_p.a OLD_FILES+=usr/lib/libkse_pic.a OLD_FILES+=usr/lib32/libkse.a OLD_FILES+=usr/lib32/libkse_p.a OLD_FILES+=usr/lib32/libkse_pic.a # 20071129: Removed a Solaris compatibility header OLD_FILES+=usr/include/sys/_elf_solaris.h # 20071125: Renamed to pmc_get_msr() OLD_FILES+=usr/share/man/man3/pmc_x86_get_msr.3.gz # 20071108: Removed very crunch OLDCARD support file OLD_FILES+=etc/defaults/pccard.conf # 20071025: rc.d/nfslocking superseded by rc.d/lockd and rc.d/statd OLD_FILES+=etc/rc.d/nfslocking # 20070930: rename of cached to nscd OLD_FILES+=etc/cached.conf OLD_FILES+=etc/rc.d/cached OLD_FILES+=usr/sbin/cached OLD_FILES+=usr/share/man/man5/cached.conf.5.gz OLD_FILES+=usr/share/man/man8/cached.8.gz # 20070807: removal of PowerPC specific header file. .if ${TARGET_ARCH} == "powerpc" OLD_FILES+=usr/include/machine/interruptvar.h .endif # 20070801: fast_ipsec.4 gone OLD_FILES+=usr/share/man/man4/fast_ipsec.4.gz # 20070715: netatm temporarily disconnected (removed 20080525) OLD_FILES+=rescue/atm OLD_FILES+=rescue/fore_dnld OLD_FILES+=rescue/ilmid OLD_FILES+=sbin/atm OLD_FILES+=sbin/fore_dnld OLD_FILES+=sbin/ilmid OLD_FILES+=usr/include/libatm.h OLD_FILES+=usr/include/netatm/atm.h OLD_FILES+=usr/include/netatm/atm_cm.h OLD_FILES+=usr/include/netatm/atm_if.h OLD_FILES+=usr/include/netatm/atm_ioctl.h OLD_FILES+=usr/include/netatm/atm_pcb.h OLD_FILES+=usr/include/netatm/atm_sap.h OLD_FILES+=usr/include/netatm/atm_sigmgr.h OLD_FILES+=usr/include/netatm/atm_stack.h OLD_FILES+=usr/include/netatm/atm_sys.h OLD_FILES+=usr/include/netatm/atm_var.h OLD_FILES+=usr/include/netatm/atm_vc.h OLD_FILES+=usr/include/netatm/ipatm/ipatm.h OLD_FILES+=usr/include/netatm/ipatm/ipatm_serv.h OLD_FILES+=usr/include/netatm/ipatm/ipatm_var.h OLD_FILES+=usr/include/netatm/port.h OLD_FILES+=usr/include/netatm/queue.h OLD_FILES+=usr/include/netatm/sigpvc/sigpvc_var.h OLD_FILES+=usr/include/netatm/spans/spans_cls.h OLD_FILES+=usr/include/netatm/spans/spans_kxdr.h OLD_FILES+=usr/include/netatm/spans/spans_var.h OLD_FILES+=usr/include/netatm/uni/sscf_uni.h OLD_FILES+=usr/include/netatm/uni/sscf_uni_var.h OLD_FILES+=usr/include/netatm/uni/sscop.h OLD_FILES+=usr/include/netatm/uni/sscop_misc.h OLD_FILES+=usr/include/netatm/uni/sscop_pdu.h OLD_FILES+=usr/include/netatm/uni/sscop_var.h OLD_FILES+=usr/include/netatm/uni/uni.h OLD_FILES+=usr/include/netatm/uni/uniip_var.h OLD_FILES+=usr/include/netatm/uni/unisig.h OLD_FILES+=usr/include/netatm/uni/unisig_decode.h OLD_FILES+=usr/include/netatm/uni/unisig_mbuf.h OLD_FILES+=usr/include/netatm/uni/unisig_msg.h OLD_FILES+=usr/include/netatm/uni/unisig_print.h OLD_FILES+=usr/include/netatm/uni/unisig_var.h OLD_FILES+=usr/lib/libatm.a OLD_FILES+=usr/lib/libatm_p.a OLD_FILES+=usr/sbin/atmarpd OLD_FILES+=usr/sbin/scspd OLD_FILES+=usr/share/man/en.ISO8859-1/man8/atm.8.gz OLD_FILES+=usr/share/man/en.ISO8859-1/man8/atmarpd.8.gz OLD_FILES+=usr/share/man/en.ISO8859-1/man8/fore_dnld.8.gz OLD_FILES+=usr/share/man/en.ISO8859-1/man8/ilmid.8.gz OLD_FILES+=usr/share/man/en.ISO8859-1/man8/scspd.8.gz OLD_FILES+=usr/share/man/man8/atm.8.gz OLD_FILES+=usr/share/man/man8/atmarpd.8.gz OLD_FILES+=usr/share/man/man8/fore_dnld.8.gz OLD_FILES+=usr/share/man/man8/ilmid.8.gz OLD_FILES+=usr/share/man/man8/scspd.8.gz OLD_FILES+=usr/share/examples/atm/NOTES OLD_FILES+=usr/share/examples/atm/README OLD_FILES+=usr/share/examples/atm/Startup OLD_FILES+=usr/share/examples/atm/atm-config.sh OLD_FILES+=usr/share/examples/atm/atm-sockets.txt OLD_FILES+=usr/share/examples/atm/cpcs-design.txt OLD_FILES+=usr/share/examples/atm/fore-microcode.txt OLD_FILES+=usr/share/examples/atm/sscf-design.txt OLD_FILES+=usr/share/examples/atm/sscop-design.txt OLD_LIBS+=lib/libatm.so.5 OLD_LIBS+=usr/lib/libatm.so OLD_DIRS+=usr/include/netatm/sigpvc OLD_DIRS+=usr/include/netatm/spans OLD_DIRS+=usr/include/netatm/ipatm OLD_DIRS+=usr/include/netatm/uni OLD_DIRS+=usr/include/netatm OLD_DIRS+=usr/share/examples/atm OLD_FILES+=usr/lib32/libatm.a OLD_FILES+=usr/lib32/libatm.so OLD_LIBS+=usr/lib32/libatm.so.5 OLD_FILES+=usr/lib32/libatm_p.a # 20070705: I4B headers repo-copied to include/i4b/ .if ${TARGET_ARCH} == "i386" OLD_FILES+=usr/include/machine/i4b_cause.h OLD_FILES+=usr/include/machine/i4b_debug.h OLD_FILES+=usr/include/machine/i4b_ioctl.h OLD_FILES+=usr/include/machine/i4b_rbch_ioctl.h OLD_FILES+=usr/include/machine/i4b_tel_ioctl.h OLD_FILES+=usr/include/machine/i4b_trace.h .endif # 20070703: pf 4.1 import OLD_FILES+=usr/libexec/ftp-proxy # 20070701: KAME IPSec removal OLD_FILES+=usr/include/netinet6/ah.h OLD_FILES+=usr/include/netinet6/ah6.h OLD_FILES+=usr/include/netinet6/ah_aesxcbcmac.h OLD_FILES+=usr/include/netinet6/esp.h OLD_FILES+=usr/include/netinet6/esp6.h OLD_FILES+=usr/include/netinet6/esp_aesctr.h OLD_FILES+=usr/include/netinet6/esp_camellia.h OLD_FILES+=usr/include/netinet6/esp_rijndael.h OLD_FILES+=usr/include/netinet6/ipsec.h OLD_FILES+=usr/include/netinet6/ipsec6.h OLD_FILES+=usr/include/netinet6/ipcomp.h OLD_FILES+=usr/include/netinet6/ipcomp6.h OLD_FILES+=usr/include/netkey/key.h OLD_FILES+=usr/include/netkey/key_debug.h OLD_FILES+=usr/include/netkey/key_var.h OLD_FILES+=usr/include/netkey/keydb.h OLD_FILES+=usr/include/netkey/keysock.h OLD_DIRS+=usr/include/netkey # 20070701: remove wicontrol OLD_FILES+=usr/sbin/wicontrol OLD_FILES+=usr/share/man/man8/wicontrol.8.gz # 20070625: umapfs removal OLD_FILES+=rescue/mount_umapfs OLD_FILES+=sbin/mount_umapfs OLD_FILES+=usr/include/fs/umapfs/umap.h OLD_FILES+=usr/share/man/man8/mount_umapfs.8.gz OLD_DIRS+=usr/include/fs/umapfs # 20070618: Removal of the PROTO.localhost* files OLD_FILES+=etc/namedb/PROTO.localhost-v6.rev OLD_FILES+=etc/namedb/PROTO.localhost.rev OLD_FILES+=etc/namedb/make-localhost # 20070618: shared library version bump OLD_LIBS+=lib/libalias.so.5 OLD_LIBS+=lib/libbsnmp.so.3 OLD_LIBS+=lib/libncurses.so.6 OLD_LIBS+=lib/libncursesw.so.6 OLD_LIBS+=lib/libreadline.so.6 OLD_LIBS+=usr/lib/libdialog.so.5 OLD_LIBS+=usr/lib/libgnuregex.so.3 OLD_LIBS+=usr/lib/libhistory.so.6 OLD_LIBS+=usr/lib/libpam.so.3 OLD_LIBS+=usr/lib/libssh.so.3 OLD_LIBS+=usr/lib/pam_chroot.so.3 OLD_LIBS+=usr/lib/pam_deny.so.3 OLD_LIBS+=usr/lib/pam_echo.so.3 OLD_LIBS+=usr/lib/pam_exec.so.3 OLD_LIBS+=usr/lib/pam_ftpusers.so.3 OLD_LIBS+=usr/lib/pam_group.so.3 OLD_LIBS+=usr/lib/pam_guest.so.3 OLD_LIBS+=usr/lib/pam_krb5.so.3 OLD_LIBS+=usr/lib/pam_ksu.so.3 OLD_LIBS+=usr/lib/pam_lastlog.so.3 OLD_LIBS+=usr/lib/pam_login_access.so.3 OLD_LIBS+=usr/lib/pam_nologin.so.3 OLD_LIBS+=usr/lib/pam_opie.so.3 OLD_LIBS+=usr/lib/pam_opieaccess.so.3 OLD_LIBS+=usr/lib/pam_passwdqc.so.3 OLD_LIBS+=usr/lib/pam_permit.so.3 OLD_LIBS+=usr/lib/pam_radius.so.3 OLD_LIBS+=usr/lib/pam_rhosts.so.3 OLD_LIBS+=usr/lib/pam_rootok.so.3 OLD_LIBS+=usr/lib/pam_securetty.so.3 OLD_LIBS+=usr/lib/pam_self.so.3 OLD_LIBS+=usr/lib/pam_ssh.so.3 OLD_LIBS+=usr/lib/pam_tacplus.so.3 OLD_LIBS+=usr/lib/pam_unix.so.3 OLD_LIBS+=usr/lib/snmp_atm.so.4 OLD_LIBS+=usr/lib/snmp_bridge.so.4 OLD_LIBS+=usr/lib/snmp_hostres.so.4 OLD_LIBS+=usr/lib/snmp_mibII.so.4 OLD_LIBS+=usr/lib/snmp_netgraph.so.4 OLD_LIBS+=usr/lib/snmp_pf.so.4 OLD_LIBS+=usr/lib32/libalias.so.5 OLD_LIBS+=usr/lib32/libbsnmp.so.3 OLD_LIBS+=usr/lib32/libdialog.so.5 OLD_LIBS+=usr/lib32/libgnuregex.so.3 OLD_LIBS+=usr/lib32/libhistory.so.6 OLD_LIBS+=usr/lib32/libncurses.so.6 OLD_LIBS+=usr/lib32/libncursesw.so.6 OLD_LIBS+=usr/lib32/libpam.so.3 OLD_LIBS+=usr/lib32/libreadline.so.6 OLD_LIBS+=usr/lib32/libssh.so.3 OLD_LIBS+=usr/lib32/pam_chroot.so.3 OLD_LIBS+=usr/lib32/pam_deny.so.3 OLD_LIBS+=usr/lib32/pam_echo.so.3 OLD_LIBS+=usr/lib32/pam_exec.so.3 OLD_LIBS+=usr/lib32/pam_ftpusers.so.3 OLD_LIBS+=usr/lib32/pam_group.so.3 OLD_LIBS+=usr/lib32/pam_guest.so.3 OLD_LIBS+=usr/lib32/pam_krb5.so.3 OLD_LIBS+=usr/lib32/pam_ksu.so.3 OLD_LIBS+=usr/lib32/pam_lastlog.so.3 OLD_LIBS+=usr/lib32/pam_login_access.so.3 OLD_LIBS+=usr/lib32/pam_nologin.so.3 OLD_LIBS+=usr/lib32/pam_opie.so.3 OLD_LIBS+=usr/lib32/pam_opieaccess.so.3 OLD_LIBS+=usr/lib32/pam_passwdqc.so.3 OLD_LIBS+=usr/lib32/pam_permit.so.3 OLD_LIBS+=usr/lib32/pam_radius.so.3 OLD_LIBS+=usr/lib32/pam_rhosts.so.3 OLD_LIBS+=usr/lib32/pam_rootok.so.3 OLD_LIBS+=usr/lib32/pam_securetty.so.3 OLD_LIBS+=usr/lib32/pam_self.so.3 OLD_LIBS+=usr/lib32/pam_ssh.so.3 OLD_LIBS+=usr/lib32/pam_tacplus.so.3 OLD_LIBS+=usr/lib32/pam_unix.so.3 # 20070613: IPX over IP tunnel removal OLD_FILES+=usr/include/netipx/ipx_ip.h # 20070605: sched_core removal OLD_FILES+=usr/share/man/man4/sched_core.4.gz # 20070603: BIND 9.4.1 import OLD_LIBS+=usr/lib/liblwres.so.10 # 20070521: shared library version bump OLD_LIBS+=lib/libatm.so.4 OLD_LIBS+=lib/libbegemot.so.2 OLD_LIBS+=lib/libbsdxml.so.2 OLD_LIBS+=lib/libcam.so.3 OLD_LIBS+=lib/libcrypt.so.3 OLD_LIBS+=lib/libdevstat.so.5 OLD_LIBS+=lib/libedit.so.5 OLD_LIBS+=lib/libgeom.so.3 OLD_LIBS+=lib/libipsec.so.2 OLD_LIBS+=lib/libipx.so.3 OLD_LIBS+=lib/libkiconv.so.2 OLD_LIBS+=lib/libkse.so.2 OLD_LIBS+=lib/libkvm.so.3 OLD_LIBS+=lib/libm.so.4 OLD_LIBS+=lib/libmd.so.3 OLD_LIBS+=lib/libpcap.so.4 OLD_LIBS+=lib/libpthread.so.2 OLD_LIBS+=lib/libsbuf.so.3 OLD_LIBS+=lib/libthr.so.2 OLD_LIBS+=lib/libufs.so.3 OLD_LIBS+=lib/libutil.so.6 OLD_LIBS+=lib/libz.so.3 OLD_LIBS+=usr/lib/libbluetooth.so.2 OLD_LIBS+=usr/lib/libbsm.so.1 OLD_LIBS+=usr/lib/libbz2.so.2 OLD_LIBS+=usr/lib/libcalendar.so.3 OLD_LIBS+=usr/lib/libcom_err.so.3 OLD_LIBS+=usr/lib/libdevinfo.so.3 OLD_LIBS+=usr/lib/libfetch.so.4 OLD_LIBS+=usr/lib/libform.so.3 OLD_LIBS+=usr/lib/libformw.so.3 OLD_LIBS+=usr/lib/libftpio.so.6 OLD_LIBS+=usr/lib/libgpib.so.1 OLD_LIBS+=usr/lib/libkse.so.2 OLD_LIBS+=usr/lib/libmagic.so.2 OLD_LIBS+=usr/lib/libmemstat.so.1 OLD_LIBS+=usr/lib/libmenu.so.3 OLD_LIBS+=usr/lib/libmenuw.so.3 OLD_LIBS+=usr/lib/libmilter.so.3 OLD_LIBS+=usr/lib/libmp.so.5 OLD_LIBS+=usr/lib/libncp.so.2 OLD_LIBS+=usr/lib/libnetgraph.so.2 OLD_LIBS+=usr/lib/libngatm.so.2 OLD_LIBS+=usr/lib/libopie.so.4 OLD_LIBS+=usr/lib/libpanel.so.3 OLD_LIBS+=usr/lib/libpanelw.so.3 OLD_LIBS+=usr/lib/libpmc.so.3 OLD_LIBS+=usr/lib/libradius.so.2 OLD_LIBS+=usr/lib/librpcsvc.so.3 OLD_LIBS+=usr/lib/libsdp.so.2 OLD_LIBS+=usr/lib/libsmb.so.2 OLD_LIBS+=usr/lib/libstdc++.so.5 OLD_LIBS+=usr/lib/libtacplus.so.2 OLD_LIBS+=usr/lib/libthr.so.2 OLD_LIBS+=usr/lib/libthread_db.so.2 OLD_LIBS+=usr/lib/libugidfw.so.2 OLD_LIBS+=usr/lib/libusbhid.so.2 OLD_LIBS+=usr/lib/libvgl.so.4 OLD_LIBS+=usr/lib/libwrap.so.4 OLD_LIBS+=usr/lib/libypclnt.so.2 OLD_LIBS+=usr/lib/snmp_bridge.so.3 OLD_LIBS+=usr/lib/snmp_hostres.so.3 OLD_LIBS+=usr/lib32/libatm.so.4 OLD_LIBS+=usr/lib32/libbegemot.so.2 OLD_LIBS+=usr/lib32/libbluetooth.so.2 OLD_LIBS+=usr/lib32/libbsdxml.so.2 OLD_LIBS+=usr/lib32/libbsm.so.1 OLD_LIBS+=usr/lib32/libbz2.so.2 OLD_LIBS+=usr/lib32/libcalendar.so.3 OLD_LIBS+=usr/lib32/libcam.so.3 OLD_LIBS+=usr/lib32/libcom_err.so.3 OLD_LIBS+=usr/lib32/libcrypt.so.3 OLD_LIBS+=usr/lib32/libdevinfo.so.3 OLD_LIBS+=usr/lib32/libdevstat.so.5 OLD_LIBS+=usr/lib32/libedit.so.5 OLD_LIBS+=usr/lib32/libfetch.so.4 OLD_LIBS+=usr/lib32/libform.so.3 OLD_LIBS+=usr/lib32/libformw.so.3 OLD_LIBS+=usr/lib32/libftpio.so.6 OLD_LIBS+=usr/lib32/libgeom.so.3 OLD_LIBS+=usr/lib32/libgpib.so.1 OLD_LIBS+=usr/lib32/libipsec.so.2 OLD_LIBS+=usr/lib32/libipx.so.3 OLD_LIBS+=usr/lib32/libkiconv.so.2 OLD_LIBS+=usr/lib32/libkse.so.2 OLD_LIBS+=usr/lib32/libkvm.so.3 OLD_LIBS+=usr/lib32/libm.so.4 OLD_LIBS+=usr/lib32/libmagic.so.2 OLD_LIBS+=usr/lib32/libmd.so.3 OLD_LIBS+=usr/lib32/libmemstat.so.1 OLD_LIBS+=usr/lib32/libmenu.so.3 OLD_LIBS+=usr/lib32/libmenuw.so.3 OLD_LIBS+=usr/lib32/libmilter.so.3 OLD_LIBS+=usr/lib32/libmp.so.5 OLD_LIBS+=usr/lib32/libncp.so.2 OLD_LIBS+=usr/lib32/libnetgraph.so.2 OLD_LIBS+=usr/lib32/libngatm.so.2 OLD_LIBS+=usr/lib32/libopie.so.4 OLD_LIBS+=usr/lib32/libpanel.so.3 OLD_LIBS+=usr/lib32/libpanelw.so.3 OLD_LIBS+=usr/lib32/libpcap.so.4 OLD_LIBS+=usr/lib32/libpmc.so.3 OLD_LIBS+=usr/lib32/libpthread.so.2 OLD_LIBS+=usr/lib32/libradius.so.2 OLD_LIBS+=usr/lib32/librpcsvc.so.3 OLD_LIBS+=usr/lib32/libsbuf.so.3 OLD_LIBS+=usr/lib32/libsdp.so.2 OLD_LIBS+=usr/lib32/libsmb.so.2 OLD_LIBS+=usr/lib32/libstdc++.so.5 OLD_LIBS+=usr/lib32/libtacplus.so.2 OLD_LIBS+=usr/lib32/libthr.so.2 OLD_LIBS+=usr/lib32/libthread_db.so.2 OLD_LIBS+=usr/lib32/libufs.so.3 OLD_LIBS+=usr/lib32/libugidfw.so.2 OLD_LIBS+=usr/lib32/libusbhid.so.2 OLD_LIBS+=usr/lib32/libutil.so.6 OLD_LIBS+=usr/lib32/libvgl.so.4 OLD_LIBS+=usr/lib32/libwrap.so.4 OLD_LIBS+=usr/lib32/libypclnt.so.2 OLD_LIBS+=usr/lib32/libz.so.3 # 20070519: GCC 4.2 OLD_FILES+=usr/bin/f77 OLD_FILES+=usr/bin/protoize OLD_FILES+=usr/include/g2c.h OLD_FILES+=usr/libexec/f771 OLD_FILES+=usr/share/info/g77.info.gz OLD_FILES+=usr/share/man/man1/f77.1.gz OLD_FILES+=usr/include/c++/3.4/algorithm OLD_FILES+=usr/include/c++/3.4/backward/algo.h OLD_FILES+=usr/include/c++/3.4/backward/algobase.h OLD_FILES+=usr/include/c++/3.4/backward/alloc.h OLD_FILES+=usr/include/c++/3.4/backward/backward_warning.h OLD_FILES+=usr/include/c++/3.4/backward/bvector.h OLD_FILES+=usr/include/c++/3.4/backward/complex.h OLD_FILES+=usr/include/c++/3.4/backward/defalloc.h OLD_FILES+=usr/include/c++/3.4/backward/deque.h OLD_FILES+=usr/include/c++/3.4/backward/fstream.h OLD_FILES+=usr/include/c++/3.4/backward/function.h OLD_FILES+=usr/include/c++/3.4/backward/hash_map.h OLD_FILES+=usr/include/c++/3.4/backward/hash_set.h OLD_FILES+=usr/include/c++/3.4/backward/hashtable.h OLD_FILES+=usr/include/c++/3.4/backward/heap.h OLD_FILES+=usr/include/c++/3.4/backward/iomanip.h OLD_FILES+=usr/include/c++/3.4/backward/iostream.h OLD_FILES+=usr/include/c++/3.4/backward/istream.h OLD_FILES+=usr/include/c++/3.4/backward/iterator.h OLD_FILES+=usr/include/c++/3.4/backward/list.h OLD_FILES+=usr/include/c++/3.4/backward/map.h OLD_FILES+=usr/include/c++/3.4/backward/multimap.h OLD_FILES+=usr/include/c++/3.4/backward/multiset.h OLD_FILES+=usr/include/c++/3.4/backward/new.h OLD_FILES+=usr/include/c++/3.4/backward/ostream.h OLD_FILES+=usr/include/c++/3.4/backward/pair.h OLD_FILES+=usr/include/c++/3.4/backward/queue.h OLD_FILES+=usr/include/c++/3.4/backward/rope.h OLD_FILES+=usr/include/c++/3.4/backward/set.h OLD_FILES+=usr/include/c++/3.4/backward/slist.h OLD_FILES+=usr/include/c++/3.4/backward/stack.h OLD_FILES+=usr/include/c++/3.4/backward/stream.h OLD_FILES+=usr/include/c++/3.4/backward/streambuf.h OLD_FILES+=usr/include/c++/3.4/backward/strstream OLD_FILES+=usr/include/c++/3.4/backward/tempbuf.h OLD_FILES+=usr/include/c++/3.4/backward/tree.h OLD_FILES+=usr/include/c++/3.4/backward/vector.h OLD_FILES+=usr/include/c++/3.4/bits/allocator.h OLD_FILES+=usr/include/c++/3.4/bits/atomic_word.h OLD_FILES+=usr/include/c++/3.4/bits/atomicity.h OLD_FILES+=usr/include/c++/3.4/bits/basic_file.h OLD_FILES+=usr/include/c++/3.4/bits/basic_ios.h OLD_FILES+=usr/include/c++/3.4/bits/basic_ios.tcc OLD_FILES+=usr/include/c++/3.4/bits/basic_string.h OLD_FILES+=usr/include/c++/3.4/bits/basic_string.tcc OLD_FILES+=usr/include/c++/3.4/bits/boost_concept_check.h OLD_FILES+=usr/include/c++/3.4/bits/c++allocator.h OLD_FILES+=usr/include/c++/3.4/bits/c++config.h OLD_FILES+=usr/include/c++/3.4/bits/c++io.h OLD_FILES+=usr/include/c++/3.4/bits/c++locale.h OLD_FILES+=usr/include/c++/3.4/bits/c++locale_internal.h OLD_FILES+=usr/include/c++/3.4/bits/char_traits.h OLD_FILES+=usr/include/c++/3.4/bits/cmath.tcc OLD_FILES+=usr/include/c++/3.4/bits/codecvt.h OLD_FILES+=usr/include/c++/3.4/bits/codecvt_specializations.h OLD_FILES+=usr/include/c++/3.4/bits/concept_check.h OLD_FILES+=usr/include/c++/3.4/bits/concurrence.h OLD_FILES+=usr/include/c++/3.4/bits/cpp_type_traits.h OLD_FILES+=usr/include/c++/3.4/bits/ctype_base.h OLD_FILES+=usr/include/c++/3.4/bits/ctype_inline.h OLD_FILES+=usr/include/c++/3.4/bits/ctype_noninline.h OLD_FILES+=usr/include/c++/3.4/bits/deque.tcc OLD_FILES+=usr/include/c++/3.4/bits/fstream.tcc OLD_FILES+=usr/include/c++/3.4/bits/functexcept.h OLD_FILES+=usr/include/c++/3.4/bits/gslice.h OLD_FILES+=usr/include/c++/3.4/bits/gslice_array.h OLD_FILES+=usr/include/c++/3.4/bits/gthr-default.h OLD_FILES+=usr/include/c++/3.4/bits/gthr-posix.h OLD_FILES+=usr/include/c++/3.4/bits/gthr-single.h OLD_FILES+=usr/include/c++/3.4/bits/gthr.h OLD_FILES+=usr/include/c++/3.4/bits/indirect_array.h OLD_FILES+=usr/include/c++/3.4/bits/ios_base.h OLD_FILES+=usr/include/c++/3.4/bits/istream.tcc OLD_FILES+=usr/include/c++/3.4/bits/list.tcc OLD_FILES+=usr/include/c++/3.4/bits/locale_classes.h OLD_FILES+=usr/include/c++/3.4/bits/locale_facets.h OLD_FILES+=usr/include/c++/3.4/bits/locale_facets.tcc OLD_FILES+=usr/include/c++/3.4/bits/localefwd.h OLD_FILES+=usr/include/c++/3.4/bits/mask_array.h OLD_FILES+=usr/include/c++/3.4/bits/messages_members.h OLD_FILES+=usr/include/c++/3.4/bits/os_defines.h OLD_FILES+=usr/include/c++/3.4/bits/ostream.tcc OLD_FILES+=usr/include/c++/3.4/bits/postypes.h OLD_FILES+=usr/include/c++/3.4/bits/slice_array.h OLD_FILES+=usr/include/c++/3.4/bits/sstream.tcc OLD_FILES+=usr/include/c++/3.4/bits/stl_algo.h OLD_FILES+=usr/include/c++/3.4/bits/stl_algobase.h OLD_FILES+=usr/include/c++/3.4/bits/stl_bvector.h OLD_FILES+=usr/include/c++/3.4/bits/stl_construct.h OLD_FILES+=usr/include/c++/3.4/bits/stl_deque.h OLD_FILES+=usr/include/c++/3.4/bits/stl_function.h OLD_FILES+=usr/include/c++/3.4/bits/stl_heap.h OLD_FILES+=usr/include/c++/3.4/bits/stl_iterator.h OLD_FILES+=usr/include/c++/3.4/bits/stl_iterator_base_funcs.h OLD_FILES+=usr/include/c++/3.4/bits/stl_iterator_base_types.h OLD_FILES+=usr/include/c++/3.4/bits/stl_list.h OLD_FILES+=usr/include/c++/3.4/bits/stl_map.h OLD_FILES+=usr/include/c++/3.4/bits/stl_multimap.h OLD_FILES+=usr/include/c++/3.4/bits/stl_multiset.h OLD_FILES+=usr/include/c++/3.4/bits/stl_numeric.h OLD_FILES+=usr/include/c++/3.4/bits/stl_pair.h OLD_FILES+=usr/include/c++/3.4/bits/stl_queue.h OLD_FILES+=usr/include/c++/3.4/bits/stl_raw_storage_iter.h OLD_FILES+=usr/include/c++/3.4/bits/stl_relops.h OLD_FILES+=usr/include/c++/3.4/bits/stl_set.h OLD_FILES+=usr/include/c++/3.4/bits/stl_stack.h OLD_FILES+=usr/include/c++/3.4/bits/stl_tempbuf.h OLD_FILES+=usr/include/c++/3.4/bits/stl_threads.h OLD_FILES+=usr/include/c++/3.4/bits/stl_tree.h OLD_FILES+=usr/include/c++/3.4/bits/stl_uninitialized.h OLD_FILES+=usr/include/c++/3.4/bits/stl_vector.h OLD_FILES+=usr/include/c++/3.4/bits/stream_iterator.h OLD_FILES+=usr/include/c++/3.4/bits/streambuf.tcc OLD_FILES+=usr/include/c++/3.4/bits/streambuf_iterator.h OLD_FILES+=usr/include/c++/3.4/bits/stringfwd.h OLD_FILES+=usr/include/c++/3.4/bits/time_members.h OLD_FILES+=usr/include/c++/3.4/bits/type_traits.h OLD_FILES+=usr/include/c++/3.4/bits/valarray_after.h OLD_FILES+=usr/include/c++/3.4/bits/valarray_array.h OLD_FILES+=usr/include/c++/3.4/bits/valarray_array.tcc OLD_FILES+=usr/include/c++/3.4/bits/valarray_before.h OLD_FILES+=usr/include/c++/3.4/bits/vector.tcc OLD_FILES+=usr/include/c++/3.4/bitset OLD_FILES+=usr/include/c++/3.4/cassert OLD_FILES+=usr/include/c++/3.4/cctype OLD_FILES+=usr/include/c++/3.4/cerrno OLD_FILES+=usr/include/c++/3.4/cfloat OLD_FILES+=usr/include/c++/3.4/ciso646 OLD_FILES+=usr/include/c++/3.4/climits OLD_FILES+=usr/include/c++/3.4/clocale OLD_FILES+=usr/include/c++/3.4/cmath OLD_FILES+=usr/include/c++/3.4/complex OLD_FILES+=usr/include/c++/3.4/csetjmp OLD_FILES+=usr/include/c++/3.4/csignal OLD_FILES+=usr/include/c++/3.4/cstdarg OLD_FILES+=usr/include/c++/3.4/cstddef OLD_FILES+=usr/include/c++/3.4/cstdio OLD_FILES+=usr/include/c++/3.4/cstdlib OLD_FILES+=usr/include/c++/3.4/cstring OLD_FILES+=usr/include/c++/3.4/ctime OLD_FILES+=usr/include/c++/3.4/cwchar OLD_FILES+=usr/include/c++/3.4/cwctype OLD_FILES+=usr/include/c++/3.4/cxxabi.h OLD_FILES+=usr/include/c++/3.4/debug/bitset OLD_FILES+=usr/include/c++/3.4/debug/debug.h OLD_FILES+=usr/include/c++/3.4/debug/deque OLD_FILES+=usr/include/c++/3.4/debug/formatter.h OLD_FILES+=usr/include/c++/3.4/debug/hash_map OLD_FILES+=usr/include/c++/3.4/debug/hash_map.h OLD_FILES+=usr/include/c++/3.4/debug/hash_multimap.h OLD_FILES+=usr/include/c++/3.4/debug/hash_multiset.h OLD_FILES+=usr/include/c++/3.4/debug/hash_set OLD_FILES+=usr/include/c++/3.4/debug/hash_set.h OLD_FILES+=usr/include/c++/3.4/debug/list OLD_FILES+=usr/include/c++/3.4/debug/map OLD_FILES+=usr/include/c++/3.4/debug/map.h OLD_FILES+=usr/include/c++/3.4/debug/multimap.h OLD_FILES+=usr/include/c++/3.4/debug/multiset.h OLD_FILES+=usr/include/c++/3.4/debug/safe_base.h OLD_FILES+=usr/include/c++/3.4/debug/safe_iterator.h OLD_FILES+=usr/include/c++/3.4/debug/safe_iterator.tcc OLD_FILES+=usr/include/c++/3.4/debug/safe_sequence.h OLD_FILES+=usr/include/c++/3.4/debug/set OLD_FILES+=usr/include/c++/3.4/debug/set.h OLD_FILES+=usr/include/c++/3.4/debug/string OLD_FILES+=usr/include/c++/3.4/debug/vector OLD_FILES+=usr/include/c++/3.4/deque OLD_FILES+=usr/include/c++/3.4/exception OLD_FILES+=usr/include/c++/3.4/exception_defines.h OLD_FILES+=usr/include/c++/3.4/ext/algorithm OLD_FILES+=usr/include/c++/3.4/ext/bitmap_allocator.h OLD_FILES+=usr/include/c++/3.4/ext/debug_allocator.h OLD_FILES+=usr/include/c++/3.4/ext/enc_filebuf.h OLD_FILES+=usr/include/c++/3.4/ext/functional OLD_FILES+=usr/include/c++/3.4/ext/hash_fun.h OLD_FILES+=usr/include/c++/3.4/ext/hash_map OLD_FILES+=usr/include/c++/3.4/ext/hash_set OLD_FILES+=usr/include/c++/3.4/ext/hashtable.h OLD_FILES+=usr/include/c++/3.4/ext/iterator OLD_FILES+=usr/include/c++/3.4/ext/malloc_allocator.h OLD_FILES+=usr/include/c++/3.4/ext/memory OLD_FILES+=usr/include/c++/3.4/ext/mt_allocator.h OLD_FILES+=usr/include/c++/3.4/ext/new_allocator.h OLD_FILES+=usr/include/c++/3.4/ext/numeric OLD_FILES+=usr/include/c++/3.4/ext/pod_char_traits.h OLD_FILES+=usr/include/c++/3.4/ext/pool_allocator.h OLD_FILES+=usr/include/c++/3.4/ext/rb_tree OLD_FILES+=usr/include/c++/3.4/ext/rope OLD_FILES+=usr/include/c++/3.4/ext/ropeimpl.h OLD_FILES+=usr/include/c++/3.4/ext/slist OLD_FILES+=usr/include/c++/3.4/ext/stdio_filebuf.h OLD_FILES+=usr/include/c++/3.4/ext/stdio_sync_filebuf.h OLD_FILES+=usr/include/c++/3.4/fstream OLD_FILES+=usr/include/c++/3.4/functional OLD_FILES+=usr/include/c++/3.4/iomanip OLD_FILES+=usr/include/c++/3.4/ios OLD_FILES+=usr/include/c++/3.4/iosfwd OLD_FILES+=usr/include/c++/3.4/iostream OLD_FILES+=usr/include/c++/3.4/istream OLD_FILES+=usr/include/c++/3.4/iterator OLD_FILES+=usr/include/c++/3.4/limits OLD_FILES+=usr/include/c++/3.4/list OLD_FILES+=usr/include/c++/3.4/locale OLD_FILES+=usr/include/c++/3.4/map OLD_FILES+=usr/include/c++/3.4/memory OLD_FILES+=usr/include/c++/3.4/new OLD_FILES+=usr/include/c++/3.4/numeric OLD_FILES+=usr/include/c++/3.4/ostream OLD_FILES+=usr/include/c++/3.4/queue OLD_FILES+=usr/include/c++/3.4/set OLD_FILES+=usr/include/c++/3.4/sstream OLD_FILES+=usr/include/c++/3.4/stack OLD_FILES+=usr/include/c++/3.4/stdexcept OLD_FILES+=usr/include/c++/3.4/streambuf OLD_FILES+=usr/include/c++/3.4/string OLD_FILES+=usr/include/c++/3.4/typeinfo OLD_FILES+=usr/include/c++/3.4/utility OLD_FILES+=usr/include/c++/3.4/valarray OLD_FILES+=usr/include/c++/3.4/vector OLD_DIRS+=usr/include/c++/3.4/backward OLD_DIRS+=usr/include/c++/3.4/bits OLD_DIRS+=usr/include/c++/3.4/debug OLD_DIRS+=usr/include/c++/3.4/ext OLD_DIRS+=usr/include/c++/3.4 # 20070510: zpool/zfs moved to /sbin OLD_FILES+=usr/sbin/zfs OLD_FILES+=usr/sbin/zpool # 20070423: rc.bluetooth (examples) removed OLD_FILES+=usr/share/examples/netgraph/bluetooth/rc.bluetooth OLD_DIRS+=usr/share/examples/netgraph/bluetooth # 20070421: worm.4 removed OLD_FILES+=usr/share/man/man4/worm.4.gz # 20070417: trunk(4) renamed to lagg(4) OLD_FILES+=usr/include/net/if_trunk.h # 20070409: uuidgen moved to /bin/ OLD_FILES+=usr/bin/uuidgen # 20070328: bzip2 1.0.4 OLD_FILES+=usr/share/info/bzip2.info.gz # 20070303: libarchive 2.0 OLD_LIBS+=usr/lib/libarchive.so.3 OLD_LIBS+=usr/lib32/libarchive.so.3 # 20070301: remove addr2ascii and ascii2addr OLD_FILES+=usr/share/man/man3/addr2ascii.3.gz OLD_FILES+=usr/share/man/man3/ascii2addr.3.gz # 20070225: vm_page_unmanage() removed OLD_FILES+=usr/share/man/man9/vm_page_unmanage.9.gz # 20070216: VFS_VPTOFH(9) -> VOP_VPTOFH(9) OLD_FILES+=usr/share/man/man9/VFS_VPTOFH.9.gz # 20070212: kame.4 removed OLD_FILES+=usr/share/man/man4/kame.4.gz # 20070201: remove libmytinfo link OLD_FILES+=usr/lib/libmytinfo.a OLD_FILES+=usr/lib/libmytinfo.so OLD_FILES+=usr/lib/libmytinfo_p.a OLD_FILES+=usr/lib/libmytinfow.a OLD_FILES+=usr/lib/libmytinfow.so OLD_FILES+=usr/lib/libmytinfow_p.a OLD_FILES+=usr/lib32/libmytinfo.a OLD_FILES+=usr/lib32/libmytinfo.so OLD_FILES+=usr/lib32/libmytinfo_p.a OLD_FILES+=usr/lib32/libmytinfow.a OLD_FILES+=usr/lib32/libmytinfow.so OLD_FILES+=usr/lib32/libmytinfow_p.a # 20070128: remove vnconfig OLD_FILES+=usr/sbin/vnconfig # 20070127: remove bpf_compat.h OLD_FILES+=usr/include/net/bpf_compat.h # 20070125: objformat bites the dust OLD_FILES+=usr/bin/objformat OLD_FILES+=usr/share/man/man1/objformat.1.gz OLD_FILES+=usr/include/objformat.h OLD_FILES+=usr/share/man/man3/getobjformat.3.gz # 20061201: remove symlink to *.so.4 libalias modules OLD_FILES+=usr/lib/libalias_cuseeme.so OLD_FILES+=usr/lib/libalias_dummy.so OLD_FILES+=usr/lib/libalias_ftp.so OLD_FILES+=usr/lib/libalias_irc.so OLD_FILES+=usr/lib/libalias_nbt.so OLD_FILES+=usr/lib/libalias_pptp.so OLD_FILES+=usr/lib/libalias_skinny.so OLD_FILES+=usr/lib/libalias_smedia.so # 20061201: remove old *.so.4 libalias modules OLD_FILES+=lib/libalias_cuseeme.so.4 OLD_FILES+=lib/libalias_dummy.so.4 OLD_FILES+=lib/libalias_ftp.so.4 OLD_FILES+=lib/libalias_irc.so.4 OLD_FILES+=lib/libalias_nbt.so.4 OLD_FILES+=lib/libalias_pptp.so.4 OLD_FILES+=lib/libalias_skinny.so.4 OLD_FILES+=lib/libalias_smedia.so.4 # 20061126: remove old man page OLD_FILES+=usr/share/man/man3/archive_read_set_bytes_per_block.3.gz # 20061125: remove old man page OLD_FILES+=usr/share/man/man9/devsw.9.gz # 20061122: remove obsolete mount programs OLD_FILES+=sbin/mount_devfs OLD_FILES+=sbin/mount_ext2fs OLD_FILES+=sbin/mount_fdescfs OLD_FILES+=sbin/mount_linprocfs OLD_FILES+=sbin/mount_procfs OLD_FILES+=sbin/mount_std OLD_FILES+=rescue/mount_devfs OLD_FILES+=rescue/mount_ext2fs OLD_FILES+=rescue/mount_fdescfs OLD_FILES+=rescue/mount_linprocfs OLD_FILES+=rescue/mount_procfs OLD_FILES+=rescue/mount_std OLD_FILES+=usr/share/man/man8/mount_devfs.8.gz OLD_FILES+=usr/share/man/man8/mount_ext2fs.8.gz OLD_FILES+=usr/share/man/man8/mount_fdescfs.8.gz OLD_FILES+=usr/share/man/man8/mount_linprocfs.8.gz OLD_FILES+=usr/share/man/man8/mount_procfs.8.gz OLD_FILES+=usr/share/man/man8/mount_std.8.gz # 20061116: uhidev.4 removed OLD_FILES+=usr/share/man/man4/uhidev.4.gz # 20061106: archive_write_prepare.3 removed OLD_FILES+=usr/share/man/man3/archive_write_prepare.3.gz # 20061018: pccardc removed OLD_FILES+=usr/sbin/pccardc usr/share/man/man8/pccardc.8.gz # 20060930: demangle.h from contrib/libstdc++/include/ext/ OLD_FILES+=usr/include/c++/3.4/ext/demangle.h # 20060929: mrouted removed OLD_FILES+=usr/sbin/map-mbone OLD_FILES+=usr/sbin/mrinfo OLD_FILES+=usr/sbin/mrouted OLD_FILES+=usr/sbin/mtrace OLD_FILES+=usr/share/man/man8/map-mbone.8.gz OLD_FILES+=usr/share/man/man8/mrinfo.8.gz OLD_FILES+=usr/share/man/man8/mrouted.8.gz OLD_FILES+=usr/share/man/man8/mtrace.8.gz # 20060924: tcpslice removed OLD_FILES+=usr/sbin/tcpslice OLD_FILES+=usr/share/man/man1/tcpslice.1.gz # 20060829: kvmdb cleanup script removed OLD_FILES+=etc/periodic/weekly/120.clean-kvmdb # 20060822: ramdisk{,-own} have been replaced by mdconfig{,2} OLD_FILES+=etc/rc.d/ramdisk OLD_FILES+=etc/rc.d/ramdisk-own # 20060729: OpenSSL 0.9.7e -> 0.9.8b upgrade OLD_FILES+=usr/include/openssl/eng_int.h OLD_FILES+=usr/include/openssl/hw_4758_cca_err.h OLD_FILES+=usr/include/openssl/hw_aep_err.h OLD_FILES+=usr/include/openssl/hw_atalla_err.h OLD_FILES+=usr/include/openssl/hw_cswift_err.h OLD_FILES+=usr/include/openssl/hw_ncipher_err.h OLD_FILES+=usr/include/openssl/hw_nuron_err.h OLD_FILES+=usr/include/openssl/hw_sureware_err.h OLD_FILES+=usr/include/openssl/hw_ubsec_err.h # 20060713: mount_linsysfs(8) never existed in 7.x OLD_FILES+=sbin/mount_linsysfs OLD_FILES+=usr/share/man/man8/mount_linsysfs.8.gz # 20060704: KAME compat file net_osdep.h removed OLD_FILES+=usr/include/net/net_osdep.h # 20060605: man page links removed by OpenBSM 1.0 alpha 6 import OLD_FILES+=usr/share/man/man3/au_to_socket.3.gz OLD_FILES+=usr/share/man/man3/au_to_socket_ex_128.3.gz OLD_FILES+=usr/share/man/man3/au_to_socket_ex_32.3.gz # 20060517: pcvt removed OLD_FILES+=usr/share/pcvt/README.FIRST OLD_FILES+=usr/share/pcvt/Etc/xmodmap-german OLD_FILES+=usr/share/pcvt/Etc/pcvt.sh OLD_FILES+=usr/share/pcvt/Etc/pcvt.el OLD_FILES+=usr/share/pcvt/Etc/Terminfo OLD_FILES+=usr/share/pcvt/Etc/Termcap OLD_DIRS+=usr/share/pcvt/Etc OLD_FILES+=usr/share/pcvt/Doc/NotesAndHints OLD_FILES+=usr/share/pcvt/Doc/Keyboard.VT OLD_FILES+=usr/share/pcvt/Doc/Keyboard.HP OLD_FILES+=usr/share/pcvt/Doc/EscapeSequences OLD_FILES+=usr/share/pcvt/Doc/Charsets OLD_FILES+=usr/share/pcvt/Doc/CharGen OLD_FILES+=usr/share/pcvt/Doc/Bibliography OLD_FILES+=usr/share/pcvt/Doc/Acknowledgements OLD_DIRS+=usr/share/pcvt/Doc OLD_DIRS+=usr/share/pcvt OLD_FILES+=usr/share/misc/pcvtfonts/vt220l.816 OLD_FILES+=usr/share/misc/pcvtfonts/vt220l.814 OLD_FILES+=usr/share/misc/pcvtfonts/vt220l.810 OLD_FILES+=usr/share/misc/pcvtfonts/vt220l.808 OLD_FILES+=usr/share/misc/pcvtfonts/vt220h.816 OLD_FILES+=usr/share/misc/pcvtfonts/vt220h.814 OLD_FILES+=usr/share/misc/pcvtfonts/vt220h.810 OLD_FILES+=usr/share/misc/pcvtfonts/vt220h.808 OLD_DIRS+=usr/share/misc/pcvtfonts OLD_FILES+=usr/share/misc/keycap.pcvt OLD_FILES+=usr/share/man/man8/ispcvt.8.gz OLD_FILES+=usr/share/man/man5/keycap.5.gz OLD_FILES+=usr/share/man/man4/pcvt.4.gz OLD_FILES+=usr/share/man/man3/kgetstr.3.gz OLD_FILES+=usr/share/man/man3/kgetnum.3.gz OLD_FILES+=usr/share/man/man3/kgetflag.3.gz OLD_FILES+=usr/share/man/man3/kgetent.3.gz OLD_FILES+=usr/share/man/man3/keycap.3.gz OLD_FILES+=usr/share/man/man1/vt220keys.1.gz OLD_FILES+=usr/share/man/man1/scon.1.gz OLD_FILES+=usr/share/man/man1/loadfont.1.gz OLD_FILES+=usr/share/man/man1/kcon.1.gz OLD_FILES+=usr/share/man/man1/fontedit.1.gz OLD_FILES+=usr/share/man/man1/cursor.1.gz OLD_FILES+=usr/sbin/vt220keys OLD_FILES+=usr/sbin/scon OLD_FILES+=usr/sbin/loadfont OLD_FILES+=usr/sbin/kcon OLD_FILES+=usr/sbin/ispcvt OLD_FILES+=usr/sbin/fontedit OLD_FILES+=usr/sbin/cursor OLD_FILES+=usr/lib/libkeycap_p.a OLD_FILES+=usr/lib/libkeycap.a OLD_FILES+=usr/include/machine/pcvt_ioctl.h # 20060514: lnc(4) replaced by le(4) OLD_FILES+=usr/share/man/man4/i386/lnc.4.gz # 20060512: remove ip6fw OLD_FILES+=etc/periodic/security/600.ip6fwdenied OLD_FILES+=etc/periodic/security/650.ip6fwlimit OLD_FILES+=sbin/ip6fw OLD_FILES+=usr/include/netinet6/ip6_fw.h OLD_FILES+=usr/share/man/man8/ip6fw.8.gz # 20060424: sab(4) removed OLD_FILES+=usr/share/man/man4/sab.4.gz # 20060328: remove redundant rc.d script OLD_FILES+=etc/rc.d/ike # 20060127: revert libdisk to static-only OLD_FILES+=usr/lib/libdisk.so # 20060115: sys/pccard includes cleanup OLD_FILES+=usr/include/pccard/driver.h OLD_FILES+=usr/include/pccard/i82365.h OLD_FILES+=usr/include/pccard/meciareg.h OLD_FILES+=usr/include/pccard/pccard_nbk.h OLD_FILES+=usr/include/pccard/pcic_pci.h OLD_FILES+=usr/include/pccard/pcicvar.h OLD_FILES+=usr/include/pccard/slot.h # 20051215: rescue/nextboot.sh renamed to rescue/nextboot OLD_FILES+=rescue/nextboot.sh # 20051214: usbd(8) removed OLD_FILES+=etc/rc.d/usbd OLD_FILES+=etc/usbd.conf OLD_FILES+=usr/sbin/usbd OLD_FILES+=usr/share/man/man8/usbd.8.gz # 20051029: rc.d/ppp-user renamed to rc.d/ppp for convenience OLD_FILES+=etc/rc.d/ppp-user # 20051012: setkey(8) moved to /sbin/ OLD_FILES+=usr/sbin/setkey # 20050930: pccardd(8) removed OLD_FILES+=usr/sbin/pccardd OLD_FILES+=usr/share/man/man5/pccard.conf.5.gz OLD_FILES+=usr/share/man/man8/pccardd.8.gz # 20050927: bridge(4) replaced by if_bridge(4) OLD_FILES+=usr/include/net/bridge.h # 20050831: not implemented OLD_FILES+=usr/share/man/man3/getino.3.gz OLD_FILES+=usr/share/man/man3/putino.3.gz # 20050825: T/TCP retired several months ago OLD_FILES+=usr/share/man/man4/ttcp.4.gz # 20050805 tn3270 retired long ago OLD_FILES+=usr/share/misc/map3270 # 20050801: too old to be interesting here OLD_FILES+=usr/share/doc/papers/px.ps.gz # 20050721: moved to ports OLD_FILES+=usr/sbin/vttest OLD_FILES+=usr/share/man/man1/vttest.1.gz # 20050617: wpa man pages moved to section 8 OLD_FILES+=usr/share/man/man1/hostapd.1.gz OLD_FILES+=usr/share/man/man1/hostapd_cli.1.gz OLD_FILES+=usr/share/man/man1/wpa_cli.1.gz OLD_FILES+=usr/share/man/man1/wpa_supplicant.1.gz # 20050610: rexecd (insecure by design) OLD_FILES+=etc/pam.d/rexecd OLD_FILES+=usr/share/man/man8/rexecd.8.gz OLD_FILES+=usr/libexec/rexecd # 20050606: OpenBSD dhclient replaces ISC one OLD_FILES+=bin/omshell OLD_FILES+=sbin/omshell OLD_FILES+=usr/share/man/man1/omshell.1.gz OLD_FILES+=usr/share/man/man5/dhcp-eval.5.gz # 200504XX: ipf tools moved from /usr to / OLD_FILES+=rescue/ipfs OLD_FILES+=rescue/ipfstat OLD_FILES+=rescue/ipmon OLD_FILES+=rescue/ipnat OLD_FILES+=usr/sbin/ipftest OLD_FILES+=usr/sbin/ipresend OLD_FILES+=usr/sbin/ipsend OLD_FILES+=usr/sbin/iptest OLD_FILES+=usr/share/man/man1/ipnat.1.gz OLD_FILES+=usr/share/man/man1/ipsend.1.gz OLD_FILES+=usr/share/man/man1/iptest.1.gz OLD_FILES+=usr/share/man/man5/ipsend.5.gz # 200503XX: bsdtar takes over gtar OLD_FILES+=usr/bin/gtar OLD_FILES+=usr/share/man/man1/gtar.1.gz # 200503XX OLD_FILES+=usr/share/man/man3/exp10.3.gz OLD_FILES+=usr/share/man/man3/exp10f.3.gz OLD_FILES+=usr/share/man/man3/fpsetsticky.3.gz # 20050324: updated release infrastructure OLD_FILES+=usr/share/man/man5/drivers.conf.5.gz # 20050317: removed from BIND 9 distribution OLD_FILES+=usr/share/doc/bind9/KNOWN_DEFECTS # 2005XXXX: OLD_FILES+=sbin/mount_autofs OLD_FILES+=usr/lib/libautofs.a OLD_FILES+=usr/lib/libautofs.so OLD_FILES+=usr/share/man/man8/mount_autofs.8.gz # 20050203: Merged with fortunes OLD_FILES+=usr/share/games/fortune/fortunes2 OLD_FILES+=usr/share/games/fortune/fortunes2.dat # 200501XX: OLD_FILES+=usr/libexec/getNAME # 200411XX: gvinum replaces vinum OLD_FILES+=bin/vinum OLD_FILES+=rescue/vinum OLD_FILES+=sbin/vinum OLD_FILES+=usr/share/man/man8/vinum.8.gz # 200411XX: libxpg4 removal OLD_FILES+=usr/lib/libxpg4.a OLD_FILES+=usr/lib/libxpg4.so OLD_FILES+=usr/lib/libxpg4_p.a # 20041109: replaced by em(4) OLD_FILES+=usr/share/man/man4/gx.4.gz OLD_FILES+=usr/share/man/man4/if_gx.4.gz # 20041017: rune interface removed OLD_FILES+=usr/include/rune.h OLD_FILES+=usr/share/man/man3/fgetrune.3.gz OLD_FILES+=usr/share/man/man3/fputrune.3.gz OLD_FILES+=usr/share/man/man3/fungetrune.3.gz OLD_FILES+=usr/share/man/man3/mbrrune.3.gz OLD_FILES+=usr/share/man/man3/mbrune.3.gz OLD_FILES+=usr/share/man/man3/rune.3.gz OLD_FILES+=usr/share/man/man3/setinvalidrune.3.gz OLD_FILES+=usr/share/man/man3/sgetrune.3.gz OLD_FILES+=usr/share/man/man3/sputrune.3.gz # 20040925: bind9 import OLD_FILES+=usr/bin/dnskeygen OLD_FILES+=usr/bin/dnsquery OLD_FILES+=usr/lib/libisc.a OLD_FILES+=usr/lib/libisc.so OLD_FILES+=usr/lib/libisc_p.a OLD_FILES+=usr/libexec/named-xfer OLD_FILES+=usr/sbin/named.restart OLD_FILES+=usr/sbin/ndc OLD_FILES+=usr/sbin/nslookup OLD_FILES+=usr/sbin/nsupdate OLD_FILES+=usr/share/doc/bind/html/acl.html OLD_FILES+=usr/share/doc/bind/html/address_list.html OLD_FILES+=usr/share/doc/bind/html/comments.html OLD_FILES+=usr/share/doc/bind/html/config.html OLD_FILES+=usr/share/doc/bind/html/controls.html OLD_FILES+=usr/share/doc/bind/html/docdef.html OLD_FILES+=usr/share/doc/bind/html/example.html OLD_FILES+=usr/share/doc/bind/html/include.html OLD_FILES+=usr/share/doc/bind/html/index.html OLD_FILES+=usr/share/doc/bind/html/key.html OLD_FILES+=usr/share/doc/bind/html/logging.html OLD_FILES+=usr/share/doc/bind/html/master.html OLD_FILES+=usr/share/doc/bind/html/options.html OLD_FILES+=usr/share/doc/bind/html/server.html OLD_FILES+=usr/share/doc/bind/html/trusted-keys.html OLD_FILES+=usr/share/doc/bind/html/zone.html OLD_FILES+=usr/share/doc/bind/misc/DynamicUpdate OLD_FILES+=usr/share/doc/bind/misc/FAQ.1of2 OLD_FILES+=usr/share/doc/bind/misc/FAQ.2of2 OLD_FILES+=usr/share/doc/bind/misc/rfc2317-notes.txt OLD_FILES+=usr/share/doc/bind/misc/style.txt OLD_FILES+=usr/share/man/man1/dnskeygen.1.gz OLD_FILES+=usr/share/man/man1/dnsquery.1.gz OLD_FILES+=usr/share/man/man8/named-bootconf.8.gz OLD_FILES+=usr/share/man/man8/named-xfer.8.gz OLD_FILES+=usr/share/man/man8/named.restart.8.gz OLD_FILES+=usr/share/man/man8/ndc.8.gz OLD_FILES+=usr/share/man/man8/nslookup.8.gz # 200409XX OLD_FILES+=usr/share/man/man3/ENSURE.3.gz OLD_FILES+=usr/share/man/man3/ENSURE_ERR.3.gz OLD_FILES+=usr/share/man/man3/INSIST.3.gz OLD_FILES+=usr/share/man/man3/INSIST_ERR.3.gz OLD_FILES+=usr/share/man/man3/INVARIANT.3.gz OLD_FILES+=usr/share/man/man3/INVARIANT_ERR.3.gz OLD_FILES+=usr/share/man/man3/REQUIRE.3.gz OLD_FILES+=usr/share/man/man3/REQUIRE_ERR.3.gz OLD_FILES+=usr/share/man/man3/assertion_type_to_text.3.gz OLD_FILES+=usr/share/man/man3/assertions.3.gz OLD_FILES+=usr/share/man/man3/bitncmp.3.gz OLD_FILES+=usr/share/man/man3/evAddTime.3.gz OLD_FILES+=usr/share/man/man3/evCancelConn.3.gz OLD_FILES+=usr/share/man/man3/evCancelRW.3.gz OLD_FILES+=usr/share/man/man3/evClearIdleTimer.3.gz OLD_FILES+=usr/share/man/man3/evClearTimer.3.gz OLD_FILES+=usr/share/man/man3/evCmpTime.3.gz OLD_FILES+=usr/share/man/man3/evConnFunc.3.gz OLD_FILES+=usr/share/man/man3/evConnect.3.gz OLD_FILES+=usr/share/man/man3/evConsIovec.3.gz OLD_FILES+=usr/share/man/man3/evConsTime.3.gz OLD_FILES+=usr/share/man/man3/evCreate.3.gz OLD_FILES+=usr/share/man/man3/evDefer.3.gz OLD_FILES+=usr/share/man/man3/evDeselectFD.3.gz OLD_FILES+=usr/share/man/man3/evDestroy.3.gz OLD_FILES+=usr/share/man/man3/evDispatch.3.gz OLD_FILES+=usr/share/man/man3/evDo.3.gz OLD_FILES+=usr/share/man/man3/evDrop.3.gz OLD_FILES+=usr/share/man/man3/evFileFunc.3.gz OLD_FILES+=usr/share/man/man3/evGetNext.3.gz OLD_FILES+=usr/share/man/man3/evHold.3.gz OLD_FILES+=usr/share/man/man3/evInitID.3.gz OLD_FILES+=usr/share/man/man3/evLastEventTime.3.gz OLD_FILES+=usr/share/man/man3/evListen.3.gz OLD_FILES+=usr/share/man/man3/evMainLoop.3.gz OLD_FILES+=usr/share/man/man3/evNowTime.3.gz OLD_FILES+=usr/share/man/man3/evPrintf.3.gz OLD_FILES+=usr/share/man/man3/evRead.3.gz OLD_FILES+=usr/share/man/man3/evResetTimer.3.gz OLD_FILES+=usr/share/man/man3/evSelectFD.3.gz OLD_FILES+=usr/share/man/man3/evSetDebug.3.gz OLD_FILES+=usr/share/man/man3/evSetIdleTimer.3.gz OLD_FILES+=usr/share/man/man3/evSetTimer.3.gz OLD_FILES+=usr/share/man/man3/evStreamFunc.3.gz OLD_FILES+=usr/share/man/man3/evSubTime.3.gz OLD_FILES+=usr/share/man/man3/evTestID.3.gz OLD_FILES+=usr/share/man/man3/evTimeRW.3.gz OLD_FILES+=usr/share/man/man3/evTimeSpec.3.gz OLD_FILES+=usr/share/man/man3/evTimeVal.3.gz OLD_FILES+=usr/share/man/man3/evTimerFunc.3.gz OLD_FILES+=usr/share/man/man3/evTouchIdleTimer.3.gz OLD_FILES+=usr/share/man/man3/evTryAccept.3.gz OLD_FILES+=usr/share/man/man3/evUnhold.3.gz OLD_FILES+=usr/share/man/man3/evUntimeRW.3.gz OLD_FILES+=usr/share/man/man3/evUnwait.3.gz OLD_FILES+=usr/share/man/man3/evWaitFor.3.gz OLD_FILES+=usr/share/man/man3/evWaitFunc.3.gz OLD_FILES+=usr/share/man/man3/evWrite.3.gz OLD_FILES+=usr/share/man/man3/eventlib.3.gz OLD_FILES+=usr/share/man/man3/heap.3.gz OLD_FILES+=usr/share/man/man3/heap_decreased.3.gz OLD_FILES+=usr/share/man/man3/heap_delete.3.gz OLD_FILES+=usr/share/man/man3/heap_element.3.gz OLD_FILES+=usr/share/man/man3/heap_for_each.3.gz OLD_FILES+=usr/share/man/man3/heap_free.3.gz OLD_FILES+=usr/share/man/man3/heap_increased.3.gz OLD_FILES+=usr/share/man/man3/heap_insert.3.gz OLD_FILES+=usr/share/man/man3/heap_new.3.gz OLD_FILES+=usr/share/man/man3/log_add_channel.3.gz OLD_FILES+=usr/share/man/man3/log_category_is_active.3.gz OLD_FILES+=usr/share/man/man3/log_close_stream.3.gz OLD_FILES+=usr/share/man/man3/log_dec_references.3.gz OLD_FILES+=usr/share/man/man3/log_free_channel.3.gz OLD_FILES+=usr/share/man/man3/log_free_context.3.gz OLD_FILES+=usr/share/man/man3/log_get_filename.3.gz OLD_FILES+=usr/share/man/man3/log_get_stream.3.gz OLD_FILES+=usr/share/man/man3/log_inc_references.3.gz OLD_FILES+=usr/share/man/man3/log_new_context.3.gz OLD_FILES+=usr/share/man/man3/log_new_file_channel.3.gz OLD_FILES+=usr/share/man/man3/log_new_null_channel.3.gz OLD_FILES+=usr/share/man/man3/log_new_syslog_channel.3.gz OLD_FILES+=usr/share/man/man3/log_open_stream.3.gz OLD_FILES+=usr/share/man/man3/log_option.3.gz OLD_FILES+=usr/share/man/man3/log_remove_channel.3.gz OLD_FILES+=usr/share/man/man3/log_set_file_owner.3.gz OLD_FILES+=usr/share/man/man3/log_vwrite.3.gz OLD_FILES+=usr/share/man/man3/log_write.3.gz OLD_FILES+=usr/share/man/man3/logging.3.gz OLD_FILES+=usr/share/man/man3/memcluster.3.gz OLD_FILES+=usr/share/man/man3/memget.3.gz OLD_FILES+=usr/share/man/man3/memput.3.gz OLD_FILES+=usr/share/man/man3/memstats.3.gz OLD_FILES+=usr/share/man/man3/set_assertion_failure_callback.3. OLD_FILES+=usr/share/man/man3/sigwait.3.gz OLD_FILES+=usr/share/man/man3/tree_add.3.gz OLD_FILES+=usr/share/man/man3/tree_delete.3.gz OLD_FILES+=usr/share/man/man3/tree_init.3.gz OLD_FILES+=usr/share/man/man3/tree_mung.3.gz OLD_FILES+=usr/share/man/man3/tree_srch.3.gz OLD_FILES+=usr/share/man/man3/tree_trav.3.gz # 2004XXYY: OS internal libs, no ports use them, no need to use OLD_LIBS OLD_FILES+=lib/geom/geom_concat.so.1 OLD_FILES+=lib/geom/geom_label.so.1 OLD_FILES+=lib/geom/geom_nop.so.1 OLD_FILES+=lib/geom/geom_stripe.so.1 # 20040728: GCC 3.4.2 OLD_DIRS+=usr/include/c++/3.3 OLD_FILES+=usr/include/c++/3.3/FlexLexer.h OLD_FILES+=usr/include/c++/3.3/algorithm OLD_FILES+=usr/include/c++/3.3/backward/algo.h OLD_FILES+=usr/include/c++/3.3/backward/algobase.h OLD_FILES+=usr/include/c++/3.3/backward/alloc.h OLD_FILES+=usr/include/c++/3.3/backward/backward_warning.h OLD_FILES+=usr/include/c++/3.3/backward/bvector.h OLD_FILES+=usr/include/c++/3.3/backward/complex.h OLD_FILES+=usr/include/c++/3.3/backward/defalloc.h OLD_FILES+=usr/include/c++/3.3/backward/deque.h OLD_FILES+=usr/include/c++/3.3/backward/fstream.h OLD_FILES+=usr/include/c++/3.3/backward/function.h OLD_FILES+=usr/include/c++/3.3/backward/hash_map.h OLD_FILES+=usr/include/c++/3.3/backward/hash_set.h OLD_FILES+=usr/include/c++/3.3/backward/hashtable.h OLD_FILES+=usr/include/c++/3.3/backward/heap.h OLD_FILES+=usr/include/c++/3.3/backward/iomanip.h OLD_FILES+=usr/include/c++/3.3/backward/iostream.h OLD_FILES+=usr/include/c++/3.3/backward/istream.h OLD_FILES+=usr/include/c++/3.3/backward/iterator.h OLD_FILES+=usr/include/c++/3.3/backward/list.h OLD_FILES+=usr/include/c++/3.3/backward/map.h OLD_FILES+=usr/include/c++/3.3/backward/multimap.h OLD_FILES+=usr/include/c++/3.3/backward/multiset.h OLD_FILES+=usr/include/c++/3.3/backward/new.h OLD_FILES+=usr/include/c++/3.3/backward/ostream.h OLD_FILES+=usr/include/c++/3.3/backward/pair.h OLD_FILES+=usr/include/c++/3.3/backward/queue.h OLD_FILES+=usr/include/c++/3.3/backward/rope.h OLD_FILES+=usr/include/c++/3.3/backward/set.h OLD_FILES+=usr/include/c++/3.3/backward/slist.h OLD_FILES+=usr/include/c++/3.3/backward/stack.h OLD_FILES+=usr/include/c++/3.3/backward/stream.h OLD_FILES+=usr/include/c++/3.3/backward/streambuf.h OLD_FILES+=usr/include/c++/3.3/backward/strstream OLD_FILES+=usr/include/c++/3.3/backward/strstream.h OLD_FILES+=usr/include/c++/3.3/backward/tempbuf.h OLD_FILES+=usr/include/c++/3.3/backward/tree.h OLD_FILES+=usr/include/c++/3.3/backward/vector.h OLD_DIRS+=usr/include/c++/3.3/backward OLD_FILES+=usr/include/c++/3.3/bits/atomicity.h OLD_FILES+=usr/include/c++/3.3/bits/basic_file.h OLD_FILES+=usr/include/c++/3.3/bits/basic_ios.h OLD_FILES+=usr/include/c++/3.3/bits/basic_ios.tcc OLD_FILES+=usr/include/c++/3.3/bits/basic_string.h OLD_FILES+=usr/include/c++/3.3/bits/basic_string.tcc OLD_FILES+=usr/include/c++/3.3/bits/boost_concept_check.h OLD_FILES+=usr/include/c++/3.3/bits/c++config.h OLD_FILES+=usr/include/c++/3.3/bits/c++io.h OLD_FILES+=usr/include/c++/3.3/bits/c++locale.h OLD_FILES+=usr/include/c++/3.3/bits/c++locale_internal.h OLD_FILES+=usr/include/c++/3.3/bits/char_traits.h OLD_FILES+=usr/include/c++/3.3/bits/cmath.tcc OLD_FILES+=usr/include/c++/3.3/bits/codecvt.h OLD_FILES+=usr/include/c++/3.3/bits/codecvt_specializations.h OLD_FILES+=usr/include/c++/3.3/bits/concept_check.h OLD_FILES+=usr/include/c++/3.3/bits/cpp_type_traits.h OLD_FILES+=usr/include/c++/3.3/bits/ctype_base.h OLD_FILES+=usr/include/c++/3.3/bits/ctype_inline.h OLD_FILES+=usr/include/c++/3.3/bits/ctype_noninline.h OLD_FILES+=usr/include/c++/3.3/bits/deque.tcc OLD_FILES+=usr/include/c++/3.3/bits/fpos.h OLD_FILES+=usr/include/c++/3.3/bits/fstream.tcc OLD_FILES+=usr/include/c++/3.3/bits/functexcept.h OLD_FILES+=usr/include/c++/3.3/bits/generic_shadow.h OLD_FILES+=usr/include/c++/3.3/bits/gslice.h OLD_FILES+=usr/include/c++/3.3/bits/gslice_array.h OLD_FILES+=usr/include/c++/3.3/bits/gthr-default.h OLD_FILES+=usr/include/c++/3.3/bits/gthr-posix.h OLD_FILES+=usr/include/c++/3.3/bits/gthr-single.h OLD_FILES+=usr/include/c++/3.3/bits/gthr.h OLD_FILES+=usr/include/c++/3.3/bits/indirect_array.h OLD_FILES+=usr/include/c++/3.3/bits/ios_base.h OLD_FILES+=usr/include/c++/3.3/bits/istream.tcc OLD_FILES+=usr/include/c++/3.3/bits/list.tcc OLD_FILES+=usr/include/c++/3.3/bits/locale_classes.h OLD_FILES+=usr/include/c++/3.3/bits/locale_facets.h OLD_FILES+=usr/include/c++/3.3/bits/locale_facets.tcc OLD_FILES+=usr/include/c++/3.3/bits/localefwd.h OLD_FILES+=usr/include/c++/3.3/bits/mask_array.h OLD_FILES+=usr/include/c++/3.3/bits/messages_members.h OLD_FILES+=usr/include/c++/3.3/bits/os_defines.h OLD_FILES+=usr/include/c++/3.3/bits/ostream.tcc OLD_FILES+=usr/include/c++/3.3/bits/pthread_allocimpl.h OLD_FILES+=usr/include/c++/3.3/bits/slice.h OLD_FILES+=usr/include/c++/3.3/bits/slice_array.h OLD_FILES+=usr/include/c++/3.3/bits/sstream.tcc OLD_FILES+=usr/include/c++/3.3/bits/stl_algo.h OLD_FILES+=usr/include/c++/3.3/bits/stl_algobase.h OLD_FILES+=usr/include/c++/3.3/bits/stl_alloc.h OLD_FILES+=usr/include/c++/3.3/bits/stl_bvector.h OLD_FILES+=usr/include/c++/3.3/bits/stl_construct.h OLD_FILES+=usr/include/c++/3.3/bits/stl_deque.h OLD_FILES+=usr/include/c++/3.3/bits/stl_function.h OLD_FILES+=usr/include/c++/3.3/bits/stl_heap.h OLD_FILES+=usr/include/c++/3.3/bits/stl_iterator.h OLD_FILES+=usr/include/c++/3.3/bits/stl_iterator_base_funcs.h OLD_FILES+=usr/include/c++/3.3/bits/stl_iterator_base_types.h OLD_FILES+=usr/include/c++/3.3/bits/stl_list.h OLD_FILES+=usr/include/c++/3.3/bits/stl_map.h OLD_FILES+=usr/include/c++/3.3/bits/stl_multimap.h OLD_FILES+=usr/include/c++/3.3/bits/stl_multiset.h OLD_FILES+=usr/include/c++/3.3/bits/stl_numeric.h OLD_FILES+=usr/include/c++/3.3/bits/stl_pair.h OLD_FILES+=usr/include/c++/3.3/bits/stl_pthread_alloc.h OLD_FILES+=usr/include/c++/3.3/bits/stl_queue.h OLD_FILES+=usr/include/c++/3.3/bits/stl_raw_storage_iter.h OLD_FILES+=usr/include/c++/3.3/bits/stl_relops.h OLD_FILES+=usr/include/c++/3.3/bits/stl_set.h OLD_FILES+=usr/include/c++/3.3/bits/stl_stack.h OLD_FILES+=usr/include/c++/3.3/bits/stl_tempbuf.h OLD_FILES+=usr/include/c++/3.3/bits/stl_threads.h OLD_FILES+=usr/include/c++/3.3/bits/stl_tree.h OLD_FILES+=usr/include/c++/3.3/bits/stl_uninitialized.h OLD_FILES+=usr/include/c++/3.3/bits/stl_vector.h OLD_FILES+=usr/include/c++/3.3/bits/stream_iterator.h OLD_FILES+=usr/include/c++/3.3/bits/streambuf.tcc OLD_FILES+=usr/include/c++/3.3/bits/streambuf_iterator.h OLD_FILES+=usr/include/c++/3.3/bits/stringfwd.h OLD_FILES+=usr/include/c++/3.3/bits/time_members.h OLD_FILES+=usr/include/c++/3.3/bits/type_traits.h OLD_FILES+=usr/include/c++/3.3/bits/valarray_array.h OLD_FILES+=usr/include/c++/3.3/bits/valarray_array.tcc OLD_FILES+=usr/include/c++/3.3/bits/valarray_meta.h OLD_FILES+=usr/include/c++/3.3/bits/vector.tcc OLD_DIRS+=usr/include/c++/3.3/bits OLD_FILES+=usr/include/c++/3.3/bitset OLD_FILES+=usr/include/c++/3.3/cassert OLD_FILES+=usr/include/c++/3.3/cctype OLD_FILES+=usr/include/c++/3.3/cerrno OLD_FILES+=usr/include/c++/3.3/cfloat OLD_FILES+=usr/include/c++/3.3/ciso646 OLD_FILES+=usr/include/c++/3.3/climits OLD_FILES+=usr/include/c++/3.3/clocale OLD_FILES+=usr/include/c++/3.3/cmath OLD_FILES+=usr/include/c++/3.3/complex OLD_FILES+=usr/include/c++/3.3/csetjmp OLD_FILES+=usr/include/c++/3.3/csignal OLD_FILES+=usr/include/c++/3.3/cstdarg OLD_FILES+=usr/include/c++/3.3/cstddef OLD_FILES+=usr/include/c++/3.3/cstdio OLD_FILES+=usr/include/c++/3.3/cstdlib OLD_FILES+=usr/include/c++/3.3/cstring OLD_FILES+=usr/include/c++/3.3/ctime OLD_FILES+=usr/include/c++/3.3/cwchar OLD_FILES+=usr/include/c++/3.3/cwctype OLD_FILES+=usr/include/c++/3.3/cxxabi.h OLD_FILES+=usr/include/c++/3.3/deque OLD_FILES+=usr/include/c++/3.3/exception OLD_FILES+=usr/include/c++/3.3/exception_defines.h OLD_FILES+=usr/include/c++/3.3/ext/algorithm OLD_FILES+=usr/include/c++/3.3/ext/enc_filebuf.h OLD_FILES+=usr/include/c++/3.3/ext/functional OLD_FILES+=usr/include/c++/3.3/ext/hash_map OLD_FILES+=usr/include/c++/3.3/ext/hash_set OLD_FILES+=usr/include/c++/3.3/ext/iterator OLD_FILES+=usr/include/c++/3.3/ext/memory OLD_FILES+=usr/include/c++/3.3/ext/numeric OLD_FILES+=usr/include/c++/3.3/ext/rb_tree OLD_FILES+=usr/include/c++/3.3/ext/rope OLD_FILES+=usr/include/c++/3.3/ext/ropeimpl.h OLD_FILES+=usr/include/c++/3.3/ext/slist OLD_FILES+=usr/include/c++/3.3/ext/stdio_filebuf.h OLD_FILES+=usr/include/c++/3.3/ext/stl_hash_fun.h OLD_FILES+=usr/include/c++/3.3/ext/stl_hashtable.h OLD_FILES+=usr/include/c++/3.3/ext/stl_rope.h OLD_DIRS+=usr/include/c++/3.3/ext OLD_FILES+=usr/include/c++/3.3/fstream OLD_FILES+=usr/include/c++/3.3/functional OLD_FILES+=usr/include/c++/3.3/iomanip OLD_FILES+=usr/include/c++/3.3/ios OLD_FILES+=usr/include/c++/3.3/iosfwd OLD_FILES+=usr/include/c++/3.3/iostream OLD_FILES+=usr/include/c++/3.3/istream OLD_FILES+=usr/include/c++/3.3/iterator OLD_FILES+=usr/include/c++/3.3/limits OLD_FILES+=usr/include/c++/3.3/list OLD_FILES+=usr/include/c++/3.3/locale OLD_FILES+=usr/include/c++/3.3/map OLD_FILES+=usr/include/c++/3.3/memory OLD_FILES+=usr/include/c++/3.3/new OLD_FILES+=usr/include/c++/3.3/numeric OLD_FILES+=usr/include/c++/3.3/ostream OLD_FILES+=usr/include/c++/3.3/queue OLD_FILES+=usr/include/c++/3.3/set OLD_FILES+=usr/include/c++/3.3/sstream OLD_FILES+=usr/include/c++/3.3/stack OLD_FILES+=usr/include/c++/3.3/stdexcept OLD_FILES+=usr/include/c++/3.3/streambuf OLD_FILES+=usr/include/c++/3.3/string OLD_FILES+=usr/include/c++/3.3/typeinfo OLD_FILES+=usr/include/c++/3.3/utility OLD_FILES+=usr/include/c++/3.3/valarray OLD_FILES+=usr/include/c++/3.3/vector # 20040713: fla(4) removed. OLD_FILES+=usr/share/man/man4/fla.4.gz # 200407XX OLD_FILES+=usr/sbin/kernbb OLD_FILES+=usr/sbin/ntp-genkeys OLD_FILES+=usr/sbin/ntptimeset OLD_FILES+=usr/share/man/man8/kernbb.8.gz OLD_FILES+=usr/share/man/man8/ntp-genkeys.8.gz # 20040627: usbdevs.h and usbdevs_data.h removal OLD_FILES+=usr/include/dev/usb/usbdevs.h OLD_FILES+=usr/include/dev/usb/usbdevs_data.h # 200406XX OLD_FILES+=usr/bin/gasp OLD_FILES+=usr/bin/gdbreplay OLD_FILES+=usr/share/man/man1/gasp.1.gz OLD_FILES+=sbin/mountd OLD_FILES+=sbin/mount_fdesc OLD_FILES+=sbin/mount_umap OLD_FILES+=sbin/mount_union OLD_FILES+=sbin/mount_msdos OLD_FILES+=sbin/mount_null OLD_FILES+=sbin/mount_kernfs # 200405XX: arl OLD_FILES+=usr/sbin/arlconfig OLD_FILES+=usr/share/man/man8/arlconfig.8.gz # 200403XX OLD_FILES+=bin/raidctl OLD_FILES+=sbin/raidctl OLD_FILES+=usr/bin/sasc OLD_FILES+=usr/sbin/sgsc OLD_FILES+=usr/sbin/stlload OLD_FILES+=usr/sbin/stlstats OLD_FILES+=usr/share/man/man1/sasc.1.gz OLD_FILES+=usr/share/man/man1/sgsc.1.gz OLD_FILES+=usr/share/man/man4/i386/stl.4.gz OLD_FILES+=usr/share/man/man8/raidctl.8.gz # 20040229: clean_environment() was removed after 3 days OLD_FILES+=usr/share/man/man3/clean_environment.3.gz # 20040119: installed as `isdntel' in newer systems OLD_FILES+=etc/isdn/isdntel.sh # 200XYYZZ: /lib transition clitches OLD_FILES+=lib/libalias.so OLD_FILES+=lib/libatm.so OLD_FILES+=lib/libbsdxml.so OLD_FILES+=lib/libc.so OLD_FILES+=lib/libcam.so OLD_FILES+=lib/libcrypt.so OLD_FILES+=lib/libcrypto.so OLD_FILES+=lib/libdevstat.so OLD_FILES+=lib/libedit.so OLD_FILES+=lib/libgeom.so OLD_FILES+=lib/libipsec.so OLD_FILES+=lib/libipx.so OLD_FILES+=lib/libkvm.so OLD_FILES+=lib/libm.so OLD_FILES+=lib/libmd.so OLD_FILES+=lib/libncurses.so OLD_FILES+=lib/libreadline.so OLD_FILES+=lib/libsbuf.so OLD_FILES+=lib/libufs.so OLD_FILES+=lib/libz.so # 200312XX OLD_FILES+=bin/cxconfig OLD_FILES+=sbin/cxconfig OLD_FILES+=usr/share/man/man8/cxconfig.8.gz # 20031016: MULTI_DRIVER_MODULE macro removed OLD_FILES+=usr/share/man/man9/MULTI_DRIVER_MODULE.9.gz # 200309XX OLD_FILES+=usr/bin/symorder OLD_FILES+=usr/share/man/man1/symorder.1.gz # 200308XX OLD_FILES+=usr/sbin/amldb OLD_FILES+=usr/share/man/man8/amldb.8.gz # 200307XX OLD_FILES+=sbin/mount_nwfs OLD_FILES+=sbin/mount_portalfs OLD_FILES+=sbin/mount_smbfs # 200306XX OLD_FILES+=usr/sbin/dev_mkdb OLD_FILES+=usr/share/man/man8/dev_mkdb.8.gz # 200304XX OLD_FILES+=usr/lib/libcipher.a OLD_FILES+=usr/lib/libcipher.so OLD_FILES+=usr/lib/libcipher_p.a OLD_FILES+=usr/lib/libgmp.a OLD_FILES+=usr/lib/libgmp.so OLD_FILES+=usr/lib/libgmp_p.a OLD_FILES+=usr/lib/libperl.a OLD_FILES+=usr/lib/libperl.so OLD_FILES+=usr/lib/libperl_p.a OLD_FILES+=usr/lib/libposix1e.a OLD_FILES+=usr/lib/libposix1e.so OLD_FILES+=usr/lib/libposix1e_p.a OLD_FILES+=usr/lib/libskey.a OLD_FILES+=usr/lib/libskey.so OLD_FILES+=usr/lib/libskey_p.a OLD_FILES+=usr/libexec/tradcpp0 OLD_FILES+=usr/libexec/cpp0 # 200304XX: removal of xten OLD_FILES+=usr/libexec/xtend OLD_FILES+=usr/sbin/xten OLD_FILES+=usr/share/man/man1/xten.1.gz OLD_FILES+=usr/share/man/man8/xtend.8.gz # 200303XX OLD_FILES+=usr/lib/libacl.so OLD_FILES+=usr/lib/libdescrypt.so OLD_FILES+=usr/lib/libf2c.so OLD_FILES+=usr/lib/libg++.so OLD_FILES+=usr/lib/libkdb.so OLD_FILES+=usr/lib/librsaINTL.so OLD_FILES+=usr/lib/libscrypt.so OLD_FILES+=usr/lib/libss.so # 200302XX OLD_FILES+=usr/lib/libacl.a OLD_FILES+=usr/lib/libacl_p.a OLD_FILES+=usr/lib/libkadm.a OLD_FILES+=usr/lib/libkadm.so OLD_FILES+=usr/lib/libkadm_p.a OLD_FILES+=usr/lib/libkafs.a OLD_FILES+=usr/lib/libkafs.so OLD_FILES+=usr/lib/libkafs_p.a OLD_FILES+=usr/lib/libkdb.a OLD_FILES+=usr/lib/libkdb_p.a OLD_FILES+=usr/lib/libkrb.a OLD_FILES+=usr/lib/libkrb.so OLD_FILES+=usr/lib/libkrb_p.a OLD_FILES+=usr/share/man/man3/SSL_CIPHER_get_name.3.gz OLD_FILES+=usr/share/man/man3/SSL_COMP_add_compression_method.3 OLD_FILES+=usr/share/man/man3/SSL_CTX_add_extra_chain_cert.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_add_session.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_ctrl.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_flush_sessions.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_free.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_get_verify_mode.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_load_verify_locations.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_new.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_sess_number.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_sess_set_cache_size.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_sess_set_get_cb.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_sessions.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_cert_store.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_cert_verify_callback.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_cipher_list.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_client_CA_list.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_client_cert_cb.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_default_passwd_cb.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_generate_session_id.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_info_callback.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_max_cert_list.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_mode.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_msg_callback.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_options.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_quiet_shutdown.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_session_cache_mode.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_session_id_context.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_ssl_version.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_timeout.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_tmp_dh_callback.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_tmp_rsa_callback.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_set_verify.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_use_certificate.3.gz OLD_FILES+=usr/share/man/man3/SSL_SESSION_free.3.gz OLD_FILES+=usr/share/man/man3/SSL_SESSION_get_ex_new_index.3.gz OLD_FILES+=usr/share/man/man3/SSL_SESSION_get_time.3.gz OLD_FILES+=usr/share/man/man3/SSL_accept.3.gz OLD_FILES+=usr/share/man/man3/SSL_alert_type_string.3.gz OLD_FILES+=usr/share/man/man3/SSL_clear.3.gz OLD_FILES+=usr/share/man/man3/SSL_connect.3.gz OLD_FILES+=usr/share/man/man3/SSL_do_handshake.3.gz OLD_FILES+=usr/share/man/man3/SSL_free.3.gz OLD_FILES+=usr/share/man/man3/SSL_get_SSL_CTX.3.gz OLD_FILES+=usr/share/man/man3/SSL_get_ciphers.3.gz OLD_FILES+=usr/share/man/man3/SSL_get_client_CA_list.3.gz OLD_FILES+=usr/share/man/man3/SSL_get_current_cipher.3.gz OLD_FILES+=usr/share/man/man3/SSL_get_default_timeout.3.gz OLD_FILES+=usr/share/man/man3/SSL_get_error.3.gz OLD_FILES+=usr/share/man/man3/SSL_get_ex_data_X509_STORE_CTX_idx.3.gz OLD_FILES+=usr/share/man/man3/SSL_get_ex_new_index.3.gz OLD_FILES+=usr/share/man/man3/SSL_get_fd.3.gz OLD_FILES+=usr/share/man/man3/SSL_get_peer_cert_chain.3.gz OLD_FILES+=usr/share/man/man3/SSL_get_peer_certificate.3.gz OLD_FILES+=usr/share/man/man3/SSL_get_rbio.3.gz OLD_FILES+=usr/share/man/man3/SSL_get_session.3.gz OLD_FILES+=usr/share/man/man3/SSL_get_verify_result.3.gz OLD_FILES+=usr/share/man/man3/SSL_get_version.3.gz OLD_FILES+=usr/share/man/man3/SSL_library_init.3.gz OLD_FILES+=usr/share/man/man3/SSL_load_client_CA_file.3.gz OLD_FILES+=usr/share/man/man3/SSL_new.3.gz OLD_FILES+=usr/share/man/man3/SSL_pending.3.gz OLD_FILES+=usr/share/man/man3/SSL_read.3.gz OLD_FILES+=usr/share/man/man3/SSL_rstate_string.3.gz OLD_FILES+=usr/share/man/man3/SSL_session_reused.3.gz OLD_FILES+=usr/share/man/man3/SSL_set_bio.3.gz OLD_FILES+=usr/share/man/man3/SSL_set_connect_state.3.gz OLD_FILES+=usr/share/man/man3/SSL_set_fd.3.gz OLD_FILES+=usr/share/man/man3/SSL_set_session.3.gz OLD_FILES+=usr/share/man/man3/SSL_set_shutdown.3.gz OLD_FILES+=usr/share/man/man3/SSL_set_verify_result.3.gz OLD_FILES+=usr/share/man/man3/SSL_shutdown.3.gz OLD_FILES+=usr/share/man/man3/SSL_state_string.3.gz OLD_FILES+=usr/share/man/man3/SSL_want.3.gz OLD_FILES+=usr/share/man/man3/SSL_write.3.gz OLD_FILES+=usr/share/man/man3/d2i_SSL_SESSION.3.gz # 200301XX OLD_FILES+=usr/share/man/man3/des_3cbc_encrypt.3.gz OLD_FILES+=usr/share/man/man3/des_3ecb_encrypt.3.gz OLD_FILES+=usr/share/man/man3/des_cbc_cksum.3.gz OLD_FILES+=usr/share/man/man3/des_cbc_encrypt.3.gz OLD_FILES+=usr/share/man/man3/des_cfb_encrypt.3.gz OLD_FILES+=usr/share/man/man3/des_ecb_encrypt.3.gz OLD_FILES+=usr/share/man/man3/des_enc_read.3.gz OLD_FILES+=usr/share/man/man3/des_enc_write.3.gz OLD_FILES+=usr/share/man/man3/des_is_weak_key.3.gz OLD_FILES+=usr/share/man/man3/des_key_sched.3.gz OLD_FILES+=usr/share/man/man3/des_ofb_encrypt.3.gz OLD_FILES+=usr/share/man/man3/des_pcbc_encrypt.3.gz OLD_FILES+=usr/share/man/man3/des_quad_cksum.3.gz OLD_FILES+=usr/share/man/man3/des_random_key.3.gz OLD_FILES+=usr/share/man/man3/des_read_2password.3.gz OLD_FILES+=usr/share/man/man3/des_read_password.3.gz OLD_FILES+=usr/share/man/man3/des_read_pw_string.3.gz OLD_FILES+=usr/share/man/man3/des_set_key.3.gz OLD_FILES+=usr/share/man/man3/des_set_odd_parity.3.gz OLD_FILES+=usr/share/man/man3/des_string_to_2key.3.gz OLD_FILES+=usr/share/man/man3/des_string_to_key.3.gz # 200212XX OLD_FILES+=usr/sbin/kenv OLD_FILES+=usr/bin/kenv OLD_FILES+=usr/sbin/elf2aout # 200210XX OLD_FILES+=usr/include/libusbhid.h OLD_FILES+=usr/share/man/man3/All_FreeBSD.3.gz OLD_FILES+=usr/share/man/man3/CheckRules.3.gz OLD_FILES+=usr/share/man/man3/ChunkCanBeRoot.3.gz OLD_FILES+=usr/share/man/man3/Clone_Disk.3.gz OLD_FILES+=usr/share/man/man3/Collapse_Chunk.3.gz OLD_FILES+=usr/share/man/man3/Collapse_Disk.3.gz OLD_FILES+=usr/share/man/man3/Create_Chunk.3.gz OLD_FILES+=usr/share/man/man3/Create_Chunk_DWIM.3.gz OLD_FILES+=usr/share/man/man3/Cyl_Aligned.3.gz OLD_FILES+=usr/share/man/man3/Debug_Disk.3.gz OLD_FILES+=usr/share/man/man3/Delete_Chunk.3.gz OLD_FILES+=usr/share/man/man3/Disk_Names.3.gz OLD_FILES+=usr/share/man/man3/Free_Disk.3.gz OLD_FILES+=usr/share/man/man3/MakeDev.3.gz OLD_FILES+=usr/share/man/man3/MakeDevDisk.3.gz OLD_FILES+=usr/share/man/man3/Next_Cyl_Aligned.3.gz OLD_FILES+=usr/share/man/man3/Next_Track_Aligned.3.gz OLD_FILES+=usr/share/man/man3/Open_Disk.3.gz OLD_FILES+=usr/share/man/man3/Prev_Cyl_Aligned.3.gz OLD_FILES+=usr/share/man/man3/Prev_Track_Aligned.3.gz OLD_FILES+=usr/share/man/man3/Set_Bios_Geom.3.gz OLD_FILES+=usr/share/man/man3/Set_Boot_Blocks.3.gz OLD_FILES+=usr/share/man/man3/Set_Boot_Mgr.3.gz OLD_FILES+=usr/share/man/man3/ShowChunkFlags.3.gz OLD_FILES+=usr/share/man/man3/Track_Aligned.3.gz OLD_FILES+=usr/share/man/man3/Write_Disk.3.gz OLD_FILES+=usr/share/man/man3/slice_type_name.3.gz # 200210XX: most games moved to ports OLD_FILES+=usr/share/man/man6/adventure.6.gz OLD_FILES+=usr/share/man/man6/arithmetic.6.gz OLD_FILES+=usr/share/man/man6/atc.6.gz OLD_FILES+=usr/share/man/man6/backgammon.6.gz OLD_FILES+=usr/share/man/man6/battlestar.6.gz OLD_FILES+=usr/share/man/man6/bs.6.gz OLD_FILES+=usr/share/man/man6/canfield.6.gz OLD_FILES+=usr/share/man/man6/cfscores.6.gz OLD_FILES+=usr/share/man/man6/cribbage.6.gz OLD_FILES+=usr/share/man/man6/fish.6.gz OLD_FILES+=usr/share/man/man6/hack.6.gz OLD_FILES+=usr/share/man/man6/hangman.6.gz OLD_FILES+=usr/share/man/man6/larn.6.gz OLD_FILES+=usr/share/man/man6/mille.6.gz OLD_FILES+=usr/share/man/man6/phantasia.6.gz OLD_FILES+=usr/share/man/man6/piano.6.gz OLD_FILES+=usr/share/man/man6/pig.6.gz OLD_FILES+=usr/share/man/man6/quiz.6.gz OLD_FILES+=usr/share/man/man6/rain.6.gz OLD_FILES+=usr/share/man/man6/robots.6.gz OLD_FILES+=usr/share/man/man6/rogue.6.gz OLD_FILES+=usr/share/man/man6/sail.6.gz OLD_FILES+=usr/share/man/man6/snake.6.gz OLD_FILES+=usr/share/man/man6/snscore.6.gz OLD_FILES+=usr/share/man/man6/trek.6.gz OLD_FILES+=usr/share/man/man6/wargames.6.gz OLD_FILES+=usr/share/man/man6/worm.6.gz OLD_FILES+=usr/share/man/man6/worms.6.gz OLD_FILES+=usr/share/man/man6/wump.6.gz # 200207XX OLD_FILES+=usr/share/man/man1aout/ar.1aout.gz OLD_FILES+=usr/share/man/man1aout/as.1aout.gz OLD_FILES+=usr/share/man/man1aout/ld.1aout.gz OLD_FILES+=usr/share/man/man1aout/nm.1aout.gz OLD_FILES+=usr/share/man/man1aout/ranlib.1aout.gz OLD_FILES+=usr/share/man/man1aout/size.1aout.gz OLD_FILES+=usr/share/man/man1aout/strings.1aout.gz OLD_FILES+=usr/share/man/man1aout/strip.1aout.gz OLD_FILES+=bin/mountd OLD_FILES+=bin/nfsd # 20020707 sbin/nfsd -> usr.sbin/nfsd OLD_FILES+=sbin/nfsd # 200206XX OLD_FILES+=usr/lib/libpam_ssh.a OLD_FILES+=usr/lib/libpam_ssh_p.a OLD_FILES+=usr/bin/help OLD_FILES+=usr/bin/sccs .if ${TARGET_ARCH} != "amd64" && ${TARGET} != "arm" && ${TARGET_ARCH} != "i386" && ${TARGET} != "powerpc" OLD_FILES+=usr/bin/gdbserver .endif OLD_FILES+=usr/bin/ssh-keysign OLD_FILES+=usr/sbin/gifconfig OLD_FILES+=usr/sbin/prefix # 200205XX OLD_FILES+=usr/bin/doscmd # 200204XX OLD_FILES+=usr/bin/a2p OLD_FILES+=usr/bin/ptx OLD_FILES+=usr/bin/pod2text OLD_FILES+=usr/bin/pod2man OLD_FILES+=usr/bin/pod2latex OLD_FILES+=usr/bin/pod2html OLD_FILES+=usr/bin/h2ph OLD_FILES+=usr/bin/dprofpp OLD_FILES+=usr/bin/c2ph OLD_FILES+=usr/bin/h2xs OLD_FILES+=usr/bin/pl2pm OLD_FILES+=usr/bin/splain OLD_FILES+=usr/bin/s2p OLD_FILES+=usr/bin/find2perl OLD_FILES+=usr/sbin/pkg_update OLD_FILES+=usr/sbin/scriptdump # 20020409 GC kget(1), userconfig is long dead. OLD_FILES+=sbin/kget OLD_FILES+=usr/share/man/man8/kget.8.gz # 200203XX OLD_FILES+=usr/lib/libss.a OLD_FILES+=usr/lib/libss_p.a OLD_FILES+=usr/lib/libtelnet.a OLD_FILES+=usr/lib/libtelnet_p.a OLD_FILES+=usr/sbin/diskpart # 200202XX OLD_FILES+=usr/bin/gprof4 # 200201XX OLD_FILES+=usr/sbin/linux # 2001XXXX OLD_FILES+=usr/bin/joy OLD_FILES+=usr/sbin/ibcs2 OLD_FILES+=usr/sbin/svr4 OLD_FILES+=usr/bin/chflags OLD_FILES+=usr/sbin/uuconv OLD_FILES+=usr/sbin/uuchk OLD_FILES+=usr/sbin/portmap OLD_FILES+=usr/sbin/pmap_set OLD_FILES+=usr/sbin/pmap_dump OLD_FILES+=usr/sbin/mcon OLD_FILES+=usr/sbin/stlstty OLD_FILES+=usr/sbin/ispppcontrol OLD_FILES+=usr/sbin/rndcontrol # 20011001: UUCP migration to ports OLD_FILES+=usr/bin/uucp OLD_FILES+=usr/bin/uulog OLD_FILES+=usr/bin/uuname OLD_FILES+=usr/bin/uupick OLD_FILES+=usr/bin/uusched OLD_FILES+=usr/bin/uustat OLD_FILES+=usr/bin/uuto OLD_FILES+=usr/bin/uux OLD_FILES+=usr/libexec/uucp/uucico OLD_FILES+=usr/libexec/uucp/uuxqt OLD_FILES+=usr/libexec/uucpd OLD_FILES+=usr/share/man/man1/uuconv.1.gz OLD_FILES+=usr/share/man/man1/uucp.1.gz OLD_FILES+=usr/share/man/man1/uulog.1.gz OLD_FILES+=usr/share/man/man1/uuname.1.gz OLD_FILES+=usr/share/man/man1/uupick.1.gz OLD_FILES+=usr/share/man/man1/uustat.1.gz OLD_FILES+=usr/share/man/man1/uuto.1.gz OLD_FILES+=usr/share/man/man1/uux.1.gz OLD_FILES+=usr/share/man/man8/uuchk.8.gz OLD_FILES+=usr/share/man/man8/uucico.8.gz OLD_FILES+=usr/share/man/man8/uucpd.8.gz OLD_FILES+=usr/share/man/man8/uusched.8.gz OLD_FILES+=usr/share/man/man8/uuxqt.8.gz # 20010523 mount_portal -> mount_portalfs OLD_FILES+=sbin/mount_portal OLD_FILES+=usr/share/man/man8/mount_portal.8.gz # 200104XX OLD_FILES+=usr/lib/libdescrypt.a OLD_FILES+=usr/lib/libscrypt.a OLD_FILES+=usr/lib/libscrypt_p.a OLD_FILES+=usr/sbin/pim6stat OLD_FILES+=usr/sbin/pim6sd OLD_FILES+=usr/sbin/pim6dd # 20010217 OLD_FILES+=usr/share/doc/bind/misc/dns-setup # 20001200 OLD_FILES+=usr/lib/libgcc_r_pic.a # 200009XX OLD_FILES+=usr/lib/libRSAglue.a OLD_FILES+=usr/lib/libRSAglue.so OLD_FILES+=usr/lib/librsaINTL.a OLD_FILES+=usr/lib/librsaUSA.a OLD_FILES+=usr/lib/librsaUSA.so # 200002XX ? OLD_FILES+=usr/lib/libf2c.a OLD_FILES+=usr/lib/libf2c_p.a OLD_FILES+=usr/lib/libg++.a OLD_FILES+=usr/lib/libg++_p.a # 20001006 OLD_FILES+=usr/bin/miniperl # 20000810 OLD_FILES+=usr/bin/sperl # 200001XX OLD_FILES+=usr/sbin/apmconf # 199911XX OLD_FILES+=usr/sbin/ipfstat OLD_FILES+=usr/sbin/ipmon OLD_FILES+=usr/sbin/ipnat OLD_FILES+=usr/sbin/bad144 OLD_FILES+=usr/sbin/wormcontrol OLD_FILES+=usr/sbin/named-bootconf OLD_FILES+=usr/sbin/kvm_mkdb OLD_FILES+=usr/sbin/keyadmin # 199909XX OLD_FILES+=usr/lib/libdesrypt_p.a OLD_FILES+=sbin/ft # 199903XX OLD_FILES+=sbin/modload OLD_FILES+=sbin/modunload OLD_FILES+=usr/sbin/natd # 199812XX OLD_FILES+=sbin/dset # 199809XX OLD_FILES+=sbin/scsi OLD_FILES+=sbin/scsiformat OLD_FILES+=usr/sbin/ncrcontrol OLD_FILES+=usr/sbin/tickadj # 199806XX OLD_FILES+=usr/sbin/mkdosfs # 199801XX OLD_FILES+=sbin/mount_lfs OLD_FILES+=sbin/newlfs OLD_FILES+=sbin/dumplfs OLD_FILES+=usr/sbin/qcamcontrol OLD_FILES+=usr/sbin/supscan # 1997XXXX OLD_FILES+=usr/sbin/sysctl OLD_FILES+=usr/sbin/ctm_scan OLD_FILES+=usr/sbin/addgroup OLD_FILES+=usr/sbin/rmgroup # 1996XXXX OLD_FILES+=sbin/rdisc OLD_FILES+=usr/sbin/cdplay OLD_FILES+=usr/sbin/supfilesrv OLD_FILES+=usr/sbin/routed OLD_FILES+=usr/sbin/lsdev OLD_FILES+=usr/sbin/yppasswdd ## unsorted # do we still support aout builds? #OLD_FILES+=usr/lib/aout/c++rt0.o #OLD_FILES+=usr/lib/aout/crt0.o #OLD_FILES+=usr/lib/aout/gcrt0.o #OLD_FILES+=usr/lib/aout/scrt0.o #OLD_FILES+=usr/lib/aout/sgcrt0.o OLD_FILES+=usr/bin/sperl5 OLD_FILES+=usr/bin/perl5.6.0 OLD_FILES+=usr/bin/sperl5.6.0 OLD_FILES+=usr/bin/perlbc OLD_FILES+=usr/bin/perl5.00503 OLD_FILES+=usr/bin/sperl5.00503 OLD_FILES+=usr/bin/perlbug OLD_FILES+=usr/bin/perlcc OLD_FILES+=usr/bin/perldoc OLD_FILES+=usr/bin/suidperl OLD_FILES+=usr/lib/pam_ftp.so OLD_FILES+=usr/libdata/perl/5.00503/CGI/Apache.pm OLD_FILES+=usr/libdata/perl/5.00503/CGI/Carp.pm OLD_FILES+=usr/libdata/perl/5.00503/CGI/Cookie.pm OLD_FILES+=usr/libdata/perl/5.00503/CGI/Fast.pm OLD_FILES+=usr/libdata/perl/5.00503/CGI/Push.pm OLD_FILES+=usr/libdata/perl/5.00503/CGI/Switch.pm OLD_FILES+=usr/libdata/perl/5.00503/CPAN/FirstTime.pm OLD_FILES+=usr/libdata/perl/5.00503/CPAN/Nox.pm OLD_FILES+=usr/libdata/perl/5.00503/Class/Struct.pm OLD_FILES+=usr/libdata/perl/5.00503/Devel/SelfStubber.pm OLD_FILES+=usr/libdata/perl/5.00503/ExtUtils/Command.pm OLD_FILES+=usr/libdata/perl/5.00503/ExtUtils/Embed.pm OLD_FILES+=usr/libdata/perl/5.00503/ExtUtils/Install.pm OLD_FILES+=usr/libdata/perl/5.00503/ExtUtils/Installed.pm OLD_FILES+=usr/libdata/perl/5.00503/ExtUtils/Liblist.pm OLD_FILES+=usr/libdata/perl/5.00503/ExtUtils/MM_OS2.pm OLD_FILES+=usr/libdata/perl/5.00503/ExtUtils/MM_Unix.pm OLD_FILES+=usr/libdata/perl/5.00503/ExtUtils/MM_VMS.pm OLD_FILES+=usr/libdata/perl/5.00503/ExtUtils/MM_Win32.pm OLD_FILES+=usr/libdata/perl/5.00503/ExtUtils/MakeMaker.pm OLD_FILES+=usr/libdata/perl/5.00503/ExtUtils/Manifest.pm OLD_FILES+=usr/libdata/perl/5.00503/ExtUtils/Mkbootstrap.pm OLD_FILES+=usr/libdata/perl/5.00503/ExtUtils/Mksymlists.pm OLD_FILES+=usr/libdata/perl/5.00503/ExtUtils/Packlist.pm OLD_FILES+=usr/libdata/perl/5.00503/ExtUtils/inst OLD_FILES+=usr/libdata/perl/5.00503/ExtUtils/testlib.pm OLD_FILES+=usr/libdata/perl/5.00503/ExtUtils/typemap OLD_FILES+=usr/libdata/perl/5.00503/ExtUtils/xsubpp OLD_FILES+=usr/libdata/perl/5.00503/File/Spec/Mac.pm OLD_FILES+=usr/libdata/perl/5.00503/File/Spec/OS2.pm OLD_FILES+=usr/libdata/perl/5.00503/File/Spec/Unix.pm OLD_FILES+=usr/libdata/perl/5.00503/File/Spec/VMS.pm OLD_FILES+=usr/libdata/perl/5.00503/File/Spec/Win32.pm OLD_FILES+=usr/libdata/perl/5.00503/File/Basename.pm OLD_FILES+=usr/libdata/perl/5.00503/File/CheckTree.pm OLD_FILES+=usr/libdata/perl/5.00503/File/Compare.pm OLD_FILES+=usr/libdata/perl/5.00503/File/Copy.pm OLD_FILES+=usr/libdata/perl/5.00503/File/DosGlob.pm OLD_FILES+=usr/libdata/perl/5.00503/File/Find.pm OLD_FILES+=usr/libdata/perl/5.00503/File/Path.pm OLD_FILES+=usr/libdata/perl/5.00503/File/Spec.pm OLD_FILES+=usr/libdata/perl/5.00503/File/stat.pm OLD_FILES+=usr/libdata/perl/5.00503/Getopt/Long.pm OLD_FILES+=usr/libdata/perl/5.00503/Getopt/Std.pm OLD_FILES+=usr/libdata/perl/5.00503/I18N/Collate.pm OLD_FILES+=usr/libdata/perl/5.00503/IPC/Open2.pm OLD_FILES+=usr/libdata/perl/5.00503/IPC/Open3.pm OLD_FILES+=usr/libdata/perl/5.00503/Math/BigFloat.pm OLD_FILES+=usr/libdata/perl/5.00503/Math/BigInt.pm OLD_FILES+=usr/libdata/perl/5.00503/Math/Complex.pm OLD_FILES+=usr/libdata/perl/5.00503/Math/Trig.pm OLD_FILES+=usr/libdata/perl/5.00503/Net/Ping.pm OLD_FILES+=usr/libdata/perl/5.00503/Net/hostent.pm OLD_FILES+=usr/libdata/perl/5.00503/Net/netent.pm OLD_FILES+=usr/libdata/perl/5.00503/Net/protoent.pm OLD_FILES+=usr/libdata/perl/5.00503/Net/servent.pm OLD_FILES+=usr/libdata/perl/5.00503/Pod/Functions.pm OLD_FILES+=usr/libdata/perl/5.00503/Pod/Html.pm OLD_FILES+=usr/libdata/perl/5.00503/Pod/Text.pm OLD_FILES+=usr/libdata/perl/5.00503/Search/Dict.pm OLD_FILES+=usr/libdata/perl/5.00503/Sys/Hostname.pm OLD_FILES+=usr/libdata/perl/5.00503/Sys/Syslog.pm OLD_FILES+=usr/libdata/perl/5.00503/Term/Cap.pm OLD_FILES+=usr/libdata/perl/5.00503/Term/Complete.pm OLD_FILES+=usr/libdata/perl/5.00503/Term/ReadLine.pm OLD_FILES+=usr/libdata/perl/5.00503/Test/Harness.pm OLD_FILES+=usr/libdata/perl/5.00503/Text/Abbrev.pm OLD_FILES+=usr/libdata/perl/5.00503/Text/ParseWords.pm OLD_FILES+=usr/libdata/perl/5.00503/Text/Soundex.pm OLD_FILES+=usr/libdata/perl/5.00503/Text/Tabs.pm OLD_FILES+=usr/libdata/perl/5.00503/Text/Wrap.pm OLD_FILES+=usr/libdata/perl/5.00503/Tie/Array.pm OLD_FILES+=usr/libdata/perl/5.00503/Tie/Handle.pm OLD_FILES+=usr/libdata/perl/5.00503/Tie/Hash.pm OLD_FILES+=usr/libdata/perl/5.00503/Tie/RefHash.pm OLD_FILES+=usr/libdata/perl/5.00503/Tie/Scalar.pm OLD_FILES+=usr/libdata/perl/5.00503/Tie/SubstrHash.pm OLD_FILES+=usr/libdata/perl/5.00503/Time/Local.pm OLD_FILES+=usr/libdata/perl/5.00503/Time/gmtime.pm OLD_FILES+=usr/libdata/perl/5.00503/Time/localtime.pm OLD_FILES+=usr/libdata/perl/5.00503/Time/tm.pm OLD_FILES+=usr/libdata/perl/5.00503/User/grent.pm OLD_FILES+=usr/libdata/perl/5.00503/User/pwent.pm OLD_FILES+=usr/libdata/perl/5.00503/auto/Getopt/Long/GetOptions.al OLD_FILES+=usr/libdata/perl/5.00503/auto/Getopt/Long/FindOption.al OLD_FILES+=usr/libdata/perl/5.00503/auto/Getopt/Long/Configure.al OLD_FILES+=usr/libdata/perl/5.00503/auto/Getopt/Long/config.al OLD_FILES+=usr/libdata/perl/5.00503/auto/Getopt/Long/Croak.al OLD_FILES+=usr/libdata/perl/5.00503/auto/Getopt/Long/autosplit.ix OLD_FILES+=usr/libdata/perl/5.00503/mach/B/Deparse.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/B/CC.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/B/Debug.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/B/Showlex.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/B/makeliblinks OLD_FILES+=usr/libdata/perl/5.00503/mach/B/Bblock.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/B/cc_harness OLD_FILES+=usr/libdata/perl/5.00503/mach/B/Bytecode.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/B/Stackobj.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/B/Xref.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/B/Lint.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/B/Asmdata.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/B/Assembler.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/B/Disassembler.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/B/disassemble OLD_FILES+=usr/libdata/perl/5.00503/mach/B/assemble OLD_FILES+=usr/libdata/perl/5.00503/mach/B/Terse.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/B/C.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/EXTERN.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/INTERN.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/XSUB.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/XSlock.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/av.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/bytecode.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/byterun.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/cc_runtime.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/config.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/cop.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/cv.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/dosish.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/embed.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/embedvar.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/fakethr.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/form.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/gv.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/handy.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/hv.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/intrpvar.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/iperlsys.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/keywords.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/mg.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/nostdio.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/objXSUB.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/objpp.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/op.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/opcode.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/patchlevel.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/perl.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/perlio.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/perlsdio.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/perlsfio.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/perlvars.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/perly.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/pp.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/pp_proto.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/proto.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/regcomp.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/regexp.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/regnodes.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/scope.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/sv.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/thrdvar.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/thread.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/unixish.h OLD_FILES+=usr/libdata/perl/5.00503/mach/CORE/util.h OLD_FILES+=usr/libdata/perl/5.00503/mach/Data/Dumper.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/IO/File.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/IO/Select.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/IO/Socket.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/IO/Handle.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/IO/Seekable.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/IO/Pipe.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/IPC/SysV.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/IPC/Msg.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/IPC/Semaphore.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/B/B.so OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/B/B.bs OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/B/.packlist OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/DB_File/autosplit.ix OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/DB_File/DB_File.so OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/DB_File/DB_File.bs OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/DB_File/.packlist OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/Data/Dumper/Dumper.so OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/Data/Dumper/Dumper.bs OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/Data/Dumper/.packlist OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/DynaLoader/.exists OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/DynaLoader/dl_findfile.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/DynaLoader/dl_expandspec.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/DynaLoader/dl_find_symbol_anywhere.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/DynaLoader/autosplit.ix OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/DynaLoader/DynaLoader.a OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/DynaLoader/extralibs.ld OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/Fcntl/Fcntl.so OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/Fcntl/Fcntl.bs OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/Fcntl/.packlist OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/IO/IO.so OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/IO/IO.bs OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/IO/.packlist OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/IPC/SysV/SysV.so OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/IPC/SysV/SysV.bs OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/IPC/SysV/.packlist OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/NDBM_File/NDBM_File.so OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/NDBM_File/NDBM_File.bs OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/NDBM_File/.packlist OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/Opcode/Opcode.so OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/Opcode/Opcode.bs OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/Opcode/.packlist OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/assert.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/tolower.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/toupper.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/closedir.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/opendir.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/readdir.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/rewinddir.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/errno.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/creat.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fcntl.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/getgrgid.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/getgrnam.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/atan2.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/cos.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/exp.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fabs.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/log.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/pow.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/sin.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/sqrt.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/getpwnam.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/getpwuid.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/longjmp.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/setjmp.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/kill.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/feof.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/siglongjmp.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/sigsetjmp.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/raise.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/offsetof.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/clearerr.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fclose.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fdopen.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fgetc.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fgets.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fileno.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fopen.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fprintf.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fputc.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fputs.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fread.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/freopen.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fscanf.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fseek.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/ferror.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fflush.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fgetpos.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fsetpos.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/ftell.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fwrite.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/getc.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/getchar.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/gets.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/perror.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/printf.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/putc.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/putchar.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/puts.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/remove.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/rename.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/rewind.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/scanf.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/sprintf.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/sscanf.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/tmpfile.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/ungetc.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/vfprintf.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/vprintf.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/vsprintf.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/abs.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/atexit.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/atof.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/atoi.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/atol.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/bsearch.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/calloc.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/div.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/exit.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/free.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/getenv.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/labs.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/ldiv.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/malloc.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/qsort.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/rand.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/realloc.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/srand.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/system.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/memchr.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/memcmp.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/memcpy.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/memmove.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/memset.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/strcat.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/strchr.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/strcmp.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/strcpy.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/strcspn.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/strerror.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/strlen.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/strncat.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/strncmp.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/strncpy.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/strpbrk.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/strrchr.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/strspn.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/strstr.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/strtok.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/chmod.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fstat.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/mkdir.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/stat.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/umask.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/wait.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/waitpid.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/gmtime.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/localtime.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/time.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/alarm.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/chdir.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/chown.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/execl.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/execle.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/execlp.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/execv.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/execve.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/execvp.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/fork.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/getcwd.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/getegid.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/geteuid.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/getgid.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/getgroups.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/getlogin.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/getpgrp.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/getpid.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/getppid.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/getuid.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/isatty.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/link.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/rmdir.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/setbuf.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/setgid.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/setuid.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/setvbuf.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/sleep.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/unlink.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/utime.al OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/autosplit.ix OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/POSIX.so OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/POSIX.bs OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/POSIX/.packlist OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/SDBM_File/SDBM_File.so OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/SDBM_File/SDBM_File.bs OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/SDBM_File/.packlist OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/Socket/Socket.so OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/Socket/Socket.bs OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/Socket/.packlist OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/attrs/attrs.so OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/attrs/attrs.bs OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/attrs/.packlist OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/re/re.so OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/re/re.bs OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/re/.packlist OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/sdbm/extralibs.ld OLD_FILES+=usr/libdata/perl/5.00503/mach/auto/Errno/.packlist OLD_FILES+=usr/libdata/perl/5.00503/mach/Config.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/B.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/O.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/perllocal.pod OLD_FILES+=usr/libdata/perl/5.00503/mach/DB_File.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/Errno.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/Fcntl.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/IO.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/NDBM_File.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/Safe.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/Opcode.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/ops.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/POSIX.pod OLD_FILES+=usr/libdata/perl/5.00503/mach/POSIX.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/SDBM_File.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/Socket.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/attrs.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/re.pm OLD_FILES+=usr/libdata/perl/5.00503/mach/_h2ph_pre.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/a.out.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/cam/cam.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/cam/cam_ccb.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/cam/cam_debug.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/cam/cam_extend.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/cam/cam_periph.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/cam/cam_queue.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/cam/cam_sim.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/cam/cam_xpt.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/cam/cam_xpt_periph.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/cam/cam_xpt_sim.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/aio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/alias.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ar.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/assert.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/bitstring.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/calendar.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/camlib.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/com_err.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/com_right.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ctype.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/curses.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/db.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/des.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/devstat.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/dialog.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/dirent.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/disktab.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/dlfcn.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/elf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/err.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/errno.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/eti.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/fcntl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/fetch.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/float.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/floatingpoint.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/fnmatch.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/form.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/fstab.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ftpio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/fts.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/glob.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/gmp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/gnuregex.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/grp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/histedit.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ieeefp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ifaddrs.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/inttypes.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/iso646.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/kvm.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/libatm.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/libdisk.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/libgen.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/libusb.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/libutil.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/limits.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/link.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/linker_set.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/locale.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/login_cap.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/malloc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/FlexLexer.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/PlotFile.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/SFile.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/_G_config.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/algo.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/algobase.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/alloc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/builtinbuf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/bvector.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/complex.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/defalloc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/deque.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/editbuf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/floatio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/fstream.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/function.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/hash_map.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/hash_set.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/hashtable.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/heap.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/indstream.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/iolibio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/iomanip.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/list.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/iostdio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/iostream.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/iostreamP.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/istream.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/iterator.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/libio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/libioP.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/map.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/multimap.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/multiset.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/new.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/ostream.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/pair.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/parsestream.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/pfstream.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/procbuf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/pthread_alloc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/rope.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/ropeimpl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/set.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/slist.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stack.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stdiostream.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_algo.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/tree.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_algobase.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_alloc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_bvector.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_config.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_construct.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_deque.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_function.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_hash_fun.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_hash_map.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_hash_set.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_hashtable.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_heap.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_iterator.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_list.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_map.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_multimap.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_multiset.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_numeric.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_pair.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_queue.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_raw_storage_iter.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_relops.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_rope.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_set.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_slist.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_stack.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_tempbuf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_tree.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_uninitialized.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stl_vector.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/stream.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/streambuf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/strfile.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/strstream.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/tempbuf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/type_traits.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g++/vector.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/math.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/md2.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/md4.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/md5.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/memory.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/menu.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/mp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/mpool.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/mqueue.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ncurses.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ndbm.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netdb.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/nl_types.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/nlist.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/objformat.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/opie.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/osreldate.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/panel.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/paths.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/pcap-int.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/pcap-namedb.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/pcap.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/poll.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/pthread.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/pthread_np.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/pwd.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/radlib.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ranlib.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/regex.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/regexp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/resolv.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ripemd.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rune.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/runetype.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sched.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/search.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/semaphore.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/setjmp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sgtty.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sha.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/signal.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/skey.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/stab.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/stand.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/stdarg.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/stddef.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/stdio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/stdlib.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/strhash.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/string.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/stringlist.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/strings.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/struct.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sysexits.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/syslog.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/taclib.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/tar.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/tcpd.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/term.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/termcap.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/termios.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/time.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/timers.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ttyent.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ucontext.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/unctrl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/unistd.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/utime.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/utmp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/values.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/varargs.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/vgl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/vis.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/zconf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/zlib.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/arpa/ftp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/arpa/inet.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/arpa/nameser.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/arpa/nameser_compat.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/arpa/telnet.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/arpa/tftp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/isc/assertions.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/isc/ctl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/isc/dst.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/isc/eventlib.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/isc/heap.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/isc/irpmarshall.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/isc/logging.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/isc/memcluster.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/isc/misc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/isc/tree.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/isc/list.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/ansi.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/apic.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/apm_bios.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/apm_segments.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/asc_ioctl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/asm.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/asmacros.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/asnames.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/atomic.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/bootinfo.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/bus.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/bus_at386.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/bus_memio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/bus_pc98.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/bus_pio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/bus_pio_ind.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/cdk.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/clock.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/comstats.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/console.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/cpu.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/cpufunc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/cputypes.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/cronyx.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/db_machdep.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/dvcfg.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/elf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/endian.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/exec.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/float.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/floatingpoint.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/frame.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/globaldata.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/globals.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/gsc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/i4b_cause.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/i4b_debug.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/i4b_ioctl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/i4b_rbch_ioctl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/i4b_tel_ioctl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/i4b_trace.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/ieeefp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/if_wavelan_ieee.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/if_wl_wavelan.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/iic.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/in_cksum.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/ioctl_bt848.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/ioctl_ctx.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/ioctl_fd.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/ioctl_meteor.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/ipl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/joystick.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/limits.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/lock.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/md_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/mouse.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/mpapic.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/mtpr.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/bus_dma.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/npx.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/param.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/pcaudioio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/pcb.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/pcb_ext.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/pcvt_ioctl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/perfmon.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/physio_proc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/pmap.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/proc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/profile.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/psl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/ptrace.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/reg.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/reloc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/resource.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/segments.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/setjmp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/sigframe.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/signal.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/smb.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/smp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/smptests.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/soundcard.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/speaker.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/specialreg.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/spigot.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/stdarg.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/sysarch.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/trap.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/tss.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/types.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/uc_device.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/ucontext.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/ultrasound.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/varargs.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/vm86.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/vmparam.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/wtio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/i4b_isppp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/machine/pci_cfgreg.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/msdosfs/bootsect.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/msdosfs/bpb.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/msdosfs/denode.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/msdosfs/direntry.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/msdosfs/fat.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/msdosfs/msdosfsmount.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/bpf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/bpf_compat.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/bpfdesc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/bridge.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/ethernet.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/hostcache.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_arp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_atm.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_dl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_gif.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_ieee80211.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_llc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_media.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_mib.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_ppp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_pppvar.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_slvar.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_sppp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_stf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_tap.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_tapvar.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_tun.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/slip.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_tunvar.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_types.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_vlan_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/intrq.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/iso88025.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/net_osdep.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/netisr.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/pfkeyv2.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/ppp_comp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/ppp_defs.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/radix.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/raw_cb.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/route.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/slcompress.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/zlib.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_faith.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_arc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/net/if_gre.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/nfs/krpc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/nfs/nfs.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/nfs/nfsdiskless.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/nfs/nfsm_subs.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/nfs/nfsmount.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/nfs/nfsnode.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/nfs/nfsproto.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/nfs/nfsrtt.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/nfs/nfsrvcache.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/nfs/nfsv2.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/nfs/nqnfs.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/nfs/rpcv2.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/nfs/xdr_subs.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatalk/aarp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatalk/at.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatalk/at_extern.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatalk/at_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatalk/ddp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatalk/ddp_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatalk/endian.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatalk/phase2.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatm/atm.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatm/atm_cm.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatm/atm_if.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatm/atm_ioctl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatm/atm_pcb.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatm/atm_sap.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatm/atm_sigmgr.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatm/atm_stack.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatm/atm_sys.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatm/atm_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatm/atm_vc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatm/kern_include.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatm/port.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netatm/queue.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/netgraph.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_UI.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_async.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_bpf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_bridge.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_cisco.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_echo.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_ether.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_frame_relay.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_hole.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_iface.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_ksocket.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_lmi.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_message.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_mppc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_one2many.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_parse.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_ppp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_pppoe.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_pptpgre.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_rfc1490.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_sample.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_socket.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_socketvar.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_tee.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_tty.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_vjc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_eiface.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_etf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_device.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_l2tp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netgraph/ng_fec.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/icmp6.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/icmp_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/if_atm.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/if_ether.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/if_fddi.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/igmp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/igmp_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/in.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/in_gif.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/in_hostcache.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/in_pcb.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/in_systm.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/in_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ip.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ip6.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ip_auth.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ip_compat.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ip_dummynet.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ip_ecn.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ip_encap.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ip_fil.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ip_flow.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ip_frag.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ip_fw.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ip_icmp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ip_mroute.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ip_nat.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ip_proxy.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ip_state.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ip_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ipl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ipprotosw.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/tcp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/tcp_debug.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/tcp_fsm.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/tcp_seq.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/tcp_timer.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/tcp_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/tcpip.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/udp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/udp_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ip_fw2.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet/ip_gre.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/ah.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/ah6.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/esp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/esp6.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/icmp6.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/in6.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/in6_gif.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/in6_ifattach.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/in6_pcb.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/in6_prefix.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/in6_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/ip6.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/ip6_ecn.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/ip6_fw.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/ip6_mroute.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/ip6_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/ip6protosw.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/ipcomp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/ipcomp6.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/ipsec.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/ipsec6.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/mld6_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/nd6.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/pim6.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/pim6_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/scope6_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/tcp6_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/udp6_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/esp_rijndael.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netinet6/raw_ip6.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipx/ipx.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipx/ipx_if.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipx/ipx_ip.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipx/ipx_pcb.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipx/ipx_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipx/spx.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipx/spx_debug.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipx/spx_timer.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipx/spx_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netkey/key.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netkey/key_debug.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netkey/key_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netkey/keydb.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netkey/keysock.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netnatm/natm.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netncp/ncp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netncp/ncp_cfg.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netncp/ncp_conn.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netncp/ncp_file.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netncp/ncp_lib.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netncp/ncp_ncp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netncp/ncp_nls.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netncp/ncp_rcfile.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netncp/ncp_rq.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netncp/ncp_sock.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netncp/ncp_subr.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netncp/ncp_user.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netncp/nwerror.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netns/idp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netns/idp_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netns/ns.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netns/ns_error.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netns/ns_if.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netns/ns_pcb.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netns/sp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netns/spidp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netns/spp_debug.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netns/spp_timer.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netns/spp_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ntfs/ntfs.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ntfs/ntfs_compr.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ntfs/ntfs_ihash.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ntfs/ntfs_inode.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ntfs/ntfs_subr.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ntfs/ntfs_vfsops.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ntfs/ntfsmount.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/nwfs/nwfs.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/nwfs/nwfs_mount.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/nwfs/nwfs_node.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/nwfs/nwfs_subr.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/objc/NXConstStr.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/objc/Object.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/objc/Protocol.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/objc/encoding.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/objc/hash.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/objc/objc-api.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/objc/objc-list.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/objc/objc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/objc/runtime.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/objc/sarray.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/objc/thr.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/objc/typedstream.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/asn1.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/asn1_mac.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/bio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/blowfish.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/bn.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/buffer.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/cast.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/comp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/conf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/conf_api.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/crypto.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/des.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/dh.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/dsa.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/dso.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/e_os.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/e_os2.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/ebcdic.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/err.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/evp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/hmac.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/lhash.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/md2.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/md4.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/md5.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/mdc2.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/obj_mac.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/objects.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/opensslconf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/opensslv.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/pem.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/pem2.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/pkcs12.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/pkcs7.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/rand.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/rc2.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/rc4.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/rc5.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/ripemd.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/rsa.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/safestack.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/sha.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/ssl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/ssl2.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/ssl23.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/ssl3.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/ssl_locl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/stack.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/symhacks.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/tls1.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/tmdiff.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/txt_db.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/x509.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/x509_vfy.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/x509v3.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/idea.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/aes.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/asn1t.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/cryptlib.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/des_old.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/ec.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/engine.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/krb5_asn.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/kssl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/ocsp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/ossl_typ.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/ui.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/ui_compat.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/aes_locl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/eng_int.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/hw_4758_cca_err.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/hw_aep_err.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/hw_atalla_err.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/hw_cswift_err.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/hw_ncipher_err.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/hw_nuron_err.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/hw_sureware_err.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/hw_ubsec_err.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/openssl/ui_locl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/pccard/cardinfo.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/pccard/cis.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/pccard/driver.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/pccard/i82365.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/pccard/pccard_nbk.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/pccard/slot.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/pccard/meciareg.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/pccard/pcic_pci.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/pccard/pcicvar.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/posix4/aio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/posix4/mqueue.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/posix4/posix4.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/posix4/sched.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/posix4/semaphore.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/protocols/dumprestore.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/protocols/routed.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/protocols/rwhod.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/protocols/talkd.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/protocols/timed.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/readline/chardefs.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/readline/history.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/readline/keymaps.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/readline/readline.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/readline/rlconf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/readline/rlstdc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/readline/tilde.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpc/auth.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpc/auth_des.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpc/auth_unix.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpc/clnt.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpc/des.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpc/des_crypt.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpc/key_prot.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpc/pmap_clnt.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpc/pmap_prot.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpc/pmap_rmt.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpc/rpc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpc/rpc_com.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpc/rpc_msg.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpc/svc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpc/svc_auth.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpc/types.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpc/xdr.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/bootparam_prot.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/crypt.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/key_prot.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/klm_prot.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/mount.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/nfs_prot.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/nis.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/nis_cache.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/nis_callback.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/nis_db.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/nis_tags.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/nislib.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/nlm_prot.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/rex.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/rnusers.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/rquota.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/rstat.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/rwall.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/sm_inter.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/spray.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/yp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/yp_prot.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/ypclnt.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/yppasswd.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/ypupdate_prot.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/rpcsvc/ypxfrd.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/security/_pam_compat.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/security/_pam_macros.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/security/_pam_types.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/security/pam_appl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/security/pam_malloc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/security/pam_misc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/security/pam_mod_misc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/security/pam_modules.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ss/mit-sipb-copyright.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ss/ss.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/ss/ss_err.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/_posix.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/ata.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/acct.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/acl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/agpio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/aio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/assym.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/blist.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/buf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/bus.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/bus_private.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/callout.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/ccdvar.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/cdefs.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/cdio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/cdrio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/chio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/clist.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/endian.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/conf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/cons.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/consio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/copyright.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/ctype.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/dir.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/dataacq.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/link_elf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/device_port.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/devicestat.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/dirent.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/disk.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/disklabel.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/diskslice.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/dkstat.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/dmap.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/domain.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/dvdio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/elf32.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/elf64.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/elf_common.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/elf_generic.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/errno.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/event.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/eventhandler.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/eventvar.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/exec.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/extattr.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/fbio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/fcntl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/file.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/filedesc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/filio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/gmon.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/imgact.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/imgact_aout.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/imgact_elf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/inflate.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/interrupt.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/inttypes.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/ioccom.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/ioctl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/ioctl_compat.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/ipc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/jail.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/joystick.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/kbio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/kernel.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/kthread.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/ktrace.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/libkern.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/linker.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/linker_set.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/lock.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/lockf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/malloc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/mbuf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/md5.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/memrange.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/mman.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/module.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/mount.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/msg.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/msgbuf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/mtio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/namei.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/param.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/pciio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/pioctl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/pipe.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/poll.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/proc.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/procfs.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/protosw.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/ptio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/ptrace.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/queue.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/random.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/reboot.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/resource.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/resourcevar.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/rman.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/rtprio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/sbuf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/select.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/sem.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/shm.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/signal.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/signalvar.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/snoop.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/socket.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/socketvar.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/sockio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/soundcard.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/stat.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/syscall-hide.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/syscall.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/sysctl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/sysent.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/syslimits.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/syslog.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/sysproto.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/systm.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/taskqueue.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/termios.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/time.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/timeb.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/timepps.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/timers.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/times.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/timex.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/tprintf.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/tty.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/ttychars.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/ttycom.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/ttydefaults.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/ttydev.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/types.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/ucontext.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/ucred.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/uio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/un.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/unistd.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/unpcb.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/user.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/utsname.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/vmmeter.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/vnioctl.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/vnode.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/wait.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/wormio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/xrpuio.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/kobj.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/link_aout.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/nlist_aout.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/mchain.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/fnv_hash.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/iconv.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/sys/md4.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/vm/pmap.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/vm/swap_pager.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/vm/vm.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/vm/vm_extern.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/vm/vm_kern.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/vm/vm_map.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/vm/vm_object.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/vm/vm_page.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/vm/vm_pageout.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/vm/vm_pager.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/vm/vm_param.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/vm/vm_zone.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/vm/vnode_pager.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/complex.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/stdbool.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/langinfo.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netsmb/netbios.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netsmb/smb.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netsmb/smb_conn.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netsmb/smb_dev.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netsmb/smb_rq.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netsmb/smb_subr.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netsmb/smb_tran.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netsmb/smb_trantcp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/g2c.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/telnet.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/elf-hints.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/libusbhid.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/radlib_vs.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/readpassphrase.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/wchar.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/wctype.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/crypto/cast.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/crypto/castsb.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/crypto/cryptodev.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/crypto/cryptosoft.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/crypto/deflate.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/crypto/rijndael.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/crypto/rmd160.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/crypto/skipjack.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/crypto/xform.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipsec/ah.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipsec/ah_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipsec/esp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipsec/esp_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipsec/ipcomp.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipsec/ipcomp_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipsec/ipip_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipsec/ipsec.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipsec/ipsec6.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipsec/key.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipsec/key_debug.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipsec/key_var.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipsec/keydb.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipsec/keysock.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/netipsec/xform.ph OLD_FILES+=usr/libdata/perl/5.00503/mach/bzlib.ph OLD_FILES+=usr/libdata/perl/5.00503/pod/perl.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perl5004delta.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlapio.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlbook.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlbot.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlcall.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perldata.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perldebug.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perldelta.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perldiag.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perldsc.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlembed.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlfaq.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlfaq1.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlfaq2.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlfaq3.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlfaq4.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlfaq5.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlfaq6.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlfaq7.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlipc.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlfaq8.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlfaq9.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlform.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlfunc.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlguts.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlhist.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perllocale.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perllol.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlmod.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlmodinstall.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlmodlib.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlobj.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlop.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlopentut.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlpod.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlport.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlre.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlref.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlreftut.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlrun.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlsec.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlstyle.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlsub.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlsyn.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlthrtut.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perltie.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perltoc.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perltoot.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perltrap.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlvar.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlxs.pod OLD_FILES+=usr/libdata/perl/5.00503/pod/perlxstut.pod OLD_FILES+=usr/libdata/perl/5.00503/AnyDBM_File.pm OLD_FILES+=usr/libdata/perl/5.00503/AutoLoader.pm OLD_FILES+=usr/libdata/perl/5.00503/AutoSplit.pm OLD_FILES+=usr/libdata/perl/5.00503/Benchmark.pm OLD_FILES+=usr/libdata/perl/5.00503/CGI.pm OLD_FILES+=usr/libdata/perl/5.00503/CPAN.pm OLD_FILES+=usr/libdata/perl/5.00503/Carp.pm OLD_FILES+=usr/libdata/perl/5.00503/Cwd.pm OLD_FILES+=usr/libdata/perl/5.00503/DirHandle.pm OLD_FILES+=usr/libdata/perl/5.00503/Dumpvalue.pm OLD_FILES+=usr/libdata/perl/5.00503/English.pm OLD_FILES+=usr/libdata/perl/5.00503/Env.pm OLD_FILES+=usr/libdata/perl/5.00503/Exporter.pm OLD_FILES+=usr/libdata/perl/5.00503/Fatal.pm OLD_FILES+=usr/libdata/perl/5.00503/FileCache.pm OLD_FILES+=usr/libdata/perl/5.00503/FileHandle.pm OLD_FILES+=usr/libdata/perl/5.00503/FindBin.pm OLD_FILES+=usr/libdata/perl/5.00503/SelectSaver.pm OLD_FILES+=usr/libdata/perl/5.00503/SelfLoader.pm OLD_FILES+=usr/libdata/perl/5.00503/Shell.pm OLD_FILES+=usr/libdata/perl/5.00503/Symbol.pm OLD_FILES+=usr/libdata/perl/5.00503/Test.pm OLD_FILES+=usr/libdata/perl/5.00503/abbrev.pl OLD_FILES+=usr/libdata/perl/5.00503/UNIVERSAL.pm OLD_FILES+=usr/libdata/perl/5.00503/assert.pl OLD_FILES+=usr/libdata/perl/5.00503/autouse.pm OLD_FILES+=usr/libdata/perl/5.00503/base.pm OLD_FILES+=usr/libdata/perl/5.00503/bigfloat.pl OLD_FILES+=usr/libdata/perl/5.00503/bigint.pl OLD_FILES+=usr/libdata/perl/5.00503/bigrat.pl OLD_FILES+=usr/libdata/perl/5.00503/blib.pm OLD_FILES+=usr/libdata/perl/5.00503/cacheout.pl OLD_FILES+=usr/libdata/perl/5.00503/chat2.pl OLD_FILES+=usr/libdata/perl/5.00503/complete.pl OLD_FILES+=usr/libdata/perl/5.00503/constant.pm OLD_FILES+=usr/libdata/perl/5.00503/ctime.pl OLD_FILES+=usr/libdata/perl/5.00503/diagnostics.pm OLD_FILES+=usr/libdata/perl/5.00503/dotsh.pl OLD_FILES+=usr/libdata/perl/5.00503/dumpvar.pl OLD_FILES+=usr/libdata/perl/5.00503/exceptions.pl OLD_FILES+=usr/libdata/perl/5.00503/fastcwd.pl OLD_FILES+=usr/libdata/perl/5.00503/fields.pm OLD_FILES+=usr/libdata/perl/5.00503/find.pl OLD_FILES+=usr/libdata/perl/5.00503/finddepth.pl OLD_FILES+=usr/libdata/perl/5.00503/flush.pl OLD_FILES+=usr/libdata/perl/5.00503/ftp.pl OLD_FILES+=usr/libdata/perl/5.00503/getcwd.pl OLD_FILES+=usr/libdata/perl/5.00503/getopt.pl OLD_FILES+=usr/libdata/perl/5.00503/getopts.pl OLD_FILES+=usr/libdata/perl/5.00503/hostname.pl OLD_FILES+=usr/libdata/perl/5.00503/importenv.pl OLD_FILES+=usr/libdata/perl/5.00503/integer.pm OLD_FILES+=usr/libdata/perl/5.00503/less.pm OLD_FILES+=usr/libdata/perl/5.00503/lib.pm OLD_FILES+=usr/libdata/perl/5.00503/locale.pm OLD_FILES+=usr/libdata/perl/5.00503/look.pl OLD_FILES+=usr/libdata/perl/5.00503/newgetopt.pl OLD_FILES+=usr/libdata/perl/5.00503/open2.pl OLD_FILES+=usr/libdata/perl/5.00503/open3.pl OLD_FILES+=usr/libdata/perl/5.00503/overload.pm OLD_FILES+=usr/libdata/perl/5.00503/perl5db.pl OLD_FILES+=usr/libdata/perl/5.00503/pwd.pl OLD_FILES+=usr/libdata/perl/5.00503/shellwords.pl OLD_FILES+=usr/libdata/perl/5.00503/sigtrap.pm OLD_FILES+=usr/libdata/perl/5.00503/stat.pl OLD_FILES+=usr/libdata/perl/5.00503/strict.pm OLD_FILES+=usr/libdata/perl/5.00503/subs.pm OLD_FILES+=usr/libdata/perl/5.00503/syslog.pl OLD_FILES+=usr/libdata/perl/5.00503/tainted.pl OLD_FILES+=usr/libdata/perl/5.00503/termcap.pl OLD_FILES+=usr/libdata/perl/5.00503/timelocal.pl OLD_FILES+=usr/libdata/perl/5.00503/validate.pl OLD_FILES+=usr/libdata/perl/5.00503/vars.pm OLD_FILES+=usr/libdata/perl/5.00503/re.pm OLD_FILES+=usr/libdata/perl/5.00503/Config.pm OLD_FILES+=usr/libdata/perl/5.00503/.exists OLD_FILES+=usr/libdata/perl/5.00503/DynaLoader.pm OLD_FILES+=usr/share/perl/man/man3/AnyDBM_File.3.gz OLD_FILES+=usr/share/perl/man/man3/AutoLoader.3.gz OLD_FILES+=usr/share/perl/man/man3/AutoSplit.3.gz OLD_FILES+=usr/share/perl/man/man3/B.3.gz OLD_FILES+=usr/share/perl/man/man3/B::Asmdata.3.gz OLD_FILES+=usr/share/perl/man/man3/B::Assembler.3.gz OLD_FILES+=usr/share/perl/man/man3/B::Bblock.3.gz OLD_FILES+=usr/share/perl/man/man3/B::Bytecode.3.gz OLD_FILES+=usr/share/perl/man/man3/B::C.3.gz OLD_FILES+=usr/share/perl/man/man3/B::CC.3.gz OLD_FILES+=usr/share/perl/man/man3/B::Debug.3.gz OLD_FILES+=usr/share/perl/man/man3/B::Deparse.3.gz OLD_FILES+=usr/share/perl/man/man3/B::Disassembler.3.gz OLD_FILES+=usr/share/perl/man/man3/B::Lint.3.gz OLD_FILES+=usr/share/perl/man/man3/B::Showlex.3.gz OLD_FILES+=usr/share/perl/man/man3/B::Stackobj.3.gz OLD_FILES+=usr/share/perl/man/man3/B::Terse.3.gz OLD_FILES+=usr/share/perl/man/man3/B::Xref.3.gz OLD_FILES+=usr/share/perl/man/man3/Benchmark.3.gz OLD_FILES+=usr/share/perl/man/man3/CGI.3.gz OLD_FILES+=usr/share/perl/man/man3/CGI::Apache.3.gz OLD_FILES+=usr/share/perl/man/man3/CGI::Carp.3.gz OLD_FILES+=usr/share/perl/man/man3/CGI::Cookie.3.gz OLD_FILES+=usr/share/perl/man/man3/CGI::Fast.3.gz OLD_FILES+=usr/share/perl/man/man3/CGI::Push.3.gz OLD_FILES+=usr/share/perl/man/man3/CGI::Switch.3.gz OLD_FILES+=usr/share/perl/man/man3/CPAN.3.gz OLD_FILES+=usr/share/perl/man/man3/CPAN::FirstTime.3.gz OLD_FILES+=usr/share/perl/man/man3/CPAN::Nox.3.gz OLD_FILES+=usr/share/perl/man/man3/Carp.3.gz OLD_FILES+=usr/share/perl/man/man3/Class::Struct.3.gz OLD_FILES+=usr/share/perl/man/man3/Config.3.gz OLD_FILES+=usr/share/perl/man/man3/Cwd.3.gz OLD_FILES+=usr/share/perl/man/man3/DB_File.3.gz OLD_FILES+=usr/share/perl/man/man3/Data::Dumper.3.gz OLD_FILES+=usr/share/perl/man/man3/Devel::SelfStubber.3.gz OLD_FILES+=usr/share/perl/man/man3/DirHandle.3.gz OLD_FILES+=usr/share/perl/man/man3/Dumpvalue.3.gz OLD_FILES+=usr/share/perl/man/man3/DynaLoader.3.gz OLD_FILES+=usr/share/perl/man/man3/English.3.gz OLD_FILES+=usr/share/perl/man/man3/Env.3.gz OLD_FILES+=usr/share/perl/man/man3/Exporter.3.gz OLD_FILES+=usr/share/perl/man/man3/ExtUtils::Command.3.gz OLD_FILES+=usr/share/perl/man/man3/ExtUtils::Embed.3.gz OLD_FILES+=usr/share/perl/man/man3/ExtUtils::Install.3.gz OLD_FILES+=usr/share/perl/man/man3/ExtUtils::Installed.3.gz OLD_FILES+=usr/share/perl/man/man3/ExtUtils::Liblist.3.gz OLD_FILES+=usr/share/perl/man/man3/ExtUtils::MM_OS2.3.gz OLD_FILES+=usr/share/perl/man/man3/ExtUtils::MM_Unix.3.gz OLD_FILES+=usr/share/perl/man/man3/ExtUtils::MM_VMS.3.gz OLD_FILES+=usr/share/perl/man/man3/ExtUtils::MM_Win32.3.gz OLD_FILES+=usr/share/perl/man/man3/ExtUtils::MakeMaker.3.gz OLD_FILES+=usr/share/perl/man/man3/ExtUtils::Manifest.3.gz OLD_FILES+=usr/share/perl/man/man3/ExtUtils::Mkbootstrap.3.gz OLD_FILES+=usr/share/perl/man/man3/ExtUtils::Mksymlists.3.gz OLD_FILES+=usr/share/perl/man/man3/ExtUtils::Packlist.3.gz OLD_FILES+=usr/share/perl/man/man3/ExtUtils::testlib.3.gz OLD_FILES+=usr/share/perl/man/man3/Fatal.3.gz OLD_FILES+=usr/share/perl/man/man3/Fcntl.3.gz OLD_FILES+=usr/share/perl/man/man3/File::Basename.3.gz OLD_FILES+=usr/share/perl/man/man3/File::CheckTree.3.gz OLD_FILES+=usr/share/perl/man/man3/File::Compare.3.gz OLD_FILES+=usr/share/perl/man/man3/File::Copy.3.gz OLD_FILES+=usr/share/perl/man/man3/File::DosGlob.3.gz OLD_FILES+=usr/share/perl/man/man3/File::Find.3.gz OLD_FILES+=usr/share/perl/man/man3/File::Path.3.gz OLD_FILES+=usr/share/perl/man/man3/File::Spec.3.gz OLD_FILES+=usr/share/perl/man/man3/File::Spec::Mac.3.gz OLD_FILES+=usr/share/perl/man/man3/File::Spec::OS2.3.gz OLD_FILES+=usr/share/perl/man/man3/File::Spec::Unix.3.gz OLD_FILES+=usr/share/perl/man/man3/File::Spec::VMS.3.gz OLD_FILES+=usr/share/perl/man/man3/File::Spec::Win32.3.gz OLD_FILES+=usr/share/perl/man/man3/File::stat.3.gz OLD_FILES+=usr/share/perl/man/man3/FileCache.3.gz OLD_FILES+=usr/share/perl/man/man3/IO.3.gz OLD_FILES+=usr/share/perl/man/man3/FileHandle.3.gz OLD_FILES+=usr/share/perl/man/man3/FindBin.3.gz OLD_FILES+=usr/share/perl/man/man3/GDBM_File.3.gz OLD_FILES+=usr/share/perl/man/man3/Getopt::Long.3.gz OLD_FILES+=usr/share/perl/man/man3/Getopt::Std.3.gz OLD_FILES+=usr/share/perl/man/man3/I18N::Collate.3.gz OLD_FILES+=usr/share/perl/man/man3/IO::File.3.gz OLD_FILES+=usr/share/perl/man/man3/IO::Handle.3.gz OLD_FILES+=usr/share/perl/man/man3/IO::Pipe.3.gz OLD_FILES+=usr/share/perl/man/man3/IO::Seekable.3.gz OLD_FILES+=usr/share/perl/man/man3/IO::Select.3.gz OLD_FILES+=usr/share/perl/man/man3/IO::Socket.3.gz OLD_FILES+=usr/share/perl/man/man3/IPC::Msg.3.gz OLD_FILES+=usr/share/perl/man/man3/IPC::Open2.3.gz OLD_FILES+=usr/share/perl/man/man3/IPC::Open3.3.gz OLD_FILES+=usr/share/perl/man/man3/IPC::Semaphore.3.gz OLD_FILES+=usr/share/perl/man/man3/IPC::SysV.3.gz OLD_FILES+=usr/share/perl/man/man3/Math::BigFloat.3.gz OLD_FILES+=usr/share/perl/man/man3/Math::BigInt.3.gz OLD_FILES+=usr/share/perl/man/man3/Math::Complex.3.gz OLD_FILES+=usr/share/perl/man/man3/Math::Trig.3.gz OLD_FILES+=usr/share/perl/man/man3/NDBM_File.3.gz OLD_FILES+=usr/share/perl/man/man3/Net::Ping.3.gz OLD_FILES+=usr/share/perl/man/man3/Net::hostent.3.gz OLD_FILES+=usr/share/perl/man/man3/Net::netent.3.gz OLD_FILES+=usr/share/perl/man/man3/Net::protoent.3.gz OLD_FILES+=usr/share/perl/man/man3/Net::servent.3.gz OLD_FILES+=usr/share/perl/man/man3/O.3.gz OLD_FILES+=usr/share/perl/man/man3/ODBM_File.3.gz OLD_FILES+=usr/share/perl/man/man3/Opcode.3.gz OLD_FILES+=usr/share/perl/man/man3/POSIX.3.gz OLD_FILES+=usr/share/perl/man/man3/Pod::Html.3.gz OLD_FILES+=usr/share/perl/man/man3/Pod::Text.3.gz OLD_FILES+=usr/share/perl/man/man3/SDBM_File.3.gz OLD_FILES+=usr/share/perl/man/man3/Safe.3.gz OLD_FILES+=usr/share/perl/man/man3/Search::Dict.3.gz OLD_FILES+=usr/share/perl/man/man3/SelectSaver.3.gz OLD_FILES+=usr/share/perl/man/man3/SelfLoader.3.gz OLD_FILES+=usr/share/perl/man/man3/Shell.3.gz OLD_FILES+=usr/share/perl/man/man3/Socket.3.gz OLD_FILES+=usr/share/perl/man/man3/Symbol.3.gz OLD_FILES+=usr/share/perl/man/man3/re.3.gz OLD_FILES+=usr/share/perl/man/man3/Sys::Hostname.3.gz OLD_FILES+=usr/share/perl/man/man3/Sys::Syslog.3.gz OLD_FILES+=usr/share/perl/man/man3/Term::Cap.3.gz OLD_FILES+=usr/share/perl/man/man3/Term::Complete.3.gz OLD_FILES+=usr/share/perl/man/man3/Term::ReadLine.3.gz OLD_FILES+=usr/share/perl/man/man3/Test.3.gz OLD_FILES+=usr/share/perl/man/man3/Test::Harness.3.gz OLD_FILES+=usr/share/perl/man/man3/Text::Abbrev.3.gz OLD_FILES+=usr/share/perl/man/man3/Text::ParseWords.3.gz OLD_FILES+=usr/share/perl/man/man3/Text::Soundex.3.gz OLD_FILES+=usr/share/perl/man/man3/Text::Tabs.3.gz OLD_FILES+=usr/share/perl/man/man3/Text::Wrap.3.gz OLD_FILES+=usr/share/perl/man/man3/Thread.3.gz OLD_FILES+=usr/share/perl/man/man3/Thread::Queue.3.gz OLD_FILES+=usr/share/perl/man/man3/Thread::Semaphore.3.gz OLD_FILES+=usr/share/perl/man/man3/Thread::Signal.3.gz OLD_FILES+=usr/share/perl/man/man3/Thread::Specific.3.gz OLD_FILES+=usr/share/perl/man/man3/Tie::Array.3.gz OLD_FILES+=usr/share/perl/man/man3/Tie::Handle.3.gz OLD_FILES+=usr/share/perl/man/man3/Tie::Hash.3.gz OLD_FILES+=usr/share/perl/man/man3/Tie::RefHash.3.gz OLD_FILES+=usr/share/perl/man/man3/Tie::Scalar.3.gz OLD_FILES+=usr/share/perl/man/man3/Tie::SubstrHash.3.gz OLD_FILES+=usr/share/perl/man/man3/Time::Local.3.gz OLD_FILES+=usr/share/perl/man/man3/Time::gmtime.3.gz OLD_FILES+=usr/share/perl/man/man3/Time::localtime.3.gz OLD_FILES+=usr/share/perl/man/man3/Time::tm.3.gz OLD_FILES+=usr/share/perl/man/man3/UNIVERSAL.3.gz OLD_FILES+=usr/share/perl/man/man3/User::grent.3.gz OLD_FILES+=usr/share/perl/man/man3/User::pwent.3.gz OLD_FILES+=usr/share/perl/man/man3/attrs.3.gz OLD_FILES+=usr/share/perl/man/man3/autouse.3.gz OLD_FILES+=usr/share/perl/man/man3/base.3.gz OLD_FILES+=usr/share/perl/man/man3/blib.3.gz OLD_FILES+=usr/share/perl/man/man3/constant.3.gz OLD_FILES+=usr/share/perl/man/man3/diagnostics.3.gz OLD_FILES+=usr/share/perl/man/man3/fields.3.gz OLD_FILES+=usr/share/perl/man/man3/integer.3.gz OLD_FILES+=usr/share/perl/man/man3/less.3.gz OLD_FILES+=usr/share/perl/man/man3/lib.3.gz OLD_FILES+=usr/share/perl/man/man3/locale.3.gz OLD_FILES+=usr/share/perl/man/man3/ops.3.gz OLD_FILES+=usr/share/perl/man/man3/overload.3.gz OLD_FILES+=usr/share/perl/man/man3/sigtrap.3.gz OLD_FILES+=usr/share/perl/man/man3/strict.3.gz OLD_FILES+=usr/share/perl/man/man3/subs.3.gz OLD_FILES+=usr/share/perl/man/man3/vars.3.gz OLD_FILES+=usr/share/perl/man/man3/B::Stash.3.gz OLD_FILES+=usr/share/perl/man/man3/ByteLoader.3.gz OLD_FILES+=usr/share/perl/man/man3/CGI::Pretty.3.gz OLD_FILES+=usr/share/perl/man/man3/Carp::Heavy.3.gz OLD_FILES+=usr/share/perl/man/man3/DB.3.gz OLD_FILES+=usr/share/perl/man/man3/DProf::DProf.3.gz OLD_FILES+=usr/share/perl/man/man3/Exporter::Heavy.3.gz OLD_FILES+=usr/share/perl/man/man3/ExtUtils::MM_Cygwin.3.gz OLD_FILES+=usr/share/perl/man/man3/File::Glob.3.gz OLD_FILES+=usr/share/perl/man/man3/Glob::Glob.3.gz OLD_FILES+=usr/share/perl/man/man3/Hostname::Hostname.3.gz OLD_FILES+=usr/share/perl/man/man3/IO::Dir.3.gz OLD_FILES+=usr/share/perl/man/man3/IO::Poll.3.gz OLD_FILES+=usr/share/perl/man/man3/IO::Socket::INET.3.gz OLD_FILES+=usr/share/perl/man/man3/IO::Socket::UNIX.3.gz OLD_FILES+=usr/share/perl/man/man3/Peek::Peek.3.gz OLD_FILES+=usr/share/perl/man/man3/Pod::Checker.3.gz OLD_FILES+=usr/share/perl/man/man3/Pod::Find.3.gz OLD_FILES+=usr/share/perl/man/man3/Pod::InputObjects.3.gz OLD_FILES+=usr/share/perl/man/man3/Pod::Man.3.gz OLD_FILES+=usr/share/perl/man/man3/Pod::ParseUtils.3.gz OLD_FILES+=usr/share/perl/man/man3/Pod::Parser.3.gz OLD_FILES+=usr/share/perl/man/man3/Pod::Plainer.3.gz OLD_FILES+=usr/share/perl/man/man3/Pod::Select.3.gz OLD_FILES+=usr/share/perl/man/man3/Pod::Text::Color.3.gz OLD_FILES+=usr/share/perl/man/man3/Pod::Text::Termcap.3.gz OLD_FILES+=usr/share/perl/man/man3/Pod::Usage.3.gz OLD_FILES+=usr/share/perl/man/man3/Syslog::Syslog.3.gz OLD_FILES+=usr/share/perl/man/man3/Term::ANSIColor.3.gz OLD_FILES+=usr/share/perl/man/man3/XSLoader.3.gz OLD_FILES+=usr/share/perl/man/man3/attributes.3.gz OLD_FILES+=usr/share/perl/man/man3/bytes.3.gz OLD_FILES+=usr/share/perl/man/man3/charnames.3.gz OLD_FILES+=usr/share/perl/man/man3/filetest.3.gz OLD_FILES+=usr/share/perl/man/man3/open.3.gz OLD_FILES+=usr/share/perl/man/man3/utf8.3.gz OLD_FILES+=usr/share/perl/man/man3/warnings.3.gz OLD_FILES+=usr/share/perl/man/man3/warnings::register.3.gz OLD_FILES+=usr/share/perl/man/whatis OLD_FILES+=usr/share/man/man1/CA.pl.1.gz OLD_FILES+=usr/share/man/man1/asn1parse.1.gz OLD_FILES+=usr/share/man/man1/ca.1.gz OLD_FILES+=usr/share/man/man1/ciphers.1.gz OLD_FILES+=usr/share/man/man1/config.1.gz OLD_FILES+=usr/share/man/man1/crl.1.gz OLD_FILES+=usr/share/man/man1/crl2pkcs7.1.gz OLD_FILES+=usr/share/man/man1/dgst.1.gz OLD_FILES+=usr/share/man/man1/dhparam.1.gz OLD_FILES+=usr/share/man/man1/doscmd.1.gz OLD_FILES+=usr/share/man/man1/dsa.1.gz OLD_FILES+=usr/share/man/man1/dsaparam.1.gz OLD_FILES+=usr/share/man/man1/enc.1.gz OLD_FILES+=usr/share/man/man1/gendsa.1.gz OLD_FILES+=usr/share/man/man1/genrsa.1.gz OLD_FILES+=usr/share/man/man1/getNAME.1.gz OLD_FILES+=usr/share/man/man1/nseq.1.gz OLD_FILES+=usr/share/man/man1/ocsp.1.gz OLD_FILES+=usr/share/man/man1/openssl.1.gz OLD_FILES+=usr/share/man/man1/perl.1.gz OLD_FILES+=usr/share/man/man1/perl5004delta.1.gz OLD_FILES+=usr/share/man/man1/perlapio.1.gz OLD_FILES+=usr/share/man/man1/perlbook.1.gz OLD_FILES+=usr/share/man/man1/perlbot.1.gz OLD_FILES+=usr/share/man/man1/perlcall.1.gz OLD_FILES+=usr/share/man/man1/perldata.1.gz OLD_FILES+=usr/share/man/man1/perldebug.1.gz OLD_FILES+=usr/share/man/man1/perldelta.1.gz OLD_FILES+=usr/share/man/man1/perldiag.1.gz OLD_FILES+=usr/share/man/man1/perldsc.1.gz OLD_FILES+=usr/share/man/man1/perlembed.1.gz OLD_FILES+=usr/share/man/man1/perlfaq.1.gz OLD_FILES+=usr/share/man/man1/perlfaq1.1.gz OLD_FILES+=usr/share/man/man1/perlfaq2.1.gz OLD_FILES+=usr/share/man/man1/perlfaq3.1.gz OLD_FILES+=usr/share/man/man1/perlfaq4.1.gz OLD_FILES+=usr/share/man/man1/perlfaq5.1.gz OLD_FILES+=usr/share/man/man1/perlfaq6.1.gz OLD_FILES+=usr/share/man/man1/perlfaq7.1.gz OLD_FILES+=usr/share/man/man1/perlfaq8.1.gz OLD_FILES+=usr/share/man/man1/perlfaq9.1.gz OLD_FILES+=usr/share/man/man1/perlform.1.gz OLD_FILES+=usr/share/man/man1/perlfunc.1.gz OLD_FILES+=usr/share/man/man1/perlguts.1.gz OLD_FILES+=usr/share/man/man1/perlhist.1.gz OLD_FILES+=usr/share/man/man1/perlipc.1.gz OLD_FILES+=usr/share/man/man1/perllocale.1.gz OLD_FILES+=usr/share/man/man1/perllol.1.gz OLD_FILES+=usr/share/man/man1/perlmod.1.gz OLD_FILES+=usr/share/man/man1/perlmodinstall.1.gz OLD_FILES+=usr/share/man/man1/perlmodlib.1.gz OLD_FILES+=usr/share/man/man1/perlobj.1.gz OLD_FILES+=usr/share/man/man1/perlop.1.gz OLD_FILES+=usr/share/man/man1/perlopentut.1.gz OLD_FILES+=usr/share/man/man1/perlpod.1.gz OLD_FILES+=usr/share/man/man1/perlport.1.gz OLD_FILES+=usr/share/man/man1/perlre.1.gz OLD_FILES+=usr/share/man/man1/perlref.1.gz OLD_FILES+=usr/share/man/man1/perlreftut.1.gz OLD_FILES+=usr/share/man/man1/perlrun.1.gz OLD_FILES+=usr/share/man/man1/perlsec.1.gz OLD_FILES+=usr/share/man/man1/perlstyle.1.gz OLD_FILES+=usr/share/man/man1/perlsub.1.gz OLD_FILES+=usr/share/man/man1/perlsyn.1.gz OLD_FILES+=usr/share/man/man1/perlthrtut.1.gz OLD_FILES+=usr/share/man/man1/perltie.1.gz OLD_FILES+=usr/share/man/man1/perltoc.1.gz OLD_FILES+=usr/share/man/man1/perltoot.1.gz OLD_FILES+=usr/share/man/man1/perltrap.1.gz OLD_FILES+=usr/share/man/man1/perlvar.1.gz OLD_FILES+=usr/share/man/man1/perlxs.1.gz OLD_FILES+=usr/share/man/man1/perlxstut.1.gz OLD_FILES+=usr/share/man/man1/perlbug.1.gz OLD_FILES+=usr/share/man/man1/perlcc.1.gz OLD_FILES+=usr/share/man/man1/perldoc.1.gz OLD_FILES+=usr/share/man/man1/perl5005delta.1.gz OLD_FILES+=usr/share/man/man1/perlfork.1.gz OLD_FILES+=usr/share/man/man1/perlboot.1.gz OLD_FILES+=usr/share/man/man1/perltootc.1.gz OLD_FILES+=usr/share/man/man1/perldbmfilter.1.gz OLD_FILES+=usr/share/man/man1/perldebguts.1.gz OLD_FILES+=usr/share/man/man1/perlnumber.1.gz OLD_FILES+=usr/share/man/man1/perlcompile.1.gz OLD_FILES+=usr/share/man/man1/perltodo.1.gz OLD_FILES+=usr/share/man/man1/perlapi.1.gz OLD_FILES+=usr/share/man/man1/perlintern.1.gz OLD_FILES+=usr/share/man/man1/perlhack.1.gz OLD_FILES+=usr/share/man/man1/perlbc.1.gz OLD_FILES+=usr/share/man/man1/pkcs12.1.gz OLD_FILES+=usr/share/man/man1/pkcs7.1.gz OLD_FILES+=usr/share/man/man1/pkcs8.1.gz OLD_FILES+=usr/share/man/man1/rand.1.gz OLD_FILES+=usr/share/man/man1/req.1.gz OLD_FILES+=usr/share/man/man1/rsa.1.gz OLD_FILES+=usr/share/man/man1/rsautl.1.gz OLD_FILES+=usr/share/man/man1/s_client.1.gz OLD_FILES+=usr/share/man/man1/s_server.1.gz OLD_FILES+=usr/share/man/man1/sess_id.1.gz OLD_FILES+=usr/share/man/man1/smime.1.gz OLD_FILES+=usr/share/man/man1/speed.1.gz OLD_FILES+=usr/share/man/man1/spkac.1.gz OLD_FILES+=usr/share/man/man1/verify.1.gz OLD_FILES+=usr/share/man/man1/version.1.gz OLD_FILES+=usr/share/man/man1/x509.1.gz OLD_FILES+=usr/share/man/man3/SSL_COMP_add_compression_method.3.gz OLD_FILES+=usr/share/man/man3/SSL_CTX_get_ex_new_index.3.gz OLD_FILES+=usr/share/man/man3/archive_entry_dup.3.gz OLD_FILES+=usr/share/man/man3/archive_entry_set_tartype.3.gz OLD_FILES+=usr/share/man/man3/archive_entry_tartype.3.gz OLD_FILES+=usr/share/man/man3/archive_read_data_into_file.3.gz OLD_FILES+=usr/share/man/man3/archive_read_open_tar.3.gz OLD_FILES+=usr/share/man/man3/archive_read_support_format_gnutar.3.gz OLD_FILES+=usr/share/man/man3/cipher.3.gz OLD_FILES+=usr/share/man/man3/des_cipher.3.gz OLD_FILES+=usr/share/man/man3/des_setkey.3.gz OLD_FILES+=usr/share/man/man3/encrypt.3.gz OLD_FILES+=usr/share/man/man3/endvfsent.3.gz OLD_FILES+=usr/share/man/man3/getvfsbytype.3.gz OLD_FILES+=usr/share/man/man3/getvfsent.3.gz OLD_FILES+=usr/share/man/man3/isnanf.3.gz OLD_FILES+=usr/share/man/man3/libautofs.3.gz OLD_FILES+=usr/share/man/man3/pthread_attr_setsstack.3.gz OLD_FILES+=usr/share/man/man3/pthread_getcancelstate.3.gz OLD_FILES+=usr/share/man/man3/pthread_mutexattr_getpshared.3.gz OLD_FILES+=usr/share/man/man3/pthread_mutexattr_setpshared.3.gz OLD_FILES+=usr/share/man/man3/set_assertion_failure_callback.3.gz OLD_FILES+=usr/share/man/man3/setkey.3.gz OLD_FILES+=usr/share/man/man3/setvfsent.3.gz OLD_FILES+=usr/share/man/man3/ssl.3.gz OLD_FILES+=usr/share/man/man3/vfsisloadable.3.gz OLD_FILES+=usr/share/man/man3/vfsload.3.gz OLD_FILES+=usr/share/man/man4/als4000.4.gz OLD_FILES+=usr/share/man/man4/csa.4.gz OLD_FILES+=usr/share/man/man4/emu10k1.4.gz OLD_FILES+=usr/share/man/man4/euc.4.gz OLD_FILES+=usr/share/man/man4/gusc.4.gz OLD_FILES+=usr/share/man/man4/if_fwp.4.gz OLD_FILES+=usr/share/man/man4/lomac.4.gz OLD_FILES+=usr/share/man/man4/maestro3.4.gz OLD_FILES+=usr/share/man/man4/raid.4.gz OLD_FILES+=usr/share/man/man4/sbc.4.gz OLD_FILES+=usr/share/man/man4/sd.4.gz OLD_FILES+=usr/share/man/man4/snc.4.gz OLD_FILES+=usr/share/man/man4/st.4.gz OLD_FILES+=usr/share/man/man4/uaudio.4.gz OLD_FILES+=usr/share/man/man4/utf2.4.gz OLD_FILES+=usr/share/man/man4/vinumdebug.4.gz OLD_FILES+=usr/share/man/man5/disklabel.5.gz OLD_FILES+=usr/share/man/man5/dm.conf.5.gz OLD_FILES+=usr/share/man/man5/ranlib.5.gz OLD_FILES+=usr/share/man/man5/utf2.5.gz OLD_FILES+=usr/share/man/man7/groff_mwww.7.gz OLD_FILES+=usr/share/man/man7/mmroff.7.gz OLD_FILES+=usr/share/man/man7/mwww.7.gz OLD_FILES+=usr/share/man/man7/style.perl.7.gz OLD_FILES+=usr/share/man/man8/apm.8.gz OLD_FILES+=usr/share/man/man8/apmconf.8.gz OLD_FILES+=usr/share/man/man8/apmd.8.gz OLD_FILES+=usr/share/man/man8/dm.8.gz OLD_FILES+=usr/share/man/man8/pam_ftp.8.gz OLD_FILES+=usr/share/man/man8/pam_wheel.8.gz OLD_FILES+=usr/share/man/man8/sconfig.8.gz OLD_FILES+=usr/share/man/man8/ssl.8.gz OLD_FILES+=usr/share/man/man8/wlconfig.8.gz OLD_FILES+=usr/share/man/man9/CURSIG.9.gz OLD_FILES+=usr/share/man/man9/VFS_INIT.9.gz OLD_FILES+=usr/share/man/man9/at_exit.9.gz OLD_FILES+=usr/share/man/man9/at_fork.9.gz OLD_FILES+=usr/share/man/man9/cdevsw_add.9.gz OLD_FILES+=usr/share/man/man9/cdevsw_remove.9.gz OLD_FILES+=usr/share/man/man9/cv_waitq_empty.9.gz OLD_FILES+=usr/share/man/man9/cv_waitq_remove.9.gz OLD_FILES+=usr/share/man/man9/endtsleep.9.gz OLD_FILES+=usr/share/man/man9/jumbo.9.gz OLD_FILES+=usr/share/man/man9/jumbo_freem.9.gz OLD_FILES+=usr/share/man/man9/jumbo_pg_alloc.9.gz OLD_FILES+=usr/share/man/man9/jumbo_pg_free.9.gz OLD_FILES+=usr/share/man/man9/jumbo_pg_steal.9.gz OLD_FILES+=usr/share/man/man9/jumbo_phys_to_kva.9.gz OLD_FILES+=usr/share/man/man9/jumbo_vm_init.9.gz OLD_FILES+=usr/share/man/man9/mac_biba.9.gz OLD_FILES+=usr/share/man/man9/mac_bsdextended.9.gz OLD_FILES+=usr/share/man/man9/mono_time.9.gz OLD_FILES+=usr/share/man/man9/p1003_1b.9.gz OLD_FILES+=usr/share/man/man9/pmap_prefault.9.gz OLD_FILES+=usr/share/man/man9/posix4.9.gz OLD_FILES+=usr/share/man/man9/resource_query_name.9.gz OLD_FILES+=usr/share/man/man9/resource_query_string.9.gz OLD_FILES+=usr/share/man/man9/resource_query_unit.9.gz OLD_FILES+=usr/share/man/man9/rm_at_exit.9.gz OLD_FILES+=usr/share/man/man9/rm_at_fork.9.gz OLD_FILES+=usr/share/man/man9/runtime.9.gz OLD_FILES+=usr/share/man/man9/sleepinit.9.gz OLD_FILES+=usr/share/man/man9/unsleep.9.gz OLD_FILES+=usr/share/man/ja/man1/perl.1.gz OLD_FILES+=usr/share/games/atc/Game_List OLD_FILES+=usr/share/games/atc/Killer OLD_FILES+=usr/share/games/atc/crossover OLD_FILES+=usr/share/games/atc/default OLD_FILES+=usr/share/games/atc/easy OLD_FILES+=usr/share/games/atc/game_2 OLD_FILES+=usr/share/games/larn/larnmaze OLD_FILES+=usr/share/games/larn/larnopts OLD_FILES+=usr/share/games/larn/larn.help OLD_FILES+=usr/share/games/quiz.db/africa OLD_FILES+=usr/share/games/quiz.db/america OLD_FILES+=usr/share/games/quiz.db/areas OLD_FILES+=usr/share/games/quiz.db/arith OLD_FILES+=usr/share/games/quiz.db/asia OLD_FILES+=usr/share/games/quiz.db/babies OLD_FILES+=usr/share/games/quiz.db/bard OLD_FILES+=usr/share/games/quiz.db/chinese OLD_FILES+=usr/share/games/quiz.db/collectives OLD_FILES+=usr/share/games/quiz.db/ed OLD_FILES+=usr/share/games/quiz.db/elements OLD_FILES+=usr/share/games/quiz.db/europe OLD_FILES+=usr/share/games/quiz.db/flowers OLD_FILES+=usr/share/games/quiz.db/greek OLD_FILES+=usr/share/games/quiz.db/inca OLD_FILES+=usr/share/games/quiz.db/index OLD_FILES+=usr/share/games/quiz.db/latin OLD_FILES+=usr/share/games/quiz.db/locomotive OLD_FILES+=usr/share/games/quiz.db/midearth OLD_FILES+=usr/share/games/quiz.db/morse OLD_FILES+=usr/share/games/quiz.db/murders OLD_FILES+=usr/share/games/quiz.db/poetry OLD_FILES+=usr/share/games/quiz.db/posneg OLD_FILES+=usr/share/games/quiz.db/pres OLD_FILES+=usr/share/games/quiz.db/province OLD_FILES+=usr/share/games/quiz.db/seq-easy OLD_FILES+=usr/share/games/quiz.db/seq-hard OLD_FILES+=usr/share/games/quiz.db/sexes OLD_FILES+=usr/share/games/quiz.db/sov OLD_FILES+=usr/share/games/quiz.db/spell OLD_FILES+=usr/share/games/quiz.db/state OLD_FILES+=usr/share/games/quiz.db/trek OLD_FILES+=usr/share/games/quiz.db/ucc OLD_FILES+=usr/share/games/cribbage.instr OLD_FILES+=usr/share/games/fish.instr OLD_FILES+=usr/share/games/wump.info OLD_FILES+=usr/games/hide/adventure OLD_FILES+=usr/games/hide/arithmetic OLD_FILES+=usr/games/hide/atc OLD_FILES+=usr/games/hide/backgammon OLD_FILES+=usr/games/hide/teachgammon OLD_FILES+=usr/games/hide/battlestar OLD_FILES+=usr/games/hide/bs OLD_FILES+=usr/games/hide/canfield OLD_FILES+=usr/games/hide/cribbage OLD_FILES+=usr/games/hide/fish OLD_FILES+=usr/games/hide/hack OLD_FILES+=usr/games/hide/hangman OLD_FILES+=usr/games/hide/larn OLD_FILES+=usr/games/hide/mille OLD_FILES+=usr/games/hide/phantasia OLD_FILES+=usr/games/hide/quiz OLD_FILES+=usr/games/hide/robots OLD_FILES+=usr/games/hide/rogue OLD_FILES+=usr/games/hide/sail OLD_FILES+=usr/games/hide/snake OLD_FILES+=usr/games/hide/trek OLD_FILES+=usr/games/hide/worm OLD_FILES+=usr/games/hide/wump OLD_FILES+=usr/games/adventure OLD_FILES+=usr/games/arithmetic OLD_FILES+=usr/games/atc OLD_FILES+=usr/games/backgammon OLD_FILES+=usr/games/teachgammon OLD_FILES+=usr/games/battlestar OLD_FILES+=usr/games/bs OLD_FILES+=usr/games/canfield OLD_FILES+=usr/games/cfscores OLD_FILES+=usr/games/cribbage OLD_FILES+=usr/games/dm OLD_FILES+=usr/games/fish OLD_FILES+=usr/games/hack OLD_FILES+=usr/games/hangman OLD_FILES+=usr/games/larn OLD_FILES+=usr/games/mille OLD_FILES+=usr/games/phantasia OLD_FILES+=usr/games/piano OLD_FILES+=usr/games/pig OLD_FILES+=usr/games/quiz OLD_FILES+=usr/games/rain OLD_FILES+=usr/games/robots OLD_FILES+=usr/games/rogue OLD_FILES+=usr/games/sail OLD_FILES+=usr/games/snake OLD_FILES+=usr/games/snscore OLD_FILES+=usr/games/trek OLD_FILES+=usr/games/wargames OLD_FILES+=usr/games/worm OLD_FILES+=usr/games/worms OLD_FILES+=usr/games/wump OLD_FILES+=sbin/mount_reiserfs OLD_FILES+=usr/include/cam/cam_extend.h OLD_FILES+=usr/include/dev/wi/wi_hostap.h OLD_FILES+=usr/include/disktab.h OLD_FILES+=usr/include/g++/FlexLexer.h OLD_FILES+=usr/include/g++/PlotFile.h OLD_FILES+=usr/include/g++/SFile.h OLD_FILES+=usr/include/g++/_G_config.h OLD_FILES+=usr/include/g++/algo.h OLD_FILES+=usr/include/g++/algobase.h OLD_FILES+=usr/include/g++/algorithm OLD_FILES+=usr/include/g++/alloc.h OLD_FILES+=usr/include/g++/bitset OLD_FILES+=usr/include/g++/builtinbuf.h OLD_FILES+=usr/include/g++/bvector.h OLD_FILES+=usr/include/g++/cassert OLD_FILES+=usr/include/g++/cctype OLD_FILES+=usr/include/g++/cerrno OLD_FILES+=usr/include/g++/cfloat OLD_FILES+=usr/include/g++/ciso646 OLD_FILES+=usr/include/g++/climits OLD_FILES+=usr/include/g++/clocale OLD_FILES+=usr/include/g++/cmath OLD_FILES+=usr/include/g++/complex OLD_FILES+=usr/include/g++/complex.h OLD_FILES+=usr/include/g++/csetjmp OLD_FILES+=usr/include/g++/csignal OLD_FILES+=usr/include/g++/cstdarg OLD_FILES+=usr/include/g++/cstddef OLD_FILES+=usr/include/g++/cstdio OLD_FILES+=usr/include/g++/cstdlib OLD_FILES+=usr/include/g++/cstring OLD_FILES+=usr/include/g++/ctime OLD_FILES+=usr/include/g++/cwchar OLD_FILES+=usr/include/g++/cwctype OLD_FILES+=usr/include/g++/defalloc.h OLD_FILES+=usr/include/g++/deque OLD_FILES+=usr/include/g++/deque.h OLD_FILES+=usr/include/g++/editbuf.h OLD_FILES+=usr/include/g++/exception OLD_FILES+=usr/include/g++/floatio.h OLD_FILES+=usr/include/g++/fstream OLD_FILES+=usr/include/g++/fstream.h OLD_FILES+=usr/include/g++/function.h OLD_FILES+=usr/include/g++/functional OLD_FILES+=usr/include/g++/hash_map OLD_FILES+=usr/include/g++/hash_map.h OLD_FILES+=usr/include/g++/hash_set OLD_FILES+=usr/include/g++/hash_set.h OLD_FILES+=usr/include/g++/hashtable.h OLD_FILES+=usr/include/g++/heap.h OLD_FILES+=usr/include/g++/indstream.h OLD_FILES+=usr/include/g++/iolibio.h OLD_FILES+=usr/include/g++/iomanip OLD_FILES+=usr/include/g++/iomanip.h OLD_FILES+=usr/include/g++/iosfwd OLD_FILES+=usr/include/g++/iostdio.h OLD_FILES+=usr/include/g++/iostream OLD_FILES+=usr/include/g++/iostream.h OLD_FILES+=usr/include/g++/iostreamP.h OLD_FILES+=usr/include/g++/istream.h OLD_FILES+=usr/include/g++/iterator OLD_FILES+=usr/include/g++/iterator.h OLD_FILES+=usr/include/g++/libio.h OLD_FILES+=usr/include/g++/libioP.h OLD_FILES+=usr/include/g++/list OLD_FILES+=usr/include/g++/list.h OLD_FILES+=usr/include/g++/map OLD_FILES+=usr/include/g++/map.h OLD_FILES+=usr/include/g++/memory OLD_FILES+=usr/include/g++/multimap.h OLD_FILES+=usr/include/g++/multiset.h OLD_FILES+=usr/include/g++/new OLD_FILES+=usr/include/g++/new.h OLD_FILES+=usr/include/g++/numeric OLD_FILES+=usr/include/g++/ostream.h OLD_FILES+=usr/include/g++/pair.h OLD_FILES+=usr/include/g++/parsestream.h OLD_FILES+=usr/include/g++/pfstream.h OLD_FILES+=usr/include/g++/procbuf.h OLD_FILES+=usr/include/g++/pthread_alloc OLD_FILES+=usr/include/g++/pthread_alloc.h OLD_FILES+=usr/include/g++/queue OLD_FILES+=usr/include/g++/rope OLD_FILES+=usr/include/g++/rope.h OLD_FILES+=usr/include/g++/ropeimpl.h OLD_FILES+=usr/include/g++/set OLD_FILES+=usr/include/g++/set.h OLD_FILES+=usr/include/g++/slist OLD_FILES+=usr/include/g++/slist.h OLD_FILES+=usr/include/g++/sstream OLD_FILES+=usr/include/g++/stack OLD_FILES+=usr/include/g++/stack.h OLD_FILES+=usr/include/g++/std/bastring.cc OLD_FILES+=usr/include/g++/std/bastring.h OLD_FILES+=usr/include/g++/std/complext.cc OLD_FILES+=usr/include/g++/std/complext.h OLD_FILES+=usr/include/g++/std/dcomplex.h OLD_FILES+=usr/include/g++/std/fcomplex.h OLD_FILES+=usr/include/g++/std/gslice.h OLD_FILES+=usr/include/g++/std/gslice_array.h OLD_FILES+=usr/include/g++/std/indirect_array.h OLD_FILES+=usr/include/g++/std/ldcomplex.h OLD_FILES+=usr/include/g++/std/mask_array.h OLD_FILES+=usr/include/g++/std/slice.h OLD_FILES+=usr/include/g++/std/slice_array.h OLD_FILES+=usr/include/g++/std/std_valarray.h OLD_FILES+=usr/include/g++/std/straits.h OLD_FILES+=usr/include/g++/std/valarray_array.h OLD_FILES+=usr/include/g++/std/valarray_array.tcc OLD_FILES+=usr/include/g++/std/valarray_meta.h OLD_FILES+=usr/include/g++/stdexcept OLD_FILES+=usr/include/g++/stdiostream.h OLD_FILES+=usr/include/g++/stl.h OLD_FILES+=usr/include/g++/stl_algo.h OLD_FILES+=usr/include/g++/stl_algobase.h OLD_FILES+=usr/include/g++/stl_alloc.h OLD_FILES+=usr/include/g++/stl_bvector.h OLD_FILES+=usr/include/g++/stl_config.h OLD_FILES+=usr/include/g++/stl_construct.h OLD_FILES+=usr/include/g++/stl_deque.h OLD_FILES+=usr/include/g++/stl_function.h OLD_FILES+=usr/include/g++/stl_hash_fun.h OLD_FILES+=usr/include/g++/stl_hash_map.h OLD_FILES+=usr/include/g++/stl_hash_set.h OLD_FILES+=usr/include/g++/stl_hashtable.h OLD_FILES+=usr/include/g++/stl_heap.h OLD_FILES+=usr/include/g++/stl_iterator.h OLD_FILES+=usr/include/g++/stl_list.h OLD_FILES+=usr/include/g++/stl_map.h OLD_FILES+=usr/include/g++/stl_multimap.h OLD_FILES+=usr/include/g++/stl_multiset.h OLD_FILES+=usr/include/g++/stl_numeric.h OLD_FILES+=usr/include/g++/stl_pair.h OLD_FILES+=usr/include/g++/stl_queue.h OLD_FILES+=usr/include/g++/stl_raw_storage_iter.h OLD_FILES+=usr/include/g++/stl_relops.h OLD_FILES+=usr/include/g++/stl_rope.h OLD_FILES+=usr/include/g++/stl_set.h OLD_FILES+=usr/include/g++/stl_slist.h OLD_FILES+=usr/include/g++/stl_stack.h OLD_FILES+=usr/include/g++/stl_tempbuf.h OLD_FILES+=usr/include/g++/stl_tree.h OLD_FILES+=usr/include/g++/stl_uninitialized.h OLD_FILES+=usr/include/g++/stl_vector.h OLD_FILES+=usr/include/g++/stream.h OLD_FILES+=usr/include/g++/streambuf.h OLD_FILES+=usr/include/g++/strfile.h OLD_FILES+=usr/include/g++/string OLD_FILES+=usr/include/g++/strstream OLD_FILES+=usr/include/g++/strstream.h OLD_FILES+=usr/include/g++/tempbuf.h OLD_FILES+=usr/include/g++/tree.h OLD_FILES+=usr/include/g++/type_traits.h OLD_FILES+=usr/include/g++/typeinfo OLD_FILES+=usr/include/g++/utility OLD_FILES+=usr/include/g++/valarray OLD_FILES+=usr/include/g++/vector OLD_FILES+=usr/include/g++/vector.h OLD_FILES+=usr/include/gmp.h OLD_FILES+=usr/include/isc/assertions.h OLD_FILES+=usr/include/isc/ctl.h OLD_FILES+=usr/include/isc/dst.h OLD_FILES+=usr/include/isc/eventlib.h OLD_FILES+=usr/include/isc/heap.h OLD_FILES+=usr/include/isc/irpmarshall.h OLD_FILES+=usr/include/isc/list.h OLD_FILES+=usr/include/isc/logging.h OLD_FILES+=usr/include/isc/memcluster.h OLD_FILES+=usr/include/isc/misc.h OLD_FILES+=usr/include/isc/tree.h OLD_FILES+=usr/include/machine/ansi.h OLD_FILES+=usr/include/machine/apic.h OLD_FILES+=usr/include/machine/asc_ioctl.h OLD_FILES+=usr/include/machine/asnames.h OLD_FILES+=usr/include/machine/bus_at386.h OLD_FILES+=usr/include/machine/bus_memio.h OLD_FILES+=usr/include/machine/bus_pc98.h OLD_FILES+=usr/include/machine/bus_pio.h OLD_FILES+=usr/include/machine/cdk.h OLD_FILES+=usr/include/machine/comstats.h OLD_FILES+=usr/include/machine/console.h OLD_FILES+=usr/include/machine/critical.h OLD_FILES+=usr/include/machine/cronyx.h OLD_FILES+=usr/include/machine/dvcfg.h OLD_FILES+=usr/include/machine/globaldata.h OLD_FILES+=usr/include/machine/globals.h OLD_FILES+=usr/include/machine/gsc.h OLD_FILES+=usr/include/machine/i4b_isppp.h OLD_FILES+=usr/include/machine/if_wavelan_ieee.h OLD_FILES+=usr/include/machine/iic.h OLD_FILES+=usr/include/machine/ioctl_ctx.h OLD_FILES+=usr/include/machine/ioctl_fd.h OLD_FILES+=usr/include/machine/ipl.h OLD_FILES+=usr/include/machine/lock.h OLD_FILES+=usr/include/machine/mouse.h OLD_FILES+=usr/include/machine/mpapic.h OLD_FILES+=usr/include/machine/mtpr.h OLD_FILES+=usr/include/machine/pc/msdos.h OLD_FILES+=usr/include/machine/physio_proc.h OLD_FILES+=usr/include/machine/smb.h OLD_FILES+=usr/include/machine/spigot.h OLD_FILES+=usr/include/machine/types.h OLD_FILES+=usr/include/machine/uc_device.h OLD_FILES+=usr/include/machine/ultrasound.h OLD_FILES+=usr/include/machine/wtio.h OLD_FILES+=usr/include/msdosfs/bootsect.h OLD_FILES+=usr/include/msdosfs/bpb.h OLD_FILES+=usr/include/msdosfs/denode.h OLD_FILES+=usr/include/msdosfs/direntry.h OLD_FILES+=usr/include/msdosfs/fat.h OLD_FILES+=usr/include/msdosfs/msdosfsmount.h OLD_FILES+=usr/include/net/hostcache.h OLD_FILES+=usr/include/net/if_faith.h OLD_FILES+=usr/include/net/if_ieee80211.h OLD_FILES+=usr/include/net/if_tunvar.h OLD_FILES+=usr/include/net/intrq.h OLD_FILES+=usr/include/netatm/kern_include.h OLD_FILES+=usr/include/netinet/if_fddi.h OLD_FILES+=usr/include/netinet/in_hostcache.h OLD_FILES+=usr/include/netinet/ip_flow.h OLD_FILES+=usr/include/netinet/ip_fw2.h OLD_FILES+=usr/include/netinet6/in6_prefix.h OLD_FILES+=usr/include/netns/idp.h OLD_FILES+=usr/include/netns/idp_var.h OLD_FILES+=usr/include/netns/ns.h OLD_FILES+=usr/include/netns/ns_error.h OLD_FILES+=usr/include/netns/ns_if.h OLD_FILES+=usr/include/netns/ns_pcb.h OLD_FILES+=usr/include/netns/sp.h OLD_FILES+=usr/include/netns/spidp.h OLD_FILES+=usr/include/netns/spp_debug.h OLD_FILES+=usr/include/netns/spp_timer.h OLD_FILES+=usr/include/netns/spp_var.h OLD_FILES+=usr/include/nfs/nfs.h OLD_FILES+=usr/include/nfs/nfsm_subs.h OLD_FILES+=usr/include/nfs/nfsmount.h OLD_FILES+=usr/include/nfs/nfsnode.h OLD_FILES+=usr/include/nfs/nfsrtt.h OLD_FILES+=usr/include/nfs/nfsrvcache.h OLD_FILES+=usr/include/nfs/nfsv2.h OLD_FILES+=usr/include/nfs/nqnfs.h OLD_FILES+=usr/include/ntfs/ntfs.h OLD_FILES+=usr/include/ntfs/ntfs_compr.h OLD_FILES+=usr/include/ntfs/ntfs_ihash.h OLD_FILES+=usr/include/ntfs/ntfs_inode.h OLD_FILES+=usr/include/ntfs/ntfs_subr.h OLD_FILES+=usr/include/ntfs/ntfs_vfsops.h OLD_FILES+=usr/include/ntfs/ntfsmount.h OLD_FILES+=usr/include/nwfs/nwfs.h OLD_FILES+=usr/include/nwfs/nwfs_mount.h OLD_FILES+=usr/include/nwfs/nwfs_node.h OLD_FILES+=usr/include/nwfs/nwfs_subr.h OLD_FILES+=usr/include/posix4/_semaphore.h OLD_FILES+=usr/include/posix4/aio.h OLD_FILES+=usr/include/posix4/ksem.h OLD_FILES+=usr/include/posix4/mqueue.h OLD_FILES+=usr/include/posix4/posix4.h OLD_FILES+=usr/include/posix4/sched.h OLD_FILES+=usr/include/posix4/semaphore.h OLD_DIRS+=usr/include/posix4 OLD_FILES+=usr/include/security/_pam_compat.h OLD_FILES+=usr/include/security/_pam_macros.h OLD_FILES+=usr/include/security/_pam_types.h OLD_FILES+=usr/include/security/pam_malloc.h OLD_FILES+=usr/include/security/pam_misc.h OLD_FILES+=usr/include/skey.h OLD_FILES+=usr/include/strhash.h OLD_FILES+=usr/include/struct.h OLD_FILES+=usr/include/sys/_label.h OLD_FILES+=usr/include/sys/_posix.h OLD_FILES+=usr/include/sys/bus_private.h OLD_FILES+=usr/include/sys/ccdvar.h OLD_FILES+=usr/include/sys/diskslice.h OLD_FILES+=usr/include/sys/dmap.h OLD_FILES+=usr/include/sys/inttypes.h OLD_FILES+=usr/include/sys/jumbo.h OLD_FILES+=usr/include/sys/mac_policy.h OLD_FILES+=usr/include/sys/pbioio.h OLD_FILES+=usr/include/sys/syscall-hide.h OLD_FILES+=usr/include/sys/tprintf.h OLD_FILES+=usr/include/sys/vnioctl.h OLD_FILES+=usr/include/sys/wormio.h OLD_FILES+=usr/include/telnet.h OLD_FILES+=usr/include/ufs/mfs/mfs_extern.h OLD_FILES+=usr/include/ufs/mfs/mfsnode.h OLD_FILES+=usr/include/values.h OLD_FILES+=usr/include/vm/vm_zone.h OLD_FILES+=usr/share/examples/etc/usbd.conf OLD_FILES+=usr/share/examples/meteor/README OLD_FILES+=usr/share/examples/meteor/rgb16.c OLD_FILES+=usr/share/examples/meteor/rgb24.c OLD_FILES+=usr/share/examples/meteor/test-n.c OLD_FILES+=usr/share/examples/meteor/yuvpk.c OLD_FILES+=usr/share/examples/meteor/yuvpl.c OLD_FILES+=usr/share/examples/worm/README OLD_FILES+=usr/share/examples/worm/makecdfs.sh OLD_FILES+=usr/share/groff_font/devlj4/Makefile OLD_FILES+=usr/share/groff_font/devlj4/text.map OLD_FILES+=usr/share/groff_font/devlj4/special.map OLD_FILES+=usr/share/misc/nslookup.help OLD_FILES+=usr/share/sendmail/cf/feature/nodns.m4 OLD_FILES+=usr/share/syscons/keymaps/lat-amer.kbd OLD_FILES+=usr/share/vi/catalog/ru_SU.KOI8-R OLD_FILES+=usr/share/zoneinfo/Africa/Timbuktu OLD_FILES+=usr/share/zoneinfo/Africa/Asmera OLD_FILES+=usr/share/zoneinfo/America/Buenos_Aires OLD_FILES+=usr/share/zoneinfo/America/Cordoba OLD_FILES+=usr/share/zoneinfo/America/Jujuy OLD_FILES+=usr/share/zoneinfo/America/Catamarca OLD_FILES+=usr/share/zoneinfo/America/Mendoza OLD_FILES+=usr/share/zoneinfo/America/Indianapolis OLD_FILES+=usr/share/zoneinfo/America/Louisville OLD_FILES+=usr/share/zoneinfo/America/Argentina/ComodRivadavia OLD_FILES+=usr/share/zoneinfo/Atlantic/Faeroe OLD_FILES+=usr/share/zoneinfo/Europe/Belfast OLD_FILES+=usr/share/zoneinfo/Pacific/Yap OLD_FILES+=usr/share/zoneinfo/SystemV/YST9 OLD_FILES+=usr/share/zoneinfo/SystemV/PST8 OLD_FILES+=usr/share/zoneinfo/SystemV/EST5EDT OLD_FILES+=usr/share/zoneinfo/SystemV/CST6CDT OLD_FILES+=usr/share/zoneinfo/SystemV/MST7MDT OLD_FILES+=usr/share/zoneinfo/SystemV/PST8PDT OLD_FILES+=usr/share/zoneinfo/SystemV/YST9YDT OLD_FILES+=usr/share/zoneinfo/SystemV/HST10 OLD_FILES+=usr/share/zoneinfo/SystemV/MST7 OLD_FILES+=usr/share/zoneinfo/SystemV/EST5 OLD_FILES+=usr/share/zoneinfo/SystemV/AST4ADT OLD_FILES+=usr/share/zoneinfo/SystemV/CST6 OLD_FILES+=usr/share/zoneinfo/SystemV/AST4 OLD_FILES+=usr/share/doc/ntp/accopt.htm OLD_FILES+=usr/share/doc/ntp/assoc.htm OLD_FILES+=usr/share/doc/ntp/audio.htm OLD_FILES+=usr/share/doc/ntp/authopt.htm OLD_FILES+=usr/share/doc/ntp/biblio.htm OLD_FILES+=usr/share/doc/ntp/build.htm OLD_FILES+=usr/share/doc/ntp/clockopt.htm OLD_FILES+=usr/share/doc/ntp/config.htm OLD_FILES+=usr/share/doc/ntp/confopt.htm OLD_FILES+=usr/share/doc/ntp/copyright.htm OLD_FILES+=usr/share/doc/ntp/debug.htm OLD_FILES+=usr/share/doc/ntp/driver1.htm OLD_FILES+=usr/share/doc/ntp/driver10.htm OLD_FILES+=usr/share/doc/ntp/driver11.htm OLD_FILES+=usr/share/doc/ntp/driver12.htm OLD_FILES+=usr/share/doc/ntp/driver16.htm OLD_FILES+=usr/share/doc/ntp/driver18.htm OLD_FILES+=usr/share/doc/ntp/driver19.htm OLD_FILES+=usr/share/doc/ntp/driver2.htm OLD_FILES+=usr/share/doc/ntp/driver20.htm OLD_FILES+=usr/share/doc/ntp/driver22.htm OLD_FILES+=usr/share/doc/ntp/driver23.htm OLD_FILES+=usr/share/doc/ntp/driver24.htm OLD_FILES+=usr/share/doc/ntp/driver26.htm OLD_FILES+=usr/share/doc/ntp/driver27.htm OLD_FILES+=usr/share/doc/ntp/driver28.htm OLD_FILES+=usr/share/doc/ntp/driver29.htm OLD_FILES+=usr/share/doc/ntp/driver3.htm OLD_FILES+=usr/share/doc/ntp/driver30.htm OLD_FILES+=usr/share/doc/ntp/driver32.htm OLD_FILES+=usr/share/doc/ntp/driver33.htm OLD_FILES+=usr/share/doc/ntp/driver34.htm OLD_FILES+=usr/share/doc/ntp/driver35.htm OLD_FILES+=usr/share/doc/ntp/driver36.htm OLD_FILES+=usr/share/doc/ntp/driver37.htm OLD_FILES+=usr/share/doc/ntp/driver4.htm OLD_FILES+=usr/share/doc/ntp/driver5.htm OLD_FILES+=usr/share/doc/ntp/driver6.htm OLD_FILES+=usr/share/doc/ntp/driver7.htm OLD_FILES+=usr/share/doc/ntp/driver8.htm OLD_FILES+=usr/share/doc/ntp/driver9.htm OLD_FILES+=usr/share/doc/ntp/exec.htm OLD_FILES+=usr/share/doc/ntp/extern.htm OLD_FILES+=usr/share/doc/ntp/gadget.htm OLD_FILES+=usr/share/doc/ntp/hints.htm OLD_FILES+=usr/share/doc/ntp/howto.htm OLD_FILES+=usr/share/doc/ntp/htmlprimer.htm OLD_FILES+=usr/share/doc/ntp/index.htm OLD_FILES+=usr/share/doc/ntp/kern.htm OLD_FILES+=usr/share/doc/ntp/kernpps.htm OLD_FILES+=usr/share/doc/ntp/ldisc.htm OLD_FILES+=usr/share/doc/ntp/measure.htm OLD_FILES+=usr/share/doc/ntp/miscopt.htm OLD_FILES+=usr/share/doc/ntp/monopt.htm OLD_FILES+=usr/share/doc/ntp/mx4200data.htm OLD_FILES+=usr/share/doc/ntp/notes.htm OLD_FILES+=usr/share/doc/ntp/ntpd.htm OLD_FILES+=usr/share/doc/ntp/ntpdate.htm OLD_FILES+=usr/share/doc/ntp/ntpdc.htm OLD_FILES+=usr/share/doc/ntp/ntpq.htm OLD_FILES+=usr/share/doc/ntp/ntptime.htm OLD_FILES+=usr/share/doc/ntp/ntptrace.htm OLD_FILES+=usr/share/doc/ntp/parsedata.htm OLD_FILES+=usr/share/doc/ntp/parsenew.htm OLD_FILES+=usr/share/doc/ntp/patches.htm OLD_FILES+=usr/share/doc/ntp/porting.htm OLD_FILES+=usr/share/doc/ntp/pps.htm OLD_FILES+=usr/share/doc/ntp/prefer.htm OLD_FILES+=usr/share/doc/ntp/qth.htm OLD_FILES+=usr/share/doc/ntp/quick.htm OLD_FILES+=usr/share/doc/ntp/rdebug.htm OLD_FILES+=usr/share/doc/ntp/refclock.htm OLD_FILES+=usr/share/doc/ntp/release.htm OLD_FILES+=usr/share/doc/ntp/tickadj.htm OLD_FILES+=usr/share/doc/papers/nqnfs.ascii.gz OLD_FILES+=usr/share/doc/papers/px.ascii.gz OLD_FILES+=usr/share/man/man3/exp10.3.gz OLD_FILES+=usr/share/man/man3/exp10f.3.gz OLD_FILES+=usr/share/man/man3/fpsetsticky.3.gz OLD_FILES+=usr/share/man/man3/gss_krb5_compat_des3_mic.3.gz OLD_FILES+=usr/share/man/man3/gss_krb5_copy_ccache.3.gz OLD_FILES+=usr/share/man/man3/mac_is_present_np.3.gz OLD_FILES+=usr/share/man/man3/mbmb.3.gz OLD_FILES+=usr/share/man/man3/setrunelocale.3.gz OLD_FILES+=usr/share/man/man5/usbd.conf.5.gz .if ${TARGET_ARCH} != "i386" && ${TARGET_ARCH} != "amd64" OLD_FILES+=usr/share/man/man8/boot_i386.8.gz .endif .if ${TARGET_ARCH} != "aarch64" && ${TARGET} != "arm" && \ ${TARGET_ARCH} != "powerpc" && ${TARGET_ARCH} != "powerpc64" && \ ${TARGET_ARCH} != "sparc64" OLD_FILES+=usr/share/man/man8/ofwdump.8.gz .endif OLD_FILES+=usr/share/man/man8/mount_reiserfs.8.gz OLD_FILES+=usr/share/man/man9/VFS_START.9.gz OLD_FILES+=usr/share/man/man9/cpu_critical_exit.9.gz OLD_FILES+=usr/share/man/man9/cpu_critical_enter.9.gz OLD_FILES+=usr/share/info/annotate.info.gz OLD_FILES+=usr/share/info/tar.info.gz OLD_FILES+=usr/share/bsnmp/defs/tree.def OLD_FILES+=usr/share/bsnmp/defs/mibII_tree.def OLD_FILES+=usr/share/bsnmp/defs/netgraph_tree.def OLD_FILES+=usr/share/bsnmp/mibs/FOKUS-MIB.txt OLD_FILES+=usr/share/bsnmp/mibs/BEGEMOT-MIB.txt OLD_FILES+=usr/share/bsnmp/mibs/BEGEMOT-SNMPD.txt OLD_FILES+=usr/share/bsnmp/mibs/BEGEMOT-NETGRAPH.txt OLD_FILES+=usr/libdata/msdosfs/iso22dos OLD_FILES+=usr/libdata/msdosfs/iso72dos OLD_FILES+=usr/libdata/msdosfs/koi2dos OLD_FILES+=usr/libdata/msdosfs/koi8u2dos # The following files are *not* obsolete, they just don't get touched at # install, so don't add them: # - boot/loader.rc # - usr/share/tmac/man.local # - usr/share/tmac/mm/locale # - usr/share/tmac/mm/se_locale # - var/yp/Makefile # 20071120: shared library version bump OLD_LIBS+=usr/lib/libasn1.so.8 OLD_LIBS+=usr/lib/libgssapi.so.8 OLD_LIBS+=usr/lib/libgssapi_krb5.so.8 OLD_LIBS+=usr/lib/libhdb.so.8 OLD_LIBS+=usr/lib/libkadm5clnt.so.8 OLD_LIBS+=usr/lib/libkadm5srv.so.8 OLD_LIBS+=usr/lib/libkafs5.so.8 OLD_LIBS+=usr/lib/libkrb5.so.8 OLD_LIBS+=usr/lib/libobjc.so.2 OLD_LIBS+=usr/lib32/libgssapi.so.8 OLD_LIBS+=usr/lib32/libobjc.so.2 # 20070519: GCC 4.2 OLD_LIBS+=usr/lib/libg2c.a OLD_LIBS+=usr/lib/libg2c.so OLD_LIBS+=usr/lib/libg2c.so.2 OLD_LIBS+=usr/lib/libg2c_p.a OLD_LIBS+=usr/lib/libgcc_pic.a OLD_LIBS+=usr/lib32/libg2c.a OLD_LIBS+=usr/lib32/libg2c.so OLD_LIBS+=usr/lib32/libg2c.so.2 OLD_LIBS+=usr/lib32/libg2c_p.a OLD_LIBS+=usr/lib32/libgcc_pic.a # 20060729: OpenSSL 0.9.7e -> 0.9.8b upgrade OLD_LIBS+=lib/libcrypto.so.4 OLD_LIBS+=usr/lib/libssl.so.4 OLD_LIBS+=usr/lib32/libcrypto.so.4 OLD_LIBS+=usr/lib32/libssl.so.4 # 20060521: gethostbyaddr(3) ABI change OLD_LIBS+=usr/lib/libroken.so.8 OLD_LIBS+=lib/libatm.so.3 OLD_LIBS+=lib/libc.so.6 OLD_LIBS+=lib/libutil.so.5 OLD_LIBS+=usr/lib32/libatm.so.3 OLD_LIBS+=usr/lib32/libc.so.6 OLD_LIBS+=usr/lib32/libutil.so.5 # 20060413: shared library moved to /usr/lib OLD_LIBS+=lib/libgpib.so.1 # 20060413: libpcap.so.4 moved to /lib/ OLD_LIBS+=usr/lib/libpcap.so.4 # 20060412: libpthread.so.2 moved to /lib/ OLD_LIBS+=usr/lib/libpthread.so.2 # 20060127: revert libdisk to static-only OLD_LIBS+=usr/lib/libdisk.so.3 # 20051027: libc_r discontinued (removed 20101113) OLD_LIBS+=usr/lib/libc_r.a OLD_LIBS+=usr/lib/libc_r.so OLD_LIBS+=usr/lib/libc_r.so.7 OLD_LIBS+=usr/lib/libc_r_p.a OLD_LIBS+=usr/lib32/libc_r.a OLD_LIBS+=usr/lib32/libc_r.so OLD_LIBS+=usr/lib32/libc_r.so.7 OLD_LIBS+=usr/lib32/libc_r_p.a # 20050722: bump for 6.0-RELEASE OLD_LIBS+=lib/libalias.so.4 OLD_LIBS+=lib/libatm.so.2 OLD_LIBS+=lib/libbegemot.so.1 OLD_LIBS+=lib/libbsdxml.so.1 OLD_LIBS+=lib/libbsnmp.so.2 OLD_LIBS+=lib/libc.so.5 OLD_LIBS+=lib/libcam.so.2 OLD_LIBS+=lib/libcrypt.so.2 OLD_LIBS+=lib/libcrypto.so.3 OLD_LIBS+=lib/libdevstat.so.4 OLD_LIBS+=lib/libedit.so.4 OLD_LIBS+=lib/libgeom.so.2 OLD_LIBS+=lib/libgpib.so.0 OLD_LIBS+=lib/libipsec.so.1 OLD_LIBS+=lib/libipx.so.2 OLD_LIBS+=lib/libkiconv.so.1 OLD_LIBS+=lib/libkvm.so.2 OLD_LIBS+=lib/libm.so.3 OLD_LIBS+=lib/libmd.so.2 OLD_LIBS+=lib/libncurses.so.5 OLD_LIBS+=lib/libreadline.so.5 OLD_LIBS+=lib/libsbuf.so.2 OLD_LIBS+=lib/libufs.so.2 OLD_LIBS+=lib/libutil.so.4 OLD_LIBS+=lib/libz.so.2 OLD_LIBS+=usr/lib/libarchive.so.1 OLD_LIBS+=usr/lib/libasn1.so.7 OLD_LIBS+=usr/lib/libbluetooth.so.1 OLD_LIBS+=usr/lib/libbz2.so.1 OLD_LIBS+=usr/lib/libc_r.so.5 OLD_LIBS+=usr/lib/libcalendar.so.2 OLD_LIBS+=usr/lib/libcom_err.so.2 OLD_LIBS+=usr/lib/libdevinfo.so.2 OLD_LIBS+=usr/lib/libdialog.so.4 OLD_LIBS+=usr/lib/libfetch.so.3 OLD_LIBS+=usr/lib/libform.so.2 OLD_LIBS+=usr/lib/libftpio.so.5 OLD_LIBS+=usr/lib/libg2c.so.1 OLD_LIBS+=usr/lib/libgnuregex.so.2 OLD_LIBS+=usr/lib/libgssapi.so.7 OLD_LIBS+=usr/lib/libhdb.so.7 OLD_LIBS+=usr/lib/libhistory.so.5 OLD_LIBS+=usr/lib/libkadm5clnt.so.7 OLD_LIBS+=usr/lib/libkadm5srv.so.7 OLD_LIBS+=usr/lib/libkafs5.so.7 OLD_LIBS+=usr/lib/libkrb5.so.7 OLD_LIBS+=usr/lib/libmagic.so.1 OLD_LIBS+=usr/lib/libmenu.so.2 OLD_LIBS+=usr/lib/libmilter.so.2 OLD_LIBS+=usr/lib/libmp.so.4 OLD_LIBS+=usr/lib/libncp.so.1 OLD_LIBS+=usr/lib/libnetgraph.so.1 OLD_LIBS+=usr/lib/libngatm.so.1 OLD_LIBS+=usr/lib/libobjc.so.1 OLD_LIBS+=usr/lib/libopie.so.3 OLD_LIBS+=usr/lib/libpam.so.2 OLD_LIBS+=usr/lib/libpanel.so.2 OLD_LIBS+=usr/lib/libpcap.so.3 OLD_LIBS+=usr/lib/libpmc.so.2 OLD_LIBS+=usr/lib/libpthread.so.1 OLD_LIBS+=usr/lib/libradius.so.1 OLD_LIBS+=usr/lib/libroken.so.7 OLD_LIBS+=usr/lib/librpcsvc.so.2 OLD_LIBS+=usr/lib/libsdp.so.1 OLD_LIBS+=usr/lib/libsmb.so.1 OLD_LIBS+=usr/lib/libssh.so.2 OLD_LIBS+=usr/lib/libssl.so.3 OLD_LIBS+=usr/lib/libstdc++.so.4 OLD_LIBS+=usr/lib/libtacplus.so.1 OLD_LIBS+=usr/lib/libthr.so.1 OLD_LIBS+=usr/lib/libthread_db.so.1 OLD_LIBS+=usr/lib/libugidfw.so.1 OLD_LIBS+=usr/lib/libusbhid.so.1 OLD_LIBS+=usr/lib/libvgl.so.3 OLD_LIBS+=usr/lib/libwrap.so.3 OLD_LIBS+=usr/lib/libypclnt.so.1 OLD_LIBS+=usr/lib/pam_chroot.so.2 OLD_LIBS+=usr/lib/pam_deny.so.2 OLD_LIBS+=usr/lib/pam_echo.so.2 OLD_LIBS+=usr/lib/pam_exec.so.2 OLD_LIBS+=usr/lib/pam_ftpusers.so.2 OLD_LIBS+=usr/lib/pam_group.so.2 OLD_LIBS+=usr/lib/pam_guest.so.2 OLD_LIBS+=usr/lib/pam_krb5.so.2 OLD_LIBS+=usr/lib/pam_ksu.so.2 OLD_LIBS+=usr/lib/pam_lastlog.so.2 OLD_LIBS+=usr/lib/pam_login_access.so.2 OLD_LIBS+=usr/lib/pam_nologin.so.2 OLD_LIBS+=usr/lib/pam_opie.so.2 OLD_LIBS+=usr/lib/pam_opieaccess.so.2 OLD_LIBS+=usr/lib/pam_passwdqc.so.2 OLD_LIBS+=usr/lib/pam_permit.so.2 OLD_LIBS+=usr/lib/pam_radius.so.2 OLD_LIBS+=usr/lib/pam_rhosts.so.2 OLD_LIBS+=usr/lib/pam_rootok.so.2 OLD_LIBS+=usr/lib/pam_securetty.so.2 OLD_LIBS+=usr/lib/pam_self.so.2 OLD_LIBS+=usr/lib/pam_ssh.so.2 OLD_LIBS+=usr/lib/pam_tacplus.so.2 OLD_LIBS+=usr/lib/pam_unix.so.2 OLD_LIBS+=usr/lib/snmp_atm.so.3 OLD_LIBS+=usr/lib/snmp_mibII.so.3 OLD_LIBS+=usr/lib/snmp_netgraph.so.3 OLD_LIBS+=usr/lib/snmp_pf.so.3 # 200505XX: ? OLD_LIBS+=usr/lib/snmp_atm.so.2 OLD_LIBS+=usr/lib/snmp_mibII.so.2 OLD_LIBS+=usr/lib/snmp_netgraph.so.2 OLD_LIBS+=usr/lib/snmp_pf.so.2 # 2005XXXX: not ready for primetime yet OLD_LIBS+=usr/lib/libautofs.so.1 # 200411XX: libxpg4 removal OLD_LIBS+=usr/lib/libxpg4.so.3 # 200410XX: libm compatibility fix OLD_LIBS+=lib/libm.so.2 # 20041001: version bump OLD_LIBS+=lib/libreadline.so.4 OLD_LIBS+=usr/lib/libhistory.so.4 OLD_LIBS+=usr/lib/libopie.so.2 OLD_LIBS+=usr/lib/libpcap.so.2 # 20040925: bind9 import OLD_LIBS+=usr/lib/libisc.so.1 # 200408XX OLD_LIBS+=usr/lib/snmp_netgraph.so.1 # 200404XX OLD_LIBS+=usr/lib/libsnmp.so.1 OLD_LIBS+=usr/lib/snmp_mibII.so.1 # 200309XX OLD_LIBS+=usr/lib/libasn1.so.6 OLD_LIBS+=usr/lib/libhdb.so.6 OLD_LIBS+=usr/lib/libkadm5clnt.so.6 OLD_LIBS+=usr/lib/libkadm5srv.so.6 OLD_LIBS+=usr/lib/libkrb5.so.6 OLD_LIBS+=usr/lib/libroken.so.6 # 200304XX OLD_LIBS+=usr/lib/libc.so.4 OLD_LIBS+=usr/lib/libc_r.so.4 OLD_LIBS+=usr/lib/libdevstat.so.2 OLD_LIBS+=usr/lib/libedit.so.3 OLD_LIBS+=usr/lib/libgmp.so.3 OLD_LIBS+=usr/lib/libmp.so.3 OLD_LIBS+=usr/lib/libpam.so.1 OLD_LIBS+=usr/lib/libposix1e.so.2 OLD_LIBS+=usr/lib/libskey.so.2 OLD_LIBS+=usr/lib/libusbhid.so.0 OLD_LIBS+=usr/lib/libvgl.so.2 # 20030218: OpenSSL 0.9.7 import OLD_FILES+=usr/include/des.h OLD_FILES+=usr/lib/libdes.a OLD_FILES+=usr/lib/libdes.so OLD_LIBS+=usr/lib/libdes.so.3 OLD_FILES+=usr/lib/libdes_p.a # 200302XX OLD_LIBS+=usr/lib/libacl.so.3 OLD_LIBS+=usr/lib/libasn1.so.5 OLD_LIBS+=usr/lib/libcrypto.so.2 OLD_LIBS+=usr/lib/libgssapi.so.5 OLD_LIBS+=usr/lib/libhdb.so.5 OLD_LIBS+=usr/lib/libkadm.so.3 OLD_LIBS+=usr/lib/libkadm5clnt.so.5 OLD_LIBS+=usr/lib/libkadm5srv.so.5 OLD_LIBS+=usr/lib/libkafs.so.3 OLD_LIBS+=usr/lib/libkafs5.so.5 OLD_LIBS+=usr/lib/libkdb.so.3 OLD_LIBS+=usr/lib/libkrb.so.3 OLD_LIBS+=usr/lib/libroken.so. OLD_LIBS+=usr/lib/libssl.so.2 OLD_LIBS+=usr/lib/pam_kerberosIV.so # 200208XX OLD_LIBS+=usr/lib/libgssapi.so.4 # 200203XX OLD_LIBS+=usr/lib/libss.so.3 OLD_LIBS+=usr/lib/libusb.so.0 # 200112XX OLD_LIBS+=usr/lib/libfetch.so.2 # 200110XX OLD_LIBS+=usr/lib/libgssapi.so.3 # 200104XX OLD_LIBS+=usr/lib/libdescrypt.so.2 OLD_LIBS+=usr/lib/libscrypt.so.2 # 200102XX OLD_LIBS+=usr/lib/libcrypto.so.1 OLD_LIBS+=usr/lib/libssl.so.1 # 200009XX OLD_LIBS+=usr/lib/libRSAglue.so.1 OLD_LIBS+=usr/lib/librsaINTL.so.1 OLD_LIBS+=usr/lib/librsaUSA.so.1 # 200006XX OLD_LIBS+=usr/lib/libalias.so.3 OLD_LIBS+=usr/lib/libfetch.so.1 OLD_LIBS+=usr/lib/libipsec.so.0 # 200005XX OLD_LIBS+=usr/lib/libxpg4.so.2 # 200002XX OLD_LIBS+=usr/lib/libc.so.3 OLD_LIBS+=usr/lib/libcurses.so.2 OLD_LIBS+=usr/lib/libdialog.so.3 OLD_LIBS+=usr/lib/libedit.so.2 OLD_LIBS+=usr/lib/libf2c.so.2 OLD_LIBS+=usr/lib/libftpio.so.4 OLD_LIBS+=usr/lib/libg++.so.4 OLD_LIBS+=usr/lib/libhistory.so.3 OLD_LIBS+=usr/lib/libmytinfo.so.2 OLD_LIBS+=usr/lib/libncurses.so.3 OLD_LIBS+=usr/lib/libreadline.so.3 OLD_LIBS+=usr/lib/libss.so.2 OLD_LIBS+=usr/lib/libtermcap.so.2 OLD_LIBS+=usr/lib/libutil.so.2 OLD_LIBS+=usr/lib/libvgl.so.1 OLD_LIBS+=usr/lib/libwrap.so.2 # 19991216 OLD_FILES+=usr/sbin/xntpdc # 199909XX OLD_LIBS+=usr/lib/libc_r.so.3 # ??? OLD_LIBS+=usr/lib/libarchive.so.2 OLD_LIBS+=usr/lib/libbsnmp.so.1 OLD_LIBS+=usr/lib/libc_r.so.6 OLD_LIBS+=usr/lib32/libarchive.so.2 OLD_LIBS+=usr/lib32/libc_r.so.6 OLD_LIBS+=usr/lib/libcipher.so.2 OLD_LIBS+=usr/lib/libgssapi.so.6 OLD_LIBS+=usr/lib/libkse.so.1 OLD_LIBS+=usr/lib/liblwres.so.3 OLD_LIBS+=usr/lib/pam_ftp.so.2 # 20131013: Removal of the ATF tools OLD_DIRS+=etc/atf OLD_DIRS+=usr/share/examples/atf OLD_DIRS+=usr/share/xml/atf OLD_DIRS+=usr/share/xml OLD_DIRS+=usr/share/xsl/atf OLD_DIRS+=usr/share/xsl # 20040925: bind9 import OLD_DIRS+=usr/share/doc/bind/html OLD_DIRS+=usr/share/doc/bind/misc OLD_DIRS+=usr/share/doc/bind/ # ??? OLD_DIRS+=usr/include/g++/std OLD_DIRS+=usr/include/msdosfs OLD_DIRS+=usr/include/ntfs OLD_DIRS+=usr/include/nwfs OLD_DIRS+=usr/include/ufs/mfs # 20011001: UUCP migration to ports OLD_DIRS+=usr/libexec/uucp .include "tools/build/mk/OptionalObsoleteFiles.inc" diff --git a/etc/devd.conf b/etc/devd.conf index e7654e45ad25..e4bd915d6ab3 100644 --- a/etc/devd.conf +++ b/etc/devd.conf @@ -1,341 +1,341 @@ # $FreeBSD$ # # Refer to devd.conf(5) and devd(8) man pages for the details on how to # run and configure devd. # # NB: All regular expressions have an implicit ^$ around them. # NB: device-name is shorthand for 'match device-name' options { # Each "directory" directive adds a directory to the list of # directories that we scan for files. Files are loaded in the order # that they are returned from readdir(3). The rule-sets are combined # to create a DFA that's used to match events to actions. directory "/etc/devd"; directory "/usr/local/etc/devd"; pid-file "/var/run/devd.pid"; # Setup some shorthand for regex that we use later in the file. #XXX Yes, these are gross -- imp set scsi-controller-regex "(aac|adv|adw|aha|ahb|ahc|ahd|aic|amr|bt|ciss|ct|dpt|\ esp|ida|iir|ips|isp|mlx|mly|mpt|ncr|ncv|nsp|stg|sym|trm)\ [0-9]+"; set wifi-driver-regex "(ath|bwi|bwn|ipw|iwi|iwm|iwn|malo|mwl|ral|rsu|rum|run|uath|\ - upgt|ural|urtw|urtwn|wi|wpi|wtap|zyd)[0-9]+"; + upgt|ural|urtw|rtwn_usb|wi|wpi|wtap|zyd)[0-9]+"; }; # Note that the attach/detach with the highest value wins, so that one can # override these general rules. # # Configure the interface on attach. Due to a historical accident, this # script is called pccard_ether. # # NB: DETACH events are ignored; the kernel should handle all cleanup # (routes, arp cache). Beware of races against immediate create # of a device with the same name; e.g. # ifconfig bridge0 destroy; ifconfig bridge0 create # notify 0 { match "system" "IFNET"; match "subsystem" "!usbus[0-9]+"; match "type" "ATTACH"; action "/etc/pccard_ether $subsystem start"; }; # # Try to start dhclient on Ethernet-like interfaces when the link comes # up. Only devices that are configured to support DHCP will actually # run it. No link down rule exists because dhclient automatically exits # when the link goes down. # notify 0 { match "system" "IFNET"; match "type" "LINK_UP"; media-type "ethernet"; action "/etc/rc.d/dhclient quietstart $subsystem"; }; # # Like Ethernet devices, but separate because 802.11 require spawning # wlan(4) interface. # attach 0 { device-name "$wifi-driver-regex"; action "/etc/pccard_ether $device-name startchildren"; }; detach 0 { device-name "$wifi-driver-regex"; action "/etc/pccard_ether $device-name stopchildren"; }; notify 0 { match "system" "IFNET"; match "type" "LINK_UP"; media-type "802.11"; action "/etc/rc.d/dhclient quietstart $subsystem"; }; # An entry like this might be in a different file, but is included here # as an example of how to override things. Normally 'ed50' would match # the above attach/detach stuff, but the value of 100 makes it # hard wired to 1.2.3.4. attach 100 { device-name "ed50"; action "ifconfig $device-name inet 1.2.3.4 netmask 0xffff0000"; }; detach 100 { device-name "ed50"; }; # When a USB Bluetooth dongle appears, activate it attach 100 { device-name "ubt[0-9]+"; action "/etc/rc.d/bluetooth quietstart $device-name"; }; detach 100 { device-name "ubt[0-9]+"; action "/etc/rc.d/bluetooth quietstop $device-name"; }; # Firmware downloader for Atheros AR3011 based USB Bluetooth devices #attach 100 { # match "vendor" "0x0cf3"; # match "product" "0x3000"; # action "sleep 2 && /usr/sbin/ath3kfw -d $device-name -f /usr/local/etc/ath3k-1.fw"; #}; # When a USB keyboard arrives, attach it as the console keyboard. attach 100 { device-name "ukbd0"; action "/etc/rc.d/syscons setkeyboard /dev/ukbd0"; }; detach 100 { device-name "ukbd0"; action "/etc/rc.d/syscons setkeyboard /dev/kbd0"; }; notify 100 { match "system" "DEVFS"; match "subsystem" "CDEV"; match "type" "CREATE"; match "cdev" "atp[0-9]+"; action "/etc/rc.d/moused quietstart $cdev"; }; notify 100 { match "system" "DEVFS"; match "subsystem" "CDEV"; match "type" "CREATE"; match "cdev" "ums[0-9]+"; action "/etc/rc.d/moused quietstart $cdev"; }; notify 100 { match "system" "DEVFS"; match "subsystem" "CDEV"; match "type" "CREATE"; match "cdev" "wsp[0-9]+"; action "/etc/rc.d/moused quietstart $cdev"; }; notify 100 { match "system" "DEVFS"; match "subsystem" "CDEV"; match "type" "DESTROY"; match "cdev" "ums[0-9]+"; action "/etc/rc.d/moused stop $cdev"; }; # Firmware download into the ActiveWire board. After the firmware download is # done, the device detaches and reappears as something new and shiny # automatically. attach 100 { match "vendor" "0x0854"; match "product" "0x0100"; match "release" "0x0000"; action "/usr/local/bin/ezdownload -f /usr/local/share/usb/firmware/0854.0100.0_01.hex $device-name"; }; # Firmware download for Entrega Serial DB25 adapter. attach 100 { match "vendor" "0x1645"; match "product" "0x8001"; match "release" "0x0101"; action "if ! kldstat -n usio > /dev/null 2>&1 ; then kldload usio; fi; /usr/sbin/ezdownload -v -f /usr/share/usb/firmware/1645.8001.0101 /dev/$device-name"; }; # This entry starts the ColdSync tool in daemon mode. Make sure you have an up # to date /usr/local/etc/palms. We override the 'listen' settings for port and # type in /usr/local/etc/coldsync.conf. notify 100 { match "system" "USB"; match "subsystem" "DEVICE"; match "type" "ATTACH"; match "vendor" "0x082d"; match "product" "0x0100"; match "release" "0x0100"; action "/usr/local/bin/coldsync -md -p /dev/$cdev -t usb"; }; # # Rescan SCSI device-names on attach, but not detach. However, it is # disabled by default due to reports of problems. # attach 0 { device-name "$scsi-controller-regex"; // action "camcontrol rescan all"; }; # Don't even try to second guess what to do about drivers that don't # match here. Instead, pass it off to syslog. Commented out for the # moment, as the pnpinfo variable isn't set in devd yet. Individual # variables within the bus supplied pnpinfo are set. nomatch 0 { # action "logger Unknown device: $pnpinfo $location $bus"; }; # Various logging of unknown devices. nomatch 10 { match "bus" "uhub[0-9]+"; action "logger Unknown USB device: vendor $vendor product $product \ bus $bus"; }; # Some PC-CARDs don't offer numerical manufacturer/product IDs, just # show the CIS info there. nomatch 20 { match "bus" "pccard[0-9]+"; match "manufacturer" "0xffffffff"; match "product" "0xffffffff"; action "logger Unknown PCCARD device: CISproduct $cisproduct \ CIS-vendor $cisvendor bus $bus"; }; nomatch 10 { match "bus" "pccard[0-9]+"; action "logger Unknown PCCARD device: manufacturer $manufacturer \ product $product CISproduct $cisproduct CIS-vendor \ $cisvendor bus $bus"; }; nomatch 10 { match "bus" "cardbus[0-9]+"; action "logger Unknown Cardbus device: device $device class $class \ vendor $vendor bus $bus"; }; # Switch power profiles when the AC line state changes. notify 10 { match "system" "ACPI"; match "subsystem" "ACAD"; action "/etc/rc.d/power_profile $notify"; }; # Notify all users before beginning emergency shutdown when we get # a _CRT or _HOT thermal event and we're going to power down the system # very soon. notify 10 { match "system" "ACPI"; match "subsystem" "Thermal"; match "notify" "0xcc"; action "logger -p kern.emerg 'WARNING: system temperature too high, shutting down soon!'"; }; # User requested suspend, so perform preparation steps and then execute # the actual suspend process. notify 10 { match "system" "ACPI"; match "subsystem" "Suspend"; action "/etc/rc.suspend acpi $notify"; }; notify 10 { match "system" "ACPI"; match "subsystem" "Resume"; action "/etc/rc.resume acpi $notify"; }; /* EXAMPLES TO END OF FILE # An example of something that a vendor might install if you were to # add their device. This might reside in /usr/local/etc/devd/deqna.conf. # A deqna is, in this hypothetical example, a pccard ethernet-like device. # Students of history may know other devices by this name, and will get # the in-jokes in this entry. nomatch 10 { match "bus" "pccard[0-9]+"; match "manufacturer" "0x1234"; match "product" "0x2323"; action "kldload if_deqna"; }; attach 10 { device-name "deqna[0-9]+"; action "/etc/pccard_ether $device-name start"; }; detach 10 { device-name "deqna[0-9]+"; action "/etc/pccard_ether $device-name stop"; }; # Examples of notify hooks. A notify is a generic way for a kernel # subsystem to send event notification to userland. # Here are some examples of ACPI notify handlers. ACPI subsystems that # generate notifies include the AC adapter, power/sleep buttons, # control method batteries, lid switch, and thermal zones. # # Information returned is not always the same as the ACPI notify # events. See the ACPI specification for more information about # notifies. Here is the information returned for each subsystem: # # ACAD: AC line state (0 is offline, 1 is online) # Button: Button pressed (0 for power, 1 for sleep) # CMBAT: ACPI battery events # Lid: Lid state (0 is closed, 1 is open) # Suspend, Resume: Suspend and resume notification # Thermal: ACPI thermal zone events # # This example calls a script when the AC state changes, passing the # notify value as the first argument. If the state is 0x00, it might # call some sysctls to implement economy mode. If 0x01, it might set # the mode to performance. notify 10 { match "system" "ACPI"; match "subsystem" "ACAD"; action "/etc/acpi_ac $notify"; }; # This example works around a memory leak in PostgreSQL, restarting # it when the "user:pgsql:swap:devctl=1G" rctl(8) rule gets triggered. notify 0 { match "system" "RCTL"; match "rule" "user:70:swap:.*"; action "/usr/local/etc/rc.d/postgresql restart"; }; # Discard autofs caches, useful for the -media special map. notify 100 { match "system" "GEOM"; match "subsystem" "DEV"; action "/usr/sbin/automount -c"; }; # Handle userland coredumps. # This commented out handler makes it possible to run an # automated debugging session after the core dump is generated. # Replace action with a proper coredump handler, but be aware that # it will run with elevated privileges. notify 10 { match "system" "kernel"; match "subsystem" "signal"; match "type" "coredump"; action "logger $comm $core"; }; */ diff --git a/etc/devd/usb.conf b/etc/devd/usb.conf index 45e28feb7826..3d8858b95d7a 100644 --- a/etc/devd/usb.conf +++ b/etc/devd/usb.conf @@ -1,5821 +1,5893 @@ # # $FreeBSD$ # # This file was automatically generated by "tools/tools/bus_autoconf/bus_autoconf.sh". # Please do not edit! # nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0104"; match "product" "0x00be"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0123"; match "product" "0x0001"; action "kldload -n uep"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x03e8"; match "product" "0x0008"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x03eb"; match "product" "0x2109"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x03f0"; match "product" "0x0121"; action "kldload -n ugensa"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x03f0"; match "product" "(0x1016|0x1116|0x1216)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x03f0"; match "product" "(0x1b1d|0x1e1d)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x03f0"; match "product" "(0x2016|0x2116|0x2216)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x03f0"; match "product" "(0x241d|0x251d)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x03f0"; match "product" "(0x3016|0x3116)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x03f0"; match "product" "0x311d"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x03f0"; match "product" "0x3216"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x03f0"; match "product" "0x3524"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x03f0"; match "product" "(0x4016|0x4116|0x4216|0x5016|0x5116|0x5216)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x03f0"; match "product" "0x811c"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x03f0"; match "product" "0xca02"; action "kldload -n if_urtw"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0402"; match "product" "0x5632"; action "kldload -n if_cdce"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0403"; match "product" "(0x5259|0x6001|0x6004|0x6006|0x6006|0x6010|0x6011|0x6014|0x6015|0x8372|0x9378|0x9379|0x937a|0x937c|0x9868|0x9e90|0x9f80|0xa6d0|0xa6d1|0xabb8|0xb810|0xb811|0xb812|0xbaf8|0xbbe2|0xbca0|0xbca1|0xbca2|0xbca4|0xbcd8|0xbcd9|0xbcda|0xbdc8|0xbfd8|0xbfd9|0xbfda|0xbfdb|0xbfdc|0xc7d0|0xc850|0xc991|0xcaa0|0xcc48|0xcc49|0xcc4a|0xd010|0xd011|0xd012|0xd013|0xd014|0xd015|0xd016|0xd017|0xd070|0xd071|0xd388|0xd389|0xd38a|0xd38b|0xd38c|0xd38d|0xd38e|0xd38f|0xd578|0xd678|0xd738|0xd780|0xdaf8|0xdaf9|0xdafa|0xdafb|0xdafc|0xdafd|0xdafe|0xdaff|0xdc00|0xdc01|0xdd20|0xdf28|0xdf30|0xdf31|0xdf32|0xdf33|0xdf35|0xe000|0xe001|0xe002|0xe004|0xe006|0xe008|0xe009|0xe00a|0xe050|0xe0e8|0xe0e9|0xe0ea|0xe0eb|0xe0ec|0xe0ed|0xe0ee|0xe0ef|0xe0f0|0xe0f1|0xe0f2|0xe0f3|0xe0f4|0xe0f5|0xe0f6|0xe0f7|0xe40b|0xe520|0xe548|0xe6c8|0xe700|0xe729|0xe808|0xe809|0xe80a|0xe80b|0xe80c|0xe80d|0xe80e|0xe80f|0xe888|0xe889|0xe88a|0xe88b|0xe88c|0xe88d|0xe88e|0xe88f|0xea90|0xebe0|0xec88|0xec89|0xed22|0xed71|0xed72|0xed73|0xed74|0xee18|0xeee8|0xeee9|0xeeea|0xeeeb|0xeeec|0xeeed|0xeeee|0xeeef|0xef50|0xef51|0xf068|0xf069|0xf06a|0xf06b|0xf06c|0xf06d|0xf06e|0xf06f|0xf070|0xf0c0|0xf0c8|0xf208|0xf2d0|0xf3c0|0xf3c1|0xf3c2|0xf448|0xf449|0xf44a|0xf44b|0xf44c|0xf460|0xf608|0xf60b|0xf680|0xf850|0xf857|0xf9d0|0xf9d1|0xf9d2|0xf9d3|0xf9d4|0xf9d5|0xfa00|0xfa01|0xfa02|0xfa03|0xfa04|0xfa05|0xfa06|0xfa10|0xfa33|0xfa88|0xfad0|0xfaf0|0xfb58|0xfb59|0xfb5a|0xfb5b|0xfb5c|0xfb5d|0xfb5e|0xfb5f|0xfb80|0xfb99|0xfbfa|0xfc08|0xfc09|0xfc0a|0xfc0b|0xfc0c|0xfc0d|0xfc0e|0xfc0f|0xfc60|0xfc70|0xfc71|0xfc72|0xfc73|0xfc82|0xfd60|0xfe38|0xff00|0xff18|0xff1c|0xff1d|0xff20|0xff38|0xff39|0xff3a|0xff3b|0xff3c|0xff3d|0xff3e|0xff3f|0xffa8)"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0408"; match "product" "0x0304"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0408"; match "product" "(0x1000|0xea02|0xea03|0xea04|0xea05|0xea06)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0409"; match "product" "(0x00d5|0x00d6|0x00d7)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0409"; match "product" "0x0249"; action "kldload -n if_otus"; }; +nomatch 32 { + match "bus" "uhub[0-9]+"; + match "mode" "host"; + match "vendor" "0x0409"; + match "product" "0x0408"; + action "kldload -n if_rtwn_usb"; +}; + nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0409"; match "product" "(0x8024|0x8025)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0411"; match "product" "(0x0001|0x0005|0x0009)"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0411"; match "product" "0x0012"; action "kldload -n if_rue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0411"; match "product" "0x003d"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0411"; match "product" "(0x005e|0x0066|0x0067)"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0411"; match "product" "0x006e"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0411"; match "product" "0x008b"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0411"; match "product" "0x00b3"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0411"; match "product" "(0x00d8|0x00d9)"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0411"; match "product" "0x00da"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0411"; match "product" "0x00e8"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0411"; match "product" "(0x00f4|0x0116|0x0119)"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0411"; match "product" "0x012e"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0411"; match "product" "0x0137"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0411"; match "product" "(0x0148|0x0150|0x015d|0x016f|0x01a2|0x01a8|0x01ee)"; action "kldload -n if_run"; }; +nomatch 32 { + match "bus" "uhub[0-9]+"; + match "mode" "host"; + match "vendor" "0x0411"; + match "product" "(0x0242|0x025d)"; + action "kldload -n if_rtwn_usb"; +}; + nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0413"; match "product" "0x2101"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0423"; match "product" "(0x000a|0x000c)"; action "kldload -n if_cue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x043e"; match "product" "0x9c01"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x044e"; match "product" "(0x3001|0x3002)"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0456"; match "product" "(0xf000|0xf001)"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x045a"; match "product" "(0x5001|0x5002)"; action "kldload -n urio"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x045b"; match "product" "0x0053"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x045e"; match "product" "0x0079"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x045e"; match "product" "0x007a"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x045e"; match "product" "(0x00ce|0x0400|0x0401|0x0402|0x0403|0x0404|0x0405|0x0406|0x0407|0x0408|0x0409|0x040a|0x040b|0x040c|0x040d|0x040e|0x040f|0x0410|0x0411|0x0412|0x0413|0x0414|0x0415|0x0416|0x0417|0x0432|0x0433|0x0434|0x0435|0x0436|0x0437|0x0438|0x0439|0x043a|0x043b|0x043c|0x043d|0x043e|0x043f|0x0440|0x0441|0x0442|0x0443|0x0444|0x0445|0x0446|0x0447|0x0448|0x0449|0x044a|0x044b|0x044c|0x044d|0x044e|0x044f|0x0450|0x0451|0x0452|0x0453|0x0454|0x0455|0x0456|0x0457|0x0458|0x0459|0x045a|0x045b|0x045c|0x045d|0x045e|0x045f|0x0460|0x0461|0x0462|0x0463|0x0464|0x0465|0x0466|0x0467|0x0468|0x0469|0x046a|0x046b|0x046c|0x046d|0x046e|0x046f|0x0470|0x0471|0x0472|0x0473|0x0474|0x0475|0x0476|0x0477|0x0478|0x0479|0x047a|0x047b|0x04c8|0x04c9|0x04ca|0x04cb|0x04cc|0x04cd|0x04ce|0x04d7|0x04d8|0x04d9|0x04da|0x04db|0x04dc|0x04dd|0x04de|0x04df|0x04e0|0x04e1|0x04e2|0x04e3|0x04e4|0x04e5|0x04e6|0x04e7|0x04e8|0x04e9|0x04ea)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0471"; match "product" "0x066a"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0471"; match "product" "0x1236"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0471"; match "product" "0x200f"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0482"; match "product" "0x0203"; action "kldload -n umodem"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0489"; match "product" "(0xe000|0xe003)"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0489"; match "product" "(0xe027|0xe02c|0xe036|0xe03c|0xe03d|0xe042|0xe04e|0xe056|0xe057)"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0499"; match "product" "(0x1000|0x1001|0x1002|0x1003|0x1004|0x1005|0x1006|0x1007|0x1008|0x1009|0x100a|0x100c|0x100d|0x100e|0x100f|0x1010|0x1011|0x1012|0x1013|0x1014|0x1015|0x1016|0x1017|0x1018|0x1019|0x101a|0x101b|0x101c|0x101d|0x101e|0x101f|0x1020|0x1021|0x1022|0x1023|0x1024|0x1025|0x1026|0x1027|0x1028|0x1029|0x102a|0x102b|0x102e|0x1030|0x1031|0x1032|0x1033|0x1034|0x1035|0x1036|0x1037|0x1038|0x1039|0x103a|0x103b|0x103c|0x103d|0x103e|0x103f|0x1040|0x1041|0x1042|0x1043|0x1044|0x1045|0x104e|0x104f|0x1050|0x1051|0x1052|0x1053|0x1054|0x1055|0x1056|0x1057|0x1058|0x1059|0x105a|0x105b|0x105c|0x105d|0x1503|0x2000|0x2001|0x2002|0x2003|0x5000|0x5001|0x5002|0x5003|0x5004|0x5005|0x5006|0x5007|0x5008|0x5009|0x500a|0x500b|0x500c|0x500d|0x500e|0x500f|0x7000|0x7010)"; action "kldload -n snd_uaudio"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x049f"; match "product" "(0x0003|0x0032)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x049f"; match "product" "0x505a"; action "kldload -n if_cdce"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04a4"; match "product" "0x0014"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04a5"; match "product" "0x4027"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04a5"; match "product" "0x4068"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04ad"; match "product" "(0x0301|0x0302|0x0303|0x0306)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04b4"; match "product" "0x1002"; action "kldload -n ufm"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04b7"; match "product" "0x0531"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04b8"; match "product" "(0x0521|0x0522)"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04bb"; match "product" "0x0901"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04bb"; match "product" "(0x0904|0x0913)"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04bb"; match "product" "0x0930"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04bb"; match "product" "0x093f"; action "kldload -n if_otus"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04bb"; match "product" "(0x0944|0x0945|0x0947|0x0948)"; action "kldload -n if_run"; }; +nomatch 32 { + match "bus" "uhub[0-9]+"; + match "mode" "host"; + match "vendor" "0x04bb"; + match "product" "0x0952"; + action "kldload -n if_rtwn_usb"; +}; + nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04bb"; match "product" "(0x0a03|0x0a0e)"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04bf"; match "product" "(0x0115|0x0117)"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04bf"; match "product" "0x030a"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04c5"; match "product" "(0x1058|0x1079)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04ca"; match "product" "(0x2003|0x3005|0x3006|0x3008)"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04da"; match "product" "0x2500"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04da"; match "product" "0x3900"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04dd"; match "product" "(0x8004|0x8005|0x8006|0x8007|0x9031)"; action "kldload -n if_cdce"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04dd"; match "product" "(0x9102|0x9121|0x9123|0x9151|0x91ac|0x9242)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04e8"; match "product" "0x2018"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04e8"; match "product" "(0x5f00|0x5f01|0x5f02|0x5f03|0x5f04)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04e8"; match "product" "0x6601"; action "kldload -n uvisor"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04e8"; match "product" "(0x6611|0x6613|0x6615|0x6617|0x6619|0x661b|0x662e|0x6630|0x6632)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04e8"; match "product" "0x8001"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04f1"; match "product" "0x3008"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04f1"; match "product" "(0x3011|0x3012)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x04f2"; match "product" "(0xaff7|0xaff8|0xaff9|0xaffa|0xaffa)"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0502"; match "product" "(0x1631|0x1632|0x16e1|0x16e2|0x16e3)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0506"; match "product" "(0x03e8|0x11f8)"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0506"; match "product" "0x4601"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "0x0103"; action "kldload -n ubsa"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "0x0109"; action "kldload -n umct"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "0x0121"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "0x0257"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "0x0409"; action "kldload -n umct"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "0x1102"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "0x1103"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "0x1203"; action "kldload -n ubsa"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "(0x2102|0x2103)"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "0x4050"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "0x5055"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "0x7050"; action "kldload -n if_upgt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "(0x7050|0x7051)"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "0x705a"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "0x705c"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "0x705e"; action "kldload -n if_urtw"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "(0x8053|0x805c|0x815c)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "0x815f"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "(0x825a|0x825b)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "0x845a"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "0x905b"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "(0x935a|0x935b)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x050d"; match "product" "0x945a"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0525"; match "product" "(0x1080|0xa4a0)"; action "kldload -n udbp"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0525"; match "product" "0xa4a2"; action "kldload -n if_cdce"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0536"; match "product" "0x01a0"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0543"; match "product" "(0x0ed9|0x1527|0x1529|0x152b|0x152e|0x1921|0x1922|0x1923)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0547"; match "product" "0x2008"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0547"; match "product" "0x2720"; action "kldload -n udbp"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x054c"; match "product" "(0x0038|0x0066|0x0095|0x009a|0x00da|0x0169)"; action "kldload -n uvisor"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x054c"; match "product" "0x0437"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0557"; match "product" "0x2002"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0557"; match "product" "0x2007"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0557"; match "product" "0x2008"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0557"; match "product" "0x2009"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0557"; match "product" "0x4000"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x055d"; match "product" "0x2018"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0565"; match "product" "0x0001"; action "kldload -n ubsa"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0565"; match "product" "(0x0002|0x0003|0x0005)"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0567"; match "product" "(0x2000|0x2002)"; action "kldload -n if_upgt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x056c"; match "product" "0x8007"; action "kldload -n ubsa"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x056e"; match "product" "(0x200c|0x4002|0x4005)"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x056e"; match "product" "0x4008"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x056e"; match "product" "(0x400b|0x4010)"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x056e"; match "product" "(0x5003|0x5004)"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x056e"; match "product" "0xabc1"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x057c"; match "product" "(0x2200|0x3800)"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x057c"; match "product" "0x8401"; action "kldload -n if_otus"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0584"; match "product" "0xb000"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0584"; match "product" "0xb020"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0586"; match "product" "(0x3401|0x3407|0x3409|0x340a|0x340f|0x3410)"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0586"; match "product" "0x3416"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0586"; match "product" "0x3417"; action "kldload -n if_otus"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0586"; match "product" "(0x341a|0x341e)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0586"; match "product" "0x341f"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0586"; match "product" "0x3421"; action "kldload -n if_run"; }; +nomatch 32 { + match "bus" "uhub[0-9]+"; + match "mode" "host"; + match "vendor" "0x0586"; + match "product" "0x3426"; + action "kldload -n if_rtwn_usb"; +}; + nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x058f"; match "product" "0x9720"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x05a6"; match "product" "0x0101"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x05ac"; match "product" "(0x020d|0x020e|0x020f|0x0210|0x0214|0x0215|0x0216|0x0217|0x0218|0x0219|0x021a|0x021b|0x021c)"; action "kldload -n atp"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x05ac"; match "product" "(0x0223|0x0224|0x0225)"; action "kldload -n wsp"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x05ac"; match "product" "(0x0229|0x022a|0x022b)"; action "kldload -n atp"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x05ac"; match "product" "(0x0230|0x0231|0x0232|0x0236|0x0237|0x0238|0x023f|0x0240|0x0241|0x0242|0x0243|0x0244|0x0245|0x0246|0x0247|0x0249|0x024a|0x024b|0x024c|0x024d|0x024e|0x0252|0x0253|0x0254|0x0259|0x025a|0x025b|0x0262|0x0263|0x0264|0x0272|0x0273|0x0274|0x0290|0x0291|0x0292)"; action "kldload -n wsp"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x05ac"; match "product" "(0x030a|0x030b)"; action "kldload -n atp"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x05ac"; match "product" "0x1402"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x05ac"; match "product" "(0x8213|0x8215|0x8218|0x821a|0x821b|0x821f|0x8281|0x828f)"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x05ad"; match "product" "0x0fba"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x05c6"; match "product" "(0x1000|0x6000|0x6500|0x6613|0x9000|0x9002|0x9204|0x9205)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x05cc"; match "product" "0x3000"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x05db"; match "product" "(0x0003|0x0005|0x0009|0x000a|0x0011)"; action "kldload -n uvscom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x05e0"; match "product" "(0x2000|0x2001|0x2002|0x2003|0x2004|0x2005|0x2006|0x2007|0x2008|0x2009|0x200a)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x05e3"; match "product" "0x0501"; action "kldload -n udbp"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x05e9"; match "product" "(0x0008|0x0009)"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0647"; match "product" "0x0100"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x065a"; match "product" "(0xc000|0xc001)"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x066b"; match "product" "(0x200c|0x2202)"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x066b"; match "product" "0x2202"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x066b"; match "product" "(0x2203|0x2204|0x2206|0x400b)"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0675"; match "product" "0x0550"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x067b"; match "product" "(0x0000|0x0001)"; action "kldload -n udbp"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x067b"; match "product" "(0x0307|0x04bb|0x0609|0x0611|0x0612|0x1234|0x206a|0x2303)"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x067b"; match "product" "0x2501"; action "kldload -n if_cdce"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x067b"; match "product" "(0x331a|0xaaa0|0xaaa2)"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x067c"; match "product" "0x1001"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x067e"; match "product" "0x1001"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0681"; match "product" "0x3c06"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x06ce"; match "product" "0x8311"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x06e1"; match "product" "(0x0008|0x0009)"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x06f8"; match "product" "0xe000"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x06f8"; match "product" "(0xe010|0xe020)"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x06f8"; match "product" "0xe030"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x06f8"; match "product" "(0xe031|0xe032)"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x06f8"; match "product" "0xe033"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0707"; match "product" "0x0100"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0707"; match "product" "(0x0200|0x0201)"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0707"; match "product" "0xee13"; action "kldload -n if_upgt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0707"; match "product" "0xee13"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0711"; match "product" "(0x0200|0x0210|0x0230)"; action "kldload -n umct"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0731"; match "product" "(0x0528|0x2003)"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0745"; match "product" "0x0001"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0745"; match "product" "0x1000"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0769"; match "product" "0x11f2"; action "kldload -n if_urtw"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0769"; match "product" "0x11f3"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0769"; match "product" "0x31f3"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x077b"; match "product" "0x2226"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0789"; match "product" "0x010c"; action "kldload -n if_urtw"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0789"; match "product" "0x0160"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0789"; match "product" "(0x0162|0x0163|0x0164|0x0166|0x0168|0x0169)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x078b"; match "product" "0x1234"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x079b"; match "product" "0x0027"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x079b"; match "product" "(0x004a|0x0062)"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07a6"; match "product" "(0x07c2|0x0986|0x8511|0x8513|0x8515)"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07aa"; match "product" "0x0001"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07aa"; match "product" "(0x0004|0x000d)"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07aa"; match "product" "0x0017"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07aa"; match "product" "0x002a"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07aa"; match "product" "(0x002d|0x002e)"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07aa"; match "product" "(0x002f|0x003c|0x003f|0x0041|0x0042)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07aa"; match "product" "0x0047"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07aa"; match "product" "0x0056"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07aa"; match "product" "0x9601"; action "kldload -n if_udav"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07b8"; match "product" "(0x110c|0x200c)"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07b8"; match "product" "(0x2770|0x2870|0x3070|0x3071|0x3072)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07b8"; match "product" "0x4000"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07b8"; match "product" "(0x4002|0x4003|0x4004|0x4007|0x400b|0x400c|0x4102|0x4104)"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07b8"; match "product" "0x420a"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07b8"; match "product" "0x6001"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07b8"; match "product" "(0x8178|0x8179|0x8188|0x8189)"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07b8"; match "product" "0xabc1"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07b8"; match "product" "(0xb21b|0xb21c|0xb21d|0xb21e|0xb21f)"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07c9"; match "product" "0xb100"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07cf"; match "product" "(0x2001|0x2002|0x2003)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07d1"; match "product" "(0x3300|0x3302|0x3303)"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07d1"; match "product" "0x3a09"; action "kldload -n if_otus"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07d1"; match "product" "0x3a0c"; action "kldload -n if_uath"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07d1"; match "product" "0x3a0f"; action "kldload -n if_otus"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07d1"; match "product" "(0x3c03|0x3c04|0x3c06|0x3c07)"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07d1"; match "product" "(0x3c09|0x3c0a|0x3c0b|0x3c0d|0x3c0e|0x3c0f)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07d1"; match "product" "0x3c10"; action "kldload -n if_otus"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x07d1"; match "product" "(0x3c11|0x3c13|0x3c15|0x3c16)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x081e"; match "product" "0xdf00"; action "kldload -n uvisor"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x082d"; match "product" "(0x0100|0x0200|0x0300)"; action "kldload -n uvisor"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0830"; match "product" "(0x0001|0x0002|0x0003|0x0020|0x0031|0x0040|0x0050|0x0060|0x0061|0x0070)"; action "kldload -n uvisor"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0833"; match "product" "(0x012e|0x039f)"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x083a"; match "product" "0x1046"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x083a"; match "product" "(0x4505|0x4506)"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x083a"; match "product" "0x4508"; action "kldload -n if_uath"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x083a"; match "product" "0x4521"; action "kldload -n if_upgt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x083a"; match "product" "0x5046"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x083a"; match "product" "(0x6618|0x7511|0x7512|0x7522|0x8522|0xa512|0xa618|0xa701|0xa702|0xb522)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x083a"; match "product" "0xc512"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x083a"; match "product" "(0xc522|0xd522)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x083a"; match "product" "0xe501"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x083a"; match "product" "0xf522"; action "kldload -n if_otus"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0841"; match "product" "0x0001"; action "kldload -n urio"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0846"; match "product" "(0x1001|0x1002)"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0846"; match "product" "0x1020"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0846"; match "product" "0x1040"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0846"; match "product" "0x1100"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0846"; match "product" "0x4240"; action "kldload -n if_upgt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0846"; match "product" "0x4260"; action "kldload -n if_urtw"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0846"; match "product" "0x4300"; action "kldload -n if_uath"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0846"; match "product" "(0x6100|0x6a00)"; action "kldload -n if_urtw"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0846"; match "product" "(0x9001|0x9010)"; action "kldload -n if_otus"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0846"; match "product" "0x9012"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0846"; match "product" "0x9021"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0846"; match "product" "0x9040"; action "kldload -n if_otus"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0846"; - match "product" "0x9041"; - action "kldload -n if_urtwn"; + match "product" "(0x9041|0x9052)"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0856"; match "product" "(0xac01|0xac02|0xac03|0xac11|0xac12|0xac16|0xac17|0xac18|0xac19|0xac25|0xac26|0xac27|0xac33|0xac34|0xac49|0xac50|0xba02)"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x085a"; match "product" "(0x0008|0x0009)"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x086e"; match "product" "0x1920"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x087d"; match "product" "0x5704"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x08d1"; match "product" "0x0001"; action "kldload -n if_cue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x08d1"; match "product" "0x0003"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x08dd"; match "product" "(0x0986|0x0987|0x0988|0x8511)"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x08dd"; match "product" "0x90ff"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x08e6"; match "product" "0x5501"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x08fd"; match "product" "0x000a"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0915"; match "product" "(0x2000|0x2002)"; action "kldload -n if_upgt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x091e"; match "product" "0x0004"; action "kldload -n uvisor"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0921"; match "product" "0x1001"; action "kldload -n ubsa"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0930"; match "product" "(0x0215|0x0219)"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0930"; match "product" "(0x0700|0x0705|0x0706|0x0707|0x0708|0x0709|0x070a|0x070b)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0930"; match "product" "0x0a07"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0930"; match "product" "(0x0d45|0x1302)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x093c"; match "product" "(0x0601|0x0701)"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x094b"; match "product" "0x0001"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0951"; match "product" "0x0008"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0951"; match "product" "0x000a"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x095a"; match "product" "0x3003"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0960"; match "product" "(0x0065|0x0066|0x0067)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0961"; match "product" "0x0010"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x099e"; match "product" "(0x0052|0x4000)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x09aa"; match "product" "0x1000"; action "kldload -n if_upgt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x09d7"; match "product" "0x0100"; action "kldload -n ugensa"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0a46"; match "product" "(0x0268|0x8515|0x9601)"; action "kldload -n if_udav"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0a5c"; match "product" "0x2033"; action "kldload -n ubtbcmfw"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0a5c"; match "product" "0x21e1"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0acd"; match "product" "0x0300"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0ace"; match "product" "(0x1211|0x1215)"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0ace"; match "product" "0x1221"; action "kldload -n if_otus"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0af0"; match "product" "(0x5000|0x6000|0x6050|0x6100|0x6150|0x6200|0x6250|0x6300|0x6350|0x6500|0x6501|0x6600|0x6601|0x6701)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0af0"; match "product" "0x6711"; action "kldload -n uhso"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0af0"; match "product" "(0x6721|0x6741|0x6761|0x6800|0x6901)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0af0"; match "product" "0x6911"; action "kldload -n uhso"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0af0"; match "product" "0x6971"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0af0"; match "product" "0x6971"; action "kldload -n uhso"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0af0"; match "product" "0x7001"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0af0"; match "product" "0x7011"; action "kldload -n uhso"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0af0"; match "product" "(0x7021|0x7041|0x7061|0x7100|0x7201|0x7211)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0af0"; match "product" "(0x7251|0x7301|0x7361|0x7381|0x7401|0x7501)"; action "kldload -n uhso"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0af0"; match "product" "0x7601"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0af0"; match "product" "(0x7601|0x9000|0xc031|0xd013|0xd031)"; action "kldload -n uhso"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0af0"; match "product" "0xd033"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0af0"; match "product" "(0xd033|0xd055|0xd055)"; action "kldload -n uhso"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b05"; match "product" "(0x1706|0x1707)"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b05"; match "product" "(0x170c|0x171b)"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b05"; match "product" "0x171d"; action "kldload -n if_urtw"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b05"; match "product" "(0x1723|0x1724)"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b05"; match "product" "(0x1731|0x1732|0x1742|0x1760|0x1761|0x1784)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b05"; match "product" "0x1786"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b05"; match "product" "0x1790"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b05"; match "product" "0x1791"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b05"; match "product" "0x179d"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b05"; match "product" "0x17ab"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b05"; match "product" "0x17ad"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b05"; match "product" "0x17b5"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b05"; match "product" "0x17ba"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b05"; match "product" "0x17cb"; action "kldload -n ng_ubt"; }; +nomatch 32 { + match "bus" "uhub[0-9]+"; + match "mode" "host"; + match "vendor" "0x0b05"; + match "product" "0x17d2"; + action "kldload -n if_rtwn_usb"; +}; + nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b05"; match "product" "(0x4200|0x4201|0x4202|0x420f|0x9200|0x9202)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b39"; match "product" "0x0103"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b39"; match "product" "0x0109"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b39"; match "product" "0x0421"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b3b"; match "product" "(0x1630|0x5630|0x6630)"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b41"; match "product" "0x0011"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b63"; match "product" "0x6530"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b8c"; match "product" "0x2303"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b95"; match "product" "(0x1720|0x1780)"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b95"; match "product" "(0x178a|0x1790)"; action "kldload -n if_axge"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b95"; match "product" "(0x7720|0x772a|0x772b|0x7e2b)"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0baf"; match "product" "0x0118"; action "kldload -n if_upgt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0baf"; match "product" "0x0121"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0bb2"; match "product" "0x6098"; action "kldload -n if_cdce"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0bb4"; match "product" "(0x00ce|0x00cf|0x00cf|0x0a01|0x0a02|0x0a03|0x0a04|0x0a05|0x0a06|0x0a07|0x0a08|0x0a09|0x0a0a|0x0a0b|0x0a0c|0x0a0d|0x0a0e|0x0a0f|0x0a10|0x0a11|0x0a12|0x0a13|0x0a14|0x0a15|0x0a16|0x0a17|0x0a18|0x0a19|0x0a1a|0x0a1b|0x0a1c|0x0a1d|0x0a1e|0x0a1f|0x0a20|0x0a21|0x0a22|0x0a23|0x0a24|0x0a25|0x0a26|0x0a27|0x0a28|0x0a29|0x0a2a|0x0a2b|0x0a2c|0x0a2d|0x0a2e|0x0a2f|0x0a30|0x0a31|0x0a32|0x0a33|0x0a34|0x0a35|0x0a36|0x0a37|0x0a38|0x0a39|0x0a3a|0x0a3b|0x0a3c|0x0a3d|0x0a3e|0x0a3f|0x0a40|0x0a41|0x0a42|0x0a43|0x0a44|0x0a45|0x0a46|0x0a47|0x0a48|0x0a49|0x0a4a|0x0a4b|0x0a4c|0x0a4d|0x0a4e|0x0a4f|0x0a50|0x0a51|0x0a52|0x0a53|0x0a54|0x0a55|0x0a56|0x0a57|0x0a58|0x0a59|0x0a5a|0x0a5b|0x0a5c|0x0a5d|0x0a5e|0x0a5f|0x0a60|0x0a61|0x0a62|0x0a63|0x0a64|0x0a65|0x0a66|0x0a67|0x0a68|0x0a69|0x0a6a|0x0a6b|0x0a6c|0x0a6d|0x0a6e|0x0a6f|0x0a70|0x0a71|0x0a72|0x0a73|0x0a74|0x0a75|0x0a76|0x0a77|0x0a78|0x0a79|0x0a7a|0x0a7b|0x0a7c|0x0a7d|0x0a7e|0x0a7f|0x0a80|0x0a81|0x0a82|0x0a83|0x0a84|0x0a85|0x0a86|0x0a87|0x0a88|0x0a89|0x0a8a|0x0a8b|0x0a8c|0x0a8d|0x0a8e|0x0a8f|0x0a90|0x0a91|0x0a92|0x0a93|0x0a94|0x0a95|0x0a96|0x0a97|0x0a98|0x0a99|0x0a9a|0x0a9b|0x0a9c|0x0a9d|0x0a9e|0x0a9f|0x0bce)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0bda"; match "product" "(0x0179|0x018a|0x317f)"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0bda"; match "product" "0x8150"; action "kldload -n if_rue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0bda"; match "product" "0x8152"; action "kldload -n if_ure"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0bda"; match "product" "0x8170"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0bda"; match "product" "(0x8171|0x8172|0x8173|0x8174)"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0bda"; match "product" "(0x8176|0x8177|0x8178|0x8179|0x817a|0x817b|0x817c|0x817d|0x817e|0x817f)"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0bda"; match "product" "(0x8187|0x8189)"; action "kldload -n if_urtw"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0bda"; match "product" "(0x818a|0x8191)"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0bda"; match "product" "(0x8197|0x8198)"; action "kldload -n if_urtw"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0bda"; match "product" "(0x8712|0x8712)"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0bda"; match "product" "0x8754"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0bda"; match "product" "0xc512"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0bdb"; match "product" "0x1002"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0bed"; match "product" "(0x1100|0x1101)"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0bf8"; match "product" "0x1001"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0bf8"; match "product" "0x1009"; action "kldload -n if_upgt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0c10"; match "product" "0x0000"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0c26"; match "product" "(0x0004|0x0009|0x000a|0x000b|0x000c|0x000d|0x0010|0x0011|0x0012|0x0013|0x0018)"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0c33"; match "product" "0x0010"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0c44"; match "product" "0x03a2"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0c45"; match "product" "0x7401"; action "kldload -n ugold"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0c52"; match "product" "(0x2101|0x2102|0x2103|0x2104|0x2211|0x2212|0x2213|0x2221|0x2222|0x2223|0x2411|0x2412|0x2413|0x2421|0x2422|0x2423|0x2431|0x2432|0x2433|0x2441|0x2442|0x2443|0x2811|0x2812|0x2813|0x2821|0x2822|0x2823|0x2831|0x2832|0x2833|0x2841|0x2842|0x2843|0x2851|0x2852|0x2853|0x2861|0x2862|0x2863|0x2871|0x2872|0x2873|0x2881|0x2882|0x2883|0x9020)"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0c6c"; match "product" "0x04b2"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0c7d"; match "product" "0x0005"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0c88"; match "product" "0x17da"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0c88"; match "product" "0x17da"; action "kldload -n ugensa"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0c88"; match "product" "0x180a"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0c8e"; match "product" "0x6000"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0cad"; match "product" "0x9001"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0cde"; match "product" "0x0008"; action "kldload -n if_upgt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0cde"; match "product" "0x0011"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0cde"; match "product" "0x0012"; action "kldload -n if_uath"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0cde"; match "product" "0x0015"; action "kldload -n if_upgt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0cde"; match "product" "0x001a"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0cde"; match "product" "0x0022"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0cde"; match "product" "0x0023"; action "kldload -n if_otus"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0cde"; match "product" "0x0025"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0cde"; match "product" "0x0026"; action "kldload -n if_otus"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0cf3"; match "product" "(0x0001|0x0003|0x0005)"; action "kldload -n if_uath"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0cf3"; match "product" "(0x1001|0x1002|0x1010|0x1011)"; action "kldload -n if_otus"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0cf3"; match "product" "(0x3002|0x3004|0x311d)"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0cf3"; match "product" "0x9170"; action "kldload -n if_otus"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0cf3"; match "product" "(0xe004|0xe019)"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0d3a"; match "product" "0x0300"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0d46"; match "product" "(0x2020|0x2021)"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0d8e"; match "product" "0x3762"; action "kldload -n if_upgt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0d8e"; match "product" "(0x7801|0x7811)"; action "kldload -n if_uath"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0db0"; match "product" "(0x3820|0x3821|0x3822|0x3870|0x3871)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0db0"; match "product" "(0x6861|0x6865|0x6869)"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0db0"; match "product" "(0x6874|0x6877)"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0db0"; match "product" "(0x6899|0x821a|0x822a|0x870a|0x871a|0x899a)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0db0"; match "product" "(0xa861|0xa874)"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0db7"; match "product" "0x0002"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0dcd"; match "product" "0x0001"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0df6"; match "product" "0x000d"; action "kldload -n if_urtw"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0df6"; match "product" "0x0017"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0df6"; match "product" "0x0021"; action "kldload -n if_mos"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0df6"; match "product" "0x0028"; action "kldload -n if_urtw"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0df6"; match "product" "(0x002b|0x002c|0x002d|0x0039|0x003b|0x003c|0x003d|0x003e|0x003f|0x0040|0x0041|0x0042)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0df6"; match "product" "0x0045"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0df6"; match "product" "(0x0047|0x0048|0x004a)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0df6"; match "product" "0x004b"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0df6"; match "product" "0x004d"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0df6"; match "product" "0x0052"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0df6"; match "product" "0x0056"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0df6"; match "product" "(0x005c|0x0061)"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0df6"; match "product" "0x0072"; action "kldload -n if_axge"; }; +nomatch 32 { + match "bus" "uhub[0-9]+"; + match "mode" "host"; + match "vendor" "0x0df6"; + match "product" "0x0074"; + action "kldload -n if_rtwn_usb"; +}; + nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0df6"; match "product" "0x061c"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0df6"; match "product" "(0x9071|0x9075)"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0df6"; match "product" "(0x90ac|0x9712)"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0df7"; match "product" "0x0620"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0e0b"; match "product" "(0x9031|0x9041)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0e55"; match "product" "0x110b"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0e66"; match "product" "(0x0001|0x0003|0x0009|0x000b)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0e66"; match "product" "(0x0015|0x0016)"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0e66"; - match "product" "0x0019"; - action "kldload -n if_urtwn"; + match "product" "(0x0019|0x0023)"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0e66"; match "product" "0x400c"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0e67"; match "product" "0x0002"; action "kldload -n uvisor"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0e7e"; match "product" "0x1001"; action "kldload -n if_cdce"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0e8d"; match "product" "0x763f"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0ea0"; match "product" "0x6858"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0eab"; match "product" "0xc893"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0eb0"; match "product" "0x9020"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0eb0"; match "product" "0x9021"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0eb0"; match "product" "0x9071"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0eba"; match "product" "(0x1080|0x2080)"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0eef"; match "product" "(0x0001|0x0002)"; action "kldload -n uep"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0f3d"; match "product" "0x0112"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0f3d"; match "product" "0x0112"; action "kldload -n ugensa"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0f3d"; match "product" "0x68a3"; action "kldload -n usie"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0f3d"; match "product" "0x68aa"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0f4e"; match "product" "0x0200"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0f88"; match "product" "0x3012"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0f88"; match "product" "0x3014"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0f94"; match "product" "(0x0001|0x0005)"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0f98"; match "product" "0x0201"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0fb8"; match "product" "(0x3001|0x3002|0x3003|0x4001)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0fcf"; match "product" "(0x1003|0x1004|0x1006)"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0fd8"; match "product" "0x0001"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0fde"; match "product" "0xca05"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0fe6"; match "product" "(0x8101|0x9700)"; action "kldload -n if_udav"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1004"; match "product" "0x618f"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x100d"; match "product" "(0x9031|0x9032)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1011"; match "product" "0x3198"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x103c"; match "product" "0x1629"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x103e"; match "product" "0x03e8"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1044"; match "product" "0x8001"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1044"; match "product" "0x8002"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1044"; match "product" "0x8007"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1044"; match "product" "(0x8008|0x800a)"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1044"; match "product" "(0x800b|0x800c|0x800d)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1066"; match "product" "(0x00ce|0x0300|0x0500|0x0600|0x0700)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x106c"; match "product" "0x3701"; action "kldload -n umodem"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x10a6"; match "product" "0xaa26"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x10ab"; match "product" "0x10c5"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x10b5"; match "product" "0xac70"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x10b5"; match "product" "0xac70"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x10bd"; match "product" "0x1427"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x10c4"; match "product" "(0x0f91|0x1101|0x1601|0x800a|0x803b|0x8043|0x8044)"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x10c4"; match "product" "0x8053"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x10c4"; match "product" "(0x8066|0x806f|0x807a|0x80c4|0x80ca|0x80dd|0x80ed|0x80f6|0x8115|0x813d|0x813f|0x814a|0x814a|0x814b|0x8156|0x815e|0x815f|0x818b|0x819f|0x81a6|0x81a9|0x81ac|0x81ad|0x81c8|0x81e2|0x81e7|0x81e8|0x81f2|0x8218|0x822b|0x826b|0x8293|0x82f9|0x8341|0x8382|0x83a8|0x83d8|0x8411|0x8418|0x846e|0x8477|0x85ea|0x85eb|0x85f8|0x8664|0x8665|0x88a4|0x88a5|0xea60|0xea61|0xea70|0xea71|0xea80|0xf001|0xf002|0xf003|0xf004)"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x10c5"; match "product" "0xea61"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x10ce"; match "product" "0xea61"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1114"; match "product" "(0x0001|0x0004|0x0006)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x114b"; match "product" "0x0110"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x114b"; match "product" "0x0150"; action "kldload -n if_urtw"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1163"; match "product" "0x0100"; action "kldload -n ucycom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1182"; match "product" "0x1388"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1186"; match "product" "0x3e04"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1189"; match "product" "0x0893"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1199"; match "product" "(0x0017|0x0018|0x0019|0x0020|0x0021|0x0022|0x0023|0x0024|0x0025|0x0026|0x0027|0x0028|0x0029|0x0112|0x0120|0x0218)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1199"; match "product" "0x0218"; action "kldload -n umodem"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1199"; match "product" "(0x0220|0x0224|0x0fff)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1199"; match "product" "0x0fff"; action "kldload -n usie"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1199"; match "product" "(0x6802|0x6803|0x6804|0x6805|0x6808|0x6809|0x6812|0x6813|0x6815|0x6816|0x6820|0x6821|0x6822|0x6832|0x6833|0x6834|0x6835|0x6838|0x6839|0x683a|0x683b|0x683c|0x683d|0x683e|0x6850|0x6851|0x6852|0x6853|0x6855|0x6856|0x6859|0x685a|0x6880|0x6890|0x6891|0x6892|0x6893|0x68a3)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1199"; match "product" "0x68a3"; action "kldload -n usie"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1199"; match "product" "(0x68aa|0x68c0|0x9041)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x11ad"; match "product" "0x0701"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x11d9"; match "product" "(0x1002|0x1003)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x11f5"; match "product" "(0x0001|0x0003|0x0004|0x0005)"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x11f6"; match "product" "0x2001"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x11f7"; match "product" "0x02df"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1209"; match "product" "(0x1002|0x1006)"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1231"; match "product" "(0xce01|0xce02)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x126f"; match "product" "0xa006"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x128d"; match "product" "0x0001"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x129b"; match "product" "0x1666"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x129b"; match "product" "0x1828"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x12d1"; match "product" "(0x1001|0x1003|0x1004|0x1401|0x1402|0x1403|0x1404|0x1405|0x1406|0x1407|0x1408|0x1409|0x140a|0x140b|0x140c|0x140d|0x140e|0x140f|0x1410|0x1411|0x1412|0x1413|0x1414|0x1415|0x1416|0x1417|0x1418|0x1419|0x141a|0x141b|0x141c|0x141d|0x141e|0x141f|0x1420|0x1421|0x1422|0x1423|0x1424|0x1425|0x1426|0x1427|0x1428|0x1429|0x142a|0x142b|0x142c|0x142d|0x142e|0x142f|0x1430|0x1431|0x1432|0x1433|0x1434|0x1435|0x1436|0x1437|0x1438|0x1439|0x143a|0x143b|0x143c|0x143d|0x143e|0x143f|0x1446|0x1464|0x1465|0x14ac|0x14c9|0x14cf|0x14d1|0x14fe|0x1505|0x1506|0x1520|0x1521|0x1526)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x12d1"; match "product" "0x155b"; action "kldload -n if_cdce"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x12d1"; match "product" "(0x1573|0x1803|0x1c05|0x1c0b)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x12ef"; match "product" "0x0100"; action "kldload -n uvisor"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1342"; match "product" "0x0202"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1342"; match "product" "0x0204"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1371"; match "product" "(0x9022|0x9032)"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1371"; match "product" "0x9401"; action "kldload -n if_urtw"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1385"; match "product" "(0x4250|0x5f00|0x5f02)"; action "kldload -n if_uath"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x13ad"; match "product" "0x9999"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x13b1"; match "product" "0x000c"; action "kldload -n if_upgt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x13b1"; match "product" "(0x000d|0x0011)"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x13b1"; match "product" "0x0018"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x13b1"; match "product" "0x001a"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x13b1"; match "product" "(0x0020|0x0023)"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x13b1"; match "product" "0x0024"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x13b1"; match "product" "0x002f"; action "kldload -n if_run"; }; +nomatch 32 { + match "bus" "uhub[0-9]+"; + match "mode" "host"; + match "vendor" "0x13b1"; + match "product" "0x003f"; + action "kldload -n if_rtwn_usb"; +}; + nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x13d2"; match "product" "0x0400"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x13d3"; match "product" "(0x3247|0x3262|0x3273|0x3284)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x13d3"; match "product" "0x3304"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x13d3"; match "product" "0x3305"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x13d3"; match "product" "(0x3306|0x3309|0x3310|0x3311|0x3325)"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x13d3"; match "product" "(0x3357|0x3358|0x3359)"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x13d3"; match "product" "(0x3362|0x3375|0x3393)"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1410"; match "product" "(0x1100|0x1110|0x1120|0x1130|0x1400|0x1410|0x1420|0x1430|0x1450|0x2100|0x2110|0x2120|0x2130|0x2400|0x2410|0x2420|0x4100|0x4400|0x5010|0x5020|0x5041|0x5100|0x6000|0x6002|0x7001|0x7031|0x7042)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1416"; match "product" "0x1110"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1435"; match "product" "0x0326"; action "kldload -n if_otus"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1435"; match "product" "0x0427"; action "kldload -n if_upgt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1435"; match "product" "0x0711"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1435"; match "product" "0x0804"; action "kldload -n if_otus"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1435"; match "product" "(0x0826|0x082a)"; action "kldload -n if_uath"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1453"; match "product" "0x4026"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1457"; match "product" "(0x5118|0x5118)"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1472"; match "product" "0x0009"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1482"; match "product" "0x3c09"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1485"; match "product" "(0x0001|0x0002)"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x148f"; match "product" "0x1706"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x148f"; match "product" "0x2070"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x148f"; match "product" "0x2570"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x148f"; match "product" "(0x2573|0x2671)"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x148f"; match "product" "(0x2770|0x2870|0x2878|0x3070|0x3071|0x3072|0x3370|0x3572|0x3573|0x5370|0x5572|0x8070)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x148f"; match "product" "0x9020"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x148f"; match "product" "0x9021"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x14b2"; match "product" "(0x3300|0x3301|0x3302)"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x14b2"; match "product" "0x3c02"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x14b2"; match "product" "(0x3c06|0x3c07|0x3c08|0x3c09|0x3c11|0x3c12)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x14b2"; match "product" "0x3c22"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x14b2"; match "product" "(0x3c23|0x3c25|0x3c25|0x3c27|0x3c28)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x14ea"; match "product" "0xab10"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x14ea"; match "product" "0xab11"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x14ea"; match "product" "0xab13"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1555"; match "product" "0x0004"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1557"; match "product" "0x7720"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1557"; match "product" "0x8150"; action "kldload -n if_rue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x157e"; match "product" "0x3006"; action "kldload -n if_uath"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x157e"; match "product" "(0x300a|0x300b|0x300d)"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x157e"; match "product" "0x300e"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x157e"; match "product" "0x3204"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x157e"; match "product" "0x3205"; action "kldload -n if_uath"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1582"; match "product" "0x6003"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x15a9"; match "product" "0x0004"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x15a9"; match "product" "(0x0006|0x0010)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x15ba"; match "product" "(0x0003|0x002b)"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x15c5"; match "product" "0x0008"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x15e8"; match "product" "(0x9100|0x9110)"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1614"; match "product" "(0x0800|0x0802|0x7002)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1631"; match "product" "0x6200"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1631"; match "product" "0xc019"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1645"; match "product" "(0x0005|0x0008|0x8005)"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x166a"; match "product" "(0x0101|0x0201|0x0301|0x0303|0x0304|0x0305|0x0401)"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x167b"; match "product" "0x4001"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x168c"; match "product" "0x0001"; action "kldload -n if_uath"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1690"; match "product" "0x0601"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1690"; match "product" "(0x0710|0x0712)"; action "kldload -n if_uath"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1690"; match "product" "0x0722"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1690"; match "product" "(0x0740|0x0744)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x16ab"; match "product" "(0x7801|0x7811)"; action "kldload -n if_uath"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x16d5"; match "product" "(0x6202|0x6501)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x16d5"; match "product" "0x6501"; action "kldload -n ubsa"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x16d5"; match "product" "0x6502"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x16d5"; match "product" "0x6502"; action "kldload -n ubsa"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x16d6"; match "product" "0x0001"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x16d8"; match "product" "(0x6006|0x6280)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x16d8"; match "product" "0x6280"; action "kldload -n ugensa"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x16dc"; match "product" "(0x0010|0x0011|0x0012|0x0015)"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1726"; match "product" "0x1000"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1726"; match "product" "0x1000"; action "kldload -n ubsa"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1737"; match "product" "0x0039"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1737"; match "product" "(0x0070|0x0071)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1737"; match "product" "0x0073"; action "kldload -n if_urtw"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1737"; match "product" "(0x0077|0x0078|0x0079)"; action "kldload -n if_run"; }; +nomatch 32 { + match "bus" "uhub[0-9]+"; + match "mode" "host"; + match "vendor" "0x1740"; + match "product" "0x0100"; + action "kldload -n if_rtwn_usb"; +}; + nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1740"; match "product" "(0x0605|0x0615)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1740"; match "product" "0x2000"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1740"; match "product" "(0x9603|0x9605)"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1740"; match "product" "(0x9701|0x9702|0x9703|0x9705|0x9706|0x9707|0x9708|0x9709|0x9801)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1761"; match "product" "0x0b05"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x177f"; match "product" "0x0153"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x177f"; match "product" "0x0154"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x177f"; match "product" "(0x0302|0x0313)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1781"; match "product" "0x0c30"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x17a8"; match "product" "(0x0001|0x0005)"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x17e9"; match "product" "(0x0059|0x0100|0x0117|0x0136|0x0138|0x0141|0x015a|0x0198|0x019b|0x01ba|0x01bb|0x01d4|0x01d7|0x01e2|0x0215|0x024c|0x02a9|0x02e9|0x0377|0x03e0|0x401a)"; action "kldload -n udl"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x17ef"; match "product" "0x304b"; action "kldload -n if_axge"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x17ef"; match "product" "0x7203"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x17f4"; match "product" "0xaaaa"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1843"; match "product" "0x0200"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x18c5"; match "product" "0x0002"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x18c5"; match "product" "(0x0008|0x0012)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x18e8"; match "product" "(0x6196|0x6229)"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x18e8"; match "product" "0x6232"; action "kldload -n if_urtw"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x18e8"; match "product" "0x6238"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x18e8"; match "product" "0x6259"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x18ef"; match "product" "0xe00f"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x19d2"; match "product" "(0x0001|0x0002|0x0003|0x0004|0x0005|0x0006|0x0007|0x0008|0x0009|0x000a|0x000b|0x000c|0x000d|0x000e|0x000f|0x0010|0x0011|0x0012|0x0013|0x0014|0x0015|0x0016|0x0017|0x0018|0x0019|0x0020|0x0021|0x0022|0x0023|0x0024|0x0025|0x0026|0x0027|0x0028|0x0029|0x0030|0x0031|0x0032|0x0033|0x0037|0x0039|0x0042|0x0043|0x0048|0x0049|0x0051|0x0052|0x0053|0x0054|0x0055|0x0057|0x0058|0x0059|0x0060|0x0061|0x0062|0x0063|0x0064|0x0066|0x0069|0x0070|0x0073|0x0076|0x0078|0x0082|0x0086|0x0103|0x0117|0x1179|0x1181|0x1420|0x1514|0x1516|0x2000|0x2002|0x2003|0xffdd|0xffde|0xfff1|0xfff5|0xfffe)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x19f5"; match "product" "0x9909"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1a79"; match "product" "0x6001"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1a86"; match "product" "(0x5523|0x7523)"; action "kldload -n uchcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1a8d"; match "product" "(0x1002|0x1003|0x1004|0x1005|0x1006|0x1007|0x1008|0x1009|0x100a|0x100b|0x100c|0x100d|0x100e|0x100f|0x1010|0x1011|0x1012)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1adb"; match "product" "0x0001"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1b3d"; match "product" "(0x0100|0x0101|0x0102|0x0103|0x0104|0x0105|0x0106|0x0107|0x0108|0x0109|0x010a|0x010b|0x010c|0x010d|0x010e|0x010f|0x0110|0x0111|0x0112|0x0113|0x0114|0x0115|0x0116|0x0117|0x0118|0x0119|0x011a|0x011b|0x011c|0x011d|0x011e|0x011f|0x0120|0x0121|0x0122|0x0123|0x0124|0x0125|0x0126|0x0128|0x0129|0x012a|0x012b|0x012d|0x012e|0x012f|0x0130|0x0131|0x0132|0x0133|0x0134|0x0135|0x0136|0x0137|0x0138|0x0139|0x013a|0x013b|0x013c|0x013d|0x013e|0x013f|0x0140|0x0141|0x0142|0x0143|0x0144|0x0145|0x0146|0x0147|0x0148|0x0149|0x014a|0x014b|0x014c|0x014d|0x014e|0x014f|0x0150|0x0151|0x0152|0x0153|0x0159|0x015a|0x015b|0x015c|0x015d|0x015e|0x015f|0x0160|0x0161|0x0162|0x0163|0x0164|0x0165|0x0166|0x0167|0x0168|0x0169|0x016a|0x016b|0x016c|0x016d|0x016e|0x016f|0x0170|0x0171|0x0172|0x0173|0x0174|0x0175|0x0176|0x0177|0x0178|0x0179|0x017a|0x017b|0x017c|0x017d|0x017e|0x017f|0x0180|0x0181|0x0182|0x0183|0x0184|0x0185|0x0186|0x0187|0x0188|0x0189|0x018a|0x018b|0x018c|0x018d|0x018e|0x018f|0x0190|0x0191|0x0192|0x0193|0x0194|0x0195|0x0196|0x0197|0x0198|0x0199|0x019a|0x019b|0x019c|0x019d|0x019e|0x019f|0x01a0|0x01a1|0x01a2|0x01a3|0x01a4|0x01a5|0x01a6|0x01a7|0x01a8|0x01a9|0x01aa|0x01ab|0x01ac|0x01ad|0x01ae|0x01af|0x01b0|0x01b1|0x01b2|0x01b3|0x01b4|0x01b5|0x01b6|0x01b7|0x01b8|0x01b9|0x01ba|0x01bb|0x01bc|0x01bd|0x01be|0x01bf|0x01c0|0x01c1|0x01c2|0x01c3|0x01c4|0x01c5|0x01c6|0x01c7|0x01c8|0x01c9|0x01ca|0x01cb|0x01cc|0x01cd|0x01ce|0x01cf|0x01d0|0x01d1|0x01d2|0x01d3|0x01d4|0x01d5|0x01d6|0x01d7|0x01d8|0x01d9|0x01da|0x01db|0x01dc|0x01dd|0x01de|0x01df|0x01e0|0x01e1|0x01e2|0x01e3|0x01e4|0x01e5|0x01e6|0x01e7|0x01e8|0x01e9|0x01ea|0x01eb|0x01ec|0x01ed|0x01ee|0x01ef|0x01f0|0x01f1|0x01f2|0x01f3|0x01f4|0x01f5|0x01f6|0x01f7|0x01f8|0x01f9|0x01fa|0x01fb|0x01fc|0x01fd|0x01fe|0x01ff)"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1b75"; match "product" "0x3072"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1b75"; match "product" "0x8187"; action "kldload -n if_urtw"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1b91"; match "product" "0x0064"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1bbb"; match "product" "(0x0000|0xf000)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1bc7"; match "product" "(0x1003|0x1004)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1bc9"; match "product" "0x6001"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1be3"; match "product" "0x07a6"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1c0c"; match "product" "0x0102"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1c9e"; match "product" "(0x6061|0x9603|0x9605|0xf000)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1cf1"; match "product" "(0x0001|0x0004|0x001c|0x0022)"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1d09"; match "product" "0x4000"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1d34"; match "product" "0x0004"; action "kldload -n uled"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1d4d"; match "product" "(0x0002|0x000c|0x000e|0x0010)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1da5"; match "product" "(0x4512|0x4515|0x4519|0x4523)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1e0e"; match "product" "(0x9000|0x9200|0xce16)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1e29"; match "product" "(0x0102|0x0501)"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1eda"; match "product" "0x2310"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x1fb9"; match "product" "(0x0100|0x0200|0x0201|0x0202|0x0203|0x0300|0x0301|0x0302|0x0303|0x0400|0x0401|0x0402|0x0403|0x0404|0x0600|0x0601|0x0602|0x0700|0x0701)"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2001"; match "product" "(0x1a00|0x1a02)"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2001"; match "product" "0x200c"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2001"; - match "product" "(0x3307|0x3308|0x3309|0x330a|0x330d|0x330f|0x3310)"; - action "kldload -n if_urtwn"; + match "product" "(0x3307|0x3308|0x3309|0x330a|0x330d|0x330f|0x3310|0x3314|0x3315|0x3316|0x3318)"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2001"; match "product" "(0x3a00|0x3a02|0x3a04)"; action "kldload -n if_uath"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2001"; match "product" "0x3c00"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2001"; match "product" "0x3c05"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2001"; match "product" "(0x3c09|0x3c0a|0x3c15|0x3c1a|0x3c1b|0x3c1f|0x3c20)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2001"; match "product" "0x4000"; action "kldload -n if_kue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2001"; match "product" "(0x4001|0x4002|0x4003|0x400b|0x4102)"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2001"; match "product" "0x4a00"; action "kldload -n if_axge"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2001"; match "product" "(0x7d02|0x7e12|0xa707|0xa805)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2001"; match "product" "0xabc1"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2019"; match "product" "(0x1201|0x4902)"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2019"; match "product" "0x5303"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2019"; match "product" "0x5304"; action "kldload -n if_otus"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2019"; match "product" "0xab01"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2019"; match "product" "(0xab24|0xab25)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2019"; match "product" "0xab28"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2019"; - match "product" "(0xab2a|0xab2b|0xab2e)"; - action "kldload -n if_urtwn"; + match "product" "(0xab2a|0xab2b|0xab2e|0xab30)"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2019"; match "product" "0xab50"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2019"; match "product" "(0xc007|0xed01)"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2019"; match "product" "0xed02"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2019"; match "product" "(0xed06|0xed14)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2019"; match "product" "0xed17"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x203d"; match "product" "(0x1480|0x14a1|0x14a9)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x20b7"; match "product" "0x0713"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x20b8"; match "product" "0x8888"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x20b9"; match "product" "0x1682"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x20f4"; match "product" "0x624d"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x20f4"; match "product" "0x646b"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x20f4"; - match "product" "0x648b"; - action "kldload -n if_urtwn"; + match "product" "(0x648b|0x805b)"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2100"; match "product" "(0x9e52|0x9e54)"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x22b8"; match "product" "(0x4204|0x4214|0x4224|0x4234|0x4244)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x22b8"; match "product" "(0x600c|0x6027)"; action "kldload -n if_cdce"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x22b8"; match "product" "0x710f"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x22de"; match "product" "0x6801"; action "kldload -n u3g"; }; +nomatch 32 { + match "bus" "uhub[0-9]+"; + match "mode" "host"; + match "vendor" "0x2357"; + match "product" "0x0101"; + action "kldload -n if_rtwn_usb"; +}; + nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2405"; match "product" "0x0003"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x2478"; match "product" "0x2008"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x3195"; match "product" "(0xf190|0xf280|0xf281)"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x3334"; match "product" "0x1701"; action "kldload -n if_aue"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x3340"; match "product" "(0x011c|0x0326|0x0426|0x043a|0x051c|0x053a|0x071c|0x0b1c|0x0e3a|0x0f1c|0x0f3a|0x1326|0x191c|0x2326|0x3326)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x3708"; match "product" "(0x20ce|0x21ce)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x4113"; match "product" "(0x0210|0x0211|0x0400|0x0410)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x413c"; match "product" "(0x4001|0x4002|0x4003|0x4004|0x4005|0x4006|0x4007|0x4008|0x4009)"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x413c"; match "product" "(0x8102|0x8104)"; action "kldload -n if_upgt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x413c"; match "product" "(0x8114|0x8115|0x8116|0x8117|0x8118|0x8128|0x8129|0x8133|0x8134|0x8135|0x8136|0x8137|0x8138|0x8180|0x8181|0x8182)"; action "kldload -n u3g"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x413c"; match "product" "0x8197"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x413c"; match "product" "0x9500"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x4348"; match "product" "0x5523"; action "kldload -n uchcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x4505"; match "product" "0x0010"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x4766"; match "product" "0x0001"; action "kldload -n uvisor"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x4855"; match "product" "(0x0090|0x0091)"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x5050"; match "product" "(0x0100|0x0101|0x0102|0x0103|0x0104|0x0105|0x0106|0x0107|0x0300|0x0301|0x0400|0x0500|0x0700|0x0800|0x0900|0x0a00|0x0b00|0x0c00|0x0d00|0x0e00|0x0f00|0x1000|0x8000|0x8001|0x8002|0x8003|0x8004|0x8005)"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x5173"; match "product" "0x1809"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x5372"; match "product" "0x2303"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x5a57"; match "product" "0x0260"; action "kldload -n if_ural"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x5a57"; match "product" "(0x0280|0x0282|0x0283|0x0284|0x5257)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x5e04"; match "product" "0xce00"; action "kldload -n uipaq"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x6189"; match "product" "0x182d"; action "kldload -n if_axe"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x6189"; match "product" "0x2068"; action "kldload -n uplcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x6547"; match "product" "0x0232"; action "kldload -n uark"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x6891"; match "product" "0xa727"; action "kldload -n if_zyd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x7392"; match "product" "0x7318"; action "kldload -n if_rum"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x7392"; match "product" "(0x7611|0x7612|0x7622)"; action "kldload -n if_rsu"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x7392"; match "product" "(0x7711|0x7717|0x7718|0x7733)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x7392"; - match "product" "(0x7811|0x7822)"; - action "kldload -n if_urtwn"; + match "product" "(0x7811|0x7822|0xa811|0xa812|0xa822)"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x8516"; match "product" "(0x2070|0x2770|0x2870|0x3070|0x3071|0x3072|0x3572)"; action "kldload -n if_run"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x9710"; match "product" "0x7703"; action "kldload -n umoscom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x9710"; match "product" "0x7730"; action "kldload -n if_mos"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x9710"; match "product" "0x7820"; action "kldload -n umcs"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x9710"; match "product" "(0x7830|0x7832)"; action "kldload -n if_mos"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x9710"; match "product" "0x7840"; action "kldload -n umcs"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x9846"; match "product" "0x9041"; - action "kldload -n if_urtwn"; + action "kldload -n if_rtwn_usb"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x9e88"; match "product" "0x9e8f"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0xcace"; match "product" "0x0300"; action "kldload -n if_otus"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0xdaae"; match "product" "0xead6"; action "kldload -n uslcom"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0xdeee"; match "product" "(0x0300|0x0302|0x0303)"; action "kldload -n uftdi"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0489"; match "intclass" "0xff"; match "intsubclass" "0x01"; match "intprotocol" "0x01"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x05ac"; match "intclass" "0xff"; match "intsubclass" "0x01"; match "intprotocol" "0x01"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x05ac"; match "intclass" "0xff"; match "intsubclass" "0xfd"; match "intprotocol" "0x01"; action "kldload -n if_ipheth"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0830"; match "intclass" "0x02"; match "intsubclass" "0x02"; match "intprotocol" "0xff"; action "kldload -n if_urndis"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0a5c"; match "intclass" "0xff"; match "intsubclass" "0x01"; match "intprotocol" "0x01"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x12d1"; match "intclass" "0x02"; match "intsubclass" "0x02"; match "intprotocol" "0xff"; action "kldload -n umodem"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x12d1"; match "intclass" "0xff"; match "intsubclass" "0x02"; match "intprotocol" "0x16"; action "kldload -n if_cdce"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x12d1"; match "intclass" "0xff"; match "intsubclass" "0x02"; match "intprotocol" "0x46"; action "kldload -n if_cdce"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x12d1"; match "intclass" "0xff"; match "intsubclass" "0x02"; match "intprotocol" "0x76"; action "kldload -n if_cdce"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "(host|device)"; match "intclass" "0x02"; match "intsubclass" "0x02"; match "intprotocol" "0x00"; action "kldload -n umodem"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "(host|device)"; match "intclass" "0x02"; match "intsubclass" "0x02"; match "intprotocol" "0x01"; action "kldload -n umodem"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "intclass" "0x02"; match "intsubclass" "0x02"; match "intprotocol" "0xff"; action "kldload -n if_urndis"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "intclass" "0x03"; match "intsubclass" "0x01"; match "intprotocol" "0x01"; action "kldload -n ukbd"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "intclass" "0x03"; match "intsubclass" "0x01"; match "intprotocol" "0x02"; action "kldload -n ums"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "intclass" "0x07"; match "intsubclass" "0x01"; match "intprotocol" "0x01"; action "kldload -n ulpt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "intclass" "0x07"; match "intsubclass" "0x01"; match "intprotocol" "0x02"; action "kldload -n ulpt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "intclass" "0x07"; match "intsubclass" "0x01"; match "intprotocol" "0x03"; action "kldload -n ulpt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "intclass" "0xe0"; match "intsubclass" "0x01"; match "intprotocol" "0x01"; action "kldload -n ng_ubt"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "intclass" "0xe0"; match "intsubclass" "0x01"; match "intprotocol" "0x03"; action "kldload -n if_urndis"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "intclass" "0xef"; match "intsubclass" "0x01"; match "intprotocol" "0x01"; action "kldload -n if_urndis"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "intclass" "0xff"; match "intsubclass" "0x5d"; match "intprotocol" "0x01"; action "kldload -n uhid"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "intclass" "0x01"; match "intsubclass" "0x01"; action "kldload -n snd_uaudio"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "intclass" "0x01"; match "intsubclass" "0x03"; action "kldload -n snd_uaudio"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "(host|device)"; match "intclass" "0x02"; match "intsubclass" "0x06"; action "kldload -n if_cdce"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "(host|device)"; match "intclass" "0x02"; match "intsubclass" "0x0a"; action "kldload -n if_cdce"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "(host|device)"; match "intclass" "0x02"; match "intsubclass" "0x0d"; action "kldload -n if_cdce"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "intclass" "0x02"; match "intsubclass" "0x88"; action "kldload -n ufoma"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "intclass" "0x03"; action "kldload -n uhid"; }; nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "intclass" "0x08"; action "kldload -n umass"; }; -# 2722 USB entries processed +# 2743 USB entries processed diff --git a/share/doc/legal/realtek/Makefile b/share/doc/legal/realtek/Makefile index e168a18290df..f98d46e5f858 100644 --- a/share/doc/legal/realtek/Makefile +++ b/share/doc/legal/realtek/Makefile @@ -1,7 +1,7 @@ # $FreeBSD$ -FILES= ${.CURDIR}/../../../../sys/contrib/dev/urtwn/LICENSE +FILES= ${.CURDIR}/../../../../sys/contrib/dev/rtwn/LICENSE FILESDIR= ${SHAREDIR}/doc/legal FILESNAME= realtek.LICENSE .include diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile index 2a9061a634a8..61f1a89c5f27 100644 --- a/share/man/man4/Makefile +++ b/share/man/man4/Makefile @@ -1,954 +1,956 @@ # @(#)Makefile 8.1 (Berkeley) 6/18/93 # $FreeBSD$ .include PACKAGE=runtime-manuals MAN= aac.4 \ aacraid.4 \ acpi.4 \ ${_acpi_asus.4} \ ${_acpi_asus_wmi.4} \ ${_acpi_dock.4} \ ${_acpi_fujitsu.4} \ ${_acpi_hp.4} \ ${_acpi_ibm.4} \ ${_acpi_panasonic.4} \ ${_acpi_rapidstart.4} \ ${_acpi_sony.4} \ acpi_thermal.4 \ ${_acpi_toshiba.4} \ acpi_video.4 \ ${_acpi_wmi.4} \ ada.4 \ adv.4 \ adw.4 \ ae.4 \ ${_aesni.4} \ age.4 \ agp.4 \ aha.4 \ ahb.4 \ ahc.4 \ ahci.4 \ ahd.4 \ ${_aibs.4} \ aio.4 \ alc.4 \ ale.4 \ alpm.4 \ altera_atse.4 \ altera_avgen.4 \ altera_jtag_uart.4 \ altera_sdcard.4 \ altq.4 \ amdpm.4 \ ${_amdsbwd.4} \ ${_amdsmb.4} \ ${_amdtemp.4} \ ${_bxe.4} \ amr.4 \ an.4 \ ${_aout.4} \ ${_apic.4} \ arcmsr.4 \ ${_asmc.4} \ ata.4 \ ath.4 \ ath_ahb.4 \ ath_hal.4 \ ath_pci.4 \ atkbd.4 \ atkbdc.4 \ atp.4 \ ${_atf_test_case.4} \ ${_atrtc.4} \ ${_attimer.4} \ audit.4 \ auditpipe.4 \ aue.4 \ axe.4 \ axge.4 \ bce.4 \ bcma.4 \ bfe.4 \ bge.4 \ ${_bhyve.4} \ bhnd.4 \ bhndb.4 \ bktr.4 \ blackhole.4 \ bpf.4 \ bridge.4 \ bt.4 \ bwi.4 \ bwn.4 \ capsicum.4 \ cardbus.4 \ carp.4 \ cas.4 \ cc_cdg.4 \ cc_chd.4 \ cc_cubic.4 \ cc_dctcp.4 \ cc_hd.4 \ cc_htcp.4 \ cc_newreno.4 \ cc_vegas.4 \ ${_ccd.4} \ cd.4 \ cdce.4 \ cfi.4 \ ch.4 \ ciss.4 \ cloudabi.4 \ cm.4 \ cmx.4 \ ${_coretemp.4} \ ${_cpuctl.4} \ cpufreq.4 \ crypto.4 \ ctl.4 \ cue.4 \ cxgb.4 \ cxgbe.4 \ cxgbev.4 \ cy.4 \ cyapa.4 \ da.4 \ dc.4 \ dcons.4 \ dcons_crom.4 \ ddb.4 \ de.4 \ devctl.4 \ disc.4 \ divert.4 \ ${_dpms.4} \ dpt.4 \ ds1307.4 \ ds3231.4 \ ${_dtrace_io.4} \ ${_dtrace_ip.4} \ ${_dtrace_proc.4} \ ${_dtrace_sched.4} \ ${_dtrace_tcp.4} \ ${_dtrace_udp.4} \ dummynet.4 \ ed.4 \ edsc.4 \ ehci.4 \ em.4 \ en.4 \ enc.4 \ epair.4 \ esp.4 \ est.4 \ et.4 \ etherswitch.4 \ eventtimers.4 \ exca.4 \ fatm.4 \ fd.4 \ fdc.4 \ fdt.4 \ fdtbus.4 \ ffclock.4 \ filemon.4 \ firewire.4 \ fpa.4 \ full.4 \ fwe.4 \ fwip.4 \ fwohci.4 \ fxp.4 \ gbde.4 \ gdb.4 \ gem.4 \ geom.4 \ geom_fox.4 \ geom_linux_lvm.4 \ geom_map.4 \ geom_uzip.4 \ gif.4 \ gpio.4 \ gpioiic.4 \ gpioled.4 \ gre.4 \ h_ertt.4 \ hatm.4 \ hifn.4 \ hme.4 \ hpet.4 \ ${_hpt27xx.4} \ ${_hptiop.4} \ ${_hptmv.4} \ ${_hptnr.4} \ ${_hptrr.4} \ hv_ata_pci_disengage.4 \ hv_kvp.4 \ hv_netvsc.4 \ hv_storvsc.4 \ hv_utils.4 \ hv_vmbus.4 \ hwpmc.4 \ ichsmb.4 \ ${_ichwd.4} \ icmp.4 \ icmp6.4 \ ida.4 \ ifmib.4 \ ig4.4 \ igb.4 \ igmp.4 \ iic.4 \ iicbb.4 \ iicbus.4 \ iicsmb.4 \ iir.4 \ inet.4 \ inet6.4 \ intpm.4 \ intro.4 \ ${_io.4} \ ${_ioat.4} \ ip.4 \ ip6.4 \ ipfirewall.4 \ ipheth.4 \ ${_ipmi.4} \ ips.4 \ ipsec.4 \ ipw.4 \ ipwfw.4 \ isci.4 \ isl.4 \ ismt.4 \ isp.4 \ ispfw.4 \ iwi.4 \ iwifw.4 \ iwm.4 \ iwmfw.4 \ iwn.4 \ iwnfw.4 \ ixgb.4 \ ixgbe.4 \ ixl.4 \ ixlv.4 \ jme.4 \ joy.4 \ kbdmux.4 \ keyboard.4 \ kld.4 \ ksyms.4 \ ktr.4 \ kue.4 \ lagg.4 \ le.4 \ led.4 \ lge.4 \ ${_linux.4} \ lm75.4 \ lmc.4 \ lo.4 \ lp.4 \ lpbb.4 \ lpt.4 \ mac.4 \ mac_biba.4 \ mac_bsdextended.4 \ mac_ifoff.4 \ mac_lomac.4 \ mac_mls.4 \ mac_none.4 \ mac_partition.4 \ mac_portacl.4 \ mac_seeotheruids.4 \ mac_stub.4 \ mac_test.4 \ malo.4 \ md.4 \ mdio.4 \ me.4 \ mem.4 \ meteor.4 \ mfi.4 \ miibus.4 \ mk48txx.4 \ mld.4 \ mlx.4 \ mlx4en.4 \ mlx5en.4 \ mly.4 \ mmc.4 \ mmcsd.4 \ mn.4 \ mod_cc.4 \ mos.4 \ mouse.4 \ mpr.4 \ mps.4 \ mpt.4 \ mrsas.4 \ msk.4 \ mtio.4 \ multicast.4 \ mvs.4 \ mwl.4 \ mwlfw.4 \ mxge.4 \ my.4 \ nand.4 \ nandsim.4 \ natm.4 \ natmip.4 \ ncr.4 \ ncv.4 \ ${_ndis.4} \ net80211.4 \ netfpga10g_nf10bmac.4 \ netgraph.4 \ netintro.4 \ netmap.4 \ ${_nfe.4} \ ${_nfsmb.4} \ ng_async.4 \ ng_atm.4 \ ngatmbase.4 \ ng_atmllc.4 \ ng_bpf.4 \ ng_bridge.4 \ ng_bt3c.4 \ ng_btsocket.4 \ ng_car.4 \ ng_ccatm.4 \ ng_cisco.4 \ ng_deflate.4 \ ng_device.4 \ nge.4 \ ng_echo.4 \ ng_eiface.4 \ ng_etf.4 \ ng_ether.4 \ ng_ether_echo.4 \ ng_frame_relay.4 \ ng_gif.4 \ ng_gif_demux.4 \ ng_h4.4 \ ng_hci.4 \ ng_hole.4 \ ng_hub.4 \ ng_iface.4 \ ng_ipfw.4 \ ng_ip_input.4 \ ng_ksocket.4 \ ng_l2cap.4 \ ng_l2tp.4 \ ng_lmi.4 \ ng_mppc.4 \ ng_nat.4 \ ng_netflow.4 \ ng_one2many.4 \ ng_patch.4 \ ng_ppp.4 \ ng_pppoe.4 \ ng_pptpgre.4 \ ng_pred1.4 \ ng_rfc1490.4 \ ng_socket.4 \ ng_source.4 \ ng_split.4 \ ng_sppp.4 \ ng_sscfu.4 \ ng_sscop.4 \ ng_tag.4 \ ng_tcpmss.4 \ ng_tee.4 \ ng_tty.4 \ ng_ubt.4 \ ng_UI.4 \ ng_uni.4 \ ng_vjc.4 \ ng_vlan.4 \ nmdm.4 \ nsp.4 \ ${_ntb_hw.4} \ ${_ntb_transport.4} \ ${_if_ntb.4} \ null.4 \ numa.4 \ ${_nvd.4} \ ${_nvme.4} \ ${_nvram.4} \ ${_nvram2env.4} \ ${_nxge.4} \ oce.4 \ ohci.4 \ orm.4 \ ow.4 \ ow_temp.4 \ owc.4 \ ${_padlock.4} \ pass.4 \ patm.4 \ pccard.4 \ pccbb.4 \ pcf.4 \ pci.4 \ pcib.4 \ pcic.4 \ pcm.4 \ pcn.4 \ ${_pf.4} \ ${_pflog.4} \ ${_pfsync.4} \ pim.4 \ pms.4 \ polling.4 \ ppbus.4 \ ppc.4 \ ppi.4 \ procdesc.4 \ proto.4 \ psm.4 \ pst.4 \ pt.4 \ pts.4 \ pty.4 \ puc.4 \ ${_qlxge.4} \ ${_qlxgb.4} \ ${_qlxgbe.4} \ ral.4 \ random.4 \ rc.4 \ re.4 \ rgephy.4 \ rights.4 \ rl.4 \ rndtest.4 \ route.4 \ rp.4 \ rtwn.4 \ rtwnfw.4 \ + rtwn_pci.4 \ rue.4 \ rum.4 \ run.4 \ runfw.4 \ sa.4 \ safe.4 \ sbp.4 \ sbp_targ.4 \ scc.4 \ sched_4bsd.4 \ sched_ule.4 \ screen.4 \ scsi.4 \ sctp.4 \ sdhci.4 \ sem.4 \ send.4 \ ses.4 \ sf.4 \ ${_sfxge.4} \ sge.4 \ siba.4 \ siftr.4 \ siis.4 \ simplebus.4 \ sio.4 \ sis.4 \ sk.4 \ smb.4 \ smbus.4 \ smp.4 \ smsc.4 \ sn.4 \ snd_ad1816.4 \ snd_als4000.4 \ snd_atiixp.4 \ snd_cmi.4 \ snd_cs4281.4 \ snd_csa.4 \ snd_ds1.4 \ snd_emu10k1.4 \ snd_emu10kx.4 \ snd_envy24.4 \ snd_envy24ht.4 \ snd_es137x.4 \ snd_ess.4 \ snd_fm801.4 \ snd_gusc.4 \ snd_hda.4 \ snd_hdspe.4 \ snd_ich.4 \ snd_maestro3.4 \ snd_maestro.4 \ snd_mss.4 \ snd_neomagic.4 \ snd_sbc.4 \ snd_solo.4 \ snd_spicds.4 \ snd_t4dwave.4 \ snd_uaudio.4 \ snd_via8233.4 \ snd_via82c686.4 \ snd_vibes.4 \ snp.4 \ ${_spkr.4} \ splash.4 \ sppp.4 \ ste.4 \ stf.4 \ stg.4 \ stge.4 \ sym.4 \ syncache.4 \ syncer.4 \ syscons.4 \ sysmouse.4 \ tap.4 \ targ.4 \ tcp.4 \ tdfx.4 \ terasic_mtl.4 \ termios.4 \ textdump.4 \ ti.4 \ timecounters.4 \ tl.4 \ ${_tpm.4} \ trm.4 \ tty.4 \ tun.4 \ twa.4 \ twe.4 \ tws.4 \ tx.4 \ txp.4 \ ure.4 \ vale.4 \ vga.4 \ vge.4 \ viapm.4 \ ${_viawd.4} \ ${_virtio.4} \ ${_virtio_balloon.4} \ ${_virtio_blk.4} \ ${_virtio_console.4} \ ${_virtio_random.4} \ ${_virtio_scsi.4} \ vkbd.4 \ vlan.4 \ vxlan.4 \ ${_vmx.4} \ vpo.4 \ vr.4 \ vt.4 \ vte.4 \ ${_vtnet.4} \ ${_vxge.4} \ watchdog.4 \ wb.4 \ ${_wbwd.4} \ wi.4 \ witness.4 \ wlan.4 \ wlan_acl.4 \ wlan_amrr.4 \ wlan_ccmp.4 \ wlan_tkip.4 \ wlan_wep.4 \ wlan_xauth.4 \ ${_wpi.4} \ wsp.4 \ xe.4 \ ${_xen.4} \ xhci.4 \ xl.4 \ ${_xnb.4} \ xpt.4 \ zero.4 \ zyd.4 MLINKS= ae.4 if_ae.4 MLINKS+=age.4 if_age.4 MLINKS+=agp.4 agpgart.4 MLINKS+=alc.4 if_alc.4 MLINKS+=ale.4 if_ale.4 MLINKS+=altera_atse.4 atse.4 MLINKS+=altera_sdcard.4 altera_sdcardc.4 MLINKS+=altq.4 ALTQ.4 MLINKS+=ath.4 if_ath.4 MLINKS+=ath_pci.4 if_ath_pci.4 MLINKS+=an.4 if_an.4 MLINKS+=aue.4 if_aue.4 MLINKS+=axe.4 if_axe.4 MLINKS+=bce.4 if_bce.4 MLINKS+=bfe.4 if_bfe.4 MLINKS+=bge.4 if_bge.4 MLINKS+=bktr.4 brooktree.4 MLINKS+=bridge.4 if_bridge.4 MLINKS+=bwi.4 if_bwi.4 MLINKS+=bwn.4 if_bwn.4 MLINKS+=${_bxe.4} ${_if_bxe.4} MLINKS+=cas.4 if_cas.4 MLINKS+=cdce.4 if_cdce.4 MLINKS+=cfi.4 cfid.4 MLINKS+=cloudabi.4 cloudabi64.4 MLINKS+=crypto.4 cryptodev.4 MLINKS+=cue.4 if_cue.4 MLINKS+=cxgb.4 if_cxgb.4 MLINKS+=cxgbe.4 if_cxgbe.4 \ cxgbe.4 cxl.4 \ cxgbe.4 if_cxl.4 MLINKS+=cxgbev.4 if_cxgbev.4 \ cxgbev.4 cxlv.4 \ cxgbev.4 if_cxlv.4 MLINKS+=dc.4 if_dc.4 MLINKS+=de.4 if_de.4 MLINKS+=disc.4 if_disc.4 MLINKS+=ed.4 if_ed.4 MLINKS+=edsc.4 if_edsc.4 MLINKS+=em.4 if_em.4 MLINKS+=en.4 if_en.4 MLINKS+=enc.4 if_enc.4 MLINKS+=epair.4 if_epair.4 MLINKS+=et.4 if_et.4 MLINKS+=fatm.4 if_fatm.4 MLINKS+=fd.4 stderr.4 \ fd.4 stdin.4 \ fd.4 stdout.4 MLINKS+=fdt.4 FDT.4 MLINKS+=firewire.4 ieee1394.4 MLINKS+=fpa.4 fea.4 MLINKS+=fwe.4 if_fwe.4 MLINKS+=fwip.4 if_fwip.4 MLINKS+=fxp.4 if_fxp.4 MLINKS+=gem.4 if_gem.4 MLINKS+=geom.4 GEOM.4 MLINKS+=gif.4 if_gif.4 MLINKS+=gpio.4 gpiobus.4 MLINKS+=gre.4 if_gre.4 MLINKS+=hatm.4 if_hatm.4 MLINKS+=hme.4 if_hme.4 MLINKS+=hpet.4 acpi_hpet.4 MLINKS+=${_hptrr.4} ${_rr232x.4} MLINKS+=${_attimer.4} ${_i8254.4} MLINKS+=igb.4 if_igb.4 MLINKS+=ip.4 rawip.4 MLINKS+=ipfirewall.4 ipaccounting.4 \ ipfirewall.4 ipacct.4 \ ipfirewall.4 ipfw.4 MLINKS+=ipheth.4 if_ipheth.4 MLINKS+=ipw.4 if_ipw.4 MLINKS+=iwi.4 if_iwi.4 MLINKS+=iwm.4 if_iwm.4 MLINKS+=iwn.4 if_iwn.4 MLINKS+=ixgb.4 if_ixgb.4 MLINKS+=ixgbe.4 ix.4 MLINKS+=ixgbe.4 if_ix.4 MLINKS+=ixgbe.4 if_ixgbe.4 MLINKS+=ixl.4 if_ixl.4 MLINKS+=ixlv.4 if_ixlv.4 MLINKS+=jme.4 if_jme.4 MLINKS+=kue.4 if_kue.4 MLINKS+=lagg.4 trunk.4 MLINKS+=lagg.4 if_lagg.4 MLINKS+=le.4 if_le.4 MLINKS+=lge.4 if_lge.4 MLINKS+=lmc.4 if_lmc.4 MLINKS+=lo.4 loop.4 MLINKS+=lp.4 plip.4 MLINKS+=malo.4 if_malo.4 MLINKS+=md.4 vn.4 MLINKS+=mem.4 kmem.4 MLINKS+=mfi.4 mfi_linux.4 \ mfi.4 mfip.4 MLINKS+=mlx5en.4 mce.4 MLINKS+=mn.4 if_mn.4 MLINKS+=mos.4 if_mos.4 MLINKS+=msk.4 if_msk.4 MLINKS+=mwl.4 if_mwl.4 MLINKS+=mxge.4 if_mxge.4 MLINKS+=my.4 if_my.4 MLINKS+=${_ndis.4} ${_if_ndis.4} MLINKS+=netfpga10g_nf10bmac.4 if_nf10bmac.4 MLINKS+=netintro.4 net.4 \ netintro.4 networking.4 MLINKS+=${_nfe.4} ${_if_nfe.4} MLINKS+=nge.4 if_nge.4 MLINKS+=${_ntb_hw.4} ${_ntb.4} MLINKS+=${_nxge.4} ${_if_nxge.4} MLINKS+=ow.4 onewire.4 MLINKS+=patm.4 if_patm.4 MLINKS+=pccbb.4 cbb.4 MLINKS+=pcm.4 snd.4 \ pcm.4 sound.4 MLINKS+=pcn.4 if_pcn.4 MLINKS+=pms.4 pmspcv.4 MLINKS+=ral.4 if_ral.4 MLINKS+=re.4 if_re.4 MLINKS+=rl.4 if_rl.4 +MLINKS+=rtwn.4 if_rtwn.4 +MLINKS+=rtwn_pci.4 if_rtwn_pci.4 MLINKS+=rue.4 if_rue.4 MLINKS+=rum.4 if_rum.4 MLINKS+=run.4 if_run.4 MLINKS+=scsi.4 CAM.4 \ scsi.4 cam.4 \ scsi.4 scbus.4 \ scsi.4 SCSI.4 MLINKS+=sf.4 if_sf.4 MLINKS+=sge.4 if_sge.4 MLINKS+=sis.4 if_sis.4 MLINKS+=sk.4 if_sk.4 MLINKS+=smp.4 SMP.4 MLINKS+=smsc.4 if_smsc.4 MLINKS+=sn.4 if_sn.4 MLINKS+=snd_envy24.4 snd_ak452x.4 MLINKS+=snd_sbc.4 snd_sb16.4 \ snd_sbc.4 snd_sb8.4 MLINKS+=${_spkr.4} ${_speaker.4} MLINKS+=splash.4 screensaver.4 MLINKS+=ste.4 if_ste.4 MLINKS+=stf.4 if_stf.4 MLINKS+=stge.4 if_stge.4 MLINKS+=syncache.4 syncookies.4 MLINKS+=syscons.4 sc.4 MLINKS+=tap.4 if_tap.4 MLINKS+=tdfx.4 tdfx_linux.4 MLINKS+=ti.4 if_ti.4 MLINKS+=tl.4 if_tl.4 MLINKS+=tun.4 if_tun.4 MLINKS+=tx.4 if_tx.4 MLINKS+=txp.4 if_txp.4 MLINKS+=ure.4 if_ure.4 MLINKS+=vge.4 if_vge.4 MLINKS+=vlan.4 if_vlan.4 MLINKS+=vxlan.4 if_vxlan.4 MLINKS+=${_vmx.4} ${_if_vmx.4} MLINKS+=vpo.4 imm.4 MLINKS+=vr.4 if_vr.4 MLINKS+=vte.4 if_vte.4 MLINKS+=${_vtnet.4} ${_if_vtnet.4} MLINKS+=${_vxge.4} ${_if_vxge.4} MLINKS+=watchdog.4 SW_WATCHDOG.4 MLINKS+=wb.4 if_wb.4 MLINKS+=wi.4 if_wi.4 MLINKS+=${_wpi.4} ${_if_wpi.4} MLINKS+=xe.4 if_xe.4 MLINKS+=xl.4 if_xl.4 MLINKS+=zyd.4 if_zyd.4 .if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" _acpi_asus.4= acpi_asus.4 _acpi_asus_wmi.4= acpi_asus_wmi.4 _acpi_dock.4= acpi_dock.4 _acpi_fujitsu.4=acpi_fujitsu.4 _acpi_hp.4= acpi_hp.4 _acpi_ibm.4= acpi_ibm.4 _acpi_panasonic.4=acpi_panasonic.4 _acpi_rapidstart.4=acpi_rapidstart.4 _acpi_sony.4= acpi_sony.4 _acpi_toshiba.4=acpi_toshiba.4 _acpi_wmi.4= acpi_wmi.4 _aesni.4= aesni.4 _aout.4= aout.4 _apic.4= apic.4 _atrtc.4= atrtc.4 _attimer.4= attimer.4 _aibs.4= aibs.4 _amdsbwd.4= amdsbwd.4 _amdsmb.4= amdsmb.4 _amdtemp.4= amdtemp.4 _asmc.4= asmc.4 _bxe.4= bxe.4 _coretemp.4= coretemp.4 _cpuctl.4= cpuctl.4 _dpms.4= dpms.4 _hpt27xx.4= hpt27xx.4 _hptiop.4= hptiop.4 _hptmv.4= hptmv.4 _hptnr.4= hptnr.4 _hptrr.4= hptrr.4 _i8254.4= i8254.4 _ichwd.4= ichwd.4 _if_bxe.4= if_bxe.4 _if_ndis.4= if_ndis.4 _if_nfe.4= if_nfe.4 _if_nxge.4= if_nxge.4 _if_urtw.4= if_urtw.4 _if_vmx.4= if_vmx.4 _if_vtnet.4= if_vtnet.4 _if_vxge.4= if_vxge.4 _if_wpi.4= if_wpi.4 _ipmi.4= ipmi.4 _io.4= io.4 _linux.4= linux.4 _ndis.4= ndis.4 _nfe.4= nfe.4 _nfsmb.4= nfsmb.4 _nvd.4= nvd.4 _nvme.4= nvme.4 _nvram.4= nvram.4 _nxge.4= nxge.4 _virtio.4= virtio.4 _virtio_balloon.4=virtio_balloon.4 _virtio_blk.4= virtio_blk.4 _virtio_console.4=virtio_console.4 _virtio_random.4= virtio_random.4 _virtio_scsi.4= virtio_scsi.4 _vmx.4= vmx.4 _vtnet.4= vtnet.4 _vxge.4= vxge.4 _padlock.4= padlock.4 _rr232x.4= rr232x.4 _speaker.4= speaker.4 _spkr.4= spkr.4 _tpm.4= tpm.4 _urtw.4= urtw.4 _viawd.4= viawd.4 _wbwd.4= wbwd.4 _wpi.4= wpi.4 _xen.4= xen.4 _xnb.4= xnb.4 .endif .if ${MACHINE_CPUARCH} == "amd64" _if_ntb.4= if_ntb.4 _ioat.4= ioat.4 _ntb.4= ntb.4 _ntb_hw.4= ntb_hw.4 _ntb_transport.4=ntb_transport.4 _qlxge.4= qlxge.4 _qlxgb.4= qlxgb.4 _qlxgbe.4= qlxgbe.4 _sfxge.4= sfxge.4 MLINKS+=qlxge.4 if_qlxge.4 MLINKS+=qlxgb.4 if_qlxgb.4 MLINKS+=qlxgbe.4 if_qlxgbe.4 MLINKS+=sfxge.4 if_sfxge.4 .if ${MK_BHYVE} != "no" _bhyve.4= bhyve.4 .endif .endif .if ${MACHINE_CPUARCH} == "mips" _nvram2env.4= nvram2env.4 .endif .if exists(${.CURDIR}/man4.${MACHINE_CPUARCH}) SUBDIR= man4.${MACHINE_CPUARCH} .endif .if ${MK_BLUETOOTH} != "no" MAN+= ng_bluetooth.4 .endif .if ${MK_CCD} != "no" _ccd.4= ccd.4 .endif .if ${MK_CDDL} != "no" _dtrace_io.4= dtrace_io.4 _dtrace_ip.4= dtrace_ip.4 _dtrace_proc.4= dtrace_proc.4 _dtrace_sched.4= dtrace_sched.4 _dtrace_tcp.4= dtrace_tcp.4 _dtrace_udp.4= dtrace_udp.4 .endif .if ${MK_ISCSI} != "no" MAN+= iscsi.4 MAN+= iscsi_initiator.4 MAN+= iser.4 .endif .if ${MK_TESTS} != "no" ATF= ${.CURDIR}/../../../contrib/atf .PATH: ${ATF}/doc _atf_test_case.4= atf-test-case.4 .endif .if ${MK_PF} != "no" _pf.4= pf.4 _pflog.4= pflog.4 _pfsync.4= pfsync.4 .endif .if ${MK_USB} != "no" MAN+= \ otus.4 \ otusfw.4 \ rsu.4 \ rsufw.4 \ + rtwn_usb.4 \ u3g.4 \ uark.4 \ uart.4 \ uath.4 \ ubsa.4 \ ubsec.4 \ ubser.4 \ ubtbcmfw.4 \ uchcom.4 \ ucom.4 \ ucycom.4 \ udav.4 \ udbp.4 \ udp.4 \ udplite.4 \ udl.4 \ uep.4 \ ufm.4 \ ufoma.4 \ uftdi.4 \ ugen.4 \ ugold.4 \ uhci.4 \ uhid.4 \ uhso.4 \ uipaq.4 \ ukbd.4 \ uled.4 \ ulpt.4 \ umass.4 \ umcs.4 \ umct.4 \ umodem.4 \ umoscom.4 \ ums.4 \ unix.4 \ upgt.4 \ uplcom.4 \ ural.4 \ urio.4 \ urndis.4 \ ${_urtw.4} \ - urtwn.4 \ - urtwnfw.4 \ usb.4 \ usb_quirk.4 \ usb_template.4 \ usfs.4 \ uslcom.4 \ utopia.4 \ uvisor.4 \ uvscom.4 \ MLINKS+=otus.4 if_otus.4 MLINKS+=rsu.4 if_rsu.4 +MLINKS+=rtwn_usb.4 if_rtwn_usb.4 MLINKS+=u3g.4 u3gstub.4 MLINKS+=uath.4 if_uath.4 MLINKS+=udav.4 if_udav.4 MLINKS+=upgt.4 if_upgt.4 MLINKS+=ural.4 if_ural.4 MLINKS+=urndis.4 if_urndis.4 MLINKS+=${_urtw.4} ${_if_urtw.4} -MLINKS+=urtwn.4 if_urtwn.4 .endif .include diff --git a/share/man/man4/rtwn.4 b/share/man/man4/rtwn.4 index 10258494f3ef..3cdb46264795 100644 --- a/share/man/man4/rtwn.4 +++ b/share/man/man4/rtwn.4 @@ -1,165 +1,241 @@ .\" $OpenBSD: rtwn.4,v 1.2 2015/07/09 11:28:53 stsp Exp $ .\" .\" Copyright (c) 2010 Damien Bergamini .\" Copyright (c) 2015 Stefan Sperling +.\" Copyright (c) 2016 Andriy Voskoboinyk .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above .\" copyright notice and this permission notice appear in all copies. .\" .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" .\" $FreeBSD$ .\" -.Dd October 28, 2015 +.Dd September 19, 2016 .Dt RTWN 4 .Os .Sh NAME .Nm rtwn -.Nd Realtek RTL8188CE PCIe IEEE 802.11b/g/n wireless network device +.Nd Realtek IEEE 802.11 wireless network driver .Sh SYNOPSIS +.Cd "options RTWN_DEBUG" +.Cd "options RTWN_WITHOUT_UCODE" +.Pp To compile this driver into the kernel, place the following lines in your kernel configuration file: .Bd -ragged -offset indent .Cd "device rtwn" .Cd "device rtwnfw" +.Cd "device rtwn_usb" +.Cd "device rtwn_pci" .Cd "device wlan" .Cd "device firmware" .Ed .Pp Alternatively, to load the driver as a -module at boot time, place the following line in +module at boot time, place following lines in .Xr loader.conf 5 : .Bd -literal -offset indent if_rtwn_load="YES" -.Ed -.Pp -After you have read the license in -.Pa /usr/share/doc/legal/realtek.LICENSE -you will want to add the following lines to -.Xr loader.conf 5 : -.Bd -literal -offset indent -legal.realtek.license_ack=1 -rtwn-rtl8192cfwU_load="YES" -rtwn-rtl8192cfwU_B_load="YES" +if_rtwn_pci_load="YES" +if_rtwn_usb_load="YES" .Ed .Sh DESCRIPTION The .Nm -driver supports PCIe wireless network devices based on the Realtek -RTL8188CE chipset. +driver provides support for wireless network devices based on +the Realtek RTL8192C, RTL8188E, RTL8812A and RTL8821A programming APIs. +These APIs are used by a wide variety of chips; most chips with USB +and some with PCI interface are supported. .Pp -The RTL8188CE is a highly integrated 802.11n adapter that combines a MAC, -a 1T1R capable baseband and an RF in a single chip. -It operates in the 2GHz spectrum only. +To enable use for PCI/PCIe systems, see the rtwn_pci(4) driver; +for USB devices, use the rtwn_usb(4) driver. .Pp -These are the modes the -.Nm -driver can operate in: -.Bl -tag -width "IBSS-masterXX" -.It BSS mode -Also known as -.Em infrastructure -mode, this is used when associating with an access point, through -which all traffic passes. -This mode is the default. -.It monitor mode -In this mode the driver is able to receive packets without -associating with an access point. -This disables the internal receive filter and enables the card to -capture packets from networks which it wouldn't normally have access to, -or to scan for access points. -.El +The driver supports +.Cm station , +.Cm adhoc , +.Cm hostap +and +.Cm monitor +mode operation. +There are no limitations for number of +.Cm monitor +mode +virtual interfaces; in addition to any other virtual interface +one +.Cm station +interface can be added (Note: RTL8821AU supports two non-monitor +mode interfaces at the same time). .Pp -The -.Nm -driver can be configured to use -Wired Equivalent Privacy (WEP) or -Wi-Fi Protected Access (WPA-PSK and WPA2-PSK). -WPA is the current encryption standard for wireless networks. -It is strongly recommended that WEP -not be used as the sole mechanism -to secure wireless communication, -due to serious weaknesses in it. +All chips have hardware support for WEP, AES-CCM and TKIP encryption. .Pp The .Nm driver can be configured at runtime with .Xr ifconfig 8 . .Sh FILES -The driver needs at least version 1.0 of the following firmware files, -which are loaded when an interface is brought up: +.Bl -tag -width ".Pa /usr/share/doc/legal/realtek.LICENSE" -compact +.It Pa /usr/share/doc/legal/realtek.LICENSE +.Nm +firmware license +.El .Pp +The driver (if not compiled with +.Cd options RTWN_WITHOUT_UCODE +) may use following firmware files, which are loaded +when an interface is brought up: .Bl -tag -width Ds -offset indent -compact +.It Pa /boot/kernel/rtwn-rtl8188eufw.ko +.It Pa /boot/kernel/rtwn-rtl8192cfwE_B.ko +.It Pa /boot/kernel/rtwn-rtl8192cfwE.ko +.It Pa /boot/kernel/rtwn-rtl8192cfwT.ko .It Pa /boot/kernel/rtwn-rtl8192cfwU.ko -.It Pa /boot/kernel/rtwn-rtl8192cfwU_B.ko +.It Pa /boot/kernel/rtwn-rtl8812aufw.ko +.It Pa /boot/kernel/rtwn-rtl8821aufw.ko .El .Sh EXAMPLES Join an existing BSS network (i.e., connect to an access point): .Bd -literal -offset indent ifconfig wlan create wlandev rtwn0 inet 192.168.0.20 \e netmask 0xffffff00 .Ed .Pp Join a specific BSS network with network name .Dq Li my_net : .Pp .Dl "ifconfig wlan create wlandev rtwn0 ssid my_net up" .Pp Join a specific BSS network with 64-bit WEP encryption: .Bd -literal -offset indent ifconfig wlan create wlandev rtwn0 ssid my_net \e wepmode on wepkey 0x1234567890 weptxkey 1 up .Ed +.Pp +Create an IBSS network with 128-bit WEP encryption on the channel 4: +.Bd -literal -offset indent +ifconfig wlan create wlandev rtwn0 wlanmode adhoc ssid my_net \e + wepmode on wepkey 0x01020304050607080910111213 weptxkey 1 \e + channel 4 +.Ed +.Pp +Join/create an 802.11b IBSS network with network name +.Dq Li my_net : +.Bd -literal -offset indent +ifconfig wlan0 create wlandev rtwn0 wlanmode adhoc +ifconfig wlan0 inet 192.168.0.22 netmask 0xffffff00 ssid my_net \e + mode 11b +.Ed +.Pp +Create a host-based access point: +.Bd -literal -offset indent +ifconfig wlan0 create wlandev rtwn0 wlanmode hostap +ifconfig wlan0 inet 192.168.0.10 netmask 0xffffff00 ssid my_ap +.Ed +.Sh LOADER TUNABLES +Tunables can be set at the +.Xr loader 8 +prompt before booting the kernel or stored in +.Xr loader.conf 5 . +.Bl -tag -width indent +.It Va dev.rtwn.%d.hwcrypto +This tunable controls how key slots are assigned: +.br +0 - disable h/w crypto support. Features that require access +to frame contents (e.g., TCP/UDP/IP Rx checksum validation) +will not work; +.br +1 - use h/w crypto support for pairwise keys only; +.br +2 - use h/w crypto support for all keys; may not work for +multi-vap configurations. +.br +By default it is set to 1. +.It Va dev.rtwn.%d.ratectl +This tunable switches between rate control implementations: +.br +0 - no rate control; +.br +1 - driver sends 'tx complete' reports to net80211; algorithm +is controlled via net80211; +.br +2 - firmware-based rate control. +.br +By default it is set to 1; however driver may choose another +algorithm in case if it is not implemented +.br +Currently selected algorithm is reported via +.Em Va dev.rtwn.%d.ratectl_selected +read-only OID. +.El .Sh DIAGNOSTICS .Bl -diag -.It "could not read firmware %s" +.It "rtwn%d: could not read efuse byte at address 0x%x" +.It "rtwn%d: %s: cannot read rom, error %d" +There was an error while reading ROM; device attach will be aborted. +This should not happen. +.It "rtwn%d: failed loadfirmware of file %s" For some reason, the driver was unable to read the microcode file from the filesystem. The file might be missing or corrupted. -.It "device timeout" +The driver will disable firmware-dependent features. +.It "rtwn%d: wrong firmware size (%zu)" +.It "rtwn%d: %s: failed to upload firmware %s (error %d)" +.It "rtwn%d: timeout waiting for firmware readiness" +Firmware upload failed; the file might be corrupted. +The driver will disable firmware-dependent features. +This should not happen. +.It "rtwn%d: device timeout" A frame dispatched to the hardware for transmission did not complete in time. The driver will reset the hardware. This should not happen. .El .Sh SEE ALSO -.Xr pci 4 , +.Xr intro 4 , +.Xr netintro 4 , +.Xr rtwn_pci 4 , +.Xr rtwn_usb 4 , .Xr rtwnfw 4 , .Xr wlan 4 , +.Xr wlan_amrr 4 , .Xr wlan_ccmp 4 , .Xr wlan_tkip 4 , .Xr wlan_wep 4 , +.Xr wlan_xauth 4 , +.Xr hostapd 4 , .Xr ifconfig 8 , .Xr wpa_supplicant 8 .Sh HISTORY The +.Cm urtwn +driver first appeared in +.Ox 4.9 +and +.Fx 10.0 ; +the .Nm driver first appeared in .Ox 5.8 . .Sh AUTHORS The .Nm -driver was written by +driver was initially written by .An -nosplit .An Stefan Sperling Aq Mt stsp@openbsd.org and ported by .An Kevin Lo Aq Mt kevlo@freebsd.org . It was based on the -.Xr urtwn 4 +.Cm urtwn driver written by .An Damien Bergamini Aq Mt damien.bergamini@free.fr . -.Sh CAVEATS +.Sh BUGS The .Nm -driver does not support any of the 802.11n capabilities offered by the -adapters. -Additional work is required in -.Xr ieee80211 9 -before those features can be supported. +driver currently does not implement firmware-based rate control. diff --git a/share/man/man4/rtwn_pci.4 b/share/man/man4/rtwn_pci.4 new file mode 100644 index 000000000000..b0fd71d9fb07 --- /dev/null +++ b/share/man/man4/rtwn_pci.4 @@ -0,0 +1,63 @@ +.\"- +.\" Copyright (c) 2011 Adrian Chadd, Xenion Pty Ltd +.\" Copyright (c) 2016 Andriy Voskoboinyk +.\" All rights reserved. +.\"" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer, +.\" without modification. +.\" 2. Redistributions in binary form must reproduce at minimum a disclaimer +.\" similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any +.\" redistribution must be conditioned upon including a substantially +.\" similar Disclaimer requirement for further binary redistribution. +.\" +.\" NO WARRANTY +.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +.\" LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY +.\" AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +.\" THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, +.\" OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +.\" THE POSSIBILITY OF SUCH DAMAGES. +.\" +.\" $FreeBSD$ +.\"/ +.Dd September 19, 2016 +.Dt RTWN_PCI 4 +.Os +.Sh NAME +.Nm rtwn_pci +.Nd "Realtek PCI device glue" +.Sh SYNOPSIS +To compile this driver into the kernel, +place the following lines in your +kernel configuration file: +.Bd -ragged -offset indent +.Cd "device rtwn_pci" +.Cd "device pci" +.Cd "device wlan" +.Ed +.Sh DESCRIPTION +The +.Nm +driver supports PCIe wireless network devices based on the Realtek +RTL8188CE chipset. +.Pp +The RTL8188CE is a highly integrated 802.11n adapter that combines a MAC, +a 1T1R capable baseband and an RF in a single chip. +It operates in the 2GHz spectrum only. +.Sh SEE ALSO +.Xr rtwn 4 , +.Xr rtwnfw 4 , +.Xr rtwn_usb 4 , +.Xr pci 4 +.Sh CAVEATS +Most 802.11 capabilities were turned off; some more testing +is required to re-enable them. diff --git a/share/man/man4/rtwn_usb.4 b/share/man/man4/rtwn_usb.4 new file mode 100644 index 000000000000..ec744ebeccb7 --- /dev/null +++ b/share/man/man4/rtwn_usb.4 @@ -0,0 +1,111 @@ +.\"- +.\" Copyright (c) 2011 Adrian Chadd, Xenion Pty Ltd +.\" Copyright (c) 2016 Andriy Voskoboinyk +.\" All rights reserved. +.\"" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer, +.\" without modification. +.\" 2. Redistributions in binary form must reproduce at minimum a disclaimer +.\" similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any +.\" redistribution must be conditioned upon including a substantially +.\" similar Disclaimer requirement for further binary redistribution. +.\" +.\" NO WARRANTY +.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +.\" LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY +.\" AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +.\" THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, +.\" OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +.\" THE POSSIBILITY OF SUCH DAMAGES. +.\" +.\" $FreeBSD$ +.\"/ +.Dd September 19, 2016 +.Dt RTWN_USB 4 +.Os +.Sh NAME +.Nm rtwn_usb +.Nd "Realtek USB device glue" +.Sh SYNOPSIS +To compile this driver into the kernel, +place the following lines in your +kernel configuration file: +.Bd -ragged -offset indent +.Cd "device xhci" +.Cd "device ehci" +.Cd "device uhci" +.Cd "device ohci" +.Cd "device usb" +.Cd "device rtwn_usb" +.Cd "device wlan" +.Ed +.Sh DESCRIPTION +This module provides the USB bus glue needed for the devices supported +by the +.Xr rtwn 4 +driver. +.Sh HARDWARE +The +.Nm +driver supports Realtek RTL8188CU/RTL8188RU/RTL8188EU/RTL8192CU/RTL8812AU/RTL8821AU +based USB wireless network adapters, including: +.Pp +.Bl -column -compact "Belkin F7D1102 Surf Wireless Micro" "Bus" +.It Em Card Ta Em Bus +.It "Alfa AWUS036NHR v2" Ta USB 2.0 +.It "ASUS USB-AC56" Ta USB 3.0 +.It "ASUS USB-N10 NANO" Ta USB 2.0 +.It "Belkin F7D1102 Surf Wireless Micro" Ta USB 2.0 +.It "Buffalo WI-U2-433DM" Ta USB 2.0 +.It "Buffalo WI-U3-866D" Ta USB 3.0 +.It "D-Link DWA-123 rev D1" Ta USB 2.0 +.It "D-Link DWA-125 rev D1" Ta USB 2.0 +.It "D-Link DWA-131" Ta USB 2.0 +.It "D-Link DWA-171 rev A1" Ta USB 2.0 +.It "D-Link DWA-172 rev A1" Ta USB 2.0 +.It "D-Link DWA-180 rev A1" Ta USB 2.0 +.It "D-Link DWA-182 rev C1" Ta USB 3.0 +.It "Edimax EW-7811Un" Ta USB 2.0 +.It "Edimax EW-7811UTC" Ta USB 2.0 +.It "Edimax EW-7822UAC" Ta USB 3.0 +.It "Elecom WDC-150SU2M" Ta USB 2.0 +.It "EnGenius EUB1200AC" Ta USB 3.0 +.It "Hawking HD65U" Ta USB 2.0 +.It "Hercules Wireless N USB Pico" Ta USB 2.0 +.It "I-O Data WN-AC867U" Ta USB 3.0 +.It "Linksys WUSB6300" Ta USB 3.0 +.It "NEC AtermWL900U PA-WL900U" Ta USB 3.0 +.It "Netgear A6100" Ta USB 2.0 +.It "Netgear WNA1000M" Ta USB 2.0 +.It "Planex GW-900D" Ta USB 3.0 +.It "Realtek RTL8192CU" Ta USB 2.0 +.It "Realtek RTL8188CUS" Ta USB 2.0 +.It "Sitecom WLA-7100" Ta USB 3.0 +.It "TP-Link Archer T4U" Ta USB 3.0 +.It "TP-LINK TL-WN723N v3" Ta USB 2.0 +.It "TP-LINK TL-WN725N v2" Ta USB 2.0 +.It "TRENDnet TEW-805UB" Ta USB 3.0 +.It "ZyXEL NWD6605" Ta USB 3.0 +.El +.Sh SEE ALSO +.Xr rtwn 4 , +.Xr rtwnfw 4 , +.Xr rtwn_pci 4 , +.Xr usb 4 +.Sh BUGS +The +.Nm +driver does not support any of the 802.11ac capabilities offered by the +adapters. +Additional work is required in +.Xr ieee80211 9 +before those features can be supported. diff --git a/share/man/man4/rtwnfw.4 b/share/man/man4/rtwnfw.4 index e4ab346874f3..ee35484a0ccc 100644 --- a/share/man/man4/rtwnfw.4 +++ b/share/man/man4/rtwnfw.4 @@ -1,74 +1,88 @@ .\" Copyright (c) 2015 Kevin Lo +.\" Copyright (c) 2016 Andriy Voskoboinyk .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. The name of the author may not be used to endorse or promote products .\" derived from this software without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. .\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .\" $FreeBSD$ .\" .Dd October 28, 2015 .Dt RTWNFW 4 .Os .Sh NAME .Nm rtwnfw .Nd "Firmware Module for Realtek Wireless driver" .Sh SYNOPSIS To compile this module into the kernel, place the following line in your kernel configuration file: .Bd -ragged -offset indent .Cd "device rtwnfw" .Ed .Pp -This will include three firmware images inside the kernel. +This will include all firmware images inside the kernel. If you want to pick only the firmware image for your network adapter choose one of the following: .Bd -ragged -offset indent +.Cd "device rtwn-rtl8188eufw" +.Cd "device rtwn-rtl8192cfwE_B" +.Cd "device rtwn-rtl8192cfwE" +.Cd "device rtwn-rtl8192cfwT" .Cd "device rtwn-rtl8192cfwU" -.Cd "device rtwn-rtl8192cfwU_B" +.Cd "device rtwn-rtl8812aufw" +.Cd "device rtwn-rtl8821aufw" .Ed .Pp -Alternatively, to load the driver as a +Alternatively, to load all firmware images as a module at boot time, place the following line in .Xr loader.conf 5 : .Bd -literal -offset indent +rtwn-rtl8188eufw_load="YES" +rtwn-rtl8192cfwE_B_load="YES" +rtwn-rtl8192cfwE_load="YES" +rtwn-rtl8192cfwT_load="YES" rtwn-rtl8192cfwU_load="YES" -rtwn-rtl8192cfwU_B_load="YES" +rtwn-rtl8812aufw_load="YES" +rtwn-rtl8821aufw_load="YES" .Ed .Sh DESCRIPTION -This module provides access to firmware sets for the -Realtek RTL8188CE chip based PCIe adapters. -It may be -statically linked into the kernel, or loaded as a module. +rtwn-rtl8192cfwE and rtl8192cfwE_B modules provide access +to firmware sets for the Realtek RTL8188CE chip based PCIe adapters. +Other modules provide access to firmware sets for the Realtek RTL8188CUS, +RTL8188CE-VAU, RTL8188EUS, RTL8188RU, RTL8192CU, RTL8812AU and RTL8821AU +chip based USB WiFi adapters. +They may be +statically linked into the kernel, or loaded as a modules. .Pp For the loaded firmware to be enabled for use the license at .Pa /usr/share/doc/legal/realtek.LICENSE must be agreed to by adding the following line to .Xr loader.conf 5 : .Pp .Dl "legal.realtek.license_ack=1" .Sh FILES .Bl -tag -width ".Pa /usr/share/doc/legal/realtek.LICENSE" -compact .It Pa /usr/share/doc/legal/realtek.LICENSE .Nm firmware license .El .Sh SEE ALSO .Xr rtwn 4 , .Xr firmware 9 diff --git a/share/man/man4/urtwn.4 b/share/man/man4/urtwn.4 deleted file mode 100644 index 026c98190aed..000000000000 --- a/share/man/man4/urtwn.4 +++ /dev/null @@ -1,190 +0,0 @@ -.\" Copyright (c) 2010 Damien Bergamini -.\" -.\" Permission to use, copy, modify, and distribute this software for any -.\" purpose with or without fee is hereby granted, provided that the above -.\" copyright notice and this permission notice appear in all copies. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -.\" -.\" $FreeBSD$ -.\" -.Dd June 9, 2016 -.Dt URTWN 4 -.Os -.Sh NAME -.Nm urtwn -.Nd Realtek RTL8188CU/RTL8188RU/RTL8188EU/RTL8192CU USB IEEE 802.11b/g/n wireless network device -.Sh SYNOPSIS -.Cd "options URTWN_WITHOUT_UCODE" -.Pp -To compile this driver into the kernel, -place the following lines in your -kernel configuration file: -.Bd -ragged -offset indent -.Cd "device ehci" -.Cd "device uhci" -.Cd "device ohci" -.Cd "device usb" -.Cd "device urtwn" -.Cd "device wlan" -.Ed -.Pp -Alternatively, to load the driver as a -module at boot time, place the following line in -.Xr loader.conf 5 : -.Bd -literal -offset indent -if_urtwn_load="YES" -.Ed -.Sh DESCRIPTION -The -.Nm -driver supports USB 2.0 wireless network devices based on Realtek -RTL8188CUS, RTL8188CE-VAU, RTL8188EUS, RTL8188RU and RTL8192CU chipsets. -.Pp -The RTL8188CUS and RTL8188EUS are highly integrated 802.11n adapters that -combine a MAC, a 1T1R capable baseband and an RF in a single chip. -They operate in the 2GHz spectrum only. -The RTL8188RU is a high-power variant of the RTL8188CUS. -The RTL8188CE-VAU is a PCI Express Mini Card adapter that attaches -to the USB interface. -.Pp -The RTL8192CU is a highly integrated multiple-in, multiple-out (MIMO) -802.11n adapter that combines a MAC, a 2T2R capable baseband and an -RF in a single chip. -It operates in the 2GHz spectrum only. -.Pp -All chips have hardware support for WEP, AES-CCM and TKIP encryption. -.Pp -The driver supports -.Cm station , -.Cm adhoc , -.Cm hostap , -and -.Cm monitor -mode operation. -Only one virtual interface may be configured at any time. -.Pp -This driver may use the firmware built with the -.Nm urtwnfw -module for some additional features -(when URTWN_WITHOUT_UCODE kernel option is not set). -.Sh FILES -.Bl -tag -width ".Pa /usr/share/doc/legal/realtek.LICENSE" -compact -.It Pa /usr/share/doc/legal/realtek.LICENSE -.Nm -firmware license -.El -.Sh HARDWARE -The -.Nm -driver supports Realtek RTL8188CU/RTL8188RU/RTL8188EU/RTL8192CU based USB -IEEE 802.11b/g/n wireless network adapters, including: -.Pp -.Bl -tag -width Ds -offset indent -compact -.It Alfa AWUS036NHR v2 -.It ASUS USB-N10 NANO -.It Belkin F7D1102 Surf Wireless Micro -.It D-Link DWA-123 rev D1 -.It D-Link DWA-125 rev D1 -.It D-Link DWA-131 -.It Edimax EW-7811Un -.It Elecom WDC-150SU2M -.It Netgear WNA1000M -.It Realtek RTL8192CU -.It Realtek RTL8188CUS -.It TP-LINK TL-WN723N v3 -.It TP-LINK TL-WN725N v2 -.El -.Sh EXAMPLES -Join an existing BSS network (i.e., connect to an access point): -.Bd -literal -offset indent -ifconfig wlan create wlandev urtwn0 inet 192.168.0.20 \e - netmask 0xffffff00 -.Ed -.Pp -Join a specific BSS network with network name -.Dq Li my_net : -.Pp -.Dl "ifconfig wlan create wlandev urtwn0 ssid my_net up" -.Pp -Join a specific BSS network with 64-bit WEP encryption: -.Bd -literal -offset indent -ifconfig wlan create wlandev urtwn0 ssid my_net \e - wepmode on wepkey 0x1234567890 weptxkey 1 up -.Ed -.Pp -Create an IBSS network with 128-bit WEP encryption on the channel 4: -.Bd -literal -offset indent -ifconfig wlan0 create wlandev urtwn0 wlanmode adhoc ssid my_net \e - wepmode on wepkey 0x01020304050607080910111213 weptxkey 1 \e - channel 4 -.Ed -.Pp -Join/create an 802.11b IBSS network with network name -.Dq Li my_net : -.Bd -literal -offset indent -ifconfig wlan0 create wlandev urtwn0 wlanmode adhoc -ifconfig wlan0 inet 192.168.0.22 netmask 0xffffff00 ssid my_net \e - mode 11b -.Ed -.Pp -Create an 802.11g host-based access point: -.Bd -literal -offset indent -ifconfig wlan0 create wlandev urtwn0 wlanmode hostap -ifconfig wlan0 inet 192.168.0.10 netmask 0xffffff00 ssid my_ap \e - mode 11g -.Ed -.Sh DIAGNOSTICS -.Bl -diag -.It "urtwn%d: error %d, could not read firmware %s" -For some reason, the driver was unable to read the microcode file from the -filesystem. -The file might be missing or corrupted. -.It "urtwn%d: device timeout" -A frame dispatched to the hardware for transmission did not complete in time. -The driver will reset the hardware. -This should not happen. -.El -.Sh SEE ALSO -.Xr intro 4 , -.Xr netintro 4 , -.Xr urtwnfw 4 , -.Xr usb 4 , -.Xr wlan 4 , -.Xr wlan_amrr 4 , -.Xr wlan_ccmp 4 , -.Xr wlan_tkip 4 , -.Xr wlan_wep 4 , -.Xr ifconfig 8 , -.Xr wpa_supplicant 8 -.Rs -.%T Realtek -.%U http://www.realtek.com.tw -.Re -.Sh HISTORY -The -.Nm -driver first appeared in -.Ox 4.9 -and -.Fx 10.0 . -.Sh AUTHORS -The -.Nm -driver was written by -.An Damien Bergamini Aq Mt damien@openbsd.org . -.Sh CAVEATS -The -.Nm -driver currently does not support A-MPDU 802.11n transmit aggregation. -.Pp -For non-RTL8188EUS chips -.Dq "rate control" -algorithm is absent; this may result in increased packet loss in noisy -networks. diff --git a/share/man/man4/urtwnfw.4 b/share/man/man4/urtwnfw.4 deleted file mode 100644 index 70e6e67f20ed..000000000000 --- a/share/man/man4/urtwnfw.4 +++ /dev/null @@ -1,77 +0,0 @@ -.\" Copyright (c) 2013 Kevin Lo -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. The name of the author may not be used to endorse or promote products -.\" derived from this software without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -.\" -.\" $FreeBSD$ -.\" -.Dd October 15, 2015 -.Dt URTWNFW 4 -.Os -.Sh NAME -.Nm urtwnfw -.Nd "Firmware Module for Realtek Wireless driver" -.Sh SYNOPSIS -To compile this module into the kernel, -place the following line in your -kernel configuration file: -.Bd -ragged -offset indent -.Cd "device urtwnfw" -.Ed -.Pp -This will include three firmware images inside the kernel. -If you want to pick only the firmware image for your network adapter choose one -of the following: -.Bd -ragged -offset indent -.Cd "device urtwn-rtl8192cfwT" -.Cd "device urtwn-rtl8192cfwU" -.Cd "device urtwn-rtl8188eufw" -.Ed -.Pp -Alternatively, to load the driver as a -module at boot time, place the following line in -.Xr loader.conf 5 : -.Bd -literal -offset indent -urtwn-rtl8192cfwT_load="YES" -urtwn-rtl8192cfwU_load="YES" -urtwn-rtl8188eufw_load="YES" -.Ed -.Sh DESCRIPTION -This module provides access to firmware sets for the -Realtek RTL8188CUS, RTL8188CE-VAU, RTL8188EUS, RTL8188RU and RTL8192CU -chip based USB WiFi adapters. -It may be -statically linked into the kernel, or loaded as a module. -.Pp -For the loaded firmware to be enabled for use the license at -.Pa /usr/share/doc/legal/realtek.LICENSE -must be agreed to by adding the following line to -.Xr loader.conf 5 : -.Pp -.Dl "legal.realtek.license_ack=1" -.Sh FILES -.Bl -tag -width ".Pa /usr/share/doc/legal/realtek.LICENSE" -compact -.It Pa /usr/share/doc/legal/realtek.LICENSE -.Nm -firmware license -.El -.Sh SEE ALSO -.Xr urtwn 4 , -.Xr firmware 9 diff --git a/share/man/man4/wlan.4 b/share/man/man4/wlan.4 index 747e040d78b0..4d29bca5d084 100644 --- a/share/man/man4/wlan.4 +++ b/share/man/man4/wlan.4 @@ -1,223 +1,223 @@ .\" .\" Copyright (c) 2003 Tom Rhodes .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" $FreeBSD$ .\" .Dd October 29, 2015 .Dt WLAN 4 .Os .Sh NAME .Nm wlan .Nd generic 802.11 link-layer support .Sh SYNOPSIS .Cd "device wlan" .Sh DESCRIPTION The .Nm module provides generic code to support 802.11 drivers. Where a device does not directly support 802.11 functionality this layer fills in. The .Nm module is required by all native 802.11 drivers as well as the .Xr ndis 4 support. .Pp .Nm supports multi-mode devices capable of operating in both 2.4GHz and 5GHz bands and supports numerous 802.11 standards: 802.11a, 802.11b, 802.11g, 802.11n, and 802.11s (Draft 3.0). The WPA, 802.11i, and 802.1x security protocols are supported through a combination of in-kernel code and user-mode applications. The WME/WMM multi-media protocols are supported entirely within the .Nm module but require a suitably capable hardware device. Likewise the 802.11h specification is supported only by suitably capable devices. .Pp Drivers provide 802.11 functionality through .Nm interfaces that are created at runtime using interface cloning. This is done with the .Xr ifconfig 8 .Cm create command or using the .Va wlans_IFX variable in .Xr rc.conf 5 . Some drivers support the creation of multiple .Nm interfaces that share the same underlying device; this is the way by which ``multi-bss support'' is provided but it can also be used to create WDS links and other interesting applications. .Pp There are several types of .Nm interfaces that may be created: .Bl -tag -width monitor .It Cm sta A client station in an infrastructure bss (i.e. one that associates to an access point). .It Cm hostap An access point in an infrastructure bss. .It Cm mesh A mesh station in an MBSS network. .It Cm adhoc A station in an IBSS network. .It Cm ahdemo A station operating in ``adhoc demo mode''. This is essentially an IBSS station that does not use management frames (e.g. no beacons are transmitted). An .Cm ahdemo interface is especially useful for applications that want to transmit and receive raw 802.11 packets. .It Cm monitor An interface used exclusively for capturing 802.11 frames. In particular this specified to have read-only properties which enables it to be operated on frequencies where one would otherwise not be allowed. .It Cm wds A station that passes 4-address 802.11 traffic for the purpose of tunneling traffic over a wireless link. Typically this station would share the same MAC address as a .Cm hostap interface. It may be possible to create .Cm wds interfaces without a companion .Cm hostap interface but that is not guaranteed; one may need to create a .Cm hostap interface that does not send beacon frames before .Cm wds interfaces may be created. .El .Pp Note that an interface's type cannot be changed once it is created. .Pp .Nm defines several mechanisms by which plugin modules may be used to extend its functionality. Cryptographic support such as WEP, TKIP, and AES-CCMP are implemented as standalone modules (if not statically configured into a system) that register with .Nm . Similarly there is an authenticator framework for defining 802.11 authentication services and a framework for integrating access control mechanisms specific to the 802.11 protocol. .Sh DEBUGGING If the .Dv IEEE80211_DEBUG option is included in the kernel configuration, debugging controls are available using: .Pp .Dl "sysctl net.wlan.X.debug=mask" .Pp where .Ar X is the number of the .Nm instance and mask is a bit-or of control bits that determine which debugging messages to enable. For example, .Pp .Dl "sysctl net.wlan.0.debug=0x00200000" .Pp enables debugging messages related to scanning for an access point, adhoc neighbor, or an unoccupied channel when operation as an access point. The .Xr wlandebug 8 tool provides a more user-friendly mechanism for doing the same thing. Note that .Pp .Dl "sysctl net.wlan.debug=mask" .Pp defines the initial value of the debugging flags for each cloned .Nm interface; this is useful to enable debug messages during interface creation. .Sh COMPATIBILITY The module name of .Nm was used to be compatible with .Nx . .Pp Mesh stations follow the 802.11s Draft 3.0 specification which is not ratified and subject to change. Beware that this specification is incompatible with earlier drafts; and stations implementing earlier drafts (e.g. Linux) may not interoperate. .Sh SEE ALSO .Xr an 4 , .Xr ath 4 , .Xr bwi 4 , .Xr bwn 4 , .Xr ipw 4 , .Xr iwi 4 , .Xr iwm 4 , .Xr iwn 4 , .Xr malo 4 , .Xr mwl 4 , .Xr netintro 4 , .Xr otus 4 , .Xr ral 4 , .Xr rsu 4 , +.Xr rtwn 4 , .Xr rum 4 , .Xr run 4 , .Xr uath 4 , .Xr upgt 4 , .Xr ural 4 , .Xr urtw 4 , -.Xr urtwn 4 , .Xr wi 4 , .Xr wlan_acl 4 , .Xr wlan_ccmp 4 , .Xr wlan_tkip 4 , .Xr wlan_wep 4 , .Xr wlan_xauth 4 , .Xr wpi 4 , .Xr zyd 4 .Sh STANDARDS More information can be found in the IEEE 802.11 Standards. .Sh HISTORY The .Nm driver first appeared in .Fx 5.0 . .Sh AUTHORS Atsushi Onoe is the author of original .Nx software from which this work began. .An -nosplit .An Sam Leffler brought the code into .Fx and then rewrote it to support multi-mode devices, 802.11g, 802.11n, WPA/802.11i, WME, multi-bss, and add the extensible frameworks for cryptographic, authentication, and access control plugins. This manual page was written by .An Tom Rhodes Aq Mt trhodes@FreeBSD.org . diff --git a/sys/conf/WITHOUT_SOURCELESS_UCODE b/sys/conf/WITHOUT_SOURCELESS_UCODE index 7747d3dfbe5b..277fba518db3 100644 --- a/sys/conf/WITHOUT_SOURCELESS_UCODE +++ b/sys/conf/WITHOUT_SOURCELESS_UCODE @@ -1,45 +1,44 @@ # # WITHOUT_SOURCELESS_UCODE -- Disable drivers that include sourceless # microcode. # # $FreeBSD$ nodevice adw nodevice bce nodevice fatm nodevice fxp nodevice ispfw nodevice mwlfw nodevice ralfw +nodevice rtwnfw nodevice runfw nodevice sf nodevice ti nodevice txp nodevice ce nodevice cp nodevice ctau nodevice ipwfw nodevice iwifw nodevice iwmfw nodevice iwnfw nodevice wpifw # drm nodevice mga nodevice r128 nodevice radeon # sound nodevice csa nodevice ds1 nodevice maestro3 # usb nodevice rsu nodevice rsufw nodevice rum nodevice uath nodevice zyd nodevice kue -nodevice urtwn -nodevice urtwnfw diff --git a/sys/conf/files b/sys/conf/files index c9bfc2e44fe4..46e5385f2a92 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -1,4364 +1,4518 @@ # $FreeBSD$ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and # dependency lines other than the first are silently ignored. # acpi_quirks.h optional acpi \ dependency "$S/tools/acpi_quirks2h.awk $S/dev/acpica/acpi_quirks" \ compile-with "${AWK} -f $S/tools/acpi_quirks2h.awk $S/dev/acpica/acpi_quirks" \ no-obj no-implicit-rule before-depend \ clean "acpi_quirks.h" bhnd_nvram_map.h optional bhnd \ dependency "$S/dev/bhnd/tools/nvram_map_gen.sh $S/dev/bhnd/tools/nvram_map_gen.awk $S/dev/bhnd/nvram/nvram_map" \ compile-with "sh $S/dev/bhnd/tools/nvram_map_gen.sh $S/dev/bhnd/nvram/nvram_map -h" \ no-obj no-implicit-rule before-depend \ clean "bhnd_nvram_map.h" bhnd_nvram_map_data.h optional bhnd \ dependency "$S/dev/bhnd/tools/nvram_map_gen.sh $S/dev/bhnd/tools/nvram_map_gen.awk $S/dev/bhnd/nvram/nvram_map" \ compile-with "sh $S/dev/bhnd/tools/nvram_map_gen.sh $S/dev/bhnd/nvram/nvram_map -d" \ no-obj no-implicit-rule before-depend \ clean "bhnd_nvram_map_data.h" # # The 'fdt_dtb_file' target covers an actual DTB file name, which is derived # from the specified source (DTS) file: .dts -> .dtb # fdt_dtb_file optional fdt fdt_dtb_static \ compile-with "sh -c 'MACHINE=${MACHINE} $S/tools/fdt/make_dtb.sh $S ${FDT_DTS_FILE} ${.CURDIR}'" \ no-obj no-implicit-rule before-depend \ clean "${FDT_DTS_FILE:R}.dtb" fdt_static_dtb.h optional fdt fdt_dtb_static \ compile-with "sh -c 'MACHINE=${MACHINE} $S/tools/fdt/make_dtbh.sh ${FDT_DTS_FILE} ${.CURDIR}'" \ dependency "fdt_dtb_file" \ no-obj no-implicit-rule before-depend \ clean "fdt_static_dtb.h" feeder_eq_gen.h optional sound \ dependency "$S/tools/sound/feeder_eq_mkfilter.awk" \ compile-with "${AWK} -f $S/tools/sound/feeder_eq_mkfilter.awk -- ${FEEDER_EQ_PRESETS} > feeder_eq_gen.h" \ no-obj no-implicit-rule before-depend \ clean "feeder_eq_gen.h" feeder_rate_gen.h optional sound \ dependency "$S/tools/sound/feeder_rate_mkfilter.awk" \ compile-with "${AWK} -f $S/tools/sound/feeder_rate_mkfilter.awk -- ${FEEDER_RATE_PRESETS} > feeder_rate_gen.h" \ no-obj no-implicit-rule before-depend \ clean "feeder_rate_gen.h" snd_fxdiv_gen.h optional sound \ dependency "$S/tools/sound/snd_fxdiv_gen.awk" \ compile-with "${AWK} -f $S/tools/sound/snd_fxdiv_gen.awk -- > snd_fxdiv_gen.h" \ no-obj no-implicit-rule before-depend \ clean "snd_fxdiv_gen.h" miidevs.h optional miibus | mii \ dependency "$S/tools/miidevs2h.awk $S/dev/mii/miidevs" \ compile-with "${AWK} -f $S/tools/miidevs2h.awk $S/dev/mii/miidevs" \ no-obj no-implicit-rule before-depend \ clean "miidevs.h" pccarddevs.h standard \ dependency "$S/tools/pccarddevs2h.awk $S/dev/pccard/pccarddevs" \ compile-with "${AWK} -f $S/tools/pccarddevs2h.awk $S/dev/pccard/pccarddevs" \ no-obj no-implicit-rule before-depend \ clean "pccarddevs.h" kbdmuxmap.h optional kbdmux_dflt_keymap \ compile-with "kbdcontrol -P ${S:S/sys$/share/}/vt/keymaps -P ${S:S/sys$/share/}/syscons/keymaps -L ${KBDMUX_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > kbdmuxmap.h" \ no-obj no-implicit-rule before-depend \ clean "kbdmuxmap.h" teken_state.h optional sc | vt \ dependency "$S/teken/gensequences $S/teken/sequences" \ compile-with "${AWK} -f $S/teken/gensequences $S/teken/sequences > teken_state.h" \ no-obj no-implicit-rule before-depend \ clean "teken_state.h" usbdevs.h optional usb \ dependency "$S/tools/usbdevs2h.awk $S/dev/usb/usbdevs" \ compile-with "${AWK} -f $S/tools/usbdevs2h.awk $S/dev/usb/usbdevs -h" \ no-obj no-implicit-rule before-depend \ clean "usbdevs.h" usbdevs_data.h optional usb \ dependency "$S/tools/usbdevs2h.awk $S/dev/usb/usbdevs" \ compile-with "${AWK} -f $S/tools/usbdevs2h.awk $S/dev/usb/usbdevs -d" \ no-obj no-implicit-rule before-depend \ clean "usbdevs_data.h" cam/cam.c optional scbus cam/cam_compat.c optional scbus cam/cam_iosched.c optional scbus cam/cam_periph.c optional scbus cam/cam_queue.c optional scbus cam/cam_sim.c optional scbus cam/cam_xpt.c optional scbus cam/ata/ata_all.c optional scbus cam/ata/ata_xpt.c optional scbus cam/ata/ata_pmp.c optional scbus cam/nvme/nvme_all.c optional scbus nvme !nvd cam/nvme/nvme_da.c optional scbus nvme da !nvd cam/nvme/nvme_xpt.c optional scbus nvme !nvd cam/scsi/scsi_xpt.c optional scbus cam/scsi/scsi_all.c optional scbus cam/scsi/scsi_cd.c optional cd cam/scsi/scsi_ch.c optional ch cam/ata/ata_da.c optional ada | da cam/ctl/ctl.c optional ctl cam/ctl/ctl_backend.c optional ctl cam/ctl/ctl_backend_block.c optional ctl cam/ctl/ctl_backend_ramdisk.c optional ctl cam/ctl/ctl_cmd_table.c optional ctl cam/ctl/ctl_frontend.c optional ctl cam/ctl/ctl_frontend_cam_sim.c optional ctl cam/ctl/ctl_frontend_ioctl.c optional ctl cam/ctl/ctl_frontend_iscsi.c optional ctl cam/ctl/ctl_ha.c optional ctl cam/ctl/ctl_scsi_all.c optional ctl cam/ctl/ctl_tpc.c optional ctl cam/ctl/ctl_tpc_local.c optional ctl cam/ctl/ctl_error.c optional ctl cam/ctl/ctl_util.c optional ctl cam/ctl/scsi_ctl.c optional ctl cam/scsi/scsi_da.c optional da cam/scsi/scsi_low.c optional ct | ncv | nsp | stg cam/scsi/scsi_pass.c optional pass cam/scsi/scsi_pt.c optional pt cam/scsi/scsi_sa.c optional sa cam/scsi/scsi_enc.c optional ses cam/scsi/scsi_enc_ses.c optional ses cam/scsi/scsi_enc_safte.c optional ses cam/scsi/scsi_sg.c optional sg cam/scsi/scsi_targ_bh.c optional targbh cam/scsi/scsi_target.c optional targ cam/scsi/smp_all.c optional scbus # shared between zfs and dtrace cddl/compat/opensolaris/kern/opensolaris.c optional zfs | dtrace compile-with "${CDDL_C}" cddl/compat/opensolaris/kern/opensolaris_cmn_err.c optional zfs | dtrace compile-with "${CDDL_C}" cddl/compat/opensolaris/kern/opensolaris_kmem.c optional zfs | dtrace compile-with "${CDDL_C}" cddl/compat/opensolaris/kern/opensolaris_misc.c optional zfs | dtrace compile-with "${CDDL_C}" cddl/compat/opensolaris/kern/opensolaris_proc.c optional zfs | dtrace compile-with "${CDDL_C}" cddl/compat/opensolaris/kern/opensolaris_sunddi.c optional zfs | dtrace compile-with "${CDDL_C}" cddl/compat/opensolaris/kern/opensolaris_taskq.c optional zfs | dtrace compile-with "${CDDL_C}" # zfs specific cddl/compat/opensolaris/kern/opensolaris_acl.c optional zfs compile-with "${ZFS_C}" cddl/compat/opensolaris/kern/opensolaris_dtrace.c optional zfs compile-with "${ZFS_C}" cddl/compat/opensolaris/kern/opensolaris_kobj.c optional zfs compile-with "${ZFS_C}" cddl/compat/opensolaris/kern/opensolaris_kstat.c optional zfs compile-with "${ZFS_C}" cddl/compat/opensolaris/kern/opensolaris_lookup.c optional zfs compile-with "${ZFS_C}" cddl/compat/opensolaris/kern/opensolaris_policy.c optional zfs compile-with "${ZFS_C}" cddl/compat/opensolaris/kern/opensolaris_string.c optional zfs compile-with "${ZFS_C}" cddl/compat/opensolaris/kern/opensolaris_sysevent.c optional zfs compile-with "${ZFS_C}" cddl/compat/opensolaris/kern/opensolaris_uio.c optional zfs compile-with "${ZFS_C}" cddl/compat/opensolaris/kern/opensolaris_vfs.c optional zfs compile-with "${ZFS_C}" cddl/compat/opensolaris/kern/opensolaris_vm.c optional zfs compile-with "${ZFS_C}" cddl/compat/opensolaris/kern/opensolaris_zone.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/common/acl/acl_common.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/common/avl/avl.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/common/nvpair/opensolaris_fnvpair.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/common/nvpair/opensolaris_nvpair.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/common/nvpair/opensolaris_nvpair_alloc_fixed.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/common/unicode/u8_textprep.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/common/zfs/zfeature_common.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/common/zfs/zfs_comutil.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/common/zfs/zfs_deleg.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/common/zfs/zfs_fletcher.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/common/zfs/zfs_namecheck.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/common/zfs/zfs_prop.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/common/zfs/zpool_prop.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/common/zfs/zprop_common.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/gfs.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/vnode.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/blkptr.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/bplist.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/bpobj.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/bptree.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/bqueue.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/ddt_zap.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c optional zfs compile-with "${ZFS_C}" \ warning "kernel contains CDDL licensed ZFS filesystem" cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_bookmark.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deadlist.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_prop.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_userhold.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_synctask.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/gzip.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/lz4.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/lzjb.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/multilist.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/range_tree.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/refcount.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/rrwlock.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/sha256.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/skein_zfs.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/spa_errlog.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/space_reftree.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/uberblock.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/unique.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_cache.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_missing.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_root.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zap.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zap_leaf.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zfeature.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_byteswap.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_debug.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fm.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fuid.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_log.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_onexit.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_replay.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_rlock.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_sa.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zio_checksum.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zio_compress.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zio_inject.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zle.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zrlock.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/os/callb.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/os/fm.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/os/list.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/os/nvpair_alloc_system.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/zmod/adler32.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/zmod/deflate.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/zmod/inffast.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/zmod/inflate.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/zmod/inftrees.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/zmod/opensolaris_crc32.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/zmod/trees.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/zmod/zmod.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/zmod/zmod_subr.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/uts/common/zmod/zutil.c optional zfs compile-with "${ZFS_C}" # dtrace specific cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c optional dtrace compile-with "${DTRACE_C}" \ warning "kernel contains CDDL licensed DTRACE" cddl/dev/dtmalloc/dtmalloc.c optional dtmalloc | dtraceall compile-with "${CDDL_C}" cddl/dev/profile/profile.c optional dtrace_profile | dtraceall compile-with "${CDDL_C}" cddl/dev/sdt/sdt.c optional dtrace_sdt | dtraceall compile-with "${CDDL_C}" cddl/dev/fbt/fbt.c optional dtrace_fbt | dtraceall compile-with "${FBT_C}" cddl/dev/systrace/systrace.c optional dtrace_systrace | dtraceall compile-with "${CDDL_C}" cddl/dev/prototype.c optional dtrace_prototype | dtraceall compile-with "${CDDL_C}" fs/nfsclient/nfs_clkdtrace.c optional dtnfscl nfscl | dtraceall nfscl compile-with "${CDDL_C}" compat/cloudabi/cloudabi_clock.c optional compat_cloudabi32 | compat_cloudabi64 compat/cloudabi/cloudabi_errno.c optional compat_cloudabi32 | compat_cloudabi64 compat/cloudabi/cloudabi_fd.c optional compat_cloudabi32 | compat_cloudabi64 compat/cloudabi/cloudabi_file.c optional compat_cloudabi32 | compat_cloudabi64 compat/cloudabi/cloudabi_futex.c optional compat_cloudabi32 | compat_cloudabi64 compat/cloudabi/cloudabi_mem.c optional compat_cloudabi32 | compat_cloudabi64 compat/cloudabi/cloudabi_proc.c optional compat_cloudabi32 | compat_cloudabi64 compat/cloudabi/cloudabi_random.c optional compat_cloudabi32 | compat_cloudabi64 compat/cloudabi/cloudabi_sock.c optional compat_cloudabi32 | compat_cloudabi64 compat/cloudabi/cloudabi_thread.c optional compat_cloudabi32 | compat_cloudabi64 compat/cloudabi/cloudabi_vdso.c optional compat_cloudabi32 | compat_cloudabi64 compat/cloudabi32/cloudabi32_fd.c optional compat_cloudabi32 compat/cloudabi32/cloudabi32_module.c optional compat_cloudabi32 compat/cloudabi32/cloudabi32_poll.c optional compat_cloudabi32 compat/cloudabi32/cloudabi32_sock.c optional compat_cloudabi32 compat/cloudabi32/cloudabi32_syscalls.c optional compat_cloudabi32 compat/cloudabi32/cloudabi32_sysent.c optional compat_cloudabi32 compat/cloudabi32/cloudabi32_thread.c optional compat_cloudabi32 compat/cloudabi64/cloudabi64_fd.c optional compat_cloudabi64 compat/cloudabi64/cloudabi64_module.c optional compat_cloudabi64 compat/cloudabi64/cloudabi64_poll.c optional compat_cloudabi64 compat/cloudabi64/cloudabi64_sock.c optional compat_cloudabi64 compat/cloudabi64/cloudabi64_syscalls.c optional compat_cloudabi64 compat/cloudabi64/cloudabi64_sysent.c optional compat_cloudabi64 compat/cloudabi64/cloudabi64_thread.c optional compat_cloudabi64 compat/freebsd32/freebsd32_capability.c optional compat_freebsd32 compat/freebsd32/freebsd32_ioctl.c optional compat_freebsd32 compat/freebsd32/freebsd32_misc.c optional compat_freebsd32 compat/freebsd32/freebsd32_syscalls.c optional compat_freebsd32 compat/freebsd32/freebsd32_sysent.c optional compat_freebsd32 contrib/dev/acpica/common/ahids.c optional acpi acpi_debug contrib/dev/acpica/common/ahuuids.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbcmds.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbconvert.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbdisply.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbexec.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbhistry.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbinput.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbmethod.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbnames.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbobject.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbstats.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbtest.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbutils.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbxface.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmbuffer.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmcstyle.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmdeferred.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmnames.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmopcode.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmresrc.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmresrcl.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmresrcl2.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmresrcs.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmutils.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmwalk.c optional acpi acpi_debug contrib/dev/acpica/components/dispatcher/dsargs.c optional acpi contrib/dev/acpica/components/dispatcher/dscontrol.c optional acpi contrib/dev/acpica/components/dispatcher/dsdebug.c optional acpi contrib/dev/acpica/components/dispatcher/dsfield.c optional acpi contrib/dev/acpica/components/dispatcher/dsinit.c optional acpi contrib/dev/acpica/components/dispatcher/dsmethod.c optional acpi contrib/dev/acpica/components/dispatcher/dsmthdat.c optional acpi contrib/dev/acpica/components/dispatcher/dsobject.c optional acpi contrib/dev/acpica/components/dispatcher/dsopcode.c optional acpi contrib/dev/acpica/components/dispatcher/dsutils.c optional acpi contrib/dev/acpica/components/dispatcher/dswexec.c optional acpi contrib/dev/acpica/components/dispatcher/dswload.c optional acpi contrib/dev/acpica/components/dispatcher/dswload2.c optional acpi contrib/dev/acpica/components/dispatcher/dswscope.c optional acpi contrib/dev/acpica/components/dispatcher/dswstate.c optional acpi contrib/dev/acpica/components/events/evevent.c optional acpi contrib/dev/acpica/components/events/evglock.c optional acpi contrib/dev/acpica/components/events/evgpe.c optional acpi contrib/dev/acpica/components/events/evgpeblk.c optional acpi contrib/dev/acpica/components/events/evgpeinit.c optional acpi contrib/dev/acpica/components/events/evgpeutil.c optional acpi contrib/dev/acpica/components/events/evhandler.c optional acpi contrib/dev/acpica/components/events/evmisc.c optional acpi contrib/dev/acpica/components/events/evregion.c optional acpi contrib/dev/acpica/components/events/evrgnini.c optional acpi contrib/dev/acpica/components/events/evsci.c optional acpi contrib/dev/acpica/components/events/evxface.c optional acpi contrib/dev/acpica/components/events/evxfevnt.c optional acpi contrib/dev/acpica/components/events/evxfgpe.c optional acpi contrib/dev/acpica/components/events/evxfregn.c optional acpi contrib/dev/acpica/components/executer/exconcat.c optional acpi contrib/dev/acpica/components/executer/exconfig.c optional acpi contrib/dev/acpica/components/executer/exconvrt.c optional acpi contrib/dev/acpica/components/executer/excreate.c optional acpi contrib/dev/acpica/components/executer/exdebug.c optional acpi contrib/dev/acpica/components/executer/exdump.c optional acpi contrib/dev/acpica/components/executer/exfield.c optional acpi contrib/dev/acpica/components/executer/exfldio.c optional acpi contrib/dev/acpica/components/executer/exmisc.c optional acpi contrib/dev/acpica/components/executer/exmutex.c optional acpi contrib/dev/acpica/components/executer/exnames.c optional acpi contrib/dev/acpica/components/executer/exoparg1.c optional acpi contrib/dev/acpica/components/executer/exoparg2.c optional acpi contrib/dev/acpica/components/executer/exoparg3.c optional acpi contrib/dev/acpica/components/executer/exoparg6.c optional acpi contrib/dev/acpica/components/executer/exprep.c optional acpi contrib/dev/acpica/components/executer/exregion.c optional acpi contrib/dev/acpica/components/executer/exresnte.c optional acpi contrib/dev/acpica/components/executer/exresolv.c optional acpi contrib/dev/acpica/components/executer/exresop.c optional acpi contrib/dev/acpica/components/executer/exstore.c optional acpi contrib/dev/acpica/components/executer/exstoren.c optional acpi contrib/dev/acpica/components/executer/exstorob.c optional acpi contrib/dev/acpica/components/executer/exsystem.c optional acpi contrib/dev/acpica/components/executer/extrace.c optional acpi contrib/dev/acpica/components/executer/exutils.c optional acpi contrib/dev/acpica/components/hardware/hwacpi.c optional acpi contrib/dev/acpica/components/hardware/hwesleep.c optional acpi contrib/dev/acpica/components/hardware/hwgpe.c optional acpi contrib/dev/acpica/components/hardware/hwpci.c optional acpi contrib/dev/acpica/components/hardware/hwregs.c optional acpi contrib/dev/acpica/components/hardware/hwsleep.c optional acpi contrib/dev/acpica/components/hardware/hwtimer.c optional acpi contrib/dev/acpica/components/hardware/hwvalid.c optional acpi contrib/dev/acpica/components/hardware/hwxface.c optional acpi contrib/dev/acpica/components/hardware/hwxfsleep.c optional acpi contrib/dev/acpica/components/namespace/nsaccess.c optional acpi contrib/dev/acpica/components/namespace/nsalloc.c optional acpi contrib/dev/acpica/components/namespace/nsarguments.c optional acpi contrib/dev/acpica/components/namespace/nsconvert.c optional acpi contrib/dev/acpica/components/namespace/nsdump.c optional acpi contrib/dev/acpica/components/namespace/nseval.c optional acpi contrib/dev/acpica/components/namespace/nsinit.c optional acpi contrib/dev/acpica/components/namespace/nsload.c optional acpi contrib/dev/acpica/components/namespace/nsnames.c optional acpi contrib/dev/acpica/components/namespace/nsobject.c optional acpi contrib/dev/acpica/components/namespace/nsparse.c optional acpi contrib/dev/acpica/components/namespace/nspredef.c optional acpi contrib/dev/acpica/components/namespace/nsprepkg.c optional acpi contrib/dev/acpica/components/namespace/nsrepair.c optional acpi contrib/dev/acpica/components/namespace/nsrepair2.c optional acpi contrib/dev/acpica/components/namespace/nssearch.c optional acpi contrib/dev/acpica/components/namespace/nsutils.c optional acpi contrib/dev/acpica/components/namespace/nswalk.c optional acpi contrib/dev/acpica/components/namespace/nsxfeval.c optional acpi contrib/dev/acpica/components/namespace/nsxfname.c optional acpi contrib/dev/acpica/components/namespace/nsxfobj.c optional acpi contrib/dev/acpica/components/parser/psargs.c optional acpi contrib/dev/acpica/components/parser/psloop.c optional acpi contrib/dev/acpica/components/parser/psobject.c optional acpi contrib/dev/acpica/components/parser/psopcode.c optional acpi contrib/dev/acpica/components/parser/psopinfo.c optional acpi contrib/dev/acpica/components/parser/psparse.c optional acpi contrib/dev/acpica/components/parser/psscope.c optional acpi contrib/dev/acpica/components/parser/pstree.c optional acpi contrib/dev/acpica/components/parser/psutils.c optional acpi contrib/dev/acpica/components/parser/pswalk.c optional acpi contrib/dev/acpica/components/parser/psxface.c optional acpi contrib/dev/acpica/components/resources/rsaddr.c optional acpi contrib/dev/acpica/components/resources/rscalc.c optional acpi contrib/dev/acpica/components/resources/rscreate.c optional acpi contrib/dev/acpica/components/resources/rsdump.c optional acpi acpi_debug contrib/dev/acpica/components/resources/rsdumpinfo.c optional acpi contrib/dev/acpica/components/resources/rsinfo.c optional acpi contrib/dev/acpica/components/resources/rsio.c optional acpi contrib/dev/acpica/components/resources/rsirq.c optional acpi contrib/dev/acpica/components/resources/rslist.c optional acpi contrib/dev/acpica/components/resources/rsmemory.c optional acpi contrib/dev/acpica/components/resources/rsmisc.c optional acpi contrib/dev/acpica/components/resources/rsserial.c optional acpi contrib/dev/acpica/components/resources/rsutils.c optional acpi contrib/dev/acpica/components/resources/rsxface.c optional acpi contrib/dev/acpica/components/tables/tbdata.c optional acpi contrib/dev/acpica/components/tables/tbfadt.c optional acpi contrib/dev/acpica/components/tables/tbfind.c optional acpi contrib/dev/acpica/components/tables/tbinstal.c optional acpi contrib/dev/acpica/components/tables/tbprint.c optional acpi contrib/dev/acpica/components/tables/tbutils.c optional acpi contrib/dev/acpica/components/tables/tbxface.c optional acpi contrib/dev/acpica/components/tables/tbxfload.c optional acpi contrib/dev/acpica/components/tables/tbxfroot.c optional acpi contrib/dev/acpica/components/utilities/utaddress.c optional acpi contrib/dev/acpica/components/utilities/utalloc.c optional acpi contrib/dev/acpica/components/utilities/utascii.c optional acpi contrib/dev/acpica/components/utilities/utbuffer.c optional acpi contrib/dev/acpica/components/utilities/utcache.c optional acpi contrib/dev/acpica/components/utilities/utcopy.c optional acpi contrib/dev/acpica/components/utilities/utdebug.c optional acpi contrib/dev/acpica/components/utilities/utdecode.c optional acpi contrib/dev/acpica/components/utilities/utdelete.c optional acpi contrib/dev/acpica/components/utilities/uterror.c optional acpi contrib/dev/acpica/components/utilities/uteval.c optional acpi contrib/dev/acpica/components/utilities/utexcep.c optional acpi contrib/dev/acpica/components/utilities/utglobal.c optional acpi contrib/dev/acpica/components/utilities/uthex.c optional acpi contrib/dev/acpica/components/utilities/utids.c optional acpi contrib/dev/acpica/components/utilities/utinit.c optional acpi contrib/dev/acpica/components/utilities/utlock.c optional acpi contrib/dev/acpica/components/utilities/utmath.c optional acpi contrib/dev/acpica/components/utilities/utmisc.c optional acpi contrib/dev/acpica/components/utilities/utmutex.c optional acpi contrib/dev/acpica/components/utilities/utnonansi.c optional acpi contrib/dev/acpica/components/utilities/utobject.c optional acpi contrib/dev/acpica/components/utilities/utosi.c optional acpi contrib/dev/acpica/components/utilities/utownerid.c optional acpi contrib/dev/acpica/components/utilities/utpredef.c optional acpi contrib/dev/acpica/components/utilities/utresrc.c optional acpi contrib/dev/acpica/components/utilities/utstate.c optional acpi contrib/dev/acpica/components/utilities/utstring.c optional acpi contrib/dev/acpica/components/utilities/utstrtoul64.c optional acpi contrib/dev/acpica/components/utilities/utuuid.c optional acpi acpi_debug contrib/dev/acpica/components/utilities/utxface.c optional acpi contrib/dev/acpica/components/utilities/utxferror.c optional acpi contrib/dev/acpica/components/utilities/utxfinit.c optional acpi #contrib/dev/acpica/components/utilities/utxfmutex.c optional acpi contrib/ipfilter/netinet/fil.c optional ipfilter inet \ compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_auth.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_fil_freebsd.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_frag.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_log.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_nat.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_proxy.c optional ipfilter inet \ compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_state.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_lookup.c optional ipfilter inet \ compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN} -Wno-unused -Wno-error -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_pool.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_htable.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_sync.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/mlfk_ipl.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_nat6.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_rules.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_scan.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_dstlist.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/radix_ipf.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/libfdt/fdt.c optional fdt contrib/libfdt/fdt_ro.c optional fdt contrib/libfdt/fdt_rw.c optional fdt contrib/libfdt/fdt_strerror.c optional fdt contrib/libfdt/fdt_sw.c optional fdt contrib/libfdt/fdt_wip.c optional fdt contrib/libnv/cnvlist.c standard contrib/libnv/dnvlist.c standard contrib/libnv/nvlist.c standard contrib/libnv/nvpair.c standard contrib/ngatm/netnatm/api/cc_conn.c optional ngatm_ccatm \ compile-with "${NORMAL_C_NOWERROR} -I$S/contrib/ngatm" contrib/ngatm/netnatm/api/cc_data.c optional ngatm_ccatm \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/api/cc_dump.c optional ngatm_ccatm \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/api/cc_port.c optional ngatm_ccatm \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/api/cc_sig.c optional ngatm_ccatm \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/api/cc_user.c optional ngatm_ccatm \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/api/unisap.c optional ngatm_ccatm \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/misc/straddr.c optional ngatm_atmbase \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/misc/unimsg_common.c optional ngatm_atmbase \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/msg/traffic.c optional ngatm_atmbase \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/msg/uni_ie.c optional ngatm_atmbase \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/msg/uni_msg.c optional ngatm_atmbase \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/saal/saal_sscfu.c optional ngatm_sscfu \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/saal/saal_sscop.c optional ngatm_sscop \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/sig/sig_call.c optional ngatm_uni \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/sig/sig_coord.c optional ngatm_uni \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/sig/sig_party.c optional ngatm_uni \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/sig/sig_print.c optional ngatm_uni \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/sig/sig_reset.c optional ngatm_uni \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/sig/sig_uni.c optional ngatm_uni \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/sig/sig_unimsgcpy.c optional ngatm_uni \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/sig/sig_verify.c optional ngatm_uni \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" crypto/blowfish/bf_ecb.c optional ipsec crypto/blowfish/bf_skey.c optional crypto | ipsec crypto/camellia/camellia.c optional crypto | ipsec crypto/camellia/camellia-api.c optional crypto | ipsec crypto/des/des_ecb.c optional crypto | ipsec | netsmb crypto/des/des_setkey.c optional crypto | ipsec | netsmb crypto/rc4/rc4.c optional netgraph_mppc_encryption | kgssapi crypto/rijndael/rijndael-alg-fst.c optional crypto | geom_bde | \ ipsec | random !random_loadable | wlan_ccmp crypto/rijndael/rijndael-api-fst.c optional geom_bde | random !random_loadable crypto/rijndael/rijndael-api.c optional crypto | ipsec | wlan_ccmp crypto/sha1.c optional carp | crypto | ipsec | \ netgraph_mppc_encryption | sctp crypto/sha2/sha256c.c optional crypto | geom_bde | ipsec | random !random_loadable | \ sctp | zfs crypto/sha2/sha512c.c optional crypto | geom_bde | ipsec | zfs crypto/skein/skein.c optional crypto | zfs crypto/skein/skein_block.c optional crypto | zfs crypto/siphash/siphash.c optional inet | inet6 crypto/siphash/siphash_test.c optional inet | inet6 ddb/db_access.c optional ddb ddb/db_break.c optional ddb ddb/db_capture.c optional ddb ddb/db_command.c optional ddb ddb/db_examine.c optional ddb ddb/db_expr.c optional ddb ddb/db_input.c optional ddb ddb/db_lex.c optional ddb ddb/db_main.c optional ddb ddb/db_output.c optional ddb ddb/db_print.c optional ddb ddb/db_ps.c optional ddb ddb/db_run.c optional ddb ddb/db_script.c optional ddb ddb/db_sym.c optional ddb ddb/db_thread.c optional ddb ddb/db_textdump.c optional ddb ddb/db_variables.c optional ddb ddb/db_watch.c optional ddb ddb/db_write_cmd.c optional ddb dev/aac/aac.c optional aac dev/aac/aac_cam.c optional aacp aac dev/aac/aac_debug.c optional aac dev/aac/aac_disk.c optional aac dev/aac/aac_linux.c optional aac compat_linux dev/aac/aac_pci.c optional aac pci dev/aacraid/aacraid.c optional aacraid dev/aacraid/aacraid_cam.c optional aacraid scbus dev/aacraid/aacraid_debug.c optional aacraid dev/aacraid/aacraid_linux.c optional aacraid compat_linux dev/aacraid/aacraid_pci.c optional aacraid pci dev/acpi_support/acpi_wmi.c optional acpi_wmi acpi dev/acpi_support/acpi_asus.c optional acpi_asus acpi dev/acpi_support/acpi_asus_wmi.c optional acpi_asus_wmi acpi dev/acpi_support/acpi_fujitsu.c optional acpi_fujitsu acpi dev/acpi_support/acpi_hp.c optional acpi_hp acpi dev/acpi_support/acpi_ibm.c optional acpi_ibm acpi dev/acpi_support/acpi_panasonic.c optional acpi_panasonic acpi dev/acpi_support/acpi_sony.c optional acpi_sony acpi dev/acpi_support/acpi_toshiba.c optional acpi_toshiba acpi dev/acpi_support/atk0110.c optional aibs acpi dev/acpica/Osd/OsdDebug.c optional acpi dev/acpica/Osd/OsdHardware.c optional acpi dev/acpica/Osd/OsdInterrupt.c optional acpi dev/acpica/Osd/OsdMemory.c optional acpi dev/acpica/Osd/OsdSchedule.c optional acpi dev/acpica/Osd/OsdStream.c optional acpi dev/acpica/Osd/OsdSynch.c optional acpi dev/acpica/Osd/OsdTable.c optional acpi dev/acpica/acpi.c optional acpi dev/acpica/acpi_acad.c optional acpi dev/acpica/acpi_battery.c optional acpi dev/acpica/acpi_button.c optional acpi dev/acpica/acpi_cmbat.c optional acpi dev/acpica/acpi_cpu.c optional acpi dev/acpica/acpi_ec.c optional acpi dev/acpica/acpi_isab.c optional acpi isa dev/acpica/acpi_lid.c optional acpi dev/acpica/acpi_package.c optional acpi dev/acpica/acpi_pci.c optional acpi pci dev/acpica/acpi_pci_link.c optional acpi pci dev/acpica/acpi_pcib.c optional acpi pci dev/acpica/acpi_pcib_acpi.c optional acpi pci dev/acpica/acpi_pcib_pci.c optional acpi pci dev/acpica/acpi_perf.c optional acpi dev/acpica/acpi_powerres.c optional acpi dev/acpica/acpi_quirk.c optional acpi dev/acpica/acpi_resource.c optional acpi dev/acpica/acpi_smbat.c optional acpi dev/acpica/acpi_thermal.c optional acpi dev/acpica/acpi_throttle.c optional acpi dev/acpica/acpi_timer.c optional acpi dev/acpica/acpi_video.c optional acpi_video acpi dev/acpica/acpi_dock.c optional acpi_dock acpi dev/adlink/adlink.c optional adlink dev/advansys/adv_eisa.c optional adv eisa dev/advansys/adv_pci.c optional adv pci dev/advansys/advansys.c optional adv dev/advansys/advlib.c optional adv dev/advansys/advmcode.c optional adv dev/advansys/adw_pci.c optional adw pci dev/advansys/adwcam.c optional adw dev/advansys/adwlib.c optional adw dev/advansys/adwmcode.c optional adw dev/ae/if_ae.c optional ae pci dev/age/if_age.c optional age pci dev/agp/agp.c optional agp pci dev/agp/agp_if.m optional agp pci dev/aha/aha.c optional aha dev/aha/aha_isa.c optional aha isa dev/aha/aha_mca.c optional aha mca dev/ahb/ahb.c optional ahb eisa dev/ahci/ahci.c optional ahci dev/ahci/ahciem.c optional ahci dev/ahci/ahci_pci.c optional ahci pci dev/aic/aic.c optional aic dev/aic/aic_pccard.c optional aic pccard dev/aic7xxx/ahc_eisa.c optional ahc eisa dev/aic7xxx/ahc_isa.c optional ahc isa dev/aic7xxx/ahc_pci.c optional ahc pci \ compile-with "${NORMAL_C} ${NO_WCONSTANT_CONVERSION}" dev/aic7xxx/ahd_pci.c optional ahd pci \ compile-with "${NORMAL_C} ${NO_WCONSTANT_CONVERSION}" dev/aic7xxx/aic7770.c optional ahc dev/aic7xxx/aic79xx.c optional ahd pci dev/aic7xxx/aic79xx_osm.c optional ahd pci dev/aic7xxx/aic79xx_pci.c optional ahd pci dev/aic7xxx/aic79xx_reg_print.c optional ahd pci ahd_reg_pretty_print dev/aic7xxx/aic7xxx.c optional ahc dev/aic7xxx/aic7xxx_93cx6.c optional ahc dev/aic7xxx/aic7xxx_osm.c optional ahc dev/aic7xxx/aic7xxx_pci.c optional ahc pci dev/aic7xxx/aic7xxx_reg_print.c optional ahc ahc_reg_pretty_print dev/alc/if_alc.c optional alc pci dev/ale/if_ale.c optional ale pci dev/alpm/alpm.c optional alpm pci dev/altera/avgen/altera_avgen.c optional altera_avgen dev/altera/avgen/altera_avgen_fdt.c optional altera_avgen fdt dev/altera/avgen/altera_avgen_nexus.c optional altera_avgen dev/altera/sdcard/altera_sdcard.c optional altera_sdcard dev/altera/sdcard/altera_sdcard_disk.c optional altera_sdcard dev/altera/sdcard/altera_sdcard_io.c optional altera_sdcard dev/altera/sdcard/altera_sdcard_fdt.c optional altera_sdcard fdt dev/altera/sdcard/altera_sdcard_nexus.c optional altera_sdcard dev/altera/pio/pio.c optional altera_pio dev/altera/pio/pio_if.m optional altera_pio dev/amdpm/amdpm.c optional amdpm pci | nfpm pci dev/amdsmb/amdsmb.c optional amdsmb pci dev/amr/amr.c optional amr dev/amr/amr_cam.c optional amrp amr dev/amr/amr_disk.c optional amr dev/amr/amr_linux.c optional amr compat_linux dev/amr/amr_pci.c optional amr pci dev/an/if_an.c optional an dev/an/if_an_isa.c optional an isa dev/an/if_an_pccard.c optional an pccard dev/an/if_an_pci.c optional an pci # dev/ata/ata_if.m optional ata | atacore dev/ata/ata-all.c optional ata | atacore dev/ata/ata-dma.c optional ata | atacore dev/ata/ata-lowlevel.c optional ata | atacore dev/ata/ata-sata.c optional ata | atacore dev/ata/ata-card.c optional ata pccard | atapccard dev/ata/ata-cbus.c optional ata pc98 | atapc98 dev/ata/ata-isa.c optional ata isa | ataisa dev/ata/ata-pci.c optional ata pci | atapci dev/ata/chipsets/ata-acard.c optional ata pci | ataacard dev/ata/chipsets/ata-acerlabs.c optional ata pci | ataacerlabs dev/ata/chipsets/ata-amd.c optional ata pci | ataamd dev/ata/chipsets/ata-ati.c optional ata pci | ataati dev/ata/chipsets/ata-cenatek.c optional ata pci | atacenatek dev/ata/chipsets/ata-cypress.c optional ata pci | atacypress dev/ata/chipsets/ata-cyrix.c optional ata pci | atacyrix dev/ata/chipsets/ata-highpoint.c optional ata pci | atahighpoint dev/ata/chipsets/ata-intel.c optional ata pci | ataintel dev/ata/chipsets/ata-ite.c optional ata pci | ataite dev/ata/chipsets/ata-jmicron.c optional ata pci | atajmicron dev/ata/chipsets/ata-marvell.c optional ata pci | atamarvell dev/ata/chipsets/ata-micron.c optional ata pci | atamicron dev/ata/chipsets/ata-national.c optional ata pci | atanational dev/ata/chipsets/ata-netcell.c optional ata pci | atanetcell dev/ata/chipsets/ata-nvidia.c optional ata pci | atanvidia dev/ata/chipsets/ata-promise.c optional ata pci | atapromise dev/ata/chipsets/ata-serverworks.c optional ata pci | ataserverworks dev/ata/chipsets/ata-siliconimage.c optional ata pci | atasiliconimage | ataati dev/ata/chipsets/ata-sis.c optional ata pci | atasis dev/ata/chipsets/ata-via.c optional ata pci | atavia # dev/ath/if_ath_pci.c optional ath_pci pci \ compile-with "${NORMAL_C} -I$S/dev/ath" # dev/ath/if_ath_ahb.c optional ath_ahb \ compile-with "${NORMAL_C} -I$S/dev/ath" # dev/ath/if_ath.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_alq.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_beacon.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_btcoex.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_btcoex_mci.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_debug.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_descdma.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_keycache.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_ioctl.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_led.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_lna_div.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_tx.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_tx_edma.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_tx_ht.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_tdma.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_sysctl.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_rx.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_rx_edma.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_spectral.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/ah_osdep.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" # dev/ath/ath_hal/ah.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/ath_hal/ah_eeprom_v1.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/ath_hal/ah_eeprom_v3.c optional ath_hal | ath_ar5211 | ath_ar5212 \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/ath_hal/ah_eeprom_v14.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/ath_hal/ah_eeprom_v4k.c \ optional ath_hal | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/ath_hal/ah_eeprom_9287.c \ optional ath_hal | ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/ath_hal/ah_regdomain.c optional ath \ compile-with "${NORMAL_C} ${NO_WSHIFT_COUNT_NEGATIVE} ${NO_WSHIFT_COUNT_OVERFLOW} -I$S/dev/ath" # ar5210 dev/ath/ath_hal/ar5210/ar5210_attach.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5210/ar5210_beacon.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5210/ar5210_interrupts.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5210/ar5210_keycache.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5210/ar5210_misc.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5210/ar5210_phy.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5210/ar5210_power.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5210/ar5210_recv.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5210/ar5210_reset.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5210/ar5210_xmit.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ar5211 dev/ath/ath_hal/ar5211/ar5211_attach.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5211/ar5211_beacon.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5211/ar5211_interrupts.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5211/ar5211_keycache.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5211/ar5211_misc.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5211/ar5211_phy.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5211/ar5211_power.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5211/ar5211_recv.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5211/ar5211_reset.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5211/ar5211_xmit.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ar5212 dev/ath/ath_hal/ar5212/ar5212_ani.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_attach.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_beacon.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_eeprom.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_gpio.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_interrupts.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_keycache.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_misc.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_phy.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_power.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_recv.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_reset.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_rfgain.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_xmit.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ar5416 (depends on ar5212) dev/ath/ath_hal/ar5416/ar5416_ani.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_attach.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_beacon.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_btcoex.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_cal.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_cal_iq.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_cal_adcgain.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_cal_adcdc.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_eeprom.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_gpio.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_interrupts.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_keycache.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_misc.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_phy.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_power.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_radar.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_recv.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_reset.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_spectral.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_xmit.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ar9130 (depends upon ar5416) - also requires AH_SUPPORT_AR9130 # # Since this is an embedded MAC SoC, there's no need to compile it into the # default HAL. dev/ath/ath_hal/ar9001/ar9130_attach.c optional ath_ar9130 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9001/ar9130_phy.c optional ath_ar9130 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9001/ar9130_eeprom.c optional ath_ar9130 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ar9160 (depends on ar5416) dev/ath/ath_hal/ar9001/ar9160_attach.c optional ath_hal | ath_ar9160 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ar9280 (depends on ar5416) dev/ath/ath_hal/ar9002/ar9280_attach.c optional ath_hal | ath_ar9280 | \ ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9280_olc.c optional ath_hal | ath_ar9280 | \ ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ar9285 (depends on ar5416 and ar9280) dev/ath/ath_hal/ar9002/ar9285_attach.c optional ath_hal | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9285_btcoex.c optional ath_hal | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9285_reset.c optional ath_hal | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9285_cal.c optional ath_hal | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9285_phy.c optional ath_hal | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9285_diversity.c optional ath_hal | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ar9287 (depends on ar5416) dev/ath/ath_hal/ar9002/ar9287_attach.c optional ath_hal | ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9287_reset.c optional ath_hal | ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9287_cal.c optional ath_hal | ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9287_olc.c optional ath_hal | ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ar9300 contrib/dev/ath/ath_hal/ar9300/ar9300_ani.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_attach.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_beacon.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_eeprom.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal ${NO_WCONSTANT_CONVERSION}" contrib/dev/ath/ath_hal/ar9300/ar9300_freebsd.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_gpio.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_interrupts.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_keycache.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_mci.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_misc.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_paprd.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_phy.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_power.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_radar.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_radio.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_recv.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_recv_ds.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_reset.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal ${NO_WSOMETIMES_UNINITIALIZED} -Wno-unused-function" contrib/dev/ath/ath_hal/ar9300/ar9300_stub.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_stub_funcs.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_spectral.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_timer.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_xmit.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_xmit_ds.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" # rf backends dev/ath/ath_hal/ar5212/ar2316.c optional ath_rf2316 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar2317.c optional ath_rf2317 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar2413.c optional ath_hal | ath_rf2413 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar2425.c optional ath_hal | ath_rf2425 | ath_rf2417 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5111.c optional ath_hal | ath_rf5111 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5112.c optional ath_hal | ath_rf5112 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5413.c optional ath_hal | ath_rf5413 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar2133.c optional ath_hal | ath_ar5416 | \ ath_ar9130 | ath_ar9160 | ath_ar9280 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9280.c optional ath_hal | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9285.c optional ath_hal | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9287.c optional ath_hal | ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ath rate control algorithms dev/ath/ath_rate/amrr/amrr.c optional ath_rate_amrr \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/ath_rate/onoe/onoe.c optional ath_rate_onoe \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/ath_rate/sample/sample.c optional ath_rate_sample \ compile-with "${NORMAL_C} -I$S/dev/ath" # ath DFS modules dev/ath/ath_dfs/null/dfs_null.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" # dev/bce/if_bce.c optional bce dev/bfe/if_bfe.c optional bfe dev/bge/if_bge.c optional bge dev/bhnd/bhnd.c optional bhnd dev/bhnd/bhnd_erom.c optional bhnd dev/bhnd/bhnd_erom_if.m optional bhnd dev/bhnd/bhnd_nexus.c optional bhnd siba_nexus | \ bhnd bcma_nexus dev/bhnd/bhnd_subr.c optional bhnd dev/bhnd/bhnd_bus_if.m optional bhnd dev/bhnd/bhndb/bhnd_bhndb.c optional bhndb bhnd dev/bhnd/bhndb/bhndb.c optional bhndb bhnd dev/bhnd/bhndb/bhndb_bus_if.m optional bhndb bhnd dev/bhnd/bhndb/bhndb_hwdata.c optional bhndb bhnd dev/bhnd/bhndb/bhndb_if.m optional bhndb bhnd dev/bhnd/bhndb/bhndb_pci.c optional bhndb bhnd pci dev/bhnd/bhndb/bhndb_pci_hwdata.c optional bhndb bhnd pci dev/bhnd/bhndb/bhndb_pci_sprom.c optional bhndb bhnd pci dev/bhnd/bhndb/bhndb_subr.c optional bhndb bhnd dev/bhnd/bcma/bcma.c optional bcma bhnd dev/bhnd/bcma/bcma_bhndb.c optional bcma bhnd bhndb dev/bhnd/bcma/bcma_erom.c optional bcma bhnd dev/bhnd/bcma/bcma_nexus.c optional bcma_nexus bcma bhnd dev/bhnd/bcma/bcma_subr.c optional bcma bhnd dev/bhnd/cores/chipc/bhnd_chipc_if.m optional bhnd dev/bhnd/cores/chipc/bhnd_sprom_chipc.c optional bhnd dev/bhnd/cores/chipc/bhnd_pmu_chipc.c optional bhnd dev/bhnd/cores/chipc/chipc.c optional bhnd dev/bhnd/cores/chipc/chipc_cfi.c optional bhnd cfi dev/bhnd/cores/chipc/chipc_slicer.c optional bhnd cfi | bhnd spibus dev/bhnd/cores/chipc/chipc_spi.c optional bhnd spibus dev/bhnd/cores/chipc/chipc_subr.c optional bhnd dev/bhnd/cores/chipc/pwrctl/bhnd_pwrctl.c optional bhnd dev/bhnd/cores/chipc/pwrctl/bhnd_pwrctl_subr.c optional bhnd dev/bhnd/cores/pci/bhnd_pci.c optional bhnd pci dev/bhnd/cores/pci/bhnd_pci_hostb.c optional bhndb bhnd pci dev/bhnd/cores/pci/bhnd_pcib.c optional bhnd_pcib bhnd pci dev/bhnd/cores/pcie2/bhnd_pcie2.c optional bhnd pci dev/bhnd/cores/pcie2/bhnd_pcie2_hostb.c optional bhndb bhnd pci dev/bhnd/cores/pcie2/bhnd_pcie2b.c optional bhnd_pcie2b bhnd pci dev/bhnd/cores/pmu/bhnd_pmu.c optional bhnd dev/bhnd/cores/pmu/bhnd_pmu_core.c optional bhnd dev/bhnd/cores/pmu/bhnd_pmu_if.m optional bhnd dev/bhnd/cores/pmu/bhnd_pmu_subr.c optional bhnd dev/bhnd/nvram/bhnd_nvram.c optional bhnd dev/bhnd/nvram/bhnd_nvram_common.c optional bhnd dev/bhnd/nvram/bhnd_nvram_cfe.c optional bhnd siba_nexus cfe | \ bhnd bcma_nexus cfe dev/bhnd/nvram/bhnd_nvram_if.m optional bhnd dev/bhnd/nvram/bhnd_nvram_parser.c optional bhnd dev/bhnd/nvram/bhnd_sprom.c optional bhnd dev/bhnd/nvram/bhnd_sprom_parser.c optional bhnd dev/bhnd/siba/siba.c optional siba bhnd dev/bhnd/siba/siba_bhndb.c optional siba bhnd bhndb dev/bhnd/siba/siba_erom.c optional siba bhnd dev/bhnd/siba/siba_nexus.c optional siba_nexus siba bhnd dev/bhnd/siba/siba_subr.c optional siba bhnd # dev/bktr/bktr_audio.c optional bktr pci dev/bktr/bktr_card.c optional bktr pci dev/bktr/bktr_core.c optional bktr pci dev/bktr/bktr_i2c.c optional bktr pci smbus dev/bktr/bktr_os.c optional bktr pci dev/bktr/bktr_tuner.c optional bktr pci dev/bktr/msp34xx.c optional bktr pci dev/buslogic/bt.c optional bt dev/buslogic/bt_eisa.c optional bt eisa dev/buslogic/bt_isa.c optional bt isa dev/buslogic/bt_mca.c optional bt mca dev/buslogic/bt_pci.c optional bt pci dev/bwi/bwimac.c optional bwi dev/bwi/bwiphy.c optional bwi dev/bwi/bwirf.c optional bwi dev/bwi/if_bwi.c optional bwi dev/bwi/if_bwi_pci.c optional bwi pci # XXX Work around clang warnings, until maintainer approves fix. dev/bwn/if_bwn.c optional bwn siba_bwn \ compile-with "${NORMAL_C} ${NO_WSOMETIMES_UNINITIALIZED}" dev/bwn/if_bwn_pci.c optional bwn pci bhnd dev/bwn/if_bwn_phy_common.c optional bwn siba_bwn dev/bwn/if_bwn_phy_g.c optional bwn siba_bwn \ compile-with "${NORMAL_C} ${NO_WSOMETIMES_UNINITIALIZED} ${NO_WCONSTANT_CONVERSION}" dev/bwn/if_bwn_phy_lp.c optional bwn siba_bwn \ compile-with "${NORMAL_C} ${NO_WSOMETIMES_UNINITIALIZED}" dev/bwn/if_bwn_phy_n.c optional bwn siba_bwn dev/bwn/if_bwn_util.c optional bwn siba_bwn dev/bwn/bwn_mac.c optional bwn bhnd dev/cardbus/cardbus.c optional cardbus dev/cardbus/cardbus_cis.c optional cardbus dev/cardbus/cardbus_device.c optional cardbus dev/cas/if_cas.c optional cas dev/cfi/cfi_bus_fdt.c optional cfi fdt dev/cfi/cfi_bus_nexus.c optional cfi dev/cfi/cfi_core.c optional cfi dev/cfi/cfi_dev.c optional cfi dev/cfi/cfi_disk.c optional cfid dev/ciss/ciss.c optional ciss dev/cm/smc90cx6.c optional cm dev/cmx/cmx.c optional cmx dev/cmx/cmx_pccard.c optional cmx pccard dev/cpufreq/ichss.c optional cpufreq pci dev/cs/if_cs.c optional cs dev/cs/if_cs_isa.c optional cs isa dev/cs/if_cs_pccard.c optional cs pccard dev/cxgb/cxgb_main.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/cxgb_sge.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/common/cxgb_mc5.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/common/cxgb_vsc7323.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/common/cxgb_vsc8211.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/common/cxgb_ael1002.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/common/cxgb_aq100x.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/common/cxgb_mv88e1xxx.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/common/cxgb_xgmac.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/common/cxgb_t3_hw.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/common/cxgb_tn1010.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/sys/uipc_mvec.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/cxgb_t3fw.c optional cxgb cxgb_t3fw \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgbe/t4_if.m optional cxgbe pci dev/cxgbe/t4_iov.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/t4_mp_ring.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/t4_main.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/t4_netmap.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/t4_sge.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/t4_l2t.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/t4_tracer.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/t4_vf.c optional cxgbev pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/common/t4_hw.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/common/t4vf_hw.c optional cxgbev pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" t4fw_cfg.c optional cxgbe \ compile-with "${AWK} -f $S/tools/fw_stub.awk t4fw_cfg.fw:t4fw_cfg t4fw_cfg_uwire.fw:t4fw_cfg_uwire t4fw.fw:t4fw -mt4fw_cfg -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "t4fw_cfg.c" t4fw_cfg.fwo optional cxgbe \ dependency "t4fw_cfg.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "t4fw_cfg.fwo" t4fw_cfg.fw optional cxgbe \ dependency "$S/dev/cxgbe/firmware/t4fw_cfg.txt" \ compile-with "${CP} ${.ALLSRC} ${.TARGET}" \ no-obj no-implicit-rule \ clean "t4fw_cfg.fw" t4fw_cfg_uwire.fwo optional cxgbe \ dependency "t4fw_cfg_uwire.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "t4fw_cfg_uwire.fwo" t4fw_cfg_uwire.fw optional cxgbe \ dependency "$S/dev/cxgbe/firmware/t4fw_cfg_uwire.txt" \ compile-with "${CP} ${.ALLSRC} ${.TARGET}" \ no-obj no-implicit-rule \ clean "t4fw_cfg_uwire.fw" t4fw.fwo optional cxgbe \ dependency "t4fw.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "t4fw.fwo" t4fw.fw optional cxgbe \ dependency "$S/dev/cxgbe/firmware/t4fw-1.15.37.0.bin.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "t4fw.fw" t5fw_cfg.c optional cxgbe \ compile-with "${AWK} -f $S/tools/fw_stub.awk t5fw_cfg.fw:t5fw_cfg t5fw.fw:t5fw -mt5fw_cfg -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "t5fw_cfg.c" t5fw_cfg.fwo optional cxgbe \ dependency "t5fw_cfg.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "t5fw_cfg.fwo" t5fw_cfg.fw optional cxgbe \ dependency "$S/dev/cxgbe/firmware/t5fw_cfg.txt" \ compile-with "${CP} ${.ALLSRC} ${.TARGET}" \ no-obj no-implicit-rule \ clean "t5fw_cfg.fw" t5fw.fwo optional cxgbe \ dependency "t5fw.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "t5fw.fwo" t5fw.fw optional cxgbe \ dependency "$S/dev/cxgbe/firmware/t5fw-1.15.37.0.bin.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "t5fw.fw" dev/cy/cy.c optional cy dev/cy/cy_isa.c optional cy isa dev/cy/cy_pci.c optional cy pci dev/cyapa/cyapa.c optional cyapa smbus dev/dc/if_dc.c optional dc pci dev/dc/dcphy.c optional dc pci dev/dc/pnphy.c optional dc pci dev/dcons/dcons.c optional dcons dev/dcons/dcons_crom.c optional dcons_crom dev/dcons/dcons_os.c optional dcons dev/de/if_de.c optional de pci dev/dpt/dpt_eisa.c optional dpt eisa dev/dpt/dpt_pci.c optional dpt pci dev/dpt/dpt_scsi.c optional dpt dev/drm/ati_pcigart.c optional drm dev/drm/drm_agpsupport.c optional drm dev/drm/drm_auth.c optional drm dev/drm/drm_bufs.c optional drm dev/drm/drm_context.c optional drm dev/drm/drm_dma.c optional drm dev/drm/drm_drawable.c optional drm dev/drm/drm_drv.c optional drm dev/drm/drm_fops.c optional drm dev/drm/drm_hashtab.c optional drm dev/drm/drm_ioctl.c optional drm dev/drm/drm_irq.c optional drm dev/drm/drm_lock.c optional drm dev/drm/drm_memory.c optional drm dev/drm/drm_mm.c optional drm dev/drm/drm_pci.c optional drm dev/drm/drm_scatter.c optional drm dev/drm/drm_sman.c optional drm dev/drm/drm_sysctl.c optional drm dev/drm/drm_vm.c optional drm dev/drm/i915_dma.c optional i915drm dev/drm/i915_drv.c optional i915drm dev/drm/i915_irq.c optional i915drm dev/drm/i915_mem.c optional i915drm dev/drm/i915_suspend.c optional i915drm dev/drm/mach64_dma.c optional mach64drm dev/drm/mach64_drv.c optional mach64drm dev/drm/mach64_irq.c optional mach64drm dev/drm/mach64_state.c optional mach64drm dev/drm/mga_dma.c optional mgadrm dev/drm/mga_drv.c optional mgadrm dev/drm/mga_irq.c optional mgadrm dev/drm/mga_state.c optional mgadrm dev/drm/mga_warp.c optional mgadrm dev/drm/r128_cce.c optional r128drm \ compile-with "${NORMAL_C} ${NO_WCONSTANT_CONVERSION}" dev/drm/r128_drv.c optional r128drm dev/drm/r128_irq.c optional r128drm dev/drm/r128_state.c optional r128drm dev/drm/r300_cmdbuf.c optional radeondrm dev/drm/r600_blit.c optional radeondrm dev/drm/r600_cp.c optional radeondrm \ compile-with "${NORMAL_C} ${NO_WCONSTANT_CONVERSION}" dev/drm/radeon_cp.c optional radeondrm \ compile-with "${NORMAL_C} ${NO_WCONSTANT_CONVERSION}" dev/drm/radeon_cs.c optional radeondrm dev/drm/radeon_drv.c optional radeondrm dev/drm/radeon_irq.c optional radeondrm dev/drm/radeon_mem.c optional radeondrm dev/drm/radeon_state.c optional radeondrm dev/drm/savage_bci.c optional savagedrm dev/drm/savage_drv.c optional savagedrm dev/drm/savage_state.c optional savagedrm dev/drm/sis_drv.c optional sisdrm dev/drm/sis_ds.c optional sisdrm dev/drm/sis_mm.c optional sisdrm dev/drm/tdfx_drv.c optional tdfxdrm dev/drm/via_dma.c optional viadrm dev/drm/via_dmablit.c optional viadrm dev/drm/via_drv.c optional viadrm dev/drm/via_irq.c optional viadrm dev/drm/via_map.c optional viadrm dev/drm/via_mm.c optional viadrm dev/drm/via_verifier.c optional viadrm dev/drm/via_video.c optional viadrm dev/ed/if_ed.c optional ed dev/ed/if_ed_novell.c optional ed dev/ed/if_ed_rtl80x9.c optional ed dev/ed/if_ed_pccard.c optional ed pccard dev/ed/if_ed_pci.c optional ed pci dev/efidev/efidev.c optional efirt dev/eisa/eisa_if.m standard dev/eisa/eisaconf.c optional eisa dev/e1000/if_em.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/if_lem.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/if_igb.c optional igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_80003es2lan.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_82540.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_82541.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_82542.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_82543.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_82571.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_82575.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_ich8lan.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_i210.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_api.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_mac.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_manage.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_nvm.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_phy.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_vf.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_mbx.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_osdep.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/et/if_et.c optional et dev/en/if_en_pci.c optional en pci dev/en/midway.c optional en dev/ep/if_ep.c optional ep dev/ep/if_ep_eisa.c optional ep eisa dev/ep/if_ep_isa.c optional ep isa dev/ep/if_ep_mca.c optional ep mca dev/ep/if_ep_pccard.c optional ep pccard dev/esp/esp_pci.c optional esp pci dev/esp/ncr53c9x.c optional esp dev/etherswitch/arswitch/arswitch.c optional arswitch dev/etherswitch/arswitch/arswitch_reg.c optional arswitch dev/etherswitch/arswitch/arswitch_phy.c optional arswitch dev/etherswitch/arswitch/arswitch_8216.c optional arswitch dev/etherswitch/arswitch/arswitch_8226.c optional arswitch dev/etherswitch/arswitch/arswitch_8316.c optional arswitch dev/etherswitch/arswitch/arswitch_8327.c optional arswitch dev/etherswitch/arswitch/arswitch_7240.c optional arswitch dev/etherswitch/arswitch/arswitch_9340.c optional arswitch dev/etherswitch/arswitch/arswitch_vlans.c optional arswitch dev/etherswitch/etherswitch.c optional etherswitch dev/etherswitch/etherswitch_if.m optional etherswitch dev/etherswitch/ip17x/ip17x.c optional ip17x dev/etherswitch/ip17x/ip175c.c optional ip17x dev/etherswitch/ip17x/ip175d.c optional ip17x dev/etherswitch/ip17x/ip17x_phy.c optional ip17x dev/etherswitch/ip17x/ip17x_vlans.c optional ip17x dev/etherswitch/miiproxy.c optional miiproxy dev/etherswitch/rtl8366/rtl8366rb.c optional rtl8366rb dev/etherswitch/ukswitch/ukswitch.c optional ukswitch dev/evdev/cdev.c optional evdev dev/evdev/evdev.c optional evdev dev/evdev/evdev_mt.c optional evdev dev/evdev/evdev_utils.c optional evdev dev/evdev/uinput.c optional evdev uinput dev/ex/if_ex.c optional ex dev/ex/if_ex_isa.c optional ex isa dev/ex/if_ex_pccard.c optional ex pccard dev/exca/exca.c optional cbb dev/extres/clk/clk.c optional ext_resources clk dev/extres/clk/clkdev_if.m optional ext_resources clk dev/extres/clk/clknode_if.m optional ext_resources clk dev/extres/clk/clk_bus.c optional ext_resources clk fdt dev/extres/clk/clk_div.c optional ext_resources clk dev/extres/clk/clk_fixed.c optional ext_resources clk dev/extres/clk/clk_gate.c optional ext_resources clk dev/extres/clk/clk_mux.c optional ext_resources clk dev/extres/phy/phy.c optional ext_resources phy dev/extres/phy/phy_if.m optional ext_resources phy dev/extres/hwreset/hwreset.c optional ext_resources hwreset dev/extres/hwreset/hwreset_if.m optional ext_resources hwreset dev/extres/regulator/regdev_if.m optional ext_resources regulator dev/extres/regulator/regnode_if.m optional ext_resources regulator dev/extres/regulator/regulator.c optional ext_resources regulator dev/extres/regulator/regulator_bus.c optional ext_resources regulator fdt dev/extres/regulator/regulator_fixed.c optional ext_resources regulator dev/fatm/if_fatm.c optional fatm pci dev/fb/fbd.c optional fbd | vt dev/fb/fb_if.m standard dev/fb/splash.c optional sc splash dev/fdt/fdt_clock.c optional fdt fdt_clock dev/fdt/fdt_clock_if.m optional fdt fdt_clock dev/fdt/fdt_common.c optional fdt dev/fdt/fdt_pinctrl.c optional fdt fdt_pinctrl dev/fdt/fdt_pinctrl_if.m optional fdt fdt_pinctrl dev/fdt/fdt_slicer.c optional fdt cfi | fdt nand | fdt mx25l dev/fdt/fdt_static_dtb.S optional fdt fdt_dtb_static \ dependency "fdt_dtb_file" dev/fdt/simplebus.c optional fdt dev/fe/if_fe.c optional fe dev/fe/if_fe_pccard.c optional fe pccard dev/filemon/filemon.c optional filemon dev/firewire/firewire.c optional firewire dev/firewire/fwcrom.c optional firewire dev/firewire/fwdev.c optional firewire dev/firewire/fwdma.c optional firewire dev/firewire/fwmem.c optional firewire dev/firewire/fwohci.c optional firewire dev/firewire/fwohci_pci.c optional firewire pci dev/firewire/if_fwe.c optional fwe dev/firewire/if_fwip.c optional fwip dev/firewire/sbp.c optional sbp dev/firewire/sbp_targ.c optional sbp_targ dev/flash/at45d.c optional at45d dev/flash/mx25l.c optional mx25l dev/fxp/if_fxp.c optional fxp dev/fxp/inphy.c optional fxp dev/gem/if_gem.c optional gem dev/gem/if_gem_pci.c optional gem pci dev/gem/if_gem_sbus.c optional gem sbus dev/gpio/gpiobacklight.c optional gpiobacklight fdt dev/gpio/gpiokeys.c optional gpiokeys fdt dev/gpio/gpiokeys_codes.c optional gpiokeys fdt dev/gpio/gpiobus.c optional gpio \ dependency "gpiobus_if.h" dev/gpio/gpioc.c optional gpio \ dependency "gpio_if.h" dev/gpio/gpioiic.c optional gpioiic dev/gpio/gpioled.c optional gpioled dev/gpio/gpioregulator.c optional gpioregulator fdt ext_resources dev/gpio/gpiospi.c optional gpiospi dev/gpio/gpio_if.m optional gpio dev/gpio/gpiobus_if.m optional gpio dev/gpio/gpiopps.c optional gpiopps dev/gpio/ofw_gpiobus.c optional fdt gpio dev/hatm/if_hatm.c optional hatm pci dev/hatm/if_hatm_intr.c optional hatm pci dev/hatm/if_hatm_ioctl.c optional hatm pci dev/hatm/if_hatm_rx.c optional hatm pci dev/hatm/if_hatm_tx.c optional hatm pci dev/hifn/hifn7751.c optional hifn dev/hme/if_hme.c optional hme dev/hme/if_hme_pci.c optional hme pci dev/hme/if_hme_sbus.c optional hme sbus dev/hptiop/hptiop.c optional hptiop scbus dev/hwpmc/hwpmc_logging.c optional hwpmc dev/hwpmc/hwpmc_mod.c optional hwpmc dev/hwpmc/hwpmc_soft.c optional hwpmc dev/ichiic/ig4_iic.c optional ig4 smbus dev/ichiic/ig4_pci.c optional ig4 pci smbus dev/ichsmb/ichsmb.c optional ichsmb dev/ichsmb/ichsmb_pci.c optional ichsmb pci dev/ida/ida.c optional ida dev/ida/ida_disk.c optional ida dev/ida/ida_eisa.c optional ida eisa dev/ida/ida_pci.c optional ida pci dev/iicbus/ad7418.c optional ad7418 dev/iicbus/ds1307.c optional ds1307 dev/iicbus/ds133x.c optional ds133x dev/iicbus/ds1374.c optional ds1374 dev/iicbus/ds1672.c optional ds1672 dev/iicbus/ds3231.c optional ds3231 dev/iicbus/icee.c optional icee dev/iicbus/if_ic.c optional ic dev/iicbus/iic.c optional iic dev/iicbus/iicbb.c optional iicbb dev/iicbus/iicbb_if.m optional iicbb dev/iicbus/iicbus.c optional iicbus dev/iicbus/iicbus_if.m optional iicbus dev/iicbus/iiconf.c optional iicbus dev/iicbus/iicsmb.c optional iicsmb \ dependency "iicbus_if.h" dev/iicbus/iicoc.c optional iicoc dev/iicbus/lm75.c optional lm75 dev/iicbus/ofw_iicbus.c optional fdt iicbus dev/iicbus/pcf8563.c optional pcf8563 dev/iicbus/s35390a.c optional s35390a dev/iir/iir.c optional iir dev/iir/iir_ctrl.c optional iir dev/iir/iir_pci.c optional iir pci dev/intpm/intpm.c optional intpm pci # XXX Work around clang warning, until maintainer approves fix. dev/ips/ips.c optional ips \ compile-with "${NORMAL_C} ${NO_WSOMETIMES_UNINITIALIZED}" dev/ips/ips_commands.c optional ips dev/ips/ips_disk.c optional ips dev/ips/ips_ioctl.c optional ips dev/ips/ips_pci.c optional ips pci dev/ipw/if_ipw.c optional ipw ipwbssfw.c optional ipwbssfw | ipwfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk ipw_bss.fw:ipw_bss:130 -lintel_ipw -mipw_bss -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "ipwbssfw.c" ipw_bss.fwo optional ipwbssfw | ipwfw \ dependency "ipw_bss.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "ipw_bss.fwo" ipw_bss.fw optional ipwbssfw | ipwfw \ dependency "$S/contrib/dev/ipw/ipw2100-1.3.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "ipw_bss.fw" ipwibssfw.c optional ipwibssfw | ipwfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk ipw_ibss.fw:ipw_ibss:130 -lintel_ipw -mipw_ibss -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "ipwibssfw.c" ipw_ibss.fwo optional ipwibssfw | ipwfw \ dependency "ipw_ibss.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "ipw_ibss.fwo" ipw_ibss.fw optional ipwibssfw | ipwfw \ dependency "$S/contrib/dev/ipw/ipw2100-1.3-i.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "ipw_ibss.fw" ipwmonitorfw.c optional ipwmonitorfw | ipwfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk ipw_monitor.fw:ipw_monitor:130 -lintel_ipw -mipw_monitor -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "ipwmonitorfw.c" ipw_monitor.fwo optional ipwmonitorfw | ipwfw \ dependency "ipw_monitor.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "ipw_monitor.fwo" ipw_monitor.fw optional ipwmonitorfw | ipwfw \ dependency "$S/contrib/dev/ipw/ipw2100-1.3-p.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "ipw_monitor.fw" dev/iscsi/icl.c optional iscsi | ctl dev/iscsi/icl_conn_if.m optional iscsi | ctl dev/iscsi/icl_soft.c optional iscsi | ctl dev/iscsi/icl_soft_proxy.c optional iscsi | ctl dev/iscsi/iscsi.c optional iscsi scbus dev/iscsi_initiator/iscsi.c optional iscsi_initiator scbus dev/iscsi_initiator/iscsi_subr.c optional iscsi_initiator scbus dev/iscsi_initiator/isc_cam.c optional iscsi_initiator scbus dev/iscsi_initiator/isc_soc.c optional iscsi_initiator scbus dev/iscsi_initiator/isc_sm.c optional iscsi_initiator scbus dev/iscsi_initiator/isc_subr.c optional iscsi_initiator scbus dev/ismt/ismt.c optional ismt dev/isl/isl.c optional isl smbus dev/isp/isp.c optional isp dev/isp/isp_freebsd.c optional isp dev/isp/isp_library.c optional isp dev/isp/isp_pci.c optional isp pci dev/isp/isp_sbus.c optional isp sbus dev/isp/isp_target.c optional isp dev/ispfw/ispfw.c optional ispfw dev/iwi/if_iwi.c optional iwi iwibssfw.c optional iwibssfw | iwifw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwi_bss.fw:iwi_bss:300 -lintel_iwi -miwi_bss -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwibssfw.c" iwi_bss.fwo optional iwibssfw | iwifw \ dependency "iwi_bss.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwi_bss.fwo" iwi_bss.fw optional iwibssfw | iwifw \ dependency "$S/contrib/dev/iwi/ipw2200-bss.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwi_bss.fw" iwiibssfw.c optional iwiibssfw | iwifw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwi_ibss.fw:iwi_ibss:300 -lintel_iwi -miwi_ibss -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwiibssfw.c" iwi_ibss.fwo optional iwiibssfw | iwifw \ dependency "iwi_ibss.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwi_ibss.fwo" iwi_ibss.fw optional iwiibssfw | iwifw \ dependency "$S/contrib/dev/iwi/ipw2200-ibss.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwi_ibss.fw" iwimonitorfw.c optional iwimonitorfw | iwifw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwi_monitor.fw:iwi_monitor:300 -lintel_iwi -miwi_monitor -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwimonitorfw.c" iwi_monitor.fwo optional iwimonitorfw | iwifw \ dependency "iwi_monitor.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwi_monitor.fwo" iwi_monitor.fw optional iwimonitorfw | iwifw \ dependency "$S/contrib/dev/iwi/ipw2200-sniffer.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwi_monitor.fw" dev/iwm/if_iwm.c optional iwm dev/iwm/if_iwm_binding.c optional iwm dev/iwm/if_iwm_led.c optional iwm dev/iwm/if_iwm_mac_ctxt.c optional iwm dev/iwm/if_iwm_pcie_trans.c optional iwm dev/iwm/if_iwm_phy_ctxt.c optional iwm dev/iwm/if_iwm_phy_db.c optional iwm dev/iwm/if_iwm_power.c optional iwm dev/iwm/if_iwm_scan.c optional iwm dev/iwm/if_iwm_time_event.c optional iwm dev/iwm/if_iwm_util.c optional iwm iwm3160fw.c optional iwm3160fw | iwmfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwm3160.fw:iwm3160fw -miwm3160fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwm3160fw.c" iwm3160fw.fwo optional iwm3160fw | iwmfw \ dependency "iwm3160.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwm3160fw.fwo" iwm3160.fw optional iwm3160fw | iwmfw \ dependency "$S/contrib/dev/iwm/iwm-3160-16.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwm3160.fw" iwm7260fw.c optional iwm7260fw | iwmfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwm7260.fw:iwm7260fw -miwm7260fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwm7260fw.c" iwm7260fw.fwo optional iwm7260fw | iwmfw \ dependency "iwm7260.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwm7260fw.fwo" iwm7260.fw optional iwm7260fw | iwmfw \ dependency "$S/contrib/dev/iwm/iwm-7260-16.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwm7260.fw" iwm7265fw.c optional iwm7265fw | iwmfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwm7265.fw:iwm7265fw -miwm7265fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwm7265fw.c" iwm7265fw.fwo optional iwm7265fw | iwmfw \ dependency "iwm7265.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwm7265fw.fwo" iwm7265.fw optional iwm7265fw | iwmfw \ dependency "$S/contrib/dev/iwm/iwm-7265-16.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwm7265.fw" iwm8000Cfw.c optional iwm8000Cfw | iwmfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwm8000C.fw:iwm8000Cfw -miwm8000Cfw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwm8000Cfw.c" iwm8000Cfw.fwo optional iwm8000Cfw | iwmfw \ dependency "iwm8000C.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwm8000Cfw.fwo" iwm8000C.fw optional iwm8000Cfw | iwmfw \ dependency "$S/contrib/dev/iwm/iwm-8000C-16.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwm8000C.fw" dev/iwn/if_iwn.c optional iwn iwn1000fw.c optional iwn1000fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn1000.fw:iwn1000fw -miwn1000fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn1000fw.c" iwn1000fw.fwo optional iwn1000fw | iwnfw \ dependency "iwn1000.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn1000fw.fwo" iwn1000.fw optional iwn1000fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-1000-39.31.5.1.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn1000.fw" iwn100fw.c optional iwn100fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn100.fw:iwn100fw -miwn100fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn100fw.c" iwn100fw.fwo optional iwn100fw | iwnfw \ dependency "iwn100.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn100fw.fwo" iwn100.fw optional iwn100fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-100-39.31.5.1.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn100.fw" iwn105fw.c optional iwn105fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn105.fw:iwn105fw -miwn105fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn105fw.c" iwn105fw.fwo optional iwn105fw | iwnfw \ dependency "iwn105.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn105fw.fwo" iwn105.fw optional iwn105fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-105-6-18.168.6.1.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn105.fw" iwn135fw.c optional iwn135fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn135.fw:iwn135fw -miwn135fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn135fw.c" iwn135fw.fwo optional iwn135fw | iwnfw \ dependency "iwn135.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn135fw.fwo" iwn135.fw optional iwn135fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-135-6-18.168.6.1.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn135.fw" iwn2000fw.c optional iwn2000fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn2000.fw:iwn2000fw -miwn2000fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn2000fw.c" iwn2000fw.fwo optional iwn2000fw | iwnfw \ dependency "iwn2000.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn2000fw.fwo" iwn2000.fw optional iwn2000fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-2000-18.168.6.1.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn2000.fw" iwn2030fw.c optional iwn2030fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn2030.fw:iwn2030fw -miwn2030fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn2030fw.c" iwn2030fw.fwo optional iwn2030fw | iwnfw \ dependency "iwn2030.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn2030fw.fwo" iwn2030.fw optional iwn2030fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwnwifi-2030-18.168.6.1.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn2030.fw" iwn4965fw.c optional iwn4965fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn4965.fw:iwn4965fw -miwn4965fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn4965fw.c" iwn4965fw.fwo optional iwn4965fw | iwnfw \ dependency "iwn4965.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn4965fw.fwo" iwn4965.fw optional iwn4965fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-4965-228.61.2.24.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn4965.fw" iwn5000fw.c optional iwn5000fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn5000.fw:iwn5000fw -miwn5000fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn5000fw.c" iwn5000fw.fwo optional iwn5000fw | iwnfw \ dependency "iwn5000.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn5000fw.fwo" iwn5000.fw optional iwn5000fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-5000-8.83.5.1.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn5000.fw" iwn5150fw.c optional iwn5150fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn5150.fw:iwn5150fw -miwn5150fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn5150fw.c" iwn5150fw.fwo optional iwn5150fw | iwnfw \ dependency "iwn5150.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn5150fw.fwo" iwn5150.fw optional iwn5150fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-5150-8.24.2.2.fw.uu"\ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn5150.fw" iwn6000fw.c optional iwn6000fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn6000.fw:iwn6000fw -miwn6000fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn6000fw.c" iwn6000fw.fwo optional iwn6000fw | iwnfw \ dependency "iwn6000.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn6000fw.fwo" iwn6000.fw optional iwn6000fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-6000-9.221.4.1.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn6000.fw" iwn6000g2afw.c optional iwn6000g2afw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn6000g2a.fw:iwn6000g2afw -miwn6000g2afw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn6000g2afw.c" iwn6000g2afw.fwo optional iwn6000g2afw | iwnfw \ dependency "iwn6000g2a.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn6000g2afw.fwo" iwn6000g2a.fw optional iwn6000g2afw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-6000g2a-18.168.6.1.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn6000g2a.fw" iwn6000g2bfw.c optional iwn6000g2bfw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn6000g2b.fw:iwn6000g2bfw -miwn6000g2bfw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn6000g2bfw.c" iwn6000g2bfw.fwo optional iwn6000g2bfw | iwnfw \ dependency "iwn6000g2b.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn6000g2bfw.fwo" iwn6000g2b.fw optional iwn6000g2bfw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-6000g2b-18.168.6.1.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn6000g2b.fw" iwn6050fw.c optional iwn6050fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn6050.fw:iwn6050fw -miwn6050fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn6050fw.c" iwn6050fw.fwo optional iwn6050fw | iwnfw \ dependency "iwn6050.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn6050fw.fwo" iwn6050.fw optional iwn6050fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-6050-41.28.5.1.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn6050.fw" dev/ixgb/if_ixgb.c optional ixgb dev/ixgb/ixgb_ee.c optional ixgb dev/ixgb/ixgb_hw.c optional ixgb dev/ixgbe/if_ix.c optional ix inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe -DSMP" dev/ixgbe/if_ixv.c optional ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe -DSMP" dev/ixgbe/ix_txrx.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_osdep.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_phy.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_api.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_common.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_mbx.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_vf.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_82598.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_82599.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_x540.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_x550.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_dcb.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_dcb_82598.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_dcb_82599.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/jme/if_jme.c optional jme pci dev/joy/joy.c optional joy dev/joy/joy_isa.c optional joy isa dev/kbd/kbd.c optional atkbd | pckbd | sc | ukbd | vt dev/kbdmux/kbdmux.c optional kbdmux dev/ksyms/ksyms.c optional ksyms dev/le/am7990.c optional le dev/le/am79900.c optional le dev/le/if_le_pci.c optional le pci dev/le/lance.c optional le dev/led/led.c standard dev/lge/if_lge.c optional lge dev/lmc/if_lmc.c optional lmc dev/malo/if_malo.c optional malo dev/malo/if_malohal.c optional malo dev/malo/if_malo_pci.c optional malo pci dev/mc146818/mc146818.c optional mc146818 dev/mca/mca_bus.c optional mca dev/md/md.c optional md dev/mdio/mdio_if.m optional miiproxy | mdio dev/mdio/mdio.c optional miiproxy | mdio dev/mem/memdev.c optional mem dev/mem/memutil.c optional mem dev/mfi/mfi.c optional mfi dev/mfi/mfi_debug.c optional mfi dev/mfi/mfi_pci.c optional mfi pci dev/mfi/mfi_disk.c optional mfi dev/mfi/mfi_syspd.c optional mfi dev/mfi/mfi_tbolt.c optional mfi dev/mfi/mfi_linux.c optional mfi compat_linux dev/mfi/mfi_cam.c optional mfip scbus dev/mii/acphy.c optional miibus | acphy dev/mii/amphy.c optional miibus | amphy dev/mii/atphy.c optional miibus | atphy dev/mii/axphy.c optional miibus | axphy dev/mii/bmtphy.c optional miibus | bmtphy dev/mii/brgphy.c optional miibus | brgphy dev/mii/ciphy.c optional miibus | ciphy dev/mii/e1000phy.c optional miibus | e1000phy dev/mii/gentbi.c optional miibus | gentbi dev/mii/icsphy.c optional miibus | icsphy dev/mii/ip1000phy.c optional miibus | ip1000phy dev/mii/jmphy.c optional miibus | jmphy dev/mii/lxtphy.c optional miibus | lxtphy dev/mii/micphy.c optional miibus fdt | micphy fdt dev/mii/mii.c optional miibus | mii dev/mii/mii_bitbang.c optional miibus | mii_bitbang dev/mii/mii_physubr.c optional miibus | mii dev/mii/miibus_if.m optional miibus | mii dev/mii/mlphy.c optional miibus | mlphy dev/mii/nsgphy.c optional miibus | nsgphy dev/mii/nsphy.c optional miibus | nsphy dev/mii/nsphyter.c optional miibus | nsphyter dev/mii/pnaphy.c optional miibus | pnaphy dev/mii/qsphy.c optional miibus | qsphy dev/mii/rdcphy.c optional miibus | rdcphy dev/mii/rgephy.c optional miibus | rgephy dev/mii/rlphy.c optional miibus | rlphy dev/mii/rlswitch.c optional rlswitch dev/mii/smcphy.c optional miibus | smcphy dev/mii/smscphy.c optional miibus | smscphy dev/mii/tdkphy.c optional miibus | tdkphy dev/mii/tlphy.c optional miibus | tlphy dev/mii/truephy.c optional miibus | truephy dev/mii/ukphy.c optional miibus | mii dev/mii/ukphy_subr.c optional miibus | mii dev/mii/xmphy.c optional miibus | xmphy dev/mk48txx/mk48txx.c optional mk48txx dev/mlx/mlx.c optional mlx dev/mlx/mlx_disk.c optional mlx dev/mlx/mlx_pci.c optional mlx pci dev/mly/mly.c optional mly dev/mmc/mmc.c optional mmc dev/mmc/mmcbr_if.m standard dev/mmc/mmcbus_if.m standard dev/mmc/mmcsd.c optional mmcsd dev/mn/if_mn.c optional mn pci dev/mpr/mpr.c optional mpr dev/mpr/mpr_config.c optional mpr # XXX Work around clang warning, until maintainer approves fix. dev/mpr/mpr_mapping.c optional mpr \ compile-with "${NORMAL_C} ${NO_WSOMETIMES_UNINITIALIZED}" dev/mpr/mpr_pci.c optional mpr pci dev/mpr/mpr_sas.c optional mpr \ compile-with "${NORMAL_C} ${NO_WUNNEEDED_INTERNAL_DECL}" dev/mpr/mpr_sas_lsi.c optional mpr dev/mpr/mpr_table.c optional mpr dev/mpr/mpr_user.c optional mpr dev/mps/mps.c optional mps dev/mps/mps_config.c optional mps # XXX Work around clang warning, until maintainer approves fix. dev/mps/mps_mapping.c optional mps \ compile-with "${NORMAL_C} ${NO_WSOMETIMES_UNINITIALIZED}" dev/mps/mps_pci.c optional mps pci dev/mps/mps_sas.c optional mps \ compile-with "${NORMAL_C} ${NO_WUNNEEDED_INTERNAL_DECL}" dev/mps/mps_sas_lsi.c optional mps dev/mps/mps_table.c optional mps dev/mps/mps_user.c optional mps dev/mpt/mpt.c optional mpt dev/mpt/mpt_cam.c optional mpt dev/mpt/mpt_debug.c optional mpt dev/mpt/mpt_pci.c optional mpt pci dev/mpt/mpt_raid.c optional mpt dev/mpt/mpt_user.c optional mpt dev/mrsas/mrsas.c optional mrsas dev/mrsas/mrsas_cam.c optional mrsas dev/mrsas/mrsas_ioctl.c optional mrsas dev/mrsas/mrsas_fp.c optional mrsas dev/msk/if_msk.c optional msk dev/mvs/mvs.c optional mvs dev/mvs/mvs_if.m optional mvs dev/mvs/mvs_pci.c optional mvs pci dev/mwl/if_mwl.c optional mwl dev/mwl/if_mwl_pci.c optional mwl pci dev/mwl/mwlhal.c optional mwl mwlfw.c optional mwlfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk mw88W8363.fw:mw88W8363fw mwlboot.fw:mwlboot -mmwl -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "mwlfw.c" mw88W8363.fwo optional mwlfw \ dependency "mw88W8363.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "mw88W8363.fwo" mw88W8363.fw optional mwlfw \ dependency "$S/contrib/dev/mwl/mw88W8363.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "mw88W8363.fw" mwlboot.fwo optional mwlfw \ dependency "mwlboot.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "mwlboot.fwo" mwlboot.fw optional mwlfw \ dependency "$S/contrib/dev/mwl/mwlboot.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "mwlboot.fw" dev/mxge/if_mxge.c optional mxge pci dev/mxge/mxge_eth_z8e.c optional mxge pci dev/mxge/mxge_ethp_z8e.c optional mxge pci dev/mxge/mxge_rss_eth_z8e.c optional mxge pci dev/mxge/mxge_rss_ethp_z8e.c optional mxge pci dev/my/if_my.c optional my dev/nand/nand.c optional nand dev/nand/nand_bbt.c optional nand dev/nand/nand_cdev.c optional nand dev/nand/nand_generic.c optional nand dev/nand/nand_geom.c optional nand dev/nand/nand_id.c optional nand dev/nand/nandbus.c optional nand dev/nand/nandbus_if.m optional nand dev/nand/nand_if.m optional nand dev/nand/nandsim.c optional nandsim nand dev/nand/nandsim_chip.c optional nandsim nand dev/nand/nandsim_ctrl.c optional nandsim nand dev/nand/nandsim_log.c optional nandsim nand dev/nand/nandsim_swap.c optional nandsim nand dev/nand/nfc_if.m optional nand dev/ncr/ncr.c optional ncr pci dev/ncv/ncr53c500.c optional ncv dev/ncv/ncr53c500_pccard.c optional ncv pccard dev/netmap/if_ptnet.c optional netmap dev/netmap/netmap.c optional netmap dev/netmap/netmap_freebsd.c optional netmap dev/netmap/netmap_generic.c optional netmap dev/netmap/netmap_mbq.c optional netmap dev/netmap/netmap_mem2.c optional netmap dev/netmap/netmap_monitor.c optional netmap dev/netmap/netmap_offloadings.c optional netmap dev/netmap/netmap_pipe.c optional netmap dev/netmap/netmap_pt.c optional netmap dev/netmap/netmap_vale.c optional netmap # compile-with "${NORMAL_C} -Wconversion -Wextra" dev/nfsmb/nfsmb.c optional nfsmb pci dev/nge/if_nge.c optional nge dev/nxge/if_nxge.c optional nxge \ compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN}" dev/nxge/xgehal/xgehal-device.c optional nxge \ compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN}" dev/nxge/xgehal/xgehal-mm.c optional nxge dev/nxge/xgehal/xge-queue.c optional nxge dev/nxge/xgehal/xgehal-driver.c optional nxge \ compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN}" dev/nxge/xgehal/xgehal-ring.c optional nxge \ compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN}" dev/nxge/xgehal/xgehal-channel.c optional nxge \ compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN}" dev/nxge/xgehal/xgehal-fifo.c optional nxge \ compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN}" dev/nxge/xgehal/xgehal-stats.c optional nxge \ compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN}" dev/nxge/xgehal/xgehal-config.c optional nxge dev/nxge/xgehal/xgehal-mgmt.c optional nxge \ compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN}" dev/nmdm/nmdm.c optional nmdm dev/nsp/nsp.c optional nsp dev/nsp/nsp_pccard.c optional nsp pccard dev/null/null.c standard dev/oce/oce_hw.c optional oce pci dev/oce/oce_if.c optional oce pci dev/oce/oce_mbox.c optional oce pci dev/oce/oce_queue.c optional oce pci dev/oce/oce_sysctl.c optional oce pci dev/oce/oce_util.c optional oce pci dev/ofw/ofw_bus_if.m optional fdt dev/ofw/ofw_bus_subr.c optional fdt dev/ofw/ofw_cpu.c optional fdt dev/ofw/ofw_fdt.c optional fdt dev/ofw/ofw_if.m optional fdt dev/ofw/ofw_subr.c optional fdt dev/ofw/ofwbus.c optional fdt dev/ofw/openfirm.c optional fdt dev/ofw/openfirmio.c optional fdt dev/ow/ow.c optional ow \ dependency "owll_if.h" \ dependency "own_if.h" dev/ow/owll_if.m optional ow dev/ow/own_if.m optional ow dev/ow/ow_temp.c optional ow_temp dev/ow/owc_gpiobus.c optional owc gpio dev/patm/if_patm.c optional patm pci dev/patm/if_patm_attach.c optional patm pci dev/patm/if_patm_intr.c optional patm pci dev/patm/if_patm_ioctl.c optional patm pci dev/patm/if_patm_rtables.c optional patm pci dev/patm/if_patm_rx.c optional patm pci dev/patm/if_patm_tx.c optional patm pci dev/pbio/pbio.c optional pbio isa dev/pccard/card_if.m standard dev/pccard/pccard.c optional pccard dev/pccard/pccard_cis.c optional pccard dev/pccard/pccard_cis_quirks.c optional pccard dev/pccard/pccard_device.c optional pccard dev/pccard/power_if.m standard dev/pccbb/pccbb.c optional cbb dev/pccbb/pccbb_isa.c optional cbb isa dev/pccbb/pccbb_pci.c optional cbb pci dev/pcf/pcf.c optional pcf dev/pci/eisa_pci.c optional pci eisa dev/pci/fixup_pci.c optional pci dev/pci/hostb_pci.c optional pci dev/pci/ignore_pci.c optional pci dev/pci/isa_pci.c optional pci isa dev/pci/pci.c optional pci dev/pci/pci_if.m standard dev/pci/pci_iov.c optional pci pci_iov dev/pci/pci_iov_if.m standard dev/pci/pci_iov_schema.c optional pci pci_iov dev/pci/pci_pci.c optional pci dev/pci/pci_subr.c optional pci dev/pci/pci_user.c optional pci dev/pci/pcib_if.m standard dev/pci/pcib_support.c standard dev/pci/vga_pci.c optional pci dev/pcn/if_pcn.c optional pcn pci dev/pdq/if_fea.c optional fea eisa dev/pdq/if_fpa.c optional fpa pci dev/pdq/pdq.c optional nowerror fea eisa | fpa pci dev/pdq/pdq_ifsubr.c optional nowerror fea eisa | fpa pci dev/pms/freebsd/driver/ini/src/agtiapi.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/sadisc.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/mpi.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/saframe.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/sahw.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/sainit.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/saint.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/sampicmd.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/sampirsp.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/saphy.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/saport.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/sasata.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/sasmp.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/sassp.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/satimer.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/sautil.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/saioctlcmd.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/mpidebug.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/discovery/dm/dminit.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/discovery/dm/dmsmp.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/discovery/dm/dmdisc.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/discovery/dm/dmport.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/discovery/dm/dmtimer.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/discovery/dm/dmmisc.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sat/src/sminit.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sat/src/smmisc.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sat/src/smsat.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sat/src/smsatcb.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sat/src/smsathw.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sat/src/smtimer.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tdinit.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tdmisc.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tdesgl.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tdport.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tdint.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tdioctl.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tdhw.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/ossacmnapi.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tddmcmnapi.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tdsmcmnapi.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tdtimers.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/sas/ini/itdio.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/sas/ini/itdcb.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/sas/ini/itdinit.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/sas/ini/itddisc.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/sata/host/sat.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/sata/host/ossasat.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/sata/host/sathw.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/ppbus/if_plip.c optional plip dev/ppbus/immio.c optional vpo dev/ppbus/lpbb.c optional lpbb dev/ppbus/lpt.c optional lpt dev/ppbus/pcfclock.c optional pcfclock dev/ppbus/ppb_1284.c optional ppbus dev/ppbus/ppb_base.c optional ppbus dev/ppbus/ppb_msq.c optional ppbus dev/ppbus/ppbconf.c optional ppbus dev/ppbus/ppbus_if.m optional ppbus dev/ppbus/ppi.c optional ppi dev/ppbus/pps.c optional pps dev/ppbus/vpo.c optional vpo dev/ppbus/vpoio.c optional vpo dev/ppc/ppc.c optional ppc dev/ppc/ppc_acpi.c optional ppc acpi dev/ppc/ppc_isa.c optional ppc isa dev/ppc/ppc_pci.c optional ppc pci dev/ppc/ppc_puc.c optional ppc puc dev/proto/proto_bus_isa.c optional proto acpi | proto isa dev/proto/proto_bus_pci.c optional proto pci dev/proto/proto_busdma.c optional proto dev/proto/proto_core.c optional proto dev/pst/pst-iop.c optional pst dev/pst/pst-pci.c optional pst pci dev/pst/pst-raid.c optional pst dev/pty/pty.c optional pty dev/puc/puc.c optional puc dev/puc/puc_cfg.c optional puc dev/puc/puc_pccard.c optional puc pccard dev/puc/puc_pci.c optional puc pci dev/puc/pucdata.c optional puc pci dev/quicc/quicc_core.c optional quicc dev/ral/rt2560.c optional ral dev/ral/rt2661.c optional ral dev/ral/rt2860.c optional ral dev/ral/if_ral_pci.c optional ral pci rt2561fw.c optional rt2561fw | ralfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk rt2561.fw:rt2561fw -mrt2561 -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "rt2561fw.c" rt2561fw.fwo optional rt2561fw | ralfw \ dependency "rt2561.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rt2561fw.fwo" rt2561.fw optional rt2561fw | ralfw \ dependency "$S/contrib/dev/ral/rt2561.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "rt2561.fw" rt2561sfw.c optional rt2561sfw | ralfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk rt2561s.fw:rt2561sfw -mrt2561s -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "rt2561sfw.c" rt2561sfw.fwo optional rt2561sfw | ralfw \ dependency "rt2561s.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rt2561sfw.fwo" rt2561s.fw optional rt2561sfw | ralfw \ dependency "$S/contrib/dev/ral/rt2561s.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "rt2561s.fw" rt2661fw.c optional rt2661fw | ralfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk rt2661.fw:rt2661fw -mrt2661 -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "rt2661fw.c" rt2661fw.fwo optional rt2661fw | ralfw \ dependency "rt2661.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rt2661fw.fwo" rt2661.fw optional rt2661fw | ralfw \ dependency "$S/contrib/dev/ral/rt2661.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "rt2661.fw" rt2860fw.c optional rt2860fw | ralfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk rt2860.fw:rt2860fw -mrt2860 -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "rt2860fw.c" rt2860fw.fwo optional rt2860fw | ralfw \ dependency "rt2860.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rt2860fw.fwo" rt2860.fw optional rt2860fw | ralfw \ dependency "$S/contrib/dev/ral/rt2860.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "rt2860.fw" dev/random/random_infra.c optional random dev/random/random_harvestq.c optional random dev/random/randomdev.c optional random random_yarrow | \ random !random_yarrow !random_loadable dev/random/yarrow.c optional random random_yarrow dev/random/fortuna.c optional random !random_yarrow !random_loadable dev/random/hash.c optional random random_yarrow | \ random !random_yarrow !random_loadable dev/rc/rc.c optional rc dev/rccgpio/rccgpio.c optional rccgpio gpio dev/re/if_re.c optional re dev/rl/if_rl.c optional rl pci dev/rndtest/rndtest.c optional rndtest dev/rp/rp.c optional rp dev/rp/rp_isa.c optional rp isa dev/rp/rp_pci.c optional rp pci +# dev/rtwn/if_rtwn.c optional rtwn +dev/rtwn/if_rtwn_beacon.c optional rtwn +dev/rtwn/if_rtwn_calib.c optional rtwn +dev/rtwn/if_rtwn_cam.c optional rtwn +dev/rtwn/if_rtwn_efuse.c optional rtwn +dev/rtwn/if_rtwn_fw.c optional rtwn +dev/rtwn/if_rtwn_rx.c optional rtwn +dev/rtwn/if_rtwn_task.c optional rtwn +dev/rtwn/if_rtwn_tx.c optional rtwn +# +dev/rtwn/pci/rtwn_pci_attach.c optional rtwn_pci pci +dev/rtwn/pci/rtwn_pci_reg.c optional rtwn_pci pci +dev/rtwn/pci/rtwn_pci_rx.c optional rtwn_pci pci +dev/rtwn/pci/rtwn_pci_tx.c optional rtwn_pci pci +# +dev/rtwn/usb/rtwn_usb_attach.c optional rtwn_usb +dev/rtwn/usb/rtwn_usb_ep.c optional rtwn_usb +dev/rtwn/usb/rtwn_usb_reg.c optional rtwn_usb +dev/rtwn/usb/rtwn_usb_rx.c optional rtwn_usb +dev/rtwn/usb/rtwn_usb_tx.c optional rtwn_usb +# RTL8188E +dev/rtwn/rtl8188e/r88e_beacon.c optional rtwn +dev/rtwn/rtl8188e/r88e_calib.c optional rtwn +dev/rtwn/rtl8188e/r88e_chan.c optional rtwn +dev/rtwn/rtl8188e/r88e_fw.c optional rtwn +dev/rtwn/rtl8188e/r88e_init.c optional rtwn +dev/rtwn/rtl8188e/r88e_led.c optional rtwn +dev/rtwn/rtl8188e/r88e_tx.c optional rtwn +dev/rtwn/rtl8188e/r88e_rf.c optional rtwn +dev/rtwn/rtl8188e/r88e_rom.c optional rtwn +dev/rtwn/rtl8188e/r88e_rx.c optional rtwn +dev/rtwn/rtl8188e/usb/r88eu_attach.c optional rtwn_usb +dev/rtwn/rtl8188e/usb/r88eu_init.c optional rtwn_usb +dev/rtwn/rtl8188e/usb/r88eu_rx.c optional rtwn_usb +# RTL8192C +dev/rtwn/rtl8192c/r92c_attach.c optional rtwn +dev/rtwn/rtl8192c/r92c_beacon.c optional rtwn +dev/rtwn/rtl8192c/r92c_calib.c optional rtwn +dev/rtwn/rtl8192c/r92c_chan.c optional rtwn +dev/rtwn/rtl8192c/r92c_fw.c optional rtwn +dev/rtwn/rtl8192c/r92c_init.c optional rtwn +dev/rtwn/rtl8192c/r92c_rf.c optional rtwn +dev/rtwn/rtl8192c/r92c_rom.c optional rtwn +dev/rtwn/rtl8192c/r92c_rx.c optional rtwn +dev/rtwn/rtl8192c/r92c_tx.c optional rtwn +dev/rtwn/rtl8192c/pci/r92ce_attach.c optional rtwn_pci pci +dev/rtwn/rtl8192c/pci/r92ce_calib.c optional rtwn_pci pci +dev/rtwn/rtl8192c/pci/r92ce_fw.c optional rtwn_pci pci +dev/rtwn/rtl8192c/pci/r92ce_init.c optional rtwn_pci pci +dev/rtwn/rtl8192c/pci/r92ce_led.c optional rtwn_pci pci +dev/rtwn/rtl8192c/pci/r92ce_rx.c optional rtwn_pci pci +dev/rtwn/rtl8192c/pci/r92ce_tx.c optional rtwn_pci pci +dev/rtwn/rtl8192c/usb/r92cu_attach.c optional rtwn_usb +dev/rtwn/rtl8192c/usb/r92cu_init.c optional rtwn_usb +dev/rtwn/rtl8192c/usb/r92cu_led.c optional rtwn_usb +dev/rtwn/rtl8192c/usb/r92cu_rx.c optional rtwn_usb +dev/rtwn/rtl8192c/usb/r92cu_tx.c optional rtwn_usb +# RTL8812A +dev/rtwn/rtl8812a/r12a_beacon.c optional rtwn +dev/rtwn/rtl8812a/r12a_calib.c optional rtwn +dev/rtwn/rtl8812a/r12a_caps.c optional rtwn +dev/rtwn/rtl8812a/r12a_chan.c optional rtwn +dev/rtwn/rtl8812a/r12a_fw.c optional rtwn +dev/rtwn/rtl8812a/r12a_init.c optional rtwn +dev/rtwn/rtl8812a/r12a_led.c optional rtwn +dev/rtwn/rtl8812a/r12a_rf.c optional rtwn +dev/rtwn/rtl8812a/r12a_rom.c optional rtwn +dev/rtwn/rtl8812a/r12a_rx.c optional rtwn +dev/rtwn/rtl8812a/r12a_tx.c optional rtwn +dev/rtwn/rtl8812a/usb/r12au_attach.c optional rtwn_usb +dev/rtwn/rtl8812a/usb/r12au_init.c optional rtwn_usb +dev/rtwn/rtl8812a/usb/r12au_rx.c optional rtwn_usb +dev/rtwn/rtl8812a/usb/r12au_tx.c optional rtwn_usb +# RTL8821A +dev/rtwn/rtl8821a/r21a_beacon.c optional rtwn +dev/rtwn/rtl8821a/r21a_calib.c optional rtwn +dev/rtwn/rtl8821a/r21a_chan.c optional rtwn +dev/rtwn/rtl8821a/r21a_fw.c optional rtwn +dev/rtwn/rtl8821a/r21a_init.c optional rtwn +dev/rtwn/rtl8821a/r21a_led.c optional rtwn +dev/rtwn/rtl8821a/r21a_rom.c optional rtwn +dev/rtwn/rtl8821a/r21a_rx.c optional rtwn +dev/rtwn/rtl8821a/usb/r21au_attach.c optional rtwn_usb +dev/rtwn/rtl8821a/usb/r21au_init.c optional rtwn_usb +rtwn-rtl8188eufw.c optional rtwn-rtl8188eufw | rtwnfw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk rtwn-rtl8188eufw.fw:rtwn-rtl8188eufw:111 -mrtwn-rtl8188eufw -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "rtwn-rtl8188eufw.c" +rtwn-rtl8188eufw.fwo optional rtwn-rtl8188eufw | rtwnfw \ + dependency "rtwn-rtl8188eufw.fw" \ + compile-with "${NORMAL_FWO}" \ + no-implicit-rule \ + clean "rtwn-rtl8188eufw.fwo" +rtwn-rtl8188eufw.fw optional rtwn-rtl8188eufw | rtwnfw \ + dependency "$S/contrib/dev/rtwn/rtwn-rtl8188eufw.fw.uu" \ + compile-with "${NORMAL_FW}" \ + no-obj no-implicit-rule \ + clean "rtwn-rtl8188eufw.fw" +rtwn-rtl8192cfwE.c optional rtwn-rtl8192cfwE | rtwnfw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk rtwn-rtl8192cfwE.fw:rtwn-rtl8192cfwE:111 -mrtwn-rtl8192cfwE -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "rtwn-rtl8192cfwE.c" +rtwn-rtl8192cfwE.fwo optional rtwn-rtl8192cfwE | rtwnfw \ + dependency "rtwn-rtl8192cfwE.fw" \ + compile-with "${NORMAL_FWO}" \ + no-implicit-rule \ + clean "rtwn-rtl8192cfwE.fwo" +rtwn-rtl8192cfwE.fw optional rtwn-rtl8192cfwE | rtwnfw \ + dependency "$S/contrib/dev/rtwn/rtwn-rtl8192cfwE.fw.uu" \ + compile-with "${NORMAL_FW}" \ + no-obj no-implicit-rule \ + clean "rtwn-rtl8192cfwE.fw" +rtwn-rtl8192cfwE_B.c optional rtwn-rtl8192cfwE_B | rtwnfw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk rtwn-rtl8192cfwE_B.fw:rtwn-rtl8192cfwE_B:111 -mrtwn-rtl8192cfwE_B -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "rtwn-rtl8192cfwE_B.c" +rtwn-rtl8192cfwE_B.fwo optional rtwn-rtl8192cfwE_B | rtwnfw \ + dependency "rtwn-rtl8192cfwE_B.fw" \ + compile-with "${NORMAL_FWO}" \ + no-implicit-rule \ + clean "rtwn-rtl8192cfwE_B.fwo" +rtwn-rtl8192cfwE_B.fw optional rtwn-rtl8192cfwE_B | rtwnfw \ + dependency "$S/contrib/dev/rtwn/rtwn-rtl8192cfwE_B.fw.uu" \ + compile-with "${NORMAL_FW}" \ + no-obj no-implicit-rule \ + clean "rtwn-rtl8192cfwE_B.fw" +rtwn-rtl8192cfwT.c optional rtwn-rtl8192cfwT | rtwnfw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk rtwn-rtl8192cfwT.fw:rtwn-rtl8192cfwT:111 -mrtwn-rtl8192cfwT -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "rtwn-rtl8192cfwT.c" +rtwn-rtl8192cfwT.fwo optional rtwn-rtl8192cfwT | rtwnfw \ + dependency "rtwn-rtl8192cfwT.fw" \ + compile-with "${NORMAL_FWO}" \ + no-implicit-rule \ + clean "rtwn-rtl8192cfwT.fwo" +rtwn-rtl8192cfwT.fw optional rtwn-rtl8192cfwT | rtwnfw \ + dependency "$S/contrib/dev/rtwn/rtwn-rtl8192cfwT.fw.uu" \ + compile-with "${NORMAL_FW}" \ + no-obj no-implicit-rule \ + clean "rtwn-rtl8192cfwT.fw" rtwn-rtl8192cfwU.c optional rtwn-rtl8192cfwU | rtwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk rtwn-rtl8192cfwU.fw:rtwn-rtl8192cfwU:111 -mrtwn-rtl8192cfwU -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "rtwn-rtl8192cfwU.c" rtwn-rtl8192cfwU.fwo optional rtwn-rtl8192cfwU | rtwnfw \ dependency "rtwn-rtl8192cfwU.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rtwn-rtl8192cfwU.fwo" rtwn-rtl8192cfwU.fw optional rtwn-rtl8192cfwU | rtwnfw \ dependency "$S/contrib/dev/rtwn/rtwn-rtl8192cfwU.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "rtwn-rtl8192cfwU.fw" -rtwn-rtl8192cfwU_B.c optional rtwn-rtl8192cfwU_B | rtwnfw \ - compile-with "${AWK} -f $S/tools/fw_stub.awk rtwn-rtl8192cfwU_B.fw:rtwn-rtl8192cfwU_B:111 -mrtwn-rtl8192cfwU_B -c${.TARGET}" \ +rtwn-rtl8812aufw.c optional rtwn-rtl8812aufw | rtwnfw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk rtwn-rtl8812aufw.fw:rtwn-rtl8812aufw:111 -mrtwn-rtl8812aufw -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "rtwn-rtl8812aufw.c" +rtwn-rtl8812aufw.fwo optional rtwn-rtl8812aufw | rtwnfw \ + dependency "rtwn-rtl8812aufw.fw" \ + compile-with "${NORMAL_FWO}" \ + no-implicit-rule \ + clean "rtwn-rtl8812aufw.fwo" +rtwn-rtl8812aufw.fw optional rtwn-rtl8812aufw | rtwnfw \ + dependency "$S/contrib/dev/rtwn/rtwn-rtl8812aufw.fw.uu" \ + compile-with "${NORMAL_FW}" \ + no-obj no-implicit-rule \ + clean "rtwn-rtl8812aufw.fw" +rtwn-rtl8821aufw.c optional rtwn-rtl8821aufw | rtwnfw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk rtwn-rtl8821aufw.fw:rtwn-rtl8821aufw:111 -mrtwn-rtl8821aufw -c${.TARGET}" \ no-implicit-rule before-depend local \ - clean "rtwn-rtl8192cfwU_B.c" -rtwn-rtl8192cfwU_B.fwo optional rtwn-rtl8192cfwU_B | rtwnfw \ - dependency "rtwn-rtl8192cfwU_B.fw" \ + clean "rtwn-rtl8821aufw.c" +rtwn-rtl8821aufw.fwo optional rtwn-rtl8821aufw | rtwnfw \ + dependency "rtwn-rtl8821aufw.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ - clean "rtwn-rtl8192cfwU_B.fwo" -rtwn-rtl8192cfwU_B.fw optional rtwn-rtl8192cfwU_B | rtwnfw \ - dependency "$S/contrib/dev/rtwn/rtwn-rtl8192cfwU_B.fw.uu" \ + clean "rtwn-rtl8821aufw.fwo" +rtwn-rtl8821aufw.fw optional rtwn-rtl8821aufw | rtwnfw \ + dependency "$S/contrib/dev/rtwn/rtwn-rtl8821aufw.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ - clean "rtwn-rtl8192cfwU_B.fw" + clean "rtwn-rtl8821aufw.fw" dev/safe/safe.c optional safe dev/scc/scc_if.m optional scc dev/scc/scc_bfe_ebus.c optional scc ebus dev/scc/scc_bfe_quicc.c optional scc quicc dev/scc/scc_bfe_sbus.c optional scc fhc | scc sbus dev/scc/scc_core.c optional scc dev/scc/scc_dev_quicc.c optional scc quicc dev/scc/scc_dev_sab82532.c optional scc dev/scc/scc_dev_z8530.c optional scc dev/sdhci/sdhci.c optional sdhci dev/sdhci/sdhci_if.m optional sdhci dev/sdhci/sdhci_pci.c optional sdhci pci dev/sf/if_sf.c optional sf pci dev/sge/if_sge.c optional sge pci dev/siba/siba_bwn.c optional siba_bwn pci dev/siba/siba_core.c optional siba_bwn pci dev/siis/siis.c optional siis pci dev/sis/if_sis.c optional sis pci dev/sk/if_sk.c optional sk pci dev/smbus/smb.c optional smb dev/smbus/smbconf.c optional smbus dev/smbus/smbus.c optional smbus dev/smbus/smbus_if.m optional smbus dev/smc/if_smc.c optional smc dev/smc/if_smc_fdt.c optional smc fdt dev/sn/if_sn.c optional sn dev/sn/if_sn_isa.c optional sn isa dev/sn/if_sn_pccard.c optional sn pccard dev/snp/snp.c optional snp dev/sound/clone.c optional sound dev/sound/unit.c optional sound dev/sound/isa/ad1816.c optional snd_ad1816 isa dev/sound/isa/ess.c optional snd_ess isa dev/sound/isa/gusc.c optional snd_gusc isa dev/sound/isa/mss.c optional snd_mss isa dev/sound/isa/sb16.c optional snd_sb16 isa dev/sound/isa/sb8.c optional snd_sb8 isa dev/sound/isa/sbc.c optional snd_sbc isa dev/sound/isa/sndbuf_dma.c optional sound isa dev/sound/pci/als4000.c optional snd_als4000 pci dev/sound/pci/atiixp.c optional snd_atiixp pci dev/sound/pci/cmi.c optional snd_cmi pci dev/sound/pci/cs4281.c optional snd_cs4281 pci dev/sound/pci/csa.c optional snd_csa pci dev/sound/pci/csapcm.c optional snd_csa pci dev/sound/pci/ds1.c optional snd_ds1 pci dev/sound/pci/emu10k1.c optional snd_emu10k1 pci dev/sound/pci/emu10kx.c optional snd_emu10kx pci dev/sound/pci/emu10kx-pcm.c optional snd_emu10kx pci dev/sound/pci/emu10kx-midi.c optional snd_emu10kx pci dev/sound/pci/envy24.c optional snd_envy24 pci dev/sound/pci/envy24ht.c optional snd_envy24ht pci dev/sound/pci/es137x.c optional snd_es137x pci dev/sound/pci/fm801.c optional snd_fm801 pci dev/sound/pci/ich.c optional snd_ich pci dev/sound/pci/maestro.c optional snd_maestro pci dev/sound/pci/maestro3.c optional snd_maestro3 pci dev/sound/pci/neomagic.c optional snd_neomagic pci dev/sound/pci/solo.c optional snd_solo pci dev/sound/pci/spicds.c optional snd_spicds pci dev/sound/pci/t4dwave.c optional snd_t4dwave pci dev/sound/pci/via8233.c optional snd_via8233 pci dev/sound/pci/via82c686.c optional snd_via82c686 pci dev/sound/pci/vibes.c optional snd_vibes pci dev/sound/pci/hda/hdaa.c optional snd_hda pci dev/sound/pci/hda/hdaa_patches.c optional snd_hda pci dev/sound/pci/hda/hdac.c optional snd_hda pci dev/sound/pci/hda/hdac_if.m optional snd_hda pci dev/sound/pci/hda/hdacc.c optional snd_hda pci dev/sound/pci/hdspe.c optional snd_hdspe pci dev/sound/pci/hdspe-pcm.c optional snd_hdspe pci dev/sound/pcm/ac97.c optional sound dev/sound/pcm/ac97_if.m optional sound dev/sound/pcm/ac97_patch.c optional sound dev/sound/pcm/buffer.c optional sound \ dependency "snd_fxdiv_gen.h" dev/sound/pcm/channel.c optional sound dev/sound/pcm/channel_if.m optional sound dev/sound/pcm/dsp.c optional sound dev/sound/pcm/feeder.c optional sound dev/sound/pcm/feeder_chain.c optional sound dev/sound/pcm/feeder_eq.c optional sound \ dependency "feeder_eq_gen.h" \ dependency "snd_fxdiv_gen.h" dev/sound/pcm/feeder_if.m optional sound dev/sound/pcm/feeder_format.c optional sound \ dependency "snd_fxdiv_gen.h" dev/sound/pcm/feeder_matrix.c optional sound \ dependency "snd_fxdiv_gen.h" dev/sound/pcm/feeder_mixer.c optional sound \ dependency "snd_fxdiv_gen.h" dev/sound/pcm/feeder_rate.c optional sound \ dependency "feeder_rate_gen.h" \ dependency "snd_fxdiv_gen.h" dev/sound/pcm/feeder_volume.c optional sound \ dependency "snd_fxdiv_gen.h" dev/sound/pcm/mixer.c optional sound dev/sound/pcm/mixer_if.m optional sound dev/sound/pcm/sndstat.c optional sound dev/sound/pcm/sound.c optional sound dev/sound/pcm/vchan.c optional sound dev/sound/usb/uaudio.c optional snd_uaudio usb dev/sound/usb/uaudio_pcm.c optional snd_uaudio usb dev/sound/midi/midi.c optional sound dev/sound/midi/mpu401.c optional sound dev/sound/midi/mpu_if.m optional sound dev/sound/midi/mpufoi_if.m optional sound dev/sound/midi/sequencer.c optional sound dev/sound/midi/synth_if.m optional sound dev/spibus/ofw_spibus.c optional fdt spibus dev/spibus/spibus.c optional spibus \ dependency "spibus_if.h" dev/spibus/spigen.c optional spigen dev/spibus/spibus_if.m optional spibus dev/ste/if_ste.c optional ste pci dev/stg/tmc18c30.c optional stg dev/stg/tmc18c30_isa.c optional stg isa dev/stg/tmc18c30_pccard.c optional stg pccard dev/stg/tmc18c30_pci.c optional stg pci dev/stg/tmc18c30_subr.c optional stg dev/stge/if_stge.c optional stge dev/streams/streams.c optional streams dev/sym/sym_hipd.c optional sym \ dependency "$S/dev/sym/sym_{conf,defs}.h" dev/syscons/blank/blank_saver.c optional blank_saver dev/syscons/daemon/daemon_saver.c optional daemon_saver dev/syscons/dragon/dragon_saver.c optional dragon_saver dev/syscons/fade/fade_saver.c optional fade_saver dev/syscons/fire/fire_saver.c optional fire_saver dev/syscons/green/green_saver.c optional green_saver dev/syscons/logo/logo.c optional logo_saver dev/syscons/logo/logo_saver.c optional logo_saver dev/syscons/rain/rain_saver.c optional rain_saver dev/syscons/schistory.c optional sc dev/syscons/scmouse.c optional sc dev/syscons/scterm.c optional sc dev/syscons/scvidctl.c optional sc dev/syscons/snake/snake_saver.c optional snake_saver dev/syscons/star/star_saver.c optional star_saver dev/syscons/syscons.c optional sc dev/syscons/sysmouse.c optional sc dev/syscons/warp/warp_saver.c optional warp_saver dev/tdfx/tdfx_linux.c optional tdfx_linux tdfx compat_linux dev/tdfx/tdfx_pci.c optional tdfx pci dev/ti/if_ti.c optional ti pci dev/tl/if_tl.c optional tl pci dev/trm/trm.c optional trm dev/twa/tw_cl_init.c optional twa \ compile-with "${NORMAL_C} -I$S/dev/twa" dev/twa/tw_cl_intr.c optional twa \ compile-with "${NORMAL_C} -I$S/dev/twa" dev/twa/tw_cl_io.c optional twa \ compile-with "${NORMAL_C} -I$S/dev/twa" dev/twa/tw_cl_misc.c optional twa \ compile-with "${NORMAL_C} -I$S/dev/twa" dev/twa/tw_osl_cam.c optional twa \ compile-with "${NORMAL_C} -I$S/dev/twa" dev/twa/tw_osl_freebsd.c optional twa \ compile-with "${NORMAL_C} -I$S/dev/twa" dev/twe/twe.c optional twe dev/twe/twe_freebsd.c optional twe dev/tws/tws.c optional tws dev/tws/tws_cam.c optional tws dev/tws/tws_hdm.c optional tws dev/tws/tws_services.c optional tws dev/tws/tws_user.c optional tws dev/tx/if_tx.c optional tx dev/txp/if_txp.c optional txp dev/uart/uart_bus_acpi.c optional uart acpi dev/uart/uart_bus_ebus.c optional uart ebus dev/uart/uart_bus_fdt.c optional uart fdt dev/uart/uart_bus_isa.c optional uart isa dev/uart/uart_bus_pccard.c optional uart pccard dev/uart/uart_bus_pci.c optional uart pci dev/uart/uart_bus_puc.c optional uart puc dev/uart/uart_bus_scc.c optional uart scc dev/uart/uart_core.c optional uart dev/uart/uart_dbg.c optional uart gdb dev/uart/uart_dev_ns8250.c optional uart uart_ns8250 | uart uart_snps dev/uart/uart_dev_pl011.c optional uart pl011 dev/uart/uart_dev_quicc.c optional uart quicc dev/uart/uart_dev_sab82532.c optional uart uart_sab82532 dev/uart/uart_dev_sab82532.c optional uart scc dev/uart/uart_dev_snps.c optional uart uart_snps dev/uart/uart_dev_z8530.c optional uart uart_z8530 dev/uart/uart_dev_z8530.c optional uart scc dev/uart/uart_if.m optional uart dev/uart/uart_subr.c optional uart dev/uart/uart_tty.c optional uart dev/ubsec/ubsec.c optional ubsec # # USB controller drivers # dev/usb/controller/at91dci.c optional at91dci dev/usb/controller/at91dci_atmelarm.c optional at91dci at91rm9200 dev/usb/controller/musb_otg.c optional musb dev/usb/controller/musb_otg_atmelarm.c optional musb at91rm9200 dev/usb/controller/dwc_otg.c optional dwcotg dev/usb/controller/dwc_otg_fdt.c optional dwcotg fdt dev/usb/controller/ehci.c optional ehci dev/usb/controller/ehci_pci.c optional ehci pci dev/usb/controller/ohci.c optional ohci dev/usb/controller/ohci_pci.c optional ohci pci dev/usb/controller/uhci.c optional uhci dev/usb/controller/uhci_pci.c optional uhci pci dev/usb/controller/xhci.c optional xhci dev/usb/controller/xhci_pci.c optional xhci pci dev/usb/controller/saf1761_otg.c optional saf1761otg dev/usb/controller/saf1761_otg_fdt.c optional saf1761otg fdt dev/usb/controller/uss820dci.c optional uss820dci dev/usb/controller/uss820dci_atmelarm.c optional uss820dci at91rm9200 dev/usb/controller/usb_controller.c optional usb # # USB storage drivers # dev/usb/storage/umass.c optional umass dev/usb/storage/urio.c optional urio dev/usb/storage/ustorage_fs.c optional usfs # # USB core # dev/usb/usb_busdma.c optional usb dev/usb/usb_core.c optional usb dev/usb/usb_debug.c optional usb dev/usb/usb_dev.c optional usb dev/usb/usb_device.c optional usb dev/usb/usb_dynamic.c optional usb dev/usb/usb_error.c optional usb dev/usb/usb_generic.c optional usb dev/usb/usb_handle_request.c optional usb dev/usb/usb_hid.c optional usb dev/usb/usb_hub.c optional usb dev/usb/usb_if.m optional usb dev/usb/usb_lookup.c optional usb dev/usb/usb_mbuf.c optional usb dev/usb/usb_msctest.c optional usb dev/usb/usb_parse.c optional usb dev/usb/usb_pf.c optional usb dev/usb/usb_process.c optional usb dev/usb/usb_request.c optional usb dev/usb/usb_transfer.c optional usb dev/usb/usb_util.c optional usb # # USB network drivers # dev/usb/net/if_aue.c optional aue dev/usb/net/if_axe.c optional axe dev/usb/net/if_axge.c optional axge dev/usb/net/if_cdce.c optional cdce dev/usb/net/if_cue.c optional cue dev/usb/net/if_ipheth.c optional ipheth dev/usb/net/if_kue.c optional kue dev/usb/net/if_mos.c optional mos dev/usb/net/if_rue.c optional rue dev/usb/net/if_smsc.c optional smsc dev/usb/net/if_udav.c optional udav dev/usb/net/if_ure.c optional ure dev/usb/net/if_usie.c optional usie dev/usb/net/if_urndis.c optional urndis dev/usb/net/ruephy.c optional rue dev/usb/net/usb_ethernet.c optional uether | aue | axe | axge | cdce | \ cue | ipheth | kue | mos | rue | \ smsc | udav | ure | urndis dev/usb/net/uhso.c optional uhso # # USB WLAN drivers # dev/usb/wlan/if_rsu.c optional rsu rsu-rtl8712fw.c optional rsu-rtl8712fw | rsufw \ compile-with "${AWK} -f $S/tools/fw_stub.awk rsu-rtl8712fw.fw:rsu-rtl8712fw:120 -mrsu-rtl8712fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "rsu-rtl8712fw.c" rsu-rtl8712fw.fwo optional rsu-rtl8712fw | rsufw \ dependency "rsu-rtl8712fw.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rsu-rtl8712fw.fwo" rsu-rtl8712fw.fw optional rsu-rtl8712.fw | rsufw \ dependency "$S/contrib/dev/rsu/rsu-rtl8712fw.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "rsu-rtl8712fw.fw" dev/usb/wlan/if_rum.c optional rum dev/usb/wlan/if_run.c optional run runfw.c optional runfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk run.fw:runfw -mrunfw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "runfw.c" runfw.fwo optional runfw \ dependency "run.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "runfw.fwo" run.fw optional runfw \ dependency "$S/contrib/dev/run/rt2870.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "run.fw" dev/usb/wlan/if_uath.c optional uath dev/usb/wlan/if_upgt.c optional upgt dev/usb/wlan/if_ural.c optional ural dev/usb/wlan/if_urtw.c optional urtw dev/usb/wlan/if_zyd.c optional zyd # # USB serial and parallel port drivers # dev/usb/serial/u3g.c optional u3g dev/usb/serial/uark.c optional uark dev/usb/serial/ubsa.c optional ubsa dev/usb/serial/ubser.c optional ubser dev/usb/serial/uchcom.c optional uchcom dev/usb/serial/ucycom.c optional ucycom dev/usb/serial/ufoma.c optional ufoma dev/usb/serial/uftdi.c optional uftdi dev/usb/serial/ugensa.c optional ugensa dev/usb/serial/uipaq.c optional uipaq dev/usb/serial/ulpt.c optional ulpt dev/usb/serial/umcs.c optional umcs dev/usb/serial/umct.c optional umct dev/usb/serial/umodem.c optional umodem dev/usb/serial/umoscom.c optional umoscom dev/usb/serial/uplcom.c optional uplcom dev/usb/serial/uslcom.c optional uslcom dev/usb/serial/uvisor.c optional uvisor dev/usb/serial/uvscom.c optional uvscom dev/usb/serial/usb_serial.c optional ucom | u3g | uark | ubsa | ubser | \ uchcom | ucycom | ufoma | uftdi | \ ugensa | uipaq | umcs | umct | \ umodem | umoscom | uplcom | usie | \ uslcom | uvisor | uvscom # # USB misc drivers # dev/usb/misc/ufm.c optional ufm dev/usb/misc/udbp.c optional udbp dev/usb/misc/ugold.c optional ugold dev/usb/misc/uled.c optional uled # # USB input drivers # dev/usb/input/atp.c optional atp dev/usb/input/uep.c optional uep dev/usb/input/uhid.c optional uhid dev/usb/input/ukbd.c optional ukbd dev/usb/input/ums.c optional ums dev/usb/input/wsp.c optional wsp # # USB quirks # dev/usb/quirk/usb_quirk.c optional usb # # USB templates # dev/usb/template/usb_template.c optional usb_template dev/usb/template/usb_template_audio.c optional usb_template dev/usb/template/usb_template_cdce.c optional usb_template dev/usb/template/usb_template_kbd.c optional usb_template dev/usb/template/usb_template_modem.c optional usb_template dev/usb/template/usb_template_mouse.c optional usb_template dev/usb/template/usb_template_msc.c optional usb_template dev/usb/template/usb_template_mtp.c optional usb_template dev/usb/template/usb_template_phone.c optional usb_template dev/usb/template/usb_template_serialnet.c optional usb_template dev/usb/template/usb_template_midi.c optional usb_template # # USB video drivers # dev/usb/video/udl.c optional udl # # USB END # dev/videomode/videomode.c optional videomode dev/videomode/edid.c optional videomode dev/videomode/pickmode.c optional videomode dev/videomode/vesagtf.c optional videomode dev/utopia/idtphy.c optional utopia dev/utopia/suni.c optional utopia dev/utopia/utopia.c optional utopia dev/vge/if_vge.c optional vge dev/viapm/viapm.c optional viapm pci dev/virtio/virtio.c optional virtio dev/virtio/virtqueue.c optional virtio dev/virtio/virtio_bus_if.m optional virtio dev/virtio/virtio_if.m optional virtio dev/virtio/pci/virtio_pci.c optional virtio_pci dev/virtio/mmio/virtio_mmio.c optional virtio_mmio dev/virtio/mmio/virtio_mmio_if.m optional virtio_mmio dev/virtio/network/if_vtnet.c optional vtnet dev/virtio/block/virtio_blk.c optional virtio_blk dev/virtio/balloon/virtio_balloon.c optional virtio_balloon dev/virtio/scsi/virtio_scsi.c optional virtio_scsi dev/virtio/random/virtio_random.c optional virtio_random dev/virtio/console/virtio_console.c optional virtio_console dev/vkbd/vkbd.c optional vkbd dev/vr/if_vr.c optional vr pci dev/vt/colors/vt_termcolors.c optional vt dev/vt/font/vt_font_default.c optional vt dev/vt/font/vt_mouse_cursor.c optional vt dev/vt/hw/efifb/efifb.c optional vt_efifb dev/vt/hw/fb/vt_fb.c optional vt dev/vt/hw/vga/vt_vga.c optional vt vt_vga dev/vt/logo/logo_freebsd.c optional vt splash dev/vt/logo/logo_beastie.c optional vt splash dev/vt/vt_buf.c optional vt dev/vt/vt_consolectl.c optional vt dev/vt/vt_core.c optional vt dev/vt/vt_cpulogos.c optional vt splash dev/vt/vt_font.c optional vt dev/vt/vt_sysmouse.c optional vt dev/vte/if_vte.c optional vte pci dev/vx/if_vx.c optional vx dev/vx/if_vx_eisa.c optional vx eisa dev/vx/if_vx_pci.c optional vx pci dev/vxge/vxge.c optional vxge dev/vxge/vxgehal/vxgehal-ifmsg.c optional vxge dev/vxge/vxgehal/vxgehal-mrpcim.c optional vxge dev/vxge/vxgehal/vxge-queue.c optional vxge dev/vxge/vxgehal/vxgehal-ring.c optional vxge dev/vxge/vxgehal/vxgehal-swapper.c optional vxge dev/vxge/vxgehal/vxgehal-mgmt.c optional vxge dev/vxge/vxgehal/vxgehal-srpcim.c optional vxge dev/vxge/vxgehal/vxgehal-config.c optional vxge dev/vxge/vxgehal/vxgehal-blockpool.c optional vxge dev/vxge/vxgehal/vxgehal-doorbells.c optional vxge dev/vxge/vxgehal/vxgehal-mgmtaux.c optional vxge dev/vxge/vxgehal/vxgehal-device.c optional vxge dev/vxge/vxgehal/vxgehal-mm.c optional vxge dev/vxge/vxgehal/vxgehal-driver.c optional vxge dev/vxge/vxgehal/vxgehal-virtualpath.c optional vxge dev/vxge/vxgehal/vxgehal-channel.c optional vxge dev/vxge/vxgehal/vxgehal-fifo.c optional vxge dev/watchdog/watchdog.c standard dev/wb/if_wb.c optional wb pci dev/wi/if_wi.c optional wi dev/wi/if_wi_pccard.c optional wi pccard dev/wi/if_wi_pci.c optional wi pci dev/wpi/if_wpi.c optional wpi pci wpifw.c optional wpifw \ compile-with "${AWK} -f $S/tools/fw_stub.awk wpi.fw:wpifw:153229 -mwpi -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "wpifw.c" wpifw.fwo optional wpifw \ dependency "wpi.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "wpifw.fwo" wpi.fw optional wpifw \ dependency "$S/contrib/dev/wpi/iwlwifi-3945-15.32.2.9.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "wpi.fw" dev/xe/if_xe.c optional xe dev/xe/if_xe_pccard.c optional xe pccard dev/xen/balloon/balloon.c optional xenhvm dev/xen/blkfront/blkfront.c optional xenhvm dev/xen/blkback/blkback.c optional xenhvm dev/xen/console/xen_console.c optional xenhvm dev/xen/control/control.c optional xenhvm dev/xen/grant_table/grant_table.c optional xenhvm dev/xen/netback/netback.c optional xenhvm dev/xen/netfront/netfront.c optional xenhvm dev/xen/xenpci/xenpci.c optional xenpci dev/xen/timer/timer.c optional xenhvm dev/xen/pvcpu/pvcpu.c optional xenhvm dev/xen/xenstore/xenstore.c optional xenhvm dev/xen/xenstore/xenstore_dev.c optional xenhvm dev/xen/xenstore/xenstored_dev.c optional xenhvm dev/xen/evtchn/evtchn_dev.c optional xenhvm dev/xen/privcmd/privcmd.c optional xenhvm dev/xen/debug/debug.c optional xenhvm dev/xl/if_xl.c optional xl pci dev/xl/xlphy.c optional xl pci fs/autofs/autofs.c optional autofs fs/autofs/autofs_vfsops.c optional autofs fs/autofs/autofs_vnops.c optional autofs fs/deadfs/dead_vnops.c standard fs/devfs/devfs_devs.c standard fs/devfs/devfs_dir.c standard fs/devfs/devfs_rule.c standard fs/devfs/devfs_vfsops.c standard fs/devfs/devfs_vnops.c standard fs/fdescfs/fdesc_vfsops.c optional fdescfs fs/fdescfs/fdesc_vnops.c optional fdescfs fs/fifofs/fifo_vnops.c standard fs/cuse/cuse.c optional cuse fs/fuse/fuse_device.c optional fuse fs/fuse/fuse_file.c optional fuse fs/fuse/fuse_internal.c optional fuse fs/fuse/fuse_io.c optional fuse fs/fuse/fuse_ipc.c optional fuse fs/fuse/fuse_main.c optional fuse fs/fuse/fuse_node.c optional fuse fs/fuse/fuse_vfsops.c optional fuse fs/fuse/fuse_vnops.c optional fuse fs/msdosfs/msdosfs_conv.c optional msdosfs fs/msdosfs/msdosfs_denode.c optional msdosfs fs/msdosfs/msdosfs_fat.c optional msdosfs fs/msdosfs/msdosfs_fileno.c optional msdosfs fs/msdosfs/msdosfs_iconv.c optional msdosfs_iconv fs/msdosfs/msdosfs_lookup.c optional msdosfs fs/msdosfs/msdosfs_vfsops.c optional msdosfs fs/msdosfs/msdosfs_vnops.c optional msdosfs fs/nandfs/bmap.c optional nandfs fs/nandfs/nandfs_alloc.c optional nandfs fs/nandfs/nandfs_bmap.c optional nandfs fs/nandfs/nandfs_buffer.c optional nandfs fs/nandfs/nandfs_cleaner.c optional nandfs fs/nandfs/nandfs_cpfile.c optional nandfs fs/nandfs/nandfs_dat.c optional nandfs fs/nandfs/nandfs_dir.c optional nandfs fs/nandfs/nandfs_ifile.c optional nandfs fs/nandfs/nandfs_segment.c optional nandfs fs/nandfs/nandfs_subr.c optional nandfs fs/nandfs/nandfs_sufile.c optional nandfs fs/nandfs/nandfs_vfsops.c optional nandfs fs/nandfs/nandfs_vnops.c optional nandfs fs/nfs/nfs_commonkrpc.c optional nfscl | nfsd fs/nfs/nfs_commonsubs.c optional nfscl | nfsd fs/nfs/nfs_commonport.c optional nfscl | nfsd fs/nfs/nfs_commonacl.c optional nfscl | nfsd fs/nfsclient/nfs_clcomsubs.c optional nfscl fs/nfsclient/nfs_clsubs.c optional nfscl fs/nfsclient/nfs_clstate.c optional nfscl fs/nfsclient/nfs_clkrpc.c optional nfscl fs/nfsclient/nfs_clrpcops.c optional nfscl fs/nfsclient/nfs_clvnops.c optional nfscl fs/nfsclient/nfs_clnode.c optional nfscl fs/nfsclient/nfs_clvfsops.c optional nfscl fs/nfsclient/nfs_clport.c optional nfscl fs/nfsclient/nfs_clbio.c optional nfscl fs/nfsclient/nfs_clnfsiod.c optional nfscl fs/nfsserver/nfs_fha_new.c optional nfsd inet fs/nfsserver/nfs_nfsdsocket.c optional nfsd inet fs/nfsserver/nfs_nfsdsubs.c optional nfsd inet fs/nfsserver/nfs_nfsdstate.c optional nfsd inet fs/nfsserver/nfs_nfsdkrpc.c optional nfsd inet fs/nfsserver/nfs_nfsdserv.c optional nfsd inet fs/nfsserver/nfs_nfsdport.c optional nfsd inet fs/nfsserver/nfs_nfsdcache.c optional nfsd inet fs/nullfs/null_subr.c optional nullfs fs/nullfs/null_vfsops.c optional nullfs fs/nullfs/null_vnops.c optional nullfs fs/procfs/procfs.c optional procfs fs/procfs/procfs_ctl.c optional procfs fs/procfs/procfs_dbregs.c optional procfs fs/procfs/procfs_fpregs.c optional procfs fs/procfs/procfs_ioctl.c optional procfs fs/procfs/procfs_map.c optional procfs fs/procfs/procfs_mem.c optional procfs fs/procfs/procfs_note.c optional procfs fs/procfs/procfs_osrel.c optional procfs fs/procfs/procfs_regs.c optional procfs fs/procfs/procfs_rlimit.c optional procfs fs/procfs/procfs_status.c optional procfs fs/procfs/procfs_type.c optional procfs fs/pseudofs/pseudofs.c optional pseudofs fs/pseudofs/pseudofs_fileno.c optional pseudofs fs/pseudofs/pseudofs_vncache.c optional pseudofs fs/pseudofs/pseudofs_vnops.c optional pseudofs fs/smbfs/smbfs_io.c optional smbfs fs/smbfs/smbfs_node.c optional smbfs fs/smbfs/smbfs_smb.c optional smbfs fs/smbfs/smbfs_subr.c optional smbfs fs/smbfs/smbfs_vfsops.c optional smbfs fs/smbfs/smbfs_vnops.c optional smbfs fs/udf/osta.c optional udf fs/udf/udf_iconv.c optional udf_iconv fs/udf/udf_vfsops.c optional udf fs/udf/udf_vnops.c optional udf fs/unionfs/union_subr.c optional unionfs fs/unionfs/union_vfsops.c optional unionfs fs/unionfs/union_vnops.c optional unionfs fs/tmpfs/tmpfs_vnops.c optional tmpfs fs/tmpfs/tmpfs_fifoops.c optional tmpfs fs/tmpfs/tmpfs_vfsops.c optional tmpfs fs/tmpfs/tmpfs_subr.c optional tmpfs gdb/gdb_cons.c optional gdb gdb/gdb_main.c optional gdb gdb/gdb_packet.c optional gdb geom/bde/g_bde.c optional geom_bde geom/bde/g_bde_crypt.c optional geom_bde geom/bde/g_bde_lock.c optional geom_bde geom/bde/g_bde_work.c optional geom_bde geom/cache/g_cache.c optional geom_cache geom/concat/g_concat.c optional geom_concat geom/eli/g_eli.c optional geom_eli geom/eli/g_eli_crypto.c optional geom_eli geom/eli/g_eli_ctl.c optional geom_eli geom/eli/g_eli_hmac.c optional geom_eli geom/eli/g_eli_integrity.c optional geom_eli geom/eli/g_eli_key.c optional geom_eli geom/eli/g_eli_key_cache.c optional geom_eli geom/eli/g_eli_privacy.c optional geom_eli geom/eli/pkcs5v2.c optional geom_eli geom/gate/g_gate.c optional geom_gate geom/geom_aes.c optional geom_aes geom/geom_bsd.c optional geom_bsd geom/geom_bsd_enc.c optional geom_bsd | geom_part_bsd geom/geom_ccd.c optional ccd | geom_ccd geom/geom_ctl.c standard geom/geom_dev.c standard geom/geom_disk.c standard geom/geom_dump.c standard geom/geom_event.c standard geom/geom_fox.c optional geom_fox geom/geom_flashmap.c optional fdt cfi | fdt nand | fdt mx25l geom/geom_io.c standard geom/geom_kern.c standard geom/geom_map.c optional geom_map geom/geom_mbr.c optional geom_mbr geom/geom_mbr_enc.c optional geom_mbr geom/geom_pc98.c optional geom_pc98 geom/geom_pc98_enc.c optional geom_pc98 geom/geom_redboot.c optional geom_redboot geom/geom_slice.c standard geom/geom_subr.c standard geom/geom_sunlabel.c optional geom_sunlabel geom/geom_sunlabel_enc.c optional geom_sunlabel geom/geom_vfs.c standard geom/geom_vol_ffs.c optional geom_vol geom/journal/g_journal.c optional geom_journal geom/journal/g_journal_ufs.c optional geom_journal geom/label/g_label.c optional geom_label | geom_label_gpt geom/label/g_label_ext2fs.c optional geom_label geom/label/g_label_iso9660.c optional geom_label geom/label/g_label_msdosfs.c optional geom_label geom/label/g_label_ntfs.c optional geom_label geom/label/g_label_reiserfs.c optional geom_label geom/label/g_label_ufs.c optional geom_label geom/label/g_label_gpt.c optional geom_label | geom_label_gpt geom/label/g_label_disk_ident.c optional geom_label geom/linux_lvm/g_linux_lvm.c optional geom_linux_lvm geom/mirror/g_mirror.c optional geom_mirror geom/mirror/g_mirror_ctl.c optional geom_mirror geom/mountver/g_mountver.c optional geom_mountver geom/multipath/g_multipath.c optional geom_multipath geom/nop/g_nop.c optional geom_nop geom/part/g_part.c standard geom/part/g_part_if.m standard geom/part/g_part_apm.c optional geom_part_apm geom/part/g_part_bsd.c optional geom_part_bsd geom/part/g_part_bsd64.c optional geom_part_bsd64 geom/part/g_part_ebr.c optional geom_part_ebr geom/part/g_part_gpt.c optional geom_part_gpt geom/part/g_part_ldm.c optional geom_part_ldm geom/part/g_part_mbr.c optional geom_part_mbr geom/part/g_part_pc98.c optional geom_part_pc98 geom/part/g_part_vtoc8.c optional geom_part_vtoc8 geom/raid/g_raid.c optional geom_raid geom/raid/g_raid_ctl.c optional geom_raid geom/raid/g_raid_md_if.m optional geom_raid geom/raid/g_raid_tr_if.m optional geom_raid geom/raid/md_ddf.c optional geom_raid geom/raid/md_intel.c optional geom_raid geom/raid/md_jmicron.c optional geom_raid geom/raid/md_nvidia.c optional geom_raid geom/raid/md_promise.c optional geom_raid geom/raid/md_sii.c optional geom_raid geom/raid/tr_concat.c optional geom_raid geom/raid/tr_raid0.c optional geom_raid geom/raid/tr_raid1.c optional geom_raid geom/raid/tr_raid1e.c optional geom_raid geom/raid/tr_raid5.c optional geom_raid geom/raid3/g_raid3.c optional geom_raid3 geom/raid3/g_raid3_ctl.c optional geom_raid3 geom/shsec/g_shsec.c optional geom_shsec geom/stripe/g_stripe.c optional geom_stripe contrib/xz-embedded/freebsd/xz_malloc.c \ optional xz_embedded | geom_uzip \ compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/" contrib/xz-embedded/linux/lib/xz/xz_crc32.c \ optional xz_embedded | geom_uzip \ compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/" contrib/xz-embedded/linux/lib/xz/xz_dec_bcj.c \ optional xz_embedded | geom_uzip \ compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/" contrib/xz-embedded/linux/lib/xz/xz_dec_lzma2.c \ optional xz_embedded | geom_uzip \ compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/" contrib/xz-embedded/linux/lib/xz/xz_dec_stream.c \ optional xz_embedded | geom_uzip \ compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/" geom/uzip/g_uzip.c optional geom_uzip geom/uzip/g_uzip_lzma.c optional geom_uzip geom/uzip/g_uzip_wrkthr.c optional geom_uzip geom/uzip/g_uzip_zlib.c optional geom_uzip geom/vinum/geom_vinum.c optional geom_vinum geom/vinum/geom_vinum_create.c optional geom_vinum geom/vinum/geom_vinum_drive.c optional geom_vinum geom/vinum/geom_vinum_plex.c optional geom_vinum geom/vinum/geom_vinum_volume.c optional geom_vinum geom/vinum/geom_vinum_subr.c optional geom_vinum geom/vinum/geom_vinum_raid5.c optional geom_vinum geom/vinum/geom_vinum_share.c optional geom_vinum geom/vinum/geom_vinum_list.c optional geom_vinum geom/vinum/geom_vinum_rm.c optional geom_vinum geom/vinum/geom_vinum_init.c optional geom_vinum geom/vinum/geom_vinum_state.c optional geom_vinum geom/vinum/geom_vinum_rename.c optional geom_vinum geom/vinum/geom_vinum_move.c optional geom_vinum geom/vinum/geom_vinum_events.c optional geom_vinum geom/virstor/binstream.c optional geom_virstor geom/virstor/g_virstor.c optional geom_virstor geom/virstor/g_virstor_md.c optional geom_virstor geom/zero/g_zero.c optional geom_zero fs/ext2fs/ext2_alloc.c optional ext2fs fs/ext2fs/ext2_balloc.c optional ext2fs fs/ext2fs/ext2_bmap.c optional ext2fs fs/ext2fs/ext2_extents.c optional ext2fs fs/ext2fs/ext2_inode.c optional ext2fs fs/ext2fs/ext2_inode_cnv.c optional ext2fs fs/ext2fs/ext2_hash.c optional ext2fs fs/ext2fs/ext2_htree.c optional ext2fs fs/ext2fs/ext2_lookup.c optional ext2fs fs/ext2fs/ext2_subr.c optional ext2fs fs/ext2fs/ext2_vfsops.c optional ext2fs fs/ext2fs/ext2_vnops.c optional ext2fs # isa/isa_if.m standard isa/isa_common.c optional isa isa/isahint.c optional isa isa/pnp.c optional isa isapnp isa/pnpparse.c optional isa isapnp fs/cd9660/cd9660_bmap.c optional cd9660 fs/cd9660/cd9660_lookup.c optional cd9660 fs/cd9660/cd9660_node.c optional cd9660 fs/cd9660/cd9660_rrip.c optional cd9660 fs/cd9660/cd9660_util.c optional cd9660 fs/cd9660/cd9660_vfsops.c optional cd9660 fs/cd9660/cd9660_vnops.c optional cd9660 fs/cd9660/cd9660_iconv.c optional cd9660_iconv kern/bus_if.m standard kern/clock_if.m standard kern/cpufreq_if.m standard kern/device_if.m standard kern/imgact_binmisc.c optional imagact_binmisc kern/imgact_elf.c standard kern/imgact_elf32.c optional compat_freebsd32 kern/imgact_shell.c standard kern/inflate.c optional gzip kern/init_main.c standard kern/init_sysent.c standard kern/ksched.c optional _kposix_priority_scheduling kern/kern_acct.c standard kern/kern_alq.c optional alq kern/kern_clock.c standard kern/kern_condvar.c standard kern/kern_conf.c standard kern/kern_cons.c standard kern/kern_cpu.c standard kern/kern_cpuset.c standard kern/kern_context.c standard kern/kern_descrip.c standard kern/kern_dtrace.c optional kdtrace_hooks kern/kern_dump.c standard kern/kern_environment.c standard kern/kern_et.c standard kern/kern_event.c standard kern/kern_exec.c standard kern/kern_exit.c standard kern/kern_fail.c standard kern/kern_ffclock.c standard kern/kern_fork.c standard kern/kern_gzio.c optional gzio kern/kern_hhook.c standard kern/kern_idle.c standard kern/kern_intr.c standard kern/kern_jail.c standard kern/kern_khelp.c standard kern/kern_kthread.c standard kern/kern_ktr.c optional ktr kern/kern_ktrace.c standard kern/kern_linker.c standard kern/kern_lock.c standard kern/kern_lockf.c standard kern/kern_lockstat.c optional kdtrace_hooks kern/kern_loginclass.c standard kern/kern_malloc.c standard kern/kern_mbuf.c standard kern/kern_mib.c standard kern/kern_module.c standard kern/kern_mtxpool.c standard kern/kern_mutex.c standard kern/kern_ntptime.c standard kern/kern_numa.c standard kern/kern_osd.c standard kern/kern_physio.c standard kern/kern_pmc.c standard kern/kern_poll.c optional device_polling kern/kern_priv.c standard kern/kern_proc.c standard kern/kern_procctl.c standard kern/kern_prot.c standard kern/kern_racct.c standard kern/kern_rangelock.c standard kern/kern_rctl.c standard kern/kern_resource.c standard kern/kern_rmlock.c standard kern/kern_rwlock.c standard kern/kern_sdt.c optional kdtrace_hooks kern/kern_sema.c standard kern/kern_sendfile.c standard kern/kern_sharedpage.c standard kern/kern_shutdown.c standard kern/kern_sig.c standard kern/kern_switch.c standard kern/kern_sx.c standard kern/kern_synch.c standard kern/kern_syscalls.c standard kern/kern_sysctl.c standard kern/kern_tc.c standard kern/kern_thr.c standard kern/kern_thread.c standard kern/kern_time.c standard kern/kern_timeout.c standard kern/kern_umtx.c standard kern/kern_uuid.c standard kern/kern_xxx.c standard kern/link_elf.c standard kern/linker_if.m standard kern/md4c.c optional netsmb kern/md5c.c standard kern/p1003_1b.c standard kern/posix4_mib.c standard kern/sched_4bsd.c optional sched_4bsd kern/sched_ule.c optional sched_ule kern/serdev_if.m standard kern/stack_protector.c standard \ compile-with "${NORMAL_C:N-fstack-protector*}" kern/subr_acl_nfs4.c optional ufs_acl | zfs kern/subr_acl_posix1e.c optional ufs_acl kern/subr_autoconf.c standard kern/subr_blist.c standard kern/subr_bus.c standard kern/subr_bus_dma.c standard kern/subr_bufring.c standard kern/subr_capability.c standard kern/subr_clock.c standard kern/subr_counter.c standard kern/subr_devstat.c standard kern/subr_disk.c standard kern/subr_eventhandler.c standard kern/subr_fattime.c standard kern/subr_firmware.c optional firmware kern/subr_gtaskqueue.c standard kern/subr_hash.c standard kern/subr_hints.c standard kern/subr_kdb.c standard kern/subr_kobj.c standard kern/subr_lock.c standard kern/subr_log.c standard kern/subr_mbpool.c optional libmbpool kern/subr_mchain.c optional libmchain kern/subr_module.c standard kern/subr_msgbuf.c standard kern/subr_param.c standard kern/subr_pcpu.c standard kern/subr_pctrie.c standard kern/subr_power.c standard kern/subr_prf.c standard kern/subr_prof.c standard kern/subr_rman.c standard kern/subr_rtc.c standard kern/subr_sbuf.c standard kern/subr_scanf.c standard kern/subr_sglist.c standard kern/subr_sleepqueue.c standard kern/subr_smp.c standard kern/subr_stack.c optional ddb | stack | ktr kern/subr_taskqueue.c standard kern/subr_terminal.c optional vt kern/subr_trap.c standard kern/subr_turnstile.c standard kern/subr_uio.c standard kern/subr_unit.c standard kern/subr_vmem.c standard kern/subr_witness.c optional witness kern/sys_capability.c standard kern/sys_generic.c standard kern/sys_pipe.c standard kern/sys_procdesc.c standard kern/sys_process.c standard kern/sys_socket.c standard kern/syscalls.c standard kern/sysv_ipc.c standard kern/sysv_msg.c optional sysvmsg kern/sysv_sem.c optional sysvsem kern/sysv_shm.c optional sysvshm kern/tty.c standard kern/tty_compat.c optional compat_43tty kern/tty_info.c standard kern/tty_inq.c standard kern/tty_outq.c standard kern/tty_pts.c standard kern/tty_tty.c standard kern/tty_ttydisc.c standard kern/uipc_accf.c standard kern/uipc_debug.c optional ddb kern/uipc_domain.c standard kern/uipc_mbuf.c standard kern/uipc_mbuf2.c standard kern/uipc_mbufhash.c standard kern/uipc_mqueue.c optional p1003_1b_mqueue kern/uipc_sem.c optional p1003_1b_semaphores kern/uipc_shm.c standard kern/uipc_sockbuf.c standard kern/uipc_socket.c standard kern/uipc_syscalls.c standard kern/uipc_usrreq.c standard kern/vfs_acl.c standard kern/vfs_aio.c standard kern/vfs_bio.c standard kern/vfs_cache.c standard kern/vfs_cluster.c standard kern/vfs_default.c standard kern/vfs_export.c standard kern/vfs_extattr.c standard kern/vfs_hash.c standard kern/vfs_init.c standard kern/vfs_lookup.c standard kern/vfs_mount.c standard kern/vfs_mountroot.c standard kern/vfs_subr.c standard kern/vfs_syscalls.c standard kern/vfs_vnops.c standard # # Kernel GSS-API # gssd.h optional kgssapi \ dependency "$S/kgssapi/gssd.x" \ compile-with "RPCGEN_CPP='${CPP}' rpcgen -hM $S/kgssapi/gssd.x | grep -v pthread.h > gssd.h" \ no-obj no-implicit-rule before-depend local \ clean "gssd.h" gssd_xdr.c optional kgssapi \ dependency "$S/kgssapi/gssd.x gssd.h" \ compile-with "RPCGEN_CPP='${CPP}' rpcgen -c $S/kgssapi/gssd.x -o gssd_xdr.c" \ no-implicit-rule before-depend local \ clean "gssd_xdr.c" gssd_clnt.c optional kgssapi \ dependency "$S/kgssapi/gssd.x gssd.h" \ compile-with "RPCGEN_CPP='${CPP}' rpcgen -lM $S/kgssapi/gssd.x | grep -v string.h > gssd_clnt.c" \ no-implicit-rule before-depend local \ clean "gssd_clnt.c" kgssapi/gss_accept_sec_context.c optional kgssapi kgssapi/gss_add_oid_set_member.c optional kgssapi kgssapi/gss_acquire_cred.c optional kgssapi kgssapi/gss_canonicalize_name.c optional kgssapi kgssapi/gss_create_empty_oid_set.c optional kgssapi kgssapi/gss_delete_sec_context.c optional kgssapi kgssapi/gss_display_status.c optional kgssapi kgssapi/gss_export_name.c optional kgssapi kgssapi/gss_get_mic.c optional kgssapi kgssapi/gss_init_sec_context.c optional kgssapi kgssapi/gss_impl.c optional kgssapi kgssapi/gss_import_name.c optional kgssapi kgssapi/gss_names.c optional kgssapi kgssapi/gss_pname_to_uid.c optional kgssapi kgssapi/gss_release_buffer.c optional kgssapi kgssapi/gss_release_cred.c optional kgssapi kgssapi/gss_release_name.c optional kgssapi kgssapi/gss_release_oid_set.c optional kgssapi kgssapi/gss_set_cred_option.c optional kgssapi kgssapi/gss_test_oid_set_member.c optional kgssapi kgssapi/gss_unwrap.c optional kgssapi kgssapi/gss_verify_mic.c optional kgssapi kgssapi/gss_wrap.c optional kgssapi kgssapi/gss_wrap_size_limit.c optional kgssapi kgssapi/gssd_prot.c optional kgssapi kgssapi/krb5/krb5_mech.c optional kgssapi kgssapi/krb5/kcrypto.c optional kgssapi kgssapi/krb5/kcrypto_aes.c optional kgssapi kgssapi/krb5/kcrypto_arcfour.c optional kgssapi kgssapi/krb5/kcrypto_des.c optional kgssapi kgssapi/krb5/kcrypto_des3.c optional kgssapi kgssapi/kgss_if.m optional kgssapi kgssapi/gsstest.c optional kgssapi_debug # These files in libkern/ are those needed by all architectures. Some # of the files in libkern/ are only needed on some architectures, e.g., # libkern/divdi3.c is needed by i386 but not alpha. Also, some of these # routines may be optimized for a particular platform. In either case, # the file should be moved to conf/files. from here. # libkern/arc4random.c standard libkern/asprintf.c standard libkern/bcd.c standard libkern/bsearch.c standard libkern/crc32.c standard libkern/explicit_bzero.c standard libkern/fnmatch.c standard libkern/iconv.c optional libiconv libkern/iconv_converter_if.m optional libiconv libkern/iconv_ucs.c optional libiconv libkern/iconv_xlat.c optional libiconv libkern/iconv_xlat16.c optional libiconv libkern/inet_aton.c standard libkern/inet_ntoa.c standard libkern/inet_ntop.c standard libkern/inet_pton.c standard libkern/jenkins_hash.c standard libkern/murmur3_32.c standard libkern/mcount.c optional profiling-routine libkern/memcchr.c standard libkern/memchr.c standard libkern/memcmp.c standard libkern/memmem.c optional gdb libkern/qsort.c standard libkern/qsort_r.c standard libkern/random.c standard libkern/scanc.c standard libkern/strcasecmp.c standard libkern/strcat.c standard libkern/strchr.c standard libkern/strcmp.c standard libkern/strcpy.c standard libkern/strcspn.c standard libkern/strdup.c standard libkern/strndup.c standard libkern/strlcat.c standard libkern/strlcpy.c standard libkern/strlen.c standard libkern/strncat.c standard libkern/strncmp.c standard libkern/strncpy.c standard libkern/strnlen.c standard libkern/strrchr.c standard libkern/strsep.c standard libkern/strspn.c standard libkern/strstr.c standard libkern/strtol.c standard libkern/strtoq.c standard libkern/strtoul.c standard libkern/strtouq.c standard libkern/strvalid.c standard libkern/timingsafe_bcmp.c standard libkern/zlib.c optional crypto | geom_uzip | ipsec | \ mxge | netgraph_deflate | \ ddb_ctf | gzio net/altq/altq_cbq.c optional altq net/altq/altq_cdnr.c optional altq net/altq/altq_codel.c optional altq net/altq/altq_hfsc.c optional altq net/altq/altq_fairq.c optional altq net/altq/altq_priq.c optional altq net/altq/altq_red.c optional altq net/altq/altq_rio.c optional altq net/altq/altq_rmclass.c optional altq net/altq/altq_subr.c optional altq net/bpf.c standard net/bpf_buffer.c optional bpf net/bpf_jitter.c optional bpf_jitter net/bpf_filter.c optional bpf | netgraph_bpf net/bpf_zerocopy.c optional bpf net/bridgestp.c optional bridge | if_bridge net/flowtable.c optional flowtable inet | flowtable inet6 net/ieee8023ad_lacp.c optional lagg net/if.c standard net/if_arcsubr.c optional arcnet net/if_atmsubr.c optional atm net/if_bridge.c optional bridge inet | if_bridge inet net/if_clone.c standard net/if_dead.c standard net/if_debug.c optional ddb net/if_disc.c optional disc net/if_edsc.c optional edsc net/if_enc.c optional enc inet | enc inet6 net/if_epair.c optional epair net/if_ethersubr.c optional ether net/if_fddisubr.c optional fddi net/if_fwsubr.c optional fwip net/if_gif.c optional gif inet | gif inet6 | \ netgraph_gif inet | netgraph_gif inet6 net/if_gre.c optional gre inet | gre inet6 net/if_iso88025subr.c optional token net/if_lagg.c optional lagg net/if_loop.c optional loop net/if_llatbl.c standard net/if_me.c optional me inet net/if_media.c standard net/if_mib.c standard net/if_spppfr.c optional sppp | netgraph_sppp net/if_spppsubr.c optional sppp | netgraph_sppp net/if_stf.c optional stf inet inet6 net/if_tun.c optional tun net/if_tap.c optional tap net/if_vlan.c optional vlan net/if_vxlan.c optional vxlan inet | vxlan inet6 net/ifdi_if.m optional ether pci net/iflib.c optional ether pci net/mp_ring.c optional ether net/mppcc.c optional netgraph_mppc_compression net/mppcd.c optional netgraph_mppc_compression net/netisr.c standard net/pfil.c optional ether | inet net/radix.c standard net/radix_mpath.c standard net/raw_cb.c standard net/raw_usrreq.c standard net/route.c standard net/rss_config.c optional inet rss | inet6 rss net/rtsock.c standard net/slcompress.c optional netgraph_vjc | sppp | \ netgraph_sppp net/toeplitz.c optional inet rss | inet6 rss net/vnet.c optional vimage net80211/ieee80211.c optional wlan net80211/ieee80211_acl.c optional wlan wlan_acl net80211/ieee80211_action.c optional wlan net80211/ieee80211_ageq.c optional wlan net80211/ieee80211_adhoc.c optional wlan \ compile-with "${NORMAL_C} -Wno-unused-function" net80211/ieee80211_ageq.c optional wlan net80211/ieee80211_amrr.c optional wlan | wlan_amrr net80211/ieee80211_crypto.c optional wlan \ compile-with "${NORMAL_C} -Wno-unused-function" net80211/ieee80211_crypto_ccmp.c optional wlan wlan_ccmp net80211/ieee80211_crypto_none.c optional wlan net80211/ieee80211_crypto_tkip.c optional wlan wlan_tkip net80211/ieee80211_crypto_wep.c optional wlan wlan_wep net80211/ieee80211_ddb.c optional wlan ddb net80211/ieee80211_dfs.c optional wlan net80211/ieee80211_freebsd.c optional wlan net80211/ieee80211_hostap.c optional wlan \ compile-with "${NORMAL_C} -Wno-unused-function" net80211/ieee80211_ht.c optional wlan net80211/ieee80211_hwmp.c optional wlan ieee80211_support_mesh net80211/ieee80211_input.c optional wlan net80211/ieee80211_ioctl.c optional wlan net80211/ieee80211_mesh.c optional wlan ieee80211_support_mesh \ compile-with "${NORMAL_C} -Wno-unused-function" net80211/ieee80211_monitor.c optional wlan net80211/ieee80211_node.c optional wlan net80211/ieee80211_output.c optional wlan net80211/ieee80211_phy.c optional wlan net80211/ieee80211_power.c optional wlan net80211/ieee80211_proto.c optional wlan net80211/ieee80211_radiotap.c optional wlan net80211/ieee80211_ratectl.c optional wlan net80211/ieee80211_ratectl_none.c optional wlan net80211/ieee80211_regdomain.c optional wlan net80211/ieee80211_rssadapt.c optional wlan wlan_rssadapt net80211/ieee80211_scan.c optional wlan net80211/ieee80211_scan_sta.c optional wlan net80211/ieee80211_sta.c optional wlan \ compile-with "${NORMAL_C} -Wno-unused-function" net80211/ieee80211_superg.c optional wlan ieee80211_support_superg net80211/ieee80211_scan_sw.c optional wlan net80211/ieee80211_tdma.c optional wlan ieee80211_support_tdma net80211/ieee80211_wds.c optional wlan net80211/ieee80211_xauth.c optional wlan wlan_xauth net80211/ieee80211_alq.c optional wlan ieee80211_alq netgraph/atm/ccatm/ng_ccatm.c optional ngatm_ccatm \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" netgraph/atm/ng_atm.c optional ngatm_atm netgraph/atm/ngatmbase.c optional ngatm_atmbase \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" netgraph/atm/sscfu/ng_sscfu.c optional ngatm_sscfu \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" netgraph/atm/sscop/ng_sscop.c optional ngatm_sscop \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" netgraph/atm/uni/ng_uni.c optional ngatm_uni \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" netgraph/bluetooth/common/ng_bluetooth.c optional netgraph_bluetooth netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c optional netgraph_bluetooth_bt3c netgraph/bluetooth/drivers/h4/ng_h4.c optional netgraph_bluetooth_h4 netgraph/bluetooth/drivers/ubt/ng_ubt.c optional netgraph_bluetooth_ubt usb netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c optional netgraph_bluetooth_ubtbcmfw usb netgraph/bluetooth/hci/ng_hci_cmds.c optional netgraph_bluetooth_hci netgraph/bluetooth/hci/ng_hci_evnt.c optional netgraph_bluetooth_hci netgraph/bluetooth/hci/ng_hci_main.c optional netgraph_bluetooth_hci netgraph/bluetooth/hci/ng_hci_misc.c optional netgraph_bluetooth_hci netgraph/bluetooth/hci/ng_hci_ulpi.c optional netgraph_bluetooth_hci netgraph/bluetooth/l2cap/ng_l2cap_cmds.c optional netgraph_bluetooth_l2cap netgraph/bluetooth/l2cap/ng_l2cap_evnt.c optional netgraph_bluetooth_l2cap netgraph/bluetooth/l2cap/ng_l2cap_llpi.c optional netgraph_bluetooth_l2cap netgraph/bluetooth/l2cap/ng_l2cap_main.c optional netgraph_bluetooth_l2cap netgraph/bluetooth/l2cap/ng_l2cap_misc.c optional netgraph_bluetooth_l2cap netgraph/bluetooth/l2cap/ng_l2cap_ulpi.c optional netgraph_bluetooth_l2cap netgraph/bluetooth/socket/ng_btsocket.c optional netgraph_bluetooth_socket netgraph/bluetooth/socket/ng_btsocket_hci_raw.c optional netgraph_bluetooth_socket netgraph/bluetooth/socket/ng_btsocket_l2cap.c optional netgraph_bluetooth_socket netgraph/bluetooth/socket/ng_btsocket_l2cap_raw.c optional netgraph_bluetooth_socket netgraph/bluetooth/socket/ng_btsocket_rfcomm.c optional netgraph_bluetooth_socket netgraph/bluetooth/socket/ng_btsocket_sco.c optional netgraph_bluetooth_socket netgraph/netflow/netflow.c optional netgraph_netflow netgraph/netflow/netflow_v9.c optional netgraph_netflow netgraph/netflow/ng_netflow.c optional netgraph_netflow netgraph/ng_UI.c optional netgraph_UI netgraph/ng_async.c optional netgraph_async netgraph/ng_atmllc.c optional netgraph_atmllc netgraph/ng_base.c optional netgraph netgraph/ng_bpf.c optional netgraph_bpf netgraph/ng_bridge.c optional netgraph_bridge netgraph/ng_car.c optional netgraph_car netgraph/ng_cisco.c optional netgraph_cisco netgraph/ng_deflate.c optional netgraph_deflate netgraph/ng_device.c optional netgraph_device netgraph/ng_echo.c optional netgraph_echo netgraph/ng_eiface.c optional netgraph_eiface netgraph/ng_ether.c optional netgraph_ether netgraph/ng_ether_echo.c optional netgraph_ether_echo netgraph/ng_frame_relay.c optional netgraph_frame_relay netgraph/ng_gif.c optional netgraph_gif inet6 | netgraph_gif inet netgraph/ng_gif_demux.c optional netgraph_gif_demux netgraph/ng_hole.c optional netgraph_hole netgraph/ng_iface.c optional netgraph_iface netgraph/ng_ip_input.c optional netgraph_ip_input netgraph/ng_ipfw.c optional netgraph_ipfw inet ipfirewall netgraph/ng_ksocket.c optional netgraph_ksocket netgraph/ng_l2tp.c optional netgraph_l2tp netgraph/ng_lmi.c optional netgraph_lmi netgraph/ng_mppc.c optional netgraph_mppc_compression | \ netgraph_mppc_encryption netgraph/ng_nat.c optional netgraph_nat inet libalias netgraph/ng_one2many.c optional netgraph_one2many netgraph/ng_parse.c optional netgraph netgraph/ng_patch.c optional netgraph_patch netgraph/ng_pipe.c optional netgraph_pipe netgraph/ng_ppp.c optional netgraph_ppp netgraph/ng_pppoe.c optional netgraph_pppoe netgraph/ng_pptpgre.c optional netgraph_pptpgre netgraph/ng_pred1.c optional netgraph_pred1 netgraph/ng_rfc1490.c optional netgraph_rfc1490 netgraph/ng_socket.c optional netgraph_socket netgraph/ng_split.c optional netgraph_split netgraph/ng_sppp.c optional netgraph_sppp netgraph/ng_tag.c optional netgraph_tag netgraph/ng_tcpmss.c optional netgraph_tcpmss netgraph/ng_tee.c optional netgraph_tee netgraph/ng_tty.c optional netgraph_tty netgraph/ng_vjc.c optional netgraph_vjc netgraph/ng_vlan.c optional netgraph_vlan netinet/accf_data.c optional accept_filter_data inet netinet/accf_dns.c optional accept_filter_dns inet netinet/accf_http.c optional accept_filter_http inet netinet/if_atm.c optional atm netinet/if_ether.c optional inet ether netinet/igmp.c optional inet netinet/in.c optional inet netinet/in_debug.c optional inet ddb netinet/in_kdtrace.c optional inet | inet6 netinet/ip_carp.c optional inet carp | inet6 carp netinet/in_fib.c optional inet netinet/in_gif.c optional gif inet | netgraph_gif inet netinet/ip_gre.c optional gre inet netinet/ip_id.c optional inet netinet/in_jail.c optional inet netinet/in_mcast.c optional inet netinet/in_pcb.c optional inet | inet6 netinet/in_pcbgroup.c optional inet pcbgroup | inet6 pcbgroup netinet/in_prot.c optional inet | inet6 netinet/in_proto.c optional inet | inet6 netinet/in_rmx.c optional inet netinet/in_rss.c optional inet rss netinet/ip_divert.c optional inet ipdivert ipfirewall netinet/ip_ecn.c optional inet | inet6 netinet/ip_encap.c optional inet | inet6 netinet/ip_fastfwd.c optional inet netinet/ip_icmp.c optional inet | inet6 netinet/ip_input.c optional inet netinet/ip_ipsec.c optional inet ipsec netinet/ip_mroute.c optional mrouting inet netinet/ip_options.c optional inet netinet/ip_output.c optional inet netinet/ip_reass.c optional inet netinet/raw_ip.c optional inet | inet6 netinet/cc/cc.c optional inet | inet6 netinet/cc/cc_newreno.c optional inet | inet6 netinet/sctp_asconf.c optional inet sctp | inet6 sctp netinet/sctp_auth.c optional inet sctp | inet6 sctp netinet/sctp_bsd_addr.c optional inet sctp | inet6 sctp netinet/sctp_cc_functions.c optional inet sctp | inet6 sctp netinet/sctp_crc32.c optional inet sctp | inet6 sctp netinet/sctp_indata.c optional inet sctp | inet6 sctp netinet/sctp_input.c optional inet sctp | inet6 sctp netinet/sctp_output.c optional inet sctp | inet6 sctp netinet/sctp_pcb.c optional inet sctp | inet6 sctp netinet/sctp_peeloff.c optional inet sctp | inet6 sctp netinet/sctp_ss_functions.c optional inet sctp | inet6 sctp netinet/sctp_syscalls.c optional inet sctp | inet6 sctp netinet/sctp_sysctl.c optional inet sctp | inet6 sctp netinet/sctp_timer.c optional inet sctp | inet6 sctp netinet/sctp_usrreq.c optional inet sctp | inet6 sctp netinet/sctputil.c optional inet sctp | inet6 sctp netinet/siftr.c optional inet siftr alq | inet6 siftr alq netinet/tcp_debug.c optional tcpdebug netinet/tcp_fastopen.c optional inet tcp_rfc7413 | inet6 tcp_rfc7413 netinet/tcp_hostcache.c optional inet | inet6 netinet/tcp_input.c optional inet | inet6 netinet/tcp_lro.c optional inet | inet6 netinet/tcp_output.c optional inet | inet6 netinet/tcp_offload.c optional tcp_offload inet | tcp_offload inet6 netinet/tcp_pcap.c optional inet tcppcap | inet6 tcppcap netinet/tcp_reass.c optional inet | inet6 netinet/tcp_sack.c optional inet | inet6 netinet/tcp_subr.c optional inet | inet6 netinet/tcp_syncache.c optional inet | inet6 netinet/tcp_timer.c optional inet | inet6 netinet/tcp_timewait.c optional inet | inet6 netinet/tcp_usrreq.c optional inet | inet6 netinet/udp_usrreq.c optional inet | inet6 netinet/libalias/alias.c optional libalias inet | netgraph_nat inet netinet/libalias/alias_db.c optional libalias inet | netgraph_nat inet netinet/libalias/alias_mod.c optional libalias | netgraph_nat netinet/libalias/alias_proxy.c optional libalias inet | netgraph_nat inet netinet/libalias/alias_util.c optional libalias inet | netgraph_nat inet netinet/libalias/alias_sctp.c optional libalias inet | netgraph_nat inet netinet6/dest6.c optional inet6 netinet6/frag6.c optional inet6 netinet6/icmp6.c optional inet6 netinet6/in6.c optional inet6 netinet6/in6_cksum.c optional inet6 netinet6/in6_fib.c optional inet6 netinet6/in6_gif.c optional gif inet6 | netgraph_gif inet6 netinet6/in6_ifattach.c optional inet6 netinet6/in6_jail.c optional inet6 netinet6/in6_mcast.c optional inet6 netinet6/in6_pcb.c optional inet6 netinet6/in6_pcbgroup.c optional inet6 pcbgroup netinet6/in6_proto.c optional inet6 netinet6/in6_rmx.c optional inet6 netinet6/in6_rss.c optional inet6 rss netinet6/in6_src.c optional inet6 netinet6/ip6_forward.c optional inet6 netinet6/ip6_gre.c optional gre inet6 netinet6/ip6_id.c optional inet6 netinet6/ip6_input.c optional inet6 netinet6/ip6_mroute.c optional mrouting inet6 netinet6/ip6_output.c optional inet6 netinet6/ip6_ipsec.c optional inet6 ipsec netinet6/mld6.c optional inet6 netinet6/nd6.c optional inet6 netinet6/nd6_nbr.c optional inet6 netinet6/nd6_rtr.c optional inet6 netinet6/raw_ip6.c optional inet6 netinet6/route6.c optional inet6 netinet6/scope6.c optional inet6 netinet6/sctp6_usrreq.c optional inet6 sctp netinet6/udp6_usrreq.c optional inet6 netipsec/ipsec.c optional ipsec inet | ipsec inet6 netipsec/ipsec_input.c optional ipsec inet | ipsec inet6 netipsec/ipsec_mbuf.c optional ipsec inet | ipsec inet6 netipsec/ipsec_output.c optional ipsec inet | ipsec inet6 netipsec/key.c optional ipsec inet | ipsec inet6 netipsec/key_debug.c optional ipsec inet | ipsec inet6 netipsec/keysock.c optional ipsec inet | ipsec inet6 netipsec/xform_ah.c optional ipsec inet | ipsec inet6 netipsec/xform_esp.c optional ipsec inet | ipsec inet6 netipsec/xform_ipcomp.c optional ipsec inet | ipsec inet6 netipsec/xform_tcp.c optional ipsec inet tcp_signature | \ ipsec inet6 tcp_signature netnatm/natm.c optional natm netnatm/natm_pcb.c optional natm netnatm/natm_proto.c optional natm netpfil/ipfw/dn_aqm_codel.c optional inet dummynet netpfil/ipfw/dn_aqm_pie.c optional inet dummynet netpfil/ipfw/dn_heap.c optional inet dummynet netpfil/ipfw/dn_sched_fifo.c optional inet dummynet netpfil/ipfw/dn_sched_fq_codel.c optional inet dummynet netpfil/ipfw/dn_sched_fq_pie.c optional inet dummynet netpfil/ipfw/dn_sched_prio.c optional inet dummynet netpfil/ipfw/dn_sched_qfq.c optional inet dummynet netpfil/ipfw/dn_sched_rr.c optional inet dummynet netpfil/ipfw/dn_sched_wf2q.c optional inet dummynet netpfil/ipfw/ip_dummynet.c optional inet dummynet netpfil/ipfw/ip_dn_io.c optional inet dummynet netpfil/ipfw/ip_dn_glue.c optional inet dummynet netpfil/ipfw/ip_fw2.c optional inet ipfirewall netpfil/ipfw/ip_fw_bpf.c optional inet ipfirewall netpfil/ipfw/ip_fw_dynamic.c optional inet ipfirewall netpfil/ipfw/ip_fw_eaction.c optional inet ipfirewall netpfil/ipfw/ip_fw_log.c optional inet ipfirewall netpfil/ipfw/ip_fw_pfil.c optional inet ipfirewall netpfil/ipfw/ip_fw_sockopt.c optional inet ipfirewall netpfil/ipfw/ip_fw_table.c optional inet ipfirewall netpfil/ipfw/ip_fw_table_algo.c optional inet ipfirewall netpfil/ipfw/ip_fw_table_value.c optional inet ipfirewall netpfil/ipfw/ip_fw_iface.c optional inet ipfirewall netpfil/ipfw/ip_fw_nat.c optional inet ipfirewall_nat netpfil/ipfw/nat64/ip_fw_nat64.c optional inet inet6 ipfirewall \ ipfirewall_nat64 netpfil/ipfw/nat64/nat64lsn.c optional inet inet6 ipfirewall \ ipfirewall_nat64 netpfil/ipfw/nat64/nat64lsn_control.c optional inet inet6 ipfirewall \ ipfirewall_nat64 netpfil/ipfw/nat64/nat64stl.c optional inet inet6 ipfirewall \ ipfirewall_nat64 netpfil/ipfw/nat64/nat64stl_control.c optional inet inet6 ipfirewall \ ipfirewall_nat64 netpfil/ipfw/nat64/nat64_translate.c optional inet inet6 ipfirewall \ ipfirewall_nat64 netpfil/ipfw/nptv6/ip_fw_nptv6.c optional inet inet6 ipfirewall \ ipfirewall_nptv6 netpfil/ipfw/nptv6/nptv6.c optional inet inet6 ipfirewall \ ipfirewall_nptv6 netpfil/pf/if_pflog.c optional pflog pf inet netpfil/pf/if_pfsync.c optional pfsync pf inet netpfil/pf/pf.c optional pf inet netpfil/pf/pf_if.c optional pf inet netpfil/pf/pf_ioctl.c optional pf inet netpfil/pf/pf_lb.c optional pf inet netpfil/pf/pf_norm.c optional pf inet netpfil/pf/pf_osfp.c optional pf inet netpfil/pf/pf_ruleset.c optional pf inet netpfil/pf/pf_table.c optional pf inet netpfil/pf/in4_cksum.c optional pf inet netsmb/smb_conn.c optional netsmb netsmb/smb_crypt.c optional netsmb netsmb/smb_dev.c optional netsmb netsmb/smb_iod.c optional netsmb netsmb/smb_rq.c optional netsmb netsmb/smb_smb.c optional netsmb netsmb/smb_subr.c optional netsmb netsmb/smb_trantcp.c optional netsmb netsmb/smb_usr.c optional netsmb nfs/bootp_subr.c optional bootp nfscl nfs/krpc_subr.c optional bootp nfscl nfs/nfs_diskless.c optional nfscl nfs_root nfs/nfs_fha.c optional nfsd nfs/nfs_lock.c optional nfscl | nfslockd | nfsd nfs/nfs_nfssvc.c optional nfscl | nfsd nlm/nlm_advlock.c optional nfslockd | nfsd nlm/nlm_prot_clnt.c optional nfslockd | nfsd nlm/nlm_prot_impl.c optional nfslockd | nfsd nlm/nlm_prot_server.c optional nfslockd | nfsd nlm/nlm_prot_svc.c optional nfslockd | nfsd nlm/nlm_prot_xdr.c optional nfslockd | nfsd nlm/sm_inter_xdr.c optional nfslockd | nfsd # Linux Kernel Programming Interface compat/linuxkpi/common/src/linux_kmod.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_compat.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_pci.c optional compat_linuxkpi pci \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_idr.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_radix.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_usb.c optional compat_linuxkpi usb \ compile-with "${LINUXKPI_C}" # OpenFabrics Enterprise Distribution (Infiniband) ofed/drivers/infiniband/core/addr.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/agent.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/cache.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" # XXX Mad.c must be ordered before cm.c for sysinit sets to occur in # the correct order. ofed/drivers/infiniband/core/mad.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/cm.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/ -Wno-unused-function" ofed/drivers/infiniband/core/cma.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/device.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/fmr_pool.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/iwcm.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/mad_rmpp.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/multicast.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/packer.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/peer_mem.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/sa_query.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/smi.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/sysfs.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/ucm.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/ucma.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/ud_header.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/umem.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/user_mad.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/uverbs_cmd.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/uverbs_main.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/uverbs_marshall.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/core/verbs.c optional ofed \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/" ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c optional ipoib \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/" #ofed/drivers/infiniband/ulp/ipoib/ipoib_fs.c optional ipoib \ # compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/" ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c optional ipoib \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/" ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c optional ipoib \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/" ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c optional ipoib \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/" ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c optional ipoib \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/" #ofed/drivers/infiniband/ulp/ipoib/ipoib_vlan.c optional ipoib \ # compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/" ofed/drivers/infiniband/ulp/sdp/sdp_bcopy.c optional sdp inet \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/" ofed/drivers/infiniband/ulp/sdp/sdp_main.c optional sdp inet \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/" ofed/drivers/infiniband/ulp/sdp/sdp_rx.c optional sdp inet \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/" ofed/drivers/infiniband/ulp/sdp/sdp_cma.c optional sdp inet \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/" ofed/drivers/infiniband/ulp/sdp/sdp_tx.c optional sdp inet \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/" dev/mlx4/mlx4_ib/mlx4_ib_alias_GUID.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_mcg.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_sysfs.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_cm.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_ah.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_cq.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_doorbell.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_mad.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_main.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_exp.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_mr.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_qp.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_srq.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_wc.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_alloc.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_catas.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_cmd.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_cq.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_eq.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_fw.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_icm.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_intf.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_main.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_mcg.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_mr.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_pd.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_port.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_profile.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_qp.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_reset.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_sense.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_srq.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_resource_tracker.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_sys_tune.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_en/mlx4_en_cq.c optional mlx4en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx4/mlx4_en/mlx4_en_main.c optional mlx4en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx4/mlx4_en/mlx4_en_netdev.c optional mlx4en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx4/mlx4_en/mlx4_en_port.c optional mlx4en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx4/mlx4_en/mlx4_en_resources.c optional mlx4en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx4/mlx4_en/mlx4_en_rx.c optional mlx4en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx4/mlx4_en/mlx4_en_tx.c optional mlx4en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_alloc.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_cmd.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_cq.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_eq.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_flow_table.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_fw.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_health.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_mad.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_main.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_mcg.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_mr.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_pagealloc.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_pd.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_port.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_qp.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_srq.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_transobj.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_uar.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_vport.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_wq.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_en/mlx5_en_ethtool.c optional mlx5en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx5/mlx5_en/mlx5_en_main.c optional mlx5en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx5/mlx5_en/mlx5_en_tx.c optional mlx5en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx5/mlx5_en/mlx5_en_flow_table.c optional mlx5en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx5/mlx5_en/mlx5_en_rx.c optional mlx5en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx5/mlx5_en/mlx5_en_txrx.c optional mlx5en pci inet inet6 \ compile-with "${OFED_C}" ofed/drivers/infiniband/hw/mthca/mthca_allocator.c optional mthca \ compile-with "${OFED_C}" ofed/drivers/infiniband/hw/mthca/mthca_av.c optional mthca \ compile-with "${OFED_C}" ofed/drivers/infiniband/hw/mthca/mthca_catas.c optional mthca \ compile-with "${OFED_C}" ofed/drivers/infiniband/hw/mthca/mthca_cmd.c optional mthca \ compile-with "${OFED_C}" ofed/drivers/infiniband/hw/mthca/mthca_cq.c optional mthca \ compile-with "${OFED_C}" ofed/drivers/infiniband/hw/mthca/mthca_eq.c optional mthca \ compile-with "${OFED_C}" ofed/drivers/infiniband/hw/mthca/mthca_mad.c optional mthca \ compile-with "${OFED_C}" ofed/drivers/infiniband/hw/mthca/mthca_main.c optional mthca \ compile-with "${OFED_C}" ofed/drivers/infiniband/hw/mthca/mthca_mcg.c optional mthca \ compile-with "${OFED_C}" ofed/drivers/infiniband/hw/mthca/mthca_memfree.c optional mthca \ compile-with "${OFED_C}" ofed/drivers/infiniband/hw/mthca/mthca_mr.c optional mthca \ compile-with "${OFED_C}" ofed/drivers/infiniband/hw/mthca/mthca_pd.c optional mthca \ compile-with "${OFED_C}" ofed/drivers/infiniband/hw/mthca/mthca_profile.c optional mthca \ compile-with "${OFED_C}" ofed/drivers/infiniband/hw/mthca/mthca_provider.c optional mthca \ compile-with "${OFED_C}" ofed/drivers/infiniband/hw/mthca/mthca_qp.c optional mthca \ compile-with "${OFED_C}" ofed/drivers/infiniband/hw/mthca/mthca_reset.c optional mthca \ compile-with "${OFED_C}" ofed/drivers/infiniband/hw/mthca/mthca_srq.c optional mthca \ compile-with "${OFED_C}" ofed/drivers/infiniband/hw/mthca/mthca_uar.c optional mthca \ compile-with "${OFED_C}" # crypto support opencrypto/cast.c optional crypto | ipsec opencrypto/criov.c optional crypto | ipsec opencrypto/crypto.c optional crypto | ipsec opencrypto/cryptodev.c optional cryptodev opencrypto/cryptodev_if.m optional crypto | ipsec opencrypto/cryptosoft.c optional crypto | ipsec opencrypto/cryptodeflate.c optional crypto | ipsec opencrypto/gmac.c optional crypto | ipsec opencrypto/gfmult.c optional crypto | ipsec opencrypto/rmd160.c optional crypto | ipsec opencrypto/skipjack.c optional crypto | ipsec opencrypto/xform.c optional crypto | ipsec rpc/auth_none.c optional krpc | nfslockd | nfscl | nfsd rpc/auth_unix.c optional krpc | nfslockd | nfscl | nfsd rpc/authunix_prot.c optional krpc | nfslockd | nfscl | nfsd rpc/clnt_bck.c optional krpc | nfslockd | nfscl | nfsd rpc/clnt_dg.c optional krpc | nfslockd | nfscl | nfsd rpc/clnt_rc.c optional krpc | nfslockd | nfscl | nfsd rpc/clnt_vc.c optional krpc | nfslockd | nfscl | nfsd rpc/getnetconfig.c optional krpc | nfslockd | nfscl | nfsd rpc/replay.c optional krpc | nfslockd | nfscl | nfsd rpc/rpc_callmsg.c optional krpc | nfslockd | nfscl | nfsd rpc/rpc_generic.c optional krpc | nfslockd | nfscl | nfsd rpc/rpc_prot.c optional krpc | nfslockd | nfscl | nfsd rpc/rpcb_clnt.c optional krpc | nfslockd | nfscl | nfsd rpc/rpcb_prot.c optional krpc | nfslockd | nfscl | nfsd rpc/svc.c optional krpc | nfslockd | nfscl | nfsd rpc/svc_auth.c optional krpc | nfslockd | nfscl | nfsd rpc/svc_auth_unix.c optional krpc | nfslockd | nfscl | nfsd rpc/svc_dg.c optional krpc | nfslockd | nfscl | nfsd rpc/svc_generic.c optional krpc | nfslockd | nfscl | nfsd rpc/svc_vc.c optional krpc | nfslockd | nfscl | nfsd rpc/rpcsec_gss/rpcsec_gss.c optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi rpc/rpcsec_gss/rpcsec_gss_conf.c optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi rpc/rpcsec_gss/rpcsec_gss_misc.c optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi rpc/rpcsec_gss/rpcsec_gss_prot.c optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi rpc/rpcsec_gss/svc_rpcsec_gss.c optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi security/audit/audit.c optional audit security/audit/audit_arg.c optional audit security/audit/audit_bsm.c optional audit security/audit/audit_bsm_klib.c optional audit security/audit/audit_pipe.c optional audit security/audit/audit_syscalls.c standard security/audit/audit_trigger.c optional audit security/audit/audit_worker.c optional audit security/audit/bsm_domain.c optional audit security/audit/bsm_errno.c optional audit security/audit/bsm_fcntl.c optional audit security/audit/bsm_socket_type.c optional audit security/audit/bsm_token.c optional audit security/mac/mac_audit.c optional mac audit security/mac/mac_cred.c optional mac security/mac/mac_framework.c optional mac security/mac/mac_inet.c optional mac inet | mac inet6 security/mac/mac_inet6.c optional mac inet6 security/mac/mac_label.c optional mac security/mac/mac_net.c optional mac security/mac/mac_pipe.c optional mac security/mac/mac_posix_sem.c optional mac security/mac/mac_posix_shm.c optional mac security/mac/mac_priv.c optional mac security/mac/mac_process.c optional mac security/mac/mac_socket.c optional mac security/mac/mac_syscalls.c standard security/mac/mac_system.c optional mac security/mac/mac_sysv_msg.c optional mac security/mac/mac_sysv_sem.c optional mac security/mac/mac_sysv_shm.c optional mac security/mac/mac_vfs.c optional mac security/mac_biba/mac_biba.c optional mac_biba security/mac_bsdextended/mac_bsdextended.c optional mac_bsdextended security/mac_bsdextended/ugidfw_system.c optional mac_bsdextended security/mac_bsdextended/ugidfw_vnode.c optional mac_bsdextended security/mac_ifoff/mac_ifoff.c optional mac_ifoff security/mac_lomac/mac_lomac.c optional mac_lomac security/mac_mls/mac_mls.c optional mac_mls security/mac_none/mac_none.c optional mac_none security/mac_partition/mac_partition.c optional mac_partition security/mac_portacl/mac_portacl.c optional mac_portacl security/mac_seeotheruids/mac_seeotheruids.c optional mac_seeotheruids security/mac_stub/mac_stub.c optional mac_stub security/mac_test/mac_test.c optional mac_test teken/teken.c optional sc | vt ufs/ffs/ffs_alloc.c optional ffs ufs/ffs/ffs_balloc.c optional ffs ufs/ffs/ffs_inode.c optional ffs ufs/ffs/ffs_snapshot.c optional ffs ufs/ffs/ffs_softdep.c optional ffs ufs/ffs/ffs_subr.c optional ffs ufs/ffs/ffs_tables.c optional ffs ufs/ffs/ffs_vfsops.c optional ffs ufs/ffs/ffs_vnops.c optional ffs ufs/ffs/ffs_rawread.c optional ffs directio ufs/ffs/ffs_suspend.c optional ffs ufs/ufs/ufs_acl.c optional ffs ufs/ufs/ufs_bmap.c optional ffs ufs/ufs/ufs_dirhash.c optional ffs ufs/ufs/ufs_extattr.c optional ffs ufs/ufs/ufs_gjournal.c optional ffs UFS_GJOURNAL ufs/ufs/ufs_inode.c optional ffs ufs/ufs/ufs_lookup.c optional ffs ufs/ufs/ufs_quota.c optional ffs ufs/ufs/ufs_vfsops.c optional ffs ufs/ufs/ufs_vnops.c optional ffs vm/default_pager.c standard vm/device_pager.c standard vm/phys_pager.c standard vm/redzone.c optional DEBUG_REDZONE vm/sg_pager.c standard vm/swap_pager.c standard vm/uma_core.c standard vm/uma_dbg.c standard vm/memguard.c optional DEBUG_MEMGUARD vm/vm_fault.c standard vm/vm_glue.c standard vm/vm_init.c standard vm/vm_kern.c standard vm/vm_map.c standard vm/vm_meter.c standard vm/vm_mmap.c standard vm/vm_object.c standard vm/vm_page.c standard vm/vm_pageout.c standard vm/vm_pager.c standard vm/vm_phys.c standard vm/vm_radix.c standard vm/vm_reserv.c standard vm/vm_domain.c standard vm/vm_unix.c standard vm/vnode_pager.c standard xen/features.c optional xenhvm xen/xenbus/xenbus_if.m optional xenhvm xen/xenbus/xenbus.c optional xenhvm xen/xenbus/xenbusb_if.m optional xenhvm xen/xenbus/xenbusb.c optional xenhvm xen/xenbus/xenbusb_front.c optional xenhvm xen/xenbus/xenbusb_back.c optional xenhvm xen/xenmem/xenmem_if.m optional xenhvm xdr/xdr.c optional krpc | nfslockd | nfscl | nfsd xdr/xdr_array.c optional krpc | nfslockd | nfscl | nfsd xdr/xdr_mbuf.c optional krpc | nfslockd | nfscl | nfsd xdr/xdr_mem.c optional krpc | nfslockd | nfscl | nfsd xdr/xdr_reference.c optional krpc | nfslockd | nfscl | nfsd xdr/xdr_sizeof.c optional krpc | nfslockd | nfscl | nfsd diff --git a/sys/conf/options b/sys/conf/options index 39e26a333d3b..9004832b1b36 100644 --- a/sys/conf/options +++ b/sys/conf/options @@ -1,995 +1,996 @@ # $FreeBSD$ # # On the handling of kernel options # # All kernel options should be listed in NOTES, with suitable # descriptions. Negative options (options that make some code not # compile) should be commented out; LINT (generated from NOTES) should # compile as much code as possible. Try to structure option-using # code so that a single option only switch code on, or only switch # code off, to make it possible to have a full compile-test. If # necessary, you can check for COMPILING_LINT to get maximum code # coverage. # # All new options shall also be listed in either "conf/options" or # "conf/options.". Options that affect a single source-file # .[c|s] should be directed into "opt_.h", while options # that affect multiple files should either go in "opt_global.h" if # this is a kernel-wide option (used just about everywhere), or in # "opt_.h" if it affects only some files. # Note that the effect of listing only an option without a # header-file-name in conf/options (and cousins) is that the last # convention is followed. # # This handling scheme is not yet fully implemented. # # # Format of this file: # Option name filename # # If filename is missing, the default is # opt_.h AAC_DEBUG opt_aac.h AACRAID_DEBUG opt_aacraid.h AHC_ALLOW_MEMIO opt_aic7xxx.h AHC_TMODE_ENABLE opt_aic7xxx.h AHC_DUMP_EEPROM opt_aic7xxx.h AHC_DEBUG opt_aic7xxx.h AHC_DEBUG_OPTS opt_aic7xxx.h AHC_REG_PRETTY_PRINT opt_aic7xxx.h AHD_DEBUG opt_aic79xx.h AHD_DEBUG_OPTS opt_aic79xx.h AHD_TMODE_ENABLE opt_aic79xx.h AHD_REG_PRETTY_PRINT opt_aic79xx.h ADW_ALLOW_MEMIO opt_adw.h TWA_DEBUG opt_twa.h TWA_FLASH_FIRMWARE opt_twa.h # Debugging options. ALT_BREAK_TO_DEBUGGER opt_kdb.h BREAK_TO_DEBUGGER opt_kdb.h DDB DDB_BUFR_SIZE opt_ddb.h DDB_CAPTURE_DEFAULTBUFSIZE opt_ddb.h DDB_CAPTURE_MAXBUFSIZE opt_ddb.h DDB_CTF opt_ddb.h DDB_NUMSYM opt_ddb.h GDB KDB opt_global.h KDB_TRACE opt_kdb.h KDB_UNATTENDED opt_kdb.h KLD_DEBUG opt_kld.h SYSCTL_DEBUG opt_sysctl.h EARLY_PRINTF opt_global.h TEXTDUMP_PREFERRED opt_ddb.h TEXTDUMP_VERBOSE opt_ddb.h NUM_CORE_FILES opt_global.h # Miscellaneous options. ADAPTIVE_LOCKMGRS ALQ ALTERA_SDCARD_FAST_SIM opt_altera_sdcard.h ATSE_CFI_HACK opt_cfi.h AUDIT opt_global.h BOOTHOWTO opt_global.h BOOTVERBOSE opt_global.h CALLOUT_PROFILING CAPABILITIES opt_capsicum.h CAPABILITY_MODE opt_capsicum.h COMPAT_43 opt_compat.h COMPAT_43TTY opt_compat.h COMPAT_FREEBSD4 opt_compat.h COMPAT_FREEBSD5 opt_compat.h COMPAT_FREEBSD6 opt_compat.h COMPAT_FREEBSD7 opt_compat.h COMPAT_FREEBSD9 opt_compat.h COMPAT_FREEBSD10 opt_compat.h COMPAT_CLOUDABI32 opt_dontuse.h COMPAT_CLOUDABI64 opt_dontuse.h COMPAT_LINUXKPI opt_compat.h COMPILING_LINT opt_global.h CY_PCI_FASTINTR DEADLKRES opt_watchdog.h DEVICE_NUMA EXT_RESOURCES opt_global.h DIRECTIO FILEMON opt_dontuse.h FFCLOCK FULL_PREEMPTION opt_sched.h GZIO opt_gzio.h IMAGACT_BINMISC opt_dontuse.h IPI_PREEMPTION opt_sched.h GEOM_AES opt_geom.h GEOM_BDE opt_geom.h GEOM_BSD opt_geom.h GEOM_CACHE opt_geom.h GEOM_CONCAT opt_geom.h GEOM_ELI opt_geom.h GEOM_FOX opt_geom.h GEOM_GATE opt_geom.h GEOM_JOURNAL opt_geom.h GEOM_LABEL opt_geom.h GEOM_LABEL_GPT opt_geom.h GEOM_LINUX_LVM opt_geom.h GEOM_MAP opt_geom.h GEOM_MBR opt_geom.h GEOM_MIRROR opt_geom.h GEOM_MOUNTVER opt_geom.h GEOM_MULTIPATH opt_geom.h GEOM_NOP opt_geom.h GEOM_PART_APM opt_geom.h GEOM_PART_BSD opt_geom.h GEOM_PART_BSD64 opt_geom.h GEOM_PART_EBR opt_geom.h GEOM_PART_EBR_COMPAT opt_geom.h GEOM_PART_GPT opt_geom.h GEOM_PART_LDM opt_geom.h GEOM_PART_MBR opt_geom.h GEOM_PART_PC98 opt_geom.h GEOM_PART_VTOC8 opt_geom.h GEOM_PC98 opt_geom.h GEOM_RAID opt_geom.h GEOM_RAID3 opt_geom.h GEOM_SHSEC opt_geom.h GEOM_STRIPE opt_geom.h GEOM_SUNLABEL opt_geom.h GEOM_UZIP opt_geom.h GEOM_UZIP_DEBUG opt_geom.h GEOM_VINUM opt_geom.h GEOM_VIRSTOR opt_geom.h GEOM_VOL opt_geom.h GEOM_ZERO opt_geom.h IFLIB opt_iflib.h KDTRACE_HOOKS opt_global.h KDTRACE_FRAME opt_kdtrace.h KN_HASHSIZE opt_kqueue.h KSTACK_MAX_PAGES KSTACK_PAGES KSTACK_USAGE_PROF KTRACE KTRACE_REQUEST_POOL opt_ktrace.h LIBICONV MAC opt_global.h MAC_BIBA opt_dontuse.h MAC_BSDEXTENDED opt_dontuse.h MAC_IFOFF opt_dontuse.h MAC_LOMAC opt_dontuse.h MAC_MLS opt_dontuse.h MAC_NONE opt_dontuse.h MAC_PARTITION opt_dontuse.h MAC_PORTACL opt_dontuse.h MAC_SEEOTHERUIDS opt_dontuse.h MAC_STATIC opt_mac.h MAC_STUB opt_dontuse.h MAC_TEST opt_dontuse.h MD_ROOT opt_md.h MD_ROOT_FSTYPE opt_md.h MD_ROOT_SIZE opt_md.h MFI_DEBUG opt_mfi.h MFI_DECODE_LOG opt_mfi.h MPROF_BUFFERS opt_mprof.h MPROF_HASH_SIZE opt_mprof.h NEW_PCIB opt_global.h NO_ADAPTIVE_MUTEXES opt_adaptive_mutexes.h NO_ADAPTIVE_RWLOCKS NO_ADAPTIVE_SX NO_EVENTTIMERS opt_timer.h NO_SYSCTL_DESCR opt_global.h NSWBUF_MIN opt_swap.h MBUF_PACKET_ZONE_DISABLE opt_global.h PANIC_REBOOT_WAIT_TIME opt_panic.h PCI_HP opt_pci.h PCI_IOV opt_global.h PPC_DEBUG opt_ppc.h PPC_PROBE_CHIPSET opt_ppc.h PPS_SYNC opt_ntp.h PREEMPTION opt_sched.h QUOTA SCHED_4BSD opt_sched.h SCHED_STATS opt_sched.h SCHED_ULE opt_sched.h SLEEPQUEUE_PROFILING SLHCI_DEBUG opt_slhci.h SPX_HACK STACK opt_stack.h SUIDDIR MSGMNB opt_sysvipc.h MSGMNI opt_sysvipc.h MSGSEG opt_sysvipc.h MSGSSZ opt_sysvipc.h MSGTQL opt_sysvipc.h SEMMNI opt_sysvipc.h SEMMNS opt_sysvipc.h SEMMNU opt_sysvipc.h SEMMSL opt_sysvipc.h SEMOPM opt_sysvipc.h SEMUME opt_sysvipc.h SHMALL opt_sysvipc.h SHMMAX opt_sysvipc.h SHMMAXPGS opt_sysvipc.h SHMMIN opt_sysvipc.h SHMMNI opt_sysvipc.h SHMSEG opt_sysvipc.h SYSVMSG opt_sysvipc.h SYSVSEM opt_sysvipc.h SYSVSHM opt_sysvipc.h SW_WATCHDOG opt_watchdog.h TURNSTILE_PROFILING UMTX_PROFILING VERBOSE_SYSINIT # POSIX kernel options P1003_1B_MQUEUE opt_posix.h P1003_1B_SEMAPHORES opt_posix.h _KPOSIX_PRIORITY_SCHEDULING opt_posix.h # Do we want the config file compiled into the kernel? INCLUDE_CONFIG_FILE opt_config.h # Options for static filesystems. These should only be used at config # time, since the corresponding lkms cannot work if there are any static # dependencies. Unusability is enforced by hiding the defines for the # options in a never-included header. AUTOFS opt_dontuse.h CD9660 opt_dontuse.h EXT2FS opt_dontuse.h FDESCFS opt_dontuse.h FFS opt_dontuse.h FUSE opt_dontuse.h MSDOSFS opt_dontuse.h NANDFS opt_dontuse.h NULLFS opt_dontuse.h PROCFS opt_dontuse.h PSEUDOFS opt_dontuse.h SMBFS opt_dontuse.h TMPFS opt_dontuse.h UDF opt_dontuse.h UNIONFS opt_dontuse.h ZFS opt_dontuse.h # Pseudofs debugging PSEUDOFS_TRACE opt_pseudofs.h # In-kernel GSS-API KGSSAPI opt_kgssapi.h KGSSAPI_DEBUG opt_kgssapi.h # These static filesystems have one slightly bogus static dependency in # sys/i386/i386/autoconf.c. If any of these filesystems are # statically compiled into the kernel, code for mounting them as root # filesystems will be enabled - but look below. # NFSCL - client # NFSD - server NFSCL opt_nfs.h NFSD opt_nfs.h # filesystems and libiconv bridge CD9660_ICONV opt_dontuse.h MSDOSFS_ICONV opt_dontuse.h UDF_ICONV opt_dontuse.h # If you are following the conditions in the copyright, # you can enable soft-updates which will speed up a lot of thigs # and make the system safer from crashes at the same time. # otherwise a STUB module will be compiled in. SOFTUPDATES opt_ffs.h # On small, embedded systems, it can be useful to turn off support for # snapshots. It saves about 30-40k for a feature that would be lightly # used, if it is used at all. NO_FFS_SNAPSHOT opt_ffs.h # Enabling this option turns on support for Access Control Lists in UFS, # which can be used to support high security configurations. Depends on # UFS_EXTATTR. UFS_ACL opt_ufs.h # Enabling this option turns on support for extended attributes in UFS-based # filesystems, which can be used to support high security configurations # as well as new filesystem features. UFS_EXTATTR opt_ufs.h UFS_EXTATTR_AUTOSTART opt_ufs.h # Enable fast hash lookups for large directories on UFS-based filesystems. UFS_DIRHASH opt_ufs.h # Enable gjournal-based UFS journal. UFS_GJOURNAL opt_ufs.h # The below sentence is not in English, and neither is this one. # We plan to remove the static dependences above, with a # _ROOT option to control if it usable as root. This list # allows these options to be present in config files already (though # they won't make any difference yet). NFS_ROOT opt_nfsroot.h # SMB/CIFS requester NETSMB opt_netsmb.h # Options used only in subr_param.c. HZ opt_param.h MAXFILES opt_param.h NBUF opt_param.h NSFBUFS opt_param.h VM_BCACHE_SIZE_MAX opt_param.h VM_SWZONE_SIZE_MAX opt_param.h MAXUSERS DFLDSIZ opt_param.h MAXDSIZ opt_param.h MAXSSIZ opt_param.h # Generic SCSI options. CAM_MAX_HIGHPOWER opt_cam.h CAMDEBUG opt_cam.h CAM_DEBUG_COMPILE opt_cam.h CAM_DEBUG_DELAY opt_cam.h CAM_DEBUG_BUS opt_cam.h CAM_DEBUG_TARGET opt_cam.h CAM_DEBUG_LUN opt_cam.h CAM_DEBUG_FLAGS opt_cam.h CAM_BOOT_DELAY opt_cam.h CAM_IOSCHED_DYNAMIC opt_cam.h SCSI_DELAY opt_scsi.h SCSI_NO_SENSE_STRINGS opt_scsi.h SCSI_NO_OP_STRINGS opt_scsi.h # Options used only in cam/ata/ata_da.c ADA_TEST_FAILURE opt_ada.h ATA_STATIC_ID opt_ada.h # Options used only in cam/scsi/scsi_cd.c CHANGER_MIN_BUSY_SECONDS opt_cd.h CHANGER_MAX_BUSY_SECONDS opt_cd.h # Options used only in cam/scsi/scsi_sa.c. SA_IO_TIMEOUT opt_sa.h SA_SPACE_TIMEOUT opt_sa.h SA_REWIND_TIMEOUT opt_sa.h SA_ERASE_TIMEOUT opt_sa.h SA_1FM_AT_EOD opt_sa.h # Options used only in cam/scsi/scsi_pt.c SCSI_PT_DEFAULT_TIMEOUT opt_pt.h # Options used only in cam/scsi/scsi_ses.c SES_ENABLE_PASSTHROUGH opt_ses.h # Options used in dev/sym/ (Symbios SCSI driver). SYM_SETUP_LP_PROBE_MAP opt_sym.h #-Low Priority Probe Map (bits) # Allows the ncr to take precedence # 1 (1<<0) -> 810a, 860 # 2 (1<<1) -> 825a, 875, 885, 895 # 4 (1<<2) -> 895a, 896, 1510d SYM_SETUP_SCSI_DIFF opt_sym.h #-HVD support for 825a, 875, 885 # disabled:0 (default), enabled:1 SYM_SETUP_PCI_PARITY opt_sym.h #-PCI parity checking # disabled:0, enabled:1 (default) SYM_SETUP_MAX_LUN opt_sym.h #-Number of LUNs supported # default:8, range:[1..64] # Options used only in dev/ncr/* SCSI_NCR_DEBUG opt_ncr.h SCSI_NCR_MAX_SYNC opt_ncr.h SCSI_NCR_MAX_WIDE opt_ncr.h SCSI_NCR_MYADDR opt_ncr.h # Options used only in dev/isp/* ISP_TARGET_MODE opt_isp.h ISP_FW_CRASH_DUMP opt_isp.h ISP_DEFAULT_ROLES opt_isp.h ISP_INTERNAL_TARGET opt_isp.h # Options used only in dev/iscsi ISCSI_INITIATOR_DEBUG opt_iscsi_initiator.h # Net stuff. ACCEPT_FILTER_DATA ACCEPT_FILTER_DNS ACCEPT_FILTER_HTTP ALTQ opt_global.h ALTQ_CBQ opt_altq.h ALTQ_CDNR opt_altq.h ALTQ_CODEL opt_altq.h ALTQ_DEBUG opt_altq.h ALTQ_HFSC opt_altq.h ALTQ_FAIRQ opt_altq.h ALTQ_NOPCC opt_altq.h ALTQ_PRIQ opt_altq.h ALTQ_RED opt_altq.h ALTQ_RIO opt_altq.h BOOTP opt_bootp.h BOOTP_BLOCKSIZE opt_bootp.h BOOTP_COMPAT opt_bootp.h BOOTP_NFSROOT opt_bootp.h BOOTP_NFSV3 opt_bootp.h BOOTP_WIRED_TO opt_bootp.h DEVICE_POLLING DUMMYNET opt_ipdn.h INET opt_inet.h INET6 opt_inet6.h IPDIVERT IPFILTER opt_ipfilter.h IPFILTER_DEFAULT_BLOCK opt_ipfilter.h IPFILTER_LOG opt_ipfilter.h IPFILTER_LOOKUP opt_ipfilter.h IPFIREWALL opt_ipfw.h IPFIREWALL_DEFAULT_TO_ACCEPT opt_ipfw.h IPFIREWALL_NAT opt_ipfw.h IPFIREWALL_NAT64 opt_ipfw.h IPFIREWALL_NAT64_DIRECT_OUTPUT opt_ipfw.h IPFIREWALL_NPTV6 opt_ipfw.h IPFIREWALL_VERBOSE opt_ipfw.h IPFIREWALL_VERBOSE_LIMIT opt_ipfw.h IPSEC opt_ipsec.h IPSEC_DEBUG opt_ipsec.h IPSEC_NAT_T opt_ipsec.h IPSTEALTH KRPC LIBALIAS LIBMBPOOL LIBMCHAIN MBUF_PROFILING MBUF_STRESS_TEST MROUTING opt_mrouting.h NFSLOCKD PCBGROUP opt_pcbgroup.h PF_DEFAULT_TO_DROP opt_pf.h RADIX_MPATH opt_mpath.h ROUTETABLES opt_route.h RSS opt_rss.h SLIP_IFF_OPTS opt_slip.h TCPDEBUG TCPPCAP opt_global.h SIFTR TCP_HHOOK opt_inet.h TCP_OFFLOAD opt_inet.h # Enable code to dispatch TCP offloading TCP_RFC7413 opt_inet.h TCP_RFC7413_MAX_KEYS opt_inet.h TCP_SIGNATURE opt_inet.h VLAN_ARRAY opt_vlan.h XBONEHACK FLOWTABLE opt_route.h FLOWTABLE_HASH_ALL opt_route.h # # SCTP # SCTP opt_sctp.h SCTP_DEBUG opt_sctp.h # Enable debug printfs SCTP_WITH_NO_CSUM opt_sctp.h # Use this at your peril SCTP_LOCK_LOGGING opt_sctp.h # Log to KTR lock activity SCTP_MBUF_LOGGING opt_sctp.h # Log to KTR general mbuf aloc/free SCTP_MBCNT_LOGGING opt_sctp.h # Log to KTR mbcnt activity SCTP_PACKET_LOGGING opt_sctp.h # Log to a packet buffer last N packets SCTP_LTRACE_CHUNKS opt_sctp.h # Log to KTR chunks processed SCTP_LTRACE_ERRORS opt_sctp.h # Log to KTR error returns. SCTP_USE_PERCPU_STAT opt_sctp.h # Use per cpu stats. SCTP_MCORE_INPUT opt_sctp.h # Have multiple input threads for input mbufs SCTP_LOCAL_TRACE_BUF opt_sctp.h # Use tracebuffer exported via sysctl SCTP_DETAILED_STR_STATS opt_sctp.h # Use per PR-SCTP policy stream stats # # # # Netgraph(4). Use option NETGRAPH to enable the base netgraph code. # Each netgraph node type can be either be compiled into the kernel # or loaded dynamically. To get the former, include the corresponding # option below. Each type has its own man page, e.g. ng_async(4). NETGRAPH NETGRAPH_DEBUG opt_netgraph.h NETGRAPH_ASYNC opt_netgraph.h NETGRAPH_ATMLLC opt_netgraph.h NETGRAPH_ATM_ATMPIF opt_netgraph.h NETGRAPH_BLUETOOTH opt_netgraph.h NETGRAPH_BLUETOOTH_BT3C opt_netgraph.h NETGRAPH_BLUETOOTH_H4 opt_netgraph.h NETGRAPH_BLUETOOTH_HCI opt_netgraph.h NETGRAPH_BLUETOOTH_L2CAP opt_netgraph.h NETGRAPH_BLUETOOTH_SOCKET opt_netgraph.h NETGRAPH_BLUETOOTH_UBT opt_netgraph.h NETGRAPH_BLUETOOTH_UBTBCMFW opt_netgraph.h NETGRAPH_BPF opt_netgraph.h NETGRAPH_BRIDGE opt_netgraph.h NETGRAPH_CAR opt_netgraph.h NETGRAPH_CISCO opt_netgraph.h NETGRAPH_DEFLATE opt_netgraph.h NETGRAPH_DEVICE opt_netgraph.h NETGRAPH_ECHO opt_netgraph.h NETGRAPH_EIFACE opt_netgraph.h NETGRAPH_ETHER opt_netgraph.h NETGRAPH_ETHER_ECHO opt_netgraph.h NETGRAPH_FEC opt_netgraph.h NETGRAPH_FRAME_RELAY opt_netgraph.h NETGRAPH_GIF opt_netgraph.h NETGRAPH_GIF_DEMUX opt_netgraph.h NETGRAPH_HOLE opt_netgraph.h NETGRAPH_IFACE opt_netgraph.h NETGRAPH_IP_INPUT opt_netgraph.h NETGRAPH_IPFW opt_netgraph.h NETGRAPH_KSOCKET opt_netgraph.h NETGRAPH_L2TP opt_netgraph.h NETGRAPH_LMI opt_netgraph.h # MPPC compression requires proprietary files (not included) NETGRAPH_MPPC_COMPRESSION opt_netgraph.h NETGRAPH_MPPC_ENCRYPTION opt_netgraph.h NETGRAPH_NAT opt_netgraph.h NETGRAPH_NETFLOW opt_netgraph.h NETGRAPH_ONE2MANY opt_netgraph.h NETGRAPH_PATCH opt_netgraph.h NETGRAPH_PIPE opt_netgraph.h NETGRAPH_PPP opt_netgraph.h NETGRAPH_PPPOE opt_netgraph.h NETGRAPH_PPTPGRE opt_netgraph.h NETGRAPH_PRED1 opt_netgraph.h NETGRAPH_RFC1490 opt_netgraph.h NETGRAPH_SOCKET opt_netgraph.h NETGRAPH_SPLIT opt_netgraph.h NETGRAPH_SPPP opt_netgraph.h NETGRAPH_TAG opt_netgraph.h NETGRAPH_TCPMSS opt_netgraph.h NETGRAPH_TEE opt_netgraph.h NETGRAPH_TTY opt_netgraph.h NETGRAPH_UI opt_netgraph.h NETGRAPH_VJC opt_netgraph.h NETGRAPH_VLAN opt_netgraph.h # NgATM options NGATM_ATM opt_netgraph.h NGATM_ATMBASE opt_netgraph.h NGATM_SSCOP opt_netgraph.h NGATM_SSCFU opt_netgraph.h NGATM_UNI opt_netgraph.h NGATM_CCATM opt_netgraph.h # DRM options DRM_DEBUG opt_drm.h TI_SF_BUF_JUMBO opt_ti.h TI_JUMBO_HDRSPLIT opt_ti.h # XXX Conflict: # of devices vs network protocol (Native ATM). # This makes "atm.h" unusable. NATM # DPT driver debug flags DPT_MEASURE_PERFORMANCE opt_dpt.h DPT_RESET_HBA opt_dpt.h # Misc debug flags. Most of these should probably be replaced with # 'DEBUG', and then let people recompile just the interesting modules # with 'make CC="cc -DDEBUG"'. CLUSTERDEBUG opt_debug_cluster.h DEBUG_1284 opt_ppb_1284.h VP0_DEBUG opt_vpo.h LPT_DEBUG opt_lpt.h PLIP_DEBUG opt_plip.h LOCKF_DEBUG opt_debug_lockf.h SI_DEBUG opt_debug_si.h IFMEDIA_DEBUG opt_ifmedia.h # Fb options FB_DEBUG opt_fb.h FB_INSTALL_CDEV opt_fb.h # ppbus related options PERIPH_1284 opt_ppb_1284.h DONTPROBE_1284 opt_ppb_1284.h # smbus related options ENABLE_ALART opt_intpm.h # These cause changes all over the kernel BLKDEV_IOSIZE opt_global.h BURN_BRIDGES opt_global.h DEBUG opt_global.h DEBUG_LOCKS opt_global.h DEBUG_VFS_LOCKS opt_global.h DFLTPHYS opt_global.h DIAGNOSTIC opt_global.h INVARIANT_SUPPORT opt_global.h INVARIANTS opt_global.h MAXCPU opt_global.h MAXMEMDOM opt_global.h MAXPHYS opt_global.h MCLSHIFT opt_global.h MUTEX_NOINLINE opt_global.h LOCK_PROFILING opt_global.h LOCK_PROFILING_FAST opt_global.h MSIZE opt_global.h REGRESSION opt_global.h RWLOCK_NOINLINE opt_global.h SX_NOINLINE opt_global.h VFS_BIO_DEBUG opt_global.h # These are VM related options VM_KMEM_SIZE opt_vm.h VM_KMEM_SIZE_SCALE opt_vm.h VM_KMEM_SIZE_MAX opt_vm.h VM_NRESERVLEVEL opt_vm.h VM_NUMA_ALLOC opt_vm.h VM_LEVEL_0_ORDER opt_vm.h NO_SWAPPING opt_vm.h MALLOC_MAKE_FAILURES opt_vm.h MALLOC_PROFILE opt_vm.h MALLOC_DEBUG_MAXZONES opt_vm.h # The MemGuard replacement allocator used for tamper-after-free detection DEBUG_MEMGUARD opt_vm.h # The RedZone malloc(9) protection DEBUG_REDZONE opt_vm.h # Standard SMP options EARLY_AP_STARTUP opt_global.h SMP opt_global.h # Size of the kernel message buffer MSGBUF_SIZE opt_msgbuf.h # NFS options NFS_MINATTRTIMO opt_nfs.h NFS_MAXATTRTIMO opt_nfs.h NFS_MINDIRATTRTIMO opt_nfs.h NFS_MAXDIRATTRTIMO opt_nfs.h NFS_DEBUG opt_nfs.h # For the Bt848/Bt848A/Bt849/Bt878/Bt879 driver OVERRIDE_CARD opt_bktr.h OVERRIDE_TUNER opt_bktr.h OVERRIDE_DBX opt_bktr.h OVERRIDE_MSP opt_bktr.h BROOKTREE_SYSTEM_DEFAULT opt_bktr.h BROOKTREE_ALLOC_PAGES opt_bktr.h BKTR_OVERRIDE_CARD opt_bktr.h BKTR_OVERRIDE_TUNER opt_bktr.h BKTR_OVERRIDE_DBX opt_bktr.h BKTR_OVERRIDE_MSP opt_bktr.h BKTR_SYSTEM_DEFAULT opt_bktr.h BKTR_ALLOC_PAGES opt_bktr.h BKTR_USE_PLL opt_bktr.h BKTR_GPIO_ACCESS opt_bktr.h BKTR_NO_MSP_RESET opt_bktr.h BKTR_430_FX_MODE opt_bktr.h BKTR_SIS_VIA_MODE opt_bktr.h BKTR_USE_FREEBSD_SMBUS opt_bktr.h BKTR_NEW_MSP34XX_DRIVER opt_bktr.h # Options for uart(4) UART_PPS_ON_CTS opt_uart.h UART_POLL_FREQ opt_uart.h UART_DEV_TOLERANCE_PCT opt_uart.h # options for bus/device framework BUS_DEBUG opt_bus.h # options for USB support USB_DEBUG opt_usb.h USB_HOST_ALIGN opt_usb.h USB_REQ_DEBUG opt_usb.h USB_TEMPLATE opt_usb.h USB_VERBOSE opt_usb.h USB_DMA_SINGLE_ALLOC opt_usb.h USB_EHCI_BIG_ENDIAN_DESC opt_usb.h U3G_DEBUG opt_u3g.h UKBD_DFLT_KEYMAP opt_ukbd.h UPLCOM_INTR_INTERVAL opt_uplcom.h UVSCOM_DEFAULT_OPKTSIZE opt_uvscom.h UVSCOM_INTR_INTERVAL opt_uvscom.h -# options for the Realtek RTL8188*U/RTL8192CU driver (urtwn) -URTWN_WITHOUT_UCODE opt_urtwn.h +# options for the Realtek rtwn driver +RTWN_DEBUG opt_rtwn.h +RTWN_WITHOUT_UCODE opt_rtwn.h # Embedded system options INIT_PATH ROOTDEVNAME FDC_DEBUG opt_fdc.h PCFCLOCK_VERBOSE opt_pcfclock.h PCFCLOCK_MAX_RETRIES opt_pcfclock.h KTR opt_global.h KTR_ALQ opt_ktr.h KTR_MASK opt_ktr.h KTR_CPUMASK opt_ktr.h KTR_COMPILE opt_global.h KTR_BOOT_ENTRIES opt_global.h KTR_ENTRIES opt_global.h KTR_VERBOSE opt_ktr.h WITNESS opt_global.h WITNESS_KDB opt_witness.h WITNESS_NO_VNODE opt_witness.h WITNESS_SKIPSPIN opt_witness.h WITNESS_COUNT opt_witness.h OPENSOLARIS_WITNESS opt_global.h # options for ACPI support ACPI_DEBUG opt_acpi.h ACPI_MAX_TASKS opt_acpi.h ACPI_MAX_THREADS opt_acpi.h ACPI_DMAR opt_acpi.h DEV_ACPI opt_acpi.h # ISA support DEV_ISA opt_isa.h ISAPNP opt_isa.h # various 'device presence' options. DEV_BPF opt_bpf.h DEV_CARP opt_carp.h DEV_MCA opt_mca.h DEV_NETMAP opt_global.h DEV_PCI opt_pci.h DEV_PF opt_pf.h DEV_PFLOG opt_pf.h DEV_PFSYNC opt_pf.h DEV_RANDOM opt_global.h DEV_SPLASH opt_splash.h DEV_VLAN opt_vlan.h # EISA support DEV_EISA opt_eisa.h EISA_SLOTS opt_eisa.h # ed driver ED_HPP opt_ed.h ED_3C503 opt_ed.h ED_SIC opt_ed.h # bce driver BCE_DEBUG opt_bce.h BCE_NVRAM_WRITE_SUPPORT opt_bce.h SOCKBUF_DEBUG opt_global.h # options for ubsec driver UBSEC_DEBUG opt_ubsec.h UBSEC_RNDTEST opt_ubsec.h UBSEC_NO_RNG opt_ubsec.h # options for hifn driver HIFN_DEBUG opt_hifn.h HIFN_RNDTEST opt_hifn.h # options for safenet driver SAFE_DEBUG opt_safe.h SAFE_NO_RNG opt_safe.h SAFE_RNDTEST opt_safe.h # syscons/vt options MAXCONS opt_syscons.h SC_ALT_MOUSE_IMAGE opt_syscons.h SC_CUT_SPACES2TABS opt_syscons.h SC_CUT_SEPCHARS opt_syscons.h SC_DEBUG_LEVEL opt_syscons.h SC_DFLT_FONT opt_syscons.h SC_DISABLE_KDBKEY opt_syscons.h SC_DISABLE_REBOOT opt_syscons.h SC_HISTORY_SIZE opt_syscons.h SC_KERNEL_CONS_ATTR opt_syscons.h SC_KERNEL_CONS_REV_ATTR opt_syscons.h SC_MOUSE_CHAR opt_syscons.h SC_NO_CUTPASTE opt_syscons.h SC_NO_FONT_LOADING opt_syscons.h SC_NO_HISTORY opt_syscons.h SC_NO_MODE_CHANGE opt_syscons.h SC_NO_SUSPEND_VTYSWITCH opt_syscons.h SC_NO_SYSMOUSE opt_syscons.h SC_NORM_ATTR opt_syscons.h SC_NORM_REV_ATTR opt_syscons.h SC_PIXEL_MODE opt_syscons.h SC_RENDER_DEBUG opt_syscons.h SC_TWOBUTTON_MOUSE opt_syscons.h VT_ALT_TO_ESC_HACK opt_syscons.h VT_FB_DEFAULT_WIDTH opt_syscons.h VT_FB_DEFAULT_HEIGHT opt_syscons.h VT_MAXWINDOWS opt_syscons.h VT_TWOBUTTON_MOUSE opt_syscons.h DEV_SC opt_syscons.h DEV_VT opt_syscons.h # teken terminal emulator options TEKEN_CONS25 opt_teken.h TEKEN_UTF8 opt_teken.h TERMINAL_KERN_ATTR opt_teken.h TERMINAL_NORM_ATTR opt_teken.h # options for printf PRINTF_BUFR_SIZE opt_printf.h # kbd options KBD_DISABLE_KEYMAP_LOAD opt_kbd.h KBD_INSTALL_CDEV opt_kbd.h KBD_MAXRETRY opt_kbd.h KBD_MAXWAIT opt_kbd.h KBD_RESETDELAY opt_kbd.h KBDIO_DEBUG opt_kbd.h KBDMUX_DFLT_KEYMAP opt_kbdmux.h # options for the Atheros driver ATH_DEBUG opt_ath.h ATH_TXBUF opt_ath.h ATH_RXBUF opt_ath.h ATH_DIAGAPI opt_ath.h ATH_TX99_DIAG opt_ath.h ATH_ENABLE_11N opt_ath.h ATH_ENABLE_DFS opt_ath.h ATH_EEPROM_FIRMWARE opt_ath.h ATH_ENABLE_RADIOTAP_VENDOR_EXT opt_ath.h ATH_DEBUG_ALQ opt_ath.h ATH_KTR_INTR_DEBUG opt_ath.h # options for the Atheros hal AH_SUPPORT_AR5416 opt_ah.h # XXX For now, this breaks non-AR9130 chipsets, so only use it # XXX when actually targeting AR9130. AH_SUPPORT_AR9130 opt_ah.h # This is required for AR933x SoC support AH_SUPPORT_AR9330 opt_ah.h AH_SUPPORT_AR9340 opt_ah.h AH_SUPPORT_QCA9530 opt_ah.h AH_SUPPORT_QCA9550 opt_ah.h AH_DEBUG opt_ah.h AH_ASSERT opt_ah.h AH_DEBUG_ALQ opt_ah.h AH_REGOPS_FUNC opt_ah.h AH_WRITE_REGDOMAIN opt_ah.h AH_DEBUG_COUNTRY opt_ah.h AH_WRITE_EEPROM opt_ah.h AH_PRIVATE_DIAG opt_ah.h AH_NEED_DESC_SWAP opt_ah.h AH_USE_INIPDGAIN opt_ah.h AH_MAXCHAN opt_ah.h AH_RXCFG_SDMAMW_4BYTES opt_ah.h AH_INTERRUPT_DEBUGGING opt_ah.h # AR5416 and later interrupt mitigation # XXX do not use this for AR9130 AH_AR5416_INTERRUPT_MITIGATION opt_ah.h # options for the Broadcom BCM43xx driver (bwi) BWI_DEBUG opt_bwi.h BWI_DEBUG_VERBOSE opt_bwi.h # options for the Brodacom BCM43xx driver (bwn) BWN_DEBUG opt_bwn.h BWN_GPL_PHY opt_bwn.h # Options for the SIBA driver SIBA_DEBUG opt_siba.h # options for the Marvell 8335 wireless driver MALO_DEBUG opt_malo.h MALO_TXBUF opt_malo.h MALO_RXBUF opt_malo.h # options for the Marvell wireless driver MWL_DEBUG opt_mwl.h MWL_TXBUF opt_mwl.h MWL_RXBUF opt_mwl.h MWL_DIAGAPI opt_mwl.h MWL_AGGR_SIZE opt_mwl.h MWL_TX_NODROP opt_mwl.h # Options for the Intel 802.11ac wireless driver IWM_DEBUG opt_iwm.h # Options for the Intel 802.11n wireless driver IWN_DEBUG opt_iwn.h # Options for the Intel 3945ABG wireless driver WPI_DEBUG opt_wpi.h # dcons options DCONS_BUF_SIZE opt_dcons.h DCONS_POLL_HZ opt_dcons.h DCONS_FORCE_CONSOLE opt_dcons.h DCONS_FORCE_GDB opt_dcons.h # HWPMC options HWPMC_DEBUG opt_global.h HWPMC_HOOKS HWPMC_MIPS_BACKTRACE opt_hwpmc_hooks.h # XBOX options for FreeBSD/i386, but some files are MI XBOX opt_xbox.h # Interrupt filtering INTR_FILTER # 802.11 support layer IEEE80211_DEBUG opt_wlan.h IEEE80211_DEBUG_REFCNT opt_wlan.h IEEE80211_AMPDU_AGE opt_wlan.h IEEE80211_SUPPORT_MESH opt_wlan.h IEEE80211_SUPPORT_SUPERG opt_wlan.h IEEE80211_SUPPORT_TDMA opt_wlan.h IEEE80211_ALQ opt_wlan.h IEEE80211_DFS_DEBUG opt_wlan.h # 802.11 TDMA support TDMA_SLOTLEN_DEFAULT opt_tdma.h TDMA_SLOTCNT_DEFAULT opt_tdma.h TDMA_BINTVAL_DEFAULT opt_tdma.h TDMA_TXRATE_11B_DEFAULT opt_tdma.h TDMA_TXRATE_11G_DEFAULT opt_tdma.h TDMA_TXRATE_11A_DEFAULT opt_tdma.h TDMA_TXRATE_TURBO_DEFAULT opt_tdma.h TDMA_TXRATE_HALF_DEFAULT opt_tdma.h TDMA_TXRATE_QUARTER_DEFAULT opt_tdma.h TDMA_TXRATE_11NA_DEFAULT opt_tdma.h TDMA_TXRATE_11NG_DEFAULT opt_tdma.h # VideoMode PICKMODE_DEBUG opt_videomode.h # Network stack virtualization options VIMAGE opt_global.h VNET_DEBUG opt_global.h # Common Flash Interface (CFI) options CFI_SUPPORT_STRATAFLASH opt_cfi.h CFI_ARMEDANDDANGEROUS opt_cfi.h CFI_HARDWAREBYTESWAP opt_cfi.h # Sound options SND_DEBUG opt_snd.h SND_DIAGNOSTIC opt_snd.h SND_FEEDER_MULTIFORMAT opt_snd.h SND_FEEDER_FULL_MULTIFORMAT opt_snd.h SND_FEEDER_RATE_HP opt_snd.h SND_PCM_64 opt_snd.h SND_OLDSTEREO opt_snd.h X86BIOS # Flattened device tree options FDT opt_platform.h FDT_DTB_STATIC opt_platform.h # OFED Infiniband stack OFED opt_ofed.h OFED_DEBUG_INIT opt_ofed.h SDP opt_ofed.h SDP_DEBUG opt_ofed.h IPOIB opt_ofed.h IPOIB_DEBUG opt_ofed.h IPOIB_CM opt_ofed.h # Resource Accounting RACCT opt_global.h RACCT_DEFAULT_TO_DISABLED opt_global.h # Resource Limits RCTL opt_global.h # Random number generator(s) # Which CSPRNG hash we get. # If Yarrow is not chosen, Fortuna is selected. RANDOM_YARROW opt_global.h # With this, no entropy processor is loaded, but the entropy # harvesting infrastructure is present. This means an entropy # processor may be loaded as a module. RANDOM_LOADABLE opt_global.h # This turns on high-rate and potentially expensive harvesting in # the uma slab allocator. RANDOM_ENABLE_UMA opt_global.h # Intel em(4) driver EM_MULTIQUEUE opt_em.h # BHND(4) driver BHND_LOGLEVEL opt_global.h # GPIO and child devices GPIO_SPI_DEBUG opt_gpio.h # evdev protocol support EVDEV_SUPPORT opt_evdev.h EVDEV_DEBUG opt_evdev.h UINPUT_DEBUG opt_evdev.h diff --git a/sys/contrib/dev/rtwn/LICENSE b/sys/contrib/dev/rtwn/LICENSE index d70921f49379..e80b78949d0b 100644 --- a/sys/contrib/dev/rtwn/LICENSE +++ b/sys/contrib/dev/rtwn/LICENSE @@ -1,39 +1,39 @@ -Copyright (c) 2010, Realtek Semiconductor Corporation +Copyright (c) 2010-2011, Realtek Semiconductor Corporation All rights reserved. Redistribution. Redistribution and use in binary form, without modification, are permitted provided that the following conditions are met: * Redistributions must reproduce the above copyright notice and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Realtek Semiconductor Corporation nor the names of its suppliers may be used to endorse or promote products derived from this software without specific prior written permission. * No reverse engineering, decompilation, or disassembly of this software is permitted. Limited patent license. Realtek Semiconductor Corporation grants a world-wide, royalty-free, non-exclusive license under patents it now or hereafter owns or controls to make, have made, use, import, offer to sell and sell ("Utilize") this software, but solely to the extent that any such patent is necessary to Utilize the software alone, or in combination with an operating system licensed under an approved Open Source license as listed by the Open Source Initiative at http://opensource.org/licenses. The patent license shall not apply to any other combinations which include this software. No hardware per se is licensed hereunder. DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/sys/contrib/dev/urtwn/urtwn-rtl8188eufw.fw.uu b/sys/contrib/dev/rtwn/rtwn-rtl8188eufw.fw.uu similarity index 99% rename from sys/contrib/dev/urtwn/urtwn-rtl8188eufw.fw.uu rename to sys/contrib/dev/rtwn/rtwn-rtl8188eufw.fw.uu index 1039230f8cd6..4945886e295a 100644 --- a/sys/contrib/dev/urtwn/urtwn-rtl8188eufw.fw.uu +++ b/sys/contrib/dev/rtwn/rtwn-rtl8188eufw.fw.uu @@ -1,312 +1,312 @@ -begin 644 urtwn-rtl8188eufw.fw.uu +begin 644 rtwn-rtl8188eufw.fw.uu MX8@0``L``0`!(1$G,#8``"T'```````````````````"14X````````````` M````````P6\````````````````````````````````````````````````` M````````````H>8````````"5O<````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M`````,*O@/XR$D($A=`+==`(JN#"C.6*)&?UBN6,-'GUC-*,["2)^.:\`P)T M_\.5@;1``$#.>01X@!;F"'`+PJ_F,.$#1!CVTJ\(V>WJB]`BY0S_(R2!^`\( M"+\$!'\`>('F,.3R`.4,PY]0(`4,=(@E#/CF_::!".:N#+X#`G3_S?CH;6#@ M".;`X(#VY0S3GT`GY0PDB?CFK@R^`P)T__T8YLWXY8%M8`;0X/88@/7E#"2( MR/85#(#3Y0PC)('X?P3"K^8PX`,0X@Q_`##A!S#C!'\(5/14?,;2KU2`0@(BF@70#8`;_"';_W_M_!.1X@/8(]@C?^GB!=C"01=YT`9/`X.23P.!#B0%U MBF!UC'G2C-*O(@/OTY0#0`-__R)T@2\O^.8@Y?3"K^9$,/;2KZX,[L.?4"$. M=(@N^.;Y".88O@,"=/_][6E@"0GG&1GW"0F`\Q86@-KNTY]`!`6!!8'NTY]` M(G2(+O@(YOGNM0P"J8$8!@;F_>UI8`D9&><)"?<9@/,>@-GO)(CXY@3X[R\$ MD$7>D_8([R^3]G\`(N_3E`-``W__(N\C)('XYC#E],*OYE2,]M*OY0RU!PIT MB"_XYO6!`D)-4"YTB2_XYK\#`G3__1CF^72(+_C[YOSI;&`(J`7G]AT9@/2H M`Z8%'^4,M0?C?P`B=(DO^.;]&(8!#W2(+_BF`0B&!.4,M0<"K('M;&`(#0FH M!>;W@/3E#+4'WHF!?P`B[].4`T`#?_\B[R,D@?C"K^8PY04PX`+2Y-+BQM*O M?P`PX@$/`D),C_#D__[E#",D@/C"J3#W#7\(YF`++?9@,%`N@`23H_CDDZ-``_:``?((W_2`*>23H_A4!R0,R,,SQ%0/1"#(@T`$]%:``4;V MW^2`"P$"!`@0($"`D$71Y'X!DV"\H_]4/S#E"50?_N23HV`!#L]4P"7@8*A` MN.23H_KDDZ/XY).CR,6"R,K%@\KPH\C%@LC*Q8/*W^G>YX"^`$&""0!!@@H` M08(7`%GB7"1>75^AP.#`\,"#P(+`T'70`,``P`'``L`#P`3`!<`&P`>0`<1T MYO!T1:/PT35TY@20`<3P=$6C\-`'T`;0!=`$T`/0`M`!T`#0T-""T(/0\-#@ M,I``5.!5-?4YH^!5-O4ZH^!5-_4[H^!5./4\K3E_5!(R'JTZ?U42,AZM.W]6 M$C(>K3Q_5Q(R'E.1[R+`X,#PP(/`@L#0==``P`#``<`"P`/`!,`%P`;`!Y`! MQ'1O\'1&H_`2;'CE03#D!'\"D2?E03#F`Q)LU>5#,.`#$E'"Y4,PX0,230SE M0S#B`Q),P>5#,.,#$FSBY4,PY`,2;03E0S#E`Q)M,^5#,.8"\0_E1##A`Q)1 M?W1O!)`!Q/!T1J/PT`?0!M`%T`30`]`"T`'0`-#0T(+0@]#PT.`RD(#>X+0! M$Y"!)^!@#9"!*^!4_O!4!W`"\2HBD($?X)"!*3#@!>#_`G2/X/]]`=,0KP'# MP-"0@A/M\)"!*N"0@A3PD($DX/[$$Q-4`S#@`P)(H.[$$Q,35`$PX`,"2*"0 M@A3@_F]P`P)(H.]P`P)(%R3^<`,"2%`D_F!1)/QP`P)(BR3\8`,"2*#NM`X# M$DE>D((4X'`%?P$229.0@A3@M`8#$DDTD((4X+0$#Y""$^#_8`42]D`6`"`:`1^@&@D((4X+0.!Q&EOP$" M,5Z0@A3@M`8",320@A3@M`P'$:6_`0(1^I""%.!D!'!<$G+U[V0!<%0QOH!0 MD((4X+0.!Q&EOP$",5Z0@A3@M`8",320@A3@M`P'$:6_`0(1^I""%.!P!'\! M,9.0@A3@M`0:$G.[@!60@A3@M`P.D($EX/\3$U0_,.`",;'0T)*O(M&K[V0! M8`B0`;AT`?"`/9"!).#_$Q,35!\PX`B0`;AT`O"`*._$5`\PX`B0`;AT!/"` M&9"!*>#3E`1`")`!N'0(\(`(D`&XY/!_`2*0`;ET`O!_`"*0@-[@9`%P,9"! M)>!4_?"0!2)T;_!_`?$-OP$2D($DX$2`\)"!*G0.\)"!(_`BD`&Y=`'PD`&X M!/`BD($EX)`&!"#@#.!$0/"0@2IT!/"`#N!4?_"0@2IT#/"0@2/PD`4BY/`B MD($EX,,3(.`(D($J=`SP@!Z0!@3@1$#PX$2`\)"!*G0$\)`%)^!$@/"0@2-T M!/"0!2+D\"*0@A7O\!)499""%>!@!9`%(N3PD($J=`3PD($C\"(QXY"!*G0( M\)"!(_`BD`4B=/_P\3J0`3=T`O#]?P-15S'CY)"!*O"0@2/P(I`%(G3_\/$Z MD(6[$B#:S/``P'^,?@@2+J*0A;L2(-H````4?W!^#A(NHI"!^1(@V@````#D M_?\251Q_?'X($BU<[$2`_)""!1(@SI""!1)$V9"%NQ(@SG]\?@@2+J*0`0!T M/_"CX%3]\)`%4^!$(/`BD`$T=$#P_>3_=#TO^.9-_O9T,"_U@N0T`?6#[O`B MTQ"O`D($?X/\PX&V0@0@1_@_R#@`F'GD('+=#'P[Q,35#\PX`M13I"! MR^!$"/"`!GU`Y/^1)I"!'^#]$Q,35!\PX`>0@/"C=`+P?7C_45=] M`G\#45>0!@K@1`?PD($RH^"0!5CPD(#>X+0!%9"!)>!4^_"0@2K@(.(.?0%_ M!`)'/9"!)>!$!/`BD($?X/\PX`B0@2/@9`)@.I"!)^!P!.\PX`J0@2K@9`)@ M*+&#D($EX!,3$U0?,.`4D($MX/^CX&]P"O'-D1R0@2[@%/"0`>;@!/`BD($? MX##@!I"!(70!\)"!)^!@19"!)>#_$Q,35!\PX!*0`3O@,.0+D1R0@2W@%)`% M<_"0@@OD=?`!$D2IPY""#."4@)"""^!D@)2`0`N0`9C@5/[PX$0!\!)U^-'6 MD($_X##@#.3U':/Q^Y`!5W0%\)`!ON`$\"*0@-[@9`%@`L$CD($GX'`"P2.0 M@2;@Q%0/9`%P(I`&J^"0@2[PD`:JX)"!+?"CX/]P")"!+>#^_X``D($N[_"0 M@27@1`3PY)"!,/"0@3*CX)`%6/"0`5?D\)`!/'0"\)"!*^!4_?!4[_"0@2;@ M_\14#R3]4`*`#Y"!'^`PX`42;?*``Q)NR9"!)>`3$Q-4'S#@#I"!+>#_H^"U M!P3QS9$BD($?X,,3(.`'D($EX$0$\"+1J^]P`M$\(I"!)^!D`7!FD($FX%0/ M8%&0@2K@<`/_,9.0@2K@9`Q@`Q)F)I`!6^3PD`$\=`3PT:OO9`%@..3U'9"! M.N##$U1_]1[D^_U_6'X!$E`%D`%;=`7PD`:2=`'PD($DX$0(\"*0@2K@<`=] M`7\$$D<](I`$&N#T8`-_`"*0!!O@5`=D!W\!8`)_`"(24&"0@2W@%)`%<_!] M`G\"45>0@4+@,.`MD(#>X+0!)I""%^`$\."T"@N0@43@!/#DD((7\)"!1.#_ MD(%#X+4'!>2C\/$+(N3_CU.0!!W@8!F0!2+@]59T__#Q.K\!`Q)T^Y`%(N56 M\(`#$G3[D`0?="#P?P$BY)""#_"C\)`%^.!P#Z/@<`NCX'`'H^!P`W\!(M.0 M@A#@E.B0@@_@E`-`"I`!P.!$(/!_`")_,GX`$C*JD((/Y'7P`1)$J8"_=!\M M]8+D-/SU@^!4/_#O8!UT(2WU@N0T_/6#X$00\'0?+?6"Y#3\]8/@1(#P(G0A M+?6"Y#3\]8/@5._P=!\M]8+D-/SU@^!$0/`B[Q20!7/PD`$_=!#P_7\#=$4O M^.9-_O9T."_U@N0T`?6#[O`BX$0"\.3U'9"!.>#U'N3[_7]4?@&.&8\:Y1Y4 M!\0S5."%&8.%&H+PY1U4!\0S5.#_Y1X3$Q-4'T^C\.M4!\0S5.#_Y1T3$Q-4 M'T^%&H*%&8.CH_"]`0R%&H*.@Z.CHW0#\"*%&H*%&8.CHZ-T`?`BY)"!3?"0 M@2?@8%B0@-[@9`%P4)"!303PY)"!+O"0@1_@,.`5D($CX+0"!>20@4WP,7/O M<`20@4WPD(%-X&`DD($KX$00\.3U'9"!+Q)/^Y`!5W0%\)"!*N`@X@=]`7\$ M$D<](N20@4SPD($GX'`"(7*0@-[@9`%@`B%RD($FX/_$5`]@(B3^8`,$<"&0 M@2[@%/#@_V`&D($PX&`1[W`(D($MX*/P@`"0@4QT`?"0@1_@,.`5D($CX+0" M!>20@4SP,7/O<`20@4SPD(%,X&!#D($KX$00\)"!,.!@`[0!">3U'9"!,."` M#>3U'9"!,.!U\`.D)/[_D($OX"\23_R0`5=T!?"0@2K@(.('?0%_!!)'/2*0 M!4/@?P`PYP)_`2*0@2?@<`>0@1_@,.`1D($?X##@!S%SOP$%05L23CPBTQ"O M`199`% M(N3P(I"!'^#_,.`]D($CX'X`M`("?@&0@2+@?0"T!`)]`>U.<"/OPQ,PX`(A MGE%%D($CX+0(!N3]?PR`"9"!(^!P!OU_!!)'/2*0@1[@M`$/D($CX&0"8`=] M`7\"$D<]D($GX&0"8!20@2;@5`]@#!).J^]P!OU_#!)'/2*0@1_@_S#@/Y"! M(^!^`+0"`GX!D($BX'T`M`0"?0'M3G`E[\,3,.`"(9X2=*R0@2/@M`P&Y/U_ M"(`*D($CX+0$!N3]_Q)'/2+3$*\!P\#0D('+$D4?$A^D_Y"!'O"_`1*0@ MT-"2KR+3$*\!P\#0D($BX)""%O!O<`*!!.\48#X48&(4<`)AN!1P`F'?)`1@ M`H$$D((6X/^T!`2108$$[[0"!)%0@020@A;@_[0#!)%4@03O9`%@`H$$D4.! M!)""%N#_M`0$D?.!!.^T`@216($$D((6X/^T`P21Z($$[W!]D2N`>9""%N"T M!`42=&"`;9""%N"T`021(8!BD((6X+0#!1)T<8!6D((6X'!0D1^`3)""%N#_ MM`0%$G1,@#_OM`$$D32`-^^T`@21WX`OD((6X'`ID3*`)9""%N#_M`,%$G1[ M@!COM`$$D0N`$.^T`@2Q!H`(D((6X'`"D0G0T)*O(I$KD`4B=&_PD`4GX%2_ M\)"!(G0$\"*1*Q))W9"!(G0"\"*0@2)T`?`BD2N0!2)T__"0@2)T`_`BD?.0 M!2?@5+_PY)"!(O`BD5B`[Y'H@.N199`%(N3PD($B!/`BTQ"O`!$ M`O"0`0!T__"0!K=T"?"0!K1TAO!_?'X($BU<[%1__)""`1(@SI""`1)$V9"% MNQ(@SG]\?@@2+J*0A;L2(-K,P`#`?XQ^"!(NHI"%NQ(@V@#``!1_<'X.$BZB MD('Y$B#:``,^8.3]_[$42(,[0!=`'$F#UT-"2KR*0@<@211_O$D4H57$`57H!58," M58L#590$59P@5:0A5:TC5;4D5;XE5<#^D($DX%3]3O#O5`_$5/#_ MD($FX%0/3_"0``02'[V0@2GPT<:0`;ET`?"0`;CPD($GX)`!NO"0@2G@D`&[ M\)"!)N!4#Y`!OO`BD('+$D4?$G*SD($GX/\23#Z0@2?@8!F0@5),.$#$F]YY4DPX@+QI>5),.,#$F^-Y4HPX`,2;\GE M2C#D`Q)P(N5+,.$"47CE2S#@`C'_Y4LPXP+QX.5,,.$%?P,21"?E3##D`Q). MQ.5,,.4#$G`XY4PPY@,2<,YT]P20`<3P=%:C\-`'T`;0!=`$T`/0`M`!T`#0 MT-""T(/0\-#@,I"!)^!@-)`&DN`PX"/D]1V0@3K@PQ-4?_4>Y/O]?UA^`1$% MD`%;=`7PD`:2=`'P(I"!).!4]_`21RHB(A(?I)"!,?`BD`'(Y/"C\*/P>P%Z M@7E1?__^$BLGOP$)D(%1X&0#8`,B`:ODD(%6\)"!5N#_PY0"0`(!YL-T_I__ MY)0`_GL!>H%Y4A(K)^]D`7!WD(%2X/]4P/Y@!>]4#'`6D(%2X/]4,&!G[U0# M8&*0@5-T`?"`!>20@5/PD(%3X)"!4G`6X/_N$Q-4/Y"!5/#O5`P3$U0_H_"` M#>#^5#"0@53P[E0#H_"0@53@9#!P5*/@9`)P3I``]>!40)"!5_#@<$&C=`+P M@!"0@5AT`?"`")"!5N`$\`$1D`'$=.GP=%>C\)"!6."0`K3A_4P(R'G4]$.3U/G4_!W5``I`!,.4]\*/E/O"CY3_PH^5` M\")U10YU1@%#1A!U1P-U2&*0`3CE1?"CY4;PH^5'\*/E2/`BD`$PY/"C\*/P MH_"0`3CPH_"C\*/P_7]0$C(>Y/U_41(R'N3]?U(2,A[D_7]3`C(>D`$T=/_P MH_"C\*/PD`$\\*/PH_"C\/U_5!(R'GW_?U42,AY]_W]6$C(>??]_5P(R'I`` M@.!$@/U_@!(R'I#]`.!4O_`25^E1=Q(R=U')45Y_`1)#%9"!070"\/\20Q60 M@4'@!/!_`Q)#%9"!0>`$\#$!43^0`(#@1$#]?X`2,AYU(/]1:%'Y47_D_P)# MGE%B46]1IW%/48I1E9"!1>!4_O"C=`/PH_#DH_"C\"+D]4TBY)"`WO`B=>@# M=:B$(N20@-CPH_`BD`&4X$0!\"*0`>1T"_"C=`'P(I"!/^!4_O#DH_`BD(%" MX%3^\%1_\*-T"O#DH_`BD($?X%3^\%3]\%3[\%3W\%3O\%3?\.2C\*/PH_"C M=`SP(I`!`>!$!/"0`9QT?O"C=)+PHW2@\*-T)/"0`9MT2?"0`9ITX/"0`9GD M\)`!F`3P(N20@5'PH_"0`9C@?P`PY`)_`>]D`6`^PY"!4N"4B)"!4>"4$T`( MD`'!X$00\"*0@5'D=?`!$D2I?Q1^`!(RJM.0@5+@E#*0@5'@E`!`N9`!QN`P MX[(BY)"!)_"C\)"!)N!4#_!4\/"0@23@5/WP5/?P5._PD($M=`'PH_"0@23@ M5/OPH^!4^_#DD($P\)"!+W0'\)"!,N3PHW0"\.20@2OPD($DX%3^\)"!*70, M\)"!).!4W_"0@2IT#/"0@23@5+_P5'_PH^!4_O!4_?!4]_"0@302(-H````` MD(`\X+0!")"!,729\(`2D(`\X)"!,;0#!720\(`#=$#PD($X=`'PHW0%\*/@ M5`%$*/"C=`7PY*/PH^!4_?!4^_!4]_!4[_!4W_!4O_#DH_`BY)"!6?"0@5G@ M9`'P)"20`<3P=%RC\)"!*N#_D($IX&]@`Q)'*M$(OP$"D5^Q\A(RGK\!`K%G M$D)-@,K3$*\!P\#0D($DX##@))"!'^#_,.`:PQ,PX`>Q^[\!$H`*D($CX/]@ M`[0(!I&6@`*1IM#0DJ\BTQ"O`7@!/`BL?.0``C@5._]?P@2,A[D_X]0Y)"!6O"C\)`!">!_`##G`G\![V50 M8#[#D(%;X)2(D(%:X)030`B0`<#@1!#P(I"!6N1U\`$21*E_%'X`$C*JTY"! M6^"4,I"!6N"4`$"YD`'&X##@LB*0@3'@_7^3$C(>D($HX&`2D`$OX##G!700 M\(`&D`$O=)#PD``(X$00_7\($C(>?P&1RI``D.!$`?U_D!(R'G\4?@`",JK3 M$*\!P\#0$BVGY/52$C*>[V!S8U(!Y5(D9Y`!Q/!T7:/PD`"(X/50]5%4#V#? MY5`PX`L@Y`,2*<534>Z`/^50,.$6(.4.$A&][W`#0U$@D`$&Y/!34?V`).50 M,.(+(.8#$F<&4U'[@!3E4##C#R#G"1)A;N]P`T-1@%-1]ZU1?X@2,AZ`A]#0 MDJ\B(I``D.`@X/DBD($BX&0"?P%@`G\`(G\"D(%!X/[OPYY0&.\EX"2!^.8P MY`N0`;AT"/"C\'\`(@^`WG\!(I`"A^!@")`!N'0!\(`7D`*&X"#A")`!N'0$ M\(`(D`&XY/!_`2*0`;ET"/!_`"+D^_K]?P$21$Z0@;WO\&#PT7&`[-,0KP'# MP-"0`!U\`20`=`210K@D(&_\'43`744@745OW46`7L!>H%YP!(K[9"" M">!U\`20`=$210K@D('!\)""">!U\`20`=(210K@D('"\)""">!U\`20`=,2 M10K@D('#\)""">!U\`20`?`210K@D('$\)""">!U\`20`?$210K@D('%\)"" M">!U\`20`?(210K@D('&\)""">!U\`20`?,210K@D(''\)"!ON#_D(()X/YT M`:@&"(`"PS/8_/1?D(&^\)""">#_=`&H!PB``L,SV/R0`<$253^0@@G@!/#@5`/PP8*0`<#@1`+PT-"2KR+D^_K]?P$21$Z0@=#O\&#P M$FP9@.N0@=3O\*/M\*,2(-H`````Y)"!XO!_)'X($BU#_Y/S] M_G@7$B"[J`2I!:H&JP>0@=X21-GM5'_][%2`_!)$S.Q$@/R0@=X2(,Z0@=H2 M1-GL5'_\D(6[$B#.?R1^"!(NHI"!U.!U\`BD)&+U@N0TA_6#X/ZCX/_`!L`' MD('>$D39D(6[$B#.T`?0!A(NHI"!VA)$V>Q$@/R0A;L2(,Y_)'X($BZBD('4 MX'`$?R"`"9"!U."T`19_*'X($BU<>`@2(*CO5`'_Y)"!XN_PD('BX)"!U&`. MX'7P"*0D9O6"Y#2'@`S@=?`(I"1D]8+D-(?U@^#^H^#_$BU<[50/_>3\D('6 M$B#.D('6`D39D('C[_"K!9"!Z1(@V@````"O`^3\_?YX%!(@NZ@$J06J!JL' MD('E$D39[50/_>3\$D3,[%0/_)"!Z1(@SI"!X^!U\`BD)&#U@N0TA_6#X/ZC MX/_`!L`'D('I$D39D(6[$B#.T`?0!@(NHM,0KP'#P-`27[;0T)*O(G@0=`'R MD`()X'@`\@AT(/(8XO\PX`4(XB2`\N_#$Y#]$/!X`>(D`/6"Y#3\]8/@>`/R M9`1@#>+_9`A@!^]D#&`"8=[D>`+R>`/B_QCBPY]0+>+]&.(MD(%:\.#_)`#U M@N0T_/6#X/YT!"WX[O+OM/\&D/T0X`3P>`+B!/*`R7@$XG@2\O]X!>)X$?)X M!N)X$_)X!^)X%/)X".)X,_)X">)X-/)X"N)X-?)X"^)X-O)X#.)X-_)X#>)X M./)X#N)X.?)X#^)X.O+D>!7R[R3X8'4D_&!L)`A@`F'`>!'BM`$%$BG%8<5X M$>*T`@42$;UAQ7@1XK0#!/$&8<5X$>*T$!=X%.+^&.+][?]X%N[R_@CO\O\2 M,JIAQ7@1XK01%W@4XOX8XOWM_W@6[O+^"._R_Q(R!F'%>!'B]&`"8<48\F'% M>!5T`?)X$>)D!V`"8:IX-.+_Y/S]_G@($B"[P`2I!:H&JP=X,^+_Y/S]_M`` M$D3,P`3`!<`&P`=X->+_Y/S]_G@0$B"[T`/0`M`!T``21,QX&!)$_G@5XG`" M89,8XO\8XOTQ7W@<$D3^>#CB_^3\_?YX"!(@N\`$J06J!JL'>#?B_^3\_?[0 M`!)$S,`$P`7`!L`'>#GB_^3\_?YX$!(@N]`#T`+0`=``$D3,>"`21/YX(!)$ MY1(@FW@<$D3Q$D2_P`3`!<`&P`=X&!)$Y7@@$D3Q$D2_T`/0`M`!T``21,QX M&!)$_G@8$D3ED('Y$B#.>!/B_0CB_Q)5'(`;>!/B_PCB_7@1XOMX%>*0@;SP M<>&`!7@0=`+R>!#B_\.4`E`0[V`*>`+B_QCB+_(AD'\!(G\`(JP'[:T$>"3R M[0CRZ[0$!W@G=`'R@`[K>">T!05T`O*``W0$\M-X)>*4_QCBE`!08^1X)O)X M)^+_&.+^PY]``J%_=#,N^.)X*/*0@;S@8"UT-R[XXG@R\N[_>"7B+_\8XC0` MCX+U@^!X*?)X,N+_]/YX*>)>_ACB_>]=3O)X)`CB_PCB+_]X*.+]$C(>>";B M!/*`H=-X)>*4_QCBE`=0:>1X)O)X)^+_&.+^PY]``J%_=#,N^.)X*/*0@;S@ M8"UX)N+__1CB+?T8XC0`C8+U@^!X*?)T-R_XXG@R\N+_]/YX*>)>_ACB_>]= M3O)X*.+_>";B_1CB+?T8XC0`C8+U@^_P>";B!/*`FY"!O.!@#W@DXOX(XO\2 M+5QX+A)$_N1X)O)X)^+_&.+^PY]0770S+OCB>"CRD(&\X&`K>"X21.5X)N+[ M=?`(I/GX$B"H>"GO\G0W*_CB>#+RXO[T7_]X*.+][EU/\G@HXO]X)N+]PW0# MG?WDE`#\>_YT*BWY=(`\^N\2'^KB!/*`F'@J$D3ED(6[$B#.>"3B_@CB_Q(N MHB(BD('+$D4?D``!$A^]__X2'Z3]PQ,PX!*0@4#B0@_PH^WPK0.L`N20@?7PH_"0`<1T.?!T9J/P[%0__)`!0.WP MK@3NH_"0@>W@)(%@-"3:8!PD/'!!D('NX,0S,S-4@)"!\O"C=&GPHW2`\(`L MD('NX%0!D('R\*-TI?"C=`'P@!B0@>[@Q%00D('R\*-T?_"C=!#P@`-_`"*0 M@?/@D`$&\)"!\N!@#I`!0O"0@?'@D`%#\(`-D`%#Y/"0@?+@D`%"\)"!].#_ MD`%"X%__D('RX&]@[G0Y!)`!Q/!T9J/PD`%#Y/!_`2+DD(%J\)"'7^"0@6GP MY)"!=O"0@6;PD(%FX/_#E$!0%71Y+_6"Y#2!]8-T__"0@6;@!/"`X>20@6;P MD(%IX/^0@6;@_L.?0`,":!)TWR[YY#2&=1,!]12)%746"GL!>H%Y6Q(K[9"! M7.#_$B\G[P20@7;PD(%;X/^CX/T2,>KO),B0@7CP=?`(I/"0@5S@5`^0@7?P MY)"!9?"0@6?PD(%GX/_#E`105Y"!=^#^J`<(@`+#$]C\(.`^D(%GX"7@_Y"! M>.`O)'GYY#2!^GL!P`/``9"!9>!U\`*D)%WY=($U\(L3]12)%746`M`!T`,2 M*^V0@67@!/"0@6?@!/"`GY"!=N#_D(%FX"_P`F=`Y)"!:O"0@6K@PY1`0`)! MK^#_)'GU@N0T@?6#X)"!;/#@_E3PQ%0/_9"!:_#N5`_^H_!T>B_U@N0T@?6# MX)"!;?#\[O[L^^O_D(%R[O"C[_#M$D4H:(L`:,(!:7,":J`#:8X$::\%::\& M::\'::\(:C,):FD*``!JKY"!:N#])'SU@N0T@?6#X/YT>RWU@N0T@?6#X/WM M_Y"!=.[P_*/O\)"!;>#_$B^6D(%H=`+P0:"0@6K@)'SU@N0T@?6#X/_D_/W^ M>`@2(+NH!*D%J@:K!Y"!:N`D>_6"Y#2!]8/@_^3\_?X21,S`!,`%P`;`!Y"! M:N`D??6"Y#2!]8/@_^3\_?YX$!(@N]`#T`+0`=``$D3,P`3`!<`&P`>0@6K@ M)'[U@N0T@?6#X/_D_/W^>!@2(+O0`]`"T`'0`!)$S)"!;A(@SI"!;A)$V9"% MEA(@SI"!_6"Y#2!]8/@^^3_ M$C#'@!F0@6W@_9"!:N`D>_6"Y#2!]8/@^^3_$C!JD(%H=`'P0:"0@6AT`O"0 M@6K@)'SU@N0T@?6#X/_D_/W^>`@2(+NH!*D%J@:K!Y"!:N`D>_6"Y#2!]8/@ M_^3\_?X21,S`!,`%P`;`!Y"!;.#_Y/S]_G@0$B"[T`/0`M`!T``21,R0@6X2 M(,Z0@6O@)/O_P`>0@6X21-F0@?D2(,Z0@6W@_=`'$E4<@&V0@6AT`?"0@6K@ M)'OYY#2!=1,!]12)%746`7O^>H!Y,Q(K[9"!;>#_D(%LX/WDD(&\\'L$@#20 M@6AT!/"0@6K@)'OYY#2!=1,!]12)%746!'O^>H!Y,Q(K[9"!;>#_D(%LX/WD MD(&\\'L&$F/AD(%HX"0"_Y"!:N`O\`$7(I`"">#]$A^D_J\%[2Z0@#WPD``! M$A^]_^TOD(`^\)```A(?O?_M+Y"`/_"0``,2'[W_[2^0@$#PD``$$A^]_ZX% M[2^0@$'P(I```A(?O?\PX"82'Z20@3CPD``!$A^]D($Y\.]4_O^CX%0!3_"0 M``,2'[V0@3OP(I"!.'0!\*-T!?"CX%0!1"CPHW0%\"(2'Z20@3[PD($^X)`! MY_`B$A^DD(%*\)```1(?O9"!2_`BTQ"O`[PH^_PY*/PH_"0@?W@ M_J/@]8*.@^!@+<.0@@#@E.B0@?_@E`-`"Y`!P.!$@/!_`(`5D('_Y'7P`1)$ MJ7\*?@`2,JJ`Q7\!T-"2KR+3$*\!P\#0D('1$D4?D((*X/\$\)```>\2'_Q_ MKWX!<6#O8#J0@=$211:+$XH4B160``X2'[TD`O46>P%Z`7F@$BOMD('1$D46 MD``.$A^]D`&N\*-T__"0`P%QMG\![V`6D(#8 MX`3PX'\`M`H"?P'O8`7DD(#8\-#0DJ\BCPTBCPXB(I`!-.!5/?5!H^!5/O5" MH^!5/_5#H^!50/5$D`$TY4'PH^5"\*/E0_"CY43P(I`!/.!51?5)H^!51O5* MH^!51_5+H^!52/5,D`$\Y4GPH^5*\*/E2_"CY4SP4Y'?(I"!'^`PX`7DH_"C M\"*0@-[@9`%P&9"!)^!@$Y`!5^3PD`$\=`(23_20`5=T!?`BD(#>X&0!<":0 M@2?@8""0`5?D\)`!/'0"\)"!).!4^_"0@2O@5/WP5`=P`Q)'*B*0@-[@M`$4 MD($GX&`.D($FX%0/9`)@`H`#T7\BD`0=X'`3D(`^X/_D_;%ICDZ/3Y`$'W0@ M\"+3$*\!P\#0D((.[?"0@@WO\.3]_/$W?`"M!Y""#>"0!"7PD((.X&`.=`\O M]8+D-/SU@^!$@/"O!70(+_6"Y#3\]8/D\'0)+_6"Y#3\]8/@5/#P="$M]8+D M-/SU@^!4]_"N!*\%T-"2KR*/3O%+OP$8D(!`X/]]`;%IK0>L!J].$D^"D`0? M="#P(I`&J>"0@4SPX/U4P'`)D($KX%3^\(!R[3#F2Y"!)^!D`G`JD($DX/_# M$R#@"9"!*^!$`?"`*)"!)N!4#V0!<"V0@2O@1`3P?P&QTH`@D($KX$0!\)"! M)N!4#V0"8`2Q3X`+T7^`!Y"!*^!4_O"0@4S@D($K,.<1$D_QD`%7=`7PD($D MX$0$\"+@5/WP(I`!7^3PD`$\=`CPY/4=D($ZX,,35'_U'N3[_7]0@2O@5/[PD(%,X)"!*S#G$1)/\9`!5W0% M\)"!).!$!/`BX%3]\"+D_N_#$_WO,.`"?H"0_1#M\*\&(M,0KP'#P-"0!!W@ M8!J0!2+@5)!@!Y`!P.!$"/"0`<;@,.'D?P"``G\!T-"2KR*0@2?@8`,2<^&0 M@3_@,.`#$DG=(I"!)^!@-9`&DN`PX23D]1V0@3K@PQ-4?_4>Y/O]?UQ^`1)0 M!9`!7W0%\)`&DG0"\"*0@23@5._P$D_PD($D,.`&X$0!\(`$ MX%3^\)"!3>`PYA&0`2_@,.<$Y/"`!I`!+W2`\)"!).`PX!J0@3+D\*-T!_"0 M@3*CX)`%6/"0!.S@5-WP(I`$[.!$(O`BD(%*X&`/Y/"0!5/@1`'PD`7]X`3P M(I"!).#_Q!,35`,PX"?O5+_PD`3@X)"!)3#@!N!$`?"`$.!4_O"0`;ET`?"0 M`;AT!/`21RKD_Y"!1>`PX$B0@4G@_6!!=`%^`*@'"(`%PS/.,\[8^?^0!.#@ M^^];8`;DD(%)\"*0@4?@TYU0$)`!QW00\!&^D(%%X%3^\"(23PN0@4G@!/`B MD(`\X&0"8`>0!I#@1`'P(I"!).#_Q!,3$U0!,.`L[U1_\)`$X."0@24PX0;@ M1`+P@`_@5/WPD`&Y=`'PD`&X!/"0@2?@8`,21RI_`0%NP^Z4`4`*#>T3D/T0 M\.0O_R+#[I0!0"20_1'@;7`:D`$7X+4%#9`!Y'1W\)#]$>3P@`;M!)#]$?#D M+_\BY)"!3O"C\*/PD`"#X)"!3O"0`(/@_I"!3N#_M08!(L.0@5#@E&20@4_@ ME`!`#9`!P.!$0/"0@4[@_R*0@4_D=?`!$D2I@,)T12_XYO[M]%[^]G0X+_6" MY#0!]8/N\"+3$*\!P\#0D((2[?"0@A'O\-.4!U!PX/]T`:@'"(`"PS/8_/3_ MD`!'X%_]?T<2,AZ0@A'@_W0!J`<(@`+#,]C\_Y``1N!/_7]&$C(>D((2X&`8 MD((1X/]T`:@'"(`"PS/8_/^0`$7@3X`7D((1X/]T`:@'"(`"PS/8_/3_D`!% MX%_]?T6`?I""$>`D^/#@)`3_=`&H!PB``L,SV/ST_Y``0^!?_7]#$C(>D((1 MX/]T`:@'"(`"PS/8_/^0`$/@3_U_0Q(R'I""$N!@'9""$>`D!/]T`:@'"(`" MPS/8_/^0`$+@3_U_0H`"C\)"!)>!$"/`B$DZK[V0!8`B0`;AT`?"`9Y"! M*^#_5`-@")`!N'0"\(!6D($IX/[DPYY0")`!N'0$\(!$[S#B")`!N'0(\(`X MD($KX##D")`!N'00\(`ID($EX!,35#\@X`B0`;AT(/"`%I"!/N!@")`!N'2` M\(`(D`&XY/!_`2*0`;ET!/!_`"+O8$*0@-[@9`%P.I"!)>!4_O"0!2)T#_"0 M!@3@5+_PY/\23PV_`1*0@23@1$#PD($J=`;PD($C\"*0`;ET`?"0`;AT"/`B MD`4B=&_PD`4GX%2_\)"!*G0"\)"!(_`B$E1ED($J=`SPD($C\"*0@23@_Q,3 M5#\PX!'O5/OPD($KX%3]\%0'<$*`/9"!,.`$\)"!*^!4[_"0@3#@_[0!`H`$ M[[0"!I`%6.`$\)"!..#_D($PX-.?0`^0@-[@M`$+D($EX%3[\"(21RHB(I`% M*^!_`##G`G\!(I`%(G3_\)`%)^!$0/"0@2)T`_`BD`4GX$1`\!))W9"!(G0" M\"(22>.0@2)T`O`BD`4B=&_PD`4GX%2_\)"!(G0$\"*N!Q)1<[\!$I"!(^!D M`F`*KP9]`1)'/7\!(G\`(I`!5^!@2.3PD`$\=`+PD($DX/\3$U0_,.`,[U3[ M\)"!*^!4_?`BD($PX`3PD($KX%3O\)"!..#_D($PX-.?0`Z0@-[@M`$'D($E MX%3[\"*0@#_@_WT!$FUICE2/5:U5K%2O4Q)/@J]5KE20!(#@5`_]K`=T$2SU M@N0T_/6#X$0!\'01+/6"Y#3\]8/@5/OPK`=T%BSU@N0T_/6#X$3Z\'05+/6" MY#3\]8/@1!_PK`=T!BSU@N0T_/6#X$0/\)`$4^3PD`12\)`$473_\)`$4'3] M\'04+/6"Y#3\]8/@5,!-_704+_6"Y#3\]8/M\"*K!ZH&[2O[Y#KZPY"`V^"; MD(#:X)I0$Z/@)`'_D(#:X#0`_L/KG_OJGOKJD/T1\*\#=``O]8+D-/OU@^#_ M(A(?I/]4`?Z0@4+@5/Y.\._#$S#@"I```1(?O9"!0_`BD(%%X##@+9"!2.`$ L\.#_D(%&X+4''I`&DN!4''`+$D\+D(%)X`3P@`:0!I)T'/#DD(%(\"(`NXX` ` end diff --git a/sys/contrib/dev/rtwn/rtwn-rtl8192cfwU.fw.uu b/sys/contrib/dev/rtwn/rtwn-rtl8192cfwE.fw.uu similarity index 99% copy from sys/contrib/dev/rtwn/rtwn-rtl8192cfwU.fw.uu copy to sys/contrib/dev/rtwn/rtwn-rtl8192cfwE.fw.uu index d542b2ea3fff..8e49f4a2b926 100644 --- a/sys/contrib/dev/rtwn/rtwn-rtl8192cfwU.fw.uu +++ b/sys/contrib/dev/rtwn/rtwn-rtl8192cfwE.fw.uu @@ -1,333 +1,333 @@ -begin 444 rtwn-rtl8192cfwU.fw.uu +begin 444 rtwn-rtl8192cfwE.fw.uu MP8@"`$@````%$!!3PCD!`(%C`0`````````````````"0[H````````````` M`````````E!$```````````````````````````````````````````````` M`````````````E;@```````"2VH```4$`P(``P8%!`,`!`8%!`(`!`@'!@0` M!@H)"`8`"`H)"`0`"`H)"`(`"`H)"```"!(1$`@`$!H9&!``&"(A(!@`("(A M(!``("(A(`@`("(A'`@`("(A%`@`("(@&`@`(#$P(!``,#$P&```,#$O$!`` M,#$L$!``,#$H$```,#$@$```,#$0$```,`0$!`4$!`0%!04&!@0$!`4%!08& M!`0%!04%!@8$!`4%!04&!PH+#1`$!04&!@D,$0@("0D*#!`1!`0$!00$!0<' M!P@*!`0$!`8*"PT%!0<'"`L-#P0$!`4'!PD)#`X0$@0$!04&"A$3"0D)"0P. M$1,````````````D)BH8&AT?(2`"@`,@!0`&0`>`",`$L`4`!X`+0`^@$L`9`!]```@`" M``0`"``,`!(`&``D`#``2`!@`&P`*``\`%``9`"@`,@`\`$8`&0`H`#P`6@! M]`)8`R`#Z`("`@("`@,#!`0%!P0$!PH*#`P2!0<'"`L2)#P!`0$!`0(#!`4& M!P@!`@,$!08'"`4&!P@)"@L,(!X<&!`8````````````````NP$,Y8(I]8+E M@SKU@^`B4`;I)8+XYB*[_@;I)8+XXB+E@BGU@N6#.O6#Y),BNP$&B8**@_`B M4`+W(KO^`?,B^+L!#>6"*?6"Y8,Z]8/H\")0!NDE@LCV(KO^!>DE@LCR(L7P M^*/@*/#%\/CE@A6"<`(5@^`X\"*[`0J)@HJ#X/7PH^`B4`:'\`GG&2*[_@?C M]?`)XQDBB8**@^23]?!T`9,BNP$0Y8(I]8+E@SKU@^#U\*/@(E`)Z26"^(;P M".8BN_X*Z26"^.+U\`CB(N6#*O6#Z9/U\*/IDR*[`0J)@HJ#\.7PH_`B4`;W M":?P&2*[_@;SY?`)\QDB^+L!$>6"*?6"Y8,Z]8/H\.7PH_`B4`GI)8+(]@BF M\"*[_@GI)8+(\N7P"/(B[TO_[DK^[4G][$C\(N#\H^#]H^#^H^#_(J0E@O6" MY?`U@_6#(N#[H^#ZH^#Y(OC@^Z.CX/DE\/#E@A6"<`(5@^#Z./`BZ_"CZO"C MZ?`BT(/0@OCDDW`2=`&3<`VCHY/X=`&3]8*(@^1S=`*3:&#OHZ.C@-\"0_@" M2"_DDZ/XY).C0`/V@`'R"-_T@"GDDZ/X5`1^`9-@O*/_5#\PY0E4'_[DDZ-@`0[/5,`EX&"H M0+CDDZ/ZY).C^.23H\C%@LC*Q8/*\*/(Q8+(RL6#RM_IWN>`OD&7?P!!EZ$` M09=K@$&7HP``CX*.@Z.CH^3P(N3U(W]@?@&`[=,0KP'#P-"0EUUQBY"777%K MD``!4<+ZY?`D`/_D.OZ0EUUQ:Y```>Z/\'$9$B1B_V`HM2,4D)==<6N0``%1 MPF4E<`3E)&7P8!^0EUUQ:Y```5'"_Z[PL5.`#I"777%K$B1B92-@`I%8T-"2 MKR+T_Y``0^!?\-,0KP'#P-!_$-_^T-"2KR*0`=,0KP'#P-"+8(IAB6*0EXAQBZMCJF2I99"7BW&+ MKV859N]@&Y"7B^1U\`%Q=!(D8O^0EXCD=?`!<73O44V`WJM@JF&I8M#0DJ\B MD)=@[O"C[_!U(P&.)/4EY/U_"[&6Y/U_`K&6$FU;Y/^1YN3U)Y`!R>4G\)"7 M8.#\H^#][/N-1.3U17T!?V!^`0(P8M,0KP'#P-"0EV/M\)"78N_PTY0'4$ZC MX'`:D)=BX/]T`:@'"(`"PS/8_/3_D`!'X%_P@!>0EV+@_W0!J`<(@`+#,]C\ M_Y``1^!/\)'6D)=BX/]T`:@'"(`"PS/8_/3_D`!&@%F0EV+@)/CPH^!P'9"7 M8N#_=`&H!PB``L,SV/S$5/#T_Y``0^!?\(`:D)=BX/]T`:@'"(`"PS/8_,14 M\/^0`$/@3_"1UI"78N#_=`&H!PB``L,SV/ST_Y``0^!?\)'6T-"2KR+@_WT! MD)>4[_"C[?#DH_"C\.5J8`7D_Q).>9"7E.`PX`F0EY;D\*-T@/"0!!W@8!V0 M!2+@D)>8\.#_5)!@[)`!R'3\\.]4;Y`%(O"`W9"7E.#_PQ.0_1#PD`0E[_"0 MEY7@8!^CH^#_)`_U@N0T_/6#X$2`\'00+_6"Y#3\]8/@1(#PD)>6H^#__20( M]8+D-/SU@^3P=`DM]8+D-/SU@^!4\/!T(2_U@N0T_/6#X%3W\)"7EN#^H^#_ M(O"0`$7@5/[]?T73$*\!P\#0CX)U@P#M\)'6T-"2KR+O%&`P%&!E)`)@`N': MD)!$$/U_18!OY)"7./"0 MES1Q4Y"`EA(E"'^`?@@2*PB0`$7@1._]?T7Q()``1>!4[_U_1?$@D`!&X$00 M_7]&@#>0ESAT`?"0ESYQ4Y"`EA(E"'^`?@@2*PB0`$7@1"#]?T7Q()``1>!$ M$/U_1?$@D`!&X$00_7]&\2`BD`!)X)"7I/#@5`_P1/#]?TGQ()"7I.!$L/U_ M2>$@=2@SY/4I=2H"]2N0`3#E*/"CY2GPH^4J\*/E*_`B=3`?=3$!Y/4RD`$X MY3#PH^4Q\*/E,O`BY)"73_"C\'6.`A)LK9```N!4X)"7AF`%=`'P@`-T`O"0 M`//@,.,(D)>'=`'P@`7DD)>'\)"7A^"T`1.0`/+@,.<,D)=]=/WPHW0S\(`* MD)=]=/WPHW0O\.3U5Q)JZQ)O\A)?K!(N`1)M5Q)'^9``\^`PX@V0!4%T$/"0 M!5KPH^3PD`%D=*#P=43_Y/5%^WT!?U!^`1(P8A$7$D4"$G=(D)=1Y=GP$E`5 MPJ^0`(#@1$#P$D36=>@#0ZB%TJ^0ET_@9`'P)"^0`<3P=$BC\.57,.0*PJ]3 M5^_2KQ)7@.57,.86PJ]35[_2KQ)A9)"7/.#_8`.T`0(Q8)"7/.!P`Q)WIC$S M@+B0!C3@8"8435_^7X!$FSUOP$)D`8UX%0/\(`%@``";)[DD`8T M\"*0ES/@PY044`7@!/!!&)"7,^!D%&`"01B0ET+@<"60ET7@0!/W@5/[PD)="X)`$1/"0ET/@D`1%\)"71."0 M!$;PH^3PD)=%X)`$2/"0ET;@D`1)\)"71^"0!$KPH^3PD)#^TY]0"Y"72^##GM.4`4`0D)"0ETGPD`5BX)"72O"0!6/@D)=+\,-T_Y_^D)=)X-.>0![@+_"CX+3_#^3P MH^"T_P/D\"*0ETN``Y"72N`$\"*0ETG@+_`BD)#_46*0ETQT`1)'%H!`D)=,X&0!<#B0ESW@_U%BY)"73/"0`$7@1`']?T42 M1R"0ES+@8!60ES020U.0@)82)0A_@'X($BL(@`60!2+D\)`%A^!D@/"0ETC@ MD`6$\)"72>"0!87PD)=*X)`%AO"0ETO@D`6'\"+`X,#PP(/`@L#0==``P`#` M`<`"P`/`!,`%P`;`!Y`!Q'1J\'1+H_!3D=^0`3S@53#U-*/@53'U-:/@53+U M-J/@53/U-^4T,.`&D`$\=`'PY30PX0B0`3QT`O#QJ^4T,.(RD`$\=`3PD`:2 MX##@'G5$%'5%`.3[_7]8?@$2,&*0`5MT!?"0!I)T`?"`!Y"7=N3PD8KE-##C M,I`!/'0(\)`&DN`PX1YU1!1U10#D^_U_7'X!$C!BD`%?=`7PD`:2=`+P@`>0 MEW7D\)&*Y30PY`F0`3QT$/`2;7?E-##E")`!/'0@\%&TY34PX!"0`3UT`?"0 M`(/@D)=Y\)&*=&H$D`'$\'1+H_#0!]`&T`70!-`#T`+0`=``T-#0@M"#T/#0 MX#*0EWG@_WT!@`1]`7\,CV>-:.5G5`__D)=WX%0/;V!QY6]@*[%.D)=WX%0/_[\$#>5G(.(($E8Q[V`4T920EW?@5`__ MOP(($F`)[V`"T>!4O_`BD`8$X$1`\.5IM`$$?P'Q2)"7=^!4\/#@1`3P M(N]D`7`N?7U_`A(Q+'T"?P,2,2R0`5?D\)`!/'0"\)&3Y/_1>9`&!.!4?_"0 M!@K@5/CP(I`!-G1]\*-T`O!]??\2,9U]`G\#$C&=D`8$X$2`\)`&"N!$!_"0 MEW+@H^"0!5CPY6DPX!J0EV_@%&`O)`-P0'\!@#JK$:H2J1.0 M``(20B#]Y/_14X`GJQ&J$JD3D``"$D(@_7\!T5,?@!.K$:H2J1.0``(20B#] M?P+14^3_L6HB[R3^8`L$V0EWAP!70%\(`"[?"0EWC@D)=M M\"+O8`N0EX?@M`$0Y/^`"9"7A^"T`05_`1)O^R*0`3=T`O"0!2)T__`2;E_O M<`:0`BX&`%D`4BY/"0EW?@ M5/#PX$0$\"*0!@3@5+_P[V`)Y6FT`03D__%(D)=WX%3P\.!$#/`B$E/\OP$: MD)=VX'`4D)=UX'`.D)=YX%0/TY0$4`-_`2)_`"*/:Y"7@A)&7>5K8!!T(2_U M@N0T_/6#X$00\(`.="$O]8+D-/SU@^!4[_"0!!]T`?`B?0)_`Q(Q+.5J%"3] M4`*`(9"7>N!@!GT!?PR`#Y"7=^!4#\.4!%`&?0%_!)&7Y/_1>2*0EWO@8`[D M\*/@5/WPX%0'<">`(Y"7;N`$\)"7?.!4[_"0EV[@TY0!0`WE:;0!"J/@<`;@ M!/`BD8HBD`$PY/"C\*/PH_"0`3CPH_"C\*/P_7]0$D<@Y/U_41)'(.3]?U(2 M1R#D_7]3`D<@D`$\=/_PH_"C\)`!-/"C\*/PH_#]?U021R!]_W]5$D<@??]_ M5A)'('W_?U<"1R#`X,#PP(/`@L#0==``P`#``<`"P`/`!,`%P`;`!Y`!Q'1$ M\'10H_"0`33@52CU+)`!-N!5*O4NH^!5*_4OY2P@X`(AVY`!-'0!\(713872 M3H733X744(7548764H774X795.545$##$__E4U0@;W`"(9+E5##E`B&2Y5)4 M'_4(Y4U4/_4)Y5%4'__E""7@)./U@N0TE/6#Y(_P$D*!Y5-4'__E""7@),#U M@N0TD?6#Y(_P$D*!Y0G3E`1``W4)!'7P"N4(D)``$D-?=?`"Y0D20U_@_J/@ M_^535!\O_^0^_G7P"N4(D)``$D-?=?`"Y0D20U_N\*/O\.54(.8CY5-4'__E M""7@)&/U@N0TE/6#Y(_P$D*!Y4\PYS2O"+'#@"[E4U0?_^4()>`DH_6"Y#24 M]8/DC_`20H'E3S#G$>5/5'_]Y5-4'_4-JPFO")&PY6H4)/U0`H!`D)=ZX&`R MD`%;Y/"0`3QT!/!Q_.]D`7`H=404]47[_7]8?@$2,&*0`5MT!?"0!I)T`?"0 MEW;P@`AQ_+\!`Q),BN4L,.$FD`$T=`+PD/T0='_PA=%8A=)9A=-:A=1;A=5< MA=9=A==>A=E?D0OE+##C!I`!-'0(\.4L,.0)D`$T=!#P0U<0Y2PPY2:0`<_@ M,.4?X%3?\)`!-'0@\'6H`'7H`!)/Y9```^!4^_`21-:`_N4L,.8&D`$T=$#P MY2XPX3R0`39T`O!#5T"0`0+@5`-D`7`ID`$WX##@"G0!\)"7?^3P@!B0EW_@ M!/#@PY0*0`SD\)`$&>`PX`,21/+E+C#@")`!-G0!\-%EY2XPXG&0`39T!/#E M:60!<&7E:F!AY6ID`F`&Y6ID!7`GD`:KX)"7;?"0!JK@D)=X\)"7;>!P!Y"7 M>.#_@`60EVW@_Y"7;>_PD)=OX&`#X!3PD)=NY/"0`5?PD`$\=`+PD)=\X%3] M\.!4[_#E:A0D_5`"@`*Q$.4N,.,QD`$V=`CPY6ED`7`EY6I@(9`!5^3PD`$\ M=`+P=40#=44`Y/O]?U1^`1(P8I`!5W0%\.4N,.0OD`$V=!#PY6ED`7`CY6I@ M'Y`!5^3PD`$\=`+PD)=[Y/"0EWS@5/WPX%0'<`,23(KE+C#E'9`!-G0@\.5I MM`$2Y6I@#I"7>N!D`F`$L7B``K&)Y2XPYAZ0`39T0/#E:;0!$^5J8`^0EWS@ M5/[PX%0'<`,23(KE+S#A"9`!-W0"\!)/>71$!)`!Q/!T4*/PT`?0!M`%T`30 M`]`"T`'0`-#0T(+0@]#PT.`RD`0;X%1_9']_`6`"?P`BD)=-X%3P1`/P5`]$ M@/![`'H`>5B0EY$20XL+>I=Y3=,0KP'#P-"0EXX20XN0EX;@9`)@;)`!K^!@ M"9`!Q^`$\/"`\9"7H^#_!/"0EXX20VN0``'O$D)?D)>.$D-KBV.*9(EE=68" M>P%Z`7F@$D4)D)>1$D-KBV.*9(EED)>.$D-K$B1B_\14#_5F>P%Z`7FB$D4) MD`&O=/_PD`'+X&2`\-#0DJ\BJ07I5!_U#W0!+_6"Y#22]8/@]0Z0!/W@M`$% M=1`#@`-U$`'KPY400`*AP^4.)0W^Y0^00=:3_>[3G70!0!0EWS@1`'PD)=ZX&0"8`2Q>(`+L8F`!Y"7?.!4_O#E"I"7?##G M(.!$`O!U1`/D]47[_7]4?@$2,&*0`5=T!?"0EWMT`?`BX%3]\"*0EX'@_^3] M$D9AD`0?=`'P(I`!7^3PD`$\=`CP=404Y/5%^_U_7'X!$C!BD`%?=`7PD`:2 M=`+PD)=U%/"0EW?@5`_#E`Q0`Q),DR*M!W7P">V0DR<20U_@_W2E+?6"Y#26 M]8/@5!_\TY]``JP'["7@))[U@N0T0?6#Y)/^=`&3_^PEX"1F]8+D-$'U@W0! MDR__Y),^PQ/^[Q/_[27@).'U@N0TDO6#[O"C[_!TA"WU@N0T!/6#[/#_(G'\ M[V0!<"J0EWS@5`-P(I"7>>!4#].4`E`7D)=\X"#B$)"7?.`@Y`F0EV_@<`-_ M`2)_`"+DD)=-\.5J8''E:60!<&OE:A1@*23]8"4D`B3[4`*`(Y"7;>`4\.!@ M!*/@8!:0EVW@<`J0EWC@D)=M\(``D)=-=`'PD)=-X&`QD)=\X$00\)"7=.#U M1.3U1?O]?U1^`1(P8I`!5W0%\)"7=^!4#\.4!%`'?0%_!!),ER+`X,#PP(/` M@L#0==``P`#``<`"P`/`!,`%P`;`!Y`!Q'3@\'16H_!3D>^0`%'@_Y``5>!? M]3WE/3#F&'1`\)"7.^!4`_^_`PN0ESC@8`5_`1)'->4],.<5D`!5=(#PD)<[ MX%0#_[\#!7\"$D0EZ'@_W0! M?@"H!PB`!<,SSC/.V/G_[UUP`P)8O9"7H>!U\`20`=`20U_@D)=3\'5C`75D MEW5E4W5F`7L!>I=Y5!)%"9"75.#_Q!,3$U0!D)>A,.!9X'7P`I``B!)#7^"0 MEU7PD)>AX'7P`I``B1)#7^"0EU;PD)>AX'7P!)`!T1)#7^"0EU?PD)>AX'7P M!)`!TA)#7^"0EUCPD)>AX'7P!)`!TQ)#7^"0EUGP@#/@=?`$D`'1$D-?X)"7 M5?"0EZ'@=?`$D`'2$D-?X)"75O"0EZ'@=?`$D`'3$D-?X)"75_#O5'__>P%Z MEWE5$#^=`&H!@B``L,SV/ST7Y"74O"0EZ'@_W0!J`<(@`+# M,]C\D`',\)"7H>`$\.!4`_`"5XJ0`<;@1`+P`E>*(I"76A)#B^\20Y18]`%8 M_`)9!`-9#`59%`991@=9'`E9)0Q9+@U9-@X``%D_D)=:$D-KP=B0EUH20VO! MTI"76A)#:^%DD)=:$D-KX0*0EUH20VN`*Y"76A)#:P)$89"76A)#:P)X?Y"7 M6A)#:^$QD)=:$D-K`G9PD`'&X$0!\"*0``020B#_5!_^[U0@Q!-4!_VO!I"7 M7>_PH^WPHQ)#BY"77Q)#:Y```Q)"(%3PQ%0/D)=B\)``!!)"(%1`Q!,35`.0 MEV/PD)==X/]U\`F0DR420U^M@JR#D)=D[/"C[?#O=?`)I"0C^723-?#Z>P&C M$D.+D)=?$D-KD``#$D(@5`__D)=F$D-K[Q)"39"77Q)#:Y```A)"(/^0EV82 M0VN0``'O$D)?D)=?$D-KD``!$D(@_Y"79.#\H^#]]8*,@^_P$B1BC8*,@Z/P MD)=BX/Z0EUW@_R3!]8+D-)+U@^[PD)=>X/YU\`GOD),I$D-?[O!U\`GOD),J M$D-?=`'PD)=CX/YU\`GOD),K$D-?[O"/$>\EX"3D]8+D-)6O@O43CQ3E$77P M`J0D@?ETDC7P=14!]1:)%W7P">41D),E$D-?KX*%@QB/&>41=?`)I"0C^723 M-?!U&@'U&XD<=,$E$?6"Y#22]8/@$D.46M4`6NH!6O\"6Q0#6ST$6U(%6V<& M6XT,6[H-6^<.7!0/``!<2.41)>`DY/6"Y#25]8-T\/"C=!6`/.41)>`DY/6" MY#25]8-T\/"C=!"`)^41)>`DY/6"Y#25]8-T\/"C=`6`$N41)>`DY/6"Y#25 M]8-T\/"CY/#E$27@)('U@N0TDO6#=`_PHW2/\(%(Y1$EX"3D]8+D-)7U@W0/ M\*-T]8`GY1$EX"3D]8+D-)7U@W0/\*-T\(`2Y1$EX"3D]8+D-)7U@^3PHW0- M\.41)>`D@?6"Y#22]8/D\*/P@4B0!$?@JQ6J%JD7$D)-D`1&X*L5JA:I%Y`` M`1)"7Y`$1>"%%(*%$X/PD`1$@3^0!$O@JQ6J%JD7$D)-D`1*X*L5JA:I%Y`` M`1)"7Y`$2>"%%(*%$X/PD`1(@%B0!$_@JQ6J%JD7$D)-D`1.X*L5JA:I%Y`` M`1)"7Y`$3>"%%(*%$X/PD`1,@"N0!%/@JQ6J%JD7$D)-D`12X*L5JA:I%Y`` M`1)"7Y`$4>"%%(*%$X/PD`10X(44@H43@Z/PJQ6J%JD7P`/``L`!$B1B_ZL: MJANI'!(D8E_0`=`"T`,20DVK%>47)`'YY#46^L`#P`+``1(D8O^K&JH;J1R0 M``$20B!?T`'0`M`#$D)-A12"A1.#P(/`@N#_A1F"A1B#X/[O7M""T(/PA12" MA1.#H\"#P(+@_X49@H48@Z/@_N]>T(+0@_#E$27@)('U@N0TDO6#X/ZCX$Y@ M.W42"W0!?@"H$@B`!<,SSC/.V/G_Y1$EX"2!]8+D-)+U@^!>_J/@7TY@!N42 M)!"`7142Y1+#E`!0RH!6Y1$EX"3D]8+D-)7U@^#^H^!.8#UU$@]T`7X`J!(( M@`7#,\XSSMCY_^41)>`DY/6"Y#25]8/@7OZCX%].8`B0EVGE$O"`$!42Y1+# ME`!0R(`%Y)"7:?#E$27@).3U@N0TE?6#X/ZCX$Y@.^3U$G0!?@"H$@B`!<,S MSC/.V/G_Y1$EX"3D]8+D-)7U@^!>_J/@7TY@")"7:N42\(!;!1+E$K00RH!2 MY1$EX"2!]8+D-)+U@^#^H^!.8#GD]1)T`7X`J!((@`7#,\XSSMCY_^41)>`D M@?6"Y#22]8/@7OZCX%].8`;E$B00@`H%$N42M`S,@`7DD)=J\)"7:>#_=?`) MY1&0DR<20U_O\)"7:N#^=?`)Y1&0DR@20U_N\'2$)1'U@N0T!/6#X-.?0!^0 MEVG@_W2$)1'U@N0TEO6#[_!TA"41]8+D-`3U@^_P=(0E$?6"Y#0$]8/@PYY0 M'Y"7:N#_=(0E$?6"Y#26]8/O\'2$)1'U@N0T!/6#[_"0EVG@_].4$T`(D),B M=`/P@"'OTY0+0`B0DR)T`O"`$^_3E`-`")"3(G0!\(`%Y)"3(O"0DR+@D`2Q M\"(2)&+U:2+3$*\!P\#0D``!$D(@D)=Z\)```Q)"()"7;/`2)&)E:F`#$DWQ MT-"2KR(2)&+U$<.4(%`5D``"$D(@_W0C)1'U@N0TE?6#[_`BY1&T(`J0``(2 M0B"0DR'P(I```A)"()"7//#@8`3@]'`AHJ_D,_41PJ^0`$?@5/O]?T<21R!] M0'\!$C%FY1$D_Y*O(I`"">#]$B1B_J\%[2Z0EX#PD``!$D(@_^TOD)>!\)`` M`A)"(/_M+Y"7@O"0``,20B#_[2^0EX/PD``$$D(@_ZX%[2^0EX3P(N3U:9"7 M?/#U:I"7>70,\)"7=_#DD)=Z\)"7=O"0EW7PD)=X!/"0EVWPY)"7>_"0EV_P MD)=T=`?PY)"7;O"0EW+PHW0"\.20EW'PD)=L\"+DD)=[\)"7;O"0EWSP(N57 M<#>0EWG@5`_3E`%0+)`"A^!P)I"7AN"T`A"0EWW@_J/@]8*.@^!@"(`/D`&O MX'`)D)=QX&`#?P$B?P`BD``KX$0!\'_H?@,2,A60``C@1!#]?P@21R"0``G@ M5/?]?PD21R"0`"C@5/[]?R@21R"0`"#@5/[]?R`21R"0`"7@1$#]?R421R"0 M``G@5._]?PD"1R"0`"7@5+_]?R421R"0`"#@1`']?R`21R"0`"C@1`']?R@2 M1R"0`/#@,.'YD``)X$0(_7\)$D<@D``(X%3O_7\($D<@D``KX%3^_7\K$D<@ M?^A^`P(R%8]LD)>#$D9=Y6Q@$'0A+_6"Y#3\]8/@1!#P@`YT(2_U@N0T_/6# MX%3O\)`$'W0!\"+OPY0@4#GO,.`7[<14\/WOPQ/^)*3U@N0T!/6#X%0/@!#O MPQ/^)*3U@N0T!/6#X%3P\'2D+O6"Y#0$]8/@3?`BY/41=?`)Y1&0DRH20U_@ M9`%@`N%AY1$EX"3`]8+D-)'U@^#^H^#3E`#NE`!0`N%AY1%U\`JD)`#Y=)`U M\'46`?47B1CE$27@),#U@N0TD?6#X/^CX)"75L_PH^_PY1$EX"1C]8+D-)3U M@^#_H^"0EUC/\*/O\'2$)1'U@N0T!/6#X%0_D)=2\.#^5!^C\'7P">41D),G M$D-?X)"76_!T9"41]8+D-);U@^##E`5``H$[D)=;X/^0EU/@GT`3D)=;X)"7 M4_#N5$#^D)=2\.].\)`$_>!D`7`ID)=3X/^004J3_G0C)1'U@N0TE?6#X,.> M0`;OD$#:@#"0EU/@D$#V@">0EU/@_Y!!2I/^=",E$?6"Y#25]8/@PYY`!N^0 M01*`!Y"74^"002Z3D)=:\)"76N!U\`:D)%#Y=$`U\'43__44B160EU+@D$'R MD__3D)=9X)^0EUC@E`!`">3]KQ$2:5K!^.41)>`DX?6"Y#22]8/@]1FCX/4: MJQ.J%*D5$B1B_WX`JQ:J%ZD8$D*7_:SP$B1[[R4:]1KN-1GU&:L3JA2I%9`` M`1)"(/]^`*L6JA>I&)```A)"POVL\!(D>^\E&O4:[C49]1FK$ZH4J160``(2 M0B#_?@"K%JH7J1B0``020L+]K/`2)'OO)1KU&NXU&?49JQ.J%*D5D``#$D(@ M_WX`JQ:J%ZD8D``&$D+"_:SP$B1[[R4:]1KN-1GU&:L3JA2I%9``!!)"(/]^ M`*L6JA>I&)``"!)"POVL\!(D>^\E&O4:[C49]1FK$ZH4J160``420B#_?@"0 MEU;@_*/@_1(D>]/E&I_E&9Y`#.4:G_4:Y1F>]1F`!>3U&?4:Y1$EX"3A]8+D M-)+U@^49\*/E&O"0EU+@)>`D9O6"Y#1!]8/#=`&3E1KDDY494`:O$?%MP`DGO6"Y#1!]8/3=`&3E1KDDY494`+!S'T!KQ$2:5K!S'1D)1'U@N0T MEO6#X/QD!6`"H=:0DR+@_[0#"Y"74^##E!E`/8`N[[0""Y"74^##E!%`+H`? MD),BX/^T`0N0EU/@PY0*0!N`#.]P$9"74^##E`-`#9"50W0!\(`%Y)"50_!T M0R41]8+D-)3U@^#U&W0C)1'U@N0TE?6#X/_#E#!0`J&#D)5#X&0!8`*A@W1$ M)1'U@N0TE?6#X&0*8%'O)`7_Y#/^="$E$?6"Y#22]8/@_=.?[F2`^'2`F%`R M[20%_^0S_G0C)1'U@N0TE?6#X-.?[F2`^'2`F%`4=(0E$?6"Y#26]8/@_Y"7 M4^!O8#UT(R41]8+D-)7U@^#_TY1"0`5U&P6`#N_3E#E`!74;`X`#=1L!="$E M$?6"Y#22]8/O\'1$)1'U@N0TE8`I=&0E$?6"Y#26]8/D\'1$)1'U@N0TE?6# MX`3P@!#D]1MT9"41]8+D-);U@^3PD)=3X/]TA"41]8+D-);U@^_P=$,E$?6" MY#24]8/E&_!U\`GE$9"3*Q)#7^"T`1#D]1MT9"41]8+D-);U@^3PK1O!R.QD M!F`"PI&'7P`N42I/6"A?"#$D+"_:SPY1*00@Z3_WX`$B1[[R4: M]1KN-1GU&<.0EU7@E1J0EU3@E1E`!P42Y1*T!;WE$L,3]1+E&[0!!N42<$:` M$^4;M`,5Y1)P!74;`X`YY1*T`05U&P&`+X`JY1NT!2CE$G`%=1L%@`WE$K0! M!74;`X`#=1L!TY"76>"4`Y"76."4`$`#Y/4;TY"76>"4`Y"76."4`$`#Y/4; M=$,E$?6"Y#24]8/E&_#]KQ$Q)'1D)1'U@N0TEO6#X-.4!71D4`XE$?6"Y#26 M]8/@!/"`"R41]8+D-);U@^3PJQ:J%ZD8Y/7P$D+ZJQ:J%ZD8D``"Y/7P$D,9 MD``$Y/7P$D,9D``&Y/7P$D,9D``(Y/7P$D,9Y1$EX"3`]8+D-)'U@^3PH_#E M$27@)&/U@N0TE/6#Y/"C\.41)>`DH_6"Y#24]8/D\*/P!1'E$<.4(%`"(6S#E!!`(>PD\/]T`7X`J`<(@`7#,\XSSMCY M_Y"77>!>_J/@7TYP(^S#E!!0.70!?@"H!`B`!<,SSC/.V/G_D)=?X%[^H^!? M3F`<[&038`CL9!)@`[P1"9"77>`PX`)\&*T$C1R`-`R`BY"77.#\;7!I=*4I M]8+D-);U@^WP=?`)Z9"3*1)#7^"T`0SE'"#F!^U$0/4<@`.O'"+M)>`DGO6" MY#1!]8/DD_YT`9/_[27@)&;U@N0T0?6#=`&3+__DDS[#$_[O$__I)>`DX?6" MY#22]8/N\*/O\(!;[=.<0%:0EUS@_W2E*?6"Y#26]8/O\*T'CQSM)>`DGO6" MY#1!]8/DD_YT`9/_[27@)&;U@N0T0?6#=`&3+__DDS[#$_[O$__I)>`DX?6" MY#22]8/N\*/O\*\<(G0!*?6"Y#22]8/D\.4<1(#_=(0I]8+D-`3U@^_P(JH' M=(0J]8+D-`3U@^!4?_M4'_F0EU[P=?`)ZI"3*!)#7^"0EV#P=?`)ZI"3)Q)# M7^"0EV'P_.HEX"3D]8+D-)7U@^#_H^"0EV+/\*/O\.HEX"2!]8+D-)+U@^#_ MH^"0EV3/\*/O\.G3G$`)D)=AX)"77O#[[7`"09V0EU_M\.LPY@F0EU[@^Z/@ M%/"0EU_@<`)!G9"77N#_TY0`4`)!G>20EUWP[Q20EUSPD)=@X/F0EUS@_M.9 M0'+NE!!`)>XD\/]T`7X`J`<(@`7#,\XSSMCY_Y"79.#\H^#][%[^[5].<"N0 MEUS@_\.4$%`V=`%^`*@'"(`%PS/.,\[8^?^0EV+@_*/@_>Q>_NU?3F`5D)=< MX/NCX`3PD)=?X/^0EUW@;V`(D)=##GU`,D)=`DX?6"Y#22]8/N\*/O\'2$*O6"Y#0$]8/K\/\BD`1$=!'P MHW3P\*-T#_"CY/#]=*0M]8+D-`3U@^3P#;T0\.3]=?`*[9"0`!)#7^3PH_!U M\`KMD)`"$D-?Y/"C\'7P"NV0D`020U_D\*/P=?`*[9"0!A)#7^3PH_!U\`KM MD)`($D-?Y/"C\'2$+?6"Y#26]8-T$_!T1"WU@N0TE?6#Y/!T0RWU@N0TE/6# MY/#M)>`DP/6"Y#21]8/D\*/P[27@)&/U@N0TE/6#Y/"C\.TEX"3C]8+D-)3U M@^3PH_#M)>`DH_6"Y#24]8/D\*/P[27@)&3U@N0TE?6#Y/"C\.TEX"2D]8+D M-)7U@^3PH_!T1"WU@N0TEO6#Y/!T)"WU@N0TEO6#Y/!T9"WU@N0TEO6#Y/"0 M0<23_G0!D_^008QT`9,O_^23/L,3_N\3_^TEX"3A]8+D-)+U@^[PH^_P=?`) M[9"3*A)#7W0!\'7P">V0DRD20U]T`?!TP2WU@N0TDO6#=`SP=?`)[9"3)1)# M7W3_\*/P=?`)[9"3(Q)#7^3PHW0/\'7P">V0DR<20U]T$_!U\`GMD),H$D-? MY/!TA"WU@N0T!/6#=!/P#>UD(&`"80\BD`8T=/_PY*/PH_"C\"(BY)"7A?"B MKS.0EU/PD`"`X"#A&A(R*Q(R*Y"74N!D`?#@)*V0`<3P=&RC\(#?D`8P=`'P MPJ^0`(#@1(#P$D36D)=3X"3_DJ\BCA&/$HL3BA2)%>20EU+P[Y``,?`21-;E M$50#_Y``,N!4_$_P$D36D``SX%1_\!)$UI``,^`@YPZ0EU+@PY1D4`7@!/"` MZY"74N##E&10$)``,."K$ZH4J1420DU_`2)_`"+D]28B?PNQON]E)F`0Y2:T M`07D]2:``W4F`7\!(G\`(N4C9`%P0+%;OP$%?P$21.:0`$;@1`3]?T821R"0 M`$3@5/O]?T021R"0`$;@5/O]?T821R!_`K&^CR>0`_PTY0'4$?@_W0!J`<(@`+#,]C\]/^0`$;@7_`21-:0EZ7@_70! M?@"H!0B`!<,SSC/.V/G_D`!$X/OD_N];J`4(@`;.HN<3SA/8^/^`1)"7I>`D M^/#@_W0!J`<(@`+#,]C\$D3.D)>EX/UT`7X`J`4(@`7#,\XSSMCY_Y``0N#[ MY/[O6Z@%"(`&SJ+G$\X3V/C_T-"2KR+DD)>=\*/PD`7XX'`/H^!P"Z/@<`>C MX'`#?P$BTY"7GN"4Z)"7G>"4`T`#?P`B?S)^`!(R%9"7G>1U\`$20H&`QI`` M$>!$"?`21-:0EQT20U.0@)82)0A_>'X($BL(D)3]_Q(P+)"7A^"T`1&0@&@2)10``RV5Y/U_`1(P+")_>'X($B)ED)<= M$B4(?P1^#!(B99"7(1(E"'\`?@@2(F60ER42)0B0EX?@D)<=M`$-$D-3[U3' M_^U4Q_V`!Q)#4^]4Q__LD("6$B4(?WA^"!(K")"7(1)#4^]4#__LD("6$B4( M?P1^#!(K")"7)1)#4^]$`O_LD("6$B4(?P!^"!(K"']P?@X2(F60ERD2)0B0 M@)82)10`&R6@?W!^#A(K")"`:!(E%`````#D_?\2,"R0EX?@M`$1D(!H$B44 M`````.3]?P$2,"R0`!'@5/;P`D36D)>'X)"7+?`B[W`"(;&0ERW@8`*A?)"7 M&1)#4Y"`EA(E"'^,?@@2*PB0EL420U.0@)82)0A_1'X($BL(D);)$D-3D("6 M$B4(?UQ^"!(K")"6S1)#4Y"`EA(E"']L?@X2*PB0EM$20U.0@)82)0A_<'X. M$BL(D);5$D-3D("6$B4(?W1^#A(K")"6V1)#4Y"`EA(E"']X?@X2*PB0EMT2 M0U.0@)82)0A_?'X.$BL(D);A$D-3D("6$B4(?X!^#A(K")"6Y1)#4Y"`EA(E M"'^$?@X2*PB0END20U.0@)82)0A_B'X.$BL(D);M$D-3D("6$B4(?XQ^#A(K M")"6\1)#4Y"`EA(E"'_0?@X2*PB0EO420U.0@)82)0A_U'X.$BL(D);Y$D-3 MD("6$B4(?]A^#A(K")"6_1)#4Y"`EA(E"'_9$B4(D)>9$D-3[43`_>R0EYD2)0B0EYD20U.0@)82)0A_C'X( M$BL(D("6$B44``$``']$?@@2*PB0@)82)10`VR6D?UQ^"!(K")"`EA(E%"#; M):1_;'X.$BL(D("6$B44(-LEI']P?@X2*PB0@)82)10$&R6D?W1^#A(K")"` MEA(E%`0;):1_>'X.$BL(D("6$B44!!LEI']\?@X2*PB0@)82)10$&R6D?X!^ M#A(K")"`EA(E%&/;):1_A'X.$BL(D("6$B44!!LEI'^(?@X2*PB0@)82)10@ MVR6D?XQ^#A(K")"`EA(E%"#;):1_T'X.$BL(D("6$B44(-LEI'_4?@X2*PB0 M@)82)10@VR6D?]A^#A(K")"`EA(E%``;):1_W'X.$BL(D("6$B44`!LEI'_@ M?@X2*PB0@)82)10DVR6D?^Q^#A(K"'\$?@P2(F60EYD2)0B0EYD20U/D_^R0 MEYD2)0B0EYD20U/O1!'_[)"7F1(E")"7F1)#4Y"`EA(E"'\$?@P2*PA_!'X- M$B)ED)>9$B4(D)>9$D-3[U3P_^R0EYD2)0B0EYD20U/O1`'_[)"7F1(E")"7 MF1)#4Y"`EA(E"'\$?@T2*PA_#'X)$B)ED)>9$B4(D)>9$D-3Y/_LD)>9$B4( MD)>9$D-3[T01_^R0EYD2)0B0EYD20U.0@)82)0A_#'X)$BL(?PQ^"1(B99"7 MF1(E")"7F1)#4^U4#_WL5/#\D)>9$B4(D)>9$D-3[400_>Q$`?R0EYD2)0B0 MEYD20U.0@)82)0A_#'X)$BL(?P1^"!(B99"7F1(E")"7F1)#4^]4\/_LD)>9 M$B4(D)>9$D-3[T0!_^R0EYD2)0B0EYD20U.0@)82)0A_!'X($BL(Y)"7+?`B MTQ"O`?[_#3E`=09>#_=`&H!PB``L,SV/ST_Y``1^!?\!)$ MUI"7G^#_=`&H!PB``L,SV/S_D`!&X$_P$D36D)>@X&`6D)>?X/]T`:@'"(`" MPS/8_/^0`$6`:)"7G^#_=`&H!PB``L,SV/ST_Y``18!MD)>?X"3X\.#_=`&H M!PB``L,SV/S$5/`21,Z0EY_@_W0!J`<(@`+#,]C\_Y``0^!/\!)$UI"7H.!@ M&Y"7G^#_=`&H!PB``L,SV/S$5/#_D`!"X$^`&I"7G^#_=`&H!PB``L,SV/S$ M5/#T_Y``0N!?\!)$UM#0DJ\BBQ&*$HD3D``"$D(@D)<[\.`PX$N0ES)T`?!_ M@'X($B)ED)D`!'X%3S_7]'$D<@D`!(X%3S_7]($D<@D`!&X%3O_7]& M$D<@Y)"7./`BY/U_11)'()`$_>3PH_"0ESSPD)="\)"71?"0ET/PD)=&\)"7 M1/"0ET?PD)!$P/U_40)'()"73.!D`6`)D)`$\(`DD)=#X,.4 M_U`&X`3PY(`1D)=$X,.4_U`,X`3PY)"70_"0ET+PD`!$X##C,I"71>##E/]0 M!>`$\(`DD)=&X,.4_U`&X`3PY(`1D)='X,.4_U`,X`3PY)"71O"0ET7PD`3] MX$0!\"*0``(20B"0ESKPD``!$D(@)>`EX)"7.?`2)&(EX"7@D)<]\)`%8."0 METCPD`5AX)"72?"0!6+@D)=*\)`%8^"0ETOPHJ_D,Y"77?#"KY"7.>#_$DIB MD)==X"3_DJ^0ESK@<`(AB9"7.>!P`B&)D)<]X'`"(8FBK^0SD)==\,*OD)=, M=`'PD)==X"3_DJ\21Q>0`$;@1`']?T821R"0ES+@8!60ESX20U.0@)82)0A_ M@'X($BL(@`:0!2)T?_"0`$7@5._]?T421R"0!8?@9(#PD)=(X)`%A/"0ETG@ MD`6%\)"72N"0!8;PD)=+X)`%A_"BK^0SD)==\,*OD`$\X$0@\'T@Y/\2,;>` M+9"7.N!P+Y"73!)'%I``1N!4_OU_1A)'()`%(N3PHJ\SD)==\,*O?2#D_Q(Q -29"77>`D_Y*O(@"'%P`` ` end diff --git a/sys/contrib/dev/rtwn/rtwn-rtl8192cfwU_B.fw.uu b/sys/contrib/dev/rtwn/rtwn-rtl8192cfwE_B.fw.uu similarity index 99% rename from sys/contrib/dev/rtwn/rtwn-rtl8192cfwU_B.fw.uu rename to sys/contrib/dev/rtwn/rtwn-rtl8192cfwE_B.fw.uu index f10422445ca6..a4dd52165dee 100644 --- a/sys/contrib/dev/rtwn/rtwn-rtl8192cfwU_B.fw.uu +++ b/sys/contrib/dev/rtwn/rtwn-rtl8192cfwE_B.fw.uu @@ -1,366 +1,366 @@ -begin 444 rtwn-rtl8192cfwU_B.fw.uu +begin 444 rtwn-rtl8192cfwE_B.fw.uu MPH@"`%@``@`'%11$K#\!`,S,S,P````````````````"19L````````````` M`````````EE4```````````````````````````````````````````````` M`````````````F2,```````"2[(```4$`P(``P8%!`,`!`8%!`(`!`@'!@0` M!@H)"`8`"`H)"`0`"`H)"`(`"`H)"```"!(1$`@`$!H9&!``&"(A(!@`("(A M(!``("(A(`@`("(A'`@`("(A%`@`("(@&`@`(#$P(!``,#$P&```,#$O$!`` M,#$L$!``,#$H$```,#$@$```,#$0$```,`0$!`4$!`0%!04&!@0$!`4%!08& M!`0%!04%!@8$!`4%!04&!PH+#1`$!04&!@D,$0@("0D*#!`1!`0$!00$!0<' M!P@*!`0$!`8*"PT%!0<'"`L-#P0$!`4'!PD)#`X0$@8'"0H,#A$3"0D)"0P. M$1,````````````D)BH8&AT?(2`"@`,@!0`&0`>`",`$L`4`!X`+0`^@$L`9`!]```@`" M``0`"``,`!(`&``D`#``2`!@`&P`*``\`%``9`"@`,@`\`$8`&0`H`#P`6@! M]`)8`R`#Z`("`@("`@,#!`0%!P(#!`H,#A`2!0<'"`L2)#P!`0$!`0(#!`4& M!P@!`@,$!08'"`4&!P@)"@L,(!X<&!`8````````````````NP$,Y8(I]8+E M@SKU@^`B4`;I)8+XYB*[_@;I)8+XXB+E@BGU@N6#.O6#Y),BNP$&B8**@_`B M4`+W(KO^`?,B^+L!#>6"*?6"Y8,Z]8/H\")0!NDE@LCV(KO^!>DE@LCR(L7P M^*/@*/#%\/CE@A6"<`(5@^`X\"*[`0J)@HJ#X/7PH^`B4`:'\`GG&2*[_@?C M]?`)XQDBB8**@^23]?!T`9,BNP$0Y8(I]8+E@SKU@^#U\*/@(E`)Z26"^(;P M".8BN_X*Z26"^.+U\`CB(N6#*O6#Z9/U\*/IDR*[`0J)@HJ#\.7PH_`B4`;W M":?P&2*[_@;SY?`)\QDB^+L!$>6"*?6"Y8,Z]8/H\.7PH_`B4`GI)8+(]@BF M\"*[_@GI)8+(\N7P"/(B[TO_[DK^[4G][$C\(N#\H^#]H^#^H^#_(J0E@O6" MY?`U@_6#(N#[H^#ZH^#Y(OC@^Z.CX/DE\/#E@A6"<`(5@^#Z./`BZ_"CZO"C MZ?`BT(/0@OCDDW`2=`&3<`VCHY/X=`&3]8*(@^1S=`*3:&#OHZ.C@-_0@]"" M^.23]D`6`(D`&Y=`'P@&[E)50#8`B0`;ET`O"`8.4C5`_3 ME`)`")`!N70$\(!/Y24PX@B0`;ET"/"`0N4E,.0(D`&Y=!#P@#60DE?@8`B0 M`;ET(/"`)Y"27.!@")`!N72`\(`9Y29@!Y`!N>3P@`Z0`;GD\)`!N'0$\'\! M(I`!N'0$\'\`(@)%`P)%!GT!?PS3$*\!P\#0CV>-:.5G5`__Y2)4#V]@4B5`__OP0.Y6<@X@D21'SO M8!022C/E(E0/_[\""1)+@N]@`Q)+,=#0DJ\B`D79`E%WY).C^.23HT`#]H`! M\@C?](`IY).C^%0')`S(PS/$5`]$(,B#0`3T5H`!1O;?Y(`+`0($"!`@0("0 M2T3D?@&38+RC_U0_,.4)5!_^Y).C8`$.SU3`)>!@J$"XY).C^N23H_CDDZ/( MQ8+(RL6#RO"CR,6"R,K%@\K?Z=[G@+[D_^4D8'7E(60!<&_E)!1@*R3]8"`4\.!@!*/@8!20DE7@<`B0DF/@D))5\'\!@`)_`>]@.D,E M$.20DH/PD))6X'7P`Z3_D))?X"^0DH3PY/O]?U1^`1)+EY`!5W0%\.4B5`_# ME`10!WT!?P0210TBY2%D`7!GY21@8^4D9`)@!N4D9`5P)Y`&J^"0DE7PD`:J MX)"28_"0DE7@<`>0DF/@_X`%D))5X/^0DE7O\)"25^!@`N3PY)"25O"0!5AT M`_"0`5?D\)`!/'0"\%,E_5,E[^4D%"3]4`*``Q)'""+DD)(0\)`&J>"0DA#P MX%3`<`E3)?Y3)?T22WN0DA#@,.850R4!D))DX&0"8`422LR`"!))\X`#4R7^ MD)(0X##G)T,E`N20DH/PD));X)"2A/#D^_U_5'X!$DN7D`%7=`7PD))E=`'P M(E,E_2+O9`%P,'UX?P(2-G5]`G\#$C9UD`%7Y/"0`3QT`O`210GD_Q)8II`& M!.!4?_"0!@K@5/CP(I`!-G1[\*-T`O!]>_\2-N9]`G\#$C;FD`8$X$2`\)`& M"N!$!_`22W#E(2#@!>20DE?P(I"2*1)#BQ)+9)"2*1)#:Q(IV?4D%&`.%&`? M%&`Q)`-P1'\!@#V0DBD20VN0``(20B#]Y/\22F6`*9"2*1)#:Y```A)"(/U_ M`1)*91^`%)"2*1)#:Y```A)"(/U_`A)*9>3_$D=T(N3U)?4D=2,,=2(,D))D M\)"28O"0DF'PD))C!/"0DE7PY)"29?"0DE?PD))?=`7PY)"25O"0DEWPHW0# M\)"26O"C=`7PD))9=!3PD))@=`7PY)"26/"0DE3PD))]\)"27/`B$DM5[V0! M8`B0`;ET`?"`1Y"28N!@")`!N70"\(`YD))AX&`(D`&Y=`3P@"OE(U0/TY0$ M0`B0`;ET"/"`&N4F8`B0`;ET(/"`#I`!N>3PD`&X=`CP?P$BD`&X=`CP?P`B MY)"2%O#E)&!)D))EX&`-Y/!3)?WE)50'<#B`,Y"25N`$\%,E[Y"2%N#_D)): MX"__Y#/^D))6X-.?[F2`^'2`F$`-Y2&T`0NCX'`'X`3P(A)+>R+E)!0D_5`" M@$>0DF3@8"P210GDD)*#\)"26>"0DH3PY/O]?UA^`1)+EY`!6W0%\)`&DG0! M\)"28O"`$.4B5`_#E`10!WT!?P0210WD_Q)8IB+3$*\!P\#0CV.0!!W@8"20 M!2+@]69T__`2=F6_`0V0DGC@_WT!$E@*$D/GD`4BY6;P@`V0DGC@_WT!$E@* M$D/GD`0?="#PT-"2KR*0`5_D\)`!/'0(\.20DH/PD))9X)"2A/#D^_U_7'X! M$DN7D`%?=`7PD`:2=`+PD))A%/#E(E0/PY0,4`,210DBD`$W=`+PD`4B=/_P M$G9E[W`&D`'(=/WP?0)_`Q(VYN4D8`5_`1)8IA)W&U,B\$,B`B+O)/Y@"P1P M(I"28W0!\(`6[7`*D))@X)"28_"`!9"28^WPD))CX)"25?`B[V`/="$M]8+D M-/SU@^!$$/`B="$M]8+D-/SU@^!4[_`BD`8$X%2_\.]@"N4AM`$%Y/\22:A3 M(O!#(@PBD`0=X'`4D))WX/_D_1)8"HYICVJ0!!]T(/`BD)*I[_`2=J:0DJG@ M8`60!2+D\%,B\$,B!"*0!@3@1$#PY2&T`05_`1))J%,B\$,B!"+E(S#F$N4C M5`__D`$OX%2`3V2`\%,COR)3(O!#(@$22X422X93(O!#(@(B09)U`$&2J`!! MDJH`09*B``"0!!O@5']D?W\!8`)_`"+DD))E\)"25O#U)2*0DEW@H^"0!5CP M(GT!KR,"10U_`"(B(O"0DEG@D)*$\.3[_7]8?@'3$*\!P\#0D)*#X/NCX/5$ MY/5%$C6KT-"2KR+`X,#PP(/`@L#0==``P`#``<`"P`/`!,`%P`;`!W4.`%.1 MWY`!/.!5,/4TH^!5,?4UH^!5,O4VH^!5,_4WY30PX`:0`3QT`?#E-##A")`! M/'0"\#$$Y30PXBR0`3QT!/#E)&`BD`:2X##@%)"2@^1QAY`!6W0%\)`&DG0! M\(`'D))BY/!Q>^4T,.,\D`$\=`CPY21@,I`&DN`PX220DH/D\)"26>"0DH3P MY/O]?UQ^`7&7D`%?=`7PD`:2=`+P@`>0DF'D\'%[Y30PY`B0`3QT$/"1]N4T M,.4)D`$\="#P$E._Y34PX!:0`3UT`?"0`(/@]2.0`;OE(_!Q&7%[Y34PX@:0 M`3UT!/#E-3#D!I`!/700\.4V,.`&D`$^=`'PY38PX0:0`3YT`O#0!]`&T`70 M!-`#T`+0`=``T-#0@M"#T/#0X#+E7F0!<#OQN[\!!'\!\:^0`$;@1`3]?T:Q M0I``1.!4^_U_1+%"D`!&X%3[_7]&L4)_`O'ZCV*0`20DC_PD)([$D-3 MD("%$BI_?X!^"!(OV9``1>!$[_U_1;%"D`!%X%3O_7]%L4*0`$;@1!#]?T:` M.)"2/W0!\)"211)#4Y"`A1(J?W^`?@@2+]F0`$7@1"#]?T6Q0I``1>!$$/U_ M1;%"D`!&X$00_7]&L4(BD``"$D(@D))!\)```1)"("7@)>"0DD#P$BG9)>`E MX)"21/"0!6#@D))/\)`%8>"0DE#PD`5BX)"24?"0!6/@D))2\**OY#.0DB7P MPJ^0DD#@_Q)3;9"2)>`D_Y*OD))!X'`"X0:0DD#@<`+A!I"21.!P`N$&HJ_D M,Y"2)?#"KY"24W0!\)"2)>`D_Y*OL3F0`$;@1`']?T:Q0I"2.>!@%9"211)# M4Y"`A1(J?W^`?@@2+]F`!I`%(G1_\)``1>!4[_U_1;%"D`6'X&2`\)"23^"0 M!83PD))0X)`%A?"0DE'@D`6&\)"24N"0!8?PHJ_D,Y"2)?#"KY`!/.!$(/!] M(.3_$C<`@"N0DD'@<"V0DE.Q.)``1N!4_OU_1K%"D`4BY/"BKS.0DB7PPJ]] M(.3_$C:2D)(EX"3_DJ\BD`$\=/_PH_"C\)`!-/"C\*/PH_#]?U2Q0GW_?U6Q M0GW_?U:Q0GW_?U>A0I`!,.3PH_"C\*/PD`$X\*/PH_"C\/U_4+%"Y/U_4;%" MY/U_4K%"Y/U_4Z%"D`!)X)"2J_#@5`_P1/#]?TFQ0I"2J^!$L/U_2:%"D`'* MY6'P[V`"\9$B?POQ^N]E86`0Y6&T`07D]6&``W5A`7\!(G\`(N20DGOPD`"` MX$2`_7^`H4+@7_#3$*\!P\#0?Q#?_M#0DJ\BTQ"O`0DJS@_70!?@"H!0B`!<,SSC/.V/G_D`!$ MX/OD_N];J`4(@`;.HN<3SA/8^/^`3)"2K.`D^/#@_W0!J`<(@`+#,]C\]/^0 M`$/@7_`23^J0DJS@_70!?@"H!0B`!<,SSC/.V/G_D`!"X/OD_N];J`4(@`;. MHN<3SA/8^/_0T)*O(I`"A._PH^[PHW0%\"+OCO`20[I0RP!`4/,`@%$>`0!1 M,@(`44H$````46?M5#]P!/[_@`1^`']`[RW_[CS^[W@&SL,3SA/8^7@&PS/. M,\[8^8`F[51_<`3^_X`$?@!_@.\M_^X\_N]X!\[#$\X3V/EX!\,SSC/.V/G] MK`:`2>UP!/[_@`1^`7\`[RWN/'T`_(`U[%0!37`$_O^`!'X"?P#O+>X\PQ-] M`(`:[%0#37`$_O^`!'X$?P#O+>X\$Q-4/WT`)>`EX/RN!*\%(I`!Y'18\*-T M`O`BY)"2%_"C\'6.`A)/U]&ED))\[_#1F9"2?N_PT>V0DG/N\*/O\.3U5?4A M$G#6T9`22$(2,CW1A1)/.O$%T<#1B='5T811)Q)^=)"2&>79\,*OD`"`X$1` M\!)/ZG7H`T.HA=*O,6R0DA?@9`'PY54PY`G"KU-5[]*OD77E53#F%L*O4U6_ MTJ\2:;R0DD/@_V`#M`$"46N0DD/@<`,2?M)1/Y`!O>4B\)"29."0`;SP@+60 MDJ/@5/[PY)"2I?"0DJ/@5'_PHW0*\"*0!C3@8"4435_^7X!$G8# MOP$)D`8UX%0/\(`$@`#!LN20!C3P(I"2.N##E!10!>`$\&$CD)(ZX&048`)A M(Y"22>!P)9"23.!P'Y"22N!P&9"23>!P$Y"22^!P#9"23N!P!Y`$_>!4_O"0 MDDG@D`1$\)"22N"0!$7PD))+X)`$1O"CY/"0DDS@D`1(\)"23>"0!$GPD)). MX)`$2O"CY/"0DC7@D`1,\)"2-N"0!$WPD)(WX)`$3O"0DCC@D`1/\.20DCKP MD)(U!/#DH_"C\*/PD)))\*/PH_"C\*/PH_"0!6#@D)(:\)`%8>"0DAOPD`5B MX)"2'/"0!6/@D)(=\)"24N#_D)(=X/[3GU`+D))2X,.>TY0!0!"0DD#@M`$" M@`.0DD3@_W%M(I`%8."0DD_PD`5AX)"24/"0!6+@D))1\)`%8^"0DE+PPW3_ MG_Z0DE#@TYY`'N`O\*/@M/\/Y/"CX+3_`^3P(I"24H`#D))1X`3P(I"24.`O M\"*0DD'@9`%@`H%TD`!&X$0!_7]&$DU"D))3X'`RD)(YX&`5D))%$D-3D("% M$BI_?X!^"!(OV8`&D`4B='_PD))`X/]Q;9"24W0!$DTX@$"0DE/@9`%P.)"2 M1.#_<6WDD))3\)``1>!$`?U_11)-0I"2.>!@%9"2.Q)#4Y"`A1(J?W^`?@@2 M+]F`!9`%(N3PD`6'X&2`\)"23^"0!83PD))0X)`%A?"0DE'@D`6&\)"24N"0 M!8?P(M,0KP'#P-"0`DG4?&W4@`7L! M>I)Y'+'"D)(\)"2J.!U\`20`=,20U_@D)(?\.]4?_][`7J2>1T27 MJ1^0DH@20XNO(!4@[V`>D)*(Y'7P`1)#=!(IV?^0DH7D=?`!$D-T[Q)"38#; MJQJJ&ZDB1]U(`)[`7H!>:"QPI"2CA)#:XL=BAZ)'Y"2BQ)#:Q(IV?_$ M5`_U('L!>@%YHK'"D`&O=/_PD)*JX`3PD`'+X&2`\-#0DJ\B(N3U82*0`61T MH/`BD))^X)"2#_`BD`#SX'\`,.,"?P$BD``"X%3@?P%@`G\`(I`&-'3_\.2C M\*/PH_`BD`#SX##B#9`%0700\)`%6O"CY/`B=3`?=3$!Y/4RD`$XY3#PH^4Q M\*/E,O`BD))^X+0!#)``\N`PYP5^_7\S(G[]?R\B=2@SY/4I=2H']2N0`3#E M*/"CY2GPH^4J\*/E*_`BD)(0X%3P1`/P5`]$@/![`'H`>5:0DHX20XL+>I)Y M$,$1TQ"O`931$=#0DJ\BTQ"O`I)Y9GT"\430T)*O M(H^"CH.CHZ/D\"+D]5Y_8'X!@.W3$*\!P\#0D`0=X&`:D`4BX%208`>0`<;@ M1$#PD`''X##AY'\`@`)_`=#0DJ\BTQ"O`_PD)*7X&`?HZ/@ M_R0/]8+D-/SU@^!$@/!T$"_U@N0T_/6#X$2`\)"2F*/@__TD"/6"Y#3\]8/D M\'0)+?6"Y#3\]8/@5/#P="$O]8+D-/SU@^!4]_"0DIC@_J/@_]#0DJ\B[V`+ MD))^X+0!$.3_@`F0DG[@M`$%?P$2=^4B$E?0`33@52CU+*/@52GU+:/@52KU+J/@52OU M+^4L(.`"0=^0`31T`?"%T4V%TDZ%TT^%U%"%U5&%UE*%UU.%V53E5%1`PQ/_ MY5-4(&]P`D&515!__Y0@EX"3$]8+D-(WU M@^2/\!)"@>535!__Y0@EX"2`]8+D-(?U@^2/\!)"@>4)TY0$0`-U"01U\`KE M")"$`!)#7W7P`N4)$D-?X/ZCX/_E4U0?+__D/OYU\`KE")"$`!)#7W7P`N4) M$D-?[O"C[_#E5"#F(^535!__Y0@EX"3$]8+D-(SU@^2/\!)"@>5/,.535!_U#:L) MKPB1F^4D%"3]4`*`.I"29.!@*Y`!6^3PD`$\=`3P$DM5[V0!<"&0DH,22X>0 M`5MT!?"0!I)T`?"0DF+P@`D22U6_`0,22WOE+##A(9`!-'0"\(715H725X73 M6(7468756H766X777(7971)7(^4L,.,&D`$T=`CPY2PPY`F0`31T$/!#51#E M+##E)I`!S^`PY1_@5-_PD`$T="#P=:@`=>@`$D]ED``#X%3[\!)/ZH#^Y2PP MY@:0`31T0/#E+C#@%)"2?70!\)`!-O`21AZ199"2?>3PY2XPX0N0`39T`O!# M54`1U^4N,.()D`$V=`3P$D::Y2XPXSB0`39T"/#E(60!<"SE)&`HD`%7Y/"0 M`3QT`O"0DH/D\)"26^"0DH3PY/O]?U1^`1)+EY`!5W0%\.4N,.0KD`$V=!#P MY2&T`2#E)&`4E5`=P`Q)+>^4N,.4?D`$V M="#PY2&T`13E)&`0D))DX&0"8`422LR``Q))\^4N,.8;D`$V=$#PY2&T`1#E M)&`,4R7^Y254!W`#$DM[Y2\PX0F0`3=T`O`225?0!]`&T`70!-`#T`+0`=`` MT-#0@M"#T/#0X#*0DJ/@,.`NY2&T`2F0DJ+@!/#@M`H+D)*EX`3PY)"2HO"0 MDJ7@_Y"2I.#3GU`'L9'DD)*E\"*/"HT+Y0M4'Y"2$O!T`2_U@N0TB/6#X)"2 M$/"0!/W@D)(3M`$%=`/P@`-T`?"0DA/@_^O#GT`$KPJ`/)"2$.`E#?^C\*/@ MD$'6D_[OTYY`%'0!)0KU@N0TB/6#Y/"M"Z\*`E>`D)(1X/]T`24*]8+D-(CU M@^_P(JT'=?`)[9"*2!)#7^#_D)(5\'1G+?6"Y#21]8/@5!^0DA3PTY]`!J/@ MD)(4\)"2%.#_)>`DGO6"Y#1!]8/DD_IT`9/[[R7@)&;U@N0T0?6#=`&3*__D MDSK#$_[O$__M)>`DPO6"Y#2)]8/N\*/O\*\%D)(4X/T25X"0DA3@_R+D_P)) MJ)"2)1)#BQ(IV50!_Y"2H^!4_D_PX##@`K&1D)(E$D-K$BG9PQ,PX`J0``$2 M0B"0DJ3P(I"2(A)#B^\20Y1>$`%>!P)>-`->/05>1@9>DP=>3@E>5PQ>8`U> M:0Y>>QQ>&2U>(BY>A#!>*SL``%Z,D)(B$D-K`G-CD)(B$D-K`G-ID)(B M$D-K`G.>D)(B$D-K`G/FD)(B$D-K`G0?D)(B$D-K`G0XD)(B$D-K`G+,D)(B M$D-K@$:0DB(20VL"=("0DB(20VL"3?^0DB(20VL"?D&0DB(20VL"?6F0DB(2 M0VL"#_=?`)D(I&$D-?K8*L@Y"2+.SPH^WP[W7P":0D1/ET MBC7P^GL!HQ)#BY"2)Q)#:Y```Q)"(%0/_Y"2+A)#:^\20DV0DB<20VN0``(2 M0B#_D)(N$D-KD``![Q)"7Y"2)Q)#:Y```1)"(/^0DBS@_*/@_?6"C(/O\!(I MV8V"C(.C\)"2*N#^D)(EX/\D@O6"Y#2)]8/N\)"2)N#^=?`)[Y"*2A)#7^[P M=?`)[Y"*2Q)#7W0!\)"2*^#^=?`)[Y"*3!)#7^[PCP_O)>`DQO6"Y#2/KX+U M$(\1Y0]U\`*D)`+Y=(DU\'42`?43B11U\`GE#Y"*1A)#7Z^"A8,5CQ;E#W7P M":0D1/ETBC7P=14/)>`DQO6" MY#2/]8-T#_"C=/6`)^4/)>`DQO6"Y#2/]8-T#_"C=/"`$N4/)>`DQO6"Y#2/ M]8/D\*-T#?#E#R7@)`+U@N0TB?6#Y/"C\"&5D`1'X*L2JA.I%!)"39`$1N"K M$JH3J120``$20E^0!$7@A1&"A1"#\)`$1"&,D`1+X*L2JA.I%!)"39`$2N"K M$JH3J120``$20E^0!$G@A1&"A1"#\)`$2(!8D`1/X*L2JA.I%!)"39`$3N"K M$JH3J120``$20E^0!$W@A1&"A1"#\)`$3(`KD`13X*L2JA.I%!)"39`$4N"K M$JH3J120``$20E^0!%'@A1&"A1"#\)`$4."%$8*%$(.C\*L2JA.I%,`#P`+` M`1(IV?^K%ZH8J1D2*=E?T`'0`M`#$D)-JQ+E%"0!^>0U$_K``\`"P`$2*=G_ MJQ>J&*D9D``!$D(@7]`!T`+0`Q)"3841@H40@\"#P(+@_X46@H45@^#^[U[0 M@M"#\(41@H40@Z/`@\""X/^%%H*%%8.CX/[O7M""T(/PY0\EX"0"]8+D-(GU M@^#^H^!.8$N0DC%T"_"0DC'@_\.4`%`"0=IT`7X`J`<(@`7#,\XSSMCY_^4/ M)>`D`O6"Y#2)]8/@7OZCX%].8`J0DC'@)!"C\(!HD)(QX!3P@+OE#R7@),;U M@N0TC_6#X/ZCX$Y@1Y"2,70/\)"2,>#_PY0`0#QT`7X`J`<(@`7#,\XSSMCY M_^4/)>`DQO6"Y#2/]8/@7OZCX%].8`B0DC'@H_"`#9"2,>`4\("_Y)"2,O#E M#R7@),;U@N0TC_6#X/ZCX$Y@1N20DC'PD)(QX/_#E!!``F&3=`%^`*@'"(`% MPS/.,\[8^?_E#R7@),;U@N0TC_6#X%[^H^!?3F`&D)(QX(!CD)(QX`3P@+_E M#R7@)`+U@N0TB?6#X/ZCX$Y@1N20DC'PD)(QX/_#E`Q0/'0!?@"H!PB`!<,S MSC/.V/G_Y0\EX"0"]8+D-(GU@^!>_J/@7TY@")"2,>`D$(`)D)(QX`3P@+_D MD)(S\)"2,N#_=?`)Y0^0BD@20U_O\)"2,^#^=?`)Y0^0BDD20U_N\.4/PY0@ M4"QTA"4/]8+D-`3U@^#3GT`"@$=TA"4/]8+D-`3U@^##GE`(D)(SX*/P@#>` M+72F)0_U@N0TD/6#X/^0DC+@_N_3GD`'D)(T[O"`%Y"2,^#^[\.>4`6C[O"` M")"2,N"0DC3PD)(TX/VO#Q)7@)"2-.#_="8E#_6"Y#21]8/O\)"2,N#_TY03 M0`>0BD-T`_`B[].4"T`'D(I#=`+P(N_3E`-`!Y"*0W0!\"+DD(I#\"+3$*\! MP\#0Y/W\[S#@`GV`[\,3D/T0\*X$KP70T)*O(L#@P/#`@\""P-!UT`#``,`! MP`+``\`$P`7`!L`'4Y'OD`!1X/^0`%7@7_4]D`!2X/^0`%;@7_4^Y3TPY`:0 M`%5T$/#E/3#E!I``570@\.4],.8;D`!5=$#PD))"X%0#_[\#"Y"2/^!@!7\! M$DU7Y3TPYQ60`%5T@/"0DD+@5`/_OP,%?P(235?E/C#@!I``5G0!\.4^,.$& MD`!6=`+PY3XPX@:0`%9T!/#E/C#C!I``5G0(\-`'T`;0!=`$T`/0`M`!T`#0 MT-""T(/0\-#@,N_#E"!0.>\PX!?MQ%3P_>_#$_XDI/6"Y#0$]8/@5`^`$._# M$_XDI/6"Y#0$]8/@5/#P=*0N]8+D-`3U@^!-\"*M!^W#E"!0$W2$+?6"Y#0$ M]8/@5'^0DBGP@!%TIBWU@N0TD/6#X%1_D)(I\)"2*>#Y5!^C\'7P">V0BD@2 M0U_@_Y"2+/#M)>`D`O6"Y#2)]8/@^Z/@D)(MR_"CZ_#M)>`DQO6"Y#2/]8/@ M^Z/@D)(OR_"CZ_"0DBK@_B7@)&;U@N0T0?6#Y)/Z=`&3^^TEX"3"]8+D-(GU M@^KPH^OP[L.?0`+!^)"2*N#_=&XD\/]T`7X`J`<(@`7#,\XSSMCY_Y"2+>!>_J/@7TYP M)Y"2*^#_PY004%ET`7X`J`<(@`7#,\XSSMCY_Y"2+^!>_J/@7TY@/)"2*^"T M$0V0DB[@,.<&D)(K=!?PD)(KX/]D$V`$[[02#9"2+>`PX`:0DBMT&/"0DBO@ MD)(J\)"2*?"`0I"2*^`$\,%6D)(LX/R0DBK@_VQP<71G+?6"Y#21]8/O\'7P M">V0BDH20U_@M`$0Z2#F#)"2*N!$0)"2*?"``Z\!(I"2*N#_)>`DGO6"Y#1! M]8/DD_IT`9/[[R7@)&;U@N0T0?6#=`&3*__DDSK#$_[O$__M)>`DPO6"Y#2) M]8/N\*/O\(!FD)(JX-.<0%Z0DBS@_W1G+?6"Y#21]8/O\)"2*N_PD)(I\/RC MX/\EX"2>]8+D-$'U@^23^G0!D_OO)>`D9O6"Y#1!]8-T`9,K_^23.L,3_N\3 M_^TEX"3"]8+D-(GU@^[PH^_PKP0B=`$M]8+D-(CU@^3PKP60DBG@1(#]$E>` MD)(IX$2`_R*L!^S#E"!0$W2$+/6"Y#0$]8/@5'^0DBGP@!%TIBSU@N0TD/6# MX%1_D)(I\)"2*>!4'_^0DBSP=?`)[)"*21)#7^"0DB[P=?`)[)"*2!)#7^#^ MD)(O\.PEX"3&]8+D-(_U@^#[H^"0DC#+\*/K\.PEX"0"]8+D-(GU@^#[H^"0 MDC++\*/K\._3GD`,D)(OX)"2+/"0DBGP[7`"(6J0DBWM\)"2*>`PY@Z0DBS@ MD)(I\)"2+>`4\)"2+>!P`B%JD)(LX/_3E`!0`B%JY)"2*_#O%)"2*O"0DB[@ M_9"2*N#_TYU`;^^4$$`A[R3P_W0!?@"H!PB`!<,SSC/.V/G_D)(RX%[^H^!? M3G`GD)(JX/_#E!!0-W0!?@"H!PB`!<,SSC/.V/G_D)(PX%[^H^!?3F`:D)(J MX)"2*?"0DBO@!/"0DBW@_Y"2*^!O8`B0DBK@%/"`@Y"2+>#_D)(KX,.?4`^0 MDBK@M04(D)(NX)"2*?"0DBG@_R7@))[U@N0T0?6#Y)/Z=`&3^^\EX"1F]8+D M-$'U@W0!DRO_Y),ZPQ/^[Q/_["7@),+U@N0TB?6#[O"C[_"O!)"2*>#]$E>` MD)(IX/\BY)"2&O"0DAK@_\.40$`#`G#5[[0@%)".Q>`$\)")`>#_D([%X+4' M`N3PD)(:X/]U\`F0BDL20U_@9`%@`P)PS.\EX"2`]8+D-(?U@^#^H^#3E`#N ME`!0`P)PS)"2&N"4($`)D([%X&`#`G#5D)(:X'7P"J0D`/ETA#7P=1(!]1.) M%.#_)>`D@/6"Y#2']8/@_:/@D)(?S?"C[?#O)>`DQ/6"Y#2,]8/@_Z/@D)(A MS_"C[_"0DAK@_\.4(%`3=(0O]8+D-`3U@^!4/Y"2&_"`%)"2&N`DIO6"Y#20 M]8/@5#^0DAOPD)(;X/Y4'Z/PD)(:X/]U\`F0BD@20U_@D)(D\'3F+_6"Y#20 M]8/@PY0%0`*A'I"2).#_D)(0`;OD$$2@`>0DAS@D$$N MDY"2(_"0DB/@=?`&I"10^71`-?!U#__U$(D1D)(;X)!!\I/_TY"2(N"?D)(A MX)0`0`V0DAK@_^3]$F?\`G!BD)(:X"7@),+U@N0TB?6#X/^CX)"2'<_PH^_P MJP^J$*D1$BG9_WX`JQ*J$ZD4$D*7_:SP$BGRD)(=[H_P$D*!JP^J$*D1D``! M$D(@_WX`JQ*J$ZD4D``"$D+"_:SP$BGRD)(=[H_P$D*!JP^J$*D1D``"$D(@ M_WX`JQ*J$ZD4D``$$D+"_:SP$BGRD)(=[H_P$D*!JP^J$*D1D``#$D(@_WX` MJQ*J$ZD4D``&$D+"_:SP$BGRD)(=[H_P$D*!JP^J$*D1D``$$D(@_WX`JQ*J M$ZD4D``($D+"_:SP$BGRD)(=[H_P$D*!JP^J$*D1D``%$D(@_WX`D)(?X/RC MX/T2*?+3D)(>X)^0DAW@GD`,H^"?\)"2'>">\(`'Y)"2'?"C\)"2'>#\H^#] MD)(:X/\EX"3"]8+D-(GU@^SPH^WPD)(;X"7@)&;U@N0T0?6#Y)/Z=`&3^]/M MF^R:0`8299L"<#"0DAO@)>`DGO6"Y#1!]8/DD_YT`9/_PY"2'N"?D)(=X)Y` M`P)P,)"2&N#_?0$29_P"<#"0DAK@_R3F]8+D-)#U@^#\9`5@`L']D(I#X/ZT M`PN0DAS@PY090#V`+NZT`@N0DAS@PY010"Z`'Y"*0^#^M`$+D)(20CH3PD)(:X/XDA/6"Y#2,]8/@D)(H M\'1$+O6"Y#2.]8/@_L.4,%`*Y)"2*/!TYB_!IY".A.!D`6`"P9R0DAK@)(7U M@N0TCO6#X&0*8%N0DAK@_^XD!?OD,_IT02_U@N0TB/6#X/_3F^ID@/AT@)A0 M.)"2&N#^[R0%^^0S^G1$+O6"Y#2.]8/@TYOJ9(#X=("84!:0DAK@)";U@N0T MD?6#X/^0DAS@;V!6D)(:X"1$]8+D-([U@^#_TY1"0`B0DBAT!?"`$>_3E#F0 MDBA`!70#\(`#=`'PD)(:X/\D1/6"Y#2.]8/@_G1!+_6"Y#2(]8/N\)"2&N`D MA?6"Y#2.@"^0DAK@_R3F]8+D-)#U@^3P=(4O]8+D-([U@^`$\(`4Y)"2*/"0 MDAK@).;U@N0TD/6#Y/"0DAS@_I"2&N#_)";U@N0TD?6#[O"0DBC@_G2$+_6" MY#2,]8/N\'7P">^0BDP20U_@M`$1Y)"2*/!TYB_U@N0TD/6#Y/"0DBC@_0)P M+>QD!F`#`G`PD)(=\*/PD$(3D_]^`)"2'^#\H^#]$BGRD)(F[O"C[_"0DAK@ M)(3U@N0TC/6#X)"2*/#DD)(E\)"2)>#_TY0$4$>K$JH3J11U\`+OI/6"A?"# M$D+"_:SP[Y!"#I/_?@`2*?*0DAWNC_`20H&0DB;@_J/@_].0DA[@GY"2'>"> M4`B0DB7@!/"`KY"2)>##$_"0DBC@_[0!#9"2)>!P79"2*`3P@%OOM`,=D)(E MX/]P")"2*'0#\(!([[0!")"2*'0!\(`\@#60DBC@9`5P,I"2)>#_<`B0DBAT M!?"`#^^0DBBT`05T`_"``W0!\-.0DB+@E`.0DB'@E`!`!>20DBCPTY"2(N"4 M`Y"2(>"4`$`%Y)"2*/"0DBC@_9"2&N#_)(3U@N0TC/6#[?`295N0DAK@_R3F M]8+D-)#U@^#3E`50#W3F+_6"Y#20]8/@!/"`#Y"2&N`DYO6"Y#20]8/D\*L2 MJA.I%.3U\!)"^JL2JA.I%)```N3U\!)#&9``!.3U\!)#&9``!N3U\!)#&9`` M".3U\!)#&9"2&N#_)>`D@/6"Y#2']8/D\*/P[R7@),3U@N0TC/6#Y/"C\.\E MX"1$]8+D-(WU@^3PH_"0DAK@!/`":<$BD`1$=!'PHW3P\*-T#_"CY/"0DAKP MD)(:X/_#E!!0%'2D+_6"Y#0$]8/D\)"2&N`$\(#BY)".Q?"0B0$$\.20DAKP MD)(:X/_#E$!``D'+=?`*[Y"$`!)#7^3PH_!U\`KOD(0"$D-?Y/"C\'7P"N^0 MA`020U_D\*/P=?`*[Y"$!A)#7^3PH_!U\`KOD(0($D-?Y/"C\'0F+_6"Y#21 M]8-T$_!TA2_U@N0TCO6#Y/!TA"_U@N0TC/6#Y/#O)>`D@/6"Y#2']8/D\*/P M[R7@),3U@N0TC/6#Y/"C\.\EX"3$]8+D-(WU@^3PH_#O)>`D1/6"Y#2-]8/D M\*/P[R7@),;U@N0TCO6#Y/"C\.\EX"1&]8+D-(_U@^3PH_!TAB_U@N0TD/6# MY/!T1B_U@N0TD/6#Y/!TYB_U@N0TD/6#Y/"00<23_G0!D_^008QT`9,O_^23 M/L,3_N\3_Y"2&N#])>`DPO6"Y#2)]8/N\*/O\'7P">V0BDL20U]T`?!U\`GM MD(I*$D-?=`'P=((M]8+D-(GU@W0,\'7P">V0BD820U]T__"C\'7P">V0BD02 M0U_D\*-T#_!U\`GMD(I($D-?=!/P=?`)[9"*21)#7^3P[<.4(%`/=(0M]8+D M-`3U@W03\(`-=*8M]8+D-)#U@W03\)"2&N`$\"$8(A(IV?_#E$!0%)```A)" M(/YT1"_U@N0TCO6#[O`B[[1`"I```A)"()"*0O`BD``$$D(@_U0__N]4@,03 M$Q-4`?VO!@)>J!(IV9")`?`BD)*:[O"C[_#DH_"C\)"2FN#^H^#U@HZ#X&`L MPY"2G>"4Z)"2G."4`T`*D`'&X$00\'\`(I"2G.1U\`$20H%_"GX`$C=4@,9_ M`2(2*=GU(2+3$*\!P\#0D)(E$BJ+`````)```1)"()"29/"0``,20B"0DE3P M$D?3PH^_P@`^0DE]T!?"0DEWD\*-T`_"0 MDEW@H^"0!5CP(A(IV9"27/!@!^3]?P0210V0DES@D`'G\"*0`@G@_1(IV?ZO M!>TND))V\)```1)"(/_M+Y"2=_"0``(20B#_[2^0DGCPD``#$D(@_^TOD))Y M\)``!!)"(/^N!>TOD))Z\"+3$*\!P\#0D)(E$D.+D)(E$D-KD``!$D+"^N7P M)`#_Y#K^D)(E$D-KD``![H_P$D,9$BG9_V`LM5X6D)(E$D-KD``!$D+"96!P M!.5?9?!@(Y"2)1)#:Y```1)"PO^N\)'X@!"0DB420VL2*=EE7F`#$E?3T-"2 MKR*0DBCN\*/O\'5>`8Y?]6#D_7\+L3SD_7\"L3P23[OD_Q)/K^3U8I`!R>5B M\)"2*.#\H^#][/N-1.3U17T!?V!^`0(UJ],0KP'#P-"0DBOM\)"2*N_PTY0' M4$^CX'`:D)(JX/]T`:@'"(`"PS/8_/3_D`!'X%_P@!>0DBK@_W0!J`<(@`+# M,]C\_Y``1^!/\!)/ZI"2*N#_=`&H!PB``L,SV/ST_Y``1H!:D)(JX"3X\*/@ M`$\(#KD)(:X,.49%`0D``PX*L1JA*I$Q)" M37\!(G\`(N20DJ;PH_"0!?C@<`^CX'`+H^!P!Z/@<`-_`2+3D)*GX)3HD)*F MX)0#0`-_`")_,GX`$C=4D)*FY'7P`1)"@8#&D)'_$D-3D("%$BI_?WA^"!(O MV9"2`Q)#4Y"`A1(J?W\$?@P2+]F0D@<20U.0@(42*G]_`'X($B_9D)(+$D-3 MD("%$BI_?W!^#A(OV9"`61(JBP`#+97D_?\2-(&0DG[@M`$1D(!9$BJ+``,M ME>3]?P$2-($B?WA^"!(GWI"1_Q(J?W\$?@P2)]Z0D@,2*G]_`'X($B?>D)(' M$BI_D))^X)"1_[0!#1)#4^]4Q__M5,?]@`<20U/O5,?_[)"`A1(J?W]X?@@2 M+]F0D@,20U/O5`__[)"`A1(J?W\$?@P2+]F0D@<20U/O1`+_[)"`A1(J?W\` M?@@2+]E_<'X.$B?>D)(+$BI_D("%$BJ+`!LEH']P?@X2+]F0@%D2*HL````` MY/W_$C2!D))^X+0!$9"`61(JBP````#D_7\!$C2!(N]P`P)YG9"2#^!@`P)] M:)"1^Q)#4Y"`A1(J?W^,?@@2+]F0D:<20U.0@(42*G]_1'X($B_9D)&K$D-3 MD("%$BI_?UQ^"!(OV9"1KQ)#4Y"`A1(J?W]L?@X2+]F0D;,20U.0@(42*G]_ M<'X.$B_9D)&W$D-3D("%$BI_?W1^#A(OV9"1NQ)#4Y"`A1(J?W]X?@X2+]F0 MD;\20U.0@(42*G]_?'X.$B_9D)'#$D-3D("%$BI_?X!^#A(OV9"1QQ)#4Y"` MA1(J?W^$?@X2+]F0D,20U.0@(42 M*G]_X'X.$B_9D)'G$D-3D("%$BI_?^Q^#A(OV9"1ZQ)#4Y"`A1(J?W\$?@P2 M+]F0D>\20U.0@(42*G]_!'X-$B_9D)'S$D-3D("%$BI_?PQ^"1(OV9"1]Q)# M4Y"`A1(J?W\$?@@2+]F0D@]T`?`BD)(/X&0!8`*A:'^,?@@2)]Z0D?L2*G]_ M1'X($B?>D)&G$BI_?UQ^"!(GWI"1JQ(J?W]L?@X2)]Z0D:\2*G]_<'X.$B?> MD)&S$BI_?W1^#A(GWI"1MQ(J?W]X?@X2)]Z0D;L2*G]_?'X.$B?>D)&_$BI_ M?X!^#A(GWI"1PQ(J?W^$?@X2)]Z0D<<2*G]_B'X.$B?>D)'+$BI_?XQ^#A(G MWI"1SQ(J?W_0?@X2)]Z0D=,2*G]_U'X.$B?>D)'7$BI_?]A^#A(GWI"1VQ(J M?W_D)'C$BI_?^Q^#A(GWI"1YQ(J?W\$?@P2 M)]Z0D>L2*G]_!'X-$B?>D)'O$BI_?PQ^"1(GWI"1\Q(J?W\$?@@2)]Z0D?<2 M*G]_C'X($B?>D)*>$BI_D)*>$D-3[43`_>R0DIX2*G^0DIX20U.0@(42*G]_ MC'X($B_9D("%$BJ+``$``']$?@@2+]F0@(42*HL`VR6D?UQ^"!(OV9"`A1(J MBR#;):1_;'X.$B_9D("%$BJ+(-LEI']P?@X2+]F0@(42*HL$&R6D?W1^#A(O MV9"`A1(JBP0;):1_>'X.$B_9D("%$BJ+!!LEI']\?@X2+]F0@(42*HL$&R6D M?X!^#A(OV9"`A1(JBV/;):1_A'X.$B_9D("%$BJ+!!LEI'^(?@X2+]F0@(42 M*HL@VR6D?XQ^#A(OV9"`A1(JBR#;):1_T'X.$B_9D("%$BJ+(-LEI'_4?@X2 M+]F0@(42*HL@VR6D?]A^#A(OV9"`A1(JBP`;):1_W'X.$B_9D("%$BJ+`!LE MI'_@?@X2+]F0@(42*HLDVR6D?^Q^#A(OV7\$?@P2)]Z0DIX2*G^0DIX20U/D M_^R0DIX2*G^0DIX20U/O1!'_[)"2GA(J?Y"2GA)#4Y"`A1(J?W\$?@P2+]E_ M!'X-$B?>D)*>$BI_D)*>$D-3[U3P_^R0DIX2*G^0DIX20U/O1`'_[)"2GA(J M?Y"2GA)#4Y"`A1(J?W\$?@T2+]E_#'X)$B?>D)*>$BI_D)*>$D-3Y/_LD)*> M$BI_D)*>$D-3[T01_^R0DIX2*G^0DIX20U.0@(42*G]_#'X)$B_9?PQ^"1(G MWI"2GA(J?Y"2GA)#4^U4#_WL5/#\D)*>$BI_D)*>$D-3[400_>Q$`?R0DIX2 M*G^0DIX20U.0@(42*G]_#'X)$B_9?P1^"!(GWI"2GA(J?Y"2GA)#4^]4\/_L MD)*>$BI_D)*>$D-3[T0!_^R0DIX2*G^0DIX20U.0@(42*G]_!'X($B_9Y)"2 M#_`BBP^*$(D1D``"$D(@D))"\.`PX$N0DCET`?!_@'X($B?>D)([$BI_JP^J M$*D1D``!$D(@_^3\_?YX&A(J;*@$J06J!JL'D)([$D-3[%0#_!)#1I"211(J M?Y`%(N3P@"WDD)(Y\'^`?@@2)][L5`/\[$3`_)"2.Q(J?Y"2.Q)#4Y"`A1(J M?W^`?@@2+]F0DD+@,.$;?0Q_1Q)-0I``2.!$#/U_2!)-0I``1N!$$(`>D`!' MX%3S_7]'$DU"D`!(X%3S_7]($DU"D`!&X%3O_7]&$DU"Y)"2/_`BD``"$D(@ MD))#\.!@!.#T<"&BK^0S]0_"KY``1^!4^_U_1Q)-0GU`?P$2-J_E#R3_DJ\B MY/U_11)-0I`$_>3PH_"0DD/PD)))\)"23/"0DDKPD))-\)"22_"0DD[PD)(U M!/#DH_"C\*/PD)(Z\)"2/_"0DD'PD))3\)"21/"0DD#PD)(Y\)``4>!$P/U_ M40)-0I"24^!D`6`(D))!X&`"X:F0DC7@PY3_4`7@!/"`.Y"2-N##E/]0!N`$ M\.2`*)"2-^##E/]0"N`$\.20DC;P@!60DCC@PY3_4!#@!/#DD)(W\)"2-O"0 MDC7PD`!$X%0,8';@,.(RD)))X,.4_U`%X`3P@"20DDK@PY3_4`;@!/#D@!&0 MDDO@PY3_4`S@!/#DD))*\)"22?"0`$3@,.,RD)),X,.4_U`%X`3P@"20DDW@ JPY3_4`;@!/#D@!&0DD[@PY3_4`S@!/#DD))-\)"23/"0!/W@1`'P(GP. ` end diff --git a/sys/contrib/dev/rtwn/rtwn-rtl8192cfwT.fw.uu b/sys/contrib/dev/rtwn/rtwn-rtl8192cfwT.fw.uu new file mode 100644 index 000000000000..19a506265932 --- /dev/null +++ b/sys/contrib/dev/rtwn/rtwn-rtl8192cfwT.fw.uu @@ -0,0 +1,362 @@ +begin 644 rtwn-rtl8192cfwT.fw.uu +MP8@"!5@``@`2!1<2WCX``)08`@`````````````````"1C`````````````` +M`````````F#R```````````````````````````````````````````````` +M`````````````FB1```````"2X<```4$`P(``P8%!`,`!`8%!`(`!`@'!@0` +M!@H)"`8`"`H)"`0`"`H)"`(`"`H)"```"!(1$`@`$!H9&!``&"(A(!@`("(A +M(!``("(A(`@`("(A'`@`("(A%`@`("(@&`@`(#$P(!``,#$P&```,#$O$!`` +M,#$L$!``,#$H$```,#$@$```,#$0$```,`0$!`4$!`4'!P<("@0$!`0&"@L- +M!04'!P@+#0\$!`0%!P<)"0P.$!(&!PD*#`X1$PD)"0D,#A$3```````````` +M)"8J&!H='R$G*2H````?(R@J+``$``0`"``0`!@`)``P`$@`8`"0`,``V`!0 +M`'@`H`#(`4`!D`'@`C`!+`%``>`"T`/H!+`&0`?0``(``@`$``@`#``2`!@` +M)``P`$@`8`!L`"@`/`!0`&0`H`#(`/`!&`!D`*``\`%H`?0"6`,@`^@"`@(" +M`@(#`P0$!0<"`P0*#`X0$@4'!P@+$B0\`0$!`0$"`P0%!@<(`0(#!`4&!P@% +M!@<("0H+#"`>'!@0&``````````````````````````````````````````` +M````````````````````````````````````````````````NP$,Y8(I]8+E +M@SKU@^`B4`;I)8+XYB*[_@;I)8+XXB+E@BGU@N6#.O6#Y),BNP$&B8**@_`B +M4`+W(KO^`?,B^+L!#>6"*?6"Y8,Z]8/H\")0!NDE@LCV(KO^!>DE@LCR(L7P +M^*/@*/#%\/CE@A6"<`(5@^`X\"*[`0J)@HJ#X/7PH^`B4`:'\`GG&2*[_@?C +M]?`)XQDBB8**@^23]?!T`9,BNP$0Y8(I]8+E@SKU@^#U\*/@(E`)Z26"^(;P +M".8BN_X*Z26"^.+U\`CB(N6#*O6#Z9/U\*/IDR*[`0J)@HJ#\.7PH_`B4`;W +M":?P&2*[_@;SY?`)\QDB^+L!$>6"*?6"Y8,Z]8/H\.7PH_`B4`GI)8+(]@BF +M\"*[_@GI)8+(\N7P"/(B[TO_[DK^[4G][$C\(N#\H^#]H^#^H^#_(J0E@O6" +MY?`U@_6#(N#[H^#ZH^#Y(OC@^Z.CX/DE\/#E@A6"<`(5@^#Z./`BZ_"CZO"C +MZ?`BT(/0@OCDDW`2=`&3<`VCHY/X=`&3]8*(@^1S=`*3:&#OHZ.C@-_0@]"" +M^.23`OD(L^\.3[_7]4 +M?@$22VR0`5=T!?#E(E0/PY0$4`=]`7\$$D6BD(LLX##@"1)]P9`%(G3_\"+D +M]27U)'4C#'4B#)"+&O"0BQCPD(L7\)"+&03PD(L+\.20BQOPD(L-\)"+%70% +M\.20BPSPD(L3\*-T`_"0BQ#PHW0%\)"+#W04\)"+%G0%\.20BP[PD(L*\)"+ +M"/"0BQ+P(G\`(@)%`P)%!HYDCV6M9:QDKV,22ENO9:YDD`2`X%0/_:P'=!$L +M]8+D-/SU@^!$`?!T$2SU@N0T_/6#X%3[\*P'=!8L]8+D-/SU@^!$^O!T%2SU +M@N0T_/6#X$0?\*P'=`8L]8+D-/SU@^!$#_"0!%/D\)`$4O"0!%%T__"0!%!T +M_?!T%"SU@N0T_/6#X%3`3?UT%"_U@N0T_/6#[?`B?0%_#-,0KP'#P-"/9XUH +MY6=4#__E(E0/;V!RY6]@4Q)* +MS(!.Y2(@XTGE9S#C1*]H$DI\@#WE(E0/_[\,#N5G(.,)$DG5[V`J$DK,Y2)4 +M#_^_!`[E9R#B"1))D^]@%!)*,N4B5`__OP()$D4`[V`#$DL0T-"2KR("1FX" +M4,;DDZ/XY).C0`/V@`'R"-_T@"GDDZ/X5``ON4A9`%P9^4D +M8&/E)&0"8`;E)&0%<">0!JO@D(L+\)`&JN"0BQGPD(L+X'`'D(L9X/^`!9"+ +M"^#_D(L+[_"0BPW@8`+D\.20BPSPD`58=`/PD`%7Y/"0`3QT`O!3)?U3)>_E +M)!0D_5`"@`,21XXB[V0!<#5]>'\"$C9U?0)_`Q(V=9`!5^3PD`$\=`+P$D6> +MD(LLX##@`Q)]P9`&!.!4?_"0!@K@5/CP(I`!-G1[\*-T`O!]>_\2-N9]`G\# +M$C;FD`8$X$2`\)`&"N!$!_`22T_E(2#@!>20BPWP(N20BL7PD`:IX)"*Q?#@ +M5,!P"5,E_E,E_1)*_)"*Q>`PYA5#)0&0BQK@9`)@!1)*EX`($DE)@`-3)?Z0 +MBL7@,.`*9"*WA)#:Y```A)"(/U_`1)*!Q^`%)"*WA)#:Y`` +M`A)"(/U_`A)*!^3_$D3P4R7]Y254!W`X@#.0 +MBPS@!/!3)>^0BLO@_Y"+$.`O_^0S_I"+#.#3G^YD@/AT@)A`#>4AM`$+H^!P +M!^`$\"(22OPBTQ"O`Y)"+/?"0BP_@D(L^\.3[_7]8?@$22VR0`5MT!?"0!I)T +M`?"0BQCP(N4B5`_#E`10!WT!?P021:(BD`%?Y/"0`3QT"/#DD(L]\)"+#^"0 +MBS[PY/O]?UQ^`1)+;)`!7W0%\)`&DG0"\)"+%Q3PY2)4#\.4#%`-$D6>D(LL +MX##@`Q)]P2(22S3O9`%P-^4E5`-P,>4C5`_3E`)0*.4E(.(CY24@Y!Z0BPW@ +M3_$DBS4R+P0R(,(I`$ +M'>!P%)"*^.#_Y/T27_V.:8]JD`0?="#P(I"+4N_P$GU"D(M2X&`%D`4BY/!3 +M(O!#(@0BD`8$X$1`\.4AM`$%?P$22+-3(O!#(@0BY2,PYA+E(U0/_Y`!+^!4 +M@$]D@/!3([\BD(LLX##@!:\C`GX&?0&O(Q)%HB)3(O!#(@$22UH22UM3(O!# +M(@(B08KV`$&+!0!!BU$`08M3``"0!!O@5']D?W\!8`)_`"+DD(L;\)"+#/#U +M)2*0BQ/@H^"0!5CP(B(B\)"+#^"0BS[PY/O]?UA^`=,0KP'#P-"0BSW@^Z/@ +M]43D]442-:O0T)*O(L#@P/#`@\""P-!UT`#``,`!P`+``\`$P`7`!L`'=0X` +MD`'$=(?P=$NC\%.1WY`!/.!5,/4TH^!5,?4UH^!5,O4VH^!5,_4WY30PX%&0 +M`3QT`?"0BS+@,.`?$Q-4/S#@&)"+-.3PD(LSX&0#8`M_`;'@[W`$?P+1B9"+ +M+.#_,.`=$Q-4/S#@%I"++N3PD(LMX&0&8`GD_['@[W`"T5;E-##A")`!/'0" +M\!%@Y30PXBB0`3QT!/"0!I+@,.`4D(L]Y'%0BQCD +M\%'\Y30PXSB0`3QT"/"0!I+@,.$DD(L]Y/"0BP_@D(L^\.3[_7]#O8`1_`=&)D(LLX##@29"+,.3P_['@[V`^$F5?D(LMX/]D!F`R +M[[0$`H`'D(LMX+0%!.3_@!20BRW@M`,$?P&`"9"++>"T`@5_`1)E@GT!KR,2 +M1:(2?<'E-C#A1Y`!/G0"\)"+,N`PX!F0BS9T`?"0BS/@9`-@"W\!L>#O<`1_ +M`M&)D(LLX##@&I"+,'0!\!)^*Y"++>!D!F`)Y/^QX.]P`M%6=(<$D`'$\'1+ +MH_#0!]`&T`70!-`#T`+0`=``T-#0@M"#T/#0X#+O9`%P/9"+->!@`W\`(I"+ +M".!@`W\!(I"+-.!@`W\!(I"+,N#_$Q-4/S#@"^_$$U0',.`#?P`BD(LVX'\! +M8#9_`"*0BR_@8`-_`"*0BPC@8`-_`2*0BR[@8`-_`2*0BRS@$Q-4/S#@`W\` +M(I"+,.!_`6`"?P`BD(L-X&`6D(LMX'`$?P6`'Y"++>!D`7`:?P*`$Y"++>"T +M`01_`X`(D(LMX'`%?P0298(BTQ"O`"T`@3QK^%5D(M5X+0$!/'&X560 +MBU7@9`%P??&Q@'F0BU7@_[0#!/'*@&WOM`($\:&`99"+5>#_M`0$\=6`6>]P +M5O&.@%*0BU7@M`,%$GQ!@$:0BU7@M`$$\7*`.Y"+5>"T!`42?2.`+Y"+5>!P +M*?%P@"60BU7@_[0!!/%:@!GOM`($\6N`$9"+5>#_M`0$\5J`!>]P`O%GT-"2 +MKR*0!2)T;_"0BS-T`_`B\8Z`[Q)]0H#J\8Z0!2)T__`2?IKO<`:0`UP!/[_@`1^`7\`[RWN/'T`_(`U[%0!37`$_O^`!'X"?P#O+>X\ +MPQ-]`(`:[%0#37`$_O^`!'X$?P#O+>X\$Q-4/WT`)>`EX/RN!*\%(I`!Y'18 +M\*-T`O`BY)"*S/"C\'6.`I$.$FA$D(L'[_`2:%&0BPGO\!)H79"*].[PH^_P +MY/55]2$255,.;9`%P +M.W%.OP$$?P%Q0I``1N!$!/U_1C&(D`!$X%3[_7]$,8B0`$;@5/O]?T8QB'\" +M<6J/8I`!R>5B\+0!`E'B(N!?\-,0KP'#P-!_$-_^T-"2KR+3$*\!P\#0D(K@ +M[?"0BM_O\-.4!U!.H^!P&I"*W^#_=`&H!PB``L,SV/ST_Y``1^!?\(`7D(K? +MX/]T`:@'"(`"PS/8_/^0`$?@3_!1#I"*W^#_=`&H!PB``L,SV/ST_Y``1H!9 +MD(K?X"3X\*/@Y/U_`E$><4[D_W%"Y/5BD`')Y6+PD(K=X/RCX/WL^XU$ +MY/5%?0%_8'X!`C6KD`'*Y6'P[V`"4>(B?PMQ:N]E86`0Y6&T`07D]6&``W5A +M`7\!(G\`(M,0KP'#P-"0BU?O\-.4!U!#X/]T`:@'"(`"PS/8_/3_D`!&40N0 +MBU?@_70!?@"H!0B`!<,SSC/.V/G_D`!$X/OD_N];J`4(@`;.HN<3SA/8^/^` +M2Y"+5^`D^/#@_W0!J`<(@`+#,]C\]/^0`$/@7_!1#I"+5^#]=`%^`*@%"(`% +MPS/.,\[8^?^0`$+@^^3^[UNH!0B`!LZBYQ/.$]CX_]#0DJ\BY)"+!/"0`(#@ +M1(#]?X`AB-,0KP'#P-"0BMH20XN0BMH20VN0``$20L+ZY?`D`/_D.OZ0BMH2 +M0VN0``'NC_`20QD2*=G_8"RU7A:0BMH20VN0``$20L)E8'`$Y5]E\&`BD(K: +M$D-KD``!$D+"_Z[P<0"`#Y"*VA)#:Q(IV65>8`*1E=#0DJ\BY/5>?V!^`8^" +MCH.CHZ/D\"*0BM<20XOO$D.45.(&0BM<20VL">L*0BM<20VL"?"N0 +M`<;@1`'P(M,0KP'#P-"0`!U\`20`=`20U_@D(K0\'4=`74>BG4?T'4@ +M`7L!>HIYT1)>Y)"*T>#_Q!,3$U0!D(M1,.!9X'7P`I``B!)#7^"0BM+PD(M1 +MX'7P`I``B1)#7^"0BM/PD(M1X'7P!)`!T1)#7^"0BM3PD(M1X'7P!)`!TA)# +M7^"0BM7PD(M1X'7P!)`!TQ)#7^"0BM;P@#/@=?`$D`'1$D-?X)"*TO"0BU'@ +M=?`$D`'2$D-?X)"*T_"0BU'@=?`$D`'3$D-?X)"*U/#O5'__>P%ZBGG2D::0 +MBL_@_Y"+4>#^=`&H!@B``L,SV/ST7Y"*S_"0BU'@_W0!J`<(@`+#,]C\D`', +M\)"+4>`$\.!4`_"A:I`!QN!$`O#0T)*O(I``!!)"(/]4'_[O5"#$$U0'_:\& +MD(K:[_"C[?"C$D.+D(K<$D-KD``#$D(@5/#$5`^0BM_PD``$$D(@5$#$$Q-4 +M`Y"*X/"0BMK@_W7P"9"')1)#7ZV"K(.0BN'L\*/M\.]U\`FD)"/Y=(\20E^0BMP20VN0``$20B#_D(KAX/RCX/WU@HR#[_`2*=F-@HR# +MH_"0BM_@_I"*VN#_),'U@N0TAO6#[O"0BMO@_G7P">^0ARD20U_N\'7P">^0 +MARH20U]T`?"0BN#@_G7P">^0ARL20U_N\(\/[R7@).3U@N0TB:^"]1"/$>4/ +M=?`"I"2!^72&-?!U$@'U$XD4=?`)Y0^0AR420U^O@H6#%8\6Y0]U\`FD)"/Y +M=(`D@?6"Y#2&]8-T#_"C=(_P(:?E#R7@).3U@N0TB?6# +M=`_PHW3U@"?E#R7@).3U@N0TB?6#=`_PHW3P@!+E#R7@).3U@N0TB?6#Y/"C +M=`WPY0\EX"2!]8+D-(;U@^3PH_`AIY`$1^"K$JH3J1020DV0!$;@JQ*J$ZD4 +MD``!$D)?D`1%X(41@H40@_"0!$0AGI`$2^"K$JH3J1020DV0!$K@JQ*J$ZD4 +MD``!$D)?D`1)X(41@H40@_"0!$B`6)`$3^"K$JH3J1020DV0!$[@JQ*J$ZD4 +MD``!$D)?D`1-X(41@H40@_"0!$R`*Y`$4^"K$JH3J1020DV0!%+@JQ*J$ZD4 +MD``!$D)?D`11X(41@H40@_"0!%#@A1&"A1"#H_"K$JH3J13``\`"P`$2*=G_ +MJQ>J&*D9$BG97]`!T`+0`Q)"3:L2Y10D`?GD-1/ZP`/``L`!$BG9_ZL7JABI +M&9```1)"(%_0`=`"T`,20DV%$8*%$(/`@\""X/^%%H*%%8/@_N]>T(+0@_"% +M$8*%$(.CP(/`@N#_A1:"A16#H^#^[U[0@M"#\.4/)>`D@?6"Y#2&]8/@_J/@ +M3F!+D(KF=`OPD(KFX/_#E`!0`D'L=`%^`*@'"(`%PS/.,\[8^?_E#R7@)('U +M@N0TAO6#X%[^H^!?3F`*D(KFX"00H_"`:)"*YN`4\("[Y0\EX"3D]8+D-(GU +M@^#^H^!.8$>0BN9T#_"0BN;@_\.4`$`\=`%^`*@'"(`%PS/.,\[8^?_E#R7@ +M).3U@N0TB?6#X%[^H^!?3F`(D(KFX*/P@`V0BN;@%/"`O^20BN?PY0\EX"3D +M]8+D-(GU@^#^H^!.8$;DD(KF\)"*YN#_PY000`)AI70!?@"H!PB`!<,SSC/. +MV/G_Y0\EX"3D]8+D-(GU@^!>_J/@7TY@!I"*YN"`8Y"*YN`$\("_Y0\EX"2! +M]8+D-(;U@^#^H^!.8$;DD(KF\)"*YN#_PY0,4#QT`7X`J`<(@`7#,\XSSMCY +M_^4/)>`D@?6"Y#2&]8/@7OZCX%].8`B0BN;@)!"`"9"*YN`$\("_Y)"*Z/"0 +MBN?@_W7P">4/D(4/D(0AR)T`?`BY)"'(O`BTQ"O`0BL7@)0W_H_"CX)!!GI/^[].>0!!T`2SU@N0TAO6#Y/"O!("=D(K& +MX/]T`2SU@N0TAO6#[_`BK0=U\`GMD(`D+O6" +MY#1!]8-T`9,K_^23.L,3_N\3_^TEX"3A]8+D-(;U@^[PH^_PKP60BLG@_9%. +MD(K)X/\BK`=TA"SU@N0T!/6#X%1_D(K>\.!4'_^0BN'P=?`)[)"'*!)#7^"0 +MBN/P=?`)[)"')Q)#7^#^D(KD\.PEX"3D]8+D-(GU@^#[H^"0BN7+\*/K\.PE +MX"2!]8+D-(;U@^#[H^"0BN?+\*/K\._3GD`,D(KDX)"*X?"0BM[P[7`"P9.0 +MBN+M\)"*WN`PY@Z0BN'@D(K>\)"*XN`4\)"*XN!P`L&3D(KAX/_3E`!0`L&3 +MY)"*X/#O%)"*W_"0BN/@_9"*W^#_TYU`;^^4$$`A[R3P_W0!?@"H!PB`!<,S +MSC/.V/G_D(KGX%[^H^!?3G`GD(K?X/_#E!!0-W0!?@"H!PB`!<,SSC/.V/G_ +MD(KEX%[^H^!?3F`:D(K?X)"*WO"0BN#@!/"0BN+@_Y"*X.!O8`B0BM_@%/"` +M@Y"*XN#_D(K@X,.?4`^0BM_@M04(D(KCX)"*WO"0BM[@_R7@)&;U@N0T0?6# +MY)/Z=`&3^^\EX"0N]8+D-$'U@W0!DRO_Y),ZPQ/^[Q/_["7@).'U@N0TAO6# +M[O"C[_"O!)"*WN#]D4Z0BM[@_R+3$*\!P\#0BQJ*&XD@%YH-'DD(M($D-KBQV*'HD?D(M%$D-K$BG9 +M_\14#_4@>P%Z`7FBT>20`:]T__"0`@!Y5I"+2!)#BPMZBGG%X3/3$*\!P\#0D`'$=,7P=%^C\)`$'>!@&I`% +M(N!4D&`'D`'&X$1`\)`!Q^`PX>1_`(`"?P'0T)*O(M,0KP'#P-#D^_KO,.`" +M>X#OPQ.0_1#PD`0E[_#M8!ZO`W0/+_6"Y#3\]8/@1(#P=!`O]8+D-/SU@^!$ +M@/"O`W0(+_6"Y#3\]8/D\'0)+_6"Y#3\]8/@5/#P="$K]8+D-/SU@^!4]_"N +M`J\#T-"2KR(27\6_`1"0`@G@_WT!$E_]D`0?="#P(I`!`N!4`__@5`P3$U0_ +M_N]D`6`$[[0##I"*Q70!\*-T-_!Y`8`8[F0!8`>O!NYD`W`[D(K%=`'PHW0] +M\'E`D(K%X/ZCX/_U@HZ#X%E@".GPY)"*]O`BD(KVX`3PX,.4"D`+Y/"0!!G@ +M,.`"$6TBP.#`\,"#P(+`T'70`,``P`'``L`#P`3`!<`&P`>0`<1T\O!T8*/P +MD`$TX%4H]2RCX%4I]2VCX%4J]2ZCX%4K]2_E+"#@`D&)D`$T=`'PA=%-A=). +MA=-/A=10A=51A=92A==3A=E4Y5140,,3_^535"!O<`)!1N54,.4"04;E4E0? +M]0CE350_]0GE450?_^4()>`DX_6"Y#2(]8/DC_`20H'E4U0?_^4()>`DP/6" +MY#2%]8/DC_`20H'E"=.4!$`#=0D$=?`*Y0B0A``20U]U\`+E"1)#7^#^H^#_ +MY5-4'R__Y#[^=?`*Y0B0A``20U]U\`+E"1)#7^[PH^_PY50@YB3E4U0?_^4( +M)>`D8_6"Y#2(]8/DC_`20H'E3S#G-J\($ES#@"_E4U0?_^4()>`DH_6"Y#2( +M]8/DC_`20H'E3S#G$N5/5'_]Y5-4'_4-JPFO"!)<9N4D%"3]4`*`.I"+&N!@ +M*Y`!6^3PD`$\=`3P$DLT[V0!<"&0BST22UR0`5MT!?"0!I)T`?"0BQCP@`D2 +M2S2_`0,22OSE+##A(9`!-'0"\(715H725X736(7468756H766X777(7971)? +MI.4L,.,&D`$T=`CPY2PPY`F0`31T$/!#51#E+##E)I`!S^`PY1_@5-_PD`$T +M="#P=:@`=>@`$E&=D``#X%3[\!)2#H#^Y2PPYBV0`31T0/"0BS+@,.`,$Q-4 +M/S#@!9"+-.3PD(LLX/\PX`P3$U0_,.`%D(LNY/#E+B#@`F'FD(L(=`'PD`$V +M\)"+!N!@#^3PD`53X$0"\)`%_.`$\)"+,N`PX"^0BS=T`?"0BS+@_Q,35#\P +MX!V0BS1T`?"Q.9"+,^!D`V`-?P$23>#O8`5_!!).B9"++.#_,.!5$Q-4/S#@ +M3I"++G0!\+$YY/\23>#O8#ZQ7Y`%(G3_\)"++>#_9`9@+>^T!`*`!Y"++>"T +M!03D_X`4D(LMX+0#!'\!@`F0BRW@M`($?P&Q@I`%(G3_\!)#YY"+".3PY2XP +MX2^0`39T`O!#54`1A)"+-^"T`0F0!2+D\)"+-_"0BRS@,.`-Y/\23>#O8`60 +M!2+D\.4N,.(6D`$V=`3PD(LLX##@!J/@9`9@`Q)&L^4N,.,XD`$V=`CPY2%D +M`7`LY21@*)`!5^3PD`$\=`+PD(L]Y/"0BQ'@D(L^\.3[_7]4?@$22VR0`5=T +M!?#E+C#D*Y`!-G00\.4AM`$@Y21@')`!5^3PD`$\=`+PD(L;Y/!3)?WE)50' +M<`,22OSE+C#E'Y`!-G0@\.4AM`$4Y21@$)"+&N!D`F`%$DJ7@`,224GE+C#F +M&Y`!-G1`\.4AM`$0Y21@#%,E_N4E5`=P`Q)*_.4O,.$HD`$W=`+PD(LLX##@ +M&.3_$DW@[V`($DC^$GW!@`N0BS%T`?"``Q)(_G3R!)`!Q/!T8*/PT`?0!M`% +MT`30`]`"T`'0`-#0T(+0@]#PT.`RY)"+/?"0!5C@_Y"+..`O)/Z0BS[PY/O] +M?U!^`1)+;)`!4W0%\"*0BRS@_\03$U0#,.`*H^!D!F`$?P:Q@I"++>!D!F`# +M$G@U(M,0KP'#P-"0BRW@_F]P`N%.[Q)#E&6P`&7J`68P`F9J`V:B!&;;!6<6 +M!@``9T[NM`0&?P'Q@>%.D(LMX/^T!03Q7>%.[[0&!G\!\7*`%I"++>"T`P9_ +M`?%3@`F0BRW@M`("\6?QI.%.D(LMX+0$!G\!\8&`"9"++>"T!0+Q79"++>!P +M!/&:X4Z0BRW@_K0&!G\!\7+A3NZT`P9_`?%3X4Z0BRW@9`)@`N%.\6?A3I"+ +M+>"T!`9_`?&!@`F0BRW@M`4"\5V0BRW@<`3QFH`6D(LMX/ZT!@9_`?%R@`CN +MM`,$?P'Q4_'0X4Z0BRW@M`0&?P'Q@8`)D(LMX+0%`O%=D(LMX'`$\9J`%)"+ +M+>#^M`8&Y/_Q#^M`8&Y/_Q"T`@+Q9Y"++>"T`03QI(`)D(LMX+0%`O%=\:^`#^M`8&Y/_Q +M"T`@+Q9Y"++>"T`03QI(`+D(LMX+0$!'\!\8'Q +MPX`XD(LMX+0$!G\!\8&`"9"++>"T!0+Q79"++>!P!/&:@!:0BRW@M`,&Y/_Q +M4X`)D(LMX+0"`O%G\=W0T)*O(A)*LI"++70!\"*0!2+D\)"++?`BD`4BY/"0 +MBRT$\"+O8`60!2+D\)"++70!\"*0BU;O\!)]0I"+5N!@!9`%(N3PY)"++?`B +M$DK,D(LM=`'P(G\!$DI\Y)"++?`B$GQ*D(LM=`3P(A)*,I"++70#\"*0!2)T +M__"0BRUT!?`BD`4B=/_PD(LM=`+P(I`%(G1O\)"++70&\"+3$*\!P\#0Y/W\ +M[S#@`GV`[\,3D/T0\*X$KP70T)*O(G4H,^3U*74J!_4KD`$PY2CPH^4I\*/E +M*O"CY2OP(G4P'W4Q`4,Q$.3U,I`!..4P\*/E,?"CY3+P(B*0``+@5.!_`6`" +M?P`BD`#SX'\`,.,"?P$BD(L)X+0!#)``\N`PYP5^_7\S(G[]?R\BD`#SX##B +M#9`%0700\)`%6O"CY/`BD`%D=*#P(L#@P(/`@L#0==``P`7`!L`'?9&0`<3M +M\'1H_Z/P4Y'OD`!1X/Z0`%7@7O4]D`!2X/Z0`%;@7O4^Y3TPY`:0`%5T$/#E +M/3#E!I``570@\.4],.8&D`!5=$#PY3TPYP:0`%5T@/#E/C#@!I``5G0!\.4^ +M,.$&D`!6=`+PY3XPX@:0`%9T!/#E/C#C!I``5G0(\)`!Q.WPH^_PT`?0!M`% +MT-#0@M"#T.`R[\.4(%`Y[S#@%^W$5/#][\,3_B2D]8+D-`3U@^!4#X`0[\,3 +M_B2D]8+D-`3U@^!4\/!TI"[U@N0T!/6#X$WP(JT'=(0M]8+D-`3U@^!4?Y"* +MWO#@^50?H_!U\`GMD(`DX?6"Y#2&]8/J\*/K\.[#GT`"0;F0BM_@_W2E+?6"Y#2*]8/O +M\.\$D(K@\)"*X>#_D(K@X/[3GT`"0?/NPY000"'N)/#_=`%^`*@'"(`%PS/. +M,\[8^?^0BN+@7OZCX%].<">0BN#@_\.4$%!9=`%^`*@'"(`%PS/.,\[8^?^0 +MBN3@7OZCX%].8#R0BN#@M!$-D(KCX##G!I"*X'07\)"*X.#_9!-@!.^T$@V0 +MBN+@,.`&D(K@=!CPD(K@X)"*W_"0BM[P@$*0BN#@!/!!%Y"*X>#\D(K?X/]L +M<'%TI2WU@N0TBO6#[_!U\`GMD(D(KAX/]TI2WU@N0T +MBO6#[_"0BM_O\)"*WO#\H^#_)>`D9O6"Y#1!]8/DD_IT`9/[[R7@)"[U@N0T +M0?6#=`&3*__DDSK#$_[O$__M)>`DX?6"Y#2&]8/N\*/O\*\$(G0!+?6"Y#2& +M]8/D\*\%D(K>X$2`_1)<3I"*WN!$@/\BY)"*S_"0BL_@_\.4($`#`G)4=?`) +M[Y"'*A)#7^!D`6`#`G)+D(K/X"7@),#U@N0TA?6#X/RCX-.4`.R4`%`#`G)+ +M[W7P"J0D`/ETA#7P=1(!]1.)%)"*S^`EX"3`]8+D-(7U@^#]H^"0BM3-\*/M +M\.\EX"1C]8+D-(CU@^#_H^"0BM;/\*/O\)"*S^#^)(3U@N0T!/6#X%0_D(K0 +M\.#]5!^C\'7P">Z0AR<20U_@D(K9\)"*S^#[)&3U@N0TBO6#X,.4!4`"P9R0 +MBMG@_I"*T>">0!.0BMG@D(K1\.U40/V0BM#P[DWPD(K1X/^001*3_G0C*_6" +MY#2)]8/@PYY`!N^00-J`!Y"*T>"00/:3D(K8\)"*V.!U\`:D)%#Y=$`U\'4/ +M__40B1&0BM#@D$&ZD__3D(K7X)^0BM;@E`!`#9"*S^#_Y/T274$"<>&0BL_@ +M)>`DX?6"Y#2&]8/@_Z/@D(K2S_"C[_"K#ZH0J1$2*=G_?@"K$JH3J1020I?] +MK/`2*?*0BM+NC_`20H&K#ZH0J1&0``$20B#_?@"K$JH3J120``(20L+]K/`2 +M*?*0BM+NC_`20H&K#ZH0J1&0``(20B#_?@"K$JH3J120``020L+]K/`2*?*0 +MBM+NC_`20H&K#ZH0J1&0``,20B#_?@"K$JH3J120``820L+]K/`2*?*0BM+N +MC_`20H&K#ZH0J1&0``020B#_?@"K$JH3J120``@20L+]K/`2*?*0BM+NC_`2 +M0H&K#ZH0J1&0``420B#_?@"0BM3@_*/@_1(I\M.0BM/@GY"*TN">0`RCX)_P +MD(K2X)[P@`?DD(K2\*/PD(K2X/RCX/V0BL_@_R7@).'U@N0TAO6#[/"C[?"0 +MBM#@)>`D+O6"Y#1!]8/DD_IT`9/[T^V;[)I`!3%X`G&OD(K0X"7@)&;U@N0T +M0?6#Y)/^=`&3_\.0BM/@GY"*TN">0`,"<:^0BL_@_WT!$EU!`G&OD(K/X/\D +M9/6"Y#2*]8/@_&0%8`,"<'V0AR+@_K0#"Y"*T>##E!E`/8`N[K0""Y"*T>## +ME!%`+H`?D(##E`-`#9")0W0!\(`% +MY)")0_"0BL_@_B1#]8+D-(CU@^"0BMWP=",N]8+D-(GU@^#^PY0P4`ODD(K= +M\'1D+P)P*)")0^!D`6`#`G`=D(K/X"1$]8+D-(GU@^!D"F!;D(K/X/_N)`7[ +MY#/Z="$O]8+D-(;U@^#_TYOJ9(#X=("84#B0BL_@_N\D!?OD,_IT(R[U@N0T +MB?6#X-.;ZF2`^'2`F%`6D(K/X"2$]8+D-(KU@^#_D(K1X&]@5I"*S^`D(_6" +MY#2)]8/@_].40D`(D(K==`7P@!'OTY0YD(K=0`5T`_"``W0!\)"*S^#_)"/U +M@N0TB?6#X/YT(2_U@N0TAO6#[O"0BL_@)$3U@N0TB8`OD(K/X/\D9/6"Y#2* +M]8/D\'1$+_6"Y#2)]8/@!/"`%.20BMWPD(K/X"1D]8+D-(KU@^3PD(K1X/Z0 +MBL_@_R2$]8+D-(KU@^[PD(K=X/YT0R_U@N0TB/6#[O!U\`GOD(20BMWP=&0O]8+D-(KU@^3PD(K=X/TAK.QD!F`"(:^0BM+PH_"00=N3_WX` +MD(K4X/RCX/T2*?*0BMON\*/O\)"*S^`D0_6"Y#2(]8/@D(K=\.20BMKPD(K: +MX/_3E`101ZL2JA.I%'7P`N^D]8*%\(,20L+]K/#OD$'6D_]^`!(I\I"*TNZ/ +M\!)"@9"*V^#^H^#_TY"*T^"?D(K2X)Y0")"*VN`$\("OD(K:X,,3\)"*W>#_ +MM`$-D(K:X'!=D(K=!/"`6^^T`QV0BMK@_W`(D(K==`/P@$COM`$(D(K==`'P +M@#R`-9"*W>!D!7`RD(K:X/]P")"*W70%\(`/[Y"*W;0!!70#\(`#=`'PTY"* +MU^"4`Y"*UN"4`$`%Y)"*W?#3D(K7X)0#D(K6X)0`0`7DD(K=\)"*W>#]D(K/ +MX/\D0_6"Y#2(]8/M\!)I.)"*S^#_)&3U@N0TBO6#X-.4!5`/=&0O]8+D-(KU +M@^`$\(`/D(K/X"1D]8+D-(KU@^3PJQ*J$ZD4Y/7P$D+ZJQ*J$ZD4D``"Y/7P +M$D,9D``$Y/7P$D,9D``&Y/7P$D,9D``(Y/7P$D,9D(K/X/\EX"3`]8+D-(7U +M@^3PH_#O)>`D8_6"Y#2(]8/D\*/P[R7@)*/U@N0TB/6#Y/"C\)"*S^`$\`)K +MPB+DD(K/\)"*S^#_PY004!1TI"_U@N0T!/6#Y/"0BL_@!/"`XN20BL_PD(K/ +MX/_#E"!``H$.=?`*[Y"$`!)#7^3PH_!U\`KOD(0"$D-?Y/"C\'7P"N^0A`02 +M0U_D\*/P=?`*[Y"$!A)#7^3PH_!U\`KOD(0($D-?Y/"C\'2$+_6"Y#2*]8-T +M$_!T1"_U@N0TB?6#Y/!T0R_U@N0TB/6#Y/#O)>`DP/6"Y#2%]8/D\*/P[R7@ +M)&/U@N0TB/6#Y/"C\.\EX"3C]8+D-(CU@^3PH_#O)>`DH_6"Y#2(]8/D\*/P +M[R7@)&3U@N0TB?6#Y/"C\.\EX"2D]8+D-(GU@^3PH_!T1"_U@N0TBO6#Y/!T +M)"_U@N0TBO6#Y/!T9"_U@N0TBO6#Y/"008R3_G0!D_^0051T`9,O_^23/L,3 +M_N\3_Y"*S^#])>`DX?6"Y#2&]8/N\*/O\'7P">V0ARD20U]T`?!TP2WU@N0T +MAO6#=`SP=?`)[9"')1)#7W3_\*/P=?`)[9"'(Q)#7^3PHW0/\'7P">V0AR<2 +M0U]T$_!U\`GMD(TND(KW\)```1)"(/_M+Y"*^/"0``(20B#_[2^0BOGP +MD``#$D(@_^TOD(KZ\)``!!)"(/^N!>TOD(K[\"+3$*\!P\#0D(K:$D.+Y)"* +MW?`2*=G#$R#@`L'MD(K:$D-K$BG9_U0"_I"+,N!4_4[^\.]4`?_N5/Y/__`2 +M*=G^5`C][U3W3?^0BS+P[E00_N]4[T[_\!(IV?Y4(/WO5-]-_Y"+,O#N5$#^ +M[U2_3O`@X`+!V9"*W70A\)"*VA)#:Q(IV?\3$U0!_I"+,N#]$Q-4`6Y@*N]4 +M!/_M5/M/\.`3$U0_,.`.D`$T=$#P_>3_$C;F@`ODD(LT\'U`_Q(V=9"+,N#] +M$Q,35!\PX`>0BMW@1!+P[<14#S#@!Y"*W>!$%/"0BS+@Q!-4!S#@!Y"*W>!$ +M@/"0BS+@Q!,35`,@X`>0BMW@1$#PD(K=X)`%)_"0BS/@<`5_`1).B9"+,N#$ +M$Q-4`S#@!'\#@`Y_`1)-X.]@!'\!@`)_`A).B7\"`G@ND(K==`'PD`4G\.3_ +M$DZ)?P,">"Z0BMH20VL2*=G_5`+^D(LLX%3]3O[P[U0!_^Y4_D__\!(IV?Y4 +M"/WO5/=-_Y"++/#N5!#^[U3O3O_P$BG9_E1`_>]4OTW_D(LL\.Y4!/[O5/M. +M\"#@`N'BD(K==#'PD(LLX!,35#\@X`ODD(LN\'U`_Q(V=9"++.#]$Q,35!\P +MX`>0BMW@1`+P[<14#S#@!Y"*W>!$!/"0BMW@5`9@#)`!/G0#\/U_`A(W`)"* +MW>"0!2?PD(LLX/_$$Q-4`S#@#:/@9`9@+'\&$F6"@"60BRW@M`8;?P$298+D +M_Q)-X.]@"7T!KR,21:*`!1).5H`#$GW!?P&`3)"*W70!\)`%)_!]`W\"$C:2 +MD(LMX+0&`H`;D(LMX+0$`H`'D(LMX+0%!.3_@!20BRW@M`,$?P&`"9"++>"T +M`@5_`1)E@A$U$DK\?P,10M#0DJ\BD(LQX+0!!>3P$DC^(JT'[V0!8`3OM`,5 +MD(LRX%3^\%3[\.2C\*/PH_"C\*/P[60"8`3MM`,5D(LLX%3^\%3[\.2C\*/P +MH_"C\*/P(A(IV9"+./`BTQ"O`"0BNCPD(K^X/^CX)"*Z<_PH^_P +MY)"*Y/"0BN3@_R0`]8+D-(OU@^#^=.LO]8+D-(KU@^[PD(KDX`3PX+0$VI"* +MZ.`20Y1X^`!Z:P%Y`0)Y`0-Y`01Z:P5Z-8!Z3H%Z:X(``'IGD(KNX/]1.20BN3P +MD(KEX/^0BN3@PY]``D%KD(KIX/ZCX/_#[I0!D(KDX%`?_B__[OW#=`.=_>24 +M`/QTZRWU@G2*//6#X/T248B`*__]PW0#G?WDE`#\=.LM]8)TBCSU@^#^[_V0 +MBNK@+?V0BNG@-`"-@O6#[O"0BN3@!/"`C<.0BNG@E!!``D%KD(KHX&0$8`)! +M:Y"*[.#_Y/S]_G@0$BILP`3`!<`&P`>0BNO@_^3\_?YX&!(J;-`#T`+0`=`` +M$D-&P`3`!<`&P`>0BNW@_^3\_?YX"!(J;-`#T`+0`=``$D-&J`2I!:H&JP>C +MX/_D_/W^$D-&HQ(J?Y"*[Q)#4Y"`A1(J?Y"*Z>#^H^#_$B_9@#:0BNW@_J/@ +M)`#_Y#[^D(KF\*/O\!(W5(`=D(KMX/ZCX"0`_^0^_I"*YO"C[_`2-LN`!'\` +M@`)_`=#0DJ\BCP_DD(KS\.4/%/Z0BO/@_\.>4`[O!/T2-+>0BO/@!/"`Y>4/ +M%/]]_Q(TMY"*\^4/\)"*\^##E/]0#^#_!/T2-+>0BO/@!/"`Z*T/?_\"-+?3 +M$*\!P\#0Y)"*W?"C=`3PH^3PD(KB\*/PD`()X)"*X?`2*=G_D(KAX"^0BN#P +M,.`+D(K;Y/"C=(#P@`?DD(K;\*/PD(K@X,,3D/T0\)"*W>`D(/"0BMNCX/VC +MX/PM_R0!]8+D-/SU@^"0BOWP=`(O]8+D-/SU@^#^["TD`_6"Y#3\]8/@)`#_ +MY#Z0BO[PH^_PD(K:=`3PD(K;H^#_H^`O_Y"*VN#^+R0`]8+D-/SU@^#_=/PN +M]8+D-(KU@^_PD(K:X`3PX+0(SQ&)[W!%D`'#X&`KPY"*X^"4Z)"*XN"4`T`) +MD`'&X$00\(!YD(KBY'7P`1)"@7\*?@`2-U2`SY`!QN"0`<,PX@5T_O"`5W3_ +M\(!2D(K=X+1X+N3PD(K@X`3PD(K;X'`$H^!D@)"*VW`%\*/P@`;D\*-T@/"0 +MBN#@PQ.0_1#P@`>0BMW@)`CPD(K>=/_U\!)"@9"*WN!P`J/@8`)A%M#0DJ\B +M$BG9D(L%\)```1)"()"+!O`BY/5A(I%*D(LS=`+P(I`%(G3_\']X?@@2)]Z0 +MBQP2*G]_!'X,$B?>D(L@$BI_?P!^"!(GWI"+)!(J?Y"+">"0BQRT`0T20U/O +M5,?_[53'_8`'$D-3[U3'_^R0@(42*G]_>'X($B_9D(L@$D-3[U0/_^R0@(42 +M*G]_!'X,$B_9D(LD$D-3[T0"_^R0@(42*G]_`'X($B_9?W!^#A(GWI"+*!(J +M?Y"`A1(JBP`;):!_<'X.$B_9D(!9$BJ+`````.3]_Q(T@9"+">"T`1&0@%D2 +M*HL`````Y/U_`1(T@9``$>!4]O`"4@Z14)"+,W0"\"*0!2)T__"0BS-T!/`B +ML4*0BS-T!/`BD``1X$0)\!)2#I"+'!)#4Y"`A1(J?W]X?@@2+]F0BR`20U.0 +M@(42*G]_!'X,$B_9D(LD$D-3D("%$BI_?P!^"!(OV9"+*!)#4Y"`A1(J?W]P +M?@X2+]F0@%D2*HL``RV5Y/W_$C2!D(L)X+0!$9"`61(JBP`#+97D_7\!$C2! +M(I"++>!D!F`\Y2)4#Q1@+A1@'B3^8`XD^'`JY)"++?"0!2+P(I"++70!\)`% +M(N3P(I"++70#\)`%(G3_\"*0`<;@1`CP(JX'Y/\23>#O8!B0BRS@Q!,35`,@ +MX`RO!GT!$D6BL<%_`2)_`"*0`5?@8#R0`5?D\)`!/'0"\)"+&^!@!^3P4R7] +M@"20BPS@!/!3)>^0BQ#@_Y"+#.#3GT`.Y2&T`0F0BPW@<`/@!/"0`5O@8!"0 +M`5OD\)`!/'0$\.20BQCPD`%?X&`0D`%?Y/"0`3QT"/#DD(L7\"+DD(M/\*/P +MD`7XX'`/H^!P"Z/@<`>CX'`#?P$BTY"+4."4Z)"+3^"4`T`#?P`B?S)^`!(W +05)"+3^1U\`$20H&`Q@"2```` +` +end diff --git a/sys/contrib/dev/rtwn/rtwn-rtl8192cfwU.fw.uu b/sys/contrib/dev/rtwn/rtwn-rtl8192cfwU.fw.uu index d542b2ea3fff..90cd7dc442f3 100644 --- a/sys/contrib/dev/rtwn/rtwn-rtl8192cfwU.fw.uu +++ b/sys/contrib/dev/rtwn/rtwn-rtl8192cfwU.fw.uu @@ -1,333 +1,362 @@ -begin 444 rtwn-rtl8192cfwU.fw.uu -MP8@"`$@````%$!!3PCD!`(%C`0`````````````````"0[H````````````` -M`````````E!$```````````````````````````````````````````````` -M`````````````E;@```````"2VH```4$`P(``P8%!`,`!`8%!`(`!`@'!@0` +begin 644 rtwn-rtl8192cfwU.fw.uu +MP8@"!5@``@`2!1<1WCX!`)08`@`````````````````"1C`````````````` +M`````````F#R```````````````````````````````````````````````` +M`````````````FB1```````"2X<```4$`P(``P8%!`,`!`8%!`(`!`@'!@0` M!@H)"`8`"`H)"`0`"`H)"`(`"`H)"```"!(1$`@`$!H9&!``&"(A(!@`("(A M(!``("(A(`@`("(A'`@`("(A%`@`("(@&`@`(#$P(!``,#$P&```,#$O$!`` -M,#$L$!``,#$H$```,#$@$```,#$0$```,`0$!`4$!`0%!04&!@0$!`4%!08& -M!`0%!04%!@8$!`4%!04&!PH+#1`$!04&!@D,$0@("0D*#!`1!`0$!00$!0<' -M!P@*!`0$!`8*"PT%!0<'"`L-#P0$!`4'!PD)#`X0$@0$!04&"A$3"0D)"0P. -M$1,````````````D)BH8&AT?(2`"@`,@!0`&0`>`",`$L`4`!X`+0`^@$L`9`!]```@`" -M``0`"``,`!(`&``D`#``2`!@`&P`*``\`%``9`"@`,@`\`$8`&0`H`#P`6@! -M]`)8`R`#Z`("`@("`@,#!`0%!P0$!PH*#`P2!0<'"`L2)#P!`0$!`0(#!`4& -M!P@!`@,$!08'"`4&!P@)"@L,(!X<&!`8````````````````NP$,Y8(I]8+E +M,#$L$!``,#$H$```,#$@$```,#$0$```,`0$!`4$!`4'!P<("@0$!`0&"@L- +M!04'!P@+#0\$!`0%!P<)"0P.$!(&!PD*#`X1$PD)"0D,#A$3```````````` +M)"8J&!H='R$G*2H````?(R@J+``$``0`"``0`!@`)``P`$@`8`"0`,``V`!0 +M`'@`H`#(`4`!D`'@`C`!+`%``>`"T`/H!+`&0`?0``(``@`$``@`#``2`!@` +M)``P`$@`8`!L`"@`/`!0`&0`H`#(`/`!&`!D`*``\`%H`?0"6`,@`^@"`@(" +M`@(#`P0$!0<"`P0*#`X0$@4'!P@+$B0\`0$!`0$"`P0%!@<(`0(#!`4&!P@% +M!@<("0H+#"`>'!@0&``````````````````````````````````````````` +M````````````````````````````````````````````````NP$,Y8(I]8+E M@SKU@^`B4`;I)8+XYB*[_@;I)8+XXB+E@BGU@N6#.O6#Y),BNP$&B8**@_`B M4`+W(KO^`?,B^+L!#>6"*?6"Y8,Z]8/H\")0!NDE@LCV(KO^!>DE@LCR(L7P M^*/@*/#%\/CE@A6"<`(5@^`X\"*[`0J)@HJ#X/7PH^`B4`:'\`GG&2*[_@?C M]?`)XQDBB8**@^23]?!T`9,BNP$0Y8(I]8+E@SKU@^#U\*/@(E`)Z26"^(;P M".8BN_X*Z26"^.+U\`CB(N6#*O6#Z9/U\*/IDR*[`0J)@HJ#\.7PH_`B4`;W M":?P&2*[_@;SY?`)\QDB^+L!$>6"*?6"Y8,Z]8/H\.7PH_`B4`GI)8+(]@BF M\"*[_@GI)8+(\N7P"/(B[TO_[DK^[4G][$C\(N#\H^#]H^#^H^#_(J0E@O6" MY?`U@_6#(N#[H^#ZH^#Y(OC@^Z.CX/DE\/#E@A6"<`(5@^#Z./`BZ_"CZO"C -MZ?`BT(/0@OCDDW`2=`&3<`VCHY/X=`&3]8*(@^1S=`*3:&#OHZ.C@-\"0_@" -M2"_DDZ/XY).C0`/V@`'R"-_T@"GDDZ/X5`1^`9-@O*/_5#\PY0E4'_[DDZ-@`0[/5,`EX&"H -M0+CDDZ/ZY).C^.23H\C%@LC*Q8/*\*/(Q8+(RL6#RM_IWN>`OD&7?P!!EZ$` -M09=K@$&7HP``CX*.@Z.CH^3P(N3U(W]@?@&`[=,0KP'#P-"0EUUQBY"777%K -MD``!4<+ZY?`D`/_D.OZ0EUUQ:Y```>Z/\'$9$B1B_V`HM2,4D)==<6N0``%1 -MPF4E<`3E)&7P8!^0EUUQ:Y```5'"_Z[PL5.`#I"777%K$B1B92-@`I%8T-"2 -MKR+T_Y``0^!?\-,0KP'#P-!_$-_^T-"2KR*0`=,0KP'#P-"+8(IAB6*0EXAQBZMCJF2I99"7BW&+ -MKV859N]@&Y"7B^1U\`%Q=!(D8O^0EXCD=?`!<73O44V`WJM@JF&I8M#0DJ\B -MD)=@[O"C[_!U(P&.)/4EY/U_"[&6Y/U_`K&6$FU;Y/^1YN3U)Y`!R>4G\)"7 -M8.#\H^#][/N-1.3U17T!?V!^`0(P8M,0KP'#P-"0EV/M\)"78N_PTY0'4$ZC -MX'`:D)=BX/]T`:@'"(`"PS/8_/3_D`!'X%_P@!>0EV+@_W0!J`<(@`+#,]C\ -M_Y``1^!/\)'6D)=BX/]T`:@'"(`"PS/8_/3_D`!&@%F0EV+@)/CPH^!P'9"7 -M8N#_=`&H!PB``L,SV/S$5/#T_Y``0^!?\(`:D)=BX/]T`:@'"(`"PS/8_,14 -M\/^0`$/@3_"1UI"78N#_=`&H!PB``L,SV/ST_Y``0^!?\)'6T-"2KR+@_WT! -MD)>4[_"C[?#DH_"C\.5J8`7D_Q).>9"7E.`PX`F0EY;D\*-T@/"0!!W@8!V0 -M!2+@D)>8\.#_5)!@[)`!R'3\\.]4;Y`%(O"`W9"7E.#_PQ.0_1#PD`0E[_"0 -MEY7@8!^CH^#_)`_U@N0T_/6#X$2`\'00+_6"Y#3\]8/@1(#PD)>6H^#__20( -M]8+D-/SU@^3P=`DM]8+D-/SU@^!4\/!T(2_U@N0T_/6#X%3W\)"7EN#^H^#_ -M(O"0`$7@5/[]?T73$*\!P\#0CX)U@P#M\)'6T-"2KR+O%&`P%&!E)`)@`N': -MD)!$$/U_18!OY)"7./"0 -MES1Q4Y"`EA(E"'^`?@@2*PB0`$7@1._]?T7Q()``1>!4[_U_1?$@D`!&X$00 -M_7]&@#>0ESAT`?"0ESYQ4Y"`EA(E"'^`?@@2*PB0`$7@1"#]?T7Q()``1>!$ -M$/U_1?$@D`!&X$00_7]&\2`BD`!)X)"7I/#@5`_P1/#]?TGQ()"7I.!$L/U_ -M2>$@=2@SY/4I=2H"]2N0`3#E*/"CY2GPH^4J\*/E*_`B=3`?=3$!Y/4RD`$X -MY3#PH^4Q\*/E,O`BY)"73_"C\'6.`A)LK9```N!4X)"7AF`%=`'P@`-T`O"0 -M`//@,.,(D)>'=`'P@`7DD)>'\)"7A^"T`1.0`/+@,.<,D)=]=/WPHW0S\(`* -MD)=]=/WPHW0O\.3U5Q)JZQ)O\A)?K!(N`1)M5Q)'^9``\^`PX@V0!4%T$/"0 -M!5KPH^3PD`%D=*#P=43_Y/5%^WT!?U!^`1(P8A$7$D4"$G=(D)=1Y=GP$E`5 -MPJ^0`(#@1$#P$D36=>@#0ZB%TJ^0ET_@9`'P)"^0`<3P=$BC\.57,.0*PJ]3 -M5^_2KQ)7@.57,.86PJ]35[_2KQ)A9)"7/.#_8`.T`0(Q8)"7/.!P`Q)WIC$S -M@+B0!C3@8"8435_^7X!$FSUOP$)D`8UX%0/\(`%@``";)[DD`8T -M\"*0ES/@PY044`7@!/!!&)"7,^!D%&`"01B0ET+@<"60ET7@0!/W@5/[PD)="X)`$1/"0ET/@D`1%\)"71."0 -M!$;PH^3PD)=%X)`$2/"0ET;@D`1)\)"71^"0!$KPH^3PD)#^TY]0"Y"72^##GM.4`4`0D)"0ETGPD`5BX)"72O"0!6/@D)=+\,-T_Y_^D)=)X-.>0![@+_"CX+3_#^3P -MH^"T_P/D\"*0ETN``Y"72N`$\"*0ETG@+_`BD)#_46*0ETQT`1)'%H!`D)=,X&0!<#B0ESW@_U%BY)"73/"0`$7@1`']?T42 -M1R"0ES+@8!60ES020U.0@)82)0A_@'X($BL(@`60!2+D\)`%A^!D@/"0ETC@ -MD`6$\)"72>"0!87PD)=*X)`%AO"0ETO@D`6'\"+`X,#PP(/`@L#0==``P`#` -M`<`"P`/`!,`%P`;`!Y`!Q'1J\'1+H_!3D=^0`3S@53#U-*/@53'U-:/@53+U -M-J/@53/U-^4T,.`&D`$\=`'PY30PX0B0`3QT`O#QJ^4T,.(RD`$\=`3PD`:2 -MX##@'G5$%'5%`.3[_7]8?@$2,&*0`5MT!?"0!I)T`?"`!Y"7=N3PD8KE-##C -M,I`!/'0(\)`&DN`PX1YU1!1U10#D^_U_7'X!$C!BD`%?=`7PD`:2=`+P@`>0 -MEW7D\)&*Y30PY`F0`3QT$/`2;7?E-##E")`!/'0@\%&TY34PX!"0`3UT`?"0 -M`(/@D)=Y\)&*=&H$D`'$\'1+H_#0!]`&T`70!-`#T`+0`=``T-#0@M"#T/#0 -MX#*0EWG@_WT!@`1]`7\,CV>-:.5G5`__D)=WX%0/;V!QY6]@*[%.D)=WX%0/_[\$#>5G(.(($E8Q[V`4T920EW?@5`__ -MOP(($F`)[V`"T>!4O_`BD`8$X$1`\.5IM`$$?P'Q2)"7=^!4\/#@1`3P -M(N]D`7`N?7U_`A(Q+'T"?P,2,2R0`5?D\)`!/'0"\)&3Y/_1>9`&!.!4?_"0 -M!@K@5/CP(I`!-G1]\*-T`O!]??\2,9U]`G\#$C&=D`8$X$2`\)`&"N!$!_"0 -MEW+@H^"0!5CPY6DPX!J0EV_@%&`O)`-P0'\!@#JK$:H2J1.0 -M``(20B#]Y/_14X`GJQ&J$JD3D``"$D(@_7\!T5,?@!.K$:H2J1.0``(20B#] -M?P+14^3_L6HB[R3^8`L$V0EWAP!70%\(`"[?"0EWC@D)=M -M\"+O8`N0EX?@M`$0Y/^`"9"7A^"T`05_`1)O^R*0`3=T`O"0!2)T__`2;E_O -M<`:0`BX&`%D`4BY/"0EW?@ -M5/#PX$0$\"*0!@3@5+_P[V`)Y6FT`03D__%(D)=WX%3P\.!$#/`B$E/\OP$: -MD)=VX'`4D)=UX'`.D)=YX%0/TY0$4`-_`2)_`"*/:Y"7@A)&7>5K8!!T(2_U -M@N0T_/6#X$00\(`.="$O]8+D-/SU@^!4[_"0!!]T`?`B?0)_`Q(Q+.5J%"3] -M4`*`(9"7>N!@!GT!?PR`#Y"7=^!4#\.4!%`&?0%_!)&7Y/_1>2*0EWO@8`[D -M\*/@5/WPX%0'<">`(Y"7;N`$\)"7?.!4[_"0EV[@TY0!0`WE:;0!"J/@<`;@ -M!/`BD8HBD`$PY/"C\*/PH_"0`3CPH_"C\*/P_7]0$D<@Y/U_41)'(.3]?U(2 -M1R#D_7]3`D<@D`$\=/_PH_"C\)`!-/"C\*/PH_#]?U021R!]_W]5$D<@??]_ -M5A)'('W_?U<"1R#`X,#PP(/`@L#0==``P`#``<`"P`/`!,`%P`;`!Y`!Q'1$ -M\'10H_"0`33@52CU+)`!-N!5*O4NH^!5*_4OY2P@X`(AVY`!-'0!\(713872 -M3H733X744(7548764H774X795.545$##$__E4U0@;W`"(9+E5##E`B&2Y5)4 -M'_4(Y4U4/_4)Y5%4'__E""7@)./U@N0TE/6#Y(_P$D*!Y5-4'__E""7@),#U -M@N0TD?6#Y(_P$D*!Y0G3E`1``W4)!'7P"N4(D)``$D-?=?`"Y0D20U_@_J/@ -M_^535!\O_^0^_G7P"N4(D)``$D-?=?`"Y0D20U_N\*/O\.54(.8CY5-4'__E -M""7@)&/U@N0TE/6#Y(_P$D*!Y4\PYS2O"+'#@"[E4U0?_^4()>`DH_6"Y#24 -M]8/DC_`20H'E3S#G$>5/5'_]Y5-4'_4-JPFO")&PY6H4)/U0`H!`D)=ZX&`R -MD`%;Y/"0`3QT!/!Q_.]D`7`H=404]47[_7]8?@$2,&*0`5MT!?"0!I)T`?"0 -MEW;P@`AQ_+\!`Q),BN4L,.$FD`$T=`+PD/T0='_PA=%8A=)9A=-:A=1;A=5< -MA=9=A==>A=E?D0OE+##C!I`!-'0(\.4L,.0)D`$T=!#P0U<0Y2PPY2:0`<_@ -M,.4?X%3?\)`!-'0@\'6H`'7H`!)/Y9```^!4^_`21-:`_N4L,.8&D`$T=$#P -MY2XPX3R0`39T`O!#5T"0`0+@5`-D`7`ID`$WX##@"G0!\)"7?^3P@!B0EW_@ -M!/#@PY0*0`SD\)`$&>`PX`,21/+E+C#@")`!-G0!\-%EY2XPXG&0`39T!/#E -M:60!<&7E:F!AY6ID`F`&Y6ID!7`GD`:KX)"7;?"0!JK@D)=X\)"7;>!P!Y"7 -M>.#_@`60EVW@_Y"7;>_PD)=OX&`#X!3PD)=NY/"0`5?PD`$\=`+PD)=\X%3] -M\.!4[_#E:A0D_5`"@`*Q$.4N,.,QD`$V=`CPY6ED`7`EY6I@(9`!5^3PD`$\ -M=`+P=40#=44`Y/O]?U1^`1(P8I`!5W0%\.4N,.0OD`$V=!#PY6ED`7`CY6I@ -M'Y`!5^3PD`$\=`+PD)=[Y/"0EWS@5/WPX%0'<`,23(KE+C#E'9`!-G0@\.5I -MM`$2Y6I@#I"7>N!D`F`$L7B``K&)Y2XPYAZ0`39T0/#E:;0!$^5J8`^0EWS@ -M5/[PX%0'<`,23(KE+S#A"9`!-W0"\!)/>71$!)`!Q/!T4*/PT`?0!M`%T`30 -M`]`"T`'0`-#0T(+0@]#PT.`RD`0;X%1_9']_`6`"?P`BD)=-X%3P1`/P5`]$ -M@/![`'H`>5B0EY$20XL+>I=Y3=,0KP'#P-"0EXX20XN0EX;@9`)@;)`!K^!@ -M"9`!Q^`$\/"`\9"7H^#_!/"0EXX20VN0``'O$D)?D)>.$D-KBV.*9(EE=68" -M>P%Z`7F@$D4)D)>1$D-KBV.*9(EED)>.$D-K$B1B_\14#_5F>P%Z`7FB$D4) -MD`&O=/_PD`'+X&2`\-#0DJ\BJ07I5!_U#W0!+_6"Y#22]8/@]0Z0!/W@M`$% -M=1`#@`-U$`'KPY400`*AP^4.)0W^Y0^00=:3_>[3G70!0!0EWS@1`'PD)=ZX&0"8`2Q>(`+L8F`!Y"7?.!4_O#E"I"7?##G -M(.!$`O!U1`/D]47[_7]4?@$2,&*0`5=T!?"0EWMT`?`BX%3]\"*0EX'@_^3] -M$D9AD`0?=`'P(I`!7^3PD`$\=`CP=404Y/5%^_U_7'X!$C!BD`%?=`7PD`:2 -M=`+PD)=U%/"0EW?@5`_#E`Q0`Q),DR*M!W7P">V0DR<20U_@_W2E+?6"Y#26 -M]8/@5!_\TY]``JP'["7@))[U@N0T0?6#Y)/^=`&3_^PEX"1F]8+D-$'U@W0! -MDR__Y),^PQ/^[Q/_[27@).'U@N0TDO6#[O"C[_!TA"WU@N0T!/6#[/#_(G'\ -M[V0!<"J0EWS@5`-P(I"7>>!4#].4`E`7D)=\X"#B$)"7?.`@Y`F0EV_@<`-_ -M`2)_`"+DD)=-\.5J8''E:60!<&OE:A1@*23]8"4D`B3[4`*`(Y"7;>`4\.!@ -M!*/@8!:0EVW@<`J0EWC@D)=M\(``D)=-=`'PD)=-X&`QD)=\X$00\)"7=.#U -M1.3U1?O]?U1^`1(P8I`!5W0%\)"7=^!4#\.4!%`'?0%_!!),ER+`X,#PP(/` -M@L#0==``P`#``<`"P`/`!,`%P`;`!Y`!Q'3@\'16H_!3D>^0`%'@_Y``5>!? -M]3WE/3#F&'1`\)"7.^!4`_^_`PN0ESC@8`5_`1)'->4],.<5D`!5=(#PD)<[ -MX%0#_[\#!7\"$D0EZ'@_W0! -M?@"H!PB`!<,SSC/.V/G_[UUP`P)8O9"7H>!U\`20`=`20U_@D)=3\'5C`75D -MEW5E4W5F`7L!>I=Y5!)%"9"75.#_Q!,3$U0!D)>A,.!9X'7P`I``B!)#7^"0 -MEU7PD)>AX'7P`I``B1)#7^"0EU;PD)>AX'7P!)`!T1)#7^"0EU?PD)>AX'7P -M!)`!TA)#7^"0EUCPD)>AX'7P!)`!TQ)#7^"0EUGP@#/@=?`$D`'1$D-?X)"7 -M5?"0EZ'@=?`$D`'2$D-?X)"75O"0EZ'@=?`$D`'3$D-?X)"75_#O5'__>P%Z -MEWE5$#^=`&H!@B``L,SV/ST7Y"74O"0EZ'@_W0!J`<(@`+# -M,]C\D`',\)"7H>`$\.!4`_`"5XJ0`<;@1`+P`E>*(I"76A)#B^\20Y18]`%8 -M_`)9!`-9#`59%`991@=9'`E9)0Q9+@U9-@X``%D_D)=:$D-KP=B0EUH20VO! -MTI"76A)#:^%DD)=:$D-KX0*0EUH20VN`*Y"76A)#:P)$89"76A)#:P)X?Y"7 -M6A)#:^$QD)=:$D-K`G9PD`'&X$0!\"*0``020B#_5!_^[U0@Q!-4!_VO!I"7 -M7>_PH^WPHQ)#BY"77Q)#:Y```Q)"(%3PQ%0/D)=B\)``!!)"(%1`Q!,35`.0 -MEV/PD)==X/]U\`F0DR420U^M@JR#D)=D[/"C[?#O=?`)I"0C^723-?#Z>P&C -M$D.+D)=?$D-KD``#$D(@5`__D)=F$D-K[Q)"39"77Q)#:Y```A)"(/^0EV82 -M0VN0``'O$D)?D)=?$D-KD``!$D(@_Y"79.#\H^#]]8*,@^_P$B1BC8*,@Z/P -MD)=BX/Z0EUW@_R3!]8+D-)+U@^[PD)=>X/YU\`GOD),I$D-?[O!U\`GOD),J -M$D-?=`'PD)=CX/YU\`GOD),K$D-?[O"/$>\EX"3D]8+D-)6O@O43CQ3E$77P -M`J0D@?ETDC7P=14!]1:)%W7P">41D),E$D-?KX*%@QB/&>41=?`)I"0C^723 -M-?!U&@'U&XD<=,$E$?6"Y#22]8/@$D.46M4`6NH!6O\"6Q0#6ST$6U(%6V<& -M6XT,6[H-6^<.7!0/``!<2.41)>`DY/6"Y#25]8-T\/"C=!6`/.41)>`DY/6" -MY#25]8-T\/"C=!"`)^41)>`DY/6"Y#25]8-T\/"C=`6`$N41)>`DY/6"Y#25 -M]8-T\/"CY/#E$27@)('U@N0TDO6#=`_PHW2/\(%(Y1$EX"3D]8+D-)7U@W0/ -M\*-T]8`GY1$EX"3D]8+D-)7U@W0/\*-T\(`2Y1$EX"3D]8+D-)7U@^3PHW0- -M\.41)>`D@?6"Y#22]8/D\*/P@4B0!$?@JQ6J%JD7$D)-D`1&X*L5JA:I%Y`` -M`1)"7Y`$1>"%%(*%$X/PD`1$@3^0!$O@JQ6J%JD7$D)-D`1*X*L5JA:I%Y`` -M`1)"7Y`$2>"%%(*%$X/PD`1(@%B0!$_@JQ6J%JD7$D)-D`1.X*L5JA:I%Y`` -M`1)"7Y`$3>"%%(*%$X/PD`1,@"N0!%/@JQ6J%JD7$D)-D`12X*L5JA:I%Y`` -M`1)"7Y`$4>"%%(*%$X/PD`10X(44@H43@Z/PJQ6J%JD7P`/``L`!$B1B_ZL: -MJANI'!(D8E_0`=`"T`,20DVK%>47)`'YY#46^L`#P`+``1(D8O^K&JH;J1R0 -M``$20B!?T`'0`M`#$D)-A12"A1.#P(/`@N#_A1F"A1B#X/[O7M""T(/PA12" -MA1.#H\"#P(+@_X49@H48@Z/@_N]>T(+0@_#E$27@)('U@N0TDO6#X/ZCX$Y@ -M.W42"W0!?@"H$@B`!<,SSC/.V/G_Y1$EX"2!]8+D-)+U@^!>_J/@7TY@!N42 -M)!"`7142Y1+#E`!0RH!6Y1$EX"3D]8+D-)7U@^#^H^!.8#UU$@]T`7X`J!(( -M@`7#,\XSSMCY_^41)>`DY/6"Y#25]8/@7OZCX%].8`B0EVGE$O"`$!42Y1+# -ME`!0R(`%Y)"7:?#E$27@).3U@N0TE?6#X/ZCX$Y@.^3U$G0!?@"H$@B`!<,S -MSC/.V/G_Y1$EX"3D]8+D-)7U@^!>_J/@7TY@")"7:N42\(!;!1+E$K00RH!2 -MY1$EX"2!]8+D-)+U@^#^H^!.8#GD]1)T`7X`J!((@`7#,\XSSMCY_^41)>`D -M@?6"Y#22]8/@7OZCX%].8`;E$B00@`H%$N42M`S,@`7DD)=J\)"7:>#_=?`) -MY1&0DR<20U_O\)"7:N#^=?`)Y1&0DR@20U_N\'2$)1'U@N0T!/6#X-.?0!^0 -MEVG@_W2$)1'U@N0TEO6#[_!TA"41]8+D-`3U@^_P=(0E$?6"Y#0$]8/@PYY0 -M'Y"7:N#_=(0E$?6"Y#26]8/O\'2$)1'U@N0T!/6#[_"0EVG@_].4$T`(D),B -M=`/P@"'OTY0+0`B0DR)T`O"`$^_3E`-`")"3(G0!\(`%Y)"3(O"0DR+@D`2Q -M\"(2)&+U:2+3$*\!P\#0D``!$D(@D)=Z\)```Q)"()"7;/`2)&)E:F`#$DWQ -MT-"2KR(2)&+U$<.4(%`5D``"$D(@_W0C)1'U@N0TE?6#[_`BY1&T(`J0``(2 -M0B"0DR'P(I```A)"()"7//#@8`3@]'`AHJ_D,_41PJ^0`$?@5/O]?T<21R!] -M0'\!$C%FY1$D_Y*O(I`"">#]$B1B_J\%[2Z0EX#PD``!$D(@_^TOD)>!\)`` -M`A)"(/_M+Y"7@O"0``,20B#_[2^0EX/PD``$$D(@_ZX%[2^0EX3P(N3U:9"7 -M?/#U:I"7>70,\)"7=_#DD)=Z\)"7=O"0EW7PD)=X!/"0EVWPY)"7>_"0EV_P -MD)=T=`?PY)"7;O"0EW+PHW0"\.20EW'PD)=L\"+DD)=[\)"7;O"0EWSP(N57 -M<#>0EWG@5`_3E`%0+)`"A^!P)I"7AN"T`A"0EWW@_J/@]8*.@^!@"(`/D`&O -MX'`)D)=QX&`#?P$B?P`BD``KX$0!\'_H?@,2,A60``C@1!#]?P@21R"0``G@ -M5/?]?PD21R"0`"C@5/[]?R@21R"0`"#@5/[]?R`21R"0`"7@1$#]?R421R"0 -M``G@5._]?PD"1R"0`"7@5+_]?R421R"0`"#@1`']?R`21R"0`"C@1`']?R@2 -M1R"0`/#@,.'YD``)X$0(_7\)$D<@D``(X%3O_7\($D<@D``KX%3^_7\K$D<@ -M?^A^`P(R%8]LD)>#$D9=Y6Q@$'0A+_6"Y#3\]8/@1!#P@`YT(2_U@N0T_/6# -MX%3O\)`$'W0!\"+OPY0@4#GO,.`7[<14\/WOPQ/^)*3U@N0T!/6#X%0/@!#O -MPQ/^)*3U@N0T!/6#X%3P\'2D+O6"Y#0$]8/@3?`BY/41=?`)Y1&0DRH20U_@ -M9`%@`N%AY1$EX"3`]8+D-)'U@^#^H^#3E`#NE`!0`N%AY1%U\`JD)`#Y=)`U -M\'46`?47B1CE$27@),#U@N0TD?6#X/^CX)"75L_PH^_PY1$EX"1C]8+D-)3U -M@^#_H^"0EUC/\*/O\'2$)1'U@N0T!/6#X%0_D)=2\.#^5!^C\'7P">41D),G -M$D-?X)"76_!T9"41]8+D-);U@^##E`5``H$[D)=;X/^0EU/@GT`3D)=;X)"7 -M4_#N5$#^D)=2\.].\)`$_>!D`7`ID)=3X/^004J3_G0C)1'U@N0TE?6#X,.> -M0`;OD$#:@#"0EU/@D$#V@">0EU/@_Y!!2I/^=",E$?6"Y#25]8/@PYY`!N^0 -M01*`!Y"74^"002Z3D)=:\)"76N!U\`:D)%#Y=$`U\'43__44B160EU+@D$'R -MD__3D)=9X)^0EUC@E`!`">3]KQ$2:5K!^.41)>`DX?6"Y#22]8/@]1FCX/4: -MJQ.J%*D5$B1B_WX`JQ:J%ZD8$D*7_:SP$B1[[R4:]1KN-1GU&:L3JA2I%9`` -M`1)"(/]^`*L6JA>I&)```A)"POVL\!(D>^\E&O4:[C49]1FK$ZH4J160``(2 -M0B#_?@"K%JH7J1B0``020L+]K/`2)'OO)1KU&NXU&?49JQ.J%*D5D``#$D(@ -M_WX`JQ:J%ZD8D``&$D+"_:SP$B1[[R4:]1KN-1GU&:L3JA2I%9``!!)"(/]^ -M`*L6JA>I&)``"!)"POVL\!(D>^\E&O4:[C49]1FK$ZH4J160``420B#_?@"0 -MEU;@_*/@_1(D>]/E&I_E&9Y`#.4:G_4:Y1F>]1F`!>3U&?4:Y1$EX"3A]8+D -M-)+U@^49\*/E&O"0EU+@)>`D9O6"Y#1!]8/#=`&3E1KDDY494`:O$?%MP`DGO6"Y#1!]8/3=`&3E1KDDY494`+!S'T!KQ$2:5K!S'1D)1'U@N0T -MEO6#X/QD!6`"H=:0DR+@_[0#"Y"74^##E!E`/8`N[[0""Y"74^##E!%`+H`? -MD),BX/^T`0N0EU/@PY0*0!N`#.]P$9"74^##E`-`#9"50W0!\(`%Y)"50_!T -M0R41]8+D-)3U@^#U&W0C)1'U@N0TE?6#X/_#E#!0`J&#D)5#X&0!8`*A@W1$ -M)1'U@N0TE?6#X&0*8%'O)`7_Y#/^="$E$?6"Y#22]8/@_=.?[F2`^'2`F%`R -M[20%_^0S_G0C)1'U@N0TE?6#X-.?[F2`^'2`F%`4=(0E$?6"Y#26]8/@_Y"7 -M4^!O8#UT(R41]8+D-)7U@^#_TY1"0`5U&P6`#N_3E#E`!74;`X`#=1L!="$E -M$?6"Y#22]8/O\'1$)1'U@N0TE8`I=&0E$?6"Y#26]8/D\'1$)1'U@N0TE?6# -MX`3P@!#D]1MT9"41]8+D-);U@^3PD)=3X/]TA"41]8+D-);U@^_P=$,E$?6" -MY#24]8/E&_!U\`GE$9"3*Q)#7^"T`1#D]1MT9"41]8+D-);U@^3PK1O!R.QD -M!F`"PI&'7P`N42I/6"A?"#$D+"_:SPY1*00@Z3_WX`$B1[[R4: -M]1KN-1GU&<.0EU7@E1J0EU3@E1E`!P42Y1*T!;WE$L,3]1+E&[0!!N42<$:` -M$^4;M`,5Y1)P!74;`X`YY1*T`05U&P&`+X`JY1NT!2CE$G`%=1L%@`WE$K0! -M!74;`X`#=1L!TY"76>"4`Y"76."4`$`#Y/4;TY"76>"4`Y"76."4`$`#Y/4; -M=$,E$?6"Y#24]8/E&_#]KQ$Q)'1D)1'U@N0TEO6#X-.4!71D4`XE$?6"Y#26 -M]8/@!/"`"R41]8+D-);U@^3PJQ:J%ZD8Y/7P$D+ZJQ:J%ZD8D``"Y/7P$D,9 -MD``$Y/7P$D,9D``&Y/7P$D,9D``(Y/7P$D,9Y1$EX"3`]8+D-)'U@^3PH_#E -M$27@)&/U@N0TE/6#Y/"C\.41)>`DH_6"Y#24]8/D\*/P!1'E$<.4(%`"(6S#E!!`(>PD\/]T`7X`J`<(@`7#,\XSSMCY -M_Y"77>!>_J/@7TYP(^S#E!!0.70!?@"H!`B`!<,SSC/.V/G_D)=?X%[^H^!? -M3F`<[&038`CL9!)@`[P1"9"77>`PX`)\&*T$C1R`-`R`BY"77.#\;7!I=*4I -M]8+D-);U@^WP=?`)Z9"3*1)#7^"T`0SE'"#F!^U$0/4<@`.O'"+M)>`DGO6" -MY#1!]8/DD_YT`9/_[27@)&;U@N0T0?6#=`&3+__DDS[#$_[O$__I)>`DX?6" -MY#22]8/N\*/O\(!;[=.<0%:0EUS@_W2E*?6"Y#26]8/O\*T'CQSM)>`DGO6" -MY#1!]8/DD_YT`9/_[27@)&;U@N0T0?6#=`&3+__DDS[#$_[O$__I)>`DX?6" -MY#22]8/N\*/O\*\<(G0!*?6"Y#22]8/D\.4<1(#_=(0I]8+D-`3U@^_P(JH' -M=(0J]8+D-`3U@^!4?_M4'_F0EU[P=?`)ZI"3*!)#7^"0EV#P=?`)ZI"3)Q)# -M7^"0EV'P_.HEX"3D]8+D-)7U@^#_H^"0EV+/\*/O\.HEX"2!]8+D-)+U@^#_ -MH^"0EV3/\*/O\.G3G$`)D)=AX)"77O#[[7`"09V0EU_M\.LPY@F0EU[@^Z/@ -M%/"0EU_@<`)!G9"77N#_TY0`4`)!G>20EUWP[Q20EUSPD)=@X/F0EUS@_M.9 -M0'+NE!!`)>XD\/]T`7X`J`<(@`7#,\XSSMCY_Y"79.#\H^#][%[^[5].<"N0 -MEUS@_\.4$%`V=`%^`*@'"(`%PS/.,\[8^?^0EV+@_*/@_>Q>_NU?3F`5D)=< -MX/NCX`3PD)=?X/^0EUW@;V`(D)=##GU`,D)=`DX?6"Y#22]8/N\*/O\'2$*O6"Y#0$]8/K\/\BD`1$=!'P -MHW3P\*-T#_"CY/#]=*0M]8+D-`3U@^3P#;T0\.3]=?`*[9"0`!)#7^3PH_!U -M\`KMD)`"$D-?Y/"C\'7P"NV0D`020U_D\*/P=?`*[9"0!A)#7^3PH_!U\`KM -MD)`($D-?Y/"C\'2$+?6"Y#26]8-T$_!T1"WU@N0TE?6#Y/!T0RWU@N0TE/6# -MY/#M)>`DP/6"Y#21]8/D\*/P[27@)&/U@N0TE/6#Y/"C\.TEX"3C]8+D-)3U -M@^3PH_#M)>`DH_6"Y#24]8/D\*/P[27@)&3U@N0TE?6#Y/"C\.TEX"2D]8+D -M-)7U@^3PH_!T1"WU@N0TEO6#Y/!T)"WU@N0TEO6#Y/!T9"WU@N0TEO6#Y/"0 -M0<23_G0!D_^008QT`9,O_^23/L,3_N\3_^TEX"3A]8+D-)+U@^[PH^_P=?`) -M[9"3*A)#7W0!\'7P">V0DRD20U]T`?!TP2WU@N0TDO6#=`SP=?`)[9"3)1)# -M7W3_\*/P=?`)[9"3(Q)#7^3PHW0/\'7P">V0DR<20U]T$_!U\`GMD),H$D-? -MY/!TA"WU@N0T!/6#=!/P#>UD(&`"80\BD`8T=/_PY*/PH_"C\"(BY)"7A?"B -MKS.0EU/PD`"`X"#A&A(R*Q(R*Y"74N!D`?#@)*V0`<3P=&RC\(#?D`8P=`'P -MPJ^0`(#@1(#P$D36D)=3X"3_DJ\BCA&/$HL3BA2)%>20EU+P[Y``,?`21-;E -M$50#_Y``,N!4_$_P$D36D``SX%1_\!)$UI``,^`@YPZ0EU+@PY1D4`7@!/"` -MZY"74N##E&10$)``,."K$ZH4J1420DU_`2)_`"+D]28B?PNQON]E)F`0Y2:T -M`07D]2:``W4F`7\!(G\`(N4C9`%P0+%;OP$%?P$21.:0`$;@1`3]?T821R"0 -M`$3@5/O]?T021R"0`$;@5/O]?T821R!_`K&^CR>0`_PTY0'4$?@_W0!J`<(@`+#,]C\]/^0`$;@7_`21-:0EZ7@_70! -M?@"H!0B`!<,SSC/.V/G_D`!$X/OD_N];J`4(@`;.HN<3SA/8^/^`1)"7I>`D -M^/#@_W0!J`<(@`+#,]C\$D3.D)>EX/UT`7X`J`4(@`7#,\XSSMCY_Y``0N#[ -MY/[O6Z@%"(`&SJ+G$\X3V/C_T-"2KR+DD)>=\*/PD`7XX'`/H^!P"Z/@<`>C -MX'`#?P$BTY"7GN"4Z)"7G>"4`T`#?P`B?S)^`!(R%9"7G>1U\`$20H&`QI`` -M$>!$"?`21-:0EQT20U.0@)82)0A_>'X($BL(D)3]_Q(P+)"7A^"T`1&0@&@2)10``RV5Y/U_`1(P+")_>'X($B)ED)<= -M$B4(?P1^#!(B99"7(1(E"'\`?@@2(F60ER42)0B0EX?@D)<=M`$-$D-3[U3' -M_^U4Q_V`!Q)#4^]4Q__LD("6$B4(?WA^"!(K")"7(1)#4^]4#__LD("6$B4( -M?P1^#!(K")"7)1)#4^]$`O_LD("6$B4(?P!^"!(K"']P?@X2(F60ERD2)0B0 -M@)82)10`&R6@?W!^#A(K")"`:!(E%`````#D_?\2,"R0EX?@M`$1D(!H$B44 -M`````.3]?P$2,"R0`!'@5/;P`D36D)>'X)"7+?`B[W`"(;&0ERW@8`*A?)"7 -M&1)#4Y"`EA(E"'^,?@@2*PB0EL420U.0@)82)0A_1'X($BL(D);)$D-3D("6 -M$B4(?UQ^"!(K")"6S1)#4Y"`EA(E"']L?@X2*PB0EM$20U.0@)82)0A_<'X. -M$BL(D);5$D-3D("6$B4(?W1^#A(K")"6V1)#4Y"`EA(E"']X?@X2*PB0EMT2 -M0U.0@)82)0A_?'X.$BL(D);A$D-3D("6$B4(?X!^#A(K")"6Y1)#4Y"`EA(E -M"'^$?@X2*PB0END20U.0@)82)0A_B'X.$BL(D);M$D-3D("6$B4(?XQ^#A(K -M")"6\1)#4Y"`EA(E"'_0?@X2*PB0EO420U.0@)82)0A_U'X.$BL(D);Y$D-3 -MD("6$B4(?]A^#A(K")"6_1)#4Y"`EA(E"'_9$B4(D)>9$D-3[43`_>R0EYD2)0B0EYD20U.0@)82)0A_C'X( -M$BL(D("6$B44``$``']$?@@2*PB0@)82)10`VR6D?UQ^"!(K")"`EA(E%"#; -M):1_;'X.$BL(D("6$B44(-LEI']P?@X2*PB0@)82)10$&R6D?W1^#A(K")"` -MEA(E%`0;):1_>'X.$BL(D("6$B44!!LEI']\?@X2*PB0@)82)10$&R6D?X!^ -M#A(K")"`EA(E%&/;):1_A'X.$BL(D("6$B44!!LEI'^(?@X2*PB0@)82)10@ -MVR6D?XQ^#A(K")"`EA(E%"#;):1_T'X.$BL(D("6$B44(-LEI'_4?@X2*PB0 -M@)82)10@VR6D?]A^#A(K")"`EA(E%``;):1_W'X.$BL(D("6$B44`!LEI'_@ -M?@X2*PB0@)82)10DVR6D?^Q^#A(K"'\$?@P2(F60EYD2)0B0EYD20U/D_^R0 -MEYD2)0B0EYD20U/O1!'_[)"7F1(E")"7F1)#4Y"`EA(E"'\$?@P2*PA_!'X- -M$B)ED)>9$B4(D)>9$D-3[U3P_^R0EYD2)0B0EYD20U/O1`'_[)"7F1(E")"7 -MF1)#4Y"`EA(E"'\$?@T2*PA_#'X)$B)ED)>9$B4(D)>9$D-3Y/_LD)>9$B4( -MD)>9$D-3[T01_^R0EYD2)0B0EYD20U.0@)82)0A_#'X)$BL(?PQ^"1(B99"7 -MF1(E")"7F1)#4^U4#_WL5/#\D)>9$B4(D)>9$D-3[400_>Q$`?R0EYD2)0B0 -MEYD20U.0@)82)0A_#'X)$BL(?P1^"!(B99"7F1(E")"7F1)#4^]4\/_LD)>9 -M$B4(D)>9$D-3[T0!_^R0EYD2)0B0EYD20U.0@)82)0A_!'X($BL(Y)"7+?`B -MTQ"O`?[_#3E`=09>#_=`&H!PB``L,SV/ST_Y``1^!?\!)$ -MUI"7G^#_=`&H!PB``L,SV/S_D`!&X$_P$D36D)>@X&`6D)>?X/]T`:@'"(`" -MPS/8_/^0`$6`:)"7G^#_=`&H!PB``L,SV/ST_Y``18!MD)>?X"3X\.#_=`&H -M!PB``L,SV/S$5/`21,Z0EY_@_W0!J`<(@`+#,]C\_Y``0^!/\!)$UI"7H.!@ -M&Y"7G^#_=`&H!PB``L,SV/S$5/#_D`!"X$^`&I"7G^#_=`&H!PB``L,SV/S$ -M5/#T_Y``0N!?\!)$UM#0DJ\BBQ&*$HD3D``"$D(@D)<[\.`PX$N0ES)T`?!_ -M@'X($B)ED)D`!'X%3S_7]'$D<@D`!(X%3S_7]($D<@D`!&X%3O_7]& -M$D<@Y)"7./`BY/U_11)'()`$_>3PH_"0ESSPD)="\)"71?"0ET/PD)=&\)"7 -M1/"0ET?PD)!$P/U_40)'()"73.!D`6`)D)`$\(`DD)=#X,.4 -M_U`&X`3PY(`1D)=$X,.4_U`,X`3PY)"70_"0ET+PD`!$X##C,I"71>##E/]0 -M!>`$\(`DD)=&X,.4_U`&X`3PY(`1D)='X,.4_U`,X`3PY)"71O"0ET7PD`3] -MX$0!\"*0``(20B"0ESKPD``!$D(@)>`EX)"7.?`2)&(EX"7@D)<]\)`%8."0 -METCPD`5AX)"72?"0!6+@D)=*\)`%8^"0ETOPHJ_D,Y"77?#"KY"7.>#_$DIB -MD)==X"3_DJ^0ESK@<`(AB9"7.>!P`B&)D)<]X'`"(8FBK^0SD)==\,*OD)=, -M=`'PD)==X"3_DJ\21Q>0`$;@1`']?T821R"0ES+@8!60ESX20U.0@)82)0A_ -M@'X($BL(@`:0!2)T?_"0`$7@5._]?T421R"0!8?@9(#PD)=(X)`%A/"0ETG@ -MD`6%\)"72N"0!8;PD)=+X)`%A_"BK^0SD)==\,*OD`$\X$0@\'T@Y/\2,;>` -M+9"7.N!P+Y"73!)'%I``1N!4_OU_1A)'()`%(N3PHJ\SD)==\,*O?2#D_Q(Q --29"77>`D_Y*O(@"'%P`` +MZ?`BT(/0@OCDDW`2=`&3<`VCHY/X=`&3]8*(@^1S=`*3:&#OHZ.C@-_0@]"" +M^.23`OD(L^\.3[_7]4 +M?@$22VR0`5=T!?#E(E0/PY0$4`=]`7\$$D6BD(LLX##@"1)]P9`%(G3_\"+D +M]27U)'4C#'4B#)"+&O"0BQCPD(L7\)"+&03PD(L+\.20BQOPD(L-\)"+%70% +M\.20BPSPD(L3\*-T`_"0BQ#PHW0%\)"+#W04\)"+%G0%\.20BP[PD(L*\)"+ +M"/"0BQ+P(G\`(@)%`P)%!HYDCV6M9:QDKV,22ENO9:YDD`2`X%0/_:P'=!$L +M]8+D-/SU@^!$`?!T$2SU@N0T_/6#X%3[\*P'=!8L]8+D-/SU@^!$^O!T%2SU +M@N0T_/6#X$0?\*P'=`8L]8+D-/SU@^!$#_"0!%/D\)`$4O"0!%%T__"0!%!T +M_?!T%"SU@N0T_/6#X%3`3?UT%"_U@N0T_/6#[?`B?0%_#-,0KP'#P-"/9XUH +MY6=4#__E(E0/;V!RY6]@4Q)* +MS(!.Y2(@XTGE9S#C1*]H$DI\@#WE(E0/_[\,#N5G(.,)$DG5[V`J$DK,Y2)4 +M#_^_!`[E9R#B"1))D^]@%!)*,N4B5`__OP()$D4`[V`#$DL0T-"2KR("1FX" +M4,;DDZ/XY).C0`/V@`'R"-_T@"GDDZ/X5``ON4A9`%P9^4D +M8&/E)&0"8`;E)&0%<">0!JO@D(L+\)`&JN"0BQGPD(L+X'`'D(L9X/^`!9"+ +M"^#_D(L+[_"0BPW@8`+D\.20BPSPD`58=`/PD`%7Y/"0`3QT`O!3)?U3)>_E +M)!0D_5`"@`,21XXB[V0!<#5]>'\"$C$L?0)_`Q(Q+)`!5^3PD`$\=`+P$D6> +MD(LLX##@`Q)]P9`&!.!4?_"0!@K@5/CP(I`!-G1[\*-T`O!]>_\2,9U]`G\# +M$C&=D`8$X$2`\)`&"N!$!_`22T_E(2#@!>20BPWP(N20BL7PD`:IX)"*Q?#@ +M5,!P"5,E_E,E_1)*_)"*Q>`PYA5#)0&0BQK@9`)@!1)*EX`($DE)@`-3)?Z0 +MBL7@,.`*9"*WA)#:Y```A)"(/U_`1)*!Q^`%)"*WA)#:Y`` +M`A)"(/U_`A)*!^3_$D3P4R7]Y254!W`X@#.0 +MBPS@!/!3)>^0BLO@_Y"+$.`O_^0S_I"+#.#3G^YD@/AT@)A`#>4AM`$+H^!P +M!^`$\"(22OPBTQ"O`Y)"+/?"0BP_@D(L^\.3[_7]8?@$22VR0`5MT!?"0!I)T +M`?"0BQCP(N4B5`_#E`10!WT!?P021:(BD`%?Y/"0`3QT"/#DD(L]\)"+#^"0 +MBS[PY/O]?UQ^`1)+;)`!7W0%\)`&DG0"\)"+%Q3PY2)4#\.4#%`-$D6>D(LL +MX##@`Q)]P2(22S3O9`%P-^4E5`-P,>4C5`_3E`)0*.4E(.(CY24@Y!Z0BPW@ +M3_$DBS4R+P0R(,(I`$ +M'>!P%)"*^.#_Y/T27_V.:8]JD`0?="#P(I"+4N_P$GU"D(M2X&`%D`4BY/!3 +M(O!#(@0BD`8$X$1`\.4AM`$%?P$22+-3(O!#(@0BY2,PYA+E(U0/_Y`!+^!4 +M@$]D@/!3([\BD(LLX##@!:\C`GX&?0&O(Q)%HB)3(O!#(@$22UH22UM3(O!# +M(@(B08KV`$&+!0!!BU$`08M3``"0!!O@5']D?W\!8`)_`"+DD(L;\)"+#/#U +M)2*0BQ/@H^"0!5CP(B(B\)"+#^"0BS[PY/O]?UA^`=,0KP'#P-"0BSW@^Z/@ +M]43D]442,&+0T)*O(L#@P/#`@\""P-!UT`#``,`!P`+``\`$P`7`!L`'=0X` +MD`'$=(?P=$NC\%.1WY`!/.!5,/4TH^!5,?4UH^!5,O4VH^!5,_4WY30PX%&0 +M`3QT`?"0BS+@,.`?$Q-4/S#@&)"+-.3PD(LSX&0#8`M_`;'@[W`$?P+1B9"+ +M+.#_,.`=$Q-4/S#@%I"++N3PD(LMX&0&8`GD_['@[W`"T5;E-##A")`!/'0" +M\!%@Y30PXBB0`3QT!/"0!I+@,.`4D(L]Y'%0BQCD +M\%'\Y30PXSB0`3QT"/"0!I+@,.$DD(L]Y/"0BP_@D(L^\.3[_7]#O8`1_`=&)D(LLX##@29"+,.3P_['@[V`^$F5?D(LMX/]D!F`R +M[[0$`H`'D(LMX+0%!.3_@!20BRW@M`,$?P&`"9"++>"T`@5_`1)E@GT!KR,2 +M1:(2?<'E-C#A1Y`!/G0"\)"+,N`PX!F0BS9T`?"0BS/@9`-@"W\!L>#O<`1_ +M`M&)D(LLX##@&I"+,'0!\!)^*Y"++>!D!F`)Y/^QX.]P`M%6=(<$D`'$\'1+ +MH_#0!]`&T`70!-`#T`+0`=``T-#0@M"#T/#0X#+O9`%P/9"+->!@`W\`(I"+ +M".!@`W\!(I"+-.!@`W\!(I"+,N#_$Q-4/S#@"^_$$U0',.`#?P`BD(LVX'\! +M8#9_`"*0BR_@8`-_`"*0BPC@8`-_`2*0BR[@8`-_`2*0BRS@$Q-4/S#@`W\` +M(I"+,.!_`6`"?P`BD(L-X&`6D(LMX'`$?P6`'Y"++>!D`7`:?P*`$Y"++>"T +M`01_`X`(D(LMX'`%?P0298(BTQ"O`"T`@3QK^%5D(M5X+0$!/'&X560 +MBU7@9`%P??&Q@'F0BU7@_[0#!/'*@&WOM`($\:&`99"+5>#_M`0$\=6`6>]P +M5O&.@%*0BU7@M`,%$GQ!@$:0BU7@M`$$\7*`.Y"+5>"T!`42?2.`+Y"+5>!P +M*?%P@"60BU7@_[0!!/%:@!GOM`($\6N`$9"+5>#_M`0$\5J`!>]P`O%GT-"2 +MKR*0!2)T;_"0BS-T`_`B\8Z`[Q)]0H#J\8Z0!2)T__`2?IKO<`:0`UP!/[_@`1^`7\`[RWN/'T`_(`U[%0!37`$_O^`!'X"?P#O+>X\ +MPQ-]`(`:[%0#37`$_O^`!'X$?P#O+>X\$Q-4/WT`)>`EX/RN!*\%(I`!Y'18 +M\*-T`O`BY)"*S/"C\'6.`I$.$FA$D(L'[_`2:%&0BPGO\!)H79"*].[PH^_P +MY/55]2$255,.;9`%P +M.W%.OP$$?P%Q0I``1N!$!/U_1C&(D`!$X%3[_7]$,8B0`$;@5/O]?T8QB'\" +M<6J/8I`!R>5B\+0!`E'B(N!?\-,0KP'#P-!_$-_^T-"2KR+3$*\!P\#0D(K@ +M[?"0BM_O\-.4!U!.H^!P&I"*W^#_=`&H!PB``L,SV/ST_Y``1^!?\(`7D(K? +MX/]T`:@'"(`"PS/8_/^0`$?@3_!1#I"*W^#_=`&H!PB``L,SV/ST_Y``1H!9 +MD(K?X"3X\*/@Y/U_`E$><4[D_W%"Y/5BD`')Y6+PD(K=X/RCX/WL^XU$ +MY/5%?0%_8'X!`C!BD`'*Y6'P[V`"4>(B?PMQ:N]E86`0Y6&T`07D]6&``W5A +M`7\!(G\`(M,0KP'#P-"0BU?O\-.4!U!#X/]T`:@'"(`"PS/8_/3_D`!&40N0 +MBU?@_70!?@"H!0B`!<,SSC/.V/G_D`!$X/OD_N];J`4(@`;.HN<3SA/8^/^` +M2Y"+5^`D^/#@_W0!J`<(@`+#,]C\]/^0`$/@7_!1#I"+5^#]=`%^`*@%"(`% +MPS/.,\[8^?^0`$+@^^3^[UNH!0B`!LZBYQ/.$]CX_]#0DJ\BY)"+!/"0`(#@ +M1(#]?X`AB-,0KP'#P-"0BMH20XN0BMH20VN0``$20L+ZY?`D`/_D.OZ0BMH2 +M0VN0``'NC_`20QD2)&+_8"RU7A:0BMH20VN0``$20L)E8'`$Y5]E\&`BD(K: +M$D-KD``!$D+"_Z[P<0"`#Y"*VA)#:Q(D8F5>8`*1E=#0DJ\BY/5>?V!^`8^" +MCH.CHZ/D\"*0BM<20XOO$D.45.(&0BM<20VL">L*0BM<20VL"?"N0 +M`<;@1`'P(M,0KP'#P-"0`!U\`20`=`20U_@D(K0\'4=`74>BG4?T'4@ +M`7L!>HIYT1)>Y)"*T>#_Q!,3$U0!D(M1,.!9X'7P`I``B!)#7^"0BM+PD(M1 +MX'7P`I``B1)#7^"0BM/PD(M1X'7P!)`!T1)#7^"0BM3PD(M1X'7P!)`!TA)# +M7^"0BM7PD(M1X'7P!)`!TQ)#7^"0BM;P@#/@=?`$D`'1$D-?X)"*TO"0BU'@ +M=?`$D`'2$D-?X)"*T_"0BU'@=?`$D`'3$D-?X)"*U/#O5'__>P%ZBGG2D::0 +MBL_@_Y"+4>#^=`&H!@B``L,SV/ST7Y"*S_"0BU'@_W0!J`<(@`+#,]C\D`', +M\)"+4>`$\.!4`_"A:I`!QN!$`O#0T)*O(I``!!)"(/]4'_[O5"#$$U0'_:\& +MD(K:[_"C[?"C$D.+D(K<$D-KD``#$D(@5/#$5`^0BM_PD``$$D(@5$#$$Q-4 +M`Y"*X/"0BMK@_W7P"9"')1)#7ZV"K(.0BN'L\*/M\.]U\`FD)"/Y=(\20E^0BMP20VN0``$20B#_D(KAX/RCX/WU@HR#[_`2)&*-@HR# +MH_"0BM_@_I"*VN#_),'U@N0TAO6#[O"0BMO@_G7P">^0ARD20U_N\'7P">^0 +MARH20U]T`?"0BN#@_G7P">^0ARL20U_N\(\/[R7@).3U@N0TB:^"]1"/$>4/ +M=?`"I"2!^72&-?!U$@'U$XD4=?`)Y0^0AR420U^O@H6#%8\6Y0]U\`FD)"/Y +M=(`D@?6"Y#2&]8-T#_"C=(_P(:?E#R7@).3U@N0TB?6# +M=`_PHW3U@"?E#R7@).3U@N0TB?6#=`_PHW3P@!+E#R7@).3U@N0TB?6#Y/"C +M=`WPY0\EX"2!]8+D-(;U@^3PH_`AIY`$1^"K$JH3J1020DV0!$;@JQ*J$ZD4 +MD``!$D)?D`1%X(41@H40@_"0!$0AGI`$2^"K$JH3J1020DV0!$K@JQ*J$ZD4 +MD``!$D)?D`1)X(41@H40@_"0!$B`6)`$3^"K$JH3J1020DV0!$[@JQ*J$ZD4 +MD``!$D)?D`1-X(41@H40@_"0!$R`*Y`$4^"K$JH3J1020DV0!%+@JQ*J$ZD4 +MD``!$D)?D`11X(41@H40@_"0!%#@A1&"A1"#H_"K$JH3J13``\`"P`$2)&+_ +MJQ>J&*D9$B1B7]`!T`+0`Q)"3:L2Y10D`?GD-1/ZP`/``L`!$B1B_ZL7JABI +M&9```1)"(%_0`=`"T`,20DV%$8*%$(/`@\""X/^%%H*%%8/@_N]>T(+0@_"% +M$8*%$(.CP(/`@N#_A1:"A16#H^#^[U[0@M"#\.4/)>`D@?6"Y#2&]8/@_J/@ +M3F!+D(KF=`OPD(KFX/_#E`!0`D'L=`%^`*@'"(`%PS/.,\[8^?_E#R7@)('U +M@N0TAO6#X%[^H^!?3F`*D(KFX"00H_"`:)"*YN`4\("[Y0\EX"3D]8+D-(GU +M@^#^H^!.8$>0BN9T#_"0BN;@_\.4`$`\=`%^`*@'"(`%PS/.,\[8^?_E#R7@ +M).3U@N0TB?6#X%[^H^!?3F`(D(KFX*/P@`V0BN;@%/"`O^20BN?PY0\EX"3D +M]8+D-(GU@^#^H^!.8$;DD(KF\)"*YN#_PY000`)AI70!?@"H!PB`!<,SSC/. +MV/G_Y0\EX"3D]8+D-(GU@^!>_J/@7TY@!I"*YN"`8Y"*YN`$\("_Y0\EX"2! +M]8+D-(;U@^#^H^!.8$;DD(KF\)"*YN#_PY0,4#QT`7X`J`<(@`7#,\XSSMCY +M_^4/)>`D@?6"Y#2&]8/@7OZCX%].8`B0BN;@)!"`"9"*YN`$\("_Y)"*Z/"0 +MBN?@_W7P">4/D(4/D(0AR)T`?`BY)"'(O`BTQ"O`0BL7@)0W_H_"CX)!!GI/^[].>0!!T`2SU@N0TAO6#Y/"O!("=D(K& +MX/]T`2SU@N0TAO6#[_`BK0=U\`GMD(`D+O6" +MY#1!]8-T`9,K_^23.L,3_N\3_^TEX"3A]8+D-(;U@^[PH^_PKP60BLG@_9%. +MD(K)X/\BK`=TA"SU@N0T!/6#X%1_D(K>\.!4'_^0BN'P=?`)[)"'*!)#7^"0 +MBN/P=?`)[)"')Q)#7^#^D(KD\.PEX"3D]8+D-(GU@^#[H^"0BN7+\*/K\.PE +MX"2!]8+D-(;U@^#[H^"0BN?+\*/K\._3GD`,D(KDX)"*X?"0BM[P[7`"P9.0 +MBN+M\)"*WN`PY@Z0BN'@D(K>\)"*XN`4\)"*XN!P`L&3D(KAX/_3E`!0`L&3 +MY)"*X/#O%)"*W_"0BN/@_9"*W^#_TYU`;^^4$$`A[R3P_W0!?@"H!PB`!<,S +MSC/.V/G_D(KGX%[^H^!?3G`GD(K?X/_#E!!0-W0!?@"H!PB`!<,SSC/.V/G_ +MD(KEX%[^H^!?3F`:D(K?X)"*WO"0BN#@!/"0BN+@_Y"*X.!O8`B0BM_@%/"` +M@Y"*XN#_D(K@X,.?4`^0BM_@M04(D(KCX)"*WO"0BM[@_R7@)&;U@N0T0?6# +MY)/Z=`&3^^\EX"0N]8+D-$'U@W0!DRO_Y),ZPQ/^[Q/_["7@).'U@N0TAO6# +M[O"C[_"O!)"*WN#]D4Z0BM[@_R+3$*\!P\#0BQJ*&XD@%YH-'DD(M($D-KBQV*'HD?D(M%$D-K$B1B +M_\14#_4@>P%Z`7FBT>20`:]T__"0`@!Y5I"+2!)#BPMZBGG%X3/3$*\!P\#0D`'$=,7P=%^C\)`$'>!@&I`% +M(N!4D&`'D`'&X$1`\)`!Q^`PX>1_`(`"?P'0T)*O(M,0KP'#P-#D^_KO,.`" +M>X#OPQ.0_1#PD`0E[_#M8!ZO`W0/+_6"Y#3\]8/@1(#P=!`O]8+D-/SU@^!$ +M@/"O`W0(+_6"Y#3\]8/D\'0)+_6"Y#3\]8/@5/#P="$K]8+D-/SU@^!4]_"N +M`J\#T-"2KR(27\6_`1"0`@G@_WT!$E_]D`0?="#P(I`!`N!4`__@5`P3$U0_ +M_N]D`6`$[[0##I"*Q70!\*-T-_!Y`8`8[F0!8`>O!NYD`W`[D(K%=`'PHW0] +M\'E`D(K%X/ZCX/_U@HZ#X%E@".GPY)"*]O`BD(KVX`3PX,.4"D`+Y/"0!!G@ +M,.`"$6TBP.#`\,"#P(+`T'70`,``P`'``L`#P`3`!<`&P`>0`<1T\O!T8*/P +MD`$TX%4H]2RCX%4I]2VCX%4J]2ZCX%4K]2_E+"#@`D&)D`$T=`'PA=%-A=). +MA=-/A=10A=51A=92A==3A=E4Y5140,,3_^535"!O<`)!1N54,.4"04;E4E0? +M]0CE350_]0GE450?_^4()>`DX_6"Y#2(]8/DC_`20H'E4U0?_^4()>`DP/6" +MY#2%]8/DC_`20H'E"=.4!$`#=0D$=?`*Y0B0A``20U]U\`+E"1)#7^#^H^#_ +MY5-4'R__Y#[^=?`*Y0B0A``20U]U\`+E"1)#7^[PH^_PY50@YB3E4U0?_^4( +M)>`D8_6"Y#2(]8/DC_`20H'E3S#G-J\($ES#@"_E4U0?_^4()>`DH_6"Y#2( +M]8/DC_`20H'E3S#G$N5/5'_]Y5-4'_4-JPFO"!)<9N4D%"3]4`*`.I"+&N!@ +M*Y`!6^3PD`$\=`3P$DLT[V0!<"&0BST22UR0`5MT!?"0!I)T`?"0BQCP@`D2 +M2S2_`0,22OSE+##A(9`!-'0"\(715H725X736(7468756H766X777(7971)? +MI.4L,.,&D`$T=`CPY2PPY`F0`31T$/!#51#E+##E)I`!S^`PY1_@5-_PD`$T +M="#P=:@`=>@`$E&=D``#X%3[\!)2#H#^Y2PPYBV0`31T0/"0BS+@,.`,$Q-4 +M/S#@!9"+-.3PD(LLX/\PX`P3$U0_,.`%D(LNY/#E+B#@`F'FD(L(=`'PD`$V +M\)"+!N!@#^3PD`53X$0"\)`%_.`$\)"+,N`PX"^0BS=T`?"0BS+@_Q,35#\P +MX!V0BS1T`?"Q.9"+,^!D`V`-?P$23>#O8`5_!!).B9"++.#_,.!5$Q-4/S#@ +M3I"++G0!\+$YY/\23>#O8#ZQ7Y`%(G3_\)"++>#_9`9@+>^T!`*`!Y"++>"T +M!03D_X`4D(LMX+0#!'\!@`F0BRW@M`($?P&Q@I`%(G3_\!)#YY"+".3PY2XP +MX2^0`39T`O!#54`1A)"+-^"T`0F0!2+D\)"+-_"0BRS@,.`-Y/\23>#O8`60 +M!2+D\.4N,.(6D`$V=`3PD(LLX##@!J/@9`9@`Q)&L^4N,.,XD`$V=`CPY2%D +M`7`LY21@*)`!5^3PD`$\=`+PD(L]Y/"0BQ'@D(L^\.3[_7]4?@$22VR0`5=T +M!?#E+C#D*Y`!-G00\.4AM`$@Y21@')`!5^3PD`$\=`+PD(L;Y/!3)?WE)50' +M<`,22OSE+C#E'Y`!-G0@\.4AM`$4Y21@$)"+&N!D`F`%$DJ7@`,224GE+C#F +M&Y`!-G1`\.4AM`$0Y21@#%,E_N4E5`=P`Q)*_.4O,.$HD`$W=`+PD(LLX##@ +M&.3_$DW@[V`($DC^$GW!@`N0BS%T`?"``Q)(_G3R!)`!Q/!T8*/PT`?0!M`% +MT`30`]`"T`'0`-#0T(+0@]#PT.`RY)"+/?"0!5C@_Y"+..`O)/Z0BS[PY/O] +M?U!^`1)+;)`!4W0%\"*0BRS@_\03$U0#,.`*H^!D!F`$?P:Q@I"++>!D!F`# +M$G@U(M,0KP'#P-"0BRW@_F]P`N%.[Q)#E&6P`&7J`68P`F9J`V:B!&;;!6<6 +M!@``9T[NM`0&?P'Q@>%.D(LMX/^T!03Q7>%.[[0&!G\!\7*`%I"++>"T`P9_ +M`?%3@`F0BRW@M`("\6?QI.%.D(LMX+0$!G\!\8&`"9"++>"T!0+Q79"++>!P +M!/&:X4Z0BRW@_K0&!G\!\7+A3NZT`P9_`?%3X4Z0BRW@9`)@`N%.\6?A3I"+ +M+>"T!`9_`?&!@`F0BRW@M`4"\5V0BRW@<`3QFH`6D(LMX/ZT!@9_`?%R@`CN +MM`,$?P'Q4_'0X4Z0BRW@M`0&?P'Q@8`)D(LMX+0%`O%=D(LMX'`$\9J`%)"+ +M+>#^M`8&Y/_Q#^M`8&Y/_Q"T`@+Q9Y"++>"T`03QI(`)D(LMX+0%`O%=\:^`#^M`8&Y/_Q +M"T`@+Q9Y"++>"T`03QI(`+D(LMX+0$!'\!\8'Q +MPX`XD(LMX+0$!G\!\8&`"9"++>"T!0+Q79"++>!P!/&:@!:0BRW@M`,&Y/_Q +M4X`)D(LMX+0"`O%G\=W0T)*O(A)*LI"++70!\"*0!2+D\)"++?`BD`4BY/"0 +MBRT$\"+O8`60!2+D\)"++70!\"*0BU;O\!)]0I"+5N!@!9`%(N3PY)"++?`B +M$DK,D(LM=`'P(G\!$DI\Y)"++?`B$GQ*D(LM=`3P(A)*,I"++70#\"*0!2)T +M__"0BRUT!?`BD`4B=/_PD(LM=`+P(I`%(G1O\)"++70&\"+3$*\!P\#0Y/W\ +M[S#@`GV`[\,3D/T0\*X$KP70T)*O(G4H,^3U*74J!_4KD`$PY2CPH^4I\*/E +M*O"CY2OP(G4P'W4Q`4,Q$.3U,I`!..4P\*/E,?"CY3+P(B*0``+@5.!_`6`" +M?P`BD`#SX'\`,.,"?P$BD(L)X+0!#)``\N`PYP5^_7\S(G[]?R\BD`#SX##B +M#9`%0700\)`%6O"CY/`BD`%D=*#P(L#@P(/`@L#0==``P`7`!L`'?9&0`<3M +M\'1H_Z/P4Y'OD`!1X/Z0`%7@7O4]D`!2X/Z0`%;@7O4^Y3TPY`:0`%5T$/#E +M/3#E!I``570@\.4],.8&D`!5=$#PY3TPYP:0`%5T@/#E/C#@!I``5G0!\.4^ +M,.$&D`!6=`+PY3XPX@:0`%9T!/#E/C#C!I``5G0(\)`!Q.WPH^_PT`?0!M`% +MT-#0@M"#T.`R[\.4(%`Y[S#@%^W$5/#][\,3_B2D]8+D-`3U@^!4#X`0[\,3 +M_B2D]8+D-`3U@^!4\/!TI"[U@N0T!/6#X$WP(JT'=(0M]8+D-`3U@^!4?Y"* +MWO#@^50?H_!U\`GMD(`DX?6"Y#2&]8/J\*/K\.[#GT`"0;F0BM_@_W2E+?6"Y#2*]8/O +M\.\$D(K@\)"*X>#_D(K@X/[3GT`"0?/NPY000"'N)/#_=`%^`*@'"(`%PS/. +M,\[8^?^0BN+@7OZCX%].<">0BN#@_\.4$%!9=`%^`*@'"(`%PS/.,\[8^?^0 +MBN3@7OZCX%].8#R0BN#@M!$-D(KCX##G!I"*X'07\)"*X.#_9!-@!.^T$@V0 +MBN+@,.`&D(K@=!CPD(K@X)"*W_"0BM[P@$*0BN#@!/!!%Y"*X>#\D(K?X/]L +M<'%TI2WU@N0TBO6#[_!U\`GMD(D(KAX/]TI2WU@N0T +MBO6#[_"0BM_O\)"*WO#\H^#_)>`D9O6"Y#1!]8/DD_IT`9/[[R7@)"[U@N0T +M0?6#=`&3*__DDSK#$_[O$__M)>`DX?6"Y#2&]8/N\*/O\*\$(G0!+?6"Y#2& +M]8/D\*\%D(K>X$2`_1)<3I"*WN!$@/\BY)"*S_"0BL_@_\.4($`#`G)4=?`) +M[Y"'*A)#7^!D`6`#`G)+D(K/X"7@),#U@N0TA?6#X/RCX-.4`.R4`%`#`G)+ +M[W7P"J0D`/ETA#7P=1(!]1.)%)"*S^`EX"3`]8+D-(7U@^#]H^"0BM3-\*/M +M\.\EX"1C]8+D-(CU@^#_H^"0BM;/\*/O\)"*S^#^)(3U@N0T!/6#X%0_D(K0 +M\.#]5!^C\'7P">Z0AR<20U_@D(K9\)"*S^#[)&3U@N0TBO6#X,.4!4`"P9R0 +MBMG@_I"*T>">0!.0BMG@D(K1\.U40/V0BM#P[DWPD(K1X/^001*3_G0C*_6" +MY#2)]8/@PYY`!N^00-J`!Y"*T>"00/:3D(K8\)"*V.!U\`:D)%#Y=$`U\'4/ +M__40B1&0BM#@D$&ZD__3D(K7X)^0BM;@E`!`#9"*S^#_Y/T274$"<>&0BL_@ +M)>`DX?6"Y#2&]8/@_Z/@D(K2S_"C[_"K#ZH0J1$2)&+_?@"K$JH3J1020I?] +MK/`2)'N0BM+NC_`20H&K#ZH0J1&0``$20B#_?@"K$JH3J120``(20L+]K/`2 +M)'N0BM+NC_`20H&K#ZH0J1&0``(20B#_?@"K$JH3J120``020L+]K/`2)'N0 +MBM+NC_`20H&K#ZH0J1&0``,20B#_?@"K$JH3J120``820L+]K/`2)'N0BM+N +MC_`20H&K#ZH0J1&0``020B#_?@"K$JH3J120``@20L+]K/`2)'N0BM+NC_`2 +M0H&K#ZH0J1&0``420B#_?@"0BM3@_*/@_1(D>].0BM/@GY"*TN">0`RCX)_P +MD(K2X)[P@`?DD(K2\*/PD(K2X/RCX/V0BL_@_R7@).'U@N0TAO6#[/"C[?"0 +MBM#@)>`D+O6"Y#1!]8/DD_IT`9/[T^V;[)I`!3%X`G&OD(K0X"7@)&;U@N0T +M0?6#Y)/^=`&3_\.0BM/@GY"*TN">0`,"<:^0BL_@_WT!$EU!`G&OD(K/X/\D +M9/6"Y#2*]8/@_&0%8`,"<'V0AR+@_K0#"Y"*T>##E!E`/8`N[K0""Y"*T>## +ME!%`+H`?D(##E`-`#9")0W0!\(`% +MY)")0_"0BL_@_B1#]8+D-(CU@^"0BMWP=",N]8+D-(GU@^#^PY0P4`ODD(K= +M\'1D+P)P*)")0^!D`6`#`G`=D(K/X"1$]8+D-(GU@^!D"F!;D(K/X/_N)`7[ +MY#/Z="$O]8+D-(;U@^#_TYOJ9(#X=("84#B0BL_@_N\D!?OD,_IT(R[U@N0T +MB?6#X-.;ZF2`^'2`F%`6D(K/X"2$]8+D-(KU@^#_D(K1X&]@5I"*S^`D(_6" +MY#2)]8/@_].40D`(D(K==`7P@!'OTY0YD(K=0`5T`_"``W0!\)"*S^#_)"/U +M@N0TB?6#X/YT(2_U@N0TAO6#[O"0BL_@)$3U@N0TB8`OD(K/X/\D9/6"Y#2* +M]8/D\'1$+_6"Y#2)]8/@!/"`%.20BMWPD(K/X"1D]8+D-(KU@^3PD(K1X/Z0 +MBL_@_R2$]8+D-(KU@^[PD(K=X/YT0R_U@N0TB/6#[O!U\`GOD(20BMWP=&0O]8+D-(KU@^3PD(K=X/TAK.QD!F`"(:^0BM+PH_"00=N3_WX` +MD(K4X/RCX/T2)'N0BMON\*/O\)"*S^`D0_6"Y#2(]8/@D(K=\.20BMKPD(K: +MX/_3E`101ZL2JA.I%'7P`N^D]8*%\(,20L+]K/#OD$'6D_]^`!(D>Y"*TNZ/ +M\!)"@9"*V^#^H^#_TY"*T^"?D(K2X)Y0")"*VN`$\("OD(K:X,,3\)"*W>#_ +MM`$-D(K:X'!=D(K=!/"`6^^T`QV0BMK@_W`(D(K==`/P@$COM`$(D(K==`'P +M@#R`-9"*W>!D!7`RD(K:X/]P")"*W70%\(`/[Y"*W;0!!70#\(`#=`'PTY"* +MU^"4`Y"*UN"4`$`%Y)"*W?#3D(K7X)0#D(K6X)0`0`7DD(K=\)"*W>#]D(K/ +MX/\D0_6"Y#2(]8/M\!)I.)"*S^#_)&3U@N0TBO6#X-.4!5`/=&0O]8+D-(KU +M@^`$\(`/D(K/X"1D]8+D-(KU@^3PJQ*J$ZD4Y/7P$D+ZJQ*J$ZD4D``"Y/7P +M$D,9D``$Y/7P$D,9D``&Y/7P$D,9D``(Y/7P$D,9D(K/X/\EX"3`]8+D-(7U +M@^3PH_#O)>`D8_6"Y#2(]8/D\*/P[R7@)*/U@N0TB/6#Y/"C\)"*S^`$\`)K +MPB+DD(K/\)"*S^#_PY004!1TI"_U@N0T!/6#Y/"0BL_@!/"`XN20BL_PD(K/ +MX/_#E"!``H$.=?`*[Y"$`!)#7^3PH_!U\`KOD(0"$D-?Y/"C\'7P"N^0A`02 +M0U_D\*/P=?`*[Y"$!A)#7^3PH_!U\`KOD(0($D-?Y/"C\'2$+_6"Y#2*]8-T +M$_!T1"_U@N0TB?6#Y/!T0R_U@N0TB/6#Y/#O)>`DP/6"Y#2%]8/D\*/P[R7@ +M)&/U@N0TB/6#Y/"C\.\EX"3C]8+D-(CU@^3PH_#O)>`DH_6"Y#2(]8/D\*/P +M[R7@)&3U@N0TB?6#Y/"C\.\EX"2D]8+D-(GU@^3PH_!T1"_U@N0TBO6#Y/!T +M)"_U@N0TBO6#Y/!T9"_U@N0TBO6#Y/"008R3_G0!D_^0051T`9,O_^23/L,3 +M_N\3_Y"*S^#])>`DX?6"Y#2&]8/N\*/O\'7P">V0ARD20U]T`?!TP2WU@N0T +MAO6#=`SP=?`)[9"')1)#7W3_\*/P=?`)[9"'(Q)#7^3PHW0/\'7P">V0AR<2 +M0U]T$_!U\`GMD(TND(KW\)```1)"(/_M+Y"*^/"0``(20B#_[2^0BOGP +MD``#$D(@_^TOD(KZ\)``!!)"(/^N!>TOD(K[\"+3$*\!P\#0D(K:$D.+Y)"* +MW?`2)&+#$R#@`L'MD(K:$D-K$B1B_U0"_I"+,N!4_4[^\.]4`?_N5/Y/__`2 +M)&+^5`C][U3W3?^0BS+P[E00_N]4[T[_\!(D8OY4(/WO5-]-_Y"+,O#N5$#^ +M[U2_3O`@X`+!V9"*W70A\)"*VA)#:Q(D8O\3$U0!_I"+,N#]$Q-4`6Y@*N]4 +M!/_M5/M/\.`3$U0_,.`.D`$T=$#P_>3_$C&=@`ODD(LT\'U`_Q(Q+)"+,N#] +M$Q,35!\PX`>0BMW@1!+P[<14#S#@!Y"*W>!$%/"0BS+@Q!-4!S#@!Y"*W>!$ +M@/"0BS+@Q!,35`,@X`>0BMW@1$#PD(K=X)`%)_"0BS/@<`5_`1).B9"+,N#$ +M$Q-4`S#@!'\#@`Y_`1)-X.]@!'\!@`)_`A).B7\"`G@ND(K==`'PD`4G\.3_ +M$DZ)?P,">"Z0BMH20VL2)&+_5`+^D(LLX%3]3O[P[U0!_^Y4_D__\!(D8OY4 +M"/WO5/=-_Y"++/#N5!#^[U3O3O_P$B1B_E1`_>]4OTW_D(LL\.Y4!/[O5/M. +M\"#@`N'BD(K==#'PD(LLX!,35#\@X`ODD(LN\'U`_Q(Q+)"++.#]$Q,35!\P +MX`>0BMW@1`+P[<14#S#@!Y"*W>!$!/"0BMW@5`9@#)`!/G0#\/U_`A(QMY"* +MW>"0!2?PD(LLX/_$$Q-4`S#@#:/@9`9@+'\&$F6"@"60BRW@M`8;?P$298+D +M_Q)-X.]@"7T!KR,21:*`!1).5H`#$GW!?P&`3)"*W70!\)`%)_!]`W\"$C%) +MD(LMX+0&`H`;D(LMX+0$`H`'D(LMX+0%!.3_@!20BRW@M`,$?P&`"9"++>"T +M`@5_`1)E@A$U$DK\?P,10M#0DJ\BD(LQX+0!!>3P$DC^(JT'[V0!8`3OM`,5 +MD(LRX%3^\%3[\.2C\*/PH_"C\*/P[60"8`3MM`,5D(LLX%3^\%3[\.2C\*/P +MH_"C\*/P(A(D8I"+./`BTQ"O`"0BNCPD(K^X/^CX)"*Z<_PH^_P +MY)"*Y/"0BN3@_R0`]8+D-(OU@^#^=.LO]8+D-(KU@^[PD(KDX`3PX+0$VI"* +MZ.`20Y1X^`!Z:P%Y`0)Y`0-Y`01Z:P5Z-8!Z3H%Z:X(``'IGD(KNX/]1.20BN3P +MD(KEX/^0BN3@PY]``D%KD(KIX/ZCX/_#[I0!D(KDX%`?_B__[OW#=`.=_>24 +M`/QTZRWU@G2*//6#X/T248B`*__]PW0#G?WDE`#\=.LM]8)TBCSU@^#^[_V0 +MBNK@+?V0BNG@-`"-@O6#[O"0BN3@!/"`C<.0BNG@E!!``D%KD(KHX&0$8`)! +M:Y"*[.#_Y/S]_G@0$B3UP`3`!<`&P`>0BNO@_^3\_?YX&!(D]=`#T`+0`=`` +M$D-&P`3`!<`&P`>0BNW@_^3\_?YX"!(D]=`#T`+0`=``$D-&J`2I!:H&JP>C +MX/_D_/W^$D-&HQ(E")"*[Q)#4Y"`EA(E")"*Z>#^H^#_$BL(@#:0BNW@_J/@ +M)`#_Y#[^D(KF\*/O\!(R%8`=D(KMX/ZCX"0`_^0^_I"*YO"C[_`2,8*`!'\` +M@`)_`=#0DJ\BCP_DD(KS\.4/%/Z0BO/@_\.>4`[O!/T2+4V0BO/@!/"`Y>4/ +M%/]]_Q(M39"*\^4/\)"*\^##E/]0#^#_!/T2+4V0BO/@!/"`Z*T/?_\"+4W3 +M$*\!P\#0Y)"*W?"C=`3PH^3PD(KB\*/PD`()X)"*X?`2)&+_D(KAX"^0BN#P +M,.`+D(K;Y/"C=(#P@`?DD(K;\*/PD(K@X,,3D/T0\)"*W>`D(/"0BMNCX/VC +MX/PM_R0!]8+D-/SU@^"0BOWP=`(O]8+D-/SU@^#^["TD`_6"Y#3\]8/@)`#_ +MY#Z0BO[PH^_PD(K:=`3PD(K;H^#_H^`O_Y"*VN#^+R0`]8+D-/SU@^#_=/PN +M]8+D-(KU@^_PD(K:X`3PX+0(SQ&)[W!%D`'#X&`KPY"*X^"4Z)"*XN"4`T`) +MD`'&X$00\(!YD(KBY'7P`1)"@7\*?@`2,A6`SY`!QN"0`<,PX@5T_O"`5W3_ +M\(!2D(K=X+1X+N3PD(K@X`3PD(K;X'`$H^!D@)"*VW`%\*/P@`;D\*-T@/"0 +MBN#@PQ.0_1#P@`>0BMW@)`CPD(K>=/_U\!)"@9"*WN!P`J/@8`)A%M#0DJ\B +M$B1BD(L%\)```1)"()"+!O`BY/5A(I%*D(LS=`+P(I`%(G3_\']X?@@2(F60 +MBQP2)0A_!'X,$B)ED(L@$B4(?P!^"!(B99"+)!(E")"+">"0BQRT`0T20U/O +M5,?_[53'_8`'$D-3[U3'_^R0@)82)0A_>'X($BL(D(L@$D-3[U0/_^R0@)82 +M)0A_!'X,$BL(D(LD$D-3[T0"_^R0@)82)0A_`'X($BL(?W!^#A(B99"+*!(E +M")"`EA(E%``;):!_<'X.$BL(D(!H$B44`````.3]_Q(P+)"+">"T`1&0@&@2 +M)10`````Y/U_`1(P+)``$>!4]O`"4@Z14)"+,W0"\"*0!2)T__"0BS-T!/`B +ML4*0BS-T!/`BD``1X$0)\!)2#I"+'!)#4Y"`EA(E"']X?@@2*PB0BR`20U.0 +M@)82)0A_!'X,$BL(D(LD$D-3D("6$B4(?P!^"!(K")"+*!)#4Y"`EA(E"']P +M?@X2*PB0@&@2)10``RV5Y/W_$C`LD(L)X+0!$9"`:!(E%``#+97D_7\!$C`L +M(I"++>!D!F`\Y2)4#Q1@+A1@'B3^8`XD^'`JY)"++?"0!2+P(I"++70!\)`% +M(N3P(I"++70#\)`%(G3_\"*0`<;@1`CP(JX'Y/\23>#O8!B0BRS@Q!,35`,@ +MX`RO!GT!$D6BL<%_`2)_`"*0`5?@8#R0`5?D\)`!/'0"\)"+&^!@!^3P4R7] +M@"20BPS@!/!3)>^0BQ#@_Y"+#.#3GT`.Y2&T`0F0BPW@<`/@!/"0`5O@8!"0 +M`5OD\)`!/'0$\.20BQCPD`%?X&`0D`%?Y/"0`3QT"/#DD(L7\"+DD(M/\*/P +MD`7XX'`/H^!P"Z/@<`>CX'`#?P$BTY"+4."4Z)"+3^"4`T`#?P`B?S)^`!(R +0%9"+3^1U\`$20H&`Q@#[F``` ` end diff --git a/sys/contrib/dev/rtwn/rtwn-rtl8812aufw.fw.uu b/sys/contrib/dev/rtwn/rtwn-rtl8812aufw.fw.uu new file mode 100644 index 000000000000..0d58e4030cee --- /dev/null +++ b/sys/contrib/dev/rtwn/rtwn-rtl8812aufw.fw.uu @@ -0,0 +1,716 @@ +begin 644 rtwn-rtl8812aufw.fw.uu +M`940`!D````'(Q,D''T``/X)```````````````````"2Z`":%0````````` +M`````````FES``````````````````)P_0`````````````````````````` +M`````````````FC7```````";Y@``!7P_P\````5\`\`````!?#_#P````7P +M#P`````0\/\/````$/`/`````/4/``````#P#P``````#0```````!#P__\` +M```0\#\`````%?`_`````!7PS_\````6#1<.%P\8$!D1&A(:$QH4&A4;_Q<. +M&!`9$1(:&Q4<_QW_'O\?____%`T.%14/%A`7$1@2&!,8_Q4-%A`0%Q@2&?\: +M_QO_'/\`````!`0,#`T,#@T7#Q@0&1$9$1D2&A0,#!8-%P\8$!D3&A0;%1P; +M'1P>'00$#!0-%`X4#Q40%A<1$A<,#!0.%0\6$!<2&!@9&1H9"@@#`P`$"0<# +M`P`$"`8#`@`$"`4#`0`$#0H'!0`(#`H'!``("PH&!0`("PH%`P`("PH#`@`( +M%!(,!``0%!()!``0)"(<$@`@)"(8#``@)"(4!@`@)"(/!``@)"$*!``@(R$, +M!``@(Q\*!``@(A\/!``@(1\6#``@,2\@%``P,2\8$``P,2P8#``P,2H4#``P +M,2@4```P,204```P,1X4```P!`0$!00$!0<'!P@*!`<*#A$3%!4#!`<'"`L- +M#P4%!P<("PT/!04'!P@+#0\'"`@*"@P.$!$1!PD)"PL-#Q$1$@4%!P<("PT/ +M#P\%!0<'"`L-#P\/!`0$!0<'"0D,#A`2!08'#1`1$A('"`D)#`X1$PD)"0D, +M#A$3"0D)"0P.$1,%!@@)#`X2$A,4!P@*"PT0$1$4%@D)"0D,#A$3$Q,)"0D) +M#`X1$Q,3````````````)"8J````'R$E)R@`````(R8H*@`````C)B@J```` +M`",F*"H`````("4G*2DJ`````"`E)RDI*@`````C)B@J*BH````?(R8H*BHJ +M````!`````0````(````$````!@````D````,````$@```!@````D````,`` +M``#8````/````&0```!X````H````/````%````!D````>````"@````\``` +M`4````&0```"6````R````2P```&0````,@```$8```!X````M````/H```$ +ML```!D````?0````R````1@```'@```"T````^@```2P```&0```!]`````\ +M````9````'@```"@````\````4````&0```!X````E@```,@````R````1@` +M``'@```"T````^@```?0```+N```$X@``!=P```?0````,@```$8```!X``` +M`M````/H```$L```!D````?0```'T```!]````#(```!&````>````+0```# +MZ```!+````9````'T```!]````?0``(``@`$``@`#``2`!@`)``P`$@`8`!L +M`!0`,@`\`%``>`"@`,@`\`!0`'@`H`#(`2P!D`)8`R``9`",`/`!:`'T`E@# +M(`/H`&0`C`#P`6@!]`)8`R`#Z``>`#(`/`!0`'@`H`#(`/`!+`&0`&0`C`#P +M`6@!]`/H!=P)Q`NX#Z``9`",`/`!:`'T`E@#(`/H`^@#Z`!D`(P`\`%H`?0" +M6`,@`^@#Z`/H`@0&"`H,$!@@,$!0`0$!`@$"`P,$!`4%`@0&!P<("`@"`@,# +M!04&!@4&!@<'"`D*!08&!P<("0H!`P8'!P<("`H*`@4&!P<'"`@*"P4&!@<' +M"`D*"@L%!@8'!P@)"@H+`0$!`0$"`P0%!@<(`0(#!`4&!P@"!`8'"`H+#`,% +M!@<("@L,!08'"`D*"PP"!`8'"`D+#`P,`P4&!P@)"PP,#`4&!P@)"@L,#`P% +M!@<("0H+#`P,&08$`@`8!2(%4`51"P`("`D,#``.``C$"#@(+`Q<#&`,9`QH +M#+@,L`RT#EP.8`YD#F@.N`ZP#K0,``R4#(@,C`SH#!`-``R0#,0,R`S,#-0, +M@`R$#@`.E`Z(#HP.Z`X0#4`.D`[$#L@.S`[4#H`.A``!!`(#!0#G"?8(W_J` +M1N<)\@C?^H`^B(*,@^<)\*/?^H`RXPGV"-_Z@'CC"?((W_J`<(B"C(/C"?"C +MW_J`9(F"BH/@H_8(W_J`6(F"BH/@H_((W_J`3(#2@/J`QH#4@&F`\H`S@!"` +MIH#J@)J`J(#:@.*`RH`SB8**@^SZY).CR,6"R,S%@\SPH\C%@LC,Q8/,W^G> +MYX`-B8**@^23H_8(W_GL^JGP[?LBB8**@^SZX*/(Q8+(S,6#S/"CR,6"R,S% +M@\S?ZM[H@-N)@HJ#Y).C\@C?^8#,B/#O8`$.3F##B/#M)`*T!`!0N?6"ZR0" +MM`0`4*\C(T6"(Y!&4'/%\/BCX"CPQ?#XY8(5@G`"%8/@./`BNP$*B8**@^#U +M\*/@(E`&A_`)YQDBN_X'X_7P">,9(HF"BH/DD_7P=`&3(KL!$.6"*?6"Y8,Z +M]8/@]?"CX")0">DE@OB&\`CF(KO^"NDE@OCB]?`(XB+E@RKU@^F3]?"CZ9,B +M[RO_[CK^[3G][#C\(N];_^Y:_NU9_>Q8_"+O2__N2O[M2?WL2/PBZY_U\.J> +M0O#IG4+P[&2`R&2`F$7P(NN?]?#JGD+PZ9U"\.B<1?`BNP$'B8**@P)(2U`% +MZ?@"2,>[_@7I^`)(TXF"BH,"2%>[`0WE@BGU@N6#.O6#`DA+4`?I)8+X`DC' +MN_X'Z26"^`)(T^6"*?6"Y8,Z]8,"2%>[`0>)@HJ#`B=(4`7I^`)(W[O^!>GX +M`DCK(KL!#>6"*?6"Y8,Z]8,")TA0!^DE@O@"2-^[_@?I)8+X`DCK(N#\H^#] +MH^#^H^#_(N23_'0!D_UT`I/^=`.3_R+@^*/@^:/@^J/@^R+DD_AT`9/Y=`*3 +M^G0#D_LBI"6"]8+E\#6#]8,BX/NCX/JCX/DBZ_"CZO"CZ?`BT(/0@OCDDW`2 +M=`&3<`VCHY/X=`&3]8*(@^1S=`*3:&#OHZ.C@-_F_`CF_0CF_@CF_R+B_`CB +M_0CB_@CB_R+L]@CM]@CN]@CO]B+L\@CM\@CN\@CO\B+"KX#^,A)(^X70"W70 +M"*K@PHSEBB1G]8KEC#1Y]8S2C.PDA_CFO`("=/_#E8&T0`!`SGD#>(`6Y@AP +M"\*OYC#A`T08]M*O"-GMZHO0(N4,_R,D@?@/"`B_`P1_`'B!YC#D\@#E#,.? +M4"`%#'2&)0SXYOVF@0CFK@R^`@)T_\WXZ&U@X`CFP."`]N4,TY]`)^4,)(?X +MYJX,O@("=/_]&.;-^.6!;6`&T.#V&(#UY0PDALCV%0R`T^4,(R2!^'\$PJ_F +M,.`#$.(,?P`PX0(#V"/8(W_IX@78PD$QB=`&3P.#DD\#@0XD!=8I@=8QYTHS2KR("[].4`D`# +M?_\B=($O+_CF(.7TPJ_F1##VTJ^N#.[#GU`A#G2&+OCF^0CF&+X"`G3__>UI +M8`D)YQD9]PD)@/,6%H#:[M.?0`0%@06![M.?0")TAB[X".;Y[K4,`JF!&`8& +MYOWM:6`)&1GG"0GW&8#S'H#9[R2&^.8$^.\O!)!,8I/V".\OD_9_`"+OTY0" +M0`-__R+O(R2!^.8PY?3"K^94C/;2K^4,M0<*=(8O^.;U@0))1%`N=(`O@!!IKH`0::[`$&F +MO`!@)J8<`0(#!`4&!P@)"@L,#0XD*"PP-#@\0&1H;'!T>'R`A(B,E9F=H:5! +MIN(`0:;E`$WH4`A7\=,0KP'#P-#DD*2!\)"DAO"0I(3PD*2$X/_#E`)``J$7 +MPW3]G_]T`Y0`_GL!>J1Y@!(SQ^]D`6`"H8"0I(#@_U3`_F`%[U0,P%ZI'F%$C/'[V0! +M<$*0I(7@_U3@_G`3[U0.<`B0I(3@8#6``)"DAG0!\)"DAN!P">[$$U0'H_"` +M#)"DA>!4#L,3D*2'\)"DA^"0I'[P@!"0I(AT`?"`0)"DA.`$\(",D*1]X"7@ +M)>!4#/^0I'S@5`-/_Y"D?N#^Q%1P3T2`_7^+$CJ6D*1\X&`(H^!@!*/@<"&0 +MI(AT`_"0`<1T:/!T3*/PD*2(X)`!R/#D_7\?$CJ6@.70T)*O(I``@.!$@/U_ +M@!(ZEM'$$CJX$G>`T;A_`5$,D*.]=`+P_U$,D*.]X`3PT3'19I%HD`"`X$1` +M_7^`$CJ6=2C_T9L2=[#1HN3_0971K)"B*N_PT4.0`61T`?`"-97QI1)W3_$5 +M\33Q4^3U47526*M1?0)_`1(Y!*M2?0-_`0(Y!-&5T=$2>U(2F_$2NF[1W]'N +M\0"0I'1T__#DH_"C\*/PH^!4_$0"\.2C\*/PH_`BY)"C'?`B=>@#=:B%(I`! +MY'09\*/D\"*0`/#@?P$@X@)_`R+DD*(F\*/PH_"C\"*0`93@1`'PD`''Y/`B +MY)"C&/"C\)"B@/"C\"*0H[G@5/[PY*/PH_"C\"*0H[[@5/[P5'_PHW0*\.2C +M\"*0H\'@5/[PHW0#\*/PY*/PH_"C\")U71+D]5YU7P=U8'*0`3#E7?"CY5[P +MH^5?\*/E8/`B=64.=68!=6<#=6ABD`$XY67PH^5F\*/E9_"CY6CP(N3U5?56 +M]5=U6("M57]0$CJ6K59_41(ZEJU7?U(2.I:M6']3`CJ6\0`2)A[_5`'^D*/! +MX%3^3O#OPQ,PX!20``$2)C>0H\+PD``"$B8WD*/#\"*0`3#D\*/PH_"C\)`! +M./"C\*/PH_#]?U`2.I;D_7]1$CJ6Y/U_4A(ZEN3]?U,".I;3$*\!P\#0D*2= +M[_"C=`+PD`'$=-7P=$^C\)"DGN"0`!D`?`D")`!Q/!T4*/P$CKKOP$#$C%ID*.AX&`.D*.DX/^0HZ/@;V`" +M$4["KQ)X$[\!`E&PTJ]1NQ))1("_D*.CX/]]`8`$?0%_!-,0KP'#P-"0IN3M +M\)"CGN#^Q!,35`,PX`(AI^[$$Q,35`$PX`(AIY"CI.#^;W`"(:?O<`(A'"3^ +M<`(A5B3^8$DD_'`"(9$D_&`"(:?NM`X"41B0HZ3@<`1_`5%`D*.DX+0&`C'R +MD*.DX+0$#Y"FY.#_8`42O`F``Q)R5)"CI.!D"&`"(:?11B&GD*.DX'`$?P%1 +M0)"CI."T!@(Q\I"CI."T#@0HZ3@M`X',:R_`0)1&)"CI."T!@(Q\I"CI."T#`X!,3$U0?,.`(D`&X=`+P +M@!F0HZ/@TY0$0`B0`;AT"/"`")`!N.3P?P$BD`&Y=`+P?P`BD*.?X)`&!"#@ +M#.!$0/"0HZ1T!/"`"N!4?_"0HZ1T#/"0!2+D\"*0HY_@PQ,@X`B0HZ1T#/"` +M$9`&!.!$0/#@1(#PD*.D=`3PD`4BY/`BD*;C[_#15)"FX^!@!9`%(N3PD*.D +M=`3P(I"C'>!D`7`MD*.?X%3]\)`%(G1O\'\!\::_`0Z0HY[@1(#PD*.D=`[P +M(I`!N70!\)`!N`3P(I"CH>!D`7`8D*.@X%0/8`CD_7\,$5OA:I"CI.!P`A%7 +M(I"CGN`PX`,2>IXB$IMF$IJE<133$*\!P\#0Y/^0IGSPD`''X&2M<#?PD*:) +M=`_PD*9[=`KPH^`$\)"F?.`O_G1]+_6"Y#2F]8/N\`_OM`_ID`$_=`3P>P%Z +MIGE[$EC[T-"2KR+3$*\!P\#0D`"/X"#F`J&CD`",X)"FP_"0`(W@D*;$\)`` +MCN"0IL7PD*;$X"3^8"(48"@48"\D_'`"@9@D\G`"H50D%6`"H960IL/@_Q*; +M!:&5D*;#X/^QUJ&5D*;#X/\2FYBAE9"FP^`DEO6"Y#29]8/@^^3]_[&ND*;# +MX'7P!)"6&1)(@^`3$U0#^PWD_[&ND*;#X'7P!)"6&1)(@^#$$Q,35`'[#>3_ +ML:Z0IL/@=?`$D)89$DB#X,14`_L-Y/^QKI"FP^!U\`20EA822(/@^^3]#[&N +MD*;#X'7P!)"6%[&HD*;#X'7P!)"6&!)(@^#$$U0!^PU_`;&ND*;#X'7P!)"6 +M&!)(@^!4'_L-L:Z0IL/@=?`(D(D`$DB#X/OD_0^QKI"FP^!U\`B0B0&QJ)"F +MP^!U\`B0B0*QJ)"FP^!U\`B0B0.QJ)"FP^!U\`B0B0022(/@^^3]#[&ND*;# +MX'7P")")!;&HD*;#X'7P")")!K&HD*;#X'7P")")!Q)(@^#[#:&3D*.AX/OD +M_?^QKI"CH.!4#_L-L:Z0HZ/@^PVQKI"CI.#[#;&ND*;#X"0=]8+D-*/U@^#[ +MY/T/L:Z0HY[@5`'[#;&ND*.>X,03$U0!^PU_`;&ND*.>X,03$Q-4`?L-?P&Q +MKI"B*.#[Y/T/L:Z0HBG@^PVQKI"CJ.#[#;&ND*.GX/L-L:Z0HZ#@Q%0/^^3] +M?P.QKI"CG^`3$U0!^PU_`[&ND*.?X!,3$U0!^PU_`[&ND*.>X!,35`'[#7\# +M@#^0I'3@^^3]_[&ND*1UH^#[#;&ND*1WX/L-L:Z0I'C@5`/[#;&ND*1YH^#[ +MY/T/L:Z0I'G@^PVQKI"D>^#['0^QKI``C^`PX`?D_7^-$CJ6T-"2KR(22(/@ +M^PWO<`1T\(`6[[0!!'3T@`[OM`($=/B`!N^T`PQT_"WU@N0T`O6#Z_`BD*;7 +M[_"0`(_@,.9CD`"-X&0"<%N0IMCPD*;8X/V0IM?@=?`(I"0`]8+D-(#U@^6" +M+?6"Y#6#]8/@^^3_L:Z0IMC@!/#@PY0(0,Z0IMC@_<.4$%`-Y/O_L:Z0IMC@ +M!/"`Z9``C^`PX`?D_7^-$CJ6(M%4D`4BY/"0HZ1T#/`BTQ"O`X$0(\"+3$*\!P\#0CR20!!W@8!^0!2+@]2=T__`29G>_`0BO)!*\ +MKQ)G%I`%(N4G\(`#$F<6D`0?="#P?P'0T)*O(N3_@+Z0HZ'@8`)1CR+D^_K] +M?P$22T60I(WO\&#PD*(GX/^0HB;@_D]@X\*O[C#@"U3^\.3_$FQW$HI,TJ_" +MKY"B)N#_,.$%5/WP$9?2K\*OD*(FX/\PX@54^_`11=*O@+S3$*\!P\#0Y/^0 +MHQG@_I"C&.#]M08$?@&``GX`[F0!8"SM=?`/I"2"^72B-?#Z>P$1^W\![V`6 +MD*,8X`3PX+0*`H`"?P#O8`7DD*,8\-#0DJ\BTQ"O`#_D**`X+4' +M!'\!@`)_`.]P0Y"B@.#^=?`(D*(P$DB#X/WN=?`(I"0Q^72B-?#Z>P&O!3%Q +MD**`X`3PX'\`M`H"?P'O8`7DD**`\!)SE9"B)N!$`O#0T)*O(M,0KP'#P-"0 +MIK(22)A_EGX"$G33[V!:D`$7X/Z0`1;@?``D`/_L/O[O)`'_Y#[^D*:U[_#N +M_Y#]$?"0IK7@_9`"E/"C[_"0IK(22(^0``X2)C(26>H46?(@6?LA6@0C6@PE6A0G6AU`6CA!6B9"6B]#6D%%6DF'``!:49"D +MCA)(CP)Q29"DCA)(CP)QD9"DCA)(CP)R9Y"DCA)(CP*Z$)"DCA)(CP)/>9"D +MCA)(CX!OD*2.$DB/X;Z0I(X22(\"_Y"C'/"_`0@2=I7DD*,< +M\"*0``$2)C>0H\?PD``"$B8WD*/(\!*B:W\!D*21=!'PD*2?=`'PD*23[_![ +M`7JD>9'QW7\$D*;?[_!_`A)+'I"B)N#_D*;?X/[O3I"B)O`BD*21$DB8$B8> +M_Y"DD1)(CY```A(F-Y"FJ/#D^_UQ`)"DE'00\)"DHG0'\)"DD1)(CQ(F'I"D +MEO![`7JD>93QW7\$@*&0IJ;M\*/K\)"FI>_PD*:HX/T2G820IJ7@PY0.4$:0 +MIFL2)U0?_@``D*9O$B=4$M0``']@?@C1JI"F61(G5``'`P"0IET2)U0````` +ML9^0IED2)U0`!P,`D*9=$B=4`````(&HD*:EX/]T)-.?4!OOE#!0%I"F:Q(G +M5!_^``"0IF\2)U0)*```@&N0IJ7@_W0RTY]0&^^40%`6D*9K$B=4'_X``)"F +M;Q(G5`BF``"`19"FI>#_=&33GU`;[Y1T4!:0IFL2)U0?_@``D*9O$B=4"*0` +M`(`?D*:EX/]T=M.?4!J0IFL2)U0?_@``D*9O$B=4""0``']@?@C1JI"FI>#_ +M="33GU`Q[Y1`4"R0IED2)U0`!P,`D*9=$B=4``$!`+&?D*99$B=4``<#`)"F +M71(G5``!`0"`<9"FI>#_=&33GU`Q[Y2,4"R0IED2)U0`!P,`D*9=$B=4``,! +M`+&?D*99$B=4``<#`)"F71(G5``#`0"`-9"FI>#_=(S#GU`RD*99$B=4``<# +M`)"F71(G5``%`0"QGY"F61(G5``'`P"0IET2)U0`!0$`?1A\`'\!L:60IJ7@ +M_Z/@_1*<1)"FIN!D`G!FD*:EX/_3E#!0")"FJ70J\(!P[].40%`(D*:I=#KP +M@&+OTY1P4`B0IJET:O"`5._3E(!0")"FJ71Z\(!&[].4D%`(D*:I=(KP@#CO +MTY2A4`B0IJETF_"`*N_3E+%0))"FJ72K\(``D +M`H`#X"3^D*:I\)"F61(G5````/^0IJFQDY"F61(G5````/^0IJF`')"F61(G +M5````/^0IJ6QDY"F61(G5````/^0IJ7@_^3\_?Z0IET2)TA]&'P`?P&`$N#_ +MY/S]_I"F71(G2'T8?`#D_Y"F5^SPH^WPD*96[_"CH^#]T1:0IF$2)TB0IED2 +M2$L2)Q60IF$22&<21WS`!,`%P`;`!Y"F61)(2Y"F71)(9Q)'?-`#T`+0`=`` +M$D>)D*9E$B=(D*97H^#]P`60IF422$N0K)82)TB0IE;@_]`%`CFZTQ"O`[PH^_P$C;.D*9S$B=(D*9K$DA+$B<5D*9S$DAG$D=\P`3` +M!<`&P`>0IFL22$N0IF\22&<21WS0`]`"T`'0`!)'B9"F=Q(G2)"F=Q)(2Y"L +MN1(G2)"F:>#^H^#_`C==D*4$[_"C$DB8D*9K$B=4@````)"F;Q(G5`````#1 +MII"E!1)(CQ)'O9"E2!(G2)"E!.#_?67QDY"E!1)(CY``!!)'W9"E2!(G2)"E +M!.#_?8_QDY"E!1)(CY``"!)'W9"E2!(G2)"E!.#_Y/WQDY"E2!(G5`````"0 +MI03@_WWO@`>0I03@_WWOTQ"O`"U!P1_`8`"?P#O8`F0`<'@1`+P +M@#7``9"C&>!U\`^D)(+Y=*(U\*@!_'T!T`%^`'\/$D;0D*,9X`3PX'\`M`H" +M?P'O8`7DD*,9\-#0DJ\B\.3U(I"CL^#U(^3[_7]4?@'3$*\!P\#0CAZ/'X4B +M.X4C/!(TC(4?@H4>@Z.CHW0%\-#0DJ\B,9C3D*1VX)0`D*1UX)0`0!/@_*/@ +M_>SU(HTCY/O]?UQ^`8"WD`%?Y/`BY)"E3_"0!JG@D*5/\.!4P'`-D*.EX%3^ +M\%3]\`)03I"E3^`PYB*0HZ'@9`%P(9"CI>!$`?"0HZ#@5`]D`F`$,1*`#!)7 +M58`'D*.EX%3^\)"E3^"0HZ4PYPW@1`(11Y"CGN!$!/`BX%3]\"*0!!W@_PY/W\$KS\?`"M +M!Y"FS>"0!"7PD*;.X&`.="$O]8+D-/SU@^!$@/"O!70@+_6"Y#3\]8/@5,#P +M="$O]8+D-/SU@^!4P/!T*2WU@N0T_/6#X%3W\*X$KP70T)*O(N3U!@-J!G0H+_6"Y#3\ +M]8/@M%0#$KE_=!0K]8+D-/SU@^#$$U0#_Y"D>.!4_$_PY7-4[Y`%(O"0!!]T +M(/"0I'GD=?`!$D;VD*1[=`'P(I"C'>!D`6`"00HY_@$Q,35!\PX`Z0HZ?@_Z/@M0<$L:Q1U")]`G\"4=A]`7\"=%TO +M^.;^[?1>_O9T,"_U@N0T`?6#[O`BD*/&X`3PD*.DX&0"8"A1.I"CG^`3$Q-4 +M'S#@%)"CI^#_H^!O<`JQK%'.D*.HX!3PD`'FX`3P(N]P,WUX?P)1V'T"?P-1 +MV'W(?P+1`9`!5^3PD`$\=`+P?0%_#!)06Y"CGN!4]_"0!@K@5/CP(I`!-G1X +M\*-T`O!]>/]QJGT"?P-QJI`&"N!$!_"0HZRCX)`%6/"0HQW@M`$5D*.?X%3[ +M\)"CI.`@X@Y]`7\$`E!;D*.?X$0$\")]`G\"=%TO^.9-_O9T,"_U@N0T`?6# +M[O`BD*.YX##@+9"CN^"0!7/PD*.\X&`$%/"!<9"CNN`4D*.\\)`%P%ZIGF;T<60IIO@1!@2>;G0T)*O +M(N\4D`5S\)`!/W00\/U_`W1E+_CF3?[V=#@O]8+D-`'U@^[P(JP'[U0!_I"C +MN>!4_D[P[Y`!4[0!$>3P?1!_`[&[D*.[X)`%<_`B=`/P?1#_T0$"5D9T92_X +MYO[M]%[^]G0X+_6"Y#0!]8/N\"*0HZ'@8"B0HQW@9`%P()"CJ/`$8!F0HZ7@ +M1!#PY/4BD*.I$4Z0HZ3@(.(#$E!7(I"DD1)(F/',D*.AX/]Q)Y"CH>!@&9"D +MD1)(CY```1(F-U0/_Y```A(F-_T2N]@BY)"FT?"C\)`%^.!P#Z/@<`NCX'`' +MH^!P`W\!(M.0IM+@E.B0IM'@E`-`"I`!P.!$(/!_`")_,GX`$CKWD*;1Y'7P +M`1)&]H"_>P%ZIGF:?0A_`9"FMA)(F.]P!Y"FN03P@`OO9`%P+I"FN71`\'_B +M$CJ6D*:YX/U_XQ(ZEI``X>#_D*:V$DB/[Q(F9.3]?^,2.I9_`2*0`<+@1`'P +M?P`BD*(MX/]]`3$LCB6/)JTFK"6O)!*\9*\FKB60@0#@5`_]K`=T#2SU@N0T +M_/6#X$0!\'0-+/6"Y#3\]8/@5/OPK`=T$BSU@N0T_/6#X$3Z\'01+/6"Y#3\ +M]8/@1!_PK`=T!BSU@N0T_/6#X$0.\)`$I^3PD`2F\)`$I73_\)`$I'3]\'04 +M+/6"Y#3\]8/@5,!-_704+_6"Y#3\]8/M\"(!?8]X?P(22QZ0HB;@17CP(A)S +ME7\"@.J0HY[@5/OPY)"CJO"0HZ7P(I"E1N_PH^WP^WT`?`#DD*5,\.N0I4?P +M?[!^"!(VSN3_[)"E2!(G2)"E2!)(9Y"E1^#_Y/S]_A)'B:,2)TB0I4@22$N0 +MK+D2)TA_L'X($C==?Q1^`!(Z]Y"E1N!U\`BD)'/U@N0TK_6#X/ZCX/\2-L[M +M5`_]Y/PBP.#`\,"#P(+`T'70`,``P`'``L`#P`3`!<`&P`>0`<1T5/!T:*/P +M$:-T5`20`<3P=&BC\-`'T`;0!=`$T`/0`M`!T`#0T-""T(/0\-#@,GL`>@!Y +M4^3]?P$2.3/E45)3>P!Z`'E4?0%_`1(Y,^524E2K4^3]?P$2.02K5'T!?P$" +M.03`X,#PP(/`@L#0==``P`#``<`"P`/`!,`%P`;`!Y`!Q'37\'1HH_`Q.>5< +M,.<",2UTUP20`<3P=&BC\-`'T`;0!=`$T`/0`M`!T`#0T-""T(/0\-#@,I`` +M!>!$@/U_!0(ZEI``5.!55?59H^!55O5:H^!55_5;H^!56/5_E83#D`Q)GQ>5A,.4"\5SE8S#@ +M`E$HY6,PX0,29`/E8S#B`Q)B\.5C,.,"T:KE8S#D`O$MY6,PY0+1XN5C,.8" +MT<;E9##A`Q)7Z.5D,.0"D77E9##E`E&DY60PY@)QJW1S!)`!Q/!T::/PT`?0 +M!M`%T`30`]`"T`'0`-#0T(+0@]#PT.`RY/^0HZ'@8'.0HQW@9`%P:Y"CH.#$ +M5`]@)"3^8`,$3U(I"CJN"`#>3U(I"CJN!U\`.D)/[_D*.IX"\2 +M8$^0HZ3@(.(#$E!7(N3U&I`$,."T`0:0!,]T,/!T'24:]8+D-*/U@^!P`F&? +MY1H3$Q-4'__E&E0'_G0!+_6"Y#24]8/@_:\&=`%^`*@'"(`%PS/.,\[8^?_O +M77`"89]U\!#E&I"!`1)(@^`@YP*`$'7P$.4:D($"$DB#X/\@YPF0`<'@1"#P +M@'_O,.8C=?`0Y1J0@0`22(/@_77P$.4:D($%$DB#X%0#D*:-\.3[@%-TIB4: +M]8+D-*#U@^`$\'2F)1KU@N0TH/6#X-.4`T`3KQJQHG2F)1KU@N0TH/6#Y/"` +M)G7P$.4:D($`$DB#X/UU\!#E&I"!!1)(@^!4`Y"FC?![`:\:$H?/!1KE&L.4 +M@%`"0:!$`O"`$)`$+>!$!O"`!Y`$+>!$#O#DD*1[\"+D_Y"E3^_PD`1^X/4;H^#U +M'&4;8'"0I5!T`_"0I5YT"/#E'`14#_4=Y/4:Y1UU\`BD)`#U@N0T@/6#Y8(E +M&O6"Y#6#]8/@_W12)1KU@N0TI?6#[_`%&N4:M`C0>P%ZI7E0$E_=Y1P$5`_U +M'+0/`^3U')`$?^4<\)"E3^!_!'`#`F>V$EJA(N3_D*5C[_#D]7!T9"5P]8+D +M-*7U@^3P=?`0Y7"0@0,22(/@_S#G"N5P#_ +MY#/^[R0>_^0^_NTEX"2F]8+D-)KU@^[PH^_P="8M]8+D-)_U@^#U'.4;TY4= +M0`.%'1MTIBWU@N0TH?6#X%2`0ANO!9"FC>4<\.3[K1L2A\^O&R)U\!#OD($# +M$DB#X$1`\"*0HQW@9`%P$Y"CH>!@#9`!5^3PD`$\=`(28$!@#I"CI>!4_O!4!W`#$E!.(I"C'>"T`1:0HZ'@8!"0HZ#@5`]D`F`#`F$2 +M$E=5(I`!-.!57?5AH^!57O5BH^!57_5CH^!58/5DD`$TY6'PH^5B\*/E8_"C +MY63P(I"C'>!D`7`FD*.AX&`@D`%7Y/"0`3QT`O"0HY[@5/OPD*.EX%3]\%0' +M<`,24$XBD`'/X)"E3_#@_S#@!Y`!S^!4_O#O,.4CD`'/X%3?\)`!-'0@\.3U +MJ/7H$D^ED``#X%3[_7\#$CJ6@/XBP.#`\,"#P(+`T'70`,``P`'``L`#P`3` +M!<`&P`>0`<1TF/!T;Z/P$G@ZY6DPX0,2>'GE:3#B`Q)XX.5I,.,#$F>TY6HP +MX`,2>/OE;##A!7\$$F>VY6PPY`,28_3E;##E`Q)P*>5L,.8"$:]TF`20`<3P +M=&^C\-`'T`;0!=`$T`/0`M`!T`#0T-""T(/0\-#@,I"CGN#_Q!,35`,PX"?O +M5+_PD`3@X)"CGS#@!N!$`?"`$.!4_O"0`;ET`?"0`;AT!/`24$[D_Y"CP>`P +MX$B0H\7@_6!!=`%^`*@'"(`%PS/.,\[8^?^0!.#@^^];8`;DD*/%\"*0H\/@ +MTYU0$)`!QW00\!'MD*/!X%3^\"(25^20H\7@!/`BD*.>X/_$$Q,35`$PX"SO +M5'_PD`3@X)"CGS#A!N!$`O"`#^!4_?"0`;ET`?"0`;@$\)"CH>!@`Q)03G\! +M`5^0HBK@9`)@!Y`&D.!$`?`BP.#`@\""P-!UT`#`!<`'??V0`<3M\'1P_Z/P +M[020`<3PH^_PT`?0!=#0T(+0@]#@,I"FX._P?P(22QZ0HB?@_Y"FX.#^[TZ0 +MHB?P(I`"">#]$B8>_J\%[2Z0HBOPD``!$B8W_^TOD*(L\)```A(F-__M+Y"B +M+?"0``,2)C?_[2^0HB[PD``$$B8W_ZX%[2^0HB_P(I"DD1)(F)```1(F-__^ +M$B8>_<,3,.`2D*21$DB/D``"$B8WD*25\(`%D*25[_"0I)3N\)"DE>#^D*24 +MX/_3GE`XD*21$DB/$B8>5`'^=!TO]8+D-*/U@^[P=!TO]8+D-*/U@^!P!%%# +M@`>0I)3@_U$RD*24X`3P@+J0HQW@<"&0HZ3@<`3_$E)`D*.DX&0,8`)15)"C +MGN!4]_!4O_!4?_`BCP]U\!#OD($%$DB#X%3[\"*/#W7P$.^0@0422(/@1`3P +M(I`&!.!4?_"0!2+D\)"CI'0,\"+3$*\!P\#0$B8>_Y"CG?"_`1*0``$2)C=D +M`6`7D`4B=&_P@`^0``$2)C=D`6`%D`4BY/#0T)*O(A(F'O]4?Y"CH?#OQ!,3 +M$U0!H_"0``$2)C?_5/#$5`_^D*.@X%3P3O"0``,2)C=4`27@_I"CGN!4_4[P +M[U0/Q%3P_Y"CH.!4#T_PD``$$B8WD*.C\!)F2)`!N70!\)`!N/"0HZ'@D`&Z +M\)"CH^"0`;OPD*.@X%0/D`&^\"*0``(2)C?_,.`F$B8>D*.R\)```1(F-Y"C +ML_#O5/[_H^!4`4_PD``#$B8WD*.U\"*0H[)T`?"C=`7PH^!4`40H\*-T!?`B +M$B8>5`'_D*.YX%3^3_"0``$2)C>0H[KPD``"$B8WD*.[\)"CNN"0H[SPD*.Y +MX%0!_P)ET)`!S.!4#Y"FR?"0ILG@_7`"@=*0HH#@_W`&H^!D"6`*[Q3_D**! +MX+4'!'\!@`)_`.]@")`!P>!$`?`BD*:ZX/]T`7X`J`<(@`7#,\XSSMCY_^]= +M<`*!P>20ILKPD*;*X/G#E`10]P`F&?Y)"B@?!AGY`!P.!$`O"0 +MIKK@1("0`(KP(M,0KP'#P-"0IJKN\*/O\.2C\*/PD*:JX/ZCX/6"CH/@8"W# +MD*:MX)3HD*:LX)0#0`N0`<#@1(#P?P"`%9"FK.1U\`$21O9_"GX`$CKW@,5_ +M`=#0DJ\BTQ"O`@%YH!(T+)"FO1)(CY``#A(F-Y`!KO"C +M=/_PD`'+X&2`\-#0DJ\BY/SM+"0`]8+D-/OU@^3P#.RT&.YT`"WU@N0T^_6# +M[_#N5#__=`$M]8+D-/OU@^_P=`(M]8+D-/OU@^!4\/!T`RWU@N0T^_6#X$2` +M\'0++?6"Y#3[]8/@1!#P(I"FKN_PHQ)(F)"FN^#^!/"0``'N$B9V=``O^>0T +M^_I[`<`#P`+``9"FKQ)(CXM`BD&)0G5#`M`!T`+0`Q(T+)"FKN`D`OGD-/OZ +M>P'``\`"P`&C$DB/Z20"^>0ZBT#U08E"D*:O$DB/D``.$B8W]4/0`=`"T`," +M-"R0I)QT$O"0I*IT!?"0I)[O\*/M\*/K\)"DFN"0I*'PD*2;X)"DHO![`7JD +M>9P27]U_!`):H7L!>J1YD7_U?@,2,\>_`0:0I)'@H_![`7JD>9%_]GX#$C/' +MOP$(D*21X)"DD_![`7JD>9%_]'X#$C/'OP$(D*21X)"DE/![`7JD>9%_\WX# +M$C/'OP$(D*21X)"DE?![`7JD>9%_\GX#$C/'OP$(D*21X)"DEO"0I)+@_Z/@ +M_:/@^Z/@D*2:\)"DEN"0I)OPP6"0IL`22)CD_Y"FP!)(CX^"=8,`$B8W_G3P +M+_6"Y#0"]8/N\`_OM!#@(I`!-'3_\*/PH_"C\)`!//"C\*/PH_#]?U02.I9] +M_W]5$CJ6??]_5A(ZEGW_?U<".I:0`0'@1`3PD`&<='[PHW22\*-TH/"C="3P +MD`&;=$GPD`&:=.#PD`&9Y/"0`9@$\"+DD*2`\*/PD`&8X'\`,.0"?P'O9`%@ +M1<.0I('@E(B0I(#@E!-`#Y`!P>!$$/"0`<=T`_"`)Y"D@.1U\`$21O9_%'X` +M$CKWTY"D@>"4,I"D@."4`$"RD`'&X##CJY`!QW0%\")_`I"CO>#^[\.>4!CO +M)>`D@?CF,.0+D`&X=`CPH_!_`"(/@-Y_`2*0`3S@567U::/@56;U:J/@56?U +M:Z/@56CU;)`!/.5I\*/E:O"CY6OPH^5L\%.1WR*/>7\"$DL>D*(GX$5Y\"*0 +MHZ'@8`(1@B*0HY[@_Q,35#\PX!'O5/OPD*.EX%3]\%0'<$*`/9"CJN`$\)"C +MI>!4[_"0HZK@_[0!`H`$[[0"!I`%6.`$\)"CLN#_D*.JX-.?0`^0HQW@M`$+ +MD*.?X%3[\"(24$XBD*.AX&`4D`:2X##A`P)7:I"CGN!4]_`24$XB,420I5_O +M\)"CGC#@!N!$`?"`!.!4_O"0I5_@,.81D`$OX##G!.3P@`:0`2]T@/"0HY[@ +M,.`2D*.LY/"C=`3PD*.LH^"0!5CP(N20I6#PH_"C\)``@^"0I6#PD`"#X/Z0 +MI6#@_[4&`2+#D*5BX)1DD*5AX)0`0`V0`<#@1$#PD*5@X/\BD*5AY'7P`1)& +M]H#"TQ"O`!@&I`%(N!4D&`'D`'`X$0(\)`!QN`PX>1_`(`"?P'0 +MT)*O(OM]"'\!D*;/Z_#O<`:C=`/P@`OO9`%P-9"FT'1"\'_B$CJ6D*;/X/U_ +MX!(ZEI"FT.#]?^,2.I:0IM#@5/W]?^,2.I;D_7_C$CJ6?P$BD`'"X$0!\'\` +M(H]ZY)"FT_"C\)`!">!_`##G`G\![V5Z8#[#D*;4X)2(D*;3X)030`B0`<#@ +M1!#P(I"FT^1U\`$21O9_%'X`$CKWTY"FU."4,I"FT^"4`$"YD`'&X##@LB)Q +M#I``".!4[_U_"!(ZEN3_41"0HBK@M`,,D`!PX%1__7]P$CJ6(M,0KP'#P-!1 +MME%HT-"2KR*0HZ3@_V`#M`@-<1:_`0A1CI`!Y>`$\"*0HBK@M`,,D`!PX$2` +M_7]P$CJ6D*.KX/U_DQ(ZEI"CHN!@$I`!+^`PYP5T$/"`!I`!+W20\)``".!$ +M$/U_"!(ZEG\!41"0`)#@1`']?Y`2.I9_%'X``CKWD`"0X"#@^2*0`H?@8`B0 +M`;AT`?"`)9`"EN!@")`!N'00\(`7D`*&X"#A")`!N'0$\(`(D`&XY/!_`2*0 +M`;ET"/!_`"+DD*2`\.20I('PD*2!X/_#E!!0=9"D@.#^)!;U@N0TF?6#X%3^ +M\.^0I(&T`QO@_W7P$.Z0@0`22(/E@B_U@N0U@_6#=(#P@!O@_Y"D@.!U\!"0 +M@0`22(/E@B_U@N0U@_6#Y/"0I('@_Y"D@.!U\`B0B0`22(/E@B_U@N0U@_6# +MY/"0I('@!/"`@9"D@.`$\.!D@&`"85?DD*]]\)"4D1(G5`````#DD*2`\)"D +M@.#_PY2`0`*A7^20I(+PD*2"X/[#E`50()"D@.!U\`J0C0$22(-U\`+N$DB# +MY/"C\)"D@N`$\(#6Y)"<)O"0I(#@_B0F]8+D-*#U@W0_\'0F+O6"Y#2<]8/D +M\'0!+O6"Y#23]8-TP/#N)>`D`?6"Y#22]8/D\*/P=!8N]8+D-)CU@^3P[B7@ +M)*;U@N0TG/6#Y/"C\.XEX"2F]8+D-)WU@^3PH_!U\`3ND)86$DB#=#_P=?`$ +M[I"6%Q)(@W0#\'7P!.Z0EA@22(/@5.!$"?"0I(#@_G7P!)"6&1)(@^!4\_!U +M\`3ND)89$DB#X%3\\)"D@.#^=?`$D)88$DB#X$0@\'7P!.Z0EAD22(/@5,_P +MD*2`X/YU\`20EAD22(/@1$#P=?`$[I"6&1)(@^!4?_"0I(#@_G7P!)"6%A)( +M@^#]=?`0[I"!`!)(@^WPD*2`X"06]8+D-)GU@^3PD*2`X`3P8?R0!$ET\/"C +MY/"C=/_PD`0S=`+PHW0$\*,$\*,$\*,$\'26+_6"Y#28]8-T__`B]8/DD_^0 +MI+3@_:P'[!,3$U0?_W7P".V0B0`22(/E@B_U@N0U@_6#X/MZ`.Q4!_]T`7X` +MJ`<(@`7#,\XSSMCY_^Y:_N];3G__8`*O!"*0I+3K\.]4?R3TD*2X\.UP29"D +MM>"0I+AP(.`EX"33]8+D-$"QC9"DMN_PD*2XX"7@)-3U@N0T0(!GX"7@)*OU +M@N0T0+&-D*2V[_"0I+C@)>`DK/6"Y#1`@$>0I+7@D*2X<"#@)>`D'_6"Y#1! +ML8V0I+;O\)"DN.`EX"0@]8+D-$&`'N`EX"3W]8+D-$"QC9"DMN_PD*2XX"7@ +M)/CU@N0T0+&-J0=_#'X2?1"0I+;@_/1@*NGT8";IPY]`(>G3G5`]8-T +M__"`#Y"DM.`DIO6"Y#2>]8/I\)"DMN#_(G[_=*8O]8+D-)[U@W3_\.VT/A%^ +MO72F+_6"Y#2>]8-T/?"`)>VT/R%U\`3OD)88$DB#X,035`]8-T/O"O!B+M5'_\[52`8`.O!"+LM#T"@!_LPY0^0"+LTY0_4!QU\`3O +MD)88$DB#X,035`#[[&M@1I"F2>OPH^[PK@7N)>!/H_"0ID;@D*9-\)"F1W0, +M\)"F570$\'L!>J9Y1Q)?W7\$$EJAD*9%X/^0ID3@));U@N0TF/6#[_`B[V`* +M[<.4+$`$?B"``N3^P^V>_R*0I*;O\)`!Q'0:\'2`H_"0I*;@_W7P$)"!`!)( +M@^"0I*?PY)"DK/"0I*?@_E1_^:/P[E2`^W7P!.^0EA822(/@D*2J\)"DIN#Z +M=?`$D)89$DB#X/_$5`.0I*OP=?`$Z9!"W1)(@Q)(5^HEX"25]8+D-)3U@^[P +MH^_PKP.0I*?@3_Z0I*;@_R2F]8+D-*'U@^[P=?`0[Y"!!1)(@^!4`_Z0I*GP +M="8O]8+D-)_U@^[P=!8O]8+D-)GU@^`PX#^0I*C@9#]P-W0^\'7P!.^0EA@2 +M2(/@_L035`0 +MI*;@_Z/@_1)_8._T8!"0I*?O\##G`F%ED*2GX*/PD*2HX/^T+2N0I*;@_G7P +M!)"6&1)(@^!4`_V0I*G@PYU0$9"DIW0L\)"DJ>`$\'2F+H`0[[0L&)"DIW0M +M\)"DIN`DIO6"Y#2>]8-T__!A99"DJN#_D*2HX/W#GT`"0?B0I*O@_Q$&D*2H +M[_"0I*O@_Y"DJN#]$0;O\)"DJ.#_TY0+0!F0I*;@^Y"DJ^"0I+7PY/T2?=J0 +MI*?O\(`6D*2G=/_PD*2FX"2F]8+D-)[U@W3_\)"DI^#T8`)!?9"DIN`DIO6" +MY#2>]8/@]'!\D*2HX`3]D*2JX/_MTY]0;.T3$Q-4'_^0I*;@_'7P")")`!)( +M@^6"+_6"Y#6#]8/@^WH`[50'_W0!?@"H!PB`!<,SSC/.V/G_[EK^[UM.8"F0 +MI*C@M!,7=!CPD*2G\'06+/6"Y#29]8/@1`3P@`Z0I*CM\)"DI_"``PV`BI"D +MJ^#_D*2GX/UQ?^_PD*2FX"2F]8+D-)[U@^#]]&`6D*2KX/]Q?Y"DIN`DIO6" +MY#2>]8/O\)"DIN#_)!;U@N0TF?6#X"#@`F%ED*2HX&0_8`)A970^\'7P!.^0 +MEA@22(/@Q!-4!S#@")"DIW2^\(!WD*2HX)"DI_"`;9"DJN#_D*2HX/YO<$>0 +MI*;@^W7P!)"6&!)(@^#_Q!-4!S#@#9"DI^`@YP;N1(#P@#R0I*C@=?`$D$+= +M$DB#$DA7ZR7@))7U@N0TE/6#[O"C[_"`+9"DJN#_D*2FX"2F]8+D-*'U@^_P +MD*2G[_"0I*;@_Z/@_9"DJ>"0IHWP>P'QSY"DI^#_(N]@"NW3E`M`!'X@@`+D +M_NTN_R)]`:\/CQFL!9`!Q'26\'2#H_#E&27@)*;U@N0TFO6#Y/"C\'7P$.49 +MD($`$DB#X)"DI_"0I*;P5'^0I*SP=?`$Y1F0EA<22(/@D*2N\'7P!.49D)86 +M$DB#X/F0I*_P=?`0Y1F0@0422(/@5`.0I*CP^I"DK.#[)>`D+?6"Y#1$]8/D +MD_YT`9/_Y1DEX"25]8+D-)3U@^[PH^_P=?`$Y1F0EAD22(/@Q%0#D*2I\'2F +M)1GU@N0TH?6#Z_!T)B49]8+D-)_U@^KPD*2LX-.90!J0I*_@_Y"DK/"0I*;P +M=*8E&?6"Y#2>]8/O\.QP`L']D*2M[/"0I*;@,.<]8/O\)"DK>`4\)"DK>!P`L']D*2FX/VO&1)_%)"DL>_P]&`BX)"DIO"0 +MI*W@%/#@^7`-=*8E&?6"Y#2>]8/!Y*T!KQEQEI"DIN!D+'!-D*2HX/_3E`!` +M0^_3E`)0/>`4\)"DIG0M\)"DJ.!4`R7@)>#_=?`$Y1F0EAD22(/@5/-/\'2F +M)1GU@N0TGO6#=/_PD*2MX!3PX'`"P?V0I*;@M"THD*2HX-.4`E`?D*2F="SP +M=*8E&?6"Y#2>]8-T__"0I*W@%/#@<`+!_9"DK>!P`L']D*2NX/^0I*S@_M.? +M4`+!]>20I*OPD*2IX/^M!A$&D*2L[_"0I*;PD*2IX/^0I*[@_1$&[_"0I*;@ +MTY0+0!N0I*S@_Y"DJ>"0I+7PJQE]`1)]VI"DIN_P@`YTIB49]8+D-)[U@W3_ +M\'2F)1GU@N0TGO6#X/1@`L&=D*2FX)"DL/"0I*S@%)"DJO"0I*[@_Y"DJN## +MGT!\X/L3$Q-4'_]U\`CE&9")`!)(@^6"+_6"Y#6#]8/@_7P`ZU0'_W0!?@"H +M!PB`!<,SSC/.V/G_[ES^[UU.8#:0I*S@M!0(D*2P=`SP@`B0I*K@D*2P\)"D +MJ^`$\)"DK>#_D*2KX&]@%9"DKN#_D*2PX-.?0`B0I*K@%/"A^9"DL.#]=*8E +M&?6"Y#2>]8/M\)"DIN"T_P+M\)"DJ>#_D*2FX/UQ?^_P=*8E&?6"Y#2>]8/@ +M_O1@)I"DJ>#_K09Q?W2F)1GU@N0TH?6#[_!TIB49]8+D-)[U@W3_\(`W#E#M` +M8`Z`7>RT!`KMPY0Q0%-^`8!/=)8O]8+D-)7U@^#\M`,*[<.4&4`Z?@&`-NRT +M`@KMPY010"Q^`8`H=)8O]8+D-)7U@^#\M`$*[<.4"D`3?@&`#^QP"NW#E`-` +M!GX!@`+D_J\&(M,0KP'#P-"0IHKO\*/M\*/K\.20II/PD*:*X/\3$Q-4'Y"F +MCO#O5`>0II#PD*:*X'7P$)"!`1)(@^"0II'P=?`$[Y"6%A)(@^!4?Y"FE/"0 +MIHK@=?`$D)87$DB#X)"FE?#M5'^0IH_PZW!`X/LEX"0M]8+D-$3U@^23_G0! +MD__D_/UU\`3KD$+=$DB#$DAS$D=O>`$2)R*0IHK@)>`DE?6"Y#24]8/N\*/O +M\)"FE.#_D*:/X/[3GT`,D*:+X%2`_>]-\(`/D*:5X/_NPY]0!9"FB^_PD*:+ +MX/]4?_Z0IH_P_>]4@)"FDO"0IHK@_Q*'%I"FC.!P.9`$SW0P\)"FCN`D`?6" +MY#24]8/`@\""X/^0II#@_G0!J`8(@`+#,]C\]%_0@M"#\)"FD>!4?_"`;)"F +MBN#_)!;U@N0TF?6#X)`$SS#@!70@\(`"Y/"0IH[@)`'U@N0TE/6#P(/`@N#^ +MD*:0X/UT`:@%"(`"PS/8_$[0@M"#\'7P$.^0@0$22(/@5`?_D*:1\)"FC^"0 +M1.&3,S,S5/A/D*:1\$2`\)"FB^#_D*:*X/YU\!"0@0`22(/O\)"FD>#_=?`0 +M[I"!`1)(@^_P=?`0[I"!!1)(@^!4_/^0IHW@5`-/_I"FBN#_=?`0D($%$DB# +M[O!]`3&_T-"2KR+3$*\!P\#0[6!B=?`*[Y"-`1)(@^3PH_!U\`KOD(T#$DB# +MY/"C\'7P"N^0C0422(/D\*/P=?`*[Y"-!Q)(@^3PH_!U\`KOD(T)$DB#Y/"C +M\.\EX"0!]8+D-)+U@^3PH_!T%B_U@N0TF/6#Y/!U\!#OD($#$DB#X%2_1(#^ +M=?`0[Y"!`Q)(@^[PT-"2KR*0`<1T3/!TBJ/PY/4/=!TE#_6"Y#2C]8/@<`," +MDYUU\`3E#Y"6&1)(@^#$$Q,35`$PX`,"DYWE#R7@)`'U@N0TDO6#X/ZCX-.4 +M`.Z4`%`#`I.=Y0]U\`JD)`'Y=(TU\/I[`8L3]12)%>4/)>`D`?6"Y#22]8/@ +M_Z/@D*21S_"C[_!T%B4/]8+D-)CU@^#_D*23Y/"C[_"0``(21S?_KO`21PPO +M_^7P/OZ0``021S&`!Y"DC^"00C63D*29\)"DF>!U +M\`:D)#_Y=$$U\'40__41B1*0I([@D$4UD__3D*24X)^0I)/@E`!`!A*#D@*2 +MLL.0I)+@E`^0I)'@E`!09*L3JA2I%9``!A)'-_^N\)``"!)'-R_]Y?`^_)"D +MD>##$_ZCX!/_T^V?[)Y``N$OD*21X/RCX/VN!'@"SL,3SA/8^?NJ!NS#$_[M +M$RO_[CK^JQ.J%*D5$D<,TY_E\)Y0`N$RX0WE#Q,3$U0?D*2C\.4/5`>C\.#_ +M=`%^`*@'"(`%PS/.,\[8^4Y_`&`"?P&0I*/@));U@N0TFO6#X%]@=72F)0_U +M@N0TGO6#X/WT8#N0I)S@D*:-\'L!KP\2A\^0I*/@));U@N0TFO6#P(/`@N#_ +MD*2DX/YT`:@&"(`"PS/8_/1?T(+0@_#A,I"DH^`DEO6"Y#2:]8/`@\""X/^0 +MI*3@_G0!J`8(@`+#,]C\]%_0@M"#\)"DD>#^H^#_TY3H[I0#0`B0I)MT!?"` +M%M/OE,CNE`!`")"DFW0"\(`%Y)"DF_#E#R7@))7U@N0TE/6#X/46H^#U%^20 +MI*7PJQ.J%*D5D*2EX/UU\`*D]8*%\(,21S?_KO"0I)O@_.^H!`B`!<[#$\X3 +MV/G_JQ"J$:D2C8)U@P`2)C?]?``2)ICO)1?U%^XU%O46D*2EX`3PX+0%JZL0 +MJA&I$I``!1(F-_U\`)"DF^#_D*21X/ZCX*@'"(`%SL,3SA/8^?\2)IC3Y1>? +MY1:>0`SE%Y_U%^46GO46@`7D]1;U%W2F)0_U@N0TF_6#X&`0=*8E#_6"Y#2; +M]8/@%/#A,N4/)>`DE?6"Y#24]8/E%O"CY1?PKA:O%^3\_9"DC^!U\`200MT2 +M2(,22'/#$D>L0`+A%'01)0_U@N0TE/6#X/]TEB4/]8+D-)GU@^#^TY]``^Z` +M&G26)0_U@N0TF?6#X/]T$24/]8+D-)3U@^##GY"DG?"0I)W@TY0$0!/E#R7@ +M)*;U@N0TFO6#Y/"C\(`HY0\EX"2F]8+D-)KU@^#^H^!.8!3E#R7@)*;U@N0T +MFO6#=/_U\!)&]I"DC^!U\`200MT22(,22%?E#R7@))7U@N0TE/6#[O"C[_#E +M#R7@)*;U@N0TFO6#X/ZCX$YP):\/$H`:@!Z0I(_@)>`D+?6"Y#1$]8/3=`&3 +ME1?DDY460`,2@Y+E#R7@))7U@N0TE/6#H^"0ID;PD*2.X)"F1?"K#^3]_Q)_ +MG^3U%O47`I*&=*8E#_6"Y#2?]8/@^V0%8`,"D.J0I(_@_:\/$H=5=!8E#_6" +MY#2:]8/O\'7P$.4/D($!$DB#X%0'D*2>\'26)0_U@N0TF?6#X/_#E#!0%.20 +MI)[P=*8E#_6"Y#2?]8/D`I!G=!8E#_6"Y#2:]8/@9`%@`P*0D'0F)0_U@N0T +MG/6#X&0*8%'O)`7_Y#/^=($E#_6"Y#23]8/@_=.?[F2`^'2`F%`R[20%_^0S +M_G26)0_U@N0TF?6#X-.?[F2`^'2`F%`4="8E#_6"Y#2@]8/@_Y"DC^!O8#^0 +MI)[@_W`$!/"`#^^0I)ZT`05T`_"``W0%\'26)0_U@N0TF?6#X/]T@24/]8+D +M-)/U@^_P="8E#_6"Y#2<@"MTIB4/]8+D-)_U@^3P="8E#_6"Y#2<]8/@!/"` +M$N20I)[P=*8E#_6"Y#2?]8/D\)"DC^#_="8E#_6"Y#2@]8/O\'7P!.4/D)89 +M$DB#X,03$U0#(.`"05QT)B4/]8+D-)SU@^3PD*2>\'2F)0_U@N0TG_6#Y/!! +M7.MD!F`"08;U%O47=?`0Y0^0@0$22(/@5`>0I)[PD*21X/ZCX/_3E.CNE`-` +M")"DFW0%\(`6T^^4^NZ4`$`(D*2;=`+P@`7DD*2;\)"DF^#][Z@%"(`%SL,3 +MSA/8^?^018[DD_U\`!(FF)"DG^[PH^_PY/48JQ.J%*D5=?`"Y1BD]8*%\(,2 +M1S?_KO"0I)O@_>^H!0B`!<[#$\X3V/G_Y1B018F3_7P`$B:8[R47]1?N-1;U +M%L.0I*#@E1>0I)_@E19`!P48Y1BT!:KE&,,3]1B0I)[@)`'_Y#.BYQ/O$Y"D +MHO#3E1A`!N"5&/"`!>20I*+P=`$E#_6"Y#23]8/@PQ/_D*2BX,0S5.`O!/]T +M`24/]8+D-)/U@^_P=`$E#_6"Y#23]8/@PY3`0`YT`24/]8+D-)/U@W3`\'0! +M)0_U@N0TD_6#X,03$U0#D*2B\.`EX/!P`H`%D*2BX!20I)[PTY"DE."4`Y"D +MD^"4`$`%Y)"DGO!U\!#E#Y"!`1)(@^!4^/^0I*'PD*2>X$__D*2A\'7P$.4/ +MD($!$DB#[_!TIB4/]8+D-)_U@^#3E`5TIE`.)0_U@N0TG_6#X`3P@`LE#_6" +MY#2?]8/D\)"DD^#^H^#_PW3_G_UT_Y[\Y0\EX"2F]8+D-)SU@^#ZH^#3G>J< +MY0]0$R7@)*;U@N0TG/6#[H_P$D;V@!`EX"2F]8+D-)SU@W3_\*/PD*25X/ZC +MX/_#=/^?_73_GOSE#R7@)*;U@N0TG?6#X/JCX-.=ZISE#U`3)>`DIO6"Y#2= +M]8/NC_`21O:`$"7@)*;U@N0TG?6#=/_PH_"0I)?@_J/@^\-T_YO_=/^>_G3_ +ME`#]=/^4`/R0E)$22&?3$D>LD)214!D22&>0I)?@_J/@_^3\_1)';Y"4D1(G +M2(`'$B=4_____^3]KP\2B;\%#^4/PY2`4`,"BEDBTQ"O`20IJ'P_'7P".5TD(D`O`82 +M$DB#Y8(L]8+D-8/U@^!4#X`.$DB#Y8(L]8+D-8/U@^"0IJ/PD*:CX&`^Y/5U +M=`%^`*AU"(`%PS/.,\[8^?^0IJ/@^^];8!KL=?`(I"5UD*:A\.U@&>#3E`M` +M$^`D(/"`#05UY76T",4,[&0'<(>0IJ#@_W7P!.5TD)86$DB#[_"0IJ'@_G7P +M!.5TD)87$DB#[O!U\!#E=)"!`!)(@^#\5'_][%2`_.W3GT`%D*:@@`CMPYY0 +M!I"FH>!,_70F)73U@N0TH/6#[?!U\`3E=)"6&1)(@^`3$U0#D*:-\.3[KW02 +MA\]U\!#E=)"!`Q)(@^3PD*:@X/_#E#9`$'26)73U@N0TE?6#=`7P@&KOPY0L +M0!!TEB5T]8+D-)7U@W0$\(!4D*:@X/_#E!1`$'26)73U@N0TE?6#=`/P@#KO +MPY0,0!!TEB5T]8+D-)7U@W0"\(`DD*:@X,.4!'260`XE=/6"Y#25]8-T`?"` +M"R5T]8+D-)7U@^3PT-"2KR*0I)$22)@2)AY4?Y"DE/"0``$2)C?_5!^0I);P +M[U2`Q!,3$U0!D*25\)```A(F-_]4`Y"DE_#O5##$5`^0I)KPD``"$B8W_U1` +MQ!,35`.0I)CP[U2`Q!,3$U0!H_"0``(2)C?_5`C^$Q,35!^0I)OP[U0$$Q-4 +M/Z/PD*1]X+0""Y"DFN!@!>3_$D_5D*1^X+0!'9"DD1)(CY``!1(F-U3P<`B0 +M``82)C=@!7\!$D_5D*29X%0!Q#,S,U2`_Y"DE.#^=?`$D)89$DB#X%1_3_"0 +MI)C@5`'$,S-4P/]U\`3ND)89$DB#X%2_3_"0I)O@8`,"F$Z0I);@5!__D*24 +MX/YU\`20EA@22(/@5.!/\)"DE^!4`_]U\`3ND)89$DB#X%3\3_#O)>`EX/^0 +MI)3@_G7P!)"6&1)(@^!4\T_PD*25X%0!Q#-4X/]U\`3ND)88$DB#X%3?3_"0 +MI)K@5`/$5/#_D*24X/YU\`20EAD22(/@5,]/\'06+O6"Y#29]8/@5/OPD*24 +MX"06]8+D-)GU@\"#P(+@_Y"DG.`EX"7@_N].T(+0@_#D_^\D`_WD,_R0I)$2 +M2(^-@HR#$B8W_I"DE.!U\`B0B0`22(/E@B_U@N0U@_6#[O`/[[0$S9"DE.#_ +M$I.J(I"DD1)(F!(F'O4/)!;U@N0TF?6#X%2\\'06)0_U@N0TF?6#P(/`@N#_ +MD*21$DB/D``#$B8W5`'^[T[0@M"#\'06)0_U@N0TF?6#P(/`@N#_D*21$DB/ +MD``#$B8W5`+^[T[0@M"#\'06)0_U@N0TF?6#P(/`@N#_D*21$DB/D``#$B8W +M5$#^[T[0@M"#\.4/PY2`4!60``(2)C?_=)8E#_6"Y#29]8/O\"+E#[2`"I`` +M`A(F-Y"5E?`B$B8>D*21\)```1(F-Y"DDO"0``(2)C=4`?]@:)"DD>#3E(!` +M7Z/@TY2`0%B0I)7O\)"4D1)(2Y"DEN_PD)21$DA+>`@2)R*0I)?O\)"4D1)( +M2W@0$B_PD*23=`WPD*2A=`7PD)21$B=4 +M`````$&7[V`"09>0I)'@_].4@%!'D*25[_`EX"2F]8+D-)WU@^#^H^"0I);P +M[J/PD*21X/TEX"2F]8+D-)SU@^#^H^"0I)CP[J/P=?`0[9"!`!)(@^"0I)KP +M@`B0I)'@D*25\)"DDN#_TY2`4$>0I)OO\"7@)*;U@N0TG?6#X/ZCX)"DG/#N +MH_"0I)+@_27@)*;U@N0TG/6#X/ZCX)"DGO#NH_!U\!#MD($`$DB#X)"DH/"` +M")"DDN"0I)OPD*23=`3PD*2A=`SPD*21X/\EX"2F]8+D-)WU@^3PH_"0I)+@ +M_B7@)*;U@N0TG?6#Y/"C\.\EX"2F]8+D-)SU@^3PH_#N)>`DIO6"Y#2<]8/D +M\*/P>P%ZI'F3$E_=?P0"6J&0`(_@,.98D`"-X&0#<%"0`(_@_I``CN#][?^0 +MI(ON\*/O\.20I(KPD*2*X/W_D*2,X"__D*2+X#0`CX+U@^#[Y/\25:Z0I(K@ +M!/#@PY000->0`(_@,.`'Y/U_C1(ZEB+3$*\!P\#0D*;5[_"0`(_@,.9)D`"- +MX&0!<$&0IM;PD*;6X/V0IM7@=?`0D($`$DB#Y8(M]8+D-8/U@^#[Y/\25:Z0 +MIM;@!/#@PY000-&0`(_@,.`'Y/U_C1(ZEM#0DJ\BD`"/X##E*I``CN!D!7`B +MH^#_D`".X/YT`"_U@N0T@?6#[O"0`(_@,.`'Y/U_CA(ZEB*0I(KO\)``C^`P +MYDR0`(W@9`-P1)"DB_"0I(O@_9"DBN#$5/`D@/6"Y#2`]8/E@BWU@N0U@_6# +MX/OD_Q)5KI"DB^`$\.##E!!`SI``C^`PX`?D_7^-$CJ6(N3U#>3U#N4.M`,> +M_^4-Q%3P)(#U@N0T@/6#Y8(O]8+D-8/U@W1`\(`;Y0W$5/`D@/6"Y#2`]8/E +M@B4.]8+D-8/U@^3P!0[E#K00NP4-Y0VT"+$BD*;9[_"C[?"0`/'@5/!D(&`" +MH2B0IMK@M`$=D*;9X+0+%I"F:Q(G5```#`"0IF\2)U0```P`@!20IFL2)U0` +M``P`D*9O$B=4```(`'^L?@@27JJ0IMK@<"J0IMG@_V0-8`3OM`X=D*9K$B=4 +M```#`)"F;Q(G5````P!_K'X($EZJ@`Z0IMK@M`$=D*;9X+0+%I"F:Q(G5$`` +M``"0IF\2)U1`````@#F0IMK@9`)P`J%WD*9K$B=4```#`)"F;Q(G5````@!_ +MK'X($EZJD*9K$B=40````)"F;Q(G5`````!_Q(!*D*;:X'`ED*;9X/]D#6`$ +M[[0.&)"F:Q(G5````P"0IF\2)U0```,`?ZR`'Y"FV>#3E`Y0&Y"F:Q(G5``` +M`P"0IF\2)U0```(`?ZQ^"!)>JB*0!%3@?P`PYP)_`2*0IMSM\)"FV^_PTY0. +M4!6Q>.]@*;%X[V0!<"*0IMS@_>3_@!60IMO@TY0.0!"Q>.]P"9"FW.#]?P&` +M`[%X(I"FQ^WPD*;&[_!P=Y"F:Q(G5#````"0IF\2)U0`````=`C__A)>JI"F +M:Q(G5`````Z0IF\2)U0````(?S!^"!)>JI"F:Q(G5`````.0IF\2)U0````! +MT<20IFL2)U0P````D*9O$B=4,````'0(__X27JJ0!%3@5'^0ILCPX)`$5/`B +MD*;&X&0!<':0!%3@1("0ILCPX)`$5/"0IFL2)U0P````D*9O$B=4`````'0( +M__X27JJ0IFL2)U0````.D*9O$B=4````!G\P?@@27JJ0IFL2)U0````#D*9O +M$B=4`````M'$D*9K$B=4,````)"F;Q(G5"````!T"/_^$EZJ(G\T?@@27JJ0 +MIL;@_Z/@_9"FX>WP[V`"X=W@)/U0#6`I%&!$%'`"X7\"H<^0K+D2)U1W=W=W +M?[!^#!(W79"LN1(G5'=W=W<"H'"0K+D2)U14,W=P?[!^#!(W79"LN1(G5%0S +M=W`"H1:0K+D2)U1W=W=W?[!^#!(W79"LN1(G5'=W=W=_L'X.$C==D*9K$B=4 +M/_```)"F;Q(G5``0``!_M'X,$EZJD*9K$B=4/_```)"F;Q(G5``0```"HJI"F:Q(G5#_P``"0IF\2)U0````` +M`J'(D*;AX!1@<11P`P*@J!1P`P*@^Q1P`P*@J!1P`P*A;20%8`(ASY"LN1(G +M5'JI"F:Q(G5#_P``"0IF\2)U0`````(JI"LN1(G5'J1YE)"E!Q)( +MF'JD>9$QT'L!>J1YT)"E!Q)(F'JD>;1Q4WL!>J1Y^)"E!Q)(F'JD>>P27B51 +M].3_$JOV>P%ZI'GLY/\27PQ_`1*K]GL!>J1Y^'\!$E\,>P%ZI'G0D*4'$DB8 +M>J1YM)&(>P%ZI'F4D*4'$DB8>J1YD7'CT-"2KR*0IFL2)U2`````D*9O$B=4 +M`````!)>II`%(G0_\)`%4.!4]_"CX%3W\)"F:Q(G5````/^0IF\2)U0````` +M=`C__A)>JI"F:Q(G5`````^0IF\2)U0````,?SA^"`)>JI"E!!)(F)"F:Q(G +M5(````"0IF\2)U0`````$EZFY)"E"O"0I0K@_\.4!U!C[R7@)*7U@N0T1?6# +MY)/^=`&3_Q(VSI"E!!)(CY"E"N!U\`2D]8*%\(,22">0I0K@)>`DL_6"Y#1% +M]8/DD_YT`9/_$C;.D*4'$DB/D*4*X'7P!*3U@H7P@Q)()Y"E"N`$\("3(I"E +M!!)(F)"F:Q(G5(````"0IF\2)U0`````$EZFY)"E"O"0I0022(^0I0K@__6" +M=8,`$B8W_N\EX"2/]8+D-$7U@^23_'0!D_6"C(/N\)"E"N`$\."T`\KDD*4* +M\)"E"N#])>`DE?6"Y#1%]8/DD_YT`9/_P`;`!Y"E!Q)(CW7P!.VD]8*%\(,2 +M1]V0K+D2)TC0!]`&$C==D*4*X`3PX,.4"$"Y(I"E!!)(F)"F:Q(G5(````"0 +MIF\2)U0`````$EZFY)"E"O"0I0K@_27@)*7U@N0T1?6#Y)/^=`&3_\`&P`>0 +MI0022(]U\`3MI/6"A?"#$D?=D*RY$B=(T`?0!A(W79"E"N#])>`DL_6"Y#1% +M]8/DD_YT`9/_P`;`!Y"E!Q)(CW7P!.VD]8*%\(,21]V0K+D2)TC0!]`&$C== +MD*4*X`3PX,.4!U`"@:J0IFL2)U2`````D*9O$B=4@````!)>II"LN1(G5``` +M``!_@'X,$C==D*RY$B=4`````'^$?@P2-UV0K+D2)U0`````?XA^#!(W79"L +MN1(G5#P```!_C'X,$C==D*RY$B=4`````'^X?@P2-UV0K+D2)U0```"`?Y!^ +M#!(W79"LN1(G5`````!_E'X,$C==D*RY$B=4(`0``'_$?@P2-UV0K+D2)U0@ +M````?\A^#!(W79"LN1(G5`````!_@'X.$C==D*RY$B=4`````'^$?@X2-UV0 +MK+D2)U0`````?XA^#A(W79"LN1(G5#P```!_C'X.$C==D*RY$B=4`````'^X +M?@X2-UV0K+D2)U0```"`?Y!^#A(W79"LN1(G5`````!_E'X.$C==D*RY$B=4 +M(`0``'_$?@X2-UV0K+D2)U0@````?\A^#@(W79"E1N_PD*9K$B=4@````)"F +M;Q(G5``````27J:0I4<22$MX`1(G(N1[$GH!^?C#$D>L8!>0I4L22$MX`1(G +M(N1[[GH#^,,21ZQP:9"E1N!U\!RD),OU@N0T1?6#Y)/^=`&3_\`&P`>0IFL2 +M)U0```/_D*9O$B=4```!`-`'T`827JJ0I4;@=?`0IFL2)U0```/_D*5'$DA+D*9O$B=(T`?0!A)>JI"E1N!U +M\!RD),OU@N0T1?6#Y)/^=`&3_\`&P`>0IFL2)U0#_P``D*5+$DA+>!`2)S60 +MIF\2)TC0!]`&`EZJD*5&[_"0IFL2)U2`````D*9O$B=4@````!)>II"E1N!U +M\!RD),_U@N0T1?6#Y)/^=`&3_\`&P`>0K+D2)U0```"`T`?0!A(W79"E1N!U +M\!RD)-'U@N0T1?6#Y)/^=`&3_\`&P`>0K+D2)U0@!```T`?0!A(W79"E1N!U +M\!RD)-/U@N0T1?6#Y)/^=`&3_\`&P`>0K+D2)U0@````T`?0!A(W79"E1N!U +M\!RD)-7U@N0T1?6#Y)/^=`&3_\`&P`>0IFL2)U0```?_D*5+$DA+D*9O$B=( +MT`?0!A)>JI"E1N!U\!RD)-?U@N0T1?6#Y)/^=`&3_\`&P`>0IFL2)U0```?_ +MD*5'$DA+D*9O$B=(T`?0!@)>JI"E1N_PH^WPY*/PD*5&X'7P#J0DK?6"Y#1% +M]8/DD_YT`9/_P`;`!Y"LN1(G5``0``#0!]`&$C==D*RY$B=4^@```'^`?@D2 +M-UV0K+D2)U3X````?X!^"1(W77\#?@`2.FF0I4;@=?`.I"2M]8+D-$7U@^23 +M_G0!D__`!L`'D*RY$B=4`````-`'T`82-UWDD*5)\)"E1N!U\!RD),WU@N0T +M1?6#Y)/^=`&3_Q(VSN3_[E0$_N3]_'@*$B`$\("\D*5)X,.4%$`"8=Z0I4?@8`)!;9"E1N!U\!RD),WU@N0T1?6# +MY)/^=`&3_Q(VSN3_[E00_N3]_)"E2A(G2.3__OW\D*5*$DAGPQ)'K'!]D*5& +MX'7P#J0DK?6"Y#1%]8/DD_YT`9/_P`;`!Y"LN1(G5`(```#0!]`&$C==D*5& +MX'7P'*0DS?6"Y#1%]8/DD_YT`9/_$C;.Y/_^[%0'_)"F%!(G2)"E1N!U\`ZD +M)*WU@N0T1?6#Y)/^=`&3_\`&P`>0K+D2)U0$````827DD*5.\)"E2.`$\.!D +M"F`"`<)A\)"E1N!U\!RD),WU@N0T1?6#Y)/^=`&3_Q(VSN3_[E0(_N3]_)"E +M2A(G2.3__OW\D*5*$DAGPQ)'K&`"85R0I4;@=?`.I"2M]8+D-$7U@^23_G0! +MD__`!L`'D*RY$B=4!@```-`'T`82-UV0I4;@=?`JI"E1N!U\!RD),OU@N0T +M1?6#Y)/^=`&3_\`&P`>0IFL2)U0#_P``D*9O$B=4`````-`'T`827JKDD*5. +M\)"E2.`$\.!D"F`"`<*`$N20I4[PD*5(X`3PX&0*8`(!PI"E3N#_(I"E!._P +MY*/PD*4A\*/PH_"C\'@H?*5]`7O_>D5Y^?Y_!A)&T.20I27PH_"0H\?@D*4G +M\)"F:Q(G5(````"0IF\2)U0`````$EZFD*4$X)"LN7!.$B=4=W=W=Y!%I^23 +M_G0!D_\2-UV0K+D2)U1W=W=WD$6IY)/^=`&3_Q(W79"LN1(G5`````"01;7D +MD_YT`9/_$C==D*RY$B=4`````(!,$B=4`````)!%I^23_G0!D_\2-UV0K+D2 +M)U0`````D$6IY)/^=`&3_Q(W79"LN1(G5'=W=W>01;7DD_YT`9/_$C==D*RY +M$B=4=W=W=Y!%M^23_G0!D_\2-UV0I03@=?`.I"2K]8+D-$7U@^23_G0!D__` +M!L`'D*RY$B=4&7D9>=`'T`82-UV0I03@=?`JI"F:Q(G +M5$````"0IF\2)U1`````?\1^"!)>JI"E!.!U\`ZD)+/U@N0T1?6#Y)/^=`&3 +M_\`&P`>0IFL2)U0```#_D*9O$B=4````!-`'T`827JJ0IFL2)U2`````D*9O +M$B=4`````!)>II"E2!(G5``(``(27XR0I4@2)U0``@``D*4$X/]],!)?DY"E +M2!(G5``#__V0I03@_WTQ$E^3D*5($B=4``_H/Y"E!.#_?3(27Y.0I4@2)U0` +M"3'5D*4$X/]]91)?DY"E2!(G5``(H`&0I03@_WV/$E^3D*RY$B=4``"``'\, +M?@D2-UV0K+D2)U0#``$`?P!^"Q(W79"E!.!U\!RD),/U@N0T1?6#Y)/^=`&3 +M_\`&P`>0IFL2)U0````!D*9O$B=4`````=`'T`827JJ0K+D2)U0I`"``?WA^ +M"1(W79"LN1(G5*D`(`!_?'X)$C==D*RY$B=4`$8I$'^$?@D2-UV0IFL2)U2` +M````D*9O$B=4@````!)>II"CR."0I00PX"7@=?`0K+D2)U1H%CZ6@"V0H\?@,.0MD*4$X'7P'*0DQ_6"Y#1%]8/DD_YT +M`9/_P`;`!Y"LN1(G5"@6/I;0!]`&$C==D*4$X'7P'*0DV?6"Y#1%]8/DD_YT +M`9/_P`;`!Y"LN1(G5!@`C!#0!]`&$C==D*4$X'7P'*0DV_6"Y#1%]8/DD_YT +M`9/_P`;`!Y"LN1(G5#@`C!#0!]`&$C==D*4$X'7P'*0DR?6"Y#1%]8/DD_YT +M`9/_P`;`!Y"LN1(G5`````#0!]`&$C==Y)"E!?"0I03@_^3]$JBWD*4E[_#[ +MD*84$DA+D*4%X/HEX"7@).3U@N0TI?6#$B=(D*88$DA+ZB7@)>`D\/6"Y#2E +M]8,2)TCK8`:0I2'@!/"0I07@!/#@PY0#0*F0IFL2)U2`````D*9O$B=4```` +M`!)>II"E!.#_?0@27A;D_^Y4_/[M5`_]Y/R0IET2)TB0IED2)U0`!_X`D*4$ +MX/]]6'P`$EVED*9K$B=4@````)"F;Q(G5(`````27J:0I27@<`)A\)"F:Q(G +M5(````"0IF\2)U0`````$EZFD*5($B=4``@``!)?C)"E2!(G5``#``"0I03@ +M_WTP$E^3D*5($B=4``/W_Y"E!.#_?3$27Y.0I4@2)U0`#^>_D*4$X/]],A)? +MDY"E2!(G5``(@`&0I03@_WV/$E^3D*5($B=4``DQT)"E!.#_?6427Y.0I4@2 +M)U0`````$E^,D*9K$B=4@````)"F;Q(G5(````!_>'X)$EZJD*9K$B=4@``` +M`)"F;Q(G5`````!_?'X)$EZJD*RY$B=4``"``'\,?@D2-UV0K+D2)U0`1JB1 +M?X1^"1(W79"F:Q(G5(````"0IF\2)U2`````$EZFD*4$X'7P'*0DV?6"Y#1% +M]8/DD_YT`9/_P`;`!Y"LN1(G5#@`C!#0!]`&$C==D*4$X'7P'*0DV_6"Y#1% +M]8/DD_YT`9/_P`;`!Y"LN1(G5!@`C!#0!]`&$C==D*4$X'7P'*0DQ?6"Y#1% +M]8/DD_YT`9/_P`;`!Y"LN1(G5`(4`1G0!]`&$C==D*4$X/]P)>]U\!RD),?U +M@N0T1?6#Y)/^=`&3_\`&P`>0K+D2)U0H%@U`@":0I03@=?``$2 +M)R+D_^Y4@/[L5`/\D*9O$B=(?WA^"1)>JI"F:Q(G5```!_^0I0?@)>`EX"3P +M]8+D-*7U@Q)(2W@0$BII"E!.#_?0$2J+>0I2;O\/N0IA022$N0I0?@^B7@)>`D +M_/6"Y#2E]8,2)TB0IA@22$OJ)>`EX"0(]8+D-*;U@Q(G2.M@!I"E(N`$\)"E +M!^`$\.##E`-0`D'XD*4AX'`!`2)R+K)>`D+O6"Y#2E]8/N +M\*/O\)"E!^#[)>`EX"3P]8+D-*7U@Q)(2W@0$B`D_/6"Y#2E]8,22$MX$1(G(NLEX"0Z]8+D-*7U@^[PH^_P +MD*4'X/LEX"7@)`CU@N0TIO6#$DA+>!$2)R+K)>`D0/6"Y#2E]8/N\*/O\)"E +M!^`$\.!D`V`"@1?DD*4&\)"E(>#_D*4&X/[#GT`"P5+N!)"E"/"0I2'@_Y"E +M".#^PY]``L%"[B7@)"[U@N0TI?6#X/ZCX/^0I0;@)>`D+O6"Y#2E]8/@_*/@ +MPY__[)[^,Y7@_?R0I1D2)TCD?P3^_?R0I1D22&?#$D>60`+!.G3_?_S^_?R0 +MI1D22&?3$D>64`+!.I"E".`EX"0T]8+D-*7U@^#^H^#_D*4&X"7@)#3U@N0T +MI?6#X/RCX,.?_^R>_C.5X/W\D*4=$B=(Y'\$_OW\D*4=$DAGPQ)'ED`"P3IT +M_W_\_OW\D*4=$DAGTQ)'EE`"P3J0I0C@^R7@)"[U@N0TI?6#X/ZCX/^0I0;@ +M^B7@)"[U@N0TI?6#X/RCX"__[#ZBYQ/^[Q/_[C.5X/W\D*4)$B=(ZR7@)#3U +M@N0TI?6#X/ZCX/_J)>`D-/6"Y#2E]8/@_*/@+__L/J+G$_[O$__N,Y7@_?R0 +MI0T2)TB0I2-T`?"`")"E".`$\('KD*4CX&0!8`B0I0;@!/"!U9"E(^"T`1J0 +MI0D22$N0I4<2)TB0I0T22$N0I4L2)TB`%)"E1Q(G5````@"0I4L2)U0````` +MD*4$X/\2IZ*0I2+@0I4<2)U0```$`D*5+$B=4``````*X:^20I0;PD*4B +MX/^0I0;@_L.?0`,"N#;N!)"E"/"0I2+@_Y"E".#^PY]``P*X)>XEX"0Z]8+D +M-*7U@^#^H^#_D*4&X"7@)#KU@N0TI?6#X/RCX,.?_^R>_C.5X/W\D*49$B=( +MY'\$_OW\D*49$DAGPQ)'ED`#`K@<=/]__/[]_)"E&1)(9],21Y90`P*X')"E +M".`EX"1`]8+D-*7U@^#^H^#_D*4&X"7@)$#U@N0TI?6#X/RCX,.?_^R>_C.5 +MX/W\D*4=$B=(Y'\$_OW\D*4=$DAGPQ)'ED`#`K@<=/]__/[]_)"E'1)(9],2 +M1Y90`P*X')"E".#[)>`D.O6"Y#2E]8/@_J/@_Y"E!N#Z)>`D.O6"Y#2E]8/@ +M_*/@+__L/J+G$_[O$__N,Y7@_?R0I1$2)TCK)>`D0/6"Y#2E]8/@_J/@_^HE +MX"1`]8+D-*7U@^#\H^`O_^P^HN<3_N\3_^XSE>#]_)"E%1(G2)"E)'0!\(`) +MD*4(X`3P`K;(D*4DX&0!8`F0I0;@!/`"MK&0I23@M`$:D*41$DA+D*5'$B=( +MD*45$DA+D*5+$B=(@!20I4<2)U0```$`D*5+$B=4`````)"E!.#_`J9WTQ"O +M`#_=`&H!PB` +M`L,SV/S_D`!%X$^`%Y"FW>#_=`&H!PB``L,SV/ST_Y``1>!?_7]%@'Z0IMW@ +M)/CPX"0$_W0!J`<(@`+#,]C\]/^0`$/@7_U_0Q(ZEI"FW>#_=`&H!PB``L,S +MV/S_D`!#X$_]?T,2.I:0IM[@8!V0IMW@)`3_=`&H!PB``L,SV/S_D`!"X$_] +M?T*`')"FW>`D!/]T`:@'"(`"PS/8_/3_D`!"X%_]?T(2.I;0T)*O(I"D=^!U +M\#^$K?#M)>`EX/UT."_U@N0T_/6#[?"0I'?@!/`B$B8>D*21\/1@'."0I'3P +MD``"$B8W=?`*I/^0I'7E\/"C[_`"8'V0I)'@D*1T\.2C\*/PD`%?\"*0H[[@ +M,.`ND*,=X+0!)Y"FXN`$\."T"@N0H\#@!/#DD*;B\)"CP.#_D*._X+4'!N2C +M\!)7Y"(2)A[_5`'^D*.^X%3^3O#OPQ,PX`J0``$2)C>0H[_P(I"CP>`PX#:0 +MH\3@!/#@_Y"CPN!O<">0!I+@(.(1D*/&X'`+$E?DD*/%X`3P@`:0!I)T!/#D +MD*/$\)"CQO`BY)"CH?"C\)"CH.!4#_!4\/"0HY[@5/WP5/?PD*.G=`'PH_"0 +MHY[@5/OPH^!4^_#DD*.J\)"CJ70'\)"CK.3PHW0"\.20HZ7PD*.>X%3^\)"C +MHW0,\)"CGN!4W_"0HZ1T#/"0HY[@5+_P5'_PH^!4_O!4_?!4]_"0HZX2)U0` +M````D*(JX+0!")"CJW3_\(`2D*(JX)"CJ[0#!734\(`#=$'PD*.R=`'PHW0% +M\*/@5`%$*/"C=`7PY*/PH^!4_?!4^_!4]_!4[_!4W_!4O_#DH_`BD`0:X/1@ +M`W\`(I`$&^!4!V0'?P%@`G\`(G%`[V0!8`B0`;AT`?"`9Y"CI>#_5`-@")`! +MN'0"\(!6D*.CX/[DPYY0")`!N'0$\(!$[S#B")`!N'0(\(`XD*.EX##D")`! +MN'00\(`ID*.?X!,35#\@X`B0`;AT(/"`%I"CN.!@")`!N'2`\(`(D`&XY/!_ +M`2*0`;ET!/!_`"+O)/Y@#`1P*)"CIW0!\*/P(NUP"I"CM>"0HZ?P@`60HZ?M +M\)"CI^"C\)"CG^!$"/`B[V`^D*,=X&0!<#:0HY_@5/[PD`4B=`_PD`8$X%2_ +M\.3_$E>FOP$.D*.>X$1`\)"CI'0&\"*0`;ET`?"0`;AT"/`BD`4B=&_PD*.D +M=`+P(I`%(N3PD*.D=`3P(G0)+?6"Y#3\]8/@5#_P[V`=="DM]8+D-/SU@^!$ +M$/!T"2WU@N0T_/6#X$2`\")T*2WU@N0T_/6#X%3O\'0)+?6"Y#3\]8/@1$#P +M(I"B+>#^D`0X%1_\)`&!.!4?_"0HZ1T#/`B +M[F0&#][\.4@)#] +4$E`$Y/"``W0!\)#]$.WPKP8BCIL` +` +end diff --git a/sys/contrib/dev/rtwn/rtwn-rtl8821aufw.fw.uu b/sys/contrib/dev/rtwn/rtwn-rtl8821aufw.fw.uu new file mode 100644 index 000000000000..5d9138eed7f3 --- /dev/null +++ b/sys/contrib/dev/rtwn/rtwn-rtl8821aufw.fw.uu @@ -0,0 +1,621 @@ +begin 644 rtwn-rtl8821aufw.fw.uu +M`2$0`!8````1(A,Q?&P``%H-```````````````````"2;$"9],````````` +M`````````FA<``````````````````)OO@`````````````````````````` +M`````````````F@$```````"7GD```````)OO17P_P\````5\`\`````!?#_ +M#P````7P#P`````0\/\/````$/`/`````/4/``````#P#P``````#0`````` +M`!#P__\````0\#\`````%?`_`````!7PS_\````*"`,#``0)!P,#``0(!@," +M``0(!0,!``0-"@<%``@,"@<$``@+"@8%``@+"@4#``@+"@,"``@4$@P$`!`4 +M$@D$`!`D(AP2`"`D(A@,`"`D(A0&`"`D(@\$`"`D(0H$`"`C(0P$`"`C'PH$ +M`"`B'P\$`"`A'Q8,`"`Q+R`4`#`Q+Q@0`#`Q+!@,`#`Q*A0,`#`Q*!0``#`Q +M)!0``#`Q'A0``#`$!`0%!`0%!P<'"`H$!PH.$1,4%0,$!P<("PT/!04'!P@+ +M#0\%!0<'"`L-#P<("`H*#`X0$1$'"0D+"PT/$1$2!04'!P@+#0\/#P4%!P<( +M"PT/#P\$!`0%!P<)"0P.$!(%!@<-$!$2$@<("0D,#A$3"0D)"0P.$1,)"0D) +M#`X1$P4&"`D,#A(2$Q0'"`H+#1`1$106"0D)"0P.$1,3$PD)"0D,#A$3$Q,` +M```````````D)BH````?(24G*``````C)B@J`````",F*"H`````(R8H*@`` +M```@)2````+0```#Z```!+````9````'T````#P```!D```` +M>````*````#P```!0````9````'@```"6````R````#(```!&````>````+0 +M```#Z```!]````NX```3B```%W```!]`````R````1@```'@```"T````^@` +M``2P```&0```!]````?0```'T````,@```$8```!X````M````/H```$L``` +M!D````?0```'T```!]```@`"``0`"``,`!(`&``D`#``2`!@`&P`%``R`#P` +M4`!X`*``R`#P`%``>`"@`,@!+`&0`E@#(`!D`(P`\`%H`?0"6`,@`^@`9`", +M`/`!:`'T`E@#(`/H`!X`,@`\`%``>`"@`,@`\`$L`9``9`",`/`!:`'T`^@% +MW`G$"[@/H`!D`(P`\`%H`?0"6`,@`^@#Z`/H`&0`C`#P`6@!]`)8`R`#Z`/H +M`^@"!`8("@P0&"`P0%`!`0$"`0(#`P0$!04"!`8'!P@("`("`P,%!08&!08& +M!P<("0H%!@8'!P@)"@$#!@<'!P@("@H"!08'!P<("`H+!08&!P<("0H*"P4& +M!@<'"`D*"@L!`0$!`0(#!`4&!P@!`@,$!08'"`($!@<("@L,`P4&!P@*"PP% +M!@<("0H+#`($!@<("0L,#`P#!08'"`D+#`P,!08'"`D*"PP,#`4&!P@)"@L, +M#`P9!@0"`!@%(@50!5$+``@("0P,``X`",0(.`@L#%P,8`QD#&@,N`RP#+0. +M7`Y@#F0.:`ZX#K`.M`P`#)0,B`R,#.@,$`T`#)`,Q`S(#,P,U`R`#(0.``Z4 +M#H@.C`[H#A`-0`Z0#L0.R`[,#M0.@`Z$``$$`@,%```````````````````` +MPJ^`_C(2182%T`MUT`BJX,*,Y8HD9_6*Y8PT>?6,THSL)(?XYKP"`G3_PY6! +MM$``0,YY`WB`%N8(<`O"K^8PX0-$&/;2KPC9[>J+T"+E#/\C)('X#P@(OP,$ +M?P!X@>8PY/(`Y0S#GU`@!0QTAB4,^.;]IH$(YJX,O@("=/_-^.AM8.`(YL#@ +M@/;E#-.?0"?E#"2'^.:N#+X"`G3__1CFS?CE@6U@!M#@]AB`]>4,)(;(]A4, +M@-/E#",D@?A_!,*OYC#@`Q#B#'\`,.$',.,$?PA4]%1\QM*O5(!"!R)XAJ:! +M=`)@!O\(=O_?^W\#Y'B`]@CV"-_Z>(%V,)!*:W0!D\#@Y)/`X$.)`76*8'6, +M>=*,TJ\B`N_3E`)``W__(G2!+R_XYB#E],*OYD0P]M*OK@SNPY]0(0YTAB[X +MYOD(YAB^`@)T__WM:6`)"><9&?<)"8#S%A:`VN[3GT`$!8$%@>[3GT`B=(8N +M^`CF^>ZU#`*I@1@&!N;][6E@"1D9YPD)]QF`\QZ`V>\DAOCF!/CO+P202FN3 +M]@CO+Y/V?P`B[].4`D`#?_\B[R,D@?CF,.7TPJ_F5(SVTJ_E#+4'"G2&+_CF +M]8$"1?V'1F`]*@#I@4? +MY0RU!^-_`")TAR_XYOT8A@$/=(8O^*8!"(8$Y0RU!P*L@>UL8`@-":@%YO>` +M].4,M0?>B8%_`"+OTY0"0`-__R+O(R2!^,*OYC#E!3#@`M+DTN+&TJ]_`##B +M`0\"1Q8_"+O2__N2O[M2?WL2/PB +MZY_U\.J>0O#IG4+P[&2`R&2`F$7P(NN?]?#JGD+PZ9U"\.B<1?`BNP$'B8** +M@P))!5`%Z?@"28&[_@7I^`))C8F"BH,"21&[`0WE@BGU@N6#.O6#`DD%4`?I +M)8+X`DF!N_X'Z26"^`))C>6"*?6"Y8,Z]8,"21&[`0>)@HJ#`@AM4`7I^`)) +MF;O^!>GX`DFE(KL!#>6"*?6"Y8,Z]8,""&U0!^DE@O@"29F[_@?I)8+X`DFE +M(N#\H^#]H^#^H^#_(N23_'0!D_UT`I/^=`.3_R+@^*/@^:/@^J/@^R+DD_AT +M`9/Y=`*3^G0#D_LBI"6"]8+E\#6#]8,BX/NCX/JCX/DBZ_"CZO"CZ?`BT(/0 +M@OCDDW`2=`&3<`VCHY/X=`&3]8*(@^1S=`*3:&#OHZ.C@-_F_`CF_0CF_@CF +M_R+B_`CB_0CB_@CB_R+L]@CM]@CN]@CO]B+L\@CM\@CN\@CO\B("2>\"1EWD +MDZ/XY).C0`/V@`'R"-_T@"GDDZ/X5``O@!!I#D`0:0Z`&`F +MH[@!`@,$!08'"`D*"PP-#B0H+#`T.#Q`9&AL<'1X?("$B(R5F9VAI4&D2`!, +M_%@.7_1_`I&:[T0!_7\"48=_`I&:[U3^_7\"TQ"O`#$5`/[ +M#>3_<=QU\`3E)I"6%C$]X/OD_0]QW'7P!.4FD)87<==U\`3E)I"6&#$]X,03 +M5`'[#7\!<=QU\`3E)I"6&#$]X%0?^PUQW'7P".4FD(D`,3W@^^3]#W'<=?`( +MY2:0B0%QUW7P".4FD(D"<==U\`CE)I")`W'7=?`(Y2:0B00Q/>#[Y/T/<=QU +M\`CE)I")!7'7=?`(Y2:0B09QUW7P".4FD(D'<==_CY&:[S#@!N3]?XU1A]#0 +MDJ\B,3W@^PWO<`1T\(`6[[0!!'3T@`[OM`($=/B`!N^T`PQT_"WU@N0T`O6# +MZ_`B?__QV-,0KP'#P-#Q_G\`?@P2-[SO5/S_[)"D)!((;9"D)#$%D*JY$@AM +M?P!^#!(X!W\`?@X2-[SO5/S_[)"D)!((;9"D)#$%D*JY$@AM?P!^#A(X!U%] +M47%1<7^T?@@2-[SO1$#_[)"D)!((;9"D)#$%D*JY$@AM?[1^"!(X!Y`!`'0_ +M\*/@5/WPD`53X$0@\-#0DJ\BTQ"O`D*$DX/U_ +MDU&'D*$;X&`2D`$OX##G!700\(`&D`$O=)#P?PB1FN]$$/U_"%&'?P$2B*]_ +MD)&:[T0!_7^048=_%'X``CUZTQ"O`_P?X^1FN\PYDA_C9&:[V0! +M<#^0I$+PD*1"X/V0I$'@=?`0D($`,3WE@BWU@N0U@_6#X/OD_W'0`0'@1`+PD`$`=/_PD`:W=`GPD`:T=(;P?[1^"!(WO.]4 +MO__LD*0@$@AMD*0@,060JKD2"&U_M'X($C@'?P*1FN]$`?U_`E&'?P!^#!(W +MO.]$`__LD*0@$@AMD*0@,060JKD2"&U_`'X,$C@'?P!^#A(WO.]$`__LD*0@ +M$@AMD*0@,060JKD2"&U_`'X.$C@'T-"2KR+D]0WU#O4/=1"`K0U_4%&'K0Y_ +M45&'K0]_4E&'K1!_4T&'D`$PY/"C\*/PH_"0`3CPH_"C\*/P_7]048?D_7]1 +M48?D_7]248?D_7]308>0`31T__"C\*/PH_"0`3SPH_"C\*/P_7]448=]_W]5 +M48=]_W]648=]_W]708?1X/$,$H9*$H9IP;[Q7I"?G._P\3F0`61T`?"0!"/@ +M1(#P`C:#?_21FN\@Y0U_])&:[W\!(.0%?P(B?P,B?P%^`!(\['_RD9KO(.8, +M?P61FN]$@/U_!5&'(A*)"G\(D9KO5._]?PA1A^3_$HBOD*$6X/_$5`\PX`,2 +M8U0B?2"1!)"A%'0"\"+1">3]__'8D*$4=`'P(N3]?PP24.[D_?^0!2+O\)"? +MF^WP(M,0KP'#P-"Q8_&2T-"2KR)!H1*IJ8"[?__QV.20I#_PH_"0!?C@<`^C +MX'`+H^!P!Z/@<`-_`2+3D*1`X)3HD*0_X)0#0`J0`<#@1"#P?P`B?S)^`!(] +M>I"D/^1U\`$2"-:`O^!$`O#DD*0-\)"A1N"0I`[PY/O]?U1^`=,0KP'#P-"0 +MI`GN\*/O\)"D#>#U.Z/@]3P2-7J0I`G@_J/@]8*.@Z.CHW0%\-#0DJ\BY)"B +M^O"0H1K@8$Z0H)#@9`%P1I"B^@3PY)"A(?"0H1'@,.`5D*$5X+0"!>20HOKP +ML:#O<`20HOKPD*+ZX&`:D*$>X$00\.20I`WPD*$B$5*0H1W@(.("$>HB?0%_ +M!-,0KP'#P-"0I$SM\)"A%N#^Q!,35`,PX`)!1^[$$Q,35`$PX`)!1Y"A'>#^ +M;W`"04?O<`(AKB3^<`(AYR3^8$@D_'`"02(D_&`"03?NM`X"4;R0H1W@<`1_ +M`5'MD*$=X+0&`E&1D*$=X+0$#I"D3.#_8`42J\N``O%XD*$=X&0(8`)!-_'; +M03>0H1W@<`1_`5'MD*$=X+0&`E&1D*$=X+0.!U%,OP$"4;R0H1W@9`Q@`D$W +M44SO9`%@`D$W<85!-Y"A'>"T#@=13+\!`E&\D*$=X+0&`E&1D*$=X+0,!U%, +MOP$"<860H1W@9`1P7!*JZN]D`7!4T9^`4)"A'>"T#@=13+\!`E&\D*$=X+0& +M`E&1D*$=X+0,!U%,OP$"<860H1W@<`1_`5'MD*$=X+0$&A*L$X`5D*$=X+0, +M#I"A%^#_$Q-4/S#@`M$5D*$=X)`!NO"0H1S@D`&[\-#0DJ\BT8;O9`%@")`! +MN'0!\(`MD*$6X!,3$U0?,.`(D`&X=`+P@!F0H1S@TY0$0`B0`;AT"/"`")`! +MN.3P?P$BD`&Y=`+P?P`BD*$7X)`&!"#@#.!$0/!]!'\!<1:`#W$.D`4GX%1_ +M\)"A%70,\.3]_P)/V)"A%^##$R#@!'$2@!Z0!@3@1$#PX$2`\'T$?P%Q%I`% +M)^!$@/"0H15T!/#D_?\"3]B0I$OO\!)."9"D2^!@!N3]_Q)/V'T$?P%Q%I"A +M%70$\"+@5'_P?0Q_`=,0KP'#P-"0I$KO\!1@%11@&20"WP@`60H1SM\'^/$DR:[S#D,9"D2N`48`<48!TD`G`CD*$6X%0! +MQ#,S,U2`_Y"A'>!4?T_]?XB`!Y"A'.#]?XD22H?0T)*O(I"@D.!D`7`WD*$7 +MX%3]\'TL?V\23]A]"'\!$EEKOP$4D*$6X$2`\'T.?P%Q%I"A%70.\"*0`;ET +M`?"0`;@$\"+3$*\!P\#0BU&*4HE3D`4GX/54$@:)_U0!_I"A$>!4_D[^\.]4 +M`O_N5/U/__`2!HG^5`3][U3[3?^0H1'P[E0(_N]4]T[_\!(&B?Y4$/WO5.]- +M_Y"A$?#N5"#^[U3?3O_P$@:)_E1`_>]4OTV0H1'P[L,3(.`"@=_@(.`"@<9U +M5"$3$U0_,.`'L:Q#5`B`#.20H1+PH_!]0/_1R)"A$>#_$Q,35!\PX`-#5!+O +MQ%0/,.`#0U04D*$1X,035`#_Q!,35`,PX`1_!(`AL:#O8`1_`8`8?P*`%'54`9`% +M)^54\)"A%.!D!&`"H9O_$JB+H9N0H1'@_R#@`J%J0U0Q$Q-4/S#@![&L0U0( +M@`9]0.3_T#_ +MQ!,35`,PX`Z0H17@9`)@9N3]?P*`(9`%)^!$0/"0H17@M`(7\>VQH+\!"9"A +M'.#_?0&``^3]_Q'N@#N0H1W@D*$5\(`Q=50!D`4GY53PD*$5X+0"!GT!?P2` +M"Y"A%>"T"`9]`7\,$>[119"A'.#_?0$1[A*H3=#0DJ\BD`5#X'\`,.<"?P$B +MD`$T=$#P_>3_=!4O^.9-_O9T,"_U@N0T`?6#[O`B$9"0H2#@%)`%<_!]`G\" +ML;60H4S@,.`RD*%.X)`%<_"0H4_@8`04\(`AD*%-X!20H4_PD`5S=`'PY/\2 +M7D=]`G\"L;5]`7\"L;4B?2\23`1]"'\!<1:0H15T"/`BD*$:X&0!HBT8;O<`+1)R*0H1K@<`>0H1'@,.`0D*$1X##@ +M![&@OP$$@`/1)R*0H1K@9`)@$I"A&.!4#V`*T8;O<`7]?PP1[B*0!!K@]&`# +M?P`BD`0;X%0'9`=_`6`"?P`B?2T23_J0`3=T`O#]?P.QM1),".3]?P%Q%N20 +MH17P(GT"?P+1R'T!?P)T%2_XYO[M]%[^]G0P+_6"Y#0!]8/N\"+O<$U]>'\" +MT)"A%N!4]_!4 +MO_!4?_"`!GT!?PP1[I"A%N!4]_"0!@K@5/CP(I`!-G1X\*-T`O!]>/^QM7T" +M?P.QM9`&"N!$!_"0H26CX)`%6/"0H)#@M`$4D*$7X%3[\)"A'>`@X@U]`7\$ +M`>Z0H1?@1`3P(I`&!.!4?_#D_?\23]A]#'\!81;QG)"A'>!D#&`&$D_.$EEG +M(I"A%N`3$Q-4'S#@!9`!6^3PD`:2=`+PD`$\=`3PY)"D#?"0H4?@PQ-4?Y"D +M#O#D^_U_6'X!$5Z0H1;@1`CP(A).">3]_Q)/V'$2D*$5=`SP(N3]_Q)/V'T$ +M?P%Q%I`%)^!$0/"0H15T!/`B=>@#=:B%(N20HA3PD*(4X&0!\"0.D`'$\'18 +MH_`2/6Z_`0,2,3B0H1K@8`Z0H1W@_Y"A'.!O8`(15<*O$H#_`JI2X/]]`0)0[I"A%N`PX!B0H1'@_S#@#L,3 +M,.`'\=&_`0:``H``$8LBD*$=X/]@`[0(#Q*KC[\!"1)/XY`!Y>`$\"*0H1;@ +M_\03$U0#,.`F[U2_\)`$X."0H10H6+@!/`BD*$6X/_$ +M$Q,35`$PX"OO5'_PD`3@X)"A%S#A!N!$`O"`#^!4_?"0`;ET`?"0`;@$\)"A +M&N!@`A%5?P$!VGT(Y/_3$*\!P\#0D*0/[_"C[?"0GYG@!/"0!!W@8"*0!2+@ +MD*03\'TF$D_Z[V0!<`)1PY"D$^#_?2<23]AQJX`$<:M1PY`$'W0@\'\!T-"2 +MKR*0GZ#@_WL(?0%1'I"D+>[P_*/O\/V0I"S@_W0)+?6"Y#3\]8/@5#_P[V`= +M="DM]8+D-/SU@^!$$/!T"2WU@N0T_/6#X$2`\")T*2WU@N0T_/6#X%3O\'0) +M+?6"Y#3\]8/@1$#P(M,0KP'#P-"0I#3M\*/K\)"D,^_PY/W\\D*01[O#\H^_P_9"D#^#_,=.0I!'@_J/@_Y"!`.!4#_VL +M!W0-+/6"Y#3\]8/@1`'P=`TL]8+D-/SU@^!4^_"L!W02+/6"Y#3\]8/@1/KP +M=!$L]8+D-/SU@^!$'_"L!W0&+/6"Y#3\]8/@1`[PD`2GY/"0!*;PD`2E=/_P +MD`2D=/WP=!0L]8+D-/SU@^!4P$W]=!0O]8+D-/SU@^WP(M,0KP'#P-"0I"SO +M\)`$'>!@'I`%(N"0I"_P?2D23_J_`0(QN9"D+^#_?2H23]B``C&YD`0?="#P +MT-"2KR*0I`_@_],0KP'#P-"0I$WO\)"?G^#_D`0!D#G`5D*1- +MX'`[D*$6X%1_\)`&!!)3#H`FD*$=X&0&<"20I$W@8!Z0H1;@5+_PD`8$X$1` +M\.!$@/"0H1UT!/#D_?\23]C0T)*O(N3U9)`&J>#U9%3`<`R0H1[@5/[P5/WP +M`57E9##F(I"A&N!D`7`AD*$>X$0!\)"A&.!4#V0"8`21=8`,$E>+@`>0H1[@ +M5/[PY620H1XPYPL24$:0H1;@1`3P(N!4_?`BD`0=X'`9D)^>X/][&.3]41Z0 +MI$/N\*/O\)`$'W0@\"*0!JG@D*+J\.#]5,!P"9"A'N!4_O"`;>TPYDR0H1K@ +M9`)P*I"A%N#_PQ,@X`F0H1[@1`'P@"B0H1C@5`]D`7`ND*$>X$0$\'\!<6Z` +M(9"A'N!$`?"0H1C@5`]D`F`$D76`#!)7BX`'D*$>X%3^\)"BZN"0H1XPYPL2 +M4$:0H1;@1`3P(N!4_?`BD*"0X&0!8`*AP)"A&N!P`J'`D*$8X,14#V0!<":0 +M!JO@D*$A\)`&JN`$D*$@\*/@_W`(D*$@X/[_@`/O!/^0H2'O\)"A%^!$!/#D +MD*$C\)"A):/@D`58\)`!5^3PD`$\=`+PD*$>X%3]\%3O\)"A&.#_Q%0/)/U0 +M`H`-D*$1X##@!)&5@`*1%I"A%^`3$Q-4'S#@#Y"A(.#_H^"U!P71(Q)6Q)"A +M$>##$R#@!Y"A%^!$!/`BD*%CX`3PD*$1X/\PX`B0H17@9`)@.Y"A&N!P!.\P +MX`J0H1W@9`)@*;$=D*$7X!,3$U0?,.`5D*$@X/^CX&]P"]$C$E:^D*$AX!3P +MD`'FX`3P(N\4D`5S\)`!/W00\/U_`W0=+_CF3?[V=#@O]8+D-`'U@^[P(JP' +M[U0!_I"A3.!4_D[P[Y`!4[0!$>3P?1!_`]$RD*%.X)`%<_`B=`/P?1#_$I_E +M`E?;P.#`\,"#P(+`T'70`,``P`'``L`#P`3`!<`&P`>0`<1T>?!T7J/P$H=Y +MY2$PX0+Q%.4A,.("\1[E(C#@`O$XY2,PX0,29RCE(S#@`Q)FX>4C,.,"\<+E +M)##A!'\$\=[E)##D`Q)5RN4D,.4"$:7E)##F`C$J='D$D`'$\'1>H_#0!]`& +MT`70!-`#T`+0`=``T-#0@M"#T/#0X#*0H1K@8`,2K"\BD*$:X&`3D`:2X##A +M`P)7G)"A%N!4]_`152(2B&20HOKO\##@!7T!Y(`"Y/W_$E,6D*+ZX##F$9`! +M+^`PYP3D\(`&D`$O=(#PD*$KX/^CX/V0H3#@^ZP'D*$6X##@+I"A+.#3E`-0 +M!Y"A(NOP@`KM)/TKD*$B\'T#PW0$G2S_D*$O\)"A)>3PH^_P@`Z0H27D\*-T +M`O"0H2+K\)"A):/@D`58\"(B?0CD_R%KD/T0[_!_`"*0H13@9`)_`6`"?P`B +MCV]_`A)'IY"?E^!%;_`B$H,5?P*`ZN3[^OU_`1)'SI"B%>_P8/"0GYC@_Y"? +ME^#^3V#CPJ_N,.`+5/[PY/\2;$42DY72K\*OD)^7X/\PX054_?`1FM*OPJ^0 +MGY?@_S#B!53[\!%(TJ^`O-,0KP'#P-#D_Y"@C.#^D*"+X/VU!@1^`8`"?@#N +M9`%@+.UU\`^D)/7Y=)\U\/I[`1'^?P'O8!:0H(O@!/#@M`H"@`)_`.]@!>20 +MH(OPT-"2KR+3$*\!P\#0D)_TX/^0G_/@M0<$?P&``G\`[W!#D)_SX/YU\`B0 +MGZ,223W@_>YU\`BD)*3Y=)\U\/I[`:\%,720G_/@!/#@?P"T"@)_`>]@!>20 +MG_/P$H,5D)^7X$0"\-#0DJ\BTQ"O`028>P48?0@8?TA8@8C +M8@XD8A&.D*(7$DE) +M`H$KD*(7$DE)`H*;D*(7$DE)X7B0HA<224D"4\60HA<224GAK)"B%Q))20*" +MX9"B%Q))24&]D*(7$DE)`IY[D*(7$DE)`HZ@D*(7$DE)@"20`<#@1`'PD*(6 +MX)`!PO`B$@:)_Y"@C_"_`0@2A8_DD*"/\"*0``$2!J*0H63PD``"$@:BD*%E +M\!)RLG\!D*(:=!'PD*(H=`'PD*(<[_![`7JB>1JQ4G\$D*1&[_!_`A)'IY"? +ME^#_D*1&X/[O3I"?E_`B$@:)_U0!_I"A4.!4_D[P[U0",S,S5/C_D*$6X%3O +M3_"0H5#@5`'_[V0!<&L25I^0`3C@D*%1\)`!.>"0H5+PD`$ZX)"A4_"0`3O@ +MD*%4\)`!,."0H57PD`$QX)"A5O"0`3+@D*%7\)`!,^"0H5CPD`$XY/"C\*/P +MH_"0`3#PH_"C\*/PD`$P=!#PD`$Y=`'PD`!3=(#P(I"A4>"0`3CPD*%2X)`! +M.?"0H5/@D`$Z\)"A5."0`3OPD*%5X)`!,/"0H5;@D`$Q\)"A5^"0`3+PD*%8 +MX)`!,_!_`1)2[>20H1KPH_"0H1C@5`_PHW0"\)"A&.!4\/"0H1;@5/WP5._P +M5/?PD*$@=`'PH_"0H1;@5/OPH^!4^_#DD*$C\)"A(G0(\)"A)>3PHW0"\.20 +MH1[PD*$6X%3?\.3]_Q)3%GT,?P(24Q824Q*0H1;@5+_P5'_PH^!4_O!4_?!4 +M]_"0H2<2"'D`````Y)"A*_"C\)"A+W0$\*-T"/#DH_"0H5#@5/[PD)^>JQ4G\$0:*1M!(& +MB?]4`?Z0H5[@5/Y.\._#$S#@%)```1(&HI"A7_"0``(2!J*0H6#P(I"B)702 +M\)"B,W0%\)"B)^_PH^WPH^OPD*(CX)"B*O"0HB3@D*(K\'L!>J)Y);%2?P1! +MHM,0KP'#P-"0H(O@_W`&H^!D"6`*[Q3_D*",X+4'!'\!@`)_`.]@"9`!P>!$ +M`O"`-<`!D*",X'7P#Z0D]?ETGS7PJ`'\?0'0`7X`?P\2!F.0H(S@!/#@?P"T +M"@)_`>]@!>20H(SPT-"2KR+3$*\!P\#0BU&*4HE3$@:)_Y"A$/"_`0R0``$2 +M!J)D`6`B@!ZK4:I2J5.0``$2!J)D`6`0D*$1X"#@!^3_$JB+@`+1!=#0DJ\B +MTQ"O`#_PQ,PX`+1!>3U9)"A&N!P`L'@D*"0X&0!8`+!X)"A&.#_Q%0/ +M8"(D_F`#!'`>D*$AX!3PX/]@!I"A(^!@#N]P")"A(."C\(``=60!D*$1X##@ +M$I"A%>"T`@/D]6025:#O<`+U9.5D8#V0H1[@1!#PD*$CX&`#M`$+Y)"D#?"0 +MH2/@@`_DD*0-\)"A(^!U\`.D)/[_D*$BX"\24%.0H1W@(.(#$E#J(I"A$>#_ +M,.`^D*$5X'X`M`("?@&0H13@?0"T!`)]`>U.<"3OPQ,PX`+!!1*J"T +M"`;D_7\,@`F0H17@<`;]?P024.XBD*$1X/\PX#^0H17@?@"T`@)^`9"A%.!] +M`+0$`GT![4YP)>_#$S#@`L$%$JJ;D*$5X+0,!N3]?PB`"I"A%>"T!`;D_?\2 +M4.XB@?P(I"A6N!4_O!4?_!4 +M^_"C=`KPY*/PH_`BP.#`@\""P-!UT`#`!<`'?=.0`<3M\'1G_Z/P[020`<3P +MH^_PT`?0!=#0T(+0@]#@,L#@P/#`@\""P-!UT`#``,`!P`+``\`$P`7`!L`' +MD`'$=`3P=&BC\!),O.44,.<#$D]V=`0$D`'$\'1HH_#0!]`&T`70!-`#T`+0 +M`=``T-#0@M"#T/#0X#+`X,#PP(/`@L#0==``P`#``<`"P`/`!,`%P`;`!Y`! +MQ'1<\'1HH_#Q8>49,.$"<;WE&3#D`Q)?[>49,.4#$H>IY1DPY@+1[^4;,.`# +M$F8KY1LPX0*QW^4;,.(#$EW1Y1LPXP+Q"^4;,.0"\8[E&S#E`O%#Y1LPY@+Q +M)^4<,.$#$E9-Y1PPY`*10^4<,.4",1KE'##F`Q)G<'1#_(.<)D`'!X$0@\(!Z +M[S#F(77P$.5DD($`$DD]X/UU\!#E9)"!!1))/>!4`_5KY/N`4726)63U@N0T +MGO6#X`3P=)8E9/6"Y#2>]8/@TY0#0!.O9+&<=)8E9/6"Y#2>]8/D\(`C=?`0 +MY620@0`223W@_77P$.5DD($%$DD]X%0#]6M[`:]D41,%9.5DPY2`4`(A'2*M +M7J]=TQ"O``DG_6"Y#1#]8/DD_YT`9/_Y/S]=?`$ZY!"3Q))/1)) +M+1)(*7@!$@A'Y6@EX"25]8+D-)3U@^[PH^_PD*0'X/^0I`+@_M.?0`OE:52` +M_>]-]6F`#)"D".#_[L.?4`*/:>5I5'^0I`+PY6E4@)"D!?#E:G`SD*0!X"2! +M]8+D-)3U@\"#P(+@_Y"D`^#^=`&H!@B``L,SV/ST7]""T(/PD*0$X%1_\(!2 +MD*0!X"2!]8+D-)3U@\"#P(+@_Y"D`^#^=`&H!@B``L,SV/Q/T(+0@_!U\!#E +M:)"!`1))/>!4!_^0I`3PD*0"X)!$4Y/^,S,S5/A/D*0$\$2`\'7P$.5HD($` +M$DD]Y6GPD*0$X/]U\!#E:)"!`1))/>_P=?`0Y6B0@04223W@5/S_Y6M4`T__ +M=?`0Y6B0@04223WO\'T!KVC18M#0DJ\BY/^0HNKO\)`$?N#U9:/@]69E96!P +MD*+K=`/PD*+Y=`CPY68$5`_U9^3U9.5G=?`(I"0`]8+D-(#U@^6")63U@N0U +M@_6#X/]T[25D]8+D-*+U@^_P!63E9+0(T'L!>J)YZQ)E4N5F!%0/]6:T#P/D +M]6:0!'_E9O"0HNK@?P1P`P)?WA)BHB+D_Y"B_N_PY*/PD*+_X/_#E(!01W0` +M+_6"Y#2C]8/D\'7P$.^0@0,223W@D*+_,.<.X"2!]8+D-)/U@^3P@!3@_]'\ +MD*+_X"0`]8+D-*/U@W0!\)"B_^`$\("O?PQ^`!(]>N20HO_PD*+_X/_#E(!` +M`J&;=``O]8+D-*/U@^!P`J&3D*+_X/]U\!"0@08223W@_77P$.^0@0<223W@ +M_NW_D*+_X/PEX"0!]8+D-)+U@^[PH^_P=?`0[)"!"A))/>#]=?`0[)"!"Q)) +M/>#^[?^0HO_@=?`*D(T!$DD][O"C[_!_`9"B_^#^=?`0D($+$DD]Y8(O]8+D +M-8/U@^#]=?`*[I"-`1))/77P`N\223WD\*/M\`_OM`7+D*+_X/]U\!"0@0D2 +M23W@_G06+_6"Y#28]8/N\)"B_^#_D*+^X/W18I"B_^`D@?6"Y#23]8-T`?"0 +MHO_@!/"!JB)U\!#OD($%$DD]=?`$[Y"6%A))/>#\=!8O]8+D-)_U@^#[5'_] +M=!8O]8+D-)WU@^#^[=.<0`*M!.M4@$(%CFOD^T$3D*$1X##@!I"A$W0!\)"A +M&N!@1I"A%^#_$Q,35!\PX!.0`3O@,.0,$E:^D*$@X!20!7/PD*0]Y'7P`1(( +MUL.0I#[@E("0I#W@9("4@$`+D`&8X%3^\.!$`?`2J`42IYGDD*%=\'\!$E_> +MD*%,X##@$I`!.^`PY`L25KZ0H4[@D`5S\"+3$*\!P\#0[6!B=?`*[Y"-`1)) +M/>3PH_!U\`KOD(T#$DD]Y/"C\'7P"N^0C04223WD\*/P=?`*[Y"-!Q))/>3P +MH_!U\`KOD(T)$DD]Y/"C\.\EX"0!]8+D-)+U@^3PH_!T%B_U@N0TF/6#Y/!U +M\!#OD($#$DD]X%2_1(#^=?`0[Y"!`Q))/>[PT-"2KR*0H1'@,.`%Y*/PH_`B +M=?`0[Y"!`Q))/>!$0/`BD*"0X&0!\Y/_L +MD*+D$@AMD*+D$DDAD*+CX/_D_/W^$DA#HQ((;9"BY!))!9"JN1((;7^P?@@2 +M.`=_%'X`$CUZD*+BX'7P"*0DM?6"Y#2M]8/@_J/@_Q(WO.U4#_WD_"+3$*\! +MP\#0$F_OT-"2KR*0HHT225*0HMH2"'F`````D*+>$@AY`````!&]?67D_Q%@ +MD**-$DE)$DC'?8_D_Q%@D**-$DE)D``$$DCAY/W_$6"0HHT224F0``@"2.%_ +M+'X(TQ"O`\D*+B$@AMD*+:$DD%$@@ZD*+B$DDA$D@V +MP`3`!<`&P`>0HMH22060HMX222$22#;0`]`"T`'0`!)(0Y"BYA((;9"BYA)) +M!9"JN1((;9"BV.#^H^#_$C@'T-"2KR*0HL_O\)"BVA((>8````"0HMX2"'D` +M````$;V0HM`2205X`1((1^1[$GH!^?C#$DAF8!>0HM02205X`1((1^1[[GH# +M^,,22&9P:)"BS^!U\!RD)#WU@N0T1?6#Y)/^=`&3_\`&P`>0HMH2"'D```/_ +MD*+>$@AY```!`-`'T`81P9"BS^!U\!RD)#WU@N0T1?6#Y)/^=`&3_\`&P`>0 +MHMH2"'D#_P``D*+>$@AY`````(!OD*+/X'7P'*0D/?6"Y#1%]8/DD_YT`9/_ +MP`;`!Y"BVA((>0```_^0HM`22060HMX2"&W0!]`&$<&0HL_@=?`$@AMT`?0 +M!@'!D*+:$@AY@````)"BWA((>0`````1O9`%(G0_\)`%4.!4]_"CX%3W\)"B +MVA((>0```/^0HMX2"'D`````=`C__A'!D*+:$@AY````#Y"BWA((>0````Q_ +M.'X(`<'3$*\!P\#0>P%ZHGD=D**0$DE2>J)Y&A*@>WL!>J)Y69"BD!))4GJB +M>3T2H19[`7JB>8&0HI`225)ZHGEU$6]15N3_<=9[`7JB>77D_W$L>P%ZHGE9 +MD**0$DE2>J)Y/1*F<'L!>J)Y'9"BD!))4GJB>1H2I_PHQ)) +M4I"BVA((>8````"0HMX2"'D`````$;V0HHX224D22'>0HM$2"&V0HHW@_WUE +M<;.0HHX224F0``022)>0HM$2"&V0HHW@_WV/<;.0HHX224F0``@22)>0HM$2 +M"&V0HHW@_^3]<;.0HM$2"'D`````D**-X/]][X`'D**-X/]][],0KP'#P-#` +M!\`%D*+1$DD%D*J<$@AMT`70!Q(R--#0DJ\BD**-[_#DH_"0HJKPH_"C\*/P +M>+%\HGT!>_]Z17EK_G\&$@9CY)"BKO"C\)"A9."0HK#PD*+:$@AY@````)"B +MWA((>0`````1O9"BC>!U\`ZD)!GU@N0T1?6#Y)/^=`&3_\`&P`>0JKD2"'EW +M=W=WT`?0!A(X!Y"BC>!U\`ZD)!OU@N0T1?6#Y)/^=`&3_\`&P`>0JKD2"'EW +M=W=WT`?0!A(X!Y"BC>!U\`ZD)!WU@N0T1?6#Y)/^=`&3_\`&P`>0JKD2"'D9 +M>1EYT`?0!A(X!Y"BC>!U\!RD)#/U@N0T1?6#Y)/^=`&3_\`&P`>0HMH2"'D` +M```/D*+>$@AY````!-`'T`81P9"BC>!U\`ZD)!?U@N0T1?6#Y)/^=`&3_\`& +MP`>0HMH2"'D'````D*+>$@AY!P```-`'T`81P9"BVA((>4````"0HMX2"'E` +M````?\1^"!'!D**-X'7P#J0D(?6"Y#1%]8/DD_YT`9/_P`;`!Y"BVA((>0#_ +M``"0HMX2"'D`=P``T`?0!A'!D**-X'7P#J0D(_6"Y#1%]8/DD_YT`9/_P`;` +M!Y"BVA((>0,```"0HMX2"'D`````T`?0!A'!D**-X'7P#J0D)?6"Y#1%]8/D +MD_YT`9/_P`;`!Y"BVA((>0```/^0HMX2"'D````$T`?0!A'!D*+:$@AY@``` +M`)"BWA((>0`````1O9"BT1((>0`(``)QK)"BT1((>0`"``"0HHW@_WTP<;.0 +MHM$2"'D````_D**-X/]],7&SD*+1$@AY``\_PY"BC>#_?3)QLY"BT1((>0`) +M,=60HHW@_WUE<;.0HM$2"'D`"*`!D**-X/]]CW&SD*JY$@AY``"``'\,?@D2 +M.`>0JKD2"'D#``$`?P!^"Q(X!Y"BC>!U\!RD)#7U@N0T1?6#Y)/^=`&3_\`& +MP`>0HMH2"'D````!D*+>$@AY`````=`'T`81P9"JN1((>2D`(`!_>'X)$C@' +MD*JY$@AYJ0`@`']\?@D2.`>0JKD2"'D`1BD0?X1^"1(X!Y"BVA((>8````"0 +MHMX2"'F`````$;V0H67@D**-,.`EX'7P'*0D-_6"Y#1%]8/DD_YT`9/_P`;` +M!Y"JN1((>8(4`_>`(^!U\!RD)#?U@N0T1?6#Y)/^=`&3_\`&P`>0JKD2"'F" +M%`/QT`?0!A(X!Y"A9.`PY2B0HHW@=?`!U\!RD)#GU@N0T1?6#Y)/^=`&3_\`& +MP`>0JKD2"'D`%CZ6T`?0!A(X!Y"BC>!U\!RD)$OU@N0T1?6#Y)/^=`&3_\`& +MP`>0JKD2"'D8`(P0T`?0!A(X!Y"BC>!U\!RD)$WU@N0T1?6#Y)/^=`&3_\`& +MP`>0JKD2"'DX`(P0T`?0!A(X!Y"BC>!U\!RD)#OU@N0T1?6#Y)/^=`&3_\`& +MP`>0JKD2"'D`````T`?0!A(X!^20HH[PD**-X/_D_1*BC)"BKN_P^Y"CL!)) +M!9"BCN#Z)>`EX"2`]8+D-*/U@Q((;9"CM!))!>HEX"7@)(SU@N0TH_6#$@AM +MZV`&D**JX`3PD**.X`3PX,.4`T"ID*+:$@AY@````)"BWA((>0`````2<+V0 +MHHW@_WT($G!@Y/_N5/S^[50/_>3\D*+6$@AMD*+2$@AY``?^`)"BC>#_?5A\ +M`!*?_9"BVA((>8````"0HMX2"'F`````$G"]D**NX'`"8:R0HMH2"'F````` +MD*+>$@AY`````!)PO9"BT1((>0`(```20```"^0HHW@_WTQ$G.SD*+1$@AY``__NY"BC>#_?3(2<[.0HM$2 +M"'D`"(`!D**-X/]]CQ)SLY"BT1((>0`),=B0HHW@_WUE$G.SD*+1$@AY```` +M`!)SK)"BVA((>8````"0HMX2"'F`````?WA^"1)PP9"BVA((>8````"0HMX2 +M"'D`````?WQ^"1)PP9"JN1((>0``@`!_#'X)$C@'D*JY$@AY`$:I$7^$?@D2 +M.`>0HMH2"'F`````D*+>$@AY@````!)PO9"BC>!U\!RD)$OU@N0T1?6#Y)/^ +M=`&3_\`&P`>0JKD2"'DX`(P0T`?0!A(X!Y"BC>!U\!RD)$WU@N0T1?6#Y)/^ +M=`&3_\`&P`>0JKD2"'D8`(P0T`?0!A(X!Y"BC>!U\!RD)#?U@N0T1?6#Y)/^ +M=`&3_\`&P`>0JKD2"'D"%`$9T`?0!A(X!Y"BC>!U\!RD)#GU@N0T1?6#Y)/^ +M=`&3_\`&P`>0JKD2"'DH%A1`T`?0!A(X!^20HI#PD*+:$@AY@````)"BWA(( +M>0`````2<+V0HMH2"'D#_X``D**0X"7@)>`D@/6"Y#2C]8,2205X`1((1^3_ +M[E2`_NQ4`_R0HMX2"&U_>'X)$G#!D*+:$@AY```'_Y"BD.`EX"7@)(SU@N0T +MH_6#$DD%>!`2"$?N5`?^Y/W\D*+>$@AM?WA^"1)PP9"BVA((>8````"0HMX2 +M"'F`````$G"]D**-X/]]`1*BC)"BK^_P^Y"CL!))!9"BD.#Z)>`EX"28]8+D +M-*/U@Q((;9"CM!))!>HEX"7@)*3U@N0TH_6#$@AMZV`&D**KX`3PD**0X`3P +MX,.4`U`"0;20HJK@#_`J%WY)"B +MD/"0HI#@^R7@)>`D@/6"Y#2C]8,2205X$!((1^LEX"2W]8+D-*+U@^[PH^_P +MD**0X/LEX"7@)(SU@N0TH_6#$DD%>!`2"$?K)>`DO?6"Y#2B]8/N\*/O\)"B +MD.#[)>`EX"28]8+D-*/U@Q))!7@1$@A'ZR7@),/U@N0THO6#[O"C[_"0HI#@ +M^R7@)>`DI/6"Y#2C]8,2205X$1((1^LEX"3)]8+D-*+U@^[PH^_PD**0X`3P +MX&0#8`)AT^20HH_PD**JX/^0HH_@_L.?0`+!#NX$D**1\)"BJN#_D**1X/[# +MGT`"H?[N)>`DM_6"Y#2B]8/@_J/@_Y"BC^`EX"2W]8+D-*+U@^#\H^##G__L +MGOXSE>#]_)"BHA((;>1_!/[]_)"BHA))(<,22%!``J'V=/]__/[]_)"BHA)) +M(=,22%!0`J'VD**1X"7@)+WU@N0THO6#X/ZCX/^0HH_@)>`DO?6"Y#2B]8/@ +M_*/@PY__[)[^,Y7@_?R0HJ82"&WD?P3^_?R0HJ8222'#$DA00`*A]G3_?_S^ +M_?R0HJ8222'3$DA04`*A]I"BD>#[)>`DM_6"Y#2B]8/@_J/@_Y"BC^#Z)>`D +MM_6"Y#2B]8/@_*/@+__L/J+G$_[O$__N,Y7@_?R0HI(2"&WK)>`DO?6"Y#2B +M]8/@_J/@_^HEX"2]]8+D-*+U@^#\H^`O_^P^HN<3_N\3_^XSE>#]_)"BEA(( +M;9"BK'0!\(`(D**1X`3P@:>0HJS@9`%@")"BC^`$\(&1D**LX+0!&I"BDA)) +M!9"BT!((;9"BEA))!9"BU!((;8`4D*+0$@AY```"`)"BU!((>0````"0HHW@ +M_Q*A=Y"BJ^!P%Y"BT!((>0```0"0HM02"'D``````H`?Y)"BC_"0HJO@_Y"B +MC^#^PY]``N'J[@20HI'PD**KX/^0HI'@_L.?0`+AVNXEX"3#]8+D-*+U@^#^ +MH^#_D**/X"7@),/U@N0THO6#X/RCX,.?_^R>_C.5X/W\D**B$@AMY'\$_OW\ +MD**B$DDAPQ)(4$`"X=)T_W_\_OW\D**B$DDATQ)(4%`"X=*0HI'@)>`DR?6" +MY#2B]8/@_J/@_Y"BC^`EX"3)]8+D-*+U@^#\H^##G__LGOXSE>#]_)"BIA(( +M;>1_!/[]_)"BIA))(<,22%!``N'2=/]__/[]_)"BIA))(=,22%!0`N'2D**1 +MX/LEX"3#]8+D-*+U@^#^H^#_D**/X/HEX"3#]8+D-*+U@^#\H^`O_^P^HN<3 +M_N\3_^XSE>#]_)"BFA((;>LEX"3)]8+D-*+U@^#^H^#_ZB7@),GU@N0THO6# +MX/RCX"__[#ZBYQ/^[Q/_[C.5X/W\D**>$@AMD**M=`'P@`B0HI'@!/#!@Y"B +MK>!D`6`(D**/X`3PP6V0HJW@M`$:D**:$DD%D*+0$@AMD**>$DD%D*+4$@AM +M@!20HM`2"'D```$`D*+4$@AY`````)"BC>#_`G$OD*1'[_!_`A)'IY"?F.#_ +MD*1'X/[O3I"?F/`BD`()X/51$@:))5&0GYWPD``!$@:B)5&0GY[PD``"$@:B +M)5&0GY_PD``#$@:B)5&0GZ#PD``$$@:B)5&0GZ'PD``%$@:B)5&0GZ+P(HM1 +MBE*)4Y```1(&HO_U51(&B?[#$S#@"I```A(&HO56@`*/5H555.54TY564#.K +M4:I2J5,2!HE4`?]TD"54]8+D-*#U@^_P=)`E5/6"Y#2@]8/@KU1P!#$:@`(Q +M"054@,:0H)#@!4 +M^_`BCU=U\!#OD($%$DD]X$0$\"*0HAH225(2!HG_5'^0H1KP[\03$Q-4`:/P +MD``!$@:B_U3PQ%0/_I"A&.!4\$[PD``#$@:B5`$EX/Z0H1;@5/U.\.]4#\14 +M\/^0H1C@5`]/\)```A(&HI"A&?"0``82!J(PX%[#$U0'_\.4!)"A+%`$[_"` +M+G0#\)"B&A))2>DD!OGD.OH2!HG_=`,D_?[OQ%0/_>]4#__M+E0/_L14\$\2 +M!L^0HAH224F0``82!J+$5`__PY0$D*$B4`5T!/"``N_PD*(:$DE)D``$$@:B +M_7\"$E,6D*(:$DE)42N0`;ET`?"0`;CPD*$:X)`!NO"0H1S@D`&[\)"A&.!4 +M#Y`!OO`BD*(=$DE245J0H1K@_Q)6X)"A&N!@&)"B'1))29```1(&HE0/_Y`` +M`A(&HOU1:R*0H1;@5/OPY)"A(_"0H1[P(N\D_F`+!'`GD*$@=`+P@!;M<`J0 +MH4C@D*$@\(`%D*$@[?"0H2#@H_"0H1?@1`CP(I```A(&HO\PX"82!HF0H47P +MD``!$@:BD*%&\.]4_O^CX%0!3_"0``,2!J*0H4CP(I"A170#\*-T!?"CX%0! +M1"CPHW0%\"(2!HE4`?^0H4S@5/Y/\)```1(&HI"A3?"0``(2!J*0H4[PD*%- +MX)"A3_"0H4S@5`'_`EY'D`',X%0/D*0[\)"D.^#]<`*!9)"?\^#_<`:CX&0) +M8`KO%/^0G_3@M0<$?P&``G\`[V`(D`'!X$0!\"*0I#G@_W0!?@"H!PB`!<,S +MSC/.V/G_[UUP`H%!Y)"D//"0I#S@^<.4!%!SD*0YX'7P!*3_Z?U\`"__[#7P +M_G30+_6"=`$^]8/@_Y"?].!U\`B0GZ,223WE@BGU@N0U@_6#[_"0I#G@=?`$ +MI"W_[#7P_G3P+_6"=`$^]8/@_Y"?].!U\`B0GZ<223WE@BGU@N0U@_6#[_"0 +MI#S@!/"`@Y"D.^#_D*0YX/YT`:@&"(`"PS/8_/1?D*0[\)"D.>#_=`&H!PB` +M`L,SV/R0`!$@)``BO"0I#G@=?`$D`'0$DD]X)`!P_`BTQ"O`X2!N%T`"_YY#3[^GL!P`/``L`!D*09$DE)BT"*08E"=4,"T`'0 +M`M`#$C1BD*08X"0"^>0T^_I[`<`#P`+``:,224GI)`+YY#J+0/5!B4*0I!D2 +M24F0``X2!J+U0]`!T`+0`P(T8GL!>J)Y&G_U?@$2,_V_`0:0HAK@H_![`7JB +M>1I_]GX!$C/]OP$(D*(:X)"B'/![`7JB>1I_]'X!$C/]OP$(D*(:X)"B'?![ +M`7JB>1I_\WX!$C/]OP$(D*(:X)"B'O![`7JB>1I_\GX!$C/]OP$(D*(:X)"B +M'_"0HAO@_Z/@_:/@^Z/@D*(C\)"B'^"0HB3P`F4?D*0P$DE2Y/^0I#`224F/ +M@G6#`!(&HOYT\"_U@N0T`O6#[O`/[[00X")U%1+D]19U%P=U&'*0`3#E%?"C +MY1;PH^47\*/E&/`B=1T&=1X!=1\#=2!BD`$XY1WPH^4>\*/E'_"CY2#P(I`! +ME.!$`?"0`C\)"A +M6>#_[<.?4!CM)>`D@?CF,.0+D`&X=`CPH_!_`"(-@-Y_`2+DD)^7\*/PH_"C +M\*/P(I`!Y'06\*/D\"*0`3S@51WU(:/@51[U(J/@51_U(Z/@52#U))`!/.4A +M\*/E(O"CY2/PH^4D\%.1WR*0`<_@D*+J\.#_,.`'D`'/X%3^\.\PY2.0`<_@ +M5-_PD`$T="#PY/6H]>@23N"0``/@5/O]?P,22H>`_B+3$*\!P\#0Y/^0H_/P +MD`''X&2M<#?PD*0`=`_PD*/R=`KPH^`$\)"C\^`O_G3T+_6"Y#2C]8/N\`_O +MM`_ID`$_=`3P>P%ZHWGR$F#^T-"2KR+3$*\!P\#0D`0=X&`:D`4BX%208`>0 +M`<#@1`CPD`'&X##AY'\`@`)_`=#0DJ\BY)"B^_"C\*/P?X,23)J0HOOO\'^# +M$DR:K@>0HOO@_[4&`2+#D*+]X)1DD*+\X)0`0`V0`<#@1$#PD*+[X/\BD*+\ +MY'7P`1((UH"^D*0V[_#DH_"C\)`!">!_`##G`G\!D*0VX&]@/L.0I#C@E(B0 +MI#?@E!-`")`!P.!$$/`BD*0WY'7P`1((UG\4?@`2/7K3D*0XX)0RD*0WX)0` +M0+>0`<;@,."P(I`!Q'0*\'2)H_!_D!),FN\@X/=T"@20`<3P=(FC\"+D_^3^ +M=!8O]8+D-)GU@^!4_O!U\!#OD($`O@,2$DD]Y8(N]8+D-8/U@W2`\(`/$DD] +MY8(N]8+D-8/U@^3P=?`([Y")`!))/>6"+O6"Y#6#]8/D\`Z^$*T/OX"GY)"M +MXO"0E)$2"'D`````Y/_D_G7P"N^0C0$223UU\`+N$DD]Y/"C\`Z^!>=T%B_U +M@N0TGO6#=#_P=)8O]8+D-)KU@^3P=`$O]8+D-)/U@W3`\.\EX"0!]8+D-)+U +M@^3PH_!T%B_U@N0TF/6#Y/#O)>`D%O6"Y#2;]8/D\*/P[R7@)!;U@N0TG/6# +MY/"C\'7P!.^0EA8223UT/_!U\`3OD)87$DD]Y/!U\`3OD)88$DD]X%3@1`GP +M=?`$[Y"6&1))/>!4\_!U\`3OD)89$DD]X%3\\'7P!.^0EA@223W@1"#P=?`$ +M[Y"6&1))/>!4S_!U\`3OD)89$DD]X$1`\'7P!.^0EAD223W@5'_P=?`$[Y"6 +M%Q))/>#^=?`0[Y"!`!))/>[P=!8O]8+D-)GU@^3P#^]D@&`"(960!$ET\/"C +MY/"C=/_PD`0S=`+PHW0$\*,$\*,$\*,$\'26+_6"Y#28]8-T__`B?O_MPY0S +M0!WMTY0U4!=U\`3OD)88$DD]X,035`#U751_]5]U\`3ND)87$DD]X)"B*O"0HBC@=?`$D)86$DD]X/UU +M\!#ND($%$DD]X%0#]5[E7R7@))_U@N0T0_6#Y)/Z=`&3^^\EX"25]8+D-)3U +M@^KPH^OP=?`$[Y"6&1))/>#^Q%0#D*(I\'06+_6"Y#2?]8/E7_!T%B_U@N0T +MG?6#Y5[PY5_3G4`&C5^O!8]=['`"@?&O!(]@Y5TPYP6%7UT58.5@<`*!\9"B +M*.#_K5U1Z>_T8!./715@Y6!P`H'QD*(HX/^M8'$1Y5UD+'`VY5[3E`!`+^5> +MTY0"4"@57G5=+>5>5`,EX"7@_Y"B*.!U\`20EAD223W@5/-/\!5@Y6!P`H'Q +MY5VT+1+E7M.4`E`+=5TL%6#E8'`"@?'E8'`"@?&0HBK@_^5?TY]0`H'KY/R0 +MHBG@_ZU?L0"/7X5?7>#_H^#]L0#O\*U=Y5\4^Y"B*N#_Z\.?0%_K$Q,35!__ +MD*(HX'7P")")`!))/>6"+_6"Y#6#]8/@]8)U@P#K5`?_=`%^`*@'"(`%PS/. +M,\[8^?_N58/^[U6"3F`9Y5^M`[04`GT,#.QE8&`-D*(JX/_MTY]``QN`EZ\% +MCUV0HBG@_[$4CUV`!I"B*N#U79"B*.#_A5YKY/NM70)J$^]@"NW#E"Q`!'X@ +M@`+D_L/MGO\B[V`*[=.4"T`$?B"``N3^[2[_(NU4?_SM5(!@`Z\$(NS#E#-` +M(NS3E#50''7P!.^0EA@223W@Q!-4!S#@!NQ$@/Z`!G[_@`)^_Z\&(I"CX.OP +M<&R0H^#@_B26]8+D-)CU@^#\D*/AX/OL:V!3D*/EZ_"C[O"N!>XEX$__D)^6 +MX/XEX"7@3Y"CY_"0H^+@D*/I\)"CXW0,\)"C\70$\'L!>J-YXQ)E4G\$$F*B +MD*/AX/^0H^#@));U@N0TF/6#[_`BY/5==)8O]8+D-)7U@^#^M`4([<.4.T!9 +M@$_NM`0([<.4,4!-@$-TEB_U@N0TE?6#X/ZT`PCMPY090#:`+.ZT`@CMPY01 +M0"J`('26+_6"Y#25]8/@_K0!".W#E`I`$X`)[G`+[<.4`T`(=5T!@`/D]5VO +M72*/4HU3BU1U\`3OD)87$DD]X/]U\`3E4I"6%A))/>#]+__D,Z+G$^\3D*(= +M\.53TY0M0`*`&>53TY090`60HAV`"W7P!.52D)87$DD]X/V%5&OD^Z]2`FH3 +MD*(:$DE2$@:)]5$D%O6"Y#29]8/@5)SP=!8E4?6"Y#29]8/`@\""X/^0HAH2 +M24F0``,2!J)4`?[O3M""T(/P=!8E4?6"Y#29]8/`@\""X/^0HAH224F0``,2 +M!J)4`O[O3M""T(/P=!8E4?6"Y#29]8/`@\""X/^0HAH224F0``,2!J)40/[O +M3M""T(/P=!8E4?6"Y#29]8/`@\""X/^0HAH224F0``,2!J)4(/[O3M""T(/P +MY5'#E(!0%I```A(&HO]TEB51]8+D-)GU@^_P@`_E4;2`"I```A(&HI"5E?!T +M%B51]8+D-)GU@^`PY2)U\`3E49"6&1))/>`3$U0#^W26)5'U@N0TF?6#X/VO +M4=%((H]==?`0[Y"!`!))/>#U7N3U8^5>5'_U7^5>5(#[=?`$[Y"6%A))/>#U +M877P!.^0EAD223W@_\14`_5B=?`$Y5^00D\223T221'E727@))7U@N0TE/6# +M[O"C[_#E7DO_=!8E7?6"Y#2?]8/O\'7P$.5=D($%$DD]X%0#]6!T%B5=]8+D +M-)WU@^5@\'06)5WU@N0TF?6#X##@+.5?9#]P)G5?/G7P!.5=D)88$DD]X,03 +M5`!4`__E8,.? +M4`=U7BP%8&&)Y5^T+`5U7BUAB>5?PY5A0`)A,.5?PY0,0!OE7Y034!5T%B5= +M]8+D-)GU@^#_(.,%=6,!@"#E7\.4+$`JY5^4-5`D=!8E7?6"Y#29]8/@_R#C +M%'5C`G06)5WU@N0TF?6#[T0(\(`2Y/5C=!8E7?6"Y#29]8/@5/?P=!8E7?6" +MY#29]8/@(.8#,.$2Y/5C=!8E7?6"Y#29]8/@5/?PY6-D`6`"(`@YQ@@YA4@Y1(@Y`]U\`CE79")`Q))/>`PX&5T%B5=]8+D-)GU@^!$ +M!/#E7[0,"'5?%'5>%$%8Y5^T#0*`!>5?M`X(=5\5=5X505CE7[0/"'5?%G5> +M%D%8Y5_#E!!`"'5?%W5>%T%8Y5_#E!%0`D%8Y5^4$T`"05AU7QAU7AA!6.5C +M9`)@`D%B=?`(Y5V0B0(223W@(.88(.<5=?`(Y5V0B0,223W@(.`&(.$#,.)K +MY5]D+&`%Y5^T+0AU7S9U7C:`3N5?9"Y@!>5?M"\(=5\W=5XW@#OE7[0P"'5? +M.'5>.(`NY5^T,0AU7SEU7CF`(>5?PY0R0`_E7].4-%`(=5\Z=5XZ@`OE7[0U +M!G5?.W5>.X5@:WL!$FH/@`]T%B5=]8+D-)GU@^!4^_"M7Z]B$HT`CU^M8:]B +M$HT`CV'E7P3][=.585!C[1,3$U0?_W7P".5=D(D`$DD]Y8(O]8+D-8/U@^#[ +M>@#M5`?_=`%^`*@'"(`%PS/.,\[8^?_N6O[O6TY@(^5?M!,7=5\8A5]>=!8E +M7?6"Y#29]8/@1`3P@`J-7X5?7H`##8"7K5ZO8A*-%(]>=!8E7?6"Y#29]8/@ +M(.`"88GE7V0_<'EU7SYU\`3E79"6&!))/>#$$U0',.`%=5Z^@%Z%7UZ`6>5? +M96%P0W7P!.5=D)88$DD]X/_$$U0',.`-Y5X@YPCE7T2`]5Z`,G7P!.5?D$)/ +M$DD]$DD1Y5TEX"25]8+D-)3U@^[PH^_P@!!T%B5=]8+D-)_U@^5A\/5>A6!K +M>P&M7J]=`FH3Y/51=)`E4?6"Y#2@]8/@<`,"FV]U\`3E49"6&1))/>#_Q!,3 +M$U0!,.`#`IMOY5$EX"0!]8+D-)+U@^#^H^#3E`#NE`!0`P*;;^51=?`*I"0! +M^72--?#Z>P&0HAD225+E427@)`'U@N0TDO6#X/56H^#U5W06)5'U@N0TF/6# +MX/^0HASD\*/O\)```A('J_^N\!('@"__Y?`^_I``!!('JR__[C7P_I``!A(' +MJR__[C7P_I``"!('JR__[C7P_I"B'O"C[_`2!X#]P^^=_^Z5\)"B(/"C[_!U +M\!#E49"!`!))/>#U4E1_]5-U\`3E49"6%A))/>"0HB+P=?`$Y5&0EAD223W@ +M_Q,35`.0HB/P=)8E4?6"Y#2=]8/@PY0%0`+A9I"B(N#_Y5.?0`B/4U-2@.]" +M4N53D$'[D_]TEB51]8+D-)GU@^##G^530`6005.``Y!!IY/U6.58=?`&I"2Q +M^71`-?#Z>_^0HA8225+E4I!$IY/_TY"B'>"?D*(7P/OSE5L,3_N57 +M$__3[9_LGD`$?0'A..57KE9X`L[#$\X3V/G]K`;E5L,3_N57$RW_[CS^D*(9 +M$DE)$@>`TY_E\)Y0`N$]P<[E47!0D*(9$DE)D``($@>K_:SPY5;#$_[E5Q/_ +MP^V?[)Y0")"?EG0!\(`IY5>N5G@#SL,3SA/8^?NJ!N56PQ/^Y5<3*__N.O[3 +M[9_LGD`%Y)"?EO#3Y5>4Z.56E`-`!759!8`3T^57E,CE5I0`0`5U60*``^3U +M6>51)>`DE?6"Y#24]8/@]52CX/55Y/5XU5/54 +M!5SE7+0%MY"B%A))29``!1(&HOU\`.57KE:H60B`!<[#$\X3V/G_$@<#T^55 +MG^54GD`,Y56?]57E5)[U5(`%Y/54]57E427@))7U@N0TE/6#Y53PH^55\*Y4 +M_^3\_77P!.53D$)/$DD]$DDMPQ)(9E`'KU$2C[*`:.53)>`DG_6"Y#1#]8/3 +M=`&3E57DDY540$]T%B51]8+D-)GU@^`@Y@,PX0?DD*(D\(`&D*(D=`'PY5.T +M.@N0HB3@M`$$?0B`&^53M!@+D*(DX+0!!'T'@`OE4[0V!'T)@`)]`:]1$HL1 +MY5$EX"25]8+D-)3U@Z/@D*/B\)"CX>52\*M1Y/W_$HU@Y/54]54"FD9TEB51 +M]8+D-)WU@^#\9`5@`P*8W*U3KU$2C=1T%B51]8+D-)KU@^_P=?`0Y5&0@0$2 +M23W@5`?U6W26)5'U@N0TF?6#X/_#E#!0$N3U6W26)5'U@N0TG?6#Y`*88706 +M)5'U@N0TFO6#X&0!8`,"F(ITEB51]8+D-)KU@^!D"F!-[R0%_^0S_G0!)5'U +M@N0TE/6#X/W3G^YD@/AT@)A0+NTD!?_D,_YTEB51]8+D-)GU@^#3G^YD@/AT +M@)A0$'06)5'U@N0TGO6#X&538#OE6W`%=5L!@`WE6[0!!75;`X`#=5L%=)8E +M4?6"Y#29]8/@_W0!)5'U@N0TE/6#[_!TEB51]8+D-)J`*726)5'U@N0TG?6# +MY/!TEB51]8+D-)KU@^`$\(`0Y/5;=)8E4?6"Y#2=]8/D\'06)5'U@N0TGO6# +MY5/P=?`$Y5&0EAD223W@Q!,35`,@X`)!(W26)5'U@N0TFO6#Y/#U6W26)5'U +M@N0TG?6#Y/!!(^QD!F`"04;U5/55=?`0Y5&0@0$223W@5`?U6]/E5Y3HY5:4 +M`T`%=5D%@!/3Y5>4^N56E`!`!759`H`#Y/59Y5>N5JA9"(`%SL,3SA/8^?^0 +M10#DD_U\`!('`Y"B)>[PH^_PY/5:D*(9$DE)=?`"Y5JD]8*%\(,2!ZNN\*A9 +M"(`%SL,3SA/8^?_E6I!$^Y/]?``2!P/O)57U5>XU5/54PY"B)N"559"B)>"5 +M5$`'!5KE6K0%L>5:PQ/U6N5;)`'_Y#.BYQ/O$__3E5I`!N^56O^``N3_=`$E +M4?6"Y#23]8/@PQ/^[\0S5.`N!/YT`251]8+D-)/U@^[P=`$E4?6"Y#23]8/@ +MPY3`0`YT`251]8+D-)/U@W3`\'0!)5'U@N0TD_6#X,03$U0#)>#_<`3U6X`$ +M[Q3U6].0HAW@E`.0HAS@E`!``^3U6W7P$.51D($!$DD]X%3XD*(G\$5;__!U +M\!#E49"!`1))/>_P=)8E4?6"Y#2=]8/@TY0%=)90#B51]8+D-)WU@^`$\(`+ +M)5'U@N0TG?6#Y/!T@251]8+D-)/U@^!D`6`"86B0HAS@_J/@_\-T_Y_]=/^> +M_.51)>`D%O6"Y#2;]8/@^J/@TYWJG.514!,EX"06]8+D-)OU@^Z/\!((UH`0 +M)>`D%O6"Y#2;]8-T__"C\)"B'N#^H^#_PW3_G_UT_Y[\Y5$EX"06]8+D-)SU +M@^#ZH^#3G>J?_____D_:]1$FYB!5'E4<.4 +M@%`#`I.8(M,0KP'#P-"0I"CO\'7P!)"6&!))/>!4'_LD\5`"@1[D]6R0I"C@ +M_77P")")`!))/>6")6SU@N0U@_6#X/[K=?`'I"16]8+D-$#U@^6")6SU@N0U +M@_6#Y)/\[ER0I"OP=?`$[9"6&1))/>!4`_^_`@OE;'`'D*0KX%3P\)"D*^#_ +MD*0HX'7P")")`!))/>6")6SU@N0U@_6#[_`%;.5L9`=P@)"D*.!U\`20EAD2 +M23W@_\14`_WDD*0I\'5M!N5MM`8=_Y"D*.!U\`B0B0`223WE@B_U@N0U@_6# +MX%0/@!F0I"C@=?`(D(D`$DD]Y8(E;?6"Y#6#]8/@D*0J\)"D*N!@075L!W0! +M?@"H;`B`!<,SSC/.V/G_D*0JX/OO6V`;Y6UU\`BD)6R0I"GP[6`DX-.4"T`> +MX"0@\(`8%6SE;,.4`%#"Y6U@"Q5MY6W#E`!``H$YY/SU;>5MM`8=_Y"D*.!U +M\`B0B0`223WE@B_U@N0U@_6#X%0/@!F0I"C@=?`(D(D`$DD]Y8(E;?6"Y#6# +M]8/@D*0J\)"D*N!@/.3U;'0!?@"H;`B`!<,SSC/.V/G_D*0JX/OO6V`8Y6UU +M\`BD)6S\[6`=[-.4"T`7="`L_(`1!6SE;+0(QP5MY6UD!V`"@=*0I"G@_Y"D +M*.#^=?`$D)86$DD][_!U\`3ND)87$DD][/!U\!#ND($`$DD]X/Y4?_5N[E2` +M_N5NTY]`"9"D*>!.]6Z`#.5NPYQ0!J\&[$_U;I"D*.#_)!;U@N0TGO6#Y6[P +M=?`$[Y"6&1))/>`3$U0#]6N0I"C@_^3[K6X2:A.0I"C@_W7P$)"!`Q))/>3P +MD*0IX/[#E#9`#W26+_6"Y#25]8-T!?"`#_PY040!*0I"C@));U@N0TE?6#=`/P@#[OPY0,0!*0I"C@));U +M@N0TE?6#=`+P@":0I"G@PY0$D*0HX$`.));U@N0TE?6#=`'P@`LDEO6"Y#25 +M]8/D\-#0DJ\B$@:)5'_U49```1(&HO]4'_53[U2`Q!,3$U0!]5*0``(2!J+_ +M5`/U5.]4,,14#_57D``"$@:B_U1`Q!,35`/U5>]4@,03$Q-4`?56D``"$@:B +M_U0($Q,35!_U6>]4!!,35#_U6N565`'$,S,S5(#_=?`$Y5&0EAD223W@5']/ +M\.555`'$,S-4P/]U\`3E49"6&1))/>!4OT_PY5E@`N'DY5-4'_]U\`3E49"6 +M&!))/>!4X$_PY514`_]U\`3E49"6&1))/>!4_$_P[R7@)>#_=?`$Y5&0EAD2 +M23W@5/-/\.525`'$,U3@_W7P!.51D)88$DD]X%3?3_#E5U0#Q%3P_W7P!.51 +MD)89$DD]X%3/3_!T%B51]8+D-)GU@^!4^_!T%B51]8+D-)GU@^#_Y5HEX"7@ +M_N].\.3U6(58@G6#`*.CHQ(&HO]U\`CE49")`!))/>6")5CU@N0U@_6#[_`% +M6.58M`34KU%Q?")T'2_XYO[M]%[^]G0X+_6"Y#0!]8/N\"+3$*\!P\#0D*+0 +M[/"C[?"0HL_O\*.CX/T2<&"0HMH2"&V0HM(22042"#J0HMH222$22#;`!,`% +MP`;`!Y"BTA))!9"BUA))(1)(-M`#T`+0`=``$DA#D*+>$@AMD*+0H^#]P`60 +MHMX22060JI82"&V0HL_@_]`%$CPST-"2KR*0HHT225*0HMH2"'F`````D*+> +M$@AY`````!)PO>20HI/PD**3X/\EX"0!]8+D-$7U@^23_'0!D_6"C(/@_I"B +MC1))28^"=8,`[A(&X9"BD^`$\."T`\ODD**3\)"BD^#_PY0(4#3O)>`D!_6" +MY#1%]8/DD_YT`9/_$C>\D**0$DE)D**3X'7P!*3U@H7P@Q)(X9"BD^`$\(#" +M(I"BC1))4I"BVA((>8````"0HMX2"'D`````$G"]Y)"BD_"0HI/@_\.4!U`T +M[R7@)!?U@N0T1?6#Y)/^=`&3_Q(WO)"BC1))29"BD^!U\`2D]8*%\(,22.&0 +MHI/@!/"`PB*0HL_O\)"BVA((>8````"0HMX2"'F`````$G"]D*+/X'7P'*0D +M0?6"Y#1%]8/DD_YT`9/_P`;`!Y"JN1((>0```(#0!]`&$C@'D*+/X'7P'*0D +M0_6"Y#1%]8/DD_YT`9/_P`;`!Y"JN1((>2`$``#0!]`&$C@'D*+/X'7P'*0D +M1?6"Y#1%]8/DD_YT`9/_P`;`!Y"JN1((>2````#0!]`&$C@'D*+/X'7P'*0D +M1_6"Y#1%]8/DD_YT`9/_P`;`!Y"BVA((>0``!_^0HM022060HMX2"&W0!]`& +M$G#!D*+/X'7P'*0D2?6"Y#1%]8/DD_YT`9/_P`;`!Y"BVA((>0``!_^0HM`2 +M2060HMX2"&W0!]`&`G#!D*+/[_"C[?#DH_"0HL_@=?`.I"0?]8+D-$7U@^23 +M_G0!D__`!L`'D*JY$@AY`!```-`'T`82.`>0JKD2"'GZ````?X!^"1(X!Y"J +MN1((>?@```!_@'X)$C@'?P-^`!(\[)"BS^!U\`ZD)!_U@N0T1?6#Y)/^=`&3 +M_\`&P`>0JKD2"'D`````T`?0!A(X!^20HM+PD*+/X'7P'*0D/_6"Y#1%]8/D +MD_YT`9/_$C>\Y/_N5`3^Y/W\>`H2"$?O\Y/_N5!#^Y/W\D*+3$@AMY/_^_?R0HM,222'#$DAF<'V0HL_@=?`. +MI"0?]8+D-$7U@^23_G0!D__`!L`'D*JY$@AY`@```-`'T`82.`>0HL_@=?`< +MI"0_]8+D-$7U@^23_G0!D_\2-[SD__[L5`?\D*.P$@AMD*+/X'7P#J0D'_6" +MY#1%]8/DD_YT`9/_P`;`!Y"JN1((>00```"!^N20HM?PD*+1X`3PX&0*8`)! +MEZ'%D*+/X'7P'*0D/_6"Y#1%]8/DD_YT`9/_$C>\Y/_N5`C^Y/W\D*+3$@AM +MY/_^_?R0HM,222'#$DAF8`*A,9"BS^!U\`ZD)!_U@N0T1?6#Y)/^=`&3_\`& +MP`>0JKD2"'D&````T`?0!A(X!Y"BS^!U\!RD)#_U@N0T1?6#Y)/^=`&3_Q(W +MO.3__NQ4!_R0H[`2"&V0HL_@=?`.I"0?]8+D-$7U@^23_G0!D__`!L`'D*JY +M$@AY"````-`'T`82.`>0HL_@=?`0```0#0!]`&$G#!D*+/X'7P'*0D/?6"Y#1%]8/D +MD_YT`9/_P`;`!Y"BVA((>0/_``"0HMX2"'D`````T`?0!A)PP>20HM?PD*+1 +MX`3PX&0*8`)!EX`2Y)"BU_"0HM'@!/#@9`I@`D&7D*+7X/\BD**-$DE2D*+: +M$@AY@````)"BWA((>0`````2<+WDD**3\)"BC1))29"BD^#_]8)U@P`2!J+^ +M[R7@)`'U@N0T1?6#Y)/\=`&3]8*,@^[PD**3X`3PX+0#RN20HI/PD**3X/TE +MX"0']8+D-$7U@^23_G0!D__`!L`'D**0$DE)=?`$[:3U@H7P@Q)(EY"JN1(( +M;=`'T`82.`>0HI/@!/#@PY0(0+DBD**-$DE2D*+:$@AY@````)"BWA((>0`` +M```2<+WDD**3\)"BD^#])>`D%_6"Y#1%]8/DD_YT`9/_P`;`!Y"BC1))277P +M!.VD]8*%\(,22)>0JKD2"&W0!]`&$C@'D**3X`3PX,.4!T"YD*+:$@AY@``` +M`)"BWA((>8`````2<+V0JKD2"'D`````?X!^#!(X!Y"JN1((>0````!_A'X, +M$C@'D*JY$@AY`````'^(?@P2.`>0JKD2"'D\````?XQ^#!(X!Y"JN1((>0`` +M``!_N'X,$C@'D*JY$@AY````@'^0?@P2.`>0JKD2"'D`````?Y1^#!(X!Y"J +MN1((>2`$``!_Q'X,$C@'D*JY$@AY(````'_(?@P".`>0GYS@9`)@!Y`&D.!$ +M`?`BD*%:X##@.)"@D.!D`7`PD*1(X`3PX+0*"Y"A7.`$\.20I$CPD*%!P".20H5SP$E_#(A(&B?]4`?Z0H5K@5/Y._O#O5`3_[E3[ +M3_`2!HG#$S#@"I```1(&HI"A6_`BD*%>X##@0)"A8>`$\.#_D*%?X-.?4#"0 +M!I+@(.(:D*%CX'`4?0C_$EEKD*%BX`3PD*%=X`3P@`:0!I)T!/#DD*%A\)"A +M8_`BD*$1X%3^\%3]\%3[\%3W\%3O\%3?\%2_\.2C\*/PH_"C=`SP(GT??V\2 +M3]B0!2?@5+_PD*$4=`3P(C&I@.?3$*\!P\#0D*$4X)"D2?!O<`(AE.\48$(4 +M8&T4<`(A0!1P`B%K)`1@`B&4D*1)X+0$!#&P(920I$G@M`($,<,AE)"D2>"T +M`P0QOR&4D*1)X&0!8`(AE#&R(920I$G@M`0$,=4AE)"D2>"T`@423\`AE)"D +M2>"T`P0QR"&4D*1)X&`"(90QJ2&4D*1)X+0$!#']@':0I$G@M`$%$D^U@&J0 +MI$G@M`,$,?.`7Y"D2>!P61)/]8!4D*1)X+0$!%$0@$F0I$G@M`$$,9N`/I"D +M2>"T`@0QZ8`SD*1)X'`M,9F`*9"D2>"T`P11)8`>D*1)X+0!!!%R@!.0I$G@ +MM`($43J`")"D2>!P`A&'T-"2KR(QJ7TA?_\23]B0H11T`_`BD*$4=`'P(C'5 +MD`4GX%2_\.20H13P(C'(@.\23\"`ZN3]_Q)/V)"A%'0!\"+D_?\23]B0!2?@ +M1$#PD*$4=`'P(A)."9"A%'0#\"(23`B0H11T`O`BD`4GX$1`\'TC$DP$D*$4 +M=`+P(GTB?_\23]B0!2?@1$#PD*$4=`/P(GTE?V\23]B0!2?@5+_PD*$4=`3P +M(A)."7TD?V\23]B0!2?@5+_PD*$4=`3P(JX'$E6@OP$6D*$1X,03$U0#(.`* +MKP9]`1)0[G\!(G\`(I"A$>#_Q!,35`,PX`^0H17@9`)@!WT!?P(24.Z0H17@ +M9`)@`Q)6:R*0`5?@8$CD\)`!/'0"\)"A%N#_$Q-4/S#@#.]4^_"0H1[@5/WP +M(I"A(^`$\)"A'N!4[_"0H47@_Y"A(^#3GT`.D*"0X+0!!Y"A%^!4^_`B$E:& +M[V0!8`B0`;AT`?!AAI"A'N#_5`-@")`!N'0"\(![D*$X##D")`!N'00\(!.D*$7X!,35#\@X`B0`;AT +M(/"`.Y"A2^!@")`!N'2`\(`MD`9BX##A")`!N'01\(`>D`9BX##@#^!4_/^_ +M@`B0`;AT$O"`")`!N.3P?P$BD`&Y=`3P?P`BD`*'X&`(D`&X=`'P@"60`I;@ +M8`B0`;AT$/"`%Y`"AN`@X0B0`;AT!/"`")`!N.3P?P$BD`&Y=`CP?P`B[V!$ +MD*"0X&0!<#R0H1?@5/[P?2M_#Q)/V)`&!.!4O_`266>_`160H1;@1$#P?09_ +M`1)3%I"A%70&\"*0`;ET`?"0`;AT"/`B?2Y_;Q)/V'T"?P$24Q:0!2?@5+_P +MD*$5=`+P(I"A%N#_$Q-4/S#@$>]4^_"0H1[@5/WP5`=P+H`ID*$CX`3PD*$> +GX%3O\)"A1>#_D*$CX-.?0`^0H)#@M`$+D*$7X%3[\"(26%4B`!Y3 +` +end diff --git a/sys/contrib/dev/urtwn/LICENSE b/sys/contrib/dev/urtwn/LICENSE deleted file mode 100644 index d70921f49379..000000000000 --- a/sys/contrib/dev/urtwn/LICENSE +++ /dev/null @@ -1,39 +0,0 @@ -Copyright (c) 2010, Realtek Semiconductor Corporation -All rights reserved. - -Redistribution. Redistribution and use in binary form, without -modification, are permitted provided that the following conditions are -met: - -* Redistributions must reproduce the above copyright notice and the - following disclaimer in the documentation and/or other materials - provided with the distribution. -* Neither the name of Realtek Semiconductor Corporation nor the names of its - suppliers may be used to endorse or promote products derived from this - software without specific prior written permission. -* No reverse engineering, decompilation, or disassembly of this software - is permitted. - -Limited patent license. Realtek Semiconductor Corporation grants a world-wide, -royalty-free, non-exclusive license under patents it now or hereafter -owns or controls to make, have made, use, import, offer to sell and -sell ("Utilize") this software, but solely to the extent that any -such patent is necessary to Utilize the software alone, or in -combination with an operating system licensed under an approved Open -Source license as listed by the Open Source Initiative at -http://opensource.org/licenses. The patent license shall not apply to -any other combinations which include this software. No hardware per -se is licensed hereunder. - -DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS -OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. diff --git a/sys/contrib/dev/urtwn/urtwn-rtl8192cfwT.fw.uu b/sys/contrib/dev/urtwn/urtwn-rtl8192cfwT.fw.uu deleted file mode 100644 index dbcbadbd14b1..000000000000 --- a/sys/contrib/dev/urtwn/urtwn-rtl8192cfwT.fw.uu +++ /dev/null @@ -1,285 +0,0 @@ -begin-base64 644 urtwn-rtl8192cfwT.fw.uu -wYgCADwAAAAKKBQZrD4AAEM0AQAAAAAAAAAAAAAAAAACdFwAAAAAAAAAAAAAAAAAAAAAAlmZAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnK6AAAAAAACaAEAAAUE -AwIAAwYFBAMABAYFBAIABAgHBgQABgoJCAYACAoJCAQACAoJCAIACAoJCAAACBIREAgAEBoZGBAA -GCIhIBgAICIhIBAAICIhIAgAICIhHAgAICIhFAgAICIgGAgAIDEwIBAAMDEwGAAAMDEvEBAAMDEs -EBAAMDEoEAAAMDEgEAAAMDEQEAAAMAQEBAUEBAUHBwcICgQEBAQGCg0OBQUHBwgMFBQEBAQFBwcJ -CQwOExMEBAQEBQoREwkJCQkMExQVBQUFBQUFBQYGBgYGBQUFBgYGBgYFBQYGBgYGBgUFBQUJCQkJ -Cw0QEgUJCgwNDhASCQkODhAQEhIAAAAAAAAAAAAkJioYGh0fIScpKgAAAB8jKCosAAQABAAIABAA -GAAkADAASABgAJAAwADYAFAAeACgAMgBQAGQAeACMAEsAUAB4ALQA+gEsAZAB9AAAgACAAQACAAM -ABIAGAAkADAASABgAGwAKAA8AFAAZACgAMgA8AEYAGQAoADwAWgB9AJYAyAD6AAAAAABAgICAwQF -CAECAgIEBw8eBQYHDxIjRmQBAQEBAQIDBAUGBwgBAgMEBQYHCAUGBwgJCgsMIh8eGAAgAAAAAAAA -AAAAAAAAqwd0hCv1guQ0BPWD4FR/kJd08OBUH6Pw+nXwCeukJGf1guXwNJP1g+D5kJd38Osl4CSB -9YLkNJL1g+D/o+CQl3jP8KPv8Osl4CQE9YLkNJb1g+D/o+CQl3rP8KPv8Ool4CRm9YLkNEH1g+ST -/nQBk//k/P3rJeAl4CTh9YLkNJL1gxIqf+rDmUADAkNZkJd14P90xSv1guQ0lvWD7/DvBJCXdvCQ -l3fg/5CXduD+059AAwJDmO7DlBBAIe4k8P90AX4AqAcIgAXDM84zztj5/5CXeOBe/qPgX05wJ5CX -duD/w5QQUEp0AX4AqAcIgAXDM84zztj5/5CXeuBe/qPgX05gLZCXduD/ZBNgCe9kEmAE77QRDZCX -eOAw4AaQl3Z0GPCQl3bgkJd18JCXdPCASJCXduAE8AJCxJCXd+D6kJd14P9qcHl0xSv1guQ0lvWD -7/B18AnrpCRp9YLl8DST9YPgtAETkJd04P8w5gEikJd14ERAkJd08JCXdeD/JeAknvWC5DRB9YPk -k/x0AZP97yXgJGb1guQ0QfWDdAGTLf/kkzzDE/7vE//k/P3rJeAl4CTh9YLkNJL1gxIqf4BpkJd1 -4NOaQGGQl3fg/3TFK/WC5DSW9YPv8JCXde/wkJd08Pqj4P8l4CSe9YLkNEH1g+ST/HQBk/3vJeAk -ZvWC5DRB9YN0AZMt/+STPMMT/u8T/+T8/esl4CXgJOH1guQ0kvWDEip/rwIidAEr9YLkNJL1g+Tw -kJd04ESA/3SEK/WC5DQE9YPv8CKQl2br8KPq8KPp8KKv5DOj8MKvkJdm4Puj4Pqj4PmQAAESYzf6 -5fAkAP/kOv6Ql2aj4PqQAAHuj/ASY44SKdn/YDe1IhuQl2bg+6Pg+qPg+ZAAARJjN2UkcATlI2Xw -YC6Ql2bg+6Pg+qPg+ZAAARJjN/+u8BJ79IAVkJdm4Puj4Pqj4PkSKdllImADEn6CkJdp4CT/kq8i -5PUlIgJ+lQJ+nOSQl1rwkJda4P/DlCBAAwJOXHXwCe+kJGr1guXwNJP1g+BkAWADAk5TkJda4CXg -JMD1guQ0kfWD4Pyj4NOUAOyUAFADAk5T73XwCqQkAPl0kDXw+nsBixT1FYkWkJda4CXgJMD1guQ0 -kfWD4P2j4JCXZs3wo+3w7yXgJIP1guQ0lPWD4P+j4JCXaM/wo+/wkAACEmM3/67wEmMML//l8D6Q -l2/wo+/wkAAGEmM3/67wkAAEEmM3L//l8D6Ql23wo+/wkAAIEmM3/5CXa+Xw8KPv8JCXWuD+JIT1 -guQ0BPWD4FQ/kJdc8OD9VB+j8HXwCe6kJGf1guXwNJP1g+CQl3HwkJda4PskhPWC5DSW9YPgw5QF -QAMCSbqQl3Hg/pCXXeCeQBOQl3HgkJdd8O1UQP2Ql1zw7k3wkAT94GQBcCiQl13g/5BBSpP+dEMr -9YLkNJX1g+DDnkAG75BBEoAykJdd4JBBLoApkJdd4P+QQUqT/pCXWuAkQ/WC5DSV9YPgw55ABu+Q -QNqAB5CXXeCQQPaTkJdq8JCXauB18AakJFD5dEA18HUR//USiROQl1zgkEHyk//TkJdp4J+Ql2jg -lABADZCXWuD/5P0SXzICTemQl1rgJeAl4CTh9YLkNJL1g+D8o+D9o+D+o+D/kJdeEip/kJde4Pij -4Pmj4Pqj4PvAAMABwALAA6sRqhKpExIp2f9+AKsUqhWpFhJjDP2s8BIp8uT8/dAD0ALQAdAA6y// -6j7+7Tn97Dj8kJdeEip/kJde4Pij4Pmj4Pqj4PvAAMABwALAA6sRqhKpE5AAARJif/9+AKsUqhWp -FpAAAhJjN/2s8BIp8uT8/dAD0ALQAdAA6y//6j7+7Tn97Dj8kJdeEip/kJde4Pij4Pmj4Pqj4PvA -AMABwALAA6sRqhKpE5AAAhJif/9+AKsUqhWpFpAABBJjN/2s8BIp8uT8/dAD0ALQAdAA6y//6j7+ -7Tn97Dj8kJdeEip/kJde4Pij4Pmj4Pqj4PvAAMABwALAA6sRqhKpE5AAAxJif/9+AKsUqhWpFpAA -BhJjN/2s8BIp8uT8/dAD0ALQAdAA6y//6j7+7Tn97Dj8kJdeEip/kJde4Pij4Pmj4Pqj4PvAAMAB -wALAA6sRqhKpE5AABBJif/9+AKsUqhWpFpAACBJjN/2s8BIp8uT8/dAD0ALQAdAA6y//6j7+7Tn9 -7Dj8kJdeEip/qxGqEqkTkAAFEmJ//34AkJdm4Pyj4P0SKfLk/P2Ql17g+KPg+aPg+qPg+9MSY7uQ -l15AUOD8o+D9o+D+o+D/wATABcAGwAerEaoSqROQAAUSYn//fgCQl2bg/KPg/RIp8qsHqgbQB9AG -0AXQBMPvm//umv7tlAD97JQA/JCXXhIqf4AHEiqLAAAAAJCXXuD8o+D9o+D+o+D/kJda4CXgJeAk -4fWC5DSS9YMSKn+Ql1zgJeAkZvWC5DRB9YPkk/50AZP/5Pz9kJde4Pij4Pmj4Pqj4PvTEmO7QAuQ -l1rg/xJCIAJNYJCXXOAl4CSe9YLkNEH1g+ST/nQBk//k/P2Ql17g+KPg+aPg+qPg+8MSY7tAAwJN -YJCXWuD/fQESXzICTWCQl1rg/ySE9YLkNJb1g+BkBWADAkujdfAJ76Qka/WC5fA0k/WD4GQBcAMC -S6OQk2Lg/7QDC5CXXeDDlBlAPYAu77QCC5CXXeDDlBFALoAfkJNi4P+0AQuQl13gw5QKQBuADO9w -EZCXXeDDlANADZCVY3QB8IAF5JCVY/CQl1rg/yRD9YLkNJX1g+D+w5QwUAvkkJdy8HSELwJLTZCV -Y+BkAWADAktCkJda4CRk9YLkNJX1g+BkCmBbkJda4P/uJAX95DP8dCEv9YLkNJL1g+D/053sZID4 -dICYUDiQl1rg/u8kBf3kM/x0Qy71guQ0lfWD4NOd7GSA+HSAmFAWkJda4CSk9YLkNJb1g+D/kJdd -4G9gVpCXWuAkQ/WC5DSV9YPg/9OURkAIkJdydAXwgBHv05Q8kJdyQAV0A/CAA3QB8JCXWuD/JEP1 -guQ0lfWD4P50IS/1guQ0kvWD7vCQl1rgJGT1guQ0lYAvkJda4P8khPWC5DSW9YPk8HRkL/WC5DSV -9YPgBPCAFOSQl3LwkJda4CSE9YLkNJb1g+TwkJdd4P+Ql1rg/iSk9YLkNJb1g+/w7jDgHpCXcuDE -VPDwkJda4MMT/ySk9YLkNAT1g+BUDwJNQ5CXWuDDE/8kpPWC5DQE9YPgVPACTUOQl1rg/ySE9YLk -NJb1g+BkBmADAk1gdfAJ76Qka/WC5fA0k/WD4GQBcAMCTWCQl14SKosAAAAAkEIT5JP/fgCQl2bg -/KPg/RIp8uT8/ZCXYhIqf+SQl1vwkJde4Pij4Pmj4Pqj4PvAAMABwALAA6sUqhWpFpCXW+D/dfAC -pPWChfCDEmM3/azw75BCDpP/fgASKfLk/P3QA9AC0AHQAOsv/+o+/u05/ew4/JCXXhIqf5CXYuD8 -o+D9o+D+o+D/kJde4Pij4Pmj4Pqj4PvTEmO7UA6Ql1vgBPDgZAVgAwJL+5CXW+DDE/CQl3Lg/7QB -DZCXW+BwXZCXcgTwgFvvtAMdkJdb4P9wCJCXcnQD8IBI77QBCJCXcnQB8IA8gDWQl3LgZAVwMpCX -W+D/cAiQl3J0BfCAD++Ql3K0AQV0A/CAA3QB8NOQl2nglAOQl2jglABABeSQl3Lw05CXaeCUA5CX -aOCUAEAF5JCXcvCQl1rg/zDgGpCXcuDEVPDw78MT/ySk9YLkNAT1g+BUD4ATkJda4MMT/ySk9YLk -NAT1g+BU8PB0pC/1guQ0BPWDwIPAguD/kJdy4P7vTtCC0IPwkJda4P8khPWC5DSW9YPg05QFUA90 -hC/1guQ0lvWD4ATwgA+Ql1rgJIT1guQ0lvWD5PCQl1rg/ySE9YLkNAT1g+BUH8OUCVAFkJIAgBF0 -hC/1guQ0BPWD4JCSACDiBXQI8IADdATwkJda4GANkJbE4P+QkgDgw59QCJCSAOCQlsTwkJbE4JAE -gPCrFKoVqRbk9fASY2+rFKoVqRaQAALk9fASY46QAATk9fASY46QAAbk9fASY46QAAjk9fASY46Q -l1rg/yXgJMD1guQ0kfWD5PCj8O8l4CSD9YLkNJT1g+Two/DvJeAkw/WC5DSU9YPk8KPwkJda4ATw -AkUOIu9wAwJQxZCXTeBgAwJVB5CXOeD8o+D9o+D+o+D/kICFEip/f4x+CBIv2ZCW5eD8o+D9o+D+ -o+D/kICFEip/f0R+CBIv2ZCW6eD8o+D9o+D+o+D/kICFEip/f1x+CBIv2ZCW7eD8o+D9o+D+o+D/ -kICFEip/f2x+DhIv2ZCW8eD8o+D9o+D+o+D/kICFEip/f3B+DhIv2ZCW9eD8o+D9o+D+o+D/kICF -Eip/f3R+DhIv2ZCW+eD8o+D9o+D+o+D/kICFEip/f3h+DhIv2ZCW/eD8o+D9o+D+o+D/kICFEip/ -f3x+DhIv2ZCXAeD8o+D9o+D+o+D/kICFEip/f4B+DhIv2ZCXBeD8o+D9o+D+o+D/kICFEip/f4R+ -DhIv2ZCXCeD8o+D9o+D+o+D/kICFEip/f4h+DhIv2ZCXDeD8o+D9o+D+o+D/kICFEip/f4x+DhIv -2ZCXEeD8o+D9o+D+o+D/kICFEip/f9B+DhIv2ZCXFeD8o+D9o+D+o+D/kICFEip/f9R+DhIv2ZCX -GeD8o+D9o+D+o+D/kICFEip/f9h+DhIv2ZCXHeD8o+D9o+D+o+D/kICFEip/f9x+DhIv2ZCXIeD8 -o+D9o+D+o+D/kICFEip/f+B+DhIv2ZCXJeD8o+D9o+D+o+D/kICFEip/f+x+DhIv2ZCXKeD8o+D9 -o+D+o+D/kICFEip/fwR+DBIv2ZCXLeD8o+D9o+D+o+D/kICFEip/fwR+DRIv2ZCXMeD8o+D9o+D+ -o+D/kICFEip/fwx+CRIv2ZCXNeD8o+D9o+D+o+D/kICFEip/fwR+CBIv2ZCXTXQB8CKQl03gZAFg -AwJVB3+MfggSJ96QlzkSKn9/RH4IEifekJblEip/f1x+CBIn3pCW6RIqf39sfg4SJ96Qlu0SKn9/ -cH4OEifekJbxEip/f3R+DhIn3pCW9RIqf394fg4SJ96QlvkSKn9/fH4OEifekJb9Eip/f4B+DhIn -3pCXARIqf3+Efg4SJ96QlwUSKn9/iH4OEifekJcJEip/f4x+DhIn3pCXDRIqf3/Qfg4SJ96QlxES -Kn9/1H4OEifekJcVEip/f9h+DhIn3pCXGRIqf3/cfg4SJ96Qlx0SKn9/4H4OEifekJchEip/f+x+ -DhIn3pCXJRIqf38EfgwSJ96QlykSKn9/BH4NEifekJctEip/fwx+CRIn3pCXMRIqf38EfggSJ96Q -lzUSKn9/jH4IEifekJfDEip/kJfD4Pyj4P2j4P6j4P/tRMD97JCXwxIqf5CXw+D8o+D9o+D+o+D/ -kICFEip/f4x+CBIv2ZCAhRIqiwABAAB/RH4IEi/ZkICFEiqLANslpH9cfggSL9mQgIUSKosg2yWk -f2x+DhIv2ZCAhRIqiyDbJaR/cH4OEi/ZkICFEiqLBBslpH90fg4SL9mQgIUSKosEGyWkf3h+DhIv -2ZCAhRIqiwQbJaR/fH4OEi/ZkICFEiqLBBslpH+Afg4SL9mQgIUSKotj2yWkf4R+DhIv2ZCAhRIq -iwQbJaR/iH4OEi/ZkICFEiqLINslpH+Mfg4SL9mQgIUSKosg2yWkf9B+DhIv2ZCAhRIqiyDbJaR/ -1H4OEi/ZkICFEiqLINslpH/Yfg4SL9mQgIUSKosAGyWkf9x+DhIv2ZCAhRIqiwAbJaR/4H4OEi/Z -kICFEiqLJNslpH/sfg4SL9l/BH4MEifekJfDEip/kJfD4Pyj4P2j4P7k/+yQl8MSKn+Ql8Pg/KPg -/aPg/qPgRBH/7JCXwxIqf5CXw+D8o+D9o+D+o+D/kICFEip/fwR+DBIv2X8Efg0SJ96Ql8MSKn+Q -l8Pg/KPg/aPg/qPgVPD/7JCXwxIqf5CXw+D8o+D9o+D+o+BEAf/skJfDEip/kJfD4Pyj4P2j4P6j -4P+QgIUSKn9/BH4NEi/Zfwx+CRIn3pCXwxIqf5CXw+D8o+D9o+D+5P/skJfDEip/kJfD4Pyj4P2j -4P6j4EQR/+yQl8MSKn+Ql8Pg/KPg/aPg/qPg/5CAhRIqf38MfgkSL9l/DH4JEifekJfDEip/kJfD -4Pyj4P2j4P6j4P/tVA/97FTw/JCXwxIqf5CXw+D8o+D9o+D+o+D/7UQQ/exEAfyQl8MSKn+Ql8Pg -/KPg/aPg/qPg/5CAhRIqf38MfgkSL9l/BH4IEifekJfDEip/kJfD4Pyj4P2j4P6j4FTw/+yQl8MS -Kn+Ql8Pg/KPg/aPg/qPgRAH/7JCXwxIqf5CXw+D8o+D9o+D+o+D/kICFEip/fwR+CBIv2eSQl03w -Io8R7yXgJAT1guQ0lq+C9RKPE+URdfACpCSB+XSSNfB1FAH1FYkWdfAJ5RGkJGX1guXwNJOvgvUX -jxjlEXXwCaQkY/l0kzXwdRkB9RqJG3TBJRH1guQ0kvWD4BJj2FWKAFWfAVW0AlXJA1XzBFYIBVYd -BlZEDFZyDVafDlbMDwAAVwDlESXgJAT1guQ0lvWDdPDwo3QVgDzlESXgJAT1guQ0lvWDdPDwo3QQ -gCflESXgJAT1guQ0lvWDdPDwo3QFgBLlESXgJAT1guQ0lvWDdPDwo+Tw5REl4CSB9YLkNJL1g3QP -8KN0j/ACVwDlESXgJAT1guQ0lvWDdA/wo3T1gCflESXgJAT1guQ0lvWDdA/wo3TwgBLlESXgJAT1 -guQ0lvWD5PCjdA3w5REl4CSB9YLkNJL1g+Two/ACVwCQBEfgqxSqFakWEmKskARG4KsUqhWpFpAA -ARJivpAEReCFE4KFEoPwkAREAlb3kARL4KsUqhWpFhJirJAESuCrFKoVqRaQAAESYr6QBEnghROC -hRKD8JAESIBYkARP4KsUqhWpFhJirJAETuCrFKoVqRaQAAESYr6QBE3ghROChRKD8JAETIArkART -4KsUqhWpFhJirJAEUuCrFKoVqRaQAAESYr6QBFHghROChRKD8JAEUOCFE4KFEoOj8KsUqhWpFsAD -wALAARIp2f+rGaoaqRsSKdlf0AHQAtADEmKsqxTlFiQB+eQ1FfrAA8ACwAESKdn/qxmqGqkbkAAB -EmJ/X9AB0ALQAxJirIUTgoUSg8CDwILg/4UYgoUXg+D+717QgtCD8IUTgoUSg6PAg8CC4P+FGIKF -F4Oj4P7vXtCC0IPw5REl4CSB9YLkNJL1g+D+o+BOYEyQl3J0C/CQl3Lg/8OUAFADAlhGdAF+AKgH -CIAFwzPOM87Y+f/lESXgJIH1guQ0kvWD4F7+o+BfTmAKkJdy4CQQo/CAaJCXcuAU8IC65REl4CQE -9YLkNJb1g+D+o+BOYEeQl3J0D/CQl3Lg/8OUAEA8dAF+AKgHCIAFwzPOM87Y+f/lESXgJAT1guQ0 -lvWD4F7+o+BfTmAIkJdy4KPwgA2Ql3LgFPCAv+SQl3Pw5REl4CQE9YLkNJb1g+D+o+BOYEfkkJdy -8JCXcuD/w5QQQAMCWQB0AX4AqAcIgAXDM84zztj5/+URJeAkBPWC5DSW9YPgXv6j4F9OYAaQl3Lg -gGOQl3LgBPCAvuURJeAkgfWC5DSS9YPg/qPgTmBG5JCXcvCQl3Lg/8OUDFA8dAF+AKgHCIAFwzPO -M87Y+f/lESXgJIH1guQ0kvWD4F7+o+BfTmAIkJdy4CQQgAmQl3LgBPCAv+SQl3TwkJdz4P918Anl -EaQkZ/WC5fA0k/WD7/CQl3Tg/nXwCeURpCRo9YLl8DST9YPu8HSEJRH1guQ0BPWD4NOfQB+Ql3Pg -/3SkJRH1guQ0lvWD7/B0hCUR9YLkNAT1g+/wkJdz4P/TlBNACJCTYnQD8IAh79OUC0AIkJNidALw -gBPv05QDQAiQk2J0AfCABeSQk2LwkJNi4JAEsfAiwODA8MCDwILA0HXQAMAAwAHAAsADwATABcAG -wAeQAcR0mfB0WaPwkAE34FUr9S+QATTgVSj1LJABNuBVKvUu5Swg4AMCW0uQATR0AfCF0U2F0k6F -00+F1FCF1VGF1lKF11OF2VTlVFRAwxP/5VNUIG9wAwJa+OVUMOUDAlr45VJUH/UI5U1UP/UJ5VFU -H//lCCXgJAP1guQ0lfWD5I/wEmLg5VNUH//lCCXgJMD1guQ0kfWD5I/wEmLg5QnTlARAA3UJBHXw -CuUIpCQA9YLl8DSQ9YN18ALlCRJjzOD+o+D/5VNUHy//5D7+dfAK5QikJAD1guXwNJD1g3XwAuUJ -EmPM7vCj7/DlVCDmJOVTVB//5Qgl4CSD9YLkNJT1g+SP8BJi4OVPMOc2rwgSddiAL+VTVB//5Qgl -4CTD9YLkNJT1g+SP8BJi4OVPMOcS5U9Uf/3lU1Qf9Q2rCa8IEna65WZgT5CXreBgNZABW+TwkAE8 -dATwkAQb4FR/ZH9wNHVEFPVF+/1/WH4BEjWrkAFbdAXwkAaSdAHwkJen8IAUkAQb4FR//79/CpCX -q+D/fQESb0nlLDDhIZABNHQC8IXRVoXSV4XTWIXUWYXVWoXWW4XXXIXZXRJ82eUsMOMGkAE0dAjw -5Sww5AmQATR0EPBDVRDlLDDlIZABz+Aw5RrgVN/wkAE0dCDwkAAD4FT78H8QfgASN1SA/uUsMOYG -kAE0dEDw5S4w4QmQATZ0AvBDVUDlLjDgCZABNnQB8BJ1YuUuMOJjkAE2dATw5WVkAXBX5WZgU+Vm -ZAJwJ5AGq+CQl5/wkAaq4JCXqvCQl5/gcAeQl6rg/4AFkJef4P+Ql5/v8JCXoeBgA+AU8JCXoOTw -kAFX8JABPHQC8JCXr+BU/fDgVO/wEnZO5S4w4zGQATZ0CPDlZWQBcCXlZmAhkAFX5PCQATx0AvB1 -RAN1RQDk+/1/VH4BEjWrkAFXdAXw5S4w5DqQATZ0EPDlZWQBcC7lZmAqkAFX5PCQATx0AvCQl67k -8JCXr+BU/fDgVANwDpCXqfCQl6vg/30BEm9J5S4w5RKQATZ0IPDlZbQBB+VmYAMSffrlLjDmKpAB -NnRA8OVlZAFwHuVmYBqQl6/gVP7w4FQDcA6Ql6nwkJer4P99ARJvSeUvMOEJkAE3dALwEnwodJkE -kAHE8HRZo/DQB9AG0AXQBNAD0ALQAdAA0NDQgtCD0PDQ4DKQBER0EfCjdPDwo3QP8KPk8JCXWvCQ -l1rg/8OUEFAUdKQv9YLkNAT1g+TwkJda4ATwgOLkkJda8JCXWuD7w5QgQAMCXzHg/3XwCqQkAPWC -5fA0kPWD5PCj8HXwCu+kJAL1guXwNJD1g+Two/B18ArvpCQE9YLl8DSQ9YPk8KPwdfAK76QkBvWC -5fA0kPWD5PCj8HXwCu+kJAj1guXwNJD1g+Two/B0pC/1guQ0lvWDdBPwdGQv9YLkNJX1g+Tw7yXg -JMD1guQ0kfWD5PCj8O8l4CSD9YLkNJT1g+Two/DvJeAkA/WC5DSV9YPk8KPw7yXgJMP1guQ0lPWD -5PCj8O8l4CSE9YLkNJX1g+Two/DvJeAkxPWC5DSV9YPk8KPwdGQv9YLkNJb1g+TwdEQv9YLkNJb1 -g+TwdIQv9YLkNJb1g+TwkEHEk/50AZP/kEGMdAGTL//kkz7DE/7vE//k/P3rJeAl4CTh9YLkNJL1 -gxIqf3XwCeukJGr1guXwNJP1g3QB8HXwCeukJGn1guXwNJP1g3QB8HTBK/WC5DSS9YN0DPB18Anr -pCRl9YLl8DST9YN0//Cj8HXwCeukJGP1guXwNJP1g+Two3QP8HXwCeukJGf1guXwNJP1g3QT8HXw -CeukJGj1guXwNJP1g+TwdIQr9YLkNAT1g3QT8JCXWuAE8AJdZiKpB3SEKfWC5DQE9YPgVH+Ql3Tw -4FQf/5CXd/B18AnppCRo9YLl8DST9YPgkJd58HXwCemkJGf1guXwNJP1g+D+kJd68Okl4CQE9YLk -NJb1g+D7o+CQl3vL8KPr8Okl4CSB9YLkNJL1g+D7o+CQl33L8KPr8O/TnkAMkJd64JCXd/CQl3Tw -7XADAmCRkJd47fCQl3TgMOYOkJd34JCXdPCQl3jgFPCQl3jgcAMCYJGQl3fg/9OUAFADAmCR5JCX -dvDvFJCXdfCQl3ng/ZCXdeD/051Ab++UEEAh7yTw/3QBfgCoBwiABcMzzjPO2Pn/kJd94F7+o+Bf -TnAnkJd14P/DlBBQN3QBfgCoBwiABcMzzjPO2Pn/kJd74F7+o+BfTmAakJd14JCXdPCQl3bgBPCQ -l3jg/5CXduBvYAiQl3XgFPCAg5CXeOD/kJd24MOfUA+Ql3XgtQUIkJd54JCXdPCQl3Tg/yXgJJ71 -guQ0QfWD5JP8dAGT/e8l4CRm9YLkNEH1g3QBky3/5JM8wxP+7xP/5Pz96SXgJeAk4fWC5DSS9YMS -Kn+Ql3Tg/3SEKfWC5DQE9YPv8CKQAczgVA+Ql1rwkJda4P1wAwJifpCX0eD/dAF+AKgHCIAFwzPO -M87Y+f/vXXADAmJfkJfR4HXwBKQk0PWC5fA0AfWD4JCXW/Cir+Qzo/DCr3VhAXVil3VjW3VkAXsB -epd5XRJ4j5CXXOAk/5Kvo+D/xBMTE1QBkJfRMOBw4HXwAqQkiPWC5DXw9YPgkJde8JCX0eB18AKk -JIn1guQ18PWD4JCXX/CQl9HgdfAEpCTR9YLl8DQB9YPgkJdg8JCX0eB18ASkJNL1guXwNAH1g+CQ -l2HwkJfR4HXwBKQk0/WC5fA0AfWD4JCXYvCAQuB18ASkJNH1guXwNAH1g+CQl17wkJfR4HXwBKQk -0vWC5fA0AfWD4JCXX/CQl9HgdfAEpCTT9YLl8DQB9YPgkJdg8O9Uf/97AXqXeV4SbbmQl1rg/5CX -0eD+dAGoBgiAAsMz2Pz0X5CXWvCQl9Hg/3QBqAcIgALDM9j8kAHM8JCX0eAE8OBUA/ACYPLCr3To -BJABxPB0YKPwkJda4JABxvCQl9HgkAHH8ID+IrsBDOWCKfWC5YM69YPgIlAG6SWC+OYiu/4G6SWC -+OIi5YIp9YLlgzr1g+STIrsBBomCioPwIlAC9yK7/gHzIvi7AQ3lgin1guWDOvWD6PAiUAbpJYLI -9iK7/gXpJYLI8iLF8Pij4CjwxfD45YIVgnACFYPgOPAio/jgxfAl8PDlghWCcAIVg+DIOPDoIrsB -ComCioPg9fCj4CJQBofwCecZIrv+B+P18AnjGSKJgoqD5JP18HQBkyK7ARDlgin1guWDOvWD4PXw -o+AiUAnpJYL4hvAI5iK7/grpJYL44vXwCOIi5YMq9YPpk/Xwo+mTIrsBComCioPw5fCj8CJQBvcJ -p/AZIrv+BvPl8AnzGSL4uwER5YIp9YLlgzr1g+jw5fCj8CJQCeklgsj2CKbwIrv+Ceklgsjy5fAI -8iLrn/Xw6p5C8OmdQvDonEXwIqQlgvWC5fA1g/WDItCD0IL45JNwEnQBk3ANo6OT+HQBk/WCiIPk -c3QCk2hg76Ojo4Df5JCXV/Cj8BJ5hZAAAuBU4JCXtmAFdAHwgAN0AvCQAPPgMOMIkJe3dAHwgAXk -kJe38JCXt+C0AROQAPLgMOcMkJewdP3wo3Qz8IAKkJewdP3wo3Qv8OT1VRJdLhJ+jBJ5NhIyPRJE -/3UoM+T1KXUqAvUrkAEw5Sjwo+Up8KPlKvCj5SvwkADz4DDiDZAFQXQQ8JAFWvCj5PCQAWR0oPB1 -RP/k9UX7fQF/UH4BEjWrdTAfdTEB5PUykAE45TDwo+Ux8KPlMvASeDiQl1nl2fCQATx0//Cj8KPw -kAE08KPwo/Cj8MKvkACA4ERA8H8QfgASN1R16ANDqIXSr5ABwOTwo/Cj8KPwkAHG8KPwkJdX4GQB -8CT+kAHE8HRjo/DlVTDmF8KvU1W/0q8SRQmQl43g/2ADtAEDEmkS5VUw5wfCr1NVf9Kv5VUw5ArC -r1NV79KvEmDokJeN4HADEmwKEnyFgKqQAAISYn+Ql4vwkAABEmJ/JeAl4JCXivASKdkl4CXgkJeO -8JCXi+CQBJjwkJeK4BMTVD+QBJnwkJeO4BMTVD+QBJrwkAVg4JCXmfCQBWHgkJea8JAFYuCQl5vw -kAVj4JCXnPCir+QzkJdp8MKvkJeK4P8SeOSQl2ngJP+Sr5CXi+BwAwJmjJCXiuBwAwJmjJCXjuBw -AwJmjKKv5DOQl2nwwq+Ql510AfCQl2ngJP+Sr5AAReBU/vCj4EQB8JCXg+BgHZCXj+D8o+D9o+D+ -o+D/kICFEip/f4B+CBIv2YAGkAUidH/wkABF4FTv8JAFh+BkgPCQl5ngkAWE8JCXmuCQBYXwkJeb -4JAFhvCQl5zgkAWH8KKv5DOQl2nwwq+QATzgRCDwfSDk/xI3AIArkJeL4HAtkJed8JAAReBU/vCj -4FT+8JAFIuTwoq8zkJdp8MKvfSDk/xI2kpCXaeAk/5KvIpCXZuvwo+rwo+nwkJdm4Puj4Pqj4PmQ -AAQSYn//VB+Ql2nwkAADEmJ/VPDEVA+Ql2rw71QgxBNUB6PwkAAEEmJ/VEDEExNUA5CXbPCQl2ng -/3XwCaQkZfWC5fA0k62CkJdt8KPt8O918AmkJGP5dJM18PqjdAHwo+rwo+nwkJdmo+D6o+D5kAAD -EmJ/VA//kJdv4Puj4Pqj4PnvEmKskJdm4Puj4Pqj4PmQAAISYn//kJdv4Puj4Pqj4PmQAAHvEmK+ -kJdm4Puj4Pqj4PmQAAESYn//kJdt4Pyj4P31goyD7/ASKdmNgoyDo/CQl2rg/pCXaeD/JMH1guQ0 -kvWD7vCQl2vg/nXwCe+kJGn1guXwNJP1g+7wdfAJ76QkavWC5fA0k/WDdAHwkJds4P518AnvpCRr -9YLl8DST9YPu8AJVCMDgwPDAg8CCwNB10ADAAMABwALAA8AEwAXABsAHkAHEdAHwdGij8FOR35AB -POBVMPU0o+BVMfU1o+BVMvU25TQw4A+QATx0AfCQAVN0B/BDVYDlNDDhCZABPHQC8BJ50eU0MOI6 -kAE8dATwkAaS4DDgHnVEFHVFAOT7/X9YfgESNauQAVt0BfCQBpJ0AfCAD5CXp+TwkJer4P99ARJv -SeU0MOMGkAE8dAjw5TQw5AmQATx0EPASfgvlNDDlCZABPHQg8BJuheU1MOAVkAE9dAHwkACD4JCX -q/Dg/30BEm9J5TYw4waQAT50CPB0AQSQAcTwdGij8NAH0AbQBdAE0APQAtAB0ADQ0NCC0IPQ8NDg -MpCXhODDlBRQBuAE8AJpzJCXhOBkFGADAmnMkJeT4HAlkJeW4HAfkJeU4HAZkJeX4HATkJeV4HAN -kJeY4HAHkAT94FT+8JCXk+CQBIjwkJeU4JAEifCQl5XgkASK8KPk8JCXluCQBIzwkJeX4JAEjfCQ -l5jgkASO8KPk8JCXf+CQBJDwkJeA4JAEkfCQl4HgkASS8JCXguCQBJPw5JCXhPCQl38E8OSj8KPw -o/CQl5Pwo/Cj8KPwo/Cj8JAFYOCQl1rwkAVh4JCXW/CQBWLgkJdc8JAFY+CQl13wkJec4P+Ql13g -/tOfUAuQl5zgw57TlAFAEZCXiuC0AQKAA5CXjuD/EnjkIpCX0O3wkJfP7/DTlAdQbeD/dAGoBwiA -AsMz2Pz0/5AAR+Bf8H8QfgASN1SQl8/g/3QBqAcIgALDM9j8/5AARuBP8H8QfgASN1SQl9DgYBaQ -l8/g/3QBqAcIgALDM9j8/5AARYB4kJfP4P90AagHCIACwzPY/PT/kABFgH2Ql8/gJPjw4P90AagH -CIACwzPY/MRU8PT/kABD4F/wfxB+ABI3VJCXz+D/dAGoBwiAAsMz2Pz/kABD4E/wfxB+ABI3VJCX -0OBgG5CXz+D/dAGoBwiAAsMz2PzEVPD/kABC4E+AGpCXz+D/dAGoBwiAAsMz2PzEVPD0/5AAQuBf -8H8QfgASN1Qif3h+CBIn3pCXPRIqf38EfgwSJ96Ql0ESKn9/AH4IEifekJdFEip/kJe34JCXPbQB -E+D8o+D9o+D+o+BUx//tVMf9gA3g/KPg/aPg/qPgVMf/7JCAhRIqf394fggSL9mQl0Hg/KPg/aPg -/qPgVA//7JCAhRIqf38EfgwSL9mQl0Xg/KPg/aPg/qPgRAL/7JCAhRIqf38AfggSL9l/cH4OEife -kJdJEip/kICFEiqLABsloH9wfg4SL9mQgFkSKosAAAAA5P3/EjSBkJe34LQBEZCAWRIqiwAAAADk -/X8BEjSBkAAR4FT28H8QfgACN1SQl53gZAFgCZCXi+BgAwJs4pCXf+DDlP9QBeAE8IA7kJeA4MOU -/1AG4ATw5IAokJeB4MOU/1AK4ATw5JCXgPCAFZCXguDDlP9QEOAE8OSQl4HwkJeA8JCXf/CQAETg -VAxgduAw4jKQl5Pgw5T/UAXgBPCAJJCXlODDlP9QBuAE8OSAEZCXleDDlP9QDOAE8OSQl5TwkJeT -8JAAROAw4zKQl5bgw5T/UAXgBPCAJJCXl+DDlP9QBuAE8OSAEZCXmODDlP9QDOAE8OSQl5fwkJeW -8JAE/eBEAfAiixGKEokTkAACEmJ/kJeM8OAw4FyQl4N0AfB/gH4IEifekJeFEip/qxGqEqkTkAAB -EmJ//+T8/f54GhIqbKgEqQWqBqsHkJeF4Pyj4P2j4P6j4P/sVAP860//6k7+6U396Ez8kJePEip/ -kAUi5PCANeSQl4Pwf4B+CBIn3uxUA/zsRMD8kJeFEip/kJeF4Pyj4P2j4P6j4P+QgIUSKn9/gH4I -Ei/ZkJeM4JAARzDhEXQM8KPgRAzwkABG4EQQ8IAQ4FTz8KPgVPPwkABG4FTv8OSQl4nwIpCXY+vw -o+rwo+nw7xJj2G3qAW34Am4GA24UBW4iBm4wB24+CW5MDG5aDW5oDgAAbnaQl2Pg+6Pg+qPg+QJ8 -spCXY+D7o+D6o+D5An6jkJdj4Puj4Pqj4PkCfFeQl2Pg+6Pg+qPg+QJ63pCXY+D7o+D6o+D5AmbA -kJdj4Puj4Pqj4PkCflSQl2Pg+6Pg+qPg+QJEaJCXY+D7o+D6o+D5AmVfkJdj4Puj4Pqj4PkCe4mQ -l2Pg+6Pg+qPg+QJs48KvdLkEkAHE8HRto/CA/pCXi+BkAWADAm9IkABG4EQB8JCXneBwQJCXg+Bg -HZCXj+D8o+D9o+D+o+D/kICFEip/f4B+CBIv2YAGkAUidH/wkJeK4P8SeOSQl510AfCQAEXgVP7w -gESQl53gZAFwPJCXjuD/Enjk5JCXnfCQAEXgRAHwkJeD4GAdkJeF4Pyj4P2j4P6j4P+QgIUSKn9/ -gH4IEi/ZgAWQBSLk8JAFh+BkgPCQl5ngkAWE8JCXmuCQBYXwkJeb4JAFhvCQl5zgkAWH8CKPJo0n -5SZUD/+Ql6jgVA9vYHjlJjDiMJCXqOAg4gV/ARJ9PpCXqOAw4wrlJiDjBRJ9XYBWkJeo4CDjT+Um -MONKrycSfR6AQ5CXqOBUD/+/DA7lJiDjCRJ8/e9gLhJ9XZCXqOBUD/+/BA7lJiDiCRJ7Gu9gFhJ7 -UpCXqOBUD/+/AgkSeqDvYAMSfXqQl6jgVA//kJer4FQPb3Aj4DDmH5CXqOBUD/+Ql57g/k+QAS/w -7mSAkJee8JCXq+BUv/AikJdQ6/Cj6vCj6fCQl7bgZAJwAwJwvJABr+BgCZABx+AE8PCA8ZCX0+D/ -BPCQl1Dg+6Pg+qPg+ZAAAe8SYr6ir+QzkJdW8MKvkJdQ4Puj4Pqj4IthimL1Y3VkAnsBegF5oBJ4 -j5CXVuAk/5Kvoq/kM/DCr5CXU+D7o+D6o+CLYYpi9WOQl1Dg+6Pg+qPg+RIp2f/EVA/1ZHsBegF5 -ohJ4j5CXVuAk/5KvkAGvdP/wkAHL4GSA8CKQl77v8KPt8OSj8KPw5WZgBeT/En20kJe+4DDgCZCX -wOTwo3SA8JAEHeBgHZAFIuCQl8Lw4P9UkGDskAHIdPzw71RvkAUi8IDdkJe+4P/DE5D9EPCQBCXv -8JCXv+BgH6Oj4P8kD/WC5DT89YPgRIDwdBAv9YLkNPz1g+BEgPCQl8Cj4P/9JAj1guQ0/PWD5PB0 -CS31guQ0/PWD4FTw8HQhL/WC5DT89YPgVPfwkJfA4P6j4P8ikJfV7/DTlAdQSuD/dAGoBwiAAsMz -2Pz0/5AARuBf8H8QfgASN1SQl9Xg/XQBfgCoBQiABcMzzjPO2Pn/kABE4Pvk/u9bqAUIgAbOoucT -zhPY+P8ikJfV4CT48OD/dAGoBwiAAsMz2Pz0/5AAQ+Bf8H8QfgASN1SQl9Xg/XQBfgCoBQiABcMz -zjPO2Pn/kABC4Pvk/u9bqAUIgAbOoucTzhPY+P8ikAAR4EQJ8H8QfgASN1SQlz3g/KPg/aPg/qPg -/5CAhRIqf394fggSL9mQl0Hg/KPg/aPg/qPg/5CAhRIqf38EfgwSL9mQl0Xg/KPg/aPg/qPg/5CA -hRIqf38AfggSL9mQl0ng/KPg/aPg/qPg/5CAhRIqf39wfg4SL9mQgFkSKosAAy2V5P3/EjSBkJe3 -4LQBEZCAWRIqiwADLZXk/X8BEjSBIsDgwPDAg8CCwNB10ADAAMABwALAA8AEwAXABsAHkAHEdLrw -dHKj8FOR75AAUeD/kABV4F/1PeU9MOYYdEDwkJeM4FQD/78DC5CXieBgBX8BEnPY5T0w5xWQAFV0 -gPCQl4zgVAP/vwMFfwISc9iQAcR0uvB0cqPw0AfQBtAF0ATQA9AC0AHQANDQ0ILQg9Dw0OAy72A0 -fX1/AhI2dX0CfwMSNnWQAVfk8JABPHQC8H0BfwwSb0nk/xJ9tJAGBOBUf/CQBgrgVPjwIpABNnR9 -8KN0AvB9ff8SNuZ9An8DEjbmkAYE4ESA8JAGCuBEB/CQl6Pgo+CQBVjw5WUw4BuQl6HgcBrgBPCQ -l6jgVA/DlARQDH0BfwQCb0nkkJeh8CLvFGAgFGBLJAJweJCXiXQC8JAASOBEDPCQAEfgRAjwkABF -gFvkkJeJ8JCXheD8o+D9o+D+o+D/kICFEip/f4B+CBIv2ZAAReBE7/DgVO/wo4AtkJeJdAHwkJeP -4Pyj4P2j4P6j4P+QgIUSKn9/gH4IEi/ZkABF4EQg8OBEEPCj4EQQ8CICdJoCY/7kk6P45JOjQAP2 -gAHyCN/0gCnkk6P4VAckDMjDM8RUD0QgyINABPRWgAFG9t/kgAsBAgQIECBAgJB+OuR+AZNgvKP/ -VD8w5QlUH/7kk6NgAQ7PVMAl4GCoQLjkk6P65JOj+OSTo8jFgsjKxYPK8KPIxYLIysWDyt/p3ueA -vpCXbO/w05QHUDPg/3QBqAcIgALDM9j89P+QAEfgX/B/EH4AEjdUkJds4P90AagHCIACwzPY/PT/ -kABGgDuQl2zgJPjw4P90AagHCIACwzPY/MRU8PT/kABD4F/wfxB+ABI3VJCXbOD/dAGoBwiAAsMz -2Pz0/5AAQ+Bf8H8QfgASN1Qi5JCXTvDlZmBs5WVkAXBm5WZkAmAG5WZkA3AdkJef4BTw4GAEo+Bg -FpCXn+BwCpCXquCQl5/wgACQl050AfCQl07gYDGQl6/gRBDwkJel4PVE5PVF+/1/VH4BEjWrkAFX -dAXwkJeo4FQPw5QEUAd9AX8EEm9JIqsHdfAJ66QkZ/WC5fA0k/WD4P90xSv1guQ0lvWD4FQf+tOf -QAKqB+ol4CSe9YLkNEH1g+ST/nQBk//qJeAkZvWC5DRB9YN0AZMv/+STPsMT/u8T/+T8/esl4CXg -JOH1guQ0kvWDEip/dIQr9YLkNAT1g+rw/yKQBqng9QpUwHAOkJep8JCXq+D/fQECb0nlCjDmEpCX -qXQB8JCXr+BEAfASffqAB5CXr+BU/vDlCjDnKZCXqXQB8JCXr+BEAvB1RAPk9UX7/X9UfgESNauQ -AVd0BfCQl650AfAikJev4FT98CKNC+ULVB/1D3QBL/WC5DSS9YPg9Q6QBP3gtAEFdRADgAN1EAHr -05UQQAMCddjlDiUN/uUPkEHWk/3u0510AUAYL/WC5DSS9YPk8HSEL/WC5DQE9YPlC/AiL/WC5DSS -9YPu8CKQACvgRAHwf+h+AxI3VJAACOBEEPB/EH4AEjdUkAAJ4FT38H8QfgASN1SQACjgVP7wfxB+ -ABI3VJAAIOBU/vB/EH4AEjdUkAAl4ERA8H8QfgASN1SQAAngVO/wfxB+AAI3VIsRihKJExJ96KsR -qhKpExIp2fVmFGAOFGAPFGAaJANwPH8BgDXk/4AxkJeqdAHwkJef8OT/gCOrEaoSqROQAAISYn// -kJeqcAV0BfCAAu/wkJeq4JCXn/Dk/xJzTCKQACXgVL/wfxB+ABI3VJAAIOBEAfB/EH4AEjdUkAAo -4EQB8H8QfgASN1SQAPDgMOH5kAAJ4EQI8H8QfgASN1SQAAjgVO/wfxB+ABI3VJAAK+BU/vB/6H4D -AjdUkABF5PCQBP3wo/CQl43wkJeT8JCXlvCQl5TwkJeX8JCXlfCQl5jwkJd/BPDko/Cj8KPwkJeE -8JCXifCQl4vwkJed8JCXjvCQl4rwkJeD8JAAUeBEwPAii16KX4lgkJe46/Cj6vCj6fCj5WHwo+Vi -8KPlY/CvZBVk72AqkJe74Puj5HXwARJi9qnw+hIp2f+Ql7jg+6PkdfABEmL2qfD67xJirIDPq16q -X6lgIpAFYOCQl5nwkAVh4JCXmvCQBWLgkJeb8JAFY+CQl5zww3T/n/6Ql5rg055AHuAv8KPgtP8P -5PCj4LT/A+TwIpCXnIADkJeb4ATwIpCXmuAv8CLk9WWQl6/w9WaQl6t0DPCQl6jw5JCXrfCQl6fw -kJem8JCXqgTwkJef8OSQl67wkJep8JCXofCQl6V0B/DkkJeg8JCXo/CjdALw5JCXrPAi5JCXtfCi -rzOQl1vwkACA4CDhGhI3ehI3epCXWuBkAfDgJIWQAcTwdHmj8IDfkAYwdAHwwq+QAIDgRIDwfxB+ -ABI3VJCXW+Ak/5KvIpCXruBgEuTwo+BU/fDgVANwM5CXqfCAI5CXoOAE8JCXr+BU7/CQl6Dg05QB -QA3lZbQBEqPgcA7gBPAikJer4P99ARJvSSLkkJfN8KPwkAX44HAPo+BwC6PgcAej4HADfwEi05CX -zuCU6JCXzeCUA0ADfwAifzJ+ABI3VJCXzuAE8HDKkJfN4ATwgMLkkJda8O+QADHw7lQD/6PgVPxP -8KPgVH/wkAAw4CDnDpCXWuDDlGRQBeAE8IDrkJda4MOUZFAKkAAw4BJirH8BIn8AIuVVcDeQl6vg -VA/TlAFQLJACh+BwJpCXtuC0AhCQl7Dg/qPg9YKOg+BgCIAPkAGv4HAJkJes4GADfwEifwAiEinZ -/8OUIFAVkAACEmJ//nRDL/WC5DSV9YPu8IAO77QgCpAAAhJif5CTYfB0Qy/1guQ0lfWD4JAEsvAi -kAQb4FR/ZH9wK5CXqeBkAWAjkJer4FQP05QCUBiQl6/gIOQRkJen4GQBYAmQl6HgcAN/ASJ/ACKQ -ATd0AvCQBSJ0//ASehfvcAaQAch0/fB9An8DEjbm5WZgBX8BEn20EmsbkJeo4FTw8OBEAvAikAAC -EmJ/kJeN8OCQBJvwkJeN4GAE4LT/HKKv5DP1EcKvkABH4FT78H1AfwESNq/lEST/kq8ij2eQl7Tg -/30BEnC95WdgEHQhL/WC5DT89YPgRBDwgA50IS/1guQ0/PWD4FTv8JAEH3QB8CKQl2ru8KPv8HUi -AY4j9SR/CxJ03xJ9l+T/En5HkJdq4Pyj4P3s+41E5PVFfQF/YH4BAjWrfQJ/AxI2deVmYCOQl63g -YAZ9AX8MgA+Ql6jgVA/DlARQB30BfwQSb0nk/xJ9tCKQAgng/RIp2f6vBe0ukJey8JAAARJif//t -L5CXs/CQAAISYn//rgXtL5CXtPAikAY04GAmFHAbewF6Bnk1f/l+ARJ6XL8BCZAGNeBUD/CABYAA -An4s5JAGNPAikAABEmJ/kJet8BIp2WVmYBWir+QzkJdm8MKvEnd/kJdm4CT/kq8ikJdO4FTwRAPw -VA9EgPCQl1Pk8KN0APCjdFbwewF6l3lOAnAHkAQb4FR//79/FJCXp+BwDpCXq+BUD9OUBFADfwEi -fwAikAYE4FS/8O9gCuVltAEF5P8Se7+Ql6jgVPDw4EQM8CKQl9Lv8BJyF5CX0uBgBZAFIuTwkJeo -4FTw8OBEBPAikAYE4ERA8OVltAEFfwESe7+Ql6jgVPDw4EQE8CKQl6jgVPDw4EQB8BJ3HRJ33ZCX -qOBU8PDgRALwIn8LEnFy72UlYBDlJbQBBeT1JYADdSUBfwEifwAi72ALkJe34LQBEOT/gAmQl7fg -tAEFfwESTl0ikABJ4JCX1PDgVA/w4P9E8JAASfDvRLDwIuSQl67wkJeg8JCXqfCQl6/wIpCXs+D/ -5P0ScL2QBB90AfAi5SK0AQsSfZe/AQV/ARJ+RyKQCSjv8KPwo/Cj8KPwo/AikAY0dP/w5KPwo/Cj -8CJBl9EAQZeegEGX0wAAkAHK5SXw72ADEn3PIpCXZuvwo+rwo+nwIpCXx+vwo+rwo+nwIpCXyuvw -o+rwo+nwIo+CjoOjo6Pk8CLk9SJ/YH4BAn54kJe34JCXTfAijxyMHY0eIo8fjCCNISISKdn1ZSIi -4fs= -==== diff --git a/sys/contrib/dev/urtwn/urtwn-rtl8192cfwU.fw.uu b/sys/contrib/dev/urtwn/urtwn-rtl8192cfwU.fw.uu deleted file mode 100644 index 8859c82a137b..000000000000 --- a/sys/contrib/dev/urtwn/urtwn-rtl8192cfwU.fw.uu +++ /dev/null @@ -1,285 +0,0 @@ -begin-base64 644 urtwn-rtl8192cfwU.fw.uu -wYgCADwAAAAKKBQkrD4BAEM0AQAAAAAAAAAAAAAAAAACdFwAAAAAAAAAAAAAAAAAAAAAAlmZAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnK6AAAAAAACaAEAAAUE -AwIAAwYFBAMABAYFBAIABAgHBgQABgoJCAYACAoJCAQACAoJCAIACAoJCAAACBIREAgAEBoZGBAA -GCIhIBgAICIhIBAAICIhIAgAICIhHAgAICIhFAgAICIgGAgAIDEwIBAAMDEwGAAAMDEvEBAAMDEs -EBAAMDEoEAAAMDEgEAAAMDEQEAAAMAQEBAUEBAUHBwcICgQEBAQGCg0OBQUHBwgMFBQEBAQFBwcJ -CQwOExMEBAQEBQoREwkJCQkMExQVBQUFBQUFBQYGBgYGBQUFBgYGBgYFBQYGBgYGBgUFBQUJCQkJ -Cw0QEgUJCgwNDhASCQkODhAQEhIAAAAAAAAAAAAkJioYGh0fIScpKgAAAB8jKCosAAQABAAIABAA -GAAkADAASABgAJAAwADYAFAAeACgAMgBQAGQAeACMAEsAUAB4ALQA+gEsAZAB9AAAgACAAQACAAM -ABIAGAAkADAASABgAGwAKAA8AFAAZACgAMgA8AEYAGQAoADwAWgB9AJYAyAD6AAAAAABAgICAwQF -CAECAgIEBw8eBQYHDxIjRmQBAQEBAQIDBAUGBwgBAgMEBQYHCAUGBwgJCgsMIh8eGAAgAAAAAAAA -AAAAAAAAqwd0hCv1guQ0BPWD4FR/kJd08OBUH6Pw+nXwCeukJGf1guXwNJP1g+D5kJd38Osl4CSB -9YLkNJL1g+D/o+CQl3jP8KPv8Osl4CQE9YLkNJb1g+D/o+CQl3rP8KPv8Ool4CRm9YLkNEH1g+ST -/nQBk//k/P3rJeAl4CTh9YLkNJL1gxIlCOrDmUADAkNZkJd14P90xSv1guQ0lvWD7/DvBJCXdvCQ -l3fg/5CXduD+059AAwJDmO7DlBBAIe4k8P90AX4AqAcIgAXDM84zztj5/5CXeOBe/qPgX05wJ5CX -duD/w5QQUEp0AX4AqAcIgAXDM84zztj5/5CXeuBe/qPgX05gLZCXduD/ZBNgCe9kEmAE77QRDZCX -eOAw4AaQl3Z0GPCQl3bgkJd18JCXdPCASJCXduAE8AJCxJCXd+D6kJd14P9qcHl0xSv1guQ0lvWD -7/B18AnrpCRp9YLl8DST9YPgtAETkJd04P8w5gEikJd14ERAkJd08JCXdeD/JeAknvWC5DRB9YPk -k/x0AZP97yXgJGb1guQ0QfWDdAGTLf/kkzzDE/7vE//k/P3rJeAl4CTh9YLkNJL1gxIlCIBpkJd1 -4NOaQGGQl3fg/3TFK/WC5DSW9YPv8JCXde/wkJd08Pqj4P8l4CSe9YLkNEH1g+ST/HQBk/3vJeAk -ZvWC5DRB9YN0AZMt/+STPMMT/u8T/+T8/esl4CXgJOH1guQ0kvWDEiUIrwIidAEr9YLkNJL1g+Tw -kJd04ESA/3SEK/WC5DQE9YPv8CKQl2br8KPq8KPp8KKv5DOj8MKvkJdm4Puj4Pqj4PmQAAESYzf6 -5fAkAP/kOv6Ql2aj4PqQAAHuj/ASY44SJGL/YDe1IhuQl2bg+6Pg+qPg+ZAAARJjN2UkcATlI2Xw -YC6Ql2bg+6Pg+qPg+ZAAARJjN/+u8BJ79IAVkJdm4Puj4Pqj4PkSJGJlImADEn6CkJdp4CT/kq8i -5PUlIgJ+lQJ+nOSQl1rwkJda4P/DlCBAAwJOXHXwCe+kJGr1guXwNJP1g+BkAWADAk5TkJda4CXg -JMD1guQ0kfWD4Pyj4NOUAOyUAFADAk5T73XwCqQkAPl0kDXw+nsBixT1FYkWkJda4CXgJMD1guQ0 -kfWD4P2j4JCXZs3wo+3w7yXgJIP1guQ0lPWD4P+j4JCXaM/wo+/wkAACEmM3/67wEmMML//l8D6Q -l2/wo+/wkAAGEmM3/67wkAAEEmM3L//l8D6Ql23wo+/wkAAIEmM3/5CXa+Xw8KPv8JCXWuD+JIT1 -guQ0BPWD4FQ/kJdc8OD9VB+j8HXwCe6kJGf1guXwNJP1g+CQl3HwkJda4PskhPWC5DSW9YPgw5QF -QAMCSbqQl3Hg/pCXXeCeQBOQl3HgkJdd8O1UQP2Ql1zw7k3wkAT94GQBcCiQl13g/5BBSpP+dEMr -9YLkNJX1g+DDnkAG75BBEoAykJdd4JBBLoApkJdd4P+QQUqT/pCXWuAkQ/WC5DSV9YPgw55ABu+Q -QNqAB5CXXeCQQPaTkJdq8JCXauB18AakJFD5dEA18HUR//USiROQl1zgkEHyk//TkJdp4J+Ql2jg -lABADZCXWuD/5P0SXzICTemQl1rgJeAl4CTh9YLkNJL1g+D8o+D9o+D+o+D/kJdeEiUIkJde4Pij -4Pmj4Pqj4PvAAMABwALAA6sRqhKpExIkYv9+AKsUqhWpFhJjDP2s8BIke+T8/dAD0ALQAdAA6y// -6j7+7Tn97Dj8kJdeEiUIkJde4Pij4Pmj4Pqj4PvAAMABwALAA6sRqhKpE5AAARJif/9+AKsUqhWp -FpAAAhJjN/2s8BIke+T8/dAD0ALQAdAA6y//6j7+7Tn97Dj8kJdeEiUIkJde4Pij4Pmj4Pqj4PvA -AMABwALAA6sRqhKpE5AAAhJif/9+AKsUqhWpFpAABBJjN/2s8BIke+T8/dAD0ALQAdAA6y//6j7+ -7Tn97Dj8kJdeEiUIkJde4Pij4Pmj4Pqj4PvAAMABwALAA6sRqhKpE5AAAxJif/9+AKsUqhWpFpAA -BhJjN/2s8BIke+T8/dAD0ALQAdAA6y//6j7+7Tn97Dj8kJdeEiUIkJde4Pij4Pmj4Pqj4PvAAMAB -wALAA6sRqhKpE5AABBJif/9+AKsUqhWpFpAACBJjN/2s8BIke+T8/dAD0ALQAdAA6y//6j7+7Tn9 -7Dj8kJdeEiUIqxGqEqkTkAAFEmJ//34AkJdm4Pyj4P0SJHvk/P2Ql17g+KPg+aPg+qPg+9MSY7uQ -l15AUOD8o+D9o+D+o+D/wATABcAGwAerEaoSqROQAAUSYn//fgCQl2bg/KPg/RIke6sHqgbQB9AG -0AXQBMPvm//umv7tlAD97JQA/JCXXhIlCIAHEiUUAAAAAJCXXuD8o+D9o+D+o+D/kJda4CXgJeAk -4fWC5DSS9YMSJQiQl1zgJeAkZvWC5DRB9YPkk/50AZP/5Pz9kJde4Pij4Pmj4Pqj4PvTEmO7QAuQ -l1rg/xJCIAJNYJCXXOAl4CSe9YLkNEH1g+ST/nQBk//k/P2Ql17g+KPg+aPg+qPg+8MSY7tAAwJN -YJCXWuD/fQESXzICTWCQl1rg/ySE9YLkNJb1g+BkBWADAkujdfAJ76Qka/WC5fA0k/WD4GQBcAMC -S6OQk2Lg/7QDC5CXXeDDlBlAPYAu77QCC5CXXeDDlBFALoAfkJNi4P+0AQuQl13gw5QKQBuADO9w -EZCXXeDDlANADZCVY3QB8IAF5JCVY/CQl1rg/yRD9YLkNJX1g+D+w5QwUAvkkJdy8HSELwJLTZCV -Y+BkAWADAktCkJda4CRk9YLkNJX1g+BkCmBbkJda4P/uJAX95DP8dCEv9YLkNJL1g+D/053sZID4 -dICYUDiQl1rg/u8kBf3kM/x0Qy71guQ0lfWD4NOd7GSA+HSAmFAWkJda4CSk9YLkNJb1g+D/kJdd -4G9gVpCXWuAkQ/WC5DSV9YPg/9OURkAIkJdydAXwgBHv05Q8kJdyQAV0A/CAA3QB8JCXWuD/JEP1 -guQ0lfWD4P50IS/1guQ0kvWD7vCQl1rgJGT1guQ0lYAvkJda4P8khPWC5DSW9YPk8HRkL/WC5DSV -9YPgBPCAFOSQl3LwkJda4CSE9YLkNJb1g+TwkJdd4P+Ql1rg/iSk9YLkNJb1g+/w7jDgHpCXcuDE -VPDwkJda4MMT/ySk9YLkNAT1g+BUDwJNQ5CXWuDDE/8kpPWC5DQE9YPgVPACTUOQl1rg/ySE9YLk -NJb1g+BkBmADAk1gdfAJ76Qka/WC5fA0k/WD4GQBcAMCTWCQl14SJRQAAAAAkEIT5JP/fgCQl2bg -/KPg/RIke+T8/ZCXYhIlCOSQl1vwkJde4Pij4Pmj4Pqj4PvAAMABwALAA6sUqhWpFpCXW+D/dfAC -pPWChfCDEmM3/azw75BCDpP/fgASJHvk/P3QA9AC0AHQAOsv/+o+/u05/ew4/JCXXhIlCJCXYuD8 -o+D9o+D+o+D/kJde4Pij4Pmj4Pqj4PvTEmO7UA6Ql1vgBPDgZAVgAwJL+5CXW+DDE/CQl3Lg/7QB -DZCXW+BwXZCXcgTwgFvvtAMdkJdb4P9wCJCXcnQD8IBI77QBCJCXcnQB8IA8gDWQl3LgZAVwMpCX -W+D/cAiQl3J0BfCAD++Ql3K0AQV0A/CAA3QB8NOQl2nglAOQl2jglABABeSQl3Lw05CXaeCUA5CX -aOCUAEAF5JCXcvCQl1rg/zDgGpCXcuDEVPDw78MT/ySk9YLkNAT1g+BUD4ATkJda4MMT/ySk9YLk -NAT1g+BU8PB0pC/1guQ0BPWDwIPAguD/kJdy4P7vTtCC0IPwkJda4P8khPWC5DSW9YPg05QFUA90 -hC/1guQ0lvWD4ATwgA+Ql1rgJIT1guQ0lvWD5PCQl1rg/ySE9YLkNAT1g+BUH8OUCVAFkJIAgBF0 -hC/1guQ0BPWD4JCSACDiBXQI8IADdATwkJda4GANkJbE4P+QkgDgw59QCJCSAOCQlsTwkJbE4JAE -gPCrFKoVqRbk9fASY2+rFKoVqRaQAALk9fASY46QAATk9fASY46QAAbk9fASY46QAAjk9fASY46Q -l1rg/yXgJMD1guQ0kfWD5PCj8O8l4CSD9YLkNJT1g+Two/DvJeAkw/WC5DSU9YPk8KPwkJda4ATw -AkUOIu9wAwJQxZCXTeBgAwJVB5CXOeD8o+D9o+D+o+D/kICWEiUIf4x+CBIrCJCW5eD8o+D9o+D+ -o+D/kICWEiUIf0R+CBIrCJCW6eD8o+D9o+D+o+D/kICWEiUIf1x+CBIrCJCW7eD8o+D9o+D+o+D/ -kICWEiUIf2x+DhIrCJCW8eD8o+D9o+D+o+D/kICWEiUIf3B+DhIrCJCW9eD8o+D9o+D+o+D/kICW -EiUIf3R+DhIrCJCW+eD8o+D9o+D+o+D/kICWEiUIf3h+DhIrCJCW/eD8o+D9o+D+o+D/kICWEiUI -f3x+DhIrCJCXAeD8o+D9o+D+o+D/kICWEiUIf4B+DhIrCJCXBeD8o+D9o+D+o+D/kICWEiUIf4R+ -DhIrCJCXCeD8o+D9o+D+o+D/kICWEiUIf4h+DhIrCJCXDeD8o+D9o+D+o+D/kICWEiUIf4x+DhIr -CJCXEeD8o+D9o+D+o+D/kICWEiUIf9B+DhIrCJCXFeD8o+D9o+D+o+D/kICWEiUIf9R+DhIrCJCX -GeD8o+D9o+D+o+D/kICWEiUIf9h+DhIrCJCXHeD8o+D9o+D+o+D/kICWEiUIf9x+DhIrCJCXIeD8 -o+D9o+D+o+D/kICWEiUIf+B+DhIrCJCXJeD8o+D9o+D+o+D/kICWEiUIf+x+DhIrCJCXKeD8o+D9 -o+D+o+D/kICWEiUIfwR+DBIrCJCXLeD8o+D9o+D+o+D/kICWEiUIfwR+DRIrCJCXMeD8o+D9o+D+ -o+D/kICWEiUIfwx+CRIrCJCXNeD8o+D9o+D+o+D/kICWEiUIfwR+CBIrCJCXTXQB8CKQl03gZAFg -AwJVB3+MfggSImWQlzkSJQh/RH4IEiJlkJblEiUIf1x+CBIiZZCW6RIlCH9sfg4SImWQlu0SJQh/ -cH4OEiJlkJbxEiUIf3R+DhIiZZCW9RIlCH94fg4SImWQlvkSJQh/fH4OEiJlkJb9EiUIf4B+DhIi -ZZCXARIlCH+Efg4SImWQlwUSJQh/iH4OEiJlkJcJEiUIf4x+DhIiZZCXDRIlCH/Qfg4SImWQlxES -JQh/1H4OEiJlkJcVEiUIf9h+DhIiZZCXGRIlCH/cfg4SImWQlx0SJQh/4H4OEiJlkJchEiUIf+x+ -DhIiZZCXJRIlCH8EfgwSImWQlykSJQh/BH4NEiJlkJctEiUIfwx+CRIiZZCXMRIlCH8EfggSImWQ -lzUSJQh/jH4IEiJlkJfDEiUIkJfD4Pyj4P2j4P6j4P/tRMD97JCXwxIlCJCXw+D8o+D9o+D+o+D/ -kICWEiUIf4x+CBIrCJCAlhIlFAABAAB/RH4IEisIkICWEiUUANslpH9cfggSKwiQgJYSJRQg2yWk -f2x+DhIrCJCAlhIlFCDbJaR/cH4OEisIkICWEiUUBBslpH90fg4SKwiQgJYSJRQEGyWkf3h+DhIr -CJCAlhIlFAQbJaR/fH4OEisIkICWEiUUBBslpH+Afg4SKwiQgJYSJRRj2yWkf4R+DhIrCJCAlhIl -FAQbJaR/iH4OEisIkICWEiUUINslpH+Mfg4SKwiQgJYSJRQg2yWkf9B+DhIrCJCAlhIlFCDbJaR/ -1H4OEisIkICWEiUUINslpH/Yfg4SKwiQgJYSJRQAGyWkf9x+DhIrCJCAlhIlFAAbJaR/4H4OEisI -kICWEiUUJNslpH/sfg4SKwh/BH4MEiJlkJfDEiUIkJfD4Pyj4P2j4P7k/+yQl8MSJQiQl8Pg/KPg -/aPg/qPgRBH/7JCXwxIlCJCXw+D8o+D9o+D+o+D/kICWEiUIfwR+DBIrCH8Efg0SImWQl8MSJQiQ -l8Pg/KPg/aPg/qPgVPD/7JCXwxIlCJCXw+D8o+D9o+D+o+BEAf/skJfDEiUIkJfD4Pyj4P2j4P6j -4P+QgJYSJQh/BH4NEisIfwx+CRIiZZCXwxIlCJCXw+D8o+D9o+D+5P/skJfDEiUIkJfD4Pyj4P2j -4P6j4EQR/+yQl8MSJQiQl8Pg/KPg/aPg/qPg/5CAlhIlCH8MfgkSKwh/DH4JEiJlkJfDEiUIkJfD -4Pyj4P2j4P6j4P/tVA/97FTw/JCXwxIlCJCXw+D8o+D9o+D+o+D/7UQQ/exEAfyQl8MSJQiQl8Pg -/KPg/aPg/qPg/5CAlhIlCH8MfgkSKwh/BH4IEiJlkJfDEiUIkJfD4Pyj4P2j4P6j4FTw/+yQl8MS -JQiQl8Pg/KPg/aPg/qPgRAH/7JCXwxIlCJCXw+D8o+D9o+D+o+D/kICWEiUIfwR+CBIrCOSQl03w -Io8R7yXgJAT1guQ0lq+C9RKPE+URdfACpCSB+XSSNfB1FAH1FYkWdfAJ5RGkJGX1guXwNJOvgvUX -jxjlEXXwCaQkY/l0kzXwdRkB9RqJG3TBJRH1guQ0kvWD4BJj2FWKAFWfAVW0AlXJA1XzBFYIBVYd -BlZEDFZyDVafDlbMDwAAVwDlESXgJAT1guQ0lvWDdPDwo3QVgDzlESXgJAT1guQ0lvWDdPDwo3QQ -gCflESXgJAT1guQ0lvWDdPDwo3QFgBLlESXgJAT1guQ0lvWDdPDwo+Tw5REl4CSB9YLkNJL1g3QP -8KN0j/ACVwDlESXgJAT1guQ0lvWDdA/wo3T1gCflESXgJAT1guQ0lvWDdA/wo3TwgBLlESXgJAT1 -guQ0lvWD5PCjdA3w5REl4CSB9YLkNJL1g+Two/ACVwCQBEfgqxSqFakWEmKskARG4KsUqhWpFpAA -ARJivpAEReCFE4KFEoPwkAREAlb3kARL4KsUqhWpFhJirJAESuCrFKoVqRaQAAESYr6QBEnghROC -hRKD8JAESIBYkARP4KsUqhWpFhJirJAETuCrFKoVqRaQAAESYr6QBE3ghROChRKD8JAETIArkART -4KsUqhWpFhJirJAEUuCrFKoVqRaQAAESYr6QBFHghROChRKD8JAEUOCFE4KFEoOj8KsUqhWpFsAD -wALAARIkYv+rGaoaqRsSJGJf0AHQAtADEmKsqxTlFiQB+eQ1FfrAA8ACwAESJGL/qxmqGqkbkAAB -EmJ/X9AB0ALQAxJirIUTgoUSg8CDwILg/4UYgoUXg+D+717QgtCD8IUTgoUSg6PAg8CC4P+FGIKF -F4Oj4P7vXtCC0IPw5REl4CSB9YLkNJL1g+D+o+BOYEyQl3J0C/CQl3Lg/8OUAFADAlhGdAF+AKgH -CIAFwzPOM87Y+f/lESXgJIH1guQ0kvWD4F7+o+BfTmAKkJdy4CQQo/CAaJCXcuAU8IC65REl4CQE -9YLkNJb1g+D+o+BOYEeQl3J0D/CQl3Lg/8OUAEA8dAF+AKgHCIAFwzPOM87Y+f/lESXgJAT1guQ0 -lvWD4F7+o+BfTmAIkJdy4KPwgA2Ql3LgFPCAv+SQl3Pw5REl4CQE9YLkNJb1g+D+o+BOYEfkkJdy -8JCXcuD/w5QQQAMCWQB0AX4AqAcIgAXDM84zztj5/+URJeAkBPWC5DSW9YPgXv6j4F9OYAaQl3Lg -gGOQl3LgBPCAvuURJeAkgfWC5DSS9YPg/qPgTmBG5JCXcvCQl3Lg/8OUDFA8dAF+AKgHCIAFwzPO -M87Y+f/lESXgJIH1guQ0kvWD4F7+o+BfTmAIkJdy4CQQgAmQl3LgBPCAv+SQl3TwkJdz4P918Anl -EaQkZ/WC5fA0k/WD7/CQl3Tg/nXwCeURpCRo9YLl8DST9YPu8HSEJRH1guQ0BPWD4NOfQB+Ql3Pg -/3SkJRH1guQ0lvWD7/B0hCUR9YLkNAT1g+/wkJdz4P/TlBNACJCTYnQD8IAh79OUC0AIkJNidALw -gBPv05QDQAiQk2J0AfCABeSQk2LwkJNi4JAEsfAiwODA8MCDwILA0HXQAMAAwAHAAsADwATABcAG -wAeQAcR0mfB0WaPwkAE34FUr9S+QATTgVSj1LJABNuBVKvUu5Swg4AMCW0uQATR0AfCF0U2F0k6F -00+F1FCF1VGF1lKF11OF2VTlVFRAwxP/5VNUIG9wAwJa+OVUMOUDAlr45VJUH/UI5U1UP/UJ5VFU -H//lCCXgJAP1guQ0lfWD5I/wEmLg5VNUH//lCCXgJMD1guQ0kfWD5I/wEmLg5QnTlARAA3UJBHXw -CuUIpCQA9YLl8DSQ9YN18ALlCRJjzOD+o+D/5VNUHy//5D7+dfAK5QikJAD1guXwNJD1g3XwAuUJ -EmPM7vCj7/DlVCDmJOVTVB//5Qgl4CSD9YLkNJT1g+SP8BJi4OVPMOc2rwgSddiAL+VTVB//5Qgl -4CTD9YLkNJT1g+SP8BJi4OVPMOcS5U9Uf/3lU1Qf9Q2rCa8IEna65WZgT5CXreBgNZABW+TwkAE8 -dATwkAQb4FR/ZH9wNHVEFPVF+/1/WH4BEjBikAFbdAXwkAaSdAHwkJen8IAUkAQb4FR//79/CpCX -q+D/fQESb0nlLDDhIZABNHQC8IXRVoXSV4XTWIXUWYXVWoXWW4XXXIXZXRJ82eUsMOMGkAE0dAjw -5Sww5AmQATR0EPBDVRDlLDDlIZABz+Aw5RrgVN/wkAE0dCDwkAAD4FT78H8QfgASMhWA/uUsMOYG -kAE0dEDw5S4w4QmQATZ0AvBDVUDlLjDgCZABNnQB8BJ1YuUuMOJjkAE2dATw5WVkAXBX5WZgU+Vm -ZAJwJ5AGq+CQl5/wkAaq4JCXqvCQl5/gcAeQl6rg/4AFkJef4P+Ql5/v8JCXoeBgA+AU8JCXoOTw -kAFX8JABPHQC8JCXr+BU/fDgVO/wEnZO5S4w4zGQATZ0CPDlZWQBcCXlZmAhkAFX5PCQATx0AvB1 -RAN1RQDk+/1/VH4BEjBikAFXdAXw5S4w5DqQATZ0EPDlZWQBcC7lZmAqkAFX5PCQATx0AvCQl67k -8JCXr+BU/fDgVANwDpCXqfCQl6vg/30BEm9J5S4w5RKQATZ0IPDlZbQBB+VmYAMSffrlLjDmKpAB -NnRA8OVlZAFwHuVmYBqQl6/gVP7w4FQDcA6Ql6nwkJer4P99ARJvSeUvMOEJkAE3dALwEnwodJkE -kAHE8HRZo/DQB9AG0AXQBNAD0ALQAdAA0NDQgtCD0PDQ4DKQBER0EfCjdPDwo3QP8KPk8JCXWvCQ -l1rg/8OUEFAUdKQv9YLkNAT1g+TwkJda4ATwgOLkkJda8JCXWuD7w5QgQAMCXzHg/3XwCqQkAPWC -5fA0kPWD5PCj8HXwCu+kJAL1guXwNJD1g+Two/B18ArvpCQE9YLl8DSQ9YPk8KPwdfAK76QkBvWC -5fA0kPWD5PCj8HXwCu+kJAj1guXwNJD1g+Two/B0pC/1guQ0lvWDdBPwdGQv9YLkNJX1g+Tw7yXg -JMD1guQ0kfWD5PCj8O8l4CSD9YLkNJT1g+Two/DvJeAkA/WC5DSV9YPk8KPw7yXgJMP1guQ0lPWD -5PCj8O8l4CSE9YLkNJX1g+Two/DvJeAkxPWC5DSV9YPk8KPwdGQv9YLkNJb1g+TwdEQv9YLkNJb1 -g+TwdIQv9YLkNJb1g+TwkEHEk/50AZP/kEGMdAGTL//kkz7DE/7vE//k/P3rJeAl4CTh9YLkNJL1 -gxIlCHXwCeukJGr1guXwNJP1g3QB8HXwCeukJGn1guXwNJP1g3QB8HTBK/WC5DSS9YN0DPB18Anr -pCRl9YLl8DST9YN0//Cj8HXwCeukJGP1guXwNJP1g+Two3QP8HXwCeukJGf1guXwNJP1g3QT8HXw -CeukJGj1guXwNJP1g+TwdIQr9YLkNAT1g3QT8JCXWuAE8AJdZiKpB3SEKfWC5DQE9YPgVH+Ql3Tw -4FQf/5CXd/B18AnppCRo9YLl8DST9YPgkJd58HXwCemkJGf1guXwNJP1g+D+kJd68Okl4CQE9YLk -NJb1g+D7o+CQl3vL8KPr8Okl4CSB9YLkNJL1g+D7o+CQl33L8KPr8O/TnkAMkJd64JCXd/CQl3Tw -7XADAmCRkJd47fCQl3TgMOYOkJd34JCXdPCQl3jgFPCQl3jgcAMCYJGQl3fg/9OUAFADAmCR5JCX -dvDvFJCXdfCQl3ng/ZCXdeD/051Ab++UEEAh7yTw/3QBfgCoBwiABcMzzjPO2Pn/kJd94F7+o+Bf -TnAnkJd14P/DlBBQN3QBfgCoBwiABcMzzjPO2Pn/kJd74F7+o+BfTmAakJd14JCXdPCQl3bgBPCQ -l3jg/5CXduBvYAiQl3XgFPCAg5CXeOD/kJd24MOfUA+Ql3XgtQUIkJd54JCXdPCQl3Tg/yXgJJ71 -guQ0QfWD5JP8dAGT/e8l4CRm9YLkNEH1g3QBky3/5JM8wxP+7xP/5Pz96SXgJeAk4fWC5DSS9YMS -JQiQl3Tg/3SEKfWC5DQE9YPv8CKQAczgVA+Ql1rwkJda4P1wAwJifpCX0eD/dAF+AKgHCIAFwzPO -M87Y+f/vXXADAmJfkJfR4HXwBKQk0PWC5fA0AfWD4JCXW/Cir+Qzo/DCr3VhAXVil3VjW3VkAXsB -epd5XRJ4j5CXXOAk/5Kvo+D/xBMTE1QBkJfRMOBw4HXwAqQkiPWC5DXw9YPgkJde8JCX0eB18AKk -JIn1guQ18PWD4JCXX/CQl9HgdfAEpCTR9YLl8DQB9YPgkJdg8JCX0eB18ASkJNL1guXwNAH1g+CQ -l2HwkJfR4HXwBKQk0/WC5fA0AfWD4JCXYvCAQuB18ASkJNH1guXwNAH1g+CQl17wkJfR4HXwBKQk -0vWC5fA0AfWD4JCXX/CQl9HgdfAEpCTT9YLl8DQB9YPgkJdg8O9Uf/97AXqXeV4SbbmQl1rg/5CX -0eD+dAGoBgiAAsMz2Pz0X5CXWvCQl9Hg/3QBqAcIgALDM9j8kAHM8JCX0eAE8OBUA/ACYPLCr3To -BJABxPB0YKPwkJda4JABxvCQl9HgkAHH8ID+IrsBDOWCKfWC5YM69YPgIlAG6SWC+OYiu/4G6SWC -+OIi5YIp9YLlgzr1g+STIrsBBomCioPwIlAC9yK7/gHzIvi7AQ3lgin1guWDOvWD6PAiUAbpJYLI -9iK7/gXpJYLI8iLF8Pij4CjwxfD45YIVgnACFYPgOPAio/jgxfAl8PDlghWCcAIVg+DIOPDoIrsB -ComCioPg9fCj4CJQBofwCecZIrv+B+P18AnjGSKJgoqD5JP18HQBkyK7ARDlgin1guWDOvWD4PXw -o+AiUAnpJYL4hvAI5iK7/grpJYL44vXwCOIi5YMq9YPpk/Xwo+mTIrsBComCioPw5fCj8CJQBvcJ -p/AZIrv+BvPl8AnzGSL4uwER5YIp9YLlgzr1g+jw5fCj8CJQCeklgsj2CKbwIrv+Ceklgsjy5fAI -8iLrn/Xw6p5C8OmdQvDonEXwIqQlgvWC5fA1g/WDItCD0IL45JNwEnQBk3ANo6OT+HQBk/WCiIPk -c3QCk2hg76Ojo4Df5JCXV/Cj8BJ5hZAAAuBU4JCXtmAFdAHwgAN0AvCQAPPgMOMIkJe3dAHwgAXk -kJe38JCXt+C0AROQAPLgMOcMkJewdP3wo3Qz8IAKkJewdP3wo3Qv8OT1VRJdLhJ+jBJ5NhIuARJE -/3UoM+T1KXUqAvUrkAEw5Sjwo+Up8KPlKvCj5SvwkADz4DDiDZAFQXQQ8JAFWvCj5PCQAWR0oPB1 -RP/k9UX7fQF/UH4BEjBidTAfdTEB5PUykAE45TDwo+Ux8KPlMvASeDiQl1nl2fCQATx0//Cj8KPw -kAE08KPwo/Cj8MKvkACA4ERA8H8QfgASMhV16ANDqIXSr5ABwOTwo/Cj8KPwkAHG8KPwkJdX4GQB -8CT+kAHE8HRjo/DlVTDmF8KvU1W/0q8SRQmQl43g/2ADtAEDEmkS5VUw5wfCr1NVf9Kv5VUw5ArC -r1NV79KvEmDokJeN4HADEmwKEnyFgKqQAAISYn+Ql4vwkAABEmJ/JeAl4JCXivASJGIl4CXgkJeO -8JCXi+CQBJjwkJeK4BMTVD+QBJnwkJeO4BMTVD+QBJrwkAVg4JCXmfCQBWHgkJea8JAFYuCQl5vw -kAVj4JCXnPCir+QzkJdp8MKvkJeK4P8SeOSQl2ngJP+Sr5CXi+BwAwJmjJCXiuBwAwJmjJCXjuBw -AwJmjKKv5DOQl2nwwq+Ql510AfCQl2ngJP+Sr5AAReBU/vCj4EQB8JCXg+BgHZCXj+D8o+D9o+D+ -o+D/kICWEiUIf4B+CBIrCIAGkAUidH/wkABF4FTv8JAFh+BkgPCQl5ngkAWE8JCXmuCQBYXwkJeb -4JAFhvCQl5zgkAWH8KKv5DOQl2nwwq+QATzgRCDwfSDk/xIxt4ArkJeL4HAtkJed8JAAReBU/vCj -4FT+8JAFIuTwoq8zkJdp8MKvfSDk/xIxSZCXaeAk/5KvIpCXZuvwo+rwo+nwkJdm4Puj4Pqj4PmQ -AAQSYn//VB+Ql2nwkAADEmJ/VPDEVA+Ql2rw71QgxBNUB6PwkAAEEmJ/VEDEExNUA5CXbPCQl2ng -/3XwCaQkZfWC5fA0k62CkJdt8KPt8O918AmkJGP5dJM18PqjdAHwo+rwo+nwkJdmo+D6o+D5kAAD -EmJ/VA//kJdv4Puj4Pqj4PnvEmKskJdm4Puj4Pqj4PmQAAISYn//kJdv4Puj4Pqj4PmQAAHvEmK+ -kJdm4Puj4Pqj4PmQAAESYn//kJdt4Pyj4P31goyD7/ASJGKNgoyDo/CQl2rg/pCXaeD/JMH1guQ0 -kvWD7vCQl2vg/nXwCe+kJGn1guXwNJP1g+7wdfAJ76QkavWC5fA0k/WDdAHwkJds4P518AnvpCRr -9YLl8DST9YPu8AJVCMDgwPDAg8CCwNB10ADAAMABwALAA8AEwAXABsAHkAHEdAHwdGij8FOR35AB -POBVMPU0o+BVMfU1o+BVMvU25TQw4A+QATx0AfCQAVN0B/BDVYDlNDDhCZABPHQC8BJ50eU0MOI6 -kAE8dATwkAaS4DDgHnVEFHVFAOT7/X9YfgESMGKQAVt0BfCQBpJ0AfCAD5CXp+TwkJer4P99ARJv -SeU0MOMGkAE8dAjw5TQw5AmQATx0EPASfgvlNDDlCZABPHQg8BJuheU1MOAVkAE9dAHwkACD4JCX -q/Dg/30BEm9J5TYw4waQAT50CPB0AQSQAcTwdGij8NAH0AbQBdAE0APQAtAB0ADQ0NCC0IPQ8NDg -MpCXhODDlBRQBuAE8AJpzJCXhOBkFGADAmnMkJeT4HAlkJeW4HAfkJeU4HAZkJeX4HATkJeV4HAN -kJeY4HAHkAT94FT+8JCXk+CQBIjwkJeU4JAEifCQl5XgkASK8KPk8JCXluCQBIzwkJeX4JAEjfCQ -l5jgkASO8KPk8JCXf+CQBJDwkJeA4JAEkfCQl4HgkASS8JCXguCQBJPw5JCXhPCQl38E8OSj8KPw -o/CQl5Pwo/Cj8KPwo/Cj8JAFYOCQl1rwkAVh4JCXW/CQBWLgkJdc8JAFY+CQl13wkJec4P+Ql13g -/tOfUAuQl5zgw57TlAFAEZCXiuC0AQKAA5CXjuD/EnjkIpCX0O3wkJfP7/DTlAdQbeD/dAGoBwiA -AsMz2Pz0/5AAR+Bf8H8QfgASMhWQl8/g/3QBqAcIgALDM9j8/5AARuBP8H8QfgASMhWQl9DgYBaQ -l8/g/3QBqAcIgALDM9j8/5AARYB4kJfP4P90AagHCIACwzPY/PT/kABFgH2Ql8/gJPjw4P90AagH -CIACwzPY/MRU8PT/kABD4F/wfxB+ABIyFZCXz+D/dAGoBwiAAsMz2Pz/kABD4E/wfxB+ABIyFZCX -0OBgG5CXz+D/dAGoBwiAAsMz2PzEVPD/kABC4E+AGpCXz+D/dAGoBwiAAsMz2PzEVPD0/5AAQuBf -8H8QfgASMhUif3h+CBIiZZCXPRIlCH8EfgwSImWQl0ESJQh/AH4IEiJlkJdFEiUIkJe34JCXPbQB -E+D8o+D9o+D+o+BUx//tVMf9gA3g/KPg/aPg/qPgVMf/7JCAlhIlCH94fggSKwiQl0Hg/KPg/aPg -/qPgVA//7JCAlhIlCH8EfgwSKwiQl0Xg/KPg/aPg/qPgRAL/7JCAlhIlCH8AfggSKwh/cH4OEiJl -kJdJEiUIkICWEiUUABsloH9wfg4SKwiQgGgSJRQAAAAA5P3/EjAskJe34LQBEZCAaBIlFAAAAADk -/X8BEjAskAAR4FT28H8QfgACMhWQl53gZAFgCZCXi+BgAwJs4pCXf+DDlP9QBeAE8IA7kJeA4MOU -/1AG4ATw5IAokJeB4MOU/1AK4ATw5JCXgPCAFZCXguDDlP9QEOAE8OSQl4HwkJeA8JCXf/CQAETg -VAxgduAw4jKQl5Pgw5T/UAXgBPCAJJCXlODDlP9QBuAE8OSAEZCXleDDlP9QDOAE8OSQl5TwkJeT -8JAAROAw4zKQl5bgw5T/UAXgBPCAJJCXl+DDlP9QBuAE8OSAEZCXmODDlP9QDOAE8OSQl5fwkJeW -8JAE/eBEAfAiixGKEokTkAACEmJ/kJeM8OAw4FyQl4N0AfB/gH4IEiJlkJeFEiUIqxGqEqkTkAAB -EmJ//+T8/f54GhIk9agEqQWqBqsHkJeF4Pyj4P2j4P6j4P/sVAP860//6k7+6U396Ez8kJePEiUI -kAUi5PCANeSQl4Pwf4B+CBIiZexUA/zsRMD8kJeFEiUIkJeF4Pyj4P2j4P6j4P+QgJYSJQh/gH4I -EisIkJeM4JAARzDhEXQM8KPgRAzwkABG4EQQ8IAQ4FTz8KPgVPPwkABG4FTv8OSQl4nwIpCXY+vw -o+rwo+nw7xJj2G3qAW34Am4GA24UBW4iBm4wB24+CW5MDG5aDW5oDgAAbnaQl2Pg+6Pg+qPg+QJ8 -spCXY+D7o+D6o+D5An6jkJdj4Puj4Pqj4PkCfFeQl2Pg+6Pg+qPg+QJ63pCXY+D7o+D6o+D5AmbA -kJdj4Puj4Pqj4PkCflSQl2Pg+6Pg+qPg+QJEaJCXY+D7o+D6o+D5AmVfkJdj4Puj4Pqj4PkCe4mQ -l2Pg+6Pg+qPg+QJs48KvdLkEkAHE8HRto/CA/pCXi+BkAWADAm9IkABG4EQB8JCXneBwQJCXg+Bg -HZCXj+D8o+D9o+D+o+D/kICWEiUIf4B+CBIrCIAGkAUidH/wkJeK4P8SeOSQl510AfCQAEXgVP7w -gESQl53gZAFwPJCXjuD/Enjk5JCXnfCQAEXgRAHwkJeD4GAdkJeF4Pyj4P2j4P6j4P+QgJYSJQh/ -gH4IEisIgAWQBSLk8JAFh+BkgPCQl5ngkAWE8JCXmuCQBYXwkJeb4JAFhvCQl5zgkAWH8CKPJo0n -5SZUD/+Ql6jgVA9vYHjlJjDiMJCXqOAg4gV/ARJ9PpCXqOAw4wrlJiDjBRJ9XYBWkJeo4CDjT+Um -MONKrycSfR6AQ5CXqOBUD/+/DA7lJiDjCRJ8/e9gLhJ9XZCXqOBUD/+/BA7lJiDiCRJ7Gu9gFhJ7 -UpCXqOBUD/+/AgkSeqDvYAMSfXqQl6jgVA//kJer4FQPb3Aj4DDmH5CXqOBUD/+Ql57g/k+QAS/w -7mSAkJee8JCXq+BUv/AikJdQ6/Cj6vCj6fCQl7bgZAJwAwJwvJABr+BgCZABx+AE8PCA8ZCX0+D/ -BPCQl1Dg+6Pg+qPg+ZAAAe8SYr6ir+QzkJdW8MKvkJdQ4Puj4Pqj4IthimL1Y3VkAnsBegF5oBJ4 -j5CXVuAk/5Kvoq/kM/DCr5CXU+D7o+D6o+CLYYpi9WOQl1Dg+6Pg+qPg+RIkYv/EVA/1ZHsBegF5 -ohJ4j5CXVuAk/5KvkAGvdP/wkAHL4GSA8CKQl77v8KPt8OSj8KPw5WZgBeT/En20kJe+4DDgCZCX -wOTwo3SA8JAEHeBgHZAFIuCQl8Lw4P9UkGDskAHIdPzw71RvkAUi8IDdkJe+4P/DE5D9EPCQBCXv -8JCXv+BgH6Oj4P8kD/WC5DT89YPgRIDwdBAv9YLkNPz1g+BEgPCQl8Cj4P/9JAj1guQ0/PWD5PB0 -CS31guQ0/PWD4FTw8HQhL/WC5DT89YPgVPfwkJfA4P6j4P8ikJfV7/DTlAdQSuD/dAGoBwiAAsMz -2Pz0/5AARuBf8H8QfgASMhWQl9Xg/XQBfgCoBQiABcMzzjPO2Pn/kABE4Pvk/u9bqAUIgAbOoucT -zhPY+P8ikJfV4CT48OD/dAGoBwiAAsMz2Pz0/5AAQ+Bf8H8QfgASMhWQl9Xg/XQBfgCoBQiABcMz -zjPO2Pn/kABC4Pvk/u9bqAUIgAbOoucTzhPY+P8ikAAR4EQJ8H8QfgASMhWQlz3g/KPg/aPg/qPg -/5CAlhIlCH94fggSKwiQl0Hg/KPg/aPg/qPg/5CAlhIlCH8EfgwSKwiQl0Xg/KPg/aPg/qPg/5CA -lhIlCH8AfggSKwiQl0ng/KPg/aPg/qPg/5CAlhIlCH9wfg4SKwiQgGgSJRQAAy2V5P3/EjAskJe3 -4LQBEZCAaBIlFAADLZXk/X8BEjAsIsDgwPDAg8CCwNB10ADAAMABwALAA8AEwAXABsAHkAHEdLrw -dHKj8FOR75AAUeD/kABV4F/1PeU9MOYYdEDwkJeM4FQD/78DC5CXieBgBX8BEnPY5T0w5xWQAFV0 -gPCQl4zgVAP/vwMFfwISc9iQAcR0uvB0cqPw0AfQBtAF0ATQA9AC0AHQANDQ0ILQg9Dw0OAy72A0 -fX1/AhIxLH0CfwMSMSyQAVfk8JABPHQC8H0BfwwSb0nk/xJ9tJAGBOBUf/CQBgrgVPjwIpABNnR9 -8KN0AvB9ff8SMZ19An8DEjGdkAYE4ESA8JAGCuBEB/CQl6Pgo+CQBVjw5WUw4BuQl6HgcBrgBPCQ -l6jgVA/DlARQDH0BfwQCb0nkkJeh8CLvFGAgFGBLJAJweJCXiXQC8JAASOBEDPCQAEfgRAjwkABF -gFvkkJeJ8JCXheD8o+D9o+D+o+D/kICWEiUIf4B+CBIrCJAAReBE7/DgVO/wo4AtkJeJdAHwkJeP -4Pyj4P2j4P6j4P+QgJYSJQh/gH4IEisIkABF4EQg8OBEEPCj4EQQ8CICdJoCY/7kk6P45JOjQAP2 -gAHyCN/0gCnkk6P4VAckDMjDM8RUD0QgyINABPRWgAFG9t/kgAsBAgQIECBAgJB+OuR+AZNgvKP/ -VD8w5QlUH/7kk6NgAQ7PVMAl4GCoQLjkk6P65JOj+OSTo8jFgsjKxYPK8KPIxYLIysWDyt/p3ueA -vpCXbO/w05QHUDPg/3QBqAcIgALDM9j89P+QAEfgX/B/EH4AEjIVkJds4P90AagHCIACwzPY/PT/ -kABGgDuQl2zgJPjw4P90AagHCIACwzPY/MRU8PT/kABD4F/wfxB+ABIyFZCXbOD/dAGoBwiAAsMz -2Pz0/5AAQ+Bf8H8QfgASMhUi5JCXTvDlZmBs5WVkAXBm5WZkAmAG5WZkA3AdkJef4BTw4GAEo+Bg -FpCXn+BwCpCXquCQl5/wgACQl050AfCQl07gYDGQl6/gRBDwkJel4PVE5PVF+/1/VH4BEjBikAFX -dAXwkJeo4FQPw5QEUAd9AX8EEm9JIqsHdfAJ66QkZ/WC5fA0k/WD4P90xSv1guQ0lvWD4FQf+tOf -QAKqB+ol4CSe9YLkNEH1g+ST/nQBk//qJeAkZvWC5DRB9YN0AZMv/+STPsMT/u8T/+T8/esl4CXg -JOH1guQ0kvWDEiUIdIQr9YLkNAT1g+rw/yKQBqng9QpUwHAOkJep8JCXq+D/fQECb0nlCjDmEpCX -qXQB8JCXr+BEAfASffqAB5CXr+BU/vDlCjDnKZCXqXQB8JCXr+BEAvB1RAPk9UX7/X9UfgESMGKQ -AVd0BfCQl650AfAikJev4FT98CKNC+ULVB/1D3QBL/WC5DSS9YPg9Q6QBP3gtAEFdRADgAN1EAHr -05UQQAMCddjlDiUN/uUPkEHWk/3u0510AUAYL/WC5DSS9YPk8HSEL/WC5DQE9YPlC/AiL/WC5DSS -9YPu8CKQACvgRAHwf+h+AxIyFZAACOBEEPB/EH4AEjIVkAAJ4FT38H8QfgASMhWQACjgVP7wfxB+ -ABIyFZAAIOBU/vB/EH4AEjIVkAAl4ERA8H8QfgASMhWQAAngVO/wfxB+AAIyFYsRihKJExJ96KsR -qhKpExIkYvVmFGAOFGAPFGAaJANwPH8BgDXk/4AxkJeqdAHwkJef8OT/gCOrEaoSqROQAAISYn// -kJeqcAV0BfCAAu/wkJeq4JCXn/Dk/xJzTCKQACXgVL/wfxB+ABIyFZAAIOBEAfB/EH4AEjIVkAAo -4EQB8H8QfgASMhWQAPDgMOH5kAAJ4EQI8H8QfgASMhWQAAjgVO/wfxB+ABIyFZAAK+BU/vB/6H4D -AjIVkABF5PCQBP3wo/CQl43wkJeT8JCXlvCQl5TwkJeX8JCXlfCQl5jwkJd/BPDko/Cj8KPwkJeE -8JCXifCQl4vwkJed8JCXjvCQl4rwkJeD8JAAUeBEwPAii16KX4lgkJe46/Cj6vCj6fCj5WHwo+Vi -8KPlY/CvZBVk72AqkJe74Puj5HXwARJi9qnw+hIkYv+Ql7jg+6PkdfABEmL2qfD67xJirIDPq16q -X6lgIpAFYOCQl5nwkAVh4JCXmvCQBWLgkJeb8JAFY+CQl5zww3T/n/6Ql5rg055AHuAv8KPgtP8P -5PCj4LT/A+TwIpCXnIADkJeb4ATwIpCXmuAv8CLk9WWQl6/w9WaQl6t0DPCQl6jw5JCXrfCQl6fw -kJem8JCXqgTwkJef8OSQl67wkJep8JCXofCQl6V0B/DkkJeg8JCXo/CjdALw5JCXrPAi5JCXtfCi -rzOQl1vwkACA4CDhGhIyKxIyK5CXWuBkAfDgJIWQAcTwdHmj8IDfkAYwdAHwwq+QAIDgRIDwfxB+ -ABIyFZCXW+Ak/5KvIpCXruBgEuTwo+BU/fDgVANwM5CXqfCAI5CXoOAE8JCXr+BU7/CQl6Dg05QB -QA3lZbQBEqPgcA7gBPAikJer4P99ARJvSSLkkJfN8KPwkAX44HAPo+BwC6PgcAej4HADfwEi05CX -zuCU6JCXzeCUA0ADfwAifzJ+ABIyFZCXzuAE8HDKkJfN4ATwgMLkkJda8O+QADHw7lQD/6PgVPxP -8KPgVH/wkAAw4CDnDpCXWuDDlGRQBeAE8IDrkJda4MOUZFAKkAAw4BJirH8BIn8AIuVVcDeQl6vg -VA/TlAFQLJACh+BwJpCXtuC0AhCQl7Dg/qPg9YKOg+BgCIAPkAGv4HAJkJes4GADfwEifwAiEiRi -/8OUIFAVkAACEmJ//nRDL/WC5DSV9YPu8IAO77QgCpAAAhJif5CTYfB0Qy/1guQ0lfWD4JAEsvAi -kAQb4FR/ZH9wK5CXqeBkAWAjkJer4FQP05QCUBiQl6/gIOQRkJen4GQBYAmQl6HgcAN/ASJ/ACKQ -ATd0AvCQBSJ0//ASehfvcAaQAch0/fB9An8DEjGd5WZgBX8BEn20EmsbkJeo4FTw8OBEAvAikAAC -EmJ/kJeN8OCQBJvwkJeN4GAE4LT/HKKv5DP1EcKvkABH4FT78H1AfwESMWblEST/kq8ij2eQl7Tg -/30BEnC95WdgEHQhL/WC5DT89YPgRBDwgA50IS/1guQ0/PWD4FTv8JAEH3QB8CKQl2ru8KPv8HUi -AY4j9SR/CxJ03xJ9l+T/En5HkJdq4Pyj4P3s+41E5PVFfQF/YH4BAjBifQJ/AxIxLOVmYCOQl63g -YAZ9AX8MgA+Ql6jgVA/DlARQB30BfwQSb0nk/xJ9tCKQAgng/RIkYv6vBe0ukJey8JAAARJif//t -L5CXs/CQAAISYn//rgXtL5CXtPAikAY04GAmFHAbewF6Bnk1f/l+ARJ6XL8BCZAGNeBUD/CABYAA -An4s5JAGNPAikAABEmJ/kJet8BIkYmVmYBWir+QzkJdm8MKvEnd/kJdm4CT/kq8ikJdO4FTwRAPw -VA9EgPCQl1Pk8KN0APCjdFbwewF6l3lOAnAHkAQb4FR//79/FJCXp+BwDpCXq+BUD9OUBFADfwEi -fwAikAYE4FS/8O9gCuVltAEF5P8Se7+Ql6jgVPDw4EQM8CKQl9Lv8BJyF5CX0uBgBZAFIuTwkJeo -4FTw8OBEBPAikAYE4ERA8OVltAEFfwESe7+Ql6jgVPDw4EQE8CKQl6jgVPDw4EQB8BJ3HRJ33ZCX -qOBU8PDgRALwIn8LEnFy72UlYBDlJbQBBeT1JYADdSUBfwEifwAi72ALkJe34LQBEOT/gAmQl7fg -tAEFfwESTl0ikABJ4JCX1PDgVA/w4P9E8JAASfDvRLDwIuSQl67wkJeg8JCXqfCQl6/wIpCXs+D/ -5P0ScL2QBB90AfAi5SK0AQsSfZe/AQV/ARJ+RyKQCSjv8KPwo/Cj8KPwo/AikAY0dP/w5KPwo/Cj -8CJBl9EAQZeegEGX0wAAkAHK5SXw72ADEn3PIpCXZuvwo+rwo+nwIpCXx+vwo+rwo+nwIpCXyuvw -o+rwo+nwIo+CjoOjo6Pk8CLk9SJ/YH4BAn54kJe34JCXTfAijxyMHY0eIo8fjCCNISISJGL1ZSIi -po4= -==== diff --git a/sys/dev/rtwn/if_rtwn.c b/sys/dev/rtwn/if_rtwn.c index 88c23b2346d1..54381cf1642f 100644 --- a/sys/dev/rtwn/if_rtwn.c +++ b/sys/dev/rtwn/if_rtwn.c @@ -1,3529 +1,1995 @@ -/* $OpenBSD: if_rtwn.c,v 1.6 2015/08/28 00:03:53 deraadt Exp $ */ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ /*- * Copyright (c) 2010 Damien Bergamini - * Copyright (c) 2015 Stefan Sperling + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include __FBSDID("$FreeBSD$"); /* - * Driver for Realtek RTL8188CE + * Driver for Realtek RTL8188CE-VAU/RTL8188CUS/RTL8188EU/RTL8188RU/RTL8192CU/RTL8812AU/RTL8821AU. */ +#include "opt_wlan.h" #include -#include #include +#include +#include +#include #include #include #include #include #include -#include -#include #include #include #include +#include #include - -#include -#include -#include - -#include -#include +#include #include #include #include #include #include #include #include #include -#include -#include -#include -#include - #include #include #include -#include #include +#include -#include - -#define RTWN_DEBUG -#ifdef RTWN_DEBUG -#define DPRINTF(x) do { if (sc->sc_debug > 0) printf x; } while (0) -#define DPRINTFN(n, x) do { if (sc->sc_debug >= (n)) printf x; } while (0) -#else -#define DPRINTF(x) -#define DPRINTFN(n, x) -#endif +#include +#include +#include +#include -/* - * PCI configuration space registers. - */ -#define RTWN_PCI_IOBA 0x10 /* i/o mapped base */ -#define RTWN_PCI_MMBA 0x18 /* memory mapped base */ - -#define RTWN_INT_ENABLE (R92C_IMR_ROK | R92C_IMR_VODOK | R92C_IMR_VIDOK | \ - R92C_IMR_BEDOK | R92C_IMR_BKDOK | R92C_IMR_MGNTDOK | \ - R92C_IMR_HIGHDOK | R92C_IMR_BDOK | R92C_IMR_RDU | \ - R92C_IMR_RXFOVW) - -struct rtwn_ident { - uint16_t vendor; - uint16_t device; - const char *name; -}; - - -static const struct rtwn_ident rtwn_ident_table[] = { - { 0x10ec, 0x8176, "Realtek RTL8188CE" }, - { 0, 0, NULL } -}; - - -static void rtwn_dma_map_addr(void *, bus_dma_segment_t *, int, int); -static void rtwn_setup_rx_desc(struct rtwn_softc *, struct r92c_rx_desc *, - bus_addr_t, size_t, int); -static int rtwn_alloc_rx_list(struct rtwn_softc *); -static void rtwn_reset_rx_list(struct rtwn_softc *); -static void rtwn_free_rx_list(struct rtwn_softc *); -static int rtwn_alloc_tx_list(struct rtwn_softc *, int); -static void rtwn_reset_tx_list(struct rtwn_softc *, int); -static void rtwn_free_tx_list(struct rtwn_softc *, int); +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + + +static void rtwn_radiotap_attach(struct rtwn_softc *); +static void rtwn_vap_decrement_counters(struct rtwn_softc *, + enum ieee80211_opmode, int); +static void rtwn_set_ic_opmode(struct rtwn_softc *); static struct ieee80211vap *rtwn_vap_create(struct ieee80211com *, - const char [IFNAMSIZ], int, enum ieee80211_opmode, int, - const uint8_t [IEEE80211_ADDR_LEN], - const uint8_t [IEEE80211_ADDR_LEN]); -static void rtwn_vap_delete(struct ieee80211vap *); -static void rtwn_write_1(struct rtwn_softc *, uint16_t, uint8_t); -static void rtwn_write_2(struct rtwn_softc *, uint16_t, uint16_t); -static void rtwn_write_4(struct rtwn_softc *, uint16_t, uint32_t); -static uint8_t rtwn_read_1(struct rtwn_softc *, uint16_t); -static uint16_t rtwn_read_2(struct rtwn_softc *, uint16_t); -static uint32_t rtwn_read_4(struct rtwn_softc *, uint16_t); -static int rtwn_fw_cmd(struct rtwn_softc *, uint8_t, const void *, int); -static void rtwn_rf_write(struct rtwn_softc *, int, uint8_t, uint32_t); -static uint32_t rtwn_rf_read(struct rtwn_softc *, int, uint8_t); -static int rtwn_llt_write(struct rtwn_softc *, uint32_t, uint32_t); -static uint8_t rtwn_efuse_read_1(struct rtwn_softc *, uint16_t); -static void rtwn_efuse_read(struct rtwn_softc *); -static int rtwn_read_chipid(struct rtwn_softc *); -static void rtwn_read_rom(struct rtwn_softc *); -static int rtwn_ra_init(struct rtwn_softc *); -static void rtwn_tsf_sync_enable(struct rtwn_softc *); -static void rtwn_set_led(struct rtwn_softc *, int, int); -static void rtwn_calib_to(void *); -static int rtwn_newstate(struct ieee80211vap *, enum ieee80211_state, int); -static int rtwn_updateedca(struct ieee80211com *); -static void rtwn_update_avgrssi(struct rtwn_softc *, int, int8_t); -static int8_t rtwn_get_rssi(struct rtwn_softc *, int, void *); -static void rtwn_rx_frame(struct rtwn_softc *, struct r92c_rx_desc *, - struct rtwn_rx_data *, int); -static int rtwn_tx(struct rtwn_softc *, struct mbuf *, - struct ieee80211_node *); -static void rtwn_tx_done(struct rtwn_softc *, int); -static int rtwn_raw_xmit(struct ieee80211_node *, struct mbuf *, - const struct ieee80211_bpf_params *); -static int rtwn_transmit(struct ieee80211com *, struct mbuf *); -static void rtwn_parent(struct ieee80211com *); -static void rtwn_start(struct rtwn_softc *sc); -static void rtwn_watchdog(void *); -static int rtwn_power_on(struct rtwn_softc *); -static int rtwn_llt_init(struct rtwn_softc *); -static void rtwn_fw_reset(struct rtwn_softc *); -static void rtwn_fw_loadpage(struct rtwn_softc *, int, const uint8_t *, - int); -static int rtwn_load_firmware(struct rtwn_softc *); -static int rtwn_dma_init(struct rtwn_softc *); -static void rtwn_mac_init(struct rtwn_softc *); -static void rtwn_bb_init(struct rtwn_softc *); -static void rtwn_rf_init(struct rtwn_softc *); -static void rtwn_cam_init(struct rtwn_softc *); -static void rtwn_pa_bias_init(struct rtwn_softc *); -static void rtwn_rxfilter_init(struct rtwn_softc *); -static void rtwn_edca_init(struct rtwn_softc *); -static void rtwn_write_txpower(struct rtwn_softc *, int, uint16_t[]); -static void rtwn_get_txpower(struct rtwn_softc *, int, - struct ieee80211_channel *, struct ieee80211_channel *, - uint16_t[]); -static void rtwn_set_txpower(struct rtwn_softc *, - struct ieee80211_channel *, struct ieee80211_channel *); -static void rtwn_set_rx_bssid_all(struct rtwn_softc *, int); -static void rtwn_set_gain(struct rtwn_softc *, uint8_t); -static void rtwn_scan_start(struct ieee80211com *); -static void rtwn_scan_end(struct ieee80211com *); -static void rtwn_getradiocaps(struct ieee80211com *, int, int *, - struct ieee80211_channel[]); -static void rtwn_set_channel(struct ieee80211com *); -static void rtwn_update_mcast(struct ieee80211com *); -static void rtwn_set_chan(struct rtwn_softc *, - struct ieee80211_channel *, struct ieee80211_channel *); -static int rtwn_iq_calib_chain(struct rtwn_softc *, int, uint16_t[2], - uint16_t[2]); -static void rtwn_iq_calib_run(struct rtwn_softc *, int, uint16_t[2][2], - uint16_t[2][2]); -static int rtwn_iq_calib_compare_results(uint16_t[2][2], uint16_t[2][2], - uint16_t[2][2], uint16_t[2][2], int); -static void rtwn_iq_calib_write_results(struct rtwn_softc *, uint16_t[2], - uint16_t[2], int); -static void rtwn_iq_calib(struct rtwn_softc *); -static void rtwn_lc_calib(struct rtwn_softc *); -static void rtwn_temp_calib(struct rtwn_softc *); -static int rtwn_init(struct rtwn_softc *); -static void rtwn_stop_locked(struct rtwn_softc *); -static void rtwn_stop(struct rtwn_softc *); -static void rtwn_intr(void *); - -/* Aliases. */ -#define rtwn_bb_write rtwn_write_4 -#define rtwn_bb_read rtwn_read_4 - -static int rtwn_probe(device_t); -static int rtwn_attach(device_t); -static int rtwn_detach(device_t); -static int rtwn_shutdown(device_t); -static int rtwn_suspend(device_t); -static int rtwn_resume(device_t); - -static device_method_t rtwn_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, rtwn_probe), - DEVMETHOD(device_attach, rtwn_attach), - DEVMETHOD(device_detach, rtwn_detach), - DEVMETHOD(device_shutdown, rtwn_shutdown), - DEVMETHOD(device_suspend, rtwn_suspend), - DEVMETHOD(device_resume, rtwn_resume), - - DEVMETHOD_END -}; - -static driver_t rtwn_driver = { - "rtwn", - rtwn_methods, - sizeof (struct rtwn_softc) -}; -static devclass_t rtwn_devclass; - -DRIVER_MODULE(rtwn, pci, rtwn_driver, rtwn_devclass, NULL, NULL); - -MODULE_VERSION(rtwn, 1); - -MODULE_DEPEND(rtwn, pci, 1, 1, 1); -MODULE_DEPEND(rtwn, wlan, 1, 1, 1); -MODULE_DEPEND(rtwn, firmware, 1, 1, 1); + const char [IFNAMSIZ], int, enum ieee80211_opmode, + int, const uint8_t [IEEE80211_ADDR_LEN], + const uint8_t [IEEE80211_ADDR_LEN]); +static void rtwn_vap_delete(struct ieee80211vap *); +static int rtwn_read_chipid(struct rtwn_softc *); +static int rtwn_ioctl_reset(struct ieee80211vap *, u_long); +#ifndef RTWN_WITHOUT_UCODE +static void rtwn_set_media_status(struct rtwn_softc *, + union sec_param *); +static int rtwn_tx_fwpkt_check(struct rtwn_softc *, + struct ieee80211vap *); +static int rtwn_construct_nulldata(struct rtwn_softc *, + struct ieee80211vap *, uint8_t *, int); +static int rtwn_push_nulldata(struct rtwn_softc *, + struct ieee80211vap *); +static void rtwn_pwrmode_init(void *); +static void rtwn_set_pwrmode_cb(struct rtwn_softc *, + union sec_param *); +#endif +static void rtwn_tsf_sync_adhoc(void *); +static void rtwn_tsf_sync_adhoc_task(void *, int); +static void rtwn_tsf_sync_enable(struct rtwn_softc *, + struct ieee80211vap *); +static void rtwn_set_ack_preamble(struct rtwn_softc *); +static void rtwn_set_mode(struct rtwn_softc *, uint8_t, int); +static int rtwn_monitor_newstate(struct ieee80211vap *, + enum ieee80211_state, int); +static int rtwn_newstate(struct ieee80211vap *, + enum ieee80211_state, int); +static void rtwn_calc_basicrates(struct rtwn_softc *); +static int rtwn_run(struct rtwn_softc *, + struct ieee80211vap *); +#ifndef D4054 +static void rtwn_watchdog(void *); +#endif +static void rtwn_parent(struct ieee80211com *); +static int rtwn_llt_write(struct rtwn_softc *, uint32_t, + uint32_t); +static int rtwn_llt_init(struct rtwn_softc *); +static int rtwn_dma_init(struct rtwn_softc *); +static int rtwn_mac_init(struct rtwn_softc *); +static void rtwn_mrr_init(struct rtwn_softc *); +static void rtwn_scan_start(struct ieee80211com *); +static void rtwn_scan_curchan(struct ieee80211_scan_state *, + unsigned long); +static void rtwn_scan_end(struct ieee80211com *); +static void rtwn_getradiocaps(struct ieee80211com *, int, int *, + struct ieee80211_channel[]); +static void rtwn_update_chw(struct ieee80211com *); +static void rtwn_set_channel(struct ieee80211com *); +static int rtwn_wme_update(struct ieee80211com *); +static void rtwn_update_slot(struct ieee80211com *); +static void rtwn_update_slot_cb(struct rtwn_softc *, + union sec_param *); +static void rtwn_update_aifs(struct rtwn_softc *, uint8_t); +static void rtwn_update_promisc(struct ieee80211com *); +static void rtwn_update_mcast(struct ieee80211com *); +static int rtwn_set_bssid(struct rtwn_softc *, + const uint8_t *, int); +static int rtwn_set_macaddr(struct rtwn_softc *, + const uint8_t *, int); +static struct ieee80211_node *rtwn_node_alloc(struct ieee80211vap *, + const uint8_t mac[IEEE80211_ADDR_LEN]); +static void rtwn_newassoc(struct ieee80211_node *, int); +static void rtwn_node_free(struct ieee80211_node *); +static void rtwn_init_beacon_reg(struct rtwn_softc *); +static int rtwn_init(struct rtwn_softc *); +static void rtwn_stop(struct rtwn_softc *); + +MALLOC_DEFINE(M_RTWN_PRIV, "rtwn_priv", "rtwn driver private state"); static const uint8_t rtwn_chan_2ghz[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }; -static int -rtwn_probe(device_t dev) -{ - const struct rtwn_ident *ident; - - for (ident = rtwn_ident_table; ident->name != NULL; ident++) { - if (pci_get_vendor(dev) == ident->vendor && - pci_get_device(dev) == ident->device) { - device_set_desc(dev, ident->name); - return (BUS_PROBE_DEFAULT); - } - } - return (ENXIO); -} +static const uint16_t wme2reg[] = + { R92C_EDCA_BE_PARAM, R92C_EDCA_BK_PARAM, + R92C_EDCA_VI_PARAM, R92C_EDCA_VO_PARAM }; -static int -rtwn_attach(device_t dev) +int +rtwn_attach(struct rtwn_softc *sc) { - struct rtwn_softc *sc = device_get_softc(dev); struct ieee80211com *ic = &sc->sc_ic; - uint32_t lcsr; - int i, count, error, rid; - - sc->sc_dev = dev; - sc->sc_debug = 0; - - /* - * Get the offset of the PCI Express Capability Structure in PCI - * Configuration Space. - */ - error = pci_find_cap(dev, PCIY_EXPRESS, &sc->sc_cap_off); - if (error != 0) { - device_printf(dev, "PCIe capability structure not found!\n"); - return (error); - } - - /* Enable bus-mastering. */ - pci_enable_busmaster(dev); + int error; - rid = PCIR_BAR(2); - sc->mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, - RF_ACTIVE); - if (sc->mem == NULL) { - device_printf(dev, "can't map mem space\n"); - return (ENOMEM); - } - sc->sc_st = rman_get_bustag(sc->mem); - sc->sc_sh = rman_get_bushandle(sc->mem); - - /* Install interrupt handler. */ - count = 1; - rid = 0; - if (pci_alloc_msi(dev, &count) == 0) - rid = 1; - sc->irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, RF_ACTIVE | - (rid != 0 ? 0 : RF_SHAREABLE)); - if (sc->irq == NULL) { - device_printf(dev, "can't map interrupt\n"); - return (ENXIO); - } + sc->cur_bcnq_id = RTWN_VAP_ID_INVALID; - RTWN_LOCK_INIT(sc); - callout_init_mtx(&sc->calib_to, &sc->sc_mtx, 0); - callout_init_mtx(&sc->watchdog_to, &sc->sc_mtx, 0); + RTWN_NT_LOCK_INIT(sc); + rtwn_cmdq_init(sc); +#ifndef D4054 + callout_init_mtx(&sc->sc_watchdog_to, &sc->sc_mtx, 0); +#endif + callout_init(&sc->sc_calib_to, 0); + callout_init(&sc->sc_pwrmode_init, 0); mbufq_init(&sc->sc_snd, ifqmaxlen); + RTWN_LOCK(sc); error = rtwn_read_chipid(sc); + RTWN_UNLOCK(sc); if (error != 0) { - device_printf(dev, "unsupported test chip\n"); - goto fail; + device_printf(sc->sc_dev, "unsupported test chip\n"); + goto detach; } - /* Disable PCIe Active State Power Management (ASPM). */ - lcsr = pci_read_config(sc->sc_dev, sc->sc_cap_off + PCIER_LINK_CTL, 4); - lcsr &= ~PCIEM_LINK_CTL_ASPMC; - pci_write_config(sc->sc_dev, sc->sc_cap_off + PCIER_LINK_CTL, lcsr, 4); - - /* Allocate Tx/Rx buffers. */ - error = rtwn_alloc_rx_list(sc); + error = rtwn_read_rom(sc); if (error != 0) { - device_printf(dev, "could not allocate Rx buffers\n"); - goto fail; - } - for (i = 0; i < RTWN_NTXQUEUES; i++) { - error = rtwn_alloc_tx_list(sc, i); - if (error != 0) { - device_printf(dev, "could not allocate Tx buffers\n"); - goto fail; - } + device_printf(sc->sc_dev, "%s: cannot read rom, error %d\n", + __func__, error); + goto detach; } - /* Determine number of Tx/Rx chains. */ - if (sc->chip & RTWN_CHIP_92C) { - sc->ntxchains = (sc->chip & RTWN_CHIP_92C_1T2R) ? 1 : 2; - sc->nrxchains = 2; - } else { - sc->ntxchains = 1; - sc->nrxchains = 1; + if (sc->macid_limit > RTWN_MACID_LIMIT) { + device_printf(sc->sc_dev, + "macid limit will be reduced from %d to %d\n", + sc->macid_limit, RTWN_MACID_LIMIT); + sc->macid_limit = RTWN_MACID_LIMIT; + } + if (sc->cam_entry_limit > RTWN_CAM_ENTRY_LIMIT) { + device_printf(sc->sc_dev, + "cam entry limit will be reduced from %d to %d\n", + sc->cam_entry_limit, RTWN_CAM_ENTRY_LIMIT); + sc->cam_entry_limit = RTWN_CAM_ENTRY_LIMIT; + } + if (sc->txdesc_len > RTWN_TX_DESC_SIZE) { + device_printf(sc->sc_dev, + "adjust size for Tx descriptor (current %d, needed %d)\n", + RTWN_TX_DESC_SIZE, sc->txdesc_len); + goto detach; } - rtwn_read_rom(sc); - device_printf(sc->sc_dev, "MAC/BB RTL%s, RF 6052 %dT%dR\n", - (sc->chip & RTWN_CHIP_92C) ? "8192CE" : "8188CE", - sc->ntxchains, sc->nrxchains); + device_printf(sc->sc_dev, "MAC/BB %s, RF 6052 %dT%dR\n", + sc->name, sc->ntxchains, sc->nrxchains); ic->ic_softc = sc; - ic->ic_name = device_get_nameunit(dev); - ic->ic_opmode = IEEE80211_M_STA; - ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ + ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ + ic->ic_opmode = IEEE80211_M_STA; /* default to BSS mode */ /* set device capabilities */ ic->ic_caps = IEEE80211_C_STA /* station mode */ | IEEE80211_C_MONITOR /* monitor mode */ + | IEEE80211_C_IBSS /* adhoc mode */ + | IEEE80211_C_HOSTAP /* hostap mode */ +#if 0 /* TODO: HRPWM register setup */ +#ifndef RTWN_WITHOUT_UCODE + | IEEE80211_C_PMGT /* Station-side power mgmt */ +#endif +#endif | IEEE80211_C_SHPREAMBLE /* short preamble supported */ | IEEE80211_C_SHSLOT /* short slot time supported */ - | IEEE80211_C_WPA /* capable of WPA1+WPA2 */ +#if 0 | IEEE80211_C_BGSCAN /* capable of bg scanning */ +#endif + | IEEE80211_C_WPA /* 802.11i */ | IEEE80211_C_WME /* 802.11e */ + | IEEE80211_C_SWAMSDUTX /* Do software A-MSDU TX */ + | IEEE80211_C_FF /* Atheros fast-frames */ ; - /* XXX TODO: setup regdomain if R92C_CHANNEL_PLAN_BY_HW bit is set. */ + if (sc->sc_hwcrypto != RTWN_CRYPTO_SW) { + ic->ic_cryptocaps = + IEEE80211_CRYPTO_WEP | + IEEE80211_CRYPTO_TKIP | + IEEE80211_CRYPTO_AES_CCM; + } + + ic->ic_htcaps = + IEEE80211_HTCAP_SHORTGI20 /* short GI in 20MHz */ + | IEEE80211_HTCAP_MAXAMSDU_3839 /* max A-MSDU length */ + | IEEE80211_HTCAP_SMPS_OFF /* SM PS mode disabled */ + /* s/w capabilities */ + | IEEE80211_HTC_HT /* HT operation */ + | IEEE80211_HTC_AMPDU /* A-MPDU tx */ + | IEEE80211_HTC_AMSDU /* A-MSDU tx */ + ; + + if (sc->sc_ht40) { + ic->ic_htcaps |= + IEEE80211_HTCAP_CHWIDTH40 /* 40 MHz channel width */ + | IEEE80211_HTCAP_SHORTGI40 /* short GI in 40MHz */ + ; + } + + ic->ic_txstream = sc->ntxchains; + ic->ic_rxstream = sc->nrxchains; + + /* Enable TX watchdog */ +#ifdef D4054 + ic->ic_flags_ext |= IEEE80211_FEXT_WATCHDOG; +#endif + + /* Adjust capabilities. */ + rtwn_adj_devcaps(sc); rtwn_getradiocaps(ic, IEEE80211_CHAN_MAX, &ic->ic_nchans, ic->ic_channels); - ieee80211_ifattach(ic); + /* XXX TODO: setup regdomain if R92C_CHANNEL_PLAN_BY_HW bit is set. */ - ic->ic_wme.wme_update = rtwn_updateedca; - ic->ic_update_mcast = rtwn_update_mcast; + ieee80211_ifattach(ic); + ic->ic_raw_xmit = rtwn_raw_xmit; ic->ic_scan_start = rtwn_scan_start; + sc->sc_scan_curchan = ic->ic_scan_curchan; + ic->ic_scan_curchan = rtwn_scan_curchan; ic->ic_scan_end = rtwn_scan_end; ic->ic_getradiocaps = rtwn_getradiocaps; + ic->ic_update_chw = rtwn_update_chw; ic->ic_set_channel = rtwn_set_channel; - ic->ic_raw_xmit = rtwn_raw_xmit; ic->ic_transmit = rtwn_transmit; ic->ic_parent = rtwn_parent; ic->ic_vap_create = rtwn_vap_create; ic->ic_vap_delete = rtwn_vap_delete; + ic->ic_wme.wme_update = rtwn_wme_update; + ic->ic_updateslot = rtwn_update_slot; + ic->ic_update_promisc = rtwn_update_promisc; + ic->ic_update_mcast = rtwn_update_mcast; + ic->ic_node_alloc = rtwn_node_alloc; + ic->ic_newassoc = rtwn_newassoc; + sc->sc_node_free = ic->ic_node_free; + ic->ic_node_free = rtwn_node_free; - ieee80211_radiotap_attach(ic, - &sc->sc_txtap.wt_ihdr, sizeof(sc->sc_txtap), - RTWN_TX_RADIOTAP_PRESENT, - &sc->sc_rxtap.wr_ihdr, sizeof(sc->sc_rxtap), - RTWN_RX_RADIOTAP_PRESENT); - - /* - * Hook our interrupt after all initialization is complete. - */ - error = bus_setup_intr(dev, sc->irq, INTR_TYPE_NET | INTR_MPSAFE, - NULL, rtwn_intr, sc, &sc->sc_ih); - if (error != 0) { - device_printf(dev, "can't establish interrupt, error %d\n", - error); - goto fail; - } + rtwn_postattach(sc); + rtwn_radiotap_attach(sc); if (bootverbose) ieee80211_announce(ic); return (0); -fail: - rtwn_detach(dev); - return (error); +detach: + return (ENXIO); /* failure */ } - -static int -rtwn_detach(device_t dev) +static void +rtwn_radiotap_attach(struct rtwn_softc *sc) { - struct rtwn_softc *sc = device_get_softc(dev); - int i; - - if (sc->sc_ic.ic_softc != NULL) { - rtwn_stop(sc); + struct rtwn_rx_radiotap_header *rxtap = &sc->sc_rxtap; + struct rtwn_tx_radiotap_header *txtap = &sc->sc_txtap; - callout_drain(&sc->calib_to); - callout_drain(&sc->watchdog_to); - ieee80211_ifdetach(&sc->sc_ic); - mbufq_drain(&sc->sc_snd); - } + ieee80211_radiotap_attach(&sc->sc_ic, + &txtap->wt_ihdr, sizeof(*txtap), RTWN_TX_RADIOTAP_PRESENT, + &rxtap->wr_ihdr, sizeof(*rxtap), RTWN_RX_RADIOTAP_PRESENT); +} - /* Uninstall interrupt handler. */ - if (sc->irq != NULL) { - bus_teardown_intr(dev, sc->irq, sc->sc_ih); - bus_release_resource(dev, SYS_RES_IRQ, rman_get_rid(sc->irq), - sc->irq); - pci_release_msi(dev); - } +void +rtwn_sysctlattach(struct rtwn_softc *sc) +{ + struct sysctl_ctx_list *ctx = device_get_sysctl_ctx(sc->sc_dev); + struct sysctl_oid *tree = device_get_sysctl_tree(sc->sc_dev); - /* Free Tx/Rx buffers. */ - for (i = 0; i < RTWN_NTXQUEUES; i++) - rtwn_free_tx_list(sc, i); - rtwn_free_rx_list(sc); +#if 1 + sc->sc_ht40 = 0; + SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, + "ht40", CTLFLAG_RDTUN, &sc->sc_ht40, + sc->sc_ht40, "Enable 40 MHz mode support"); +#endif - if (sc->mem != NULL) - bus_release_resource(dev, SYS_RES_MEMORY, - rman_get_rid(sc->mem), sc->mem); +#ifdef RTWN_DEBUG + SYSCTL_ADD_U32(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, + "debug", CTLFLAG_RWTUN, &sc->sc_debug, sc->sc_debug, + "Control debugging printfs"); +#endif - RTWN_LOCK_DESTROY(sc); - return (0); -} + sc->sc_hwcrypto = RTWN_CRYPTO_PAIR; + SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, + "hwcrypto", CTLFLAG_RDTUN, &sc->sc_hwcrypto, + sc->sc_hwcrypto, "Enable h/w crypto: " + "0 - disable, 1 - pairwise keys, 2 - all keys"); + if (sc->sc_hwcrypto >= RTWN_CRYPTO_MAX) + sc->sc_hwcrypto = RTWN_CRYPTO_FULL; -static int -rtwn_shutdown(device_t dev) -{ + sc->sc_ratectl_sysctl = RTWN_RATECTL_NET80211; + SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, + "ratectl", CTLFLAG_RDTUN, &sc->sc_ratectl_sysctl, + sc->sc_ratectl_sysctl, "Select rate control mechanism: " + "0 - disabled, 1 - via net80211, 2 - via firmware"); + if (sc->sc_ratectl_sysctl >= RTWN_RATECTL_MAX) + sc->sc_ratectl_sysctl = RTWN_RATECTL_FW; - return (0); + sc->sc_ratectl = sc->sc_ratectl_sysctl; + SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, + "ratectl_selected", CTLFLAG_RD, &sc->sc_ratectl, + sc->sc_ratectl, + "Currently selected rate control mechanism (by the driver)"); } -static int -rtwn_suspend(device_t dev) +void +rtwn_detach(struct rtwn_softc *sc) { - return (0); -} + struct ieee80211com *ic = &sc->sc_ic; -static int -rtwn_resume(device_t dev) -{ + if (ic->ic_softc == sc) { + /* Stop command queue. */ + RTWN_CMDQ_LOCK(sc); + sc->sc_detached = 1; + RTWN_CMDQ_UNLOCK(sc); - return (0); + ieee80211_draintask(ic, &sc->cmdq_task); + ieee80211_ifdetach(ic); + } + + rtwn_cmdq_destroy(sc); + if (RTWN_NT_LOCK_INITIALIZED(sc)) + RTWN_NT_LOCK_DESTROY(sc); } -static void -rtwn_dma_map_addr(void *arg, bus_dma_segment_t *segs, int nsegs, int error) +void +rtwn_suspend(struct rtwn_softc *sc) { + struct ieee80211com *ic = &sc->sc_ic; - if (error != 0) - return; - KASSERT(nsegs == 1, ("too many DMA segments, %d should be 1", nsegs)); - *(bus_addr_t *)arg = segs[0].ds_addr; + ieee80211_suspend_all(ic); } -static void -rtwn_setup_rx_desc(struct rtwn_softc *sc, struct r92c_rx_desc *desc, - bus_addr_t addr, size_t len, int idx) +void +rtwn_resume(struct rtwn_softc *sc) { + struct ieee80211com *ic = &sc->sc_ic; - memset(desc, 0, sizeof(*desc)); - desc->rxdw0 = htole32(SM(R92C_RXDW0_PKTLEN, len) | - ((idx == RTWN_RX_LIST_COUNT - 1) ? R92C_RXDW0_EOR : 0)); - desc->rxbufaddr = htole32(addr); - bus_space_barrier(sc->sc_st, sc->sc_sh, 0, sc->sc_mapsize, - BUS_SPACE_BARRIER_WRITE); - desc->rxdw0 |= htole32(R92C_RXDW0_OWN); + ieee80211_resume_all(ic); } -static int -rtwn_alloc_rx_list(struct rtwn_softc *sc) +static void +rtwn_vap_decrement_counters(struct rtwn_softc *sc, + enum ieee80211_opmode opmode, int id) { - struct rtwn_rx_ring *rx_ring = &sc->rx_ring; - struct rtwn_rx_data *rx_data; - bus_size_t size; - int i, error; - /* Allocate Rx descriptors. */ - size = sizeof(struct r92c_rx_desc) * RTWN_RX_LIST_COUNT; - error = bus_dma_tag_create(bus_get_dma_tag(sc->sc_dev), 1, 0, - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, - size, 1, size, 0, NULL, NULL, &rx_ring->desc_dmat); - if (error != 0) { - device_printf(sc->sc_dev, "could not create rx desc DMA tag\n"); - goto fail; - } + RTWN_ASSERT_LOCKED(sc); - error = bus_dmamem_alloc(rx_ring->desc_dmat, (void **)&rx_ring->desc, - BUS_DMA_NOWAIT | BUS_DMA_ZERO | BUS_DMA_COHERENT, - &rx_ring->desc_map); - if (error != 0) { - device_printf(sc->sc_dev, "could not allocate rx desc\n"); - goto fail; + if (id != RTWN_VAP_ID_INVALID) { + KASSERT(id == 0 || id == 1, ("wrong vap id %d!\n", id)); + KASSERT(sc->vaps[id] != NULL, ("vap pointer is NULL\n")); + sc->vaps[id] = NULL; } - error = bus_dmamap_load(rx_ring->desc_dmat, rx_ring->desc_map, - rx_ring->desc, size, rtwn_dma_map_addr, &rx_ring->paddr, 0); - if (error != 0) { - device_printf(sc->sc_dev, "could not load rx desc DMA map\n"); - goto fail; - } - bus_dmamap_sync(rx_ring->desc_dmat, rx_ring->desc_map, - BUS_DMASYNC_PREWRITE); - /* Create RX buffer DMA tag. */ - error = bus_dma_tag_create(bus_get_dma_tag(sc->sc_dev), 1, 0, - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, MCLBYTES, - 1, MCLBYTES, 0, NULL, NULL, &rx_ring->data_dmat); - if (error != 0) { - device_printf(sc->sc_dev, "could not create rx buf DMA tag\n"); - goto fail; + switch (opmode) { + case IEEE80211_M_HOSTAP: + sc->ap_vaps--; + /* FALLTHROUGH */ + case IEEE80211_M_IBSS: + sc->bcn_vaps--; + /* FALLTHROUGH */ + case IEEE80211_M_STA: + sc->nvaps--; + break; + case IEEE80211_M_MONITOR: + sc->mon_vaps--; + break; + default: + KASSERT(0, ("wrong opmode %d\n", opmode)); + break; } - /* Allocate Rx buffers. */ - for (i = 0; i < RTWN_RX_LIST_COUNT; i++) { - rx_data = &rx_ring->rx_data[i]; - error = bus_dmamap_create(rx_ring->data_dmat, 0, &rx_data->map); - if (error != 0) { - device_printf(sc->sc_dev, - "could not create rx buf DMA map\n"); - goto fail; - } - - rx_data->m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); - if (rx_data->m == NULL) { - device_printf(sc->sc_dev, - "could not allocate rx mbuf\n"); - error = ENOMEM; - goto fail; - } - - error = bus_dmamap_load(rx_ring->data_dmat, rx_data->map, - mtod(rx_data->m, void *), MCLBYTES, rtwn_dma_map_addr, - &rx_data->paddr, BUS_DMA_NOWAIT); - if (error != 0) { - device_printf(sc->sc_dev, - "could not load rx buf DMA map"); - goto fail; - } - - rtwn_setup_rx_desc(sc, &rx_ring->desc[i], rx_data->paddr, - MCLBYTES, i); - } - return (0); + KASSERT(sc->vaps_running >= 0 && sc->monvaps_running >= 0, + ("number of running vaps is negative (vaps %d, monvaps %d)\n", + sc->vaps_running, sc->monvaps_running)); + KASSERT(sc->vaps_running - sc->monvaps_running <= RTWN_PORT_COUNT, + ("number of running vaps is too big (vaps %d, monvaps %d)\n", + sc->vaps_running, sc->monvaps_running)); -fail: - rtwn_free_rx_list(sc); - return (error); + KASSERT(sc->nvaps >= 0 && sc->nvaps <= RTWN_PORT_COUNT, + ("wrong value %d for nvaps\n", sc->nvaps)); + KASSERT(sc->mon_vaps >= 0, ("mon_vaps is negative (%d)\n", + sc->mon_vaps)); + KASSERT(sc->bcn_vaps >= 0 && ((RTWN_CHIP_HAS_BCNQ1(sc) && + sc->bcn_vaps <= RTWN_PORT_COUNT) || sc->bcn_vaps <= 1), + ("bcn_vaps value %d is wrong\n", sc->bcn_vaps)); + KASSERT(sc->ap_vaps >= 0 && ((RTWN_CHIP_HAS_BCNQ1(sc) && + sc->ap_vaps <= RTWN_PORT_COUNT) || sc->ap_vaps <= 1), + ("ap_vaps value %d is wrong\n", sc->ap_vaps)); } static void -rtwn_reset_rx_list(struct rtwn_softc *sc) +rtwn_set_ic_opmode(struct rtwn_softc *sc) { - struct rtwn_rx_ring *rx_ring = &sc->rx_ring; - struct rtwn_rx_data *rx_data; - int i; + struct ieee80211com *ic = &sc->sc_ic; - for (i = 0; i < RTWN_RX_LIST_COUNT; i++) { - rx_data = &rx_ring->rx_data[i]; - rtwn_setup_rx_desc(sc, &rx_ring->desc[i], rx_data->paddr, - MCLBYTES, i); - } + RTWN_ASSERT_LOCKED(sc); + + /* for ieee80211_reset_erp() */ + if (sc->bcn_vaps - sc->ap_vaps > 0) + ic->ic_opmode = IEEE80211_M_IBSS; + else if (sc->ap_vaps > 0) + ic->ic_opmode = IEEE80211_M_HOSTAP; + else if (sc->nvaps > 0) + ic->ic_opmode = IEEE80211_M_STA; + else + ic->ic_opmode = IEEE80211_M_MONITOR; } -static void -rtwn_free_rx_list(struct rtwn_softc *sc) +static struct ieee80211vap * +rtwn_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit, + enum ieee80211_opmode opmode, int flags, + const uint8_t bssid[IEEE80211_ADDR_LEN], + const uint8_t mac[IEEE80211_ADDR_LEN]) { - struct rtwn_rx_ring *rx_ring = &sc->rx_ring; - struct rtwn_rx_data *rx_data; - int i; + struct rtwn_softc *sc = ic->ic_softc; + struct rtwn_vap *uvp; + struct ieee80211vap *vap; + int id = RTWN_VAP_ID_INVALID; - if (rx_ring->desc_dmat != NULL) { - if (rx_ring->desc != NULL) { - bus_dmamap_sync(rx_ring->desc_dmat, - rx_ring->desc_map, - BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE); - bus_dmamap_unload(rx_ring->desc_dmat, - rx_ring->desc_map); - bus_dmamem_free(rx_ring->desc_dmat, rx_ring->desc, - rx_ring->desc_map); - rx_ring->desc = NULL; + RTWN_LOCK(sc); + KASSERT(sc->nvaps <= RTWN_PORT_COUNT, + ("nvaps overflow (%d > %d)\n", sc->nvaps, RTWN_PORT_COUNT)); + KASSERT(sc->ap_vaps <= RTWN_PORT_COUNT, + ("ap_vaps overflow (%d > %d)\n", sc->ap_vaps, RTWN_PORT_COUNT)); + KASSERT(sc->bcn_vaps <= RTWN_PORT_COUNT, + ("bcn_vaps overflow (%d > %d)\n", sc->bcn_vaps, RTWN_PORT_COUNT)); + + if (opmode != IEEE80211_M_MONITOR) { + switch (sc->nvaps) { + case 0: + id = 0; + break; + case 1: + if (sc->vaps[1] == NULL) + id = 1; + else if (sc->vaps[0] == NULL) + id = 0; + KASSERT(id != RTWN_VAP_ID_INVALID, + ("no free ports left\n")); + break; + case 2: + default: + goto fail; } - bus_dma_tag_destroy(rx_ring->desc_dmat); - rx_ring->desc_dmat = NULL; - } - for (i = 0; i < RTWN_RX_LIST_COUNT; i++) { - rx_data = &rx_ring->rx_data[i]; - - if (rx_data->m != NULL) { - bus_dmamap_sync(rx_ring->data_dmat, - rx_data->map, BUS_DMASYNC_POSTREAD); - bus_dmamap_unload(rx_ring->data_dmat, rx_data->map); - m_freem(rx_data->m); - rx_data->m = NULL; + if (opmode == IEEE80211_M_IBSS || + opmode == IEEE80211_M_HOSTAP) { + if ((sc->bcn_vaps == 1 && !RTWN_CHIP_HAS_BCNQ1(sc)) || + sc->bcn_vaps == RTWN_PORT_COUNT) + goto fail; } - bus_dmamap_destroy(rx_ring->data_dmat, rx_data->map); - rx_data->map = NULL; - } - if (rx_ring->data_dmat != NULL) { - bus_dma_tag_destroy(rx_ring->data_dmat); - rx_ring->data_dmat = NULL; } -} - -static int -rtwn_alloc_tx_list(struct rtwn_softc *sc, int qid) -{ - struct rtwn_tx_ring *tx_ring = &sc->tx_ring[qid]; - struct rtwn_tx_data *tx_data; - bus_size_t size; - int i, error; - size = sizeof(struct r92c_tx_desc) * RTWN_TX_LIST_COUNT; - error = bus_dma_tag_create(bus_get_dma_tag(sc->sc_dev), PAGE_SIZE, 0, - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, - size, 1, size, 0, NULL, NULL, &tx_ring->desc_dmat); - if (error != 0) { - device_printf(sc->sc_dev, "could not create tx ring DMA tag\n"); + switch (opmode) { + case IEEE80211_M_HOSTAP: + sc->ap_vaps++; + /* FALLTHROUGH */ + case IEEE80211_M_IBSS: + sc->bcn_vaps++; + /* FALLTHROUGH */ + case IEEE80211_M_STA: + sc->nvaps++; + break; + case IEEE80211_M_MONITOR: + sc->mon_vaps++; + break; + default: + KASSERT(0, ("unknown opmode %d\n", opmode)); goto fail; } + RTWN_UNLOCK(sc); - error = bus_dmamem_alloc(tx_ring->desc_dmat, (void **)&tx_ring->desc, - BUS_DMA_NOWAIT | BUS_DMA_ZERO, &tx_ring->desc_map); - if (error != 0) { - device_printf(sc->sc_dev, "can't map tx ring DMA memory\n"); - goto fail; - } - error = bus_dmamap_load(tx_ring->desc_dmat, tx_ring->desc_map, - tx_ring->desc, size, rtwn_dma_map_addr, &tx_ring->paddr, - BUS_DMA_NOWAIT); - if (error != 0) { - device_printf(sc->sc_dev, "could not load desc DMA map\n"); - goto fail; + uvp = malloc(sizeof(struct rtwn_vap), M_80211_VAP, M_WAITOK | M_ZERO); + uvp->id = id; + if (id != RTWN_VAP_ID_INVALID) { + RTWN_LOCK(sc); + sc->vaps[id] = uvp; + RTWN_UNLOCK(sc); } - bus_dmamap_sync(tx_ring->desc_dmat, tx_ring->desc_map, - BUS_DMASYNC_PREWRITE); + vap = &uvp->vap; + /* enable s/w bmiss handling for sta mode */ - error = bus_dma_tag_create(bus_get_dma_tag(sc->sc_dev), 1, 0, - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, MCLBYTES, - 1, MCLBYTES, 0, NULL, NULL, &tx_ring->data_dmat); - if (error != 0) { - device_printf(sc->sc_dev, "could not create tx buf DMA tag\n"); - goto fail; - } + if (ieee80211_vap_setup(ic, vap, name, unit, opmode, + flags | IEEE80211_CLONE_NOBEACONS, bssid) != 0) { + /* out of memory */ + free(uvp, M_80211_VAP); - for (i = 0; i < RTWN_TX_LIST_COUNT; i++) { - struct r92c_tx_desc *desc = &tx_ring->desc[i]; + RTWN_LOCK(sc); + rtwn_vap_decrement_counters(sc, opmode, id); + RTWN_UNLOCK(sc); - /* setup tx desc */ - desc->nextdescaddr = htole32(tx_ring->paddr + - + sizeof(struct r92c_tx_desc) - * ((i + 1) % RTWN_TX_LIST_COUNT)); - tx_data = &tx_ring->tx_data[i]; - error = bus_dmamap_create(tx_ring->data_dmat, 0, &tx_data->map); - if (error != 0) { - device_printf(sc->sc_dev, - "could not create tx buf DMA map\n"); - goto fail; - } - tx_data->m = NULL; - tx_data->ni = NULL; + return (NULL); } - return (0); -fail: - rtwn_free_tx_list(sc, qid); - return (error); -} + rtwn_beacon_init(sc, &uvp->bcn_desc.txd[0], uvp->id); + rtwn_vap_preattach(sc, vap); -static void -rtwn_reset_tx_list(struct rtwn_softc *sc, int qid) -{ - struct rtwn_tx_ring *tx_ring = &sc->tx_ring[qid]; - int i; + /* override state transition machine */ + uvp->newstate = vap->iv_newstate; + if (opmode == IEEE80211_M_MONITOR) + vap->iv_newstate = rtwn_monitor_newstate; + else + vap->iv_newstate = rtwn_newstate; + vap->iv_update_beacon = rtwn_update_beacon; + vap->iv_reset = rtwn_ioctl_reset; + vap->iv_key_alloc = rtwn_key_alloc; + vap->iv_key_set = rtwn_key_set; + vap->iv_key_delete = rtwn_key_delete; + vap->iv_max_aid = sc->macid_limit; + + /* 802.11n parameters */ + vap->iv_ampdu_density = IEEE80211_HTCAP_MPDUDENSITY_16; + vap->iv_ampdu_rxmax = IEEE80211_HTCAP_MAXRXAMPDU_64K; + + if (opmode == IEEE80211_M_IBSS) { + uvp->recv_mgmt = vap->iv_recv_mgmt; + vap->iv_recv_mgmt = rtwn_adhoc_recv_mgmt; + TASK_INIT(&uvp->tsf_sync_adhoc_task, 0, + rtwn_tsf_sync_adhoc_task, vap); + callout_init(&uvp->tsf_sync_adhoc, 0); + } - for (i = 0; i < RTWN_TX_LIST_COUNT; i++) { - struct r92c_tx_desc *desc = &tx_ring->desc[i]; - struct rtwn_tx_data *tx_data = &tx_ring->tx_data[i]; + /* + * NB: driver can select net80211 RA even when user requests + * another mechanism. + */ + ieee80211_ratectl_init(vap); - memset(desc, 0, sizeof(*desc) - - (sizeof(desc->reserved) + sizeof(desc->nextdescaddr64) + - sizeof(desc->nextdescaddr))); + /* complete setup */ + ieee80211_vap_attach(vap, ieee80211_media_change, + ieee80211_media_status, mac); - if (tx_data->m != NULL) { - bus_dmamap_sync(tx_ring->data_dmat, tx_data->map, - BUS_DMASYNC_POSTWRITE); - bus_dmamap_unload(tx_ring->data_dmat, tx_data->map); - m_freem(tx_data->m); - tx_data->m = NULL; - } - if (tx_data->ni != NULL) { - ieee80211_free_node(tx_data->ni); - tx_data->ni = NULL; - } + RTWN_LOCK(sc); + rtwn_set_ic_opmode(sc); + if (sc->sc_flags & RTWN_RUNNING) { + if (uvp->id != RTWN_VAP_ID_INVALID) + rtwn_set_macaddr(sc, vap->iv_myaddr, uvp->id); + + rtwn_rxfilter_update(sc); } + RTWN_UNLOCK(sc); - bus_dmamap_sync(tx_ring->desc_dmat, tx_ring->desc_map, - BUS_DMASYNC_POSTWRITE); + return (vap); - sc->qfullmsk &= ~(1 << qid); - tx_ring->queued = 0; - tx_ring->cur = 0; +fail: + RTWN_UNLOCK(sc); + return (NULL); } static void -rtwn_free_tx_list(struct rtwn_softc *sc, int qid) +rtwn_vap_delete(struct ieee80211vap *vap) { - struct rtwn_tx_ring *tx_ring = &sc->tx_ring[qid]; - struct rtwn_tx_data *tx_data; - int i; + struct ieee80211com *ic = vap->iv_ic; + struct rtwn_softc *sc = ic->ic_softc; + struct rtwn_vap *uvp = RTWN_VAP(vap); - if (tx_ring->desc_dmat != NULL) { - if (tx_ring->desc != NULL) { - bus_dmamap_sync(tx_ring->desc_dmat, - tx_ring->desc_map, BUS_DMASYNC_POSTWRITE); - bus_dmamap_unload(tx_ring->desc_dmat, - tx_ring->desc_map); - bus_dmamem_free(tx_ring->desc_dmat, tx_ring->desc, - tx_ring->desc_map); - } - bus_dma_tag_destroy(tx_ring->desc_dmat); - } + /* Put vap into INIT state + stop device if needed. */ + ieee80211_stop(vap); + ieee80211_draintask(ic, &vap->iv_nstate_task); + ieee80211_draintask(ic, &ic->ic_parent_task); - for (i = 0; i < RTWN_TX_LIST_COUNT; i++) { - tx_data = &tx_ring->tx_data[i]; + RTWN_LOCK(sc); + if (uvp->bcn_mbuf != NULL) + m_freem(uvp->bcn_mbuf); + /* Cancel any unfinished Tx. */ + rtwn_reset_lists(sc, vap); + rtwn_vap_decrement_counters(sc, vap->iv_opmode, uvp->id); + rtwn_set_ic_opmode(sc); + if (sc->sc_flags & RTWN_RUNNING) + rtwn_rxfilter_update(sc); + RTWN_UNLOCK(sc); - if (tx_data->m != NULL) { - bus_dmamap_sync(tx_ring->data_dmat, tx_data->map, - BUS_DMASYNC_POSTWRITE); - bus_dmamap_unload(tx_ring->data_dmat, tx_data->map); - m_freem(tx_data->m); - tx_data->m = NULL; - } - } - if (tx_ring->data_dmat != NULL) { - bus_dma_tag_destroy(tx_ring->data_dmat); - tx_ring->data_dmat = NULL; + if (vap->iv_opmode == IEEE80211_M_IBSS) { + ieee80211_draintask(ic, &uvp->tsf_sync_adhoc_task); + callout_drain(&uvp->tsf_sync_adhoc); } - sc->qfullmsk &= ~(1 << qid); - tx_ring->queued = 0; - tx_ring->cur = 0; + ieee80211_ratectl_deinit(vap); + ieee80211_vap_detach(vap); + free(uvp, M_80211_VAP); } - -static struct ieee80211vap * -rtwn_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit, - enum ieee80211_opmode opmode, int flags, - const uint8_t bssid[IEEE80211_ADDR_LEN], - const uint8_t mac[IEEE80211_ADDR_LEN]) +static int +rtwn_read_chipid(struct rtwn_softc *sc) { - struct rtwn_vap *rvp; - struct ieee80211vap *vap; + uint32_t reg; - if (!TAILQ_EMPTY(&ic->ic_vaps)) - return (NULL); + reg = rtwn_read_4(sc, R92C_SYS_CFG); + if (reg & R92C_SYS_CFG_TRP_VAUX_EN) /* test chip */ + return (EOPNOTSUPP); - rvp = malloc(sizeof(struct rtwn_vap), M_80211_VAP, M_WAITOK | M_ZERO); - vap = &rvp->vap; - if (ieee80211_vap_setup(ic, vap, name, unit, opmode, - flags | IEEE80211_CLONE_NOBEACONS, bssid) != 0) { - /* out of memory */ - free(rvp, M_80211_VAP); - return (NULL); - } - - /* Override state transition machine. */ - rvp->newstate = vap->iv_newstate; - vap->iv_newstate = rtwn_newstate; + rtwn_read_chipid_vendor(sc, reg); - /* Complete setup. */ - ieee80211_vap_attach(vap, ieee80211_media_change, - ieee80211_media_status, mac); - ic->ic_opmode = opmode; - return (vap); + return (0); } -static void -rtwn_vap_delete(struct ieee80211vap *vap) +static int +rtwn_ioctl_reset(struct ieee80211vap *vap, u_long cmd) { - struct rtwn_vap *rvp = RTWN_VAP(vap); + int error; - ieee80211_vap_detach(vap); - free(rvp, M_80211_VAP); -} + switch (cmd) { +#ifndef RTWN_WITHOUT_UCODE + case IEEE80211_IOC_POWERSAVE: + case IEEE80211_IOC_POWERSAVESLEEP: + { + struct rtwn_softc *sc = vap->iv_ic->ic_softc; + struct rtwn_vap *uvp = RTWN_VAP(vap); -static void -rtwn_write_1(struct rtwn_softc *sc, uint16_t addr, uint8_t val) -{ + if (vap->iv_opmode == IEEE80211_M_STA && uvp->id == 0) { + RTWN_LOCK(sc); + if (sc->sc_flags & RTWN_RUNNING) + error = rtwn_set_pwrmode(sc, vap, 1); + else + error = 0; + RTWN_UNLOCK(sc); + if (error != 0) + error = ENETRESET; + } else + error = EOPNOTSUPP; + break; + } +#endif + case IEEE80211_IOC_SHORTGI: + case IEEE80211_IOC_RTSTHRESHOLD: + case IEEE80211_IOC_PROTMODE: + case IEEE80211_IOC_HTPROTMODE: + error = 0; + break; + default: + error = ENETRESET; + break; + } - bus_space_write_1(sc->sc_st, sc->sc_sh, addr, val); + return (error); } +#ifndef RTWN_WITHOUT_UCODE static void -rtwn_write_2(struct rtwn_softc *sc, uint16_t addr, uint16_t val) +rtwn_set_media_status(struct rtwn_softc *sc, union sec_param *data) { - - val = htole16(val); - bus_space_write_2(sc->sc_st, sc->sc_sh, addr, val); + sc->sc_set_media_status(sc, data->macid); } -static void -rtwn_write_4(struct rtwn_softc *sc, uint16_t addr, uint32_t val) +static int +rtwn_tx_fwpkt_check(struct rtwn_softc *sc, struct ieee80211vap *vap) { + int ntries, error; - val = htole32(val); - bus_space_write_4(sc->sc_st, sc->sc_sh, addr, val); -} - -static uint8_t -rtwn_read_1(struct rtwn_softc *sc, uint16_t addr) -{ + for (ntries = 0; ntries < 5; ntries++) { + error = rtwn_push_nulldata(sc, vap); + if (error == 0) + break; + } + if (ntries == 5) { + device_printf(sc->sc_dev, + "%s: cannot push f/w frames into chip, error %d!\n", + __func__, error); + return (error); + } - return (bus_space_read_1(sc->sc_st, sc->sc_sh, addr)); + return (0); } -static uint16_t -rtwn_read_2(struct rtwn_softc *sc, uint16_t addr) +static int +rtwn_construct_nulldata(struct rtwn_softc *sc, struct ieee80211vap *vap, + uint8_t *ptr, int qos) { + struct rtwn_vap *uvp = RTWN_VAP(vap); + struct ieee80211com *ic = &sc->sc_ic; + struct rtwn_tx_desc_common *txd; + struct ieee80211_frame *wh; + int pktlen; + + /* XXX obtain from net80211 */ + wh = (struct ieee80211_frame *)(ptr + sc->txdesc_len); + wh->i_fc[0] = IEEE80211_FC0_VERSION_0 | IEEE80211_FC0_TYPE_DATA; + wh->i_fc[1] = IEEE80211_FC1_DIR_TODS; + IEEE80211_ADDR_COPY(wh->i_addr1, vap->iv_bss->ni_bssid); + IEEE80211_ADDR_COPY(wh->i_addr2, vap->iv_myaddr); + IEEE80211_ADDR_COPY(wh->i_addr3, vap->iv_bss->ni_macaddr); + + txd = (struct rtwn_tx_desc_common *)ptr; + txd->offset = sc->txdesc_len; + pktlen = sc->txdesc_len; + if (qos) { + struct ieee80211_qosframe *qwh; + const int tid = WME_AC_TO_TID(WME_AC_BE); + + qwh = (struct ieee80211_qosframe *)wh; + qwh->i_fc[0] |= IEEE80211_FC0_SUBTYPE_QOS_NULL; + qwh->i_qos[0] = tid & IEEE80211_QOS_TID; + + txd->pktlen = htole16(sizeof(struct ieee80211_qosframe)); + pktlen += sizeof(struct ieee80211_qosframe); + } else { + wh->i_fc[0] |= IEEE80211_FC0_SUBTYPE_NODATA; - return (bus_space_read_2(sc->sc_st, sc->sc_sh, addr)); -} + txd->pktlen = htole16(sizeof(struct ieee80211_frame)); + pktlen += sizeof(struct ieee80211_frame); + } -static uint32_t -rtwn_read_4(struct rtwn_softc *sc, uint16_t addr) -{ + rtwn_fill_tx_desc_null(sc, ptr, + ic->ic_curmode == IEEE80211_MODE_11B, qos, uvp->id); - return (bus_space_read_4(sc->sc_st, sc->sc_sh, addr)); + return (pktlen); } static int -rtwn_fw_cmd(struct rtwn_softc *sc, uint8_t id, const void *buf, int len) +rtwn_push_nulldata(struct rtwn_softc *sc, struct ieee80211vap *vap) { - struct r92c_fw_cmd cmd; - int ntries; + struct rtwn_vap *uvp = RTWN_VAP(vap); + struct ieee80211com *ic = vap->iv_ic; + struct ieee80211_channel *c = ic->ic_curchan; + struct mbuf *m; + uint8_t *ptr; + int required_size, bcn_size, null_size, null_data, error; - /* Wait for current FW box to be empty. */ - for (ntries = 0; ntries < 100; ntries++) { - if (!(rtwn_read_1(sc, R92C_HMETFR) & (1 << sc->fwcur))) - break; - DELAY(1); - } - if (ntries == 100) { - device_printf(sc->sc_dev, - "could not send firmware command %d\n", id); - return (ETIMEDOUT); - } - memset(&cmd, 0, sizeof(cmd)); - cmd.id = id; - if (len > 3) - cmd.id |= R92C_CMD_FLAG_EXT; - KASSERT(len <= sizeof(cmd.msg), ("rtwn_fw_cmd\n")); - memcpy(cmd.msg, buf, len); + if (!(sc->sc_flags & RTWN_FW_LOADED)) + return (0); /* requires firmware */ - /* Write the first word last since that will trigger the FW. */ - rtwn_write_2(sc, R92C_HMEBOX_EXT(sc->fwcur), *((uint8_t *)&cmd + 4)); - rtwn_write_4(sc, R92C_HMEBOX(sc->fwcur), *((uint8_t *)&cmd + 0)); + KASSERT(sc->page_size > 0, ("page size was not set!\n")); - sc->fwcur = (sc->fwcur + 1) % R92C_H2C_NBOX; + /* Leave some space for beacon (multi-vap) */ + bcn_size = roundup(RTWN_BCN_MAX_SIZE, sc->page_size); + /* 1 page for Null Data + 1 page for Qos Null Data frames. */ + required_size = bcn_size + sc->page_size * 2; - /* Give firmware some time for processing. */ - DELAY(2000); + m = m_get2(required_size, M_NOWAIT, MT_DATA, M_PKTHDR); + if (m == NULL) + return (ENOMEM); - return (0); -} + /* Setup beacon descriptor. */ + rtwn_beacon_set_rate(sc, &uvp->bcn_desc.txd[0], + IEEE80211_IS_CHAN_5GHZ(c)); -static void -rtwn_rf_write(struct rtwn_softc *sc, int chain, uint8_t addr, uint32_t val) -{ - rtwn_bb_write(sc, R92C_LSSI_PARAM(chain), - SM(R92C_LSSI_PARAM_ADDR, addr) | - SM(R92C_LSSI_PARAM_DATA, val)); -} + ptr = mtod(m, uint8_t *); + memset(ptr, 0, required_size - sc->txdesc_len); -static uint32_t -rtwn_rf_read(struct rtwn_softc *sc, int chain, uint8_t addr) -{ - uint32_t reg[R92C_MAX_CHAINS], val; + /* Construct Null Data frame. */ + ptr += bcn_size - sc->txdesc_len; + null_size = rtwn_construct_nulldata(sc, vap, ptr, 0); + KASSERT(null_size < sc->page_size, + ("recalculate size for Null Data frame\n")); - reg[0] = rtwn_bb_read(sc, R92C_HSSI_PARAM2(0)); - if (chain != 0) - reg[chain] = rtwn_bb_read(sc, R92C_HSSI_PARAM2(chain)); + /* Construct Qos Null Data frame. */ + ptr += roundup(null_size, sc->page_size); + null_size = rtwn_construct_nulldata(sc, vap, ptr, 1); + KASSERT(null_size < sc->page_size, + ("recalculate size for Qos Null Data frame\n")); - rtwn_bb_write(sc, R92C_HSSI_PARAM2(0), - reg[0] & ~R92C_HSSI_PARAM2_READ_EDGE); - DELAY(1000); + /* Do not try to detect a beacon here. */ + rtwn_setbits_1_shift(sc, R92C_CR, 0, R92C_CR_ENSWBCN, 1); + rtwn_setbits_1_shift(sc, R92C_FWHW_TXQ_CTRL, + R92C_FWHW_TXQ_CTRL_REAL_BEACON, 0, 2); - rtwn_bb_write(sc, R92C_HSSI_PARAM2(chain), - RW(reg[chain], R92C_HSSI_PARAM2_READ_ADDR, addr) | - R92C_HSSI_PARAM2_READ_EDGE); - DELAY(1000); + if (uvp->bcn_mbuf != NULL) + m_freem(uvp->bcn_mbuf); - rtwn_bb_write(sc, R92C_HSSI_PARAM2(0), - reg[0] | R92C_HSSI_PARAM2_READ_EDGE); - DELAY(1000); + m->m_pkthdr.len = m->m_len = required_size - sc->txdesc_len; + uvp->bcn_mbuf = m; - if (rtwn_bb_read(sc, R92C_HSSI_PARAM1(chain)) & R92C_HSSI_PARAM1_PI) - val = rtwn_bb_read(sc, R92C_HSPI_READBACK(chain)); - else - val = rtwn_bb_read(sc, R92C_LSSI_READBACK(chain)); - return (MS(val, R92C_LSSI_READBACK_DATA)); -} + error = rtwn_tx_beacon_check(sc, uvp); + if (error != 0) { + RTWN_DPRINTF(sc, RTWN_DEBUG_BEACON, + "%s: frame was not recognized!\n", __func__); + goto fail; + } -static int -rtwn_llt_write(struct rtwn_softc *sc, uint32_t addr, uint32_t data) -{ - int ntries; + /* Setup addresses in firmware. */ + null_data = howmany(bcn_size, sc->page_size); + error = rtwn_set_rsvd_page(sc, 0, null_data, null_data + 1); + if (error != 0) { + device_printf(sc->sc_dev, + "%s: CMD_RSVD_PAGE was not sent, error %d\n", + __func__, error); + goto fail; + } - rtwn_write_4(sc, R92C_LLT_INIT, - SM(R92C_LLT_INIT_OP, R92C_LLT_INIT_OP_WRITE) | - SM(R92C_LLT_INIT_ADDR, addr) | - SM(R92C_LLT_INIT_DATA, data)); - /* Wait for write operation to complete. */ - for (ntries = 0; ntries < 20; ntries++) { - if (MS(rtwn_read_4(sc, R92C_LLT_INIT), R92C_LLT_INIT_OP) == - R92C_LLT_INIT_OP_NO_ACTIVE) - return (0); - DELAY(5); +fail: + /* Re-enable beacon detection. */ + rtwn_setbits_1_shift(sc, R92C_FWHW_TXQ_CTRL, + 0, R92C_FWHW_TXQ_CTRL_REAL_BEACON, 2); + rtwn_setbits_1_shift(sc, R92C_CR, R92C_CR_ENSWBCN, 0, 1); + + /* Restore beacon (if present). */ + if (sc->bcn_vaps > 0 && sc->vaps[!uvp->id] != NULL) { + struct rtwn_vap *uvp2 = sc->vaps[!uvp->id]; + + if (uvp2->curr_mode != R92C_MSR_NOLINK) + error = rtwn_tx_beacon_check(sc, uvp2); } - return (ETIMEDOUT); + + return (error); } -static uint8_t -rtwn_efuse_read_1(struct rtwn_softc *sc, uint16_t addr) +static void +rtwn_pwrmode_init(void *arg) { - uint32_t reg; - int ntries; - - reg = rtwn_read_4(sc, R92C_EFUSE_CTRL); - reg = RW(reg, R92C_EFUSE_CTRL_ADDR, addr); - reg &= ~R92C_EFUSE_CTRL_VALID; - rtwn_write_4(sc, R92C_EFUSE_CTRL, reg); - /* Wait for read operation to complete. */ - for (ntries = 0; ntries < 100; ntries++) { - reg = rtwn_read_4(sc, R92C_EFUSE_CTRL); - if (reg & R92C_EFUSE_CTRL_VALID) - return (MS(reg, R92C_EFUSE_CTRL_DATA)); - DELAY(5); - } - device_printf(sc->sc_dev, - "could not read efuse byte at address 0x%x\n", addr); - return (0xff); + struct rtwn_softc *sc = arg; + + rtwn_cmd_sleepable(sc, NULL, 0, rtwn_set_pwrmode_cb); } static void -rtwn_efuse_read(struct rtwn_softc *sc) +rtwn_set_pwrmode_cb(struct rtwn_softc *sc, union sec_param *data) { - uint8_t *rom = (uint8_t *)&sc->rom; - uint16_t addr = 0; - uint32_t reg; - uint8_t off, msk; - int i; + struct ieee80211vap *vap = &sc->vaps[0]->vap; - reg = rtwn_read_2(sc, R92C_SYS_ISO_CTRL); - if (!(reg & R92C_SYS_ISO_CTRL_PWC_EV12V)) { - rtwn_write_2(sc, R92C_SYS_ISO_CTRL, - reg | R92C_SYS_ISO_CTRL_PWC_EV12V); - } - reg = rtwn_read_2(sc, R92C_SYS_FUNC_EN); - if (!(reg & R92C_SYS_FUNC_EN_ELDR)) { - rtwn_write_2(sc, R92C_SYS_FUNC_EN, - reg | R92C_SYS_FUNC_EN_ELDR); - } - reg = rtwn_read_2(sc, R92C_SYS_CLKR); - if ((reg & (R92C_SYS_CLKR_LOADER_EN | R92C_SYS_CLKR_ANA8M)) != - (R92C_SYS_CLKR_LOADER_EN | R92C_SYS_CLKR_ANA8M)) { - rtwn_write_2(sc, R92C_SYS_CLKR, - reg | R92C_SYS_CLKR_LOADER_EN | R92C_SYS_CLKR_ANA8M); - } - memset(&sc->rom, 0xff, sizeof(sc->rom)); - while (addr < 512) { - reg = rtwn_efuse_read_1(sc, addr); - if (reg == 0xff) - break; - addr++; - off = reg >> 4; - msk = reg & 0xf; - for (i = 0; i < 4; i++) { - if (msk & (1 << i)) - continue; - rom[off * 8 + i * 2 + 0] = - rtwn_efuse_read_1(sc, addr); - addr++; - rom[off * 8 + i * 2 + 1] = - rtwn_efuse_read_1(sc, addr); - addr++; - } - } -#ifdef RTWN_DEBUG - if (sc->sc_debug >= 2) { - /* Dump ROM content. */ - printf("\n"); - for (i = 0; i < sizeof(sc->rom); i++) - printf("%02x:", rom[i]); - printf("\n"); - } -#endif + if (vap != NULL) + rtwn_set_pwrmode(sc, vap, 1); } +#endif -static int -rtwn_read_chipid(struct rtwn_softc *sc) +static void +rtwn_tsf_sync_adhoc(void *arg) { - uint32_t reg; + struct ieee80211vap *vap = arg; + struct ieee80211com *ic = vap->iv_ic; + struct rtwn_vap *uvp = RTWN_VAP(vap); - reg = rtwn_read_4(sc, R92C_SYS_CFG); - if (reg & R92C_SYS_CFG_TRP_VAUX_EN) - /* Unsupported test chip. */ - return (EIO); - - if (reg & R92C_SYS_CFG_TYPE_92C) { - sc->chip |= RTWN_CHIP_92C; - /* Check if it is a castrated 8192C. */ - if (MS(rtwn_read_4(sc, R92C_HPON_FSM), - R92C_HPON_FSM_CHIP_BONDING_ID) == - R92C_HPON_FSM_CHIP_BONDING_ID_92C_1T2R) - sc->chip |= RTWN_CHIP_92C_1T2R; + if (uvp->curr_mode != R92C_MSR_NOLINK) { + /* Do it in process context. */ + ieee80211_runtask(ic, &uvp->tsf_sync_adhoc_task); } - if (reg & R92C_SYS_CFG_VENDOR_UMC) { - sc->chip |= RTWN_CHIP_UMC; - if (MS(reg, R92C_SYS_CFG_CHIP_VER_RTL) == 0) - sc->chip |= RTWN_CHIP_UMC_A_CUT; - } - return (0); } +/* + * Workaround for TSF synchronization: + * when BSSID filter in IBSS mode is not set + * (and TSF synchronization is enabled), then any beacon may update it. + * This routine synchronizes it when BSSID matching is enabled (IBSS merge + * is not possible during this period). + * + * NOTE: there is no race with rtwn_newstate(), since it uses the same + * taskqueue. + */ static void -rtwn_read_rom(struct rtwn_softc *sc) +rtwn_tsf_sync_adhoc_task(void *arg, int pending) { - struct r92c_rom *rom = &sc->rom; + struct ieee80211vap *vap = arg; + struct rtwn_vap *uvp = RTWN_VAP(vap); + struct rtwn_softc *sc = vap->iv_ic->ic_softc; + struct ieee80211_node *ni; - /* Read full ROM image. */ - rtwn_efuse_read(sc); + RTWN_LOCK(sc); + ni = ieee80211_ref_node(vap->iv_bss); - if (rom->id != 0x8129) - device_printf(sc->sc_dev, "invalid EEPROM ID 0x%x\n", rom->id); + /* Accept beacons with the same BSSID. */ + rtwn_set_rx_bssid_all(sc, 0); - /* XXX Weird but this is what the vendor driver does. */ - sc->pa_setting = rtwn_efuse_read_1(sc, 0x1fa); - DPRINTF(("PA setting=0x%x\n", sc->pa_setting)); + /* Enable synchronization. */ + rtwn_setbits_1(sc, R92C_BCN_CTRL(uvp->id), + R92C_BCN_CTRL_DIS_TSF_UDT0, 0); - sc->board_type = MS(rom->rf_opt1, R92C_ROM_RF1_BOARD_TYPE); + /* Synchronize. */ + rtwn_delay(sc, ni->ni_intval * 5 * 1000); - sc->regulatory = MS(rom->rf_opt1, R92C_ROM_RF1_REGULATORY); - DPRINTF(("regulatory type=%d\n", sc->regulatory)); + /* Disable synchronization. */ + rtwn_setbits_1(sc, R92C_BCN_CTRL(uvp->id), + 0, R92C_BCN_CTRL_DIS_TSF_UDT0); - IEEE80211_ADDR_COPY(sc->sc_ic.ic_macaddr, rom->macaddr); -} + /* Accept all beacons. */ + rtwn_set_rx_bssid_all(sc, 1); -static __inline uint8_t -rate2ridx(uint8_t rate) -{ - switch (rate) { - case 12: return 4; - case 18: return 5; - case 24: return 6; - case 36: return 7; - case 48: return 8; - case 72: return 9; - case 96: return 10; - case 108: return 11; - case 2: return 0; - case 4: return 1; - case 11: return 2; - case 22: return 3; - default: return RTWN_RIDX_UNKNOWN; - } + /* Schedule next TSF synchronization. */ + callout_reset(&uvp->tsf_sync_adhoc, 60*hz, rtwn_tsf_sync_adhoc, vap); + + ieee80211_free_node(ni); + RTWN_UNLOCK(sc); } -/* - * Initialize rate adaptation in firmware. - */ -static int -rtwn_ra_init(struct rtwn_softc *sc) +static void +rtwn_tsf_sync_enable(struct rtwn_softc *sc, struct ieee80211vap *vap) { struct ieee80211com *ic = &sc->sc_ic; - struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); - struct ieee80211_node *ni = ieee80211_ref_node(vap->iv_bss); - struct ieee80211_rateset *rs = &ni->ni_rates; - struct r92c_fw_cmd_macid_cfg cmd; - uint32_t rates, basicrates; - uint8_t maxrate, maxbasicrate, mode, ridx; - int error, i; - - /* Get normal and basic rates mask. */ - rates = basicrates = 0; - maxrate = maxbasicrate = 0; - for (i = 0; i < rs->rs_nrates; i++) { - /* Convert 802.11 rate to HW rate index. */ - ridx = rate2ridx(IEEE80211_RV(rs->rs_rates[i])); - if (ridx == RTWN_RIDX_UNKNOWN) /* Unknown rate, skip. */ - continue; - rates |= 1 << ridx; - if (ridx > maxrate) - maxrate = ridx; - if (rs->rs_rates[i] & IEEE80211_RATE_BASIC) { - basicrates |= 1 << ridx; - if (ridx > maxbasicrate) - maxbasicrate = ridx; - } - } - if (ic->ic_curmode == IEEE80211_MODE_11B) - mode = R92C_RAID_11B; - else - mode = R92C_RAID_11BG; - DPRINTF(("mode=0x%x rates=0x%08x, basicrates=0x%08x\n", - mode, rates, basicrates)); - - /* Set rates mask for group addressed frames. */ - cmd.macid = RTWN_MACID_BC | RTWN_MACID_VALID; - cmd.mask = htole32(mode << 28 | basicrates); - error = rtwn_fw_cmd(sc, R92C_CMD_MACID_CONFIG, &cmd, sizeof(cmd)); - if (error != 0) { - device_printf(sc->sc_dev, - "could not add broadcast station\n"); - return (error); - } - /* Set initial MRR rate. */ - DPRINTF(("maxbasicrate=%d\n", maxbasicrate)); - rtwn_write_1(sc, R92C_INIDATA_RATE_SEL(RTWN_MACID_BC), - maxbasicrate); - - /* Set rates mask for unicast frames. */ - cmd.macid = RTWN_MACID_BSS | RTWN_MACID_VALID; - cmd.mask = htole32(mode << 28 | rates); - error = rtwn_fw_cmd(sc, R92C_CMD_MACID_CONFIG, &cmd, sizeof(cmd)); - if (error != 0) { - device_printf(sc->sc_dev, "could not add BSS station\n"); - return (error); - } - /* Set initial MRR rate. */ - DPRINTF(("maxrate=%d\n", maxrate)); - rtwn_write_1(sc, R92C_INIDATA_RATE_SEL(RTWN_MACID_BSS), - maxrate); - - /* Configure Automatic Rate Fallback Register. */ - if (ic->ic_curmode == IEEE80211_MODE_11B) { - if (rates & 0x0c) - rtwn_write_4(sc, R92C_ARFR(0), htole32(rates & 0x0d)); - else - rtwn_write_4(sc, R92C_ARFR(0), htole32(rates & 0x0f)); - } else - rtwn_write_4(sc, R92C_ARFR(0), htole32(rates & 0x0ff5)); + struct rtwn_vap *uvp = RTWN_VAP(vap); - /* Indicate highest supported rate. */ - ni->ni_txrate = rs->rs_rates[rs->rs_nrates - 1]; - return (0); + /* Reset TSF. */ + rtwn_write_1(sc, R92C_DUAL_TSF_RST, R92C_DUAL_TSF_RESET(uvp->id)); + + switch (vap->iv_opmode) { + case IEEE80211_M_STA: + /* Enable TSF synchronization. */ + rtwn_setbits_1(sc, R92C_BCN_CTRL(uvp->id), + R92C_BCN_CTRL_DIS_TSF_UDT0, 0); + break; + case IEEE80211_M_IBSS: + ieee80211_runtask(ic, &uvp->tsf_sync_adhoc_task); + /* FALLTHROUGH */ + case IEEE80211_M_HOSTAP: + /* Enable beaconing. */ + rtwn_beacon_enable(sc, uvp->id, 1); + break; + default: + device_printf(sc->sc_dev, "undefined opmode %d\n", + vap->iv_opmode); + return; + } } static void -rtwn_tsf_sync_enable(struct rtwn_softc *sc) +rtwn_set_ack_preamble(struct rtwn_softc *sc) { struct ieee80211com *ic = &sc->sc_ic; - struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); - struct ieee80211_node *ni = vap->iv_bss; - uint64_t tsf; + uint32_t reg; - /* Enable TSF synchronization. */ - rtwn_write_1(sc, R92C_BCN_CTRL, - rtwn_read_1(sc, R92C_BCN_CTRL) & ~R92C_BCN_CTRL_DIS_TSF_UDT0); - - rtwn_write_1(sc, R92C_BCN_CTRL, - rtwn_read_1(sc, R92C_BCN_CTRL) & ~R92C_BCN_CTRL_EN_BCN); - - /* Set initial TSF. */ - memcpy(&tsf, ni->ni_tstamp.data, 8); - tsf = le64toh(tsf); - tsf = tsf - (tsf % (vap->iv_bss->ni_intval * IEEE80211_DUR_TU)); - tsf -= IEEE80211_DUR_TU; - rtwn_write_4(sc, R92C_TSFTR + 0, tsf); - rtwn_write_4(sc, R92C_TSFTR + 4, tsf >> 32); - - rtwn_write_1(sc, R92C_BCN_CTRL, - rtwn_read_1(sc, R92C_BCN_CTRL) | R92C_BCN_CTRL_EN_BCN); + reg = rtwn_read_4(sc, R92C_WMAC_TRXPTCL_CTL); + if (ic->ic_flags & IEEE80211_F_SHPREAMBLE) + reg |= R92C_WMAC_TRXPTCL_SHPRE; + else + reg &= ~R92C_WMAC_TRXPTCL_SHPRE; + rtwn_write_4(sc, R92C_WMAC_TRXPTCL_CTL, reg); } static void -rtwn_set_led(struct rtwn_softc *sc, int led, int on) +rtwn_set_mode(struct rtwn_softc *sc, uint8_t mode, int id) { - uint8_t reg; - - if (led == RTWN_LED_LINK) { - reg = rtwn_read_1(sc, R92C_LEDCFG2) & 0xf0; - if (!on) - reg |= R92C_LEDCFG2_DIS; - else - reg |= R92C_LEDCFG2_EN; - rtwn_write_1(sc, R92C_LEDCFG2, reg); - sc->ledlink = on; /* Save LED state. */ - } + + rtwn_setbits_1(sc, R92C_MSR, R92C_MSR_MASK << id * 2, mode << id * 2); + if (sc->vaps[id] != NULL) + sc->vaps[id]->curr_mode = mode; } -static void -rtwn_calib_to(void *arg) +static int +rtwn_monitor_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, + int arg) { - struct rtwn_softc *sc = arg; - struct r92c_fw_cmd_rssi cmd; - - if (sc->avg_pwdb != -1) { - /* Indicate Rx signal strength to FW for rate adaptation. */ - memset(&cmd, 0, sizeof(cmd)); - cmd.macid = 0; /* BSS. */ - cmd.pwdb = sc->avg_pwdb; - DPRINTFN(3, ("sending RSSI command avg=%d\n", sc->avg_pwdb)); - rtwn_fw_cmd(sc, R92C_CMD_RSSI_SETTING, &cmd, sizeof(cmd)); - } + struct ieee80211com *ic = vap->iv_ic; + struct rtwn_softc *sc = ic->ic_softc; + struct rtwn_vap *uvp = RTWN_VAP(vap); + + RTWN_DPRINTF(sc, RTWN_DEBUG_STATE, "%s -> %s\n", + ieee80211_state_name[vap->iv_state], + ieee80211_state_name[nstate]); + + if (vap->iv_state != nstate) { + IEEE80211_UNLOCK(ic); + RTWN_LOCK(sc); + + switch (nstate) { + case IEEE80211_S_INIT: + sc->vaps_running--; + sc->monvaps_running--; + + if (sc->vaps_running == 0) { + /* Turn link LED off. */ + rtwn_set_led(sc, RTWN_LED_LINK, 0); + } + break; + case IEEE80211_S_RUN: + sc->vaps_running++; + sc->monvaps_running++; + + if (sc->vaps_running == 1) { + /* Turn link LED on. */ + rtwn_set_led(sc, RTWN_LED_LINK, 1); + } + break; + default: + /* NOTREACHED */ + break; + } - /* Do temperature compensation. */ - rtwn_temp_calib(sc); + RTWN_UNLOCK(sc); + IEEE80211_LOCK(ic); + } - callout_reset(&sc->calib_to, hz * 2, rtwn_calib_to, sc); + return (uvp->newstate(vap, nstate, arg)); } static int rtwn_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg) { - struct rtwn_vap *rvp = RTWN_VAP(vap); + struct rtwn_vap *uvp = RTWN_VAP(vap); struct ieee80211com *ic = vap->iv_ic; - struct ieee80211_node *ni = vap->iv_bss; struct rtwn_softc *sc = ic->ic_softc; - uint32_t reg; + enum ieee80211_state ostate; + int error, early_newstate; + + ostate = vap->iv_state; + RTWN_DPRINTF(sc, RTWN_DEBUG_STATE, "%s -> %s\n", + ieee80211_state_name[ostate], ieee80211_state_name[nstate]); + + if (vap->iv_bss->ni_chan == IEEE80211_CHAN_ANYC && + ostate == IEEE80211_S_INIT && nstate == IEEE80211_S_RUN) { + /* need to call iv_newstate() firstly */ + error = uvp->newstate(vap, nstate, arg); + if (error != 0) + return (error); + + early_newstate = 1; + } else + early_newstate = 0; IEEE80211_UNLOCK(ic); RTWN_LOCK(sc); - - if (vap->iv_state == IEEE80211_S_RUN) { - /* Stop calibration. */ - callout_stop(&sc->calib_to); - - /* Turn link LED off. */ - rtwn_set_led(sc, RTWN_LED_LINK, 0); + if (ostate == IEEE80211_S_RUN) { + sc->vaps_running--; /* Set media status to 'No Link'. */ - reg = rtwn_read_4(sc, R92C_CR); - reg = RW(reg, R92C_CR_NETTYPE, R92C_CR_NETTYPE_NOLINK); - rtwn_write_4(sc, R92C_CR, reg); - - /* Stop Rx of data frames. */ - rtwn_write_2(sc, R92C_RXFLTMAP2, 0); - - /* Rest TSF. */ - rtwn_write_1(sc, R92C_DUAL_TSF_RST, 0x03); - - /* Disable TSF synchronization. */ - rtwn_write_1(sc, R92C_BCN_CTRL, - rtwn_read_1(sc, R92C_BCN_CTRL) | - R92C_BCN_CTRL_DIS_TSF_UDT0); - - /* Reset EDCA parameters. */ - rtwn_write_4(sc, R92C_EDCA_VO_PARAM, 0x002f3217); - rtwn_write_4(sc, R92C_EDCA_VI_PARAM, 0x005e4317); - rtwn_write_4(sc, R92C_EDCA_BE_PARAM, 0x00105320); - rtwn_write_4(sc, R92C_EDCA_BK_PARAM, 0x0000a444); - } - switch (nstate) { - case IEEE80211_S_INIT: - /* Turn link LED off. */ - rtwn_set_led(sc, RTWN_LED_LINK, 0); - break; - case IEEE80211_S_SCAN: - /* Make link LED blink during scan. */ - rtwn_set_led(sc, RTWN_LED_LINK, !sc->ledlink); - - /* Pause AC Tx queues. */ - rtwn_write_1(sc, R92C_TXPAUSE, - rtwn_read_1(sc, R92C_TXPAUSE) | 0x0f); - break; - case IEEE80211_S_AUTH: - rtwn_set_chan(sc, ic->ic_curchan, NULL); - break; - case IEEE80211_S_RUN: - if (ic->ic_opmode == IEEE80211_M_MONITOR) { - /* Enable Rx of data frames. */ - rtwn_write_2(sc, R92C_RXFLTMAP2, 0xffff); + rtwn_set_mode(sc, R92C_MSR_NOLINK, uvp->id); - /* Turn link LED on. */ - rtwn_set_led(sc, RTWN_LED_LINK, 1); - break; + if (vap->iv_opmode == IEEE80211_M_IBSS) { + /* Stop periodical TSF synchronization. */ + callout_stop(&uvp->tsf_sync_adhoc); } - /* Set media status to 'Associated'. */ - reg = rtwn_read_4(sc, R92C_CR); - reg = RW(reg, R92C_CR_NETTYPE, R92C_CR_NETTYPE_INFRA); - rtwn_write_4(sc, R92C_CR, reg); - - /* Set BSSID. */ - rtwn_write_4(sc, R92C_BSSID + 0, le32dec(&ni->ni_bssid[0])); - rtwn_write_4(sc, R92C_BSSID + 4, le16dec(&ni->ni_bssid[4])); - - if (ic->ic_curmode == IEEE80211_MODE_11B) - rtwn_write_1(sc, R92C_INIRTS_RATE_SEL, 0); - else /* 802.11b/g */ - rtwn_write_1(sc, R92C_INIRTS_RATE_SEL, 3); + /* Disable TSF synchronization / beaconing. */ + rtwn_beacon_enable(sc, uvp->id, 0); + rtwn_setbits_1(sc, R92C_BCN_CTRL(uvp->id), + 0, R92C_BCN_CTRL_DIS_TSF_UDT0); - /* Enable Rx of data frames. */ - rtwn_write_2(sc, R92C_RXFLTMAP2, 0xffff); + /* NB: monitor mode vaps are using port 0. */ + if (uvp->id != 0 || sc->monvaps_running == 0) { + /* Reset TSF. */ + rtwn_write_1(sc, R92C_DUAL_TSF_RST, + R92C_DUAL_TSF_RESET(uvp->id)); + } - /* Flush all AC queues. */ - rtwn_write_1(sc, R92C_TXPAUSE, 0); +#ifndef RTWN_WITHOUT_UCODE + if ((ic->ic_caps & IEEE80211_C_PMGT) != 0 && uvp->id == 0) { + /* Disable power management. */ + callout_stop(&sc->sc_pwrmode_init); + rtwn_set_pwrmode(sc, vap, 0); + } +#endif + if (sc->vaps_running - sc->monvaps_running > 0) { + /* Recalculate basic rates bitmap. */ + rtwn_calc_basicrates(sc); + } - /* Set beacon interval. */ - rtwn_write_2(sc, R92C_BCN_INTERVAL, ni->ni_intval); + if (sc->vaps_running == sc->monvaps_running) { + /* Stop calibration. */ + callout_stop(&sc->sc_calib_to); - /* Allow Rx from our BSSID only. */ - rtwn_write_4(sc, R92C_RCR, - rtwn_read_4(sc, R92C_RCR) | - R92C_RCR_CBSSID_DATA | R92C_RCR_CBSSID_BCN); + /* Stop Rx of data frames. */ + rtwn_write_2(sc, R92C_RXFLTMAP2, 0); - /* Enable TSF synchronization. */ - rtwn_tsf_sync_enable(sc); + /* Reset EDCA parameters. */ + rtwn_write_4(sc, R92C_EDCA_VO_PARAM, 0x002f3217); + rtwn_write_4(sc, R92C_EDCA_VI_PARAM, 0x005e4317); + rtwn_write_4(sc, R92C_EDCA_BE_PARAM, 0x00105320); + rtwn_write_4(sc, R92C_EDCA_BK_PARAM, 0x0000a444); - rtwn_write_1(sc, R92C_SIFS_CCK + 1, 10); - rtwn_write_1(sc, R92C_SIFS_OFDM + 1, 10); - rtwn_write_1(sc, R92C_SPEC_SIFS + 1, 10); - rtwn_write_1(sc, R92C_MAC_SPEC_SIFS + 1, 10); - rtwn_write_1(sc, R92C_R2T_SIFS + 1, 10); - rtwn_write_1(sc, R92C_T2T_SIFS + 1, 10); + if (sc->vaps_running == 0) { + /* Turn link LED off. */ + rtwn_set_led(sc, RTWN_LED_LINK, 0); + } + } + } - /* Intialize rate adaptation. */ - rtwn_ra_init(sc); - /* Turn link LED on. */ - rtwn_set_led(sc, RTWN_LED_LINK, 1); + error = 0; + switch (nstate) { + case IEEE80211_S_SCAN: + /* Pause AC Tx queues. */ + if (sc->vaps_running == 0) + rtwn_setbits_1(sc, R92C_TXPAUSE, 0, R92C_TX_QUEUE_AC); + break; + case IEEE80211_S_RUN: + error = rtwn_run(sc, vap); + if (error != 0) { + device_printf(sc->sc_dev, + "%s: could not move to RUN state\n", __func__); + break; + } - sc->avg_pwdb = -1; /* Reset average RSSI. */ - /* Reset temperature calibration state machine. */ - sc->thcal_state = 0; - sc->thcal_lctemp = 0; - /* Start periodic calibration. */ - callout_reset(&sc->calib_to, hz * 2, rtwn_calib_to, sc); + sc->vaps_running++; break; default: break; } - RTWN_UNLOCK(sc); - IEEE80211_LOCK(ic); - return (rvp->newstate(vap, nstate, arg)); -} - -static int -rtwn_updateedca(struct ieee80211com *ic) -{ - struct rtwn_softc *sc = ic->ic_softc; - const uint16_t aci2reg[WME_NUM_AC] = { - R92C_EDCA_BE_PARAM, - R92C_EDCA_BK_PARAM, - R92C_EDCA_VI_PARAM, - R92C_EDCA_VO_PARAM - }; - int aci, aifs, slottime; + RTWN_UNLOCK(sc); IEEE80211_LOCK(ic); - slottime = (ic->ic_flags & IEEE80211_F_SHSLOT) ? 9 : 20; - for (aci = 0; aci < WME_NUM_AC; aci++) { - const struct wmeParams *ac = - &ic->ic_wme.wme_chanParams.cap_wmeParams[aci]; - /* AIFS[AC] = AIFSN[AC] * aSlotTime + aSIFSTime. */ - aifs = ac->wmep_aifsn * slottime + 10; - rtwn_write_4(sc, aci2reg[aci], - SM(R92C_EDCA_PARAM_TXOP, ac->wmep_txopLimit) | - SM(R92C_EDCA_PARAM_ECWMIN, ac->wmep_logcwmin) | - SM(R92C_EDCA_PARAM_ECWMAX, ac->wmep_logcwmax) | - SM(R92C_EDCA_PARAM_AIFS, aifs)); - } - IEEE80211_UNLOCK(ic); - return (0); -} - -static void -rtwn_update_avgrssi(struct rtwn_softc *sc, int rate, int8_t rssi) -{ - int pwdb; - - /* Convert antenna signal to percentage. */ - if (rssi <= -100 || rssi >= 20) - pwdb = 0; - else if (rssi >= 0) - pwdb = 100; - else - pwdb = 100 + rssi; - if (RTWN_RATE_IS_CCK(rate)) { - /* CCK gain is smaller than OFDM/MCS gain. */ - pwdb += 6; - if (pwdb > 100) - pwdb = 100; - if (pwdb <= 14) - pwdb -= 4; - else if (pwdb <= 26) - pwdb -= 8; - else if (pwdb <= 34) - pwdb -= 6; - else if (pwdb <= 42) - pwdb -= 2; - } - if (sc->avg_pwdb == -1) /* Init. */ - sc->avg_pwdb = pwdb; - else if (sc->avg_pwdb < pwdb) - sc->avg_pwdb = ((sc->avg_pwdb * 19 + pwdb) / 20) + 1; - else - sc->avg_pwdb = ((sc->avg_pwdb * 19 + pwdb) / 20); - DPRINTFN(4, ("PWDB=%d EMA=%d\n", pwdb, sc->avg_pwdb)); -} + if (error != 0) + return (error); -static int8_t -rtwn_get_rssi(struct rtwn_softc *sc, int rate, void *physt) -{ - static const int8_t cckoff[] = { 16, -12, -26, -46 }; - struct r92c_rx_phystat *phy; - struct r92c_rx_cck *cck; - uint8_t rpt; - int8_t rssi; - - if (RTWN_RATE_IS_CCK(rate)) { - cck = (struct r92c_rx_cck *)physt; - if (sc->sc_flags & RTWN_FLAG_CCK_HIPWR) { - rpt = (cck->agc_rpt >> 5) & 0x3; - rssi = (cck->agc_rpt & 0x1f) << 1; - } else { - rpt = (cck->agc_rpt >> 6) & 0x3; - rssi = cck->agc_rpt & 0x3e; - } - rssi = cckoff[rpt] - rssi; - } else { /* OFDM/HT. */ - phy = (struct r92c_rx_phystat *)physt; - rssi = ((le32toh(phy->phydw1) >> 1) & 0x7f) - 110; - } - return (rssi); + return (early_newstate ? 0 : uvp->newstate(vap, nstate, arg)); } static void -rtwn_rx_frame(struct rtwn_softc *sc, struct r92c_rx_desc *rx_desc, - struct rtwn_rx_data *rx_data, int desc_idx) +rtwn_calc_basicrates(struct rtwn_softc *sc) { struct ieee80211com *ic = &sc->sc_ic; - struct ieee80211_frame_min *wh; - struct ieee80211_node *ni; - struct r92c_rx_phystat *phy = NULL; - uint32_t rxdw0, rxdw3; - struct mbuf *m, *m1; - bus_dma_segment_t segs[1]; - bus_addr_t physaddr; - uint8_t rate; - int8_t rssi = 0, nf; - int infosz, nsegs, pktlen, shift, error; - - rxdw0 = le32toh(rx_desc->rxdw0); - rxdw3 = le32toh(rx_desc->rxdw3); - - if (__predict_false(rxdw0 & (R92C_RXDW0_CRCERR | R92C_RXDW0_ICVERR))) { - /* - * This should not happen since we setup our Rx filter - * to not receive these frames. - */ - counter_u64_add(ic->ic_ierrors, 1); - return; - } + uint32_t basicrates; + int i; - pktlen = MS(rxdw0, R92C_RXDW0_PKTLEN); - if (__predict_false(pktlen < sizeof(struct ieee80211_frame_ack) || - pktlen > MCLBYTES)) { - counter_u64_add(ic->ic_ierrors, 1); - return; - } + RTWN_ASSERT_LOCKED(sc); - rate = MS(rxdw3, R92C_RXDW3_RATE); - infosz = MS(rxdw0, R92C_RXDW0_INFOSZ) * 8; - if (infosz > sizeof(struct r92c_rx_phystat)) - infosz = sizeof(struct r92c_rx_phystat); - shift = MS(rxdw0, R92C_RXDW0_SHIFT); - - /* Get RSSI from PHY status descriptor if present. */ - if (infosz != 0 && (rxdw0 & R92C_RXDW0_PHYST)) { - phy = mtod(rx_data->m, struct r92c_rx_phystat *); - rssi = rtwn_get_rssi(sc, rate, phy); - /* Update our average RSSI. */ - rtwn_update_avgrssi(sc, rate, rssi); - } + if (ic->ic_flags & IEEE80211_F_SCAN) + return; /* will be done by rtwn_scan_end(). */ - DPRINTFN(5, ("Rx frame len=%d rate=%d infosz=%d shift=%d rssi=%d\n", - pktlen, rate, infosz, shift, rssi)); + basicrates = 0; + for (i = 0; i < nitems(sc->vaps); i++) { + struct rtwn_vap *rvp; + struct ieee80211vap *vap; + struct ieee80211_node *ni; + uint32_t rates; - m1 = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); - if (m1 == NULL) { - counter_u64_add(ic->ic_ierrors, 1); - return; - } - bus_dmamap_unload(sc->rx_ring.data_dmat, rx_data->map); + rvp = sc->vaps[i]; + if (rvp == NULL || rvp->curr_mode == R92C_MSR_NOLINK) + continue; - error = bus_dmamap_load(sc->rx_ring.data_dmat, rx_data->map, - mtod(m1, void *), MCLBYTES, rtwn_dma_map_addr, - &physaddr, 0); - if (error != 0) { - m_freem(m1); + vap = &rvp->vap; + if (vap->iv_bss == NULL) + continue; - if (bus_dmamap_load_mbuf_sg(sc->rx_ring.data_dmat, - rx_data->map, rx_data->m, segs, &nsegs, 0)) - panic("%s: could not load old RX mbuf", - device_get_name(sc->sc_dev)); + ni = ieee80211_ref_node(vap->iv_bss); + rtwn_get_rates(sc, &ni->ni_rates, NULL, &rates, NULL, 1); + basicrates |= rates; + ieee80211_free_node(ni); + } - /* Physical address may have changed. */ - rtwn_setup_rx_desc(sc, rx_desc, physaddr, MCLBYTES, desc_idx); - counter_u64_add(ic->ic_ierrors, 1); + if (basicrates == 0) return; - } - /* Finalize mbuf. */ - m = rx_data->m; - rx_data->m = m1; - m->m_pkthdr.len = m->m_len = pktlen + infosz + shift; - - /* Update RX descriptor. */ - rtwn_setup_rx_desc(sc, rx_desc, physaddr, MCLBYTES, desc_idx); - - /* Get ieee80211 frame header. */ - if (rxdw0 & R92C_RXDW0_PHYST) - m_adj(m, infosz + shift); - else - m_adj(m, shift); - - nf = -95; - if (ieee80211_radiotap_active(ic)) { - struct rtwn_rx_radiotap_header *tap = &sc->sc_rxtap; - - tap->wr_flags = 0; - if (!(rxdw3 & R92C_RXDW3_HT)) { - tap->wr_rate = ridx2rate[rate]; - } else if (rate >= 12) { /* MCS0~15. */ - /* Bit 7 set means HT MCS instead of rate. */ - tap->wr_rate = 0x80 | (rate - 12); - } - tap->wr_dbm_antsignal = rssi; - tap->wr_chan_freq = htole16(ic->ic_curchan->ic_freq); - tap->wr_chan_flags = htole16(ic->ic_curchan->ic_flags); - } - - RTWN_UNLOCK(sc); - wh = mtod(m, struct ieee80211_frame_min *); - if (m->m_len >= sizeof(*wh)) - ni = ieee80211_find_rxnode(ic, wh); - else - ni = NULL; - - /* Send the frame to the 802.11 layer. */ - if (ni != NULL) { - (void)ieee80211_input(ni, m, rssi - nf, nf); - /* Node is no longer needed. */ - ieee80211_free_node(ni); - } else - (void)ieee80211_input_all(ic, m, rssi - nf, nf); - - RTWN_LOCK(sc); -} + /* XXX initial RTS rate? */ + rtwn_set_basicrates(sc, basicrates); +} static int -rtwn_tx(struct rtwn_softc *sc, struct mbuf *m, struct ieee80211_node *ni) +rtwn_run(struct rtwn_softc *sc, struct ieee80211vap *vap) { - struct ieee80211com *ic = &sc->sc_ic; - struct ieee80211vap *vap = ni->ni_vap; - struct ieee80211_frame *wh; - struct ieee80211_key *k = NULL; - struct rtwn_tx_ring *tx_ring; - struct rtwn_tx_data *data; - struct r92c_tx_desc *txd; - bus_dma_segment_t segs[1]; - uint16_t qos; - uint8_t raid, type, tid, qid; - int nsegs, error; - - wh = mtod(m, struct ieee80211_frame *); - type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK; - - /* Encrypt the frame if need be. */ - if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { - k = ieee80211_crypto_encap(ni, m); - if (k == NULL) { - m_freem(m); - return (ENOBUFS); - } - /* 802.11 header may have moved. */ - wh = mtod(m, struct ieee80211_frame *); - } + struct ieee80211com *ic = vap->iv_ic; + struct rtwn_vap *uvp = RTWN_VAP(vap); + struct ieee80211_node *ni; + uint32_t reg; + uint8_t mode; + int error; - if (IEEE80211_QOS_HAS_SEQ(wh)) { - qos = ((const struct ieee80211_qosframe *)wh)->i_qos[0]; - tid = qos & IEEE80211_QOS_TID; - } else { - qos = 0; - tid = 0; + RTWN_ASSERT_LOCKED(sc); + + error = 0; + ni = ieee80211_ref_node(vap->iv_bss); + + if (ic->ic_bsschan == IEEE80211_CHAN_ANYC || + ni->ni_chan == IEEE80211_CHAN_ANYC) { + error = EINVAL; + goto fail; } - switch (type) { - case IEEE80211_FC0_TYPE_CTL: - case IEEE80211_FC0_TYPE_MGT: - qid = RTWN_VO_QUEUE; + switch (vap->iv_opmode) { + case IEEE80211_M_STA: + mode = R92C_MSR_INFRA; break; - default: - qid = M_WME_GETAC(m); + case IEEE80211_M_IBSS: + mode = R92C_MSR_ADHOC; break; + case IEEE80211_M_HOSTAP: + mode = R92C_MSR_AP; + break; + default: + KASSERT(0, ("undefined opmode %d\n", vap->iv_opmode)); + error = EINVAL; + goto fail; } - /* Grab a Tx buffer from the ring. */ - tx_ring = &sc->tx_ring[qid]; - data = &tx_ring->tx_data[tx_ring->cur]; - if (data->m != NULL) { - m_freem(m); - return (ENOBUFS); - } - - /* Fill Tx descriptor. */ - txd = &tx_ring->desc[tx_ring->cur]; - if (htole32(txd->txdw0) & R92C_RXDW0_OWN) { - m_freem(m); - return (ENOBUFS); - } - txd->txdw0 = htole32( - SM(R92C_TXDW0_PKTLEN, m->m_pkthdr.len) | - SM(R92C_TXDW0_OFFSET, sizeof(*txd)) | - R92C_TXDW0_FSG | R92C_TXDW0_LSG); - if (IEEE80211_IS_MULTICAST(wh->i_addr1)) - txd->txdw0 |= htole32(R92C_TXDW0_BMCAST); - - txd->txdw1 = 0; - txd->txdw4 = 0; - txd->txdw5 = 0; - - /* XXX TODO: rate control; implement low-rate for EAPOL */ - if (!IEEE80211_IS_MULTICAST(wh->i_addr1) && - type == IEEE80211_FC0_TYPE_DATA) { - if (ic->ic_curmode == IEEE80211_MODE_11B) - raid = R92C_RAID_11B; - else - raid = R92C_RAID_11BG; - txd->txdw1 |= htole32( - SM(R92C_TXDW1_MACID, RTWN_MACID_BSS) | - SM(R92C_TXDW1_QSEL, R92C_TXDW1_QSEL_BE) | - SM(R92C_TXDW1_RAID, raid) | - R92C_TXDW1_AGGBK); - - if (ic->ic_flags & IEEE80211_F_USEPROT) { - if (ic->ic_protmode == IEEE80211_PROT_CTSONLY) { - txd->txdw4 |= htole32(R92C_TXDW4_CTS2SELF | - R92C_TXDW4_HWRTSEN); - } else if (ic->ic_protmode == IEEE80211_PROT_RTSCTS) { - txd->txdw4 |= htole32(R92C_TXDW4_RTSEN | - R92C_TXDW4_HWRTSEN); - } - } + /* Set media status to 'Associated'. */ + rtwn_set_mode(sc, mode, uvp->id); - /* XXX TODO: implement rate control */ + /* Set AssocID. */ + /* XXX multi-vap? */ + rtwn_write_2(sc, R92C_BCN_PSR_RPT, + 0xc000 | IEEE80211_NODE_AID(ni)); - /* Send RTS at OFDM24. */ - txd->txdw4 |= htole32(SM(R92C_TXDW4_RTSRATE, - RTWN_RIDX_OFDM24)); - txd->txdw5 |= htole32(SM(R92C_TXDW5_RTSRATE_FBLIMIT, 0xf)); - /* Send data at OFDM54. */ - txd->txdw5 |= htole32(SM(R92C_TXDW5_DATARATE, - RTWN_RIDX_OFDM54)); - txd->txdw5 |= htole32(SM(R92C_TXDW5_DATARATE_FBLIMIT, 0x1f)); + /* Set BSSID. */ + rtwn_set_bssid(sc, ni->ni_bssid, uvp->id); - } else { - txd->txdw1 |= htole32( - SM(R92C_TXDW1_MACID, 0) | - SM(R92C_TXDW1_QSEL, R92C_TXDW1_QSEL_MGNT) | - SM(R92C_TXDW1_RAID, R92C_RAID_11B)); - - /* Force CCK1. */ - txd->txdw4 |= htole32(R92C_TXDW4_DRVRATE); - txd->txdw5 |= htole32(SM(R92C_TXDW5_DATARATE, RTWN_RIDX_CCK1)); - } - /* Set sequence number (already little endian). */ - txd->txdseq = htole16(M_SEQNO_GET(m) % IEEE80211_SEQ_RANGE); - - if (!qos) { - /* Use HW sequence numbering for non-QoS frames. */ - txd->txdw4 |= htole32(R92C_TXDW4_HWSEQ); - txd->txdseq |= htole16(0x8000); - } else - txd->txdw4 |= htole32(R92C_TXDW4_QOS); + /* Set beacon interval. */ + rtwn_write_2(sc, R92C_BCN_INTERVAL(uvp->id), ni->ni_intval); - error = bus_dmamap_load_mbuf_sg(tx_ring->data_dmat, data->map, m, segs, - &nsegs, BUS_DMA_NOWAIT); - if (error != 0 && error != EFBIG) { - device_printf(sc->sc_dev, "can't map mbuf (error %d)\n", error); - m_freem(m); - return (error); - } - if (error != 0) { - struct mbuf *mnew; - - mnew = m_defrag(m, M_NOWAIT); - if (mnew == NULL) { - device_printf(sc->sc_dev, - "can't defragment mbuf\n"); - m_freem(m); - return (ENOBUFS); - } - m = mnew; + if (sc->vaps_running == sc->monvaps_running) { + /* Enable Rx of data frames. */ + rtwn_write_2(sc, R92C_RXFLTMAP2, 0xffff); - error = bus_dmamap_load_mbuf_sg(tx_ring->data_dmat, data->map, - m, segs, &nsegs, BUS_DMA_NOWAIT); - if (error != 0) { - device_printf(sc->sc_dev, - "can't map mbuf (error %d)\n", error); - m_freem(m); - return (error); - } + /* Flush all AC queues. */ + rtwn_write_1(sc, R92C_TXPAUSE, 0); } - txd->txbufaddr = htole32(segs[0].ds_addr); - txd->txbufsize = htole16(m->m_pkthdr.len); - bus_space_barrier(sc->sc_st, sc->sc_sh, 0, sc->sc_mapsize, - BUS_SPACE_BARRIER_WRITE); - txd->txdw0 |= htole32(R92C_TXDW0_OWN); - - bus_dmamap_sync(tx_ring->desc_dmat, tx_ring->desc_map, - BUS_DMASYNC_POSTWRITE); - bus_dmamap_sync(tx_ring->data_dmat, data->map, BUS_DMASYNC_POSTWRITE); - - data->m = m; - data->ni = ni; + /* Allow Rx from our BSSID only. */ + if (ic->ic_promisc == 0) { + reg = rtwn_read_4(sc, R92C_RCR); - if (ieee80211_radiotap_active_vap(vap)) { - struct rtwn_tx_radiotap_header *tap = &sc->sc_txtap; + if (sc->bcn_vaps == 0) + reg |= R92C_RCR_CBSSID_BCN; + if (sc->ap_vaps == 0) + reg |= R92C_RCR_CBSSID_DATA; - tap->wt_flags = 0; - tap->wt_chan_freq = htole16(ic->ic_curchan->ic_freq); - tap->wt_chan_flags = htole16(ic->ic_curchan->ic_flags); - - ieee80211_radiotap_tx(vap, m); + rtwn_write_4(sc, R92C_RCR, reg); } - tx_ring->cur = (tx_ring->cur + 1) % RTWN_TX_LIST_COUNT; - tx_ring->queued++; - - if (tx_ring->queued >= (RTWN_TX_LIST_COUNT - 1)) - sc->qfullmsk |= (1 << qid); - - /* Kick TX. */ - rtwn_write_2(sc, R92C_PCIE_CTRL_REG, (1 << qid)); - return (0); -} - -static void -rtwn_tx_done(struct rtwn_softc *sc, int qid) -{ - struct rtwn_tx_ring *tx_ring = &sc->tx_ring[qid]; - struct rtwn_tx_data *tx_data; - struct r92c_tx_desc *tx_desc; - int i; - - bus_dmamap_sync(tx_ring->desc_dmat, tx_ring->desc_map, - BUS_DMASYNC_POSTREAD); - - for (i = 0; i < RTWN_TX_LIST_COUNT; i++) { - tx_data = &tx_ring->tx_data[i]; - if (tx_data->m == NULL) - continue; - - tx_desc = &tx_ring->desc[i]; - if (le32toh(tx_desc->txdw0) & R92C_TXDW0_OWN) - continue; - - /* Unmap and free mbuf. */ - bus_dmamap_sync(tx_ring->data_dmat, tx_data->map, - BUS_DMASYNC_POSTWRITE); - bus_dmamap_unload(tx_ring->data_dmat, tx_data->map); +#ifndef RTWN_WITHOUT_UCODE + /* Upload (QoS) Null Data frame to firmware. */ + /* Note: do this for port 0 only. */ + if ((ic->ic_caps & IEEE80211_C_PMGT) != 0 && + vap->iv_opmode == IEEE80211_M_STA && uvp->id == 0) { + error = rtwn_tx_fwpkt_check(sc, vap); + if (error != 0) + goto fail; + /* Setup power management. */ /* - * XXX TODO: figure out whether the transmit succeeded or not. - * .. and then notify rate control. + * NB: it will be enabled immediately - delay it, + * so 4-Way handshake will not be interrupted. */ - ieee80211_tx_complete(tx_data->ni, tx_data->m, 0); - tx_data->ni = NULL; - tx_data->m = NULL; - - if (--tx_ring->queued) - sc->sc_tx_timer = 5; - else - sc->sc_tx_timer = 0; - } - - if (tx_ring->queued < (RTWN_TX_LIST_COUNT - 1)) - sc->qfullmsk &= ~(1 << qid); - rtwn_start(sc); -} - -static int -rtwn_raw_xmit(struct ieee80211_node *ni, struct mbuf *m, - const struct ieee80211_bpf_params *params) -{ - struct ieee80211com *ic = ni->ni_ic; - struct rtwn_softc *sc = ic->ic_softc; - - RTWN_LOCK(sc); - - /* Prevent management frames from being sent if we're not ready. */ - if (!(sc->sc_flags & RTWN_RUNNING)) { - RTWN_UNLOCK(sc); - m_freem(m); - return (ENETDOWN); + callout_reset(&sc->sc_pwrmode_init, 5*hz, + rtwn_pwrmode_init, sc); } +#endif - if (rtwn_tx(sc, m, ni) != 0) { - RTWN_UNLOCK(sc); - return (EIO); - } - sc->sc_tx_timer = 5; - RTWN_UNLOCK(sc); - return (0); -} - -static int -rtwn_transmit(struct ieee80211com *ic, struct mbuf *m) -{ - struct rtwn_softc *sc = ic->ic_softc; - int error; - - RTWN_LOCK(sc); - if ((sc->sc_flags & RTWN_RUNNING) == 0) { - RTWN_UNLOCK(sc); - return (ENXIO); - } - error = mbufq_enqueue(&sc->sc_snd, m); - if (error) { - RTWN_UNLOCK(sc); - return (error); + if (vap->iv_opmode == IEEE80211_M_HOSTAP || + vap->iv_opmode == IEEE80211_M_IBSS) { + error = rtwn_setup_beacon(sc, ni); + if (error != 0) { + device_printf(sc->sc_dev, + "unable to push beacon into the chip, " + "error %d\n", error); + goto fail; + } } - rtwn_start(sc); - RTWN_UNLOCK(sc); - return (0); -} -static void -rtwn_parent(struct ieee80211com *ic) -{ - struct rtwn_softc *sc = ic->ic_softc; - struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); + /* Set ACK preamble type. */ + rtwn_set_ack_preamble(sc); - if (ic->ic_nrunning > 0) { - if (rtwn_init(sc) == 0) - ieee80211_start_all(ic); - else - ieee80211_stop(vap); - } else - rtwn_stop(sc); -} - -static void -rtwn_start(struct rtwn_softc *sc) -{ - struct ieee80211_node *ni; - struct mbuf *m; + /* Enable TSF synchronization. */ + rtwn_tsf_sync_enable(sc, vap); + + /* Set basic rates mask. */ + rtwn_calc_basicrates(sc); + +#ifdef RTWN_TODO + rtwn_write_1(sc, R92C_SIFS_CCK + 1, 10); + rtwn_write_1(sc, R92C_SIFS_OFDM + 1, 10); + rtwn_write_1(sc, R92C_SPEC_SIFS + 1, 10); + rtwn_write_1(sc, R92C_MAC_SPEC_SIFS + 1, 10); + rtwn_write_1(sc, R92C_R2T_SIFS + 1, 10); + rtwn_write_1(sc, R92C_T2T_SIFS + 1, 10); +#endif - RTWN_LOCK_ASSERT(sc); + if (sc->vaps_running == sc->monvaps_running) { + /* Reset temperature calibration state machine. */ + sc->sc_flags &= ~RTWN_TEMP_MEASURED; + sc->thcal_temp = sc->thermal_meter; - if ((sc->sc_flags & RTWN_RUNNING) == 0) - return; + /* Start periodic calibration. */ + callout_reset(&sc->sc_calib_to, 2*hz, rtwn_calib_to, + sc); - while (sc->qfullmsk == 0 && (m = mbufq_dequeue(&sc->sc_snd)) != NULL) { - ni = (struct ieee80211_node *)m->m_pkthdr.rcvif; - if (rtwn_tx(sc, m, ni) != 0) { - if_inc_counter(ni->ni_vap->iv_ifp, - IFCOUNTER_OERRORS, 1); - ieee80211_free_node(ni); - continue; + if (sc->vaps_running == 0) { + /* Turn link LED on. */ + rtwn_set_led(sc, RTWN_LED_LINK, 1); } - sc->sc_tx_timer = 5; } + +fail: + ieee80211_free_node(ni); + + return (error); } +#ifndef D4054 static void rtwn_watchdog(void *arg) { struct rtwn_softc *sc = arg; struct ieee80211com *ic = &sc->sc_ic; - RTWN_LOCK_ASSERT(sc); + RTWN_ASSERT_LOCKED(sc); KASSERT(sc->sc_flags & RTWN_RUNNING, ("not running")); if (sc->sc_tx_timer != 0 && --sc->sc_tx_timer == 0) { ic_printf(ic, "device timeout\n"); ieee80211_restart_all(ic); return; } - callout_reset(&sc->watchdog_to, hz, rtwn_watchdog, sc); + callout_reset(&sc->sc_watchdog_to, hz, rtwn_watchdog, sc); } +#endif -static int -rtwn_power_on(struct rtwn_softc *sc) +static void +rtwn_parent(struct ieee80211com *ic) { - uint32_t reg; - int ntries; - - /* Wait for autoload done bit. */ - for (ntries = 0; ntries < 1000; ntries++) { - if (rtwn_read_1(sc, R92C_APS_FSMCO) & R92C_APS_FSMCO_PFM_ALDN) - break; - DELAY(5); - } - if (ntries == 1000) { - device_printf(sc->sc_dev, - "timeout waiting for chip autoload\n"); - return (ETIMEDOUT); - } - - /* Unlock ISO/CLK/Power control register. */ - rtwn_write_1(sc, R92C_RSV_CTRL, 0); - - /* TODO: check if we need this for 8188CE */ - if (sc->board_type != R92C_BOARD_TYPE_DONGLE) { - /* bt coex */ - reg = rtwn_read_4(sc, R92C_APS_FSMCO); - reg |= (R92C_APS_FSMCO_SOP_ABG | - R92C_APS_FSMCO_SOP_AMB | - R92C_APS_FSMCO_XOP_BTCK); - rtwn_write_4(sc, R92C_APS_FSMCO, reg); - } - - /* Move SPS into PWM mode. */ - rtwn_write_1(sc, R92C_SPS0_CTRL, 0x2b); - - /* Set low byte to 0x0f, leave others unchanged. */ - rtwn_write_4(sc, R92C_AFE_XTAL_CTRL, - (rtwn_read_4(sc, R92C_AFE_XTAL_CTRL) & 0xffffff00) | 0x0f); - - /* TODO: check if we need this for 8188CE */ - if (sc->board_type != R92C_BOARD_TYPE_DONGLE) { - /* bt coex */ - reg = rtwn_read_4(sc, R92C_AFE_XTAL_CTRL); - reg &= (~0x00024800); /* XXX magic from linux */ - rtwn_write_4(sc, R92C_AFE_XTAL_CTRL, reg); - } - - rtwn_write_2(sc, R92C_SYS_ISO_CTRL, - (rtwn_read_2(sc, R92C_SYS_ISO_CTRL) & 0xff) | - R92C_SYS_ISO_CTRL_PWC_EV12V | R92C_SYS_ISO_CTRL_DIOR); - DELAY(200); - - /* TODO: linux does additional btcoex stuff here */ - - /* Auto enable WLAN. */ - rtwn_write_2(sc, R92C_APS_FSMCO, - rtwn_read_2(sc, R92C_APS_FSMCO) | R92C_APS_FSMCO_APFM_ONMAC); - for (ntries = 0; ntries < 1000; ntries++) { - if (!(rtwn_read_2(sc, R92C_APS_FSMCO) & - R92C_APS_FSMCO_APFM_ONMAC)) - break; - DELAY(5); - } - if (ntries == 1000) { - device_printf(sc->sc_dev, "timeout waiting for MAC auto ON\n"); - return (ETIMEDOUT); - } - - /* Enable radio, GPIO and LED functions. */ - rtwn_write_2(sc, R92C_APS_FSMCO, - R92C_APS_FSMCO_AFSM_PCIE | - R92C_APS_FSMCO_PDN_EN | - R92C_APS_FSMCO_PFM_ALDN); - /* Release RF digital isolation. */ - rtwn_write_2(sc, R92C_SYS_ISO_CTRL, - rtwn_read_2(sc, R92C_SYS_ISO_CTRL) & ~R92C_SYS_ISO_CTRL_DIOR); - - if (sc->chip & RTWN_CHIP_92C) - rtwn_write_1(sc, R92C_PCIE_CTRL_REG + 3, 0x77); - else - rtwn_write_1(sc, R92C_PCIE_CTRL_REG + 3, 0x22); - - rtwn_write_4(sc, R92C_INT_MIG, 0); + struct rtwn_softc *sc = ic->ic_softc; + struct ieee80211vap *vap; - if (sc->board_type != R92C_BOARD_TYPE_DONGLE) { - /* bt coex */ - reg = rtwn_read_4(sc, R92C_AFE_XTAL_CTRL + 2); - reg &= 0xfd; /* XXX magic from linux */ - rtwn_write_4(sc, R92C_AFE_XTAL_CTRL + 2, reg); - } + if (ic->ic_nrunning > 0) { + if (rtwn_init(sc) != 0) { + IEEE80211_LOCK(ic); + TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) + ieee80211_stop_locked(vap); + IEEE80211_UNLOCK(ic); + } else + ieee80211_start_all(ic); + } else + rtwn_stop(sc); +} - rtwn_write_1(sc, R92C_GPIO_MUXCFG, - rtwn_read_1(sc, R92C_GPIO_MUXCFG) & ~R92C_GPIO_MUXCFG_RFKILL); - reg = rtwn_read_1(sc, R92C_GPIO_IO_SEL); - if (!(reg & R92C_GPIO_IO_SEL_RFKILL)) { - device_printf(sc->sc_dev, - "radio is disabled by hardware switch\n"); - return (EPERM); - } +static int +rtwn_llt_write(struct rtwn_softc *sc, uint32_t addr, uint32_t data) +{ + int ntries, error; - /* Initialize MAC. */ - reg = rtwn_read_1(sc, R92C_APSD_CTRL); - rtwn_write_1(sc, R92C_APSD_CTRL, - rtwn_read_1(sc, R92C_APSD_CTRL) & ~R92C_APSD_CTRL_OFF); - for (ntries = 0; ntries < 200; ntries++) { - if (!(rtwn_read_1(sc, R92C_APSD_CTRL) & - R92C_APSD_CTRL_OFF_STATUS)) - break; - DELAY(500); - } - if (ntries == 200) { - device_printf(sc->sc_dev, - "timeout waiting for MAC initialization\n"); - return (ETIMEDOUT); + error = rtwn_write_4(sc, R92C_LLT_INIT, + SM(R92C_LLT_INIT_OP, R92C_LLT_INIT_OP_WRITE) | + SM(R92C_LLT_INIT_ADDR, addr) | + SM(R92C_LLT_INIT_DATA, data)); + if (error != 0) + return (error); + /* Wait for write operation to complete. */ + for (ntries = 0; ntries < 20; ntries++) { + if (MS(rtwn_read_4(sc, R92C_LLT_INIT), R92C_LLT_INIT_OP) == + R92C_LLT_INIT_OP_NO_ACTIVE) + return (0); + rtwn_delay(sc, 10); } - - /* Enable MAC DMA/WMAC/SCHEDULE/SEC blocks. */ - reg = rtwn_read_2(sc, R92C_CR); - reg |= R92C_CR_HCI_TXDMA_EN | R92C_CR_HCI_RXDMA_EN | - R92C_CR_TXDMA_EN | R92C_CR_RXDMA_EN | R92C_CR_PROTOCOL_EN | - R92C_CR_SCHEDULE_EN | R92C_CR_MACTXEN | R92C_CR_MACRXEN | - R92C_CR_ENSEC; - rtwn_write_2(sc, R92C_CR, reg); - - rtwn_write_1(sc, 0xfe10, 0x19); - - return (0); + return (ETIMEDOUT); } static int rtwn_llt_init(struct rtwn_softc *sc) { int i, error; - /* Reserve pages [0; R92C_TX_PAGE_COUNT]. */ - for (i = 0; i < R92C_TX_PAGE_COUNT; i++) { + /* Reserve pages [0; page_count]. */ + for (i = 0; i < sc->page_count; i++) { if ((error = rtwn_llt_write(sc, i, i + 1)) != 0) return (error); } /* NB: 0xff indicates end-of-list. */ if ((error = rtwn_llt_write(sc, i, 0xff)) != 0) return (error); /* - * Use pages [R92C_TX_PAGE_COUNT + 1; R92C_TXPKTBUF_COUNT - 1] + * Use pages [page_count + 1; pktbuf_count - 1] * as ring buffer. */ - for (++i; i < R92C_TXPKTBUF_COUNT - 1; i++) { + for (++i; i < sc->pktbuf_count - 1; i++) { if ((error = rtwn_llt_write(sc, i, i + 1)) != 0) return (error); } /* Make the last page point to the beginning of the ring buffer. */ - error = rtwn_llt_write(sc, i, R92C_TX_PAGE_COUNT + 1); - return (error); -} - -static void -rtwn_fw_reset(struct rtwn_softc *sc) -{ - uint16_t reg; - int ntries; - - /* Tell 8051 to reset itself. */ - rtwn_write_1(sc, R92C_HMETFR + 3, 0x20); - - /* Wait until 8051 resets by itself. */ - for (ntries = 0; ntries < 100; ntries++) { - reg = rtwn_read_2(sc, R92C_SYS_FUNC_EN); - if (!(reg & R92C_SYS_FUNC_EN_CPUEN)) - goto sleep; - DELAY(50); - } - /* Force 8051 reset. */ - rtwn_write_2(sc, R92C_SYS_FUNC_EN, reg & ~R92C_SYS_FUNC_EN_CPUEN); -sleep: - /* - * We must sleep for one second to let the firmware settle. - * Accessing registers too early will hang the whole system. - */ - if (msleep(®, &sc->sc_mtx, 0, "rtwnrst", hz)) { - device_printf(sc->sc_dev, "timeout waiting for firmware " - "initialization to complete\n"); - } -} - -static void -rtwn_fw_loadpage(struct rtwn_softc *sc, int page, const uint8_t *buf, int len) -{ - uint32_t reg; - int off, mlen, i; - - reg = rtwn_read_4(sc, R92C_MCUFWDL); - reg = RW(reg, R92C_MCUFWDL_PAGE, page); - rtwn_write_4(sc, R92C_MCUFWDL, reg); - - DELAY(5); - - off = R92C_FW_START_ADDR; - while (len > 0) { - if (len > 196) - mlen = 196; - else if (len > 4) - mlen = 4; - else - mlen = 1; - for (i = 0; i < mlen; i++) - rtwn_write_1(sc, off++, buf[i]); - buf += mlen; - len -= mlen; - } -} - -static int -rtwn_load_firmware(struct rtwn_softc *sc) -{ - const struct firmware *fw; - const struct r92c_fw_hdr *hdr; - const char *name; - const u_char *ptr; - size_t len; - uint32_t reg; - int mlen, ntries, page, error = 0; - - /* Read firmware image from the filesystem. */ - if ((sc->chip & (RTWN_CHIP_UMC_A_CUT | RTWN_CHIP_92C)) == - RTWN_CHIP_UMC_A_CUT) - name = "rtwn-rtl8192cfwU"; - else - name = "rtwn-rtl8192cfwU_B"; - RTWN_UNLOCK(sc); - fw = firmware_get(name); - RTWN_LOCK(sc); - if (fw == NULL) { - device_printf(sc->sc_dev, - "could not read firmware %s\n", name); - return (ENOENT); - } - len = fw->datasize; - if (len < sizeof(*hdr)) { - device_printf(sc->sc_dev, "firmware too short\n"); - error = EINVAL; - goto fail; - } - ptr = fw->data; - hdr = (const struct r92c_fw_hdr *)ptr; - /* Check if there is a valid FW header and skip it. */ - if ((le16toh(hdr->signature) >> 4) == 0x88c || - (le16toh(hdr->signature) >> 4) == 0x92c) { - DPRINTF(("FW V%d.%d %02d-%02d %02d:%02d\n", - le16toh(hdr->version), le16toh(hdr->subversion), - hdr->month, hdr->date, hdr->hour, hdr->minute)); - ptr += sizeof(*hdr); - len -= sizeof(*hdr); - } - - if (rtwn_read_1(sc, R92C_MCUFWDL) & R92C_MCUFWDL_RAM_DL_SEL) - rtwn_fw_reset(sc); - - /* Enable FW download. */ - rtwn_write_2(sc, R92C_SYS_FUNC_EN, - rtwn_read_2(sc, R92C_SYS_FUNC_EN) | - R92C_SYS_FUNC_EN_CPUEN); - rtwn_write_1(sc, R92C_MCUFWDL, - rtwn_read_1(sc, R92C_MCUFWDL) | R92C_MCUFWDL_EN); - rtwn_write_1(sc, R92C_MCUFWDL + 2, - rtwn_read_1(sc, R92C_MCUFWDL + 2) & ~0x08); - - /* Reset the FWDL checksum. */ - rtwn_write_1(sc, R92C_MCUFWDL, - rtwn_read_1(sc, R92C_MCUFWDL) | R92C_MCUFWDL_CHKSUM_RPT); - - for (page = 0; len > 0; page++) { - mlen = MIN(len, R92C_FW_PAGE_SIZE); - rtwn_fw_loadpage(sc, page, ptr, mlen); - ptr += mlen; - len -= mlen; - } - - /* Disable FW download. */ - rtwn_write_1(sc, R92C_MCUFWDL, - rtwn_read_1(sc, R92C_MCUFWDL) & ~R92C_MCUFWDL_EN); - rtwn_write_1(sc, R92C_MCUFWDL + 1, 0); - - /* Wait for checksum report. */ - for (ntries = 0; ntries < 1000; ntries++) { - if (rtwn_read_4(sc, R92C_MCUFWDL) & R92C_MCUFWDL_CHKSUM_RPT) - break; - DELAY(5); - } - if (ntries == 1000) { - device_printf(sc->sc_dev, - "timeout waiting for checksum report\n"); - error = ETIMEDOUT; - goto fail; - } - - reg = rtwn_read_4(sc, R92C_MCUFWDL); - reg = (reg & ~R92C_MCUFWDL_WINTINI_RDY) | R92C_MCUFWDL_RDY; - rtwn_write_4(sc, R92C_MCUFWDL, reg); - /* Wait for firmware readiness. */ - for (ntries = 0; ntries < 2000; ntries++) { - if (rtwn_read_4(sc, R92C_MCUFWDL) & R92C_MCUFWDL_WINTINI_RDY) - break; - DELAY(50); - } - if (ntries == 2000) { - device_printf(sc->sc_dev, - "timeout waiting for firmware readiness\n"); - error = ETIMEDOUT; - goto fail; - } -fail: - firmware_put(fw, FIRMWARE_UNLOAD); + error = rtwn_llt_write(sc, i, sc->page_count + 1); return (error); } static int rtwn_dma_init(struct rtwn_softc *sc) { - uint32_t reg; +#define RTWN_CHK(res) do { \ + if (res != 0) \ + return (EIO); \ +} while(0) + uint16_t reg; + uint8_t tx_boundary; int error; /* Initialize LLT table. */ error = rtwn_llt_init(sc); if (error != 0) - return error; + return (error); + + /* Set the number of pages for each queue. */ + RTWN_DPRINTF(sc, RTWN_DEBUG_RESET, + "%s: pages per queue: high %d, normal %d, low %d, public %d\n", + __func__, sc->nhqpages, sc->nnqpages, sc->nlqpages, + sc->npubqpages); - /* Set number of pages for normal priority queue. */ - rtwn_write_2(sc, R92C_RQPN_NPQ, 0); - rtwn_write_4(sc, R92C_RQPN, + RTWN_CHK(rtwn_write_1(sc, R92C_RQPN_NPQ, sc->nnqpages)); + RTWN_CHK(rtwn_write_4(sc, R92C_RQPN, /* Set number of pages for public queue. */ - SM(R92C_RQPN_PUBQ, R92C_PUBQ_NPAGES) | + SM(R92C_RQPN_PUBQ, sc->npubqpages) | /* Set number of pages for high priority queue. */ - SM(R92C_RQPN_HPQ, R92C_HPQ_NPAGES) | + SM(R92C_RQPN_HPQ, sc->nhqpages) | /* Set number of pages for low priority queue. */ - SM(R92C_RQPN_LPQ, R92C_LPQ_NPAGES) | + SM(R92C_RQPN_LPQ, sc->nlqpages) | /* Load values. */ - R92C_RQPN_LD); - - rtwn_write_1(sc, R92C_TXPKTBUF_BCNQ_BDNY, R92C_TX_PAGE_BOUNDARY); - rtwn_write_1(sc, R92C_TXPKTBUF_MGQ_BDNY, R92C_TX_PAGE_BOUNDARY); - rtwn_write_1(sc, R92C_TXPKTBUF_WMAC_LBK_BF_HD, R92C_TX_PAGE_BOUNDARY); - rtwn_write_1(sc, R92C_TRXFF_BNDY, R92C_TX_PAGE_BOUNDARY); - rtwn_write_1(sc, R92C_TDECTRL + 1, R92C_TX_PAGE_BOUNDARY); - - reg = rtwn_read_2(sc, R92C_TRXDMA_CTRL); - reg &= ~R92C_TRXDMA_CTRL_QMAP_M; - reg |= 0xF771; - rtwn_write_2(sc, R92C_TRXDMA_CTRL, reg); - - rtwn_write_4(sc, R92C_TCR, R92C_TCR_CFENDFORM | (1 << 12) | (1 << 13)); - - /* Configure Tx DMA. */ - rtwn_write_4(sc, R92C_BKQ_DESA, sc->tx_ring[RTWN_BK_QUEUE].paddr); - rtwn_write_4(sc, R92C_BEQ_DESA, sc->tx_ring[RTWN_BE_QUEUE].paddr); - rtwn_write_4(sc, R92C_VIQ_DESA, sc->tx_ring[RTWN_VI_QUEUE].paddr); - rtwn_write_4(sc, R92C_VOQ_DESA, sc->tx_ring[RTWN_VO_QUEUE].paddr); - rtwn_write_4(sc, R92C_BCNQ_DESA, sc->tx_ring[RTWN_BEACON_QUEUE].paddr); - rtwn_write_4(sc, R92C_MGQ_DESA, sc->tx_ring[RTWN_MGNT_QUEUE].paddr); - rtwn_write_4(sc, R92C_HQ_DESA, sc->tx_ring[RTWN_HIGH_QUEUE].paddr); - - /* Configure Rx DMA. */ - rtwn_write_4(sc, R92C_RX_DESA, sc->rx_ring.paddr); - - /* Set Tx/Rx transfer page boundary. */ - rtwn_write_2(sc, R92C_TRXFF_BNDY + 2, 0x27ff); - - /* Set Tx/Rx transfer page size. */ - rtwn_write_1(sc, R92C_PBP, - SM(R92C_PBP_PSRX, R92C_PBP_128) | - SM(R92C_PBP_PSTX, R92C_PBP_128)); - return (0); -} - -static void -rtwn_mac_init(struct rtwn_softc *sc) -{ - int i; - - /* Write MAC initialization values. */ - for (i = 0; i < nitems(rtl8192ce_mac); i++) - rtwn_write_1(sc, rtl8192ce_mac[i].reg, rtl8192ce_mac[i].val); -} - -static void -rtwn_bb_init(struct rtwn_softc *sc) -{ - const struct rtwn_bb_prog *prog; - uint32_t reg; - int i; - - /* Enable BB and RF. */ - rtwn_write_2(sc, R92C_SYS_FUNC_EN, - rtwn_read_2(sc, R92C_SYS_FUNC_EN) | - R92C_SYS_FUNC_EN_BBRSTB | R92C_SYS_FUNC_EN_BB_GLB_RST | - R92C_SYS_FUNC_EN_DIO_RF); - - rtwn_write_2(sc, R92C_AFE_PLL_CTRL, 0xdb83); - - rtwn_write_1(sc, R92C_RF_CTRL, - R92C_RF_CTRL_EN | R92C_RF_CTRL_RSTB | R92C_RF_CTRL_SDMRSTB); - - rtwn_write_1(sc, R92C_SYS_FUNC_EN, - R92C_SYS_FUNC_EN_DIO_PCIE | R92C_SYS_FUNC_EN_PCIEA | - R92C_SYS_FUNC_EN_PPLL | R92C_SYS_FUNC_EN_BB_GLB_RST | - R92C_SYS_FUNC_EN_BBRSTB); - - rtwn_write_1(sc, R92C_AFE_XTAL_CTRL + 1, 0x80); - - rtwn_write_4(sc, R92C_LEDCFG0, - rtwn_read_4(sc, R92C_LEDCFG0) | 0x00800000); - - /* Select BB programming. */ - prog = (sc->chip & RTWN_CHIP_92C) ? - &rtl8192ce_bb_prog_2t : &rtl8192ce_bb_prog_1t; - - /* Write BB initialization values. */ - for (i = 0; i < prog->count; i++) { - rtwn_bb_write(sc, prog->regs[i], prog->vals[i]); - DELAY(1); - } - - if (sc->chip & RTWN_CHIP_92C_1T2R) { - /* 8192C 1T only configuration. */ - reg = rtwn_bb_read(sc, R92C_FPGA0_TXINFO); - reg = (reg & ~0x00000003) | 0x2; - rtwn_bb_write(sc, R92C_FPGA0_TXINFO, reg); - - reg = rtwn_bb_read(sc, R92C_FPGA1_TXINFO); - reg = (reg & ~0x00300033) | 0x00200022; - rtwn_bb_write(sc, R92C_FPGA1_TXINFO, reg); - - reg = rtwn_bb_read(sc, R92C_CCK0_AFESETTING); - reg = (reg & ~0xff000000) | 0x45 << 24; - rtwn_bb_write(sc, R92C_CCK0_AFESETTING, reg); - - reg = rtwn_bb_read(sc, R92C_OFDM0_TRXPATHENA); - reg = (reg & ~0x000000ff) | 0x23; - rtwn_bb_write(sc, R92C_OFDM0_TRXPATHENA, reg); - - reg = rtwn_bb_read(sc, R92C_OFDM0_AGCPARAM1); - reg = (reg & ~0x00000030) | 1 << 4; - rtwn_bb_write(sc, R92C_OFDM0_AGCPARAM1, reg); - - reg = rtwn_bb_read(sc, 0xe74); - reg = (reg & ~0x0c000000) | 2 << 26; - rtwn_bb_write(sc, 0xe74, reg); - reg = rtwn_bb_read(sc, 0xe78); - reg = (reg & ~0x0c000000) | 2 << 26; - rtwn_bb_write(sc, 0xe78, reg); - reg = rtwn_bb_read(sc, 0xe7c); - reg = (reg & ~0x0c000000) | 2 << 26; - rtwn_bb_write(sc, 0xe7c, reg); - reg = rtwn_bb_read(sc, 0xe80); - reg = (reg & ~0x0c000000) | 2 << 26; - rtwn_bb_write(sc, 0xe80, reg); - reg = rtwn_bb_read(sc, 0xe88); - reg = (reg & ~0x0c000000) | 2 << 26; - rtwn_bb_write(sc, 0xe88, reg); - } - - /* Write AGC values. */ - for (i = 0; i < prog->agccount; i++) { - rtwn_bb_write(sc, R92C_OFDM0_AGCRSSITABLE, - prog->agcvals[i]); - DELAY(1); - } - - if (rtwn_bb_read(sc, R92C_HSSI_PARAM2(0)) & - R92C_HSSI_PARAM2_CCK_HIPWR) - sc->sc_flags |= RTWN_FLAG_CCK_HIPWR; -} - -static void -rtwn_rf_init(struct rtwn_softc *sc) -{ - const struct rtwn_rf_prog *prog; - uint32_t reg, type; - int i, j, idx, off; - - /* Select RF programming based on board type. */ - if (!(sc->chip & RTWN_CHIP_92C)) { - if (sc->board_type == R92C_BOARD_TYPE_MINICARD) - prog = rtl8188ce_rf_prog; - else if (sc->board_type == R92C_BOARD_TYPE_HIGHPA) - prog = rtl8188ru_rf_prog; - else - prog = rtl8188cu_rf_prog; - } else - prog = rtl8192ce_rf_prog; - - for (i = 0; i < sc->nrxchains; i++) { - /* Save RF_ENV control type. */ - idx = i / 2; - off = (i % 2) * 16; - reg = rtwn_bb_read(sc, R92C_FPGA0_RFIFACESW(idx)); - type = (reg >> off) & 0x10; - - /* Set RF_ENV enable. */ - reg = rtwn_bb_read(sc, R92C_FPGA0_RFIFACEOE(i)); - reg |= 0x100000; - rtwn_bb_write(sc, R92C_FPGA0_RFIFACEOE(i), reg); - DELAY(1); - /* Set RF_ENV output high. */ - reg = rtwn_bb_read(sc, R92C_FPGA0_RFIFACEOE(i)); - reg |= 0x10; - rtwn_bb_write(sc, R92C_FPGA0_RFIFACEOE(i), reg); - DELAY(1); - /* Set address and data lengths of RF registers. */ - reg = rtwn_bb_read(sc, R92C_HSSI_PARAM2(i)); - reg &= ~R92C_HSSI_PARAM2_ADDR_LENGTH; - rtwn_bb_write(sc, R92C_HSSI_PARAM2(i), reg); - DELAY(1); - reg = rtwn_bb_read(sc, R92C_HSSI_PARAM2(i)); - reg &= ~R92C_HSSI_PARAM2_DATA_LENGTH; - rtwn_bb_write(sc, R92C_HSSI_PARAM2(i), reg); - DELAY(1); - - /* Write RF initialization values for this chain. */ - for (j = 0; j < prog[i].count; j++) { - if (prog[i].regs[j] >= 0xf9 && - prog[i].regs[j] <= 0xfe) { - /* - * These are fake RF registers offsets that - * indicate a delay is required. - */ - DELAY(50); - continue; - } - rtwn_rf_write(sc, i, prog[i].regs[j], - prog[i].vals[j]); - DELAY(1); - } - - /* Restore RF_ENV control type. */ - reg = rtwn_bb_read(sc, R92C_FPGA0_RFIFACESW(idx)); - reg &= ~(0x10 << off) | (type << off); - rtwn_bb_write(sc, R92C_FPGA0_RFIFACESW(idx), reg); - - /* Cache RF register CHNLBW. */ - sc->rf_chnlbw[i] = rtwn_rf_read(sc, i, R92C_RF_CHNLBW); - } - - if ((sc->chip & (RTWN_CHIP_UMC_A_CUT | RTWN_CHIP_92C)) == - RTWN_CHIP_UMC_A_CUT) { - rtwn_rf_write(sc, 0, R92C_RF_RX_G1, 0x30255); - rtwn_rf_write(sc, 0, R92C_RF_RX_G2, 0x50a00); - } -} - -static void -rtwn_cam_init(struct rtwn_softc *sc) -{ - /* Invalidate all CAM entries. */ - rtwn_write_4(sc, R92C_CAMCMD, - R92C_CAMCMD_POLLING | R92C_CAMCMD_CLR); -} - -static void -rtwn_pa_bias_init(struct rtwn_softc *sc) -{ - uint8_t reg; - int i; - - for (i = 0; i < sc->nrxchains; i++) { - if (sc->pa_setting & (1 << i)) - continue; - rtwn_rf_write(sc, i, R92C_RF_IPA, 0x0f406); - rtwn_rf_write(sc, i, R92C_RF_IPA, 0x4f406); - rtwn_rf_write(sc, i, R92C_RF_IPA, 0x8f406); - rtwn_rf_write(sc, i, R92C_RF_IPA, 0xcf406); - } - if (!(sc->pa_setting & 0x10)) { - reg = rtwn_read_1(sc, 0x16); - reg = (reg & ~0xf0) | 0x90; - rtwn_write_1(sc, 0x16, reg); - } -} - -static void -rtwn_rxfilter_init(struct rtwn_softc *sc) -{ - /* Initialize Rx filter. */ - /* TODO: use better filter for monitor mode. */ - rtwn_write_4(sc, R92C_RCR, - R92C_RCR_AAP | R92C_RCR_APM | R92C_RCR_AM | R92C_RCR_AB | - R92C_RCR_APP_ICV | R92C_RCR_AMF | R92C_RCR_HTC_LOC_CTRL | - R92C_RCR_APP_MIC | R92C_RCR_APP_PHYSTS); - /* Accept all multicast frames. */ - rtwn_write_4(sc, R92C_MAR + 0, 0xffffffff); - rtwn_write_4(sc, R92C_MAR + 4, 0xffffffff); - /* Accept all management frames. */ - rtwn_write_2(sc, R92C_RXFLTMAP0, 0xffff); - /* Reject all control frames. */ - rtwn_write_2(sc, R92C_RXFLTMAP1, 0x0000); - /* Accept all data frames. */ - rtwn_write_2(sc, R92C_RXFLTMAP2, 0xffff); -} - -static void -rtwn_edca_init(struct rtwn_softc *sc) -{ - - rtwn_write_2(sc, R92C_SPEC_SIFS, 0x1010); - rtwn_write_2(sc, R92C_MAC_SPEC_SIFS, 0x1010); - rtwn_write_2(sc, R92C_SIFS_CCK, 0x1010); - rtwn_write_2(sc, R92C_SIFS_OFDM, 0x0e0e); - rtwn_write_4(sc, R92C_EDCA_BE_PARAM, 0x005ea42b); - rtwn_write_4(sc, R92C_EDCA_BK_PARAM, 0x0000a44f); - rtwn_write_4(sc, R92C_EDCA_VI_PARAM, 0x005e4322); - rtwn_write_4(sc, R92C_EDCA_VO_PARAM, 0x002f3222); -} - -static void -rtwn_write_txpower(struct rtwn_softc *sc, int chain, - uint16_t power[RTWN_RIDX_COUNT]) -{ - uint32_t reg; - - /* Write per-CCK rate Tx power. */ - if (chain == 0) { - reg = rtwn_bb_read(sc, R92C_TXAGC_A_CCK1_MCS32); - reg = RW(reg, R92C_TXAGC_A_CCK1, power[0]); - rtwn_bb_write(sc, R92C_TXAGC_A_CCK1_MCS32, reg); - reg = rtwn_bb_read(sc, R92C_TXAGC_B_CCK11_A_CCK2_11); - reg = RW(reg, R92C_TXAGC_A_CCK2, power[1]); - reg = RW(reg, R92C_TXAGC_A_CCK55, power[2]); - reg = RW(reg, R92C_TXAGC_A_CCK11, power[3]); - rtwn_bb_write(sc, R92C_TXAGC_B_CCK11_A_CCK2_11, reg); - } else { - reg = rtwn_bb_read(sc, R92C_TXAGC_B_CCK1_55_MCS32); - reg = RW(reg, R92C_TXAGC_B_CCK1, power[0]); - reg = RW(reg, R92C_TXAGC_B_CCK2, power[1]); - reg = RW(reg, R92C_TXAGC_B_CCK55, power[2]); - rtwn_bb_write(sc, R92C_TXAGC_B_CCK1_55_MCS32, reg); - reg = rtwn_bb_read(sc, R92C_TXAGC_B_CCK11_A_CCK2_11); - reg = RW(reg, R92C_TXAGC_B_CCK11, power[3]); - rtwn_bb_write(sc, R92C_TXAGC_B_CCK11_A_CCK2_11, reg); - } - /* Write per-OFDM rate Tx power. */ - rtwn_bb_write(sc, R92C_TXAGC_RATE18_06(chain), - SM(R92C_TXAGC_RATE06, power[ 4]) | - SM(R92C_TXAGC_RATE09, power[ 5]) | - SM(R92C_TXAGC_RATE12, power[ 6]) | - SM(R92C_TXAGC_RATE18, power[ 7])); - rtwn_bb_write(sc, R92C_TXAGC_RATE54_24(chain), - SM(R92C_TXAGC_RATE24, power[ 8]) | - SM(R92C_TXAGC_RATE36, power[ 9]) | - SM(R92C_TXAGC_RATE48, power[10]) | - SM(R92C_TXAGC_RATE54, power[11])); - /* Write per-MCS Tx power. */ - rtwn_bb_write(sc, R92C_TXAGC_MCS03_MCS00(chain), - SM(R92C_TXAGC_MCS00, power[12]) | - SM(R92C_TXAGC_MCS01, power[13]) | - SM(R92C_TXAGC_MCS02, power[14]) | - SM(R92C_TXAGC_MCS03, power[15])); - rtwn_bb_write(sc, R92C_TXAGC_MCS07_MCS04(chain), - SM(R92C_TXAGC_MCS04, power[16]) | - SM(R92C_TXAGC_MCS05, power[17]) | - SM(R92C_TXAGC_MCS06, power[18]) | - SM(R92C_TXAGC_MCS07, power[19])); - rtwn_bb_write(sc, R92C_TXAGC_MCS11_MCS08(chain), - SM(R92C_TXAGC_MCS08, power[20]) | - SM(R92C_TXAGC_MCS09, power[21]) | - SM(R92C_TXAGC_MCS10, power[22]) | - SM(R92C_TXAGC_MCS11, power[23])); - rtwn_bb_write(sc, R92C_TXAGC_MCS15_MCS12(chain), - SM(R92C_TXAGC_MCS12, power[24]) | - SM(R92C_TXAGC_MCS13, power[25]) | - SM(R92C_TXAGC_MCS14, power[26]) | - SM(R92C_TXAGC_MCS15, power[27])); -} - -static void -rtwn_get_txpower(struct rtwn_softc *sc, int chain, - struct ieee80211_channel *c, struct ieee80211_channel *extc, - uint16_t power[RTWN_RIDX_COUNT]) -{ - struct ieee80211com *ic = &sc->sc_ic; - struct r92c_rom *rom = &sc->rom; - uint16_t cckpow, ofdmpow, htpow, diff, max; - const struct rtwn_txpwr *base; - int ridx, chan, group; - - /* Determine channel group. */ - chan = ieee80211_chan2ieee(ic, c); /* XXX center freq! */ - if (chan <= 3) - group = 0; - else if (chan <= 9) - group = 1; - else - group = 2; - - /* Get original Tx power based on board type and RF chain. */ - if (!(sc->chip & RTWN_CHIP_92C)) { - if (sc->board_type == R92C_BOARD_TYPE_HIGHPA) - base = &rtl8188ru_txagc[chain]; - else - base = &rtl8192cu_txagc[chain]; - } else - base = &rtl8192cu_txagc[chain]; + R92C_RQPN_LD)); + + /* Initialize TX buffer boundary. */ + KASSERT(sc->page_count < 255 && sc->page_count > 0, + ("page_count is %d\n", sc->page_count)); + tx_boundary = sc->page_count + 1; + RTWN_CHK(rtwn_write_1(sc, R92C_TXPKTBUF_BCNQ_BDNY, tx_boundary)); + RTWN_CHK(rtwn_write_1(sc, R92C_TXPKTBUF_MGQ_BDNY, tx_boundary)); + RTWN_CHK(rtwn_write_1(sc, R92C_TXPKTBUF_WMAC_LBK_BF_HD, tx_boundary)); + RTWN_CHK(rtwn_write_1(sc, R92C_TRXFF_BNDY, tx_boundary)); + RTWN_CHK(rtwn_write_1(sc, R92C_TDECTRL + 1, tx_boundary)); + + error = rtwn_init_bcnq1_boundary(sc); + if (error != 0) + return (error); - memset(power, 0, RTWN_RIDX_COUNT * sizeof(power[0])); - if (sc->regulatory == 0) { - for (ridx = RTWN_RIDX_CCK1; ridx <= RTWN_RIDX_CCK11; ridx++) - power[ridx] = base->pwr[0][ridx]; - } - for (ridx = RTWN_RIDX_OFDM6; ridx < RTWN_RIDX_COUNT; ridx++) { - if (sc->regulatory == 3) { - power[ridx] = base->pwr[0][ridx]; - /* Apply vendor limits. */ - if (extc != NULL) - max = rom->ht40_max_pwr[group]; - else - max = rom->ht20_max_pwr[group]; - max = (max >> (chain * 4)) & 0xf; - if (power[ridx] > max) - power[ridx] = max; - } else if (sc->regulatory == 1) { - if (extc == NULL) - power[ridx] = base->pwr[group][ridx]; - } else if (sc->regulatory != 2) - power[ridx] = base->pwr[0][ridx]; - } + /* Set queue to USB pipe mapping. */ + /* Note: PCIe devices are using some magic number here. */ + reg = rtwn_get_qmap(sc); + RTWN_CHK(rtwn_setbits_2(sc, R92C_TRXDMA_CTRL, + R92C_TRXDMA_CTRL_QMAP_M, reg)); - /* Compute per-CCK rate Tx power. */ - cckpow = rom->cck_tx_pwr[chain][group]; - for (ridx = RTWN_RIDX_CCK1; ridx <= RTWN_RIDX_CCK11; ridx++) { - power[ridx] += cckpow; - if (power[ridx] > R92C_MAX_TX_PWR) - power[ridx] = R92C_MAX_TX_PWR; - } + /* Configure Tx/Rx DMA (PCIe). */ + rtwn_set_desc_addr(sc); - htpow = rom->ht40_1s_tx_pwr[chain][group]; - if (sc->ntxchains > 1) { - /* Apply reduction for 2 spatial streams. */ - diff = rom->ht40_2s_tx_pwr_diff[group]; - diff = (diff >> (chain * 4)) & 0xf; - htpow = (htpow > diff) ? htpow - diff : 0; - } + /* Set Tx/Rx transfer page boundary. */ + RTWN_CHK(rtwn_write_2(sc, R92C_TRXFF_BNDY + 2, + sc->rx_dma_size - 1)); - /* Compute per-OFDM rate Tx power. */ - diff = rom->ofdm_tx_pwr_diff[group]; - diff = (diff >> (chain * 4)) & 0xf; - ofdmpow = htpow + diff; /* HT->OFDM correction. */ - for (ridx = RTWN_RIDX_OFDM6; ridx <= RTWN_RIDX_OFDM54; ridx++) { - power[ridx] += ofdmpow; - if (power[ridx] > R92C_MAX_TX_PWR) - power[ridx] = R92C_MAX_TX_PWR; - } + /* Set Tx/Rx transfer page size. */ + rtwn_set_page_size(sc); - /* Compute per-MCS Tx power. */ - if (extc == NULL) { - diff = rom->ht20_tx_pwr_diff[group]; - diff = (diff >> (chain * 4)) & 0xf; - htpow += diff; /* HT40->HT20 correction. */ - } - for (ridx = RTWN_RIDX_MCS0; ridx <= RTWN_RIDX_MCS15; ridx++) { - power[ridx] += htpow; - if (power[ridx] > R92C_MAX_TX_PWR) - power[ridx] = R92C_MAX_TX_PWR; - } -#ifdef RTWN_DEBUG - if (sc->sc_debug >= 4) { - /* Dump per-rate Tx power values. */ - printf("Tx power for chain %d:\n", chain); - for (ridx = RTWN_RIDX_CCK1; ridx < RTWN_RIDX_COUNT; ridx++) - printf("Rate %d = %u\n", ridx, power[ridx]); - } -#endif + return (0); } -static void -rtwn_set_txpower(struct rtwn_softc *sc, struct ieee80211_channel *c, - struct ieee80211_channel *extc) +static int +rtwn_mac_init(struct rtwn_softc *sc) { - uint16_t power[RTWN_RIDX_COUNT]; - int i; + int i, error; - for (i = 0; i < sc->ntxchains; i++) { - /* Compute per-rate Tx power values. */ - rtwn_get_txpower(sc, i, c, extc, power); - /* Write per-rate Tx power values to hardware. */ - rtwn_write_txpower(sc, i, power); + /* Write MAC initialization values. */ + for (i = 0; i < sc->mac_size; i++) { + error = rtwn_write_1(sc, sc->mac_prog[i].reg, + sc->mac_prog[i].val); + if (error != 0) + return (error); } + + return (0); } static void -rtwn_set_rx_bssid_all(struct rtwn_softc *sc, int enable) +rtwn_mrr_init(struct rtwn_softc *sc) { - uint32_t reg; + int i; - reg = rtwn_read_4(sc, R92C_RCR); - if (enable) - reg &= ~R92C_RCR_CBSSID_BCN; - else - reg |= R92C_RCR_CBSSID_BCN; - rtwn_write_4(sc, R92C_RCR, reg); + /* Drop rate index by 1 per retry. */ + for (i = 0; i < R92C_DARFRC_SIZE; i++) { + rtwn_write_1(sc, R92C_DARFRC + i, i + 1); + rtwn_write_1(sc, R92C_RARFRC + i, i + 1); + } } static void -rtwn_set_gain(struct rtwn_softc *sc, uint8_t gain) +rtwn_scan_start(struct ieee80211com *ic) { - uint32_t reg; - - reg = rtwn_bb_read(sc, R92C_OFDM0_AGCCORE1(0)); - reg = RW(reg, R92C_OFDM0_AGCCORE1_GAIN, gain); - rtwn_bb_write(sc, R92C_OFDM0_AGCCORE1(0), reg); + struct rtwn_softc *sc = ic->ic_softc; - reg = rtwn_bb_read(sc, R92C_OFDM0_AGCCORE1(1)); - reg = RW(reg, R92C_OFDM0_AGCCORE1_GAIN, gain); - rtwn_bb_write(sc, R92C_OFDM0_AGCCORE1(1), reg); + RTWN_LOCK(sc); + /* Receive beacons / probe responses from any BSSID. */ + if (sc->bcn_vaps == 0) + rtwn_set_rx_bssid_all(sc, 1); + RTWN_UNLOCK(sc); } static void -rtwn_scan_start(struct ieee80211com *ic) +rtwn_scan_curchan(struct ieee80211_scan_state *ss, unsigned long maxdwell) { - struct rtwn_softc *sc = ic->ic_softc; + struct rtwn_softc *sc = ss->ss_ic->ic_softc; + /* Make link LED blink during scan. */ RTWN_LOCK(sc); - /* Receive beacons / probe responses from any BSSID. */ - rtwn_set_rx_bssid_all(sc, 1); - /* Set gain for scanning. */ - rtwn_set_gain(sc, 0x20); + rtwn_set_led(sc, RTWN_LED_LINK, !sc->ledlink); RTWN_UNLOCK(sc); + + sc->sc_scan_curchan(ss, maxdwell); } static void rtwn_scan_end(struct ieee80211com *ic) { struct rtwn_softc *sc = ic->ic_softc; RTWN_LOCK(sc); /* Restore limitations. */ - rtwn_set_rx_bssid_all(sc, 0); - /* Set gain under link. */ - rtwn_set_gain(sc, 0x32); + if (ic->ic_promisc == 0 && sc->bcn_vaps == 0) + rtwn_set_rx_bssid_all(sc, 0); + + /* Restore LED state. */ + rtwn_set_led(sc, RTWN_LED_LINK, (sc->vaps_running != 0)); + + /* Restore basic rates mask. */ + rtwn_calc_basicrates(sc); RTWN_UNLOCK(sc); } static void rtwn_getradiocaps(struct ieee80211com *ic, int maxchans, int *nchans, struct ieee80211_channel chans[]) { + struct rtwn_softc *sc = ic->ic_softc; uint8_t bands[IEEE80211_MODE_BYTES]; + int i; memset(bands, 0, sizeof(bands)); setbit(bands, IEEE80211_MODE_11B); setbit(bands, IEEE80211_MODE_11G); + setbit(bands, IEEE80211_MODE_11NG); ieee80211_add_channel_list_2ghz(chans, maxchans, nchans, - rtwn_chan_2ghz, nitems(rtwn_chan_2ghz), bands, 0); + rtwn_chan_2ghz, nitems(rtwn_chan_2ghz), bands, + !!(ic->ic_htcaps & IEEE80211_HTCAP_CHWIDTH40)); + + /* XXX workaround add_channel_list() limitations */ + setbit(bands, IEEE80211_MODE_11A); + setbit(bands, IEEE80211_MODE_11NA); + for (i = 0; i < nitems(sc->chan_num_5ghz); i++) { + if (sc->chan_num_5ghz[i] == 0) + continue; + + ieee80211_add_channel_list_5ghz(chans, maxchans, nchans, + sc->chan_list_5ghz[i], sc->chan_num_5ghz[i], bands, + !!(ic->ic_htcaps & IEEE80211_HTCAP_CHWIDTH40)); + } } static void -rtwn_set_channel(struct ieee80211com *ic) +rtwn_update_chw(struct ieee80211com *ic) { - struct rtwn_softc *sc = ic->ic_softc; - struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); - - RTWN_LOCK(sc); - if (vap->iv_state == IEEE80211_S_SCAN) { - /* Make link LED blink during scan. */ - rtwn_set_led(sc, RTWN_LED_LINK, !sc->ledlink); - } - rtwn_set_chan(sc, ic->ic_curchan, NULL); - RTWN_UNLOCK(sc); } static void -rtwn_update_mcast(struct ieee80211com *ic) +rtwn_set_channel(struct ieee80211com *ic) { + struct rtwn_softc *sc = ic->ic_softc; + struct ieee80211_channel *c = ic->ic_curchan; - /* XXX do nothing? */ + RTWN_LOCK(sc); + rtwn_set_chan(sc, c); + sc->sc_rxtap.wr_chan_freq = htole16(c->ic_freq); + sc->sc_rxtap.wr_chan_flags = htole16(c->ic_flags); + sc->sc_txtap.wt_chan_freq = htole16(c->ic_freq); + sc->sc_txtap.wt_chan_flags = htole16(c->ic_flags); + RTWN_UNLOCK(sc); } -static void -rtwn_set_chan(struct rtwn_softc *sc, struct ieee80211_channel *c, - struct ieee80211_channel *extc) +static int +rtwn_wme_update(struct ieee80211com *ic) { - struct ieee80211com *ic = &sc->sc_ic; - u_int chan; - int i; + struct ieee80211_channel *c = ic->ic_curchan; + struct rtwn_softc *sc = ic->ic_softc; + struct wmeParams *wmep = sc->cap_wmeParams; + uint8_t aifs, acm, slottime; + int ac; - chan = ieee80211_chan2ieee(ic, c); /* XXX center freq! */ - if (chan == 0 || chan == IEEE80211_CHAN_ANY) { - device_printf(sc->sc_dev, - "%s: invalid channel %x\n", __func__, chan); - return; - } + /* Prevent possible races. */ + IEEE80211_LOCK(ic); /* XXX */ + RTWN_LOCK(sc); + memcpy(wmep, ic->ic_wme.wme_chanParams.cap_wmeParams, + sizeof(sc->cap_wmeParams)); + RTWN_UNLOCK(sc); + IEEE80211_UNLOCK(ic); - /* Set Tx power for this new channel. */ - rtwn_set_txpower(sc, c, extc); + acm = 0; + slottime = IEEE80211_GET_SLOTTIME(ic); - for (i = 0; i < sc->nrxchains; i++) { - rtwn_rf_write(sc, i, R92C_RF_CHNLBW, - RW(sc->rf_chnlbw[i], R92C_RF_CHNLBW_CHNL, chan)); + RTWN_LOCK(sc); + for (ac = WME_AC_BE; ac < WME_NUM_AC; ac++) { + /* AIFS[AC] = AIFSN[AC] * aSlotTime + aSIFSTime. */ + aifs = wmep[ac].wmep_aifsn * slottime + + (IEEE80211_IS_CHAN_5GHZ(c) ? + IEEE80211_DUR_OFDM_SIFS : IEEE80211_DUR_SIFS); + rtwn_write_4(sc, wme2reg[ac], + SM(R92C_EDCA_PARAM_TXOP, wmep[ac].wmep_txopLimit) | + SM(R92C_EDCA_PARAM_ECWMIN, wmep[ac].wmep_logcwmin) | + SM(R92C_EDCA_PARAM_ECWMAX, wmep[ac].wmep_logcwmax) | + SM(R92C_EDCA_PARAM_AIFS, aifs)); + if (ac != WME_AC_BE) + acm |= wmep[ac].wmep_acm << ac; } -#ifndef IEEE80211_NO_HT - if (extc != NULL) { - uint32_t reg; - - /* Is secondary channel below or above primary? */ - int prichlo = c->ic_freq < extc->ic_freq; - - rtwn_write_1(sc, R92C_BWOPMODE, - rtwn_read_1(sc, R92C_BWOPMODE) & ~R92C_BWOPMODE_20MHZ); - - reg = rtwn_read_1(sc, R92C_RRSR + 2); - reg = (reg & ~0x6f) | (prichlo ? 1 : 2) << 5; - rtwn_write_1(sc, R92C_RRSR + 2, reg); - rtwn_bb_write(sc, R92C_FPGA0_RFMOD, - rtwn_bb_read(sc, R92C_FPGA0_RFMOD) | R92C_RFMOD_40MHZ); - rtwn_bb_write(sc, R92C_FPGA1_RFMOD, - rtwn_bb_read(sc, R92C_FPGA1_RFMOD) | R92C_RFMOD_40MHZ); + if (acm != 0) + acm |= R92C_ACMHWCTRL_EN; + rtwn_setbits_1(sc, R92C_ACMHWCTRL, R92C_ACMHWCTRL_ACM_MASK, acm); + RTWN_UNLOCK(sc); - /* Set CCK side band. */ - reg = rtwn_bb_read(sc, R92C_CCK0_SYSTEM); - reg = (reg & ~0x00000010) | (prichlo ? 0 : 1) << 4; - rtwn_bb_write(sc, R92C_CCK0_SYSTEM, reg); + return 0; +} - reg = rtwn_bb_read(sc, R92C_OFDM1_LSTF); - reg = (reg & ~0x00000c00) | (prichlo ? 1 : 2) << 10; - rtwn_bb_write(sc, R92C_OFDM1_LSTF, reg); +static void +rtwn_update_slot(struct ieee80211com *ic) +{ + rtwn_cmd_sleepable(ic->ic_softc, NULL, 0, rtwn_update_slot_cb); +} - rtwn_bb_write(sc, R92C_FPGA0_ANAPARAM2, - rtwn_bb_read(sc, R92C_FPGA0_ANAPARAM2) & - ~R92C_FPGA0_ANAPARAM2_CBW20); +static void +rtwn_update_slot_cb(struct rtwn_softc *sc, union sec_param *data) +{ + struct ieee80211com *ic = &sc->sc_ic; + uint8_t slottime; - reg = rtwn_bb_read(sc, 0x818); - reg = (reg & ~0x0c000000) | (prichlo ? 2 : 1) << 26; - rtwn_bb_write(sc, 0x818, reg); + slottime = IEEE80211_GET_SLOTTIME(ic); - /* Select 40MHz bandwidth. */ - rtwn_rf_write(sc, 0, R92C_RF_CHNLBW, - (sc->rf_chnlbw[0] & ~0xfff) | chan); - } else -#endif - { - rtwn_write_1(sc, R92C_BWOPMODE, - rtwn_read_1(sc, R92C_BWOPMODE) | R92C_BWOPMODE_20MHZ); + RTWN_DPRINTF(sc, RTWN_DEBUG_STATE, "%s: setting slot time to %uus\n", + __func__, slottime); - rtwn_bb_write(sc, R92C_FPGA0_RFMOD, - rtwn_bb_read(sc, R92C_FPGA0_RFMOD) & ~R92C_RFMOD_40MHZ); - rtwn_bb_write(sc, R92C_FPGA1_RFMOD, - rtwn_bb_read(sc, R92C_FPGA1_RFMOD) & ~R92C_RFMOD_40MHZ); + rtwn_write_1(sc, R92C_SLOT, slottime); + rtwn_update_aifs(sc, slottime); +} - rtwn_bb_write(sc, R92C_FPGA0_ANAPARAM2, - rtwn_bb_read(sc, R92C_FPGA0_ANAPARAM2) | - R92C_FPGA0_ANAPARAM2_CBW20); +static void +rtwn_update_aifs(struct rtwn_softc *sc, uint8_t slottime) +{ + struct ieee80211_channel *c = sc->sc_ic.ic_curchan; + const struct wmeParams *wmep = sc->cap_wmeParams; + uint8_t aifs, ac; - /* Select 20MHz bandwidth. */ - rtwn_rf_write(sc, 0, R92C_RF_CHNLBW, - (sc->rf_chnlbw[0] & ~0xfff) | R92C_RF_CHNLBW_BW20 | chan); + for (ac = WME_AC_BE; ac < WME_NUM_AC; ac++) { + /* AIFS[AC] = AIFSN[AC] * aSlotTime + aSIFSTime. */ + aifs = wmep[ac].wmep_aifsn * slottime + + (IEEE80211_IS_CHAN_5GHZ(c) ? + IEEE80211_DUR_OFDM_SIFS : IEEE80211_DUR_SIFS); + rtwn_write_1(sc, wme2reg[ac], aifs); } } -static int -rtwn_iq_calib_chain(struct rtwn_softc *sc, int chain, uint16_t tx[2], - uint16_t rx[2]) +static void +rtwn_update_promisc(struct ieee80211com *ic) { - uint32_t status; - int offset = chain * 0x20; - - if (chain == 0) { /* IQ calibration for chain 0. */ - /* IQ calibration settings for chain 0. */ - rtwn_bb_write(sc, 0xe30, 0x10008c1f); - rtwn_bb_write(sc, 0xe34, 0x10008c1f); - rtwn_bb_write(sc, 0xe38, 0x82140102); - - if (sc->ntxchains > 1) { - rtwn_bb_write(sc, 0xe3c, 0x28160202); /* 2T */ - /* IQ calibration settings for chain 1. */ - rtwn_bb_write(sc, 0xe50, 0x10008c22); - rtwn_bb_write(sc, 0xe54, 0x10008c22); - rtwn_bb_write(sc, 0xe58, 0x82140102); - rtwn_bb_write(sc, 0xe5c, 0x28160202); - } else - rtwn_bb_write(sc, 0xe3c, 0x28160502); /* 1T */ - - /* LO calibration settings. */ - rtwn_bb_write(sc, 0xe4c, 0x001028d1); - /* We're doing LO and IQ calibration in one shot. */ - rtwn_bb_write(sc, 0xe48, 0xf9000000); - rtwn_bb_write(sc, 0xe48, 0xf8000000); - - } else { /* IQ calibration for chain 1. */ - /* We're doing LO and IQ calibration in one shot. */ - rtwn_bb_write(sc, 0xe60, 0x00000002); - rtwn_bb_write(sc, 0xe60, 0x00000000); - } + struct rtwn_softc *sc = ic->ic_softc; - /* Give LO and IQ calibrations the time to complete. */ - DELAY(1000); - - /* Read IQ calibration status. */ - status = rtwn_bb_read(sc, 0xeac); - - if (status & (1 << (28 + chain * 3))) - return (0); /* Tx failed. */ - /* Read Tx IQ calibration results. */ - tx[0] = (rtwn_bb_read(sc, 0xe94 + offset) >> 16) & 0x3ff; - tx[1] = (rtwn_bb_read(sc, 0xe9c + offset) >> 16) & 0x3ff; - if (tx[0] == 0x142 || tx[1] == 0x042) - return (0); /* Tx failed. */ - - if (status & (1 << (27 + chain * 3))) - return (1); /* Rx failed. */ - /* Read Rx IQ calibration results. */ - rx[0] = (rtwn_bb_read(sc, 0xea4 + offset) >> 16) & 0x3ff; - rx[1] = (rtwn_bb_read(sc, 0xeac + offset) >> 16) & 0x3ff; - if (rx[0] == 0x132 || rx[1] == 0x036) - return (1); /* Rx failed. */ - - return (3); /* Both Tx and Rx succeeded. */ + RTWN_LOCK(sc); + if (sc->sc_flags & RTWN_RUNNING) + rtwn_set_promisc(sc); + RTWN_UNLOCK(sc); } static void -rtwn_iq_calib_run(struct rtwn_softc *sc, int n, uint16_t tx[2][2], - uint16_t rx[2][2]) +rtwn_update_mcast(struct ieee80211com *ic) { - /* Registers to save and restore during IQ calibration. */ - struct iq_cal_regs { - uint32_t adda[16]; - uint8_t txpause; - uint8_t bcn_ctrl; - uint8_t ustime_tsf; - uint32_t gpio_muxcfg; - uint32_t ofdm0_trxpathena; - uint32_t ofdm0_trmuxpar; - uint32_t fpga0_rfifacesw1; - } iq_cal_regs; - static const uint16_t reg_adda[16] = { - 0x85c, 0xe6c, 0xe70, 0xe74, - 0xe78, 0xe7c, 0xe80, 0xe84, - 0xe88, 0xe8c, 0xed0, 0xed4, - 0xed8, 0xedc, 0xee0, 0xeec - }; - int i, chain; - uint32_t hssi_param1; - - if (n == 0) { - for (i = 0; i < nitems(reg_adda); i++) - iq_cal_regs.adda[i] = rtwn_bb_read(sc, reg_adda[i]); - - iq_cal_regs.txpause = rtwn_read_1(sc, R92C_TXPAUSE); - iq_cal_regs.bcn_ctrl = rtwn_read_1(sc, R92C_BCN_CTRL); - iq_cal_regs.ustime_tsf = rtwn_read_1(sc, R92C_USTIME_TSF); - iq_cal_regs.gpio_muxcfg = rtwn_read_4(sc, R92C_GPIO_MUXCFG); - } - - if (sc->ntxchains == 1) { - rtwn_bb_write(sc, reg_adda[0], 0x0b1b25a0); - for (i = 1; i < nitems(reg_adda); i++) - rtwn_bb_write(sc, reg_adda[i], 0x0bdb25a0); - } else { - for (i = 0; i < nitems(reg_adda); i++) - rtwn_bb_write(sc, reg_adda[i], 0x04db25a4); - } - - hssi_param1 = rtwn_bb_read(sc, R92C_HSSI_PARAM1(0)); - if (!(hssi_param1 & R92C_HSSI_PARAM1_PI)) { - rtwn_bb_write(sc, R92C_HSSI_PARAM1(0), - hssi_param1 | R92C_HSSI_PARAM1_PI); - rtwn_bb_write(sc, R92C_HSSI_PARAM1(1), - hssi_param1 | R92C_HSSI_PARAM1_PI); - } - - if (n == 0) { - iq_cal_regs.ofdm0_trxpathena = - rtwn_bb_read(sc, R92C_OFDM0_TRXPATHENA); - iq_cal_regs.ofdm0_trmuxpar = - rtwn_bb_read(sc, R92C_OFDM0_TRMUXPAR); - iq_cal_regs.fpga0_rfifacesw1 = - rtwn_bb_read(sc, R92C_FPGA0_RFIFACESW(1)); - } - - rtwn_bb_write(sc, R92C_OFDM0_TRXPATHENA, 0x03a05600); - rtwn_bb_write(sc, R92C_OFDM0_TRMUXPAR, 0x000800e4); - rtwn_bb_write(sc, R92C_FPGA0_RFIFACESW(1), 0x22204000); - if (sc->ntxchains > 1) { - rtwn_bb_write(sc, R92C_LSSI_PARAM(0), 0x00010000); - rtwn_bb_write(sc, R92C_LSSI_PARAM(1), 0x00010000); - } - - rtwn_write_1(sc, R92C_TXPAUSE, 0x3f); - rtwn_write_1(sc, R92C_BCN_CTRL, iq_cal_regs.bcn_ctrl & ~(0x08)); - rtwn_write_1(sc, R92C_USTIME_TSF, iq_cal_regs.ustime_tsf & ~(0x08)); - rtwn_write_1(sc, R92C_GPIO_MUXCFG, - iq_cal_regs.gpio_muxcfg & ~(0x20)); - - rtwn_bb_write(sc, 0x0b68, 0x00080000); - if (sc->ntxchains > 1) - rtwn_bb_write(sc, 0x0b6c, 0x00080000); - - rtwn_bb_write(sc, 0x0e28, 0x80800000); - rtwn_bb_write(sc, 0x0e40, 0x01007c00); - rtwn_bb_write(sc, 0x0e44, 0x01004800); - - rtwn_bb_write(sc, 0x0b68, 0x00080000); - - for (chain = 0; chain < sc->ntxchains; chain++) { - if (chain > 0) { - /* Put chain 0 on standby. */ - rtwn_bb_write(sc, 0x0e28, 0x00); - rtwn_bb_write(sc, R92C_LSSI_PARAM(0), 0x00010000); - rtwn_bb_write(sc, 0x0e28, 0x80800000); - - /* Enable chain 1. */ - for (i = 0; i < nitems(reg_adda); i++) - rtwn_bb_write(sc, reg_adda[i], 0x0b1b25a4); - } - - /* Run IQ calibration twice. */ - for (i = 0; i < 2; i++) { - int ret; - - ret = rtwn_iq_calib_chain(sc, chain, - tx[chain], rx[chain]); - if (ret == 0) { - DPRINTF(("%s: chain %d: Tx failed.\n", - __func__, chain)); - tx[chain][0] = 0xff; - tx[chain][1] = 0xff; - rx[chain][0] = 0xff; - rx[chain][1] = 0xff; - } else if (ret == 1) { - DPRINTF(("%s: chain %d: Rx failed.\n", - __func__, chain)); - rx[chain][0] = 0xff; - rx[chain][1] = 0xff; - } else if (ret == 3) { - DPRINTF(("%s: chain %d: Both Tx and Rx " - "succeeded.\n", __func__, chain)); - } - } + struct rtwn_softc *sc = ic->ic_softc; - DPRINTF(("%s: results for run %d chain %d: tx[0]=0x%x, " - "tx[1]=0x%x rx[0]=0x%x rx[1]=0x%x\n", __func__, n, chain, - tx[chain][0], tx[chain][1], rx[chain][0], rx[chain][1])); - } + RTWN_LOCK(sc); + if (sc->sc_flags & RTWN_RUNNING) + rtwn_set_multi(sc); + RTWN_UNLOCK(sc); +} - rtwn_bb_write(sc, R92C_OFDM0_TRXPATHENA, - iq_cal_regs.ofdm0_trxpathena); - rtwn_bb_write(sc, R92C_FPGA0_RFIFACESW(1), - iq_cal_regs.fpga0_rfifacesw1); - rtwn_bb_write(sc, R92C_OFDM0_TRMUXPAR, iq_cal_regs.ofdm0_trmuxpar); - - rtwn_bb_write(sc, 0x0e28, 0x00); - rtwn_bb_write(sc, R92C_LSSI_PARAM(0), 0x00032ed3); - if (sc->ntxchains > 1) - rtwn_bb_write(sc, R92C_LSSI_PARAM(1), 0x00032ed3); - - if (n != 0) { - if (!(hssi_param1 & R92C_HSSI_PARAM1_PI)) { - rtwn_bb_write(sc, R92C_HSSI_PARAM1(0), hssi_param1); - rtwn_bb_write(sc, R92C_HSSI_PARAM1(1), hssi_param1); - } +static int +rtwn_set_bssid(struct rtwn_softc *sc, const uint8_t *bssid, int id) +{ + int error; - for (i = 0; i < nitems(reg_adda); i++) - rtwn_bb_write(sc, reg_adda[i], iq_cal_regs.adda[i]); + error = rtwn_write_4(sc, R92C_BSSID(id), le32dec(&bssid[0])); + if (error != 0) + return (error); + error = rtwn_write_2(sc, R92C_BSSID(id) + 4, le16dec(&bssid[4])); - rtwn_write_1(sc, R92C_TXPAUSE, iq_cal_regs.txpause); - rtwn_write_1(sc, R92C_BCN_CTRL, iq_cal_regs.bcn_ctrl); - rtwn_write_1(sc, R92C_USTIME_TSF, iq_cal_regs.ustime_tsf); - rtwn_write_4(sc, R92C_GPIO_MUXCFG, iq_cal_regs.gpio_muxcfg); - } + return (error); } -#define RTWN_IQ_CAL_MAX_TOLERANCE 5 static int -rtwn_iq_calib_compare_results(uint16_t tx1[2][2], uint16_t rx1[2][2], - uint16_t tx2[2][2], uint16_t rx2[2][2], int ntxchains) +rtwn_set_macaddr(struct rtwn_softc *sc, const uint8_t *addr, int id) { - int chain, i, tx_ok[2], rx_ok[2]; - - tx_ok[0] = tx_ok[1] = rx_ok[0] = rx_ok[1] = 0; - for (chain = 0; chain < ntxchains; chain++) { - for (i = 0; i < 2; i++) { - if (tx1[chain][i] == 0xff || tx2[chain][i] == 0xff || - rx1[chain][i] == 0xff || rx2[chain][i] == 0xff) - continue; - - tx_ok[chain] = (abs(tx1[chain][i] - tx2[chain][i]) <= - RTWN_IQ_CAL_MAX_TOLERANCE); + int error; - rx_ok[chain] = (abs(rx1[chain][i] - rx2[chain][i]) <= - RTWN_IQ_CAL_MAX_TOLERANCE); - } - } + error = rtwn_write_4(sc, R92C_MACID(id), le32dec(&addr[0])); + if (error != 0) + return (error); + error = rtwn_write_2(sc, R92C_MACID(id) + 4, le16dec(&addr[4])); - if (ntxchains > 1) - return (tx_ok[0] && tx_ok[1] && rx_ok[0] && rx_ok[1]); - else - return (tx_ok[0] && rx_ok[0]); + return (error); } -#undef RTWN_IQ_CAL_MAX_TOLERANCE -static void -rtwn_iq_calib_write_results(struct rtwn_softc *sc, uint16_t tx[2], - uint16_t rx[2], int chain) +static struct ieee80211_node * +rtwn_node_alloc(struct ieee80211vap *vap, + const uint8_t mac[IEEE80211_ADDR_LEN]) { - uint32_t reg, val, x; - long y, tx_c; - - if (tx[0] == 0xff || tx[1] == 0xff) - return; + struct rtwn_node *un; - reg = rtwn_bb_read(sc, R92C_OFDM0_TXIQIMBALANCE(chain)); - val = ((reg >> 22) & 0x3ff); - x = tx[0]; - if (x & 0x0200) - x |= 0xfc00; - reg = (((x * val) >> 8) & 0x3ff); - rtwn_bb_write(sc, R92C_OFDM0_TXIQIMBALANCE(chain), reg); - - reg = rtwn_bb_read(sc, R92C_OFDM0_ECCATHRESHOLD); - if (((x * val) >> 7) & 0x01) - reg |= 0x80000000; - else - reg &= ~0x80000000; - rtwn_bb_write(sc, R92C_OFDM0_ECCATHRESHOLD, reg); - - y = tx[1]; - if (y & 0x00000200) - y |= 0xfffffc00; - tx_c = (y * val) >> 8; - reg = rtwn_bb_read(sc, R92C_OFDM0_TXAFE(chain)); - reg |= ((((tx_c & 0x3c0) >> 6) << 24) & 0xf0000000); - rtwn_bb_write(sc, R92C_OFDM0_TXAFE(chain), reg); - - reg = rtwn_bb_read(sc, R92C_OFDM0_TXIQIMBALANCE(chain)); - reg |= (((tx_c & 0x3f) << 16) & 0x003F0000); - rtwn_bb_write(sc, R92C_OFDM0_TXIQIMBALANCE(chain), reg); - - reg = rtwn_bb_read(sc, R92C_OFDM0_ECCATHRESHOLD); - if (((y * val) >> 7) & 0x01) - reg |= 0x20000000; - else - reg &= ~0x20000000; - rtwn_bb_write(sc, R92C_OFDM0_ECCATHRESHOLD, reg); + un = malloc(sizeof (struct rtwn_node), M_80211_NODE, + M_NOWAIT | M_ZERO); - if (rx[0] == 0xff || rx[1] == 0xff) - return; + if (un == NULL) + return NULL; - reg = rtwn_bb_read(sc, R92C_OFDM0_RXIQIMBALANCE(chain)); - reg |= (rx[0] & 0x3ff); - rtwn_bb_write(sc, R92C_OFDM0_RXIQIMBALANCE(chain), reg); - reg |= (((rx[1] & 0x03f) << 8) & 0xFC00); - rtwn_bb_write(sc, R92C_OFDM0_RXIQIMBALANCE(chain), reg); + un->id = RTWN_MACID_UNDEFINED; + un->avg_pwdb = -1; - if (chain == 0) { - reg = rtwn_bb_read(sc, R92C_OFDM0_RXIQEXTANTA); - reg |= (((rx[1] & 0xf) >> 6) & 0x000f); - rtwn_bb_write(sc, R92C_OFDM0_RXIQEXTANTA, reg); - } else { - reg = rtwn_bb_read(sc, R92C_OFDM0_AGCRSSITABLE); - reg |= ((((rx[1] & 0xf) >> 6) << 12) & 0xf000); - rtwn_bb_write(sc, R92C_OFDM0_AGCRSSITABLE, reg); - } + return &un->ni; } -#define RTWN_IQ_CAL_NRUN 3 static void -rtwn_iq_calib(struct rtwn_softc *sc) +rtwn_newassoc(struct ieee80211_node *ni, int isnew) { - uint16_t tx[RTWN_IQ_CAL_NRUN][2][2], rx[RTWN_IQ_CAL_NRUN][2][2]; - int n, valid; + struct rtwn_softc *sc = ni->ni_ic->ic_softc; + struct rtwn_node *un = RTWN_NODE(ni); + int id; - valid = 0; - for (n = 0; n < RTWN_IQ_CAL_NRUN; n++) { - rtwn_iq_calib_run(sc, n, tx[n], rx[n]); - - if (n == 0) - continue; + if (!isnew) + return; - /* Valid results remain stable after consecutive runs. */ - valid = rtwn_iq_calib_compare_results(tx[n - 1], rx[n - 1], - tx[n], rx[n], sc->ntxchains); - if (valid) + RTWN_NT_LOCK(sc); + for (id = 0; id <= sc->macid_limit; id++) { + if (id != RTWN_MACID_BC && sc->node_list[id] == NULL) { + un->id = id; + sc->node_list[id] = ni; break; + } } + RTWN_NT_UNLOCK(sc); - if (valid) { - rtwn_iq_calib_write_results(sc, tx[n][0], rx[n][0], 0); - if (sc->ntxchains > 1) - rtwn_iq_calib_write_results(sc, tx[n][1], rx[n][1], 1); + if (id > sc->macid_limit) { + device_printf(sc->sc_dev, "%s: node table is full\n", + __func__); + return; } + +#ifndef RTWN_WITHOUT_UCODE + /* Notify firmware. */ + id |= RTWN_MACID_VALID; + rtwn_cmd_sleepable(sc, &id, sizeof(id), rtwn_set_media_status); +#endif } -#undef RTWN_IQ_CAL_NRUN static void -rtwn_lc_calib(struct rtwn_softc *sc) +rtwn_node_free(struct ieee80211_node *ni) { - uint32_t rf_ac[2]; - uint8_t txmode; - int i; + struct rtwn_softc *sc = ni->ni_ic->ic_softc; + struct rtwn_node *un = RTWN_NODE(ni); - txmode = rtwn_read_1(sc, R92C_OFDM1_LSTF + 3); - if ((txmode & 0x70) != 0) { - /* Disable all continuous Tx. */ - rtwn_write_1(sc, R92C_OFDM1_LSTF + 3, txmode & ~0x70); - - /* Set RF mode to standby mode. */ - for (i = 0; i < sc->nrxchains; i++) { - rf_ac[i] = rtwn_rf_read(sc, i, R92C_RF_AC); - rtwn_rf_write(sc, i, R92C_RF_AC, - RW(rf_ac[i], R92C_RF_AC_MODE, - R92C_RF_AC_MODE_STANDBY)); - } - } else { - /* Block all Tx queues. */ - rtwn_write_1(sc, R92C_TXPAUSE, 0xff); - } - /* Start calibration. */ - rtwn_rf_write(sc, 0, R92C_RF_CHNLBW, - rtwn_rf_read(sc, 0, R92C_RF_CHNLBW) | R92C_RF_CHNLBW_LCSTART); - - /* Give calibration the time to complete. */ - DELAY(100); - - /* Restore configuration. */ - if ((txmode & 0x70) != 0) { - /* Restore Tx mode. */ - rtwn_write_1(sc, R92C_OFDM1_LSTF + 3, txmode); - /* Restore RF mode. */ - for (i = 0; i < sc->nrxchains; i++) - rtwn_rf_write(sc, i, R92C_RF_AC, rf_ac[i]); - } else { - /* Unblock all Tx queues. */ - rtwn_write_1(sc, R92C_TXPAUSE, 0x00); + RTWN_NT_LOCK(sc); + if (un->id != RTWN_MACID_UNDEFINED) { + sc->node_list[un->id] = NULL; +#ifndef RTWN_WITHOUT_UCODE + rtwn_cmd_sleepable(sc, &un->id, sizeof(un->id), + rtwn_set_media_status); +#endif } + RTWN_NT_UNLOCK(sc); + + sc->sc_node_free(ni); } static void -rtwn_temp_calib(struct rtwn_softc *sc) +rtwn_init_beacon_reg(struct rtwn_softc *sc) { - int temp; - - if (sc->thcal_state == 0) { - /* Start measuring temperature. */ - rtwn_rf_write(sc, 0, R92C_RF_T_METER, 0x60); - sc->thcal_state = 1; - return; - } - sc->thcal_state = 0; - - /* Read measured temperature. */ - temp = rtwn_rf_read(sc, 0, R92C_RF_T_METER) & 0x1f; - if (temp == 0) /* Read failed, skip. */ - return; - DPRINTFN(2, ("temperature=%d\n", temp)); - - /* - * Redo IQ and LC calibration if temperature changed significantly - * since last calibration. - */ - if (sc->thcal_lctemp == 0) { - /* First calibration is performed in rtwn_init(). */ - sc->thcal_lctemp = temp; - } else if (abs(temp - sc->thcal_lctemp) > 1) { - DPRINTF(("IQ/LC calib triggered by temp: %d -> %d\n", - sc->thcal_lctemp, temp)); - rtwn_iq_calib(sc); - rtwn_lc_calib(sc); - /* Record temperature of last calibration. */ - sc->thcal_lctemp = temp; - } + rtwn_write_1(sc, R92C_BCN_CTRL(0), R92C_BCN_CTRL_DIS_TSF_UDT0); + rtwn_write_1(sc, R92C_BCN_CTRL(1), R92C_BCN_CTRL_DIS_TSF_UDT0); + rtwn_write_2(sc, R92C_TBTT_PROHIBIT, 0x6404); + rtwn_write_1(sc, R92C_DRVERLYINT, 0x05); + rtwn_write_1(sc, R92C_BCNDMATIM, 0x02); + rtwn_write_2(sc, R92C_BCNTCFG, 0x660f); } static int rtwn_init(struct rtwn_softc *sc) { struct ieee80211com *ic = &sc->sc_ic; - struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); - uint32_t reg; - uint8_t macaddr[IEEE80211_ADDR_LEN]; int i, error; RTWN_LOCK(sc); - if (sc->sc_flags & RTWN_RUNNING) { RTWN_UNLOCK(sc); - return 0; + return (0); } - sc->sc_flags |= RTWN_RUNNING; + sc->sc_flags |= RTWN_STARTED; + + /* Power on adapter. */ + error = rtwn_power_on(sc); + if (error != 0) + goto fail; + +#ifndef RTWN_WITHOUT_UCODE + /* Load 8051 microcode. */ + error = rtwn_load_firmware(sc); + if (error == 0) + sc->sc_flags |= RTWN_FW_LOADED; /* Init firmware commands ring. */ sc->fwcur = 0; +#endif - /* Power on adapter. */ - error = rtwn_power_on(sc); + /* Initialize MAC block. */ + error = rtwn_mac_init(sc); if (error != 0) { - device_printf(sc->sc_dev, "could not power on adapter\n"); + device_printf(sc->sc_dev, + "%s: error while initializing MAC block\n", __func__); goto fail; } /* Initialize DMA. */ error = rtwn_dma_init(sc); - if (error != 0) { - device_printf(sc->sc_dev, "could not initialize DMA\n"); + if (error != 0) goto fail; - } + + /* Drop incorrect TX (USB). */ + rtwn_drop_incorrect_tx(sc); /* Set info size in Rx descriptors (in 64-bit words). */ - rtwn_write_1(sc, R92C_RX_DRVINFO_SZ, 4); + rtwn_write_1(sc, R92C_RX_DRVINFO_SZ, R92C_RX_DRVINFO_SZ_DEF); - /* Disable interrupts. */ - rtwn_write_4(sc, R92C_HISR, 0x00000000); - rtwn_write_4(sc, R92C_HIMR, 0x00000000); + /* Init interrupts. */ + rtwn_init_intr(sc); - /* Set MAC address. */ - IEEE80211_ADDR_COPY(macaddr, vap ? vap->iv_myaddr : ic->ic_macaddr); - for (i = 0; i < IEEE80211_ADDR_LEN; i++) - rtwn_write_1(sc, R92C_MACID + i, macaddr[i]); + for (i = 0; i < nitems(sc->vaps); i++) { + struct rtwn_vap *uvp = sc->vaps[i]; - /* Set initial network type. */ - reg = rtwn_read_4(sc, R92C_CR); - reg = RW(reg, R92C_CR_NETTYPE, R92C_CR_NETTYPE_INFRA); - rtwn_write_4(sc, R92C_CR, reg); + /* Set initial network type. */ + rtwn_set_mode(sc, R92C_MSR_NOLINK, i); - rtwn_rxfilter_init(sc); + if (uvp == NULL) + continue; + + /* Set MAC address. */ + error = rtwn_set_macaddr(sc, uvp->vap.iv_myaddr, uvp->id); + if (error != 0) + goto fail; + } - reg = rtwn_read_4(sc, R92C_RRSR); - reg = RW(reg, R92C_RRSR_RATE_BITMAP, R92C_RRSR_RATE_ALL); - rtwn_write_4(sc, R92C_RRSR, reg); + /* Initialize Rx filter. */ + rtwn_rxfilter_init(sc); /* Set short/long retry limits. */ rtwn_write_2(sc, R92C_RL, - SM(R92C_RL_SRL, 0x07) | SM(R92C_RL_LRL, 0x07)); + SM(R92C_RL_SRL, 0x30) | SM(R92C_RL_LRL, 0x30)); /* Initialize EDCA parameters. */ - rtwn_edca_init(sc); - - /* Set data and response automatic rate fallback retry counts. */ - rtwn_write_4(sc, R92C_DARFRC + 0, 0x01000000); - rtwn_write_4(sc, R92C_DARFRC + 4, 0x07060504); - rtwn_write_4(sc, R92C_RARFRC + 0, 0x01000000); - rtwn_write_4(sc, R92C_RARFRC + 4, 0x07060504); - - rtwn_write_2(sc, R92C_FWHW_TXQ_CTRL, 0x1f80); + rtwn_init_edca(sc); + rtwn_setbits_1(sc, R92C_FWHW_TXQ_CTRL, 0, + R92C_FWHW_TXQ_CTRL_AMPDU_RTY_NEW); /* Set ACK timeout. */ - rtwn_write_1(sc, R92C_ACKTO, 0x40); + rtwn_write_1(sc, R92C_ACKTO, sc->ackto); + + /* Setup aggregation. */ + /* Tx aggregation. */ + rtwn_init_tx_agg(sc); + rtwn_init_rx_agg(sc); /* Initialize beacon parameters. */ - rtwn_write_2(sc, R92C_TBTT_PROHIBIT, 0x6404); - rtwn_write_1(sc, R92C_DRVERLYINT, 0x05); - rtwn_write_1(sc, R92C_BCNDMATIM, 0x02); - rtwn_write_2(sc, R92C_BCNTCFG, 0x660f); + rtwn_init_beacon_reg(sc); - /* Setup AMPDU aggregation. */ - rtwn_write_4(sc, R92C_AGGLEN_LMT, 0x99997631); /* MCS7~0 */ - rtwn_write_1(sc, R92C_AGGR_BREAK_TIME, 0x16); + /* Init A-MPDU parameters. */ + rtwn_init_ampdu(sc); - rtwn_write_1(sc, R92C_BCN_MAX_ERR, 0xff); - rtwn_write_1(sc, R92C_BCN_CTRL, R92C_BCN_CTRL_DIS_TSF_UDT0); + /* Init MACTXEN / MACRXEN after setting RxFF boundary. */ + rtwn_setbits_1(sc, R92C_CR, 0, R92C_CR_MACTXEN | R92C_CR_MACRXEN); - rtwn_write_4(sc, R92C_PIFS, 0x1c); - rtwn_write_4(sc, R92C_MCUTST_1, 0x0); + /* Initialize BB/RF blocks. */ + rtwn_init_bb(sc); + rtwn_init_rf(sc); - /* Load 8051 microcode. */ - error = rtwn_load_firmware(sc); - if (error != 0) - goto fail; + /* Initialize wireless band. */ + rtwn_set_chan(sc, ic->ic_curchan); - /* Initialize MAC/BB/RF blocks. */ - rtwn_mac_init(sc); - rtwn_bb_init(sc); - rtwn_rf_init(sc); + /* Clear per-station keys table. */ + rtwn_init_cam(sc); - /* Turn CCK and OFDM blocks on. */ - reg = rtwn_bb_read(sc, R92C_FPGA0_RFMOD); - reg |= R92C_RFMOD_CCK_EN; - rtwn_bb_write(sc, R92C_FPGA0_RFMOD, reg); - reg = rtwn_bb_read(sc, R92C_FPGA0_RFMOD); - reg |= R92C_RFMOD_OFDM_EN; - rtwn_bb_write(sc, R92C_FPGA0_RFMOD, reg); + /* Enable decryption / encryption. */ + rtwn_init_seccfg(sc); - /* Clear per-station keys table. */ - rtwn_cam_init(sc); + /* Install static keys (if any). */ + for (i = 0; i < nitems(sc->vaps); i++) { + if (sc->vaps[i] != NULL) { + error = rtwn_init_static_keys(sc, sc->vaps[i]); + if (error != 0) + goto fail; + } + } + + /* Initialize antenna selection. */ + rtwn_init_antsel(sc); /* Enable hardware sequence numbering. */ - rtwn_write_1(sc, R92C_HWSEQ_CTRL, 0xff); + rtwn_write_1(sc, R92C_HWSEQ_CTRL, R92C_TX_QUEUE_ALL); - /* Perform LO and IQ calibrations. */ - rtwn_iq_calib(sc); - /* Perform LC calibration. */ - rtwn_lc_calib(sc); + /* Disable BAR. */ + rtwn_write_4(sc, R92C_BAR_MODE_CTRL, 0x0201ffff); - rtwn_pa_bias_init(sc); + /* NAV limit. */ + rtwn_write_1(sc, R92C_NAV_UPPER, 0); /* Initialize GPIO setting. */ - rtwn_write_1(sc, R92C_GPIO_MUXCFG, - rtwn_read_1(sc, R92C_GPIO_MUXCFG) & ~R92C_GPIO_MUXCFG_ENBT); + rtwn_setbits_1(sc, R92C_GPIO_MUXCFG, R92C_GPIO_MUXCFG_ENBT, 0); - /* Fix for lower temperature. */ - rtwn_write_1(sc, 0x15, 0xe9); + /* Initialize MRR. */ + rtwn_mrr_init(sc); - /* CLear pending interrupts. */ - rtwn_write_4(sc, R92C_HISR, 0xffffffff); + /* Device-specific post initialization. */ + rtwn_post_init(sc); - /* Enable interrupts. */ - rtwn_write_4(sc, R92C_HIMR, RTWN_INT_ENABLE); + rtwn_start_xfers(sc); - callout_reset(&sc->watchdog_to, hz, rtwn_watchdog, sc); +#ifndef D4054 + callout_reset(&sc->sc_watchdog_to, hz, rtwn_watchdog, sc); +#endif + sc->sc_flags |= RTWN_RUNNING; fail: - if (error != 0) - rtwn_stop_locked(sc); - RTWN_UNLOCK(sc); - return error; -} - -static void -rtwn_stop_locked(struct rtwn_softc *sc) -{ - uint16_t reg; - int i; - - RTWN_LOCK_ASSERT(sc); - - if (!(sc->sc_flags & RTWN_RUNNING)) - return; - - sc->sc_tx_timer = 0; - callout_stop(&sc->watchdog_to); - callout_stop(&sc->calib_to); - sc->sc_flags &= ~RTWN_RUNNING; - - /* Disable interrupts. */ - rtwn_write_4(sc, R92C_HISR, 0x00000000); - rtwn_write_4(sc, R92C_HIMR, 0x00000000); - - /* Stop hardware. */ - rtwn_write_1(sc, R92C_TXPAUSE, 0xff); - rtwn_write_1(sc, R92C_RF_CTRL, 0x00); - reg = rtwn_read_1(sc, R92C_SYS_FUNC_EN); - reg |= R92C_SYS_FUNC_EN_BB_GLB_RST; - rtwn_write_1(sc, R92C_SYS_FUNC_EN, reg); - reg &= ~R92C_SYS_FUNC_EN_BB_GLB_RST; - rtwn_write_1(sc, R92C_SYS_FUNC_EN, reg); - reg = rtwn_read_2(sc, R92C_CR); - reg &= ~(R92C_CR_HCI_TXDMA_EN | R92C_CR_HCI_RXDMA_EN | - R92C_CR_TXDMA_EN | R92C_CR_RXDMA_EN | R92C_CR_PROTOCOL_EN | - R92C_CR_SCHEDULE_EN | R92C_CR_MACTXEN | R92C_CR_MACRXEN | - R92C_CR_ENSEC); - rtwn_write_2(sc, R92C_CR, reg); - if (rtwn_read_1(sc, R92C_MCUFWDL) & R92C_MCUFWDL_RAM_DL_SEL) - rtwn_fw_reset(sc); - /* TODO: linux does additional btcoex stuff here */ - rtwn_write_2(sc, R92C_AFE_PLL_CTRL, 0x80); /* linux magic number */ - rtwn_write_1(sc, R92C_SPS0_CTRL, 0x23); /* ditto */ - rtwn_write_1(sc, R92C_AFE_XTAL_CTRL, 0x0e); /* different with btcoex */ - rtwn_write_1(sc, R92C_RSV_CTRL, 0x0e); - rtwn_write_1(sc, R92C_APS_FSMCO, R92C_APS_FSMCO_PDN_EN); - - for (i = 0; i < RTWN_NTXQUEUES; i++) - rtwn_reset_tx_list(sc, i); - rtwn_reset_rx_list(sc); + return (error); } static void rtwn_stop(struct rtwn_softc *sc) { - RTWN_LOCK(sc); - rtwn_stop_locked(sc); - RTWN_UNLOCK(sc); -} - -static void -rtwn_intr(void *arg) -{ - struct rtwn_softc *sc = arg; - uint32_t status; - int i; RTWN_LOCK(sc); - status = rtwn_read_4(sc, R92C_HISR); - if (status == 0 || status == 0xffffffff) { + if (!(sc->sc_flags & RTWN_STARTED)) { RTWN_UNLOCK(sc); return; } - /* Disable interrupts. */ - rtwn_write_4(sc, R92C_HIMR, 0x00000000); - - /* Ack interrupts. */ - rtwn_write_4(sc, R92C_HISR, status); - - /* Vendor driver treats RX errors like ROK... */ - if (status & (R92C_IMR_ROK | R92C_IMR_RXFOVW | R92C_IMR_RDU)) { - bus_dmamap_sync(sc->rx_ring.desc_dmat, sc->rx_ring.desc_map, - BUS_DMASYNC_POSTREAD); - - for (i = 0; i < RTWN_RX_LIST_COUNT; i++) { - struct r92c_rx_desc *rx_desc = &sc->rx_ring.desc[i]; - struct rtwn_rx_data *rx_data = &sc->rx_ring.rx_data[i]; - - if (le32toh(rx_desc->rxdw0) & R92C_RXDW0_OWN) - continue; - - rtwn_rx_frame(sc, rx_desc, rx_data, i); - } - } - - if (status & R92C_IMR_BDOK) - rtwn_tx_done(sc, RTWN_BEACON_QUEUE); - if (status & R92C_IMR_HIGHDOK) - rtwn_tx_done(sc, RTWN_HIGH_QUEUE); - if (status & R92C_IMR_MGNTDOK) - rtwn_tx_done(sc, RTWN_MGNT_QUEUE); - if (status & R92C_IMR_BKDOK) - rtwn_tx_done(sc, RTWN_BK_QUEUE); - if (status & R92C_IMR_BEDOK) - rtwn_tx_done(sc, RTWN_BE_QUEUE); - if (status & R92C_IMR_VIDOK) - rtwn_tx_done(sc, RTWN_VI_QUEUE); - if (status & R92C_IMR_VODOK) - rtwn_tx_done(sc, RTWN_VO_QUEUE); - - /* Enable interrupts. */ - rtwn_write_4(sc, R92C_HIMR, RTWN_INT_ENABLE); +#ifndef D4054 + callout_stop(&sc->sc_watchdog_to); +#endif + sc->sc_flags &= ~(RTWN_STARTED | RTWN_RUNNING | RTWN_FW_LOADED); + sc->sc_flags &= ~RTWN_TEMP_MEASURED; + sc->fwver = 0; + sc->thcal_temp = 0; + sc->cur_bcnq_id = RTWN_VAP_ID_INVALID; + +#ifdef D4054 + ieee80211_tx_watchdog_stop(&sc->sc_ic); +#endif + rtwn_abort_xfers(sc); + rtwn_drain_mbufq(sc); + rtwn_power_off(sc); + rtwn_reset_lists(sc, NULL); RTWN_UNLOCK(sc); } + +MODULE_VERSION(rtwn, 2); +MODULE_DEPEND(rtwn, wlan, 1, 1, 1); +#ifndef RTWN_WITHOUT_UCODE +MODULE_DEPEND(rtwn, firmware, 1, 1, 1); +#endif diff --git a/sys/dev/rtwn/if_rtwn_beacon.c b/sys/dev/rtwn/if_rtwn_beacon.c new file mode 100644 index 000000000000..c2329ad517a0 --- /dev/null +++ b/sys/dev/rtwn/if_rtwn_beacon.c @@ -0,0 +1,213 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include + +#include + + +static void +rtwn_reset_beacon_valid(struct rtwn_softc *sc, int id) +{ + + KASSERT (id == 0 || id == 1, ("wrong port id %d\n", id)); + + rtwn_setbits_1_shift(sc, sc->bcn_status_reg[id], + R92C_TDECTRL_BCN_VALID, 0, 2); + + RTWN_DPRINTF(sc, RTWN_DEBUG_BEACON, + "%s: 'beacon valid' bit for vap %d was unset\n", + __func__, id); +} + +static int +rtwn_check_beacon_valid(struct rtwn_softc *sc, int id) +{ + uint16_t reg; + int ntries; + + if (id == RTWN_VAP_ID_INVALID) + return (0); + + reg = sc->bcn_status_reg[id]; + for (ntries = 0; ntries < 10; ntries++) { + if (rtwn_read_4(sc, reg) & R92C_TDECTRL_BCN_VALID) { + RTWN_DPRINTF(sc, RTWN_DEBUG_BEACON, + "%s: beacon for vap %d was recognized\n", + __func__, id); + break; + } + rtwn_delay(sc, 100); + } + if (ntries == 10) + return (ETIMEDOUT); + + return (0); +} + +void +rtwn_switch_bcnq(struct rtwn_softc *sc, int id) +{ + + if (sc->cur_bcnq_id != id) { + /* Wait until any previous transmit completes. */ + (void) rtwn_check_beacon_valid(sc, sc->cur_bcnq_id); + + /* Change current port. */ + rtwn_beacon_select(sc, id); + sc->cur_bcnq_id = id; + } + + /* Reset 'beacon valid' bit. */ + rtwn_reset_beacon_valid(sc, id); +} + +int +rtwn_setup_beacon(struct rtwn_softc *sc, struct ieee80211_node *ni) +{ + struct ieee80211vap *vap = ni->ni_vap; + struct rtwn_vap *uvp = RTWN_VAP(vap); + struct mbuf *m; + + RTWN_ASSERT_LOCKED(sc); + + if (ni->ni_chan == IEEE80211_CHAN_ANYC) + return (EINVAL); + + m = ieee80211_beacon_alloc(ni); + if (m == NULL) { + device_printf(sc->sc_dev, + "%s: could not allocate beacon frame\n", __func__); + return (ENOMEM); + } + + if (uvp->bcn_mbuf != NULL) + m_freem(uvp->bcn_mbuf); + + uvp->bcn_mbuf = m; + + rtwn_beacon_set_rate(sc, &uvp->bcn_desc.txd[0], + IEEE80211_IS_CHAN_5GHZ(ni->ni_chan)); + + return (rtwn_tx_beacon_check(sc, uvp)); +} + +/* + * Push a beacon frame into the chip. Beacon will + * be repeated by the chip every R92C_BCN_INTERVAL. + */ +static int +rtwn_tx_beacon(struct rtwn_softc *sc, struct rtwn_vap *uvp) +{ + int error; + + RTWN_ASSERT_LOCKED(sc); + + RTWN_DPRINTF(sc, RTWN_DEBUG_BEACON, + "%s: sending beacon for vap %d\n", __func__, uvp->id); + + error = rtwn_tx_start(sc, NULL, uvp->bcn_mbuf, &uvp->bcn_desc.txd[0], + IEEE80211_FC0_TYPE_MGT, uvp->id); + + return (error); +} + +void +rtwn_update_beacon(struct ieee80211vap *vap, int item) +{ + struct rtwn_softc *sc = vap->iv_ic->ic_softc; + struct rtwn_vap *uvp = RTWN_VAP(vap); + struct ieee80211_beacon_offsets *bo = &vap->iv_bcn_off; + struct ieee80211_node *ni = vap->iv_bss; + int mcast = 0; + + RTWN_LOCK(sc); + if (uvp->bcn_mbuf == NULL) { + uvp->bcn_mbuf = ieee80211_beacon_alloc(ni); + if (uvp->bcn_mbuf == NULL) { + device_printf(sc->sc_dev, + "%s: could not allocate beacon frame\n", __func__); + RTWN_UNLOCK(sc); + return; + } + } + RTWN_UNLOCK(sc); + + if (item == IEEE80211_BEACON_TIM) + mcast = 1; /* XXX */ + + setbit(bo->bo_flags, item); + ieee80211_beacon_update(ni, uvp->bcn_mbuf, mcast); + + RTWN_LOCK(sc); + rtwn_tx_beacon(sc, uvp); + RTWN_UNLOCK(sc); +} + +int +rtwn_tx_beacon_check(struct rtwn_softc *sc, struct rtwn_vap *uvp) +{ + int ntries, error; + + for (ntries = 0; ntries < 5; ntries++) { + rtwn_reset_beacon_valid(sc, uvp->id); + + error = rtwn_tx_beacon(sc, uvp); + if (error != 0) + continue; + + error = rtwn_check_beacon_valid(sc, uvp->id); + if (error == 0) + break; + } + if (ntries == 5) { + device_printf(sc->sc_dev, + "%s: cannot push beacon into chip, error %d!\n", + __func__, error); + return (error); + } + + return (0); +} diff --git a/sys/dev/rtwn/if_rtwn_beacon.h b/sys/dev/rtwn/if_rtwn_beacon.h new file mode 100644 index 000000000000..5bbbcbca07fb --- /dev/null +++ b/sys/dev/rtwn/if_rtwn_beacon.h @@ -0,0 +1,27 @@ +/*- + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef IF_RTWN_BEACON_H +#define IF_RTWN_BEACON_H + +void rtwn_switch_bcnq(struct rtwn_softc *, int); +int rtwn_setup_beacon(struct rtwn_softc *, struct ieee80211_node *); +void rtwn_update_beacon(struct ieee80211vap *, int); +int rtwn_tx_beacon_check(struct rtwn_softc *, struct rtwn_vap *); + +#endif /* IF_RTWN_BEACON_H */ diff --git a/sys/dev/rtwn/if_rtwn_calib.c b/sys/dev/rtwn/if_rtwn_calib.c new file mode 100644 index 000000000000..5c3ed7e6491e --- /dev/null +++ b/sys/dev/rtwn/if_rtwn_calib.c @@ -0,0 +1,128 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include + + +static void +rtwn_temp_calib(struct rtwn_softc *sc) +{ + uint8_t temp; + + RTWN_ASSERT_LOCKED(sc); + + if (!(sc->sc_flags & RTWN_TEMP_MEASURED)) { + /* Start measuring temperature. */ + RTWN_DPRINTF(sc, RTWN_DEBUG_TEMP, + "%s: start measuring temperature\n", __func__); + rtwn_temp_measure(sc); + sc->sc_flags |= RTWN_TEMP_MEASURED; + return; + } + sc->sc_flags &= ~RTWN_TEMP_MEASURED; + + /* Read measured temperature. */ + temp = rtwn_temp_read(sc); + if (temp == 0) { /* Read failed, skip. */ + RTWN_DPRINTF(sc, RTWN_DEBUG_TEMP, + "%s: temperature read failed, skipping\n", __func__); + return; + } + + RTWN_DPRINTF(sc, RTWN_DEBUG_TEMP, + "temperature: previous %u, current %u\n", + sc->thcal_temp, temp); + + /* + * Redo LC/IQ calibration if temperature changed significantly since + * last calibration. + */ + if (sc->thcal_temp == 0xff) { + /* efuse value is absent; do LCK at initial status. */ + rtwn_lc_calib(sc); + + sc->thcal_temp = temp; + } else if (abs(temp - sc->thcal_temp) > sc->temp_delta) { + RTWN_DPRINTF(sc, RTWN_DEBUG_TEMP, + "%s: LC/IQ calib triggered by temp: %u -> %u\n", + __func__, sc->thcal_temp, temp); + + rtwn_lc_calib(sc); + rtwn_iq_calib(sc); + + /* Record temperature of last calibration. */ + sc->thcal_temp = temp; + } +} + +static void +rtwn_calib_cb(struct rtwn_softc *sc, union sec_param *data) +{ + /* Do temperature compensation. */ + rtwn_temp_calib(sc); + +#ifndef RTWN_WITHOUT_UCODE + if (sc->sc_ratectl == RTWN_RATECTL_FW) { + /* Refresh per-node RSSI. */ + rtwn_set_rssi(sc); + } +#endif + + if (sc->vaps_running > sc->monvaps_running) + callout_reset(&sc->sc_calib_to, 2*hz, rtwn_calib_to, sc); +} + +void +rtwn_calib_to(void *arg) +{ + struct rtwn_softc *sc = arg; + + /* Do it in a process context. */ + rtwn_cmd_sleepable(sc, NULL, 0, rtwn_calib_cb); +} diff --git a/sys/dev/rtwn/if_rtwn_calib.h b/sys/dev/rtwn/if_rtwn_calib.h new file mode 100644 index 000000000000..ee50fd06b379 --- /dev/null +++ b/sys/dev/rtwn/if_rtwn_calib.h @@ -0,0 +1,24 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef IF_RTWN_CALIB_H +#define IF_RTWN_CALIB_H + +void rtwn_calib_to(void *); + +#endif /* IF_RTWN_CALIB_H */ diff --git a/sys/dev/rtwn/if_rtwn_cam.c b/sys/dev/rtwn/if_rtwn_cam.c new file mode 100644 index 000000000000..c817a6ea9435 --- /dev/null +++ b/sys/dev/rtwn/if_rtwn_cam.c @@ -0,0 +1,360 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include + +#include + + +void +rtwn_init_cam(struct rtwn_softc *sc) +{ + /* Invalidate all CAM entries. */ + rtwn_write_4(sc, R92C_CAMCMD, + R92C_CAMCMD_POLLING | R92C_CAMCMD_CLR); +} + +static int +rtwn_cam_write(struct rtwn_softc *sc, uint32_t addr, uint32_t data) +{ + int error; + + error = rtwn_write_4(sc, R92C_CAMWRITE, data); + if (error != 0) + return (error); + error = rtwn_write_4(sc, R92C_CAMCMD, + R92C_CAMCMD_POLLING | R92C_CAMCMD_WRITE | + SM(R92C_CAMCMD_ADDR, addr)); + + return (error); +} + +void +rtwn_init_seccfg(struct rtwn_softc *sc) +{ + uint16_t seccfg; + + /* Select decryption / encryption flags. */ + seccfg = 0; + switch (sc->sc_hwcrypto) { + case RTWN_CRYPTO_SW: + break; /* nothing to do */ + case RTWN_CRYPTO_PAIR: + /* NB: TXUCKEY_DEF / RXUCKEY_DEF are required for RTL8192C */ + seccfg = R92C_SECCFG_TXUCKEY_DEF | R92C_SECCFG_RXUCKEY_DEF | + R92C_SECCFG_TXENC_ENA | R92C_SECCFG_RXDEC_ENA | + R92C_SECCFG_MC_SRCH_DIS; + break; + case RTWN_CRYPTO_FULL: + seccfg = R92C_SECCFG_TXUCKEY_DEF | R92C_SECCFG_RXUCKEY_DEF | + R92C_SECCFG_TXENC_ENA | R92C_SECCFG_RXDEC_ENA | + R92C_SECCFG_TXBCKEY_DEF | R92C_SECCFG_RXBCKEY_DEF; + break; + default: + KASSERT(0, ("%s: case %d was not handled\n", __func__, + sc->sc_hwcrypto)); + break; + } + + RTWN_DPRINTF(sc, RTWN_DEBUG_KEY, "%s: seccfg %04X, hwcrypto %d\n", + __func__, seccfg, sc->sc_hwcrypto); + + rtwn_write_2(sc, R92C_SECCFG, seccfg); +} + +int +rtwn_key_alloc(struct ieee80211vap *vap, struct ieee80211_key *k, + ieee80211_keyix *keyix, ieee80211_keyix *rxkeyix) +{ + struct rtwn_softc *sc = vap->iv_ic->ic_softc; + int i, start; + + if (&vap->iv_nw_keys[0] <= k && + k < &vap->iv_nw_keys[IEEE80211_WEP_NKID]) { + *keyix = k - vap->iv_nw_keys; + if (sc->sc_hwcrypto != RTWN_CRYPTO_FULL) + k->wk_flags |= IEEE80211_KEY_SWCRYPT; + else { + RTWN_LOCK(sc); + if (isset(sc->keys_bmap, *keyix)) { + device_printf(sc->sc_dev, + "%s: group key slot %d is already used!\n", + __func__, *keyix); + /* XXX recover? */ + RTWN_UNLOCK(sc); + return (0); + } + + setbit(sc->keys_bmap, *keyix); + RTWN_UNLOCK(sc); + } + + goto end; + } + + start = sc->cam_entry_limit; + switch (sc->sc_hwcrypto) { + case RTWN_CRYPTO_SW: + k->wk_flags |= IEEE80211_KEY_SWCRYPT; + *keyix = 0; + goto end; + case RTWN_CRYPTO_PAIR: + /* all slots for pairwise keys. */ + start = 0; + RTWN_LOCK(sc); + if (sc->sc_flags & RTWN_FLAG_CAM_FIXED) + start = 4; + RTWN_UNLOCK(sc); + break; + case RTWN_CRYPTO_FULL: + /* first 4 - for group keys, others for pairwise. */ + start = 4; + break; + default: + KASSERT(0, ("%s: case %d was not handled!\n", + __func__, sc->sc_hwcrypto)); + break; + } + + RTWN_LOCK(sc); + for (i = start; i < sc->cam_entry_limit; i++) { + if (isclr(sc->keys_bmap, i)) { + setbit(sc->keys_bmap, i); + *keyix = i; + break; + } + } + RTWN_UNLOCK(sc); + if (i == sc->cam_entry_limit) { +#if __FreeBSD_version > 1200008 + /* XXX check and remove keys with the same MAC address */ + k->wk_flags |= IEEE80211_KEY_SWCRYPT; + *keyix = 0; +#else + device_printf(sc->sc_dev, + "%s: no free space in the key table\n", __func__); + return (0); +#endif + } + +end: + *rxkeyix = *keyix; + return (1); +} + +static int +rtwn_key_set_cb0(struct rtwn_softc *sc, const struct ieee80211_key *k) +{ + uint8_t algo, keyid; + int i, error; + + if (sc->sc_hwcrypto == RTWN_CRYPTO_FULL && + k->wk_keyix < IEEE80211_WEP_NKID) + keyid = k->wk_keyix; + else + keyid = 0; + + /* Map net80211 cipher to HW crypto algorithm. */ + switch (k->wk_cipher->ic_cipher) { + case IEEE80211_CIPHER_WEP: + if (k->wk_keylen < 8) + algo = R92C_CAM_ALGO_WEP40; + else + algo = R92C_CAM_ALGO_WEP104; + break; + case IEEE80211_CIPHER_TKIP: + algo = R92C_CAM_ALGO_TKIP; + break; + case IEEE80211_CIPHER_AES_CCM: + algo = R92C_CAM_ALGO_AES; + break; + default: + device_printf(sc->sc_dev, "%s: unknown cipher %u\n", + __func__, k->wk_cipher->ic_cipher); + return (EINVAL); + } + + RTWN_DPRINTF(sc, RTWN_DEBUG_KEY, + "%s: keyix %u, keyid %u, algo %u/%u, flags %04X, len %u, " + "macaddr %s\n", __func__, k->wk_keyix, keyid, + k->wk_cipher->ic_cipher, algo, k->wk_flags, k->wk_keylen, + ether_sprintf(k->wk_macaddr)); + + /* Clear high bits. */ + rtwn_cam_write(sc, R92C_CAM_CTL6(k->wk_keyix), 0); + rtwn_cam_write(sc, R92C_CAM_CTL7(k->wk_keyix), 0); + + /* Write key. */ + for (i = 0; i < 4; i++) { + error = rtwn_cam_write(sc, R92C_CAM_KEY(k->wk_keyix, i), + le32dec(&k->wk_key[i * 4])); + if (error != 0) + goto fail; + } + + /* Write CTL0 last since that will validate the CAM entry. */ + error = rtwn_cam_write(sc, R92C_CAM_CTL1(k->wk_keyix), + le32dec(&k->wk_macaddr[2])); + if (error != 0) + goto fail; + error = rtwn_cam_write(sc, R92C_CAM_CTL0(k->wk_keyix), + SM(R92C_CAM_ALGO, algo) | + SM(R92C_CAM_KEYID, keyid) | + SM(R92C_CAM_MACLO, le16dec(&k->wk_macaddr[0])) | + R92C_CAM_VALID); + if (error != 0) + goto fail; + + return (0); + +fail: + device_printf(sc->sc_dev, "%s fails, error %d\n", __func__, error); + return (error); +} + +static void +rtwn_key_set_cb(struct rtwn_softc *sc, union sec_param *data) +{ + const struct ieee80211_key *k = &data->key; + + (void) rtwn_key_set_cb0(sc, k); +} + +int +rtwn_init_static_keys(struct rtwn_softc *sc, struct rtwn_vap *rvp) +{ + int i, error; + + if (sc->sc_hwcrypto != RTWN_CRYPTO_FULL) + return (0); /* nothing to do */ + + for (i = 0; i < IEEE80211_WEP_NKID; i++) { + const struct ieee80211_key *k = rvp->keys[i]; + if (k != NULL) { + error = rtwn_key_set_cb0(sc, k); + if (error != 0) + return (error); + } + } + + return (0); +} + +static void +rtwn_key_del_cb(struct rtwn_softc *sc, union sec_param *data) +{ + struct ieee80211_key *k = &data->key; + int i; + + RTWN_DPRINTF(sc, RTWN_DEBUG_KEY, + "%s: keyix %u, flags %04X, macaddr %s\n", __func__, + k->wk_keyix, k->wk_flags, ether_sprintf(k->wk_macaddr)); + + rtwn_cam_write(sc, R92C_CAM_CTL0(k->wk_keyix), 0); + rtwn_cam_write(sc, R92C_CAM_CTL1(k->wk_keyix), 0); + + /* Clear key. */ + for (i = 0; i < 4; i++) + rtwn_cam_write(sc, R92C_CAM_KEY(k->wk_keyix, i), 0); + clrbit(sc->keys_bmap, k->wk_keyix); +} + +static int +rtwn_process_key(struct ieee80211vap *vap, const struct ieee80211_key *k, + int set) +{ + struct rtwn_softc *sc = vap->iv_ic->ic_softc; + + if (k->wk_flags & IEEE80211_KEY_SWCRYPT) { + /* Not for us. */ + return (1); + } + + if (&vap->iv_nw_keys[0] <= k && + k < &vap->iv_nw_keys[IEEE80211_WEP_NKID]) { +#if __FreeBSD_version <= 1200008 + struct ieee80211_key *k1 = &vap->iv_nw_keys[k->wk_keyix]; + + if (sc->sc_hwcrypto != RTWN_CRYPTO_FULL) { + k1->wk_flags |= IEEE80211_KEY_SWCRYPT; + return (k->wk_cipher->ic_setkey(k1)); + } else { +#else + if (sc->sc_hwcrypto == RTWN_CRYPTO_FULL) { +#endif + struct rtwn_vap *rvp = RTWN_VAP(vap); + + RTWN_LOCK(sc); + rvp->keys[k->wk_keyix] = (set ? k : NULL); + if ((sc->sc_flags & RTWN_RUNNING) == 0) { + if (!set) + clrbit(sc->keys_bmap, k->wk_keyix); + RTWN_UNLOCK(sc); + return (1); + } + RTWN_UNLOCK(sc); + } + } + + return (!rtwn_cmd_sleepable(sc, k, sizeof(*k), + set ? rtwn_key_set_cb : rtwn_key_del_cb)); +} + +int +rtwn_key_set(struct ieee80211vap *vap, const struct ieee80211_key *k) +{ + return (rtwn_process_key(vap, k, 1)); +} + +int +rtwn_key_delete(struct ieee80211vap *vap, const struct ieee80211_key *k) +{ + return (rtwn_process_key(vap, k, 0)); +} diff --git a/sys/dev/rtwn/if_rtwn_cam.h b/sys/dev/rtwn/if_rtwn_cam.h new file mode 100644 index 000000000000..280509b95ed4 --- /dev/null +++ b/sys/dev/rtwn/if_rtwn_cam.h @@ -0,0 +1,30 @@ +/*- + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef IF_RTWN_CAM_H +#define IF_RTWN_CAM_H + +void rtwn_init_cam(struct rtwn_softc *); +void rtwn_init_seccfg(struct rtwn_softc *); +int rtwn_key_alloc(struct ieee80211vap *, struct ieee80211_key *, + ieee80211_keyix *, ieee80211_keyix *); +int rtwn_key_set(struct ieee80211vap *, const struct ieee80211_key *); +int rtwn_init_static_keys(struct rtwn_softc *, struct rtwn_vap *); +int rtwn_key_delete(struct ieee80211vap *, const struct ieee80211_key *); + +#endif /* IF_RTWN_CAM_H */ diff --git a/sys/dev/rtwn/if_rtwn_debug.h b/sys/dev/rtwn/if_rtwn_debug.h new file mode 100644 index 000000000000..daf628a68763 --- /dev/null +++ b/sys/dev/rtwn/if_rtwn_debug.h @@ -0,0 +1,59 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef IF_RTWN_DEBUG_H +#define IF_RTWN_DEBUG_H + +#include "opt_rtwn.h" + +#ifdef RTWN_DEBUG +enum { + RTWN_DEBUG_XMIT = 0x00000001, /* basic xmit operation */ + RTWN_DEBUG_XMIT_DESC = 0x00000002, /* xmit descriptors */ + RTWN_DEBUG_RECV = 0x00000004, /* basic recv operation */ + RTWN_DEBUG_RECV_DESC = 0x00000008, /* recv descriptors */ + RTWN_DEBUG_STATE = 0x00000010, /* 802.11 state transitions */ + RTWN_DEBUG_RA = 0x00000020, /* f/w rate adaptation setup */ + RTWN_DEBUG_USB = 0x00000040, /* usb requests */ + RTWN_DEBUG_FIRMWARE = 0x00000080, /* firmware(9) loading debug */ + RTWN_DEBUG_BEACON = 0x00000100, /* beacon handling */ + RTWN_DEBUG_INTR = 0x00000200, /* ISR */ + RTWN_DEBUG_TEMP = 0x00000400, /* temperature calibration */ + RTWN_DEBUG_ROM = 0x00000800, /* various ROM info */ + RTWN_DEBUG_KEY = 0x00001000, /* crypto keys management */ + RTWN_DEBUG_TXPWR = 0x00002000, /* dump Tx power values */ + RTWN_DEBUG_RSSI = 0x00004000, /* dump RSSI lookups */ + RTWN_DEBUG_RESET = 0x00008000, /* initialization progress */ + RTWN_DEBUG_CALIB = 0x00010000, /* calibration progress */ + RTWN_DEBUG_ANY = 0xffffffff +}; + +#define RTWN_DPRINTF(_sc, _m, ...) do { \ + if ((_sc)->sc_debug & (_m)) \ + device_printf((_sc)->sc_dev, __VA_ARGS__); \ +} while(0) + +#else +#define RTWN_DPRINTF(_sc, _m, ...) do { (void) _sc; } while (0) +#endif + +#endif /* IF_RTWN_DEBUG_H */ diff --git a/sys/dev/rtwn/if_rtwn_efuse.c b/sys/dev/rtwn/if_rtwn_efuse.c new file mode 100644 index 000000000000..b14f97377dd4 --- /dev/null +++ b/sys/dev/rtwn/if_rtwn_efuse.c @@ -0,0 +1,265 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include + + +static int +rtwn_efuse_switch_power(struct rtwn_softc *sc) +{ + uint32_t reg; + int error; + + error = rtwn_write_1(sc, R92C_EFUSE_ACCESS, R92C_EFUSE_ACCESS_ON); + if (error != 0) + return (error); + + reg = rtwn_read_2(sc, R92C_SYS_FUNC_EN); + if (!(reg & R92C_SYS_FUNC_EN_ELDR)) { + error = rtwn_write_2(sc, R92C_SYS_FUNC_EN, + reg | R92C_SYS_FUNC_EN_ELDR); + if (error != 0) + return (error); + } + reg = rtwn_read_2(sc, R92C_SYS_CLKR); + if ((reg & (R92C_SYS_CLKR_LOADER_EN | R92C_SYS_CLKR_ANA8M)) != + (R92C_SYS_CLKR_LOADER_EN | R92C_SYS_CLKR_ANA8M)) { + error = rtwn_write_2(sc, R92C_SYS_CLKR, + reg | R92C_SYS_CLKR_LOADER_EN | R92C_SYS_CLKR_ANA8M); + if (error != 0) + return (error); + } + + return (0); +} + +int +rtwn_efuse_read_next(struct rtwn_softc *sc, uint8_t *val) +{ + uint32_t reg; + int ntries, error; + + if (sc->next_rom_addr >= sc->efuse_maxlen) + return (EFAULT); + + reg = rtwn_read_4(sc, R92C_EFUSE_CTRL); + reg = RW(reg, R92C_EFUSE_CTRL_ADDR, sc->next_rom_addr); + reg &= ~R92C_EFUSE_CTRL_VALID; + + error = rtwn_write_4(sc, R92C_EFUSE_CTRL, reg); + if (error != 0) + return (error); + /* Wait for read operation to complete. */ + for (ntries = 0; ntries < 100; ntries++) { + reg = rtwn_read_4(sc, R92C_EFUSE_CTRL); + if (reg & R92C_EFUSE_CTRL_VALID) + break; + rtwn_delay(sc, 10); + } + if (ntries == 100) { + device_printf(sc->sc_dev, + "could not read efuse byte at address 0x%x\n", + sc->next_rom_addr); + return (ETIMEDOUT); + } + + *val = MS(reg, R92C_EFUSE_CTRL_DATA); + sc->next_rom_addr++; + + return (0); +} + +static int +rtwn_efuse_read_data(struct rtwn_softc *sc, uint8_t *rom, uint8_t off, + uint8_t msk) +{ + uint8_t reg; + int addr, i, error; + + for (i = 0; i < 4; i++) { + if (msk & (1 << i)) + continue; + + addr = off * 8 + i * 2; + if (addr + 1 >= sc->efuse_maplen) + return (EFAULT); + + error = rtwn_efuse_read_next(sc, ®); + if (error != 0) + return (error); + RTWN_DPRINTF(sc, RTWN_DEBUG_ROM, "rom[0x%03X] == 0x%02X\n", + addr, reg); + rom[addr] = reg; + + error = rtwn_efuse_read_next(sc, ®); + if (error != 0) + return (error); + RTWN_DPRINTF(sc, RTWN_DEBUG_ROM, "rom[0x%03X] == 0x%02X\n", + addr + 1, reg); + rom[addr + 1] = reg; + } + + return (0); +} + +#ifdef RTWN_DEBUG +static void +rtwn_dump_rom_contents(struct rtwn_softc *sc, uint8_t *rom, uint16_t size) +{ + int i; + + /* Dump ROM contents. */ + device_printf(sc->sc_dev, "%s:", __func__); + for (i = 0; i < size; i++) { + if (i % 32 == 0) + printf("\n%03X: ", i); + else if (i % 4 == 0) + printf(" "); + + printf("%02X", rom[i]); + } + printf("\n"); +} +#endif + +static int +rtwn_efuse_read(struct rtwn_softc *sc, uint8_t *rom, uint16_t size) +{ +#define RTWN_CHK(res) do { \ + if ((error = res) != 0) \ + goto end; \ +} while(0) + uint8_t msk, off, reg; + int error; + + /* Read full ROM image. */ + sc->next_rom_addr = 0; + memset(rom, 0xff, size); + + RTWN_CHK(rtwn_efuse_read_next(sc, ®)); + while (reg != 0xff) { + /* check for extended header */ + if ((sc->sc_flags & RTWN_FLAG_EXT_HDR) && + (reg & 0x1f) == 0x0f) { + off = reg >> 5; + RTWN_CHK(rtwn_efuse_read_next(sc, ®)); + + if ((reg & 0x0f) != 0x0f) + off = ((reg & 0xf0) >> 1) | off; + else + continue; + } else + off = reg >> 4; + msk = reg & 0xf; + + RTWN_CHK(rtwn_efuse_read_data(sc, rom, off, msk)); + RTWN_CHK(rtwn_efuse_read_next(sc, ®)); + } + +end: + +#ifdef RTWN_DEBUG + if (sc->sc_debug & RTWN_DEBUG_ROM) + rtwn_dump_rom_contents(sc, rom, size); +#endif + + /* Device-specific. */ + rtwn_efuse_postread(sc); + + if (error != 0) { + device_printf(sc->sc_dev, "%s: error while reading ROM\n", + __func__); + } + + return (error); +#undef RTWN_CHK +} + +static int +rtwn_efuse_read_prepare(struct rtwn_softc *sc, uint8_t *rom, uint16_t size) +{ + int error; + + error = rtwn_efuse_switch_power(sc); + if (error != 0) + goto fail; + + error = rtwn_efuse_read(sc, rom, size); + +fail: + rtwn_write_1(sc, R92C_EFUSE_ACCESS, R92C_EFUSE_ACCESS_OFF); + + return (error); +} + +int +rtwn_read_rom(struct rtwn_softc *sc) +{ + uint8_t *rom; + int error; + + rom = malloc(sc->efuse_maplen, M_TEMP, M_WAITOK); + + /* Read full ROM image. */ + RTWN_LOCK(sc); + error = rtwn_efuse_read_prepare(sc, rom, sc->efuse_maplen); + RTWN_UNLOCK(sc); + if (error != 0) + goto fail; + + /* Parse & save data in softc. */ + rtwn_parse_rom(sc, rom); + +fail: + free(rom, M_TEMP); + + return (error); +} diff --git a/sys/dev/rtwn/if_rtwn_efuse.h b/sys/dev/rtwn/if_rtwn_efuse.h new file mode 100644 index 000000000000..62125c248496 --- /dev/null +++ b/sys/dev/rtwn/if_rtwn_efuse.h @@ -0,0 +1,25 @@ +/*- + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef IF_RTWN_EFUSE_H +#define IF_RTWN_EFUSE_H + +int rtwn_efuse_read_next(struct rtwn_softc *, uint8_t *); +int rtwn_read_rom(struct rtwn_softc *); + +#endif /* IF_RTWN_EFUSE_H */ diff --git a/sys/dev/rtwn/if_rtwn_fw.c b/sys/dev/rtwn/if_rtwn_fw.c new file mode 100644 index 000000000000..5cc71d2b8043 --- /dev/null +++ b/sys/dev/rtwn/if_rtwn_fw.c @@ -0,0 +1,224 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include + + +#ifndef RTWN_WITHOUT_UCODE +static int +rtwn_fw_loadpage(struct rtwn_softc *sc, int page, const uint8_t *buf, + int len) +{ + uint32_t reg; + uint16_t off; + int mlen, error; + + reg = rtwn_read_4(sc, R92C_MCUFWDL); + reg = RW(reg, R92C_MCUFWDL_PAGE, page); + rtwn_write_4(sc, R92C_MCUFWDL, reg); + + error = 0; + off = R92C_FW_START_ADDR; + while (len > 0) { + if (len > R92C_FW_MAX_BLOCK_SIZE) + mlen = R92C_FW_MAX_BLOCK_SIZE; + else if (len > 4) + mlen = 4; + else + mlen = 1; + error = rtwn_fw_write_block(sc, buf, off, mlen); + if (error != 0) + break; + off += mlen; + buf += mlen; + len -= mlen; + } + + if (error != 0) { + RTWN_DPRINTF(sc, RTWN_DEBUG_FIRMWARE, + "%s: could not load firmware page %d (offset %u)\n", + __func__, page, off); + } + + return (error); +} + +static int +rtwn_fw_checksum_report(struct rtwn_softc *sc) +{ + int ntries; + + for (ntries = 0; ntries < 25; ntries++) { + if (rtwn_read_4(sc, R92C_MCUFWDL) & R92C_MCUFWDL_CHKSUM_RPT) + break; + rtwn_delay(sc, 10000); + } + if (ntries == 25) { + RTWN_DPRINTF(sc, RTWN_DEBUG_FIRMWARE, + "timeout waiting for checksum report\n"); + return (ETIMEDOUT); + } + + return (0); +} + +int +rtwn_load_firmware(struct rtwn_softc *sc) +{ + const struct firmware *fw; + const struct r92c_fw_hdr *hdr; + const u_char *ptr; + size_t len; + int ntries, error; + + /* Read firmware image from the filesystem. */ + RTWN_UNLOCK(sc); + fw = firmware_get(sc->fwname); + RTWN_LOCK(sc); + if (fw == NULL) { + device_printf(sc->sc_dev, + "failed loadfirmware of file %s\n", sc->fwname); + return (ENOENT); + } + + len = fw->datasize; + if (len < sizeof(*hdr) || len > sc->fwsize_limit) { + device_printf(sc->sc_dev, "wrong firmware size (%zu)\n", len); + error = EINVAL; + goto fail; + } + ptr = fw->data; + hdr = (const struct r92c_fw_hdr *)ptr; + /* Check if there is a valid FW header and skip it. */ + if ((le16toh(hdr->signature) >> 4) == sc->fwsig) { + sc->fwver = le16toh(hdr->version); + + RTWN_DPRINTF(sc, RTWN_DEBUG_FIRMWARE, + "FW V%u.%u %02u-%02u %02u:%02u\n", + le16toh(hdr->version), le16toh(hdr->subversion), + hdr->month, hdr->date, hdr->hour, hdr->minute); + ptr += sizeof(*hdr); + len -= sizeof(*hdr); + } + + if (rtwn_read_1(sc, R92C_MCUFWDL) & R92C_MCUFWDL_RAM_DL_SEL) { + rtwn_write_1(sc, R92C_MCUFWDL, 0); + rtwn_fw_reset(sc, RTWN_FW_RESET_DOWNLOAD); + } + + /* Enable firmware download. */ + rtwn_fw_download_enable(sc, 1); + + error = 0; /* compiler warning */ + for (ntries = 0; ntries < 3; ntries++) { + const u_char *curr_ptr = ptr; + const int maxpages = len / R92C_FW_PAGE_SIZE; + int page; + + /* Reset the FWDL checksum. */ + rtwn_setbits_1(sc, R92C_MCUFWDL, 0, R92C_MCUFWDL_CHKSUM_RPT); + + for (page = 0; page < maxpages; page++) { + error = rtwn_fw_loadpage(sc, page, curr_ptr, + R92C_FW_PAGE_SIZE); + if (error != 0) + break; + curr_ptr += R92C_FW_PAGE_SIZE; + } + if (page != maxpages) + continue; + + if (len % R92C_FW_PAGE_SIZE != 0) { + error = rtwn_fw_loadpage(sc, page, curr_ptr, + len % R92C_FW_PAGE_SIZE); + if (error != 0) + continue; + } + + /* Wait for checksum report. */ + error = rtwn_fw_checksum_report(sc); + if (error == 0) + break; + } + if (ntries == 3) { + device_printf(sc->sc_dev, + "%s: failed to upload firmware %s (error %d)\n", + __func__, sc->fwname, error); + goto fail; + } + + /* Disable firmware download. */ + rtwn_fw_download_enable(sc, 0); + + rtwn_setbits_4(sc, R92C_MCUFWDL, R92C_MCUFWDL_WINTINI_RDY, + R92C_MCUFWDL_RDY); + + rtwn_fw_reset(sc, RTWN_FW_RESET_CHECKSUM); + + /* Wait for firmware readiness. */ + for (ntries = 0; ntries < 20; ntries++) { + if (rtwn_read_4(sc, R92C_MCUFWDL) & R92C_MCUFWDL_WINTINI_RDY) + break; + rtwn_delay(sc, 10000); + } + if (ntries == 20) { + device_printf(sc->sc_dev, + "timeout waiting for firmware readiness\n"); + error = ETIMEDOUT; + goto fail; + } +fail: + firmware_put(fw, FIRMWARE_UNLOAD); + return (error); +} +#endif diff --git a/sys/dev/rtwn/if_rtwn_fw.h b/sys/dev/rtwn/if_rtwn_fw.h new file mode 100644 index 000000000000..41e84ee82f17 --- /dev/null +++ b/sys/dev/rtwn/if_rtwn_fw.h @@ -0,0 +1,59 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef IF_RTWN_FW_H +#define IF_RTWN_FW_H + +/* + * Firmware base address. + */ +#define R92C_FW_START_ADDR 0x1000 +#define R92C_FW_PAGE_SIZE 4096 +#define R92C_FW_MAX_BLOCK_SIZE 196 + +/* + * Firmware image header. + */ +struct r92c_fw_hdr { + /* QWORD0 */ + uint16_t signature; + uint8_t category; + uint8_t function; + uint16_t version; + uint16_t subversion; + /* QWORD1 */ + uint8_t month; + uint8_t date; + uint8_t hour; + uint8_t minute; + uint16_t ramcodesize; + uint16_t reserved2; + /* QWORD2 */ + uint32_t svnidx; + uint32_t reserved3; + /* QWORD3 */ + uint32_t reserved4; + uint32_t reserved5; +} __packed; + + +int rtwn_load_firmware(struct rtwn_softc *); + +#endif /* IF_RTWN_FW_H */ diff --git a/sys/dev/rtwn/if_rtwn_nop.h b/sys/dev/rtwn/if_rtwn_nop.h new file mode 100644 index 000000000000..2b8b3e1a067a --- /dev/null +++ b/sys/dev/rtwn/if_rtwn_nop.h @@ -0,0 +1,69 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef IF_RTWN_NOP_H +#define IF_RTWN_NOP_H + +static __inline void +rtwn_nop_softc(struct rtwn_softc *sc) +{ +} + +static __inline int +rtwn_nop_int_softc(struct rtwn_softc *sc) +{ + return (0); +} + +static __inline int +rtwn_nop_int_softc_mbuf(struct rtwn_softc *sc, struct mbuf *m) +{ + return (0); +} + +static __inline void +rtwn_nop_softc_int(struct rtwn_softc *sc, int id) +{ +} + +static __inline void +rtwn_nop_softc_uint32(struct rtwn_softc *sc, uint32_t reg) +{ +} + +static __inline void +rtwn_nop_softc_chan(struct rtwn_softc *sc, struct ieee80211_channel *c) +{ +} + +static __inline void +rtwn_nop_softc_vap(struct rtwn_softc *sc, struct ieee80211vap *vap) +{ +} + +static __inline void +rtwn_nop_softc_uint8_int(struct rtwn_softc *sc, uint8_t *buf, int len) +{ +} + +static __inline void +rtwn_nop_void_int(void *buf, int is5ghz) +{ +} + +#endif /* IF_RTWN_NOP_H */ diff --git a/sys/dev/rtwn/if_rtwn_ridx.h b/sys/dev/rtwn/if_rtwn_ridx.h new file mode 100644 index 000000000000..eef438984f56 --- /dev/null +++ b/sys/dev/rtwn/if_rtwn_ridx.h @@ -0,0 +1,94 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef IF_RTWN_RIDX_H +#define IF_RTWN_RIDX_H + +/* HW rate indices. */ +#define RTWN_RIDX_CCK1 0 +#define RTWN_RIDX_CCK2 1 +#define RTWN_RIDX_CCK55 2 +#define RTWN_RIDX_CCK11 3 +#define RTWN_RIDX_OFDM6 4 +#define RTWN_RIDX_OFDM9 5 +#define RTWN_RIDX_OFDM12 6 +#define RTWN_RIDX_OFDM18 7 +#define RTWN_RIDX_OFDM24 8 +#define RTWN_RIDX_OFDM36 9 +#define RTWN_RIDX_OFDM48 10 +#define RTWN_RIDX_OFDM54 11 +#define RTWN_RIDX_MCS(i) (12 + (i)) + +#define RTWN_RIDX_COUNT 28 +#define RTWN_RIDX_UNKNOWN (uint8_t)-1 + +#define RTWN_RATE_IS_CCK(rate) ((rate) <= RTWN_RIDX_CCK11) +#define RTWN_RATE_IS_OFDM(rate) \ + ((rate) >= RTWN_RIDX_OFDM6 && (rate) != RTWN_RIDX_UNKNOWN) + + +static const uint8_t ridx2rate[] = + { 2, 4, 11, 22, 12, 18, 24, 36, 48, 72, 96, 108 }; + +static __inline uint8_t +rate2ridx(uint8_t rate) +{ + if (rate & IEEE80211_RATE_MCS) { + /* 11n rates start at idx 12 */ + return ((rate & 0xf) + 12); + } + switch (rate) { + /* 11g */ + case 12: return 4; + case 18: return 5; + case 24: return 6; + case 36: return 7; + case 48: return 8; + case 72: return 9; + case 96: return 10; + case 108: return 11; + /* 11b */ + case 2: return 0; + case 4: return 1; + case 11: return 2; + case 22: return 3; + default: return RTWN_RIDX_UNKNOWN; + } +} + +/* XXX move to net80211 */ +static __inline__ uint8_t +rtwn_ctl_mcsrate(const struct ieee80211_rate_table *rt, uint8_t ridx) +{ + uint8_t cix, rate; + + /* Check if we are using MCS rate. */ + KASSERT(ridx >= RTWN_RIDX_MCS(0) && ridx != RTWN_RIDX_UNKNOWN, + ("bad mcs rate index %d", ridx)); + + rate = (ridx - RTWN_RIDX_MCS(0)) | IEEE80211_RATE_MCS; + cix = rt->info[rt->rateCodeToIndex[rate]].ctlRateIndex; + KASSERT(cix != (uint8_t)-1, ("rate %d (%d) has no info", rate, ridx)); + return rt->info[cix].dot11Rate; +} + +#endif /* IF_RTWN_RIDX_H */ diff --git a/sys/dev/rtwn/if_rtwn_rx.c b/sys/dev/rtwn/if_rtwn_rx.c new file mode 100644 index 000000000000..6ee05a3ff4a1 --- /dev/null +++ b/sys/dev/rtwn/if_rtwn_rx.c @@ -0,0 +1,452 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include + + +void +rtwn_get_rates(struct rtwn_softc *sc, const struct ieee80211_rateset *rs, + const struct ieee80211_htrateset *rs_ht, uint32_t *rates_p, + int *maxrate_p, int basic_rates) +{ + uint32_t rates; + uint8_t ridx; + int i, maxrate; + + /* Get rates mask. */ + rates = 0; + maxrate = 0; + + /* This is for 11bg */ + for (i = 0; i < rs->rs_nrates; i++) { + /* Convert 802.11 rate to HW rate index. */ + ridx = rate2ridx(IEEE80211_RV(rs->rs_rates[i])); + if (ridx == RTWN_RIDX_UNKNOWN) /* Unknown rate, skip. */ + continue; + if (((rs->rs_rates[i] & IEEE80211_RATE_BASIC) != 0) || + !basic_rates) { + rates |= 1 << ridx; + if (ridx > maxrate) + maxrate = ridx; + } + } + + /* If we're doing 11n, enable 11n rates */ + if (rs_ht != NULL && !basic_rates) { + for (i = 0; i < rs_ht->rs_nrates; i++) { + if ((rs_ht->rs_rates[i] & 0x7f) > 0xf) + continue; + /* 11n rates start at index 12 */ + ridx = RTWN_RIDX_MCS((rs_ht->rs_rates[i]) & 0xf); + rates |= (1 << ridx); + + /* Guard against the rate table being oddly ordered */ + if (ridx > maxrate) + maxrate = ridx; + } + } + + RTWN_DPRINTF(sc, RTWN_DEBUG_RA, + "%s: rates 0x%08X, maxrate %d\n", __func__, rates, maxrate); + + if (rates_p != NULL) + *rates_p = rates; + if (maxrate_p != NULL) + *maxrate_p = maxrate; +} + +void +rtwn_set_basicrates(struct rtwn_softc *sc, uint32_t rates) +{ + + RTWN_DPRINTF(sc, RTWN_DEBUG_RA, "%s: rates 0x%08X\n", __func__, rates); + + rtwn_setbits_4(sc, R92C_RRSR, R92C_RRSR_RATE_BITMAP_M, rates); +} + +static void +rtwn_update_avgrssi(struct rtwn_softc *sc, struct rtwn_node *un, int rate) +{ + int pwdb; + + /* Convert antenna signal to percentage. */ + if (un->last_rssi <= -100 || un->last_rssi >= 20) + pwdb = 0; + else if (un->last_rssi >= 0) + pwdb = 100; + else + pwdb = 100 + un->last_rssi; + if (RTWN_RATE_IS_CCK(rate)) { + /* CCK gain is smaller than OFDM/MCS gain. */ + pwdb += 6; + if (pwdb > 100) + pwdb = 100; + if (pwdb <= 14) + pwdb -= 4; + else if (pwdb <= 26) + pwdb -= 8; + else if (pwdb <= 34) + pwdb -= 6; + else if (pwdb <= 42) + pwdb -= 2; + } + + if (un->avg_pwdb == -1) /* Init. */ + un->avg_pwdb = pwdb; + else if (un->avg_pwdb < pwdb) + un->avg_pwdb = ((un->avg_pwdb * 19 + pwdb) / 20) + 1; + else + un->avg_pwdb = ((un->avg_pwdb * 19 + pwdb) / 20); + + RTWN_DPRINTF(sc, RTWN_DEBUG_RSSI, + "MACID %d, PWDB %d, EMA %d\n", un->id, pwdb, un->avg_pwdb); +} + +static int8_t +rtwn_get_rssi(struct rtwn_softc *sc, int rate, void *physt) +{ + int8_t rssi; + + if (RTWN_RATE_IS_CCK(rate)) + rssi = rtwn_get_rssi_cck(sc, physt); + else /* OFDM/HT. */ + rssi = rtwn_get_rssi_ofdm(sc, physt); + + return (rssi); +} + +static uint32_t +rtwn_get_tsf_low(struct rtwn_softc *sc, int id) +{ + return (rtwn_read_4(sc, R92C_TSFTR(id))); +} + +static uint32_t +rtwn_get_tsf_high(struct rtwn_softc *sc, int id) +{ + return (rtwn_read_4(sc, R92C_TSFTR(id) + 4)); +} + +static void +rtwn_get_tsf(struct rtwn_softc *sc, uint64_t *buf, int id) +{ + /* NB: we cannot read it at once. */ + *buf = rtwn_get_tsf_high(sc, id); + *buf <<= 32; + *buf += rtwn_get_tsf_low(sc, id); +} + +struct ieee80211_node * +rtwn_rx_common(struct rtwn_softc *sc, struct mbuf *m, void *desc, + int8_t *rssi) +{ + struct ieee80211com *ic = &sc->sc_ic; + struct ieee80211_node *ni; + struct ieee80211_frame_min *wh; + struct rtwn_node *un; + struct r92c_rx_stat *stat; + uint32_t rxdw0, rxdw3; + int cipher, infosz, pktlen, rate, shift; + + stat = desc; + rxdw0 = le32toh(stat->rxdw0); + rxdw3 = le32toh(stat->rxdw3); + + cipher = MS(rxdw0, R92C_RXDW0_CIPHER); + infosz = MS(rxdw0, R92C_RXDW0_INFOSZ) * 8; + pktlen = MS(rxdw0, R92C_RXDW0_PKTLEN); + shift = MS(rxdw0, R92C_RXDW0_SHIFT); + rate = MS(rxdw3, R92C_RXDW3_RATE); + + wh = (struct ieee80211_frame_min *)(mtodo(m, shift + infosz)); + if ((wh->i_fc[1] & IEEE80211_FC1_PROTECTED) && + cipher != R92C_CAM_ALGO_NONE) + m->m_flags |= M_WEP; + + if (pktlen >= sizeof(*wh)) + ni = ieee80211_find_rxnode(ic, wh); + else + ni = NULL; + un = RTWN_NODE(ni); + + /* Get RSSI from PHY status descriptor if present. */ + if (infosz != 0 && (rxdw0 & R92C_RXDW0_PHYST)) { + *rssi = rtwn_get_rssi(sc, rate, mtod(m, void *)); + RTWN_DPRINTF(sc, RTWN_DEBUG_RSSI, "%s: rssi %d, ridx %d\n", + __func__, *rssi, rate); + + sc->last_rssi = *rssi; + if (un != NULL) { + un->last_rssi = *rssi; + + /* Update our average RSSI. */ + rtwn_update_avgrssi(sc, un, rate); + } + } else + *rssi = (un != NULL) ? un->last_rssi : sc->last_rssi; + + if (ieee80211_radiotap_active(ic)) { + struct rtwn_rx_radiotap_header *tap = &sc->sc_rxtap; + int id = RTWN_VAP_ID_INVALID; + + if (ni != NULL) + id = RTWN_VAP(ni->ni_vap)->id; + if (id == RTWN_VAP_ID_INVALID) + id = 0; + + tap->wr_flags = rtwn_rx_radiotap_flags(sc, desc); + tap->wr_tsft = rtwn_get_tsf_high(sc, id); + if (le32toh(stat->tsf_low) > rtwn_get_tsf_low(sc, id)) + tap->wr_tsft--; + tap->wr_tsft = (uint64_t)htole32(tap->wr_tsft) << 32; + tap->wr_tsft += stat->tsf_low; + + /* XXX 20/40? */ + + /* Map HW rate index to 802.11 rate. */ + if (rate < RTWN_RIDX_MCS(0)) + tap->wr_rate = ridx2rate[rate]; + else /* MCS0~15. */ + tap->wr_rate = IEEE80211_RATE_MCS | (rate - 12); + + tap->wr_dbm_antsignal = *rssi; + tap->wr_dbm_antnoise = RTWN_NOISE_FLOOR; + } + + /* Drop PHY descriptor. */ + m_adj(m, infosz + shift); + + return (ni); +} + +void +rtwn_adhoc_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m, int subtype, + const struct ieee80211_rx_stats *rxs, + int rssi, int nf) +{ + struct ieee80211vap *vap = ni->ni_vap; + struct rtwn_softc *sc = vap->iv_ic->ic_softc; + struct rtwn_vap *uvp = RTWN_VAP(vap); + uint64_t ni_tstamp, curr_tstamp; + + uvp->recv_mgmt(ni, m, subtype, rxs, rssi, nf); + + if (vap->iv_state == IEEE80211_S_RUN && + (subtype == IEEE80211_FC0_SUBTYPE_BEACON || + subtype == IEEE80211_FC0_SUBTYPE_PROBE_RESP)) { + ni_tstamp = le64toh(ni->ni_tstamp.tsf); + RTWN_LOCK(sc); + rtwn_get_tsf(sc, &curr_tstamp, uvp->id); + RTWN_UNLOCK(sc); + + if (ni_tstamp >= curr_tstamp) + (void) ieee80211_ibss_merge(ni); + } +} + +static uint8_t +rtwn_get_multi_pos(const uint8_t maddr[]) +{ + uint64_t mask = 0x00004d101df481b4; + uint8_t pos = 0x27; /* initial value */ + int i, j; + + for (i = 0; i < IEEE80211_ADDR_LEN; i++) + for (j = (i == 0) ? 1 : 0; j < 8; j++) + if ((maddr[i] >> j) & 1) + pos ^= (mask >> (i * 8 + j - 1)); + + pos &= 0x3f; + + return (pos); +} + +void +rtwn_set_multi(struct rtwn_softc *sc) +{ + struct ieee80211com *ic = &sc->sc_ic; + uint32_t mfilt[2]; + + RTWN_ASSERT_LOCKED(sc); + + /* general structure was copied from ath(4). */ + if (ic->ic_allmulti == 0) { + struct ieee80211vap *vap; + struct ifnet *ifp; + struct ifmultiaddr *ifma; + + /* + * Merge multicast addresses to form the hardware filter. + */ + mfilt[0] = mfilt[1] = 0; + TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) { + ifp = vap->iv_ifp; + if_maddr_rlock(ifp); + TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { + caddr_t dl; + uint8_t pos; + + dl = LLADDR((struct sockaddr_dl *) + ifma->ifma_addr); + pos = rtwn_get_multi_pos(dl); + + mfilt[pos / 32] |= (1 << (pos % 32)); + } + if_maddr_runlock(ifp); + } + } else + mfilt[0] = mfilt[1] = ~0; + + + rtwn_write_4(sc, R92C_MAR + 0, mfilt[0]); + rtwn_write_4(sc, R92C_MAR + 4, mfilt[1]); + + RTWN_DPRINTF(sc, RTWN_DEBUG_STATE, "%s: MC filter %08x:%08x\n", + __func__, mfilt[0], mfilt[1]); +} + +static void +rtwn_rxfilter_update_mgt(struct rtwn_softc *sc) +{ + uint16_t filter; + + filter = 0x7f3f; + if (sc->bcn_vaps == 0) { /* STA and/or MONITOR mode vaps */ + filter &= ~( + R92C_RXFLTMAP_SUBTYPE(IEEE80211_FC0_SUBTYPE_ASSOC_REQ) | + R92C_RXFLTMAP_SUBTYPE(IEEE80211_FC0_SUBTYPE_REASSOC_REQ) | + R92C_RXFLTMAP_SUBTYPE(IEEE80211_FC0_SUBTYPE_PROBE_REQ)); + } + if (sc->ap_vaps == sc->nvaps - sc->mon_vaps) { /* AP vaps only */ + filter &= ~( + R92C_RXFLTMAP_SUBTYPE(IEEE80211_FC0_SUBTYPE_ASSOC_RESP) | + R92C_RXFLTMAP_SUBTYPE(IEEE80211_FC0_SUBTYPE_REASSOC_RESP)); + } + rtwn_write_2(sc, R92C_RXFLTMAP0, filter); +} + +void +rtwn_rxfilter_update(struct rtwn_softc *sc) +{ + + RTWN_ASSERT_LOCKED(sc); + + /* Filter for management frames. */ + rtwn_rxfilter_update_mgt(sc); + + /* Update Rx filter. */ + rtwn_set_promisc(sc); +} + +void +rtwn_rxfilter_init(struct rtwn_softc *sc) +{ + uint32_t rcr; + + RTWN_ASSERT_LOCKED(sc); + + /* Setup multicast filter. */ + rtwn_set_multi(sc); + + /* Reject all control frames. */ + rtwn_write_2(sc, R92C_RXFLTMAP1, 0x0000); + + /* Reject all data frames. */ + rtwn_write_2(sc, R92C_RXFLTMAP2, 0x0000); + + rcr = sc->rcr; + rcr |= R92C_RCR_AM | R92C_RCR_AB | R92C_RCR_APM | + R92C_RCR_HTC_LOC_CTRL | R92C_RCR_APP_PHYSTS | + R92C_RCR_APP_ICV | R92C_RCR_APP_MIC; + + /* Set Rx filter. */ + rtwn_write_4(sc, R92C_RCR, rcr); + + /* Update dynamic Rx filter parts. */ + rtwn_rxfilter_update(sc); +} + +void +rtwn_set_rx_bssid_all(struct rtwn_softc *sc, int enable) +{ + if (enable) + rtwn_setbits_4(sc, R92C_RCR, R92C_RCR_CBSSID_BCN, 0); + else + rtwn_setbits_4(sc, R92C_RCR, 0, R92C_RCR_CBSSID_BCN); +} + +void +rtwn_set_promisc(struct rtwn_softc *sc) +{ + struct ieee80211com *ic = &sc->sc_ic; + uint32_t mask1, mask2; + + RTWN_ASSERT_LOCKED(sc); + + mask1 = R92C_RCR_ACF | R92C_RCR_ADF | R92C_RCR_AMF | R92C_RCR_AAP; + mask2 = R92C_RCR_APM; + + if (sc->vaps_running != 0) { + if (sc->bcn_vaps == 0) + mask2 |= R92C_RCR_CBSSID_BCN; + if (sc->ap_vaps == 0) + mask2 |= R92C_RCR_CBSSID_DATA; + } + + if (ic->ic_promisc == 0 && sc->mon_vaps == 0) + rtwn_setbits_4(sc, R92C_RCR, mask1, mask2); + else + rtwn_setbits_4(sc, R92C_RCR, mask2, mask1); +} diff --git a/sys/dev/rtwn/if_rtwn_rx.h b/sys/dev/rtwn/if_rtwn_rx.h new file mode 100644 index 000000000000..1f2031cf889a --- /dev/null +++ b/sys/dev/rtwn/if_rtwn_rx.h @@ -0,0 +1,38 @@ +/*- + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef IF_RTWN_RX_H +#define IF_RTWN_RX_H + +#define RTWN_NOISE_FLOOR -95 + + +void rtwn_get_rates(struct rtwn_softc *, const struct ieee80211_rateset *, + const struct ieee80211_htrateset *, uint32_t *, int *, int); +void rtwn_set_basicrates(struct rtwn_softc *, uint32_t); +struct ieee80211_node * rtwn_rx_common(struct rtwn_softc *, struct mbuf *, + void *, int8_t *); +void rtwn_adhoc_recv_mgmt(struct ieee80211_node *, struct mbuf *, int, + const struct ieee80211_rx_stats *, int, int); +void rtwn_set_multi(struct rtwn_softc *); +void rtwn_rxfilter_update(struct rtwn_softc *); +void rtwn_rxfilter_init(struct rtwn_softc *); +void rtwn_set_rx_bssid_all(struct rtwn_softc *, int); +void rtwn_set_promisc(struct rtwn_softc *); + +#endif /* IF_RTWN_RX_H */ diff --git a/sys/dev/rtwn/if_rtwn_task.c b/sys/dev/rtwn/if_rtwn_task.c new file mode 100644 index 000000000000..87f695f1020c --- /dev/null +++ b/sys/dev/rtwn/if_rtwn_task.c @@ -0,0 +1,122 @@ +/*- + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include + + +static void +rtwn_cmdq_cb(void *arg, int pending) +{ + struct rtwn_softc *sc = arg; + struct rtwn_cmdq *item; + + /* + * Device must be powered on (via rtwn_power_on()) + * before any command may be sent. + */ + RTWN_LOCK(sc); + if (!(sc->sc_flags & RTWN_RUNNING)) { + RTWN_UNLOCK(sc); + return; + } + + RTWN_CMDQ_LOCK(sc); + while (sc->cmdq[sc->cmdq_first].func != NULL) { + item = &sc->cmdq[sc->cmdq_first]; + sc->cmdq_first = (sc->cmdq_first + 1) % RTWN_CMDQ_SIZE; + RTWN_CMDQ_UNLOCK(sc); + + item->func(sc, &item->data); + + RTWN_CMDQ_LOCK(sc); + memset(item, 0, sizeof (*item)); + } + RTWN_CMDQ_UNLOCK(sc); + RTWN_UNLOCK(sc); +} + +void +rtwn_cmdq_init(struct rtwn_softc *sc) +{ + RTWN_CMDQ_LOCK_INIT(sc); + TASK_INIT(&sc->cmdq_task, 0, rtwn_cmdq_cb, sc); +} + +void +rtwn_cmdq_destroy(struct rtwn_softc *sc) +{ + if (RTWN_CMDQ_LOCK_INITIALIZED(sc)) + RTWN_CMDQ_LOCK_DESTROY(sc); +} + +int +rtwn_cmd_sleepable(struct rtwn_softc *sc, const void *ptr, size_t len, + CMD_FUNC_PROTO) +{ + struct ieee80211com *ic = &sc->sc_ic; + + KASSERT(len <= sizeof(union sec_param), ("buffer overflow")); + + RTWN_CMDQ_LOCK(sc); + if (sc->sc_detached) { + RTWN_CMDQ_UNLOCK(sc); + return (ESHUTDOWN); + } + + if (sc->cmdq[sc->cmdq_last].func != NULL) { + device_printf(sc->sc_dev, "%s: cmdq overflow\n", __func__); + RTWN_CMDQ_UNLOCK(sc); + + return (EAGAIN); + } + + if (ptr != NULL) + memcpy(&sc->cmdq[sc->cmdq_last].data, ptr, len); + sc->cmdq[sc->cmdq_last].func = func; + sc->cmdq_last = (sc->cmdq_last + 1) % RTWN_CMDQ_SIZE; + RTWN_CMDQ_UNLOCK(sc); + + ieee80211_runtask(ic, &sc->cmdq_task); + + return (0); +} diff --git a/sys/dev/rtwn/if_rtwn_task.h b/sys/dev/rtwn/if_rtwn_task.h new file mode 100644 index 000000000000..a9d60c209ccf --- /dev/null +++ b/sys/dev/rtwn/if_rtwn_task.h @@ -0,0 +1,27 @@ +/*- + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef IF_RTWN_TASK_H +#define IF_RTWN_TASK_H + +void rtwn_cmdq_init(struct rtwn_softc *); +void rtwn_cmdq_destroy(struct rtwn_softc *); +int rtwn_cmd_sleepable(struct rtwn_softc *, const void *, size_t, + CMD_FUNC_PROTO); + +#endif /* IF_RTWN_TASK_H */ diff --git a/sys/dev/rtwn/if_rtwn_tx.c b/sys/dev/rtwn/if_rtwn_tx.c new file mode 100644 index 000000000000..90cb3bcc3edd --- /dev/null +++ b/sys/dev/rtwn/if_rtwn_tx.c @@ -0,0 +1,346 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#ifdef IEEE80211_SUPPORT_SUPERG +#include +#endif + +#include +#include + +#include +#include +#include +#include + + +void +rtwn_drain_mbufq(struct rtwn_softc *sc) +{ + struct mbuf *m; + struct ieee80211_node *ni; + RTWN_ASSERT_LOCKED(sc); + while ((m = mbufq_dequeue(&sc->sc_snd)) != NULL) { + ni = (struct ieee80211_node *)m->m_pkthdr.rcvif; + m->m_pkthdr.rcvif = NULL; + ieee80211_free_node(ni); + m_freem(m); + } +} + +#ifdef IEEE80211_SUPPORT_SUPERG +void +rtwn_ff_flush_all(struct rtwn_softc *sc, union sec_param *data) +{ + struct ieee80211com *ic = &sc->sc_ic; + + RTWN_UNLOCK(sc); + ieee80211_ff_flush_all(ic); + RTWN_LOCK(sc); +} +#endif + +static uint8_t +rtwn_get_cipher(u_int ic_cipher) +{ + uint8_t cipher; + + switch (ic_cipher) { + case IEEE80211_CIPHER_NONE: + cipher = RTWN_TXDW1_CIPHER_NONE; + break; + case IEEE80211_CIPHER_WEP: + case IEEE80211_CIPHER_TKIP: + cipher = RTWN_TXDW1_CIPHER_RC4; + break; + case IEEE80211_CIPHER_AES_CCM: + cipher = RTWN_TXDW1_CIPHER_AES; + break; + default: + KASSERT(0, ("%s: unknown cipher %d\n", __func__, + ic_cipher)); + return (RTWN_TXDW1_CIPHER_SM4); + } + + return (cipher); +} + +static int +rtwn_tx_data(struct rtwn_softc *sc, struct ieee80211_node *ni, + struct mbuf *m) +{ + const struct ieee80211_txparam *tp; + struct ieee80211com *ic = &sc->sc_ic; + struct ieee80211vap *vap = ni->ni_vap; + struct ieee80211_key *k = NULL; + struct ieee80211_channel *chan; + struct ieee80211_frame *wh; + struct rtwn_tx_desc_common *txd; + struct rtwn_tx_buf buf; + uint8_t rate, ridx, type; + u_int cipher; + int ismcast, maxretry; + + RTWN_ASSERT_LOCKED(sc); + + wh = mtod(m, struct ieee80211_frame *); + type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK; + ismcast = IEEE80211_IS_MULTICAST(wh->i_addr1); + + chan = (ni->ni_chan != IEEE80211_CHAN_ANYC) ? + ni->ni_chan : ic->ic_curchan; + tp = &vap->iv_txparms[ieee80211_chan2mode(chan)]; + maxretry = tp->maxretry; + + /* Choose a TX rate index. */ + if (type == IEEE80211_FC0_TYPE_MGT) + rate = tp->mgmtrate; + else if (ismcast) + rate = tp->mcastrate; + else if (tp->ucastrate != IEEE80211_FIXED_RATE_NONE) + rate = tp->ucastrate; + else if (m->m_flags & M_EAPOL) + rate = tp->mgmtrate; + else { + if (sc->sc_ratectl == RTWN_RATECTL_NET80211) { + /* XXX pass pktlen */ + (void) ieee80211_ratectl_rate(ni, NULL, 0); + rate = ni->ni_txrate; + } else { + if (ni->ni_flags & IEEE80211_NODE_HT) + rate = IEEE80211_RATE_MCS | 0x4; /* MCS4 */ + else if (ic->ic_curmode != IEEE80211_MODE_11B) + rate = ridx2rate[RTWN_RIDX_OFDM36]; + else + rate = ridx2rate[RTWN_RIDX_CCK55]; + } + } + + ridx = rate2ridx(rate); + + cipher = IEEE80211_CIPHER_NONE; + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { + k = ieee80211_crypto_encap(ni, m); + if (k == NULL) { + device_printf(sc->sc_dev, + "ieee80211_crypto_encap returns NULL.\n"); + return (ENOBUFS); + } + if (!(k->wk_flags & IEEE80211_KEY_SWCRYPT)) + cipher = k->wk_cipher->ic_cipher; + + /* in case packet header moved, reset pointer */ + wh = mtod(m, struct ieee80211_frame *); + } + + /* Fill Tx descriptor. */ + txd = (struct rtwn_tx_desc_common *)&buf; + memset(txd, 0, sc->txdesc_len); + txd->txdw1 = htole32(SM(RTWN_TXDW1_CIPHER, rtwn_get_cipher(cipher))); + + rtwn_fill_tx_desc(sc, ni, m, txd, ridx, maxretry); + + if (ieee80211_radiotap_active_vap(vap)) { + struct rtwn_tx_radiotap_header *tap = &sc->sc_txtap; + + tap->wt_flags = rtwn_tx_radiotap_flags(sc, txd); + if (k != NULL) + tap->wt_flags |= IEEE80211_RADIOTAP_F_WEP; + ieee80211_radiotap_tx(vap, m); + } + + return (rtwn_tx_start(sc, ni, m, (uint8_t *)txd, type, 0)); +} + +static int +rtwn_tx_raw(struct rtwn_softc *sc, struct ieee80211_node *ni, + struct mbuf *m, const struct ieee80211_bpf_params *params) +{ + struct ieee80211vap *vap = ni->ni_vap; + struct ieee80211_key *k = NULL; + struct ieee80211_frame *wh; + struct rtwn_tx_desc_common *txd; + struct rtwn_tx_buf buf; + uint8_t type; + u_int cipher; + + /* Encrypt the frame if need be. */ + cipher = IEEE80211_CIPHER_NONE; + if (params->ibp_flags & IEEE80211_BPF_CRYPTO) { + /* Retrieve key for TX. */ + k = ieee80211_crypto_encap(ni, m); + if (k == NULL) { + device_printf(sc->sc_dev, + "ieee80211_crypto_encap returns NULL.\n"); + return (ENOBUFS); + } + if (!(k->wk_flags & IEEE80211_KEY_SWCRYPT)) + cipher = k->wk_cipher->ic_cipher; + } + + wh = mtod(m, struct ieee80211_frame *); + type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK; + + /* Fill Tx descriptor. */ + txd = (struct rtwn_tx_desc_common *)&buf; + memset(txd, 0, sc->txdesc_len); + txd->txdw1 = htole32(SM(RTWN_TXDW1_CIPHER, rtwn_get_cipher(cipher))); + + rtwn_fill_tx_desc_raw(sc, ni, m, txd, params); + + if (ieee80211_radiotap_active_vap(vap)) { + struct rtwn_tx_radiotap_header *tap = &sc->sc_txtap; + + tap->wt_flags = rtwn_tx_radiotap_flags(sc, txd); + if (k != NULL) + tap->wt_flags |= IEEE80211_RADIOTAP_F_WEP; + ieee80211_radiotap_tx(vap, m); + } + + return (rtwn_tx_start(sc, ni, m, (uint8_t *)txd, type, 0)); +} + +int +rtwn_transmit(struct ieee80211com *ic, struct mbuf *m) +{ + struct rtwn_softc *sc = ic->ic_softc; + int error; + + RTWN_LOCK(sc); + if ((sc->sc_flags & RTWN_RUNNING) == 0) { + RTWN_UNLOCK(sc); + return (ENXIO); + } + error = mbufq_enqueue(&sc->sc_snd, m); + if (error) { + RTWN_UNLOCK(sc); + return (error); + } + rtwn_start(sc); + RTWN_UNLOCK(sc); + + return (0); +} + +void +rtwn_start(struct rtwn_softc *sc) +{ + struct ieee80211_node *ni; + struct mbuf *m; + + RTWN_ASSERT_LOCKED(sc); + while ((m = mbufq_dequeue(&sc->sc_snd)) != NULL) { + if (sc->qfullmsk != 0) { + mbufq_prepend(&sc->sc_snd, m); + break; + } + ni = (struct ieee80211_node *)m->m_pkthdr.rcvif; + m->m_pkthdr.rcvif = NULL; + + RTWN_DPRINTF(sc, RTWN_DEBUG_XMIT, + "%s: called; m %p, ni %p\n", __func__, m, ni); + + if (rtwn_tx_data(sc, ni, m) != 0) { + if_inc_counter(ni->ni_vap->iv_ifp, + IFCOUNTER_OERRORS, 1); + m_freem(m); +#ifdef D4054 + ieee80211_tx_watchdog_refresh(ni->ni_ic, -1, 0); +#endif + ieee80211_free_node(ni); + break; + } + } +} + +int +rtwn_raw_xmit(struct ieee80211_node *ni, struct mbuf *m, + const struct ieee80211_bpf_params *params) +{ + struct ieee80211com *ic = ni->ni_ic; + struct rtwn_softc *sc = ic->ic_softc; + int error; + + RTWN_DPRINTF(sc, RTWN_DEBUG_XMIT, "%s: called; m %p, ni %p\n", + __func__, m, ni); + + /* prevent management frames from being sent if we're not ready */ + RTWN_LOCK(sc); + if (!(sc->sc_flags & RTWN_RUNNING)) { + error = ENETDOWN; + goto end; + } + + if (sc->qfullmsk != 0) { + error = ENOBUFS; + goto end; + } + + if (params == NULL) { + /* + * Legacy path; interpret frame contents to decide + * precisely how to send the frame. + */ + error = rtwn_tx_data(sc, ni, m); + } else { + /* + * Caller supplied explicit parameters to use in + * sending the frame. + */ + error = rtwn_tx_raw(sc, ni, m, params); + } + +end: + if (error != 0) { + if (m->m_flags & M_TXCB) + ieee80211_process_callback(ni, m, 1); + m_freem(m); + } + + RTWN_UNLOCK(sc); + + return (error); +} diff --git a/sys/dev/rtwn/if_rtwn_tx.h b/sys/dev/rtwn/if_rtwn_tx.h new file mode 100644 index 000000000000..d38a8550f2c4 --- /dev/null +++ b/sys/dev/rtwn/if_rtwn_tx.h @@ -0,0 +1,29 @@ +/*- + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef IF_RTWN_TX_H +#define IF_RTWN_TX_H + +void rtwn_drain_mbufq(struct rtwn_softc *); +void rtwn_ff_flush_all(struct rtwn_softc *, union sec_param *); +int rtwn_transmit(struct ieee80211com *, struct mbuf *); +void rtwn_start(struct rtwn_softc *); +int rtwn_raw_xmit(struct ieee80211_node *, struct mbuf *, + const struct ieee80211_bpf_params *); + +#endif /* IF_RTWN_TX_H */ diff --git a/sys/dev/rtwn/if_rtwnreg.h b/sys/dev/rtwn/if_rtwnreg.h index ae209378bd4e..9dc830a2be0a 100644 --- a/sys/dev/rtwn/if_rtwnreg.h +++ b/sys/dev/rtwn/if_rtwnreg.h @@ -1,2101 +1,118 @@ -/* $OpenBSD: if_rtwnreg.h,v 1.3 2015/06/14 08:02:47 stsp Exp $ */ - /*- * Copyright (c) 2010 Damien Bergamini - * Copyright (c) 2015 Stefan Sperling + * Copyright (c) 2016 Andriy Voskoboinyk * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ * $FreeBSD$ */ -#define R92C_MAX_CHAINS 2 - -/* Maximum number of output pipes is 3. */ -#define R92C_MAX_EPOUT 3 - -#define R92C_MAX_TX_PWR 0x3f - -#define R92C_PUBQ_NPAGES 176 -#define R92C_HPQ_NPAGES 41 -#define R92C_LPQ_NPAGES 28 -#define R92C_TXPKTBUF_COUNT 256 -#define R92C_TX_PAGE_COUNT \ - (R92C_PUBQ_NPAGES + R92C_HPQ_NPAGES + R92C_LPQ_NPAGES) -#define R92C_TX_PAGE_BOUNDARY (R92C_TX_PAGE_COUNT + 1) - -#define R92C_H2C_NBOX 4 - -/* USB Requests. */ -#define R92C_REQ_REGS 0x05 - -/* - * MAC registers. - */ -/* System Configuration. */ -#define R92C_SYS_ISO_CTRL 0x000 -#define R92C_SYS_FUNC_EN 0x002 -#define R92C_APS_FSMCO 0x004 -#define R92C_SYS_CLKR 0x008 -#define R92C_AFE_MISC 0x010 -#define R92C_SPS0_CTRL 0x011 -#define R92C_SPS_OCP_CFG 0x018 -#define R92C_RSV_CTRL 0x01c -#define R92C_RF_CTRL 0x01f -#define R92C_LDOA15_CTRL 0x020 -#define R92C_LDOV12D_CTRL 0x021 -#define R92C_LDOHCI12_CTRL 0x022 -#define R92C_LPLDO_CTRL 0x023 -#define R92C_AFE_XTAL_CTRL 0x024 -#define R92C_AFE_PLL_CTRL 0x028 -#define R92C_EFUSE_CTRL 0x030 -#define R92C_EFUSE_TEST 0x034 -#define R92C_PWR_DATA 0x038 -#define R92C_CAL_TIMER 0x03c -#define R92C_ACLK_MON 0x03e -#define R92C_GPIO_MUXCFG 0x040 -#define R92C_GPIO_IO_SEL 0x042 -#define R92C_MAC_PINMUX_CFG 0x043 -#define R92C_GPIO_PIN_CTRL 0x044 -#define R92C_GPIO_INTM 0x048 -#define R92C_LEDCFG0 0x04c -#define R92C_LEDCFG1 0x04d -#define R92C_LEDCFG2 0x04e -#define R92C_LEDCFG3 0x04f -#define R92C_FSIMR 0x050 -#define R92C_FSISR 0x054 -#define R92C_HSIMR 0x058 -#define R92C_HSISR 0x05c -#define R92C_MCUFWDL 0x080 -#define R92C_HMEBOX_EXT(idx) (0x088 + (idx) * 2) -#define R92C_BIST_SCAN 0x0d0 -#define R92C_BIST_RPT 0x0d4 -#define R92C_BIST_ROM_RPT 0x0d8 -#define R92C_USB_SIE_INTF 0x0e0 -#define R92C_PCIE_MIO_INTF 0x0e4 -#define R92C_PCIE_MIO_INTD 0x0e8 -#define R92C_HPON_FSM 0x0ec -#define R92C_SYS_CFG 0x0f0 -/* MAC General Configuration. */ -#define R92C_CR 0x100 -#define R92C_PBP 0x104 -#define R92C_TRXDMA_CTRL 0x10c -#define R92C_TRXFF_BNDY 0x114 -#define R92C_TRXFF_STATUS 0x118 -#define R92C_RXFF_PTR 0x11c -#define R92C_HIMR 0x120 -#define R92C_HISR 0x124 -#define R92C_HIMRE 0x128 -#define R92C_HISRE 0x12c -#define R92C_CPWM 0x12f -#define R92C_FWIMR 0x130 -#define R92C_FWISR 0x134 -#define R92C_PKTBUF_DBG_CTRL 0x140 -#define R92C_PKTBUF_DBG_DATA_L 0x144 -#define R92C_PKTBUF_DBG_DATA_H 0x148 -#define R92C_TC0_CTRL(i) (0x150 + (i) * 4) -#define R92C_TCUNIT_BASE 0x164 -#define R92C_MBIST_START 0x174 -#define R92C_MBIST_DONE 0x178 -#define R92C_MBIST_FAIL 0x17c -#define R92C_C2HEVT_MSG_NORMAL 0x1a0 -#define R92C_C2HEVT_MSG_TEST 0x1b8 -#define R92C_C2HEVT_CLEAR 0x1bf -#define R92C_MCUTST_1 0x1c0 -#define R92C_FMETHR 0x1c8 -#define R92C_HMETFR 0x1cc -#define R92C_HMEBOX(idx) (0x1d0 + (idx) * 4) -#define R92C_LLT_INIT 0x1e0 -#define R92C_BB_ACCESS_CTRL 0x1e8 -#define R92C_BB_ACCESS_DATA 0x1ec -/* Tx DMA Configuration. */ -#define R92C_RQPN 0x200 -#define R92C_FIFOPAGE 0x204 -#define R92C_TDECTRL 0x208 -#define R92C_TXDMA_OFFSET_CHK 0x20c -#define R92C_TXDMA_STATUS 0x210 -#define R92C_RQPN_NPQ 0x214 -/* Rx DMA Configuration. */ -#define R92C_RXDMA_AGG_PG_TH 0x280 -#define R92C_RXPKT_NUM 0x284 -#define R92C_RXDMA_STATUS 0x288 - -#define R92C_PCIE_CTRL_REG 0x300 -#define R92C_INT_MIG 0x304 -#define R92C_BCNQ_DESA 0x308 -#define R92C_HQ_DESA 0x310 -#define R92C_MGQ_DESA 0x318 -#define R92C_VOQ_DESA 0x320 -#define R92C_VIQ_DESA 0x328 -#define R92C_BEQ_DESA 0x330 -#define R92C_BKQ_DESA 0x338 -#define R92C_RX_DESA 0x340 -#define R92C_DBI 0x348 -#define R92C_MDIO 0x354 -#define R92C_DBG_SEL 0x360 -#define R92C_PCIE_HRPWM 0x361 -#define R92C_PCIE_HCPWM 0x363 -#define R92C_UART_CTRL 0x364 -#define R92C_UART_TX_DES 0x370 -#define R92C_UART_RX_DES 0x378 - -#define R92C_VOQ_INFORMATION 0x0400 -#define R92C_VIQ_INFORMATION 0x0404 -#define R92C_BEQ_INFORMATION 0x0408 -#define R92C_BKQ_INFORMATION 0x040C -#define R92C_MGQ_INFORMATION 0x0410 -#define R92C_HGQ_INFORMATION 0x0414 -#define R92C_BCNQ_INFORMATION 0x0418 -#define R92C_CPU_MGQ_INFORMATION 0x041C - -/* Protocol Configuration. */ -#define R92C_FWHW_TXQ_CTRL 0x420 -#define R92C_HWSEQ_CTRL 0x423 -#define R92C_TXPKTBUF_BCNQ_BDNY 0x424 -#define R92C_TXPKTBUF_MGQ_BDNY 0x425 -#define R92C_SPEC_SIFS 0x428 -#define R92C_RL 0x42a -#define R92C_DARFRC 0x430 -#define R92C_RARFRC 0x438 -#define R92C_RRSR 0x440 -#define R92C_ARFR(i) (0x444 + (i) * 4) -#define R92C_AGGLEN_LMT 0x458 -#define R92C_AMPDU_MIN_SPACE 0x45c -#define R92C_TXPKTBUF_WMAC_LBK_BF_HD 0x45d -#define R92C_FAST_EDCA_CTRL 0x460 -#define R92C_RD_RESP_PKT_TH 0x463 -#define R92C_INIRTS_RATE_SEL 0x480 -#define R92C_INIDATA_RATE_SEL(macid) (0x484 + (macid)) -/* EDCA Configuration. */ -#define R92C_EDCA_VO_PARAM 0x500 -#define R92C_EDCA_VI_PARAM 0x504 -#define R92C_EDCA_BE_PARAM 0x508 -#define R92C_EDCA_BK_PARAM 0x50c -#define R92C_BCNTCFG 0x510 -#define R92C_PIFS 0x512 -#define R92C_RDG_PIFS 0x513 -#define R92C_SIFS_CCK 0x514 -#define R92C_SIFS_OFDM 0x516 -#define R92C_AGGR_BREAK_TIME 0x51a -#define R92C_SLOT 0x51b -#define R92C_TX_PTCL_CTRL 0x520 -#define R92C_TXPAUSE 0x522 -#define R92C_DIS_TXREQ_CLR 0x523 -#define R92C_RD_CTRL 0x524 -#define R92C_TBTT_PROHIBIT 0x540 -#define R92C_RD_NAV_NXT 0x544 -#define R92C_NAV_PROT_LEN 0x546 -#define R92C_BCN_CTRL 0x550 -#define R92C_USTIME_TSF 0x551 -#define R92C_MBID_NUM 0x552 -#define R92C_DUAL_TSF_RST 0x553 -#define R92C_BCN_INTERVAL 0x554 -#define R92C_DRVERLYINT 0x558 -#define R92C_BCNDMATIM 0x559 -#define R92C_ATIMWND 0x55a -#define R92C_BCN_MAX_ERR 0x55d -#define R92C_RXTSF_OFFSET_CCK 0x55e -#define R92C_RXTSF_OFFSET_OFDM 0x55f -#define R92C_TSFTR 0x560 -#define R92C_INIT_TSFTR 0x564 -#define R92C_PSTIMER 0x580 -#define R92C_TIMER0 0x584 -#define R92C_TIMER1 0x588 -#define R92C_ACMHWCTRL 0x5c0 -#define R92C_ACMRSTCTRL 0x5c1 -#define R92C_ACMAVG 0x5c2 -#define R92C_VO_ADMTIME 0x5c4 -#define R92C_VI_ADMTIME 0x5c6 -#define R92C_BE_ADMTIME 0x5c8 -#define R92C_EDCA_RANDOM_GEN 0x5cc -#define R92C_SCH_TXCMD 0x5d0 -/* WMAC Configuration. */ -#define R92C_APSD_CTRL 0x600 -#define R92C_BWOPMODE 0x603 -#define R92C_TCR 0x604 -#define R92C_RCR 0x608 -#define R92C_RX_DRVINFO_SZ 0x60f -#define R92C_MACID 0x610 -#define R92C_BSSID 0x618 -#define R92C_MAR 0x620 -#define R92C_MAC_SPEC_SIFS 0x63a -#define R92C_R2T_SIFS 0x63c -#define R92C_T2T_SIFS 0x63e -#define R92C_ACKTO 0x640 -#define R92C_CAMCMD 0x670 -#define R92C_CAMWRITE 0x674 -#define R92C_CAMREAD 0x678 -#define R92C_CAMDBG 0x67c -#define R92C_SECCFG 0x680 -#define R92C_RXFLTMAP0 0x6a0 -#define R92C_RXFLTMAP1 0x6a2 -#define R92C_RXFLTMAP2 0x6a4 - -/* Bits for R92C_SYS_ISO_CTRL. */ -#define R92C_SYS_ISO_CTRL_MD2PP 0x0001 -#define R92C_SYS_ISO_CTRL_UA2USB 0x0002 -#define R92C_SYS_ISO_CTRL_UD2CORE 0x0004 -#define R92C_SYS_ISO_CTRL_PA2PCIE 0x0008 -#define R92C_SYS_ISO_CTRL_PD2CORE 0x0010 -#define R92C_SYS_ISO_CTRL_IP2MAC 0x0020 -#define R92C_SYS_ISO_CTRL_DIOP 0x0040 -#define R92C_SYS_ISO_CTRL_DIOE 0x0080 -#define R92C_SYS_ISO_CTRL_EB2CORE 0x0100 -#define R92C_SYS_ISO_CTRL_DIOR 0x0200 -#define R92C_SYS_ISO_CTRL_PWC_EV25V 0x4000 -#define R92C_SYS_ISO_CTRL_PWC_EV12V 0x8000 - -/* Bits for R92C_SYS_FUNC_EN. */ -#define R92C_SYS_FUNC_EN_BBRSTB 0x0001 -#define R92C_SYS_FUNC_EN_BB_GLB_RST 0x0002 -#define R92C_SYS_FUNC_EN_USBA 0x0004 -#define R92C_SYS_FUNC_EN_UPLL 0x0008 -#define R92C_SYS_FUNC_EN_USBD 0x0010 -#define R92C_SYS_FUNC_EN_DIO_PCIE 0x0020 -#define R92C_SYS_FUNC_EN_PCIEA 0x0040 -#define R92C_SYS_FUNC_EN_PPLL 0x0080 -#define R92C_SYS_FUNC_EN_PCIED 0x0100 -#define R92C_SYS_FUNC_EN_DIOE 0x0200 -#define R92C_SYS_FUNC_EN_CPUEN 0x0400 -#define R92C_SYS_FUNC_EN_DCORE 0x0800 -#define R92C_SYS_FUNC_EN_ELDR 0x1000 -#define R92C_SYS_FUNC_EN_DIO_RF 0x2000 -#define R92C_SYS_FUNC_EN_HWPDN 0x4000 -#define R92C_SYS_FUNC_EN_MREGEN 0x8000 - -/* Bits for R92C_APS_FSMCO. */ -#define R92C_APS_FSMCO_PFM_LDALL 0x00000001 -#define R92C_APS_FSMCO_PFM_ALDN 0x00000002 -#define R92C_APS_FSMCO_PFM_LDKP 0x00000004 -#define R92C_APS_FSMCO_PFM_WOWL 0x00000008 -#define R92C_APS_FSMCO_PDN_EN 0x00000010 -#define R92C_APS_FSMCO_PDN_PL 0x00000020 -#define R92C_APS_FSMCO_APFM_ONMAC 0x00000100 -#define R92C_APS_FSMCO_APFM_OFF 0x00000200 -#define R92C_APS_FSMCO_APFM_RSM 0x00000400 -#define R92C_APS_FSMCO_AFSM_HSUS 0x00000800 -#define R92C_APS_FSMCO_AFSM_PCIE 0x00001000 -#define R92C_APS_FSMCO_APDM_MAC 0x00002000 -#define R92C_APS_FSMCO_APDM_HOST 0x00004000 -#define R92C_APS_FSMCO_APDM_HPDN 0x00008000 -#define R92C_APS_FSMCO_RDY_MACON 0x00010000 -#define R92C_APS_FSMCO_SUS_HOST 0x00020000 -#define R92C_APS_FSMCO_ROP_ALD 0x00100000 -#define R92C_APS_FSMCO_ROP_PWR 0x00200000 -#define R92C_APS_FSMCO_ROP_SPS 0x00400000 -#define R92C_APS_FSMCO_SOP_MRST 0x02000000 -#define R92C_APS_FSMCO_SOP_FUSE 0x04000000 -#define R92C_APS_FSMCO_SOP_ABG 0x08000000 -#define R92C_APS_FSMCO_SOP_AMB 0x10000000 -#define R92C_APS_FSMCO_SOP_RCK 0x20000000 -#define R92C_APS_FSMCO_SOP_A8M 0x40000000 -#define R92C_APS_FSMCO_XOP_BTCK 0x80000000 - -/* Bits for R92C_SYS_CLKR. */ -#define R92C_SYS_CLKR_ANAD16V_EN 0x00000001 -#define R92C_SYS_CLKR_ANA8M 0x00000002 -#define R92C_SYS_CLKR_MACSLP 0x00000010 -#define R92C_SYS_CLKR_LOADER_EN 0x00000020 -#define R92C_SYS_CLKR_80M_SSC_DIS 0x00000080 -#define R92C_SYS_CLKR_80M_SSC_EN_HO 0x00000100 -#define R92C_SYS_CLKR_PHY_SSC_RSTB 0x00000200 -#define R92C_SYS_CLKR_SEC_EN 0x00000400 -#define R92C_SYS_CLKR_MAC_EN 0x00000800 -#define R92C_SYS_CLKR_SYS_EN 0x00001000 -#define R92C_SYS_CLKR_RING_EN 0x00002000 - -/* Bits for R92C_RF_CTRL. */ -#define R92C_RF_CTRL_EN 0x01 -#define R92C_RF_CTRL_RSTB 0x02 -#define R92C_RF_CTRL_SDMRSTB 0x04 - -/* Bits for R92C_LDOV12D_CTRL. */ -#define R92C_LDOV12D_CTRL_LDV12_EN 0x01 - -/* Bits for R92C_EFUSE_CTRL. */ -#define R92C_EFUSE_CTRL_DATA_M 0x000000ff -#define R92C_EFUSE_CTRL_DATA_S 0 -#define R92C_EFUSE_CTRL_ADDR_M 0x0003ff00 -#define R92C_EFUSE_CTRL_ADDR_S 8 -#define R92C_EFUSE_CTRL_VALID 0x80000000 - -/* Bits for R92C_GPIO_MUXCFG. */ -#define R92C_GPIO_MUXCFG_RFKILL 0x0008 -#define R92C_GPIO_MUXCFG_ENBT 0x0020 - -/* Bits for R92C_GPIO_IO_SEL. */ -#define R92C_GPIO_IO_SEL_RFKILL 0x0008 - -/* Bits for R92C_LEDCFG0. */ -#define R92C_LEDCFG0_DIS 0x08 - -/* Bits for R92C_LEDCFG2. */ -#define R92C_LEDCFG2_EN 0x60 -#define R92C_LEDCFG2_DIS 0x68 - -/* Bits for R92C_MCUFWDL. */ -#define R92C_MCUFWDL_EN 0x00000001 -#define R92C_MCUFWDL_RDY 0x00000002 -#define R92C_MCUFWDL_CHKSUM_RPT 0x00000004 -#define R92C_MCUFWDL_MACINI_RDY 0x00000008 -#define R92C_MCUFWDL_BBINI_RDY 0x00000010 -#define R92C_MCUFWDL_RFINI_RDY 0x00000020 -#define R92C_MCUFWDL_WINTINI_RDY 0x00000040 -#define R92C_MCUFWDL_RAM_DL_SEL 0x00000080 /* 1: RAM, 0: ROM */ -#define R92C_MCUFWDL_PAGE_M 0x00070000 -#define R92C_MCUFWDL_PAGE_S 16 -#define R92C_MCUFWDL_CPRST 0x00800000 - -/* Bits for R92C_HPON_FSM. */ -#define R92C_HPON_FSM_CHIP_BONDING_ID_S 22 -#define R92C_HPON_FSM_CHIP_BONDING_ID_M 0x00c00000 -#define R92C_HPON_FSM_CHIP_BONDING_ID_92C_1T2R 1 - -/* Bits for R92C_SYS_CFG. */ -#define R92C_SYS_CFG_XCLK_VLD 0x00000001 -#define R92C_SYS_CFG_ACLK_VLD 0x00000002 -#define R92C_SYS_CFG_UCLK_VLD 0x00000004 -#define R92C_SYS_CFG_PCLK_VLD 0x00000008 -#define R92C_SYS_CFG_PCIRSTB 0x00000010 -#define R92C_SYS_CFG_V15_VLD 0x00000020 -#define R92C_SYS_CFG_TRP_B15V_EN 0x00000080 -#define R92C_SYS_CFG_SIC_IDLE 0x00000100 -#define R92C_SYS_CFG_BD_MAC2 0x00000200 -#define R92C_SYS_CFG_BD_MAC1 0x00000400 -#define R92C_SYS_CFG_IC_MACPHY_MODE 0x00000800 -#define R92C_SYS_CFG_CHIP_VER_RTL_M 0x0000f000 -#define R92C_SYS_CFG_CHIP_VER_RTL_S 12 -#define R92C_SYS_CFG_BT_FUNC 0x00010000 -#define R92C_SYS_CFG_VENDOR_UMC 0x00080000 -#define R92C_SYS_CFG_PAD_HWPD_IDN 0x00400000 -#define R92C_SYS_CFG_TRP_VAUX_EN 0x00800000 -#define R92C_SYS_CFG_TRP_BT_EN 0x01000000 -#define R92C_SYS_CFG_BD_PKG_SEL 0x02000000 -#define R92C_SYS_CFG_BD_HCI_SEL 0x04000000 -#define R92C_SYS_CFG_TYPE_92C 0x08000000 - -/* Bits for R92C_CR. */ -#define R92C_CR_HCI_TXDMA_EN 0x00000001 -#define R92C_CR_HCI_RXDMA_EN 0x00000002 -#define R92C_CR_TXDMA_EN 0x00000004 -#define R92C_CR_RXDMA_EN 0x00000008 -#define R92C_CR_PROTOCOL_EN 0x00000010 -#define R92C_CR_SCHEDULE_EN 0x00000020 -#define R92C_CR_MACTXEN 0x00000040 -#define R92C_CR_MACRXEN 0x00000080 -#define R92C_CR_ENSEC 0x00000200 -#define R92C_CR_NETTYPE_S 16 -#define R92C_CR_NETTYPE_M 0x00030000 -#define R92C_CR_NETTYPE_NOLINK 0 -#define R92C_CR_NETTYPE_ADHOC 1 -#define R92C_CR_NETTYPE_INFRA 2 -#define R92C_CR_NETTYPE_AP 3 - -/* Bits for R92C_PBP. */ -#define R92C_PBP_PSRX_M 0x0f -#define R92C_PBP_PSRX_S 0 -#define R92C_PBP_PSTX_M 0xf0 -#define R92C_PBP_PSTX_S 4 -#define R92C_PBP_64 0 -#define R92C_PBP_128 1 -#define R92C_PBP_256 2 -#define R92C_PBP_512 3 -#define R92C_PBP_1024 4 - -/* Bits for R92C_TRXDMA_CTRL. */ -#define R92C_TRXDMA_CTRL_RXDMA_AGG_EN 0x0004 -#define R92C_TRXDMA_CTRL_TXDMA_VOQ_MAP_M 0x0030 -#define R92C_TRXDMA_CTRL_TXDMA_VOQ_MAP_S 4 -#define R92C_TRXDMA_CTRL_TXDMA_VIQ_MAP_M 0x00c0 -#define R92C_TRXDMA_CTRL_TXDMA_VIQ_MAP_S 6 -#define R92C_TRXDMA_CTRL_TXDMA_BEQ_MAP_M 0x0300 -#define R92C_TRXDMA_CTRL_TXDMA_BEQ_MAP_S 8 -#define R92C_TRXDMA_CTRL_TXDMA_BKQ_MAP_M 0x0c00 -#define R92C_TRXDMA_CTRL_TXDMA_BKQ_MAP_S 10 -#define R92C_TRXDMA_CTRL_TXDMA_MGQ_MAP_M 0x3000 -#define R92C_TRXDMA_CTRL_TXDMA_MGQ_MAP_S 12 -#define R92C_TRXDMA_CTRL_TXDMA_HIQ_MAP_M 0xc000 -#define R92C_TRXDMA_CTRL_TXDMA_HIQ_MAP_S 14 -#define R92C_TRXDMA_CTRL_QUEUE_LOW 1 -#define R92C_TRXDMA_CTRL_QUEUE_NORMAL 2 -#define R92C_TRXDMA_CTRL_QUEUE_HIGH 3 -#define R92C_TRXDMA_CTRL_QMAP_M 0xfff0 -#define R92C_TRXDMA_CTRL_QMAP_S 4 -/* Shortcuts. */ -#define R92C_TRXDMA_CTRL_QMAP_3EP 0xf5b0 -#define R92C_TRXDMA_CTRL_QMAP_HQ_LQ 0xf5f0 -#define R92C_TRXDMA_CTRL_QMAP_HQ_NQ 0xfaf0 -#define R92C_TRXDMA_CTRL_QMAP_LQ 0x5550 -#define R92C_TRXDMA_CTRL_QMAP_NQ 0xaaa0 -#define R92C_TRXDMA_CTRL_QMAP_HQ 0xfff0 - -/* Bits for R92C_LLT_INIT. */ -#define R92C_LLT_INIT_DATA_M 0x000000ff -#define R92C_LLT_INIT_DATA_S 0 -#define R92C_LLT_INIT_ADDR_M 0x0000ff00 -#define R92C_LLT_INIT_ADDR_S 8 -#define R92C_LLT_INIT_OP_M 0xc0000000 -#define R92C_LLT_INIT_OP_S 30 -#define R92C_LLT_INIT_OP_NO_ACTIVE 0 -#define R92C_LLT_INIT_OP_WRITE 1 - -/* Bits for R92C_RQPN. */ -#define R92C_RQPN_HPQ_M 0x000000ff -#define R92C_RQPN_HPQ_S 0 -#define R92C_RQPN_LPQ_M 0x0000ff00 -#define R92C_RQPN_LPQ_S 8 -#define R92C_RQPN_PUBQ_M 0x00ff0000 -#define R92C_RQPN_PUBQ_S 16 -#define R92C_RQPN_LD 0x80000000 - -/* Bits for R92C_TDECTRL. */ -#define R92C_TDECTRL_BLK_DESC_NUM_M 0x0000000f -#define R92C_TDECTRL_BLK_DESC_NUM_S 4 - -/* Bits for R92C_FWHW_TXQ_CTRL. */ -#define R92C_FWHW_TXQ_CTRL_AMPDU_RTY_NEW 0x80 - -/* Bits for R92C_SPEC_SIFS. */ -#define R92C_SPEC_SIFS_CCK_M 0x00ff -#define R92C_SPEC_SIFS_CCK_S 0 -#define R92C_SPEC_SIFS_OFDM_M 0xff00 -#define R92C_SPEC_SIFS_OFDM_S 8 - -/* Bits for R92C_RL. */ -#define R92C_RL_LRL_M 0x003f -#define R92C_RL_LRL_S 0 -#define R92C_RL_SRL_M 0x3f00 -#define R92C_RL_SRL_S 8 - -/* Bits for R92C_RRSR. */ -#define R92C_RRSR_RATE_BITMAP_M 0x000fffff -#define R92C_RRSR_RATE_BITMAP_S 0 -#define R92C_RRSR_RATE_CCK_ONLY_1M 0xffff1 -#define R92C_RRSR_RATE_ALL 0xfffff -#define R92C_RRSR_RSC_LOWSUBCHNL 0x00200000 -#define R92C_RRSR_RSC_UPSUBCHNL 0x00400000 -#define R92C_RRSR_SHORT 0x00800000 - -/* Bits for R92C_EDCA_XX_PARAM. */ -#define R92C_EDCA_PARAM_AIFS_M 0x000000ff -#define R92C_EDCA_PARAM_AIFS_S 0 -#define R92C_EDCA_PARAM_ECWMIN_M 0x00000f00 -#define R92C_EDCA_PARAM_ECWMIN_S 8 -#define R92C_EDCA_PARAM_ECWMAX_M 0x0000f000 -#define R92C_EDCA_PARAM_ECWMAX_S 12 -#define R92C_EDCA_PARAM_TXOP_M 0xffff0000 -#define R92C_EDCA_PARAM_TXOP_S 16 - -/* Bits for R92C_TXPAUSE. */ -#define R92C_TXPAUSE_AC_VO 0x01 -#define R92C_TXPAUSE_AC_VI 0x02 -#define R92C_TXPAUSE_AC_BE 0x04 -#define R92C_TXPAUSE_AC_BK 0x08 - -/* Bits for R92C_BCN_CTRL. */ -#define R92C_BCN_CTRL_EN_MBSSID 0x02 -#define R92C_BCN_CTRL_TXBCN_RPT 0x04 -#define R92C_BCN_CTRL_EN_BCN 0x08 -#define R92C_BCN_CTRL_DIS_TSF_UDT0 0x10 - -/* Bits for R92C_APSD_CTRL. */ -#define R92C_APSD_CTRL_OFF 0x40 -#define R92C_APSD_CTRL_OFF_STATUS 0x80 - -/* Bits for R92C_BWOPMODE. */ -#define R92C_BWOPMODE_11J 0x01 -#define R92C_BWOPMODE_5G 0x02 -#define R92C_BWOPMODE_20MHZ 0x04 - -/* Bits for R92C_TCR. */ -#define R92C_TCR_TSFRST 0x00000001 -#define R92C_TCR_DIS_GCLK 0x00000002 -#define R92C_TCR_PAD_SEL 0x00000004 -#define R92C_TCR_PWR_ST 0x00000040 -#define R92C_TCR_PWRBIT_OW_EN 0x00000080 -#define R92C_TCR_ACRC 0x00000100 -#define R92C_TCR_CFENDFORM 0x00000200 -#define R92C_TCR_ICV 0x00000400 - -/* Bits for R92C_RCR. */ -#define R92C_RCR_AAP 0x00000001 -#define R92C_RCR_APM 0x00000002 -#define R92C_RCR_AM 0x00000004 -#define R92C_RCR_AB 0x00000008 -#define R92C_RCR_ADD3 0x00000010 -#define R92C_RCR_APWRMGT 0x00000020 -#define R92C_RCR_CBSSID_DATA 0x00000040 -#define R92C_RCR_CBSSID_BCN 0x00000080 -#define R92C_RCR_ACRC32 0x00000100 -#define R92C_RCR_AICV 0x00000200 -#define R92C_RCR_ADF 0x00000800 -#define R92C_RCR_ACF 0x00001000 -#define R92C_RCR_AMF 0x00002000 -#define R92C_RCR_HTC_LOC_CTRL 0x00004000 -#define R92C_RCR_MFBEN 0x00400000 -#define R92C_RCR_LSIGEN 0x00800000 -#define R92C_RCR_ENMBID 0x01000000 -#define R92C_RCR_APP_BA_SSN 0x08000000 -#define R92C_RCR_APP_PHYSTS 0x10000000 -#define R92C_RCR_APP_ICV 0x20000000 -#define R92C_RCR_APP_MIC 0x40000000 -#define R92C_RCR_APPFCS 0x80000000 - -/* Bits for R92C_CAMCMD. */ -#define R92C_CAMCMD_ADDR_M 0x0000ffff -#define R92C_CAMCMD_ADDR_S 0 -#define R92C_CAMCMD_WRITE 0x00010000 -#define R92C_CAMCMD_CLR 0x40000000 -#define R92C_CAMCMD_POLLING 0x80000000 - -/* IMR */ - -/*Beacon DMA interrupt 6 */ -#define R92C_IMR_BCNDMAINT6 0x80000000 -/*Beacon DMA interrupt 5 */ -#define R92C_IMR_BCNDMAINT5 0x40000000 -/*Beacon DMA interrupt 4 */ -#define R92C_IMR_BCNDMAINT4 0x20000000 -/*Beacon DMA interrupt 3 */ -#define R92C_IMR_BCNDMAINT3 0x10000000 -/*Beacon DMA interrupt 2 */ -#define R92C_IMR_BCNDMAINT2 0x08000000 -/*Beacon DMA interrupt 1 */ -#define R92C_IMR_BCNDMAINT1 0x04000000 -/*Beacon Queue DMA OK interrupt 8 */ -#define R92C_IMR_BCNDOK8 0x02000000 -/*Beacon Queue DMA OK interrupt 7 */ -#define R92C_IMR_BCNDOK7 0x01000000 -/*Beacon Queue DMA OK interrupt 6 */ -#define R92C_IMR_BCNDOK6 0x00800000 -/*Beacon Queue DMA OK interrupt 5 */ -#define R92C_IMR_BCNDOK5 0x00400000 -/*Beacon Queue DMA OK interrupt 4 */ -#define R92C_IMR_BCNDOK4 0x00200000 -/*Beacon Queue DMA OK interrupt 3 */ -#define R92C_IMR_BCNDOK3 0x00100000 -/*Beacon Queue DMA OK interrupt 2 */ -#define R92C_IMR_BCNDOK2 0x00080000 -/*Beacon Queue DMA OK interrupt 1 */ -#define R92C_IMR_BCNDOK1 0x00040000 -/*Timeout interrupt 2 */ -#define R92C_IMR_TIMEOUT2 0x00020000 -/*Timeout interrupt 1 */ -#define R92C_IMR_TIMEOUT1 0x00010000 -/*Transmit FIFO Overflow */ -#define R92C_IMR_TXFOVW 0x00008000 -/*Power save time out interrupt */ -#define R92C_IMR_PSTIMEOUT 0x00004000 -/*Beacon DMA interrupt 0 */ -#define R92C_IMR_BCNINT 0x00002000 -/*Receive FIFO Overflow */ -#define R92C_IMR_RXFOVW 0x00001000 -/*Receive Descriptor Unavailable */ -#define R92C_IMR_RDU 0x00000800 -/*For 92C,ATIM Window End interrupt */ -#define R92C_IMR_ATIMEND 0x00000400 -/*Beacon Queue DMA OK interrupt */ -#define R92C_IMR_BDOK 0x00000200 -/*High Queue DMA OK interrupt */ -#define R92C_IMR_HIGHDOK 0x00000100 -/*Transmit Beacon OK interrupt */ -#define R92C_IMR_TBDOK 0x00000080 -/*Management Queue DMA OK interrupt */ -#define R92C_IMR_MGNTDOK 0x00000040 -/*For 92C,Transmit Beacon Error interrupt */ -#define R92C_IMR_TBDER 0x00000020 -/*AC_BK DMA OK interrupt */ -#define R92C_IMR_BKDOK 0x00000010 -/*AC_BE DMA OK interrupt */ -#define R92C_IMR_BEDOK 0x00000008 -/*AC_VI DMA OK interrupt */ -#define R92C_IMR_VIDOK 0x00000004 -/*AC_VO DMA interrupt */ -#define R92C_IMR_VODOK 0x00000002 -/*Receive DMA OK interrupt */ -#define R92C_IMR_ROK 0x00000001 - -#define R92C_IBSS_INT_MASK (R92C_IMR_BCNINT | R92C_IMR_TBDOK | R92C_IMR_TBDER) - -/* - * Baseband registers. - */ -#define R92C_FPGA0_RFMOD 0x800 -#define R92C_FPGA0_TXINFO 0x804 -#define R92C_HSSI_PARAM1(chain) (0x820 + (chain) * 8) -#define R92C_HSSI_PARAM2(chain) (0x824 + (chain) * 8) -#define R92C_TXAGC_RATE18_06(i) (((i) == 0) ? 0xe00 : 0x830) -#define R92C_TXAGC_RATE54_24(i) (((i) == 0) ? 0xe04 : 0x834) -#define R92C_TXAGC_A_CCK1_MCS32 0xe08 -#define R92C_TXAGC_B_CCK1_55_MCS32 0x838 -#define R92C_TXAGC_B_CCK11_A_CCK2_11 0x86c -#define R92C_TXAGC_MCS03_MCS00(i) (((i) == 0) ? 0xe10 : 0x83c) -#define R92C_TXAGC_MCS07_MCS04(i) (((i) == 0) ? 0xe14 : 0x848) -#define R92C_TXAGC_MCS11_MCS08(i) (((i) == 0) ? 0xe18 : 0x84c) -#define R92C_TXAGC_MCS15_MCS12(i) (((i) == 0) ? 0xe1c : 0x868) -#define R92C_LSSI_PARAM(chain) (0x840 + (chain) * 4) -#define R92C_FPGA0_RFIFACEOE(chain) (0x860 + (chain) * 4) -#define R92C_FPGA0_RFIFACESW(idx) (0x870 + (idx) * 4) -#define R92C_FPGA0_RFPARAM(idx) (0x878 + (idx) * 4) -#define R92C_FPGA0_ANAPARAM2 0x884 -#define R92C_LSSI_READBACK(chain) (0x8a0 + (chain) * 4) -#define R92C_HSPI_READBACK(chain) (0x8b8 + (chain) * 4) -#define R92C_FPGA1_RFMOD 0x900 -#define R92C_FPGA1_TXINFO 0x90c -#define R92C_CCK0_SYSTEM 0xa00 -#define R92C_CCK0_AFESETTING 0xa04 -#define R92C_OFDM0_TRXPATHENA 0xc04 -#define R92C_OFDM0_TRMUXPAR 0xc08 -#define R92C_OFDM0_RXIQIMBALANCE(chain) (0xc14 + (chain) * 8) -#define R92C_OFDM0_ECCATHRESHOLD 0xc4c -#define R92C_OFDM0_AGCCORE1(chain) (0xc50 + (chain) * 8) -#define R92C_OFDM0_AGCPARAM1 0xc70 -#define R92C_OFDM0_AGCRSSITABLE 0xc78 -#define R92C_OFDM0_TXIQIMBALANCE(chain) (0xc80 + (chain) * 8) -#define R92C_OFDM0_TXAFE(chain) (0xc94 + (chain) * 8) -#define R92C_OFDM0_RXIQEXTANTA 0xca0 -#define R92C_OFDM1_LSTF 0xd00 - -/* Bits for R92C_FPGA[01]_RFMOD. */ -#define R92C_RFMOD_40MHZ 0x00000001 -#define R92C_RFMOD_JAPAN 0x00000002 -#define R92C_RFMOD_CCK_TXSC 0x00000030 -#define R92C_RFMOD_CCK_EN 0x01000000 -#define R92C_RFMOD_OFDM_EN 0x02000000 - -/* Bits for R92C_HSSI_PARAM1(i). */ -#define R92C_HSSI_PARAM1_PI 0x00000100 - -/* Bits for R92C_HSSI_PARAM2(i). */ -#define R92C_HSSI_PARAM2_CCK_HIPWR 0x00000200 -#define R92C_HSSI_PARAM2_ADDR_LENGTH 0x00000400 -#define R92C_HSSI_PARAM2_DATA_LENGTH 0x00000800 -#define R92C_HSSI_PARAM2_READ_ADDR_M 0x7f800000 -#define R92C_HSSI_PARAM2_READ_ADDR_S 23 -#define R92C_HSSI_PARAM2_READ_EDGE 0x80000000 - -/* Bits for R92C_TXAGC_A_CCK1_MCS32. */ -#define R92C_TXAGC_A_CCK1_M 0x0000ff00 -#define R92C_TXAGC_A_CCK1_S 8 - -/* Bits for R92C_TXAGC_B_CCK11_A_CCK2_11. */ -#define R92C_TXAGC_B_CCK11_M 0x000000ff -#define R92C_TXAGC_B_CCK11_S 0 -#define R92C_TXAGC_A_CCK2_M 0x0000ff00 -#define R92C_TXAGC_A_CCK2_S 8 -#define R92C_TXAGC_A_CCK55_M 0x00ff0000 -#define R92C_TXAGC_A_CCK55_S 16 -#define R92C_TXAGC_A_CCK11_M 0xff000000 -#define R92C_TXAGC_A_CCK11_S 24 - -/* Bits for R92C_TXAGC_B_CCK1_55_MCS32. */ -#define R92C_TXAGC_B_CCK1_M 0x0000ff00 -#define R92C_TXAGC_B_CCK1_S 8 -#define R92C_TXAGC_B_CCK2_M 0x00ff0000 -#define R92C_TXAGC_B_CCK2_S 16 -#define R92C_TXAGC_B_CCK55_M 0xff000000 -#define R92C_TXAGC_B_CCK55_S 24 - -/* Bits for R92C_TXAGC_RATE18_06(x). */ -#define R92C_TXAGC_RATE06_M 0x000000ff -#define R92C_TXAGC_RATE06_S 0 -#define R92C_TXAGC_RATE09_M 0x0000ff00 -#define R92C_TXAGC_RATE09_S 8 -#define R92C_TXAGC_RATE12_M 0x00ff0000 -#define R92C_TXAGC_RATE12_S 16 -#define R92C_TXAGC_RATE18_M 0xff000000 -#define R92C_TXAGC_RATE18_S 24 - -/* Bits for R92C_TXAGC_RATE54_24(x). */ -#define R92C_TXAGC_RATE24_M 0x000000ff -#define R92C_TXAGC_RATE24_S 0 -#define R92C_TXAGC_RATE36_M 0x0000ff00 -#define R92C_TXAGC_RATE36_S 8 -#define R92C_TXAGC_RATE48_M 0x00ff0000 -#define R92C_TXAGC_RATE48_S 16 -#define R92C_TXAGC_RATE54_M 0xff000000 -#define R92C_TXAGC_RATE54_S 24 - -/* Bits for R92C_TXAGC_MCS03_MCS00(x). */ -#define R92C_TXAGC_MCS00_M 0x000000ff -#define R92C_TXAGC_MCS00_S 0 -#define R92C_TXAGC_MCS01_M 0x0000ff00 -#define R92C_TXAGC_MCS01_S 8 -#define R92C_TXAGC_MCS02_M 0x00ff0000 -#define R92C_TXAGC_MCS02_S 16 -#define R92C_TXAGC_MCS03_M 0xff000000 -#define R92C_TXAGC_MCS03_S 24 +#define R92C_MIN_TX_PWR 0x00 +#define R92C_MAX_TX_PWR 0x3f -/* Bits for R92C_TXAGC_MCS07_MCS04(x). */ -#define R92C_TXAGC_MCS04_M 0x000000ff -#define R92C_TXAGC_MCS04_S 0 -#define R92C_TXAGC_MCS05_M 0x0000ff00 -#define R92C_TXAGC_MCS05_S 8 -#define R92C_TXAGC_MCS06_M 0x00ff0000 -#define R92C_TXAGC_MCS06_S 16 -#define R92C_TXAGC_MCS07_M 0xff000000 -#define R92C_TXAGC_MCS07_S 24 +#define R92C_H2C_NBOX 4 -/* Bits for R92C_TXAGC_MCS11_MCS08(x). */ -#define R92C_TXAGC_MCS08_M 0x000000ff -#define R92C_TXAGC_MCS08_S 0 -#define R92C_TXAGC_MCS09_M 0x0000ff00 -#define R92C_TXAGC_MCS09_S 8 -#define R92C_TXAGC_MCS10_M 0x00ff0000 -#define R92C_TXAGC_MCS10_S 16 -#define R92C_TXAGC_MCS11_M 0xff000000 -#define R92C_TXAGC_MCS11_S 24 -/* Bits for R92C_TXAGC_MCS15_MCS12(x). */ -#define R92C_TXAGC_MCS12_M 0x000000ff -#define R92C_TXAGC_MCS12_S 0 -#define R92C_TXAGC_MCS13_M 0x0000ff00 -#define R92C_TXAGC_MCS13_S 8 -#define R92C_TXAGC_MCS14_M 0x00ff0000 -#define R92C_TXAGC_MCS14_S 16 -#define R92C_TXAGC_MCS15_M 0xff000000 -#define R92C_TXAGC_MCS15_S 24 - -/* Bits for R92C_LSSI_PARAM(i). */ -#define R92C_LSSI_PARAM_DATA_M 0x000fffff -#define R92C_LSSI_PARAM_DATA_S 0 -#define R92C_LSSI_PARAM_ADDR_M 0x03f00000 -#define R92C_LSSI_PARAM_ADDR_S 20 - -/* Bits for R92C_FPGA0_ANAPARAM2. */ -#define R92C_FPGA0_ANAPARAM2_CBW20 0x00000400 - -/* Bits for R92C_LSSI_READBACK(i). */ -#define R92C_LSSI_READBACK_DATA_M 0x000fffff -#define R92C_LSSI_READBACK_DATA_S 0 - -/* Bits for R92C_OFDM0_AGCCORE1(i). */ -#define R92C_OFDM0_AGCCORE1_GAIN_M 0x0000007f -#define R92C_OFDM0_AGCCORE1_GAIN_S 0 - - -/* - * USB registers. - */ -#define R92C_USB_INFO 0xfe17 -#define R92C_USB_SPECIAL_OPTION 0xfe55 -#define R92C_USB_HCPWM 0xfe57 -#define R92C_USB_HRPWM 0xfe58 -#define R92C_USB_DMA_AGG_TO 0xfe5b -#define R92C_USB_AGG_TO 0xfe5c -#define R92C_USB_AGG_TH 0xfe5d -#define R92C_USB_VID 0xfe60 -#define R92C_USB_PID 0xfe62 -#define R92C_USB_OPTIONAL 0xfe64 -#define R92C_USB_EP 0xfe65 -#define R92C_USB_PHY 0xfe68 -#define R92C_USB_MAC_ADDR 0xfe70 -#define R92C_USB_STRING 0xfe80 - -/* Bits for R92C_USB_SPECIAL_OPTION. */ -#define R92C_USB_SPECIAL_OPTION_AGG_EN 0x08 - -/* Bits for R92C_USB_EP. */ -#define R92C_USB_EP_HQ_M 0x000f -#define R92C_USB_EP_HQ_S 0 -#define R92C_USB_EP_NQ_M 0x00f0 -#define R92C_USB_EP_NQ_S 4 -#define R92C_USB_EP_LQ_M 0x0f00 -#define R92C_USB_EP_LQ_S 8 - - -/* - * Firmware base address. - */ -#define R92C_FW_START_ADDR 0x1000 -#define R92C_FW_PAGE_SIZE 4096 - - -/* - * RF (6052) registers. - */ -#define R92C_RF_AC 0x00 -#define R92C_RF_IQADJ_G(i) (0x01 + (i)) -#define R92C_RF_POW_TRSW 0x05 -#define R92C_RF_GAIN_RX 0x06 -#define R92C_RF_GAIN_TX 0x07 -#define R92C_RF_TXM_IDAC 0x08 -#define R92C_RF_BS_IQGEN 0x0f -#define R92C_RF_MODE1 0x10 -#define R92C_RF_MODE2 0x11 -#define R92C_RF_RX_AGC_HP 0x12 -#define R92C_RF_TX_AGC 0x13 -#define R92C_RF_BIAS 0x14 -#define R92C_RF_IPA 0x15 -#define R92C_RF_POW_ABILITY 0x17 -#define R92C_RF_CHNLBW 0x18 -#define R92C_RF_RX_G1 0x1a -#define R92C_RF_RX_G2 0x1b -#define R92C_RF_RX_BB2 0x1c -#define R92C_RF_RX_BB1 0x1d -#define R92C_RF_RCK1 0x1e -#define R92C_RF_RCK2 0x1f -#define R92C_RF_TX_G(i) (0x20 + (i)) -#define R92C_RF_TX_BB1 0x23 -#define R92C_RF_T_METER 0x24 -#define R92C_RF_SYN_G(i) (0x25 + (i)) -#define R92C_RF_RCK_OS 0x30 -#define R92C_RF_TXPA_G(i) (0x31 + (i)) - -/* Bits for R92C_RF_AC. */ -#define R92C_RF_AC_MODE_M 0x70000 -#define R92C_RF_AC_MODE_S 16 -#define R92C_RF_AC_MODE_STANDBY 1 - -/* Bits for R92C_RF_CHNLBW. */ -#define R92C_RF_CHNLBW_CHNL_M 0x003ff -#define R92C_RF_CHNLBW_CHNL_S 0 -#define R92C_RF_CHNLBW_BW20 0x00400 -#define R92C_RF_CHNLBW_LCSTART 0x08000 - - -/* - * CAM entries. - */ -#define R92C_CAM_ENTRY_COUNT 32 - -#define R92C_CAM_CTL0(entry) ((entry) * 8 + 0) -#define R92C_CAM_CTL1(entry) ((entry) * 8 + 1) -#define R92C_CAM_KEY(entry, i) ((entry) * 8 + 2 + (i)) - -/* Bits for R92C_CAM_CTL0(i). */ -#define R92C_CAM_KEYID_M 0x00000003 -#define R92C_CAM_KEYID_S 0 -#define R92C_CAM_ALGO_M 0x0000001c -#define R92C_CAM_ALGO_S 2 -#define R92C_CAM_ALGO_NONE 0 -#define R92C_CAM_ALGO_WEP40 1 -#define R92C_CAM_ALGO_TKIP 2 -#define R92C_CAM_ALGO_AES 4 -#define R92C_CAM_ALGO_WEP104 5 -#define R92C_CAM_VALID 0x00008000 -#define R92C_CAM_MACLO_M 0xffff0000 -#define R92C_CAM_MACLO_S 16 - -/* Rate adaptation modes. */ -#define R92C_RAID_11GN 1 -#define R92C_RAID_11N 3 -#define R92C_RAID_11BG 4 -#define R92C_RAID_11G 5 /* "pure" 11g */ -#define R92C_RAID_11B 6 +/* Common part of Tx descriptor (named only!). */ +struct rtwn_tx_desc_common { + uint16_t pktlen; + uint8_t offset; + uint8_t flags0; +#define RTWN_FLAGS0_OWN 0x80 + uint32_t txdw1; +/* NB: qsel is shared too; however, it looks better at the lower level */ +#define RTWN_TXDW1_CIPHER_M 0x00c00000 +#define RTWN_TXDW1_CIPHER_S 22 +#define RTWN_TXDW1_CIPHER_NONE 0 +#define RTWN_TXDW1_CIPHER_RC4 1 +#define RTWN_TXDW1_CIPHER_SM4 2 +#define RTWN_TXDW1_CIPHER_AES 3 + + uint32_t reserved[5]; + + union txdw7_shared { + uint16_t usb_checksum; + uint16_t pci_txbufsize; + } txdw7; +} __packed __attribute__((aligned(4))); /* * Macros to access subfields in registers. */ /* Mask and Shift (getter). */ #define MS(val, field) \ (((val) & field##_M) >> field##_S) /* Shift and Mask (setter). */ #define SM(field, val) \ (((val) << field##_S) & field##_M) /* Rewrite. */ #define RW(var, field, val) \ (((var) & ~field##_M) | SM(field, val)) -/* - * Firmware image header. - */ -struct r92c_fw_hdr { - /* QWORD0 */ - uint16_t signature; - uint8_t category; - uint8_t function; - uint16_t version; - uint16_t subversion; - /* QWORD1 */ - uint8_t month; - uint8_t date; - uint8_t hour; - uint8_t minute; - uint16_t ramcodesize; - uint16_t reserved2; - /* QWORD2 */ - uint32_t svnidx; - uint32_t reserved3; - /* QWORD3 */ - uint32_t reserved4; - uint32_t reserved5; -} __packed; - -/* - * Host to firmware commands. - */ -struct r92c_fw_cmd { - uint8_t id; -#define R92C_CMD_AP_OFFLOAD 0 -#define R92C_CMD_SET_PWRMODE 1 -#define R92C_CMD_JOINBSS_RPT 2 -#define R92C_CMD_RSVD_PAGE 3 -#define R92C_CMD_RSSI 4 -#define R92C_CMD_RSSI_SETTING 5 -#define R92C_CMD_MACID_CONFIG 6 -#define R92C_CMD_MACID_PS_MODE 7 -#define R92C_CMD_P2P_PS_OFFLOAD 8 -#define R92C_CMD_SELECTIVE_SUSPEND 9 -#define R92C_CMD_FLAG_EXT 0x80 - - uint8_t msg[5]; -} __packed; - -/* Structure for R92C_CMD_RSSI_SETTING. */ -struct r92c_fw_cmd_rssi { - uint8_t macid; - uint8_t reserved; - uint8_t pwdb; -} __packed; - -/* Structure for R92C_CMD_MACID_CONFIG. */ -struct r92c_fw_cmd_macid_cfg { - uint32_t mask; - uint8_t macid; -#define RTWN_MACID_BSS 0 -#define RTWN_MACID_BC 4 /* Broadcast. */ -#define RTWN_MACID_VALID 0x80 -} __packed; - -/* - * RTL8192CU ROM image. - */ -struct r92c_rom { - uint16_t id; /* 0x8129 */ - uint8_t reserved1[5]; - uint8_t dbg_sel; - uint16_t reserved2; - uint16_t vid; - uint16_t pid; - uint8_t usb_opt; - uint8_t ep_setting; - uint16_t reserved3; - uint8_t usb_phy; - uint8_t reserved4[3]; - uint8_t macaddr[6]; - uint8_t string[61]; /* "Realtek" */ - uint8_t subcustomer_id; - uint8_t cck_tx_pwr[R92C_MAX_CHAINS][3]; - uint8_t ht40_1s_tx_pwr[R92C_MAX_CHAINS][3]; - uint8_t ht40_2s_tx_pwr_diff[3]; - uint8_t ht20_tx_pwr_diff[3]; - uint8_t ofdm_tx_pwr_diff[3]; - uint8_t ht40_max_pwr[3]; - uint8_t ht20_max_pwr[3]; - uint8_t xtal_calib; - uint8_t tssi[R92C_MAX_CHAINS]; - uint8_t thermal_meter; - uint8_t rf_opt1; -#define R92C_ROM_RF1_REGULATORY_M 0x07 -#define R92C_ROM_RF1_REGULATORY_S 0 -#define R92C_ROM_RF1_BOARD_TYPE_M 0xe0 -#define R92C_ROM_RF1_BOARD_TYPE_S 5 -#define R92C_BOARD_TYPE_DONGLE 0 -#define R92C_BOARD_TYPE_HIGHPA 1 -#define R92C_BOARD_TYPE_MINICARD 2 -#define R92C_BOARD_TYPE_SOLO 3 -#define R92C_BOARD_TYPE_COMBO 4 - - uint8_t rf_opt2; - uint8_t rf_opt3; - uint8_t rf_opt4; - uint8_t channel_plan; -#define R92C_CHANNEL_PLAN_BY_HW 0x80 - - uint8_t version; - uint8_t curstomer_id; -} __packed; - -/* Rx MAC descriptor. */ -struct r92c_rx_desc { - uint32_t rxdw0; -#define R92C_RXDW0_PKTLEN_M 0x00003fff -#define R92C_RXDW0_PKTLEN_S 0 -#define R92C_RXDW0_CRCERR 0x00004000 -#define R92C_RXDW0_ICVERR 0x00008000 -#define R92C_RXDW0_INFOSZ_M 0x000f0000 -#define R92C_RXDW0_INFOSZ_S 16 -#define R92C_RXDW0_QOS 0x00800000 -#define R92C_RXDW0_SHIFT_M 0x03000000 -#define R92C_RXDW0_SHIFT_S 24 -#define R92C_RXDW0_PHYST 0x04000000 -#define R92C_RXDW0_DECRYPTED 0x08000000 -#define R92C_RXDW0_LS 0x10000000 -#define R92C_RXDW0_FS 0x20000000 -#define R92C_RXDW0_EOR 0x40000000 -#define R92C_RXDW0_OWN 0x80000000 - - uint32_t rxdw1; - uint32_t rxdw2; -#define R92C_RXDW2_PKTCNT_M 0x00ff0000 -#define R92C_RXDW2_PKTCNT_S 16 - - uint32_t rxdw3; -#define R92C_RXDW3_RATE_M 0x0000003f -#define R92C_RXDW3_RATE_S 0 -#define R92C_RXDW3_HT 0x00000040 -#define R92C_RXDW3_HTC 0x00000400 - - uint32_t rxdw4; - uint32_t rxdw5; - - uint32_t rxbufaddr; - uint32_t rxbufaddr64; -} __packed __attribute__((aligned(4))); - -/* Rx PHY descriptor. */ -struct r92c_rx_phystat { - uint32_t phydw0; - uint32_t phydw1; - uint32_t phydw2; - uint32_t phydw3; - uint32_t phydw4; - uint32_t phydw5; - uint32_t phydw6; - uint32_t phydw7; -} __packed __attribute__((aligned(4))); - -/* Rx PHY CCK descriptor. */ -struct r92c_rx_cck { - uint8_t adc_pwdb[4]; - uint8_t sq_rpt; - uint8_t agc_rpt; -} __packed; - -/* Tx MAC descriptor. */ -struct r92c_tx_desc { - uint32_t txdw0; -#define R92C_TXDW0_PKTLEN_M 0x0000ffff -#define R92C_TXDW0_PKTLEN_S 0 -#define R92C_TXDW0_OFFSET_M 0x00ff0000 -#define R92C_TXDW0_OFFSET_S 16 -#define R92C_TXDW0_BMCAST 0x01000000 -#define R92C_TXDW0_LSG 0x04000000 -#define R92C_TXDW0_FSG 0x08000000 -#define R92C_TXDW0_OWN 0x80000000 - - uint32_t txdw1; -#define R92C_TXDW1_MACID_M 0x0000001f -#define R92C_TXDW1_MACID_S 0 -#define R92C_TXDW1_AGGEN 0x00000020 -#define R92C_TXDW1_AGGBK 0x00000040 -#define R92C_TXDW1_QSEL_M 0x00001f00 -#define R92C_TXDW1_QSEL_S 8 -#define R92C_TXDW1_QSEL_BE 0x00 -#define R92C_TXDW1_QSEL_BK 0x02 -#define R92C_TXDW1_QSEL_VI 0x05 -#define R92C_TXDW1_QSEL_VO 0x07 -#define R92C_TXDW1_QSEL_BEACON 0x10 -#define R92C_TXDW1_QSEL_HIGH 0x11 -#define R92C_TXDW1_QSEL_MGNT 0x12 -#define R92C_TXDW1_QSEL_CMD 0x13 -#define R92C_TXDW1_RAID_M 0x000f0000 -#define R92C_TXDW1_RAID_S 16 -#define R92C_TXDW1_CIPHER_M 0x00c00000 -#define R92C_TXDW1_CIPHER_S 22 -#define R92C_TXDW1_CIPHER_NONE 0 -#define R92C_TXDW1_CIPHER_RC4 1 -#define R92C_TXDW1_CIPHER_AES 3 -#define R92C_TXDW1_PKTOFF_M 0x7c000000 -#define R92C_TXDW1_PKTOFF_S 26 - - uint32_t txdw2; - uint16_t txdw3; - uint16_t txdseq; - - uint32_t txdw4; -#define R92C_TXDW4_RTSRATE_M 0x0000003f -#define R92C_TXDW4_RTSRATE_S 0 -#define R92C_TXDW4_QOS 0x00000040 -#define R92C_TXDW4_HWSEQ 0x00000080 -#define R92C_TXDW4_DRVRATE 0x00000100 -#define R92C_TXDW4_CTS2SELF 0x00000800 -#define R92C_TXDW4_RTSEN 0x00001000 -#define R92C_TXDW4_HWRTSEN 0x00002000 -#define R92C_TXDW4_SCO_M 0x003f0000 -#define R92C_TXDW4_SCO_S 20 -#define R92C_TXDW4_SCO_SCA 1 -#define R92C_TXDW4_SCO_SCB 2 -#define R92C_TXDW4_40MHZ 0x02000000 - - uint32_t txdw5; -#define R92C_TXDW5_DATARATE_M 0x0000003f -#define R92C_TXDW5_DATARATE_S 0 -#define R92C_TXDW5_SGI 0x00000040 -#define R92C_TXDW5_DATARATE_FBLIMIT_M 0x00001f00 -#define R92C_TXDW5_DATARATE_FBLIMIT_S 8 -#define R92C_TXDW5_RTSRATE_FBLIMIT_M 0x0001e000 -#define R92C_TXDW5_RTSRATE_FBLIMIT_S 13 -#define R92C_TXDW5_RETRY_LIMIT_ENABLE 0x00020000 -#define R92C_TXDW5_DATA_RETRY_LIMIT_M 0x00fc0000 -#define R92C_TXDW5_DATA_RETRY_LIMIT_S 18 -#define R92C_TXDW5_AGGNUM_M 0xff000000 -#define R92C_TXDW5_AGGNUM_S 24 - - uint32_t txdw6; - - uint16_t txbufsize; - uint16_t pad; - uint32_t txbufaddr; - uint32_t txbufaddr64; - - uint32_t nextdescaddr; - uint32_t nextdescaddr64; - - uint32_t reserved[4]; -} __packed __attribute__((aligned(4))); - -static const uint8_t ridx2rate[] = - { 2, 4, 11, 22, 12, 18, 24, 36, 48, 72, 96, 108 }; - -/* HW rate indices. */ -#define RTWN_RIDX_CCK1 0 -#define RTWN_RIDX_CCK11 3 -#define RTWN_RIDX_OFDM6 4 -#define RTWN_RIDX_OFDM24 8 -#define RTWN_RIDX_OFDM54 11 -#define RTWN_RIDX_MCS0 12 -#define RTWN_RIDX_MCS15 27 - -#define RTWN_RIDX_COUNT 28 -#define RTWN_RIDX_UNKNOWN (uint8_t)-1 - -#define RTWN_RATE_IS_CCK(rate) ((rate) <= RTWN_RIDX_CCK11) -#define RTWN_RATE_IS_OFDM(rate) ((rate) >= RTWN_RIDX_OFDM6 && \ - (rate) <= RTWN_RIDX_OFDM54) - - -/* - * Driver definitions. - */ -#define RTWN_NTXQUEUES 9 -#define RTWN_RX_LIST_COUNT 256 -#define RTWN_TX_LIST_COUNT 256 -#define RTWN_HOST_CMD_RING_COUNT 32 - -/* TX queue indices. */ -#define RTWN_BK_QUEUE 0 -#define RTWN_BE_QUEUE 1 -#define RTWN_VI_QUEUE 2 -#define RTWN_VO_QUEUE 3 -#define RTWN_BEACON_QUEUE 4 -#define RTWN_TXCMD_QUEUE 5 -#define RTWN_MGNT_QUEUE 6 -#define RTWN_HIGH_QUEUE 7 -#define RTWN_HCCA_QUEUE 8 - -/* RX queue indices. */ -#define RTWN_RX_QUEUE 0 - -#define RTWN_RXBUFSZ (16 * 1024) -#define RTWN_TXBUFSZ (sizeof(struct r92c_tx_desc) + IEEE80211_MAX_LEN) - -#define RTWN_TX_TIMEOUT 5000 /* ms */ - -#define RTWN_LED_LINK 0 -#define RTWN_LED_DATA 1 - -struct rtwn_rx_radiotap_header { - struct ieee80211_radiotap_header wr_ihdr; - uint8_t wr_flags; - uint8_t wr_rate; - uint16_t wr_chan_freq; - uint16_t wr_chan_flags; - uint8_t wr_dbm_antsignal; -} __packed; - -#define RTWN_RX_RADIOTAP_PRESENT \ - (1 << IEEE80211_RADIOTAP_FLAGS | \ - 1 << IEEE80211_RADIOTAP_RATE | \ - 1 << IEEE80211_RADIOTAP_CHANNEL | \ - 1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL) - -struct rtwn_tx_radiotap_header { - struct ieee80211_radiotap_header wt_ihdr; - uint8_t wt_flags; - uint16_t wt_chan_freq; - uint16_t wt_chan_flags; -} __packed; - -#define RTWN_TX_RADIOTAP_PRESENT \ - (1 << IEEE80211_RADIOTAP_FLAGS | \ - 1 << IEEE80211_RADIOTAP_CHANNEL) - -struct rtwn_rx_data { - bus_dmamap_t map; - struct mbuf *m; - bus_addr_t paddr; -}; - -struct rtwn_rx_ring { - struct r92c_rx_desc *desc; - bus_addr_t paddr; - bus_dma_tag_t desc_dmat; - bus_dmamap_t desc_map; - bus_dma_tag_t data_dmat; - bus_dma_segment_t seg; - struct rtwn_rx_data rx_data[RTWN_RX_LIST_COUNT]; - -}; -struct rtwn_tx_data { - bus_dmamap_t map; - struct mbuf *m; - struct ieee80211_node *ni; -}; - -struct rtwn_tx_ring { - bus_addr_t paddr; - bus_dma_tag_t desc_dmat; - bus_dmamap_t desc_map; - bus_dma_tag_t data_dmat; - bus_dma_segment_t seg; - struct r92c_tx_desc *desc; - struct rtwn_tx_data tx_data[RTWN_TX_LIST_COUNT]; - int queued; - int cur; -}; - -struct rtwn_vap { - struct ieee80211vap vap; - int (*newstate)(struct ieee80211vap *, - enum ieee80211_state, int); -}; -#define RTWN_VAP(vap) ((struct rtwn_vap *)(vap)) - -struct rtwn_softc { - device_t sc_dev; - struct mtx sc_mtx; - struct ieee80211com sc_ic; - struct mbufq sc_snd; - - struct resource *irq; - struct resource *mem; - bus_space_tag_t sc_st; - bus_space_handle_t sc_sh; - void *sc_ih; - bus_size_t sc_mapsize; - int sc_cap_off; - - struct callout calib_to; - struct callout watchdog_to; - - int sc_debug; - - u_int sc_flags; -#define RTWN_FLAG_CCK_HIPWR 0x01 -#define RTWN_FLAG_BUSY 0x02 -#define RTWN_RUNNING 0x04 - - u_int chip; -#define RTWN_CHIP_88C 0x00 -#define RTWN_CHIP_92C 0x01 -#define RTWN_CHIP_92C_1T2R 0x02 -#define RTWN_CHIP_UMC 0x04 -#define RTWN_CHIP_UMC_A_CUT 0x08 - - uint8_t board_type; - uint8_t regulatory; - uint8_t pa_setting; - int avg_pwdb; - int thcal_state; - int thcal_lctemp; - int ntxchains; - int nrxchains; - int ledlink; - - int sc_tx_timer; - int fwcur; - struct rtwn_rx_ring rx_ring; - struct rtwn_tx_ring tx_ring[RTWN_NTXQUEUES]; - uint32_t qfullmsk; - struct r92c_rom rom; - - uint32_t rf_chnlbw[R92C_MAX_CHAINS]; - - struct rtwn_rx_radiotap_header sc_rxtap; - struct rtwn_tx_radiotap_header sc_txtap; -}; +#define RTWN_MAX_CONDITIONS 3 /* - * MAC initialization values. + * Structure for MAC initialization values. */ -static const struct { +struct rtwn_mac_prog { uint16_t reg; uint8_t val; -} rtl8192ce_mac[] = { - { 0x420, 0x80 }, { 0x423, 0x00 }, { 0x430, 0x00 }, { 0x431, 0x00 }, - { 0x432, 0x00 }, { 0x433, 0x01 }, { 0x434, 0x04 }, { 0x435, 0x05 }, - { 0x436, 0x06 }, { 0x437, 0x07 }, { 0x438, 0x00 }, { 0x439, 0x00 }, - { 0x43a, 0x00 }, { 0x43b, 0x01 }, { 0x43c, 0x04 }, { 0x43d, 0x05 }, - { 0x43e, 0x06 }, { 0x43f, 0x07 }, { 0x440, 0x5d }, { 0x441, 0x01 }, - { 0x442, 0x00 }, { 0x444, 0x15 }, { 0x445, 0xf0 }, { 0x446, 0x0f }, - { 0x447, 0x00 }, { 0x458, 0x41 }, { 0x459, 0xa8 }, { 0x45a, 0x72 }, - { 0x45b, 0xb9 }, { 0x460, 0x88 }, { 0x461, 0x88 }, { 0x462, 0x06 }, - { 0x463, 0x03 }, { 0x4c8, 0x04 }, { 0x4c9, 0x08 }, { 0x4cc, 0x02 }, - { 0x4cd, 0x28 }, { 0x4ce, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 }, - { 0x502, 0x2f }, { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 }, - { 0x506, 0x5e }, { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 }, - { 0x50a, 0x5e }, { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 }, - { 0x50e, 0x00 }, { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a }, - { 0x515, 0x10 }, { 0x516, 0x0a }, { 0x517, 0x10 }, { 0x51a, 0x16 }, - { 0x524, 0x0f }, { 0x525, 0x4f }, { 0x546, 0x20 }, { 0x547, 0x00 }, - { 0x559, 0x02 }, { 0x55a, 0x02 }, { 0x55d, 0xff }, { 0x605, 0x30 }, - { 0x608, 0x0e }, { 0x609, 0x2a }, { 0x652, 0x20 }, { 0x63c, 0x0a }, - { 0x63d, 0x0e }, { 0x700, 0x21 }, { 0x701, 0x43 }, { 0x702, 0x65 }, - { 0x703, 0x87 }, { 0x708, 0x21 }, { 0x709, 0x43 }, { 0x70a, 0x65 }, - { 0x70b, 0x87 } }; /* - * Baseband initialization values. + * Structure for baseband initialization values. */ struct rtwn_bb_prog { int count; - const uint16_t *regs; - const uint32_t *vals; - int agccount; - const uint32_t *agcvals; -}; - -/* - * RTL8192CU and RTL8192CE-VAU. - */ -static const uint16_t rtl8192ce_bb_regs[] = { - 0x024, 0x028, 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, - 0x81c, 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, - 0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, 0x860, - 0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880, 0x884, - 0x888, 0x88c, 0x890, 0x894, 0x898, 0x89c, 0x900, 0x904, 0x908, - 0x90c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c, - 0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xc00, 0xc04, 0xc08, - 0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, 0xc20, 0xc24, 0xc28, 0xc2c, - 0xc30, 0xc34, 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, - 0xc54, 0xc58, 0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, 0xc74, - 0xc78, 0xc7c, 0xc80, 0xc84, 0xc88, 0xc8c, 0xc90, 0xc94, 0xc98, - 0xc9c, 0xca0, 0xca4, 0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8, 0xcbc, - 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc, 0xce0, - 0xce4, 0xce8, 0xcec, 0xd00, 0xd04, 0xd08, 0xd0c, 0xd10, 0xd14, - 0xd18, 0xd2c, 0xd30, 0xd34, 0xd38, 0xd3c, 0xd40, 0xd44, 0xd48, - 0xd4c, 0xd50, 0xd54, 0xd58, 0xd5c, 0xd60, 0xd64, 0xd68, 0xd6c, - 0xd70, 0xd74, 0xd78, 0xe00, 0xe04, 0xe08, 0xe10, 0xe14, 0xe18, - 0xe1c, 0xe28, 0xe30, 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44, 0xe48, - 0xe4c, 0xe50, 0xe54, 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c, 0xe70, - 0xe74, 0xe78, 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0, 0xed4, - 0xed8, 0xedc, 0xee0, 0xeec, 0xf14, 0xf4c, 0xf00 + const uint16_t *reg; + const uint32_t *val; + const uint8_t cond[RTWN_MAX_CONDITIONS]; + const struct rtwn_bb_prog *next; }; -static const uint32_t rtl8192ce_bb_vals_2t[] = { - 0x0011800f, 0x00ffdb83, 0x80040002, 0x00000003, 0x0000fc00, - 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, - 0x01000100, 0x00390004, 0x01000100, 0x00390004, 0x27272727, - 0x27272727, 0x27272727, 0x27272727, 0x00010000, 0x00010000, - 0x27272727, 0x27272727, 0x00000000, 0x00000000, 0x569a569a, - 0x0c1b25a4, 0x66e60230, 0x061f0130, 0x27272727, 0x2b2b2b27, - 0x07000700, 0x22184000, 0x08080808, 0x00000000, 0xc0083070, - 0x000004d5, 0x00000000, 0xcc0000c0, 0x00000800, 0xfffffffe, - 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, - 0x81121313, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, - 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, - 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, - 0x48071d40, 0x03a05633, 0x000000e4, 0x6c6c6c6c, 0x08800000, - 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, - 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, - 0x69543420, 0x43bc0094, 0x69543420, 0x433c0094, 0x00000000, - 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db, - 0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100, - 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, - 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, - 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, - 0x00080740, 0x00020403, 0x0000907f, 0x20010201, 0xa0633333, - 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, - 0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064, - 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, - 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, - 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, - 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, - 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, - 0x02140102, 0x28160d05, 0x00000010, 0x001b25a4, 0x63db25a4, - 0x63db25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, - 0x63db25a4, 0x0c1b25a4, 0x63db25a4, 0x63db25a4, 0x63db25a4, - 0x63db25a4, 0x001b25a4, 0x001b25a4, 0x6fdb25a4, 0x00000003, - 0x00000000, 0x00000300 -}; - -static const uint32_t rtl8192ce_bb_vals_1t[] = { - 0x0011800f, 0x00ffdb83, 0x80040000, 0x00000001, 0x0000fc00, - 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, - 0x01000100, 0x00390004, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x569a569a, - 0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, 0x32323200, - 0x07000700, 0x22004000, 0x00000808, 0x00000000, 0xc0083070, - 0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, 0xfffffffe, - 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, - 0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, - 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, - 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, - 0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000, - 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, - 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, - 0x69543420, 0x43bc0094, 0x69543420, 0x433c0094, 0x00000000, - 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db, - 0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100, - 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, - 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, - 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, - 0x00080740, 0x00020401, 0x0000907f, 0x20010201, 0xa0633333, - 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, - 0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064, - 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, - 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, - 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, - 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, - 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, - 0x02140102, 0x28160d05, 0x00000010, 0x001b25a4, 0x631b25a0, - 0x631b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, - 0x631b25a0, 0x081b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0, - 0x631b25a0, 0x001b25a0, 0x001b25a0, 0x6b1b25a0, 0x00000003, - 0x00000000, 0x00000300, -}; - -static const uint32_t rtl8192ce_agc_vals[] = { - 0x7b000001, 0x7b010001, 0x7b020001, 0x7b030001, 0x7b040001, - 0x7b050001, 0x7a060001, 0x79070001, 0x78080001, 0x77090001, - 0x760a0001, 0x750b0001, 0x740c0001, 0x730d0001, 0x720e0001, - 0x710f0001, 0x70100001, 0x6f110001, 0x6e120001, 0x6d130001, - 0x6c140001, 0x6b150001, 0x6a160001, 0x69170001, 0x68180001, - 0x67190001, 0x661a0001, 0x651b0001, 0x641c0001, 0x631d0001, - 0x621e0001, 0x611f0001, 0x60200001, 0x49210001, 0x48220001, - 0x47230001, 0x46240001, 0x45250001, 0x44260001, 0x43270001, - 0x42280001, 0x41290001, 0x402a0001, 0x262b0001, 0x252c0001, - 0x242d0001, 0x232e0001, 0x222f0001, 0x21300001, 0x20310001, - 0x06320001, 0x05330001, 0x04340001, 0x03350001, 0x02360001, - 0x01370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001, - 0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001, 0x7b400001, - 0x7b410001, 0x7b420001, 0x7b430001, 0x7b440001, 0x7b450001, - 0x7a460001, 0x79470001, 0x78480001, 0x77490001, 0x764a0001, - 0x754b0001, 0x744c0001, 0x734d0001, 0x724e0001, 0x714f0001, - 0x70500001, 0x6f510001, 0x6e520001, 0x6d530001, 0x6c540001, - 0x6b550001, 0x6a560001, 0x69570001, 0x68580001, 0x67590001, - 0x665a0001, 0x655b0001, 0x645c0001, 0x635d0001, 0x625e0001, - 0x615f0001, 0x60600001, 0x49610001, 0x48620001, 0x47630001, - 0x46640001, 0x45650001, 0x44660001, 0x43670001, 0x42680001, - 0x41690001, 0x406a0001, 0x266b0001, 0x256c0001, 0x246d0001, - 0x236e0001, 0x226f0001, 0x21700001, 0x20710001, 0x06720001, - 0x05730001, 0x04740001, 0x03750001, 0x02760001, 0x01770001, - 0x00780001, 0x00790001, 0x007a0001, 0x007b0001, 0x007c0001, - 0x007d0001, 0x007e0001, 0x007f0001, 0x3800001e, 0x3801001e, - 0x3802001e, 0x3803001e, 0x3804001e, 0x3805001e, 0x3806001e, - 0x3807001e, 0x3808001e, 0x3c09001e, 0x3e0a001e, 0x400b001e, - 0x440c001e, 0x480d001e, 0x4c0e001e, 0x500f001e, 0x5210001e, - 0x5611001e, 0x5a12001e, 0x5e13001e, 0x6014001e, 0x6015001e, - 0x6016001e, 0x6217001e, 0x6218001e, 0x6219001e, 0x621a001e, - 0x621b001e, 0x621c001e, 0x621d001e, 0x621e001e, 0x621f001e -}; - -static const struct rtwn_bb_prog rtl8192ce_bb_prog_2t = { - nitems(rtl8192ce_bb_regs), - rtl8192ce_bb_regs, - rtl8192ce_bb_vals_2t, - nitems(rtl8192ce_agc_vals), - rtl8192ce_agc_vals -}; - -static const struct rtwn_bb_prog rtl8192ce_bb_prog_1t = { - nitems(rtl8192ce_bb_regs), - rtl8192ce_bb_regs, - rtl8192ce_bb_vals_1t, - nitems(rtl8192ce_agc_vals), - rtl8192ce_agc_vals -}; - -/* - * RTL8188CU. - */ -static const uint32_t rtl8192cu_bb_vals[] = { - 0x0011800d, 0x00ffdb83, 0x80040002, 0x00000003, 0x0000fc00, - 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, - 0x01000100, 0x00390004, 0x01000100, 0x00390004, 0x27272727, - 0x27272727, 0x27272727, 0x27272727, 0x00010000, 0x00010000, - 0x27272727, 0x27272727, 0x00000000, 0x00000000, 0x569a569a, - 0x0c1b25a4, 0x66e60230, 0x061f0130, 0x27272727, 0x2b2b2b27, - 0x07000700, 0x22184000, 0x08080808, 0x00000000, 0xc0083070, - 0x000004d5, 0x00000000, 0xcc0000c0, 0x00000800, 0xfffffffe, - 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, - 0x81121313, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, - 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, - 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, - 0x48071d40, 0x03a05633, 0x000000e4, 0x6c6c6c6c, 0x08800000, - 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, - 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, - 0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000, - 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x0186115b, - 0x0000001f, 0x00b99612, 0x40000100, 0x20f60000, 0x40000100, - 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, - 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, - 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, - 0x00080740, 0x00020403, 0x0000907f, 0x20010201, 0xa0633333, - 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, - 0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064, - 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, - 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, - 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, - 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, - 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, - 0x02140102, 0x28160d05, 0x00000010, 0x001b25a4, 0x63db25a4, - 0x63db25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, - 0x63db25a4, 0x0c1b25a4, 0x63db25a4, 0x63db25a4, 0x63db25a4, - 0x63db25a4, 0x001b25a4, 0x001b25a4, 0x6fdb25a4, 0x00000003, - 0x00000000, 0x00000300 -}; - -static const struct rtwn_bb_prog rtl8192cu_bb_prog = { - nitems(rtl8192ce_bb_regs), - rtl8192ce_bb_regs, - rtl8192cu_bb_vals, - nitems(rtl8192ce_agc_vals), - rtl8192ce_agc_vals -}; - -/* - * RTL8188CE-VAU. - */ -static const uint32_t rtl8188ce_bb_vals[] = { - 0x0011800d, 0x00ffdb83, 0x80040000, 0x00000001, 0x0000fc00, - 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, - 0x01000100, 0x00390004, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x569a569a, - 0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, 0x32323200, - 0x07000700, 0x22004000, 0x00000808, 0x00000000, 0xc0083070, - 0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, 0xfffffffe, - 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, - 0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, - 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, - 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, - 0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000, - 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, - 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, - 0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000, - 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db, - 0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100, - 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, - 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, - 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, - 0x00080740, 0x00020401, 0x0000907f, 0x20010201, 0xa0633333, - 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, - 0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064, - 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, - 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, - 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, - 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, - 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, - 0x02140102, 0x28160d05, 0x00000008, 0x001b25a4, 0x631b25a0, - 0x631b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, - 0x631b25a0, 0x081b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0, - 0x631b25a0, 0x001b25a0, 0x001b25a0, 0x6b1b25a0, 0x00000003, - 0x00000000, 0x00000300 -}; - -static const uint32_t rtl8188ce_agc_vals[] = { - 0x7b000001, 0x7b010001, 0x7b020001, 0x7b030001, 0x7b040001, - 0x7b050001, 0x7a060001, 0x79070001, 0x78080001, 0x77090001, - 0x760a0001, 0x750b0001, 0x740c0001, 0x730d0001, 0x720e0001, - 0x710f0001, 0x70100001, 0x6f110001, 0x6e120001, 0x6d130001, - 0x6c140001, 0x6b150001, 0x6a160001, 0x69170001, 0x68180001, - 0x67190001, 0x661a0001, 0x651b0001, 0x641c0001, 0x631d0001, - 0x621e0001, 0x611f0001, 0x60200001, 0x49210001, 0x48220001, - 0x47230001, 0x46240001, 0x45250001, 0x44260001, 0x43270001, - 0x42280001, 0x41290001, 0x402a0001, 0x262b0001, 0x252c0001, - 0x242d0001, 0x232e0001, 0x222f0001, 0x21300001, 0x20310001, - 0x06320001, 0x05330001, 0x04340001, 0x03350001, 0x02360001, - 0x01370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001, - 0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001, 0x7b400001, - 0x7b410001, 0x7b420001, 0x7b430001, 0x7b440001, 0x7b450001, - 0x7a460001, 0x79470001, 0x78480001, 0x77490001, 0x764a0001, - 0x754b0001, 0x744c0001, 0x734d0001, 0x724e0001, 0x714f0001, - 0x70500001, 0x6f510001, 0x6e520001, 0x6d530001, 0x6c540001, - 0x6b550001, 0x6a560001, 0x69570001, 0x68580001, 0x67590001, - 0x665a0001, 0x655b0001, 0x645c0001, 0x635d0001, 0x625e0001, - 0x615f0001, 0x60600001, 0x49610001, 0x48620001, 0x47630001, - 0x46640001, 0x45650001, 0x44660001, 0x43670001, 0x42680001, - 0x41690001, 0x406a0001, 0x266b0001, 0x256c0001, 0x246d0001, - 0x236e0001, 0x226f0001, 0x21700001, 0x20710001, 0x06720001, - 0x05730001, 0x04740001, 0x03750001, 0x02760001, 0x01770001, - 0x00780001, 0x00790001, 0x007a0001, 0x007b0001, 0x007c0001, - 0x007d0001, 0x007e0001, 0x007f0001, 0x3800001e, 0x3801001e, - 0x3802001e, 0x3803001e, 0x3804001e, 0x3805001e, 0x3806001e, - 0x3807001e, 0x3808001e, 0x3c09001e, 0x3e0a001e, 0x400b001e, - 0x440c001e, 0x480d001e, 0x4c0e001e, 0x500f001e, 0x5210001e, - 0x5611001e, 0x5a12001e, 0x5e13001e, 0x6014001e, 0x6015001e, - 0x6016001e, 0x6217001e, 0x6218001e, 0x6219001e, 0x621a001e, - 0x621b001e, 0x621c001e, 0x621d001e, 0x621e001e, 0x621f001e -}; - -static const struct rtwn_bb_prog rtl8188ce_bb_prog = { - nitems(rtl8192ce_bb_regs), - rtl8192ce_bb_regs, - rtl8188ce_bb_vals, - nitems(rtl8188ce_agc_vals), - rtl8188ce_agc_vals -}; - -static const uint32_t rtl8188cu_bb_vals[] = { - 0x0011800d, 0x00ffdb83, 0x80040000, 0x00000001, 0x0000fc00, - 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, - 0x01000100, 0x00390004, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x569a569a, - 0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, 0x32323200, - 0x07000700, 0x22004000, 0x00000808, 0x00000000, 0xc0083070, - 0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, 0xfffffffe, - 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, - 0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, - 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, - 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, - 0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000, - 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, - 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, - 0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000, - 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db, - 0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100, - 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, - 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, - 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, - 0x00080740, 0x00020401, 0x0000907f, 0x20010201, 0xa0633333, - 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, - 0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064, - 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, - 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, - 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, - 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, - 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, - 0x02140102, 0x28160d05, 0x00000008, 0x001b25a4, 0x631b25a0, - 0x631b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, - 0x631b25a0, 0x081b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0, - 0x631b25a0, 0x001b25a0, 0x001b25a0, 0x6b1b25a0, 0x00000003, - 0x00000000, 0x00000300 -}; - -static const struct rtwn_bb_prog rtl8188cu_bb_prog = { - nitems(rtl8192ce_bb_regs), - rtl8192ce_bb_regs, - rtl8188cu_bb_vals, - nitems(rtl8188ce_agc_vals), - rtl8188ce_agc_vals -}; - -/* - * RTL8188RU. - */ -static const uint16_t rtl8188ru_bb_regs[] = { - 0x024, 0x028, 0x040, 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, - 0x818, 0x81c, 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, - 0x83c, 0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, - 0x860, 0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880, - 0x884, 0x888, 0x88c, 0x890, 0x894, 0x898, 0x89c, 0x900, 0x904, - 0x908, 0x90c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, - 0xa1c, 0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xc00, 0xc04, - 0xc08, 0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, 0xc20, 0xc24, 0xc28, - 0xc2c, 0xc30, 0xc34, 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, - 0xc50, 0xc54, 0xc58, 0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, - 0xc74, 0xc78, 0xc7c, 0xc80, 0xc84, 0xc88, 0xc8c, 0xc90, 0xc94, - 0xc98, 0xc9c, 0xca0, 0xca4, 0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8, - 0xcbc, 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc, - 0xce0, 0xce4, 0xce8, 0xcec, 0xd00, 0xd04, 0xd08, 0xd0c, 0xd10, - 0xd14, 0xd18, 0xd2c, 0xd30, 0xd34, 0xd38, 0xd3c, 0xd40, 0xd44, - 0xd48, 0xd4c, 0xd50, 0xd54, 0xd58, 0xd5c, 0xd60, 0xd64, 0xd68, - 0xd6c, 0xd70, 0xd74, 0xd78, 0xe00, 0xe04, 0xe08, 0xe10, 0xe14, - 0xe18, 0xe1c, 0xe28, 0xe30, 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44, - 0xe48, 0xe4c, 0xe50, 0xe54, 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c, - 0xe70, 0xe74, 0xe78, 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0, - 0xed4, 0xed8, 0xedc, 0xee0, 0xeec, 0xee8, 0xf14, 0xf4c, 0xf00 -}; - -static const uint32_t rtl8188ru_bb_vals[] = { - 0x0011800d, 0x00ffdb83, 0x000c0004, 0x80040000, 0x00000001, - 0x0000fc00, 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, - 0x00000000, 0x01000100, 0x00390204, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x569a569a, 0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, - 0x32323200, 0x03000300, 0x22004000, 0x00000808, 0x00ffc3f1, - 0xc0083070, 0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, - 0xfffffffe, 0x40302010, 0x00706050, 0x00000000, 0x00000023, - 0x00000000, 0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, - 0x2e68120f, 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, - 0x15160000, 0x070b0f12, 0x00000104, 0x00d30000, 0x101fbf00, - 0x00000007, 0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, - 0x08800000, 0x40000100, 0x08800000, 0x40000100, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, - 0x49795994, 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, - 0x007f037f, 0x6954342e, 0x43bc0094, 0x6954342f, 0x433c0094, - 0x00000000, 0x5116848b, 0x47c00bff, 0x00000036, 0x2c56000d, - 0x018610db, 0x0000001f, 0x00b91612, 0x24000090, 0x20f60000, - 0x24000090, 0x20200000, 0x00121820, 0x00000000, 0x00121820, - 0x00007f7f, 0x00000000, 0x00000080, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x28000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x64b22427, 0x00766932, 0x00222222, 0x00000000, 0x37644302, - 0x2f97d40c, 0x00080740, 0x00020401, 0x0000907f, 0x20010201, - 0xa0633333, 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, - 0x80608000, 0x00000000, 0x00027293, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x6437140a, 0x00000000, 0x00000000, - 0x30032064, 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, - 0x1812362e, 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, - 0x03902a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, - 0x00000000, 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, - 0x01007c00, 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, - 0x10008c1f, 0x02140102, 0x28160d05, 0x00000010, 0x001b25a4, - 0x631b25a0, 0x631b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, - 0x081b25a0, 0x631b25a0, 0x081b25a0, 0x631b25a0, 0x631b25a0, - 0x631b25a0, 0x631b25a0, 0x001b25a0, 0x001b25a0, 0x6b1b25a0, - 0x31555448, 0x00000003, 0x00000000, 0x00000300 -}; - -static const uint32_t rtl8188ru_agc_vals[] = { - 0x7b000001, 0x7b010001, 0x7b020001, 0x7b030001, 0x7b040001, - 0x7b050001, 0x7b060001, 0x7b070001, 0x7b080001, 0x7a090001, - 0x790a0001, 0x780b0001, 0x770c0001, 0x760d0001, 0x750e0001, - 0x740f0001, 0x73100001, 0x72110001, 0x71120001, 0x70130001, - 0x6f140001, 0x6e150001, 0x6d160001, 0x6c170001, 0x6b180001, - 0x6a190001, 0x691a0001, 0x681b0001, 0x671c0001, 0x661d0001, - 0x651e0001, 0x641f0001, 0x63200001, 0x62210001, 0x61220001, - 0x60230001, 0x46240001, 0x45250001, 0x44260001, 0x43270001, - 0x42280001, 0x41290001, 0x402a0001, 0x262b0001, 0x252c0001, - 0x242d0001, 0x232e0001, 0x222f0001, 0x21300001, 0x20310001, - 0x06320001, 0x05330001, 0x04340001, 0x03350001, 0x02360001, - 0x01370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001, - 0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001, 0x7b400001, - 0x7b410001, 0x7b420001, 0x7b430001, 0x7b440001, 0x7b450001, - 0x7b460001, 0x7b470001, 0x7b480001, 0x7a490001, 0x794a0001, - 0x784b0001, 0x774c0001, 0x764d0001, 0x754e0001, 0x744f0001, - 0x73500001, 0x72510001, 0x71520001, 0x70530001, 0x6f540001, - 0x6e550001, 0x6d560001, 0x6c570001, 0x6b580001, 0x6a590001, - 0x695a0001, 0x685b0001, 0x675c0001, 0x665d0001, 0x655e0001, - 0x645f0001, 0x63600001, 0x62610001, 0x61620001, 0x60630001, - 0x46640001, 0x45650001, 0x44660001, 0x43670001, 0x42680001, - 0x41690001, 0x406a0001, 0x266b0001, 0x256c0001, 0x246d0001, - 0x236e0001, 0x226f0001, 0x21700001, 0x20710001, 0x06720001, - 0x05730001, 0x04740001, 0x03750001, 0x02760001, 0x01770001, - 0x00780001, 0x00790001, 0x007a0001, 0x007b0001, 0x007c0001, - 0x007d0001, 0x007e0001, 0x007f0001, 0x3800001e, 0x3801001e, - 0x3802001e, 0x3803001e, 0x3804001e, 0x3805001e, 0x3806001e, - 0x3807001e, 0x3808001e, 0x3c09001e, 0x3e0a001e, 0x400b001e, - 0x440c001e, 0x480d001e, 0x4c0e001e, 0x500f001e, 0x5210001e, - 0x5611001e, 0x5a12001e, 0x5e13001e, 0x6014001e, 0x6015001e, - 0x6016001e, 0x6217001e, 0x6218001e, 0x6219001e, 0x621a001e, - 0x621b001e, 0x621c001e, 0x621d001e, 0x621e001e, 0x621f001e -}; - -static const struct rtwn_bb_prog rtl8188ru_bb_prog = { - nitems(rtl8188ru_bb_regs), - rtl8188ru_bb_regs, - rtl8188ru_bb_vals, - nitems(rtl8188ru_agc_vals), - rtl8188ru_agc_vals +struct rtwn_agc_prog { + int count; + const uint32_t *val; + const uint8_t cond[RTWN_MAX_CONDITIONS]; + const struct rtwn_agc_prog *next; }; /* - * RF initialization values. + * Structure for RF initialization values. */ struct rtwn_rf_prog { int count; - const uint8_t *regs; - const uint32_t *vals; + const uint8_t *reg; + const uint32_t *val; + const uint8_t cond[RTWN_MAX_CONDITIONS]; + const struct rtwn_rf_prog *next; }; -/* - * RTL8192CU and RTL8192CE-VAU. - */ -static const uint8_t rtl8192ce_rf1_regs[] = { - 0x00, 0x01, 0x02, 0x03, 0x04, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, - 0x0f, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, - 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2a, 0x2b, - 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, - 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, - 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, - 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, - 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, - 0x2c, 0x2a, 0x10, 0x11, 0x10, 0x11, 0x10, 0x11, 0x10, 0x11, 0x10, - 0x11, 0x10, 0x11, 0x10, 0x11, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, - 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, - 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, 0x16, 0x00, - 0x18, 0xfe, 0xfe, 0x1f, 0xfe, 0xfe, 0x1e, 0x1f, 0x00 -}; - -static const uint32_t rtl8192ce_rf1_vals[] = { - 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1, - 0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x00000, 0x10255, - 0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000, - 0x00000, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x577c0, - 0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808, - 0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003, - 0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d, - 0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333, - 0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a, - 0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a, - 0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d, - 0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333, - 0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f, - 0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500, - 0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0x32000, - 0x71000, 0xb0000, 0xfc000, 0x287af, 0x244b7, 0x204ab, 0x1c49f, - 0x18493, 0x14297, 0x10295, 0x0c298, 0x0819c, 0x040a8, 0x0001c, - 0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f424, 0x4f424, 0x8f424, - 0xcf424, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401, - 0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000, - 0x30159 -}; -static const uint8_t rtl8192ce_rf2_regs[] = { - 0x00, 0x01, 0x02, 0x03, 0x04, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, - 0x0f, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, - 0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, - 0x15, 0x15, 0x16, 0x16, 0x16, 0x16 -}; - -static const uint32_t rtl8192ce_rf2_vals[] = { - 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1, - 0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x32000, 0x71000, - 0xb0000, 0xfc000, 0x287af, 0x244b7, 0x204ab, 0x1c49f, 0x18493, - 0x14297, 0x10295, 0x0c298, 0x0819c, 0x040a8, 0x0001c, 0x1944c, - 0x59444, 0x9944c, 0xd9444, 0x0f424, 0x4f424, 0x8f424, 0xcf424, - 0xe0330, 0xa0330, 0x60330, 0x20330 -}; - -static const struct rtwn_rf_prog rtl8192ce_rf_prog[] = { - { - nitems(rtl8192ce_rf1_regs), - rtl8192ce_rf1_regs, - rtl8192ce_rf1_vals - }, - { - nitems(rtl8192ce_rf2_regs), - rtl8192ce_rf2_regs, - rtl8192ce_rf2_vals - } -}; - -/* - * RTL8188CE-VAU. - */ -static const uint32_t rtl8188ce_rf_vals[] = { - 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1, - 0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x00000, 0x10255, - 0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000, - 0x00000, 0x01558, 0x00060, 0x00483, 0x4f200, 0xec7d9, 0x577c0, - 0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808, - 0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003, - 0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d, - 0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333, - 0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a, - 0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a, - 0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d, - 0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333, - 0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f, - 0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500, - 0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0x32000, - 0x71000, 0xb0000, 0xfc000, 0x287b3, 0x244b7, 0x204ab, 0x1c49f, - 0x18493, 0x1429b, 0x10299, 0x0c29c, 0x081a0, 0x040ac, 0x00020, - 0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f424, 0x4f424, 0x8f424, - 0xcf424, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401, - 0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000, - 0x30159 -}; - -static const struct rtwn_rf_prog rtl8188ce_rf_prog[] = { - { - nitems(rtl8192ce_rf1_regs), - rtl8192ce_rf1_regs, - rtl8188ce_rf_vals - } -}; - - -/* - * RTL8188CU. - */ -static const uint32_t rtl8188cu_rf_vals[] = { - 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1, - 0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x00000, 0x10255, - 0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000, - 0x00000, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x577c0, - 0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808, - 0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003, - 0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d, - 0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333, - 0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a, - 0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a, - 0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d, - 0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333, - 0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f, - 0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500, - 0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0x32000, - 0x71000, 0xb0000, 0xfc000, 0x287b3, 0x244b7, 0x204ab, 0x1c49f, - 0x18493, 0x1429b, 0x10299, 0x0c29c, 0x081a0, 0x040ac, 0x00020, - 0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f405, 0x4f405, 0x8f405, - 0xcf405, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401, - 0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000, - 0x30159 -}; - -static const struct rtwn_rf_prog rtl8188cu_rf_prog[] = { - { - nitems(rtl8192ce_rf1_regs), - rtl8192ce_rf1_regs, - rtl8188cu_rf_vals - } -}; - -/* - * RTL8188RU. - */ -static const uint32_t rtl8188ru_rf_vals[] = { - 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb0, - 0x54867, 0x8992e, 0x0e529, 0x39ce7, 0x00451, 0x00000, 0x00255, - 0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000, - 0x0083c, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x977c0, - 0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808, - 0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003, - 0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d, - 0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333, - 0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a, - 0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a, - 0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d, - 0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333, - 0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f, - 0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500, - 0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0xd8000, - 0x90000, 0x51000, 0x12000, 0x28fb4, 0x24fa8, 0x207a4, 0x1c798, - 0x183a4, 0x14398, 0x101a4, 0x0c198, 0x080a4, 0x04098, 0x00014, - 0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f405, 0x4f405, 0x8f405, - 0xcf405, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401, - 0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000, - 0x30159 -}; - -static const struct rtwn_rf_prog rtl8188ru_rf_prog[] = { - { - nitems(rtl8192ce_rf1_regs), - rtl8192ce_rf1_regs, - rtl8188ru_rf_vals - } -}; - -struct rtwn_txpwr { - uint8_t pwr[3][28]; -}; - -/* - * Per RF chain/group/rate Tx gain values. - */ -static const struct rtwn_txpwr rtl8192cu_txagc[] = { - { { /* Chain 0. */ - { /* Group 0. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x0c, 0x0c, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02, /* OFDM6~54. */ - 0x0e, 0x0d, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02, /* MCS0~7. */ - 0x0e, 0x0d, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02 /* MCS8~15. */ - }, - { /* Group 1. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - }, - { /* Group 2. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - } - } }, - { { /* Chain 1. */ - { /* Group 0. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - }, - { /* Group 1. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - }, - { /* Group 2. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - } - } } -}; - -static const struct rtwn_txpwr rtl8188ru_txagc[] = { - { { /* Chain 0. */ - { /* Group 0. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x08, 0x08, 0x08, 0x06, 0x06, 0x04, 0x04, 0x00, /* OFDM6~54. */ - 0x08, 0x06, 0x06, 0x04, 0x04, 0x02, 0x02, 0x00, /* MCS0~7. */ - 0x08, 0x06, 0x06, 0x04, 0x04, 0x02, 0x02, 0x00 /* MCS8~15. */ - }, - { /* Group 1. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - }, - { /* Group 2. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - } - } } -}; +/* XXX move to net80211. */ +static __inline int +rtwn_chan2centieee(const struct ieee80211_channel *c) +{ + int chan; -#define RTWN_LOCK_INIT(_sc) \ - mtx_init(&(_sc)->sc_mtx, device_get_nameunit((_sc)->sc_dev), \ - MTX_NETWORK_LOCK, MTX_DEF) -#define RTWN_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx) -#define RTWN_LOCK_ASSERT(_sc) mtx_assert(&(_sc)->sc_mtx, MA_OWNED) -#define RTWN_UNLOCK(_sc) mtx_unlock(&(_sc)->sc_mtx) -#define RTWN_LOCK_DESTROY(_sc) mtx_destroy(&(_sc)->sc_mtx) + chan = c->ic_ieee; + if (c->ic_extieee != 0) + chan = (chan + c->ic_extieee) / 2; + return (chan); +} diff --git a/sys/dev/rtwn/if_rtwnvar.h b/sys/dev/rtwn/if_rtwnvar.h new file mode 100644 index 000000000000..c07fd2f5002e --- /dev/null +++ b/sys/dev/rtwn/if_rtwnvar.h @@ -0,0 +1,609 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef IF_RTWNVAR_H +#define IF_RTWNVAR_H + +#include "opt_rtwn.h" + +#define RTWN_TX_DESC_SIZE 64 + +#define RTWN_RXBUFSZ (8 * 1024) +#define RTWN_TXBUFSZ (RTWN_TX_DESC_SIZE + IEEE80211_MAX_LEN) + +#define RTWN_BCN_MAX_SIZE 512 +#define RTWN_CAM_ENTRY_LIMIT 64 + +#define RTWN_MACID_BC 1 /* Broadcast. */ +#define RTWN_MACID_UNDEFINED 0x7fff +#define RTWN_MACID_VALID 0x8000 +#define RTWN_MACID_LIMIT 128 + +#define RTWN_TX_TIMEOUT 5000 /* ms */ +#define RTWN_MAX_EPOUT 4 +#define RTWN_PORT_COUNT 2 + +#define RTWN_LED_LINK 0 +#define RTWN_LED_DATA 1 + +struct rtwn_rx_radiotap_header { + struct ieee80211_radiotap_header wr_ihdr; + uint64_t wr_tsft; + uint8_t wr_flags; + uint8_t wr_rate; + uint16_t wr_chan_freq; + uint16_t wr_chan_flags; + int8_t wr_dbm_antsignal; + int8_t wr_dbm_antnoise; +} __packed __aligned(8); + +#define RTWN_RX_RADIOTAP_PRESENT \ + (1 << IEEE80211_RADIOTAP_TSFT | \ + 1 << IEEE80211_RADIOTAP_FLAGS | \ + 1 << IEEE80211_RADIOTAP_RATE | \ + 1 << IEEE80211_RADIOTAP_CHANNEL | \ + 1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL | \ + 1 << IEEE80211_RADIOTAP_DBM_ANTNOISE) + +struct rtwn_tx_radiotap_header { + struct ieee80211_radiotap_header wt_ihdr; + uint8_t wt_flags; + uint16_t wt_chan_freq; + uint16_t wt_chan_flags; +} __packed __aligned(8); + +#define RTWN_TX_RADIOTAP_PRESENT \ + (1 << IEEE80211_RADIOTAP_FLAGS | \ + 1 << IEEE80211_RADIOTAP_CHANNEL) + +struct rtwn_tx_buf { + uint8_t txd[RTWN_TX_DESC_SIZE]; +} __attribute__((aligned(4))); + +struct rtwn_softc; + +union sec_param { + struct ieee80211_key key; + int macid; +}; + +#define CMD_FUNC_PROTO void (*func)(struct rtwn_softc *, \ + union sec_param *) + +struct rtwn_cmdq { + union sec_param data; + CMD_FUNC_PROTO; +}; +#define RTWN_CMDQ_SIZE 16 + +struct rtwn_node { + struct ieee80211_node ni; /* must be the first */ + int id; + int8_t last_rssi; + int avg_pwdb; +}; +#define RTWN_NODE(ni) ((struct rtwn_node *)(ni)) + +struct rtwn_vap { + struct ieee80211vap vap; + int id; +#define RTWN_VAP_ID_INVALID -1 + int curr_mode; + + struct rtwn_tx_buf bcn_desc; + struct mbuf *bcn_mbuf; + + struct callout tsf_sync_adhoc; + struct task tsf_sync_adhoc_task; + + const struct ieee80211_key *keys[IEEE80211_WEP_NKID]; + + int (*newstate)(struct ieee80211vap *, + enum ieee80211_state, int); + void (*recv_mgmt)(struct ieee80211_node *, + struct mbuf *, int, + const struct ieee80211_rx_stats *, + int, int); +}; +#define RTWN_VAP(vap) ((struct rtwn_vap *)(vap)) + +/* + * Rx data types. + */ +enum { + RTWN_RX_DATA, + RTWN_RX_TX_REPORT, + RTWN_RX_OTHER +}; + +/* + * Firmware reset reasons. + */ +enum { + RTWN_FW_RESET_DOWNLOAD, + RTWN_FW_RESET_CHECKSUM, + RTWN_FW_RESET_SHUTDOWN +}; + +/* + * Rate control algorithm selection. + */ +enum { + RTWN_RATECTL_NONE, + RTWN_RATECTL_NET80211, + RTWN_RATECTL_FW, + RTWN_RATECTL_MAX +}; + +/* + * Control h/w crypto usage. + */ +enum { + RTWN_CRYPTO_SW, + RTWN_CRYPTO_PAIR, + RTWN_CRYPTO_FULL, + RTWN_CRYPTO_MAX, +}; + +struct rtwn_softc { + struct ieee80211com sc_ic; + struct mbufq sc_snd; + device_t sc_dev; + +#if 1 + int sc_ht40; +#endif + uint32_t sc_debug; + int sc_hwcrypto; + int sc_ratectl_sysctl; + int sc_ratectl; + + uint8_t sc_detached; + uint8_t sc_flags; +/* Device flags */ +#define RTWN_FLAG_CCK_HIPWR 0x01 +#define RTWN_FLAG_EXT_HDR 0x02 +#define RTWN_FLAG_CAM_FIXED 0x04 +/* Driver state */ +#define RTWN_STARTED 0x08 +#define RTWN_RUNNING 0x10 +#define RTWN_FW_LOADED 0x20 +#define RTWN_TEMP_MEASURED 0x40 + +#define RTWN_CHIP_HAS_BCNQ1(_sc) \ + ((_sc)->bcn_status_reg[0] != (_sc)->bcn_status_reg[1]) + + void *sc_priv; + const char *name; + int sc_ant; + + int8_t last_rssi; + uint8_t thcal_temp; + int cur_bcnq_id; + + int nvaps; + int ap_vaps; + int bcn_vaps; + int mon_vaps; + + int vaps_running; + int monvaps_running; + + uint16_t next_rom_addr; + uint8_t keys_bmap[roundup2(RTWN_CAM_ENTRY_LIMIT, NBBY)]; + + struct rtwn_vap *vaps[RTWN_PORT_COUNT]; + struct ieee80211_node *node_list[RTWN_MACID_LIMIT]; + struct mtx nt_mtx; + + struct callout sc_calib_to; + struct callout sc_pwrmode_init; +#ifndef D4054 + struct callout sc_watchdog_to; + int sc_tx_timer; +#endif + + struct mtx sc_mtx; + + struct rtwn_cmdq cmdq[RTWN_CMDQ_SIZE]; + struct mtx cmdq_mtx; + struct task cmdq_task; + uint8_t cmdq_first; + uint8_t cmdq_last; + + struct wmeParams cap_wmeParams[WME_NUM_AC]; + + struct rtwn_rx_radiotap_header sc_rxtap; + struct rtwn_tx_radiotap_header sc_txtap; + + int ntxchains; + int nrxchains; + + int ledlink; + uint8_t thermal_meter; + + int sc_tx_n_active; + uint8_t qfullmsk; + + /* Firmware-specific */ + const char *fwname; + uint16_t fwver; + uint16_t fwsig; + int fwcur; + + void (*sc_node_free)(struct ieee80211_node *); + void (*sc_scan_curchan)(struct ieee80211_scan_state *, + unsigned long); + + /* Interface-specific. */ + int (*sc_write_1)(struct rtwn_softc *, uint16_t, + uint8_t); + int (*sc_write_2)(struct rtwn_softc *, uint16_t, + uint16_t); + int (*sc_write_4)(struct rtwn_softc *, uint16_t, + uint32_t); + uint8_t (*sc_read_1)(struct rtwn_softc *, uint16_t); + uint16_t (*sc_read_2)(struct rtwn_softc *, uint16_t); + uint32_t (*sc_read_4)(struct rtwn_softc *, uint16_t); + /* XXX eliminate */ + void (*sc_delay)(struct rtwn_softc *, int); + int (*sc_tx_start)(struct rtwn_softc *, + struct ieee80211_node *, struct mbuf *, uint8_t *, + uint8_t, int); + void (*sc_start_xfers)(struct rtwn_softc *); + void (*sc_reset_lists)(struct rtwn_softc *, + struct ieee80211vap *); + void (*sc_abort_xfers)(struct rtwn_softc *); + int (*sc_fw_write_block)(struct rtwn_softc *, + const uint8_t *, uint16_t, int); + uint16_t (*sc_get_qmap)(struct rtwn_softc *); + void (*sc_set_desc_addr)(struct rtwn_softc *); + void (*sc_drop_incorrect_tx)(struct rtwn_softc *); + + /* Device-specific. */ + uint32_t (*sc_rf_read)(struct rtwn_softc *, int, uint8_t); + void (*sc_rf_write)(struct rtwn_softc *, int, uint8_t, + uint32_t); + int (*sc_check_condition)(struct rtwn_softc *, + const uint8_t[]); + void (*sc_efuse_postread)(struct rtwn_softc *); + void (*sc_parse_rom)(struct rtwn_softc *, uint8_t *); + void (*sc_set_led)(struct rtwn_softc *, int, int); + int (*sc_power_on)(struct rtwn_softc *); + void (*sc_power_off)(struct rtwn_softc *); +#ifndef RTWN_WITHOUT_UCODE + void (*sc_fw_reset)(struct rtwn_softc *, int); + void (*sc_fw_download_enable)(struct rtwn_softc *, int); +#endif + int (*sc_set_page_size)(struct rtwn_softc *); + void (*sc_lc_calib)(struct rtwn_softc *); + void (*sc_iq_calib)(struct rtwn_softc *); + void (*sc_read_chipid_vendor)(struct rtwn_softc *, + uint32_t); + void (*sc_adj_devcaps)(struct rtwn_softc *); + void (*sc_vap_preattach)(struct rtwn_softc *, + struct ieee80211vap *); + void (*sc_postattach)(struct rtwn_softc *); + void (*sc_detach_private)(struct rtwn_softc *); + void (*sc_fill_tx_desc)(struct rtwn_softc *, + struct ieee80211_node *, struct mbuf *, + void *, uint8_t, int); + void (*sc_fill_tx_desc_raw)(struct rtwn_softc *, + struct ieee80211_node *, struct mbuf *, + void *, const struct ieee80211_bpf_params *); + void (*sc_fill_tx_desc_null)(struct rtwn_softc *, + void *, int, int, int); + void (*sc_dump_tx_desc)(struct rtwn_softc *, const void *); + uint8_t (*sc_tx_radiotap_flags)(const void *); + uint8_t (*sc_rx_radiotap_flags)(const void *); + void (*sc_beacon_init)(struct rtwn_softc *, void *, int); + void (*sc_beacon_enable)(struct rtwn_softc *, int, int); + void (*sc_beacon_set_rate)(void *, int); + void (*sc_beacon_select)(struct rtwn_softc *, int); + void (*sc_set_chan)(struct rtwn_softc *, + struct ieee80211_channel *); + void (*sc_set_media_status)(struct rtwn_softc *, int); +#ifndef RTWN_WITHOUT_UCODE + int (*sc_set_rsvd_page)(struct rtwn_softc *, int, int, + int); + int (*sc_set_pwrmode)(struct rtwn_softc *, + struct ieee80211vap *, int); + void (*sc_set_rssi)(struct rtwn_softc *); +#endif + int8_t (*sc_get_rssi_cck)(struct rtwn_softc *, void *); + int8_t (*sc_get_rssi_ofdm)(struct rtwn_softc *, void *); + int (*sc_classify_intr)(struct rtwn_softc *, void *, int); + void (*sc_handle_tx_report)(struct rtwn_softc *, uint8_t *, + int); + void (*sc_handle_c2h_report)(struct rtwn_softc *, + uint8_t *, int); + int (*sc_check_frame)(struct rtwn_softc *, struct mbuf *); + void (*sc_temp_measure)(struct rtwn_softc *); + uint8_t (*sc_temp_read)(struct rtwn_softc *); + void (*sc_init_tx_agg)(struct rtwn_softc *); + void (*sc_init_rx_agg)(struct rtwn_softc *); + void (*sc_init_intr)(struct rtwn_softc *); + void (*sc_init_ampdu)(struct rtwn_softc *); + void (*sc_init_edca)(struct rtwn_softc *); + void (*sc_init_bb)(struct rtwn_softc *); + void (*sc_init_rf)(struct rtwn_softc *); + void (*sc_init_antsel)(struct rtwn_softc *); + void (*sc_post_init)(struct rtwn_softc *); + int (*sc_init_bcnq1_boundary)(struct rtwn_softc *); + + const uint8_t *chan_list_5ghz[3]; + int chan_num_5ghz[3]; + + const struct rtwn_mac_prog *mac_prog; + int mac_size; + const struct rtwn_bb_prog *bb_prog; + int bb_size; + const struct rtwn_agc_prog *agc_prog; + int agc_size; + const struct rtwn_rf_prog *rf_prog; + + int page_count; + int pktbuf_count; + + int ackto; + + int npubqpages; + int nhqpages; + int nnqpages; + int nlqpages; + int page_size; + + int txdesc_len; + int efuse_maxlen; + int efuse_maplen; + + uint16_t rx_dma_size; + + int macid_limit; + int cam_entry_limit; + int fwsize_limit; + int temp_delta; + + uint16_t bcn_status_reg[RTWN_PORT_COUNT]; + uint32_t rcr; /* Rx filter */ +}; +MALLOC_DECLARE(M_RTWN_PRIV); + +#define RTWN_LOCK(sc) mtx_lock(&(sc)->sc_mtx) +#define RTWN_UNLOCK(sc) mtx_unlock(&(sc)->sc_mtx) +#define RTWN_ASSERT_LOCKED(sc) mtx_assert(&(sc)->sc_mtx, MA_OWNED) + +#define RTWN_CMDQ_LOCK_INIT(sc) \ + mtx_init(&(sc)->cmdq_mtx, "cmdq lock", NULL, MTX_DEF) +#define RTWN_CMDQ_LOCK(sc) mtx_lock(&(sc)->cmdq_mtx) +#define RTWN_CMDQ_UNLOCK(sc) mtx_unlock(&(sc)->cmdq_mtx) +#define RTWN_CMDQ_LOCK_INITIALIZED(sc) mtx_initialized(&(sc)->cmdq_mtx) +#define RTWN_CMDQ_LOCK_DESTROY(sc) mtx_destroy(&(sc)->cmdq_mtx) + +#define RTWN_NT_LOCK_INIT(sc) \ + mtx_init(&(sc)->nt_mtx, "node table lock", NULL, MTX_DEF) +#define RTWN_NT_LOCK(sc) mtx_lock(&(sc)->nt_mtx) +#define RTWN_NT_UNLOCK(sc) mtx_unlock(&(sc)->nt_mtx) +#define RTWN_NT_LOCK_INITIALIZED(sc) mtx_initialized(&(sc)->nt_mtx) +#define RTWN_NT_LOCK_DESTROY(sc) mtx_destroy(&(sc)->nt_mtx) + + +void rtwn_sysctlattach(struct rtwn_softc *); + +int rtwn_attach(struct rtwn_softc *); +void rtwn_detach(struct rtwn_softc *); +void rtwn_resume(struct rtwn_softc *); +void rtwn_suspend(struct rtwn_softc *); + + +/* Interface-specific. */ +#define rtwn_write_1(_sc, _addr, _val) \ + (((_sc)->sc_write_1)((_sc), (_addr), (_val))) +#define rtwn_write_2(_sc, _addr, _val) \ + (((_sc)->sc_write_2)((_sc), (_addr), (_val))) +#define rtwn_write_4(_sc, _addr, _val) \ + (((_sc)->sc_write_4)((_sc), (_addr), (_val))) +#define rtwn_read_1(_sc, _addr) \ + (((_sc)->sc_read_1)((_sc), (_addr))) +#define rtwn_read_2(_sc, _addr) \ + (((_sc)->sc_read_2)((_sc), (_addr))) +#define rtwn_read_4(_sc, _addr) \ + (((_sc)->sc_read_4)((_sc), (_addr))) +#define rtwn_delay(_sc, _usec) \ + (((_sc)->sc_delay)((_sc), (_usec))) +#define rtwn_tx_start(_sc, _ni, _m, _desc, _type, _id) \ + (((_sc)->sc_tx_start)((_sc), (_ni), (_m), (_desc), (_type), (_id))) +#define rtwn_start_xfers(_sc) \ + (((_sc)->sc_start_xfers)((_sc))) +#define rtwn_reset_lists(_sc, _vap) \ + (((_sc)->sc_reset_lists)((_sc), (_vap))) +#define rtwn_abort_xfers(_sc) \ + (((_sc)->sc_abort_xfers)((_sc))) +#define rtwn_fw_write_block(_sc, _buf, _reg, _len) \ + (((_sc)->sc_fw_write_block)((_sc), (_buf), (_reg), (_len))) +#define rtwn_get_qmap(_sc) \ + (((_sc)->sc_get_qmap)((_sc))) +#define rtwn_set_desc_addr(_sc) \ + (((_sc)->sc_set_desc_addr)((_sc))) +#define rtwn_drop_incorrect_tx(_sc) \ + (((_sc)->sc_drop_incorrect_tx)((_sc))) + +/* Aliases. */ +#define rtwn_bb_write rtwn_write_4 +#define rtwn_bb_read rtwn_read_4 +#define rtwn_bb_setbits rtwn_setbits_4 + +/* Device-specific. */ +#define rtwn_rf_read(_sc, _chain, _addr) \ + (((_sc)->sc_rf_read)((_sc), (_chain), (_addr))) +#define rtwn_rf_write(_sc, _chain, _addr, _val) \ + (((_sc)->sc_rf_write)((_sc), (_chain), (_addr), (_val))) +#define rtwn_check_condition(_sc, _cond) \ + (((_sc)->sc_check_condition)((_sc), (_cond))) +#define rtwn_efuse_postread(_sc) \ + (((_sc)->sc_efuse_postread)((_sc))) +#define rtwn_parse_rom(_sc, _rom) \ + (((_sc)->sc_parse_rom)((_sc), (_rom))) +#define rtwn_set_led(_sc, _led, _on) \ + (((_sc)->sc_set_led)((_sc), (_led), (_on))) +#define rtwn_get_rssi_cck(_sc, _physt) \ + (((_sc)->sc_get_rssi_cck)((_sc), (_physt))) +#define rtwn_get_rssi_ofdm(_sc, _physt) \ + (((_sc)->sc_get_rssi_ofdm)((_sc), (_physt))) +#define rtwn_power_on(_sc) \ + (((_sc)->sc_power_on)((_sc))) +#define rtwn_power_off(_sc) \ + (((_sc)->sc_power_off)((_sc))) +#ifndef RTWN_WITHOUT_UCODE +#define rtwn_fw_reset(_sc, _reason) \ + (((_sc)->sc_fw_reset)((_sc), (_reason))) +#define rtwn_fw_download_enable(_sc, _enable) \ + (((_sc)->sc_fw_download_enable)((_sc), (_enable))) +#endif +#define rtwn_set_page_size(_sc) \ + (((_sc)->sc_set_page_size)((_sc))) +#define rtwn_lc_calib(_sc) \ + (((_sc)->sc_lc_calib)((_sc))) +#define rtwn_iq_calib(_sc) \ + (((_sc)->sc_iq_calib)((_sc))) +#define rtwn_read_chipid_vendor(_sc, _reg) \ + (((_sc)->sc_read_chipid_vendor)((_sc), (_reg))) +#define rtwn_adj_devcaps(_sc) \ + (((_sc)->sc_adj_devcaps)((_sc))) +#define rtwn_vap_preattach(_sc, _vap) \ + (((_sc)->sc_vap_preattach)((_sc), (_vap))) +#define rtwn_postattach(_sc) \ + (((_sc)->sc_postattach)((_sc))) +#define rtwn_detach_private(_sc) \ + (((_sc)->sc_detach_private)((_sc))) +#define rtwn_fill_tx_desc(_sc, _ni, _m, \ + _buf, _ridx, _maxretry) \ + (((_sc)->sc_fill_tx_desc)((_sc), (_ni), \ + (_m), (_buf), (_ridx), (_maxretry))) +#define rtwn_fill_tx_desc_raw(_sc, _ni, _m, \ + _buf, _params) \ + (((_sc)->sc_fill_tx_desc_raw)((_sc), (_ni), \ + (_m), (_buf), (_params))) +#define rtwn_fill_tx_desc_null(_sc, _buf, _11b, _qos, _id) \ + (((_sc)->sc_fill_tx_desc_null)((_sc), \ + (_buf), (_11b), (_qos), (_id))) +#define rtwn_dump_tx_desc(_sc, _desc) \ + (((_sc)->sc_dump_tx_desc)((_sc), (_desc))) +#define rtwn_tx_radiotap_flags(_sc, _buf) \ + (((_sc)->sc_tx_radiotap_flags)((_buf))) +#define rtwn_rx_radiotap_flags(_sc, _buf) \ + (((_sc)->sc_rx_radiotap_flags)((_buf))) +#define rtwn_set_chan(_sc, _c) \ + (((_sc)->sc_set_chan)((_sc), (_c))) +#ifndef RTWN_WITHOUT_UCODE +#define rtwn_set_rsvd_page(_sc, _resp, _null, _qos_null) \ + (((_sc)->sc_set_rsvd_page)((_sc), \ + (_resp), (_null), (_qos_null))) +#define rtwn_set_pwrmode(_sc, _vap, _off) \ + (((_sc)->sc_set_pwrmode)((_sc), (_vap), (_off))) +#define rtwn_set_rssi(_sc) \ + (((_sc)->sc_set_rssi)((_sc))) +#endif +#define rtwn_classify_intr(_sc, _buf, _len) \ + (((_sc)->sc_classify_intr)((_sc), (_buf), (_len))) +#define rtwn_handle_tx_report(_sc, _buf, _len) \ + (((_sc)->sc_handle_tx_report)((_sc), (_buf), (_len))) +#define rtwn_handle_c2h_report(_sc, _buf, _len) \ + (((_sc)->sc_handle_c2h_report)((_sc), (_buf), (_len))) +#define rtwn_check_frame(_sc, _m) \ + (((_sc)->sc_check_frame)((_sc), (_m))) +#define rtwn_beacon_init(_sc, _buf, _id) \ + (((_sc)->sc_beacon_init)((_sc), (_buf), (_id))) +#define rtwn_beacon_enable(_sc, _id, _enable) \ + (((_sc)->sc_beacon_enable)((_sc), (_id), (_enable))) +#define rtwn_beacon_set_rate(_sc, _buf, _is5ghz) \ + (((_sc)->sc_beacon_set_rate)((_buf), (_is5ghz))) +#define rtwn_beacon_select(_sc, _id) \ + (((_sc)->sc_beacon_select)((_sc), (_id))) +#define rtwn_temp_measure(_sc) \ + (((_sc)->sc_temp_measure)((_sc))) +#define rtwn_temp_read(_sc) \ + (((_sc)->sc_temp_read)((_sc))) +#define rtwn_init_tx_agg(_sc) \ + (((_sc)->sc_init_tx_agg)((_sc))) +#define rtwn_init_rx_agg(_sc) \ + (((_sc)->sc_init_rx_agg)((_sc))) +#define rtwn_init_intr(_sc) \ + (((_sc)->sc_init_intr)((_sc))) +#define rtwn_init_ampdu(_sc) \ + (((_sc)->sc_init_ampdu)((_sc))) +#define rtwn_init_edca(_sc) \ + (((_sc)->sc_init_edca)((_sc))) +#define rtwn_init_bb(_sc) \ + (((_sc)->sc_init_bb)((_sc))) +#define rtwn_init_rf(_sc) \ + (((_sc)->sc_init_rf)((_sc))) +#define rtwn_init_antsel(_sc) \ + (((_sc)->sc_init_antsel)((_sc))) +#define rtwn_post_init(_sc) \ + (((_sc)->sc_post_init)((_sc))) +#define rtwn_init_bcnq1_boundary(_sc) \ + (((_sc)->sc_init_bcnq1_boundary)((_sc))) + + +/* + * Methods to access subfields in registers. + */ +static __inline int +rtwn_setbits_1(struct rtwn_softc *sc, uint16_t addr, uint8_t clr, + uint8_t set) +{ + return (rtwn_write_1(sc, addr, + (rtwn_read_1(sc, addr) & ~clr) | set)); +} + +static __inline int +rtwn_setbits_1_shift(struct rtwn_softc *sc, uint16_t addr, uint32_t clr, + uint32_t set, int shift) +{ + return (rtwn_setbits_1(sc, addr + shift, clr >> shift * NBBY, + set >> shift * NBBY)); +} + +static __inline int +rtwn_setbits_2(struct rtwn_softc *sc, uint16_t addr, uint16_t clr, + uint16_t set) +{ + return (rtwn_write_2(sc, addr, + (rtwn_read_2(sc, addr) & ~clr) | set)); +} + +static __inline int +rtwn_setbits_4(struct rtwn_softc *sc, uint16_t addr, uint32_t clr, + uint32_t set) +{ + return (rtwn_write_4(sc, addr, + (rtwn_read_4(sc, addr) & ~clr) | set)); +} + +static __inline void +rtwn_rf_setbits(struct rtwn_softc *sc, int chain, uint8_t addr, + uint32_t clr, uint32_t set) +{ + rtwn_rf_write(sc, chain, addr, + (rtwn_rf_read(sc, chain, addr) & ~clr) | set); +} + +#endif /* IF_RTWNVAR_H */ diff --git a/sys/dev/rtwn/pci/rtwn_pci_attach.c b/sys/dev/rtwn/pci/rtwn_pci_attach.c new file mode 100644 index 000000000000..e48ae8141291 --- /dev/null +++ b/sys/dev/rtwn/pci/rtwn_pci_attach.c @@ -0,0 +1,687 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include + +#include +#include +#include + +#include + +#include +#include +#include +#include + +#include +#include + + +static device_probe_t rtwn_pci_probe; +static device_attach_t rtwn_pci_attach; +static device_detach_t rtwn_pci_detach; +static device_shutdown_t rtwn_pci_shutdown; +static device_suspend_t rtwn_pci_suspend; +static device_resume_t rtwn_pci_resume; + +static int rtwn_pci_alloc_rx_list(struct rtwn_softc *); +static void rtwn_pci_reset_rx_list(struct rtwn_softc *); +static void rtwn_pci_free_rx_list(struct rtwn_softc *); +static int rtwn_pci_alloc_tx_list(struct rtwn_softc *, int); +static void rtwn_pci_reset_tx_list(struct rtwn_softc *, + struct ieee80211vap *, int); +static void rtwn_pci_free_tx_list(struct rtwn_softc *, int); +static void rtwn_pci_reset_lists(struct rtwn_softc *, + struct ieee80211vap *); +static int rtwn_pci_fw_write_block(struct rtwn_softc *, + const uint8_t *, uint16_t, int); +static uint16_t rtwn_pci_get_qmap(struct rtwn_softc *); +static void rtwn_pci_set_desc_addr(struct rtwn_softc *); +static void rtwn_pci_attach_methods(struct rtwn_softc *); + + +static int matched_chip = RTWN_CHIP_MAX_PCI; + +static int +rtwn_pci_probe(device_t dev) +{ + const struct rtwn_pci_ident *ident; + + for (ident = rtwn_pci_ident_table; ident->name != NULL; ident++) { + if (pci_get_vendor(dev) == ident->vendor && + pci_get_device(dev) == ident->device) { + matched_chip = ident->chip; + device_set_desc(dev, ident->name); + return (BUS_PROBE_DEFAULT); + } + } + return (ENXIO); +} + +static int +rtwn_pci_alloc_rx_list(struct rtwn_softc *sc) +{ + struct rtwn_pci_softc *pc = RTWN_PCI_SOFTC(sc); + struct rtwn_rx_ring *rx_ring = &pc->rx_ring; + struct rtwn_rx_data *rx_data; + bus_size_t size; + int i, error; + + /* Allocate Rx descriptors. */ + size = sizeof(struct r92ce_rx_stat) * RTWN_PCI_RX_LIST_COUNT; + error = bus_dma_tag_create(bus_get_dma_tag(sc->sc_dev), 1, 0, + BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, + size, 1, size, 0, NULL, NULL, &rx_ring->desc_dmat); + if (error != 0) { + device_printf(sc->sc_dev, "could not create rx desc DMA tag\n"); + goto fail; + } + + error = bus_dmamem_alloc(rx_ring->desc_dmat, (void **)&rx_ring->desc, + BUS_DMA_NOWAIT | BUS_DMA_ZERO | BUS_DMA_COHERENT, + &rx_ring->desc_map); + if (error != 0) { + device_printf(sc->sc_dev, "could not allocate rx desc\n"); + goto fail; + } + error = bus_dmamap_load(rx_ring->desc_dmat, rx_ring->desc_map, + rx_ring->desc, size, rtwn_pci_dma_map_addr, &rx_ring->paddr, 0); + if (error != 0) { + device_printf(sc->sc_dev, "could not load rx desc DMA map\n"); + goto fail; + } + bus_dmamap_sync(rx_ring->desc_dmat, rx_ring->desc_map, + BUS_DMASYNC_PREWRITE); + + /* Create RX buffer DMA tag. */ + error = bus_dma_tag_create(bus_get_dma_tag(sc->sc_dev), 1, 0, + BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, MCLBYTES, + 1, MCLBYTES, 0, NULL, NULL, &rx_ring->data_dmat); + if (error != 0) { + device_printf(sc->sc_dev, "could not create rx buf DMA tag\n"); + goto fail; + } + + /* Allocate Rx buffers. */ + for (i = 0; i < RTWN_PCI_RX_LIST_COUNT; i++) { + rx_data = &rx_ring->rx_data[i]; + error = bus_dmamap_create(rx_ring->data_dmat, 0, &rx_data->map); + if (error != 0) { + device_printf(sc->sc_dev, + "could not create rx buf DMA map\n"); + goto fail; + } + + rx_data->m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); + if (rx_data->m == NULL) { + device_printf(sc->sc_dev, + "could not allocate rx mbuf\n"); + error = ENOMEM; + goto fail; + } + + error = bus_dmamap_load(rx_ring->data_dmat, rx_data->map, + mtod(rx_data->m, void *), MCLBYTES, rtwn_pci_dma_map_addr, + &rx_data->paddr, BUS_DMA_NOWAIT); + if (error != 0) { + device_printf(sc->sc_dev, + "could not load rx buf DMA map"); + goto fail; + } + + rtwn_pci_setup_rx_desc(pc, &rx_ring->desc[i], rx_data->paddr, + MCLBYTES, i); + } + rx_ring->cur = 0; + + return (0); + +fail: + rtwn_pci_free_rx_list(sc); + return (error); +} + +static void +rtwn_pci_reset_rx_list(struct rtwn_softc *sc) +{ + struct rtwn_pci_softc *pc = RTWN_PCI_SOFTC(sc); + struct rtwn_rx_ring *rx_ring = &pc->rx_ring; + struct rtwn_rx_data *rx_data; + int i; + + for (i = 0; i < RTWN_PCI_RX_LIST_COUNT; i++) { + rx_data = &rx_ring->rx_data[i]; + rtwn_pci_setup_rx_desc(pc, &rx_ring->desc[i], + rx_data->paddr, MCLBYTES, i); + } + rx_ring->cur = 0; +} + +static void +rtwn_pci_free_rx_list(struct rtwn_softc *sc) +{ + struct rtwn_pci_softc *pc = RTWN_PCI_SOFTC(sc); + struct rtwn_rx_ring *rx_ring = &pc->rx_ring; + struct rtwn_rx_data *rx_data; + int i; + + if (rx_ring->desc_dmat != NULL) { + if (rx_ring->desc != NULL) { + bus_dmamap_sync(rx_ring->desc_dmat, + rx_ring->desc_map, + BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(rx_ring->desc_dmat, + rx_ring->desc_map); + bus_dmamem_free(rx_ring->desc_dmat, rx_ring->desc, + rx_ring->desc_map); + rx_ring->desc = NULL; + } + bus_dma_tag_destroy(rx_ring->desc_dmat); + rx_ring->desc_dmat = NULL; + } + + for (i = 0; i < RTWN_PCI_RX_LIST_COUNT; i++) { + rx_data = &rx_ring->rx_data[i]; + + if (rx_data->m != NULL) { + bus_dmamap_sync(rx_ring->data_dmat, + rx_data->map, BUS_DMASYNC_POSTREAD); + bus_dmamap_unload(rx_ring->data_dmat, rx_data->map); + m_freem(rx_data->m); + rx_data->m = NULL; + } + bus_dmamap_destroy(rx_ring->data_dmat, rx_data->map); + rx_data->map = NULL; + } + if (rx_ring->data_dmat != NULL) { + bus_dma_tag_destroy(rx_ring->data_dmat); + rx_ring->data_dmat = NULL; + } +} + +static int +rtwn_pci_alloc_tx_list(struct rtwn_softc *sc, int qid) +{ + struct rtwn_pci_softc *pc = RTWN_PCI_SOFTC(sc); + struct rtwn_tx_ring *tx_ring = &pc->tx_ring[qid]; + bus_size_t size; + int i, error; + + size = sc->txdesc_len * RTWN_PCI_TX_LIST_COUNT; + error = bus_dma_tag_create(bus_get_dma_tag(sc->sc_dev), PAGE_SIZE, 0, + BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, + size, 1, size, 0, NULL, NULL, &tx_ring->desc_dmat); + if (error != 0) { + device_printf(sc->sc_dev, "could not create tx ring DMA tag\n"); + goto fail; + } + + error = bus_dmamem_alloc(tx_ring->desc_dmat, &tx_ring->desc, + BUS_DMA_NOWAIT | BUS_DMA_ZERO, &tx_ring->desc_map); + if (error != 0) { + device_printf(sc->sc_dev, "can't map tx ring DMA memory\n"); + goto fail; + } + error = bus_dmamap_load(tx_ring->desc_dmat, tx_ring->desc_map, + tx_ring->desc, size, rtwn_pci_dma_map_addr, &tx_ring->paddr, + BUS_DMA_NOWAIT); + if (error != 0) { + device_printf(sc->sc_dev, "could not load desc DMA map\n"); + goto fail; + } + bus_dmamap_sync(tx_ring->desc_dmat, tx_ring->desc_map, + BUS_DMASYNC_PREWRITE); + + error = bus_dma_tag_create(bus_get_dma_tag(sc->sc_dev), 1, 0, + BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, MCLBYTES, + 1, MCLBYTES, 0, NULL, NULL, &tx_ring->data_dmat); + if (error != 0) { + device_printf(sc->sc_dev, "could not create tx buf DMA tag\n"); + goto fail; + } + + for (i = 0; i < RTWN_PCI_TX_LIST_COUNT; i++) { + struct rtwn_tx_data *tx_data = &tx_ring->tx_data[i]; + void *tx_desc = (uint8_t *)tx_ring->desc + sc->txdesc_len * i; + uint32_t next_desc_addr = tx_ring->paddr + + sc->txdesc_len * ((i + 1) % RTWN_PCI_TX_LIST_COUNT); + + rtwn_pci_setup_tx_desc(pc, tx_desc, next_desc_addr); + + error = bus_dmamap_create(tx_ring->data_dmat, 0, &tx_data->map); + if (error != 0) { + device_printf(sc->sc_dev, + "could not create tx buf DMA map\n"); + return (error); + } + tx_data->m = NULL; + tx_data->ni = NULL; + } + return (0); + +fail: + rtwn_pci_free_tx_list(sc, qid); + return (error); +} + +static void +rtwn_pci_reset_tx_list(struct rtwn_softc *sc, struct ieee80211vap *vap, + int qid) +{ + struct rtwn_vap *uvp = RTWN_VAP(vap); + struct rtwn_pci_softc *pc = RTWN_PCI_SOFTC(sc); + struct rtwn_tx_ring *tx_ring = &pc->tx_ring[qid]; + int i, id; + + id = (uvp != NULL ? uvp->id : RTWN_VAP_ID_INVALID); + + for (i = 0; i < RTWN_PCI_TX_LIST_COUNT; i++) { + struct rtwn_tx_data *tx_data = &tx_ring->tx_data[i]; + + if (vap == NULL || (tx_data->ni == NULL && + (tx_data->id == id || id == RTWN_VAP_ID_INVALID)) || + (tx_data->ni != NULL && tx_data->ni->ni_vap == vap)) { + void *tx_desc = + (uint8_t *)tx_ring->desc + sc->txdesc_len * i; + + rtwn_pci_copy_tx_desc(pc, tx_desc, NULL); + + if (tx_data->m != NULL) { + bus_dmamap_sync(tx_ring->data_dmat, + tx_data->map, BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(tx_ring->data_dmat, + tx_data->map); + m_freem(tx_data->m); + tx_data->m = NULL; + } + if (tx_data->ni != NULL) { + ieee80211_free_node(tx_data->ni); + tx_data->ni = NULL; + } + } + } + + bus_dmamap_sync(tx_ring->desc_dmat, tx_ring->desc_map, + BUS_DMASYNC_POSTWRITE); + + sc->qfullmsk &= ~(1 << qid); + tx_ring->queued = 0; + tx_ring->last = tx_ring->cur = 0; +} + +static void +rtwn_pci_free_tx_list(struct rtwn_softc *sc, int qid) +{ + struct rtwn_pci_softc *pc = RTWN_PCI_SOFTC(sc); + struct rtwn_tx_ring *tx_ring = &pc->tx_ring[qid]; + struct rtwn_tx_data *tx_data; + int i; + + if (tx_ring->desc_dmat != NULL) { + if (tx_ring->desc != NULL) { + bus_dmamap_sync(tx_ring->desc_dmat, + tx_ring->desc_map, BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(tx_ring->desc_dmat, + tx_ring->desc_map); + bus_dmamem_free(tx_ring->desc_dmat, tx_ring->desc, + tx_ring->desc_map); + } + bus_dma_tag_destroy(tx_ring->desc_dmat); + } + + for (i = 0; i < RTWN_PCI_TX_LIST_COUNT; i++) { + tx_data = &tx_ring->tx_data[i]; + + if (tx_data->m != NULL) { + bus_dmamap_sync(tx_ring->data_dmat, tx_data->map, + BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(tx_ring->data_dmat, tx_data->map); + m_freem(tx_data->m); + tx_data->m = NULL; + } + } + if (tx_ring->data_dmat != NULL) { + bus_dma_tag_destroy(tx_ring->data_dmat); + tx_ring->data_dmat = NULL; + } + + sc->qfullmsk &= ~(1 << qid); + tx_ring->queued = 0; + tx_ring->last = tx_ring->cur = 0; +} + +static void +rtwn_pci_reset_lists(struct rtwn_softc *sc, struct ieee80211vap *vap) +{ + int i; + + for (i = 0; i < RTWN_PCI_NTXQUEUES; i++) + rtwn_pci_reset_tx_list(sc, vap, i); + + if (vap == NULL) { + sc->qfullmsk = 0; + rtwn_pci_reset_rx_list(sc); + } +} + +static int +rtwn_pci_fw_write_block(struct rtwn_softc *sc, const uint8_t *buf, + uint16_t reg, int mlen) +{ + int i; + + for (i = 0; i < mlen; i++) + rtwn_pci_write_1(sc, reg++, buf[i]); + + /* NB: cannot fail */ + return (0); +} + +static uint16_t +rtwn_pci_get_qmap(struct rtwn_softc *sc) +{ + struct rtwn_pci_softc *pc = RTWN_PCI_SOFTC(sc); + + KASSERT(pc->pc_qmap != 0, ("%s: qmap is not set!\n", __func__)); + + return (pc->pc_qmap); +} + +static void +rtwn_pci_set_desc_addr(struct rtwn_softc *sc) +{ + struct rtwn_pci_softc *pc = RTWN_PCI_SOFTC(sc); + + RTWN_DPRINTF(sc, RTWN_DEBUG_RESET, "%s: addresses:\n" + "bk: %08jX, be: %08jX, vi: %08jX, vo: %08jX\n" + "bcn: %08jX, mgt: %08jX, high: %08jX, rx: %08jX\n", + __func__, (uintmax_t)pc->tx_ring[RTWN_PCI_BK_QUEUE].paddr, + (uintmax_t)pc->tx_ring[RTWN_PCI_BE_QUEUE].paddr, + (uintmax_t)pc->tx_ring[RTWN_PCI_VI_QUEUE].paddr, + (uintmax_t)pc->tx_ring[RTWN_PCI_VO_QUEUE].paddr, + (uintmax_t)pc->tx_ring[RTWN_PCI_BEACON_QUEUE].paddr, + (uintmax_t)pc->tx_ring[RTWN_PCI_MGNT_QUEUE].paddr, + (uintmax_t)pc->tx_ring[RTWN_PCI_HIGH_QUEUE].paddr, + (uintmax_t)pc->rx_ring.paddr); + + /* Set Tx Configuration Register. */ + rtwn_pci_write_4(sc, R92C_TCR, pc->tcr); + + /* Configure Tx DMA. */ + rtwn_pci_write_4(sc, R92C_BKQ_DESA, + pc->tx_ring[RTWN_PCI_BK_QUEUE].paddr); + rtwn_pci_write_4(sc, R92C_BEQ_DESA, + pc->tx_ring[RTWN_PCI_BE_QUEUE].paddr); + rtwn_pci_write_4(sc, R92C_VIQ_DESA, + pc->tx_ring[RTWN_PCI_VI_QUEUE].paddr); + rtwn_pci_write_4(sc, R92C_VOQ_DESA, + pc->tx_ring[RTWN_PCI_VO_QUEUE].paddr); + rtwn_pci_write_4(sc, R92C_BCNQ_DESA, + pc->tx_ring[RTWN_PCI_BEACON_QUEUE].paddr); + rtwn_pci_write_4(sc, R92C_MGQ_DESA, + pc->tx_ring[RTWN_PCI_MGNT_QUEUE].paddr); + rtwn_pci_write_4(sc, R92C_HQ_DESA, + pc->tx_ring[RTWN_PCI_HIGH_QUEUE].paddr); + + /* Configure Rx DMA. */ + rtwn_pci_write_4(sc, R92C_RX_DESA, pc->rx_ring.paddr); +} + +static void +rtwn_pci_attach_methods(struct rtwn_softc *sc) +{ + sc->sc_write_1 = rtwn_pci_write_1; + sc->sc_write_2 = rtwn_pci_write_2; + sc->sc_write_4 = rtwn_pci_write_4; + sc->sc_read_1 = rtwn_pci_read_1; + sc->sc_read_2 = rtwn_pci_read_2; + sc->sc_read_4 = rtwn_pci_read_4; + sc->sc_delay = rtwn_pci_delay; + sc->sc_tx_start = rtwn_pci_tx_start; + sc->sc_reset_lists = rtwn_pci_reset_lists; + sc->sc_abort_xfers = rtwn_nop_softc; + sc->sc_fw_write_block = rtwn_pci_fw_write_block; + sc->sc_get_qmap = rtwn_pci_get_qmap; + sc->sc_set_desc_addr = rtwn_pci_set_desc_addr; + sc->sc_drop_incorrect_tx = rtwn_nop_softc; +} + +static int +rtwn_pci_attach(device_t dev) +{ + struct rtwn_pci_softc *pc = device_get_softc(dev); + struct rtwn_softc *sc = &pc->pc_sc; + struct ieee80211com *ic = &sc->sc_ic; + uint32_t lcsr; + int cap_off, i, error, rid; + + if (matched_chip >= RTWN_CHIP_MAX_PCI) + return (ENXIO); + + /* + * Get the offset of the PCI Express Capability Structure in PCI + * Configuration Space. + */ + error = pci_find_cap(dev, PCIY_EXPRESS, &cap_off); + if (error != 0) { + device_printf(dev, "PCIe capability structure not found!\n"); + return (error); + } + + /* Enable bus-mastering. */ + pci_enable_busmaster(dev); + + rid = PCIR_BAR(2); + pc->mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (pc->mem == NULL) { + device_printf(dev, "can't map mem space\n"); + return (ENOMEM); + } + pc->pc_st = rman_get_bustag(pc->mem); + pc->pc_sh = rman_get_bushandle(pc->mem); + + /* Install interrupt handler. */ + rid = 1; + if (pci_alloc_msi(dev, &rid) == 0) + rid = 1; + else + rid = 0; + pc->irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, RF_ACTIVE | + (rid != 0 ? 0 : RF_SHAREABLE)); + if (pc->irq == NULL) { + device_printf(dev, "can't map interrupt\n"); + goto detach; + } + + /* Disable PCIe Active State Power Management (ASPM). */ + lcsr = pci_read_config(dev, cap_off + PCIER_LINK_CTL, 4); + lcsr &= ~PCIEM_LINK_CTL_ASPMC; + pci_write_config(dev, cap_off + PCIER_LINK_CTL, lcsr, 4); + + sc->sc_dev = dev; + ic->ic_name = device_get_nameunit(dev); + + /* Need to be initialized early. */ + rtwn_sysctlattach(sc); + mtx_init(&sc->sc_mtx, ic->ic_name, MTX_NETWORK_LOCK, MTX_DEF); + + rtwn_pci_attach_methods(sc); + /* XXX something similar to USB_GET_DRIVER_INFO() */ + rtwn_pci_attach_private(pc, matched_chip); + + /* Allocate Tx/Rx buffers. */ + error = rtwn_pci_alloc_rx_list(sc); + if (error != 0) { + device_printf(dev, + "could not allocate Rx buffers, error %d\n", + error); + goto detach; + } + for (i = 0; i < RTWN_PCI_NTXQUEUES; i++) { + error = rtwn_pci_alloc_tx_list(sc, i); + if (error != 0) { + device_printf(dev, + "could not allocate Tx buffers, error %d\n", + error); + goto detach; + } + } + + /* Generic attach. */ + error = rtwn_attach(sc); + if (error != 0) + goto detach; + + /* + * Hook our interrupt after all initialization is complete. + */ + error = bus_setup_intr(dev, pc->irq, INTR_TYPE_NET | INTR_MPSAFE, + NULL, rtwn_pci_intr, sc, &pc->pc_ih); + if (error != 0) { + device_printf(dev, "can't establish interrupt, error %d\n", + error); + goto detach; + } + + return (0); + +detach: + rtwn_pci_detach(dev); /* failure */ + return (ENXIO); +} + +static int +rtwn_pci_detach(device_t dev) +{ + struct rtwn_pci_softc *pc = device_get_softc(dev); + struct rtwn_softc *sc = &pc->pc_sc; + int i; + + /* Generic detach. */ + rtwn_detach(sc); + + /* Uninstall interrupt handler. */ + if (pc->irq != NULL) { + bus_teardown_intr(dev, pc->irq, pc->pc_ih); + bus_release_resource(dev, SYS_RES_IRQ, rman_get_rid(pc->irq), + pc->irq); + pci_release_msi(dev); + } + + /* Free Tx/Rx buffers. */ + for (i = 0; i < RTWN_PCI_NTXQUEUES; i++) + rtwn_pci_free_tx_list(sc, i); + rtwn_pci_free_rx_list(sc); + + if (pc->mem != NULL) + bus_release_resource(dev, SYS_RES_MEMORY, + rman_get_rid(pc->mem), pc->mem); + + rtwn_detach_private(sc); + mtx_destroy(&sc->sc_mtx); + + return (0); +} + +static int +rtwn_pci_shutdown(device_t self) +{ + struct rtwn_pci_softc *pc = device_get_softc(self); + + ieee80211_stop_all(&pc->pc_sc.sc_ic); + return (0); +} + +static int +rtwn_pci_suspend(device_t self) +{ + struct rtwn_pci_softc *pc = device_get_softc(self); + + rtwn_suspend(&pc->pc_sc); + + return (0); +} + +static int +rtwn_pci_resume(device_t self) +{ + struct rtwn_pci_softc *pc = device_get_softc(self); + + rtwn_resume(&pc->pc_sc); + + return (0); +} + +static device_method_t rtwn_pci_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, rtwn_pci_probe), + DEVMETHOD(device_attach, rtwn_pci_attach), + DEVMETHOD(device_detach, rtwn_pci_detach), + DEVMETHOD(device_shutdown, rtwn_pci_shutdown), + DEVMETHOD(device_suspend, rtwn_pci_suspend), + DEVMETHOD(device_resume, rtwn_pci_resume), + + DEVMETHOD_END +}; + +static driver_t rtwn_pci_driver = { + "rtwn", + rtwn_pci_methods, + sizeof(struct rtwn_pci_softc) +}; + +static devclass_t rtwn_pci_devclass; + +DRIVER_MODULE(rtwn_pci, pci, rtwn_pci_driver, rtwn_pci_devclass, NULL, NULL); +MODULE_VERSION(rtwn_pci, 1); +MODULE_DEPEND(rtwn_pci, pci, 1, 1, 1); +MODULE_DEPEND(rtwn_pci, wlan, 1, 1, 1); +MODULE_DEPEND(rtwn_pci, rtwn, 2, 2, 2); diff --git a/sys/dev/rtwn/pci/rtwn_pci_attach.h b/sys/dev/rtwn/pci/rtwn_pci_attach.h new file mode 100644 index 000000000000..6df5812e4cd2 --- /dev/null +++ b/sys/dev/rtwn/pci/rtwn_pci_attach.h @@ -0,0 +1,48 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +void r92ce_attach(struct rtwn_pci_softc *); + +enum { + RTWN_CHIP_RTL8192CE, + RTWN_CHIP_MAX_PCI +}; + +struct rtwn_pci_ident { + uint16_t vendor; + uint16_t device; + const char *name; + int chip; +}; + +static const struct rtwn_pci_ident rtwn_pci_ident_table[] = { + { 0x10ec, 0x8176, "Realtek RTL8188CE", RTWN_CHIP_RTL8192CE }, + { 0, 0, NULL, RTWN_CHIP_MAX_PCI } +}; + +typedef void (*chip_pci_attach)(struct rtwn_pci_softc *); + +static const chip_pci_attach rtwn_chip_pci_attach[RTWN_CHIP_MAX_PCI] = { + [RTWN_CHIP_RTL8192CE] = r92ce_attach +}; + +static __inline void +rtwn_pci_attach_private(struct rtwn_pci_softc *pc, int chip) +{ + rtwn_chip_pci_attach[chip](pc); +} diff --git a/sys/dev/rtwn/pci/rtwn_pci_reg.c b/sys/dev/rtwn/pci/rtwn_pci_reg.c new file mode 100644 index 000000000000..664fb33e6db8 --- /dev/null +++ b/sys/dev/rtwn/pci/rtwn_pci_reg.c @@ -0,0 +1,123 @@ +/* $OpenBSD: if_rtwn.c,v 1.6 2015/08/28 00:03:53 deraadt Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015 Stefan Sperling + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include +#include + + +int +rtwn_pci_write_1(struct rtwn_softc *sc, uint16_t addr, uint8_t val) +{ + struct rtwn_pci_softc *pc = RTWN_PCI_SOFTC(sc); + + bus_space_write_1(pc->pc_st, pc->pc_sh, addr, val); + + return (0); +} + +int +rtwn_pci_write_2(struct rtwn_softc *sc, uint16_t addr, uint16_t val) +{ + struct rtwn_pci_softc *pc = RTWN_PCI_SOFTC(sc); + + val = htole16(val); + bus_space_write_2(pc->pc_st, pc->pc_sh, addr, val); + + return (0); +} + +int +rtwn_pci_write_4(struct rtwn_softc *sc, uint16_t addr, uint32_t val) +{ + struct rtwn_pci_softc *pc = RTWN_PCI_SOFTC(sc); + + val = htole32(val); + bus_space_write_4(pc->pc_st, pc->pc_sh, addr, val); + + return (0); +} + +uint8_t +rtwn_pci_read_1(struct rtwn_softc *sc, uint16_t addr) +{ + struct rtwn_pci_softc *pc = RTWN_PCI_SOFTC(sc); + + return (bus_space_read_1(pc->pc_st, pc->pc_sh, addr)); +} + +uint16_t +rtwn_pci_read_2(struct rtwn_softc *sc, uint16_t addr) +{ + struct rtwn_pci_softc *pc = RTWN_PCI_SOFTC(sc); + uint16_t val; + + val = bus_space_read_2(pc->pc_st, pc->pc_sh, addr); + return le16toh(val); +} + +uint32_t +rtwn_pci_read_4(struct rtwn_softc *sc, uint16_t addr) +{ + struct rtwn_pci_softc *pc = RTWN_PCI_SOFTC(sc); + uint32_t val; + + val = bus_space_read_4(pc->pc_st, pc->pc_sh, addr); + return le32toh(val); +} + +void +rtwn_pci_delay(struct rtwn_softc *sc, int usec) +{ + if (usec < 1000) + DELAY(usec); + else { + (void) mtx_sleep(sc, &sc->sc_mtx, 0, "rtwn_pci", + MAX(msecs_to_ticks(usec / 1000), 1)); + } +} diff --git a/sys/dev/rtwn/pci/rtwn_pci_reg.h b/sys/dev/rtwn/pci/rtwn_pci_reg.h new file mode 100644 index 000000000000..7c900345f46b --- /dev/null +++ b/sys/dev/rtwn/pci/rtwn_pci_reg.h @@ -0,0 +1,30 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef RTWN_PCI_REG_H +#define RTWN_PCI_REG_H + +int rtwn_pci_write_1(struct rtwn_softc *, uint16_t, uint8_t); +int rtwn_pci_write_2(struct rtwn_softc *, uint16_t, uint16_t); +int rtwn_pci_write_4(struct rtwn_softc *, uint16_t, uint32_t); +uint8_t rtwn_pci_read_1(struct rtwn_softc *, uint16_t); +uint16_t rtwn_pci_read_2(struct rtwn_softc *, uint16_t); +uint32_t rtwn_pci_read_4(struct rtwn_softc *, uint16_t); +void rtwn_pci_delay(struct rtwn_softc *, int); + +#endif /* RTWN_PCI_REG_H */ diff --git a/sys/dev/rtwn/pci/rtwn_pci_rx.c b/sys/dev/rtwn/pci/rtwn_pci_rx.c new file mode 100644 index 000000000000..4425b4005a1a --- /dev/null +++ b/sys/dev/rtwn/pci/rtwn_pci_rx.c @@ -0,0 +1,293 @@ +/* $OpenBSD: if_rtwn.c,v 1.6 2015/08/28 00:03:53 deraadt Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015 Stefan Sperling + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include + + +void +rtwn_pci_dma_map_addr(void *arg, bus_dma_segment_t *segs, int nsegs, + int error) +{ + + if (error != 0) + return; + KASSERT(nsegs == 1, ("too many DMA segments, %d should be 1", nsegs)); + *(bus_addr_t *)arg = segs[0].ds_addr; +} + +void +rtwn_pci_setup_rx_desc(struct rtwn_pci_softc *pc, struct r92ce_rx_stat *desc, + bus_addr_t addr, size_t len, int idx) +{ + + memset(desc, 0, sizeof(*desc)); + desc->rxdw0 = htole32(SM(R92C_RXDW0_PKTLEN, len) | + ((idx == RTWN_PCI_RX_LIST_COUNT - 1) ? R92C_RXDW0_EOR : 0)); + desc->rxbufaddr = htole32(addr); + bus_space_barrier(pc->pc_st, pc->pc_sh, 0, pc->pc_mapsize, + BUS_SPACE_BARRIER_WRITE); + desc->rxdw0 |= htole32(R92C_RXDW0_OWN); +} + +static void +rtwn_pci_rx_frame(struct rtwn_softc *sc, struct r92ce_rx_stat *rx_desc, + int desc_idx) +{ + struct rtwn_pci_softc *pc = RTWN_PCI_SOFTC(sc); + struct rtwn_rx_ring *ring = &pc->rx_ring; + struct rtwn_rx_data *rx_data = &ring->rx_data[desc_idx]; + struct ieee80211com *ic = &sc->sc_ic; + struct ieee80211_node *ni; + uint32_t rxdw0; + struct mbuf *m, *m1; + int8_t rssi = 0, nf; + int infosz, pktlen, shift, error; + + /* Dump Rx descriptor. */ + RTWN_DPRINTF(sc, RTWN_DEBUG_RECV_DESC, + "%s: dw: 0 %08X, 1 %08X, 2 %08X, 3 %08X, 4 %08X, tsfl %08X, " + "addr: %08X (64: %08X)\n", + __func__, le32toh(rx_desc->rxdw0), le32toh(rx_desc->rxdw1), + le32toh(rx_desc->rxdw2), le32toh(rx_desc->rxdw3), + le32toh(rx_desc->rxdw4), le32toh(rx_desc->tsf_low), + le32toh(rx_desc->rxbufaddr), le32toh(rx_desc->rxbufaddr64)); + + rxdw0 = le32toh(rx_desc->rxdw0); + if (__predict_false(rxdw0 & (R92C_RXDW0_CRCERR | R92C_RXDW0_ICVERR))) { + /* + * This should not happen since we setup our Rx filter + * to not receive these frames. + */ + RTWN_DPRINTF(sc, RTWN_DEBUG_RECV, + "%s: RX flags error (%s)\n", __func__, + rxdw0 & R92C_RXDW0_CRCERR ? "CRC" : "ICV"); + goto fail; + } + + pktlen = MS(rxdw0, R92C_RXDW0_PKTLEN); + if (__predict_false(pktlen < sizeof(struct ieee80211_frame_ack) || + pktlen > MCLBYTES)) { + RTWN_DPRINTF(sc, RTWN_DEBUG_RECV, + "%s: frame is too short/long: %d\n", __func__, pktlen); + goto fail; + } + + infosz = MS(rxdw0, R92C_RXDW0_INFOSZ) * 8; + shift = MS(rxdw0, R92C_RXDW0_SHIFT); + + m1 = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); + if (__predict_false(m1 == NULL)) { + device_printf(sc->sc_dev, "%s: could not allocate RX mbuf\n", + __func__); + goto fail; + } + bus_dmamap_sync(ring->data_dmat, rx_data->map, BUS_DMASYNC_POSTREAD); + bus_dmamap_unload(ring->data_dmat, rx_data->map); + + error = bus_dmamap_load(ring->data_dmat, rx_data->map, mtod(m1, void *), + MCLBYTES, rtwn_pci_dma_map_addr, &rx_data->paddr, 0); + if (error != 0) { + m_freem(m1); + + error = bus_dmamap_load(ring->data_dmat, rx_data->map, + mtod(rx_data->m, void *), MCLBYTES, rtwn_pci_dma_map_addr, + &rx_data->paddr, BUS_DMA_NOWAIT); + if (error != 0) + panic("%s: could not load old RX mbuf", + device_get_name(sc->sc_dev)); + + /* Physical address may have changed. */ + rtwn_pci_setup_rx_desc(pc, rx_desc, rx_data->paddr, MCLBYTES, + desc_idx); + goto fail; + } + + /* Finalize mbuf. */ + m = rx_data->m; + rx_data->m = m1; + m->m_pkthdr.len = m->m_len = pktlen + infosz + shift; + + nf = RTWN_NOISE_FLOOR; + ni = rtwn_rx_common(sc, m, rx_desc, &rssi); + + RTWN_DPRINTF(sc, RTWN_DEBUG_RECV, + "%s: Rx frame len %d, infosz %d, shift %d, rssi %d\n", + __func__, pktlen, infosz, shift, rssi); + + /* Update RX descriptor. */ + rtwn_pci_setup_rx_desc(pc, rx_desc, rx_data->paddr, MCLBYTES, + desc_idx); + + /* Send the frame to the 802.11 layer. */ + RTWN_UNLOCK(sc); + if (ni != NULL) { + (void)ieee80211_input(ni, m, rssi - nf, nf); + /* Node is no longer needed. */ + ieee80211_free_node(ni); + } else + (void)ieee80211_input_all(ic, m, rssi - nf, nf); + + RTWN_LOCK(sc); + + return; + +fail: + counter_u64_add(ic->ic_ierrors, 1); +} + +static void +rtwn_pci_tx_done(struct rtwn_softc *sc, int qid) +{ + struct rtwn_pci_softc *pc = RTWN_PCI_SOFTC(sc); + struct rtwn_tx_ring *ring = &pc->tx_ring[qid]; + struct rtwn_tx_desc_common *desc; + struct rtwn_tx_data *data; + + RTWN_DPRINTF(sc, RTWN_DEBUG_INTR, "%s: qid %d, last %d, cur %d\n", + __func__, qid, ring->last, ring->cur); + + bus_dmamap_sync(ring->desc_dmat, ring->desc_map, BUS_DMASYNC_POSTREAD); + + while(ring->last != ring->cur) { + data = &ring->tx_data[ring->last]; + desc = (struct rtwn_tx_desc_common *) + ((uint8_t *)ring->desc + sc->txdesc_len * ring->last); + + KASSERT(data->m != NULL, ("no mbuf")); + + if (desc->flags0 & RTWN_FLAGS0_OWN) + break; + + /* Unmap and free mbuf. */ + bus_dmamap_sync(ring->data_dmat, data->map, + BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(ring->data_dmat, data->map); + + if (data->ni != NULL) { /* not a beacon frame */ + ieee80211_tx_complete(data->ni, data->m, 0); + + data->ni = NULL; + ring->queued--; + } else + m_freem(data->m); + + data->m = NULL; + ring->last = (ring->last + 1) % RTWN_PCI_TX_LIST_COUNT; +#ifndef D4054 + if (ring->queued > 0) + sc->sc_tx_timer = 5; + else + sc->sc_tx_timer = 0; +#endif + } + + if (ring->queued < (RTWN_PCI_TX_LIST_COUNT - 1)) + sc->qfullmsk &= ~(1 << qid); + rtwn_start(sc); +} + +static void +rtwn_pci_rx_done(struct rtwn_softc *sc) +{ + struct rtwn_pci_softc *pc = RTWN_PCI_SOFTC(sc); + struct rtwn_rx_ring *ring = &pc->rx_ring; + + bus_dmamap_sync(ring->desc_dmat, ring->desc_map, BUS_DMASYNC_POSTREAD); + + for (;;) { + struct r92ce_rx_stat *rx_desc = &ring->desc[ring->cur]; + + if (le32toh(rx_desc->rxdw0) & R92C_RXDW0_OWN) + break; + + rtwn_pci_rx_frame(sc, rx_desc, ring->cur); + + if (!(sc->sc_flags & RTWN_RUNNING)) + return; + + ring->cur = (ring->cur + 1) % RTWN_PCI_RX_LIST_COUNT; + } +} + +void +rtwn_pci_intr(void *arg) +{ + struct rtwn_softc *sc = arg; + struct rtwn_pci_softc *pc = RTWN_PCI_SOFTC(sc); + int i, status, tx_rings; + + RTWN_LOCK(sc); + status = rtwn_classify_intr(sc, &tx_rings, 0); + RTWN_DPRINTF(sc, RTWN_DEBUG_INTR, "%s: status %08X, tx_rings %08X\n", + __func__, status, tx_rings); + if (status == 0 && tx_rings == 0) { + RTWN_UNLOCK(sc); + return; + } + + if (status & RTWN_PCI_INTR_RX) + rtwn_pci_rx_done(sc); + + if (tx_rings != 0) + for (i = 0; i < RTWN_PCI_NTXQUEUES; i++) + if (tx_rings & (1 << i)) + rtwn_pci_tx_done(sc, i); + + if (sc->sc_flags & RTWN_RUNNING) + rtwn_pci_enable_intr(pc); + RTWN_UNLOCK(sc); +} diff --git a/sys/dev/rtwn/pci/rtwn_pci_rx.h b/sys/dev/rtwn/pci/rtwn_pci_rx.h new file mode 100644 index 000000000000..265d32d8a117 --- /dev/null +++ b/sys/dev/rtwn/pci/rtwn_pci_rx.h @@ -0,0 +1,27 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef RTWN_PCI_RX_H +#define RTWN_PCI_RX_H + +void rtwn_pci_dma_map_addr(void *, bus_dma_segment_t *, int, int); +void rtwn_pci_setup_rx_desc(struct rtwn_pci_softc *, + struct r92ce_rx_stat *, bus_addr_t, size_t, int); +void rtwn_pci_intr(void *); + +#endif /* RTWN_PCI_RX_H */ diff --git a/sys/dev/rtwn/pci/rtwn_pci_tx.c b/sys/dev/rtwn/pci/rtwn_pci_tx.c new file mode 100644 index 000000000000..c1da8f648554 --- /dev/null +++ b/sys/dev/rtwn/pci/rtwn_pci_tx.c @@ -0,0 +1,195 @@ +/* $OpenBSD: if_rtwn.c,v 1.6 2015/08/28 00:03:53 deraadt Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015 Stefan Sperling + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include + +#include + + +static int +rtwn_pci_tx_start_common(struct rtwn_softc *sc, struct ieee80211_node *ni, + struct mbuf *m, uint8_t *tx_desc, uint8_t type, int id) +{ + struct rtwn_pci_softc *pc = RTWN_PCI_SOFTC(sc); + struct rtwn_tx_ring *ring; + struct rtwn_tx_data *data; + struct rtwn_tx_desc_common *txd; + bus_dma_segment_t segs[1]; + uint8_t qid; + int nsegs, error; + + RTWN_ASSERT_LOCKED(sc); + + switch (type) { + case IEEE80211_FC0_TYPE_CTL: + case IEEE80211_FC0_TYPE_MGT: + qid = RTWN_PCI_VO_QUEUE; + break; + default: + qid = M_WME_GETAC(m); + break; + } + + if (ni == NULL) /* beacon frame */ + qid = RTWN_PCI_BEACON_QUEUE; + + ring = &pc->tx_ring[qid]; + data = &ring->tx_data[ring->cur]; + if (data->m != NULL) { + RTWN_DPRINTF(sc, RTWN_DEBUG_XMIT, + "%s: ring #%u is full (m %p)\n", __func__, qid, data->m); + return (ENOBUFS); + } + + txd = (struct rtwn_tx_desc_common *) + ((uint8_t *)ring->desc + sc->txdesc_len * ring->cur); + if (txd->flags0 & RTWN_FLAGS0_OWN) { + device_printf(sc->sc_dev, + "%s: OWN bit is set (tx desc %d, ring %u)!\n", + __func__, ring->cur, qid); + return (ENOBUFS); + } + + /* Copy Tx descriptor. */ + rtwn_pci_copy_tx_desc(pc, txd, tx_desc); + txd->pktlen = htole16(m->m_pkthdr.len); + txd->offset = sc->txdesc_len; + + error = bus_dmamap_load_mbuf_sg(ring->data_dmat, data->map, m, segs, + &nsegs, BUS_DMA_NOWAIT); + if (error != 0 && error != EFBIG) { + device_printf(sc->sc_dev, "can't map mbuf (error %d)\n", + error); + return (error); + } + if (error != 0) { + struct mbuf *mnew; + + mnew = m_defrag(m, M_NOWAIT); + if (mnew == NULL) { + device_printf(sc->sc_dev, "can't defragment mbuf\n"); + return (ENOBUFS); + } + m = mnew; + + error = bus_dmamap_load_mbuf_sg(ring->data_dmat, data->map, m, + segs, &nsegs, BUS_DMA_NOWAIT); + if (error != 0) { + device_printf(sc->sc_dev, + "can't map mbuf (error %d)\n", error); + if (ni != NULL) { + if_inc_counter(ni->ni_vap->iv_ifp, + IFCOUNTER_OERRORS, 1); + ieee80211_free_node(ni); + } + m_freem(m); + return (0); /* XXX */ + } + } + + rtwn_pci_tx_postsetup(pc, txd, segs); + txd->flags0 |= RTWN_FLAGS0_OWN; + + /* Dump Tx descriptor. */ + rtwn_dump_tx_desc(sc, txd); + + bus_dmamap_sync(ring->desc_dmat, ring->desc_map, + BUS_DMASYNC_POSTWRITE); + bus_dmamap_sync(ring->data_dmat, data->map, BUS_DMASYNC_POSTWRITE); + + data->m = m; + data->ni = ni; + data->id = id; + + ring->cur = (ring->cur + 1) % RTWN_PCI_TX_LIST_COUNT; + + if (qid != RTWN_PCI_BEACON_QUEUE) { + ring->queued++; + if (ring->queued >= (RTWN_PCI_TX_LIST_COUNT - 1)) + sc->qfullmsk |= (1 << qid); + +#ifndef D4054 + sc->sc_tx_timer = 5; +#endif + } + + /* Kick TX. */ + rtwn_write_2(sc, R92C_PCIE_CTRL_REG, (1 << qid)); + + return (0); +} + +int +rtwn_pci_tx_start(struct rtwn_softc *sc, struct ieee80211_node *ni, + struct mbuf *m, uint8_t *tx_desc, uint8_t type, int id) +{ + int error = 0; + + if (ni == NULL) { /* beacon frame */ + m = m_dup(m, M_NOWAIT); + if (__predict_false(m == NULL)) { + device_printf(sc->sc_dev, + "%s: could not copy beacon frame\n", __func__); + return (ENOMEM); + } + + error = rtwn_pci_tx_start_common(sc, ni, m, tx_desc, type, id); + if (error != 0) + m_freem(m); + } else + error = rtwn_pci_tx_start_common(sc, ni, m, tx_desc, type, id); + + return (error); +} diff --git a/sys/dev/rtwn/pci/rtwn_pci_tx.h b/sys/dev/rtwn/pci/rtwn_pci_tx.h new file mode 100644 index 000000000000..9b9d2e33693e --- /dev/null +++ b/sys/dev/rtwn/pci/rtwn_pci_tx.h @@ -0,0 +1,25 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef RTWN_PCI_TX_H +#define RTWN_PCI_TX_H + +int rtwn_pci_tx_start(struct rtwn_softc *, struct ieee80211_node *, + struct mbuf *, uint8_t *, uint8_t, int); + +#endif /* RTWN_PCI_TX_H */ diff --git a/sys/dev/rtwn/pci/rtwn_pci_var.h b/sys/dev/rtwn/pci/rtwn_pci_var.h new file mode 100644 index 000000000000..4a6d54c21da8 --- /dev/null +++ b/sys/dev/rtwn/pci/rtwn_pci_var.h @@ -0,0 +1,141 @@ +/* $OpenBSD: if_rtwnreg.h,v 1.3 2015/06/14 08:02:47 stsp Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015 Stefan Sperling + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef RTWN_PCI_VAR_H +#define RTWN_PCI_VAR_H + +#include + + +#define RTWN_PCI_RX_LIST_COUNT 256 +#define RTWN_PCI_TX_LIST_COUNT 256 + +struct rtwn_rx_data { + bus_dmamap_t map; + struct mbuf *m; + bus_addr_t paddr; +}; + +struct rtwn_rx_ring { + struct r92ce_rx_stat *desc; + bus_addr_t paddr; + bus_dma_tag_t desc_dmat; + bus_dmamap_t desc_map; + bus_dma_tag_t data_dmat; + bus_dma_segment_t seg; + struct rtwn_rx_data rx_data[RTWN_PCI_RX_LIST_COUNT]; + int cur; +}; + +struct rtwn_tx_data { + bus_dmamap_t map; + struct mbuf *m; + struct ieee80211_node *ni; + uint8_t id; +}; + +struct rtwn_tx_ring { + bus_addr_t paddr; + bus_dma_tag_t desc_dmat; + bus_dmamap_t desc_map; + bus_dma_tag_t data_dmat; + bus_dma_segment_t seg; + void *desc; + struct rtwn_tx_data tx_data[RTWN_PCI_TX_LIST_COUNT]; + int queued; + int cur; + int last; +}; + +/* + * TX queue indices. + */ +enum { + RTWN_PCI_BK_QUEUE, + RTWN_PCI_BE_QUEUE, + RTWN_PCI_VI_QUEUE, + RTWN_PCI_VO_QUEUE, + RTWN_PCI_BEACON_QUEUE, + RTWN_PCI_TXCMD_QUEUE, + RTWN_PCI_MGNT_QUEUE, + RTWN_PCI_HIGH_QUEUE, + RTWN_PCI_HCCA_QUEUE, + RTWN_PCI_NTXQUEUES +}; + +/* + * Interrupt events. + */ +enum { + RTWN_PCI_INTR_RX_ERROR = 0x00000001, + RTWN_PCI_INTR_RX_OVERFLOW = 0x00000002, + RTWN_PCI_INTR_RX_DESC_UNAVAIL = 0x00000004, + RTWN_PCI_INTR_RX_DONE = 0x00000008, + RTWN_PCI_INTR_TX_ERROR = 0x00000010, + RTWN_PCI_INTR_TX_OVERFLOW = 0x00000020, + RTWN_PCI_INTR_TX_REPORT = 0x00000040, + RTWN_PCI_INTR_PS_TIMEOUT = 0x00000080 +}; + +/* Shortcuts */ +/* Vendor driver treats RX errors like ROK... */ +#define RTWN_PCI_INTR_RX \ + (RTWN_PCI_INTR_RX_OVERFLOW | RTWN_PCI_INTR_RX_DESC_UNAVAIL | \ + RTWN_PCI_INTR_RX_DONE) + + +struct rtwn_pci_softc { + struct rtwn_softc pc_sc; /* must be the first */ + + struct resource *irq; + struct resource *mem; + bus_space_tag_t pc_st; + bus_space_handle_t pc_sh; + void *pc_ih; + bus_size_t pc_mapsize; + + struct rtwn_rx_ring rx_ring; + struct rtwn_tx_ring tx_ring[RTWN_PCI_NTXQUEUES]; + + /* must be set by the driver. */ + uint16_t pc_qmap; + uint32_t tcr; + + void (*pc_setup_tx_desc)(struct rtwn_pci_softc *, + void *, uint32_t); + void (*pc_tx_postsetup)(struct rtwn_pci_softc *, + void *, bus_dma_segment_t *); + void (*pc_copy_tx_desc)(void *, const void *); + void (*pc_enable_intr)(struct rtwn_pci_softc *); +}; +#define RTWN_PCI_SOFTC(sc) ((struct rtwn_pci_softc *)(sc)) + +#define rtwn_pci_setup_tx_desc(_pc, _desc, _addr) \ + (((_pc)->pc_setup_tx_desc)((_pc), (_desc), (_addr))) +#define rtwn_pci_tx_postsetup(_pc, _txd, _segs) \ + (((_pc)->pc_tx_postsetup)((_pc), (_txd), (_segs))) +#define rtwn_pci_copy_tx_desc(_pc, _dest, _src) \ + (((_pc)->pc_copy_tx_desc)((_dest), (_src))) +#define rtwn_pci_enable_intr(_pc) \ + (((_pc)->pc_enable_intr)((_pc))) + +#endif /* RTWN_PCI_VAR_H */ diff --git a/sys/dev/rtwn/rtl8188e/r88e.h b/sys/dev/rtwn/rtl8188e/r88e.h new file mode 100644 index 000000000000..999ab4005756 --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/r88e.h @@ -0,0 +1,94 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef RTL8188E_H +#define RTL8188E_H + +/* + * Global definitions. + */ +#define R88E_PUBQ_NPAGES 142 +#define R88E_TXPKTBUF_COUNT 177 +#define R88E_TX_PAGE_COUNT 169 + +#define R88E_MACID_MAX 63 +#define R88E_RX_DMA_BUFFER_SIZE 0x2400 + +#define R88E_INTR_MSG_LEN 60 + +#define R88E_CALIB_THRESHOLD 4 + + +/* + * Function declarations. + */ +/* r88e_beacon.c */ +void r88e_beacon_enable(struct rtwn_softc *, int, int); + +/* r88e_calib.c */ +void r88e_iq_calib(struct rtwn_softc *); +void r88e_temp_measure(struct rtwn_softc *); +uint8_t r88e_temp_read(struct rtwn_softc *); + +/* r88e_chan.c */ +void r88e_get_txpower(struct rtwn_softc *, int, + struct ieee80211_channel *, uint16_t[]); +void r88e_set_bw20(struct rtwn_softc *, uint8_t); +void r88e_set_gain(struct rtwn_softc *, uint8_t); + +/* r88e_fw.c */ +#ifndef RTWN_WITHOUT_UCODE +int r88e_fw_cmd(struct rtwn_softc *, uint8_t, const void *, int); +void r88e_fw_reset(struct rtwn_softc *, int); +void r88e_fw_download_enable(struct rtwn_softc *, int); +#endif +void r88e_macid_enable_link(struct rtwn_softc *, int, int); +void r88e_set_media_status(struct rtwn_softc *, int); +#ifndef RTWN_WITHOUT_UCODE +int r88e_set_rsvd_page(struct rtwn_softc *, int, int, int); +int r88e_set_pwrmode(struct rtwn_softc *, struct ieee80211vap *, int); +#endif + +/* r88e_init.c */ +void r88e_init_bb(struct rtwn_softc *); +void r88e_init_rf(struct rtwn_softc *); +int r88e_power_on(struct rtwn_softc *); + +/* r88e_led.c */ +void r88e_set_led(struct rtwn_softc *, int, int); + +/* r88e_rf.c */ +void r88e_rf_write(struct rtwn_softc *, int, uint8_t, uint32_t); + +/* r88e_rom.c */ +void r88e_parse_rom(struct rtwn_softc *, uint8_t *); + +/* r88e_rx.c */ +void r88e_ratectl_tx_complete(struct rtwn_softc *, uint8_t *, int); +void r88e_handle_c2h_report(struct rtwn_softc *, uint8_t *, int); +int8_t r88e_get_rssi_cck(struct rtwn_softc *, void *); +int8_t r88e_get_rssi_ofdm(struct rtwn_softc *, void *); + +/* r88e_tx.c */ +void r88e_tx_enable_ampdu(void *, int); +void r88e_tx_setup_hwseq(void *); +void r88e_tx_setup_macid(void *, int); + +#endif /* RTL8188E_H */ diff --git a/sys/dev/rtwn/rtl8188e/r88e_beacon.c b/sys/dev/rtwn/rtl8188e/r88e_beacon.c new file mode 100644 index 000000000000..4c29d37fab24 --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/r88e_beacon.c @@ -0,0 +1,62 @@ +/*- + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include +#include + + +void +r88e_beacon_enable(struct rtwn_softc *sc, int id, int enable) +{ + + if (enable) { + rtwn_setbits_1(sc, R92C_MBID_NUM, 0, R88E_MBID_TXBCN_RPT(id)); + rtwn_setbits_1(sc, R92C_BCN_CTRL(id), + 0, R92C_BCN_CTRL_EN_BCN); + } else { + rtwn_setbits_1(sc, R92C_MBID_NUM, R88E_MBID_TXBCN_RPT(id), 0); + rtwn_setbits_1(sc, R92C_BCN_CTRL(id), + R92C_BCN_CTRL_EN_BCN, 0); + } +} diff --git a/sys/dev/rtwn/rtl8188e/r88e_calib.c b/sys/dev/rtwn/rtl8188e/r88e_calib.c new file mode 100644 index 000000000000..e8af13e7da9e --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/r88e_calib.c @@ -0,0 +1,67 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + + +void +r88e_iq_calib(struct rtwn_softc *sc) +{ + /* XXX TODO */ +} + +void +r88e_temp_measure(struct rtwn_softc *sc) +{ + rtwn_rf_write(sc, 0, R88E_RF_T_METER, R88E_RF_T_METER_START); +} + +uint8_t +r88e_temp_read(struct rtwn_softc *sc) +{ + return (MS(rtwn_rf_read(sc, 0, R88E_RF_T_METER), + R88E_RF_T_METER_VAL)); +} diff --git a/sys/dev/rtwn/rtl8188e/r88e_chan.c b/sys/dev/rtwn/rtl8188e/r88e_chan.c new file mode 100644 index 000000000000..94d5445f258d --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/r88e_chan.c @@ -0,0 +1,167 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include + + +static int +r88e_get_power_group(struct rtwn_softc *sc, struct ieee80211_channel *c) +{ + uint8_t chan; + int group; + + chan = rtwn_chan2centieee(c); + if (IEEE80211_IS_CHAN_2GHZ(c)) { + if (chan <= 2) group = 0; + else if (chan <= 5) group = 1; + else if (chan <= 8) group = 2; + else if (chan <= 11) group = 3; + else if (chan <= 13) group = 4; + else if (chan <= 14) group = 5; + else { + KASSERT(0, ("wrong 2GHz channel %d!\n", chan)); + return (-1); + } + } else { + KASSERT(0, ("wrong channel band (flags %08X)\n", c->ic_flags)); + return (-1); + } + + return (group); +} + +void +r88e_get_txpower(struct rtwn_softc *sc, int chain, + struct ieee80211_channel *c, uint16_t power[RTWN_RIDX_COUNT]) +{ + struct r92c_softc *rs = sc->sc_priv; + const struct rtwn_r88e_txpwr *rt = rs->rs_txpwr; + const struct rtwn_r88e_txagc *base = rs->rs_txagc; + uint16_t cckpow, ofdmpow, bw20pow, htpow; + int max_mcs, ridx, group; + + /* Determine channel group. */ + group = r88e_get_power_group(sc, c); + if (group == -1) { /* shouldn't happen */ + device_printf(sc->sc_dev, "%s: incorrect channel\n", __func__); + return; + } + + /* XXX net80211 regulatory */ + + max_mcs = RTWN_RIDX_MCS(sc->ntxchains * 8 - 1); + KASSERT(max_mcs <= RTWN_RIDX_COUNT, ("increase ridx limit\n")); + + memset(power, 0, max_mcs * sizeof(power[0])); + if (rs->regulatory == 0) { + for (ridx = RTWN_RIDX_CCK1; ridx <= RTWN_RIDX_CCK11; ridx++) + power[ridx] = base->pwr[0][ridx]; + } + for (ridx = RTWN_RIDX_OFDM6; ridx < RTWN_RIDX_COUNT; ridx++) { + if (rs->regulatory == 3) + power[ridx] = base->pwr[0][ridx]; + else if (rs->regulatory == 1) { + if (!IEEE80211_IS_CHAN_HT40(c)) + power[ridx] = base->pwr[group][ridx]; + } else if (rs->regulatory != 2) + power[ridx] = base->pwr[0][ridx]; + } + + /* Compute per-CCK rate Tx power. */ + cckpow = rt->cck_tx_pwr[group]; + for (ridx = RTWN_RIDX_CCK1; ridx <= RTWN_RIDX_CCK11; ridx++) + power[ridx] += cckpow; + + htpow = rt->ht40_tx_pwr[group]; + + /* Compute per-OFDM rate Tx power. */ + ofdmpow = htpow + rt->ofdm_tx_pwr_diff; + for (ridx = RTWN_RIDX_OFDM6; ridx <= RTWN_RIDX_OFDM54; ridx++) + power[ridx] += ofdmpow; + + bw20pow = htpow + rt->bw20_tx_pwr_diff; + for (ridx = RTWN_RIDX_MCS(0); ridx <= max_mcs; ridx++) + power[ridx] += bw20pow; + + /* Apply max limit. */ + for (ridx = RTWN_RIDX_CCK1; ridx <= max_mcs; ridx++) { + if (power[ridx] > R92C_MAX_TX_PWR) + power[ridx] = R92C_MAX_TX_PWR; + } +} + +void +r88e_set_bw20(struct rtwn_softc *sc, uint8_t chan) +{ + struct r92c_softc *rs = sc->sc_priv; + + rtwn_setbits_1(sc, R92C_BWOPMODE, 0, R92C_BWOPMODE_20MHZ); + + rtwn_bb_setbits(sc, R92C_FPGA0_RFMOD, R92C_RFMOD_40MHZ, 0); + rtwn_bb_setbits(sc, R92C_FPGA1_RFMOD, R92C_RFMOD_40MHZ, 0); + + /* Select 20MHz bandwidth. */ + rtwn_rf_write(sc, 0, R92C_RF_CHNLBW, + (rs->rf_chnlbw[0] & ~0xfff) | chan | R88E_RF_CHNLBW_BW20); +} + +void +r88e_set_gain(struct rtwn_softc *sc, uint8_t gain) +{ + + rtwn_bb_setbits(sc, R92C_OFDM0_AGCCORE1(0), + R92C_OFDM0_AGCCORE1_GAIN_M, gain); +} diff --git a/sys/dev/rtwn/rtl8188e/r88e_fw.c b/sys/dev/rtwn/rtl8188e/r88e_fw.c new file mode 100644 index 000000000000..435fb650238b --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/r88e_fw.c @@ -0,0 +1,225 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include + + +#ifndef RTWN_WITHOUT_UCODE +int +r88e_fw_cmd(struct rtwn_softc *sc, uint8_t id, const void *buf, int len) +{ + struct r88e_fw_cmd cmd; + int ntries, error; + + if (!(sc->sc_flags & RTWN_FW_LOADED)) { + RTWN_DPRINTF(sc, RTWN_DEBUG_FIRMWARE, "%s: firmware " + "was not loaded; command (id %d) will be discarded\n", + __func__, id); + return (0); + } + + /* Wait for current FW box to be empty. */ + for (ntries = 0; ntries < 50; ntries++) { + if (!(rtwn_read_1(sc, R92C_HMETFR) & (1 << sc->fwcur))) + break; + rtwn_delay(sc, 2000); + } + if (ntries == 100) { + device_printf(sc->sc_dev, + "could not send firmware command\n"); + return (ETIMEDOUT); + } + memset(&cmd, 0, sizeof(cmd)); + cmd.id = id; + KASSERT(len <= sizeof(cmd.msg), + ("%s: firmware command too long (%d > %zu)\n", + __func__, len, sizeof(cmd.msg))); + memcpy(cmd.msg, buf, len); + + /* Write the first word last since that will trigger the FW. */ + if (len > 3) { + error = rtwn_write_4(sc, R88E_HMEBOX_EXT(sc->fwcur), + *(uint32_t *)((uint8_t *)&cmd + 4)); + if (error != 0) + return (error); + } + error = rtwn_write_4(sc, R92C_HMEBOX(sc->fwcur), *(uint32_t *)&cmd); + if (error != 0) + return (error); + + sc->fwcur = (sc->fwcur + 1) % R92C_H2C_NBOX; + + return (0); +} + +void +r88e_fw_reset(struct rtwn_softc *sc, int reason) +{ + uint16_t reg; + + reg = rtwn_read_2(sc, R92C_SYS_FUNC_EN); + rtwn_write_2(sc, R92C_SYS_FUNC_EN, reg & ~R92C_SYS_FUNC_EN_CPUEN); + rtwn_write_2(sc, R92C_SYS_FUNC_EN, reg | R92C_SYS_FUNC_EN_CPUEN); +} + +void +r88e_fw_download_enable(struct rtwn_softc *sc, int enable) +{ + if (enable) { + /* MCU firmware download enable. */ + rtwn_setbits_1(sc, R92C_MCUFWDL, 0, R92C_MCUFWDL_EN); + /* 8051 reset. */ + rtwn_setbits_1_shift(sc, R92C_MCUFWDL, R92C_MCUFWDL_ROM_DLEN, + 0, 2); + } else { + /* MCU download disable. */ + rtwn_setbits_1(sc, R92C_MCUFWDL, R92C_MCUFWDL_EN, 0); + /* Reserved for f/w extension. */ + rtwn_write_1(sc, R92C_MCUFWDL + 1, 0); + } +} +#endif + +void +r88e_macid_enable_link(struct rtwn_softc *sc, int id, int enable) +{ + uint32_t reg; + + reg = R88E_MACID_NO_LINK; + if (id > 32) + reg += 4; + + if (enable) + rtwn_setbits_4(sc, reg, 1 << (id % 32), 0); + else + rtwn_setbits_4(sc, reg, 0, 1 << (id % 32)); + + /* XXX max macid for tx reports */ +} + +void +r88e_set_media_status(struct rtwn_softc *sc, int macid) +{ + struct r88e_fw_cmd_msrrpt status; + + if (macid & RTWN_MACID_VALID) + status.msrb0 = R88E_MSRRPT_B0_ASSOC; + else + status.msrb0 = R88E_MSRRPT_B0_DISASSOC; + status.macid = (macid & ~RTWN_MACID_VALID); + + r88e_macid_enable_link(sc, status.macid, + (macid & RTWN_MACID_VALID) != 0); + +#ifndef RTWN_WITHOUT_UCODE + if (r88e_fw_cmd(sc, R88E_CMD_MSR_RPT, &status, sizeof(status)) != 0) { + device_printf(sc->sc_dev, "%s: cannot change media status!\n", + __func__); + } +#endif +} + +#ifndef RTWN_WITHOUT_UCODE +int +r88e_set_rsvd_page(struct rtwn_softc *sc, int probe_resp, int null, + int qos_null) +{ + struct r88e_fw_cmd_rsvdpage rsvd; + + rsvd.probe_resp = probe_resp; + rsvd.ps_poll = 0; + rsvd.null_data = null; + rsvd.null_data_qos = qos_null; + rsvd.null_data_qos_bt = 0; + return (r88e_fw_cmd(sc, R88E_CMD_RSVD_PAGE, &rsvd, sizeof(rsvd))); +} + +int +r88e_set_pwrmode(struct rtwn_softc *sc, struct ieee80211vap *vap, + int off) +{ + struct r88e_fw_cmd_pwrmode mode; + int error; + + if (off && vap->iv_state == IEEE80211_S_RUN && + (vap->iv_flags & IEEE80211_F_PMGTON)) { + mode.mode = R88E_PWRMODE_LEG; + /* + * TODO: switch to RFOFF state + * (something is missing here - Rx stops with it). + */ +#ifdef RTWN_TODO + mode.pwr_state = R88E_PWRMODE_STATE_RFOFF; +#else + mode.pwr_state = R88E_PWRMODE_STATE_RFON; +#endif + } else { + mode.mode = R88E_PWRMODE_CAM; + mode.pwr_state = R88E_PWRMODE_STATE_ALLON; + } + mode.pwrb1 = + SM(R88E_PWRMODE_B1_SMART_PS, R88E_PWRMODE_B1_LEG_NULLDATA) | + SM(R88E_PWRMODE_B1_RLBM, R88E_PWRMODE_B1_MODE_MIN); + /* XXX ignored */ + mode.bcn_pass = 0; + mode.queue_uapsd = 0; + error = r88e_fw_cmd(sc, R88E_CMD_SET_PWRMODE, &mode, sizeof(mode)); + if (error != 0) { + device_printf(sc->sc_dev, + "%s: CMD_SET_PWRMODE was not sent, error %d\n", + __func__, error); + } + + return (error); +} +#endif diff --git a/sys/dev/rtwn/rtl8188e/r88e_fw_cmd.h b/sys/dev/rtwn/rtl8188e/r88e_fw_cmd.h new file mode 100644 index 000000000000..c152729c1ee4 --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/r88e_fw_cmd.h @@ -0,0 +1,84 @@ +/*- + * Copyright (c) 2015 Kevin Lo + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef R88E_FW_CMD_H +#define R88E_FW_CMD_H + +/* + * Host to firmware commands. + */ +struct r88e_fw_cmd { + uint8_t id; +#define R88E_CMD_RSVD_PAGE 0x00 +#define R88E_CMD_MSR_RPT 0x01 +#define R88E_CMD_SET_PWRMODE 0x20 + + uint8_t msg[7]; +} __packed __attribute__((aligned(4))); + +/* Structure for R88E_CMD_RSVD_PAGE. */ +struct r88e_fw_cmd_rsvdpage { + uint8_t probe_resp; + uint8_t ps_poll; + uint8_t null_data; + uint8_t null_data_qos; + uint8_t null_data_qos_bt; +} __packed; + +/* Structure for R88E_CMD_MSR_RPT. */ +struct r88e_fw_cmd_msrrpt { + uint8_t msrb0; +#define R88E_MSRRPT_B0_DISASSOC 0x00 +#define R88E_MSRRPT_B0_ASSOC 0x01 + + uint8_t macid; +} __packed; + +/* Structure for R88E_CMD_SET_PWRMODE. */ +struct r88e_fw_cmd_pwrmode { + uint8_t mode; +#define R88E_PWRMODE_CAM 0 +#define R88E_PWRMODE_LEG 1 +#define R88E_PWRMODE_UAPSD 2 + + uint8_t pwrb1; +#define R88E_PWRMODE_B1_RLBM_M 0x0f +#define R88E_PWRMODE_B1_RLBM_S 0 +#define R88E_PWRMODE_B1_MODE_MIN 0 +#define R88E_PWRMODE_B1_MODE_MAX 1 +#define R88E_PWRMODE_B1_MODE_DTIM 2 + +#define R88E_PWRMODE_B1_SMART_PS_M 0xf0 +#define R88E_PWRMODE_B1_SMART_PS_S 4 +#define R88E_PWRMODE_B1_LEG_PSPOLL0 0 +#define R88E_PWRMODE_B1_LEG_PSPOLL1 1 +#define R88E_PWRMODE_B1_LEG_NULLDATA 2 +#define R88E_PWRMODE_B1_WMM_PSPOLL 0 +#define R88E_PWRMODE_B1_WMM_NULLDATA 1 + + uint8_t bcn_pass; + uint8_t queue_uapsd; + uint8_t pwr_state; +#define R88E_PWRMODE_STATE_RFOFF 0x00 +#define R88E_PWRMODE_STATE_RFON 0x04 +#define R88E_PWRMODE_STATE_ALLON 0x0c +} __packed; + +#endif /* R88E_FW_CMD_H */ diff --git a/sys/dev/rtwn/rtl8188e/r88e_init.c b/sys/dev/rtwn/rtl8188e/r88e_init.c new file mode 100644 index 000000000000..202cec154aa2 --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/r88e_init.c @@ -0,0 +1,158 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include +#include + +#include +#include + + +static void +r88e_crystalcap_write(struct rtwn_softc *sc) +{ + struct r92c_softc *rs = sc->sc_priv; + uint32_t reg; + uint8_t val; + + val = rs->crystalcap & 0x3f; + reg = rtwn_bb_read(sc, R92C_AFE_XTAL_CTRL); + rtwn_bb_write(sc, R92C_AFE_XTAL_CTRL, + RW(reg, R92C_AFE_XTAL_CTRL_ADDR, val | val << 6)); +} + +void +r88e_init_bb(struct rtwn_softc *sc) +{ + + /* Enable BB and RF. */ + rtwn_setbits_2(sc, R92C_SYS_FUNC_EN, 0, + R92C_SYS_FUNC_EN_BBRSTB | R92C_SYS_FUNC_EN_BB_GLB_RST | + R92C_SYS_FUNC_EN_DIO_RF); + + rtwn_write_1(sc, R92C_RF_CTRL, + R92C_RF_CTRL_EN | R92C_RF_CTRL_RSTB | R92C_RF_CTRL_SDMRSTB); + rtwn_write_1(sc, R92C_SYS_FUNC_EN, + R92C_SYS_FUNC_EN_USBA | R92C_SYS_FUNC_EN_USBD | + R92C_SYS_FUNC_EN_BB_GLB_RST | R92C_SYS_FUNC_EN_BBRSTB); + + r92c_init_bb_common(sc); + + rtwn_bb_write(sc, R92C_OFDM0_AGCCORE1(0), 0x69553422); + rtwn_delay(sc, 1); + rtwn_bb_write(sc, R92C_OFDM0_AGCCORE1(0), 0x69553420); + rtwn_delay(sc, 1); + + r88e_crystalcap_write(sc); +} + +int +r88e_power_on(struct rtwn_softc *sc) +{ +#define RTWN_CHK(res) do { \ + if (res != 0) \ + return (EIO); \ +} while(0) + int ntries; + + /* Wait for power ready bit. */ + for (ntries = 0; ntries < 5000; ntries++) { + if (rtwn_read_4(sc, R92C_APS_FSMCO) & R92C_APS_FSMCO_SUS_HOST) + break; + rtwn_delay(sc, 10); + } + if (ntries == 5000) { + device_printf(sc->sc_dev, + "timeout waiting for chip power up\n"); + return (ETIMEDOUT); + } + + /* Reset BB. */ + RTWN_CHK(rtwn_setbits_1(sc, R92C_SYS_FUNC_EN, + R92C_SYS_FUNC_EN_BBRSTB | R92C_SYS_FUNC_EN_BB_GLB_RST, 0)); + + RTWN_CHK(rtwn_setbits_1(sc, R92C_AFE_XTAL_CTRL + 2, 0, 0x80)); + + /* Disable HWPDN. */ + RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, + R92C_APS_FSMCO_APDM_HPDN, 0, 1)); + + /* Disable WL suspend. */ + RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, + R92C_APS_FSMCO_AFSM_HSUS | R92C_APS_FSMCO_AFSM_PCIE, 0, 1)); + + RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, + 0, R92C_APS_FSMCO_APFM_ONMAC, 1)); + for (ntries = 0; ntries < 5000; ntries++) { + if (!(rtwn_read_2(sc, R92C_APS_FSMCO) & + R92C_APS_FSMCO_APFM_ONMAC)) + break; + rtwn_delay(sc, 10); + } + if (ntries == 5000) + return (ETIMEDOUT); + + /* Enable LDO normal mode. */ + RTWN_CHK(rtwn_setbits_1(sc, R92C_LPLDO_CTRL, + R92C_LPLDO_CTRL_SLEEP, 0)); + + /* Enable MAC DMA/WMAC/SCHEDULE/SEC blocks. */ + RTWN_CHK(rtwn_write_2(sc, R92C_CR, 0)); + RTWN_CHK(rtwn_setbits_2(sc, R92C_CR, 0, + R92C_CR_HCI_TXDMA_EN | R92C_CR_TXDMA_EN | + R92C_CR_HCI_RXDMA_EN | R92C_CR_RXDMA_EN | + R92C_CR_PROTOCOL_EN | R92C_CR_SCHEDULE_EN | + ((sc->sc_hwcrypto != RTWN_CRYPTO_SW) ? R92C_CR_ENSEC : 0) | + R92C_CR_CALTMR_EN)); + + return (0); +#undef RTWN_CHK +} diff --git a/sys/dev/rtwn/rtl8188e/r88e_led.c b/sys/dev/rtwn/rtl8188e/r88e_led.c new file mode 100644 index 000000000000..2bbcdb15cab6 --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/r88e_led.c @@ -0,0 +1,68 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include +#include + + +void +r88e_set_led(struct rtwn_softc *sc, int led, int on) +{ + + if (led == RTWN_LED_LINK) { + if (!on) { + rtwn_setbits_1(sc, R92C_LEDCFG2, 0x6f, + R92C_LEDCFG0_DIS); + rtwn_setbits_1(sc, R92C_MAC_PINMUX_CFG, 0x01, 0); + } else + rtwn_setbits_1(sc, R92C_LEDCFG2, 0x0f, 0x60); + sc->ledlink = on; /* Save LED state. */ + } + + /* XXX led #1? */ +} diff --git a/sys/dev/rtwn/rtl8188e/r88e_priv.h b/sys/dev/rtwn/rtl8188e/r88e_priv.h new file mode 100644 index 000000000000..cb4f7edbb192 --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/r88e_priv.h @@ -0,0 +1,273 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef R88E_PRIV_H +#define R88E_PRIV_H + +#include + +/* + * Parsed Tx power (diff) values. + */ +struct rtwn_r88e_txpwr { + uint8_t cck_tx_pwr[R88E_GROUP_2G]; + uint8_t ht40_tx_pwr[R88E_GROUP_2G - 1]; + int8_t ofdm_tx_pwr_diff; + int8_t bw20_tx_pwr_diff; +}; + + +/* + * MAC initialization values. + */ +static const struct rtwn_mac_prog rtl8188eu_mac[] = { + { 0x026, 0x41 }, { 0x027, 0x35 }, { 0x040, 0x00 }, { 0x428, 0x0a }, + { 0x429, 0x10 }, { 0x430, 0x00 }, { 0x431, 0x01 }, { 0x432, 0x02 }, + { 0x433, 0x04 }, { 0x434, 0x05 }, { 0x435, 0x06 }, { 0x436, 0x07 }, + { 0x437, 0x08 }, { 0x438, 0x00 }, { 0x439, 0x00 }, { 0x43a, 0x01 }, + { 0x43b, 0x02 }, { 0x43c, 0x04 }, { 0x43d, 0x05 }, { 0x43e, 0x06 }, + { 0x43f, 0x07 }, { 0x440, 0x5d }, { 0x441, 0x01 }, { 0x442, 0x00 }, + { 0x444, 0x15 }, { 0x445, 0xf0 }, { 0x446, 0x0f }, { 0x447, 0x00 }, + { 0x458, 0x41 }, { 0x459, 0xa8 }, { 0x45a, 0x72 }, { 0x45b, 0xb9 }, + { 0x460, 0x66 }, { 0x461, 0x66 }, { 0x480, 0x08 }, { 0x4c8, 0xff }, + { 0x4c9, 0x08 }, { 0x4cc, 0xff }, { 0x4cd, 0xff }, { 0x4ce, 0x01 }, + { 0x4d3, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 }, { 0x502, 0x2f }, + { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 }, { 0x506, 0x5e }, + { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 }, { 0x50a, 0x5e }, + { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 }, { 0x50e, 0x00 }, + { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a }, { 0x516, 0x0a }, + { 0x525, 0x4f }, { 0x550, 0x10 }, { 0x551, 0x10 }, { 0x559, 0x02 }, + { 0x55d, 0xff }, { 0x605, 0x30 }, { 0x608, 0x0e }, { 0x609, 0x2a }, + { 0x620, 0xff }, { 0x621, 0xff }, { 0x622, 0xff }, { 0x623, 0xff }, + { 0x624, 0xff }, { 0x625, 0xff }, { 0x626, 0xff }, { 0x627, 0xff }, + { 0x652, 0x20 }, { 0x63c, 0x0a }, { 0x63d, 0x0a }, { 0x63e, 0x0e }, + { 0x63f, 0x0e }, { 0x640, 0x40 }, { 0x66e, 0x05 }, { 0x700, 0x21 }, + { 0x701, 0x43 }, { 0x702, 0x65 }, { 0x703, 0x87 }, { 0x708, 0x21 }, + { 0x709, 0x43 }, { 0x70a, 0x65 }, { 0x70b, 0x87 } +}; + +/* + * Baseband initialization values. + */ +static const uint16_t rtl8188eu_bb_regs[] = { + 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, 0x81c, + 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, + 0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, + 0x860, 0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, + 0x880, 0x884, 0x888, 0x88c, 0x890, 0x894, 0x898, 0x89c, + 0x900, 0x904, 0x908, 0x90c, 0x910, 0x914, 0xa00, 0xa04, + 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c, 0xa20, 0xa24, + 0xa28, 0xa2c, 0xa70, 0xa74, 0xa78, 0xa7c, 0xa80, 0xb2c, + 0xc00, 0xc04, 0xc08, 0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, + 0xc20, 0xc24, 0xc28, 0xc2c, 0xc30, 0xc34, 0xc38, 0xc3c, + 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, 0xc54, 0xc58, 0xc5c, + 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, 0xc74, 0xc78, 0xc7c, + 0xc80, 0xc84, 0xc88, 0xc8c, 0xc90, 0xc94, 0xc98, 0xc9c, + 0xca0, 0xca4, 0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8, 0xcbc, + 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc, + 0xce0, 0xce4, 0xce8, 0xcec, 0xd00, 0xd04, 0xd08, 0xd0c, + 0xd10, 0xd14, 0xd18, 0xd2c, 0xd30, 0xd34, 0xd38, 0xd3c, + 0xd40, 0xd44, 0xd48, 0xd4c, 0xd50, 0xd54, 0xd58, 0xd5c, + 0xd60, 0xd64, 0xd68, 0xd6c, 0xd70, 0xd74, 0xd78, 0xe00, + 0xe04, 0xe08, 0xe10, 0xe14, 0xe18, 0xe1c, 0xe28, 0xe30, + 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44, 0xe48, 0xe4c, 0xe50, + 0xe54, 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c, 0xe70, 0xe74, + 0xe78, 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0, 0xed4, + 0xed8, 0xedc, 0xee0, 0xee8, 0xeec, 0xf14, 0xf4c, 0xf00 +}; + +static const uint32_t rtl8188eu_bb_vals[] = { + 0x80040000, 0x00000003, 0x0000fc00, 0x0000000a, 0x10001331, + 0x020c3d10, 0x02200385, 0x00000000, 0x01000100, 0x00390204, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x569a11a9, 0x01000014, 0x66f60110, + 0x061f0649, 0x00000000, 0x27272700, 0x07000760, 0x25004000, + 0x00000808, 0x00000000, 0xb0000c1c, 0x00000001, 0x00000000, + 0xccc000c0, 0x00000800, 0xfffffffe, 0x40302010, 0x00706050, + 0x00000000, 0x00000023, 0x00000000, 0x81121111, 0x00000002, + 0x00000201, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e7f120f, + 0x9500bb78, 0x1114d028, 0x00881117, 0x89140f00, 0x1a1b0000, + 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, + 0x00000900, 0x225b0606, 0x218075b1, 0x80000000, 0x48071d40, + 0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000, 0x40000100, + 0x08800000, 0x40000100, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x69e9ac47, 0x469652af, 0x49795994, 0x0a97971c, + 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, 0x69553420, + 0x43bc0094, 0x00013169, 0x00250492, 0x00000000, 0x7112848b, + 0x47c00bff, 0x00000036, 0x2c7f000d, 0x020610db, 0x0000001f, + 0x00b91612, 0x390000e4, 0x20f60000, 0x40000100, 0x20200000, + 0x00091521, 0x00000000, 0x00121820, 0x00007f7f, 0x00000000, + 0x000300a0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x28000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x64b22427, 0x00766932, + 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, 0x00000740, + 0x00020401, 0x0000907f, 0x20010201, 0xa0633333, 0x3333bc43, + 0x7a8f5b6f, 0xcc979975, 0x00000000, 0x80608000, 0x00000000, + 0x00127353, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x6437140a, 0x00000000, 0x00000282, 0x30032064, 0x4653de68, + 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, 0x322c2220, + 0x000e3c24, 0x2d2d2d2d, 0x2d2d2d2d, 0x0390272d, 0x2d2d2d2d, + 0x2d2d2d2d, 0x2d2d2d2d, 0x2d2d2d2d, 0x00000000, 0x1000dc1f, + 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, 0x01004800, + 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, 0x02140102, + 0x28160d05, 0x00000008, 0x001b25a4, 0x00c00014, 0x00c00014, + 0x01000014, 0x01000014, 0x01000014, 0x01000014, 0x00c00014, + 0x01000014, 0x00c00014, 0x00c00014, 0x00c00014, 0x00c00014, + 0x00000014, 0x00000014, 0x21555448, 0x01c00014, 0x00000003, + 0x00000000, 0x00000300 +}; + +static const struct rtwn_bb_prog rtl8188eu_bb[] = { + { + nitems(rtl8188eu_bb_regs), + rtl8188eu_bb_regs, + rtl8188eu_bb_vals, + { 0 }, + NULL + } +}; + +static const uint32_t rtl8188eu_agc_vals[] = { + 0xfb000001, 0xfb010001, 0xfb020001, 0xfb030001, 0xfb040001, + 0xfb050001, 0xfa060001, 0xf9070001, 0xf8080001, 0xf7090001, + 0xf60a0001, 0xf50b0001, 0xf40c0001, 0xf30d0001, 0xf20e0001, + 0xf10f0001, 0xf0100001, 0xef110001, 0xee120001, 0xed130001, + 0xec140001, 0xeb150001, 0xea160001, 0xe9170001, 0xe8180001, + 0xe7190001, 0xe61a0001, 0xe51b0001, 0xe41c0001, 0xe31d0001, + 0xe21e0001, 0xe11f0001, 0x8a200001, 0x89210001, 0x88220001, + 0x87230001, 0x86240001, 0x85250001, 0x84260001, 0x83270001, + 0x82280001, 0x6b290001, 0x6a2a0001, 0x692b0001, 0x682c0001, + 0x672d0001, 0x662e0001, 0x652f0001, 0x64300001, 0x63310001, + 0x62320001, 0x61330001, 0x46340001, 0x45350001, 0x44360001, + 0x43370001, 0x42380001, 0x41390001, 0x403a0001, 0x403b0001, + 0x403c0001, 0x403d0001, 0x403e0001, 0x403f0001, 0xfb400001, + 0xfb410001, 0xfb420001, 0xfb430001, 0xfb440001, 0xfb450001, + 0xfb460001, 0xfb470001, 0xfb480001, 0xfa490001, 0xf94a0001, + 0xf84B0001, 0xf74c0001, 0xf64d0001, 0xf54e0001, 0xf44f0001, + 0xf3500001, 0xf2510001, 0xf1520001, 0xf0530001, 0xef540001, + 0xee550001, 0xed560001, 0xec570001, 0xeb580001, 0xea590001, + 0xe95a0001, 0xe85b0001, 0xe75c0001, 0xe65d0001, 0xe55e0001, + 0xe45f0001, 0xe3600001, 0xe2610001, 0xc3620001, 0xc2630001, + 0xc1640001, 0x8b650001, 0x8a660001, 0x89670001, 0x88680001, + 0x87690001, 0x866a0001, 0x856b0001, 0x846c0001, 0x676d0001, + 0x666e0001, 0x656f0001, 0x64700001, 0x63710001, 0x62720001, + 0x61730001, 0x60740001, 0x46750001, 0x45760001, 0x44770001, + 0x43780001, 0x42790001, 0x417a0001, 0x407b0001, 0x407c0001, + 0x407d0001, 0x407e0001, 0x407f0001 +}; + +static const struct rtwn_agc_prog rtl8188eu_agc[] = { + { + nitems(rtl8188eu_agc_vals), + rtl8188eu_agc_vals, + { 0 }, + NULL + } +}; + +/* + * RF initialization values. + */ +static const uint8_t rtl8188eu_rf_regs[] = { + 0x00, 0x08, 0x18, 0x19, 0x1e, 0x1f, 0x2f, 0x3f, 0x42, 0x57, + 0x58, 0x67, 0x83, 0xb0, 0xb1, 0xb2, 0xb4, 0xb6, 0xb7, 0xb8, + 0xb9, 0xba, 0xbb, 0xbf, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xdf, 0xef, 0x51, 0x52, 0x53, 0x56, + 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0xb6, 0x18, 0x5a, + 0x19, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, + 0x34, 0x34, 0x00, 0x84, 0x86, 0x87, 0x8e, 0x8f, 0xef, 0x3b, + 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, + 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xef, 0x00, 0x18, 0xfe, 0xfe, + 0x1f, 0xfe, 0xfe, 0x1e, 0x1f, 0x00 +}; + +static const uint32_t rtl8188eu_rf_vals[] = { + 0x30000, 0x84000, 0x00407, 0x00012, 0x80009, 0x00880, 0x1a060, + 0x00000, 0x060c0, 0xd0000, 0xbe180, 0x01552, 0x00000, 0xff8fc, + 0x54400, 0xccc19, 0x43003, 0x4953e, 0x1c718, 0x060ff, 0x80001, + 0x40000, 0x00400, 0xc0000, 0x02400, 0x00009, 0x40c91, 0x99999, + 0x000a3, 0x88820, 0x76c06, 0x00000, 0x80000, 0x00180, 0x001a0, + 0x6b27d, 0x7e49d, 0x00073, 0x51ff3, 0x00086, 0x00186, + 0x00286, 0x01c25, 0x09c25, 0x11c25, 0x19c25, 0x48538, 0x00c07, + 0x4bd00, 0x739d0, 0x0adf3, 0x09df0, 0x08ded, 0x07dea, 0x06de7, + 0x054ee, 0x044eb, 0x034e8, 0x0246b, 0x01468, 0x0006d, 0x30159, + 0x68200, 0x000ce, 0x48a00, 0x65540, 0x88000, 0x020a0, 0xf02b0, + 0xef7b0, 0xd4fb0, 0xcf060, 0xb0090, 0xa0080, 0x90080, 0x8f780, + 0x722b0, 0x6f7b0, 0x54fb0, 0x4f060, 0x30090, 0x20080, 0x10080, + 0x0f780, 0x000a0, 0x10159, 0x0f407, 0x0c350, 0x0c350, 0x80003, + 0x0c350, 0x0c350, 0x00001, 0x80000, 0x33e60 +}; + +static const struct rtwn_rf_prog rtl8188eu_rf[] = { + { + nitems(rtl8188eu_rf_regs), + rtl8188eu_rf_regs, + rtl8188eu_rf_vals, + { 0 }, + NULL + }, + { 0, NULL, NULL, { 0 }, NULL } +}; + + +struct rtwn_r88e_txagc { + uint8_t pwr[R88E_GROUP_2G][20]; /* RTWN_RIDX_MCS(7) + 1 */ +}; + +/* + * Per RF chain/group/rate Tx gain values. + */ +static const struct rtwn_r88e_txagc r88e_txagc[] = { + { { /* Chain 0. */ + { /* Group 0. */ + 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ + }, + { /* Group 1. */ + 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ + }, + { /* Group 2. */ + 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ + }, + { /* Group 3. */ + 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ + }, + { /* Group 4. */ + 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ + }, + { /* Group 5. */ + 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ + } + } } +}; + +#endif /* R88E_PRIV_H */ diff --git a/sys/dev/rtwn/rtl8188e/r88e_reg.h b/sys/dev/rtwn/rtl8188e/r88e_reg.h new file mode 100644 index 000000000000..f6f26fa4515a --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/r88e_reg.h @@ -0,0 +1,91 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef R88E_REG_H +#define R88E_REG_H + +#include + +/* + * MAC registers. + */ +/* System Configuration. */ +#define R88E_BB_PAD_CTRL 0x064 +#define R88E_HIMR 0x0b0 +#define R88E_HISR 0x0b4 +#define R88E_HIMRE 0x0b8 +#define R88E_HISRE 0x0bc +/* MAC General Configuration. */ +#define R88E_32K_CTRL 0x194 +#define R88E_HMEBOX_EXT(idx) (0x1f0 + (idx) * 4) +/* Protocol Configuration. */ +#define R88E_TXPKTBUF_BCNQ1_BDNY 0x457 +#define R88E_MACID_NO_LINK 0x484 +#define R88E_TX_RPT_CTRL 0x4ec +#define R88E_TX_RPT_MACID_MAX 0x4ed +#define R88E_TX_RPT_TIME 0x4f0 +#define R88E_SCH_TXCMD 0x5f8 + + +/* Bits for R88E_HIMR. */ +#define R88E_HIMR_CPWM 0x00000100 +#define R88E_HIMR_CPWM2 0x00000200 +#define R88E_HIMR_TBDER 0x04000000 +#define R88E_HIMR_PSTIMEOUT 0x20000000 + +/* Bits for R88E_HIMRE.*/ +#define R88E_HIMRE_RXFOVW 0x00000100 +#define R88E_HIMRE_TXFOVW 0x00000200 +#define R88E_HIMRE_RXERR 0x00000400 +#define R88E_HIMRE_TXERR 0x00000800 + +/* Bits for R88E_TX_RPT_CTRL. */ +#define R88E_TX_RPT1_ENA 0x01 +#define R88E_TX_RPT2_ENA 0x02 + +/* Bits for R92C_MBID_NUM. */ +#define R88E_MBID_TXBCN_RPT(id) (0x08 << (id)) + +/* Bits for R92C_SECCFG. */ +#define R88E_SECCFG_CHK_KEYID 0x0100 + + +/* + * Baseband registers. + */ +/* Bits for R92C_LSSI_PARAM(i). */ +#define R88E_LSSI_PARAM_ADDR_M 0x0ff00000 +#define R88E_LSSI_PARAM_ADDR_S 20 + + +/* + * RF (6052) registers. + */ +#define R88E_RF_T_METER 0x42 + +/* Bits for R92C_RF_CHNLBW. */ +#define R88E_RF_CHNLBW_BW20 0x00c00 + +/* Bits for R88E_RF_T_METER. */ +#define R88E_RF_T_METER_VAL_M 0x0fc00 +#define R88E_RF_T_METER_VAL_S 10 +#define R88E_RF_T_METER_START 0x30000 + +#endif /* R88E_REG_H */ diff --git a/sys/dev/rtwn/rtl8188e/r88e_rf.c b/sys/dev/rtwn/rtl8188e/r88e_rf.c new file mode 100644 index 000000000000..a836f138aeb5 --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/r88e_rf.c @@ -0,0 +1,60 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + + +void +r88e_rf_write(struct rtwn_softc *sc, int chain, uint8_t addr, uint32_t val) +{ + rtwn_bb_write(sc, R92C_LSSI_PARAM(chain), + SM(R88E_LSSI_PARAM_ADDR, addr) | + SM(R92C_LSSI_PARAM_DATA, val)); +} diff --git a/sys/dev/rtwn/rtl8188e/r88e_rom.c b/sys/dev/rtwn/rtl8188e/r88e_rom.c new file mode 100644 index 000000000000..b12d7db83d42 --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/r88e_rom.c @@ -0,0 +1,85 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include + +#include +#include +#include + + +void +r88e_parse_rom(struct rtwn_softc *sc, uint8_t *buf) +{ + struct r92c_softc *rs = sc->sc_priv; + struct rtwn_r88e_txpwr *rt = rs->rs_txpwr; + struct r88e_rom *rom = (struct r88e_rom *)buf; + int i; + + rt->bw20_tx_pwr_diff = RTWN_SIGN4TO8(MS(rom->tx_pwr_diff, HIGH_PART)); + rt->ofdm_tx_pwr_diff = RTWN_SIGN4TO8(MS(rom->tx_pwr_diff, LOW_PART)); + for (i = 0; i < nitems(rom->cck_tx_pwr); i++) + rt->cck_tx_pwr[i] = rom->cck_tx_pwr[i]; + for (i = 0; i < nitems(rom->ht40_tx_pwr); i++) + rt->ht40_tx_pwr[i] = rom->ht40_tx_pwr[i]; + + rs->crystalcap = RTWN_GET_ROM_VAR(rom->crystalcap, + R88E_ROM_CRYSTALCAP_DEF); + rs->regulatory = MS(rom->rf_board_opt, R92C_ROM_RF1_REGULATORY); + rs->board_type = + MS(RTWN_GET_ROM_VAR(rom->rf_board_opt, R92C_BOARD_TYPE_DONGLE), + R92C_ROM_RF1_BOARD_TYPE); + RTWN_DPRINTF(sc, RTWN_DEBUG_ROM, "%s: regulatory type %d\n", + __func__,rs->regulatory); + + sc->thermal_meter = rom->thermal_meter; + IEEE80211_ADDR_COPY(sc->sc_ic.ic_macaddr, rom->macaddr); +} diff --git a/sys/dev/rtwn/rtl8188e/r88e_rom_defs.h b/sys/dev/rtwn/rtl8188e/r88e_rom_defs.h new file mode 100644 index 000000000000..5734246fae70 --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/r88e_rom_defs.h @@ -0,0 +1,29 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef R88E_ROM_DEFS_H +#define R88E_ROM_DEFS_H + +#include + +#define R88E_GROUP_2G 6 + +#define R88E_EFUSE_MAX_LEN 512 +#define R88E_EFUSE_MAP_LEN 512 + +#endif /* R88E_ROM_DEFS_H */ diff --git a/sys/dev/rtwn/rtl8188e/r88e_rom_image.h b/sys/dev/rtwn/rtl8188e/r88e_rom_image.h new file mode 100644 index 000000000000..c80028e00d6b --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/r88e_rom_image.h @@ -0,0 +1,60 @@ +/*- + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef R88E_ROM_IMAGE_H +#define R88E_ROM_IMAGE_H + +#include + +/* + * RTL8188EU ROM image. + */ +struct r88e_rom { + uint8_t reserved1[16]; + uint8_t cck_tx_pwr[R88E_GROUP_2G]; + uint8_t ht40_tx_pwr[R88E_GROUP_2G - 1]; + uint8_t tx_pwr_diff; + uint8_t reserved2[156]; + uint8_t channel_plan; + uint8_t crystalcap; +#define R88E_ROM_CRYSTALCAP_DEF 0x20 + + uint8_t thermal_meter; + uint8_t reserved3[6]; + uint8_t rf_board_opt; + uint8_t rf_feature_opt; + uint8_t rf_bt_opt; + uint8_t version; + uint8_t customer_id; + uint8_t reserved4[3]; + uint8_t rf_ant_opt; + uint8_t reserved5[6]; + uint16_t vid; + uint16_t pid; + uint8_t usb_opt; + uint8_t reserved6[2]; + uint8_t macaddr[IEEE80211_ADDR_LEN]; + uint8_t reserved7[2]; + uint8_t string[33]; /* "realtek 802.11n NIC" */ + uint8_t reserved8[256]; +} __packed; + +_Static_assert(sizeof(struct r88e_rom) == R88E_EFUSE_MAP_LEN, + "R88E_EFUSE_MAP_LEN must be equal to sizeof(struct r88e_rom)!"); + +#endif /* R88E_ROM_IMAGE_H */ diff --git a/sys/dev/rtwn/rtl8188e/r88e_rx.c b/sys/dev/rtwn/rtl8188e/r88e_rx.c new file mode 100644 index 000000000000..3f31393deb74 --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/r88e_rx.c @@ -0,0 +1,211 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + + +void +r88e_ratectl_tx_complete(struct rtwn_softc *sc, uint8_t *buf, int len) +{ +#if __FreeBSD_version >= 1200012 + struct ieee80211_ratectl_tx_status txs; +#endif + struct r88e_tx_rpt_ccx *rpt; + struct ieee80211_node *ni; + uint8_t macid; + int ntries; + + /* Skip Rx descriptor. */ + buf += sizeof(struct r92c_rx_stat); + len -= sizeof(struct r92c_rx_stat); + + rpt = (struct r88e_tx_rpt_ccx *)buf; + if (len != sizeof(*rpt)) { + RTWN_DPRINTF(sc, RTWN_DEBUG_INTR, + "%s: wrong report size (%d, must be %zu)\n", + __func__, len, sizeof(*rpt)); + return; + } + + RTWN_DPRINTF(sc, RTWN_DEBUG_INTR, + "%s: ccx report dump: 0: %02X, 1: %02X, 2: %02X, queue time: " + "low %02X, high %02X, final ridx: %02X, 6: %02X, 7: %02X\n", + __func__, rpt->rptb0, rpt->rptb1, rpt->rptb2, rpt->queue_time_low, + rpt->queue_time_high, rpt->final_rate, rpt->rptb6, rpt->rptb7); + + macid = MS(rpt->rptb1, R88E_RPTB1_MACID); + if (macid > sc->macid_limit) { + device_printf(sc->sc_dev, + "macid %u is too big; increase MACID_MAX limit\n", + macid); + return; + } + + ntries = MS(rpt->rptb2, R88E_RPTB2_RETRY_CNT); + + ni = sc->node_list[macid]; + if (ni != NULL) { + RTWN_DPRINTF(sc, RTWN_DEBUG_INTR, "%s: frame for macid %u was" + "%s sent (%d retries)\n", __func__, macid, + (rpt->rptb1 & R88E_RPTB1_PKT_OK) ? "" : " not", + ntries); + +#if __FreeBSD_version >= 1200012 + txs.flags = IEEE80211_RATECTL_STATUS_LONG_RETRY | + IEEE80211_RATECTL_STATUS_FINAL_RATE; + txs.long_retries = ntries; + if (rpt->final_rate > RTWN_RIDX_OFDM54) { /* MCS */ + txs.final_rate = + (rpt->final_rate - 12) | IEEE80211_RATE_MCS; + } else + txs.final_rate = ridx2rate[rpt->final_rate]; + if (rpt->rptb1 & R88E_RPTB1_PKT_OK) + txs.status = IEEE80211_RATECTL_TX_SUCCESS; + else if (rpt->rptb2 & R88E_RPTB2_RETRY_OVER) + txs.status = IEEE80211_RATECTL_TX_FAIL_LONG; + else if (rpt->rptb2 & R88E_RPTB2_LIFE_EXPIRE) + txs.status = IEEE80211_RATECTL_TX_FAIL_EXPIRED; + else + txs.status = IEEE80211_RATECTL_TX_FAIL_UNSPECIFIED; + ieee80211_ratectl_tx_complete(ni, &txs); +#else + struct ieee80211vap *vap = ni->ni_vap; + if (rpt->rptb1 & R88E_RPTB1_PKT_OK) { + ieee80211_ratectl_tx_complete(vap, ni, + IEEE80211_RATECTL_TX_SUCCESS, &ntries, NULL); + } else { + ieee80211_ratectl_tx_complete(vap, ni, + IEEE80211_RATECTL_TX_FAILURE, &ntries, NULL); + } +#endif + } else { + RTWN_DPRINTF(sc, RTWN_DEBUG_INTR, "%s: macid %u, ni is NULL\n", + __func__, macid); + } +} + +void +r88e_handle_c2h_report(struct rtwn_softc *sc, uint8_t *buf, int len) +{ + + /* Skip Rx descriptor. */ + buf += sizeof(struct r92c_rx_stat); + len -= sizeof(struct r92c_rx_stat); + + if (len != R88E_INTR_MSG_LEN) { + RTWN_DPRINTF(sc, RTWN_DEBUG_INTR, + "%s: wrong interrupt message size (%d, must be %d)\n", + __func__, len, R88E_INTR_MSG_LEN); + return; + } + + /* XXX TODO */ +} + +int8_t +r88e_get_rssi_cck(struct rtwn_softc *sc, void *physt) +{ + struct r88e_rx_phystat *phy = (struct r88e_rx_phystat *)physt; + int8_t lna_idx, vga_idx, rssi; + + lna_idx = (phy->agc_rpt & 0xe0) >> 5; + vga_idx = (phy->agc_rpt & 0x1f); + rssi = 6 - 2 * vga_idx; + + switch (lna_idx) { + case 7: + if (vga_idx > 27) + rssi = -100 + 6; + else + rssi += -100 + 2 * 27; + break; + case 6: + rssi += -48 + 2 * 2; + break; + case 5: + rssi += -42 + 2 * 7; + break; + case 4: + rssi += -36 + 2 * 7; + break; + case 3: + rssi += -24 + 2 * 7; + break; + case 2: + rssi += -6 + 2 * 5; + if (sc->sc_flags & RTWN_FLAG_CCK_HIPWR) + rssi -= 6; + break; + case 1: + rssi += 8; + break; + case 0: + rssi += 14; + break; + } + + return (rssi); +} + +int8_t +r88e_get_rssi_ofdm(struct rtwn_softc *sc, void *physt) +{ + struct r88e_rx_phystat *phy = (struct r88e_rx_phystat *)physt; + int rssi; + + /* Get average RSSI. */ + rssi = ((phy->sig_qual >> 1) & 0x7f) - 110; + + return (rssi); +} diff --git a/sys/dev/rtwn/rtl8188e/r88e_rx_desc.h b/sys/dev/rtwn/rtl8188e/r88e_rx_desc.h new file mode 100644 index 000000000000..2b72f3dd79b4 --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/r88e_rx_desc.h @@ -0,0 +1,100 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef R88E_RX_DESC_H +#define R88E_RX_DESC_H + +#include + +/* Rx MAC descriptor defines (chip-specific). */ +/* Rx dword 3 */ +#define R88E_RXDW3_RPT_M 0x0000c000 +#define R88E_RXDW3_RPT_S 14 +#define R88E_RXDW3_RPT_RX 0 +#define R88E_RXDW3_RPT_TX1 1 +#define R88E_RXDW3_RPT_TX2 2 +#define R88E_RXDW3_RPT_HIS 3 + +/* Rx PHY descriptor. */ +struct r88e_rx_phystat { + uint8_t path_agc[2]; + uint8_t chan; + uint8_t reserved1; + uint8_t sig_qual; + uint8_t agc_rpt; + uint8_t rpt_b; + uint8_t reserved2; + uint8_t noise_power; + uint8_t path_cfotail[2]; + uint8_t pcts_mask[2]; + uint8_t stream_rxevm[2]; + uint8_t path_rxsnr[2]; + uint8_t noise_power_db_lsb; + uint8_t reserved3[3]; + uint8_t stream_csi[2]; + uint8_t stream_target_csi[2]; + uint8_t sig_evm; +} __packed; + +/* Tx report (type 1). */ +struct r88e_tx_rpt_ccx { + uint8_t rptb0; +#define R88E_RPTB6_PKT_NUM_M 0x0e +#define R88E_RPTB6_PKT_NUM_S 1 +#define R88E_RPTB0_INT_CCX 0x80 + + uint8_t rptb1; +#define R88E_RPTB1_MACID_M 0x3f +#define R88E_RPTB1_MACID_S 0 +#define R88E_RPTB1_PKT_OK 0x40 +#define R88E_RPTB1_BMC 0x80 + + uint8_t rptb2; +#define R88E_RPTB2_RETRY_CNT_M 0x3f +#define R88E_RPTB2_RETRY_CNT_S 0 +#define R88E_RPTB2_LIFE_EXPIRE 0x40 +#define R88E_RPTB2_RETRY_OVER 0x80 + + uint8_t queue_time_low; + uint8_t queue_time_high; + uint8_t final_rate; + uint8_t rptb6; +#define R88E_RPTB6_QSEL_M 0xf0 +#define R88E_RPTB6_QSEL_S 4 + + uint8_t rptb7; +} __packed; + +/* Interrupt message format. */ +/* XXX recheck */ +struct r88e_intr_msg { + uint8_t c2h_id; + uint8_t c2h_seq; + uint8_t c2h_evt; + uint8_t reserved1[13]; + uint8_t cpwm1; + uint8_t reserved2[3]; + uint8_t cpwm2; + uint8_t reserved3[27]; + uint32_t hisr; + uint32_t hisr_ex; +}; + +#endif /* R88E_RX_DESC_H */ diff --git a/sys/dev/rtwn/rtl8188e/r88e_tx.c b/sys/dev/rtwn/rtl8188e/r88e_tx.c new file mode 100644 index 000000000000..dd3aaecefa44 --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/r88e_tx.c @@ -0,0 +1,79 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + + +void +r88e_tx_enable_ampdu(void *buf, int enable) +{ + struct r92c_tx_desc *txd = (struct r92c_tx_desc *)buf; + + if (enable) + txd->txdw2 |= htole32(R88E_TXDW2_AGGEN); + else + txd->txdw2 |= htole32(R88E_TXDW2_AGGBK); +} + +void +r88e_tx_setup_hwseq(void *buf) +{ + struct r92c_tx_desc *txd = (struct r92c_tx_desc *)buf; + + txd->txdseq |= htole16(R88E_TXDSEQ_HWSEQ_EN); +} + +void +r88e_tx_setup_macid(void *buf, int id) +{ + struct r92c_tx_desc *txd = (struct r92c_tx_desc *)buf; + + txd->txdw1 |= htole32(SM(R88E_TXDW1_MACID, id)); +} diff --git a/sys/dev/rtwn/rtl8188e/r88e_tx_desc.h b/sys/dev/rtwn/rtl8188e/r88e_tx_desc.h new file mode 100644 index 000000000000..98338fb732f3 --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/r88e_tx_desc.h @@ -0,0 +1,38 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef R88E_TX_DESC_H +#define R88E_TX_DESC_H + +#include + +/* Tx MAC descriptor defines (chip-specific). */ +/* Tx dword 1. */ +#define R88E_TXDW1_MACID_M 0x0000003f +#define R88E_TXDW1_MACID_S 0 + +/* Tx dword 2. */ +#define R88E_TXDW2_AGGEN 0x00001000 +#define R88E_TXDW2_AGGBK 0x00010000 + +/* Tx dword 3. */ +#define R88E_TXDSEQ_HWSEQ_EN 0x8000 + +#endif /* R88E_TX_DESC_H */ diff --git a/sys/dev/rtwn/rtl8188e/usb/r88eu.h b/sys/dev/rtwn/rtl8188e/usb/r88eu.h new file mode 100644 index 000000000000..85b637cb7cc2 --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/usb/r88eu.h @@ -0,0 +1,39 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef RTL8188EU_H +#define RTL8188EU_H + +#include + + +/* + * Function declarations. + */ +/* r88eu_init.c */ +void r88eu_power_off(struct rtwn_softc *); +void r88eu_init_intr(struct rtwn_softc *); +void r88eu_init_rx_agg(struct rtwn_softc *); +void r88eu_post_init(struct rtwn_softc *); + +/* r88eu_rx.c */ +int r88eu_classify_intr(struct rtwn_softc *, void *, int); + +#endif /* RTL8188EU_H */ diff --git a/sys/dev/rtwn/rtl8188e/usb/r88eu_attach.c b/sys/dev/rtwn/rtl8188e/usb/r88eu_attach.c new file mode 100644 index 000000000000..aabdeb151ee0 --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/usb/r88eu_attach.c @@ -0,0 +1,216 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include + +#include +#include + +#include +#include + +#include + +#include + + +static struct rtwn_r88e_txpwr r88e_txpwr; + +void r88eu_attach(struct rtwn_usb_softc *); + +static void +r88e_postattach(struct rtwn_softc *sc) +{ + struct r92c_softc *rs = sc->sc_priv; + struct ieee80211com *ic = &sc->sc_ic; + + rs->rs_scan_start = ic->ic_scan_start; + ic->ic_scan_start = r92c_scan_start; + rs->rs_scan_end = ic->ic_scan_end; + ic->ic_scan_end = r92c_scan_end; +} + +static void +r88eu_attach_private(struct rtwn_softc *sc) +{ + struct r92c_softc *rs; + + rs = malloc(sizeof(struct r92c_softc), M_RTWN_PRIV, M_WAITOK | M_ZERO); + + rs->rs_txpwr = &r88e_txpwr; + rs->rs_txagc = &r88e_txagc; + + rs->rs_set_bw20 = r88e_set_bw20; + rs->rs_get_txpower = r88e_get_txpower; + rs->rs_set_gain = r88e_set_gain; + rs->rs_tx_enable_ampdu = r88e_tx_enable_ampdu; + rs->rs_tx_setup_hwseq = r88e_tx_setup_hwseq; + rs->rs_tx_setup_macid = r88e_tx_setup_macid; + rs->rs_set_name = rtwn_nop_softc; /* not used */ + + rs->rf_read_delay[0] = 10; + rs->rf_read_delay[1] = 100; + rs->rf_read_delay[2] = 10; + + sc->sc_priv = rs; +} + +static void +r88eu_adj_devcaps(struct rtwn_softc *sc) +{ + /* XXX TODO? */ +} + +void +r88eu_attach(struct rtwn_usb_softc *uc) +{ + struct rtwn_softc *sc = &uc->uc_sc; + + /* USB part. */ + uc->uc_align_rx = r92cu_align_rx; + uc->tx_agg_desc_num = 6; + + /* Common part. */ + sc->sc_flags = RTWN_FLAG_EXT_HDR; + + sc->sc_set_chan = r92c_set_chan; + sc->sc_fill_tx_desc = r92c_fill_tx_desc; + sc->sc_fill_tx_desc_raw = r92c_fill_tx_desc_raw; + sc->sc_fill_tx_desc_null = r92c_fill_tx_desc_null; + sc->sc_dump_tx_desc = r92cu_dump_tx_desc; + sc->sc_tx_radiotap_flags = r92c_tx_radiotap_flags; + sc->sc_rx_radiotap_flags = r92c_rx_radiotap_flags; + sc->sc_get_rssi_cck = r88e_get_rssi_cck; + sc->sc_get_rssi_ofdm = r88e_get_rssi_ofdm; + sc->sc_classify_intr = r88eu_classify_intr; + sc->sc_handle_tx_report = r88e_ratectl_tx_complete; + sc->sc_handle_c2h_report = r88e_handle_c2h_report; + sc->sc_check_frame = rtwn_nop_int_softc_mbuf; + sc->sc_rf_read = r92c_rf_read; + sc->sc_rf_write = r88e_rf_write; + sc->sc_check_condition = r92c_check_condition; + sc->sc_efuse_postread = rtwn_nop_softc; + sc->sc_parse_rom = r88e_parse_rom; + sc->sc_set_led = r88e_set_led; + sc->sc_power_on = r88e_power_on; + sc->sc_power_off = r88eu_power_off; +#ifndef RTWN_WITHOUT_UCODE + sc->sc_fw_reset = r88e_fw_reset; + sc->sc_fw_download_enable = r88e_fw_download_enable; +#endif + sc->sc_set_page_size = r92c_set_page_size; + sc->sc_lc_calib = r92c_lc_calib; + sc->sc_iq_calib = r88e_iq_calib; /* XXX TODO */ + sc->sc_read_chipid_vendor = rtwn_nop_softc_uint32; + sc->sc_adj_devcaps = r88eu_adj_devcaps; + sc->sc_vap_preattach = rtwn_nop_softc_vap; + sc->sc_postattach = r88e_postattach; + sc->sc_detach_private = r92c_detach_private; + sc->sc_set_media_status = r88e_set_media_status; +#ifndef RTWN_WITHOUT_UCODE + sc->sc_set_rsvd_page = r88e_set_rsvd_page; + sc->sc_set_pwrmode = r88e_set_pwrmode; + sc->sc_set_rssi = rtwn_nop_softc; /* XXX TODO? */ +#endif + sc->sc_beacon_init = r92c_beacon_init; + sc->sc_beacon_enable = r88e_beacon_enable; + sc->sc_beacon_set_rate = rtwn_nop_void_int; + sc->sc_beacon_select = rtwn_nop_softc_int; + sc->sc_temp_measure = r88e_temp_measure; + sc->sc_temp_read = r88e_temp_read; + sc->sc_init_tx_agg = r92cu_init_tx_agg; + sc->sc_init_rx_agg = r88eu_init_rx_agg; + sc->sc_init_ampdu = rtwn_nop_softc; + sc->sc_init_intr = r88eu_init_intr; + sc->sc_init_edca = r92c_init_edca; + sc->sc_init_bb = r88e_init_bb; + sc->sc_init_rf = r92c_init_rf_common; + sc->sc_init_antsel = rtwn_nop_softc; + sc->sc_post_init = r88eu_post_init; + sc->sc_init_bcnq1_boundary = rtwn_nop_int_softc; + + sc->mac_prog = &rtl8188eu_mac[0]; + sc->mac_size = nitems(rtl8188eu_mac); + sc->bb_prog = &rtl8188eu_bb[0]; + sc->bb_size = nitems(rtl8188eu_bb); + sc->agc_prog = &rtl8188eu_agc[0]; + sc->agc_size = nitems(rtl8188eu_agc); + sc->rf_prog = &rtl8188eu_rf[0]; + + sc->name = "RTL8188EU"; + sc->fwname = "rtwn-rtl8188eufw"; + sc->fwsig = 0x88e; + + sc->page_count = R88E_TX_PAGE_COUNT; + sc->pktbuf_count = R88E_TXPKTBUF_COUNT; + + sc->ackto = 0x40; + sc->npubqpages = R88E_PUBQ_NPAGES; + sc->page_size = R92C_TX_PAGE_SIZE; + + sc->txdesc_len = sizeof(struct r92cu_tx_desc); + sc->efuse_maxlen = R88E_EFUSE_MAX_LEN; + sc->efuse_maplen = R88E_EFUSE_MAP_LEN; + sc->rx_dma_size = R88E_RX_DMA_BUFFER_SIZE; + + sc->macid_limit = R88E_MACID_MAX + 1; + sc->cam_entry_limit = R92C_CAM_ENTRY_COUNT; + sc->fwsize_limit = R92C_MAX_FW_SIZE; + sc->temp_delta = R88E_CALIB_THRESHOLD; + + sc->bcn_status_reg[0] = R92C_TDECTRL; + sc->bcn_status_reg[1] = R92C_TDECTRL; + sc->rcr = 0; + + sc->ntxchains = 1; + sc->nrxchains = 1; + + r88eu_attach_private(sc); +} diff --git a/sys/dev/rtwn/rtl8188e/usb/r88eu_init.c b/sys/dev/rtwn/rtl8188e/usb/r88eu_init.c new file mode 100644 index 000000000000..318a827e6fe9 --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/usb/r88eu_init.c @@ -0,0 +1,227 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include + + +void +r88eu_power_off(struct rtwn_softc *sc) +{ + uint8_t reg; + int error, ntries; + + /* Disable any kind of TX reports. */ + error = rtwn_setbits_1(sc, R88E_TX_RPT_CTRL, + R88E_TX_RPT1_ENA | R88E_TX_RPT2_ENA, 0); + if (error == ENXIO) /* hardware gone */ + return; + + /* Stop Rx. */ + rtwn_write_1(sc, R92C_CR, 0); + + /* Move card to Low Power State. */ + /* Block all Tx queues. */ + rtwn_write_1(sc, R92C_TXPAUSE, R92C_TX_QUEUE_ALL); + + for (ntries = 0; ntries < 10; ntries++) { + /* Should be zero if no packet is transmitting. */ + if (rtwn_read_4(sc, R88E_SCH_TXCMD) == 0) + break; + + rtwn_delay(sc, 5000); + } + if (ntries == 10) { + device_printf(sc->sc_dev, "%s: failed to block Tx queues\n", + __func__); + return; + } + + /* CCK and OFDM are disabled, and clock are gated. */ + rtwn_setbits_1(sc, R92C_SYS_FUNC_EN, R92C_SYS_FUNC_EN_BBRSTB, 0); + + rtwn_delay(sc, 1); + + /* Reset MAC TRX */ + rtwn_write_1(sc, R92C_CR, + R92C_CR_HCI_TXDMA_EN | R92C_CR_HCI_RXDMA_EN | + R92C_CR_TXDMA_EN | R92C_CR_RXDMA_EN | + R92C_CR_PROTOCOL_EN | R92C_CR_SCHEDULE_EN); + + /* check if removed later */ + rtwn_setbits_1_shift(sc, R92C_CR, R92C_CR_ENSEC, 0, 1); + + /* Respond TxOK to scheduler */ + rtwn_setbits_1(sc, R92C_DUAL_TSF_RST, 0, 0x20); + + /* If firmware in ram code, do reset. */ +#ifndef RTWN_WITHOUT_UCODE + if (rtwn_read_1(sc, R92C_MCUFWDL) & R92C_MCUFWDL_RDY) + r88e_fw_reset(sc, RTWN_FW_RESET_SHUTDOWN); +#endif + + /* Reset MCU ready status. */ + rtwn_write_1(sc, R92C_MCUFWDL, 0); + + /* Disable 32k. */ + rtwn_setbits_1(sc, R88E_32K_CTRL, 0x01, 0); + + /* Move card to Disabled state. */ + /* Turn off RF. */ + rtwn_write_1(sc, R92C_RF_CTRL, 0); + + /* LDO Sleep mode. */ + rtwn_setbits_1(sc, R92C_LPLDO_CTRL, 0, R92C_LPLDO_CTRL_SLEEP); + + /* Turn off MAC by HW state machine */ + rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, 0, + R92C_APS_FSMCO_APFM_OFF, 1); + + for (ntries = 0; ntries < 10; ntries++) { + /* Wait until it will be disabled. */ + if ((rtwn_read_2(sc, R92C_APS_FSMCO) & + R92C_APS_FSMCO_APFM_OFF) == 0) + break; + + rtwn_delay(sc, 5000); + } + if (ntries == 10) { + device_printf(sc->sc_dev, "%s: could not turn off MAC\n", + __func__); + return; + } + + /* schmit trigger */ + rtwn_setbits_1(sc, R92C_AFE_XTAL_CTRL + 2, 0, 0x80); + + /* Enable WL suspend. */ + rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, + R92C_APS_FSMCO_AFSM_PCIE, R92C_APS_FSMCO_AFSM_HSUS, 1); + + /* Enable bandgap mbias in suspend. */ + rtwn_write_1(sc, R92C_APS_FSMCO + 3, 0); + + /* Clear SIC_EN register. */ + rtwn_setbits_1(sc, R92C_GPIO_MUXCFG + 1, 0x10, 0); + + /* Set USB suspend enable local register */ + rtwn_setbits_1(sc, R92C_USB_SUSPEND, 0, 0x10); + + /* Reset MCU IO Wrapper. */ + reg = rtwn_read_1(sc, R92C_RSV_CTRL + 1); + rtwn_write_1(sc, R92C_RSV_CTRL + 1, reg & ~0x08); + rtwn_write_1(sc, R92C_RSV_CTRL + 1, reg | 0x08); + + /* marked as 'For Power Consumption' code. */ + rtwn_write_1(sc, R92C_GPIO_OUT, rtwn_read_1(sc, R92C_GPIO_IN)); + rtwn_write_1(sc, R92C_GPIO_IOSEL, 0xff); + + rtwn_write_1(sc, R92C_GPIO_IO_SEL, + rtwn_read_1(sc, R92C_GPIO_IO_SEL) << 4); + rtwn_setbits_1(sc, R92C_GPIO_MOD, 0, 0x0f); + + /* Set LNA, TRSW, EX_PA Pin to output mode. */ + rtwn_write_4(sc, R88E_BB_PAD_CTRL, 0x00080808); +} + +void +r88eu_init_intr(struct rtwn_softc *sc) +{ + /* TODO: adjust */ + rtwn_write_4(sc, R88E_HISR, 0xffffffff); + rtwn_write_4(sc, R88E_HIMR, R88E_HIMR_CPWM | R88E_HIMR_CPWM2 | + R88E_HIMR_TBDER | R88E_HIMR_PSTIMEOUT); + rtwn_write_4(sc, R88E_HIMRE, R88E_HIMRE_RXFOVW | + R88E_HIMRE_TXFOVW | R88E_HIMRE_RXERR | R88E_HIMRE_TXERR); + rtwn_setbits_1(sc, R92C_USB_SPECIAL_OPTION, 0, + R92C_USB_SPECIAL_OPTION_INT_BULK_SEL); +} + +void +r88eu_init_rx_agg(struct rtwn_softc *sc) +{ + /* XXX merge? */ + rtwn_setbits_1(sc, R92C_TRXDMA_CTRL, 0, + R92C_TRXDMA_CTRL_RXDMA_AGG_EN); + /* XXX dehardcode */ + rtwn_write_1(sc, R92C_RXDMA_AGG_PG_TH, 48); + rtwn_write_1(sc, R92C_RXDMA_AGG_PG_TH + 1, 4); +} + +void +r88eu_post_init(struct rtwn_softc *sc) +{ + /* Turn CCK and OFDM blocks on. */ + rtwn_bb_setbits(sc, R92C_FPGA0_RFMOD, 0, R92C_RFMOD_CCK_EN); + rtwn_bb_setbits(sc, R92C_FPGA0_RFMOD, 0, R92C_RFMOD_OFDM_EN); + + /* Enable per-packet TX report. */ + rtwn_setbits_1(sc, R88E_TX_RPT_CTRL, 0, R88E_TX_RPT1_ENA); + + /* Disable Tx if MACID is not associated. */ + rtwn_write_4(sc, R88E_MACID_NO_LINK, 0xffffffff); + rtwn_write_4(sc, R88E_MACID_NO_LINK + 4, 0xffffffff); + r88e_macid_enable_link(sc, RTWN_MACID_BC, 1); + + /* Perform LO and IQ calibrations. */ + r88e_iq_calib(sc); + /* Perform LC calibration. */ + r92c_lc_calib(sc); + + rtwn_write_1(sc, R92C_USB_HRPWM, 0); + + if (sc->sc_ratectl_sysctl == RTWN_RATECTL_FW) { + /* No support (yet?) for f/w rate adaptation. */ + sc->sc_ratectl = RTWN_RATECTL_NET80211; + } else + sc->sc_ratectl = sc->sc_ratectl_sysctl; +} diff --git a/sys/dev/rtwn/rtl8188e/usb/r88eu_reg.h b/sys/dev/rtwn/rtl8188e/usb/r88eu_reg.h new file mode 100644 index 000000000000..fc61eaae5851 --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/usb/r88eu_reg.h @@ -0,0 +1,27 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef R88EU_REG_H +#define R88EU_REG_H + +#include +#include + +#endif /* R88EU_REG_H */ diff --git a/sys/dev/rtwn/rtl8188e/usb/r88eu_rx.c b/sys/dev/rtwn/rtl8188e/usb/r88eu_rx.c new file mode 100644 index 000000000000..a5d26b426e7e --- /dev/null +++ b/sys/dev/rtwn/rtl8188e/usb/r88eu_rx.c @@ -0,0 +1,74 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include + +#include + + +int +r88eu_classify_intr(struct rtwn_softc *sc, void *buf, int len) +{ + struct r92c_rx_stat *stat = buf; + int report_sel = MS(le32toh(stat->rxdw3), R88E_RXDW3_RPT); + + switch (report_sel) { + case R88E_RXDW3_RPT_RX: + return (RTWN_RX_DATA); + case R88E_RXDW3_RPT_TX1: /* per-packet Tx report */ + case R88E_RXDW3_RPT_TX2: /* periodical Tx report */ + return (RTWN_RX_TX_REPORT); + case R88E_RXDW3_RPT_HIS: + return (RTWN_RX_OTHER); + default: /* shut up the compiler */ + return (RTWN_RX_DATA); + } +} diff --git a/sys/dev/rtwn/rtl8192c/pci/r92ce.h b/sys/dev/rtwn/rtl8192c/pci/r92ce.h new file mode 100644 index 000000000000..93379f8bb539 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/pci/r92ce.h @@ -0,0 +1,74 @@ +/* $OpenBSD: if_rtwnreg.h,v 1.3 2015/06/14 08:02:47 stsp Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015 Stefan Sperling + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef RTL8192CE_H +#define RTL8192CE_H + +#include + + +/* + * Global definitions. + */ +#define R92CE_PUBQ_NPAGES 176 +#define R92CE_HPQ_NPAGES 41 +#define R92CE_LPQ_NPAGES 28 +#define R92CE_TX_PAGE_COUNT \ + (R92CE_PUBQ_NPAGES + R92CE_HPQ_NPAGES + R92CE_LPQ_NPAGES) + + +/* + * Function declarations. + */ +/* r92ce_calib.c */ +void r92ce_iq_calib(struct rtwn_softc *); + +/* r92ce_fw.c */ +#ifndef RTWN_WITHOUT_UCODE +void r92ce_fw_reset(struct rtwn_softc *, int); +#endif + +/* r92ce_init.c */ +void r92ce_init_intr(struct rtwn_softc *); +void r92ce_init_edca(struct rtwn_softc *); +void r92ce_init_bb(struct rtwn_softc *); +int r92ce_power_on(struct rtwn_softc *); +void r92ce_power_off(struct rtwn_softc *); +void r92ce_init_ampdu(struct rtwn_softc *); +void r92ce_post_init(struct rtwn_softc *); + +/* r92ce_led.c */ +void r92ce_set_led(struct rtwn_softc *, int, int); + +/* r92ce_rx.c */ +int r92ce_classify_intr(struct rtwn_softc *, void *, int); +void r92ce_enable_intr(struct rtwn_pci_softc *); +void r92ce_start_xfers(struct rtwn_softc *); + +/* r92ce_tx.c */ +void r92ce_setup_tx_desc(struct rtwn_pci_softc *, void *, uint32_t); +void r92ce_tx_postsetup(struct rtwn_pci_softc *, void *, + bus_dma_segment_t[]); +void r92ce_copy_tx_desc(void *, const void *); +void r92ce_dump_tx_desc(struct rtwn_softc *, const void *); + +#endif /* RTL8192CE_H */ diff --git a/sys/dev/rtwn/rtl8192c/pci/r92ce_attach.c b/sys/dev/rtwn/rtl8192c/pci/r92ce_attach.c new file mode 100644 index 000000000000..b324d5c2022b --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/pci/r92ce_attach.c @@ -0,0 +1,263 @@ +/* $OpenBSD: if_rtwn.c,v 1.6 2015/08/28 00:03:53 deraadt Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015 Stefan Sperling + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include + +#include + +#include +#include +#include +#include + + +static struct rtwn_r92c_txpwr r92c_txpwr; + +void r92ce_attach(struct rtwn_pci_softc *); + +static void +r92ce_postattach(struct rtwn_softc *sc) +{ + struct r92c_softc *rs = sc->sc_priv; + struct ieee80211com *ic = &sc->sc_ic; + + if (!(rs->chip & R92C_CHIP_92C) && + rs->board_type == R92C_BOARD_TYPE_HIGHPA) + rs->rs_txagc = &rtl8188ru_txagc[0]; + else + rs->rs_txagc = &rtl8192cu_txagc[0]; + + if ((rs->chip & (R92C_CHIP_UMC_A_CUT | R92C_CHIP_92C)) == + R92C_CHIP_UMC_A_CUT) + sc->fwname = "rtwn-rtl8192cfwE"; + else + sc->fwname = "rtwn-rtl8192cfwE_B"; + sc->fwsig = 0x88c; + + rs->rs_scan_start = ic->ic_scan_start; + ic->ic_scan_start = r92c_scan_start; + rs->rs_scan_end = ic->ic_scan_end; + ic->ic_scan_end = r92c_scan_end; +} + +static void +r92ce_set_name(struct rtwn_softc *sc) +{ + struct r92c_softc *rs = sc->sc_priv; + + if (rs->chip & R92C_CHIP_92C) + sc->name = "RTL8192CE"; + else + sc->name = "RTL8188CE"; +} + +static void +r92ce_attach_private(struct rtwn_softc *sc) +{ + struct r92c_softc *rs; + + rs = malloc(sizeof(struct r92c_softc), M_RTWN_PRIV, M_WAITOK | M_ZERO); + + rs->rs_txpwr = &r92c_txpwr; + + rs->rs_set_bw20 = r92c_set_bw20; + rs->rs_get_txpower = r92c_get_txpower; + rs->rs_set_gain = r92c_set_gain; + rs->rs_tx_enable_ampdu = r92c_tx_enable_ampdu; + rs->rs_tx_setup_hwseq = r92c_tx_setup_hwseq; + rs->rs_tx_setup_macid = r92c_tx_setup_macid; + rs->rs_set_name = r92ce_set_name; + + /* XXX TODO: test with net80211 ratectl! */ +#ifndef RTWN_WITHOUT_UCODE + rs->rs_c2h_timeout = hz; + + callout_init_mtx(&rs->rs_c2h_report, &sc->sc_mtx, 0); +#endif + + rs->rf_read_delay[0] = 1000; + rs->rf_read_delay[1] = 1000; + rs->rf_read_delay[2] = 1000; + + sc->sc_priv = rs; +} + +static void +r92ce_adj_devcaps(struct rtwn_softc *sc) +{ + struct ieee80211com *ic = &sc->sc_ic; + + /* XXX TODO: test everything that removed here before enabling. */ + /* XX do NOT enable PMGT until RSVD_PAGE command will not be fixed. */ + ic->ic_caps &= ~( + IEEE80211_C_IBSS /* check beaconing / tsf */ + | IEEE80211_C_HOSTAP /* the same */ + | IEEE80211_C_PMGT /* check null frame / device usability */ + | IEEE80211_C_SWAMSDUTX + | IEEE80211_C_FF + ); + + ic->ic_htcaps = 0; +} + +void +r92ce_attach(struct rtwn_pci_softc *pc) +{ + struct rtwn_softc *sc = &pc->pc_sc; + + /* PCIe part. */ + pc->pc_setup_tx_desc = r92ce_setup_tx_desc; + pc->pc_tx_postsetup = r92ce_tx_postsetup; + pc->pc_copy_tx_desc = r92ce_copy_tx_desc; + pc->pc_enable_intr = r92ce_enable_intr; + + pc->pc_qmap = 0xf771; + pc->tcr = + R92C_TCR_CFENDFORM | (1 << 12) | (1 << 13); + + /* Common part. */ + /* RTL8192C* cannot use pairwise keys from first 4 slots */ + sc->sc_flags = RTWN_FLAG_CAM_FIXED; + + sc->sc_start_xfers = r92ce_start_xfers; + sc->sc_set_chan = r92c_set_chan; + sc->sc_fill_tx_desc = r92c_fill_tx_desc; + sc->sc_fill_tx_desc_raw = r92c_fill_tx_desc_raw; + sc->sc_fill_tx_desc_null = r92c_fill_tx_desc_null; /* XXX recheck */ + sc->sc_dump_tx_desc = r92ce_dump_tx_desc; + sc->sc_tx_radiotap_flags = r92c_tx_radiotap_flags; + sc->sc_rx_radiotap_flags = r92c_rx_radiotap_flags; + sc->sc_get_rssi_cck = r92c_get_rssi_cck; + sc->sc_get_rssi_ofdm = r92c_get_rssi_ofdm; + sc->sc_classify_intr = r92ce_classify_intr; + sc->sc_handle_tx_report = rtwn_nop_softc_uint8_int; + sc->sc_handle_c2h_report = rtwn_nop_softc_uint8_int; + sc->sc_check_frame = rtwn_nop_int_softc_mbuf; + sc->sc_rf_read = r92c_rf_read; + sc->sc_rf_write = r92c_rf_write; + sc->sc_check_condition = r92c_check_condition; + sc->sc_efuse_postread = r92c_efuse_postread; + sc->sc_parse_rom = r92c_parse_rom; + sc->sc_set_led = r92ce_set_led; + sc->sc_power_on = r92ce_power_on; + sc->sc_power_off = r92ce_power_off; +#ifndef RTWN_WITHOUT_UCODE + sc->sc_fw_reset = r92ce_fw_reset; + sc->sc_fw_download_enable = r92c_fw_download_enable; +#endif + sc->sc_set_page_size = r92c_set_page_size; + sc->sc_lc_calib = r92c_lc_calib; + sc->sc_iq_calib = r92ce_iq_calib; + sc->sc_read_chipid_vendor = r92c_read_chipid_vendor; + sc->sc_adj_devcaps = r92ce_adj_devcaps; + sc->sc_vap_preattach = rtwn_nop_softc_vap; + sc->sc_postattach = r92ce_postattach; + sc->sc_detach_private = r92c_detach_private; + sc->sc_set_media_status = r92c_joinbss_rpt; +#ifndef RTWN_WITHOUT_UCODE + sc->sc_set_rsvd_page = r92c_set_rsvd_page; + sc->sc_set_pwrmode = r92c_set_pwrmode; + sc->sc_set_rssi = r92c_set_rssi; +#endif + sc->sc_beacon_init = r92c_beacon_init; + sc->sc_beacon_enable = r92c_beacon_enable; + sc->sc_beacon_set_rate = rtwn_nop_void_int; + sc->sc_beacon_select = rtwn_nop_softc_int; + sc->sc_temp_measure = r92c_temp_measure; + sc->sc_temp_read = r92c_temp_read; + sc->sc_init_tx_agg = rtwn_nop_softc; + sc->sc_init_rx_agg = rtwn_nop_softc; + sc->sc_init_ampdu = r92ce_init_ampdu; + sc->sc_init_intr = r92ce_init_intr; + sc->sc_init_edca = r92ce_init_edca; + sc->sc_init_bb = r92ce_init_bb; + sc->sc_init_rf = r92c_init_rf; + sc->sc_init_antsel = rtwn_nop_softc; + sc->sc_post_init = r92ce_post_init; + sc->sc_init_bcnq1_boundary = rtwn_nop_int_softc; + + sc->mac_prog = &rtl8192ce_mac[0]; + sc->mac_size = nitems(rtl8192ce_mac); + sc->bb_prog = &rtl8192ce_bb[0]; + sc->bb_size = nitems(rtl8192ce_bb); + sc->agc_prog = &rtl8192ce_agc[0]; + sc->agc_size = nitems(rtl8192ce_agc); + sc->rf_prog = &rtl8192c_rf[0]; + + sc->page_count = R92CE_TX_PAGE_COUNT; + sc->pktbuf_count = R92C_TXPKTBUF_COUNT; + + sc->ackto = 0x40; + sc->npubqpages = R92CE_PUBQ_NPAGES; + sc->nhqpages = R92CE_HPQ_NPAGES; + sc->nnqpages = 0; + sc->nlqpages = R92CE_LPQ_NPAGES; + sc->page_size = R92C_TX_PAGE_SIZE; + + sc->txdesc_len = sizeof(struct r92ce_tx_desc); + sc->efuse_maxlen = R92C_EFUSE_MAX_LEN; + sc->efuse_maplen = R92C_EFUSE_MAP_LEN; + sc->rx_dma_size = R92C_RX_DMA_BUFFER_SIZE; + + sc->macid_limit = R92C_MACID_MAX + 1; + sc->cam_entry_limit = R92C_CAM_ENTRY_COUNT; + sc->fwsize_limit = R92C_MAX_FW_SIZE; + sc->temp_delta = R92C_CALIB_THRESHOLD; + + sc->bcn_status_reg[0] = R92C_TDECTRL; + sc->bcn_status_reg[1] = R92C_TDECTRL; + sc->rcr = 0; + + r92ce_attach_private(sc); +} diff --git a/sys/dev/rtwn/rtl8192c/pci/r92ce_calib.c b/sys/dev/rtwn/rtl8192c/pci/r92ce_calib.c new file mode 100644 index 000000000000..a786c1b8e156 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/pci/r92ce_calib.c @@ -0,0 +1,386 @@ +/* $OpenBSD: if_rtwn.c,v 1.6 2015/08/28 00:03:53 deraadt Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015 Stefan Sperling + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include + +#include +#include + + +/* Registers to save and restore during IQ calibration. */ +struct r92ce_iq_cal_reg_vals { + uint32_t adda[16]; + uint8_t txpause; + uint8_t bcn_ctrl[2]; + uint32_t gpio_muxcfg; + uint32_t ofdm0_trxpathena; + uint32_t ofdm0_trmuxpar; + uint32_t fpga0_rfifacesw1; +}; + +/* XXX 92CU? */ +static int +r92ce_iq_calib_chain(struct rtwn_softc *sc, int chain, uint16_t tx[2], + uint16_t rx[2]) +{ + uint32_t status; + int offset = chain * 0x20; + + if (chain == 0) { /* IQ calibration for chain 0. */ + /* IQ calibration settings for chain 0. */ + rtwn_bb_write(sc, 0xe30, 0x10008c1f); + rtwn_bb_write(sc, 0xe34, 0x10008c1f); + rtwn_bb_write(sc, 0xe38, 0x82140102); + + if (sc->ntxchains > 1) { + rtwn_bb_write(sc, 0xe3c, 0x28160202); /* 2T */ + /* IQ calibration settings for chain 1. */ + rtwn_bb_write(sc, 0xe50, 0x10008c22); + rtwn_bb_write(sc, 0xe54, 0x10008c22); + rtwn_bb_write(sc, 0xe58, 0x82140102); + rtwn_bb_write(sc, 0xe5c, 0x28160202); + } else + rtwn_bb_write(sc, 0xe3c, 0x28160502); /* 1T */ + + /* LO calibration settings. */ + rtwn_bb_write(sc, 0xe4c, 0x001028d1); + /* We're doing LO and IQ calibration in one shot. */ + rtwn_bb_write(sc, 0xe48, 0xf9000000); + rtwn_bb_write(sc, 0xe48, 0xf8000000); + + } else { /* IQ calibration for chain 1. */ + /* We're doing LO and IQ calibration in one shot. */ + rtwn_bb_write(sc, 0xe60, 0x00000002); + rtwn_bb_write(sc, 0xe60, 0x00000000); + } + + /* Give LO and IQ calibrations the time to complete. */ + rtwn_delay(sc, 1000); + + /* Read IQ calibration status. */ + status = rtwn_bb_read(sc, 0xeac); + + if (status & (1 << (28 + chain * 3))) + return (0); /* Tx failed. */ + /* Read Tx IQ calibration results. */ + tx[0] = (rtwn_bb_read(sc, 0xe94 + offset) >> 16) & 0x3ff; + tx[1] = (rtwn_bb_read(sc, 0xe9c + offset) >> 16) & 0x3ff; + if (tx[0] == 0x142 || tx[1] == 0x042) + return (0); /* Tx failed. */ + + if (status & (1 << (27 + chain * 3))) + return (1); /* Rx failed. */ + /* Read Rx IQ calibration results. */ + rx[0] = (rtwn_bb_read(sc, 0xea4 + offset) >> 16) & 0x3ff; + rx[1] = (rtwn_bb_read(sc, 0xeac + offset) >> 16) & 0x3ff; + if (rx[0] == 0x132 || rx[1] == 0x036) + return (1); /* Rx failed. */ + + return (3); /* Both Tx and Rx succeeded. */ +} + +static void +r92ce_iq_calib_run(struct rtwn_softc *sc, int n, uint16_t tx[2][2], + uint16_t rx[2][2], struct r92ce_iq_cal_reg_vals *vals) +{ + /* Registers to save and restore during IQ calibration. */ + static const uint16_t reg_adda[16] = { + 0x85c, 0xe6c, 0xe70, 0xe74, + 0xe78, 0xe7c, 0xe80, 0xe84, + 0xe88, 0xe8c, 0xed0, 0xed4, + 0xed8, 0xedc, 0xee0, 0xeec + }; + int i, chain; + uint32_t hssi_param1; + + if (n == 0) { + for (i = 0; i < nitems(reg_adda); i++) + vals->adda[i] = rtwn_bb_read(sc, reg_adda[i]); + + vals->txpause = rtwn_read_1(sc, R92C_TXPAUSE); + vals->bcn_ctrl[0] = rtwn_read_1(sc, R92C_BCN_CTRL(0)); + vals->bcn_ctrl[1] = rtwn_read_1(sc, R92C_BCN_CTRL(1)); + vals->gpio_muxcfg = rtwn_read_4(sc, R92C_GPIO_MUXCFG); + } + + if (sc->ntxchains == 1) { + rtwn_bb_write(sc, reg_adda[0], 0x0b1b25a0); + for (i = 1; i < nitems(reg_adda); i++) + rtwn_bb_write(sc, reg_adda[i], 0x0bdb25a0); + } else { + for (i = 0; i < nitems(reg_adda); i++) + rtwn_bb_write(sc, reg_adda[i], 0x04db25a4); + } + + hssi_param1 = rtwn_bb_read(sc, R92C_HSSI_PARAM1(0)); + if (!(hssi_param1 & R92C_HSSI_PARAM1_PI)) { + rtwn_bb_write(sc, R92C_HSSI_PARAM1(0), + hssi_param1 | R92C_HSSI_PARAM1_PI); + rtwn_bb_write(sc, R92C_HSSI_PARAM1(1), + hssi_param1 | R92C_HSSI_PARAM1_PI); + } + + if (n == 0) { + vals->ofdm0_trxpathena = + rtwn_bb_read(sc, R92C_OFDM0_TRXPATHENA); + vals->ofdm0_trmuxpar = rtwn_bb_read(sc, R92C_OFDM0_TRMUXPAR); + vals->fpga0_rfifacesw1 = + rtwn_bb_read(sc, R92C_FPGA0_RFIFACESW(1)); + } + + rtwn_bb_write(sc, R92C_OFDM0_TRXPATHENA, 0x03a05600); + rtwn_bb_write(sc, R92C_OFDM0_TRMUXPAR, 0x000800e4); + rtwn_bb_write(sc, R92C_FPGA0_RFIFACESW(1), 0x22204000); + if (sc->ntxchains > 1) { + rtwn_bb_write(sc, R92C_LSSI_PARAM(0), 0x00010000); + rtwn_bb_write(sc, R92C_LSSI_PARAM(1), 0x00010000); + } + + rtwn_write_1(sc, R92C_TXPAUSE, + R92C_TX_QUEUE_AC | R92C_TX_QUEUE_MGT | R92C_TX_QUEUE_HIGH); + rtwn_write_1(sc, R92C_BCN_CTRL(0), + vals->bcn_ctrl[0] & ~R92C_BCN_CTRL_EN_BCN); + rtwn_write_1(sc, R92C_BCN_CTRL(1), + vals->bcn_ctrl[1] & ~R92C_BCN_CTRL_EN_BCN); + rtwn_write_1(sc, R92C_GPIO_MUXCFG, + vals->gpio_muxcfg & ~R92C_GPIO_MUXCFG_ENBT); + + rtwn_bb_write(sc, 0x0b68, 0x00080000); + if (sc->ntxchains > 1) + rtwn_bb_write(sc, 0x0b6c, 0x00080000); + + rtwn_bb_write(sc, 0x0e28, 0x80800000); + rtwn_bb_write(sc, 0x0e40, 0x01007c00); + rtwn_bb_write(sc, 0x0e44, 0x01004800); + + rtwn_bb_write(sc, 0x0b68, 0x00080000); + + for (chain = 0; chain < sc->ntxchains; chain++) { + if (chain > 0) { + /* Put chain 0 on standby. */ + rtwn_bb_write(sc, 0x0e28, 0x00); + rtwn_bb_write(sc, R92C_LSSI_PARAM(0), 0x00010000); + rtwn_bb_write(sc, 0x0e28, 0x80800000); + + /* Enable chain 1. */ + for (i = 0; i < nitems(reg_adda); i++) + rtwn_bb_write(sc, reg_adda[i], 0x0b1b25a4); + } + + /* Run IQ calibration twice. */ + for (i = 0; i < 2; i++) { + int ret; + + ret = r92ce_iq_calib_chain(sc, chain, + tx[chain], rx[chain]); + if (ret == 0) { + RTWN_DPRINTF(sc, RTWN_DEBUG_CALIB, + "%s: chain %d: Tx failed.\n", + __func__, chain); + tx[chain][0] = 0xff; + tx[chain][1] = 0xff; + rx[chain][0] = 0xff; + rx[chain][1] = 0xff; + } else if (ret == 1) { + RTWN_DPRINTF(sc, RTWN_DEBUG_CALIB, + "%s: chain %d: Rx failed.\n", + __func__, chain); + rx[chain][0] = 0xff; + rx[chain][1] = 0xff; + } else if (ret == 3) { + RTWN_DPRINTF(sc, RTWN_DEBUG_CALIB, + "%s: chain %d: Both Tx and Rx " + "succeeded.\n", __func__, chain); + } + } + + RTWN_DPRINTF(sc, RTWN_DEBUG_CALIB, + "%s: results for run %d chain %d: tx[0] 0x%x, " + "tx[1] 0x%x, rx[0] 0x%x, rx[1] 0x%x\n", __func__, n, chain, + tx[chain][0], tx[chain][1], rx[chain][0], rx[chain][1]); + } + + rtwn_bb_write(sc, R92C_OFDM0_TRXPATHENA, + vals->ofdm0_trxpathena); + rtwn_bb_write(sc, R92C_FPGA0_RFIFACESW(1), + vals->fpga0_rfifacesw1); + rtwn_bb_write(sc, R92C_OFDM0_TRMUXPAR, vals->ofdm0_trmuxpar); + + rtwn_bb_write(sc, 0x0e28, 0x00); + rtwn_bb_write(sc, R92C_LSSI_PARAM(0), 0x00032ed3); + if (sc->ntxchains > 1) + rtwn_bb_write(sc, R92C_LSSI_PARAM(1), 0x00032ed3); + + if (n != 0) { + if (!(hssi_param1 & R92C_HSSI_PARAM1_PI)) { + rtwn_bb_write(sc, R92C_HSSI_PARAM1(0), hssi_param1); + rtwn_bb_write(sc, R92C_HSSI_PARAM1(1), hssi_param1); + } + + for (i = 0; i < nitems(reg_adda); i++) + rtwn_bb_write(sc, reg_adda[i], vals->adda[i]); + + rtwn_write_1(sc, R92C_TXPAUSE, vals->txpause); + rtwn_write_1(sc, R92C_BCN_CTRL(0), vals->bcn_ctrl[0]); + rtwn_write_1(sc, R92C_BCN_CTRL(1), vals->bcn_ctrl[1]); + rtwn_write_4(sc, R92C_GPIO_MUXCFG, vals->gpio_muxcfg); + } +} + +#define RTWN_IQ_CAL_MAX_TOLERANCE 5 +static int +r92ce_iq_calib_compare_results(struct rtwn_softc *sc, uint16_t tx1[2][2], + uint16_t rx1[2][2], uint16_t tx2[2][2], uint16_t rx2[2][2]) +{ + int chain, i, tx_ok[2], rx_ok[2]; + + tx_ok[0] = tx_ok[1] = rx_ok[0] = rx_ok[1] = 0; + for (chain = 0; chain < sc->ntxchains; chain++) { + for (i = 0; i < 2; i++) { + if (tx1[chain][i] == 0xff || tx2[chain][i] == 0xff || + rx1[chain][i] == 0xff || rx2[chain][i] == 0xff) + continue; + + tx_ok[chain] = (abs(tx1[chain][i] - tx2[chain][i]) <= + RTWN_IQ_CAL_MAX_TOLERANCE); + + rx_ok[chain] = (abs(rx1[chain][i] - rx2[chain][i]) <= + RTWN_IQ_CAL_MAX_TOLERANCE); + } + } + + if (sc->ntxchains > 1) + return (tx_ok[0] && tx_ok[1] && rx_ok[0] && rx_ok[1]); + else + return (tx_ok[0] && rx_ok[0]); +} +#undef RTWN_IQ_CAL_MAX_TOLERANCE + +static void +r92ce_iq_calib_write_results(struct rtwn_softc *sc, uint16_t tx[2], + uint16_t rx[2], int chain) +{ + uint32_t reg, val, x; + long y, tx_c; + + if (tx[0] == 0xff || tx[1] == 0xff) + return; + + reg = rtwn_bb_read(sc, R92C_OFDM0_TXIQIMBALANCE(chain)); + val = ((reg >> 22) & 0x3ff); + x = tx[0]; + if (x & 0x00000200) + x |= 0xfffffc00; + reg = (((x * val) >> 8) & 0x3ff); + rtwn_bb_setbits(sc, R92C_OFDM0_TXIQIMBALANCE(chain), 0x3ff, reg); + rtwn_bb_setbits(sc, R92C_OFDM0_ECCATHRESHOLD, 0x80000000, + ((x * val) & 0x80) << 24); + + y = tx[1]; + if (y & 0x00000200) + y |= 0xfffffc00; + tx_c = (y * val) >> 8; + rtwn_bb_setbits(sc, R92C_OFDM0_TXAFE(chain), 0xf0000000, + (tx_c & 0x3c0) << 22); + rtwn_bb_setbits(sc, R92C_OFDM0_TXIQIMBALANCE(chain), 0x003f0000, + (tx_c & 0x3f) << 16); + rtwn_bb_setbits(sc, R92C_OFDM0_ECCATHRESHOLD, 0x20000000, + ((y * val) & 0x80) << 22); + + if (rx[0] == 0xff || rx[1] == 0xff) + return; + + rtwn_bb_setbits(sc, R92C_OFDM0_RXIQIMBALANCE(chain), 0x3ff, + rx[0] & 0x3ff); + rtwn_bb_setbits(sc, R92C_OFDM0_RXIQIMBALANCE(chain), 0xfc00, + (rx[1] & 0x3f) << 10); + + if (chain == 0) { + rtwn_bb_setbits(sc, R92C_OFDM0_RXIQEXTANTA, 0xf0000000, + (rx[1] & 0x3c0) << 22); + } else { + rtwn_bb_setbits(sc, R92C_OFDM0_AGCRSSITABLE, 0xf000, + (rx[1] & 0x3c0) << 6); + } +} + +#define RTWN_IQ_CAL_NRUN 3 +void +r92ce_iq_calib(struct rtwn_softc *sc) +{ + struct r92ce_iq_cal_reg_vals vals; + uint16_t tx[RTWN_IQ_CAL_NRUN][2][2], rx[RTWN_IQ_CAL_NRUN][2][2]; + int n, valid; + + valid = 0; + for (n = 0; n < RTWN_IQ_CAL_NRUN; n++) { + r92ce_iq_calib_run(sc, n, tx[n], rx[n], &vals); + + if (n == 0) + continue; + + /* Valid results remain stable after consecutive runs. */ + valid = r92ce_iq_calib_compare_results(sc, tx[n - 1], + rx[n - 1], tx[n], rx[n]); + if (valid) + break; + } + + if (valid) { + r92ce_iq_calib_write_results(sc, tx[n][0], rx[n][0], 0); + if (sc->ntxchains > 1) + r92ce_iq_calib_write_results(sc, tx[n][1], rx[n][1], 1); + } +} +#undef RTWN_IQ_CAL_NRUN diff --git a/sys/dev/rtwn/rtl8192c/pci/r92ce_fw.c b/sys/dev/rtwn/rtl8192c/pci/r92ce_fw.c new file mode 100644 index 000000000000..b7f8d4ac2f34 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/pci/r92ce_fw.c @@ -0,0 +1,74 @@ +/* $OpenBSD: if_rtwn.c,v 1.6 2015/08/28 00:03:53 deraadt Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015 Stefan Sperling + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include + +#include + + +#ifndef RTWN_WITHOUT_UCODE +void +r92ce_fw_reset(struct rtwn_softc *sc, int reason) +{ + + if (reason == RTWN_FW_RESET_CHECKSUM) + return; + + r92c_fw_reset(sc, reason); + + /* + * We must sleep for one second to let the firmware settle. + * Accessing registers too early will hang the whole system. + */ + rtwn_delay(sc, 1000 * 1000); +} +#endif diff --git a/sys/dev/rtwn/rtl8192c/pci/r92ce_init.c b/sys/dev/rtwn/rtl8192c/pci/r92ce_init.c new file mode 100644 index 000000000000..92845aab162f --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/pci/r92ce_init.c @@ -0,0 +1,327 @@ +/* $OpenBSD: if_rtwn.c,v 1.6 2015/08/28 00:03:53 deraadt Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015 Stefan Sperling + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include + +#include + +#include +#include + + +void +r92ce_init_intr(struct rtwn_softc *sc) +{ + /* Disable interrupts. */ + rtwn_write_4(sc, R92C_HISR, 0x00000000); + rtwn_write_4(sc, R92C_HIMR, 0x00000000); +} + +void +r92ce_init_edca(struct rtwn_softc *sc) +{ + /* SIFS */ + rtwn_write_2(sc, R92C_SPEC_SIFS, 0x1010); + rtwn_write_2(sc, R92C_MAC_SPEC_SIFS, 0x1010); + rtwn_write_2(sc, R92C_SIFS_CCK, 0x1010); + rtwn_write_2(sc, R92C_SIFS_OFDM, 0x0e0e); + /* TXOP */ + rtwn_write_4(sc, R92C_EDCA_BE_PARAM, 0x005ea42b); + rtwn_write_4(sc, R92C_EDCA_BK_PARAM, 0x0000a44f); + rtwn_write_4(sc, R92C_EDCA_VI_PARAM, 0x005e4322); + rtwn_write_4(sc, R92C_EDCA_VO_PARAM, 0x002f3222); +} + +void +r92ce_init_bb(struct rtwn_softc *sc) +{ + + /* Enable BB and RF. */ + rtwn_setbits_2(sc, R92C_SYS_FUNC_EN, 0, + R92C_SYS_FUNC_EN_BBRSTB | R92C_SYS_FUNC_EN_BB_GLB_RST | + R92C_SYS_FUNC_EN_DIO_RF); + + rtwn_write_2(sc, R92C_AFE_PLL_CTRL, 0xdb83); + + rtwn_write_1(sc, R92C_RF_CTRL, + R92C_RF_CTRL_EN | R92C_RF_CTRL_RSTB | R92C_RF_CTRL_SDMRSTB); + + rtwn_write_1(sc, R92C_SYS_FUNC_EN, + R92C_SYS_FUNC_EN_DIO_PCIE | R92C_SYS_FUNC_EN_PCIEA | + R92C_SYS_FUNC_EN_PPLL | R92C_SYS_FUNC_EN_BB_GLB_RST | + R92C_SYS_FUNC_EN_BBRSTB); + + rtwn_write_1(sc, R92C_AFE_XTAL_CTRL + 1, 0x80); + + rtwn_setbits_4(sc, R92C_LEDCFG0, 0, 0x00800000); + + r92c_init_bb_common(sc); + + if (rtwn_bb_read(sc, R92C_HSSI_PARAM2(0)) & + R92C_HSSI_PARAM2_CCK_HIPWR) + sc->sc_flags |= RTWN_FLAG_CCK_HIPWR; +} + +int +r92ce_power_on(struct rtwn_softc *sc) +{ + struct r92c_softc *rs = sc->sc_priv; + uint32_t reg; + int ntries; + + /* Wait for autoload done bit. */ + for (ntries = 0; ntries < 1000; ntries++) { + if (rtwn_read_1(sc, R92C_APS_FSMCO) & R92C_APS_FSMCO_PFM_ALDN) + break; + DELAY(5); + } + if (ntries == 1000) { + device_printf(sc->sc_dev, + "timeout waiting for chip autoload\n"); + return (ETIMEDOUT); + } + + /* Unlock ISO/CLK/Power control register. */ + rtwn_write_1(sc, R92C_RSV_CTRL, 0); + + if (rs->board_type != R92C_BOARD_TYPE_DONGLE) { + /* bt coex */ + rtwn_setbits_4(sc, R92C_APS_FSMCO, 0, + R92C_APS_FSMCO_SOP_ABG | + R92C_APS_FSMCO_SOP_AMB | + R92C_APS_FSMCO_XOP_BTCK); + } + + /* Move SPS into PWM mode. */ + rtwn_write_1(sc, R92C_SPS0_CTRL, 0x2b); + + /* Set low byte to 0x0f, leave others unchanged. */ + rtwn_write_1(sc, R92C_AFE_XTAL_CTRL, 0x0f); + + /* TODO: check if we need this for 8188CE */ + if (rs->board_type != R92C_BOARD_TYPE_DONGLE) { + /* bt coex */ + /* XXX magic from linux */ + rtwn_setbits_4(sc, R92C_AFE_XTAL_CTRL, 0x024800, 0); + } + + rtwn_setbits_2(sc, R92C_SYS_ISO_CTRL, 0xff00, + R92C_SYS_ISO_CTRL_PWC_EV12V | R92C_SYS_ISO_CTRL_DIOR); + + DELAY(200); + + /* TODO: linux does additional btcoex stuff here */ + + /* Auto enable WLAN. */ + rtwn_setbits_2(sc, R92C_APS_FSMCO, 0, R92C_APS_FSMCO_APFM_ONMAC); + for (ntries = 0; ntries < 1000; ntries++) { + if (!(rtwn_read_2(sc, R92C_APS_FSMCO) & + R92C_APS_FSMCO_APFM_ONMAC)) + break; + DELAY(5); + } + if (ntries == 1000) { + device_printf(sc->sc_dev, "timeout waiting for MAC auto ON\n"); + return (ETIMEDOUT); + } + + /* Enable radio, GPIO and LED functions. */ + rtwn_write_2(sc, R92C_APS_FSMCO, + R92C_APS_FSMCO_AFSM_PCIE | + R92C_APS_FSMCO_PDN_EN | + R92C_APS_FSMCO_PFM_ALDN); + /* Release RF digital isolation. */ + rtwn_setbits_2(sc, R92C_SYS_ISO_CTRL, R92C_SYS_ISO_CTRL_DIOR, 0); + + if (rs->chip & R92C_CHIP_92C) + rtwn_write_1(sc, R92C_PCIE_CTRL_REG + 3, 0x77); + else + rtwn_write_1(sc, R92C_PCIE_CTRL_REG + 3, 0x22); + + rtwn_write_4(sc, R92C_INT_MIG, 0); + + if (rs->board_type != R92C_BOARD_TYPE_DONGLE) { + /* bt coex */ + /* XXX magic from linux */ + rtwn_setbits_1(sc, R92C_AFE_XTAL_CTRL + 2, 0x02, 0); + } + + rtwn_setbits_1(sc, R92C_GPIO_MUXCFG, R92C_GPIO_MUXCFG_RFKILL, 0); + + reg = rtwn_read_1(sc, R92C_GPIO_IO_SEL); + if (!(reg & R92C_GPIO_IO_SEL_RFKILL)) { + device_printf(sc->sc_dev, + "radio is disabled by hardware switch\n"); + /* XXX how driver will know when radio will be enabled? */ + return (EPERM); + } + + /* Initialize MAC. */ + rtwn_setbits_1(sc, R92C_APSD_CTRL, R92C_APSD_CTRL_OFF, 0); + for (ntries = 0; ntries < 200; ntries++) { + if (!(rtwn_read_1(sc, R92C_APSD_CTRL) & + R92C_APSD_CTRL_OFF_STATUS)) + break; + DELAY(500); + } + if (ntries == 200) { + device_printf(sc->sc_dev, + "timeout waiting for MAC initialization\n"); + return (ETIMEDOUT); + } + + /* Enable MAC DMA/WMAC/SCHEDULE/SEC blocks. */ + rtwn_setbits_2(sc, R92C_CR, 0, + R92C_CR_HCI_TXDMA_EN | R92C_CR_HCI_RXDMA_EN | + R92C_CR_TXDMA_EN | R92C_CR_RXDMA_EN | R92C_CR_PROTOCOL_EN | + R92C_CR_SCHEDULE_EN | R92C_CR_MACTXEN | R92C_CR_MACRXEN | + ((sc->sc_hwcrypto != RTWN_CRYPTO_SW) ? R92C_CR_ENSEC : 0)); + + rtwn_write_4(sc, R92C_MCUTST_1, 0x0); + + return (0); +} + +void +r92ce_power_off(struct rtwn_softc *sc) +{ +#ifndef RTWN_WITHOUT_UCODE + struct r92c_softc *rs = sc->sc_priv; + + /* Deinit C2H event handler. */ + callout_stop(&rs->rs_c2h_report); + rs->rs_c2h_paused = 0; + rs->rs_c2h_pending = 0; + rs->rs_c2h_timeout = hz; +#endif + + /* Stop hardware. */ + /* Disable interrupts. */ + rtwn_write_4(sc, R92C_HISR, 0); + rtwn_write_4(sc, R92C_HIMR, 0); + + /* Stop hardware. */ + rtwn_write_1(sc, R92C_TXPAUSE, R92C_TX_QUEUE_ALL); + + /* Turn off RF. */ + rtwn_write_1(sc, R92C_RF_CTRL, 0); + + /* Reset BB state machine */ + rtwn_setbits_1(sc, R92C_SYS_FUNC_EN, 0, R92C_SYS_FUNC_EN_BB_GLB_RST); + rtwn_setbits_1(sc, R92C_SYS_FUNC_EN, R92C_SYS_FUNC_EN_BB_GLB_RST, 0); + + /* Disable MAC DMA/WMAC/SCHEDULE/SEC blocks. */ + rtwn_setbits_2(sc, R92C_CR, + R92C_CR_HCI_TXDMA_EN | R92C_CR_HCI_RXDMA_EN | + R92C_CR_TXDMA_EN | R92C_CR_RXDMA_EN | R92C_CR_PROTOCOL_EN | + R92C_CR_SCHEDULE_EN | R92C_CR_MACTXEN | R92C_CR_MACRXEN | + R92C_CR_ENSEC, + 0); + + /* If firmware in ram code, do reset. */ +#ifndef RTWN_WITHOUT_UCODE + if (rtwn_read_1(sc, R92C_MCUFWDL) & R92C_MCUFWDL_RAM_DL_SEL) + r92ce_fw_reset(sc, RTWN_FW_RESET_SHUTDOWN); +#endif + + /* TODO: linux does additional btcoex stuff here */ + rtwn_write_2(sc, R92C_AFE_PLL_CTRL, 0x80); /* linux magic number */ + rtwn_write_1(sc, R92C_SPS0_CTRL, 0x23); /* ditto */ + rtwn_write_1(sc, R92C_AFE_XTAL_CTRL, 0x0e); /* different with btcoex */ + rtwn_write_1(sc, R92C_RSV_CTRL, 0x0e); + rtwn_write_1(sc, R92C_APS_FSMCO, R92C_APS_FSMCO_PDN_EN); +} + +void +r92ce_init_ampdu(struct rtwn_softc *sc) +{ + + /* Setup AMPDU aggregation. */ + rtwn_write_4(sc, R92C_AGGLEN_LMT, 0x99997631); /* MCS7~0 */ + rtwn_write_1(sc, R92C_AGGR_BREAK_TIME, 0x16); +} + +void +r92ce_post_init(struct rtwn_softc *sc) +{ + rtwn_write_2(sc, R92C_FWHW_TXQ_CTRL, + 0x1f00 | R92C_FWHW_TXQ_CTRL_AMPDU_RTY_NEW); + + rtwn_write_1(sc, R92C_BCN_MAX_ERR, 0xff); + + /* Perform LO and IQ calibrations. */ + r92ce_iq_calib(sc); + /* Perform LC calibration. */ + r92c_lc_calib(sc); + + r92c_pa_bias_init(sc); + + /* Fix for lower temperature. */ + rtwn_write_1(sc, 0x15, 0xe9); + +#ifndef RTWN_WITHOUT_UCODE + if (sc->sc_flags & RTWN_FW_LOADED) { + struct r92c_softc *rs = sc->sc_priv; + + if (sc->sc_ratectl_sysctl == RTWN_RATECTL_FW) { + /* XXX TODO: fix (see comment in r92cu_init.c) */ + sc->sc_ratectl = RTWN_RATECTL_NET80211; + } else + sc->sc_ratectl = sc->sc_ratectl_sysctl; + + /* Start C2H event handling. */ + callout_reset(&rs->rs_c2h_report, rs->rs_c2h_timeout, + r92c_handle_c2h_report, sc); + } else +#endif + sc->sc_ratectl = RTWN_RATECTL_NONE; +} diff --git a/sys/dev/rtwn/rtl8192c/pci/r92ce_led.c b/sys/dev/rtwn/rtl8192c/pci/r92ce_led.c new file mode 100644 index 000000000000..5959473842ca --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/pci/r92ce_led.c @@ -0,0 +1,67 @@ +/* $OpenBSD: if_rtwn.c,v 1.6 2015/08/28 00:03:53 deraadt Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015 Stefan Sperling + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include + +#include +#include + +void +r92ce_set_led(struct rtwn_softc *sc, int led, int on) +{ + + if (led == RTWN_LED_LINK) { + rtwn_setbits_1(sc, R92C_LEDCFG2, 0x0f, + on ? R92C_LEDCFG2_EN : R92C_LEDCFG2_DIS); + sc->ledlink = on; /* Save LED state. */ + } +} diff --git a/sys/dev/rtwn/rtl8192c/pci/r92ce_priv.h b/sys/dev/rtwn/rtl8192c/pci/r92ce_priv.h new file mode 100644 index 000000000000..7416516cd986 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/pci/r92ce_priv.h @@ -0,0 +1,182 @@ +/* $OpenBSD: if_rtwnreg.h,v 1.3 2015/06/14 08:02:47 stsp Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015 Stefan Sperling + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef R92CE_PRIV_H +#define R92CE_PRIV_H + +#include + + +/* + * MAC initialization values. + */ +static const struct rtwn_mac_prog rtl8192ce_mac[] = { + { 0x420, 0x80 }, { 0x423, 0x00 }, { 0x430, 0x00 }, { 0x431, 0x00 }, + { 0x432, 0x00 }, { 0x433, 0x01 }, { 0x434, 0x04 }, { 0x435, 0x05 }, + { 0x436, 0x06 }, { 0x437, 0x07 }, { 0x438, 0x00 }, { 0x439, 0x00 }, + { 0x43a, 0x00 }, { 0x43b, 0x01 }, { 0x43c, 0x04 }, { 0x43d, 0x05 }, + { 0x43e, 0x06 }, { 0x43f, 0x07 }, { 0x440, 0x5d }, { 0x441, 0x01 }, + { 0x442, 0x00 }, { 0x444, 0x15 }, { 0x445, 0xf0 }, { 0x446, 0x0f }, + { 0x447, 0x00 }, { 0x458, 0x41 }, { 0x459, 0xa8 }, { 0x45a, 0x72 }, + { 0x45b, 0xb9 }, { 0x460, 0x88 }, { 0x461, 0x88 }, { 0x462, 0x06 }, + { 0x463, 0x03 }, { 0x4c8, 0x04 }, { 0x4c9, 0x08 }, { 0x4cc, 0x02 }, + { 0x4cd, 0x28 }, { 0x4ce, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 }, + { 0x502, 0x2f }, { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 }, + { 0x506, 0x5e }, { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 }, + { 0x50a, 0x5e }, { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 }, + { 0x50e, 0x00 }, { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a }, + { 0x515, 0x10 }, { 0x516, 0x0a }, { 0x517, 0x10 }, { 0x51a, 0x16 }, + { 0x524, 0x0f }, { 0x525, 0x4f }, { 0x546, 0x20 }, { 0x547, 0x00 }, + { 0x559, 0x02 }, { 0x55a, 0x02 }, { 0x55d, 0xff }, { 0x605, 0x30 }, + { 0x608, 0x0e }, { 0x609, 0x2a }, { 0x652, 0x20 }, { 0x63c, 0x0a }, + { 0x63d, 0x0e }, { 0x700, 0x21 }, { 0x701, 0x43 }, { 0x702, 0x65 }, + { 0x703, 0x87 }, { 0x708, 0x21 }, { 0x709, 0x43 }, { 0x70a, 0x65 }, + { 0x70b, 0x87 } +}; + + +/* + * Baseband initialization values. + */ +static const uint16_t rtl8192ce_bb_regs0[] = { + 0x024, 0x028, 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, + 0x81c, 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, + 0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, 0x860, + 0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880, 0x884, + 0x888, 0x88c, 0x890, 0x894, 0x898, 0x89c, 0x900, 0x904, 0x908, + 0x90c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c, + 0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xc00, 0xc04 +}, rtl8192ce_bb_regs1[] = { + 0xc08, 0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, 0xc20, 0xc24, 0xc28, + 0xc2c, 0xc30, 0xc34, 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, + 0xc50, 0xc54, 0xc58, 0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, + 0xc74, 0xc78, 0xc7c, 0xc80, 0xc84, 0xc88, 0xc8c, 0xc90, 0xc94, + 0xc98, 0xc9c, 0xca0, 0xca4, 0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8, + 0xcbc, 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc, + 0xce0, 0xce4, 0xce8, 0xcec, 0xd00 +}; + +static const uint32_t rtl8192ce_bb_vals0_2t[] = { + 0x0011800f, 0x00ffdb83, 0x80040002, 0x00000003, 0x0000fc00, + 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, + 0x01000100, 0x00390004, 0x01000100, 0x00390004, 0x27272727, + 0x27272727, 0x27272727, 0x27272727, 0x00010000, 0x00010000, + 0x27272727, 0x27272727, 0x00000000, 0x00000000, 0x569a569a, + 0x0c1b25a4, 0x66e60230, 0x061f0130, 0x27272727, 0x2b2b2b27, + 0x07000700, 0x22184000, 0x08080808, 0x00000000, 0xc0083070, + 0x000004d5, 0x00000000, 0xcc0000c0, 0x00000800, 0xfffffffe, + 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, + 0x81121313, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, + 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, + 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, + 0x48071d40, 0x03a05633 +}, rtl8192ce_bb_vals0_1t[] = { + 0x0011800f, 0x00ffdb83, 0x80040000, 0x00000001, 0x0000fc00, + 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, + 0x01000100, 0x00390004, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x569a569a, + 0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, 0x32323200, + 0x07000700, 0x22004000, 0x00000808, 0x00000000, 0xc0083070, + 0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, 0xfffffffe, + 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, + 0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, + 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, + 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, + 0x48071d40, 0x03a05611 +}, rtl8192ce_bb_vals1[] = { + 0x000000e4, 0x6c6c6c6c, 0x08800000, 0x40000100, 0x08800000, + 0x40000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x69e9ac44, 0x469652cf, 0x49795994, 0x0a97971c, 0x1f7c403f, + 0x000100b7, 0xec020107, 0x007f037f, 0x69543420, 0x43bc0094, + 0x69543420, 0x433c0094, 0x00000000, 0x5116848b, 0x47c00bff, + 0x00000036, 0x2c7f000d, 0x018610db, 0x0000001f, 0x00b91612, + 0x40000100, 0x20f60000, 0x40000100, 0x20200000, 0x00121820, + 0x00000000, 0x00121820, 0x00007f7f, 0x00000000, 0x00000080, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x28000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x64b22427, 0x00766932, 0x00222222, + 0x00000000, 0x37644302, 0x2f97d40c, 0x00080740 +}, rtl8192ce_bb_vals4_1t[] = { + 0x00000010, 0x001b25a4, 0x631b25a0, 0x631b25a0, 0x081b25a0, + 0x081b25a0, 0x081b25a0, 0x081b25a0, 0x631b25a0, 0x081b25a0, + 0x631b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0, 0x001b25a0, + 0x001b25a0, 0x6b1b25a0, 0x00000003, 0x00000000, 0x00000300 +}; + +static const struct rtwn_bb_prog rtl8192ce_bb[] = { + { + nitems(rtl8192ce_bb_regs0), + rtl8192ce_bb_regs0, + rtl8192ce_bb_vals0_2t, + { R92C_COND_RTL8192C }, + &(const struct rtwn_bb_prog){ + nitems(rtl8192ce_bb_regs0), + rtl8192ce_bb_regs0, + rtl8192ce_bb_vals0_1t, + { 0 }, + NULL + } + }, + { + nitems(rtl8192ce_bb_regs1), + rtl8192ce_bb_regs1, + rtl8192ce_bb_vals1, + { 0 }, + NULL + }, + { + nitems(rtl8192c_bb_regs3), + rtl8192c_bb_regs3, + rtl8192c_bb_vals3_92ce_92cu, + { R92C_COND_RTL8192C }, + &(const struct rtwn_bb_prog){ + nitems(rtl8192c_bb_regs3), + rtl8192c_bb_regs3, + rtl8192c_bb_vals3_88cu_88ru, + { 0 }, + NULL + } + }, + { + nitems(rtl8192c_bb_regs4), + rtl8192c_bb_regs4, + rtl8192c_bb_vals4, + { 0 }, + NULL + }, + { + nitems(rtl8192c_bb_regs5), + rtl8192c_bb_regs5, + rtl8192c_bb_vals5_92ce_92cu, + { R92C_COND_RTL8192C }, + &(const struct rtwn_bb_prog){ + nitems(rtl8192c_bb_regs5), + rtl8192c_bb_regs5, + rtl8192ce_bb_vals4_1t, + { 0 }, + NULL + } + } +}; + +#endif /* R92CE_PRIV_H */ diff --git a/sys/dev/rtwn/rtl8192c/pci/r92ce_reg.h b/sys/dev/rtwn/rtl8192c/pci/r92ce_reg.h new file mode 100644 index 000000000000..355d8f4622cd --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/pci/r92ce_reg.h @@ -0,0 +1,103 @@ +/* $OpenBSD: if_rtwnreg.h,v 1.3 2015/06/14 08:02:47 stsp Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015 Stefan Sperling + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef R92CE_REG_H +#define R92CE_REG_H + +#include + +/* + * MAC registers. + */ +/* System Configuration. */ +#define R92C_PCIE_MIO_INTF 0x0e4 +#define R92C_PCIE_MIO_INTD 0x0e8 +/* PCIe Configuration. */ +#define R92C_PCIE_CTRL_REG 0x300 +#define R92C_INT_MIG 0x304 +#define R92C_BCNQ_DESA 0x308 +#define R92C_HQ_DESA 0x310 +#define R92C_MGQ_DESA 0x318 +#define R92C_VOQ_DESA 0x320 +#define R92C_VIQ_DESA 0x328 +#define R92C_BEQ_DESA 0x330 +#define R92C_BKQ_DESA 0x338 +#define R92C_RX_DESA 0x340 +#define R92C_DBI 0x348 +#define R92C_MDIO 0x354 +#define R92C_DBG_SEL 0x360 +#define R92C_PCIE_HRPWM 0x361 +#define R92C_PCIE_HCPWM 0x363 +#define R92C_UART_CTRL 0x364 +#define R92C_UART_TX_DES 0x370 +#define R92C_UART_RX_DES 0x378 + + +/* Bits for R92C_GPIO_MUXCFG. */ +#define R92C_GPIO_MUXCFG_RFKILL 0x0008 + +/* Bits for R92C_GPIO_IO_SEL. */ +#define R92C_GPIO_IO_SEL_RFKILL 0x0008 + +/* Bits for R92C_LEDCFG2. */ +#define R92C_LEDCFG2_EN 0x60 +#define R92C_LEDCFG2_DIS 0x68 + +/* Bits for R92C_HIMR. */ +#define R92C_IMR_ROK 0x00000001 /* receive DMA OK */ +#define R92C_IMR_VODOK 0x00000002 /* AC_VO DMA OK */ +#define R92C_IMR_VIDOK 0x00000004 /* AC_VI DMA OK */ +#define R92C_IMR_BEDOK 0x00000008 /* AC_BE DMA OK */ +#define R92C_IMR_BKDOK 0x00000010 /* AC_BK DMA OK */ +#define R92C_IMR_TXBDER 0x00000020 /* beacon transmit error */ +#define R92C_IMR_MGNTDOK 0x00000040 /* management queue DMA OK */ +#define R92C_IMR_TBDOK 0x00000080 /* beacon transmit OK */ +#define R92C_IMR_HIGHDOK 0x00000100 /* high queue DMA OK */ +#define R92C_IMR_BDOK 0x00000200 /* beacon queue DMA OK */ +#define R92C_IMR_ATIMEND 0x00000400 /* ATIM window end interrupt */ +#define R92C_IMR_RDU 0x00000800 /* Rx descriptor unavailable */ +#define R92C_IMR_RXFOVW 0x00001000 /* receive FIFO overflow */ +#define R92C_IMR_BCNINT 0x00002000 /* beacon DMA interrupt 0 */ +#define R92C_IMR_PSTIMEOUT 0x00004000 /* powersave timeout */ +#define R92C_IMR_TXFOVW 0x00008000 /* transmit FIFO overflow */ +#define R92C_IMR_TIMEOUT1 0x00010000 /* timeout interrupt 1 */ +#define R92C_IMR_TIMEOUT2 0x00020000 /* timeout interrupt 2 */ +#define R92C_IMR_BCNDOK1 0x00040000 /* beacon queue DMA OK (1) */ +#define R92C_IMR_BCNDOK2 0x00080000 /* beacon queue DMA OK (2) */ +#define R92C_IMR_BCNDOK3 0x00100000 /* beacon queue DMA OK (3) */ +#define R92C_IMR_BCNDOK4 0x00200000 /* beacon queue DMA OK (4) */ +#define R92C_IMR_BCNDOK5 0x00400000 /* beacon queue DMA OK (5) */ +#define R92C_IMR_BCNDOK6 0x00800000 /* beacon queue DMA OK (6) */ +#define R92C_IMR_BCNDOK7 0x01000000 /* beacon queue DMA OK (7) */ +#define R92C_IMR_BCNDOK8 0x02000000 /* beacon queue DMA OK (8) */ +#define R92C_IMR_BCNDMAINT1 0x04000000 /* beacon DMA interrupt 1 */ +#define R92C_IMR_BCNDMAINT2 0x08000000 /* beacon DMA interrupt 2 */ +#define R92C_IMR_BCNDMAINT3 0x10000000 /* beacon DMA interrupt 3 */ +#define R92C_IMR_BCNDMAINT4 0x20000000 /* beacon DMA interrupt 4 */ +#define R92C_IMR_BCNDMAINT5 0x40000000 /* beacon DMA interrupt 5 */ +#define R92C_IMR_BCNDMAINT6 0x80000000 /* beacon DMA interrupt 6 */ + +/* Shortcut. */ +#define R92C_IBSS_INT_MASK \ + (R92C_IMR_BCNINT | R92C_IMR_TBDOK | R92C_IMR_TBDER) + +#endif /* R92CE_REG_H */ diff --git a/sys/dev/rtwn/rtl8192c/pci/r92ce_rx.c b/sys/dev/rtwn/rtl8192c/pci/r92ce_rx.c new file mode 100644 index 000000000000..cdd62200c35a --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/pci/r92ce_rx.c @@ -0,0 +1,132 @@ +/* $OpenBSD: if_rtwn.c,v 1.6 2015/08/28 00:03:53 deraadt Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015 Stefan Sperling + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include +#include + + +int +r92ce_classify_intr(struct rtwn_softc *sc, void *arg, int len __unused) +{ + uint32_t status; + int *rings = arg; + int ret; + + *rings = 0; + status = rtwn_read_4(sc, R92C_HISR); + RTWN_DPRINTF(sc, RTWN_DEBUG_INTR, "%s: HISR %08X, HISRE %04X\n", + __func__, status, rtwn_read_2(sc, R92C_HISRE)); + if (status == 0 || status == 0xffffffff) + return (0); + + /* Disable interrupts. */ + rtwn_write_4(sc, R92C_HIMR, 0); + + /* Ack interrupts. */ + rtwn_write_4(sc, R92C_HISR, status); + + if (status & R92C_IMR_BDOK) + *rings |= (1 << RTWN_PCI_BEACON_QUEUE); + if (status & R92C_IMR_HIGHDOK) + *rings |= (1 << RTWN_PCI_HIGH_QUEUE); + if (status & R92C_IMR_MGNTDOK) + *rings |= (1 << RTWN_PCI_MGNT_QUEUE); + if (status & R92C_IMR_BKDOK) + *rings |= (1 << RTWN_PCI_BK_QUEUE); + if (status & R92C_IMR_BEDOK) + *rings |= (1 << RTWN_PCI_BE_QUEUE); + if (status & R92C_IMR_VIDOK) + *rings |= (1 << RTWN_PCI_VI_QUEUE); + if (status & R92C_IMR_VODOK) + *rings |= (1 << RTWN_PCI_VO_QUEUE); + + ret = 0; + if (status & R92C_IMR_RXFOVW) + ret |= RTWN_PCI_INTR_RX_OVERFLOW; + if (status & R92C_IMR_RDU) + ret |= RTWN_PCI_INTR_RX_DESC_UNAVAIL; + if (status & R92C_IMR_ROK) + ret |= RTWN_PCI_INTR_RX_DONE; + if (status & R92C_IMR_TXFOVW) + ret |= RTWN_PCI_INTR_TX_OVERFLOW; + if (status & R92C_IMR_PSTIMEOUT) + ret |= RTWN_PCI_INTR_PS_TIMEOUT; + + return (ret); +} + +#define R92C_INT_ENABLE (R92C_IMR_ROK | R92C_IMR_VODOK | R92C_IMR_VIDOK | \ + R92C_IMR_BEDOK | R92C_IMR_BKDOK | R92C_IMR_MGNTDOK | \ + R92C_IMR_HIGHDOK | R92C_IMR_BDOK | R92C_IMR_RDU | \ + R92C_IMR_RXFOVW) +void +r92ce_enable_intr(struct rtwn_pci_softc *pc) +{ + struct rtwn_softc *sc = &pc->pc_sc; + + /* Enable interrupts. */ + rtwn_write_4(sc, R92C_HIMR, R92C_INT_ENABLE); +} + +void +r92ce_start_xfers(struct rtwn_softc *sc) +{ + /* Clear pending interrupts. */ + rtwn_write_4(sc, R92C_HISR, 0xffffffff); + + /* Enable interrupts. */ + rtwn_write_4(sc, R92C_HIMR, R92C_INT_ENABLE); +} +#undef R92C_INT_ENABLE diff --git a/sys/dev/rtwn/rtl8192c/pci/r92ce_rx_desc.h b/sys/dev/rtwn/rtl8192c/pci/r92ce_rx_desc.h new file mode 100644 index 000000000000..476a9e882b6d --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/pci/r92ce_rx_desc.h @@ -0,0 +1,41 @@ +/* $OpenBSD: if_rtwnreg.h,v 1.3 2015/06/14 08:02:47 stsp Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015 Stefan Sperling + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef R92CE_RX_DESC_H +#define R92CE_RX_DESC_H + +#include + +/* Rx MAC descriptor (PCIe). */ +struct r92ce_rx_stat { + uint32_t rxdw0; + uint32_t rxdw1; + uint32_t rxdw2; + uint32_t rxdw3; + uint32_t rxdw4; + uint32_t tsf_low; + + uint32_t rxbufaddr; + uint32_t rxbufaddr64; +} __packed __attribute__((aligned(4))); + +#endif /* R92CE_RX_DESC_H */ diff --git a/sys/dev/rtwn/rtl8192c/pci/r92ce_tx.c b/sys/dev/rtwn/rtl8192c/pci/r92ce_tx.c new file mode 100644 index 000000000000..19de15b5a63e --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/pci/r92ce_tx.c @@ -0,0 +1,115 @@ +/* $OpenBSD: if_rtwn.c,v 1.6 2015/08/28 00:03:53 deraadt Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015 Stefan Sperling + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include +#include + + +void +r92ce_setup_tx_desc(struct rtwn_pci_softc *pc, void *desc, + uint32_t next_desc_addr) +{ + struct r92ce_tx_desc *txd = desc; + + /* setup tx desc */ + txd->nextdescaddr = htole32(next_desc_addr); +} + +void +r92ce_tx_postsetup(struct rtwn_pci_softc *pc, void *desc, + bus_dma_segment_t segs[]) +{ + struct r92ce_tx_desc *txd = desc; + + txd->txbufaddr = htole32(segs[0].ds_addr); + txd->txbufsize = txd->pktlen; + bus_space_barrier(pc->pc_st, pc->pc_sh, 0, pc->pc_mapsize, + BUS_SPACE_BARRIER_WRITE); +} + +void +r92ce_copy_tx_desc(void *dest, const void *src) +{ + struct r92ce_tx_desc *txd = dest; + size_t len = sizeof(struct r92c_tx_desc) + + sizeof(txd->txbufsize) + sizeof(txd->pad); + + if (src != NULL) + memcpy(dest, src, len); + else + memset(dest, 0, len); +} + +void +r92ce_dump_tx_desc(struct rtwn_softc *sc, const void *desc) +{ +#ifdef RTWN_DEBUG + const struct r92ce_tx_desc *txd = desc; + + RTWN_DPRINTF(sc, RTWN_DEBUG_XMIT_DESC, + "%s: len %d, off %d, flags0 %02X, dw: 1 %08X, 2 %08X, 3 %04X " + "(seq %04X), 4 %08X, 5 %08X, 6 %08X, size %04X, pad %04X, " + "addr: %08X (64: %08X), next: %08X (64: %08X), " + "rsvd: %08X %08X %08X %08X\n", + __func__, le16toh(txd->pktlen), txd->offset, txd->flags0, + le32toh(txd->txdw1), le32toh(txd->txdw2), le16toh(txd->txdw3), + le16toh(txd->txdseq), le32toh(txd->txdw4), le32toh(txd->txdw5), + le32toh(txd->txdw6), le16toh(txd->txbufsize), le16toh(txd->pad), + le32toh(txd->txbufaddr), le32toh(txd->txbufaddr64), + le32toh(txd->nextdescaddr), le32toh(txd->nextdescaddr64), + le32toh(txd->reserved[0]), le32toh(txd->reserved[1]), + le32toh(txd->reserved[2]), le32toh(txd->reserved[3])); +#endif +} diff --git a/sys/dev/rtwn/rtl8192c/pci/r92ce_tx_desc.h b/sys/dev/rtwn/rtl8192c/pci/r92ce_tx_desc.h new file mode 100644 index 000000000000..4153710a8428 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/pci/r92ce_tx_desc.h @@ -0,0 +1,55 @@ +/* $OpenBSD: if_rtwnreg.h,v 1.3 2015/06/14 08:02:47 stsp Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015 Stefan Sperling + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef R92CE_TX_DESC_H +#define R92CE_TX_DESC_H + +#include + +/* Tx MAC descriptor (PCIe). */ +struct r92ce_tx_desc { + uint16_t pktlen; + uint8_t offset; + uint8_t flags0; + + uint32_t txdw1; + uint32_t txdw2; + uint16_t txdw3; + uint16_t txdseq; + + uint32_t txdw4; + uint32_t txdw5; + uint32_t txdw6; + + uint16_t txbufsize; + uint16_t pad; + + uint32_t txbufaddr; + uint32_t txbufaddr64; + + uint32_t nextdescaddr; + uint32_t nextdescaddr64; + + uint32_t reserved[4]; +} __packed __attribute__((aligned(4))); + +#endif /* R92CE_TX_DESC_H */ diff --git a/sys/dev/rtwn/rtl8192c/r92c.h b/sys/dev/rtwn/rtl8192c/r92c.h new file mode 100644 index 000000000000..cd0c88db2ea4 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/r92c.h @@ -0,0 +1,115 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef RTL8192C_H +#define RTL8192C_H + +/* + * Global definitions. + */ +#define R92C_TXPKTBUF_COUNT 256 + +#define R92C_TX_PAGE_SIZE 128 +#define R92C_RX_DMA_BUFFER_SIZE 0x2800 + +#define R92C_MAX_FW_SIZE 0x4000 +#define R92C_MACID_MAX 31 +#define R92C_CAM_ENTRY_COUNT 32 + +#define R92C_CALIB_THRESHOLD 2 + + +/* + * Function declarations. + */ +/* r92c_attach.c */ +void r92c_detach_private(struct rtwn_softc *); +void r92c_read_chipid_vendor(struct rtwn_softc *, uint32_t); + +/* r92c_beacon.c */ +void r92c_beacon_init(struct rtwn_softc *, void *, int); +void r92c_beacon_enable(struct rtwn_softc *, int, int); + +/* r92c_calib.c */ +void r92c_iq_calib(struct rtwn_softc *); +void r92c_lc_calib(struct rtwn_softc *); +void r92c_temp_measure(struct rtwn_softc *); +uint8_t r92c_temp_read(struct rtwn_softc *); + +/* r92c_chan.c */ +void r92c_get_txpower(struct rtwn_softc *, int, + struct ieee80211_channel *, uint16_t[]); +void r92c_set_bw20(struct rtwn_softc *, uint8_t); +void r92c_set_chan(struct rtwn_softc *, struct ieee80211_channel *); +void r92c_set_gain(struct rtwn_softc *, uint8_t); +void r92c_scan_start(struct ieee80211com *); +void r92c_scan_end(struct ieee80211com *); + +/* r92c_fw.c */ +#ifndef RTWN_WITHOUT_UCODE +void r92c_fw_reset(struct rtwn_softc *, int); +void r92c_fw_download_enable(struct rtwn_softc *, int); +#endif +void r92c_joinbss_rpt(struct rtwn_softc *, int); +#ifndef RTWN_WITHOUT_UCODE +int r92c_set_rsvd_page(struct rtwn_softc *, int, int, int); +int r92c_set_pwrmode(struct rtwn_softc *, struct ieee80211vap *, int); +void r92c_set_rssi(struct rtwn_softc *); +void r92c_handle_c2h_report(void *); +#endif + +/* r92c_init.c */ +int r92c_check_condition(struct rtwn_softc *, const uint8_t[]); +int r92c_set_page_size(struct rtwn_softc *); +void r92c_init_bb_common(struct rtwn_softc *); +int r92c_init_rf_chain(struct rtwn_softc *, + const struct rtwn_rf_prog *, int); +void r92c_init_rf_common(struct rtwn_softc *); +void r92c_init_rf(struct rtwn_softc *); +void r92c_init_edca(struct rtwn_softc *); +void r92c_init_ampdu(struct rtwn_softc *); +void r92c_init_antsel(struct rtwn_softc *); +void r92c_pa_bias_init(struct rtwn_softc *); + +/* r92c_rf.c */ +uint32_t r92c_rf_read(struct rtwn_softc *, int, uint8_t); +void r92c_rf_write(struct rtwn_softc *, int, uint8_t, uint32_t); + +/* r92c_rom.c */ +void r92c_efuse_postread(struct rtwn_softc *); +void r92c_parse_rom(struct rtwn_softc *, uint8_t *); + +/* r92c_rx.c */ +int8_t r92c_get_rssi_cck(struct rtwn_softc *, void *); +int8_t r92c_get_rssi_ofdm(struct rtwn_softc *, void *); +uint8_t r92c_rx_radiotap_flags(const void *); + +/* r92c_tx.c */ +void r92c_tx_enable_ampdu(void *, int); +void r92c_tx_setup_hwseq(void *); +void r92c_tx_setup_macid(void *, int); +void r92c_fill_tx_desc(struct rtwn_softc *, struct ieee80211_node *, + struct mbuf *, void *, uint8_t, int); +void r92c_fill_tx_desc_raw(struct rtwn_softc *, struct ieee80211_node *, + struct mbuf *, void *, const struct ieee80211_bpf_params *); +void r92c_fill_tx_desc_null(struct rtwn_softc *, void *, int, int, int); +uint8_t r92c_tx_radiotap_flags(const void *); + +#endif /* RTL8192C_H */ diff --git a/sys/dev/rtwn/rtl8192c/r92c_attach.c b/sys/dev/rtwn/rtl8192c/r92c_attach.c new file mode 100644 index 000000000000..a0df8ec7688d --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/r92c_attach.c @@ -0,0 +1,80 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include + + +void +r92c_detach_private(struct rtwn_softc *sc) +{ + struct r92c_softc *rs = sc->sc_priv; + + free(rs, M_RTWN_PRIV); +} + +void +r92c_read_chipid_vendor(struct rtwn_softc *sc, uint32_t reg_sys_cfg) +{ + struct r92c_softc *rs = sc->sc_priv; + + if (reg_sys_cfg & R92C_SYS_CFG_TYPE_92C) { + rs->chip |= R92C_CHIP_92C; + /* Check if it is a castrated 8192C. */ + if (MS(rtwn_read_4(sc, R92C_HPON_FSM), + R92C_HPON_FSM_CHIP_BONDING_ID) == + R92C_HPON_FSM_CHIP_BONDING_ID_92C_1T2R) + rs->chip |= R92C_CHIP_92C_1T2R; + } + if (reg_sys_cfg & R92C_SYS_CFG_VENDOR_UMC) { + if (MS(reg_sys_cfg, R92C_SYS_CFG_CHIP_VER_RTL) == 0) + rs->chip |= R92C_CHIP_UMC_A_CUT; + } +} diff --git a/sys/dev/rtwn/rtl8192c/r92c_beacon.c b/sys/dev/rtwn/rtl8192c/r92c_beacon.c new file mode 100644 index 000000000000..54b882b6707c --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/r92c_beacon.c @@ -0,0 +1,85 @@ +/*- + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include + + +void +r92c_beacon_init(struct rtwn_softc *sc, void *buf, int id) +{ + struct r92c_tx_desc *txd = (struct r92c_tx_desc *)buf; + + /* + * NB: there is no need to setup HWSEQ_EN bit; + * QSEL_BEACON already implies it. + */ + txd->flags0 |= R92C_FLAGS0_BMCAST | R92C_FLAGS0_FSG | R92C_FLAGS0_LSG; + txd->txdw1 |= htole32( + SM(R92C_TXDW1_QSEL, R92C_TXDW1_QSEL_BEACON) | + SM(R92C_TXDW1_RAID, R92C_RAID_11B)); + + rtwn_r92c_tx_setup_macid(sc, buf, id); + txd->txdw4 |= htole32(R92C_TXDW4_DRVRATE); + txd->txdw4 |= htole32(SM(R92C_TXDW4_SEQ_SEL, id)); + txd->txdw5 |= htole32(SM(R92C_TXDW5_DATARATE, RTWN_RIDX_CCK1)); +} + +void +r92c_beacon_enable(struct rtwn_softc *sc, int id, int enable) +{ + + if (enable) { + rtwn_setbits_1(sc, R92C_BCN_CTRL(id), + 0, R92C_BCN_CTRL_EN_BCN); + } else { + rtwn_setbits_1(sc, R92C_BCN_CTRL(id), + R92C_BCN_CTRL_EN_BCN, 0); + } +} diff --git a/sys/dev/rtwn/rtl8192c/r92c_calib.c b/sys/dev/rtwn/rtl8192c/r92c_calib.c new file mode 100644 index 000000000000..ded410eb9f09 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/r92c_calib.c @@ -0,0 +1,113 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + + +void +r92c_iq_calib(struct rtwn_softc *sc) +{ + /* XXX TODO */ +} + +void +r92c_lc_calib(struct rtwn_softc *sc) +{ + uint32_t rf_ac[2]; + uint8_t txmode; + int i; + + txmode = rtwn_read_1(sc, R92C_OFDM1_LSTF + 3); + if ((txmode & 0x70) != 0) { + /* Disable all continuous Tx. */ + rtwn_write_1(sc, R92C_OFDM1_LSTF + 3, txmode & ~0x70); + + /* Set RF mode to standby mode. */ + for (i = 0; i < sc->nrxchains; i++) { + rf_ac[i] = rtwn_rf_read(sc, i, R92C_RF_AC); + rtwn_rf_write(sc, i, R92C_RF_AC, + RW(rf_ac[i], R92C_RF_AC_MODE, + R92C_RF_AC_MODE_STANDBY)); + } + } else { + /* Block all Tx queues. */ + rtwn_write_1(sc, R92C_TXPAUSE, R92C_TX_QUEUE_ALL); + } + /* Start calibration. */ + rtwn_rf_setbits(sc, 0, R92C_RF_CHNLBW, 0, R92C_RF_CHNLBW_LCSTART); + + /* Give calibration the time to complete. */ + rtwn_delay(sc, 100000); /* 100ms */ + + /* Restore configuration. */ + if ((txmode & 0x70) != 0) { + /* Restore Tx mode. */ + rtwn_write_1(sc, R92C_OFDM1_LSTF + 3, txmode); + /* Restore RF mode. */ + for (i = 0; i < sc->nrxchains; i++) + rtwn_rf_write(sc, i, R92C_RF_AC, rf_ac[i]); + } else { + /* Unblock all Tx queues. */ + rtwn_write_1(sc, R92C_TXPAUSE, 0x00); + } +} + +void +r92c_temp_measure(struct rtwn_softc *sc) +{ + rtwn_rf_write(sc, 0, R92C_RF_T_METER, R92C_RF_T_METER_START); +} + +uint8_t +r92c_temp_read(struct rtwn_softc *sc) +{ + return (MS(rtwn_rf_read(sc, 0, R92C_RF_T_METER), + R92C_RF_T_METER_VAL)); +} diff --git a/sys/dev/rtwn/rtl8192c/r92c_chan.c b/sys/dev/rtwn/rtl8192c/r92c_chan.c new file mode 100644 index 000000000000..59443faf205f --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/r92c_chan.c @@ -0,0 +1,351 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include +#include + + +static int +r92c_get_power_group(struct rtwn_softc *sc, struct ieee80211_channel *c) +{ + uint8_t chan; + int group; + + chan = rtwn_chan2centieee(c); + if (IEEE80211_IS_CHAN_2GHZ(c)) { + if (chan <= 3) group = 0; + else if (chan <= 9) group = 1; + else if (chan <= 14) group = 2; + else { + KASSERT(0, ("wrong 2GHz channel %d!\n", chan)); + return (-1); + } + } else { + KASSERT(0, ("wrong channel band (flags %08X)\n", c->ic_flags)); + return (-1); + } + + return (group); +} + +/* XXX recheck */ +void +r92c_get_txpower(struct rtwn_softc *sc, int chain, + struct ieee80211_channel *c, uint16_t power[RTWN_RIDX_COUNT]) +{ + struct r92c_softc *rs = sc->sc_priv; + struct rtwn_r92c_txpwr *rt = rs->rs_txpwr; + const struct rtwn_r92c_txagc *base = rs->rs_txagc; + uint8_t ofdmpow, htpow, diff, max; + int max_mcs, ridx, group; + + /* Determine channel group. */ + group = r92c_get_power_group(sc, c); + if (group == -1) { /* shouldn't happen */ + device_printf(sc->sc_dev, "%s: incorrect channel\n", __func__); + return; + } + + /* XXX net80211 regulatory */ + + max_mcs = RTWN_RIDX_MCS(sc->ntxchains * 8 - 1); + KASSERT(max_mcs <= RTWN_RIDX_COUNT, ("increase ridx limit\n")); + + memset(power, 0, max_mcs * sizeof(power[0])); + if (rs->regulatory == 0) { + for (ridx = RTWN_RIDX_CCK1; ridx <= RTWN_RIDX_CCK11; ridx++) + power[ridx] = base[chain].pwr[0][ridx]; + } + for (ridx = RTWN_RIDX_OFDM6; ridx < RTWN_RIDX_COUNT; ridx++) { + if (rs->regulatory == 3) { + power[ridx] = base[chain].pwr[0][ridx]; + /* Apply vendor limits. */ + if (IEEE80211_IS_CHAN_HT40(c)) + max = rt->ht40_max_pwr[chain][group]; + else + max = rt->ht20_max_pwr[chain][group]; + if (power[ridx] > max) + power[ridx] = max; + } else if (rs->regulatory == 1) { + if (!IEEE80211_IS_CHAN_HT40(c)) + power[ridx] = base[chain].pwr[group][ridx]; + } else if (rs->regulatory != 2) + power[ridx] = base[chain].pwr[0][ridx]; + } + + /* Compute per-CCK rate Tx power. */ + for (ridx = RTWN_RIDX_CCK1; ridx <= RTWN_RIDX_CCK11; ridx++) + power[ridx] += rt->cck_tx_pwr[chain][group]; + + htpow = rt->ht40_1s_tx_pwr[chain][group]; + if (sc->ntxchains > 1) { + /* Apply reduction for 2 spatial streams. */ + diff = rt->ht40_2s_tx_pwr_diff[chain][group]; + htpow = (htpow > diff) ? htpow - diff : 0; + } + + /* Compute per-OFDM rate Tx power. */ + diff = rt->ofdm_tx_pwr_diff[chain][group]; + ofdmpow = htpow + diff; /* HT->OFDM correction. */ + for (ridx = RTWN_RIDX_OFDM6; ridx <= RTWN_RIDX_OFDM54; ridx++) + power[ridx] += ofdmpow; + + /* Compute per-MCS Tx power. */ + if (!IEEE80211_IS_CHAN_HT40(c)) { + diff = rt->ht20_tx_pwr_diff[chain][group]; + htpow += diff; /* HT40->HT20 correction. */ + } + for (ridx = RTWN_RIDX_MCS(0); ridx <= max_mcs; ridx++) + power[ridx] += htpow; + + /* Apply max limit. */ + for (ridx = RTWN_RIDX_CCK1; ridx <= max_mcs; ridx++) { + if (power[ridx] > R92C_MAX_TX_PWR) + power[ridx] = R92C_MAX_TX_PWR; + } +} + +static void +r92c_write_txpower(struct rtwn_softc *sc, int chain, + uint16_t power[RTWN_RIDX_COUNT]) +{ + uint32_t reg; + + /* Write per-CCK rate Tx power. */ + if (chain == 0) { + reg = rtwn_bb_read(sc, R92C_TXAGC_A_CCK1_MCS32); + reg = RW(reg, R92C_TXAGC_A_CCK1, power[RTWN_RIDX_CCK1]); + rtwn_bb_write(sc, R92C_TXAGC_A_CCK1_MCS32, reg); + reg = rtwn_bb_read(sc, R92C_TXAGC_B_CCK11_A_CCK2_11); + reg = RW(reg, R92C_TXAGC_A_CCK2, power[RTWN_RIDX_CCK2]); + reg = RW(reg, R92C_TXAGC_A_CCK55, power[RTWN_RIDX_CCK55]); + reg = RW(reg, R92C_TXAGC_A_CCK11, power[RTWN_RIDX_CCK11]); + rtwn_bb_write(sc, R92C_TXAGC_B_CCK11_A_CCK2_11, reg); + } else { + reg = rtwn_bb_read(sc, R92C_TXAGC_B_CCK1_55_MCS32); + reg = RW(reg, R92C_TXAGC_B_CCK1, power[RTWN_RIDX_CCK1]); + reg = RW(reg, R92C_TXAGC_B_CCK2, power[RTWN_RIDX_CCK2]); + reg = RW(reg, R92C_TXAGC_B_CCK55, power[RTWN_RIDX_CCK55]); + rtwn_bb_write(sc, R92C_TXAGC_B_CCK1_55_MCS32, reg); + reg = rtwn_bb_read(sc, R92C_TXAGC_B_CCK11_A_CCK2_11); + reg = RW(reg, R92C_TXAGC_B_CCK11, power[RTWN_RIDX_CCK11]); + rtwn_bb_write(sc, R92C_TXAGC_B_CCK11_A_CCK2_11, reg); + } + /* Write per-OFDM rate Tx power. */ + rtwn_bb_write(sc, R92C_TXAGC_RATE18_06(chain), + SM(R92C_TXAGC_RATE06, power[RTWN_RIDX_OFDM6]) | + SM(R92C_TXAGC_RATE09, power[RTWN_RIDX_OFDM9]) | + SM(R92C_TXAGC_RATE12, power[RTWN_RIDX_OFDM12]) | + SM(R92C_TXAGC_RATE18, power[RTWN_RIDX_OFDM18])); + rtwn_bb_write(sc, R92C_TXAGC_RATE54_24(chain), + SM(R92C_TXAGC_RATE24, power[RTWN_RIDX_OFDM24]) | + SM(R92C_TXAGC_RATE36, power[RTWN_RIDX_OFDM36]) | + SM(R92C_TXAGC_RATE48, power[RTWN_RIDX_OFDM48]) | + SM(R92C_TXAGC_RATE54, power[RTWN_RIDX_OFDM54])); + /* Write per-MCS Tx power. */ + rtwn_bb_write(sc, R92C_TXAGC_MCS03_MCS00(chain), + SM(R92C_TXAGC_MCS00, power[RTWN_RIDX_MCS(0)]) | + SM(R92C_TXAGC_MCS01, power[RTWN_RIDX_MCS(1)]) | + SM(R92C_TXAGC_MCS02, power[RTWN_RIDX_MCS(2)]) | + SM(R92C_TXAGC_MCS03, power[RTWN_RIDX_MCS(3)])); + rtwn_bb_write(sc, R92C_TXAGC_MCS07_MCS04(chain), + SM(R92C_TXAGC_MCS04, power[RTWN_RIDX_MCS(4)]) | + SM(R92C_TXAGC_MCS05, power[RTWN_RIDX_MCS(5)]) | + SM(R92C_TXAGC_MCS06, power[RTWN_RIDX_MCS(6)]) | + SM(R92C_TXAGC_MCS07, power[RTWN_RIDX_MCS(7)])); + if (sc->ntxchains >= 2) { + rtwn_bb_write(sc, R92C_TXAGC_MCS11_MCS08(chain), + SM(R92C_TXAGC_MCS08, power[RTWN_RIDX_MCS(8)]) | + SM(R92C_TXAGC_MCS09, power[RTWN_RIDX_MCS(9)]) | + SM(R92C_TXAGC_MCS10, power[RTWN_RIDX_MCS(10)]) | + SM(R92C_TXAGC_MCS11, power[RTWN_RIDX_MCS(11)])); + rtwn_bb_write(sc, R92C_TXAGC_MCS15_MCS12(chain), + SM(R92C_TXAGC_MCS12, power[RTWN_RIDX_MCS(12)]) | + SM(R92C_TXAGC_MCS13, power[RTWN_RIDX_MCS(13)]) | + SM(R92C_TXAGC_MCS14, power[RTWN_RIDX_MCS(14)]) | + SM(R92C_TXAGC_MCS15, power[RTWN_RIDX_MCS(15)])); + } +} + +static void +r92c_set_txpower(struct rtwn_softc *sc, struct ieee80211_channel *c) +{ + uint16_t power[RTWN_RIDX_COUNT]; + int i; + + for (i = 0; i < sc->ntxchains; i++) { + /* Compute per-rate Tx power values. */ + rtwn_r92c_get_txpower(sc, i, c, power); +#ifdef RTWN_DEBUG + if (sc->sc_debug & RTWN_DEBUG_TXPWR) { + int ridx; + + /* Dump per-rate Tx power values. */ + printf("Tx power for chain %d:\n", i); + for (ridx = RTWN_RIDX_CCK1; + ridx < RTWN_RIDX_COUNT; + ridx++) + printf("Rate %d = %u\n", ridx, power[ridx]); + } +#endif + /* Write per-rate Tx power values to hardware. */ + r92c_write_txpower(sc, i, power); + } +} + +static void +r92c_set_bw40(struct rtwn_softc *sc, uint8_t chan, int prichlo) +{ + struct r92c_softc *rs = sc->sc_priv; + + rtwn_setbits_1(sc, R92C_BWOPMODE, R92C_BWOPMODE_20MHZ, 0); + rtwn_setbits_1(sc, R92C_RRSR + 2, 0x6f, (prichlo ? 1 : 2) << 5); + + rtwn_bb_setbits(sc, R92C_FPGA0_RFMOD, 0, R92C_RFMOD_40MHZ); + rtwn_bb_setbits(sc, R92C_FPGA1_RFMOD, 0, R92C_RFMOD_40MHZ); + + /* Set CCK side band. */ + rtwn_bb_setbits(sc, R92C_CCK0_SYSTEM, 0x10, + (prichlo ? 0 : 1) << 4); + + rtwn_bb_setbits(sc, R92C_OFDM1_LSTF, 0x0c00, + (prichlo ? 1 : 2) << 10); + + rtwn_bb_setbits(sc, R92C_FPGA0_ANAPARAM2, + R92C_FPGA0_ANAPARAM2_CBW20, 0); + + rtwn_bb_setbits(sc, 0x818, 0x0c000000, (prichlo ? 2 : 1) << 26); + + /* Select 40MHz bandwidth. */ + rtwn_rf_write(sc, 0, R92C_RF_CHNLBW, + (rs->rf_chnlbw[0] & ~0xfff) | chan); +} + +void +r92c_set_bw20(struct rtwn_softc *sc, uint8_t chan) +{ + struct r92c_softc *rs = sc->sc_priv; + + rtwn_setbits_1(sc, R92C_BWOPMODE, 0, R92C_BWOPMODE_20MHZ); + + rtwn_bb_setbits(sc, R92C_FPGA0_RFMOD, R92C_RFMOD_40MHZ, 0); + rtwn_bb_setbits(sc, R92C_FPGA1_RFMOD, R92C_RFMOD_40MHZ, 0); + + rtwn_bb_setbits(sc, R92C_FPGA0_ANAPARAM2, 0, + R92C_FPGA0_ANAPARAM2_CBW20); + + /* Select 20MHz bandwidth. */ + rtwn_rf_write(sc, 0, R92C_RF_CHNLBW, + (rs->rf_chnlbw[0] & ~0xfff) | chan | R92C_RF_CHNLBW_BW20); +} + +void +r92c_set_chan(struct rtwn_softc *sc, struct ieee80211_channel *c) +{ + struct r92c_softc *rs = sc->sc_priv; + u_int chan; + int i; + + chan = rtwn_chan2centieee(c); + + /* Set Tx power for this new channel. */ + r92c_set_txpower(sc, c); + + for (i = 0; i < sc->nrxchains; i++) { + rtwn_rf_write(sc, i, R92C_RF_CHNLBW, + RW(rs->rf_chnlbw[i], R92C_RF_CHNLBW_CHNL, chan)); + } + if (IEEE80211_IS_CHAN_HT40(c)) + r92c_set_bw40(sc, chan, IEEE80211_IS_CHAN_HT40U(c)); + else + rtwn_r92c_set_bw20(sc, chan); +} + +void +r92c_set_gain(struct rtwn_softc *sc, uint8_t gain) +{ + + rtwn_bb_setbits(sc, R92C_OFDM0_AGCCORE1(0), + R92C_OFDM0_AGCCORE1_GAIN_M, gain); + rtwn_bb_setbits(sc, R92C_OFDM0_AGCCORE1(1), + R92C_OFDM0_AGCCORE1_GAIN_M, gain); +} + +void +r92c_scan_start(struct ieee80211com *ic) +{ + struct rtwn_softc *sc = ic->ic_softc; + struct r92c_softc *rs = sc->sc_priv; + + RTWN_LOCK(sc); + /* Set gain for scanning. */ + rtwn_r92c_set_gain(sc, 0x20); + RTWN_UNLOCK(sc); + + rs->rs_scan_start(ic); +} + +void +r92c_scan_end(struct ieee80211com *ic) +{ + struct rtwn_softc *sc = ic->ic_softc; + struct r92c_softc *rs = sc->sc_priv; + + RTWN_LOCK(sc); + /* Set gain under link. */ + rtwn_r92c_set_gain(sc, 0x32); + RTWN_UNLOCK(sc); + + rs->rs_scan_end(ic); +} diff --git a/sys/dev/rtwn/rtl8192c/r92c_fw.c b/sys/dev/rtwn/rtl8192c/r92c_fw.c new file mode 100644 index 000000000000..b6de795e37ac --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/r92c_fw.c @@ -0,0 +1,520 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + + +#ifndef RTWN_WITHOUT_UCODE +static int +r92c_fw_cmd(struct rtwn_softc *sc, uint8_t id, const void *buf, int len) +{ + struct r92c_fw_cmd cmd; + int ntries, error; + + KASSERT(len <= sizeof(cmd.msg), + ("%s: firmware command too long (%d > %zu)\n", + __func__, len, sizeof(cmd.msg))); + + if (!(sc->sc_flags & RTWN_FW_LOADED)) { + RTWN_DPRINTF(sc, RTWN_DEBUG_FIRMWARE, "%s: firmware " + "was not loaded; command (id %u) will be discarded\n", + __func__, id); + return (0); + } + + /* Wait for current FW box to be empty. */ + for (ntries = 0; ntries < 50; ntries++) { + if (!(rtwn_read_1(sc, R92C_HMETFR) & (1 << sc->fwcur))) + break; + rtwn_delay(sc, 2000); + } + if (ntries == 100) { + device_printf(sc->sc_dev, + "could not send firmware command\n"); + return (ETIMEDOUT); + } + memset(&cmd, 0, sizeof(cmd)); + cmd.id = id; + if (len > 3) { + /* Ext command: [id : byte2 : byte3 : byte4 : byte0 : byte1] */ + cmd.id |= R92C_CMD_FLAG_EXT; + memcpy(cmd.msg, (const uint8_t *)buf + 2, len - 2); + memcpy(cmd.msg + 3, buf, 2); + } else + memcpy(cmd.msg, buf, len); + + /* Write the first word last since that will trigger the FW. */ + if (len > 3) { + error = rtwn_write_2(sc, R92C_HMEBOX_EXT(sc->fwcur), + *(uint16_t *)((uint8_t *)&cmd + 4)); + if (error != 0) + return (error); + } + error = rtwn_write_4(sc, R92C_HMEBOX(sc->fwcur), + *(uint32_t *)&cmd); + if (error != 0) + return (error); + + sc->fwcur = (sc->fwcur + 1) % R92C_H2C_NBOX; + + return (0); +} + +void +r92c_fw_reset(struct rtwn_softc *sc, int reason) +{ + int ntries; + + if (reason == RTWN_FW_RESET_CHECKSUM) + return; + + /* Tell 8051 to reset itself. */ + rtwn_write_1(sc, R92C_HMETFR + 3, 0x20); + + /* Wait until 8051 resets by itself. */ + for (ntries = 0; ntries < 100; ntries++) { + if ((rtwn_read_2(sc, R92C_SYS_FUNC_EN) & + R92C_SYS_FUNC_EN_CPUEN) == 0) + return; + rtwn_delay(sc, 50); + } + /* Force 8051 reset. */ + rtwn_setbits_1_shift(sc, R92C_SYS_FUNC_EN, + R92C_SYS_FUNC_EN_CPUEN, 0, 1); +} + +void +r92c_fw_download_enable(struct rtwn_softc *sc, int enable) +{ + if (enable) { + /* 8051 enable. */ + rtwn_setbits_1_shift(sc, R92C_SYS_FUNC_EN, 0, + R92C_SYS_FUNC_EN_CPUEN, 1); + /* MCU firmware download enable. */ + rtwn_setbits_1(sc, R92C_MCUFWDL, 0, R92C_MCUFWDL_EN); + /* 8051 reset. */ + rtwn_setbits_1_shift(sc, R92C_MCUFWDL, R92C_MCUFWDL_ROM_DLEN, + 0, 2); + } else { + /* MCU download disable. */ + rtwn_setbits_1(sc, R92C_MCUFWDL, R92C_MCUFWDL_EN, 0); + /* Reserved for f/w extension. */ + rtwn_write_1(sc, R92C_MCUFWDL + 1, 0); + } +} +#endif + +/* + * Initialize firmware rate adaptation. + */ +#ifndef RTWN_WITHOUT_UCODE +static int +r92c_send_ra_cmd(struct rtwn_softc *sc, int macid, uint32_t rates, + int maxrate) +{ + struct r92c_fw_cmd_macid_cfg cmd; + uint8_t mode; + int error = 0; + + /* XXX should be called directly from iv_newstate() for MACID_BC */ + /* XXX joinbss, not send_ra_cmd() */ +#ifdef RTWN_TODO + /* NB: group addressed frames are done at 11bg rates for now */ + if (ic->ic_curmode == IEEE80211_MODE_11B) + mode = R92C_RAID_11B; + else + mode = R92C_RAID_11BG; + /* XXX misleading 'mode' value here for unicast frames */ + RTWN_DPRINTF(sc, RTWN_DEBUG_RA, + "%s: mode 0x%x, rates 0x%08x, basicrates 0x%08x\n", __func__, + mode, rates, basicrates); + + /* Set rates mask for group addressed frames. */ + cmd.macid = RTWN_MACID_BC | R92C_CMD_MACID_VALID; + cmd.mask = htole32(mode << 28 | basicrates); + error = rtwn_fw_cmd(sc, R92C_CMD_MACID_CONFIG, &cmd, sizeof(cmd)); + if (error != 0) { + device_printf(sc->sc_dev, + "could not set RA mask for broadcast station\n"); + return (error); + } +#endif + + /* Set rates mask for unicast frames. */ + if (maxrate >= RTWN_RIDX_MCS(0)) + mode = R92C_RAID_11GN; + else if (maxrate >= RTWN_RIDX_OFDM6) + mode = R92C_RAID_11BG; + else + mode = R92C_RAID_11B; + cmd.macid = macid | R92C_CMD_MACID_VALID; + cmd.mask = htole32(mode << 28 | rates); + error = r92c_fw_cmd(sc, R92C_CMD_MACID_CONFIG, &cmd, sizeof(cmd)); + if (error != 0) { + device_printf(sc->sc_dev, + "%s: could not set RA mask for %d station\n", + __func__, macid); + return (error); + } + + return (0); +} +#endif + +static void +r92c_init_ra(struct rtwn_softc *sc, int macid) +{ + struct ieee80211_htrateset *rs_ht; + struct ieee80211_node *ni; + uint32_t rates; + int maxrate; + + RTWN_NT_LOCK(sc); + if (sc->node_list[macid] == NULL) { + RTWN_DPRINTF(sc, RTWN_DEBUG_RA, "%s: macid %d, ni is NULL\n", + __func__, macid); + RTWN_NT_UNLOCK(sc); + return; + } + + ni = ieee80211_ref_node(sc->node_list[macid]); + if (ni->ni_flags & IEEE80211_NODE_HT) + rs_ht = &ni->ni_htrates; + else + rs_ht = NULL; + /* XXX MACID_BC */ + rtwn_get_rates(sc, &ni->ni_rates, rs_ht, &rates, &maxrate, 0); + RTWN_NT_UNLOCK(sc); + +#ifndef RTWN_WITHOUT_UCODE + if (sc->sc_ratectl == RTWN_RATECTL_FW) { + r92c_send_ra_cmd(sc, macid, rates, maxrate); + } +#endif + + rtwn_write_1(sc, R92C_INIDATA_RATE_SEL(macid), maxrate); + + ieee80211_free_node(ni); +} + +void +r92c_joinbss_rpt(struct rtwn_softc *sc, int macid) +{ +#ifndef RTWN_WITHOUT_UCODE + struct r92c_softc *rs = sc->sc_priv; + struct ieee80211vap *vap; + struct r92c_fw_cmd_joinbss_rpt cmd; + + if (sc->vaps[0] == NULL) /* XXX fix */ + goto end; + + vap = &sc->vaps[0]->vap; + if ((vap->iv_state == IEEE80211_S_RUN) ^ + !(rs->rs_flags & R92C_FLAG_ASSOCIATED)) + goto end; + + if (rs->rs_flags & R92C_FLAG_ASSOCIATED) { + cmd.mstatus = R92C_MSTATUS_DISASSOC; + rs->rs_flags &= ~R92C_FLAG_ASSOCIATED; + } else { + cmd.mstatus = R92C_MSTATUS_ASSOC; + rs->rs_flags |= R92C_FLAG_ASSOCIATED; + } + + if (r92c_fw_cmd(sc, R92C_CMD_JOINBSS_RPT, &cmd, sizeof(cmd)) != 0) { + device_printf(sc->sc_dev, "%s: cannot change media status!\n", + __func__); + } + +end: +#endif + + /* TODO: init rates for RTWN_MACID_BC. */ + if (macid & RTWN_MACID_VALID) + r92c_init_ra(sc, macid & ~RTWN_MACID_VALID); +} + +#ifndef RTWN_WITHOUT_UCODE +int +r92c_set_rsvd_page(struct rtwn_softc *sc, int probe_resp, int null, + int qos_null) +{ + struct r92c_fw_cmd_rsvdpage rsvd; + + rsvd.probe_resp = probe_resp; + rsvd.ps_poll = 0; + rsvd.null_data = null; + + return (r92c_fw_cmd(sc, R92C_CMD_RSVD_PAGE, &rsvd, sizeof(rsvd))); +} + +int +r92c_set_pwrmode(struct rtwn_softc *sc, struct ieee80211vap *vap, + int off) +{ + struct r92c_fw_cmd_pwrmode mode; + int error; + + /* XXX dm_RF_saving */ + + if (off && vap->iv_state == IEEE80211_S_RUN && + (vap->iv_flags & IEEE80211_F_PMGTON)) + mode.mode = R92C_PWRMODE_MIN; + else + mode.mode = R92C_PWRMODE_CAM; + mode.smart_ps = R92C_PWRMODE_SMARTPS_NULLDATA; + mode.bcn_pass = 1; /* XXX */ + error = r92c_fw_cmd(sc, R92C_CMD_SET_PWRMODE, &mode, sizeof(mode)); + if (error != 0) { + device_printf(sc->sc_dev, + "%s: CMD_SET_PWRMODE was not sent, error %d\n", + __func__, error); + } + + return (error); +} + +void +r92c_set_rssi(struct rtwn_softc *sc) +{ + struct ieee80211_node *ni; + struct rtwn_node *rn; + struct r92c_fw_cmd_rssi cmd; + int i; + + cmd.reserved = 0; + + RTWN_NT_LOCK(sc); + for (i = 0; i < sc->macid_limit; i++) { + /* XXX optimize? */ + ni = sc->node_list[i]; + if (ni == NULL) + continue; + + rn = RTWN_NODE(ni); + cmd.macid = i; + cmd.pwdb = rn->avg_pwdb; + RTWN_DPRINTF(sc, RTWN_DEBUG_RSSI, + "%s: sending RSSI command (macid %d, rssi %d)\n", + __func__, i, rn->avg_pwdb); + + RTWN_NT_UNLOCK(sc); + r92c_fw_cmd(sc, R92C_CMD_RSSI_SETTING, &cmd, sizeof(cmd)); + RTWN_NT_LOCK(sc); + } + RTWN_NT_UNLOCK(sc); +} + +static void +r92c_ratectl_tx_complete(struct rtwn_softc *sc, uint8_t *buf, int len) +{ +#if __FreeBSD_version >= 1200012 + struct ieee80211_ratectl_tx_status txs; +#endif + struct r92c_c2h_tx_rpt *rpt; + struct ieee80211_node *ni; + uint8_t macid; + int ntries; + + if (sc->sc_ratectl != RTWN_RATECTL_NET80211) { + /* shouldn't happen */ + device_printf(sc->sc_dev, "%s called while ratectl = %d!\n", + __func__, sc->sc_ratectl); + return; + } + + rpt = (struct r92c_c2h_tx_rpt *)buf; + if (len != sizeof(*rpt)) { + device_printf(sc->sc_dev, + "%s: wrong report size (%d, must be %zu)\n", + __func__, len, sizeof(*rpt)); + return; + } + + RTWN_DPRINTF(sc, RTWN_DEBUG_INTR, + "%s: ccx report dump: 0: %02X, 1: %02X, queue time: " + "low %02X, high %02X, 4: %02X, 5: %02X, 6: %02X, 7: %02X\n", + __func__, rpt->rptb0, rpt->rptb1, rpt->queue_time_low, + rpt->queue_time_high, rpt->rptb4, rpt->rptb5, rpt->rptb6, + rpt->rptb7); + + macid = MS(rpt->rptb5, R92C_RPTB5_MACID); + if (macid > sc->macid_limit) { + device_printf(sc->sc_dev, + "macid %u is too big; increase MACID_MAX limit\n", + macid); + return; + } + + ntries = MS(rpt->rptb0, R92C_RPTB0_RETRY_CNT); + + RTWN_NT_LOCK(sc); + ni = sc->node_list[macid]; + if (ni != NULL) { + RTWN_DPRINTF(sc, RTWN_DEBUG_INTR, "%s: frame for macid %u was" + "%s sent (%d retries)\n", __func__, macid, + (rpt->rptb7 & R92C_RPTB7_PKT_OK) ? "" : " not", + ntries); + +#if __FreeBSD_version >= 1200012 + txs.flags = IEEE80211_RATECTL_STATUS_LONG_RETRY; + txs.long_retries = ntries; + if (rpt->rptb7 & R92C_RPTB7_PKT_OK) + txs.status = IEEE80211_RATECTL_TX_SUCCESS; + else if (rpt->rptb6 & R92C_RPTB6_RETRY_OVER) + txs.status = IEEE80211_RATECTL_TX_FAIL_LONG; /* XXX */ + else if (rpt->rptb6 & R92C_RPTB6_LIFE_EXPIRE) + txs.status = IEEE80211_RATECTL_TX_FAIL_EXPIRED; + else + txs.status = IEEE80211_RATECTL_TX_FAIL_UNSPECIFIED; + ieee80211_ratectl_tx_complete(ni, &txs); +#else + struct ieee80211vap *vap = ni->ni_vap; + if (rpt->rptb7 & R92C_RPTB7_PKT_OK) { + ieee80211_ratectl_tx_complete(vap, ni, + IEEE80211_RATECTL_TX_SUCCESS, &ntries, NULL); + } else { + ieee80211_ratectl_tx_complete(vap, ni, + IEEE80211_RATECTL_TX_FAILURE, &ntries, NULL); + } +#endif + } else { + RTWN_DPRINTF(sc, RTWN_DEBUG_INTR, "%s: macid %u, ni is NULL\n", + __func__, macid); + } + RTWN_NT_UNLOCK(sc); + +#ifdef IEEE80211_SUPPORT_SUPERG + if (sc->sc_tx_n_active > 0 && --sc->sc_tx_n_active <= 1) + rtwn_cmd_sleepable(sc, NULL, 0, rtwn_ff_flush_all); +#endif +} + +static void +r92c_handle_c2h_task(struct rtwn_softc *sc, union sec_param *data) +{ + const uint16_t off = R92C_C2H_EVT_MSG + sizeof(struct r92c_c2h_evt); + struct r92c_softc *rs = sc->sc_priv; + uint16_t buf[R92C_C2H_MSG_MAX_LEN / 2 + 1]; + uint8_t id, len, status; + int i; + + /* Do not reschedule the task if device is not running. */ + if (!(sc->sc_flags & RTWN_RUNNING)) + return; + + /* Read current status. */ + status = rtwn_read_1(sc, R92C_C2H_EVT_CLEAR); + if (status == R92C_C2H_EVT_HOST_CLOSE) + goto end; /* nothing to do */ + else if (status == R92C_C2H_EVT_FW_CLOSE) { + len = rtwn_read_1(sc, R92C_C2H_EVT_MSG); + id = MS(len, R92C_C2H_EVTB0_ID); + len = MS(len, R92C_C2H_EVTB0_LEN); + + memset(buf, 0, sizeof(buf)); + /* Try to optimize event reads. */ + for (i = 0; i < len; i += 2) + buf[i / 2] = rtwn_read_2(sc, off + i); + KASSERT(i < sizeof(buf), ("%s: buffer overrun (%d >= %zu)!", + __func__, i, sizeof(buf))); + + switch (id) { + case R92C_C2H_EVT_TX_REPORT: + r92c_ratectl_tx_complete(sc, (uint8_t *)buf, len); + break; + default: + device_printf(sc->sc_dev, + "%s: C2H report %u (len %u) was not handled\n", + __func__, id, len); + break; + } + } + + /* Prepare for next event. */ + rtwn_write_1(sc, R92C_C2H_EVT_CLEAR, R92C_C2H_EVT_HOST_CLOSE); + +end: + /* Adjust timeout for next call. */ + if (rs->rs_c2h_pending != 0) { + rs->rs_c2h_pending = 0; + rs->rs_c2h_paused = 0; + } else + rs->rs_c2h_paused++; + + if (rs->rs_c2h_paused > R92C_TX_PAUSED_THRESHOLD) + rs->rs_c2h_timeout = hz; + else + rs->rs_c2h_timeout = MAX(hz / 100, 1); + + /* Reschedule the task. */ + callout_reset(&rs->rs_c2h_report, rs->rs_c2h_timeout, + r92c_handle_c2h_report, sc); +} + +void +r92c_handle_c2h_report(void *arg) +{ + struct rtwn_softc *sc = arg; + + rtwn_cmd_sleepable(sc, NULL, 0, r92c_handle_c2h_task); +} + +#endif /* RTWN_WITHOUT_UCODE */ diff --git a/sys/dev/rtwn/rtl8192c/r92c_fw_cmd.h b/sys/dev/rtwn/rtl8192c/r92c_fw_cmd.h new file mode 100644 index 000000000000..998a7805fd27 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/r92c_fw_cmd.h @@ -0,0 +1,148 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef R92C_FW_CMD_H +#define R92C_FW_CMD_H + +/* + * Host to firmware commands. + */ +struct r92c_fw_cmd { + uint8_t id; +#define R92C_CMD_SET_PWRMODE 1 +#define R92C_CMD_JOINBSS_RPT 2 +#define R92C_CMD_RSVD_PAGE 3 +#define R92C_CMD_RSSI_SETTING 5 +#define R92C_CMD_MACID_CONFIG 6 + +#define R92C_CMD_FLAG_EXT 0x80 + + uint8_t msg[5]; +} __packed __attribute__((aligned(4))); + +/* Structure for R92C_CMD_JOINBSS_RPT. */ +struct r92c_fw_cmd_joinbss_rpt { + uint8_t mstatus; +#define R92C_MSTATUS_DISASSOC 0x00 +#define R92C_MSTATUS_ASSOC 0x01 +} __packed; + +/* Structure for R92C_CMD_SET_PWRMODE. */ +struct r92c_fw_cmd_pwrmode { + uint8_t mode; +#define R92C_PWRMODE_CAM 0 +#define R92C_PWRMODE_MIN 1 +#define R92C_PWRMODE_MAX 2 +#define R92C_PWRMODE_DTIM 3 +#define R92C_PWRMODE_UAPSD_WMM 5 +#define R92C_PWRMODE_UAPSD 6 +#define R92C_PWRMODE_IBSS 7 + + uint8_t smart_ps; +/* XXX undocumented */ +#define R92C_PWRMODE_SMARTPS_NULLDATA 2 + + uint8_t bcn_pass; /* unit: beacon interval */ +} __packed; + +/* Structure for R92C_CMD_RSVD_PAGE. */ +struct r92c_fw_cmd_rsvdpage { + uint8_t probe_resp; + uint8_t ps_poll; + uint8_t null_data; +} __packed; + +/* Structure for R92C_CMD_RSSI_SETTING. */ +struct r92c_fw_cmd_rssi { + uint8_t macid; + uint8_t reserved; + uint8_t pwdb; +} __packed; + +/* Structure for R92C_CMD_MACID_CONFIG. */ +struct r92c_fw_cmd_macid_cfg { + uint32_t mask; + uint8_t macid; +#define R92C_CMD_MACID_VALID 0x80 +} __packed; + +/* + * C2H event structure. + */ +/* Bigger value is used to prevent buffer overrun. */ +#define R92C_C2H_MSG_MAX_LEN 16 + +struct r92c_c2h_evt { + uint8_t evtb0; +#define R92C_C2H_EVTB0_ID_M 0x0f +#define R92C_C2H_EVTB0_ID_S 0 +#define R92C_C2H_EVTB0_LEN_M 0xf0 +#define R92C_C2H_EVTB0_LEN_S 4 + + uint8_t seq; + + /* Followed by payload (see below). */ +} __packed; + +/* + * C2H event types. + */ +#define R92C_C2H_EVT_DEBUG 0 +#define R92C_C2H_EVT_TX_REPORT 3 +#define R92C_C2H_EVT_EXT_RA_RPT 6 + +/* Structure for R92C_C2H_EVT_TX_REPORT event. */ +struct r92c_c2h_tx_rpt { + uint8_t rptb0; +#define R92C_RPTB0_RETRY_CNT_M 0x3f +#define R92C_RPTB0_RETRY_CNT_S 0 + + uint8_t rptb1; /* XXX junk */ +#define R92C_RPTB1_RTS_RETRY_CNT_M 0x3f +#define R92C_RPTB1_RTS_RETRY_CNT_S 0 + + uint8_t queue_time_low; + uint8_t queue_time_high; + uint8_t rptb4; +#define R92C_RPTB4_MISSED_PKT_NUM_M 0x1f +#define R92C_RPTB4_MISSED_PKT_NUM_S 0 + + uint8_t rptb5; +#define R92C_RPTB5_MACID_M 0x1f +#define R92C_RPTB5_MACID_S 0 +#define R92C_RPTB5_DES1_FRAGSSN_M 0xe0 +#define R92C_RPTB5_DES1_FRAGSSN_S 5 + + uint8_t rptb6; +#define R92C_RPTB6_RPT_PKT_NUM_M 0x1f +#define R92C_RPTB6_RPT_PKT_NUM_S 0 +#define R92C_RPTB6_PKT_DROP 0x20 +#define R92C_RPTB6_LIFE_EXPIRE 0x40 +#define R92C_RPTB6_RETRY_OVER 0x80 + + uint8_t rptb7; +#define R92C_RPTB7_EDCA_M 0x0f +#define R92C_RPTB7_EDCA_S 0 +#define R92C_RPTB7_BMC 0x20 +#define R92C_RPTB7_PKT_OK 0x40 +#define R92C_RPTB7_INT_CCX 0x80 +} __packed; + +#endif /* R92C_FW_CMD_H */ diff --git a/sys/dev/rtwn/rtl8192c/r92c_init.c b/sys/dev/rtwn/rtl8192c/r92c_init.c new file mode 100644 index 000000000000..3b9d8d9370b1 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/r92c_init.c @@ -0,0 +1,322 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + + +int +r92c_check_condition(struct rtwn_softc *sc, const uint8_t cond[]) +{ + struct r92c_softc *rs = sc->sc_priv; + uint8_t mask; + int i; + + if (cond[0] == 0) + return (1); + + RTWN_DPRINTF(sc, RTWN_DEBUG_RESET, + "%s: condition byte 0: %02X; chip %02X, board %02X\n", + __func__, cond[0], rs->chip, rs->board_type); + + if (!(rs->chip & R92C_CHIP_92C)) { + if (rs->board_type == R92C_BOARD_TYPE_HIGHPA) + mask = R92C_COND_RTL8188RU; + else if (rs->board_type == R92C_BOARD_TYPE_MINICARD) + mask = R92C_COND_RTL8188CE; + else + mask = R92C_COND_RTL8188CU; + } else { + if (rs->board_type == R92C_BOARD_TYPE_MINICARD) + mask = R92C_COND_RTL8192CE; + else + mask = R92C_COND_RTL8192CU; + } + + for (i = 0; i < RTWN_MAX_CONDITIONS && cond[i] != 0; i++) + if ((cond[i] & mask) == mask) + return (1); + + return (0); +} + +int +r92c_set_page_size(struct rtwn_softc *sc) +{ + return (rtwn_write_1(sc, R92C_PBP, SM(R92C_PBP_PSRX, R92C_PBP_128) | + SM(R92C_PBP_PSTX, R92C_PBP_128)) == 0); +} + +void +r92c_init_bb_common(struct rtwn_softc *sc) +{ + struct r92c_softc *rs = sc->sc_priv; + int i, j; + + /* Write BB initialization values. */ + for (i = 0; i < sc->bb_size; i++) { + const struct rtwn_bb_prog *bb_prog = &sc->bb_prog[i]; + + while (!rtwn_check_condition(sc, bb_prog->cond)) { + KASSERT(bb_prog->next != NULL, + ("%s: wrong condition value (i %d)\n", + __func__, i)); + bb_prog = bb_prog->next; + } + + for (j = 0; j < bb_prog->count; j++) { + RTWN_DPRINTF(sc, RTWN_DEBUG_RESET, + "BB: reg 0x%03x, val 0x%08x\n", + bb_prog->reg[j], bb_prog->val[j]); + + rtwn_bb_write(sc, bb_prog->reg[j], bb_prog->val[j]); + rtwn_delay(sc, 1); + } + } + + if (rs->chip & R92C_CHIP_92C_1T2R) { + /* 8192C 1T only configuration. */ + rtwn_bb_setbits(sc, R92C_FPGA0_TXINFO, 0x03, 0x02); + rtwn_bb_setbits(sc, R92C_FPGA1_TXINFO, 0x300033, 0x200022); + rtwn_bb_setbits(sc, R92C_CCK0_AFESETTING, 0xff000000, + 0x45000000); + rtwn_bb_setbits(sc, R92C_OFDM0_TRXPATHENA, 0xff, 0x23); + rtwn_bb_setbits(sc, R92C_OFDM0_AGCPARAM1, 0x30, 0x10); + + rtwn_bb_setbits(sc, 0xe74, 0x0c000000, 0x08000000); + rtwn_bb_setbits(sc, 0xe78, 0x0c000000, 0x08000000); + rtwn_bb_setbits(sc, 0xe7c, 0x0c000000, 0x08000000); + rtwn_bb_setbits(sc, 0xe80, 0x0c000000, 0x08000000); + rtwn_bb_setbits(sc, 0xe88, 0x0c000000, 0x08000000); + } + + /* Write AGC values. */ + for (i = 0; i < sc->agc_size; i++) { + const struct rtwn_agc_prog *agc_prog = &sc->agc_prog[i]; + + while (!rtwn_check_condition(sc, agc_prog->cond)) { + KASSERT(agc_prog->next != NULL, + ("%s: wrong condition value (2) (i %d)\n", + __func__, i)); + agc_prog = agc_prog->next; + } + + for (j = 0; j < agc_prog->count; j++) { + RTWN_DPRINTF(sc, RTWN_DEBUG_RESET, + "AGC: val 0x%08x\n", agc_prog->val[j]); + + rtwn_bb_write(sc, R92C_OFDM0_AGCRSSITABLE, + agc_prog->val[j]); + rtwn_delay(sc, 1); + } + } +} + +int +r92c_init_rf_chain(struct rtwn_softc *sc, + const struct rtwn_rf_prog *rf_prog, int chain) +{ + int i, j; + + RTWN_DPRINTF(sc, RTWN_DEBUG_RESET, "%s: chain %d\n", + __func__, chain); + + for (i = 0; rf_prog[i].reg != NULL; i++) { + const struct rtwn_rf_prog *prog = &rf_prog[i]; + + while (!rtwn_check_condition(sc, prog->cond)) { + KASSERT(prog->next != NULL, + ("%s: wrong condition value (i %d)\n", + __func__, i)); + prog = prog->next; + } + + for (j = 0; j < prog->count; j++) { + RTWN_DPRINTF(sc, RTWN_DEBUG_RESET, + "RF: reg 0x%02x, val 0x%05x\n", + prog->reg[j], prog->val[j]); + + /* + * These are fake RF registers offsets that + * indicate a delay is required. + */ + /* NB: we are using 'value' to store required delay. */ + if (prog->reg[j] > 0xf8) { + rtwn_delay(sc, prog->val[j]); + continue; + } + + rtwn_rf_write(sc, chain, prog->reg[j], prog->val[j]); + rtwn_delay(sc, 1); + } + } + + return (i); +} + +void +r92c_init_rf_common(struct rtwn_softc *sc) +{ + struct r92c_softc *rs = sc->sc_priv; + uint32_t reg, type; + int i, chain, idx, off; + + for (chain = 0, i = 0; chain < sc->nrxchains; chain++, i++) { + /* Save RF_ENV control type. */ + idx = chain / 2; + off = (chain % 2) * 16; + reg = rtwn_bb_read(sc, R92C_FPGA0_RFIFACESW(idx)); + type = (reg >> off) & 0x10; + + /* Set RF_ENV enable. */ + rtwn_bb_setbits(sc, R92C_FPGA0_RFIFACEOE(chain), + 0, 0x100000); + rtwn_delay(sc, 1); + /* Set RF_ENV output high. */ + rtwn_bb_setbits(sc, R92C_FPGA0_RFIFACEOE(chain), + 0, 0x10); + rtwn_delay(sc, 1); + /* Set address and data lengths of RF registers. */ + rtwn_bb_setbits(sc, R92C_HSSI_PARAM2(chain), + R92C_HSSI_PARAM2_ADDR_LENGTH, 0); + rtwn_delay(sc, 1); + rtwn_bb_setbits(sc, R92C_HSSI_PARAM2(chain), + R92C_HSSI_PARAM2_DATA_LENGTH, 0); + rtwn_delay(sc, 1); + + /* Write RF initialization values for this chain. */ + i += r92c_init_rf_chain(sc, &sc->rf_prog[i], chain); + + /* Restore RF_ENV control type. */ + rtwn_bb_setbits(sc, R92C_FPGA0_RFIFACESW(idx), + 0x10 << off, type << off); + + /* Cache RF register CHNLBW. */ + rs->rf_chnlbw[chain] = rtwn_rf_read(sc, chain, + R92C_RF_CHNLBW); + } +} + +void +r92c_init_rf(struct rtwn_softc *sc) +{ + struct r92c_softc *rs = sc->sc_priv; + + r92c_init_rf_common(sc); + + if ((rs->chip & (R92C_CHIP_UMC_A_CUT | R92C_CHIP_92C)) == + R92C_CHIP_UMC_A_CUT) { + rtwn_rf_write(sc, 0, R92C_RF_RX_G1, 0x30255); + rtwn_rf_write(sc, 0, R92C_RF_RX_G2, 0x50a00); + } + + /* Turn CCK and OFDM blocks on. */ + rtwn_bb_setbits(sc, R92C_FPGA0_RFMOD, 0, R92C_RFMOD_CCK_EN); + rtwn_bb_setbits(sc, R92C_FPGA0_RFMOD, 0, R92C_RFMOD_OFDM_EN); +} + +void +r92c_init_edca(struct rtwn_softc *sc) +{ + /* SIFS */ + rtwn_write_2(sc, R92C_SPEC_SIFS, 0x100a); + rtwn_write_2(sc, R92C_MAC_SPEC_SIFS, 0x100a); + rtwn_write_2(sc, R92C_SIFS_CCK, 0x100a); + rtwn_write_2(sc, R92C_SIFS_OFDM, 0x100a); + /* TXOP */ + rtwn_write_4(sc, R92C_EDCA_BE_PARAM, 0x005ea42b); + rtwn_write_4(sc, R92C_EDCA_BK_PARAM, 0x0000a44f); + rtwn_write_4(sc, R92C_EDCA_VI_PARAM, 0x005ea324); + rtwn_write_4(sc, R92C_EDCA_VO_PARAM, 0x002fa226); +} + +void +r92c_init_ampdu(struct rtwn_softc *sc) +{ + + /* Setup AMPDU aggregation. */ + rtwn_write_4(sc, R92C_AGGLEN_LMT, 0x99997631); /* MCS7~0 */ + rtwn_write_1(sc, R92C_AGGR_BREAK_TIME, 0x16); + rtwn_write_2(sc, R92C_MAX_AGGR_NUM, 0x0708); +} + +void +r92c_init_antsel(struct rtwn_softc *sc) +{ + uint32_t reg; + + if (sc->ntxchains != 1 || sc->nrxchains != 1) + return; + + rtwn_setbits_1(sc, R92C_LEDCFG2, 0, 0x80); + rtwn_bb_setbits(sc, R92C_FPGA0_RFPARAM(0), 0, 0x2000); + reg = rtwn_bb_read(sc, R92C_FPGA0_RFIFACEOE(0)); + sc->sc_ant = MS(reg, R92C_FPGA0_RFIFACEOE0_ANT); /* XXX */ +} + +void +r92c_pa_bias_init(struct rtwn_softc *sc) +{ + struct r92c_softc *rs = sc->sc_priv; + int i; + + for (i = 0; i < sc->nrxchains; i++) { + if (rs->pa_setting & (1 << i)) + continue; + r92c_rf_write(sc, i, R92C_RF_IPA, 0x0f406); + r92c_rf_write(sc, i, R92C_RF_IPA, 0x4f406); + r92c_rf_write(sc, i, R92C_RF_IPA, 0x8f406); + r92c_rf_write(sc, i, R92C_RF_IPA, 0xcf406); + } + if (!(rs->pa_setting & 0x10)) + rtwn_setbits_1(sc, 0x16, 0xf0, 0x90); +} diff --git a/sys/dev/rtwn/rtl8192c/r92c_priv.h b/sys/dev/rtwn/rtl8192c/r92c_priv.h new file mode 100644 index 000000000000..13c38fb20def --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/r92c_priv.h @@ -0,0 +1,408 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef R92C_PRIV_H +#define R92C_PRIV_H + +#include + +/* + * Parsed Tx power (diff) values. + */ +struct rtwn_r92c_txpwr { + uint8_t cck_tx_pwr[R92C_MAX_CHAINS][R92C_GROUP_2G]; + uint8_t ht40_1s_tx_pwr[R92C_MAX_CHAINS][R92C_GROUP_2G]; + int8_t ht40_2s_tx_pwr_diff[R92C_MAX_CHAINS][R92C_GROUP_2G]; + int8_t ht20_tx_pwr_diff[R92C_MAX_CHAINS][R92C_GROUP_2G]; + int8_t ofdm_tx_pwr_diff[R92C_MAX_CHAINS][R92C_GROUP_2G]; + int8_t ht40_max_pwr[R92C_MAX_CHAINS][R92C_GROUP_2G]; + int8_t ht20_max_pwr[R92C_MAX_CHAINS][R92C_GROUP_2G]; +}; + + +/* + * Baseband initialization values (shared parts). + */ +#define R92C_COND_RTL8188CE 0x01 +#define R92C_COND_RTL8188CU 0x02 +#define R92C_COND_RTL8188RU 0x04 +#define R92C_COND_RTL8192CE 0x08 +#define R92C_COND_RTL8192CU 0x10 + +/* Shortcut. */ +#define R92C_COND_RTL8192C (R92C_COND_RTL8192CE | R92C_COND_RTL8192CU) + +static const uint16_t rtl8192c_bb_regs3[] = { + 0xd04 +}, rtl8192c_bb_regs4[] = { + 0xd08, 0xd0c, 0xd10, 0xd14, 0xd18, 0xd2c, 0xd30, 0xd34, 0xd38, + 0xd3c, 0xd40, 0xd44, 0xd48, 0xd4c, 0xd50, 0xd54, 0xd58, 0xd5c, + 0xd60, 0xd64, 0xd68, 0xd6c, 0xd70, 0xd74, 0xd78, 0xe00, 0xe04, + 0xe08, 0xe10, 0xe14, 0xe18, 0xe1c, 0xe28, 0xe30, 0xe34, 0xe38, + 0xe3c, 0xe40, 0xe44, 0xe48, 0xe4c, 0xe50, 0xe54, 0xe58, 0xe5c +}, rtl8192c_bb_regs5[] = { + 0xe60, 0xe68, 0xe6c, 0xe70, 0xe74, 0xe78, 0xe7c, 0xe80, 0xe84, + 0xe88, 0xe8c, 0xed0, 0xed4, 0xed8, 0xedc, 0xee0, 0xeec, 0xf14, + 0xf4c, 0xf00 +}; + +static const uint32_t rtl8192c_bb_vals3_88cu_88ru[] = { + 0x00020401 +}, rtl8192c_bb_vals3_92ce_92cu[] = { + 0x00020403 +}, rtl8192c_bb_vals4[] = { + 0x0000907f, 0x20010201, 0xa0633333, 0x3333bc43, 0x7a8f5b6b, + 0xcc979975, 0x00000000, 0x80608000, 0x00000000, 0x00027293, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6437140a, + 0x00000000, 0x00000000, 0x30032064, 0x4653de68, 0x04518a3c, + 0x00002101, 0x2a201c16, 0x1812362e, 0x322c2220, 0x000e3c24, + 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, 0x2a2a2a2a, 0x2a2a2a2a, + 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, 0x1000dc1f, 0x10008c1f, + 0x02140102, 0x681604c2, 0x01007c00, 0x01004800, 0xfb000000, + 0x000028d1, 0x1000dc1f, 0x10008c1f, 0x02140102, 0x28160d05 +},rtl8192c_bb_vals5_92ce_92cu[] = { + 0x00000010, 0x001b25a4, 0x63db25a4, 0x63db25a4, 0x0c1b25a4, + 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, 0x63db25a4, 0x0c1b25a4, + 0x63db25a4, 0x63db25a4, 0x63db25a4, 0x63db25a4, 0x001b25a4, + 0x001b25a4, 0x6fdb25a4, 0x00000003, 0x00000000, 0x00000300 +}; + +/* + * RTL8192CU and RTL8192CE-VAU. + */ + +static const uint32_t rtl8192ce_agc_vals[] = { + 0x7b000001, 0x7b010001, 0x7b020001, 0x7b030001, 0x7b040001, + 0x7b050001, 0x7a060001, 0x79070001, 0x78080001, 0x77090001, + 0x760a0001, 0x750b0001, 0x740c0001, 0x730d0001, 0x720e0001, + 0x710f0001, 0x70100001, 0x6f110001, 0x6e120001, 0x6d130001, + 0x6c140001, 0x6b150001, 0x6a160001, 0x69170001, 0x68180001, + 0x67190001, 0x661a0001, 0x651b0001, 0x641c0001, 0x631d0001, + 0x621e0001, 0x611f0001, 0x60200001, 0x49210001, 0x48220001, + 0x47230001, 0x46240001, 0x45250001, 0x44260001, 0x43270001, + 0x42280001, 0x41290001, 0x402a0001, 0x262b0001, 0x252c0001, + 0x242d0001, 0x232e0001, 0x222f0001, 0x21300001, 0x20310001, + 0x06320001, 0x05330001, 0x04340001, 0x03350001, 0x02360001, + 0x01370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001, + 0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001, 0x7b400001, + 0x7b410001, 0x7b420001, 0x7b430001, 0x7b440001, 0x7b450001, + 0x7a460001, 0x79470001, 0x78480001, 0x77490001, 0x764a0001, + 0x754b0001, 0x744c0001, 0x734d0001, 0x724e0001, 0x714f0001, + 0x70500001, 0x6f510001, 0x6e520001, 0x6d530001, 0x6c540001, + 0x6b550001, 0x6a560001, 0x69570001, 0x68580001, 0x67590001, + 0x665a0001, 0x655b0001, 0x645c0001, 0x635d0001, 0x625e0001, + 0x615f0001, 0x60600001, 0x49610001, 0x48620001, 0x47630001, + 0x46640001, 0x45650001, 0x44660001, 0x43670001, 0x42680001, + 0x41690001, 0x406a0001, 0x266b0001, 0x256c0001, 0x246d0001, + 0x236e0001, 0x226f0001, 0x21700001, 0x20710001, 0x06720001, + 0x05730001, 0x04740001, 0x03750001, 0x02760001, 0x01770001, + 0x00780001, 0x00790001, 0x007a0001, 0x007b0001, 0x007c0001, + 0x007d0001, 0x007e0001, 0x007f0001, 0x3800001e, 0x3801001e, + 0x3802001e, 0x3803001e, 0x3804001e, 0x3805001e, 0x3806001e, + 0x3807001e, 0x3808001e, 0x3c09001e, 0x3e0a001e, 0x400b001e, + 0x440c001e, 0x480d001e, 0x4c0e001e, 0x500f001e, 0x5210001e, + 0x5611001e, 0x5a12001e, 0x5e13001e, 0x6014001e, 0x6015001e, + 0x6016001e, 0x6217001e, 0x6218001e, 0x6219001e, 0x621a001e, + 0x621b001e, 0x621c001e, 0x621d001e, 0x621e001e, 0x621f001e +}; + +static const struct rtwn_agc_prog rtl8192ce_agc[] = { + { + nitems(rtl8192ce_agc_vals), + rtl8192ce_agc_vals, + { 0 }, + NULL + } +}; + + +/* + * RF initialization values. + */ +static const uint8_t rtl8192c_rf0_regs0[] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21 +}, rtl8192c_rf0_regs1[] = { + 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28 +}, rtl8192c_rf0_regs2[] = { + 0x29, 0x2a, 0x2b, 0x2a, 0x2b, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, + 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, + 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, + 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, + 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, + 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x10, 0x11, 0x10, 0x11, + 0x10, 0x11, 0x10, 0x11, 0x10, 0x11, 0x10, 0x11, 0x10, 0x11 +}, rtl8192c_rf0_regs3[] = { + 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, + 0x13, 0x13, 0x13, 0x13 +}, rtl8192c_rf0_regs4[] = { + 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15 +}, rtl8192c_rf0_regs5[] = { + 0x16, 0x16, 0x16, 0x16, 0x00, 0x18, 0xfe, 0xfe, 0x1f, 0xfe, 0xfe, + 0x1e, 0x1f, 0x00 +}; + +static const uint32_t rtl8192c_rf0_vals0_88ce_88cu_92ce[] = { + 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1, + 0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x00000, 0x10255, + 0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000 +}, rtl8192c_rf0_vals0_88ru[] = { + 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb0, + 0x54867, 0x8992e, 0x0e529, 0x39ce7, 0x00451, 0x00000, 0x00255, + 0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000 +}, rtl8192c_rf0_vals1_88ru[] = { + 0x0083c, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x977c0 +}, rtl8192c_rf0_vals1_88ce[] = { + 0x00000, 0x01558, 0x00060, 0x00483, 0x4f200, 0xec7d9, 0x577c0 +}, rtl8192c_rf0_vals1_88cu_92ce[] = { + 0x00000, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x577c0 +}, rtl8192c_rf0_vals2[] = { + 0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808, + 0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003, + 0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d, + 0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333, + 0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a, + 0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a, + 0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d, + 0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333, + 0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f, + 0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500, + 0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100 +}, rtl8192c_rf0_vals3_88ru[] = { + 0xd8000, 0x90000, 0x51000, 0x12000, 0x28fb4, 0x24fa8, 0x207a4, + 0x1c798, 0x183a4, 0x14398, 0x101a4, 0x0c198, 0x080a4, 0x04098, + 0x00014 +}, rtl8192c_rf0_vals3_92ce[] = { + 0x32000, 0x71000, 0xb0000, 0xfc000, 0x287af, 0x244b7, 0x204ab, + 0x1c49f, 0x18493, 0x14297, 0x10295, 0x0c298, 0x0819c, 0x040a8, + 0x0001c +}, rtl8192c_rf0_vals3_88cu_88ce[] = { + 0x32000, 0x71000, 0xb0000, 0xfc000, 0x287b3, 0x244b7, 0x204ab, + 0x1c49f, 0x18493, 0x1429b, 0x10299, 0x0c29c, 0x081a0, 0x040ac, + 0x00020 +}, rtl8192c_rf0_vals4_92ce_88ce[] = { + 0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f424, 0x4f424, 0x8f424, + 0xcf424 +}, rtl8192c_rf0_vals4_88cu_88ru[] = { + 0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f405, 0x4f405, 0x8f405, + 0xcf405 +}, rtl8192c_rf0_vals5[] = { + 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401, 0x0c350, + 0x0c350, 0x80003, 0x0c350, 0x0c350, 0x44457, 0x80000, 0x30159 +}; + +static const struct rtwn_rf_prog rtl8192c_rf[] = { + /* RF chain 0 */ + /* RTL8188RU. */ + { + nitems(rtl8192c_rf0_regs0), + rtl8192c_rf0_regs0, + rtl8192c_rf0_vals0_88ru, + { R92C_COND_RTL8188RU }, + /* Others. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8192c_rf0_regs0), + rtl8192c_rf0_regs0, + rtl8192c_rf0_vals0_88ce_88cu_92ce, + { 0 }, + NULL + } + }, + /* RTL8188RU. */ + { + nitems(rtl8192c_rf0_regs1), + rtl8192c_rf0_regs1, + rtl8192c_rf0_vals1_88ru, + { R92C_COND_RTL8188RU }, + /* RTL8188CE. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8192c_rf0_regs1), + rtl8192c_rf0_regs1, + rtl8192c_rf0_vals1_88ce, + { R92C_COND_RTL8188CE }, + /* Others. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8192c_rf0_regs1), + rtl8192c_rf0_regs1, + rtl8192c_rf0_vals1_88cu_92ce, + { 0 }, + NULL + } + } + }, + { + nitems(rtl8192c_rf0_regs2), + rtl8192c_rf0_regs2, + rtl8192c_rf0_vals2, + { 0 }, + NULL + }, + /* RTL8188RU. */ + { + nitems(rtl8192c_rf0_regs3), + rtl8192c_rf0_regs3, + rtl8192c_rf0_vals3_88ru, + { R92C_COND_RTL8188RU }, + /* RTL8192C. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8192c_rf0_regs3), + rtl8192c_rf0_regs3, + rtl8192c_rf0_vals3_92ce, + { R92C_COND_RTL8192C }, + /* Others. */ + &(struct rtwn_rf_prog){ + nitems(rtl8192c_rf0_regs3), + rtl8192c_rf0_regs3, + rtl8192c_rf0_vals3_88cu_88ce, + { 0 }, + NULL + } + } + }, + /* RTL8188CE / RTL8192C. */ + { + nitems(rtl8192c_rf0_regs4), + rtl8192c_rf0_regs4, + rtl8192c_rf0_vals4_92ce_88ce, + { R92C_COND_RTL8188CE | R92C_COND_RTL8192C }, + /* Others. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8192c_rf0_regs4), + rtl8192c_rf0_regs4, + rtl8192c_rf0_vals4_88cu_88ru, + { 0 }, + NULL + } + }, + { + nitems(rtl8192c_rf0_regs5), + rtl8192c_rf0_regs5, + rtl8192c_rf0_vals5, + { 0 }, + NULL + }, + { 0, NULL, NULL, { 0 }, NULL }, + /* RF chain 1 (RTL8192C). */ + { + 12, /* 0x00 - 0x0f */ + rtl8192c_rf0_regs0, + rtl8192c_rf0_vals0_88ce_88cu_92ce, + { 0 }, + NULL + }, + { + nitems(rtl8192c_rf0_regs3), /* 0x12 - 0x13 */ + rtl8192c_rf0_regs3, + rtl8192c_rf0_vals3_92ce, + { 0 }, + NULL + }, + { + nitems(rtl8192c_rf0_regs4), /* 0x14 - 0x15 */ + rtl8192c_rf0_regs4, + rtl8192c_rf0_vals4_92ce_88ce, + { 0 }, + NULL + }, + { + 4, /* 0x16 */ + rtl8192c_rf0_regs5, + rtl8192c_rf0_vals5, + { 0 }, + NULL + }, + { 0, NULL, NULL, { 0 }, NULL } +}; + + +struct rtwn_r92c_txagc { + uint8_t pwr[R92C_GROUP_2G][28]; /* RTWN_RIDX_MCS(15) + 1 */ +}; + +/* + * Per RF chain/group/rate Tx gain values. + */ +static const struct rtwn_r92c_txagc rtl8192cu_txagc[] = { + { { /* Chain 0. */ + { /* Group 0. */ + 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ + 0x0c, 0x0c, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02, /* OFDM6~54. */ + 0x0e, 0x0d, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02, /* MCS0~7. */ + 0x0e, 0x0d, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02 /* MCS8~15. */ + }, + { /* Group 1. */ + 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ + }, + { /* Group 2. */ + 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ + 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x00, /* OFDM6~54. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ + } + } }, + { { /* Chain 1. */ + { /* Group 0. */ + 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ + }, + { /* Group 1. */ + 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ + }, + { /* Group 2. */ + 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ + 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x00, /* OFDM6~54. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ + } + } } +}; + +static const struct rtwn_r92c_txagc rtl8188ru_txagc[] = { + { { /* Chain 0. */ + { /* Group 0. */ + 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ + 0x08, 0x08, 0x08, 0x06, 0x06, 0x04, 0x04, 0x00, /* OFDM6~54. */ + 0x08, 0x06, 0x06, 0x04, 0x04, 0x02, 0x02, 0x00, /* MCS0~7. */ + 0x08, 0x06, 0x06, 0x04, 0x04, 0x02, 0x02, 0x00 /* MCS8~15. */ + }, + { /* Group 1. */ + 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ + }, + { /* Group 2. */ + 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ + } + } } +}; + +#endif /* R92C_PRIV_H */ diff --git a/sys/dev/rtwn/rtl8192c/r92c_reg.h b/sys/dev/rtwn/rtl8192c/r92c_reg.h new file mode 100644 index 000000000000..ff03d191b4e4 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/r92c_reg.h @@ -0,0 +1,855 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015 Stefan Sperling + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef R92C_REG_H +#define R92C_REG_H + +/* + * MAC registers. + */ +/* System Configuration. */ +#define R92C_SYS_ISO_CTRL 0x000 +#define R92C_SYS_FUNC_EN 0x002 +#define R92C_APS_FSMCO 0x004 +#define R92C_SYS_CLKR 0x008 +#define R92C_AFE_MISC 0x010 +#define R92C_SPS0_CTRL 0x011 +#define R92C_SPS_OCP_CFG 0x018 +#define R92C_RSV_CTRL 0x01c +#define R92C_RF_CTRL 0x01f +#define R92C_LDOA15_CTRL 0x020 +#define R92C_LDOV12D_CTRL 0x021 +#define R92C_LDOHCI12_CTRL 0x022 +#define R92C_LPLDO_CTRL 0x023 +#define R92C_AFE_XTAL_CTRL 0x024 +#define R92C_AFE_PLL_CTRL 0x028 +#define R92C_APE_PLL_CTRL_EXT 0x02c +#define R92C_MAC_PHY_CTRL R92C_APE_PLL_CTRL_EXT +#define R92C_EFUSE_CTRL 0x030 +#define R92C_EFUSE_TEST 0x034 +#define R92C_PWR_DATA 0x038 +#define R92C_CAL_TIMER 0x03c +#define R92C_ACLK_MON 0x03e +#define R92C_GPIO_MUXCFG 0x040 +#define R92C_GPIO_IO_SEL 0x042 +#define R92C_MAC_PINMUX_CFG 0x043 +#define R92C_GPIO_PIN_CTRL 0x044 +#define R92C_GPIO_IN 0x044 +#define R92C_GPIO_OUT 0x045 +#define R92C_GPIO_IOSEL 0x046 +#define R92C_GPIO_MOD 0x047 +#define R92C_GPIO_INTM 0x048 +#define R92C_LEDCFG0 0x04c +#define R92C_LEDCFG1 0x04d +#define R92C_LEDCFG2 0x04e +#define R92C_LEDCFG3 0x04f +#define R92C_FSIMR 0x050 +#define R92C_FSISR 0x054 +#define R92C_HSIMR 0x058 +#define R92C_HSISR 0x05c +#define R92C_MULTI_FUNC_CTRL 0x068 +#define R92C_MCUFWDL 0x080 +#define R92C_HMEBOX_EXT(idx) (0x088 + (idx) * 2) +#define R92C_EFUSE_ACCESS 0x0cf +#define R92C_BIST_SCAN 0x0d0 +#define R92C_BIST_RPT 0x0d4 +#define R92C_BIST_ROM_RPT 0x0d8 +#define R92C_HPON_FSM 0x0ec +#define R92C_SYS_CFG 0x0f0 +#define R92C_TYPE_ID 0x0fc +/* MAC General Configuration. */ +#define R92C_CR 0x100 +#define R92C_MSR 0x102 +#define R92C_PBP 0x104 +#define R92C_TRXDMA_CTRL 0x10c +#define R92C_TRXFF_BNDY 0x114 +#define R92C_TRXFF_STATUS 0x118 +#define R92C_RXFF_PTR 0x11c +#define R92C_HIMR 0x120 +#define R92C_HISR 0x124 +#define R92C_HIMRE 0x128 +#define R92C_HISRE 0x12c +#define R92C_CPWM 0x12f +#define R92C_FWIMR 0x130 +#define R92C_FWISR 0x134 +#define R92C_PKTBUF_DBG_CTRL 0x140 +#define R92C_PKTBUF_DBG_DATA_L 0x144 +#define R92C_PKTBUF_DBG_DATA_H 0x148 +#define R92C_TC0_CTRL(i) (0x150 + (i) * 4) +#define R92C_TCUNIT_BASE 0x164 +#define R92C_MBIST_START 0x174 +#define R92C_MBIST_DONE 0x178 +#define R92C_MBIST_FAIL 0x17c +#define R92C_C2H_EVT_MSG 0x1a0 +#define R92C_C2H_EVT_CLEAR 0x1af +#define R92C_C2H_EVT_MSG_TEST 0x1b8 +#define R92C_MCUTST_1 0x1c0 +#define R92C_FMETHR 0x1c8 +#define R92C_HMETFR 0x1cc +#define R92C_HMEBOX(idx) (0x1d0 + (idx) * 4) +#define R92C_LLT_INIT 0x1e0 +#define R92C_BB_ACCESS_CTRL 0x1e8 +#define R92C_BB_ACCESS_DATA 0x1ec +/* Tx DMA Configuration. */ +#define R92C_RQPN 0x200 +#define R92C_FIFOPAGE 0x204 +#define R92C_TDECTRL 0x208 +#define R92C_TXDMA_OFFSET_CHK 0x20c +#define R92C_TXDMA_STATUS 0x210 +#define R92C_RQPN_NPQ 0x214 +/* Rx DMA Configuration. */ +#define R92C_RXDMA_AGG_PG_TH 0x280 +#define R92C_RXPKT_NUM 0x284 +#define R92C_RXDMA_STATUS 0x288 +/* Protocol Configuration. */ +#define R92C_VOQ_INFORMATION 0x400 +#define R92C_VIQ_INFORMATION 0x404 +#define R92C_BEQ_INFORMATION 0x408 +#define R92C_BKQ_INFORMATION 0x40c +#define R92C_MGQ_INFORMATION 0x410 +#define R92C_HGQ_INFORMATION 0x414 +#define R92C_BCNQ_INFORMATION 0x418 +#define R92C_CPU_MGQ_INFORMATION 0x41c +#define R92C_FWHW_TXQ_CTRL 0x420 +#define R92C_HWSEQ_CTRL 0x423 +#define R92C_TXPKTBUF_BCNQ_BDNY 0x424 +#define R92C_TXPKTBUF_MGQ_BDNY 0x425 +#define R92C_SPEC_SIFS 0x428 +#define R92C_RL 0x42a +#define R92C_DARFRC 0x430 +#define R92C_RARFRC 0x438 +#define R92C_RRSR 0x440 +#define R92C_ARFR(i) (0x444 + (i) * 4) +#define R92C_AGGLEN_LMT 0x458 +#define R92C_AMPDU_MIN_SPACE 0x45c +#define R92C_TXPKTBUF_WMAC_LBK_BF_HD 0x45d +#define R92C_FAST_EDCA_CTRL 0x460 +#define R92C_RD_RESP_PKT_TH 0x463 +#define R92C_INIRTS_RATE_SEL 0x480 +#define R92C_INIDATA_RATE_SEL(macid) (0x484 + (macid)) +#define R92C_QUEUE_CTRL 0x4c6 +#define R92C_MAX_AGGR_NUM 0x4ca +#define R92C_BAR_MODE_CTRL 0x4cc +/* EDCA Configuration. */ +#define R92C_EDCA_VO_PARAM 0x500 +#define R92C_EDCA_VI_PARAM 0x504 +#define R92C_EDCA_BE_PARAM 0x508 +#define R92C_EDCA_BK_PARAM 0x50c +#define R92C_BCNTCFG 0x510 +#define R92C_PIFS 0x512 +#define R92C_RDG_PIFS 0x513 +#define R92C_SIFS_CCK 0x514 +#define R92C_SIFS_OFDM 0x516 +#define R92C_AGGR_BREAK_TIME 0x51a +#define R92C_SLOT 0x51b +#define R92C_TX_PTCL_CTRL 0x520 +#define R92C_TXPAUSE 0x522 +#define R92C_DIS_TXREQ_CLR 0x523 +#define R92C_RD_CTRL 0x524 +#define R92C_TBTT_PROHIBIT 0x540 +#define R92C_RD_NAV_NXT 0x544 +#define R92C_NAV_PROT_LEN 0x546 +#define R92C_BCN_CTRL(id) ((id) + 0x550) +/* WARNING: R92C_USTIME_TSF == 0x55c, not 0x551 */ +#define R92C_MBID_NUM 0x552 +#define R92C_DUAL_TSF_RST 0x553 +#define R92C_BCN_INTERVAL(id) (0x554 + (id) * 2) +#define R92C_DRVERLYINT 0x558 +#define R92C_BCNDMATIM 0x559 +#define R92C_ATIMWND 0x55a +#define R92C_USTIME_TSF 0x55c +#define R92C_BCN_MAX_ERR 0x55d +#define R92C_RXTSF_OFFSET_CCK 0x55e +#define R92C_RXTSF_OFFSET_OFDM 0x55f +#define R92C_TSFTR(i) (0x560 + (i) * 8) +#define R92C_PSTIMER 0x580 +#define R92C_TIMER0 0x584 +#define R92C_TIMER1 0x588 +#define R92C_ACMHWCTRL 0x5c0 +#define R92C_ACMRSTCTRL 0x5c1 +#define R92C_ACMAVG 0x5c2 +#define R92C_VO_ADMTIME 0x5c4 +#define R92C_VI_ADMTIME 0x5c6 +#define R92C_BE_ADMTIME 0x5c8 +#define R92C_EDCA_RANDOM_GEN 0x5cc +#define R92C_SCH_TXCMD 0x5d0 +/* WMAC Configuration. */ +#define R92C_APSD_CTRL 0x600 +#define R92C_BWOPMODE 0x603 +#define R92C_TCR 0x604 +#define R92C_RCR 0x608 +#define R92C_RX_PKT_LIMIT 0x60c +#define R92C_RX_DRVINFO_SZ 0x60f +#define R92C_MACID0 0x610 +#define R92C_BSSID0 0x618 +#define R92C_MAR 0x620 +#define R92C_USTIME_EDCA 0x638 +#define R92C_MAC_SPEC_SIFS 0x63a +#define R92C_R2T_SIFS 0x63c +#define R92C_T2T_SIFS 0x63e +#define R92C_ACKTO 0x640 +#define R92C_NAV_UPPER 0x652 +#define R92C_WMAC_TRXPTCL_CTL 0x668 +#define R92C_CAMCMD 0x670 +#define R92C_CAMWRITE 0x674 +#define R92C_CAMREAD 0x678 +#define R92C_CAMDBG 0x67c +#define R92C_SECCFG 0x680 +#define R92C_RXFLTMAP0 0x6a0 +#define R92C_RXFLTMAP1 0x6a2 +#define R92C_RXFLTMAP2 0x6a4 +#define R92C_BCN_PSR_RPT 0x6a8 +#define R92C_MACID1 0x700 +#define R92C_BSSID1 0x708 + + +#define R92C_MACID(id) ((id) == 0 ? R92C_MACID0 : R92C_MACID1) +#define R92C_BSSID(id) ((id) == 0 ? R92C_BSSID0 : R92C_BSSID1) + +/* Bits for R92C_SYS_ISO_CTRL. */ +#define R92C_SYS_ISO_CTRL_MD2PP 0x0001 +#define R92C_SYS_ISO_CTRL_UA2USB 0x0002 +#define R92C_SYS_ISO_CTRL_UD2CORE 0x0004 +#define R92C_SYS_ISO_CTRL_PA2PCIE 0x0008 +#define R92C_SYS_ISO_CTRL_PD2CORE 0x0010 +#define R92C_SYS_ISO_CTRL_IP2MAC 0x0020 +#define R92C_SYS_ISO_CTRL_DIOP 0x0040 +#define R92C_SYS_ISO_CTRL_DIOE 0x0080 +#define R92C_SYS_ISO_CTRL_EB2CORE 0x0100 +#define R92C_SYS_ISO_CTRL_DIOR 0x0200 +#define R92C_SYS_ISO_CTRL_PWC_EV25V 0x4000 +#define R92C_SYS_ISO_CTRL_PWC_EV12V 0x8000 + +/* Bits for R92C_SYS_FUNC_EN. */ +#define R92C_SYS_FUNC_EN_BBRSTB 0x0001 +#define R92C_SYS_FUNC_EN_BB_GLB_RST 0x0002 +#define R92C_SYS_FUNC_EN_USBA 0x0004 +#define R92C_SYS_FUNC_EN_UPLL 0x0008 +#define R92C_SYS_FUNC_EN_USBD 0x0010 +#define R92C_SYS_FUNC_EN_DIO_PCIE 0x0020 +#define R92C_SYS_FUNC_EN_PCIEA 0x0040 +#define R92C_SYS_FUNC_EN_PPLL 0x0080 +#define R92C_SYS_FUNC_EN_PCIED 0x0100 +#define R92C_SYS_FUNC_EN_DIOE 0x0200 +#define R92C_SYS_FUNC_EN_CPUEN 0x0400 +#define R92C_SYS_FUNC_EN_DCORE 0x0800 +#define R92C_SYS_FUNC_EN_ELDR 0x1000 +#define R92C_SYS_FUNC_EN_DIO_RF 0x2000 +#define R92C_SYS_FUNC_EN_HWPDN 0x4000 +#define R92C_SYS_FUNC_EN_MREGEN 0x8000 + +/* Bits for R92C_APS_FSMCO. */ +#define R92C_APS_FSMCO_PFM_LDALL 0x00000001 +#define R92C_APS_FSMCO_PFM_ALDN 0x00000002 +#define R92C_APS_FSMCO_PFM_LDKP 0x00000004 +#define R92C_APS_FSMCO_PFM_WOWL 0x00000008 +#define R92C_APS_FSMCO_PDN_EN 0x00000010 +#define R92C_APS_FSMCO_PDN_PL 0x00000020 +#define R92C_APS_FSMCO_APFM_ONMAC 0x00000100 +#define R92C_APS_FSMCO_APFM_OFF 0x00000200 +#define R92C_APS_FSMCO_APFM_RSM 0x00000400 +#define R92C_APS_FSMCO_AFSM_HSUS 0x00000800 +#define R92C_APS_FSMCO_AFSM_PCIE 0x00001000 +#define R92C_APS_FSMCO_APDM_MAC 0x00002000 +#define R92C_APS_FSMCO_APDM_HOST 0x00004000 +#define R92C_APS_FSMCO_APDM_HPDN 0x00008000 +#define R92C_APS_FSMCO_RDY_MACON 0x00010000 +#define R92C_APS_FSMCO_SUS_HOST 0x00020000 +#define R92C_APS_FSMCO_ROP_ALD 0x00100000 +#define R92C_APS_FSMCO_ROP_PWR 0x00200000 +#define R92C_APS_FSMCO_ROP_SPS 0x00400000 +#define R92C_APS_FSMCO_SOP_MRST 0x02000000 +#define R92C_APS_FSMCO_SOP_FUSE 0x04000000 +#define R92C_APS_FSMCO_SOP_ABG 0x08000000 +#define R92C_APS_FSMCO_SOP_AMB 0x10000000 +#define R92C_APS_FSMCO_SOP_RCK 0x20000000 +#define R92C_APS_FSMCO_SOP_A8M 0x40000000 +#define R92C_APS_FSMCO_XOP_BTCK 0x80000000 + +/* Bits for R92C_SYS_CLKR. */ +#define R92C_SYS_CLKR_ANAD16V_EN 0x00000001 +#define R92C_SYS_CLKR_ANA8M 0x00000002 +#define R92C_SYS_CLKR_MACSLP 0x00000010 +#define R92C_SYS_CLKR_LOADER_EN 0x00000020 +#define R92C_SYS_CLKR_80M_SSC_DIS 0x00000080 +#define R92C_SYS_CLKR_80M_SSC_EN_HO 0x00000100 +#define R92C_SYS_CLKR_PHY_SSC_RSTB 0x00000200 +#define R92C_SYS_CLKR_SEC_EN 0x00000400 +#define R92C_SYS_CLKR_MAC_EN 0x00000800 +#define R92C_SYS_CLKR_SYS_EN 0x00001000 +#define R92C_SYS_CLKR_RING_EN 0x00002000 + +/* Bits for R92C_RF_CTRL. */ +#define R92C_RF_CTRL_EN 0x01 +#define R92C_RF_CTRL_RSTB 0x02 +#define R92C_RF_CTRL_SDMRSTB 0x04 + +/* Bits for R92C_LDOA15_CTRL. */ +#define R92C_LDOA15_CTRL_EN 0x01 +#define R92C_LDOA15_CTRL_STBY 0x02 +#define R92C_LDOA15_CTRL_OBUF 0x04 +#define R92C_LDOA15_CTRL_REG_VOS 0x08 + +/* Bits for R92C_LDOV12D_CTRL. */ +#define R92C_LDOV12D_CTRL_LDV12_EN 0x01 + +/* Bits for R92C_LPLDO_CTRL. */ +#define R92C_LPLDO_CTRL_SLEEP 0x10 + +/* Bits for R92C_AFE_XTAL_CTRL. */ +#define R92C_AFE_XTAL_CTRL_ADDR_M 0x007ff800 +#define R92C_AFE_XTAL_CTRL_ADDR_S 11 + +/* Bits for R92C_AFE_PLL_CTRL. */ +#define R92C_AFE_PLL_CTRL_EN 0x0001 +#define R92C_AFE_PLL_CTRL_320_EN 0x0002 +#define R92C_AFE_PLL_CTRL_FREF_SEL 0x0004 +#define R92C_AFE_PLL_CTRL_EDGE_SEL 0x0008 +#define R92C_AFE_PLL_CTRL_WDOGB 0x0010 +#define R92C_AFE_PLL_CTRL_LPFEN 0x0020 + +/* Bits for R92C_EFUSE_CTRL. */ +#define R92C_EFUSE_CTRL_DATA_M 0x000000ff +#define R92C_EFUSE_CTRL_DATA_S 0 +#define R92C_EFUSE_CTRL_ADDR_M 0x0003ff00 +#define R92C_EFUSE_CTRL_ADDR_S 8 +#define R92C_EFUSE_CTRL_VALID 0x80000000 + +/* Bits for R92C_GPIO_MUXCFG. */ +#define R92C_GPIO_MUXCFG_ENBT 0x0020 + +/* Bits for R92C_LEDCFG0. */ +#define R92C_LEDCFG0_DIS 0x08 + +/* Bits for R92C_MULTI_FUNC_CTRL. */ +#define R92C_MULTI_BT_FUNC_EN 0x00040000 + +/* Bits for R92C_MCUFWDL. */ +#define R92C_MCUFWDL_EN 0x00000001 +#define R92C_MCUFWDL_RDY 0x00000002 +#define R92C_MCUFWDL_CHKSUM_RPT 0x00000004 +#define R92C_MCUFWDL_MACINI_RDY 0x00000008 +#define R92C_MCUFWDL_BBINI_RDY 0x00000010 +#define R92C_MCUFWDL_RFINI_RDY 0x00000020 +#define R92C_MCUFWDL_WINTINI_RDY 0x00000040 +#define R92C_MCUFWDL_RAM_DL_SEL 0x00000080 /* 1: RAM, 0: ROM */ +#define R92C_MCUFWDL_PAGE_M 0x00070000 +#define R92C_MCUFWDL_PAGE_S 16 +#define R92C_MCUFWDL_ROM_DLEN 0x00080000 +#define R92C_MCUFWDL_CPRST 0x00800000 + +/* Bits for R92C_EFUSE_ACCESS. */ +#define R92C_EFUSE_ACCESS_OFF 0x00 +#define R92C_EFUSE_ACCESS_ON 0x69 + +/* Bits for R92C_HPON_FSM. */ +#define R92C_HPON_FSM_CHIP_BONDING_ID_S 22 +#define R92C_HPON_FSM_CHIP_BONDING_ID_M 0x00c00000 +#define R92C_HPON_FSM_CHIP_BONDING_ID_92C_1T2R 1 + +/* Bits for R92C_SYS_CFG. */ +#define R92C_SYS_CFG_XCLK_VLD 0x00000001 +#define R92C_SYS_CFG_ACLK_VLD 0x00000002 +#define R92C_SYS_CFG_UCLK_VLD 0x00000004 +#define R92C_SYS_CFG_PCLK_VLD 0x00000008 +#define R92C_SYS_CFG_PCIRSTB 0x00000010 +#define R92C_SYS_CFG_V15_VLD 0x00000020 +#define R92C_SYS_CFG_TRP_B15V_EN 0x00000080 +#define R92C_SYS_CFG_SIC_IDLE 0x00000100 +#define R92C_SYS_CFG_BD_MAC2 0x00000200 +#define R92C_SYS_CFG_BD_MAC1 0x00000400 +#define R92C_SYS_CFG_IC_MACPHY_MODE 0x00000800 +#define R92C_SYS_CFG_CHIP_VER_RTL_M 0x0000f000 +#define R92C_SYS_CFG_CHIP_VER_RTL_S 12 +#define R92C_SYS_CFG_BT_FUNC 0x00010000 +#define R92C_SYS_CFG_VENDOR_UMC 0x00080000 +#define R92C_SYS_CFG_PAD_HWPD_IDN 0x00400000 +#define R92C_SYS_CFG_TRP_VAUX_EN 0x00800000 +#define R92C_SYS_CFG_TRP_BT_EN 0x01000000 +#define R92C_SYS_CFG_BD_PKG_SEL 0x02000000 +#define R92C_SYS_CFG_BD_HCI_SEL 0x04000000 +#define R92C_SYS_CFG_TYPE_92C 0x08000000 + +/* Bits for R92C_CR. */ +#define R92C_CR_HCI_TXDMA_EN 0x0001 +#define R92C_CR_HCI_RXDMA_EN 0x0002 +#define R92C_CR_TXDMA_EN 0x0004 +#define R92C_CR_RXDMA_EN 0x0008 +#define R92C_CR_PROTOCOL_EN 0x0010 +#define R92C_CR_SCHEDULE_EN 0x0020 +#define R92C_CR_MACTXEN 0x0040 +#define R92C_CR_MACRXEN 0x0080 +#define R92C_CR_ENSWBCN 0x0100 +#define R92C_CR_ENSEC 0x0200 +#define R92C_CR_CALTMR_EN 0x0400 + +/* Bits for R92C_MSR. */ +#define R92C_MSR_NOLINK 0x00 +#define R92C_MSR_ADHOC 0x01 +#define R92C_MSR_INFRA 0x02 +#define R92C_MSR_AP 0x03 +#define R92C_MSR_MASK (R92C_MSR_AP) + +/* Bits for R92C_PBP. */ +#define R92C_PBP_PSRX_M 0x0f +#define R92C_PBP_PSRX_S 0 +#define R92C_PBP_PSTX_M 0xf0 +#define R92C_PBP_PSTX_S 4 +#define R92C_PBP_64 0 +#define R92C_PBP_128 1 +#define R92C_PBP_256 2 +#define R92C_PBP_512 3 +#define R92C_PBP_1024 4 + +/* Bits for R92C_TRXDMA_CTRL. */ +#define R92C_TRXDMA_CTRL_RXDMA_AGG_EN 0x0004 +#define R92C_TRXDMA_CTRL_TXDMA_VOQ_MAP_M 0x0030 +#define R92C_TRXDMA_CTRL_TXDMA_VOQ_MAP_S 4 +#define R92C_TRXDMA_CTRL_TXDMA_VIQ_MAP_M 0x00c0 +#define R92C_TRXDMA_CTRL_TXDMA_VIQ_MAP_S 6 +#define R92C_TRXDMA_CTRL_TXDMA_BEQ_MAP_M 0x0300 +#define R92C_TRXDMA_CTRL_TXDMA_BEQ_MAP_S 8 +#define R92C_TRXDMA_CTRL_TXDMA_BKQ_MAP_M 0x0c00 +#define R92C_TRXDMA_CTRL_TXDMA_BKQ_MAP_S 10 +#define R92C_TRXDMA_CTRL_TXDMA_MGQ_MAP_M 0x3000 +#define R92C_TRXDMA_CTRL_TXDMA_MGQ_MAP_S 12 +#define R92C_TRXDMA_CTRL_TXDMA_HIQ_MAP_M 0xc000 +#define R92C_TRXDMA_CTRL_TXDMA_HIQ_MAP_S 14 +#define R92C_TRXDMA_CTRL_QUEUE_LOW 1 +#define R92C_TRXDMA_CTRL_QUEUE_NORMAL 2 +#define R92C_TRXDMA_CTRL_QUEUE_HIGH 3 +#define R92C_TRXDMA_CTRL_QMAP_M 0xfff0 +/* Shortcuts. */ +#define R92C_TRXDMA_CTRL_QMAP_3EP 0xf5b0 +#define R92C_TRXDMA_CTRL_QMAP_HQ_LQ 0xf5f0 +#define R92C_TRXDMA_CTRL_QMAP_HQ_NQ 0xfaf0 +#define R92C_TRXDMA_CTRL_QMAP_LQ 0x5550 +#define R92C_TRXDMA_CTRL_QMAP_NQ 0xaaa0 +#define R92C_TRXDMA_CTRL_QMAP_HQ 0xfff0 + +/* Bits for R92C_C2H_EVT_CLEAR. */ +#define R92C_C2H_EVT_HOST_CLOSE 0x00 +#define R92C_C2H_EVT_FW_CLOSE 0xff + +/* Bits for R92C_LLT_INIT. */ +#define R92C_LLT_INIT_DATA_M 0x000000ff +#define R92C_LLT_INIT_DATA_S 0 +#define R92C_LLT_INIT_ADDR_M 0x0000ff00 +#define R92C_LLT_INIT_ADDR_S 8 +#define R92C_LLT_INIT_OP_M 0xc0000000 +#define R92C_LLT_INIT_OP_S 30 +#define R92C_LLT_INIT_OP_NO_ACTIVE 0 +#define R92C_LLT_INIT_OP_WRITE 1 + +/* Bits for R92C_RQPN. */ +#define R92C_RQPN_HPQ_M 0x000000ff +#define R92C_RQPN_HPQ_S 0 +#define R92C_RQPN_LPQ_M 0x0000ff00 +#define R92C_RQPN_LPQ_S 8 +#define R92C_RQPN_PUBQ_M 0x00ff0000 +#define R92C_RQPN_PUBQ_S 16 +#define R92C_RQPN_LD 0x80000000 + +/* Bits for R92C_TDECTRL. */ +#define R92C_TDECTRL_BLK_DESC_NUM_M 0x000000f0 +#define R92C_TDECTRL_BLK_DESC_NUM_S 4 +#define R92C_TDECTRL_BCN_VALID 0x00010000 + +/* Bits for R92C_TXDMA_OFFSET_CHK. */ +#define R92C_TXDMA_OFFSET_DROP_DATA_EN 0x00000200 + +/* Bits for R92C_FWHW_TXQ_CTRL. */ +#define R92C_FWHW_TXQ_CTRL_AMPDU_RTY_NEW 0x80 +#define R92C_FWHW_TXQ_CTRL_REAL_BEACON 0x400000 + +/* Bits for R92C_SPEC_SIFS. */ +#define R92C_SPEC_SIFS_CCK_M 0x00ff +#define R92C_SPEC_SIFS_CCK_S 0 +#define R92C_SPEC_SIFS_OFDM_M 0xff00 +#define R92C_SPEC_SIFS_OFDM_S 8 + +/* Bits for R92C_RL. */ +#define R92C_RL_LRL_M 0x003f +#define R92C_RL_LRL_S 0 +#define R92C_RL_SRL_M 0x3f00 +#define R92C_RL_SRL_S 8 + +/* Size of R92C_DARFRC. */ +#define R92C_DARFRC_SIZE 8 + +/* Bits for R92C_RRSR. */ +#define R92C_RRSR_RATE_BITMAP_M 0x000fffff +#define R92C_RRSR_RATE_BITMAP_S 0 +#define R92C_RRSR_RATE_CCK_ONLY_1M 0xffff1 +#define R92C_RRSR_RATE_ALL 0xfffff +#define R92C_RRSR_RSC_LOWSUBCHNL 0x00200000 +#define R92C_RRSR_RSC_UPSUBCHNL 0x00400000 +#define R92C_RRSR_SHORT 0x00800000 + +/* Bits for R92C_EDCA_XX_PARAM. */ +#define R92C_EDCA_PARAM_AIFS_M 0x000000ff +#define R92C_EDCA_PARAM_AIFS_S 0 +#define R92C_EDCA_PARAM_ECWMIN_M 0x00000f00 +#define R92C_EDCA_PARAM_ECWMIN_S 8 +#define R92C_EDCA_PARAM_ECWMAX_M 0x0000f000 +#define R92C_EDCA_PARAM_ECWMAX_S 12 +#define R92C_EDCA_PARAM_TXOP_M 0xffff0000 +#define R92C_EDCA_PARAM_TXOP_S 16 + +/* Bits for R92C_HWSEQ_CTRL / R92C_TXPAUSE. */ +#define R92C_TX_QUEUE_VO 0x01 +#define R92C_TX_QUEUE_VI 0x02 +#define R92C_TX_QUEUE_BE 0x04 +#define R92C_TX_QUEUE_BK 0x08 +#define R92C_TX_QUEUE_MGT 0x10 +#define R92C_TX_QUEUE_HIGH 0x20 +#define R92C_TX_QUEUE_BCN 0x40 + +/* Shortcuts. */ +#define R92C_TX_QUEUE_AC \ + (R92C_TX_QUEUE_VO | R92C_TX_QUEUE_VI | \ + R92C_TX_QUEUE_BE | R92C_TX_QUEUE_BK) + +#define R92C_TX_QUEUE_ALL \ + (R92C_TX_QUEUE_AC | R92C_TX_QUEUE_MGT | \ + R92C_TX_QUEUE_HIGH | R92C_TX_QUEUE_BCN | 0x80) /* XXX */ + +/* Bits for R92C_BCN_CTRL. */ +#define R92C_BCN_CTRL_EN_MBSSID 0x02 +#define R92C_BCN_CTRL_TXBCN_RPT 0x04 +#define R92C_BCN_CTRL_EN_BCN 0x08 +#define R92C_BCN_CTRL_DIS_TSF_UDT0 0x10 + +/* Bits for R92C_DUAL_TSF_RST. */ +#define R92C_DUAL_TSF_RESET(id) (0x01 << (id)) +#define R92C_DUAL_TSF_RST_TXOK 0x20 + +/* Bits for R92C_ACMHWCTRL. */ +#define R92C_ACMHWCTRL_EN 0x01 +#define R92C_ACMHWCTRL_BE 0x02 +#define R92C_ACMHWCTRL_VI 0x04 +#define R92C_ACMHWCTRL_VO 0x08 +#define R92C_ACMHWCTRL_ACM_MASK 0x0f + +/* Bits for R92C_APSD_CTRL. */ +#define R92C_APSD_CTRL_OFF 0x40 +#define R92C_APSD_CTRL_OFF_STATUS 0x80 + +/* Bits for R92C_BWOPMODE. */ +#define R92C_BWOPMODE_11J 0x01 +#define R92C_BWOPMODE_5G 0x02 +#define R92C_BWOPMODE_20MHZ 0x04 + +/* Bits for R92C_TCR. */ +#define R92C_TCR_TSFRST 0x00000001 +#define R92C_TCR_DIS_GCLK 0x00000002 +#define R92C_TCR_PAD_SEL 0x00000004 +#define R92C_TCR_PWR_ST 0x00000040 +#define R92C_TCR_PWRBIT_OW_EN 0x00000080 +#define R92C_TCR_ACRC 0x00000100 +#define R92C_TCR_CFENDFORM 0x00000200 +#define R92C_TCR_ICV 0x00000400 + +/* Bits for R92C_RCR. */ +#define R92C_RCR_AAP 0x00000001 +#define R92C_RCR_APM 0x00000002 +#define R92C_RCR_AM 0x00000004 +#define R92C_RCR_AB 0x00000008 +#define R92C_RCR_ADD3 0x00000010 +#define R92C_RCR_APWRMGT 0x00000020 +#define R92C_RCR_CBSSID_DATA 0x00000040 +#define R92C_RCR_CBSSID_BCN 0x00000080 +#define R92C_RCR_ACRC32 0x00000100 +#define R92C_RCR_AICV 0x00000200 +#define R92C_RCR_ADF 0x00000800 +#define R92C_RCR_ACF 0x00001000 +#define R92C_RCR_AMF 0x00002000 +#define R92C_RCR_HTC_LOC_CTRL 0x00004000 +#define R92C_RCR_MFBEN 0x00400000 +#define R92C_RCR_LSIGEN 0x00800000 +#define R92C_RCR_ENMBID 0x01000000 +#define R92C_RCR_APP_BA_SSN 0x08000000 +#define R92C_RCR_APP_PHYSTS 0x10000000 +#define R92C_RCR_APP_ICV 0x20000000 +#define R92C_RCR_APP_MIC 0x40000000 +#define R92C_RCR_APPFCS 0x80000000 + +/* Bits for R92C_RX_DRVINFO_SZ. */ +#define R92C_RX_DRVINFO_SZ_DEF 4 /* XXX other values will not work */ + +/* Bits for R92C_WMAC_TRXPTCL_CTL. */ +#define R92C_WMAC_TRXPTCL_SHPRE 0x00020000 + +/* Bits for R92C_CAMCMD. */ +#define R92C_CAMCMD_ADDR_M 0x0000ffff +#define R92C_CAMCMD_ADDR_S 0 +#define R92C_CAMCMD_WRITE 0x00010000 +#define R92C_CAMCMD_CLR 0x40000000 +#define R92C_CAMCMD_POLLING 0x80000000 + + +/* + * CAM entries. + */ +#define R92C_CAM_CTL0(entry) ((entry) * 8 + 0) +#define R92C_CAM_CTL1(entry) ((entry) * 8 + 1) +#define R92C_CAM_KEY(entry, i) ((entry) * 8 + 2 + (i)) +#define R92C_CAM_CTL6(entry) ((entry) * 8 + 6) +#define R92C_CAM_CTL7(entry) ((entry) * 8 + 7) + +/* Bits for R92C_CAM_CTL0(i). */ +#define R92C_CAM_KEYID_M 0x00000003 +#define R92C_CAM_KEYID_S 0 +#define R92C_CAM_ALGO_M 0x0000001c +#define R92C_CAM_ALGO_S 2 +#define R92C_CAM_ALGO_NONE 0 +#define R92C_CAM_ALGO_WEP40 1 +#define R92C_CAM_ALGO_TKIP 2 +#define R92C_CAM_ALGO_AES 4 +#define R92C_CAM_ALGO_WEP104 5 +#define R92C_CAM_VALID 0x00008000 +#define R92C_CAM_MACLO_M 0xffff0000 +#define R92C_CAM_MACLO_S 16 + +/* Bits for R92C_SECCFG. */ +#define R92C_SECCFG_TXUCKEY_DEF 0x0001 +#define R92C_SECCFG_RXUCKEY_DEF 0x0002 +#define R92C_SECCFG_TXENC_ENA 0x0004 +#define R92C_SECCFG_RXDEC_ENA 0x0008 +#define R92C_SECCFG_CMP_A2 0x0010 +#define R92C_SECCFG_MC_SRCH_DIS 0x0020 +#define R92C_SECCFG_TXBCKEY_DEF 0x0040 +#define R92C_SECCFG_RXBCKEY_DEF 0x0080 + +/* Bits for R92C_RXFLTMAP*. */ +#define R92C_RXFLTMAP_SUBTYPE(subtype) \ + (1 << ((subtype) >> IEEE80211_FC0_SUBTYPE_SHIFT)) + + +/* + * Baseband registers. + */ +#define R92C_FPGA0_RFMOD 0x800 +#define R92C_FPGA0_TXINFO 0x804 +#define R92C_HSSI_PARAM1(chain) (0x820 + (chain) * 8) +#define R92C_HSSI_PARAM2(chain) (0x824 + (chain) * 8) +#define R92C_TXAGC_RATE18_06(i) (((i) == 0) ? 0xe00 : 0x830) +#define R92C_TXAGC_RATE54_24(i) (((i) == 0) ? 0xe04 : 0x834) +#define R92C_TXAGC_A_CCK1_MCS32 0xe08 +#define R92C_TXAGC_B_CCK1_55_MCS32 0x838 +#define R92C_TXAGC_B_CCK11_A_CCK2_11 0x86c +#define R92C_TXAGC_MCS03_MCS00(i) (((i) == 0) ? 0xe10 : 0x83c) +#define R92C_TXAGC_MCS07_MCS04(i) (((i) == 0) ? 0xe14 : 0x848) +#define R92C_TXAGC_MCS11_MCS08(i) (((i) == 0) ? 0xe18 : 0x84c) +#define R92C_TXAGC_MCS15_MCS12(i) (((i) == 0) ? 0xe1c : 0x868) +#define R92C_LSSI_PARAM(chain) (0x840 + (chain) * 4) +#define R92C_FPGA0_RFIFACEOE(chain) (0x860 + (chain) * 4) +#define R92C_FPGA0_RFIFACESW(idx) (0x870 + (idx) * 4) +#define R92C_FPGA0_RFPARAM(idx) (0x878 + (idx) * 4) +#define R92C_FPGA0_ANAPARAM2 0x884 +#define R92C_LSSI_READBACK(chain) (0x8a0 + (chain) * 4) +#define R92C_HSPI_READBACK(chain) (0x8b8 + (chain) * 4) +#define R92C_FPGA1_RFMOD 0x900 +#define R92C_FPGA1_TXINFO 0x90c +#define R92C_CCK0_SYSTEM 0xa00 +#define R92C_CCK0_AFESETTING 0xa04 +#define R92C_OFDM0_TRXPATHENA 0xc04 +#define R92C_OFDM0_TRMUXPAR 0xc08 +#define R92C_OFDM0_RXIQIMBALANCE(chain) (0xc14 + (chain) * 8) +#define R92C_OFDM0_ECCATHRESHOLD 0xc4c +#define R92C_OFDM0_AGCCORE1(chain) (0xc50 + (chain) * 8) +#define R92C_OFDM0_AGCPARAM1 0xc70 +#define R92C_OFDM0_AGCRSSITABLE 0xc78 +#define R92C_OFDM0_TXIQIMBALANCE(chain) (0xc80 + (chain) * 8) +#define R92C_OFDM0_TXAFE(chain) (0xc94 + (chain) * 8) +#define R92C_OFDM0_RXIQEXTANTA 0xca0 +#define R92C_OFDM1_LSTF 0xd00 + +/* Bits for R92C_FPGA[01]_RFMOD. */ +#define R92C_RFMOD_40MHZ 0x00000001 +#define R92C_RFMOD_JAPAN 0x00000002 +#define R92C_RFMOD_CCK_TXSC 0x00000030 +#define R92C_RFMOD_CCK_EN 0x01000000 +#define R92C_RFMOD_OFDM_EN 0x02000000 + +/* Bits for R92C_HSSI_PARAM1(i). */ +#define R92C_HSSI_PARAM1_PI 0x00000100 + +/* Bits for R92C_HSSI_PARAM2(i). */ +#define R92C_HSSI_PARAM2_CCK_HIPWR 0x00000200 +#define R92C_HSSI_PARAM2_ADDR_LENGTH 0x00000400 +#define R92C_HSSI_PARAM2_DATA_LENGTH 0x00000800 +#define R92C_HSSI_PARAM2_READ_ADDR_M 0x7f800000 +#define R92C_HSSI_PARAM2_READ_ADDR_S 23 +#define R92C_HSSI_PARAM2_READ_EDGE 0x80000000 + +/* Bits for R92C_TXAGC_A_CCK1_MCS32. */ +#define R92C_TXAGC_A_CCK1_M 0x0000ff00 +#define R92C_TXAGC_A_CCK1_S 8 + +/* Bits for R92C_TXAGC_B_CCK11_A_CCK2_11. */ +#define R92C_TXAGC_B_CCK11_M 0x000000ff +#define R92C_TXAGC_B_CCK11_S 0 +#define R92C_TXAGC_A_CCK2_M 0x0000ff00 +#define R92C_TXAGC_A_CCK2_S 8 +#define R92C_TXAGC_A_CCK55_M 0x00ff0000 +#define R92C_TXAGC_A_CCK55_S 16 +#define R92C_TXAGC_A_CCK11_M 0xff000000 +#define R92C_TXAGC_A_CCK11_S 24 + +/* Bits for R92C_TXAGC_B_CCK1_55_MCS32. */ +#define R92C_TXAGC_B_CCK1_M 0x0000ff00 +#define R92C_TXAGC_B_CCK1_S 8 +#define R92C_TXAGC_B_CCK2_M 0x00ff0000 +#define R92C_TXAGC_B_CCK2_S 16 +#define R92C_TXAGC_B_CCK55_M 0xff000000 +#define R92C_TXAGC_B_CCK55_S 24 + +/* Bits for R92C_TXAGC_RATE18_06(x). */ +#define R92C_TXAGC_RATE06_M 0x000000ff +#define R92C_TXAGC_RATE06_S 0 +#define R92C_TXAGC_RATE09_M 0x0000ff00 +#define R92C_TXAGC_RATE09_S 8 +#define R92C_TXAGC_RATE12_M 0x00ff0000 +#define R92C_TXAGC_RATE12_S 16 +#define R92C_TXAGC_RATE18_M 0xff000000 +#define R92C_TXAGC_RATE18_S 24 + +/* Bits for R92C_TXAGC_RATE54_24(x). */ +#define R92C_TXAGC_RATE24_M 0x000000ff +#define R92C_TXAGC_RATE24_S 0 +#define R92C_TXAGC_RATE36_M 0x0000ff00 +#define R92C_TXAGC_RATE36_S 8 +#define R92C_TXAGC_RATE48_M 0x00ff0000 +#define R92C_TXAGC_RATE48_S 16 +#define R92C_TXAGC_RATE54_M 0xff000000 +#define R92C_TXAGC_RATE54_S 24 + +/* Bits for R92C_TXAGC_MCS03_MCS00(x). */ +#define R92C_TXAGC_MCS00_M 0x000000ff +#define R92C_TXAGC_MCS00_S 0 +#define R92C_TXAGC_MCS01_M 0x0000ff00 +#define R92C_TXAGC_MCS01_S 8 +#define R92C_TXAGC_MCS02_M 0x00ff0000 +#define R92C_TXAGC_MCS02_S 16 +#define R92C_TXAGC_MCS03_M 0xff000000 +#define R92C_TXAGC_MCS03_S 24 + +/* Bits for R92C_TXAGC_MCS07_MCS04(x). */ +#define R92C_TXAGC_MCS04_M 0x000000ff +#define R92C_TXAGC_MCS04_S 0 +#define R92C_TXAGC_MCS05_M 0x0000ff00 +#define R92C_TXAGC_MCS05_S 8 +#define R92C_TXAGC_MCS06_M 0x00ff0000 +#define R92C_TXAGC_MCS06_S 16 +#define R92C_TXAGC_MCS07_M 0xff000000 +#define R92C_TXAGC_MCS07_S 24 + +/* Bits for R92C_TXAGC_MCS11_MCS08(x). */ +#define R92C_TXAGC_MCS08_M 0x000000ff +#define R92C_TXAGC_MCS08_S 0 +#define R92C_TXAGC_MCS09_M 0x0000ff00 +#define R92C_TXAGC_MCS09_S 8 +#define R92C_TXAGC_MCS10_M 0x00ff0000 +#define R92C_TXAGC_MCS10_S 16 +#define R92C_TXAGC_MCS11_M 0xff000000 +#define R92C_TXAGC_MCS11_S 24 + +/* Bits for R92C_TXAGC_MCS15_MCS12(x). */ +#define R92C_TXAGC_MCS12_M 0x000000ff +#define R92C_TXAGC_MCS12_S 0 +#define R92C_TXAGC_MCS13_M 0x0000ff00 +#define R92C_TXAGC_MCS13_S 8 +#define R92C_TXAGC_MCS14_M 0x00ff0000 +#define R92C_TXAGC_MCS14_S 16 +#define R92C_TXAGC_MCS15_M 0xff000000 +#define R92C_TXAGC_MCS15_S 24 + +/* Bits for R92C_LSSI_PARAM(i). */ +#define R92C_LSSI_PARAM_DATA_M 0x000fffff +#define R92C_LSSI_PARAM_DATA_S 0 +#define R92C_LSSI_PARAM_ADDR_M 0x03f00000 +#define R92C_LSSI_PARAM_ADDR_S 20 + +/* Bits for R92C_FPGA0_RFIFACEOE(0). */ +#define R92C_FPGA0_RFIFACEOE0_ANT_M 0x00000300 +#define R92C_FPGA0_RFIFACEOE0_ANT_S 8 + +/* Bits for R92C_FPGA0_ANAPARAM2. */ +#define R92C_FPGA0_ANAPARAM2_CBW20 0x00000400 + +/* Bits for R92C_LSSI_READBACK(i). */ +#define R92C_LSSI_READBACK_DATA_M 0x000fffff +#define R92C_LSSI_READBACK_DATA_S 0 + +/* Bits for R92C_OFDM0_AGCCORE1(i). */ +#define R92C_OFDM0_AGCCORE1_GAIN_M 0x0000007f +#define R92C_OFDM0_AGCCORE1_GAIN_S 0 + + +/* + * RF (6052) registers. + */ +#define R92C_RF_AC 0x00 +#define R92C_RF_IQADJ_G(i) (0x01 + (i)) +#define R92C_RF_POW_TRSW 0x05 +#define R92C_RF_GAIN_RX 0x06 +#define R92C_RF_GAIN_TX 0x07 +#define R92C_RF_TXM_IDAC 0x08 +#define R92C_RF_BS_IQGEN 0x0f +#define R92C_RF_MODE1 0x10 +#define R92C_RF_MODE2 0x11 +#define R92C_RF_RX_AGC_HP 0x12 +#define R92C_RF_TX_AGC 0x13 +#define R92C_RF_BIAS 0x14 +#define R92C_RF_IPA 0x15 +#define R92C_RF_POW_ABILITY 0x17 +#define R92C_RF_CHNLBW 0x18 +#define R92C_RF_RX_G1 0x1a +#define R92C_RF_RX_G2 0x1b +#define R92C_RF_RX_BB2 0x1c +#define R92C_RF_RX_BB1 0x1d +#define R92C_RF_RCK1 0x1e +#define R92C_RF_RCK2 0x1f +#define R92C_RF_TX_G(i) (0x20 + (i)) +#define R92C_RF_TX_BB1 0x23 +#define R92C_RF_T_METER 0x24 +#define R92C_RF_SYN_G(i) (0x25 + (i)) +#define R92C_RF_RCK_OS 0x30 +#define R92C_RF_TXPA_G(i) (0x31 + (i)) + +/* Bits for R92C_RF_AC. */ +#define R92C_RF_AC_MODE_M 0x70000 +#define R92C_RF_AC_MODE_S 16 +#define R92C_RF_AC_MODE_STANDBY 1 + +/* Bits for R92C_RF_CHNLBW. */ +#define R92C_RF_CHNLBW_CHNL_M 0x003ff +#define R92C_RF_CHNLBW_CHNL_S 0 +#define R92C_RF_CHNLBW_BW20 0x00400 +#define R92C_RF_CHNLBW_LCSTART 0x08000 + +/* Bits for R92C_RF_T_METER. */ +#define R92C_RF_T_METER_START 0x60 +#define R92C_RF_T_METER_VAL_M 0x1f +#define R92C_RF_T_METER_VAL_S 0 + +#endif /* R92C_REG_H */ diff --git a/sys/dev/rtwn/rtl8192c/r92c_rf.c b/sys/dev/rtwn/rtl8192c/r92c_rf.c new file mode 100644 index 000000000000..f36f035f2a9b --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/r92c_rf.c @@ -0,0 +1,93 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include +#include + + +uint32_t +r92c_rf_read(struct rtwn_softc *sc, int chain, uint8_t addr) +{ + struct r92c_softc *rs = sc->sc_priv; + uint32_t reg[R92C_MAX_CHAINS], val; + + reg[0] = rtwn_bb_read(sc, R92C_HSSI_PARAM2(0)); + if (chain != 0) + reg[chain] = rtwn_bb_read(sc, R92C_HSSI_PARAM2(chain)); + + rtwn_bb_write(sc, R92C_HSSI_PARAM2(0), + reg[0] & ~R92C_HSSI_PARAM2_READ_EDGE); + rtwn_delay(sc, rs->rf_read_delay[0]); + + rtwn_bb_write(sc, R92C_HSSI_PARAM2(chain), + RW(reg[chain], R92C_HSSI_PARAM2_READ_ADDR, addr) | + R92C_HSSI_PARAM2_READ_EDGE); + rtwn_delay(sc, rs->rf_read_delay[1]); + + rtwn_bb_write(sc, R92C_HSSI_PARAM2(0), + reg[0] | R92C_HSSI_PARAM2_READ_EDGE); + rtwn_delay(sc, rs->rf_read_delay[2]); + + if (rtwn_bb_read(sc, R92C_HSSI_PARAM1(chain)) & R92C_HSSI_PARAM1_PI) + val = rtwn_bb_read(sc, R92C_HSPI_READBACK(chain)); + else + val = rtwn_bb_read(sc, R92C_LSSI_READBACK(chain)); + return (MS(val, R92C_LSSI_READBACK_DATA)); +} + +void +r92c_rf_write(struct rtwn_softc *sc, int chain, uint8_t addr, + uint32_t val) +{ + rtwn_bb_write(sc, R92C_LSSI_PARAM(chain), + SM(R92C_LSSI_PARAM_ADDR, addr) | + SM(R92C_LSSI_PARAM_DATA, val)); +} diff --git a/sys/dev/rtwn/rtl8192c/r92c_rom.c b/sys/dev/rtwn/rtl8192c/r92c_rom.c new file mode 100644 index 000000000000..0a427455806d --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/r92c_rom.c @@ -0,0 +1,139 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include +#include + + +static void +r92c_set_chains(struct rtwn_softc *sc) +{ + struct r92c_softc *rs = sc->sc_priv; + + if (rs->chip & R92C_CHIP_92C) { + sc->ntxchains = (rs->chip & R92C_CHIP_92C_1T2R) ? 1 : 2; + sc->nrxchains = 2; + } else { + sc->ntxchains = 1; + sc->nrxchains = 1; + } +} + +void +r92c_efuse_postread(struct rtwn_softc *sc) +{ + struct r92c_softc *rs = sc->sc_priv; + + /* XXX Weird but this is what the vendor driver does. */ + sc->next_rom_addr = 0x1fa; + (void) rtwn_efuse_read_next(sc, &rs->pa_setting); + RTWN_DPRINTF(sc, RTWN_DEBUG_ROM, "%s: PA setting=0x%x\n", __func__, + rs->pa_setting); +} + +void +r92c_parse_rom(struct rtwn_softc *sc, uint8_t *buf) +{ + struct r92c_softc *rs = sc->sc_priv; + struct rtwn_r92c_txpwr *rt = rs->rs_txpwr; + struct r92c_rom *rom = (struct r92c_rom *)buf; + int i, j; + + rs->board_type = MS(rom->rf_opt1, R92C_ROM_RF1_BOARD_TYPE); + rs->regulatory = MS(rom->rf_opt1, R92C_ROM_RF1_REGULATORY); + RTWN_DPRINTF(sc, RTWN_DEBUG_ROM, "%s: regulatory type=%d\n", + __func__, rs->regulatory); + + /* Need to be set before postinit() (but after preinit()). */ + rtwn_r92c_set_name(sc); + r92c_set_chains(sc); + + for (j = 0; j < R92C_GROUP_2G; j++) { + for (i = 0; i < sc->ntxchains; i++) { + rt->cck_tx_pwr[i][j] = rom->cck_tx_pwr[i][j]; + rt->ht40_1s_tx_pwr[i][j] = rom->ht40_1s_tx_pwr[i][j]; + } + + rt->ht40_2s_tx_pwr_diff[0][j] = + MS(rom->ht40_2s_tx_pwr_diff[j], LOW_PART); + rt->ht20_tx_pwr_diff[0][j] = + RTWN_SIGN4TO8(MS(rom->ht20_tx_pwr_diff[j], + LOW_PART)); + rt->ofdm_tx_pwr_diff[0][j] = + MS(rom->ofdm_tx_pwr_diff[j], LOW_PART); + rt->ht40_max_pwr[0][j] = + MS(rom->ht40_max_pwr[j], LOW_PART); + rt->ht20_max_pwr[0][j] = + MS(rom->ht20_max_pwr[j], LOW_PART); + + if (sc->ntxchains > 1) { + rt->ht40_2s_tx_pwr_diff[1][j] = + MS(rom->ht40_2s_tx_pwr_diff[j], HIGH_PART); + rt->ht20_tx_pwr_diff[1][j] = + RTWN_SIGN4TO8(MS(rom->ht20_tx_pwr_diff[j], + HIGH_PART)); + rt->ofdm_tx_pwr_diff[1][j] = + MS(rom->ofdm_tx_pwr_diff[j], HIGH_PART); + rt->ht40_max_pwr[1][j] = + MS(rom->ht40_max_pwr[j], HIGH_PART); + rt->ht20_max_pwr[1][j] = + MS(rom->ht20_max_pwr[j], HIGH_PART); + } + } + + sc->thermal_meter = MS(rom->thermal_meter, R92C_ROM_THERMAL_METER); + if (sc->thermal_meter == R92C_ROM_THERMAL_METER_M) + sc->thermal_meter = 0xff; + IEEE80211_ADDR_COPY(sc->sc_ic.ic_macaddr, rom->macaddr); +} diff --git a/sys/dev/rtwn/rtl8192c/r92c_rom_defs.h b/sys/dev/rtwn/rtl8192c/r92c_rom_defs.h new file mode 100644 index 000000000000..35fc42df7878 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/r92c_rom_defs.h @@ -0,0 +1,57 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef R92C_ROM_DEFS_H +#define R92C_ROM_DEFS_H + +#define R92C_MAX_CHAINS 2 +#define R92C_GROUP_2G 3 + +#define R92C_EFUSE_MAX_LEN 512 +#define R92C_EFUSE_MAP_LEN 128 + +/* + * Some generic rom parsing macros. + */ +#define RTWN_GET_ROM_VAR(var, def) (((var) != 0xff) ? (var) : (def)) +#define RTWN_SIGN4TO8(val) (((val) & 0x08) ? (val) | 0xf0 : (val)) + +#define LOW_PART_M 0x0f +#define LOW_PART_S 0 +#define HIGH_PART_M 0xf0 +#define HIGH_PART_S 4 + +/* Bits for rf_board_opt (rf_opt1) field. */ +#define R92C_ROM_RF1_REGULATORY_M 0x07 +#define R92C_ROM_RF1_REGULATORY_S 0 +#define R92C_ROM_RF1_BOARD_TYPE_M 0xe0 +#define R92C_ROM_RF1_BOARD_TYPE_S 5 + +/* Generic board types. */ +#define R92C_BOARD_TYPE_DONGLE 0 +#define R92C_BOARD_TYPE_HIGHPA 1 +#define R92C_BOARD_TYPE_MINICARD 2 +#define R92C_BOARD_TYPE_SOLO 3 +#define R92C_BOARD_TYPE_COMBO 4 + +/* Bits for channel_plan field. */ +#define R92C_CHANNEL_PLAN_BY_HW 0x80 + +#endif /* R92C_ROM_DEFS_H */ diff --git a/sys/dev/rtwn/rtl8192c/r92c_rom_image.h b/sys/dev/rtwn/rtl8192c/r92c_rom_image.h new file mode 100644 index 000000000000..304324e67e75 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/r92c_rom_image.h @@ -0,0 +1,71 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef R92C_ROM_IMAGE_H +#define R92C_ROM_IMAGE_H + +#include + +/* + * RTL8192CU ROM image. + */ +struct r92c_rom { + uint16_t id; /* 0x8192 */ + uint8_t reserved1[5]; + uint8_t dbg_sel; + uint16_t reserved2; + uint16_t vid; + uint16_t pid; + uint8_t usb_opt; + uint8_t ep_setting; + uint16_t reserved3; + uint8_t usb_phy; + uint8_t reserved4[3]; + uint8_t macaddr[IEEE80211_ADDR_LEN]; + uint8_t string[61]; /* "Realtek" */ + uint8_t subcustomer_id; + uint8_t cck_tx_pwr[R92C_MAX_CHAINS][R92C_GROUP_2G]; + uint8_t ht40_1s_tx_pwr[R92C_MAX_CHAINS][R92C_GROUP_2G]; + uint8_t ht40_2s_tx_pwr_diff[R92C_GROUP_2G]; + uint8_t ht20_tx_pwr_diff[R92C_GROUP_2G]; + uint8_t ofdm_tx_pwr_diff[R92C_GROUP_2G]; + uint8_t ht40_max_pwr[R92C_GROUP_2G]; + uint8_t ht20_max_pwr[R92C_GROUP_2G]; + uint8_t xtal_calib; + uint8_t tssi[R92C_MAX_CHAINS]; + uint8_t thermal_meter; +#define R92C_ROM_THERMAL_METER_M 0x1f +#define R92C_ROM_THERMAL_METER_S 0 + + uint8_t rf_opt1; + uint8_t rf_opt2; + uint8_t rf_opt3; + uint8_t rf_opt4; + uint8_t channel_plan; +#define R92C_CHANNEL_PLAN_BY_HW 0x80 + + uint8_t version; + uint8_t customer_id; +} __packed; + +_Static_assert(sizeof(struct r92c_rom) == R92C_EFUSE_MAP_LEN, + "R92C_EFUSE_MAP_LEN must be equal to sizeof(struct r92c_rom)!"); + +#endif /* R92C_ROM_IMAGE_H */ diff --git a/sys/dev/rtwn/rtl8192c/r92c_rx.c b/sys/dev/rtwn/rtl8192c/r92c_rx.c new file mode 100644 index 000000000000..aa9da3ebc5a5 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/r92c_rx.c @@ -0,0 +1,102 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include + + +int8_t +r92c_get_rssi_cck(struct rtwn_softc *sc, void *physt) +{ + static const int8_t cckoff[] = { 16, -12, -26, -46 }; + struct r92c_rx_cck *cck = (struct r92c_rx_cck *)physt; + uint8_t rpt; + int8_t rssi; + + if (sc->sc_flags & RTWN_FLAG_CCK_HIPWR) { + rpt = (cck->agc_rpt >> 5) & 0x03; + rssi = (cck->agc_rpt & 0x1f) << 1; + } else { + rpt = (cck->agc_rpt >> 6) & 0x03; + rssi = cck->agc_rpt & 0x3e; + } + rssi = cckoff[rpt] - rssi; + + return (rssi); +} + +int8_t +r92c_get_rssi_ofdm(struct rtwn_softc *sc, void *physt) +{ + struct r92c_rx_phystat *phy = (struct r92c_rx_phystat *)physt; + int rssi; + + /* Get average RSSI. */ + rssi = ((phy->pwdb_all >> 1) & 0x7f) - 110; + + return (rssi); +} + +uint8_t +r92c_rx_radiotap_flags(const void *buf) +{ + const struct r92c_rx_stat *stat = buf; + uint8_t flags, rate; + + if (!(stat->rxdw3 & htole32(R92C_RXDW3_SPLCP))) + return (0); + + rate = MS(le32toh(stat->rxdw3), R92C_RXDW3_RATE); + if (RTWN_RATE_IS_CCK(rate)) + flags = IEEE80211_RADIOTAP_F_SHORTPRE; + else + flags = IEEE80211_RADIOTAP_F_SHORTGI; + return (flags); +} diff --git a/sys/dev/rtwn/rtl8192c/r92c_rx_desc.h b/sys/dev/rtwn/rtl8192c/r92c_rx_desc.h new file mode 100644 index 000000000000..7fec70bec0c8 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/r92c_rx_desc.h @@ -0,0 +1,95 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef R92C_RX_DESC_H +#define R92C_RX_DESC_H + +/* Rx MAC descriptor (common parts / USB). */ +struct r92c_rx_stat { + uint32_t rxdw0; +#define R92C_RXDW0_PKTLEN_M 0x00003fff +#define R92C_RXDW0_PKTLEN_S 0 +#define R92C_RXDW0_CRCERR 0x00004000 +#define R92C_RXDW0_ICVERR 0x00008000 +#define R92C_RXDW0_INFOSZ_M 0x000f0000 +#define R92C_RXDW0_INFOSZ_S 16 +#define R92C_RXDW0_CIPHER_M 0x00700000 +#define R92C_RXDW0_CIPHER_S 20 +#define R92C_RXDW0_QOS 0x00800000 +#define R92C_RXDW0_SHIFT_M 0x03000000 +#define R92C_RXDW0_SHIFT_S 24 +#define R92C_RXDW0_PHYST 0x04000000 +#define R92C_RXDW0_SWDEC 0x08000000 +#define R92C_RXDW0_LS 0x10000000 +#define R92C_RXDW0_FS 0x20000000 +#define R92C_RXDW0_EOR 0x40000000 +#define R92C_RXDW0_OWN 0x80000000 + + uint32_t rxdw1; +#define R92C_RXDW1_MACID_M 0x0000001f +#define R92C_RXDW1_MACID_S 0 +#define R92C_RXDW1_MC 0x40000000 +#define R92C_RXDW1_BC 0x80000000 + + uint32_t rxdw2; + uint32_t rxdw3; +#define R92C_RXDW3_RATE_M 0x0000003f +#define R92C_RXDW3_RATE_S 0 +#define R92C_RXDW3_HT 0x00000040 +#define R92C_RXDW3_SPLCP 0x00000100 +#define R92C_RXDW3_HT40 0x00000200 +#define R92C_RXDW3_HTC 0x00000400 + + uint32_t rxdw4; + uint32_t tsf_low; +} __packed __attribute__((aligned(4))); + +/* Rx PHY CCK descriptor. */ +struct r92c_rx_cck { + uint8_t adc_pwdb[4]; + uint8_t sq_rpt; + uint8_t agc_rpt; +} __packed; + +/* Rx PHY descriptor. */ +struct r92c_rx_phystat { + uint8_t trsw_gain[4]; + uint8_t pwdb_all; + uint8_t cfosho[4]; + uint8_t cfotail[4]; + uint8_t rxevm[2]; + uint8_t rxsnr[4]; + uint8_t pdsnr[2]; + uint8_t csi_current[2]; + uint8_t csi_target[2]; + uint8_t sigevm; + uint8_t max_ex_pwr; + uint8_t phy_byte28; +#define R92C_PHY_BYTE28_ANTSEL 0x01 +#define R92C_PHY_BYTE28_ANTSEL_B 0x02 +#define R92C_PHY_BYTE28_ANT_TRAIN_EN 0x04 +#define R92C_PHY_BYTE28_IDLE_LONG 0x08 +#define R92C_PHY_BYTE28_RXSC_M 0x30 +#define R92C_PHY_BYTE28_RXSC_S 4 +#define R92C_PHY_BYTE28_SGI_EN 0x40 +#define R92C_PHY_BYTE28_EX_INTF_FLG 0x80 +} __packed; + +#endif /* R92C_RX_DESC_H */ diff --git a/sys/dev/rtwn/rtl8192c/r92c_tx.c b/sys/dev/rtwn/rtl8192c/r92c_tx.c new file mode 100644 index 000000000000..138bf196e253 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/r92c_tx.c @@ -0,0 +1,436 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include + + +static int +r92c_tx_get_sco(struct rtwn_softc *sc, struct ieee80211_channel *c) +{ + if (IEEE80211_IS_CHAN_HT40U(c)) + return (R92C_TXDW4_SCO_SCA); + else + return (R92C_TXDW4_SCO_SCB); +} + +static void +r92c_tx_set_ht40(struct rtwn_softc *sc, void *buf, struct ieee80211_node *ni) +{ + struct r92c_tx_desc *txd = (struct r92c_tx_desc *)buf; + + if (ni->ni_chan != IEEE80211_CHAN_ANYC && + IEEE80211_IS_CHAN_HT40(ni->ni_chan)) { + int extc_offset; + + extc_offset = r92c_tx_get_sco(sc, ni->ni_chan); + txd->txdw4 |= htole32(R92C_TXDW4_DATA_BW40); + txd->txdw4 |= htole32(SM(R92C_TXDW4_DATA_SCO, extc_offset)); + } +} + +static void +r92c_tx_protection(struct rtwn_softc *sc, struct r92c_tx_desc *txd, + enum ieee80211_protmode mode, uint8_t ridx) +{ + struct ieee80211com *ic = &sc->sc_ic; + uint8_t rate; + + switch (mode) { + case IEEE80211_PROT_CTSONLY: + txd->txdw4 |= htole32(R92C_TXDW4_CTS2SELF); + break; + case IEEE80211_PROT_RTSCTS: + txd->txdw4 |= htole32(R92C_TXDW4_RTSEN); + break; + default: + break; + } + + if (mode == IEEE80211_PROT_CTSONLY || + mode == IEEE80211_PROT_RTSCTS) { + if (ridx >= RTWN_RIDX_MCS(0)) + rate = rtwn_ctl_mcsrate(ic->ic_rt, ridx); + else + rate = ieee80211_ctl_rate(ic->ic_rt, ridx2rate[ridx]); + ridx = rate2ridx(rate); + + txd->txdw4 |= htole32(SM(R92C_TXDW4_RTSRATE, ridx)); + /* RTS rate fallback limit (max). */ + txd->txdw5 |= htole32(SM(R92C_TXDW5_RTSRATE_FB_LMT, 0xf)); + + if (RTWN_RATE_IS_CCK(ridx) && ridx != RTWN_RIDX_CCK1 && + (ic->ic_flags & IEEE80211_F_SHPREAMBLE)) + txd->txdw4 |= htole32(R92C_TXDW4_RTS_SHORT); + } +} + +static void +r92c_tx_raid(struct rtwn_softc *sc, struct r92c_tx_desc *txd, + struct ieee80211_node *ni, int ismcast) +{ + struct ieee80211com *ic = &sc->sc_ic; + struct ieee80211vap *vap = ni->ni_vap; + struct ieee80211_channel *chan; + enum ieee80211_phymode mode; + uint8_t raid; + + chan = (ni->ni_chan != IEEE80211_CHAN_ANYC) ? + ni->ni_chan : ic->ic_curchan; + mode = ieee80211_chan2mode(chan); + + /* NB: group addressed frames are done at 11bg rates for now */ + if (ismcast || !(ni->ni_flags & IEEE80211_NODE_HT)) { + switch (mode) { + case IEEE80211_MODE_11B: + case IEEE80211_MODE_11G: + break; + case IEEE80211_MODE_11NG: + mode = IEEE80211_MODE_11G; + break; + default: + device_printf(sc->sc_dev, "unknown mode(1) %d!\n", + ic->ic_curmode); + return; + } + } + + switch (mode) { + case IEEE80211_MODE_11B: + raid = R92C_RAID_11B; + break; + case IEEE80211_MODE_11G: + if (vap->iv_flags & IEEE80211_F_PUREG) + raid = R92C_RAID_11G; + else + raid = R92C_RAID_11BG; + break; + case IEEE80211_MODE_11NG: + if (vap->iv_flags_ht & IEEE80211_FHT_PUREN) + raid = R92C_RAID_11N; + else + raid = R92C_RAID_11BGN; + break; + default: + device_printf(sc->sc_dev, "unknown mode(2) %d!\n", mode); + return; + } + + txd->txdw1 |= htole32(SM(R92C_TXDW1_RAID, raid)); +} + +/* XXX move to device-independent layer */ +static void +r92c_tx_set_sgi(struct rtwn_softc *sc, void *buf, struct ieee80211_node *ni) +{ + struct r92c_tx_desc *txd = (struct r92c_tx_desc *)buf; + struct ieee80211vap *vap = ni->ni_vap; + + if ((vap->iv_flags_ht & IEEE80211_FHT_SHORTGI20) && /* HT20 */ + (ni->ni_htcap & IEEE80211_HTCAP_SHORTGI20)) + txd->txdw5 |= htole32(R92C_TXDW5_SGI); + else if (ni->ni_chan != IEEE80211_CHAN_ANYC && /* HT40 */ + IEEE80211_IS_CHAN_HT40(ni->ni_chan) && + (ni->ni_htcap & IEEE80211_HTCAP_SHORTGI40) && + (vap->iv_flags_ht & IEEE80211_FHT_SHORTGI40)) + txd->txdw5 |= htole32(R92C_TXDW5_SGI); +} + +void +r92c_tx_enable_ampdu(void *buf, int enable) +{ + struct r92c_tx_desc *txd = (struct r92c_tx_desc *)buf; + + if (enable) + txd->txdw1 |= htole32(R92C_TXDW1_AGGEN); + else + txd->txdw1 |= htole32(R92C_TXDW1_AGGBK); +} + +void +r92c_tx_setup_hwseq(void *buf) +{ + struct r92c_tx_desc *txd = (struct r92c_tx_desc *)buf; + + txd->txdw4 |= htole32(R92C_TXDW4_HWSEQ_EN); +} + +void +r92c_tx_setup_macid(void *buf, int id) +{ + struct r92c_tx_desc *txd = (struct r92c_tx_desc *)buf; + + txd->txdw1 |= htole32(SM(R92C_TXDW1_MACID, id)); +} + +void +r92c_fill_tx_desc(struct rtwn_softc *sc, struct ieee80211_node *ni, + struct mbuf *m, void *buf, uint8_t ridx, int maxretry) +{ +#ifndef RTWN_WITHOUT_UCODE + struct r92c_softc *rs = sc->sc_priv; +#endif + struct ieee80211com *ic = &sc->sc_ic; + struct ieee80211vap *vap = ni->ni_vap; + struct rtwn_vap *uvp = RTWN_VAP(vap); + struct ieee80211_frame *wh; + struct r92c_tx_desc *txd; + enum ieee80211_protmode prot; + uint8_t type, tid, qos, qsel; + int hasqos, ismcast, macid; + + wh = mtod(m, struct ieee80211_frame *); + type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK; + hasqos = IEEE80211_QOS_HAS_SEQ(wh); + ismcast = IEEE80211_IS_MULTICAST(wh->i_addr1); + + /* Select TX ring for this frame. */ + if (hasqos) { + qos = ((const struct ieee80211_qosframe *)wh)->i_qos[0]; + tid = qos & IEEE80211_QOS_TID; + } else { + qos = 0; + tid = 0; + } + + /* Fill Tx descriptor. */ + txd = (struct r92c_tx_desc *)buf; + txd->flags0 |= R92C_FLAGS0_LSG | R92C_FLAGS0_FSG; + if (ismcast) + txd->flags0 |= R92C_FLAGS0_BMCAST; + + if (!ismcast) { + /* Unicast frame, check if an ACK is expected. */ + if (!qos || (qos & IEEE80211_QOS_ACKPOLICY) != + IEEE80211_QOS_ACKPOLICY_NOACK) { + txd->txdw5 |= htole32(R92C_TXDW5_RTY_LMT_ENA); + txd->txdw5 |= htole32(SM(R92C_TXDW5_RTY_LMT, + maxretry)); + } + + struct rtwn_node *un = RTWN_NODE(ni); + macid = un->id; + + if (type == IEEE80211_FC0_TYPE_DATA) { + qsel = tid % RTWN_MAX_TID; + + rtwn_r92c_tx_enable_ampdu(sc, buf, + (m->m_flags & M_AMPDU_MPDU) != 0); + if (m->m_flags & M_AMPDU_MPDU) { + txd->txdw2 |= htole32(SM(R92C_TXDW2_AMPDU_DEN, + vap->iv_ampdu_density)); + txd->txdw6 |= htole32(SM(R92C_TXDW6_MAX_AGG, + 0x1f)); /* XXX */ + } + if (sc->sc_ratectl == RTWN_RATECTL_NET80211) { + txd->txdw2 |= htole32(R92C_TXDW2_CCX_RPT); + sc->sc_tx_n_active++; +#ifndef RTWN_WITHOUT_UCODE + rs->rs_c2h_pending++; +#endif + } + + if (RTWN_RATE_IS_CCK(ridx) && ridx != RTWN_RIDX_CCK1 && + (ic->ic_flags & IEEE80211_F_SHPREAMBLE)) + txd->txdw4 |= htole32(R92C_TXDW4_DATA_SHPRE); + + prot = IEEE80211_PROT_NONE; + if (ridx >= RTWN_RIDX_MCS(0)) { + r92c_tx_set_ht40(sc, txd, ni); + r92c_tx_set_sgi(sc, txd, ni); + prot = ic->ic_htprotmode; + } else if (ic->ic_flags & IEEE80211_F_USEPROT) + prot = ic->ic_protmode; + + /* XXX fix last comparison for A-MSDU (in net80211) */ + /* XXX A-MPDU? */ + if (m->m_pkthdr.len + IEEE80211_CRC_LEN > + vap->iv_rtsthreshold && + vap->iv_rtsthreshold != IEEE80211_RTS_MAX) + prot = IEEE80211_PROT_RTSCTS; + + /* NB: checks for ht40 / short bits (set above). */ + if (prot != IEEE80211_PROT_NONE) + r92c_tx_protection(sc, txd, prot, ridx); + } else /* IEEE80211_FC0_TYPE_MGT */ + qsel = R92C_TXDW1_QSEL_MGNT; + } else { + macid = RTWN_MACID_BC; + qsel = R92C_TXDW1_QSEL_MGNT; + } + + txd->txdw1 |= htole32(SM(R92C_TXDW1_QSEL, qsel)); + + rtwn_r92c_tx_setup_macid(sc, txd, macid); + txd->txdw5 |= htole32(SM(R92C_TXDW5_DATARATE, ridx)); + /* Data rate fallback limit (max). */ + txd->txdw5 |= htole32(SM(R92C_TXDW5_DATARATE_FB_LMT, 0x1f)); + txd->txdw4 |= htole32(SM(R92C_TXDW4_PORT_ID, uvp->id)); + r92c_tx_raid(sc, txd, ni, ismcast); + + /* Force this rate if needed. */ + if (sc->sc_ratectl != RTWN_RATECTL_FW) + txd->txdw4 |= htole32(R92C_TXDW4_DRVRATE); + + if (!hasqos) { + /* Use HW sequence numbering for non-QoS frames. */ + rtwn_r92c_tx_setup_hwseq(sc, txd); + txd->txdw4 |= htole32(SM(R92C_TXDW4_SEQ_SEL, uvp->id)); + } else { + uint16_t seqno; + + if (m->m_flags & M_AMPDU_MPDU) { + seqno = ni->ni_txseqs[tid]; + /* NB: clear Fragment Number field. */ + *(uint16_t *)wh->i_seq = 0; + ni->ni_txseqs[tid]++; + } else + seqno = M_SEQNO_GET(m) % IEEE80211_SEQ_RANGE; + + /* Set sequence number. */ + txd->txdseq = htole16(seqno); + } +} + +void +r92c_fill_tx_desc_raw(struct rtwn_softc *sc, struct ieee80211_node *ni, + struct mbuf *m, void *buf, const struct ieee80211_bpf_params *params) +{ + struct ieee80211vap *vap = ni->ni_vap; + struct rtwn_vap *uvp = RTWN_VAP(vap); + struct ieee80211_frame *wh; + struct r92c_tx_desc *txd; + uint8_t ridx; + int ismcast; + + /* XXX TODO: 11n checks, matching r92c_fill_tx_desc() */ + + wh = mtod(m, struct ieee80211_frame *); + ismcast = IEEE80211_IS_MULTICAST(wh->i_addr1); + ridx = rate2ridx(params->ibp_rate0); + + /* Fill Tx descriptor. */ + txd = (struct r92c_tx_desc *)buf; + txd->flags0 |= R92C_FLAGS0_LSG | R92C_FLAGS0_FSG; + if (ismcast) + txd->flags0 |= R92C_FLAGS0_BMCAST; + + if ((params->ibp_flags & IEEE80211_BPF_NOACK) == 0) { + txd->txdw5 |= htole32(R92C_TXDW5_RTY_LMT_ENA); + txd->txdw5 |= htole32(SM(R92C_TXDW5_RTY_LMT, + params->ibp_try0)); + } + if (params->ibp_flags & IEEE80211_BPF_RTS) + r92c_tx_protection(sc, txd, IEEE80211_PROT_RTSCTS, ridx); + if (params->ibp_flags & IEEE80211_BPF_CTS) + r92c_tx_protection(sc, txd, IEEE80211_PROT_CTSONLY, ridx); + + rtwn_r92c_tx_setup_macid(sc, txd, RTWN_MACID_BC); + txd->txdw1 |= htole32(SM(R92C_TXDW1_QSEL, R92C_TXDW1_QSEL_MGNT)); + + /* Set TX rate index. */ + txd->txdw5 |= htole32(SM(R92C_TXDW5_DATARATE, ridx)); + txd->txdw5 |= htole32(SM(R92C_TXDW5_DATARATE_FB_LMT, 0x1f)); + txd->txdw4 |= htole32(SM(R92C_TXDW4_PORT_ID, uvp->id)); + txd->txdw4 |= htole32(R92C_TXDW4_DRVRATE); + r92c_tx_raid(sc, txd, ni, ismcast); + + if (!IEEE80211_QOS_HAS_SEQ(wh)) { + /* Use HW sequence numbering for non-QoS frames. */ + rtwn_r92c_tx_setup_hwseq(sc, txd); + txd->txdw4 |= htole32(SM(R92C_TXDW4_SEQ_SEL, uvp->id)); + } else { + /* Set sequence number. */ + txd->txdseq |= htole16(M_SEQNO_GET(m) % IEEE80211_SEQ_RANGE); + } +} + +void +r92c_fill_tx_desc_null(struct rtwn_softc *sc, void *buf, int is11b, + int qos, int id) +{ + struct r92c_tx_desc *txd = (struct r92c_tx_desc *)buf; + + txd->flags0 = R92C_FLAGS0_FSG | R92C_FLAGS0_LSG | R92C_FLAGS0_OWN; + txd->txdw1 = htole32( + SM(R92C_TXDW1_QSEL, R92C_TXDW1_QSEL_MGNT)); + + txd->txdw4 = htole32(R92C_TXDW4_DRVRATE); + txd->txdw4 |= htole32(SM(R92C_TXDW4_PORT_ID, id)); + if (is11b) { + txd->txdw5 = htole32(SM(R92C_TXDW5_DATARATE, + RTWN_RIDX_CCK1)); + } else { + txd->txdw5 = htole32(SM(R92C_TXDW5_DATARATE, + RTWN_RIDX_OFDM6)); + } + + if (!qos) { + rtwn_r92c_tx_setup_hwseq(sc, txd); + txd->txdw4 |= htole32(SM(R92C_TXDW4_SEQ_SEL, id)); + } +} + +uint8_t +r92c_tx_radiotap_flags(const void *buf) +{ + const struct r92c_tx_desc *txd = buf; + uint8_t flags; + + flags = 0; + if (txd->txdw4 & htole32(R92C_TXDW4_DATA_SHPRE)) + flags |= IEEE80211_RADIOTAP_F_SHORTPRE; + if (txd->txdw5 & htole32(R92C_TXDW5_SGI)) + flags |= IEEE80211_RADIOTAP_F_SHORTGI; + return (flags); +} diff --git a/sys/dev/rtwn/rtl8192c/r92c_tx_desc.h b/sys/dev/rtwn/rtl8192c/r92c_tx_desc.h new file mode 100644 index 000000000000..037ac0e2066f --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/r92c_tx_desc.h @@ -0,0 +1,122 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef R92C_TX_DESC_H +#define R92C_TX_DESC_H + +/* Tx MAC descriptor (common part). */ +struct r92c_tx_desc { + uint16_t pktlen; + uint8_t offset; + uint8_t flags0; +#define R92C_FLAGS0_BMCAST 0x01 +#define R92C_FLAGS0_LSG 0x04 +#define R92C_FLAGS0_FSG 0x08 +#define R92C_FLAGS0_OWN 0x80 + + uint32_t txdw1; +#define R92C_TXDW1_MACID_M 0x0000001f +#define R92C_TXDW1_MACID_S 0 +#define R92C_TXDW1_AGGEN 0x00000020 +#define R92C_TXDW1_AGGBK 0x00000040 + +#define R92C_TXDW1_QSEL_M 0x00001f00 +#define R92C_TXDW1_QSEL_S 8 + +#define R92C_TXDW1_QSEL_BE 0x00 /* or 0x03 */ +#define R92C_TXDW1_QSEL_BK 0x01 /* or 0x02 */ +#define R92C_TXDW1_QSEL_VI 0x04 /* or 0x05 */ +#define R92C_TXDW1_QSEL_VO 0x06 /* or 0x07 */ +#define RTWN_MAX_TID 8 + +#define R92C_TXDW1_QSEL_BEACON 0x10 +#define R92C_TXDW1_QSEL_MGNT 0x12 + +#define R92C_TXDW1_RAID_M 0x000f0000 +#define R92C_TXDW1_RAID_S 16 +#define R92C_TXDW1_CIPHER_M 0x00c00000 +#define R92C_TXDW1_CIPHER_S 22 +#define R92C_TXDW1_CIPHER_NONE 0 +#define R92C_TXDW1_CIPHER_RC4 1 +#define R92C_TXDW1_CIPHER_AES 3 +#define R92C_TXDW1_PKTOFF_M 0x7c000000 +#define R92C_TXDW1_PKTOFF_S 26 + + uint32_t txdw2; +#define R92C_TXDW2_CCX_RPT 0x00080000 +#define R92C_TXDW2_AMPDU_DEN_M 0x00700000 +#define R92C_TXDW2_AMPDU_DEN_S 20 + + uint16_t txdw3; + uint16_t txdseq; + + uint32_t txdw4; +#define R92C_TXDW4_RTSRATE_M 0x0000003f +#define R92C_TXDW4_RTSRATE_S 0 +#define R92C_TXDW4_SEQ_SEL_M 0x00000040 +#define R92C_TXDW4_SEQ_SEL_S 6 +#define R92C_TXDW4_HWSEQ_EN 0x00000080 +#define R92C_TXDW4_DRVRATE 0x00000100 +#define R92C_TXDW4_CTS2SELF 0x00000800 +#define R92C_TXDW4_RTSEN 0x00001000 +#define R92C_TXDW4_HWRTSEN 0x00002000 +#define R92C_TXDW4_PORT_ID_M 0x00004000 +#define R92C_TXDW4_PORT_ID_S 14 +#define R92C_TXDW4_DATA_SCO_M 0x00300000 +#define R92C_TXDW4_DATA_SCO_S 20 +#define R92C_TXDW4_SCO_SCA 1 +#define R92C_TXDW4_SCO_SCB 2 +#define R92C_TXDW4_DATA_SHPRE 0x01000000 +#define R92C_TXDW4_DATA_BW40 0x02000000 +#define R92C_TXDW4_RTS_SHORT 0x04000000 +#define R92C_TXDW4_RTS_BW40 0x08000000 +#define R92C_TXDW4_RTS_SCO_M 0x30000000 +#define R92C_TXDW4_RTS_SCO_S 28 + + uint32_t txdw5; +#define R92C_TXDW5_DATARATE_M 0x0000003f +#define R92C_TXDW5_DATARATE_S 0 +#define R92C_TXDW5_SGI 0x00000040 +#define R92C_TXDW5_DATARATE_FB_LMT_M 0x00001f00 +#define R92C_TXDW5_DATARATE_FB_LMT_S 8 +#define R92C_TXDW5_RTSRATE_FB_LMT_M 0x0001e000 +#define R92C_TXDW5_RTSRATE_FB_LMT_S 13 +#define R92C_TXDW5_RTY_LMT_ENA 0x00020000 +#define R92C_TXDW5_RTY_LMT_M 0x00fc0000 +#define R92C_TXDW5_RTY_LMT_S 18 +#define R92C_TXDW5_AGGNUM_M 0xff000000 +#define R92C_TXDW5_AGGNUM_S 24 + + uint32_t txdw6; +#define R92C_TXDW6_MAX_AGG_M 0x0000f800 +#define R92C_TXDW6_MAX_AGG_S 11 +} __packed __attribute__((aligned(4))); + + +/* Rate adaptation modes. */ +#define R92C_RAID_11BGN 0 +#define R92C_RAID_11GN 1 +#define R92C_RAID_11BN 2 +#define R92C_RAID_11N 3 +#define R92C_RAID_11BG 4 +#define R92C_RAID_11G 5 /* "pure" 11g */ +#define R92C_RAID_11B 6 + +#endif /* R92C_TX_DESC_H */ diff --git a/sys/dev/rtwn/rtl8192c/r92c_var.h b/sys/dev/rtwn/rtl8192c/r92c_var.h new file mode 100644 index 000000000000..c48318d9feb3 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/r92c_var.h @@ -0,0 +1,83 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef R92C_VAR_H +#define R92C_VAR_H + +#include + +struct r92c_softc { + uint8_t rs_flags; +#define R92C_FLAG_ASSOCIATED 0x01 + + uint8_t chip; +#define R92C_CHIP_92C 0x01 +#define R92C_CHIP_92C_1T2R 0x02 +#define R92C_CHIP_UMC_A_CUT 0x04 + +#ifndef RTWN_WITHOUT_UCODE + struct callout rs_c2h_report; + int rs_c2h_timeout; + int rs_c2h_pending; + int rs_c2h_paused; +#endif +#define R92C_TX_PAUSED_THRESHOLD 20 + + void *rs_txpwr; + const void *rs_txagc; + + uint8_t board_type; + uint8_t regulatory; + uint8_t crystalcap; + uint8_t pa_setting; + + void (*rs_scan_start)(struct ieee80211com *); + void (*rs_scan_end)(struct ieee80211com *); + + void (*rs_set_bw20)(struct rtwn_softc *, uint8_t); + void (*rs_get_txpower)(struct rtwn_softc *, int, + struct ieee80211_channel *, uint16_t[]); + void (*rs_set_gain)(struct rtwn_softc *, uint8_t); + void (*rs_tx_enable_ampdu)(void *, int); + void (*rs_tx_setup_hwseq)(void *); + void (*rs_tx_setup_macid)(void *, int); + void (*rs_set_name)(struct rtwn_softc *); + + int rf_read_delay[3]; + uint32_t rf_chnlbw[R92C_MAX_CHAINS]; +}; +#define R92C_SOFTC(_sc) ((struct r92c_softc *)((_sc)->sc_priv)) + +#define rtwn_r92c_set_bw20(_sc, _chan) \ + ((R92C_SOFTC(_sc)->rs_set_bw20)((_sc), (_chan))) +#define rtwn_r92c_get_txpower(_sc, _chain, _c, _power) \ + ((R92C_SOFTC(_sc)->rs_get_txpower)((_sc), (_chain), (_c), (_power))) +#define rtwn_r92c_set_gain(_sc, _gain) \ + ((R92C_SOFTC(_sc)->rs_set_gain)((_sc), (_gain))) +#define rtwn_r92c_tx_enable_ampdu(_sc, _buf, _enable) \ + ((R92C_SOFTC(_sc)->rs_tx_enable_ampdu)((_buf), (_enable))) +#define rtwn_r92c_tx_setup_hwseq(_sc, _buf) \ + ((R92C_SOFTC(_sc)->rs_tx_setup_hwseq)((_buf))) +#define rtwn_r92c_tx_setup_macid(_sc, _buf, _id) \ + ((R92C_SOFTC(_sc)->rs_tx_setup_macid)((_buf), (_id))) +#define rtwn_r92c_set_name(_sc) \ + ((R92C_SOFTC(_sc)->rs_set_name)((_sc))) + +#endif /* R92C_VAR_H */ diff --git a/sys/dev/rtwn/rtl8192c/usb/r92cu.h b/sys/dev/rtwn/rtl8192c/usb/r92cu.h new file mode 100644 index 000000000000..2486d7fa5933 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/usb/r92cu.h @@ -0,0 +1,56 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef RTL8192CU_H +#define RTL8192CU_H + +#include + + +/* + * Global definitions. + */ +#define R92CU_PUBQ_NPAGES 231 +#define R92CU_TX_PAGE_COUNT 248 + + +/* + * Function declarations. + */ +/* r92cu_init.c */ +void r92cu_init_bb(struct rtwn_softc *); +int r92cu_power_on(struct rtwn_softc *); +void r92cu_power_off(struct rtwn_softc *); +void r92cu_init_intr(struct rtwn_softc *); +void r92cu_init_tx_agg(struct rtwn_softc *); +void r92cu_init_rx_agg(struct rtwn_softc *); +void r92cu_post_init(struct rtwn_softc *); + +/* r92cu_led.c */ +void r92cu_set_led(struct rtwn_softc *, int, int); + +/* r92cu_rx.c */ +int r92cu_classify_intr(struct rtwn_softc *, void *, int); +int r92cu_align_rx(int, int); + +/* r92cu_tx.c */ +void r92cu_dump_tx_desc(struct rtwn_softc *, const void *); + +#endif /* RTL8192CU_H */ diff --git a/sys/dev/rtwn/rtl8192c/usb/r92cu_attach.c b/sys/dev/rtwn/rtl8192c/usb/r92cu_attach.c new file mode 100644 index 000000000000..e6edea7af49d --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/usb/r92cu_attach.c @@ -0,0 +1,246 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include + + +static struct rtwn_r92c_txpwr r92c_txpwr; + +void r92cu_attach(struct rtwn_usb_softc *); + +static void +r92cu_postattach(struct rtwn_softc *sc) +{ + struct r92c_softc *rs = sc->sc_priv; + struct ieee80211com *ic = &sc->sc_ic; + + if (!(rs->chip & R92C_CHIP_92C) && + rs->board_type == R92C_BOARD_TYPE_HIGHPA) { + sc->agc_prog = &rtl8188ru_agc[0]; + sc->agc_size = nitems(rtl8188ru_agc); + rs->rs_txagc = &rtl8188ru_txagc[0]; + } else { + sc->agc_prog = &rtl8192ce_agc[0]; + sc->agc_size = nitems(rtl8192ce_agc); + rs->rs_txagc = &rtl8192cu_txagc[0]; + } + + if ((rs->chip & (R92C_CHIP_UMC_A_CUT | R92C_CHIP_92C)) == + R92C_CHIP_UMC_A_CUT) { + sc->fwname = "rtwn-rtl8192cfwU"; + } else { + sc->fwname = "rtwn-rtl8192cfwT"; + } + sc->fwsig = 0x88c; + + rs->rs_scan_start = ic->ic_scan_start; + ic->ic_scan_start = r92c_scan_start; + rs->rs_scan_end = ic->ic_scan_end; + ic->ic_scan_end = r92c_scan_end; +} + +static void +r92cu_set_name(struct rtwn_softc *sc) +{ + struct r92c_softc *rs = sc->sc_priv; + + if (!(rs->chip & R92C_CHIP_92C)) { + if (rs->board_type == R92C_BOARD_TYPE_HIGHPA) + sc->name = "RTL8188RU"; + else if (rs->board_type == R92C_BOARD_TYPE_MINICARD) + sc->name = "RTL8188CU-VAU"; + else + sc->name = "RTL8188CUS"; + } else + sc->name = "RTL8192CU"; +} + +static void +r92cu_attach_private(struct rtwn_softc *sc) +{ + struct r92c_softc *rs; + + rs = malloc(sizeof(struct r92c_softc), M_RTWN_PRIV, M_WAITOK | M_ZERO); + + rs->rs_txpwr = &r92c_txpwr; + + rs->rs_set_bw20 = r92c_set_bw20; + rs->rs_get_txpower = r92c_get_txpower; + rs->rs_set_gain = r92c_set_gain; + rs->rs_tx_enable_ampdu = r92c_tx_enable_ampdu; + rs->rs_tx_setup_hwseq = r92c_tx_setup_hwseq; + rs->rs_tx_setup_macid = r92c_tx_setup_macid; + rs->rs_set_name = r92cu_set_name; + +#ifndef RTWN_WITHOUT_UCODE + rs->rs_c2h_timeout = hz; + + callout_init_mtx(&rs->rs_c2h_report, &sc->sc_mtx, 0); +#endif + + rs->rf_read_delay[0] = 10; + rs->rf_read_delay[1] = 100; + rs->rf_read_delay[2] = 10; + + sc->sc_priv = rs; +} + +static void +r92cu_adj_devcaps(struct rtwn_softc *sc) +{ + /* XXX Currently broken / incomplete. */ + sc->sc_ic.ic_caps &= ~IEEE80211_C_PMGT; +} + +void +r92cu_attach(struct rtwn_usb_softc *uc) +{ + struct rtwn_softc *sc = &uc->uc_sc; + + /* USB part. */ + uc->uc_align_rx = r92cu_align_rx; + uc->tx_agg_desc_num = 6; + + /* Common part. */ + sc->sc_flags = RTWN_FLAG_CAM_FIXED; + + sc->sc_set_chan = r92c_set_chan; + sc->sc_fill_tx_desc = r92c_fill_tx_desc; + sc->sc_fill_tx_desc_raw = r92c_fill_tx_desc_raw; + sc->sc_fill_tx_desc_null = r92c_fill_tx_desc_null; + sc->sc_dump_tx_desc = r92cu_dump_tx_desc; + sc->sc_tx_radiotap_flags = r92c_tx_radiotap_flags; + sc->sc_rx_radiotap_flags = r92c_rx_radiotap_flags; + sc->sc_get_rssi_cck = r92c_get_rssi_cck; + sc->sc_get_rssi_ofdm = r92c_get_rssi_ofdm; + sc->sc_classify_intr = r92cu_classify_intr; + sc->sc_handle_tx_report = rtwn_nop_softc_uint8_int; + sc->sc_handle_c2h_report = rtwn_nop_softc_uint8_int; + sc->sc_check_frame = rtwn_nop_int_softc_mbuf; + sc->sc_rf_read = r92c_rf_read; + sc->sc_rf_write = r92c_rf_write; + sc->sc_check_condition = r92c_check_condition; + sc->sc_efuse_postread = r92c_efuse_postread; + sc->sc_parse_rom = r92c_parse_rom; + sc->sc_set_led = r92cu_set_led; + sc->sc_power_on = r92cu_power_on; + sc->sc_power_off = r92cu_power_off; +#ifndef RTWN_WITHOUT_UCODE + sc->sc_fw_reset = r92c_fw_reset; + sc->sc_fw_download_enable = r92c_fw_download_enable; +#endif + sc->sc_set_page_size = r92c_set_page_size; + sc->sc_lc_calib = r92c_lc_calib; + sc->sc_iq_calib = r92c_iq_calib; /* XXX TODO */ + sc->sc_read_chipid_vendor = r92c_read_chipid_vendor; + sc->sc_adj_devcaps = r92cu_adj_devcaps; + sc->sc_vap_preattach = rtwn_nop_softc_vap; + sc->sc_postattach = r92cu_postattach; + sc->sc_detach_private = r92c_detach_private; + sc->sc_set_media_status = r92c_joinbss_rpt; +#ifndef RTWN_WITHOUT_UCODE + sc->sc_set_rsvd_page = r92c_set_rsvd_page; + sc->sc_set_pwrmode = r92c_set_pwrmode; + sc->sc_set_rssi = r92c_set_rssi; +#endif + sc->sc_beacon_init = r92c_beacon_init; + sc->sc_beacon_enable = r92c_beacon_enable; + sc->sc_beacon_set_rate = rtwn_nop_void_int; + sc->sc_beacon_select = rtwn_nop_softc_int; + sc->sc_temp_measure = r92c_temp_measure; + sc->sc_temp_read = r92c_temp_read; + sc->sc_init_tx_agg = r92cu_init_tx_agg; + sc->sc_init_rx_agg = r92cu_init_rx_agg; + sc->sc_init_ampdu = r92c_init_ampdu; + sc->sc_init_intr = r92cu_init_intr; + sc->sc_init_edca = r92c_init_edca; + sc->sc_init_bb = r92cu_init_bb; + sc->sc_init_rf = r92c_init_rf; + sc->sc_init_antsel = r92c_init_antsel; + sc->sc_post_init = r92cu_post_init; + sc->sc_init_bcnq1_boundary = rtwn_nop_int_softc; + + sc->mac_prog = &rtl8192cu_mac[0]; + sc->mac_size = nitems(rtl8192cu_mac); + sc->bb_prog = &rtl8192cu_bb[0]; + sc->bb_size = nitems(rtl8192cu_bb); + sc->rf_prog = &rtl8192c_rf[0]; + + sc->page_count = R92CU_TX_PAGE_COUNT; + sc->pktbuf_count = R92C_TXPKTBUF_COUNT; + + sc->ackto = 0x40; + sc->npubqpages = R92CU_PUBQ_NPAGES; + sc->page_size = R92C_TX_PAGE_SIZE; + + sc->txdesc_len = sizeof(struct r92cu_tx_desc); + sc->efuse_maxlen = R92C_EFUSE_MAX_LEN; + sc->efuse_maplen = R92C_EFUSE_MAP_LEN; + sc->rx_dma_size = R92C_RX_DMA_BUFFER_SIZE; + + sc->macid_limit = R92C_MACID_MAX + 1; + sc->cam_entry_limit = R92C_CAM_ENTRY_COUNT; + sc->fwsize_limit = R92C_MAX_FW_SIZE; + sc->temp_delta = R92C_CALIB_THRESHOLD; + + sc->bcn_status_reg[0] = R92C_TDECTRL; + sc->bcn_status_reg[1] = R92C_TDECTRL; + sc->rcr = 0; + + r92cu_attach_private(sc); +} diff --git a/sys/dev/rtwn/rtl8192c/usb/r92cu_init.c b/sys/dev/rtwn/rtl8192c/usb/r92cu_init.c new file mode 100644 index 000000000000..faf179e3e483 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/usb/r92cu_init.c @@ -0,0 +1,393 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include + +#include + +#include +#include + + +void +r92cu_init_bb(struct rtwn_softc *sc) +{ + + /* Enable BB and RF. */ + rtwn_setbits_2(sc, R92C_SYS_FUNC_EN, 0, + R92C_SYS_FUNC_EN_BBRSTB | R92C_SYS_FUNC_EN_BB_GLB_RST | + R92C_SYS_FUNC_EN_DIO_RF); + + rtwn_write_2(sc, R92C_AFE_PLL_CTRL, 0xdb83); + + rtwn_write_1(sc, R92C_RF_CTRL, + R92C_RF_CTRL_EN | R92C_RF_CTRL_RSTB | R92C_RF_CTRL_SDMRSTB); + rtwn_write_1(sc, R92C_SYS_FUNC_EN, + R92C_SYS_FUNC_EN_USBA | R92C_SYS_FUNC_EN_USBD | + R92C_SYS_FUNC_EN_BB_GLB_RST | R92C_SYS_FUNC_EN_BBRSTB); + + rtwn_write_1(sc, R92C_LDOHCI12_CTRL, 0x0f); + rtwn_write_1(sc, 0x15, 0xe9); + rtwn_write_1(sc, R92C_AFE_XTAL_CTRL + 1, 0x80); + + r92c_init_bb_common(sc); + + if (rtwn_bb_read(sc, R92C_HSSI_PARAM2(0)) & + R92C_HSSI_PARAM2_CCK_HIPWR) + sc->sc_flags |= RTWN_FLAG_CCK_HIPWR; +} + +int +r92cu_power_on(struct rtwn_softc *sc) +{ +#define RTWN_CHK(res) do { \ + if (res != 0) \ + return (EIO); \ +} while(0) + uint32_t reg; + int ntries; + + /* Wait for autoload done bit. */ + for (ntries = 0; ntries < 5000; ntries++) { + if (rtwn_read_1(sc, R92C_APS_FSMCO) & R92C_APS_FSMCO_PFM_ALDN) + break; + rtwn_delay(sc, 10); + } + if (ntries == 5000) { + device_printf(sc->sc_dev, + "timeout waiting for chip autoload\n"); + return (ETIMEDOUT); + } + + /* Unlock ISO/CLK/Power control register. */ + RTWN_CHK(rtwn_write_1(sc, R92C_RSV_CTRL, 0)); + + /* Move SPS into PWM mode. */ + RTWN_CHK(rtwn_write_1(sc, R92C_SPS0_CTRL, 0x2b)); + + /* just in case if power_off() was not properly executed. */ + rtwn_delay(sc, 100); + + reg = rtwn_read_1(sc, R92C_LDOV12D_CTRL); + if (!(reg & R92C_LDOV12D_CTRL_LDV12_EN)) { + RTWN_CHK(rtwn_write_1(sc, R92C_LDOV12D_CTRL, + reg | R92C_LDOV12D_CTRL_LDV12_EN)); + + rtwn_delay(sc, 100); + + RTWN_CHK(rtwn_setbits_1(sc, R92C_SYS_ISO_CTRL, + R92C_SYS_ISO_CTRL_MD2PP, 0)); + } + + /* Auto enable WLAN. */ + RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, 0, + R92C_APS_FSMCO_APFM_ONMAC, 1)); + + for (ntries = 0; ntries < 5000; ntries++) { + if (!(rtwn_read_2(sc, R92C_APS_FSMCO) & + R92C_APS_FSMCO_APFM_ONMAC)) + break; + rtwn_delay(sc, 10); + } + if (ntries == 5000) { + device_printf(sc->sc_dev, + "timeout waiting for MAC auto ON\n"); + return (ETIMEDOUT); + } + + /* Enable radio, GPIO and LED functions. */ + RTWN_CHK(rtwn_write_2(sc, R92C_APS_FSMCO, + R92C_APS_FSMCO_AFSM_HSUS | + R92C_APS_FSMCO_PDN_EN | + R92C_APS_FSMCO_PFM_ALDN)); + + /* Release RF digital isolation. */ + RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_SYS_ISO_CTRL, + R92C_SYS_ISO_CTRL_DIOR, 0, 1)); + + /* Initialize MAC. */ + RTWN_CHK(rtwn_setbits_1(sc, R92C_APSD_CTRL, + R92C_APSD_CTRL_OFF, 0)); + for (ntries = 0; ntries < 1000; ntries++) { + if (!(rtwn_read_1(sc, R92C_APSD_CTRL) & + R92C_APSD_CTRL_OFF_STATUS)) + break; + rtwn_delay(sc, 50); + } + if (ntries == 1000) { + device_printf(sc->sc_dev, + "timeout waiting for MAC initialization\n"); + return (ETIMEDOUT); + } + + /* Enable MAC DMA/WMAC/SCHEDULE/SEC blocks. */ + RTWN_CHK(rtwn_setbits_2(sc, R92C_CR, 0, + R92C_CR_HCI_TXDMA_EN | R92C_CR_TXDMA_EN | + R92C_CR_HCI_RXDMA_EN | R92C_CR_RXDMA_EN | + R92C_CR_PROTOCOL_EN | R92C_CR_SCHEDULE_EN | + ((sc->sc_hwcrypto != RTWN_CRYPTO_SW) ? R92C_CR_ENSEC : 0) | + R92C_CR_CALTMR_EN)); + + RTWN_CHK(rtwn_write_1(sc, 0xfe10, 0x19)); + + return (0); +#undef RTWN_CHK +} + +void +r92cu_power_off(struct rtwn_softc *sc) +{ +#ifndef RTWN_WITHOUT_UCODE + struct r92c_softc *rs = sc->sc_priv; +#endif + uint32_t reg; + int error; + + /* Deinit C2H event handler. */ +#ifndef RTWN_WITHOUT_UCODE + callout_stop(&rs->rs_c2h_report); + rs->rs_c2h_paused = 0; + rs->rs_c2h_pending = 0; + rs->rs_c2h_timeout = hz; +#endif + + /* Block all Tx queues. */ + error = rtwn_write_1(sc, R92C_TXPAUSE, R92C_TX_QUEUE_ALL); + if (error == ENXIO) /* hardware gone */ + return; + + /* Disable RF */ + rtwn_rf_write(sc, 0, 0, 0); + + rtwn_write_1(sc, R92C_APSD_CTRL, R92C_APSD_CTRL_OFF); + + /* Reset BB state machine */ + rtwn_write_1(sc, R92C_SYS_FUNC_EN, + R92C_SYS_FUNC_EN_USBD | R92C_SYS_FUNC_EN_USBA | + R92C_SYS_FUNC_EN_BB_GLB_RST); + rtwn_write_1(sc, R92C_SYS_FUNC_EN, + R92C_SYS_FUNC_EN_USBD | R92C_SYS_FUNC_EN_USBA); + + /* + * Reset digital sequence + */ +#ifndef RTWN_WITHOUT_UCODE + if (rtwn_read_1(sc, R92C_MCUFWDL) & R92C_MCUFWDL_RDY) { + /* Reset MCU ready status */ + rtwn_write_1(sc, R92C_MCUFWDL, 0); + + /* If firmware in ram code, do reset */ + r92c_fw_reset(sc, RTWN_FW_RESET_SHUTDOWN); + } +#endif + + /* Reset MAC and Enable 8051 */ + rtwn_write_1(sc, R92C_SYS_FUNC_EN + 1, + (R92C_SYS_FUNC_EN_CPUEN | + R92C_SYS_FUNC_EN_ELDR | + R92C_SYS_FUNC_EN_HWPDN) >> 8); + + /* Reset MCU ready status */ + rtwn_write_1(sc, R92C_MCUFWDL, 0); + + /* Disable MAC clock */ + rtwn_write_2(sc, R92C_SYS_CLKR, + R92C_SYS_CLKR_ANAD16V_EN | + R92C_SYS_CLKR_ANA8M | + R92C_SYS_CLKR_LOADER_EN | + R92C_SYS_CLKR_80M_SSC_DIS | + R92C_SYS_CLKR_SYS_EN | + R92C_SYS_CLKR_RING_EN | + 0x4000); + + /* Disable AFE PLL */ + rtwn_write_1(sc, R92C_AFE_PLL_CTRL, 0x80); + + /* Gated AFE DIG_CLOCK */ + rtwn_write_2(sc, R92C_AFE_XTAL_CTRL, 0x880F); + + /* Isolated digital to PON */ + rtwn_write_1(sc, R92C_SYS_ISO_CTRL, + R92C_SYS_ISO_CTRL_MD2PP | + R92C_SYS_ISO_CTRL_PA2PCIE | + R92C_SYS_ISO_CTRL_PD2CORE | + R92C_SYS_ISO_CTRL_IP2MAC | + R92C_SYS_ISO_CTRL_DIOP | + R92C_SYS_ISO_CTRL_DIOE); + + /* + * Pull GPIO PIN to balance level and LED control + */ + /* 1. Disable GPIO[7:0] */ + rtwn_write_2(sc, R92C_GPIO_IOSEL, 0x0000); + + reg = rtwn_read_4(sc, R92C_GPIO_PIN_CTRL) & ~0x0000ff00; + reg |= ((reg << 8) & 0x0000ff00) | 0x00ff0000; + rtwn_write_4(sc, R92C_GPIO_PIN_CTRL, reg); + + /* Disable GPIO[10:8] */ + rtwn_write_1(sc, R92C_MAC_PINMUX_CFG, 0x00); + + reg = rtwn_read_2(sc, R92C_GPIO_IO_SEL) & ~0x00f0; + reg |= (((reg & 0x000f) << 4) | 0x0780); + rtwn_write_2(sc, R92C_GPIO_IO_SEL, reg); + + /* Disable LED0 & 1 */ + rtwn_write_2(sc, R92C_LEDCFG0, 0x8080); + + /* + * Reset digital sequence + */ + /* Disable ELDR clock */ + rtwn_write_2(sc, R92C_SYS_CLKR, + R92C_SYS_CLKR_ANAD16V_EN | + R92C_SYS_CLKR_ANA8M | + R92C_SYS_CLKR_LOADER_EN | + R92C_SYS_CLKR_80M_SSC_DIS | + R92C_SYS_CLKR_SYS_EN | + R92C_SYS_CLKR_RING_EN | + 0x4000); + + /* Isolated ELDR to PON */ + rtwn_write_1(sc, R92C_SYS_ISO_CTRL + 1, + (R92C_SYS_ISO_CTRL_DIOR | + R92C_SYS_ISO_CTRL_PWC_EV12V) >> 8); + + /* + * Disable analog sequence + */ + /* Disable A15 power */ + rtwn_write_1(sc, R92C_LDOA15_CTRL, R92C_LDOA15_CTRL_OBUF); + /* Disable digital core power */ + rtwn_setbits_1(sc, R92C_LDOV12D_CTRL, + R92C_LDOV12D_CTRL_LDV12_EN, 0); + + /* Enter PFM mode */ + rtwn_write_1(sc, R92C_SPS0_CTRL, 0x23); + + /* Set USB suspend */ + rtwn_write_2(sc, R92C_APS_FSMCO, + R92C_APS_FSMCO_APDM_HOST | + R92C_APS_FSMCO_AFSM_HSUS | + R92C_APS_FSMCO_PFM_ALDN); + + /* Lock ISO/CLK/Power control register. */ + rtwn_write_1(sc, R92C_RSV_CTRL, 0x0E); +} + +void +r92cu_init_intr(struct rtwn_softc *sc) +{ + rtwn_write_4(sc, R92C_HISR, 0xffffffff); + rtwn_write_4(sc, R92C_HIMR, 0xffffffff); +} + +void +r92cu_init_tx_agg(struct rtwn_softc *sc) +{ + struct rtwn_usb_softc *uc = RTWN_USB_SOFTC(sc); + + rtwn_setbits_4(sc, R92C_TDECTRL, + R92C_TDECTRL_BLK_DESC_NUM_M, uc->tx_agg_desc_num); +} + +void +r92cu_init_rx_agg(struct rtwn_softc *sc) +{ + + /* Rx aggregation (DMA & USB). */ + rtwn_setbits_1(sc, R92C_TRXDMA_CTRL, 0, + R92C_TRXDMA_CTRL_RXDMA_AGG_EN); + rtwn_setbits_1(sc, R92C_USB_SPECIAL_OPTION, 0, + R92C_USB_SPECIAL_OPTION_AGG_EN); + + /* XXX dehardcode */ + rtwn_write_1(sc, R92C_RXDMA_AGG_PG_TH, 48); + rtwn_write_1(sc, R92C_USB_DMA_AGG_TO, 4); + rtwn_write_1(sc, R92C_USB_AGG_TH, 8); + rtwn_write_1(sc, R92C_USB_AGG_TO, 6); +} + +void +r92cu_post_init(struct rtwn_softc *sc) +{ + + /* Perform LO and IQ calibrations. */ + r92c_iq_calib(sc); + /* Perform LC calibration. */ + r92c_lc_calib(sc); + + /* Fix USB interference issue. */ + rtwn_write_1(sc, 0xfe40, 0xe0); + rtwn_write_1(sc, 0xfe41, 0x8d); + rtwn_write_1(sc, 0xfe42, 0x80); + + r92c_pa_bias_init(sc); + + /* Fix for lower temperature. */ + rtwn_write_1(sc, 0x15, 0xe9); + +#ifndef RTWN_WITHOUT_UCODE + if (sc->sc_flags & RTWN_FW_LOADED) { + struct r92c_softc *rs = sc->sc_priv; + + if (sc->sc_ratectl_sysctl == RTWN_RATECTL_FW) { + /* XXX firmware RA does not work yet */ + sc->sc_ratectl = RTWN_RATECTL_NET80211; + } else + sc->sc_ratectl = sc->sc_ratectl_sysctl; + + /* Start C2H event handling. */ + callout_reset(&rs->rs_c2h_report, rs->rs_c2h_timeout, + r92c_handle_c2h_report, sc); + } else +#endif + sc->sc_ratectl = RTWN_RATECTL_NONE; +} diff --git a/sys/dev/rtwn/rtl8192c/usb/r92cu_led.c b/sys/dev/rtwn/rtl8192c/usb/r92cu_led.c new file mode 100644 index 000000000000..724320946639 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/usb/r92cu_led.c @@ -0,0 +1,66 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include + +#include + + +void +r92cu_set_led(struct rtwn_softc *sc, int led, int on) +{ + uint8_t reg; + + if (led == RTWN_LED_LINK) { + reg = rtwn_read_1(sc, R92C_LEDCFG0) & 0x70; + if (!on) + reg |= R92C_LEDCFG0_DIS; + rtwn_write_1(sc, R92C_LEDCFG0, reg); + sc->ledlink = on; /* Save LED state. */ + } +} diff --git a/sys/dev/rtwn/rtl8192c/usb/r92cu_priv.h b/sys/dev/rtwn/rtl8192c/usb/r92cu_priv.h new file mode 100644 index 000000000000..8e3203f082f3 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/usb/r92cu_priv.h @@ -0,0 +1,322 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef R92CU_PRIV_H +#define R92CU_PRIV_H + +#include + + +/* + * MAC initialization values. + */ +static const struct rtwn_mac_prog rtl8192cu_mac[] = { + { 0x420, 0x80 }, { 0x423, 0x00 }, { 0x430, 0x00 }, { 0x431, 0x00 }, + { 0x432, 0x00 }, { 0x433, 0x01 }, { 0x434, 0x04 }, { 0x435, 0x05 }, + { 0x436, 0x06 }, { 0x437, 0x07 }, { 0x438, 0x00 }, { 0x439, 0x00 }, + { 0x43a, 0x00 }, { 0x43b, 0x01 }, { 0x43c, 0x04 }, { 0x43d, 0x05 }, + { 0x43e, 0x06 }, { 0x43f, 0x07 }, { 0x440, 0x5d }, { 0x441, 0x01 }, + { 0x442, 0x00 }, { 0x444, 0x15 }, { 0x445, 0xf0 }, { 0x446, 0x0f }, + { 0x447, 0x00 }, { 0x458, 0x41 }, { 0x459, 0xa8 }, { 0x45a, 0x72 }, + { 0x45b, 0xb9 }, { 0x460, 0x66 }, { 0x461, 0x66 }, { 0x462, 0x08 }, + { 0x463, 0x03 }, { 0x4c8, 0xff }, { 0x4c9, 0x08 }, { 0x4cc, 0xff }, + { 0x4cd, 0xff }, { 0x4ce, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 }, + { 0x502, 0x2f }, { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 }, + { 0x506, 0x5e }, { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 }, + { 0x50a, 0x5e }, { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 }, + { 0x50e, 0x00 }, { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a }, + { 0x515, 0x10 }, { 0x516, 0x0a }, { 0x517, 0x10 }, { 0x51a, 0x16 }, + { 0x524, 0x0f }, { 0x525, 0x4f }, { 0x546, 0x40 }, { 0x547, 0x00 }, + { 0x550, 0x10 }, { 0x551, 0x10 }, { 0x559, 0x02 }, { 0x55a, 0x02 }, + { 0x55d, 0xff }, { 0x605, 0x30 }, { 0x608, 0x0e }, { 0x609, 0x2a }, + { 0x652, 0x20 }, { 0x63c, 0x0a }, { 0x63d, 0x0e }, { 0x63e, 0x0a }, + { 0x63f, 0x0e }, { 0x66e, 0x05 }, { 0x700, 0x21 }, { 0x701, 0x43 }, + { 0x702, 0x65 }, { 0x703, 0x87 }, { 0x708, 0x21 }, { 0x709, 0x43 }, + { 0x70a, 0x65 }, { 0x70b, 0x87 } +}; + + +/* + * Baseband initialization values. + */ +static const uint16_t rtl8192cu_bb_regs0_88ru[] = { + 0x024, 0x028, 0x040, 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, + 0x818, 0x81c, 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, + 0x83c, 0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, + 0x860, 0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880, + 0x884, 0x888, 0x88c, 0x890, 0x894, 0x898, 0x89c, 0x900, 0x904, + 0x908, 0x90c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, + 0xa1c, 0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xc00, 0xc04, + 0xc08, 0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, 0xc20, 0xc24, 0xc28, + 0xc2c, 0xc30, 0xc34, 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, + 0xc50, 0xc54, 0xc58, 0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70 +}, rtl8192cu_bb_regs0[] = { + 0x024, 0x028, 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, + 0x81c, 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, + 0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, 0x860, + 0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880, 0x884, + 0x888, 0x88c, 0x890, 0x894, 0x898, 0x89c, 0x900, 0x904, 0x908, + 0x90c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c, + 0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xc00, 0xc04, 0xc08, + 0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, 0xc20, 0xc24, 0xc28, 0xc2c, + 0xc30, 0xc34, 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, + 0xc54, 0xc58, 0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70 +}, rtl8192cu_bb_regs1[] = { + 0xc74, 0xc78, 0xc7c, 0xc80, 0xc84, 0xc88 +}, rtl8192cu_bb_regs2[] = { + 0xc8c, 0xc90, 0xc94, 0xc98, 0xc9c, 0xca0, 0xca4, 0xca8, 0xcac, + 0xcb0, 0xcb4, 0xcb8, 0xcbc, 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0, + 0xcd4, 0xcd8, 0xcdc, 0xce0, 0xce4, 0xce8, 0xcec, 0xd00 +}, rtl8192cu_bb_regs5_88ru[] = { + 0xe60, 0xe68, 0xe6c, 0xe70, 0xe74, 0xe78, 0xe7c, 0xe80, 0xe84, + 0xe88, 0xe8c, 0xed0, 0xed4, 0xed8, 0xedc, 0xee0, 0xeec, 0xee8, + 0xf14, 0xf4c, 0xf00 +}; + +static const uint32_t rtl8192cu_bb_vals0_88cu[] = { + 0x0011800d, 0x00ffdb83, 0x80040000, 0x00000001, 0x0000fc00, + 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, + 0x01000100, 0x00390004, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x569a569a, + 0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, 0x32323200, + 0x07000700, 0x22004000, 0x00000808, 0x00000000, 0xc0083070, + 0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, 0xfffffffe, + 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, + 0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, + 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, + 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, + 0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000, + 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, + 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, + 0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000, + 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d +}, rtl8192cu_bb_vals0_88ru[] = { + 0x0011800d, 0x00ffdb83, 0x000c0004, 0x80040000, 0x00000001, + 0x0000fc00, 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, + 0x00000000, 0x01000100, 0x00390204, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x569a569a, 0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, + 0x32323200, 0x03000300, 0x22004000, 0x00000808, 0x00ffc3f1, + 0xc0083070, 0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, + 0xfffffffe, 0x40302010, 0x00706050, 0x00000000, 0x00000023, + 0x00000000, 0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, + 0x2e68120f, 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, + 0x15160000, 0x070b0f12, 0x00000104, 0x00d30000, 0x101fbf00, + 0x00000007, 0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, + 0x08800000, 0x40000100, 0x08800000, 0x40000100, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, + 0x49795994, 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, + 0x007f037f, 0x6954342e, 0x43bc0094, 0x6954342f, 0x433c0094, + 0x00000000, 0x5116848b, 0x47c00bff, 0x00000036, 0x2c56000d +}, rtl8192cu_bb_vals0_92ce_92cu[] = { + 0x0011800d, 0x00ffdb83, 0x80040002, 0x00000003, 0x0000fc00, + 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, + 0x01000100, 0x00390004, 0x01000100, 0x00390004, 0x27272727, + 0x27272727, 0x27272727, 0x27272727, 0x00010000, 0x00010000, + 0x27272727, 0x27272727, 0x00000000, 0x00000000, 0x569a569a, + 0x0c1b25a4, 0x66e60230, 0x061f0130, 0x27272727, 0x2b2b2b27, + 0x07000700, 0x22184000, 0x08080808, 0x00000000, 0xc0083070, + 0x000004d5, 0x00000000, 0xcc0000c0, 0x00000800, 0xfffffffe, + 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, + 0x81121313, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, + 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, + 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, + 0x48071d40, 0x03a05633, 0x000000e4, 0x6c6c6c6c, 0x08800000, + 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, + 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, + 0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000, + 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d +}, rtl8192cu_bb_vals1_88ru[] = { + 0x018610db, 0x0000001f, 0x00b91612, 0x24000090, 0x20f60000, + 0x24000090 +}, rtl8192cu_bb_vals1_92cu[] = { + 0x0186115b, 0x0000001f, 0x00b99612, 0x40000100, 0x20f60000, + 0x40000100 +}, rtl8192cu_bb_vals1_88cu_92ce[] = { + 0x018610db, 0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, + 0x40000100 +}, rtl8192cu_bb_vals2[] = { + 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, + 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, + 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, + 0x00080740 +}, rtl8192cu_bb_vals5_88cu[] = { + 0x00000008, 0x001b25a4, 0x631b25a0, 0x631b25a0, 0x081b25a0, + 0x081b25a0, 0x081b25a0, 0x081b25a0, 0x631b25a0, 0x081b25a0, + 0x631b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0, 0x001b25a0, + 0x001b25a0, 0x6b1b25a0, 0x00000003, 0x00000000, 0x00000300 +}, rtl8192cu_bb_vals5_88ru[] = { + 0x00000010, 0x001b25a4, 0x631b25a0, 0x631b25a0, 0x081b25a0, + 0x081b25a0, 0x081b25a0, 0x081b25a0, 0x631b25a0, 0x081b25a0, + 0x631b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0, 0x001b25a0, + 0x001b25a0, 0x6b1b25a0, 0x31555448, 0x00000003, 0x00000000, + 0x00000300 +}; + +static const struct rtwn_bb_prog rtl8192cu_bb[] = { + /* RTL8188CE / RTL8188CU. */ + { + nitems(rtl8192cu_bb_regs0), + rtl8192cu_bb_regs0, + rtl8192cu_bb_vals0_88cu, + { R92C_COND_RTL8188CU | R92C_COND_RTL8188CE }, + /* RTL8188RU. */ + &(const struct rtwn_bb_prog){ + nitems(rtl8192cu_bb_regs0_88ru), + rtl8192cu_bb_regs0_88ru, + rtl8192cu_bb_vals0_88ru, + { R92C_COND_RTL8188RU }, + /* Others. */ + &(const struct rtwn_bb_prog){ + nitems(rtl8192cu_bb_regs0), + rtl8192cu_bb_regs0, + rtl8192cu_bb_vals0_92ce_92cu, + { 0 }, + NULL + } + } + }, + /* RTL8188RU. */ + { + nitems(rtl8192cu_bb_regs1), + rtl8192cu_bb_regs1, + rtl8192cu_bb_vals1_88ru, + { R92C_COND_RTL8188RU }, + /* RTL8192CU. */ + &(const struct rtwn_bb_prog){ + nitems(rtl8192cu_bb_regs1), + rtl8192cu_bb_regs1, + rtl8192cu_bb_vals1_92cu, + { R92C_COND_RTL8192CU }, + /* Others. */ + &(const struct rtwn_bb_prog){ + nitems(rtl8192cu_bb_regs1), + rtl8192cu_bb_regs1, + rtl8192cu_bb_vals1_88cu_92ce, + { 0 }, + NULL + } + } + }, + { + nitems(rtl8192cu_bb_regs2), + rtl8192cu_bb_regs2, + rtl8192cu_bb_vals2, + { 0 }, + NULL + }, + /* RTL8192CE / RTL8192CU. */ + { + nitems(rtl8192c_bb_regs3), + rtl8192c_bb_regs3, + rtl8192c_bb_vals3_92ce_92cu, + { R92C_COND_RTL8192C }, + /* Others. */ + &(const struct rtwn_bb_prog){ + nitems(rtl8192c_bb_regs3), + rtl8192c_bb_regs3, + rtl8192c_bb_vals3_88cu_88ru, + { 0 }, + NULL + } + }, + { + nitems(rtl8192c_bb_regs4), + rtl8192c_bb_regs4, + rtl8192c_bb_vals4, + { 0 }, + NULL + }, + /* RTL8188CE / RTL8188CU. */ + { + nitems(rtl8192c_bb_regs5), + rtl8192c_bb_regs5, + rtl8192cu_bb_vals5_88cu, + { R92C_COND_RTL8188CU | R92C_COND_RTL8188CE }, + /* RTL8188RU. */ + &(const struct rtwn_bb_prog){ + nitems(rtl8192cu_bb_regs5_88ru), + rtl8192cu_bb_regs5_88ru, + rtl8192cu_bb_vals5_88ru, + { R92C_COND_RTL8188RU }, + /* Others. */ + &(const struct rtwn_bb_prog){ + nitems(rtl8192c_bb_regs5), + rtl8192c_bb_regs5, + rtl8192c_bb_vals5_92ce_92cu, + { 0 }, + NULL + } + } + } +}; + + +static const uint32_t rtl8188ru_agc_vals[] = { + 0x7b000001, 0x7b010001, 0x7b020001, 0x7b030001, 0x7b040001, + 0x7b050001, 0x7b060001, 0x7b070001, 0x7b080001, 0x7a090001, + 0x790a0001, 0x780b0001, 0x770c0001, 0x760d0001, 0x750e0001, + 0x740f0001, 0x73100001, 0x72110001, 0x71120001, 0x70130001, + 0x6f140001, 0x6e150001, 0x6d160001, 0x6c170001, 0x6b180001, + 0x6a190001, 0x691a0001, 0x681b0001, 0x671c0001, 0x661d0001, + 0x651e0001, 0x641f0001, 0x63200001, 0x62210001, 0x61220001, + 0x60230001, 0x46240001, 0x45250001, 0x44260001, 0x43270001, + 0x42280001, 0x41290001, 0x402a0001, 0x262b0001, 0x252c0001, + 0x242d0001, 0x232e0001, 0x222f0001, 0x21300001, 0x20310001, + 0x06320001, 0x05330001, 0x04340001, 0x03350001, 0x02360001, + 0x01370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001, + 0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001, 0x7b400001, + 0x7b410001, 0x7b420001, 0x7b430001, 0x7b440001, 0x7b450001, + 0x7b460001, 0x7b470001, 0x7b480001, 0x7a490001, 0x794a0001, + 0x784b0001, 0x774c0001, 0x764d0001, 0x754e0001, 0x744f0001, + 0x73500001, 0x72510001, 0x71520001, 0x70530001, 0x6f540001, + 0x6e550001, 0x6d560001, 0x6c570001, 0x6b580001, 0x6a590001, + 0x695a0001, 0x685b0001, 0x675c0001, 0x665d0001, 0x655e0001, + 0x645f0001, 0x63600001, 0x62610001, 0x61620001, 0x60630001, + 0x46640001, 0x45650001, 0x44660001, 0x43670001, 0x42680001, + 0x41690001, 0x406a0001, 0x266b0001, 0x256c0001, 0x246d0001, + 0x236e0001, 0x226f0001, 0x21700001, 0x20710001, 0x06720001, + 0x05730001, 0x04740001, 0x03750001, 0x02760001, 0x01770001, + 0x00780001, 0x00790001, 0x007a0001, 0x007b0001, 0x007c0001, + 0x007d0001, 0x007e0001, 0x007f0001, 0x3800001e, 0x3801001e, + 0x3802001e, 0x3803001e, 0x3804001e, 0x3805001e, 0x3806001e, + 0x3807001e, 0x3808001e, 0x3c09001e, 0x3e0a001e, 0x400b001e, + 0x440c001e, 0x480d001e, 0x4c0e001e, 0x500f001e, 0x5210001e, + 0x5611001e, 0x5a12001e, 0x5e13001e, 0x6014001e, 0x6015001e, + 0x6016001e, 0x6217001e, 0x6218001e, 0x6219001e, 0x621a001e, + 0x621b001e, 0x621c001e, 0x621d001e, 0x621e001e, 0x621f001e +}; + +static const struct rtwn_agc_prog rtl8188ru_agc[] = { + { + nitems(rtl8188ru_agc_vals), + rtl8188ru_agc_vals, + { 0 }, + NULL + } +}; + +#endif /* R92CU_PRIV_H */ diff --git a/sys/dev/rtwn/rtl8192c/usb/r92cu_reg.h b/sys/dev/rtwn/rtl8192c/usb/r92cu_reg.h new file mode 100644 index 000000000000..a9db29ccbca4 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/usb/r92cu_reg.h @@ -0,0 +1,65 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef R92CU_REG_H +#define R92CU_REG_H + +#include + + +/* + * MAC registers. + */ +/* System Configuration. */ +#define R92C_USB_SIE_INTF 0x0e0 + + +/* + * USB registers. + */ +#define R92C_USB_SUSPEND 0xfe10 +#define R92C_USB_INFO 0xfe17 +#define R92C_USB_SPECIAL_OPTION 0xfe55 +#define R92C_USB_HCPWM 0xfe57 +#define R92C_USB_HRPWM 0xfe58 +#define R92C_USB_DMA_AGG_TO 0xfe5b +#define R92C_USB_AGG_TO 0xfe5c +#define R92C_USB_AGG_TH 0xfe5d +#define R92C_USB_VID 0xfe60 +#define R92C_USB_PID 0xfe62 +#define R92C_USB_OPTIONAL 0xfe64 +#define R92C_USB_EP 0xfe65 +#define R92C_USB_PHY 0xfe68 +#define R92C_USB_MAC_ADDR 0xfe70 +#define R92C_USB_STRING 0xfe80 + +/* Bits for R92C_USB_SPECIAL_OPTION. */ +#define R92C_USB_SPECIAL_OPTION_AGG_EN 0x08 +#define R92C_USB_SPECIAL_OPTION_INT_BULK_SEL 0x10 + +/* Bits for R92C_USB_EP. */ +#define R92C_USB_EP_HQ_M 0x000f +#define R92C_USB_EP_HQ_S 0 +#define R92C_USB_EP_NQ_M 0x00f0 +#define R92C_USB_EP_NQ_S 4 +#define R92C_USB_EP_LQ_M 0x0f00 +#define R92C_USB_EP_LQ_S 8 + +#endif /* R92CU_REG_H */ diff --git a/sys/dev/rtwn/rtl8192c/usb/r92cu_rx.c b/sys/dev/rtwn/rtl8192c/usb/r92cu_rx.c new file mode 100644 index 000000000000..d8a11dc36ef3 --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/usb/r92cu_rx.c @@ -0,0 +1,63 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include + + +int +r92cu_classify_intr(struct rtwn_softc *sc, void *buf, int len) +{ + /* NB: reports are fetched from C2H_MSG register. */ + return (RTWN_RX_DATA); +} + +int +r92cu_align_rx(int totlen, int len) +{ + return (roundup2(totlen, 128)); +} diff --git a/sys/dev/rtwn/rtl8192c/usb/r92cu_tx.c b/sys/dev/rtwn/rtl8192c/usb/r92cu_tx.c new file mode 100644 index 000000000000..04dbade0651a --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/usb/r92cu_tx.c @@ -0,0 +1,64 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + + +void +r92cu_dump_tx_desc(struct rtwn_softc *sc, const void *desc) +{ +#ifdef RTWN_DEBUG + const struct r92cu_tx_desc *txd = desc; + + RTWN_DPRINTF(sc, RTWN_DEBUG_XMIT_DESC, + "%s: len %d, off %d, flags0 %02X, dw: 1 %08X, 2 %08X, 3 %04X " + "(seq %04X), 4 %08X, 5 %08X, 6 %08X, sum %04X, pad %04X\n", + __func__, le16toh(txd->pktlen), txd->offset, txd->flags0, + le32toh(txd->txdw1), le32toh(txd->txdw2), le16toh(txd->txdw3), + le16toh(txd->txdseq), le32toh(txd->txdw4), le32toh(txd->txdw5), + le32toh(txd->txdw6), le16toh(txd->txdsum), le16toh(txd->pad)); +#endif +} diff --git a/sys/dev/rtwn/rtl8192c/usb/r92cu_tx_desc.h b/sys/dev/rtwn/rtl8192c/usb/r92cu_tx_desc.h new file mode 100644 index 000000000000..16c2d0587e4c --- /dev/null +++ b/sys/dev/rtwn/rtl8192c/usb/r92cu_tx_desc.h @@ -0,0 +1,45 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef R92CU_TX_DESC_H +#define R92CU_TX_DESC_H + +#include + +/* Tx MAC descriptor (USB). */ +struct r92cu_tx_desc { + uint16_t pktlen; + uint8_t offset; + uint8_t flags0; + + uint32_t txdw1; + uint32_t txdw2; + uint16_t txdw3; + uint16_t txdseq; + + uint32_t txdw4; + uint32_t txdw5; + uint32_t txdw6; + + uint16_t txdsum; + uint16_t pad; +} __packed __attribute__((aligned(4))); + +#endif /* R92CU_TX_DESC_H */ \ No newline at end of file diff --git a/sys/dev/rtwn/rtl8812a/r12a.h b/sys/dev/rtwn/rtl8812a/r12a.h new file mode 100644 index 000000000000..ec1d61e1e336 --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a.h @@ -0,0 +1,140 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef RTL8812A_H +#define RTL8812A_H + +/* + * Global definitions. + */ +#define R12A_PUBQ_NPAGES 219 +#define R12A_TXPKTBUF_COUNT 255 +#define R12A_TX_PAGE_COUNT 248 + +#define R12A_TX_PAGE_SIZE 512 +#define R12A_RX_DMA_BUFFER_SIZE 0x3e80 + +#define R12A_MAX_FW_SIZE 0x8000 +#define R12A_MACID_MAX 127 +#define R12A_CAM_ENTRY_COUNT 64 + +#define R12A_INTR_MSG_LEN 60 + +static const uint8_t r12a_chan_5ghz_0[] = + { 36, 40, 44, 48, 52, 56, 60, 64 }; +static const uint8_t r12a_chan_5ghz_1[] = + { 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144 }; +static const uint8_t r12a_chan_5ghz_2[] = + { 149, 153, 157, 161, 165, 169, 173, 177 }; + + +/* + * Function declarations. + */ +/* r12a_attach.c */ +void r12a_vap_preattach(struct rtwn_softc *, struct ieee80211vap *); +void r12a_detach_private(struct rtwn_softc *); + +/* r12a_beacon.c */ +void r12a_beacon_init(struct rtwn_softc *, void *, int); +void r12a_beacon_set_rate(void *, int); + +/* r12a_calib.c */ +void r12a_save_bb_afe_vals(struct rtwn_softc *, uint32_t[], + const uint16_t[], int); +void r12a_restore_bb_afe_vals(struct rtwn_softc *, uint32_t[], + const uint16_t[], int); +void r12a_save_rf_vals(struct rtwn_softc *, uint32_t[], + const uint8_t[], int); +void r12a_restore_rf_vals(struct rtwn_softc *, uint32_t[], + const uint8_t[], int); +void r12a_lc_calib(struct rtwn_softc *); +#ifndef RTWN_WITHOUT_UCODE +int r12a_iq_calib_fw_supported(struct rtwn_softc *); +#endif +void r12a_iq_calib_sw(struct rtwn_softc *); +void r12a_iq_calib(struct rtwn_softc *); + +/* r12a_caps.c */ +int r12a_ioctl_net(struct ieee80211com *, u_long, void *); + +/* r12a_chan.c */ +void r12a_fix_spur(struct rtwn_softc *, struct ieee80211_channel *); +void r12a_set_chan(struct rtwn_softc *, struct ieee80211_channel *); +void r12a_set_band_2ghz(struct rtwn_softc *, uint32_t); +void r12a_set_band_5ghz(struct rtwn_softc *, uint32_t); + +/* r12a_fw.c */ +#ifndef RTWN_WITHOUT_UCODE +void r12a_fw_reset(struct rtwn_softc *, int); +void r12a_fw_download_enable(struct rtwn_softc *, int); +void r12a_set_media_status(struct rtwn_softc *, int); +int r12a_set_pwrmode(struct rtwn_softc *, struct ieee80211vap *, + int); +void r12a_iq_calib_fw(struct rtwn_softc *); +#endif + +/* r12a_init.c */ +int r12a_check_condition(struct rtwn_softc *, const uint8_t[]); +int r12a_set_page_size(struct rtwn_softc *); +void r12a_init_edca(struct rtwn_softc *); +void r12a_init_bb(struct rtwn_softc *); +void r12a_init_rf(struct rtwn_softc *); +void r12a_crystalcap_write(struct rtwn_softc *); +int r12a_power_on(struct rtwn_softc *); +void r12a_power_off(struct rtwn_softc *); +void r12a_init_intr(struct rtwn_softc *); +void r12a_init_antsel(struct rtwn_softc *); + +/* r12a_led.c */ +void r12a_set_led(struct rtwn_softc *, int, int); + +/* r12a_rf.c */ +uint32_t r12a_rf_read(struct rtwn_softc *, int, uint8_t); +uint32_t r12a_c_cut_rf_read(struct rtwn_softc *, int, uint8_t); +void r12a_rf_write(struct rtwn_softc *, int, uint8_t, uint32_t); + +/* r12a_rom.c */ +void r12a_parse_rom_common(struct rtwn_softc *, uint8_t *); +void r12a_parse_rom(struct rtwn_softc *, uint8_t *); + +/* r12a_rx.c */ +void r12a_ratectl_tx_complete(struct rtwn_softc *, uint8_t *, int); +void r12a_handle_c2h_report(struct rtwn_softc *, uint8_t *, int); +int r12a_check_frame_checksum(struct rtwn_softc *, struct mbuf *); +uint8_t r12a_rx_radiotap_flags(const void *); + +/* r12a_tx.c */ +void r12a_fill_tx_desc(struct rtwn_softc *, struct ieee80211_node *, + struct mbuf *, void *, uint8_t, int); +void r12a_fill_tx_desc_raw(struct rtwn_softc *, struct ieee80211_node *, + struct mbuf *, void *, const struct ieee80211_bpf_params *); +void r12a_fill_tx_desc_null(struct rtwn_softc *, void *, int, int, int); +uint8_t r12a_tx_radiotap_flags(const void *); + +#endif /* RTL8812A_H */ diff --git a/sys/dev/rtwn/rtl8812a/r12a_beacon.c b/sys/dev/rtwn/rtl8812a/r12a_beacon.c new file mode 100644 index 000000000000..9360e4f99fdf --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a_beacon.c @@ -0,0 +1,94 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include + + +void +r12a_beacon_init(struct rtwn_softc *sc, void *buf, int id) +{ + struct r12a_tx_desc *txd = (struct r12a_tx_desc *)buf; + + txd->flags0 = R12A_FLAGS0_LSG | R12A_FLAGS0_FSG | R12A_FLAGS0_BMCAST; + + /* + * NB: there is no need to setup HWSEQ_EN bit; + * QSEL_BEACON already implies it. + */ + txd->txdw1 = htole32(SM(R12A_TXDW1_QSEL, R12A_TXDW1_QSEL_BEACON)); + txd->txdw1 |= htole32(SM(R12A_TXDW1_MACID, RTWN_MACID_BC)); + + txd->txdw3 = htole32(R12A_TXDW3_DRVRATE); + txd->txdw3 |= htole32(SM(R12A_TXDW3_SEQ_SEL, id)); + + txd->txdw6 = htole32(SM(R21A_TXDW6_MBSSID, id)); +} + +void +r12a_beacon_set_rate(void *buf, int is5ghz) +{ + struct r12a_tx_desc *txd = (struct r12a_tx_desc *)buf; + + txd->txdw4 &= ~htole32(R12A_TXDW4_DATARATE_M); + if (is5ghz) { + txd->txdw4 = htole32(SM(R12A_TXDW4_DATARATE, + RTWN_RIDX_OFDM6)); + } else + txd->txdw4 = htole32(SM(R12A_TXDW4_DATARATE, RTWN_RIDX_CCK1)); +} diff --git a/sys/dev/rtwn/rtl8812a/r12a_calib.c b/sys/dev/rtwn/rtl8812a/r12a_calib.c new file mode 100644 index 000000000000..c87151b5355a --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a_calib.c @@ -0,0 +1,286 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include + + +void +r12a_lc_calib(struct rtwn_softc *sc) +{ + uint32_t chnlbw; + uint8_t txmode; + + RTWN_DPRINTF(sc, RTWN_DEBUG_CALIB, + "%s: LC calibration started\n", __func__); + + txmode = rtwn_read_1(sc, R12A_SINGLETONE_CONT_TX + 2); + + if ((txmode & 0x07) != 0) { + /* Disable all continuous Tx. */ + /* + * Skipped because BB turns off continuous Tx until + * next packet comes in. + */ + } else { + /* Block all Tx queues. */ + rtwn_write_1(sc, R92C_TXPAUSE, R92C_TX_QUEUE_ALL); + } + + /* Enter LCK mode. */ + rtwn_rf_setbits(sc, 0, R12A_RF_LCK, 0, R12A_RF_LCK_MODE); + + /* Start calibration. */ + chnlbw = rtwn_rf_read(sc, 0, R92C_RF_CHNLBW); + rtwn_rf_write(sc, 0, R92C_RF_CHNLBW, chnlbw | R92C_RF_CHNLBW_LCSTART); + + /* Give calibration the time to complete. */ + rtwn_delay(sc, 150000); /* 150 ms */ + + /* Leave LCK mode. */ + rtwn_rf_setbits(sc, 0, R12A_RF_LCK, R12A_RF_LCK_MODE, 0); + + /* Restore configuration. */ + if ((txmode & 0x07) != 0) { + /* Continuous Tx case. */ + /* + * Skipped because BB turns off continuous Tx until + * next packet comes in. + */ + } else { + /* Unblock all Tx queues. */ + rtwn_write_1(sc, R92C_TXPAUSE, 0); + } + + /* Recover channel number. */ + rtwn_rf_write(sc, 0, R92C_RF_CHNLBW, chnlbw); + + RTWN_DPRINTF(sc, RTWN_DEBUG_CALIB, + "%s: LC calibration finished\n", __func__); +} + +#ifndef RTWN_WITHOUT_UCODE +int +r12a_iq_calib_fw_supported(struct rtwn_softc *sc) +{ + if (sc->fwver == 0x19) + return (1); + + return (0); +} +#endif + +void +r12a_save_bb_afe_vals(struct rtwn_softc *sc, uint32_t vals[], + const uint16_t regs[], int size) +{ + int i; + + /* Select page C. */ + rtwn_bb_setbits(sc, R12A_TXAGC_TABLE_SELECT, 0x80000000, 0); + + for (i = 0; i < size; i++) + vals[i] = rtwn_bb_read(sc, regs[i]); +} + +void +r12a_restore_bb_afe_vals(struct rtwn_softc *sc, uint32_t vals[], + const uint16_t regs[], int size) +{ + int i; + + /* Select page C. */ + rtwn_bb_setbits(sc, R12A_TXAGC_TABLE_SELECT, 0x80000000, 0); + + for (i = 0; i < size; i++) + rtwn_bb_write(sc, regs[i], vals[i]); +} + +void +r12a_save_rf_vals(struct rtwn_softc *sc, uint32_t vals[], + const uint8_t regs[], int size) +{ + int c, i; + + /* Select page C. */ + rtwn_bb_setbits(sc, R12A_TXAGC_TABLE_SELECT, 0x80000000, 0); + + for (c = 0; c < sc->nrxchains; c++) + for (i = 0; i < size; i++) + vals[c * size + i] = rtwn_rf_read(sc, c, regs[i]); +} + +void +r12a_restore_rf_vals(struct rtwn_softc *sc, uint32_t vals[], + const uint8_t regs[], int size) +{ + int c, i; + + /* Select page C. */ + rtwn_bb_setbits(sc, R12A_TXAGC_TABLE_SELECT, 0x80000000, 0); + + for (c = 0; c < sc->nrxchains; c++) + for (i = 0; i < size; i++) + rtwn_rf_write(sc, c, regs[i], vals[c * size + i]); +} + +#ifdef RTWN_TODO +static void +r12a_iq_tx(struct rtwn_softc *sc) +{ + /* TODO */ +} + +static void +r12a_iq_config_mac(struct rtwn_softc *sc) +{ + + /* Select page C. */ + rtwn_bb_setbits(sc, R12A_TXAGC_TABLE_SELECT, 0x80000000, 0); + rtwn_write_1(sc, R92C_TXPAUSE, + R92C_TX_QUEUE_AC | R92C_TX_QUEUE_MGT | R92C_TX_QUEUE_HIGH); + /* BCN_CTRL & BCN_CTRL1 */ + rtwn_setbits_1(sc, R92C_BCN_CTRL(0), R92C_BCN_CTRL_EN_BCN, 0); + rtwn_setbits_1(sc, R92C_BCN_CTRL(1), R92C_BCN_CTRL_EN_BCN, 0); + /* Rx ant off */ + rtwn_write_1(sc, R12A_OFDMCCK_EN, 0); + /* CCA off */ + rtwn_bb_setbits(sc, R12A_CCA_ON_SEC, 0x03, 0x0c); + /* CCK RX Path off */ + rtwn_write_1(sc, R12A_CCK_RX_PATH + 3, 0x0f); +} +#endif + +void +r12a_iq_calib_sw(struct rtwn_softc *sc) +{ +#define R12A_MAX_NRXCHAINS 2 + uint32_t bb_vals[nitems(r12a_iq_bb_regs)]; + uint32_t afe_vals[nitems(r12a_iq_afe_regs)]; + uint32_t rf_vals[nitems(r12a_iq_rf_regs) * R12A_MAX_NRXCHAINS]; + uint32_t rfe[2]; + + KASSERT(sc->nrxchains <= R12A_MAX_NRXCHAINS, + ("nrxchains > %d (%d)\n", R12A_MAX_NRXCHAINS, sc->nrxchains)); + + /* Save registers. */ + r12a_save_bb_afe_vals(sc, bb_vals, r12a_iq_bb_regs, + nitems(r12a_iq_bb_regs)); + + /* Select page C1. */ + rtwn_bb_setbits(sc, R12A_TXAGC_TABLE_SELECT, 0, 0x80000000); + rfe[0] = rtwn_bb_read(sc, R12A_RFE(0)); + rfe[1] = rtwn_bb_read(sc, R12A_RFE(1)); + + r12a_save_bb_afe_vals(sc, afe_vals, r12a_iq_afe_regs, + nitems(r12a_iq_afe_regs)); + r12a_save_rf_vals(sc, rf_vals, r12a_iq_rf_regs, + nitems(r12a_iq_rf_regs)); + +#ifdef RTWN_TODO + /* Configure MAC. */ + rtwn_iq_config_mac(sc); + rtwn_iq_tx(sc); +#endif + + r12a_restore_rf_vals(sc, rf_vals, r12a_iq_rf_regs, + nitems(r12a_iq_rf_regs)); + r12a_restore_bb_afe_vals(sc, afe_vals, r12a_iq_afe_regs, + nitems(r12a_iq_afe_regs)); + + /* Select page C1. */ + rtwn_bb_setbits(sc, R12A_TXAGC_TABLE_SELECT, 0, 0x80000000); + + /* Chain 0. */ + rtwn_bb_write(sc, R12A_SLEEP_NAV(0), 0); + rtwn_bb_write(sc, R12A_PMPD(0), 0); + rtwn_bb_write(sc, 0xc88, 0); + rtwn_bb_write(sc, 0xc8c, 0x3c000000); + rtwn_bb_setbits(sc, 0xc90, 0, 0x00000080); + rtwn_bb_setbits(sc, 0xcc4, 0, 0x20040000); + rtwn_bb_setbits(sc, 0xcc8, 0, 0x20000000); + + /* Chain 1. */ + rtwn_bb_write(sc, R12A_SLEEP_NAV(1), 0); + rtwn_bb_write(sc, R12A_PMPD(1), 0); + rtwn_bb_write(sc, 0xe88, 0); + rtwn_bb_write(sc, 0xe8c, 0x3c000000); + rtwn_bb_setbits(sc, 0xe90, 0, 0x00000080); + rtwn_bb_setbits(sc, 0xec4, 0, 0x20040000); + rtwn_bb_setbits(sc, 0xec8, 0, 0x20000000); + + rtwn_bb_write(sc, R12A_RFE(0), rfe[0]); + rtwn_bb_write(sc, R12A_RFE(1), rfe[1]); + + r12a_restore_bb_afe_vals(sc, bb_vals, r12a_iq_bb_regs, + nitems(r12a_iq_bb_regs)); +#undef R12A_MAX_NRXCHAINS +} + +void +r12a_iq_calib(struct rtwn_softc *sc) +{ +#ifndef RTWN_WITHOUT_UCODE + if ((sc->sc_flags & RTWN_FW_LOADED) && + rtwn_r12a_iq_calib_fw_supported(sc)) + r12a_iq_calib_fw(sc); + else +#endif + rtwn_r12a_iq_calib_sw(sc); +} diff --git a/sys/dev/rtwn/rtl8812a/r12a_caps.c b/sys/dev/rtwn/rtl8812a/r12a_caps.c new file mode 100644 index 000000000000..a8b738e7f887 --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a_caps.c @@ -0,0 +1,125 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include + + +int +r12a_ioctl_net(struct ieee80211com *ic, u_long cmd, void *data) +{ + struct rtwn_softc *sc = ic->ic_softc; + struct r12a_softc *rs = sc->sc_priv; + struct ifreq *ifr = (struct ifreq *)data; + int error; + + error = 0; + switch (cmd) { + case SIOCSIFCAP: + { + struct ieee80211vap *vap; + int changed, rxmask; + + rxmask = ifr->ifr_reqcap & (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6); + + RTWN_LOCK(sc); + changed = 0; + if (!(rs->rs_flags & R12A_RXCKSUM_EN) ^ + !(ifr->ifr_reqcap & IFCAP_RXCSUM)) { + rs->rs_flags ^= R12A_RXCKSUM_EN; + changed = 1; + } + if (!(rs->rs_flags & R12A_RXCKSUM6_EN) ^ + !(ifr->ifr_reqcap & IFCAP_RXCSUM_IPV6)) { + rs->rs_flags ^= R12A_RXCKSUM6_EN; + changed = 1; + } + if (changed) { + if (rxmask == 0) { + sc->rcr &= ~R12A_RCR_TCP_OFFLD_EN; + if (sc->sc_flags & RTWN_RUNNING) { + rtwn_setbits_4(sc, R92C_RCR, + R12A_RCR_TCP_OFFLD_EN, 0); + } + } else { + sc->rcr |= R12A_RCR_TCP_OFFLD_EN; + if (sc->sc_flags & RTWN_RUNNING) { + rtwn_setbits_4(sc, R92C_RCR, + 0, R12A_RCR_TCP_OFFLD_EN); + } + } + } + RTWN_UNLOCK(sc); + + IEEE80211_LOCK(ic); /* XXX */ + TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) { + struct ifnet *ifp = vap->iv_ifp; + + ifp->if_capenable &= + ~(IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6); + ifp->if_capenable |= rxmask; + } + IEEE80211_UNLOCK(ic); + break; + } + default: + error = ENOTTY; /* for net80211 */ + break; + } + + return (error); +} diff --git a/sys/dev/rtwn/rtl8812a/r12a_chan.c b/sys/dev/rtwn/rtl8812a/r12a_chan.c new file mode 100644 index 000000000000..50bb09db18f3 --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a_chan.c @@ -0,0 +1,601 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include +#include + + +static void +r12a_write_txpower(struct rtwn_softc *sc, int chain, + struct ieee80211_channel *c, uint16_t power[RTWN_RIDX_COUNT]) +{ + + if (IEEE80211_IS_CHAN_2GHZ(c)) { + /* Write per-CCK rate Tx power. */ + rtwn_bb_write(sc, R12A_TXAGC_CCK11_1(chain), + SM(R12A_TXAGC_CCK1, power[RTWN_RIDX_CCK1]) | + SM(R12A_TXAGC_CCK2, power[RTWN_RIDX_CCK2]) | + SM(R12A_TXAGC_CCK55, power[RTWN_RIDX_CCK55]) | + SM(R12A_TXAGC_CCK11, power[RTWN_RIDX_CCK11])); + } + + /* Write per-OFDM rate Tx power. */ + rtwn_bb_write(sc, R12A_TXAGC_OFDM18_6(chain), + SM(R12A_TXAGC_OFDM06, power[RTWN_RIDX_OFDM6]) | + SM(R12A_TXAGC_OFDM09, power[RTWN_RIDX_OFDM9]) | + SM(R12A_TXAGC_OFDM12, power[RTWN_RIDX_OFDM12]) | + SM(R12A_TXAGC_OFDM18, power[RTWN_RIDX_OFDM18])); + rtwn_bb_write(sc, R12A_TXAGC_OFDM54_24(chain), + SM(R12A_TXAGC_OFDM24, power[RTWN_RIDX_OFDM24]) | + SM(R12A_TXAGC_OFDM36, power[RTWN_RIDX_OFDM36]) | + SM(R12A_TXAGC_OFDM48, power[RTWN_RIDX_OFDM48]) | + SM(R12A_TXAGC_OFDM54, power[RTWN_RIDX_OFDM54])); + /* Write per-MCS Tx power. */ + rtwn_bb_write(sc, R12A_TXAGC_MCS3_0(chain), + SM(R12A_TXAGC_MCS0, power[RTWN_RIDX_MCS(0)]) | + SM(R12A_TXAGC_MCS1, power[RTWN_RIDX_MCS(1)]) | + SM(R12A_TXAGC_MCS2, power[RTWN_RIDX_MCS(2)]) | + SM(R12A_TXAGC_MCS3, power[RTWN_RIDX_MCS(3)])); + rtwn_bb_write(sc, R12A_TXAGC_MCS7_4(chain), + SM(R12A_TXAGC_MCS4, power[RTWN_RIDX_MCS(4)]) | + SM(R12A_TXAGC_MCS5, power[RTWN_RIDX_MCS(5)]) | + SM(R12A_TXAGC_MCS6, power[RTWN_RIDX_MCS(6)]) | + SM(R12A_TXAGC_MCS7, power[RTWN_RIDX_MCS(7)])); + if (sc->ntxchains >= 2) { + rtwn_bb_write(sc, R12A_TXAGC_MCS11_8(chain), + SM(R12A_TXAGC_MCS8, power[RTWN_RIDX_MCS(8)]) | + SM(R12A_TXAGC_MCS9, power[RTWN_RIDX_MCS(9)]) | + SM(R12A_TXAGC_MCS10, power[RTWN_RIDX_MCS(10)]) | + SM(R12A_TXAGC_MCS11, power[RTWN_RIDX_MCS(11)])); + rtwn_bb_write(sc, R12A_TXAGC_MCS15_12(chain), + SM(R12A_TXAGC_MCS12, power[RTWN_RIDX_MCS(12)]) | + SM(R12A_TXAGC_MCS13, power[RTWN_RIDX_MCS(13)]) | + SM(R12A_TXAGC_MCS14, power[RTWN_RIDX_MCS(14)]) | + SM(R12A_TXAGC_MCS15, power[RTWN_RIDX_MCS(15)])); + } + + /* TODO: VHT rates */ +} + +static int +r12a_get_power_group(struct rtwn_softc *sc, struct ieee80211_channel *c) +{ + uint8_t chan; + int group; + + chan = rtwn_chan2centieee(c); + if (IEEE80211_IS_CHAN_2GHZ(c)) { + if (chan <= 2) group = 0; + else if (chan <= 5) group = 1; + else if (chan <= 8) group = 2; + else if (chan <= 11) group = 3; + else if (chan <= 14) group = 4; + else { + KASSERT(0, ("wrong 2GHz channel %d!\n", chan)); + return (-1); + } + } else if (IEEE80211_IS_CHAN_5GHZ(c)) { + if (chan < 36) + return (-1); + + if (chan <= 42) group = 0; + else if (chan <= 48) group = 1; + else if (chan <= 58) group = 2; + else if (chan <= 64) group = 3; + else if (chan <= 106) group = 4; + else if (chan <= 114) group = 5; + else if (chan <= 122) group = 6; + else if (chan <= 130) group = 7; + else if (chan <= 138) group = 8; + else if (chan <= 144) group = 9; + else if (chan <= 155) group = 10; + else if (chan <= 161) group = 11; + else if (chan <= 171) group = 12; + else if (chan <= 177) group = 13; + else { + KASSERT(0, ("wrong 5GHz channel %d!\n", chan)); + return (-1); + } + } else { + KASSERT(0, ("wrong channel band (flags %08X)\n", c->ic_flags)); + return (-1); + } + + return (group); +} + +static void +r12a_get_txpower(struct rtwn_softc *sc, int chain, + struct ieee80211_channel *c, uint16_t power[RTWN_RIDX_COUNT]) +{ + struct r12a_softc *rs = sc->sc_priv; + int i, ridx, group, max_mcs; + + /* Determine channel group. */ + group = r12a_get_power_group(sc, c); + if (group == -1) { /* shouldn't happen */ + device_printf(sc->sc_dev, "%s: incorrect channel\n", __func__); + return; + } + + /* TODO: VHT rates. */ + max_mcs = RTWN_RIDX_MCS(sc->ntxchains * 8 - 1); + + /* XXX regulatory */ + /* XXX net80211 regulatory */ + + if (IEEE80211_IS_CHAN_2GHZ(c)) { + for (ridx = RTWN_RIDX_CCK1; ridx <= RTWN_RIDX_CCK11; ridx++) + power[ridx] = rs->cck_tx_pwr[chain][group]; + for (ridx = RTWN_RIDX_OFDM6; ridx <= max_mcs; ridx++) + power[ridx] = rs->ht40_tx_pwr_2g[chain][group]; + + if (RTWN_RATE_IS_OFDM(ridx)) { + uint8_t pwr_diff = rs->ofdm_tx_pwr_diff_2g[chain][0]; + for (ridx = RTWN_RIDX_CCK1; ridx <= max_mcs; ridx++) + power[ridx] += pwr_diff; + } + + for (i = 0; i < sc->ntxchains; i++) { + uint8_t min_mcs; + uint8_t pwr_diff; + +#ifdef notyet + if (IEEE80211_IS_CHAN_HT80(c)) { + /* Vendor driver uses HT40 values here. */ + pwr_diff = rs->bw40_tx_pwr_diff_2g[chain][i]; + } else +#endif + if (IEEE80211_IS_CHAN_HT40(c)) + pwr_diff = rs->bw40_tx_pwr_diff_2g[chain][i]; + else + pwr_diff = rs->bw20_tx_pwr_diff_2g[chain][i]; + + min_mcs = RTWN_RIDX_MCS(i * 8 + 7); + for (ridx = min_mcs; ridx <= max_mcs; ridx++) + power[ridx] += pwr_diff; + } + } else { /* 5GHz */ + for (ridx = RTWN_RIDX_OFDM6; ridx <= max_mcs; ridx++) + power[ridx] = rs->ht40_tx_pwr_5g[chain][group]; + + for (i = 0; i < sc->ntxchains; i++) { + uint8_t min_mcs; + uint8_t pwr_diff; + +#ifdef notyet + if (IEEE80211_IS_CHAN_HT80(c)) { + /* TODO: calculate base value. */ + pwr_diff = rs->bw80_tx_pwr_diff_5g[chain][i]; + } else +#endif + if (IEEE80211_IS_CHAN_HT40(c)) + pwr_diff = rs->bw40_tx_pwr_diff_5g[chain][i]; + else + pwr_diff = rs->bw20_tx_pwr_diff_5g[chain][i]; + + min_mcs = RTWN_RIDX_MCS(i * 8 + 7); + for (ridx = min_mcs; ridx <= max_mcs; ridx++) + power[ridx] += pwr_diff; + } + } + + /* Apply max limit. */ + for (ridx = RTWN_RIDX_CCK1; ridx <= max_mcs; ridx++) { + if (power[ridx] > R92C_MAX_TX_PWR) + power[ridx] = R92C_MAX_TX_PWR; + } + +#ifdef RTWN_DEBUG + if (sc->sc_debug & RTWN_DEBUG_TXPWR) { + /* Dump per-rate Tx power values. */ + printf("Tx power for chain %d:\n", chain); + for (ridx = RTWN_RIDX_CCK1; ridx < RTWN_RIDX_COUNT; ridx++) + printf("Rate %d = %u\n", ridx, power[ridx]); + } +#endif +} + +static void +r12a_set_txpower(struct rtwn_softc *sc, struct ieee80211_channel *c) +{ + uint16_t power[RTWN_RIDX_COUNT]; + int i; + + for (i = 0; i < sc->ntxchains; i++) { + memset(power, 0, sizeof(power)); + /* Compute per-rate Tx power values. */ + r12a_get_txpower(sc, i, c, power); + /* Write per-rate Tx power values to hardware. */ + r12a_write_txpower(sc, i, c, power); + } +} + +void +r12a_fix_spur(struct rtwn_softc *sc, struct ieee80211_channel *c) +{ + struct r12a_softc *rs = sc->sc_priv; + uint16_t chan = rtwn_chan2centieee(c); + + if (rs->chip & R12A_CHIP_C_CUT) { + if (IEEE80211_IS_CHAN_HT40(c) && chan == 11) { + rtwn_bb_setbits(sc, R12A_RFMOD, 0, 0xc00); + rtwn_bb_setbits(sc, R12A_ADC_BUF_CLK, 0, 0x40000000); + } else { + rtwn_bb_setbits(sc, R12A_RFMOD, 0x400, 0x800); + + if (!IEEE80211_IS_CHAN_HT40(c) && /* 20 MHz */ + (chan == 13 || chan == 14)) { + rtwn_bb_setbits(sc, R12A_RFMOD, 0, 0x300); + rtwn_bb_setbits(sc, R12A_ADC_BUF_CLK, + 0, 0x40000000); + } else { /* !80 Mhz */ + rtwn_bb_setbits(sc, R12A_RFMOD, 0x100, 0x200); + rtwn_bb_setbits(sc, R12A_ADC_BUF_CLK, + 0x40000000, 0); + } + } + } else { + /* Set ADC clock to 160M to resolve 2480 MHz spur. */ + if (!IEEE80211_IS_CHAN_HT40(c) && /* 20 MHz */ + (chan == 13 || chan == 14)) + rtwn_bb_setbits(sc, R12A_RFMOD, 0, 0x300); + else if (IEEE80211_IS_CHAN_2GHZ(c)) + rtwn_bb_setbits(sc, R12A_RFMOD, 0x100, 0x200); + } +} + +static void +r12a_set_band(struct rtwn_softc *sc, struct ieee80211_channel *c) +{ + struct ieee80211com *ic = &sc->sc_ic; + struct r12a_softc *rs = sc->sc_priv; + uint32_t basicrates; + uint8_t swing; + int i; + + /* Check if band was changed. */ + if ((sc->sc_flags & (RTWN_STARTED | RTWN_RUNNING)) != + RTWN_STARTED && IEEE80211_IS_CHAN_5GHZ(c) ^ + !(rtwn_read_1(sc, R12A_CCK_CHECK) & R12A_CCK_CHECK_5GHZ)) + return; + + rtwn_get_rates(sc, ieee80211_get_suprates(ic, c), NULL, &basicrates, + NULL, 1); + if (IEEE80211_IS_CHAN_2GHZ(c)) { + rtwn_r12a_set_band_2ghz(sc, basicrates); + swing = rs->tx_bbswing_2g; + } else if (IEEE80211_IS_CHAN_5GHZ(c)) { + rtwn_r12a_set_band_5ghz(sc, basicrates); + swing = rs->tx_bbswing_5g; + } else { + KASSERT(0, ("wrong channel flags %08X\n", c->ic_flags)); + return; + } + + /* XXX PATH_B is set by vendor driver. */ + for (i = 0; i < 2; i++) { + uint16_t val; + + switch ((swing >> i * 2) & 0x3) { + case 0: + val = 0x200; /* 0 dB */ + break; + case 1: + val = 0x16a; /* -3 dB */ + break; + case 2: + val = 0x101; /* -6 dB */ + break; + case 3: + val = 0xb6; /* -9 dB */ + break; + } + + rtwn_bb_setbits(sc, R12A_TX_SCALE(i), R12A_TX_SCALE_SWING_M, + val << R12A_TX_SCALE_SWING_S); + } +} + +void +r12a_set_chan(struct rtwn_softc *sc, struct ieee80211_channel *c) +{ + uint32_t val; + uint16_t chan; + int i; + + r12a_set_band(sc, c); + + chan = rtwn_chan2centieee(c); + if (36 <= chan && chan <= 48) + val = 0x09280000; + else if (50 <= chan && chan <= 64) + val = 0x08a60000; + else if (100 <= chan && chan <= 116) + val = 0x08a40000; + else if (118 <= chan) + val = 0x08240000; + else + val = 0x12d40000; + + rtwn_bb_setbits(sc, R12A_FC_AREA, 0x1ffe0000, val); + + for (i = 0; i < sc->nrxchains; i++) { + if (36 <= chan && chan <= 64) + val = 0x10100; + else if (100 <= chan && chan <= 140) + val = 0x30100; + else if (140 < chan) + val = 0x50100; + else + val = 0x00000; + + rtwn_rf_setbits(sc, i, R92C_RF_CHNLBW, 0x70300, val); + + /* RTL8812AU-specific */ + rtwn_r12a_fix_spur(sc, c); + + KASSERT(chan <= 0xff, ("%s: chan %d\n", __func__, chan)); + rtwn_rf_setbits(sc, i, R92C_RF_CHNLBW, 0xff, chan); + } + +#ifdef notyet + if (IEEE80211_IS_CHAN_HT80(c)) { /* 80 MHz */ + rtwn_setbits_2(sc, R92C_WMAC_TRXPTCL_CTL, 0x80, 0x100); + + /* TODO */ + + val = 0x0; + } else +#endif + if (IEEE80211_IS_CHAN_HT40(c)) { /* 40 MHz */ + uint8_t ext_chan; + + if (IEEE80211_IS_CHAN_HT40U(c)) + ext_chan = R12A_DATA_SEC_PRIM_DOWN_20; + else + ext_chan = R12A_DATA_SEC_PRIM_UP_20; + + rtwn_setbits_2(sc, R92C_WMAC_TRXPTCL_CTL, 0x100, 0x80); + rtwn_write_1(sc, R12A_DATA_SEC, ext_chan); + + rtwn_bb_setbits(sc, R12A_RFMOD, 0x003003c3, 0x00300201); + rtwn_bb_setbits(sc, R12A_ADC_BUF_CLK, 0x40000000, 0); + + /* discard high 4 bits */ + val = rtwn_bb_read(sc, R12A_RFMOD); + val = RW(val, R12A_RFMOD_EXT_CHAN, ext_chan); + rtwn_bb_write(sc, R12A_RFMOD, val); + + val = rtwn_bb_read(sc, R12A_CCA_ON_SEC); + val = RW(val, R12A_CCA_ON_SEC_EXT_CHAN, ext_chan); + rtwn_bb_write(sc, R12A_CCA_ON_SEC, val); + + if (rtwn_read_1(sc, 0x837) & 0x04) + val = 0x01800000; + else if (sc->nrxchains == 2 && sc->ntxchains == 2) + val = 0x01c00000; + else + val = 0x02000000; + + rtwn_bb_setbits(sc, R12A_L1_PEAK_TH, 0x03c00000, val); + + if (IEEE80211_IS_CHAN_HT40U(c)) + rtwn_bb_setbits(sc, R92C_CCK0_SYSTEM, 0x10, 0); + else + rtwn_bb_setbits(sc, R92C_CCK0_SYSTEM, 0, 0x10); + + val = 0x400; + } else { /* 20 MHz */ + rtwn_setbits_2(sc, R92C_WMAC_TRXPTCL_CTL, 0x180, 0); + rtwn_write_1(sc, R12A_DATA_SEC, R12A_DATA_SEC_NO_EXT); + + rtwn_bb_setbits(sc, R12A_RFMOD, 0x003003c3, 0x00300200); + rtwn_bb_setbits(sc, R12A_ADC_BUF_CLK, 0x40000000, 0); + + if (sc->nrxchains == 2 && sc->ntxchains == 2) + val = 0x01c00000; + else + val = 0x02000000; + + rtwn_bb_setbits(sc, R12A_L1_PEAK_TH, 0x03c00000, val); + + val = 0xc00; + } + + /* RTL8812AU-specific */ + rtwn_r12a_fix_spur(sc, c); + + for (i = 0; i < 2; i++) + rtwn_rf_setbits(sc, i, R92C_RF_CHNLBW, 0xc00, val); + + /* Set Tx power for this new channel. */ + r12a_set_txpower(sc, c); +} + +void +r12a_set_band_2ghz(struct rtwn_softc *sc, uint32_t basicrates) +{ + struct r12a_softc *rs = sc->sc_priv; + + /* Enable CCK / OFDM. */ + rtwn_bb_setbits(sc, R12A_OFDMCCK_EN, + 0, R12A_OFDMCCK_EN_CCK | R12A_OFDMCCK_EN_OFDM); + + rtwn_bb_setbits(sc, R12A_BW_INDICATION, 0x02, 0x01); + rtwn_bb_setbits(sc, R12A_PWED_TH, 0x3e000, 0x2e000); + + /* Select AGC table. */ + rtwn_bb_setbits(sc, R12A_TXAGC_TABLE_SELECT, 0x03, 0); + + switch (rs->rfe_type) { + case 0: + case 1: + case 2: + rtwn_bb_write(sc, R12A_RFE_PINMUX(0), 0x77777777); + rtwn_bb_write(sc, R12A_RFE_PINMUX(1), 0x77777777); + rtwn_bb_setbits(sc, R12A_RFE_INV(0), 0x3ff00000, 0); + rtwn_bb_setbits(sc, R12A_RFE_INV(1), 0x3ff00000, 0); + break; + case 3: + rtwn_bb_write(sc, R12A_RFE_PINMUX(0), 0x54337770); + rtwn_bb_write(sc, R12A_RFE_PINMUX(1), 0x54337770); + rtwn_bb_setbits(sc, R12A_RFE_INV(0), 0x3ff00000, 0x01000000); + rtwn_bb_setbits(sc, R12A_RFE_INV(1), 0x3ff00000, 0x01000000); + rtwn_bb_setbits(sc, R12A_ANTSEL_SW, 0x0303, 0x01); + break; + case 4: + rtwn_bb_write(sc, R12A_RFE_PINMUX(0), 0x77777777); + rtwn_bb_write(sc, R12A_RFE_PINMUX(1), 0x77777777); + rtwn_bb_setbits(sc, R12A_RFE_INV(0), 0x3ff00000, 0x00100000); + rtwn_bb_setbits(sc, R12A_RFE_INV(1), 0x3ff00000, 0x00100000); + break; + case 5: + rtwn_write_1(sc, R12A_RFE_PINMUX(0) + 2, 0x77); + rtwn_bb_write(sc, R12A_RFE_PINMUX(1), 0x77777777); + rtwn_setbits_1(sc, R12A_RFE_INV(0) + 3, 0x01, 0); + rtwn_bb_setbits(sc, R12A_RFE_INV(1), 0x3ff00000, 0); + break; + default: + break; + } + + rtwn_bb_setbits(sc, R12A_TX_PATH, 0xf0, 0x10); + rtwn_bb_setbits(sc, R12A_CCK_RX_PATH, 0x0f000000, 0x01000000); + + /* Write basic rates. */ + rtwn_set_basicrates(sc, basicrates); + + rtwn_write_1(sc, R12A_CCK_CHECK, 0); +} + +void +r12a_set_band_5ghz(struct rtwn_softc *sc, uint32_t basicrates) +{ + struct r12a_softc *rs = sc->sc_priv; + int ntries; + + rtwn_write_1(sc, R12A_CCK_CHECK, R12A_CCK_CHECK_5GHZ); + + for (ntries = 0; ntries < 100; ntries++) { + if ((rtwn_read_2(sc, R12A_TXPKT_EMPTY) & 0x30) == 0x30) + break; + + rtwn_delay(sc, 25); + } + if (ntries == 100) { + device_printf(sc->sc_dev, + "%s: TXPKT_EMPTY check failed (%04X)\n", + __func__, rtwn_read_2(sc, R12A_TXPKT_EMPTY)); + } + + /* Enable OFDM. */ + rtwn_bb_setbits(sc, R12A_OFDMCCK_EN, R12A_OFDMCCK_EN_CCK, + R12A_OFDMCCK_EN_OFDM); + + rtwn_bb_setbits(sc, R12A_BW_INDICATION, 0x01, 0x02); + rtwn_bb_setbits(sc, R12A_PWED_TH, 0x3e000, 0x2a000); + + /* Select AGC table. */ + rtwn_bb_setbits(sc, R12A_TXAGC_TABLE_SELECT, 0x03, 0x01); + + switch (rs->rfe_type) { + case 0: + rtwn_bb_write(sc, R12A_RFE_PINMUX(0), 0x77337717); + rtwn_bb_write(sc, R12A_RFE_PINMUX(1), 0x77337717); + rtwn_bb_setbits(sc, R12A_RFE_INV(0), 0x3ff00000, 0x01000000); + rtwn_bb_setbits(sc, R12A_RFE_INV(1), 0x3ff00000, 0x01000000); + break; + case 1: + rtwn_bb_write(sc, R12A_RFE_PINMUX(0), 0x77337717); + rtwn_bb_write(sc, R12A_RFE_PINMUX(1), 0x77337717); + rtwn_bb_setbits(sc, R12A_RFE_INV(0), 0x3ff00000, 0); + rtwn_bb_setbits(sc, R12A_RFE_INV(1), 0x3ff00000, 0); + break; + case 2: + case 4: + rtwn_bb_write(sc, R12A_RFE_PINMUX(0), 0x77337777); + rtwn_bb_write(sc, R12A_RFE_PINMUX(1), 0x77337777); + rtwn_bb_setbits(sc, R12A_RFE_INV(0), 0x3ff00000, 0x01000000); + rtwn_bb_setbits(sc, R12A_RFE_INV(1), 0x3ff00000, 0x01000000); + break; + case 3: + rtwn_bb_write(sc, R12A_RFE_PINMUX(0), 0x54337717); + rtwn_bb_write(sc, R12A_RFE_PINMUX(1), 0x54337717); + rtwn_bb_setbits(sc, R12A_RFE_INV(0), 0x3ff00000, 0x01000000); + rtwn_bb_setbits(sc, R12A_RFE_INV(1), 0x3ff00000, 0x01000000); + rtwn_bb_setbits(sc, R12A_ANTSEL_SW, 0x0303, 0x01); + break; + case 5: + rtwn_write_1(sc, R12A_RFE_PINMUX(0) + 2, 0x33); + rtwn_bb_write(sc, R12A_RFE_PINMUX(1), 0x77337777); + rtwn_setbits_1(sc, R12A_RFE_INV(0) + 3, 0, 0x01); + rtwn_bb_setbits(sc, R12A_RFE_INV(1), 0x3ff00000, 0x01000000); + break; + default: + break; + } + + rtwn_bb_setbits(sc, R12A_TX_PATH, 0xf0, 0); + rtwn_bb_setbits(sc, R12A_CCK_RX_PATH, 0, 0x0f000000); + + /* Write basic rates. */ + rtwn_set_basicrates(sc, basicrates); +} diff --git a/sys/dev/rtwn/rtl8812a/r12a_fw.c b/sys/dev/rtwn/rtl8812a/r12a_fw.c new file mode 100644 index 000000000000..93362bab1a57 --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a_fw.c @@ -0,0 +1,194 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include + +#include +#include +#include +#include + + +#ifndef RTWN_WITHOUT_UCODE +void +r12a_fw_reset(struct rtwn_softc *sc, int reason) +{ + /* Reset MCU IO wrapper. */ + rtwn_setbits_1(sc, R92C_RSV_CTRL, 0x02, 0); + rtwn_setbits_1(sc, R92C_RSV_CTRL + 1, 0x08, 0); + + rtwn_setbits_1_shift(sc, R92C_SYS_FUNC_EN, + R92C_SYS_FUNC_EN_CPUEN, 0, 1); + + /* Enable MCU IO wrapper. */ + rtwn_setbits_1(sc, R92C_RSV_CTRL, 0x02, 0); + rtwn_setbits_1(sc, R92C_RSV_CTRL + 1, 0, 0x08); + + rtwn_setbits_1_shift(sc, R92C_SYS_FUNC_EN, + 0, R92C_SYS_FUNC_EN_CPUEN, 1); +} + +void +r12a_fw_download_enable(struct rtwn_softc *sc, int enable) +{ + if (enable) { + /* MCU firmware download enable. */ + rtwn_setbits_1(sc, R92C_MCUFWDL, 0, R92C_MCUFWDL_EN); + /* 8051 reset. */ + rtwn_setbits_1_shift(sc, R92C_MCUFWDL, R92C_MCUFWDL_ROM_DLEN, + 0, 2); + } else { + /* MCU download disable. */ + rtwn_setbits_1(sc, R92C_MCUFWDL, R92C_MCUFWDL_EN, 0); + } +} + +void +r12a_set_media_status(struct rtwn_softc *sc, int macid) +{ + struct r12a_fw_cmd_msrrpt status; + int error; + + if (macid & RTWN_MACID_VALID) + status.msrb0 = R12A_MSRRPT_B0_ASSOC; + else + status.msrb0 = R12A_MSRRPT_B0_DISASSOC; + + status.macid = (macid & ~RTWN_MACID_VALID); + status.macid_end = 0; + + error = r88e_fw_cmd(sc, R12A_CMD_MSR_RPT, &status, sizeof(status)); + if (error != 0) + device_printf(sc->sc_dev, "cannot change media status!\n"); +} + +int +r12a_set_pwrmode(struct rtwn_softc *sc, struct ieee80211vap *vap, + int off) +{ + struct r12a_fw_cmd_pwrmode mode; + int error; + + if (off && vap->iv_state == IEEE80211_S_RUN && + (vap->iv_flags & IEEE80211_F_PMGTON)) { + mode.mode = R88E_PWRMODE_LEG; + /* + * TODO: switch to RFOFF state + * (something is missing here - Rx stops with it). + */ +#ifdef RTWN_TODO + mode.pwr_state = R88E_PWRMODE_STATE_RFOFF; +#else + mode.pwr_state = R88E_PWRMODE_STATE_RFON; +#endif + } else { + mode.mode = R88E_PWRMODE_CAM; + mode.pwr_state = R88E_PWRMODE_STATE_ALLON; + } + mode.pwrb1 = + SM(R88E_PWRMODE_B1_SMART_PS, R88E_PWRMODE_B1_LEG_NULLDATA) | + SM(R88E_PWRMODE_B1_RLBM, R88E_PWRMODE_B1_MODE_MIN); + /* XXX ignored */ + mode.bcn_pass = 0; + mode.queue_uapsd = 0; + mode.pwrb5 = R12A_PWRMODE_B5_NO_BTCOEX; + error = r88e_fw_cmd(sc, R12A_CMD_SET_PWRMODE, &mode, sizeof(mode)); + if (error != 0) { + device_printf(sc->sc_dev, + "%s: CMD_SET_PWRMODE was not sent, error %d\n", + __func__, error); + } + + return (error); +} + +void +r12a_iq_calib_fw(struct rtwn_softc *sc) +{ + struct r12a_softc *rs = sc->sc_priv; + struct ieee80211_channel *c = sc->sc_ic.ic_curchan; + struct r12a_fw_cmd_iq_calib cmd; + + if (rs->rs_flags & R12A_IQK_RUNNING) + return; + + RTWN_DPRINTF(sc, RTWN_DEBUG_CALIB, "Starting IQ calibration (FW)\n"); + + cmd.chan = rtwn_chan2centieee(c); + if (IEEE80211_IS_CHAN_5GHZ(c)) + cmd.band_bw = RTWN_CMD_IQ_BAND_5GHZ; + else + cmd.band_bw = RTWN_CMD_IQ_BAND_2GHZ; + + /* TODO: 80/160 MHz. */ + if (IEEE80211_IS_CHAN_HT40(c)) + cmd.band_bw |= RTWN_CMD_IQ_CHAN_WIDTH_40; + else + cmd.band_bw |= RTWN_CMD_IQ_CHAN_WIDTH_20; + + cmd.ext_5g_pa_lna = RTWN_CMD_IQ_EXT_PA_5G(rs->ext_pa_5g); + cmd.ext_5g_pa_lna |= RTWN_CMD_IQ_EXT_LNA_5G(rs->ext_lna_5g); + + if (r88e_fw_cmd(sc, R12A_CMD_IQ_CALIBRATE, &cmd, sizeof(cmd)) != 0) { + RTWN_DPRINTF(sc, RTWN_DEBUG_CALIB, + "error while sending IQ calibration command to FW!\n"); + return; + } + + rs->rs_flags |= R12A_IQK_RUNNING; +} +#endif diff --git a/sys/dev/rtwn/rtl8812a/r12a_fw_cmd.h b/sys/dev/rtwn/rtl8812a/r12a_fw_cmd.h new file mode 100644 index 000000000000..58b82ed14268 --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a_fw_cmd.h @@ -0,0 +1,123 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef R12A_FW_CMD_H +#define R12A_FW_CMD_H + +#include + +/* + * Host to firmware commands. + */ +/* Note: some parts are shared with RTL8188EU. */ +#define R12A_CMD_MSR_RPT 0x01 +#define R12A_CMD_SET_PWRMODE 0x20 +#define R12A_CMD_IQ_CALIBRATE 0x45 + +/* Structure for R12A_CMD_MSR_RPT. */ +struct r12a_fw_cmd_msrrpt { + uint8_t msrb0; +#define R12A_MSRRPT_B0_DISASSOC 0x00 +#define R12A_MSRRPT_B0_ASSOC 0x01 +#define R12A_MSRRPT_B0_MACID_IND 0x02 + + uint8_t macid; + uint8_t macid_end; +} __packed; + +/* Structure for R12A_CMD_SET_PWRMODE. */ +struct r12a_fw_cmd_pwrmode { + uint8_t mode; + uint8_t pwrb1; + uint8_t bcn_pass; + uint8_t queue_uapsd; + uint8_t pwr_state; + uint8_t pwrb5; +#define R12A_PWRMODE_B5_NO_BTCOEX 0x40 +} __packed; + +/* Structure for R12A_CMD_IQ_CALIBRATE. */ +struct r12a_fw_cmd_iq_calib { + uint8_t chan; + uint8_t band_bw; +#define RTWN_CMD_IQ_CHAN_WIDTH_20 0x01 +#define RTWN_CMD_IQ_CHAN_WIDTH_40 0x02 +#define RTWN_CMD_IQ_CHAN_WIDTH_80 0x04 +#define RTWN_CMD_IQ_CHAN_WIDTH_160 0x08 +#define RTWN_CMD_IQ_BAND_2GHZ 0x10 +#define RTWN_CMD_IQ_BAND_5GHZ 0x20 + + uint8_t ext_5g_pa_lna; +#define RTWN_CMD_IQ_EXT_PA_5G(pa) (pa) +#define RTWN_CMD_IQ_EXT_LNA_5G(lna) ((lna) << 1) +} __packed; + + +/* + * C2H event types. + */ +#define R12A_C2H_DEBUG 0x00 +#define R12A_C2H_TX_REPORT 0x03 +#define R12A_C2H_BT_INFO 0x09 +#define R12A_C2H_RA_REPORT 0x0c +#define R12A_C2H_IQK_FINISHED 0x11 + +/* Structure for R12A_C2H_TX_REPORT event. */ +struct r12a_c2h_tx_rpt { + uint8_t txrptb0; +#define R12A_TXRPTB0_QSEL_M 0x1f +#define R12A_TXRPTB0_QSEL_S 0 +#define R12A_TXRPTB0_BC 0x20 +#define R12A_TXRPTB0_LIFE_EXPIRE 0x40 +#define R12A_TXRPTB0_RETRY_OVER 0x80 + + uint8_t macid; + uint8_t txrptb2; +#define R12A_TXRPTB2_RETRY_CNT_M 0x3f +#define R12A_TXRPTB2_RETRY_CNT_S 0 + + uint8_t queue_time_low; /* 256 msec unit */ + uint8_t queue_time_high; + uint8_t final_rate; + uint16_t reserved; +} __packed; + +/* Structure for R12A_C2H_RA_REPORT event. */ +struct r12a_c2h_ra_report { + uint8_t rarptb0; +#define R12A_RARPTB0_RATE_M 0x3f +#define R12A_RARPTB0_RATE_S 0 + + uint8_t macid; + uint8_t rarptb2; +#define R12A_RARPTB0_LDPC 0x01 +#define R12A_RARPTB0_TXBF 0x02 +#define R12A_RARPTB0_NOISE 0x04 +} __packed; + +#endif /* R12A_FW_CMD_H */ diff --git a/sys/dev/rtwn/rtl8812a/r12a_init.c b/sys/dev/rtwn/rtl8812a/r12a_init.c new file mode 100644 index 000000000000..8ec401d9d0e4 --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a_init.c @@ -0,0 +1,486 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include + +#include +#include +#include +#include + + +int +r12a_check_condition(struct rtwn_softc *sc, const uint8_t cond[]) +{ + struct r12a_softc *rs = sc->sc_priv; + uint8_t mask[4]; + int i, j, nmasks; + + RTWN_DPRINTF(sc, RTWN_DEBUG_RESET, + "%s: condition byte 0: %02X; ext PA/LNA: %d/%d (2 GHz), " + "%d/%d (5 GHz)\n", __func__, cond[0], rs->ext_pa_2g, + rs->ext_lna_2g, rs->ext_pa_5g, rs->ext_lna_5g); + + if (cond[0] == 0) + return (1); + + if (!rs->ext_pa_2g && !rs->ext_lna_2g && + !rs->ext_pa_5g && !rs->ext_lna_5g) + return (0); + + nmasks = 0; + if (rs->ext_pa_2g) { + mask[nmasks] = R12A_COND_GPA; + mask[nmasks] |= R12A_COND_TYPE(rs->type_pa_2g); + nmasks++; + } + if (rs->ext_pa_5g) { + mask[nmasks] = R12A_COND_APA; + mask[nmasks] |= R12A_COND_TYPE(rs->type_pa_5g); + nmasks++; + } + if (rs->ext_lna_2g) { + mask[nmasks] = R12A_COND_GLNA; + mask[nmasks] |= R12A_COND_TYPE(rs->type_lna_2g); + nmasks++; + } + if (rs->ext_lna_5g) { + mask[nmasks] = R12A_COND_ALNA; + mask[nmasks] |= R12A_COND_TYPE(rs->type_lna_5g); + nmasks++; + } + + for (i = 0; i < RTWN_MAX_CONDITIONS && cond[i] != 0; i++) + for (j = 0; j < nmasks; j++) + if ((cond[i] & mask[j]) == mask[j]) + return (1); + + return (0); +} + +int +r12a_set_page_size(struct rtwn_softc *sc) +{ + return (rtwn_setbits_1(sc, R92C_PBP, R92C_PBP_PSTX_M, + R92C_PBP_512 << R92C_PBP_PSTX_S) == 0); +} + +void +r12a_init_edca(struct rtwn_softc *sc) +{ + r92c_init_edca(sc); + + /* 80 MHz clock */ + rtwn_write_1(sc, R92C_USTIME_TSF, 0x50); + rtwn_write_1(sc, R92C_USTIME_EDCA, 0x50); +} + +void +r12a_init_bb(struct rtwn_softc *sc) +{ + int i, j; + + rtwn_setbits_1(sc, R92C_SYS_FUNC_EN, 0, R92C_SYS_FUNC_EN_USBA); + + /* Enable BB and RF. */ + rtwn_setbits_1(sc, R92C_SYS_FUNC_EN, 0, + R92C_SYS_FUNC_EN_BBRSTB | R92C_SYS_FUNC_EN_BB_GLB_RST); + + /* PathA RF Power On. */ + rtwn_write_1(sc, R92C_RF_CTRL, + R92C_RF_CTRL_EN | R92C_RF_CTRL_RSTB | R92C_RF_CTRL_SDMRSTB); + + /* PathB RF Power On. */ + rtwn_write_1(sc, R12A_RF_B_CTRL, + R92C_RF_CTRL_EN | R92C_RF_CTRL_RSTB | R92C_RF_CTRL_SDMRSTB); + + /* Write BB initialization values. */ + for (i = 0; i < sc->bb_size; i++) { + const struct rtwn_bb_prog *bb_prog = &sc->bb_prog[i]; + + while (!rtwn_check_condition(sc, bb_prog->cond)) { + KASSERT(bb_prog->next != NULL, + ("%s: wrong condition value (i %d)\n", + __func__, i)); + bb_prog = bb_prog->next; + } + + for (j = 0; j < bb_prog->count; j++) { + RTWN_DPRINTF(sc, RTWN_DEBUG_RESET, + "BB: reg 0x%03x, val 0x%08x\n", + bb_prog->reg[j], bb_prog->val[j]); + + rtwn_bb_write(sc, bb_prog->reg[j], bb_prog->val[j]); + rtwn_delay(sc, 1); + } + } + + /* XXX meshpoint mode? */ + + /* Write AGC values. */ + for (i = 0; i < sc->agc_size; i++) { + const struct rtwn_agc_prog *agc_prog = &sc->agc_prog[i]; + + while (!rtwn_check_condition(sc, agc_prog->cond)) { + KASSERT(agc_prog->next != NULL, + ("%s: wrong condition value (2) (i %d)\n", + __func__, i)); + agc_prog = agc_prog->next; + } + + for (j = 0; j < agc_prog->count; j++) { + RTWN_DPRINTF(sc, RTWN_DEBUG_RESET, + "AGC: val 0x%08x\n", agc_prog->val[j]); + + rtwn_bb_write(sc, 0x81c, agc_prog->val[j]); + rtwn_delay(sc, 1); + } + } + + for (i = 0; i < sc->nrxchains; i++) { + rtwn_bb_write(sc, R12A_INITIAL_GAIN(i), 0x22); + rtwn_delay(sc, 1); + rtwn_bb_write(sc, R12A_INITIAL_GAIN(i), 0x20); + rtwn_delay(sc, 1); + } + + rtwn_r12a_crystalcap_write(sc); + + if (rtwn_bb_read(sc, R12A_CCK_RPT_FORMAT) & R12A_CCK_RPT_FORMAT_HIPWR) + sc->sc_flags |= RTWN_FLAG_CCK_HIPWR; +} + +void +r12a_init_rf(struct rtwn_softc *sc) +{ + int chain, i; + + for (chain = 0, i = 0; chain < sc->nrxchains; chain++, i++) { + /* Write RF initialization values for this chain. */ + i += r92c_init_rf_chain(sc, &sc->rf_prog[i], chain); + } +} + +void +r12a_crystalcap_write(struct rtwn_softc *sc) +{ + struct r12a_softc *rs = sc->sc_priv; + uint32_t reg; + uint8_t val; + + val = rs->crystalcap & 0x3f; + reg = rtwn_bb_read(sc, R92C_MAC_PHY_CTRL); + reg = RW(reg, R12A_MAC_PHY_CRYSTALCAP, val | (val << 6)); + rtwn_bb_write(sc, R92C_MAC_PHY_CTRL, reg); +} + +static void +r12a_rf_init_workaround(struct rtwn_softc *sc) +{ + + rtwn_write_1(sc, R92C_RF_CTRL, + R92C_RF_CTRL_EN | R92C_RF_CTRL_SDMRSTB); + rtwn_write_1(sc, R92C_RF_CTRL, + R92C_RF_CTRL_EN | R92C_RF_CTRL_RSTB | + R92C_RF_CTRL_SDMRSTB); + rtwn_write_1(sc, R12A_RF_B_CTRL, + R92C_RF_CTRL_EN | R92C_RF_CTRL_SDMRSTB); + rtwn_write_1(sc, R12A_RF_B_CTRL, + R92C_RF_CTRL_EN | R92C_RF_CTRL_RSTB | + R92C_RF_CTRL_SDMRSTB); +} + +int +r12a_power_on(struct rtwn_softc *sc) +{ +#define RTWN_CHK(res) do { \ + if (res != 0) \ + return (EIO); \ +} while(0) + int ntries; + + r12a_rf_init_workaround(sc); + + /* Force PWM mode. */ + RTWN_CHK(rtwn_setbits_1(sc, R92C_SPS0_CTRL + 1, 0, 0x01)); + + /* Turn off ZCD. */ + RTWN_CHK(rtwn_setbits_2(sc, 0x014, 0x0180, 0)); + + /* Enable LDO normal mode. */ + RTWN_CHK(rtwn_setbits_1(sc, R92C_LPLDO_CTRL, R92C_LPLDO_CTRL_SLEEP, + 0)); + + /* GPIO 0...7 input mode. */ + RTWN_CHK(rtwn_write_1(sc, R92C_GPIO_IOSEL, 0)); + + /* GPIO 11...8 input mode. */ + RTWN_CHK(rtwn_write_1(sc, R92C_MAC_PINMUX_CFG, 0)); + + /* Enable WL suspend. */ + RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, + R92C_APS_FSMCO_AFSM_HSUS, 0, 1)); + + /* Enable 8051. */ + RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_SYS_FUNC_EN, + 0, R92C_SYS_FUNC_EN_CPUEN, 1)); + + /* Disable SW LPS. */ + RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, + R92C_APS_FSMCO_APFM_RSM, 0, 1)); + + /* Wait for power ready bit. */ + for (ntries = 0; ntries < 5000; ntries++) { + if (rtwn_read_4(sc, R92C_APS_FSMCO) & R92C_APS_FSMCO_SUS_HOST) + break; + rtwn_delay(sc, 10); + } + if (ntries == 5000) { + device_printf(sc->sc_dev, + "timeout waiting for chip power up\n"); + return (ETIMEDOUT); + } + + /* Disable WL suspend. */ + RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, + R92C_APS_FSMCO_AFSM_HSUS, 0, 1)); + + RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, 0, + R92C_APS_FSMCO_APFM_ONMAC, 1)); + for (ntries = 0; ntries < 5000; ntries++) { + if (!(rtwn_read_2(sc, R92C_APS_FSMCO) & + R92C_APS_FSMCO_APFM_ONMAC)) + break; + rtwn_delay(sc, 10); + } + if (ntries == 5000) + return (ETIMEDOUT); + + /* Enable MAC DMA/WMAC/SCHEDULE/SEC blocks. */ + RTWN_CHK(rtwn_write_2(sc, R92C_CR, 0x0000)); + RTWN_CHK(rtwn_setbits_2(sc, R92C_CR, 0, + R92C_CR_HCI_TXDMA_EN | R92C_CR_TXDMA_EN | + R92C_CR_HCI_RXDMA_EN | R92C_CR_RXDMA_EN | + R92C_CR_PROTOCOL_EN | R92C_CR_SCHEDULE_EN | + ((sc->sc_hwcrypto != RTWN_CRYPTO_SW) ? R92C_CR_ENSEC : 0) | + R92C_CR_CALTMR_EN)); + + return (0); +} + +void +r12a_power_off(struct rtwn_softc *sc) +{ + struct r12a_softc *rs = sc->sc_priv; + int error, ntries; + + /* Stop Rx. */ + error = rtwn_write_1(sc, R92C_CR, 0); + if (error == ENXIO) /* hardware gone */ + return; + + /* Move card to Low Power state. */ + /* Block all Tx queues. */ + rtwn_write_1(sc, R92C_TXPAUSE, R92C_TX_QUEUE_ALL); + + for (ntries = 0; ntries < 10; ntries++) { + /* Should be zero if no packet is transmitting. */ + if (rtwn_read_4(sc, R88E_SCH_TXCMD) == 0) + break; + + rtwn_delay(sc, 5000); + } + if (ntries == 10) { + device_printf(sc->sc_dev, "%s: failed to block Tx queues\n", + __func__); + return; + } + + /* Turn off 3-wire. */ + rtwn_write_1(sc, R12A_HSSI_PARAM1(0), 0x04); + rtwn_write_1(sc, R12A_HSSI_PARAM1(1), 0x04); + + /* CCK and OFDM are disabled, and clock are gated. */ + rtwn_setbits_1(sc, R92C_SYS_FUNC_EN, R92C_SYS_FUNC_EN_BBRSTB, 0); + + rtwn_delay(sc, 1); + + /* Reset whole BB. */ + rtwn_setbits_1(sc, R92C_SYS_FUNC_EN, R92C_SYS_FUNC_EN_BB_GLB_RST, 0); + + /* Reset MAC TRX. */ + rtwn_write_1(sc, R92C_CR, + R92C_CR_HCI_TXDMA_EN | R92C_CR_HCI_RXDMA_EN); + + /* check if removed later. (?) */ + rtwn_setbits_1_shift(sc, R92C_CR, R92C_CR_ENSEC, 0, 1); + + /* Respond TxOK to scheduler */ + rtwn_setbits_1(sc, R92C_DUAL_TSF_RST, 0, R92C_DUAL_TSF_RST_TXOK); + + /* If firmware in ram code, do reset. */ +#ifndef RTWN_WITHOUT_UCODE + if (rtwn_read_1(sc, R92C_MCUFWDL) & R92C_MCUFWDL_RAM_DL_SEL) + r12a_fw_reset(sc, RTWN_FW_RESET_SHUTDOWN); +#endif + + /* Reset MCU. */ + rtwn_setbits_1_shift(sc, R92C_SYS_FUNC_EN, R92C_SYS_FUNC_EN_CPUEN, + 0, 1); + rtwn_write_1(sc, R92C_MCUFWDL, 0); + + /* Move card to Disabled state. */ + /* Turn off 3-wire. */ + rtwn_write_1(sc, R12A_HSSI_PARAM1(0), 0x04); + rtwn_write_1(sc, R12A_HSSI_PARAM1(1), 0x04); + + /* Reset BB, close RF. */ + rtwn_setbits_1(sc, R92C_SYS_FUNC_EN, R92C_SYS_FUNC_EN_BB_GLB_RST, 0); + + rtwn_delay(sc, 1); + + /* SPS PWM mode. */ + rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, 0xff, + R92C_APS_FSMCO_SOP_RCK | R92C_APS_FSMCO_SOP_ABG, 3); + + /* ANA clock = 500k. */ + rtwn_setbits_1(sc, R92C_SYS_CLKR, R92C_SYS_CLKR_ANA8M, 0); + + /* Turn off MAC by HW state machine */ + rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, 0, R92C_APS_FSMCO_APFM_OFF, + 1); + for (ntries = 0; ntries < 10; ntries++) { + /* Wait until it will be disabled. */ + if ((rtwn_read_2(sc, R92C_APS_FSMCO) & + R92C_APS_FSMCO_APFM_OFF) == 0) + break; + + rtwn_delay(sc, 5000); + } + if (ntries == 10) { + device_printf(sc->sc_dev, "%s: could not turn off MAC\n", + __func__); + return; + } + + /* Reset 8051. */ + rtwn_setbits_1_shift(sc, R92C_SYS_FUNC_EN, R92C_SYS_FUNC_EN_CPUEN, + 0, 1); + + /* Fill the default value of host_CPU handshake field. */ + rtwn_write_1(sc, R92C_MCUFWDL, + R92C_MCUFWDL_EN | R92C_MCUFWDL_CHKSUM_RPT); + + rtwn_setbits_1(sc, R92C_GPIO_IO_SEL, 0xf0, 0xc0); + + /* GPIO 11 input mode, 10...8 output mode. */ + rtwn_write_1(sc, R92C_MAC_PINMUX_CFG, 0x07); + + /* GPIO 7...0, output = input */ + rtwn_write_1(sc, R92C_GPIO_OUT, 0); + + /* GPIO 7...0 output mode. */ + rtwn_write_1(sc, R92C_GPIO_IOSEL, 0xff); + + rtwn_write_1(sc, R92C_GPIO_MOD, 0); + + /* Turn on ZCD. */ + rtwn_setbits_2(sc, 0x014, 0, 0x0180); + + /* Force PFM mode. */ + rtwn_setbits_1(sc, R92C_SPS0_CTRL + 1, 0x01, 0); + + /* LDO sleep mode. */ + rtwn_setbits_1(sc, R92C_LPLDO_CTRL, 0, R92C_LPLDO_CTRL_SLEEP); + + /* ANA clock = 500k. */ + rtwn_setbits_1(sc, R92C_SYS_CLKR, R92C_SYS_CLKR_ANA8M, 0); + + /* SOP option to disable BG/MB. */ + rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, 0xff, + R92C_APS_FSMCO_SOP_RCK, 3); + + /* Disable RFC_0. */ + rtwn_setbits_1(sc, R92C_RF_CTRL, R92C_RF_CTRL_RSTB, 0); + + /* Disable RFC_1. */ + rtwn_setbits_1(sc, R12A_RF_B_CTRL, R92C_RF_CTRL_RSTB, 0); + + /* Enable WL suspend. */ + rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, 0, R92C_APS_FSMCO_AFSM_HSUS, + 1); + + rs->rs_flags &= ~R12A_IQK_RUNNING; +} + +void +r12a_init_intr(struct rtwn_softc *sc) +{ + rtwn_write_4(sc, R88E_HIMR, 0); + rtwn_write_4(sc, R88E_HIMRE, 0); +} + +void +r12a_init_antsel(struct rtwn_softc *sc) +{ + uint32_t reg; + + rtwn_write_1(sc, R92C_LEDCFG2, 0x82); + rtwn_bb_setbits(sc, R92C_FPGA0_RFPARAM(0), 0, 0x2000); + reg = rtwn_bb_read(sc, R92C_FPGA0_RFIFACEOE(0)); + sc->sc_ant = MS(reg, R92C_FPGA0_RFIFACEOE0_ANT); +} diff --git a/sys/dev/rtwn/rtl8812a/r12a_led.c b/sys/dev/rtwn/rtl8812a/r12a_led.c new file mode 100644 index 000000000000..aa67c67b97a7 --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a_led.c @@ -0,0 +1,72 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include +#include + + +void +r12a_set_led(struct rtwn_softc *sc, int led, int on) +{ + /* XXX assume led #0 == LED_LINK */ + /* XXX antenna diversity */ + + if (led == RTWN_LED_LINK) { + rtwn_setbits_1(sc, R92C_LEDCFG0, 0x8f, + R12A_LEDCFG2_ENA | (on ? 0 : R92C_LEDCFG0_DIS)); + sc->ledlink = on; /* Save LED state. */ + } + + /* XXX leds #1/#2 ? */ +} diff --git a/sys/dev/rtwn/rtl8812a/r12a_priv.h b/sys/dev/rtwn/rtl8812a/r12a_priv.h new file mode 100644 index 000000000000..8df869687344 --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a_priv.h @@ -0,0 +1,852 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef R12A_PRIV_H +#define R12A_PRIV_H + +/* + * MAC initialization values. + */ +#define RTL8812AU_MAC_PROG_START \ + { 0x010, 0x0c }, + +#define RTL8812AU_MAC_PROG_END \ + { 0x025, 0x0f }, { 0x072, 0x00 }, { 0x420, 0x80 }, { 0x428, 0x0a }, \ + { 0x429, 0x10 }, { 0x430, 0x00 }, { 0x431, 0x00 }, { 0x432, 0x00 }, \ + { 0x433, 0x01 }, { 0x434, 0x04 }, { 0x435, 0x05 }, { 0x436, 0x07 }, \ + { 0x437, 0x08 }, { 0x43c, 0x04 }, { 0x43d, 0x05 }, { 0x43e, 0x07 }, \ + { 0x43f, 0x08 }, { 0x440, 0x5d }, { 0x441, 0x01 }, { 0x442, 0x00 }, \ + { 0x444, 0x10 }, { 0x445, 0x00 }, { 0x446, 0x00 }, { 0x447, 0x00 }, \ + { 0x448, 0x00 }, { 0x449, 0xf0 }, { 0x44a, 0x0f }, { 0x44b, 0x3e }, \ + { 0x44c, 0x10 }, { 0x44d, 0x00 }, { 0x44e, 0x00 }, { 0x44f, 0x00 }, \ + { 0x450, 0x00 }, { 0x451, 0xf0 }, { 0x452, 0x0f }, { 0x453, 0x00 }, \ + { 0x45b, 0x80 }, { 0x460, 0x66 }, { 0x461, 0x66 }, { 0x4c8, 0xff }, \ + { 0x4c9, 0x08 }, { 0x4cc, 0xff }, { 0x4cd, 0xff }, { 0x4ce, 0x01 }, \ + { 0x500, 0x26 }, { 0x501, 0xa2 }, { 0x502, 0x2f }, { 0x503, 0x00 }, \ + { 0x504, 0x28 }, { 0x505, 0xa3 }, { 0x506, 0x5e }, { 0x507, 0x00 }, \ + { 0x508, 0x2b }, { 0x509, 0xa4 }, { 0x50a, 0x5e }, { 0x50b, 0x00 }, \ + { 0x50c, 0x4f }, { 0x50d, 0xa4 }, { 0x50e, 0x00 }, { 0x50f, 0x00 }, \ + { 0x512, 0x1c }, { 0x514, 0x0a }, { 0x516, 0x0a }, { 0x525, 0x4f }, \ + { 0x550, 0x10 }, { 0x551, 0x10 }, { 0x559, 0x02 }, { 0x55c, 0x50 }, \ + { 0x55d, 0xff }, { 0x604, 0x09 }, { 0x605, 0x30 }, { 0x607, 0x03 }, \ + { 0x608, 0x0e }, { 0x609, 0x2a }, { 0x620, 0xff }, { 0x621, 0xff }, \ + { 0x622, 0xff }, { 0x623, 0xff }, { 0x624, 0xff }, { 0x625, 0xff }, \ + { 0x626, 0xff }, { 0x627, 0xff }, { 0x638, 0x50 }, { 0x63c, 0x0a }, \ + { 0x63d, 0x0a }, { 0x63e, 0x0e }, { 0x63f, 0x0e }, { 0x640, 0x80 }, \ + { 0x642, 0x40 }, { 0x643, 0x00 }, { 0x652, 0xc8 }, { 0x66e, 0x05 }, \ + { 0x700, 0x21 }, { 0x701, 0x43 }, { 0x702, 0x65 }, { 0x703, 0x87 }, \ + { 0x708, 0x21 }, { 0x709, 0x43 }, { 0x70a, 0x65 }, { 0x70b, 0x87 }, \ + { 0x718, 0x40 } + +static const struct rtwn_mac_prog rtl8812au_mac_no_ext_pa_lna[] = { + RTL8812AU_MAC_PROG_START + { 0x11, 0x66 }, + RTL8812AU_MAC_PROG_END +}, rtl8812au_mac[] = { + RTL8812AU_MAC_PROG_START + { 0x11, 0x5a }, + RTL8812AU_MAC_PROG_END +}; + + +/* + * Baseband initialization values. + */ +#define R12A_COND_GPA 0x01 +#define R12A_COND_APA 0x02 +#define R12A_COND_GLNA 0x04 +#define R12A_COND_ALNA 0x08 +#define R12A_COND_TYPE(t) ((t) << 4) + +static const uint16_t rtl8812au_bb_regs0[] = { + 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, 0x820, 0x824, + 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, 0x840, 0x844, 0x848, + 0x84c, 0x850, 0x854, 0x858, 0x85c, 0x860, 0x864, 0x868, 0x86c, + 0x870, 0x874, 0x878, 0x87c, 0x8a0, 0x8a4, 0x8a8, 0x8ac, 0x8b0, + 0x8b4, 0x8b8, 0x8bc, 0x8c0, 0x8c4, 0x8c8, 0x8cc, 0x8d0, 0x8dc, + 0x8d4, 0x8d8, 0x8f8, 0x8fc, 0x900, 0x90c, 0x910, 0x914, 0x918, + 0x91c, 0x920, 0x924, 0x928, 0x92c, 0x930, 0x934, 0x960, 0x964, + 0x968, 0x96c, 0x970, 0x978, 0x97c, 0x980, 0x984, 0x988, 0x990, + 0x994, 0x998, 0x99c, 0x9a0, 0x9a4, 0x9a8, 0x9ac, 0x9b0, 0x9b4, + 0x9b8, 0x9bc, 0x9d0, 0x9d4, 0x9d8, 0x9dc, 0x9e4, 0x9e8, 0xa00, + 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c, 0xa20, 0xa24, + 0xa28, 0xa2c, 0xa70, 0xa74, 0xa78, 0xa7c, 0xa80, 0xa84, 0xb00, + 0xb04, 0xb08, 0xb0c, 0xb10, 0xb14, 0xb18, 0xb1c, 0xb20, 0xb24, + 0xb28, 0xb2c, 0xb30, 0xb34, 0xb38, 0xb3c, 0xb40, 0xb44, 0xb48, + 0xb4c, 0xb50, 0xb54, 0xb58, 0xb5c, 0xc00, 0xc04, 0xc08, 0xc0c, + 0xc10, 0xc14, 0xc1c, 0xc20, 0xc24, 0xc28, 0xc2c, 0xc30, 0xc34, + 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, 0xc54, 0xc58, + 0xc5c, 0xc60, 0xc64 +}, rtl8812au_bb_regs1[] = { + 0xc68 +}, rtl8812au_bb_regs2[] = { + 0xc6c, 0xc70, 0xc74, 0xc78, 0xc7c, 0xc80, 0xc84, 0xc94, 0xc98, + 0xc9c, 0xca0, 0xca4, 0xca8, 0xcb0, 0xcb4, 0xcb8, 0xe00, 0xe04, + 0xe08, 0xe0c, 0xe10, 0xe14, 0xe1c, 0xe20, 0xe24, 0xe28, 0xe2c, + 0xe30, 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44, 0xe48, 0xe4c, 0xe50, + 0xe54, 0xe58, 0xe5c, 0xe60, 0xe64, 0xe68, 0xe6c, 0xe70, 0xe74, + 0xe78, 0xe7c, 0xe80, 0xe84, 0xe94, 0xe98, 0xe9c, 0xea0, 0xea4, + 0xea8, 0xeb0, 0xeb4, 0xeb8 +}; + +static const uint32_t rtl8812au_bb_vals0[] = { + 0x8020d010, 0x080112e0, 0x0e028233, 0x12131113, 0x20101263, + 0x020c3d10, 0x03a00385, 0x00000000, 0x00030fe0, 0x00000000, + 0x002083dd, 0x2eaaeeb8, 0x0037a706, 0x06c89b44, 0x0000095b, + 0xc0000001, 0x40003cde, 0x6210ff8b, 0x6cfdffb8, 0x28874706, + 0x0001520c, 0x8060e000, 0x74210168, 0x6929c321, 0x79727432, + 0x8ca7a314, 0x338c2878, 0x03333333, 0x31602c2e, 0x00003152, + 0x000fc000, 0x00000013, 0x7f7f7f7f, 0xa202033e, 0x0ff0fa0a, + 0x00000600, 0x000fc080, 0x6c0057ff, 0x4ca520a3, 0x27f00020, + 0x00000000, 0x00012d69, 0x08248492, 0x0000b800, 0x00000000, + 0x940008a0, 0x290b5612, 0x400002c0, 0x00000000, 0x00000701, + 0x00000000, 0x0000fc00, 0x00000404, 0x1c1028c0, 0x64b11a1c, + 0xe0767233, 0x055aa500, 0x00000004, 0xfffe0000, 0xfffffffe, + 0x001fffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x801fffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x27100000, 0xffff0100, 0xffffff5c, 0xffffffff, + 0x000000ff, 0x00080080, 0x00000000, 0x00000000, 0x81081008, + 0x00000000, 0x01081008, 0x01081008, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000003, 0x000002d5, 0x00d047c8, + 0x01ff000c, 0x8c838300, 0x2e7f000f, 0x9500bb78, 0x11144028, + 0x00881117, 0x89140f00, 0x1a1b0000, 0x090e1217, 0x00000305, + 0x00900000, 0x101fff00, 0x00000008, 0x00000900, 0x225b0606, + 0x218075b2, 0x001f8c80, 0x03100000, 0x0000b000, 0xae0201eb, + 0x01003207, 0x00009807, 0x01000000, 0x00000002, 0x00000002, + 0x0000001f, 0x03020100, 0x07060504, 0x0b0a0908, 0x0f0e0d0c, + 0x13121110, 0x17161514, 0x0000003a, 0x00000000, 0x00000000, + 0x13000032, 0x48080000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000007, 0x00042020, 0x80410231, 0x00000000, + 0x00000100, 0x01000000, 0x40000003, 0x12121212, 0x12121212, + 0x12121212, 0x12121212, 0x12121212, 0x12121212, 0x12121212, + 0x12121212, 0x12121212, 0x12121212, 0x12121212, 0x12121212, + 0x00000020, 0x0008121c, 0x30000c1c, 0x00000058, 0x34344443, + 0x07003333 +}, rtl8812au_bb_vals1_ext_pa_lna[] = { + 0x59791979 +}, rtl8812au_bb_vals1[] = { + 0x59799979 +}, rtl8812au_bb_vals2[] = { + 0x59795979, 0x19795979, 0x19795979, 0x19791979, 0x19791979, + 0x19791979, 0x19791979, 0x0100005c, 0x00000000, 0x00000000, + 0x00000029, 0x08040201, 0x80402010, 0x77547777, 0x00000077, + 0x00508242, 0x00000007, 0x00042020, 0x80410231, 0x00000000, + 0x00000100, 0x01000000, 0x40000003, 0x12121212, 0x12121212, + 0x12121212, 0x12121212, 0x12121212, 0x12121212, 0x12121212, + 0x12121212, 0x12121212, 0x12121212, 0x12121212, 0x12121212, + 0x00000020, 0x0008121c, 0x30000c1c, 0x00000058, 0x34344443, + 0x07003333, 0x59791979, 0x59795979, 0x19795979, 0x19795979, + 0x19791979, 0x19791979, 0x19791979, 0x19791979, 0x0100005c, + 0x00000000, 0x00000000, 0x00000029, 0x08040201, 0x80402010, + 0x77547777, 0x00000077, 0x00508242 +}; + +static const struct rtwn_bb_prog rtl8812au_bb[] = { + { + nitems(rtl8812au_bb_regs0), + rtl8812au_bb_regs0, + rtl8812au_bb_vals0, + { 0 }, + NULL + }, + /* + * Devices with: + * * External 2GHz PA, type 0; + * * External 5GHz PA, type 0 or 5; + * * External 2GHz LNA, type 0 or 5; + * * External 5GHz LNA, type 0; + */ + { + nitems(rtl8812au_bb_regs1), + rtl8812au_bb_regs1, + rtl8812au_bb_vals1_ext_pa_lna, + { + R12A_COND_GPA | R12A_COND_GLNA | + R12A_COND_APA | R12A_COND_ALNA | + R12A_COND_TYPE(0x0), + R12A_COND_APA | R12A_COND_GLNA | + R12A_COND_TYPE(0x5), 0 + }, + /* + * Others. + */ + &(const struct rtwn_bb_prog){ + nitems(rtl8812au_bb_regs1), + rtl8812au_bb_regs1, + rtl8812au_bb_vals1, + { 0 }, + NULL + } + }, + { + nitems(rtl8812au_bb_regs2), + rtl8812au_bb_regs2, + rtl8812au_bb_vals2, + { 0 }, + NULL + } +}; + + +static const uint32_t rtl8812au_agc_vals0_lna_g0[] = { + 0xfc000001, 0xfb020001, 0xfa040001, 0xf9060001, 0xf8080001, + 0xf70a0001, 0xf60c0001, 0xf50e0001, 0xf4100001, 0xf3120001, + 0xf2140001, 0xf1160001, 0xf0180001, 0xef1a0001, 0xee1c0001, + 0xed1e0001, 0xec200001, 0xeb220001, 0xea240001, 0xcd260001, + 0xcc280001, 0xcb2a0001, 0xca2c0001, 0xc92e0001, 0xc8300001, + 0xa6320001, 0xa5340001, 0xa4360001, 0xa3380001, 0xa23a0001, + 0x883c0001, 0x873e0001, 0x86400001, 0x85420001, 0x84440001, + 0x83460001, 0x82480001, 0x814a0001, 0x484c0001, 0x474e0001, + 0x46500001, 0x45520001, 0x44540001, 0x43560001, 0x42580001, + 0x415a0001, 0x255c0001, 0x245e0001, 0x23600001, 0x22620001, + 0x21640001, 0x21660001, 0x21680001, 0x216a0001, 0x216c0001, + 0x216e0001, 0x21700001, 0x21720001, 0x21740001, 0x21760001, + 0x21780001, 0x217a0001, 0x217c0001, 0x217e0001 +}, rtl8812au_agc_vals0_lna_g5[] = { + 0xf9000001, 0xf8020001, 0xf7040001, 0xf6060001, 0xf5080001, + 0xf40a0001, 0xf30c0001, 0xf20e0001, 0xf1100001, 0xf0120001, + 0xef140001, 0xee160001, 0xed180001, 0xec1a0001, 0xeb1c0001, + 0xea1e0001, 0xcd200001, 0xcc220001, 0xcb240001, 0xca260001, + 0xc9280001, 0xc82a0001, 0xc72c0001, 0xc62e0001, 0xa5300001, + 0xa4320001, 0xa3340001, 0xa2360001, 0x88380001, 0x873a0001, + 0x863c0001, 0x853e0001, 0x84400001, 0x83420001, 0x82440001, + 0x81460001, 0x48480001, 0x474a0001, 0x464c0001, 0x454e0001, + 0x44500001, 0x43520001, 0x42540001, 0x41560001, 0x25580001, + 0x245a0001, 0x235c0001, 0x225e0001, 0x21600001, 0x21620001, + 0x21640001, 0x21660001, 0x21680001, 0x216a0001, 0x236c0001, + 0x226e0001, 0x21700001, 0x21720001, 0x21740001, 0x21760001, + 0x21780001, 0x217a0001, 0x217c0001, 0x217e0001 +}, rtl8812au_agc_vals0[] = { + 0xff000001, 0xff020001, 0xff040001, 0xff060001, 0xff080001, + 0xfe0a0001, 0xfd0c0001, 0xfc0e0001, 0xfb100001, 0xfa120001, + 0xf9140001, 0xf8160001, 0xf7180001, 0xf61a0001, 0xf51c0001, + 0xf41e0001, 0xf3200001, 0xf2220001, 0xf1240001, 0xf0260001, + 0xef280001, 0xee2a0001, 0xed2c0001, 0xec2e0001, 0xeb300001, + 0xea320001, 0xe9340001, 0xe8360001, 0xe7380001, 0xe63a0001, + 0xe53c0001, 0xc73e0001, 0xc6400001, 0xc5420001, 0xc4440001, + 0xc3460001, 0xc2480001, 0xc14a0001, 0xa74c0001, 0xa64e0001, + 0xa5500001, 0xa4520001, 0xa3540001, 0xa2560001, 0xa1580001, + 0x675a0001, 0x665c0001, 0x655e0001, 0x64600001, 0x63620001, + 0x48640001, 0x47660001, 0x46680001, 0x456a0001, 0x446c0001, + 0x436e0001, 0x42700001, 0x41720001, 0x41740001, 0x41760001, + 0x41780001, 0x417a0001, 0x417c0001, 0x417e0001 +}, rtl8812au_agc_vals1_lna_a0[] = { + 0xfc800001, 0xfb820001, 0xfa840001, 0xf9860001, 0xf8880001, + 0xf78a0001, 0xf68c0001, 0xf58e0001, 0xf4900001, 0xf3920001, + 0xf2940001, 0xf1960001, 0xf0980001, 0xef9a0001, 0xee9c0001, + 0xed9e0001, 0xeca00001, 0xeba20001, 0xeaa40001, 0xe9a60001, + 0xe8a80001, 0xe7aa0001, 0xe6ac0001, 0xe5ae0001, 0xe4b00001, + 0xe3b20001, 0xa8b40001, 0xa7b60001, 0xa6b80001, 0xa5ba0001, + 0xa4bc0001, 0xa3be0001, 0xa2c00001, 0xa1c20001, 0x68c40001, + 0x67c60001, 0x66c80001, 0x65ca0001, 0x64cc0001, 0x47ce0001, + 0x46d00001, 0x45d20001, 0x44d40001, 0x43d60001, 0x42d80001, + 0x08da0001, 0x07dc0001, 0x06de0001, 0x05e00001, 0x04e20001, + 0x03e40001, 0x02e60001, 0x01e80001, 0x01ea0001, 0x01ec0001, + 0x01ee0001, 0x01f00001, 0x01f20001, 0x01f40001, 0x01f60001, + 0x01f80001, 0x01fa0001, 0x01fc0001, 0x01fe0001 +}, rtl8812au_agc_vals1[] = { + 0xff800001, 0xff820001, 0xff840001, 0xfe860001, 0xfd880001, + 0xfc8a0001, 0xfb8c0001, 0xfa8e0001, 0xf9900001, 0xf8920001, + 0xf7940001, 0xf6960001, 0xf5980001, 0xf49a0001, 0xf39c0001, + 0xf29e0001, 0xf1a00001, 0xf0a20001, 0xefa40001, 0xeea60001, + 0xeda80001, 0xecaa0001, 0xebac0001, 0xeaae0001, 0xe9b00001, + 0xe8b20001, 0xe7b40001, 0xe6b60001, 0xe5b80001, 0xe4ba0001, + 0xe3bc0001, 0xa8be0001, 0xa7c00001, 0xa6c20001, 0xa5c40001, + 0xa4c60001, 0xa3c80001, 0xa2ca0001, 0xa1cc0001, 0x68ce0001, + 0x67d00001, 0x66d20001, 0x65d40001, 0x64d60001, 0x47d80001, + 0x46da0001, 0x45dc0001, 0x44de0001, 0x43e00001, 0x42e20001, + 0x08e40001, 0x07e60001, 0x06e80001, 0x05ea0001, 0x04ec0001, + 0x03ee0001, 0x02f00001, 0x01f20001, 0x01f40001, 0x01f60001, + 0x01f80001, 0x01fa0001, 0x01fc0001, 0x01fe0001 +}; + +static const struct rtwn_agc_prog rtl8812au_agc[] = { + /* + * External 2GHz LNA (type 0). + */ + { + nitems(rtl8812au_agc_vals0_lna_g0), + rtl8812au_agc_vals0_lna_g0, + { R12A_COND_GLNA | R12A_COND_TYPE(0x0), 0 }, + /* + * External 2GHz LNA (type 5). + */ + &(const struct rtwn_agc_prog){ + nitems(rtl8812au_agc_vals0_lna_g5), + rtl8812au_agc_vals0_lna_g5, + { R12A_COND_GLNA | R12A_COND_TYPE(0x5), 0 }, + /* + * Others. + */ + &(const struct rtwn_agc_prog){ + nitems(rtl8812au_agc_vals0), + rtl8812au_agc_vals0, + { 0 }, + NULL + } + } + }, + /* + * External 5GHz LNA (type 0). + */ + { + nitems(rtl8812au_agc_vals1_lna_a0), + rtl8812au_agc_vals1_lna_a0, + { R12A_COND_ALNA | R12A_COND_TYPE(0x0), 0 }, + /* + * Others. + */ + &(const struct rtwn_agc_prog){ + nitems(rtl8812au_agc_vals1), + rtl8812au_agc_vals1, + { 0 }, + NULL + } + } +}; + +/* + * RF initialization values. + */ +static const uint8_t rtl8812au_rf0_regs0[] = { + 0x00, 0x18, 0x56, 0x66, 0x1e, 0x89 +}, rtl8812au_rf0_regs1[] = { + 0x86 +}, rtl8812au_rf0_regs2[] = { + 0x8b +}, rtl8812au_rf0_regs3[] = { + 0xb1, 0xb3, 0xb4, 0xba, 0x18, 0xef +}, rtl8812au_rf0_regs4[] = { + 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b +}, rtl8812au_rf0_regs5[] = { + 0xef, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, + 0x34 +}, rtl8812au_rf0_regs6[] = { + 0xef, 0xef, 0xdf, 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0xef, + 0x51, 0x52, 0x53, 0x54, 0xef, 0x08, 0x18, 0xef, 0x3a, 0x3b, 0x3c, + 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, + 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, + 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, + 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, + 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, + 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, + 0x3a, 0x3b, 0x3c, 0xef +}, rtl8812au_rf0_regs7[] = { + 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, + 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, + 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34 +}, rtl8812au_rf0_regs8[] = { + 0xef, 0x18, 0xef, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, + 0x35, 0xef, 0x18, 0xef, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, + 0x36, 0x36, 0x36, 0x36, 0x36, 0xef, 0xef, 0x3c, 0x3c, 0x3c, +}, rtl8812au_rf0_regs9[] = { + 0xef, 0x18, 0xef, 0xdf, 0x1f +}, rtl8812au_rf0_regs10[] = { + 0x61, 0x62, 0x63, 0x64, 0x65 +}, rtl8812au_rf0_regs11[] = { + 0x08, 0x1c, 0xb4, 0x18, 0xfe, 0xfe, 0xfe, 0xfe, 0xb4, 0x18 +}, rtl8812au_rf1_regs0[] = { + 0x56, 0x66, 0x89 +}, rtl8812au_rf1_regs3[] = { + 0xb1, 0xb3, 0xb4, 0xba, 0x18, 0xef +}; + +static const uint32_t rtl8812au_rf0_vals0[] = { + 0x10000, 0x1712a, 0x51cf2, 0x40000, 0x80000, 0x00080 +}, rtl8812au_rf0_vals1_lna_g0_g5[] = { + 0x14b3a +}, rtl8812au_rf0_vals1[] = { + 0x14b38 +}, rtl8812au_rf0_vals2_lna_a0[] = { + 0x80180 +}, rtl8812au_rf0_vals2[] = { + 0x87180 +}, rtl8812au_rf0_vals3[] = { + 0x1fc1a, 0xf0810, 0x1a78d, 0x86180, 0x00006, 0x02000 +}, rtl8812au_rf0_vals4_lna_g0_g5[] = { + 0x3f218, 0x30a58, 0x2fa58, 0x22590, 0x1fa50, 0x10248, 0x08240 +}, rtl8812au_rf0_vals4[] = { + 0x38a58, 0x37a58, 0x2a590, 0x27a50, 0x18248, 0x10240, 0x08240 +}, rtl8812au_rf0_vals5_pa_g0[] = { + 0x00100, 0x0a4ee, 0x09076, 0x08073, 0x07070, 0x0606d, 0x0506a, + 0x04049, 0x03046, 0x02028, 0x01025, 0x00022 +}, rtl8812au_rf0_vals5[] = { + 0x00100, 0x0adf4, 0x09df1, 0x08dee, 0x07deb, 0x06de8, 0x05de5, + 0x04de2, 0x03ce6, 0x024e7, 0x014e4, 0x004e1 +}, rtl8812au_rf0_vals6[] = { + 0x00000, 0x020a2, 0x00080, 0x00192, 0x08192, 0x10192, 0x00024, + 0x08024, 0x10024, 0x18024, 0x00000, 0x00c21, 0x006d9, 0xfc649, + 0x0017e, 0x00002, 0x08400, 0x1712a, 0x01000, 0x00080, 0x3a02c, + 0x04000, 0x00400, 0x3202c, 0x10000, 0x000a0, 0x2b064, 0x04000, + 0x000d8, 0x23070, 0x04000, 0x00468, 0x1b870, 0x10000, 0x00098, + 0x12085, 0xe4000, 0x00418, 0x0a080, 0xf0000, 0x00418, 0x02080, + 0x10000, 0x00080, 0x7a02c, 0x04000, 0x00400, 0x7202c, 0x10000, + 0x000a0, 0x6b064, 0x04000, 0x000d8, 0x63070, 0x04000, 0x00468, + 0x5b870, 0x10000, 0x00098, 0x52085, 0xe4000, 0x00418, 0x4a080, + 0xf0000, 0x00418, 0x42080, 0x10000, 0x00080, 0xba02c, 0x04000, + 0x00400, 0xb202c, 0x10000, 0x000a0, 0xab064, 0x04000, 0x000d8, + 0xa3070, 0x04000, 0x00468, 0x9b870, 0x10000, 0x00098, 0x92085, + 0xe4000, 0x00418, 0x8a080, 0xf0000, 0x00418, 0x82080, 0x10000, + 0x01100 +}, rtl8812au_rf0_vals7_pa_a0[] = { + 0x4a0b2, 0x490af, 0x48070, 0x4706d, 0x46050, 0x4504d, 0x4404a, + 0x43047, 0x4200a, 0x41007, 0x40004, 0x2a0b2, 0x290af, 0x28070, + 0x2706d, 0x26050, 0x2504d, 0x2404a, 0x23047, 0x2200a, 0x21007, + 0x20004, 0x0a0b2, 0x090af, 0x08070, 0x0706d, 0x06050, 0x0504d, + 0x0404a, 0x03047, 0x0200a, 0x01007, 0x00004 +}, rtl8812au_rf0_vals7_pa_a5[] = { + 0x4a0b2, 0x490af, 0x48070, 0x4706d, 0x4604d, 0x4504a, 0x44047, + 0x43044, 0x42007, 0x41004, 0x40001, 0x2a0b4, 0x290b1, 0x28072, + 0x2706f, 0x2604f, 0x2504c, 0x24049, 0x23046, 0x22009, 0x21006, + 0x20003, 0x0a0b2, 0x090af, 0x08070, 0x0706d, 0x0604d, 0x0504a, + 0x04047, 0x03044, 0x02007, 0x01004, 0x00001 +}, rtl8812au_rf0_vals7[] = { + 0x4adf5, 0x49df2, 0x48def, 0x47dec, 0x46de9, 0x45de6, 0x44de3, + 0x438c8, 0x428c5, 0x418c2, 0x408c0, 0x2adf5, 0x29df2, 0x28def, + 0x27dec, 0x26de9, 0x25de6, 0x24de3, 0x238c8, 0x228c5, 0x218c2, + 0x208c0, 0x0aff7, 0x09df7, 0x08df4, 0x07df1, 0x06dee, 0x05deb, + 0x04de8, 0x038cc, 0x028c9, 0x018c6, 0x008c3 +}, rtl8812au_rf0_vals8_pa_a0_a5[] = { + 0x00000, 0x1712a, 0x00040, 0x001d4, 0x081d4, 0x101d4, 0x201b4, + 0x281b4, 0x301b4, 0x401b4, 0x481b4, 0x501b4, 0x00000, 0x1712a, + 0x00010, 0x04bfb, 0x0cbfb, 0x14bfb, 0x1cbfb, 0x24f4b, 0x2cf4b, + 0x34f4b, 0x3cf4b, 0x44f4b, 0x4cf4b, 0x54f4b, 0x5cf4b, 0x00000, + 0x00008, 0x002cc, 0x00522, 0x00902 +}, rtl8812au_rf0_vals8[] = { + 0x00000, 0x1712a, 0x00040, 0x00188, 0x08147, 0x10147, 0x201d7, + 0x281d7, 0x301d7, 0x401d8, 0x481d8, 0x501d8, 0x00000, 0x1712a, + 0x00010, 0x84eb4, 0x8cc35, 0x94c35, 0x9cc35, 0xa4c35, 0xacc35, + 0xb4c35, 0xbcc35, 0xc4c34, 0xccc35, 0xd4c35, 0xdcc35, 0x00000, + 0x00008, 0x002a8, 0x005a2, 0x00880 +}, rtl8812au_rf0_vals9[] = { + 0x00000, 0x1712a, 0x00002, 0x00080, 0x00064 +}, rtl8812au_rf0_vals10_pa_a0[] = { + 0xfdd43, 0x38f4b, 0x32117, 0x194ac, 0x931d1 +}, rtl8812au_rf0_vals10_pa_a5[] = { + 0xfdd43, 0x38f4b, 0x32117, 0x194ac, 0x931d2 +}, rtl8812au_rf0_vals10[] = { + 0xe5d53, 0x38fcd, 0x114eb, 0x196ac, 0x911d7 +}, rtl8812au_rf0_vals11[] = { + 0x08400, 0x739d2, 0x1e78d, 0x1f12a, 0x0c350, 0x0c350, 0x0c350, + 0x0c350, 0x1a78d, 0x1712a +}, rtl8812au_rf1_vals0[] = { + 0x51cf2, 0x40000, 0x00080 +}, rtl8812au_rf1_vals3[] = { + 0x1fc1a, 0xf0810, 0x1a78d, 0x86180, 0x00006, 0x02000 +}, rtl8812au_rf1_vals6[] = { + 0x00000, 0x020a2, 0x00080, 0x00192, 0x08192, 0x10192, 0x00024, + 0x08024, 0x10024, 0x18024, 0x00000, 0x00c21, 0x006d9, 0xfc649, + 0x0017e, 0x00002, 0x08400, 0x1712a, 0x01000, 0x00080, 0x3a02c, + 0x04000, 0x00400, 0x3202c, 0x10000, 0x000a0, 0x2b064, 0x04000, + 0x000d8, 0x23070, 0x04000, 0x00468, 0x1b870, 0x10000, 0x00098, + 0x12085, 0xe4000, 0x00418, 0x0a080, 0xf0000, 0x00418, 0x02080, + 0x10000, 0x00080, 0x7a02c, 0x04000, 0x00400, 0x7202c, 0x10000, + 0x000a0, 0x6b064, 0x04000, 0x000d8, 0x63070, 0x04000, 0x00468, + 0x5b870, 0x10000, 0x00098, 0x52085, 0xe4000, 0x00418, 0x4a080, + 0xf0000, 0x00418, 0x42080, 0x10000, 0x00080, 0xba02c, 0x04000, + 0x00400, 0xb202c, 0x10000, 0x000a0, 0xab064, 0x04000, 0x000d8, + 0xa3070, 0x04000, 0x00468, 0x9b870, 0x10000, 0x00098, 0x92085, + 0xe4000, 0x00418, 0x8a080, 0xf0000, 0x00418, 0x82080, 0x10000, + 0x01100 +}, rtl8812au_rf1_vals7_pa_a5[] = { + 0x4a0b1, 0x490ae, 0x4806f, 0x4706c, 0x4604c, 0x45049, 0x44046, + 0x43043, 0x42006, 0x41003, 0x40000, 0x2a0b3, 0x290b0, 0x28071, + 0x2706e, 0x2604e, 0x2504b, 0x24048, 0x23045, 0x22008, 0x21005, + 0x20002, 0x0a0b3, 0x090b0, 0x08070, 0x0706d, 0x0604d, 0x0504a, + 0x04047, 0x03044, 0x02007, 0x01004, 0x00001 +}, rtl8812au_rf1_vals8_pa_a0_a5[] = { + 0x00000, 0x1712a, 0x00040, 0x001c5, 0x081c5, 0x101c5, 0x20174, + 0x28174, 0x30174, 0x40185, 0x48185, 0x50185, 0x00000, 0x1712a, + 0x00010, 0x05b8b, 0x0db8b, 0x15b8b, 0x1db8b, 0x262db, 0x2e2db, + 0x362db, 0x3e2db, 0x4553b, 0x4d53b, 0x5553b, 0x5d53b, 0x00000, + 0x00008, 0x002dc, 0x00524, 0x00902 +}, rtl8812au_rf1_vals10_pa_g0_a0[] = { + 0xeac43, 0x38f47, 0x31157, 0x1c4ac, 0x931d1 +}, rtl8812au_rf1_vals10_pa_a5[] = { + 0xeac43, 0x38f47, 0x31157, 0x1c4ac, 0x931d2 +}; + +static const struct rtwn_rf_prog rtl8812au_rf[] = { + /* RF chain 0. */ + { + nitems(rtl8812au_rf0_regs0), + rtl8812au_rf0_regs0, + rtl8812au_rf0_vals0, + { 0 }, + NULL + }, + /* External 2GHz LNA, type 0 or 5. */ + { + nitems(rtl8812au_rf0_regs1), + rtl8812au_rf0_regs1, + rtl8812au_rf0_vals1_lna_g0_g5, + { + R12A_COND_GLNA | R12A_COND_TYPE(0x0), + R12A_COND_GLNA | R12A_COND_TYPE(0x5), 0 + }, + /* Others. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8812au_rf0_regs1), + rtl8812au_rf0_regs1, + rtl8812au_rf0_vals1, + { 0 }, + NULL + } + }, + /* External 5GHz LNA, type 0. */ + { + nitems(rtl8812au_rf0_regs2), + rtl8812au_rf0_regs2, + rtl8812au_rf0_vals2_lna_a0, + { R12A_COND_ALNA | R12A_COND_TYPE(0x0), 0 }, + /* Others. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8812au_rf0_regs2), + rtl8812au_rf0_regs2, + rtl8812au_rf0_vals2, + { 0 }, + NULL + } + }, + { + nitems(rtl8812au_rf0_regs3), + rtl8812au_rf0_regs3, + rtl8812au_rf0_vals3, + { 0 }, + NULL + }, + /* External 2GHz LNA, type 0 or 5. */ + { + nitems(rtl8812au_rf0_regs4), + rtl8812au_rf0_regs4, + rtl8812au_rf0_vals4_lna_g0_g5, + { + R12A_COND_GLNA | R12A_COND_TYPE(0x0), + R12A_COND_GLNA | R12A_COND_TYPE(0x5), 0 + }, + /* Others */ + &(const struct rtwn_rf_prog){ + nitems(rtl8812au_rf0_regs4), + rtl8812au_rf0_regs4, + rtl8812au_rf0_vals4, + { 0 }, + NULL + } + }, + /* External 2GHz PA, type 0. */ + { + nitems(rtl8812au_rf0_regs5), + rtl8812au_rf0_regs5, + rtl8812au_rf0_vals5_pa_g0, + { R12A_COND_GPA | R12A_COND_TYPE(0x0), 0 }, + /* Others. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8812au_rf0_regs5), + rtl8812au_rf0_regs5, + rtl8812au_rf0_vals5, + { 0 }, + NULL + } + }, + { + nitems(rtl8812au_rf0_regs6), + rtl8812au_rf0_regs6, + rtl8812au_rf0_vals6, + { 0 }, + NULL + }, + /* External 5GHz PA, type 0. */ + { + nitems(rtl8812au_rf0_regs7), + rtl8812au_rf0_regs7, + rtl8812au_rf0_vals7_pa_a0, + { R12A_COND_APA | R12A_COND_TYPE(0x0), 0 }, + /* External 5GHz PA, type 5. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8812au_rf0_regs7), + rtl8812au_rf0_regs7, + rtl8812au_rf0_vals7_pa_a5, + { R12A_COND_APA | R12A_COND_TYPE(0x5), 0 }, + /* Others. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8812au_rf0_regs7), + rtl8812au_rf0_regs7, + rtl8812au_rf0_vals7, + { 0 }, + NULL + } + } + }, + /* External 5GHz PA, type 0 or 5. */ + { + nitems(rtl8812au_rf0_regs8), + rtl8812au_rf0_regs8, + rtl8812au_rf0_vals8_pa_a0_a5, + { + R12A_COND_APA | R12A_COND_TYPE(0x0), + R12A_COND_APA | R12A_COND_TYPE(0x5), 0 + }, + /* Others. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8812au_rf0_regs8), + rtl8812au_rf0_regs8, + rtl8812au_rf0_vals8, + { 0 }, + NULL + } + }, + { + nitems(rtl8812au_rf0_regs9), + rtl8812au_rf0_regs9, + rtl8812au_rf0_vals9, + { 0 }, + NULL + }, + /* External 5GHz PA, type 0. */ + { + nitems(rtl8812au_rf0_regs10), + rtl8812au_rf0_regs10, + rtl8812au_rf0_vals10_pa_a0, + { R12A_COND_APA | R12A_COND_TYPE(0x0), 0 }, + /* External 5GHz PA, type 5. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8812au_rf0_regs10), + rtl8812au_rf0_regs10, + rtl8812au_rf0_vals10_pa_a5, + { R12A_COND_APA | R12A_COND_TYPE(0x5), 0 }, + /* Others. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8812au_rf0_regs10), + rtl8812au_rf0_regs10, + rtl8812au_rf0_vals10, + { 0 }, + NULL + } + } + }, + { + nitems(rtl8812au_rf0_regs11), + rtl8812au_rf0_regs11, + rtl8812au_rf0_vals11, + { 0 }, + NULL + }, + { 0, NULL, NULL, { 0 }, NULL }, + /* RF path 2. */ + { + nitems(rtl8812au_rf1_regs0), + rtl8812au_rf1_regs0, + rtl8812au_rf1_vals0, + { 0 }, + NULL + }, + /* rtl8812au_rf[1] */ + /* External 2GHz LNA, type 0 or 5. */ + { + nitems(rtl8812au_rf0_regs1), + rtl8812au_rf0_regs1, + rtl8812au_rf0_vals1_lna_g0_g5, + { + R12A_COND_GLNA | R12A_COND_TYPE(0x0), + R12A_COND_GLNA | R12A_COND_TYPE(0x5), 0 + }, + /* Others. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8812au_rf0_regs1), + rtl8812au_rf0_regs1, + rtl8812au_rf0_vals1, + { 0 }, + NULL + } + }, + /* rtl8812au_rf[2] */ + /* External 5GHz LNA, type 0. */ + { + nitems(rtl8812au_rf0_regs2), + rtl8812au_rf0_regs2, + rtl8812au_rf0_vals2_lna_a0, + { R12A_COND_ALNA | R12A_COND_TYPE(0x0), 0 }, + /* Others. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8812au_rf0_regs2), + rtl8812au_rf0_regs2, + rtl8812au_rf0_vals2, + { 0 }, + NULL + } + }, + { + nitems(rtl8812au_rf1_regs3), + rtl8812au_rf1_regs3, + rtl8812au_rf1_vals3, + { 0 }, + NULL + }, + /* rtl8812au_rf[4] */ + /* External 2GHz LNA, type 0 or 5. */ + { + nitems(rtl8812au_rf0_regs4), + rtl8812au_rf0_regs4, + rtl8812au_rf0_vals4_lna_g0_g5, + { + R12A_COND_GLNA | R12A_COND_TYPE(0x0), + R12A_COND_GLNA | R12A_COND_TYPE(0x5), 0 + }, + /* Others */ + &(const struct rtwn_rf_prog){ + nitems(rtl8812au_rf0_regs4), + rtl8812au_rf0_regs4, + rtl8812au_rf0_vals4, + { 0 }, + NULL + } + }, + /* rtl8812au_rf[5] */ + /* External 2GHz PA, type 0. */ + { + nitems(rtl8812au_rf0_regs5), + rtl8812au_rf0_regs5, + rtl8812au_rf0_vals5_pa_g0, + { R12A_COND_GPA | R12A_COND_TYPE(0x0), 0 }, + /* Others. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8812au_rf0_regs5), + rtl8812au_rf0_regs5, + rtl8812au_rf0_vals5, + { 0 }, + NULL + } + }, + { + nitems(rtl8812au_rf0_regs6), + rtl8812au_rf0_regs6, + rtl8812au_rf1_vals6, + { 0 }, + NULL + }, + /* External 5GHz PA, type 0. */ + { + nitems(rtl8812au_rf0_regs7), + rtl8812au_rf0_regs7, + rtl8812au_rf0_vals7_pa_a0, + { R12A_COND_APA | R12A_COND_TYPE(0x0), 0 }, + /* External 5GHz PA, type 5. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8812au_rf0_regs7), + rtl8812au_rf0_regs7, + rtl8812au_rf1_vals7_pa_a5, + { R12A_COND_APA | R12A_COND_TYPE(0x5), 0 }, + /* Others. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8812au_rf0_regs7), + rtl8812au_rf0_regs7, + rtl8812au_rf0_vals7, + { 0 }, + NULL + } + } + }, + /* External 5GHz PA, type 0 or 5. */ + { + nitems(rtl8812au_rf0_regs8), + rtl8812au_rf0_regs8, + rtl8812au_rf1_vals8_pa_a0_a5, + { + R12A_COND_APA | R12A_COND_TYPE(0x0), + R12A_COND_APA | R12A_COND_TYPE(0x5), 0 + }, + /* Others. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8812au_rf0_regs8), + rtl8812au_rf0_regs8, + rtl8812au_rf0_vals8, + { 0 }, + NULL + } + }, + { + nitems(rtl8812au_rf0_regs9) - 1, + rtl8812au_rf0_regs9, + rtl8812au_rf0_vals9, + { 0 }, + NULL + }, + + /* External 2GHz or 5GHz PA, type 0. */ + { + nitems(rtl8812au_rf0_regs10), + rtl8812au_rf0_regs10, + rtl8812au_rf1_vals10_pa_g0_a0, + { + R12A_COND_GPA | R12A_COND_TYPE(0x0), + R12A_COND_APA | R12A_COND_TYPE(0x0), 0 + }, + /* External 5GHz PA, type 5. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8812au_rf0_regs10), + rtl8812au_rf0_regs10, + rtl8812au_rf1_vals10_pa_a5, + { R12A_COND_APA | R12A_COND_TYPE(0x5), 0 }, + /* Others. */ + &(const struct rtwn_rf_prog){ + nitems(rtl8812au_rf0_regs10), + rtl8812au_rf0_regs10, + rtl8812au_rf0_vals10, + { 0 }, + NULL + } + } + }, + { + 1, + rtl8812au_rf0_regs11, + rtl8812au_rf0_vals11, + { 0 }, + NULL + }, + { 0, NULL, NULL, { 0 }, NULL } +}; + + +/* + * Registers to save before IQ calibration. + */ +static const uint16_t r12a_iq_bb_regs[] = { + 0x520, 0x550, 0x808, 0xa04, 0x90c, 0xc00, 0xe00, 0x838, 0x82c +}; + +static const uint16_t r12a_iq_afe_regs[] = { + 0xc5c, 0xc60, 0xc64, 0xc68, 0xcb0, 0xcb4, 0xe5c, 0xe60, 0xe64, + 0xe68, 0xeb0, 0xeb4 +}; + +static const uint8_t r12a_iq_rf_regs[] = { + 0x65, 0x8f, 0x0 +}; + +#endif /* R12A_PRIV_H */ diff --git a/sys/dev/rtwn/rtl8812a/r12a_reg.h b/sys/dev/rtwn/rtl8812a/r12a_reg.h new file mode 100644 index 000000000000..41cc160f9d16 --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a_reg.h @@ -0,0 +1,236 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef R12A_REG_H +#define R12A_REG_H + +#include + +/* + * MAC registers. + */ +/* System Configuration. */ +#define R12A_SDIO_CTRL 0x070 +#define R12A_RF_B_CTRL 0x076 +/* Rx DMA Configuration. */ +#define R12A_RXDMA_PRO 0x290 +#define R12A_EARLY_MODE_CONTROL 0x2bc +/* Protocol Configuration. */ +#define R12A_TXPKT_EMPTY 0x41a +#define R12A_ARFR_5G(i) (0x444 + (i) * 8) +#define R12A_CCK_CHECK 0x454 +#define R12A_AMPDU_MAX_TIME 0x456 +#define R12A_AMPDU_MAX_LENGTH R92C_AGGLEN_LMT +#define R12A_DATA_SEC 0x483 +#define R12A_ARFR_2G(i) (0x48c + (i) * 8) +#define R12A_HT_SINGLE_AMPDU 0x4c7 + + +/* Bits for R92C_MAC_PHY_CTRL. */ +#define R12A_MAC_PHY_CRYSTALCAP_M 0x7ff80000 +#define R12A_MAC_PHY_CRYSTALCAP_S 19 + +/* Bits for R92C_LEDCFG2. */ +#define R12A_LEDCFG2_ENA 0x20 + +/* Bits for R12A_CCK_CHECK. */ +#define R12A_CCK_CHECK_BCN1 0x20 +#define R12A_CCK_CHECK_5GHZ 0x80 + +/* Bits for R12A_DATA_SEC. */ +#define R12A_DATA_SEC_NO_EXT 0x00 +#define R12A_DATA_SEC_PRIM_UP_20 0x01 +#define R12A_DATA_SEC_PRIM_DOWN_20 0x02 +#define R12A_DATA_SEC_PRIM_UPPER_20 0x03 +#define R12A_DATA_SEC_PRIM_LOWER_20 0x04 +#define R12A_DATA_SEC_PRIM_UP_40 0x90 +#define R12A_DATA_SEC_PRIM_DOWN_40 0xa0 + +/* Bits for R12A_HT_SINGLE_AMPDU. */ +#define R12A_HT_SINGLE_AMPDU_PKT_ENA 0x80 + +/* Bits for R92C_RCR. */ +#define R12A_RCR_DIS_CHK_14 0x00200000 +#define R12A_RCR_TCP_OFFLD_EN 0x02000000 +#define R12A_RCR_VHT_ACK 0x04000000 + + +/* + * Baseband registers. + */ +#define R12A_CCK_RPT_FORMAT 0x804 +#define R12A_OFDMCCK_EN 0x808 +#define R12A_RX_PATH R12A_OFDMCCK_EN +#define R12A_TX_PATH 0x80c +#define R12A_TXAGC_TABLE_SELECT 0x82c +#define R12A_PWED_TH 0x830 +#define R12A_BW_INDICATION 0x834 +#define R12A_CCA_ON_SEC 0x838 +#define R12A_L1_PEAK_TH 0x848 +#define R12A_FC_AREA 0x860 +#define R12A_RFMOD 0x8ac +#define R12A_HSSI_PARAM2 0x8b0 +#define R12A_ADC_BUF_CLK 0x8c4 +#define R12A_ANTSEL_SW 0x900 +#define R12A_SINGLETONE_CONT_TX 0x914 +#define R12A_CCK_RX_PATH 0xa04 +#define R12A_HSSI_PARAM1(chain) (0xc00 + (chain) * 0x200) +#define R12A_TX_SCALE(chain) (0xc1c + (chain) * 0x200) +#define R12A_TXAGC_CCK11_1(chain) (0xc20 + (chain) * 0x200) +#define R12A_TXAGC_OFDM18_6(chain) (0xc24 + (chain) * 0x200) +#define R12A_TXAGC_OFDM54_24(chain) (0xc28 + (chain) * 0x200) +#define R12A_TXAGC_MCS3_0(chain) (0xc2c + (chain) * 0x200) +#define R12A_TXAGC_MCS7_4(chain) (0xc30 + (chain) * 0x200) +#define R12A_TXAGC_MCS11_8(chain) (0xc34 + (chain) * 0x200) +#define R12A_TXAGC_MCS15_12(chain) (0xc38 + (chain) * 0x200) +#define R12A_TXAGC_NSS1IX3_1IX0(chain) (0xc3c + (chain) * 0x200) +#define R12A_TXAGC_NSS1IX7_1IX4(chain) (0xc40 + (chain) * 0x200) +#define R12A_TXAGC_NSS2IX1_1IX8(chain) (0xc44 + (chain) * 0x200) +#define R12A_TXAGC_NSS2IX5_2IX2(chain) (0xc48 + (chain) * 0x200) +#define R12A_TXAGC_NSS2IX9_2IX6(chain) (0xc4c + (chain) * 0x200) +#define R12A_INITIAL_GAIN(chain) (0xc50 + (chain) * 0x200) +#define R12A_AFE_POWER_1(chain) (0xc60 + (chain) * 0x200) +#define R12A_AFE_POWER_2(chain) (0xc64 + (chain) * 0x200) +#define R12A_SLEEP_NAV(chain) (0xc80 + (chain) * 0x200) +#define R12A_PMPD(chain) (0xc84 + (chain) * 0x200) +#define R12A_LSSI_PARAM(chain) (0xc90 + (chain) * 0x200) +#define R12A_RFE_PINMUX(chain) (0xcb0 + (chain) * 0x200) +#define R12A_RFE_INV(chain) (0xcb4 + (chain) * 0x200) +#define R12A_RFE(chain) (0xcb8 + (chain) * 0x200) +#define R12A_HSPI_READBACK(chain) (0xd04 + (chain) * 0x40) +#define R12A_LSSI_READBACK(chain) (0xd08 + (chain) * 0x40) + +/* Bits for R12A_CCK_RPT_FORMAT. */ +#define R12A_CCK_RPT_FORMAT_HIPWR 0x00010000 + +/* Bits for R12A_OFDMCCK_EN. */ +#define R12A_OFDMCCK_EN_CCK 0x10000000 +#define R12A_OFDMCCK_EN_OFDM 0x20000000 + +/* Bits for R12A_CCA_ON_SEC. */ +#define R12A_CCA_ON_SEC_EXT_CHAN_M 0xf0000000 +#define R12A_CCA_ON_SEC_EXT_CHAN_S 28 + +/* Bits for R12A_RFE_PINMUX(i). */ +#define R12A_RFE_PINMUX_PA_A_MASK 0x000000f0 +#define R12A_RFE_PINMUX_LNA_MASK 0x0000f000 + +/* Bits for R12A_RFMOD. */ +#define R12A_RFMOD_EXT_CHAN_M 0x3C +#define R12A_RFMOD_EXT_CHAN_S 2 + +/* Bits for R12A_HSSI_PARAM2. */ +#define R12A_HSSI_PARAM2_READ_ADDR_MASK 0xff + +/* Bits for R12A_HSSI_PARAM1(i). */ +#define R12A_HSSI_PARAM1_PI 0x00000004 + +/* Bits for R12A_TX_SCALE(i). */ +#define R12A_TX_SCALE_SWING_M 0xffe00000 +#define R12A_TX_SCALE_SWING_S 21 + +/* Bits for R12A_TXAGC_CCK11_1(i). */ +#define R12A_TXAGC_CCK1_M 0x000000ff +#define R12A_TXAGC_CCK1_S 0 +#define R12A_TXAGC_CCK2_M 0x0000ff00 +#define R12A_TXAGC_CCK2_S 8 +#define R12A_TXAGC_CCK55_M 0x00ff0000 +#define R12A_TXAGC_CCK55_S 16 +#define R12A_TXAGC_CCK11_M 0xff000000 +#define R12A_TXAGC_CCK11_S 24 + +/* Bits for R12A_TXAGC_OFDM18_6(i). */ +#define R12A_TXAGC_OFDM06_M 0x000000ff +#define R12A_TXAGC_OFDM06_S 0 +#define R12A_TXAGC_OFDM09_M 0x0000ff00 +#define R12A_TXAGC_OFDM09_S 8 +#define R12A_TXAGC_OFDM12_M 0x00ff0000 +#define R12A_TXAGC_OFDM12_S 16 +#define R12A_TXAGC_OFDM18_M 0xff000000 +#define R12A_TXAGC_OFDM18_S 24 + +/* Bits for R12A_TXAGC_OFDM54_24(i). */ +#define R12A_TXAGC_OFDM24_M 0x000000ff +#define R12A_TXAGC_OFDM24_S 0 +#define R12A_TXAGC_OFDM36_M 0x0000ff00 +#define R12A_TXAGC_OFDM36_S 8 +#define R12A_TXAGC_OFDM48_M 0x00ff0000 +#define R12A_TXAGC_OFDM48_S 16 +#define R12A_TXAGC_OFDM54_M 0xff000000 +#define R12A_TXAGC_OFDM54_S 24 + +/* Bits for R12A_TXAGC_MCS3_0(i). */ +#define R12A_TXAGC_MCS0_M 0x000000ff +#define R12A_TXAGC_MCS0_S 0 +#define R12A_TXAGC_MCS1_M 0x0000ff00 +#define R12A_TXAGC_MCS1_S 8 +#define R12A_TXAGC_MCS2_M 0x00ff0000 +#define R12A_TXAGC_MCS2_S 16 +#define R12A_TXAGC_MCS3_M 0xff000000 +#define R12A_TXAGC_MCS3_S 24 + +/* Bits for R12A_TXAGC_MCS7_4(i). */ +#define R12A_TXAGC_MCS4_M 0x000000ff +#define R12A_TXAGC_MCS4_S 0 +#define R12A_TXAGC_MCS5_M 0x0000ff00 +#define R12A_TXAGC_MCS5_S 8 +#define R12A_TXAGC_MCS6_M 0x00ff0000 +#define R12A_TXAGC_MCS6_S 16 +#define R12A_TXAGC_MCS7_M 0xff000000 +#define R12A_TXAGC_MCS7_S 24 + +/* Bits for R12A_TXAGC_MCS11_8(i). */ +#define R12A_TXAGC_MCS8_M 0x000000ff +#define R12A_TXAGC_MCS8_S 0 +#define R12A_TXAGC_MCS9_M 0x0000ff00 +#define R12A_TXAGC_MCS9_S 8 +#define R12A_TXAGC_MCS10_M 0x00ff0000 +#define R12A_TXAGC_MCS10_S 16 +#define R12A_TXAGC_MCS11_M 0xff000000 +#define R12A_TXAGC_MCS11_S 24 + +/* Bits for R12A_TXAGC_MCS15_12(i). */ +#define R12A_TXAGC_MCS12_M 0x000000ff +#define R12A_TXAGC_MCS12_S 0 +#define R12A_TXAGC_MCS13_M 0x0000ff00 +#define R12A_TXAGC_MCS13_S 8 +#define R12A_TXAGC_MCS14_M 0x00ff0000 +#define R12A_TXAGC_MCS14_S 16 +#define R12A_TXAGC_MCS15_M 0xff000000 +#define R12A_TXAGC_MCS15_S 24 + + +/* + * RF (6052) registers. + */ +#define R12A_RF_LCK 0xb4 + +/* Bits for R12A_RF_LCK. */ +#define R12A_RF_LCK_MODE 0x4000 + +#endif /* R12A_REG_H */ diff --git a/sys/dev/rtwn/rtl8812a/r12a_rf.c b/sys/dev/rtwn/rtl8812a/r12a_rf.c new file mode 100644 index 000000000000..43bd7b9ae608 --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a_rf.c @@ -0,0 +1,110 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + + +uint32_t +r12a_rf_read(struct rtwn_softc *sc, int chain, uint8_t addr) +{ + uint32_t pi_mode, val; + + /* Turn off CCA (avoids reading the wrong value). */ + if (addr != R92C_RF_AC) + rtwn_bb_setbits(sc, R12A_CCA_ON_SEC, 0, 0x08); + + val = rtwn_bb_read(sc, R12A_HSSI_PARAM1(chain)); + pi_mode = (val & R12A_HSSI_PARAM1_PI) ? 1 : 0; + + rtwn_bb_setbits(sc, R12A_HSSI_PARAM2, + R12A_HSSI_PARAM2_READ_ADDR_MASK, addr); + + val = rtwn_bb_read(sc, pi_mode ? R12A_HSPI_READBACK(chain) : + R12A_LSSI_READBACK(chain)); + + /* Turn on CCA (when exiting). */ + if (addr != R92C_RF_AC) + rtwn_bb_setbits(sc, R12A_CCA_ON_SEC, 0x08, 0); + + return (MS(val, R92C_LSSI_READBACK_DATA)); +} + +uint32_t +r12a_c_cut_rf_read(struct rtwn_softc *sc, int chain, uint8_t addr) +{ + uint32_t pi_mode, val; + + val = rtwn_bb_read(sc, R12A_HSSI_PARAM1(chain)); + pi_mode = (val & R12A_HSSI_PARAM1_PI) ? 1 : 0; + + rtwn_bb_setbits(sc, R12A_HSSI_PARAM2, + R12A_HSSI_PARAM2_READ_ADDR_MASK, addr); + rtwn_delay(sc, 20); + + val = rtwn_bb_read(sc, pi_mode ? R12A_HSPI_READBACK(chain) : + R12A_LSSI_READBACK(chain)); + + return (MS(val, R92C_LSSI_READBACK_DATA)); +} + +void +r12a_rf_write(struct rtwn_softc *sc, int chain, uint8_t addr, + uint32_t val) +{ + rtwn_bb_write(sc, R12A_LSSI_PARAM(chain), + SM(R88E_LSSI_PARAM_ADDR, addr) | + SM(R92C_LSSI_PARAM_DATA, val)); +} diff --git a/sys/dev/rtwn/rtl8812a/r12a_rom.c b/sys/dev/rtwn/rtl8812a/r12a_rom.c new file mode 100644 index 000000000000..df8bea64653f --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a_rom.c @@ -0,0 +1,221 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include + + +void +r12a_parse_rom_common(struct rtwn_softc *sc, uint8_t *buf) +{ + struct r12a_softc *rs = sc->sc_priv; + struct r12a_rom *rom = (struct r12a_rom *)buf; + int i, j; + + sc->thermal_meter = rom->thermal_meter; + rs->crystalcap = RTWN_GET_ROM_VAR(rom->crystalcap, + R12A_ROM_CRYSTALCAP_DEF); + rs->tx_bbswing_2g = RTWN_GET_ROM_VAR(rom->tx_bbswing_2g, 0); + rs->tx_bbswing_5g = RTWN_GET_ROM_VAR(rom->tx_bbswing_5g, 0); + + for (i = 0; i < sc->ntxchains; i++) { + struct r12a_tx_pwr_2g *pwr_2g = &rom->tx_pwr[i].pwr_2g; + struct r12a_tx_pwr_5g *pwr_5g = &rom->tx_pwr[i].pwr_5g; + struct r12a_tx_pwr_diff_2g *pwr_diff_2g = + &rom->tx_pwr[i].pwr_diff_2g; + struct r12a_tx_pwr_diff_5g *pwr_diff_5g = + &rom->tx_pwr[i].pwr_diff_5g; + + for (j = 0; j < R12A_GROUP_2G - 1; j++) { + rs->cck_tx_pwr[i][j] = + RTWN_GET_ROM_VAR(pwr_2g->cck[j], + R12A_DEF_TX_PWR_2G); + rs->ht40_tx_pwr_2g[i][j] = + RTWN_GET_ROM_VAR(pwr_2g->ht40[j], + R12A_DEF_TX_PWR_2G); + } + rs->cck_tx_pwr[i][j] = RTWN_GET_ROM_VAR(pwr_2g->cck[j], + R12A_DEF_TX_PWR_2G); + + rs->cck_tx_pwr_diff_2g[i][0] = 0; + rs->ofdm_tx_pwr_diff_2g[i][0] = RTWN_SIGN4TO8( + MS(pwr_diff_2g->ht20_ofdm, LOW_PART)); + rs->bw20_tx_pwr_diff_2g[i][0] = RTWN_SIGN4TO8( + MS(pwr_diff_2g->ht20_ofdm, HIGH_PART)); + rs->bw40_tx_pwr_diff_2g[i][0] = 0; + + for (j = 1; j < nitems(pwr_diff_2g->diff123); j++) { + rs->cck_tx_pwr_diff_2g[i][j] = RTWN_SIGN4TO8( + MS(pwr_diff_2g->diff123[j].ofdm_cck, LOW_PART)); + rs->ofdm_tx_pwr_diff_2g[i][j] = RTWN_SIGN4TO8( + MS(pwr_diff_2g->diff123[j].ofdm_cck, HIGH_PART)); + rs->bw20_tx_pwr_diff_2g[i][j] = RTWN_SIGN4TO8( + MS(pwr_diff_2g->diff123[j].ht40_ht20, LOW_PART)); + rs->bw40_tx_pwr_diff_2g[i][j] = RTWN_SIGN4TO8( + MS(pwr_diff_2g->diff123[j].ht40_ht20, HIGH_PART)); + } + + for (j = 0; j < R12A_GROUP_5G; j++) { + rs->ht40_tx_pwr_5g[i][j] = + RTWN_GET_ROM_VAR(pwr_5g->ht40[j], + R12A_DEF_TX_PWR_5G); + } + + rs->ofdm_tx_pwr_diff_5g[i][0] = RTWN_SIGN4TO8( + MS(pwr_diff_5g->ht20_ofdm, LOW_PART)); + rs->ofdm_tx_pwr_diff_5g[i][1] = RTWN_SIGN4TO8( + MS(pwr_diff_5g->ofdm_ofdm[0], HIGH_PART)); + rs->ofdm_tx_pwr_diff_5g[i][2] = RTWN_SIGN4TO8( + MS(pwr_diff_5g->ofdm_ofdm[0], LOW_PART)); + rs->ofdm_tx_pwr_diff_5g[i][3] = RTWN_SIGN4TO8( + MS(pwr_diff_5g->ofdm_ofdm[1], LOW_PART)); + + rs->bw20_tx_pwr_diff_5g[i][0] = RTWN_SIGN4TO8( + MS(pwr_diff_5g->ht20_ofdm, HIGH_PART)); + rs->bw40_tx_pwr_diff_5g[i][0] = 0; + for (j = 1; j < nitems(pwr_diff_5g->ht40_ht20); j++) { + rs->bw20_tx_pwr_diff_5g[i][j] = RTWN_SIGN4TO8( + MS(pwr_diff_5g->ht40_ht20[j], LOW_PART)); + rs->bw40_tx_pwr_diff_5g[i][j] = RTWN_SIGN4TO8( + MS(pwr_diff_5g->ht40_ht20[j], HIGH_PART)); + } + + for (j = 0; j < nitems(pwr_diff_5g->ht80_ht160); j++) { + rs->bw80_tx_pwr_diff_5g[i][j] = RTWN_SIGN4TO8( + MS(pwr_diff_5g->ht80_ht160[j], HIGH_PART)); + rs->bw160_tx_pwr_diff_5g[i][j] = RTWN_SIGN4TO8( + MS(pwr_diff_5g->ht80_ht160[j], LOW_PART)); + } + } + + rs->regulatory = MS(rom->rf_board_opt, R92C_ROM_RF1_REGULATORY); + rs->board_type = + MS(RTWN_GET_ROM_VAR(rom->rf_board_opt, R92C_BOARD_TYPE_DONGLE), + R92C_ROM_RF1_BOARD_TYPE); + RTWN_DPRINTF(sc, RTWN_DEBUG_ROM, "%s: regulatory type=%d\n", + __func__, rs->regulatory); +} + +void +r12a_parse_rom(struct rtwn_softc *sc, uint8_t *buf) +{ + struct r12a_softc *rs = sc->sc_priv; + struct r12a_rom *rom = (struct r12a_rom *)buf; + uint8_t pa_type, lna_type_2g, lna_type_5g; + + /* Read PA/LNA types. */ + pa_type = RTWN_GET_ROM_VAR(rom->pa_type, 0); + lna_type_2g = RTWN_GET_ROM_VAR(rom->lna_type_2g, 0); + lna_type_5g = RTWN_GET_ROM_VAR(rom->lna_type_5g, 0); + + rs->ext_pa_2g = R12A_ROM_IS_PA_EXT_2GHZ(pa_type); + rs->ext_pa_5g = R12A_ROM_IS_PA_EXT_5GHZ(pa_type); + rs->ext_lna_2g = R21A_ROM_IS_LNA_EXT(lna_type_2g); + rs->ext_lna_5g = R21A_ROM_IS_LNA_EXT(lna_type_5g); + rs->bt_coex = (MS(rom->rf_board_opt, R92C_ROM_RF1_BOARD_TYPE) == + R92C_BOARD_TYPE_HIGHPA); + rs->bt_ant_num = (rom->rf_bt_opt & R12A_RF_BT_OPT_ANT_NUM); + + if (rs->ext_pa_2g) { + rs->type_pa_2g = + R12A_GET_ROM_PA_TYPE(lna_type_2g, 0) | + (R12A_GET_ROM_PA_TYPE(lna_type_2g, 1) << 2); + } + if (rs->ext_pa_5g) { + rs->type_pa_5g = + R12A_GET_ROM_PA_TYPE(lna_type_5g, 0) | + (R12A_GET_ROM_PA_TYPE(lna_type_5g, 1) << 2); + } + if (rs->ext_lna_2g) { + rs->type_lna_2g = + R12A_GET_ROM_LNA_TYPE(lna_type_2g, 0) | + (R12A_GET_ROM_LNA_TYPE(lna_type_2g, 1) << 2); + } + if (rs->ext_lna_5g) { + rs->type_lna_5g = + R12A_GET_ROM_LNA_TYPE(lna_type_5g, 0) | + (R12A_GET_ROM_LNA_TYPE(lna_type_5g, 1) << 2); + } + + if (rom->rfe_option & 0x80) { + if (rs->ext_lna_5g) { + if (rs->ext_pa_5g) { + if (rs->ext_pa_2g && rs->ext_lna_2g) + rs->rfe_type = 3; + else + rs->rfe_type = 0; + } else + rs->rfe_type = 2; + } else + rs->rfe_type = 4; + } else { + rs->rfe_type = rom->rfe_option & 0x3f; + + /* workaround for incorrect EFUSE map */ + if (rs->rfe_type == 4 && + rs->ext_pa_2g && rs->ext_lna_2g && + rs->ext_pa_5g && rs->ext_lna_5g) + rs->rfe_type = 0; + } + + /* Read MAC address. */ + IEEE80211_ADDR_COPY(sc->sc_ic.ic_macaddr, rom->macaddr_12a); + + /* Execute common part of initialization. */ + r12a_parse_rom_common(sc, buf); +} diff --git a/sys/dev/rtwn/rtl8812a/r12a_rom_defs.h b/sys/dev/rtwn/rtl8812a/r12a_rom_defs.h new file mode 100644 index 000000000000..4cdb8b54381f --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a_rom_defs.h @@ -0,0 +1,43 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef R12A_ROM_DEFS_H +#define R12A_ROM_DEFS_H + +#include + +#define R12A_GROUP_2G 6 +#define R12A_GROUP_5G 14 + +#define R12A_MAX_TX_COUNT 4 +#define R12A_MAX_RF_PATH 4 + +#define R12A_EFUSE_MAX_LEN 512 +#define R12A_EFUSE_MAP_LEN 512 + +#endif /* R12A_ROM_DEFS_H */ diff --git a/sys/dev/rtwn/rtl8812a/r12a_rom_image.h b/sys/dev/rtwn/rtl8812a/r12a_rom_image.h new file mode 100644 index 000000000000..2349ea5ed1ac --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a_rom_image.h @@ -0,0 +1,133 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef R12A_ROM_IMAGE_H +#define R12A_ROM_IMAGE_H + +#include + +#define R12A_DEF_TX_PWR_2G 0x2d +#define R12A_DEF_TX_PWR_5G 0xfe + +struct r12a_tx_pwr_2g { + uint8_t cck[R12A_GROUP_2G]; + uint8_t ht40[R12A_GROUP_2G - 1]; +} __packed; + +struct r12a_tx_pwr_diff_2g { + uint8_t ht20_ofdm; + struct { + uint8_t ht40_ht20; + uint8_t ofdm_cck; + } __packed diff123[R12A_MAX_TX_COUNT - 1]; +} __packed; + +struct r12a_tx_pwr_5g { + uint8_t ht40[R12A_GROUP_5G]; +} __packed; + +struct r12a_tx_pwr_diff_5g { + uint8_t ht20_ofdm; + uint8_t ht40_ht20[R12A_MAX_TX_COUNT - 1]; + uint8_t ofdm_ofdm[2]; + uint8_t ht80_ht160[R12A_MAX_TX_COUNT]; +} __packed; + +struct r12a_tx_pwr { + struct r12a_tx_pwr_2g pwr_2g; + struct r12a_tx_pwr_diff_2g pwr_diff_2g; + struct r12a_tx_pwr_5g pwr_5g; + struct r12a_tx_pwr_diff_5g pwr_diff_5g; +} __packed; + +/* + * RTL8812AU/RTL8821AU ROM image. + */ +struct r12a_rom { + uint8_t reserved1[16]; + struct r12a_tx_pwr tx_pwr[R12A_MAX_RF_PATH]; + uint8_t channel_plan; + uint8_t crystalcap; +#define R12A_ROM_CRYSTALCAP_DEF 0x20 + + uint8_t thermal_meter; + uint8_t iqk_lck; + uint8_t pa_type; +#define R12A_ROM_IS_PA_EXT_2GHZ(pa_type) (((pa_type) & 0x30) == 0x30) +#define R12A_ROM_IS_PA_EXT_5GHZ(pa_type) (((pa_type) & 0x03) == 0x03) +#define R21A_ROM_IS_PA_EXT_2GHZ(pa_type) (((pa_type) & 0x10) == 0x10) +#define R21A_ROM_IS_PA_EXT_5GHZ(pa_type) (((pa_type) & 0x01) == 0x01) + + uint8_t lna_type_2g; +#define R12A_ROM_IS_LNA_EXT(lna_type) (((lna_type) & 0x88) == 0x88) +#define R21A_ROM_IS_LNA_EXT(lna_type) (((lna_type) & 0x08) == 0x08) + +#define R12A_GET_ROM_PA_TYPE(lna_type, chain) \ + (((lna_type) >> ((chain) * 4 + 2)) & 0x01) +#define R12A_GET_ROM_LNA_TYPE(lna_type, chain) \ + (((lna_type) >> ((chain) * 4)) & 0x03) + + uint8_t reserved2; + uint8_t lna_type_5g; + uint8_t reserved3; + uint8_t rf_board_opt; +#define R12A_BOARD_TYPE_COMBO_MF 5 + + uint8_t rf_feature_opt; + uint8_t rf_bt_opt; +#define R12A_RF_BT_OPT_ANT_NUM 0x01 + + uint8_t version; + uint8_t customer_id; + uint8_t tx_bbswing_2g; + uint8_t tx_bbswing_5g; + uint8_t tx_pwr_calib_rate; + uint8_t rf_ant_opt; + uint8_t rfe_option; + uint8_t reserved4[5]; + uint16_t vid_12a; + uint16_t pid_12a; + uint8_t reserved5[3]; + uint8_t macaddr_12a[IEEE80211_ADDR_LEN]; + uint8_t reserved6[35]; + uint16_t vid_21a; + uint16_t pid_21a; + uint8_t reserved7[3]; + uint8_t macaddr_21a[IEEE80211_ADDR_LEN]; + uint8_t reserved8[2]; + /* XXX check on RTL8812AU. */ + uint8_t string[8]; /* "Realtek " */ + uint8_t reserved9[2]; + uint8_t string_ven[23]; /* XXX variable length? */ + uint8_t reserved10[208]; +} __packed; + +_Static_assert(sizeof(struct r12a_rom) == R12A_EFUSE_MAP_LEN, + "R12A_EFUSE_MAP_LEN must be equal to sizeof(struct r12a_rom)!"); + +#endif /* R12A_ROM_IMAGE_H */ diff --git a/sys/dev/rtwn/rtl8812a/r12a_rx.c b/sys/dev/rtwn/rtl8812a/r12a_rx.c new file mode 100644 index 000000000000..319fcd58fb8c --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a_rx.c @@ -0,0 +1,238 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include +#include + + +#ifndef RTWN_WITHOUT_UCODE +void +r12a_ratectl_tx_complete(struct rtwn_softc *sc, uint8_t *buf, int len) +{ +#if __FreeBSD_version >= 1200012 + struct ieee80211_ratectl_tx_status txs; +#endif + struct r12a_c2h_tx_rpt *rpt; + struct ieee80211_node *ni; + int ntries; + + /* Skip Rx descriptor / report id / sequence fields. */ + buf += sizeof(struct r92c_rx_stat) + 2; + len -= sizeof(struct r92c_rx_stat) + 2; + + rpt = (struct r12a_c2h_tx_rpt *)buf; + if (len != sizeof(*rpt)) { + device_printf(sc->sc_dev, + "%s: wrong report size (%d, must be %zu)\n", + __func__, len, sizeof(*rpt)); + return; + } + + RTWN_DPRINTF(sc, RTWN_DEBUG_INTR, + "%s: ccx report dump: 0: %02X, id: %02X, 2: %02X, queue time: " + "low %02X, high %02X, final ridx: %02X, rsvd: %04X\n", + __func__, rpt->txrptb0, rpt->macid, rpt->txrptb2, + rpt->queue_time_low, rpt->queue_time_high, rpt->final_rate, + rpt->reserved); + + if (rpt->macid > sc->macid_limit) { + device_printf(sc->sc_dev, + "macid %u is too big; increase MACID_MAX limit\n", + rpt->macid); + return; + } + + ntries = MS(rpt->txrptb2, R12A_TXRPTB2_RETRY_CNT); + + ni = sc->node_list[rpt->macid]; + if (ni != NULL) { + RTWN_DPRINTF(sc, RTWN_DEBUG_INTR, "%s: frame for macid %u was" + "%s sent (%d retries)\n", __func__, rpt->macid, + (rpt->txrptb0 & (R12A_TXRPTB0_RETRY_OVER | + R12A_TXRPTB0_LIFE_EXPIRE)) ? " not" : "", ntries); + +#if __FreeBSD_version >= 1200012 + txs.flags = IEEE80211_RATECTL_STATUS_LONG_RETRY | + IEEE80211_RATECTL_STATUS_FINAL_RATE; + txs.long_retries = ntries; + if (rpt->final_rate > RTWN_RIDX_OFDM54) { /* MCS */ + txs.final_rate = + (rpt->final_rate - 12) | IEEE80211_RATE_MCS; + } else + txs.final_rate = ridx2rate[rpt->final_rate]; + if (rpt->txrptb0 & R12A_TXRPTB0_RETRY_OVER) + txs.status = IEEE80211_RATECTL_TX_FAIL_LONG; + else if (rpt->txrptb0 & R12A_TXRPTB0_LIFE_EXPIRE) + txs.status = IEEE80211_RATECTL_TX_FAIL_EXPIRED; + else + txs.status = IEEE80211_RATECTL_TX_SUCCESS; + ieee80211_ratectl_tx_complete(ni, &txs); +#else + struct ieee80211vap *vap = ni->ni_vap; + if (rpt->txrptb0 & R12A_TXRPTB0_RETRY_OVER) { + ieee80211_ratectl_tx_complete(vap, ni, + IEEE80211_RATECTL_TX_FAILURE, &ntries, NULL); + } else { + ieee80211_ratectl_tx_complete(vap, ni, + IEEE80211_RATECTL_TX_SUCCESS, &ntries, NULL); + } +#endif + } else { + RTWN_DPRINTF(sc, RTWN_DEBUG_INTR, + "%s: macid %u, ni is NULL\n", __func__, rpt->macid); + } +} + +void +r12a_handle_c2h_report(struct rtwn_softc *sc, uint8_t *buf, int len) +{ + struct r12a_softc *rs = sc->sc_priv; + + /* Skip Rx descriptor. */ + buf += sizeof(struct r92c_rx_stat); + len -= sizeof(struct r92c_rx_stat); + + if (len < 2) { + device_printf(sc->sc_dev, "C2H report too short (len %d)\n", + len); + return; + } + len -= 2; + + switch (buf[0]) { /* command id */ + case R12A_C2H_TX_REPORT: + /* NOTREACHED */ + KASSERT(0, ("use handle_tx_report() instead of %s\n", + __func__)); + break; + case R12A_C2H_IQK_FINISHED: + RTWN_DPRINTF(sc, RTWN_DEBUG_CALIB, + "FW IQ calibration finished\n"); + rs->rs_flags &= ~R12A_IQK_RUNNING; + break; + default: + device_printf(sc->sc_dev, + "%s: C2H report %u was not handled\n", + __func__, buf[0]); + } +} +#else +void +r12a_ratectl_tx_complete(struct rtwn_softc *sc, uint8_t *buf, int len) +{ + /* Should not happen. */ + device_printf(sc->sc_dev, "%s: called\n", __func__); +} + +void +r12a_handle_c2h_report(struct rtwn_softc *sc, uint8_t *buf, int len) +{ + /* Should not happen. */ + device_printf(sc->sc_dev, "%s: called\n", __func__); +} +#endif + +int +r12a_check_frame_checksum(struct rtwn_softc *sc, struct mbuf *m) +{ + struct r12a_softc *rs = sc->sc_priv; + struct r92c_rx_stat *stat; + uint32_t rxdw1; + + stat = mtod(m, struct r92c_rx_stat *); + rxdw1 = le32toh(stat->rxdw1); + if (rxdw1 & R12A_RXDW1_CKSUM) { + RTWN_DPRINTF(sc, RTWN_DEBUG_RECV, + "%s: %s/%s checksum is %s\n", __func__, + (rxdw1 & R12A_RXDW1_UDP) ? "UDP" : "TCP", + (rxdw1 & R12A_RXDW1_IPV6) ? "IPv6" : "IP", + (rxdw1 & R12A_RXDW1_CKSUM_ERR) ? "invalid" : "valid"); + + if (rxdw1 & R12A_RXDW1_CKSUM_ERR) + return (-1); + + if ((rxdw1 & R12A_RXDW1_IPV6) ? + (rs->rs_flags & R12A_RXCKSUM6_EN) : + (rs->rs_flags & R12A_RXCKSUM_EN)) { + m->m_pkthdr.csum_flags = CSUM_IP_CHECKED | + CSUM_IP_VALID | CSUM_DATA_VALID | CSUM_PSEUDO_HDR; + m->m_pkthdr.csum_data = 0xffff; + } + } + + return (0); +} + +uint8_t +r12a_rx_radiotap_flags(const void *buf) +{ + const struct r92c_rx_stat *stat = buf; + uint8_t flags, rate; + + if (!(stat->rxdw4 & htole32(R12A_RXDW4_SPLCP))) + return (0); + rate = MS(le32toh(stat->rxdw3), R92C_RXDW3_RATE); + if (RTWN_RATE_IS_CCK(rate)) + flags = IEEE80211_RADIOTAP_F_SHORTPRE; + else + flags = IEEE80211_RADIOTAP_F_SHORTGI; + return (flags); +} diff --git a/sys/dev/rtwn/rtl8812a/r12a_rx_desc.h b/sys/dev/rtwn/rtl8812a/r12a_rx_desc.h new file mode 100644 index 000000000000..8642ca85245f --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a_rx_desc.h @@ -0,0 +1,79 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef R12A_RX_DESC_H +#define R12A_RX_DESC_H + +#include + +/* Rx MAC descriptor defines (chip-specific). */ +/* Rx dword 1 */ +#define R12A_RXDW1_AMSDU 0x00002000 +#define R12A_RXDW1_CKSUM_ERR 0x00100000 +#define R12A_RXDW1_IPV6 0x00200000 +#define R12A_RXDW1_UDP 0x00400000 +#define R12A_RXDW1_CKSUM 0x00800000 +/* Rx dword 2 */ +#define R12A_RXDW2_RPT_C2H 0x10000000 +/* Rx dword 4 */ +#define R12A_RXDW4_SPLCP 0x00000001 +#define R12A_RXDW4_LDPC 0x00000002 +#define R12A_RXDW4_STBC 0x00000004 +#define R12A_RXDW4_BW_M 0x00000030 +#define R12A_RXDW4_BW_S 4 + +/* Rx PHY descriptor. */ +struct r12a_rx_phystat { + uint8_t gain_trsw[2]; + uint16_t phyw1; +#define R12A_PHYW1_CHAN_M 0x03ff +#define R12A_PHYW1_CHAN_S 0 +#define R12A_PHYW1_CHAN_EXT_M 0x3c00 +#define R12A_PHYW1_CHAN_EXT_S 10 +#define R12A_PHYW1_RFMOD_M 0xc000 +#define R12A_PHYW1_RFMOD_S 14 + + uint8_t pwdb_all; + uint8_t cfosho[4]; + uint8_t cfotail[4]; + uint8_t rxevm[2]; + uint8_t rxsnr[2]; + uint8_t pcts_msk_rpt[2]; + uint8_t pdsnr[2]; + uint8_t csi_current[2]; + uint8_t rx_gain_c; + uint8_t rx_gain_d; + uint8_t sigevm; + uint16_t phyw13; +#define R12A_PHYW13_ANTIDX_A_M 0x0700 +#define R12A_PHYW13_ANTIDX_A_S 8 +#define R12A_PHYW13_ANTIDX_B_M 0x3800 +#define R12A_PHYW13_ANTIDX_B_S 11 +} __packed; + +#endif /* R12A_RX_DESC_H */ diff --git a/sys/dev/rtwn/rtl8812a/r12a_tx.c b/sys/dev/rtwn/rtl8812a/r12a_tx.c new file mode 100644 index 000000000000..3a286828a902 --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a_tx.c @@ -0,0 +1,436 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include +#include + + +static int +r12a_get_primary_channel(struct rtwn_softc *sc, struct ieee80211_channel *c) +{ + /* XXX 80 MHz */ + if (IEEE80211_IS_CHAN_HT40U(c)) + return (R12A_TXDW5_PRIM_CHAN_20_80_2); + else + return (R12A_TXDW5_PRIM_CHAN_20_80_3); +} + +static void +r12a_tx_set_ht40(struct rtwn_softc *sc, void *buf, struct ieee80211_node *ni) +{ + struct r12a_tx_desc *txd = (struct r12a_tx_desc *)buf; + + /* XXX 80 Mhz */ + if (ni->ni_chan != IEEE80211_CHAN_ANYC && + IEEE80211_IS_CHAN_HT40(ni->ni_chan)) { + int prim_chan; + + prim_chan = r12a_get_primary_channel(sc, ni->ni_chan); + txd->txdw5 |= htole32(SM(R12A_TXDW5_DATA_BW, + R12A_TXDW5_DATA_BW40)); + txd->txdw5 |= htole32(SM(R12A_TXDW5_DATA_PRIM_CHAN, + prim_chan)); + } +} + +static void +r12a_tx_protection(struct rtwn_softc *sc, struct r12a_tx_desc *txd, + enum ieee80211_protmode mode, uint8_t ridx) +{ + struct ieee80211com *ic = &sc->sc_ic; + uint8_t rate; + + switch (mode) { + case IEEE80211_PROT_CTSONLY: + txd->txdw3 |= htole32(R12A_TXDW3_CTS2SELF); + break; + case IEEE80211_PROT_RTSCTS: + txd->txdw3 |= htole32(R12A_TXDW3_RTSEN); + break; + default: + break; + } + + if (mode == IEEE80211_PROT_CTSONLY || + mode == IEEE80211_PROT_RTSCTS) { + if (ridx >= RTWN_RIDX_MCS(0)) + rate = rtwn_ctl_mcsrate(ic->ic_rt, ridx); + else + rate = ieee80211_ctl_rate(ic->ic_rt, ridx2rate[ridx]); + ridx = rate2ridx(rate); + + txd->txdw4 |= htole32(SM(R12A_TXDW4_RTSRATE, ridx)); + /* RTS rate fallback limit (max). */ + txd->txdw4 |= htole32(SM(R12A_TXDW4_RTSRATE_FB_LMT, 0xf)); + + if (RTWN_RATE_IS_CCK(ridx) && ridx != RTWN_RIDX_CCK1 && + (ic->ic_flags & IEEE80211_F_SHPREAMBLE)) + txd->txdw5 |= htole32(R12A_TXDW5_RTS_SHORT); + } +} + +static void +r12a_tx_raid(struct rtwn_softc *sc, struct r12a_tx_desc *txd, + struct ieee80211_node *ni, int ismcast) +{ + struct ieee80211com *ic = &sc->sc_ic; + struct ieee80211vap *vap = ni->ni_vap; + struct ieee80211_channel *chan; + enum ieee80211_phymode mode; + uint8_t raid; + + chan = (ni->ni_chan != IEEE80211_CHAN_ANYC) ? + ni->ni_chan : ic->ic_curchan; + mode = ieee80211_chan2mode(chan); + + /* NB: group addressed frames are done at 11bg rates for now */ + if (ismcast || !(ni->ni_flags & IEEE80211_NODE_HT)) { + switch (mode) { + case IEEE80211_MODE_11A: + case IEEE80211_MODE_11B: + case IEEE80211_MODE_11G: + break; + case IEEE80211_MODE_11NA: + mode = IEEE80211_MODE_11A; + break; + case IEEE80211_MODE_11NG: + mode = IEEE80211_MODE_11G; + break; + default: + device_printf(sc->sc_dev, "unknown mode(1) %d!\n", + ic->ic_curmode); + return; + } + } + + switch (mode) { + case IEEE80211_MODE_11A: + raid = R12A_RAID_11G; + break; + case IEEE80211_MODE_11B: + raid = R12A_RAID_11B; + break; + case IEEE80211_MODE_11G: + if (vap->iv_flags & IEEE80211_F_PUREG) + raid = R12A_RAID_11G; + else + raid = R12A_RAID_11BG; + break; + case IEEE80211_MODE_11NA: + if (sc->ntxchains == 1) + raid = R12A_RAID_11GN_1; + else + raid = R12A_RAID_11GN_2; + break; + case IEEE80211_MODE_11NG: + if (sc->ntxchains == 1) { + if (IEEE80211_IS_CHAN_HT40(chan)) + raid = R12A_RAID_11BGN_1_40; + else + raid = R12A_RAID_11BGN_1; + } else { + if (IEEE80211_IS_CHAN_HT40(chan)) + raid = R12A_RAID_11BGN_2_40; + else + raid = R12A_RAID_11BGN_2; + } + break; + default: + /* TODO: 80 MHz / 11ac */ + device_printf(sc->sc_dev, "unknown mode(2) %d!\n", mode); + return; + } + + txd->txdw1 |= htole32(SM(R12A_TXDW1_RAID, raid)); +} + +static void +r12a_tx_set_sgi(struct rtwn_softc *sc, void *buf, struct ieee80211_node *ni) +{ + struct r12a_tx_desc *txd = (struct r12a_tx_desc *)buf; + struct ieee80211vap *vap = ni->ni_vap; + + if ((vap->iv_flags_ht & IEEE80211_FHT_SHORTGI20) && /* HT20 */ + (ni->ni_htcap & IEEE80211_HTCAP_SHORTGI20)) + txd->txdw5 |= htole32(R12A_TXDW5_DATA_SHORT); + else if (ni->ni_chan != IEEE80211_CHAN_ANYC && /* HT40 */ + IEEE80211_IS_CHAN_HT40(ni->ni_chan) && + (ni->ni_htcap & IEEE80211_HTCAP_SHORTGI40) && + (vap->iv_flags_ht & IEEE80211_FHT_SHORTGI40)) + txd->txdw5 |= htole32(R12A_TXDW5_DATA_SHORT); +} + +void +r12a_fill_tx_desc(struct rtwn_softc *sc, struct ieee80211_node *ni, + struct mbuf *m, void *buf, uint8_t ridx, int maxretry) +{ + struct ieee80211com *ic = &sc->sc_ic; + struct ieee80211vap *vap = ni->ni_vap; + struct rtwn_vap *uvp = RTWN_VAP(vap); + struct ieee80211_frame *wh; + struct r12a_tx_desc *txd; + enum ieee80211_protmode prot; + uint8_t type, tid, qos, qsel; + int hasqos, ismcast, macid; + + wh = mtod(m, struct ieee80211_frame *); + type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK; + hasqos = IEEE80211_QOS_HAS_SEQ(wh); + ismcast = IEEE80211_IS_MULTICAST(wh->i_addr1); + + /* Select TX ring for this frame. */ + if (hasqos) { + qos = ((const struct ieee80211_qosframe *)wh)->i_qos[0]; + tid = qos & IEEE80211_QOS_TID; + } else { + qos = 0; + tid = 0; + } + + /* Fill Tx descriptor. */ + txd = (struct r12a_tx_desc *)buf; + txd->flags0 |= R12A_FLAGS0_LSG | R12A_FLAGS0_FSG; + if (ismcast) + txd->flags0 |= R12A_FLAGS0_BMCAST; + + if (!ismcast) { + /* Unicast frame, check if an ACK is expected. */ + if (!qos || (qos & IEEE80211_QOS_ACKPOLICY) != + IEEE80211_QOS_ACKPOLICY_NOACK) { + txd->txdw4 = htole32(R12A_TXDW4_RETRY_LMT_ENA); + txd->txdw4 |= htole32(SM(R12A_TXDW4_RETRY_LMT, + maxretry)); + } + + struct rtwn_node *un = RTWN_NODE(ni); + macid = un->id; + + if (type == IEEE80211_FC0_TYPE_DATA) { + qsel = tid % RTWN_MAX_TID; + + if (m->m_flags & M_AMPDU_MPDU) { + txd->txdw2 |= htole32(R12A_TXDW2_AGGEN); + txd->txdw2 |= htole32(SM(R12A_TXDW2_AMPDU_DEN, + vap->iv_ampdu_density)); + txd->txdw3 |= htole32(SM(R12A_TXDW3_MAX_AGG, + 0x1f)); /* XXX */ + } else + txd->txdw2 |= htole32(R12A_TXDW2_AGGBK); + + if (sc->sc_ratectl == RTWN_RATECTL_NET80211) { + txd->txdw2 |= htole32(R12A_TXDW2_SPE_RPT); + sc->sc_tx_n_active++; + } + + if (RTWN_RATE_IS_CCK(ridx) && ridx != RTWN_RIDX_CCK1 && + (ic->ic_flags & IEEE80211_F_SHPREAMBLE)) + txd->txdw5 |= htole32(R12A_TXDW5_DATA_SHORT); + + prot = IEEE80211_PROT_NONE; + if (ridx >= RTWN_RIDX_MCS(0)) { + r12a_tx_set_ht40(sc, txd, ni); + r12a_tx_set_sgi(sc, txd, ni); + prot = ic->ic_htprotmode; + } else if (ic->ic_flags & IEEE80211_F_USEPROT) + prot = ic->ic_protmode; + + /* XXX fix last comparison for A-MSDU (in net80211) */ + /* XXX A-MPDU? */ + if (m->m_pkthdr.len + IEEE80211_CRC_LEN > + vap->iv_rtsthreshold && + vap->iv_rtsthreshold != IEEE80211_RTS_MAX) + prot = IEEE80211_PROT_RTSCTS; + + if (prot != IEEE80211_PROT_NONE) + r12a_tx_protection(sc, txd, prot, ridx); + } else /* IEEE80211_FC0_TYPE_MGT */ + qsel = R12A_TXDW1_QSEL_MGNT; + } else { + macid = RTWN_MACID_BC; + qsel = R12A_TXDW1_QSEL_MGNT; + } + + txd->txdw1 |= htole32(SM(R12A_TXDW1_QSEL, qsel)); + txd->txdw1 |= htole32(SM(R12A_TXDW1_MACID, macid)); + txd->txdw4 |= htole32(SM(R12A_TXDW4_DATARATE, ridx)); + /* Data rate fallback limit (max). */ + txd->txdw4 |= htole32(SM(R12A_TXDW4_DATARATE_FB_LMT, 0x1f)); + /* XXX recheck for non-21au */ + txd->txdw6 |= htole32(SM(R21A_TXDW6_MBSSID, uvp->id)); + r12a_tx_raid(sc, txd, ni, ismcast); + + /* Force this rate if needed. */ + if (sc->sc_ratectl != RTWN_RATECTL_FW) + txd->txdw3 |= htole32(R12A_TXDW3_DRVRATE); + + if (!hasqos) { + /* Use HW sequence numbering for non-QoS frames. */ + txd->txdw8 |= htole32(R12A_TXDW8_HWSEQ_EN); + txd->txdw3 |= htole32(SM(R12A_TXDW3_SEQ_SEL, uvp->id)); + } else { + uint16_t seqno; + + if (m->m_flags & M_AMPDU_MPDU) { + seqno = ni->ni_txseqs[tid]; + /* NB: clear Fragment Number field. */ + *(uint16_t *)wh->i_seq = 0; + ni->ni_txseqs[tid]++; + } else + seqno = M_SEQNO_GET(m) % IEEE80211_SEQ_RANGE; + + /* Set sequence number. */ + txd->txdw9 |= htole32(SM(R12A_TXDW9_SEQ, seqno)); + } +} + +void +r12a_fill_tx_desc_raw(struct rtwn_softc *sc, struct ieee80211_node *ni, + struct mbuf *m, void *buf, const struct ieee80211_bpf_params *params) +{ + struct ieee80211vap *vap = ni->ni_vap; + struct rtwn_vap *uvp = RTWN_VAP(vap); + struct ieee80211_frame *wh; + struct r12a_tx_desc *txd; + uint8_t ridx; + int ismcast; + + /* XXX TODO: 11n checks, matching rtwn_fill_tx_desc() */ + + wh = mtod(m, struct ieee80211_frame *); + ismcast = IEEE80211_IS_MULTICAST(wh->i_addr1); + ridx = rate2ridx(params->ibp_rate0); + + /* Fill Tx descriptor. */ + txd = (struct r12a_tx_desc *)buf; + txd->flags0 |= R12A_FLAGS0_LSG | R12A_FLAGS0_FSG; + if (ismcast) + txd->flags0 |= R12A_FLAGS0_BMCAST; + + if ((params->ibp_flags & IEEE80211_BPF_NOACK) == 0) { + txd->txdw4 = htole32(R12A_TXDW4_RETRY_LMT_ENA); + txd->txdw4 |= htole32(SM(R12A_TXDW4_RETRY_LMT, + params->ibp_try0)); + } + if (params->ibp_flags & IEEE80211_BPF_RTS) + r12a_tx_protection(sc, txd, IEEE80211_PROT_RTSCTS, ridx); + if (params->ibp_flags & IEEE80211_BPF_CTS) + r12a_tx_protection(sc, txd, IEEE80211_PROT_CTSONLY, ridx); + + txd->txdw1 |= htole32(SM(R12A_TXDW1_MACID, RTWN_MACID_BC)); + txd->txdw1 |= htole32(SM(R12A_TXDW1_QSEL, R12A_TXDW1_QSEL_MGNT)); + + /* Set TX rate index. */ + txd->txdw4 |= htole32(SM(R12A_TXDW4_DATARATE, ridx)); + txd->txdw4 |= htole32(SM(R12A_TXDW4_DATARATE_FB_LMT, 0x1f)); + txd->txdw6 |= htole32(SM(R21A_TXDW6_MBSSID, uvp->id)); + txd->txdw3 |= htole32(R12A_TXDW3_DRVRATE); + r12a_tx_raid(sc, txd, ni, ismcast); + + if (!IEEE80211_QOS_HAS_SEQ(wh)) { + /* Use HW sequence numbering for non-QoS frames. */ + txd->txdw8 |= htole32(R12A_TXDW8_HWSEQ_EN); + txd->txdw3 |= htole32(SM(R12A_TXDW3_SEQ_SEL, uvp->id)); + } else { + /* Set sequence number. */ + txd->txdw9 |= htole32(SM(R12A_TXDW9_SEQ, + M_SEQNO_GET(m) % IEEE80211_SEQ_RANGE)); + } +} + +void +r12a_fill_tx_desc_null(struct rtwn_softc *sc, void *buf, int is11b, int qos, + int id) +{ + struct r12a_tx_desc *txd = (struct r12a_tx_desc *)buf; + + txd->flags0 = R12A_FLAGS0_FSG | R12A_FLAGS0_LSG | R12A_FLAGS0_OWN; + txd->txdw1 = htole32( + SM(R12A_TXDW1_QSEL, R12A_TXDW1_QSEL_MGNT)); + + txd->txdw3 = htole32(R12A_TXDW3_DRVRATE); + txd->txdw6 = htole32(SM(R21A_TXDW6_MBSSID, id)); + if (is11b) { + txd->txdw4 = htole32(SM(R12A_TXDW4_DATARATE, + RTWN_RIDX_CCK1)); + } else { + txd->txdw4 = htole32(SM(R12A_TXDW4_DATARATE, + RTWN_RIDX_OFDM6)); + } + + if (!qos) { + txd->txdw8 = htole32(R12A_TXDW8_HWSEQ_EN); + txd->txdw3 |= htole32(SM(R12A_TXDW3_SEQ_SEL, id)); + + } +} + +uint8_t +r12a_tx_radiotap_flags(const void *buf) +{ + const struct r12a_tx_desc *txd = buf; + uint8_t flags, rate; + + if (!(txd->txdw5 & htole32(R12A_TXDW5_DATA_SHORT))) + return (0); + + rate = MS(le32toh(txd->txdw4), R12A_TXDW4_DATARATE); + if (RTWN_RATE_IS_CCK(rate)) + flags = IEEE80211_RADIOTAP_F_SHORTPRE; + else + flags = IEEE80211_RADIOTAP_F_SHORTGI; + return (flags); +} diff --git a/sys/dev/rtwn/rtl8812a/r12a_tx_desc.h b/sys/dev/rtwn/rtl8812a/r12a_tx_desc.h new file mode 100644 index 000000000000..9d3ad8b18162 --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a_tx_desc.h @@ -0,0 +1,149 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef R12A_TX_DESC_H +#define R12A_TX_DESC_H + +/* Tx MAC descriptor (common part). */ +struct r12a_tx_desc { + uint16_t pktlen; + uint8_t offset; + uint8_t flags0; +#define R12A_FLAGS0_BMCAST 0x01 +#define R12A_FLAGS0_LSG 0x04 +#define R12A_FLAGS0_FSG 0x08 +#define R12A_FLAGS0_OWN 0x80 + + uint32_t txdw1; +#define R12A_TXDW1_MACID_M 0x0000003f +#define R12A_TXDW1_MACID_S 0 +#define R12A_TXDW1_QSEL_M 0x00001f00 +#define R12A_TXDW1_QSEL_S 8 + +#define R12A_TXDW1_QSEL_BE 0x00 /* or 0x03 */ +#define R12A_TXDW1_QSEL_BK 0x01 /* or 0x02 */ +#define R12A_TXDW1_QSEL_VI 0x04 /* or 0x05 */ +#define R12A_TXDW1_QSEL_VO 0x06 /* or 0x07 */ +#define RTWN_MAX_TID 8 + +#define R12A_TXDW1_QSEL_BEACON 0x10 +#define R12A_TXDW1_QSEL_MGNT 0x12 + +#define R12A_TXDW1_RAID_M 0x001f0000 +#define R12A_TXDW1_RAID_S 16 +#define R12A_TXDW1_CIPHER_M 0x00c00000 +#define R12A_TXDW1_CIPHER_S 22 +#define R12A_TXDW1_CIPHER_NONE 0 +#define R12A_TXDW1_CIPHER_RC4 1 +#define R12A_TXDW1_CIPHER_SM4 2 +#define R12A_TXDW1_CIPHER_AES 3 +#define R12A_TXDW1_PKTOFF_M 0x1f000000 +#define R12A_TXDW1_PKTOFF_S 24 + + uint32_t txdw2; +#define R12A_TXDW2_AGGEN 0x00001000 +#define R12A_TXDW2_AGGBK 0x00010000 +#define R12A_TXDW2_MOREFRAG 0x00020000 +#define R12A_TXDW2_SPE_RPT 0x00080000 +#define R12A_TXDW2_AMPDU_DEN_M 0x00700000 +#define R12A_TXDW2_AMPDU_DEN_S 20 + + uint32_t txdw3; +#define R12A_TXDW3_SEQ_SEL_M 0x000000c0 +#define R12A_TXDW3_SEQ_SEL_S 6 +#define R12A_TXDW3_DRVRATE 0x00000100 +#define R12A_TXDW3_DISRTSFB 0x00000200 +#define R12A_TXDW3_DISDATAFB 0x00000400 +#define R12A_TXDW3_CTS2SELF 0x00000800 +#define R12A_TXDW3_RTSEN 0x00001000 +#define R12A_TXDW3_HWRTSEN 0x00002000 +#define R12A_TXDW3_MAX_AGG_M 0x003e0000 +#define R12A_TXDW3_MAX_AGG_S 17 + + uint32_t txdw4; +#define R12A_TXDW4_DATARATE_M 0x0000007f +#define R12A_TXDW4_DATARATE_S 0 +#define R12A_TXDW4_DATARATE_FB_LMT_M 0x00001f00 +#define R12A_TXDW4_DATARATE_FB_LMT_S 8 +#define R12A_TXDW4_RTSRATE_FB_LMT_M 0x0001e000 +#define R12A_TXDW4_RTSRATE_FB_LMT_S 13 +#define R12A_TXDW4_RETRY_LMT_ENA 0x00020000 +#define R12A_TXDW4_RETRY_LMT_M 0x00fc0000 +#define R12A_TXDW4_RETRY_LMT_S 18 +#define R12A_TXDW4_RTSRATE_M 0x1f000000 +#define R12A_TXDW4_RTSRATE_S 24 + + uint32_t txdw5; +#define R12A_TXDW5_DATA_PRIM_CHAN_M 0x0000000f +#define R12A_TXDW5_DATA_PRIM_CHAN_S 0 +#define R12A_TXDW5_PRIM_CHAN_20_80_3 1 +#define R12A_TXDW5_PRIM_CHAN_20_80_2 2 +#define R12A_TXDW5_PRIM_CHAN_20_80_4 3 +#define R12A_TXDW5_PRIM_CHAN_20_80_1 4 +#define R12A_TXDW5_PRIM_CHAN_40_80_1 9 +#define R12A_TXDW5_PRIM_CHAN_40_80_2 10 +#define R12A_TXDW5_DATA_SHORT 0x00000010 +#define R12A_TXDW5_DATA_BW_M 0x00000060 +#define R12A_TXDW5_DATA_BW_S 5 +#define R12A_TXDW5_DATA_BW40 1 +#define R12A_TXDW5_DATA_BW80 2 +#define R12A_TXDW5_DATA_LDPC 0x00000080 +#define R12A_TXDW5_RTS_SHORT 0x00001000 +#define R12A_TXDW5_RTS_PRIM_CHAN_M 0x0001e000 +#define R12A_TXDW5_RTS_PRIM_CHAN_S 13 + + uint32_t txdw6; +#define R21A_TXDW6_MBSSID_M 0x0000f000 +#define R21A_TXDW6_MBSSID_S 12 + + uint32_t reserved; + uint32_t txdw8; +#define R12A_TXDW8_HWSEQ_EN 0x00008000 + + uint32_t txdw9; +#define R12A_TXDW9_SEQ_M 0x00fff000 +#define R12A_TXDW9_SEQ_S 12 +} __packed __attribute__((aligned(4))); + + +/* Rate adaptation modes. */ +#define R12A_RAID_11BGN_2_40 0 +#define R12A_RAID_11BGN_1_40 1 +#define R12A_RAID_11BGN_2 2 +#define R12A_RAID_11BGN_1 3 +#define R12A_RAID_11GN_2 4 +#define R12A_RAID_11GN_1 5 +#define R12A_RAID_11BG 6 +#define R12A_RAID_11G 7 /* "pure" 11g */ +#define R12A_RAID_11B 8 +#define R12A_RAID_11AC_2_80 9 +#define R12A_RAID_11AC_1_80 10 +#define R12A_RAID_11AC_1 11 +#define R12A_RAID_11AC_2 12 + +#endif /* R12A_TX_DESC_H */ diff --git a/sys/dev/rtwn/rtl8812a/r12a_var.h b/sys/dev/rtwn/rtl8812a/r12a_var.h new file mode 100644 index 000000000000..9c22cf98ddb7 --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/r12a_var.h @@ -0,0 +1,117 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef R12A_VAR_H +#define R12A_VAR_H + +#include + +struct r12a_softc { + uint8_t chip; +#define R12A_CHIP_C_CUT 0x01 + + uint8_t rs_flags; +#define R12A_RXCKSUM_EN 0x01 +#define R12A_RXCKSUM6_EN 0x02 +#define R12A_IQK_RUNNING 0x04 + + /* ROM variables */ + int ext_pa_2g:1, + ext_pa_5g:1, + ext_lna_2g:1, + ext_lna_5g:1, + type_pa_2g:4, + type_pa_5g:4, + type_lna_2g:4, + type_lna_5g:4, + bt_coex:1, + bt_ant_num:1; + + uint8_t board_type; + uint8_t regulatory; + uint8_t crystalcap; + + uint8_t rfe_type; + uint8_t tx_bbswing_2g; + uint8_t tx_bbswing_5g; + + uint8_t cck_tx_pwr[R12A_MAX_RF_PATH][R12A_GROUP_2G]; + uint8_t ht40_tx_pwr_2g[R12A_MAX_RF_PATH][R12A_GROUP_2G]; + uint8_t ht40_tx_pwr_5g[R12A_MAX_RF_PATH][R12A_GROUP_5G]; + + uint8_t cck_tx_pwr_diff_2g[R12A_MAX_RF_PATH][R12A_MAX_TX_COUNT]; + uint8_t ofdm_tx_pwr_diff_2g[R12A_MAX_RF_PATH][R12A_MAX_TX_COUNT]; + uint8_t bw20_tx_pwr_diff_2g[R12A_MAX_RF_PATH][R12A_MAX_TX_COUNT]; + uint8_t bw40_tx_pwr_diff_2g[R12A_MAX_RF_PATH][R12A_MAX_TX_COUNT]; + + uint8_t ofdm_tx_pwr_diff_5g[R12A_MAX_RF_PATH][R12A_MAX_TX_COUNT]; + uint8_t bw20_tx_pwr_diff_5g[R12A_MAX_RF_PATH][R12A_MAX_TX_COUNT]; + uint8_t bw40_tx_pwr_diff_5g[R12A_MAX_RF_PATH][R12A_MAX_TX_COUNT]; + uint8_t bw80_tx_pwr_diff_5g[R12A_MAX_RF_PATH][R12A_MAX_TX_COUNT]; + uint8_t bw160_tx_pwr_diff_5g[R12A_MAX_RF_PATH][R12A_MAX_TX_COUNT]; + + int sc_ant; + + void (*rs_crystalcap_write)(struct rtwn_softc *); + void (*rs_fix_spur)(struct rtwn_softc *, + struct ieee80211_channel *); + void (*rs_set_band_2ghz)(struct rtwn_softc *, uint32_t); + void (*rs_set_band_5ghz)(struct rtwn_softc *, uint32_t); + void (*rs_init_burstlen)(struct rtwn_softc *); + void (*rs_init_ampdu_fwhw)(struct rtwn_softc *); +#ifndef RTWN_WITHOUT_UCODE + int (*rs_iq_calib_fw_supported)(struct rtwn_softc *); +#endif + void (*rs_iq_calib_sw)(struct rtwn_softc *); + + int ac_usb_dma_size; + int ac_usb_dma_time; + int ampdu_max_time; +}; +#define R12A_SOFTC(_sc) ((struct r12a_softc *)((_sc)->sc_priv)) + +#define rtwn_r12a_fix_spur(_sc, _c) \ + ((R12A_SOFTC(_sc)->rs_fix_spur)((_sc), (_c))) +#define rtwn_r12a_set_band_2ghz(_sc, _rates) \ + ((R12A_SOFTC(_sc)->rs_set_band_2ghz)((_sc), (_rates))) +#define rtwn_r12a_set_band_5ghz(_sc, _rates) \ + ((R12A_SOFTC(_sc)->rs_set_band_5ghz)((_sc), (_rates))) +#define rtwn_r12a_init_burstlen(_sc) \ + ((R12A_SOFTC(_sc)->rs_init_burstlen)((_sc))) +#define rtwn_r12a_init_ampdu_fwhw(_sc) \ + ((R12A_SOFTC(_sc)->rs_init_ampdu_fwhw)((_sc))) +#define rtwn_r12a_crystalcap_write(_sc) \ + ((R12A_SOFTC(_sc)->rs_crystalcap_write)((_sc))) +#ifndef RTWN_WITHOUT_UCODE +#define rtwn_r12a_iq_calib_fw_supported(_sc) \ + ((R12A_SOFTC(_sc)->rs_iq_calib_fw_supported)((_sc))) +#endif +#define rtwn_r12a_iq_calib_sw(_sc) \ + ((R12A_SOFTC(_sc)->rs_iq_calib_sw)((_sc))) + +#endif /* R12A_VAR_H */ diff --git a/sys/dev/rtwn/rtl8812a/usb/r12au.h b/sys/dev/rtwn/rtl8812a/usb/r12au.h new file mode 100644 index 000000000000..55d132c7c8d9 --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/usb/r12au.h @@ -0,0 +1,52 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef RTL8812AU_H +#define RTL8812AU_H + +#include + + +/* + * Function declarations. + */ +/* r12au_init.c */ +void r12au_init_rx_agg(struct rtwn_softc *); +void r12au_init_burstlen(struct rtwn_softc *); +void r12au_init_ampdu_fwhw(struct rtwn_softc *); +void r12au_init_ampdu(struct rtwn_softc *); +void r12au_post_init(struct rtwn_softc *); + +/* r12au_rx.c */ +int r12au_classify_intr(struct rtwn_softc *, void *, int); +int r12au_align_rx(int, int); + +/* r12au_tx.c */ +void r12au_dump_tx_desc(struct rtwn_softc *, const void *); + +#endif /* RTL8812AU_H */ diff --git a/sys/dev/rtwn/rtl8812a/usb/r12au_attach.c b/sys/dev/rtwn/rtl8812a/usb/r12au_attach.c new file mode 100644 index 000000000000..9134dce51afb --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/usb/r12au_attach.c @@ -0,0 +1,289 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include + +#include + +#include + +#include + +#include +#include +#include +#include + +#include +#include + + +void r12au_attach(struct rtwn_usb_softc *); + +static void +r12au_postattach(struct rtwn_softc *sc) +{ + struct rtwn_usb_softc *uc = RTWN_USB_SOFTC(sc); + struct r12a_softc *rs = sc->sc_priv; + + if (usbd_get_speed(uc->uc_udev) == USB_SPEED_SUPER) { + rs->ac_usb_dma_size = 0x07; + rs->ac_usb_dma_time = 0x1a; + } else { + rs->ac_usb_dma_size = 0x01; + rs->ac_usb_dma_time = 0x10; + } + + if (rs->chip & R12A_CHIP_C_CUT) + sc->sc_rf_read = r12a_c_cut_rf_read; + else + sc->sc_rf_read = r12a_rf_read; + + if (rs->board_type == R92C_BOARD_TYPE_MINICARD || + rs->board_type == R92C_BOARD_TYPE_SOLO || + rs->board_type == R92C_BOARD_TYPE_COMBO) + sc->sc_set_led = r88e_set_led; + else + sc->sc_set_led = r12a_set_led; + + if (!(rs->ext_pa_2g || rs->ext_lna_2g || + rs->ext_pa_5g || rs->ext_lna_5g)) + sc->mac_prog = &rtl8812au_mac_no_ext_pa_lna[0]; + + sc->sc_ic.ic_ioctl = r12a_ioctl_net; +} + +void +r12a_vap_preattach(struct rtwn_softc *sc, struct ieee80211vap *vap) +{ + struct r12a_softc *rs = sc->sc_priv; + struct ifnet *ifp = vap->iv_ifp; + + ifp->if_capabilities = IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6; + RTWN_LOCK(sc); + if (rs->rs_flags & R12A_RXCKSUM_EN) + ifp->if_capenable |= IFCAP_RXCSUM; + if (rs->rs_flags & R12A_RXCKSUM6_EN) + ifp->if_capenable |= IFCAP_RXCSUM_IPV6; + RTWN_UNLOCK(sc); +} + +static void +r12a_attach_private(struct rtwn_softc *sc) +{ + struct r12a_softc *rs; + + rs = malloc(sizeof(struct r12a_softc), M_RTWN_PRIV, M_WAITOK | M_ZERO); + + rs->rs_flags = R12A_RXCKSUM_EN | R12A_RXCKSUM6_EN; + + rs->rs_fix_spur = r12a_fix_spur; + rs->rs_set_band_2ghz = r12a_set_band_2ghz; + rs->rs_set_band_5ghz = r12a_set_band_5ghz; + rs->rs_init_burstlen = r12au_init_burstlen; + rs->rs_init_ampdu_fwhw = r12au_init_ampdu_fwhw; + rs->rs_crystalcap_write = r12a_crystalcap_write; +#ifndef RTWN_WITHOUT_UCODE + rs->rs_iq_calib_fw_supported = r12a_iq_calib_fw_supported; +#endif + rs->rs_iq_calib_sw = r12a_iq_calib_sw; + + rs->ampdu_max_time = 0x70; + + sc->sc_priv = rs; +} + +void +r12a_detach_private(struct rtwn_softc *sc) +{ + struct r12a_softc *rs = sc->sc_priv; + + free(rs, M_RTWN_PRIV); +} + +static void +r12a_read_chipid_vendor(struct rtwn_softc *sc, uint32_t reg_sys_cfg) +{ + struct r12a_softc *rs = sc->sc_priv; + + if (MS(reg_sys_cfg, R92C_SYS_CFG_CHIP_VER_RTL) == 1) + rs->chip |= R12A_CHIP_C_CUT; +} + +static void +r12au_adj_devcaps(struct rtwn_softc *sc) +{ + /* TODO: LDPC, STBC etc */ +} + +void +r12au_attach(struct rtwn_usb_softc *uc) +{ + struct rtwn_softc *sc = &uc->uc_sc; + + /* USB part. */ + uc->uc_align_rx = r12au_align_rx; + uc->tx_agg_desc_num = 1; + + /* Common part. */ + sc->sc_flags = RTWN_FLAG_EXT_HDR; + + sc->sc_set_chan = r12a_set_chan; + sc->sc_fill_tx_desc = r12a_fill_tx_desc; + sc->sc_fill_tx_desc_raw = r12a_fill_tx_desc_raw; + sc->sc_fill_tx_desc_null = r12a_fill_tx_desc_null; + sc->sc_dump_tx_desc = r12au_dump_tx_desc; + sc->sc_tx_radiotap_flags = r12a_tx_radiotap_flags; + sc->sc_rx_radiotap_flags = r12a_rx_radiotap_flags; + sc->sc_get_rssi_cck = r88e_get_rssi_cck; + sc->sc_get_rssi_ofdm = r88e_get_rssi_ofdm; + sc->sc_classify_intr = r12au_classify_intr; + sc->sc_handle_tx_report = r12a_ratectl_tx_complete; + sc->sc_handle_c2h_report = r12a_handle_c2h_report; + sc->sc_check_frame = r12a_check_frame_checksum; + sc->sc_rf_write = r12a_rf_write; + sc->sc_check_condition = r12a_check_condition; + sc->sc_efuse_postread = rtwn_nop_softc; + sc->sc_parse_rom = r12a_parse_rom; + sc->sc_power_on = r12a_power_on; + sc->sc_power_off = r12a_power_off; +#ifndef RTWN_WITHOUT_UCODE + sc->sc_fw_reset = r12a_fw_reset; + sc->sc_fw_download_enable = r12a_fw_download_enable; +#endif + sc->sc_set_page_size = r12a_set_page_size; + sc->sc_lc_calib = r12a_lc_calib; + sc->sc_iq_calib = r12a_iq_calib; + sc->sc_read_chipid_vendor = r12a_read_chipid_vendor; + sc->sc_adj_devcaps = r12au_adj_devcaps; + sc->sc_vap_preattach = r12a_vap_preattach; + sc->sc_postattach = r12au_postattach; + sc->sc_detach_private = r12a_detach_private; +#ifndef RTWN_WITHOUT_UCODE + sc->sc_set_media_status = r12a_set_media_status; + sc->sc_set_rsvd_page = r88e_set_rsvd_page; + sc->sc_set_pwrmode = r12a_set_pwrmode; + sc->sc_set_rssi = rtwn_nop_softc; /* XXX TODO */ +#else + sc->sc_set_media_status = rtwn_nop_softc_int; +#endif + sc->sc_beacon_init = r12a_beacon_init; + sc->sc_beacon_enable = r92c_beacon_enable; + sc->sc_beacon_set_rate = r12a_beacon_set_rate; + sc->sc_beacon_select = rtwn_nop_softc_int; + sc->sc_temp_measure = r88e_temp_measure; + sc->sc_temp_read = r88e_temp_read; + sc->sc_init_tx_agg = r92cu_init_tx_agg; + sc->sc_init_rx_agg = r12au_init_rx_agg; + sc->sc_init_ampdu = r12au_init_ampdu; + sc->sc_init_intr = r12a_init_intr; + sc->sc_init_edca = r12a_init_edca; + sc->sc_init_bb = r12a_init_bb; + sc->sc_init_rf = r12a_init_rf; + sc->sc_init_antsel = r12a_init_antsel; + sc->sc_post_init = r12au_post_init; + sc->sc_init_bcnq1_boundary = rtwn_nop_int_softc; + + sc->chan_list_5ghz[0] = r12a_chan_5ghz_0; + sc->chan_list_5ghz[1] = r12a_chan_5ghz_1; + sc->chan_list_5ghz[2] = r12a_chan_5ghz_2; + sc->chan_num_5ghz[0] = nitems(r12a_chan_5ghz_0); + sc->chan_num_5ghz[1] = nitems(r12a_chan_5ghz_1); + sc->chan_num_5ghz[2] = nitems(r12a_chan_5ghz_2); + + sc->mac_prog = &rtl8812au_mac[0]; + sc->mac_size = nitems(rtl8812au_mac); + sc->bb_prog = &rtl8812au_bb[0]; + sc->bb_size = nitems(rtl8812au_bb); + sc->agc_prog = &rtl8812au_agc[0]; + sc->agc_size = nitems(rtl8812au_agc); + sc->rf_prog = &rtl8812au_rf[0]; + + sc->name = "RTL8812AU"; + sc->fwname = "rtwn-rtl8812aufw"; + sc->fwsig = 0x950; + + sc->page_count = R12A_TX_PAGE_COUNT; + sc->pktbuf_count = R12A_TXPKTBUF_COUNT; + + sc->ackto = 0x80; + sc->npubqpages = R12A_PUBQ_NPAGES; + sc->page_size = R12A_TX_PAGE_SIZE; + + sc->txdesc_len = sizeof(struct r12au_tx_desc); + sc->efuse_maxlen = R12A_EFUSE_MAX_LEN; + sc->efuse_maplen = R12A_EFUSE_MAP_LEN; + sc->rx_dma_size = R12A_RX_DMA_BUFFER_SIZE; + + sc->macid_limit = R12A_MACID_MAX + 1; + sc->cam_entry_limit = R12A_CAM_ENTRY_COUNT; + sc->fwsize_limit = R12A_MAX_FW_SIZE; + sc->temp_delta = R88E_CALIB_THRESHOLD; + + sc->bcn_status_reg[0] = R92C_TDECTRL; + sc->bcn_status_reg[1] = R92C_TDECTRL; + sc->rcr = R12A_RCR_DIS_CHK_14 | + R12A_RCR_VHT_ACK | + R12A_RCR_TCP_OFFLD_EN; + + sc->ntxchains = 2; + sc->nrxchains = 2; + + r12a_attach_private(sc); +} diff --git a/sys/dev/rtwn/rtl8812a/usb/r12au_init.c b/sys/dev/rtwn/rtl8812a/usb/r12au_init.c new file mode 100644 index 000000000000..06f9c5d5c201 --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/usb/r12au_init.c @@ -0,0 +1,187 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include +#include + + +void +r12au_init_rx_agg(struct rtwn_softc *sc) +{ + struct r12a_softc *rs = sc->sc_priv; + + /* Rx aggregation (USB). */ + rtwn_write_2(sc, R92C_RXDMA_AGG_PG_TH, + rs->ac_usb_dma_size | (rs->ac_usb_dma_time << 8)); + rtwn_setbits_1(sc, R92C_TRXDMA_CTRL, 0, + R92C_TRXDMA_CTRL_RXDMA_AGG_EN); +} + +void +r12au_init_burstlen(struct rtwn_softc *sc) +{ + if (rtwn_read_1(sc, R92C_TYPE_ID + 3) & 0x80) { + if ((rtwn_read_1(sc, R92C_USB_INFO) & 0x30) == 0) { + /* Set burst packet length to 512 B. */ + rtwn_setbits_1(sc, R12A_RXDMA_PRO, 0x20, 0x1e); + } else { + /* Set burst packet length to 64 B. */ + rtwn_setbits_1(sc, R12A_RXDMA_PRO, 0x10, 0x2e); + } + } else { /* USB 3.0 */ + /* Set burst packet length to 1 KB. */ + rtwn_setbits_1(sc, R12A_RXDMA_PRO, 0x30, 0x0e); + + rtwn_setbits_1(sc, 0xf008, 0x18, 0); + } +} + +static void +r12au_arfb_init(struct rtwn_softc *sc) +{ + /* ARFB table 9 for 11ac 5G 2SS. */ + rtwn_write_4(sc, R12A_ARFR_5G(0), 0x00000010); + rtwn_write_4(sc, R12A_ARFR_5G(0) + 4, 0xfffff000); + + /* ARFB table 10 for 11ac 5G 1SS. */ + rtwn_write_4(sc, R12A_ARFR_5G(1), 0x00000010); + rtwn_write_4(sc, R12A_ARFR_5G(1) + 4, 0x003ff000); + + /* ARFB table 11 for 11ac 2G 1SS. */ + rtwn_write_4(sc, R12A_ARFR_2G(0), 0x00000015); + rtwn_write_4(sc, R12A_ARFR_2G(0) + 4, 0x003ff000); + + /* ARFB table 12 for 11ac 2G 2SS. */ + rtwn_write_4(sc, R12A_ARFR_2G(1), 0x00000015); + rtwn_write_4(sc, R12A_ARFR_2G(1) + 4, 0xffcff000); +} + +void +r12au_init_ampdu_fwhw(struct rtwn_softc *sc) +{ + rtwn_setbits_1(sc, R92C_FWHW_TXQ_CTRL, + R92C_FWHW_TXQ_CTRL_AMPDU_RTY_NEW, 0); +} + +void +r12au_init_ampdu(struct rtwn_softc *sc) +{ + struct r12a_softc *rs = sc->sc_priv; + + /* Rx interval (USB3). */ + rtwn_write_1(sc, 0xf050, 0x01); + + /* burst length = 4 */ + rtwn_write_2(sc, R92C_RXDMA_STATUS, 0x7400); + + rtwn_write_1(sc, R92C_RXDMA_STATUS + 1, 0xf5); + + /* Setup AMPDU aggregation. */ + rtwn_write_1(sc, R12A_AMPDU_MAX_TIME, rs->ampdu_max_time); + rtwn_write_4(sc, R12A_AMPDU_MAX_LENGTH, 0xffffffff); + + /* 80 MHz clock (again?) */ + rtwn_write_1(sc, R92C_USTIME_TSF, 0x50); + rtwn_write_1(sc, R92C_USTIME_EDCA, 0x50); + + rtwn_r12a_init_burstlen(sc); + + /* Enable single packet AMPDU. */ + rtwn_setbits_1(sc, R12A_HT_SINGLE_AMPDU, 0, + R12A_HT_SINGLE_AMPDU_PKT_ENA); + + /* 11K packet length for VHT. */ + rtwn_write_1(sc, R92C_RX_PKT_LIMIT, 0x18); + + rtwn_write_1(sc, R92C_PIFS, 0); + + rtwn_write_2(sc, R92C_MAX_AGGR_NUM, 0x1f1f); + + rtwn_r12a_init_ampdu_fwhw(sc); + + /* Do not reset MAC. */ + rtwn_setbits_1(sc, R92C_RSV_CTRL, 0, 0x60); + + r12au_arfb_init(sc); +} + +void +r12au_post_init(struct rtwn_softc *sc) +{ + + /* Setup RTS BW (equal to data BW). */ + rtwn_setbits_1(sc, R92C_QUEUE_CTRL, 0x08, 0); + + rtwn_write_1(sc, R12A_EARLY_MODE_CONTROL + 3, 0x01); + + /* Reset USB mode switch setting. */ + rtwn_write_1(sc, R12A_SDIO_CTRL, 0); + rtwn_write_1(sc, R92C_ACLK_MON, 0); + + rtwn_write_1(sc, R92C_USB_HRPWM, 0); + +#ifndef RTWN_WITHOUT_UCODE + if (sc->sc_flags & RTWN_FW_LOADED) { + if (sc->sc_ratectl_sysctl == RTWN_RATECTL_FW) { + /* TODO: implement */ + sc->sc_ratectl = RTWN_RATECTL_NET80211; + } else + sc->sc_ratectl = sc->sc_ratectl_sysctl; + } else +#endif + sc->sc_ratectl = RTWN_RATECTL_NONE; +} diff --git a/sys/dev/rtwn/rtl8812a/usb/r12au_reg.h b/sys/dev/rtwn/rtl8812a/usb/r12au_reg.h new file mode 100644 index 000000000000..f768c2624878 --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/usb/r12au_reg.h @@ -0,0 +1,35 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef R12AU_REG_H +#define R12AU_REG_H + +#include +#include + +#endif /* R12AU_REG_H */ diff --git a/sys/dev/rtwn/rtl8812a/usb/r12au_rx.c b/sys/dev/rtwn/rtl8812a/usb/r12au_rx.c new file mode 100644 index 000000000000..a38fcd333287 --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/usb/r12au_rx.c @@ -0,0 +1,89 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include + +#include + + +int +r12au_classify_intr(struct rtwn_softc *sc, void *buf, int len) +{ + struct r92c_rx_stat *stat = buf; + uint32_t rxdw2 = le32toh(stat->rxdw2); + + if (rxdw2 & R12A_RXDW2_RPT_C2H) { + int pos = sizeof(struct r92c_rx_stat); + /* Check if Rx descriptor + command id/sequence fits. */ + if (len < pos + 2) /* unknown, skip */ + return (RTWN_RX_DATA); + + if (((uint8_t *)buf)[pos] == R12A_C2H_TX_REPORT) + return (RTWN_RX_TX_REPORT); + else + return (RTWN_RX_OTHER); + } else + return (RTWN_RX_DATA); +} + +int +r12au_align_rx(int totlen, int len) +{ + if (totlen < len) + return (roundup2(totlen, 8)); + + return (totlen); +} diff --git a/sys/dev/rtwn/rtl8812a/usb/r12au_tx.c b/sys/dev/rtwn/rtl8812a/usb/r12au_tx.c new file mode 100644 index 000000000000..51496681591f --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/usb/r12au_tx.c @@ -0,0 +1,75 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + + +void +r12au_dump_tx_desc(struct rtwn_softc *sc, const void *desc) +{ +#ifdef RTWN_DEBUG + const struct r12au_tx_desc *txd = desc; + + RTWN_DPRINTF(sc, RTWN_DEBUG_XMIT_DESC, + "%s: len %d, off %d, flags0 %02X, dw: 1 %08X, 2 %08X, 3 %08X, " + "4 %08X, 5 %08X, 6 %08X, sum %04X, flags7 %04X, 8 %08X, 9 %08X\n", + __func__, le16toh(txd->pktlen), txd->offset, txd->flags0, + le32toh(txd->txdw1), le32toh(txd->txdw2), le32toh(txd->txdw3), + le32toh(txd->txdw4), le32toh(txd->txdw5), le32toh(txd->txdw6), + le16toh(txd->txdsum), le16toh(txd->flags7), le32toh(txd->txdw8), + le32toh(txd->txdw9)); +#endif +} diff --git a/sys/dev/rtwn/rtl8812a/usb/r12au_tx_desc.h b/sys/dev/rtwn/rtl8812a/usb/r12au_tx_desc.h new file mode 100644 index 000000000000..b7613f2bf189 --- /dev/null +++ b/sys/dev/rtwn/rtl8812a/usb/r12au_tx_desc.h @@ -0,0 +1,56 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef R12AU_TX_DESC_H +#define R12AU_TX_DESC_H + +#include + +/* Tx MAC descriptor (USB). */ +struct r12au_tx_desc { + uint16_t pktlen; + uint8_t offset; + uint8_t flags0; + + uint32_t txdw1; + uint32_t txdw2; + uint32_t txdw3; + uint32_t txdw4; + uint32_t txdw5; + uint32_t txdw6; + + uint16_t txdsum; + uint16_t flags7; +#define R12AU_FLAGS7_AGGNUM_M 0xff00 +#define R12AU_FLAGS7_AGGNUM_S 8 + + uint32_t txdw8; + uint32_t txdw9; +} __packed __attribute__((aligned(4))); + +#endif /* R12AU_TX_DESC_H */ diff --git a/sys/dev/rtwn/rtl8821a/r21a.h b/sys/dev/rtwn/rtl8821a/r21a.h new file mode 100644 index 000000000000..cfc99cb9fbb8 --- /dev/null +++ b/sys/dev/rtwn/rtl8821a/r21a.h @@ -0,0 +1,80 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef RTL8821A_H +#define RTL8821A_H + +/* + * Global definitions. + */ +#define R21A_TX_PAGE_COUNT 243 +#define R21A_BCNQ0_PAGE_COUNT 8 +#define R21A_BCNQ0_BOUNDARY \ + (R21A_TX_PAGE_COUNT + R21A_BCNQ0_PAGE_COUNT + 1) + +#define R21A_TX_PAGE_SIZE 256 + + +/* + * Function declarations. + */ +/* r21a_beacon.c */ +void r21a_beacon_init(struct rtwn_softc *, void *, int); +void r21a_beacon_select(struct rtwn_softc *, int); + +/* r21a_calib.c */ +#ifndef RTWN_WITHOUT_UCODE +int r21a_iq_calib_fw_supported(struct rtwn_softc *); +#endif +void r21a_iq_calib_sw(struct rtwn_softc *); + +/* r21a_chan.c */ +void r21a_set_band_2ghz(struct rtwn_softc *, uint32_t); +void r21a_set_band_5ghz(struct rtwn_softc *, uint32_t); + +/* r21a_fw.c */ +void r21a_fw_reset(struct rtwn_softc *, int); + +/* r21a_init.c */ +int r21a_power_on(struct rtwn_softc *); +void r21a_power_off(struct rtwn_softc *); +int r21a_check_condition(struct rtwn_softc *, const uint8_t[]); +void r21a_crystalcap_write(struct rtwn_softc *); +int r21a_init_bcnq1_boundary(struct rtwn_softc *); +void r21a_init_ampdu_fwhw(struct rtwn_softc *); + +/* r21a_led.c */ +void r21a_set_led(struct rtwn_softc *, int, int); + +/* r21a_rom.c */ +void r21a_parse_rom(struct rtwn_softc *, uint8_t *); + +/* r21a_rx.c */ +int8_t r21a_get_rssi_cck(struct rtwn_softc *, void *); + +#endif /* RTL8821A_H */ diff --git a/sys/dev/rtwn/rtl8821a/r21a_beacon.c b/sys/dev/rtwn/rtl8821a/r21a_beacon.c new file mode 100644 index 000000000000..f88f6def1baf --- /dev/null +++ b/sys/dev/rtwn/rtl8821a/r21a_beacon.c @@ -0,0 +1,93 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include + + +void +r21a_beacon_init(struct rtwn_softc *sc, void *buf, int id) +{ + struct r12a_tx_desc *txd = (struct r12a_tx_desc *)buf; + + r12a_beacon_init(sc, buf, id); + + /* XXX sequence number for beacon 1 is not stable. */ + txd->txdw3 &= ~htole32(R12A_TXDW3_SEQ_SEL_M); + txd->txdw3 |= htole32(SM(R12A_TXDW3_SEQ_SEL, id * 2)); +} + +void +r21a_beacon_select(struct rtwn_softc *sc, int id) +{ + switch (id) { + case 0: + /* Switch to port 0 beacon. */ + rtwn_setbits_1_shift(sc, R21A_DWBCN1_CTRL, + R21A_DWBCN1_CTRL_SEL_BCN1, 0, 2); + break; + case 1: + /* Switch to port 1 beacon. */ + rtwn_setbits_1_shift(sc, R21A_DWBCN1_CTRL, + 0, R21A_DWBCN1_CTRL_SEL_BCN1, 2); + break; + default: + KASSERT(0, ("wrong port id %d\n", id)); + break; + } +} diff --git a/sys/dev/rtwn/rtl8821a/r21a_calib.c b/sys/dev/rtwn/rtl8821a/r21a_calib.c new file mode 100644 index 000000000000..e1f1522e9ae4 --- /dev/null +++ b/sys/dev/rtwn/rtl8821a/r21a_calib.c @@ -0,0 +1,126 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include + +#include +#include +#include + + +#ifndef RTWN_WITHOUT_UCODE +int +r21a_iq_calib_fw_supported(struct rtwn_softc *sc) +{ + if (sc->fwver == 0x16) + return (1); + + return (0); +} +#endif + +void +r21a_iq_calib_sw(struct rtwn_softc *sc) +{ +#define R21A_MAX_NRXCHAINS 2 + uint32_t saved_bb_vals[nitems(r21a_iq_bb_regs)]; + uint32_t saved_afe_vals[nitems(r21a_iq_afe_regs)]; + uint32_t saved_rf_vals[nitems(r21a_iq_rf_regs) * R21A_MAX_NRXCHAINS]; + + KASSERT(sc->nrxchains <= R21A_MAX_NRXCHAINS, + ("nrxchains > %d (%d)\n", R21A_MAX_NRXCHAINS, sc->nrxchains)); + + RTWN_DPRINTF(sc, RTWN_DEBUG_CALIB, "%s: SW IQ calibration: TODO\n", + __func__); + + /* Save registers. */ + r12a_save_bb_afe_vals(sc, saved_bb_vals, r21a_iq_bb_regs, + nitems(r21a_iq_bb_regs)); + r12a_save_bb_afe_vals(sc, saved_afe_vals, r21a_iq_afe_regs, + nitems(r21a_iq_afe_regs)); + r12a_save_rf_vals(sc, saved_rf_vals, r21a_iq_rf_regs, + nitems(r21a_iq_rf_regs)); + +#ifdef RTWN_TODO + /* Configure MAC. */ + r12a_iq_config_mac(sc); + r21a_iq_tx(sc); +#endif + + /* Restore registers. */ + r12a_restore_rf_vals(sc, saved_rf_vals, r21a_iq_rf_regs, + nitems(r21a_iq_rf_regs)); + r12a_restore_bb_afe_vals(sc, saved_afe_vals, r21a_iq_afe_regs, + nitems(r21a_iq_afe_regs)); + + /* Select page C1. */ + rtwn_bb_setbits(sc, R12A_TXAGC_TABLE_SELECT, 0, 0x80000000); + + rtwn_bb_write(sc, R12A_SLEEP_NAV(0), 0); + rtwn_bb_write(sc, R12A_PMPD(0), 0); + rtwn_bb_write(sc, 0xc88, 0); + rtwn_bb_write(sc, 0xc8c, 0x3c000000); + rtwn_bb_write(sc, 0xc90, 0x80); + rtwn_bb_write(sc, 0xc94, 0); + rtwn_bb_write(sc, 0xcc4, 0x20040000); + rtwn_bb_write(sc, 0xcc8, 0x20000000); + rtwn_bb_write(sc, 0xcb8, 0); + + r12a_restore_bb_afe_vals(sc, saved_bb_vals, r21a_iq_bb_regs, + nitems(r21a_iq_bb_regs)); +#undef R21A_MAX_NRXCHAINS +} diff --git a/sys/dev/rtwn/rtl8821a/r21a_chan.c b/sys/dev/rtwn/rtl8821a/r21a_chan.c new file mode 100644 index 000000000000..49305057d2c1 --- /dev/null +++ b/sys/dev/rtwn/rtl8821a/r21a_chan.c @@ -0,0 +1,153 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include +#include + +#include + +#include +#include + + +static void +r21a_bypass_ext_lna_2ghz(struct rtwn_softc *sc) +{ + rtwn_bb_setbits(sc, R12A_RFE_INV(0), 0x00100000, 0); + rtwn_bb_setbits(sc, R12A_RFE_INV(0), 0x00400000, 0); + rtwn_bb_setbits(sc, R12A_RFE_PINMUX(0), 0, 0x07); + rtwn_bb_setbits(sc, R12A_RFE_PINMUX(0), 0, 0x0700); +} + +void +r21a_set_band_2ghz(struct rtwn_softc *sc, uint32_t basicrates) +{ + struct r12a_softc *rs = sc->sc_priv; + + /* Enable CCK / OFDM. */ + rtwn_bb_setbits(sc, R12A_OFDMCCK_EN, + 0, R12A_OFDMCCK_EN_CCK | R12A_OFDMCCK_EN_OFDM); + + /* Turn off RF PA and LNA. */ + rtwn_bb_setbits(sc, R12A_RFE_PINMUX(0), + R12A_RFE_PINMUX_LNA_MASK, 0x7000); + rtwn_bb_setbits(sc, R12A_RFE_PINMUX(0), + R12A_RFE_PINMUX_PA_A_MASK, 0x70); + + if (rs->ext_lna_2g) { + /* Turn on 2.4 GHz external LNA. */ + rtwn_bb_setbits(sc, R12A_RFE_INV(0), 0, 0x00100000); + rtwn_bb_setbits(sc, R12A_RFE_INV(0), 0x00400000, 0); + rtwn_bb_setbits(sc, R12A_RFE_PINMUX(0), 0x05, 0x02); + rtwn_bb_setbits(sc, R12A_RFE_PINMUX(0), 0x0500, 0x0200); + } else { + /* Bypass 2.4 GHz external LNA. */ + r21a_bypass_ext_lna_2ghz(sc); + } + + /* Select AGC table. */ + rtwn_bb_setbits(sc, R12A_TX_SCALE(0), 0x0f00, 0); + + rtwn_bb_setbits(sc, R12A_TX_PATH, 0xf0, 0x10); + rtwn_bb_setbits(sc, R12A_CCK_RX_PATH, 0x0f000000, 0x01000000); + + /* Write basic rates. */ + rtwn_set_basicrates(sc, basicrates); + + rtwn_write_1(sc, R12A_CCK_CHECK, 0); +} + +void +r21a_set_band_5ghz(struct rtwn_softc *sc, uint32_t basicrates) +{ + struct r12a_softc *rs = sc->sc_priv; + int ntries; + + rtwn_bb_setbits(sc, R12A_RFE_PINMUX(0), + R12A_RFE_PINMUX_LNA_MASK, 0x5000); + rtwn_bb_setbits(sc, R12A_RFE_PINMUX(0), + R12A_RFE_PINMUX_PA_A_MASK, 0x40); + + if (rs->ext_lna_2g) { + /* Bypass 2.4 GHz external LNA. */ + r21a_bypass_ext_lna_2ghz(sc); + } + + rtwn_write_1(sc, R12A_CCK_CHECK, R12A_CCK_CHECK_5GHZ); + + for (ntries = 0; ntries < 100; ntries++) { + if ((rtwn_read_2(sc, R12A_TXPKT_EMPTY) & 0x30) == 0x30) + break; + + rtwn_delay(sc, 25); + } + if (ntries == 100) { + device_printf(sc->sc_dev, + "%s: TXPKT_EMPTY check failed (%04X)\n", + __func__, rtwn_read_2(sc, R12A_TXPKT_EMPTY)); + } + + /* Enable OFDM. */ + rtwn_bb_setbits(sc, R12A_OFDMCCK_EN, R12A_OFDMCCK_EN_CCK, + R12A_OFDMCCK_EN_OFDM); + + /* Select AGC table. */ + rtwn_bb_setbits(sc, R12A_TX_SCALE(0), 0x0f00, 0x0100); + + rtwn_bb_setbits(sc, R12A_TX_PATH, 0xf0, 0); + rtwn_bb_setbits(sc, R12A_CCK_RX_PATH, 0, 0x0f000000); + + /* Write basic rates. */ + rtwn_set_basicrates(sc, basicrates); +} diff --git a/sys/dev/rtwn/rtl8821a/r21a_fw.c b/sys/dev/rtwn/rtl8821a/r21a_fw.c new file mode 100644 index 000000000000..b0d0a5bcabbf --- /dev/null +++ b/sys/dev/rtwn/rtl8821a/r21a_fw.c @@ -0,0 +1,78 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include +#include + + +#ifndef RTWN_WITHOUT_UCODE +void +r21a_fw_reset(struct rtwn_softc *sc, int reason) +{ + + /* Reset MCU IO wrapper. */ + rtwn_setbits_1(sc, R92C_RSV_CTRL, 0x02, 0); + rtwn_setbits_1(sc, R92C_RSV_CTRL + 1, 0x01, 0); + + rtwn_setbits_1_shift(sc, R92C_SYS_FUNC_EN, + R92C_SYS_FUNC_EN_CPUEN, 0, 1); + + /* Enable MCU IO wrapper. */ + rtwn_setbits_1(sc, R92C_RSV_CTRL, 0x02, 0); + rtwn_setbits_1(sc, R92C_RSV_CTRL + 1, 0, 0x01); + + rtwn_setbits_1_shift(sc, R92C_SYS_FUNC_EN, + 0, R92C_SYS_FUNC_EN_CPUEN, 1); +} +#endif diff --git a/sys/dev/rtwn/rtl8821a/r21a_init.c b/sys/dev/rtwn/rtl8821a/r21a_init.c new file mode 100644 index 000000000000..903a1f97017b --- /dev/null +++ b/sys/dev/rtwn/rtl8821a/r21a_init.c @@ -0,0 +1,358 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include + +#include +#include +#include + + +int +r21a_power_on(struct rtwn_softc *sc) +{ +#define RTWN_CHK(res) do { \ + if (res != 0) \ + return (EIO); \ +} while(0) + int ntries; + + /* Clear suspend and power down bits.*/ + RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, + R92C_APS_FSMCO_AFSM_HSUS | R92C_APS_FSMCO_APDM_HPDN, 0, 1)); + + /* Disable GPIO9 as EXT WAKEUP. */ + RTWN_CHK(rtwn_setbits_1(sc, R92C_GPIO_INTM + 2, 0x01, 0)); + + /* Enable WL suspend. */ + RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, + R92C_APS_FSMCO_AFSM_HSUS | R92C_APS_FSMCO_AFSM_PCIE, 0, 1)); + + /* Enable LDOA12 MACRO block for all interfaces. */ + RTWN_CHK(rtwn_setbits_1(sc, R92C_LDOA15_CTRL, 0, R92C_LDOA15_CTRL_EN)); + + /* Disable BT_GPS_SEL pins. */ + RTWN_CHK(rtwn_setbits_1(sc, 0x067, 0x10, 0)); + + /* 1 ms delay. */ + rtwn_delay(sc, 1000); + + /* Release analog Ips to digital isolation. */ + RTWN_CHK(rtwn_setbits_1(sc, R92C_SYS_ISO_CTRL, + R92C_SYS_ISO_CTRL_IP2MAC, 0)); + + /* Disable SW LPS and WL suspend. */ + RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, + R92C_APS_FSMCO_APFM_RSM | + R92C_APS_FSMCO_AFSM_HSUS | + R92C_APS_FSMCO_AFSM_PCIE, 0, 1)); + + /* Wait for power ready bit. */ + for (ntries = 0; ntries < 5000; ntries++) { + if (rtwn_read_4(sc, R92C_APS_FSMCO) & R92C_APS_FSMCO_SUS_HOST) + break; + rtwn_delay(sc, 10); + } + if (ntries == 5000) { + device_printf(sc->sc_dev, + "timeout waiting for chip power up\n"); + return (ETIMEDOUT); + } + + /* Release WLON reset. */ + RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, 0, + R92C_APS_FSMCO_RDY_MACON, 2)); + + /* Disable HWPDN. */ + RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, + R92C_APS_FSMCO_APDM_HPDN, 0, 1)); + + /* Disable WL suspend. */ + RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, + R92C_APS_FSMCO_AFSM_HSUS | R92C_APS_FSMCO_AFSM_PCIE, 0, 1)); + + RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, 0, + R92C_APS_FSMCO_APFM_ONMAC, 1)); + for (ntries = 0; ntries < 5000; ntries++) { + if (!(rtwn_read_2(sc, R92C_APS_FSMCO) & + R92C_APS_FSMCO_APFM_ONMAC)) + break; + rtwn_delay(sc, 10); + } + if (ntries == 5000) + return (ETIMEDOUT); + + /* Switch DPDT_SEL_P output from WL BB. */ + RTWN_CHK(rtwn_setbits_1(sc, R92C_LEDCFG3, 0, 0x01)); + + /* switch for PAPE_G/PAPE_A from WL BB; switch LNAON from WL BB. */ + RTWN_CHK(rtwn_setbits_1(sc, 0x067, 0, 0x30)); + + RTWN_CHK(rtwn_setbits_1(sc, 0x025, 0x40, 0)); + + /* Enable falling edge triggering interrupt. */ + RTWN_CHK(rtwn_setbits_1(sc, R92C_GPIO_INTM + 1, 0, 0x02)); + + /* Enable GPIO9 interrupt mode. */ + RTWN_CHK(rtwn_setbits_1(sc, 0x063, 0, 0x02)); + + /* Enable GPIO9 input mode. */ + RTWN_CHK(rtwn_setbits_1(sc, 0x062, 0x02, 0)); + + /* Enable HSISR GPIO interrupt. */ + RTWN_CHK(rtwn_setbits_1(sc, R92C_HSIMR, 0, 0x01)); + + /* Enable HSISR GPIO9 interrupt. */ + RTWN_CHK(rtwn_setbits_1(sc, R92C_HSIMR + 2, 0, 0x02)); + + /* XTAL trim. */ + RTWN_CHK(rtwn_setbits_1(sc, R92C_APE_PLL_CTRL_EXT + 2, 0xFF, 0x82)); + + RTWN_CHK(rtwn_setbits_1(sc, R92C_AFE_MISC, 0, 0x40)); + + /* Enable MAC DMA/WMAC/SCHEDULE/SEC blocks. */ + RTWN_CHK(rtwn_write_2(sc, R92C_CR, 0x0000)); + RTWN_CHK(rtwn_setbits_2(sc, R92C_CR, 0, + R92C_CR_HCI_TXDMA_EN | R92C_CR_TXDMA_EN | + R92C_CR_HCI_RXDMA_EN | R92C_CR_RXDMA_EN | + R92C_CR_PROTOCOL_EN | R92C_CR_SCHEDULE_EN | + ((sc->sc_hwcrypto != RTWN_CRYPTO_SW) ? R92C_CR_ENSEC : 0) | + R92C_CR_CALTMR_EN)); + + if (rtwn_read_4(sc, R92C_SYS_CFG) & R92C_SYS_CFG_TRP_BT_EN) + RTWN_CHK(rtwn_setbits_1(sc, 0x07C, 0, 0x40)); + + return (0); +#undef RTWN_CHK +} + +void +r21a_power_off(struct rtwn_softc *sc) +{ + struct r12a_softc *rs = sc->sc_priv; + int error, ntries; + + /* Stop Rx. */ + error = rtwn_write_1(sc, R92C_CR, 0); + if (error == ENXIO) /* hardware gone */ + return; + + /* Move card to Low Power state. */ + /* Block all Tx queues. */ + rtwn_write_1(sc, R92C_TXPAUSE, R92C_TX_QUEUE_ALL); + + for (ntries = 0; ntries < 10; ntries++) { + /* Should be zero if no packet is transmitting. */ + if (rtwn_read_4(sc, R88E_SCH_TXCMD) == 0) + break; + + rtwn_delay(sc, 5000); + } + if (ntries == 10) { + device_printf(sc->sc_dev, "%s: failed to block Tx queues\n", + __func__); + return; + } + + /* CCK and OFDM are disabled, and clock are gated. */ + rtwn_setbits_1(sc, R92C_SYS_FUNC_EN, R92C_SYS_FUNC_EN_BBRSTB, 0); + + rtwn_delay(sc, 1); + + /* Reset whole BB. */ + rtwn_setbits_1(sc, R92C_SYS_FUNC_EN, R92C_SYS_FUNC_EN_BB_GLB_RST, 0); + + /* Reset MAC TRX. */ + rtwn_write_1(sc, R92C_CR, + R92C_CR_HCI_TXDMA_EN | R92C_CR_HCI_RXDMA_EN); + + /* check if removed later. (?) */ + rtwn_setbits_1_shift(sc, R92C_CR, R92C_CR_ENSEC, 0, 1); + + /* Respond TxOK to scheduler */ + rtwn_setbits_1(sc, R92C_DUAL_TSF_RST, 0, R92C_DUAL_TSF_RST_TXOK); + + /* If firmware in ram code, do reset. */ +#ifndef RTWN_WITHOUT_UCODE + if (rtwn_read_1(sc, R92C_MCUFWDL) & R92C_MCUFWDL_RAM_DL_SEL) + r21a_fw_reset(sc, RTWN_FW_RESET_SHUTDOWN); +#endif + + /* Reset MCU. */ + rtwn_setbits_1_shift(sc, R92C_SYS_FUNC_EN, R92C_SYS_FUNC_EN_CPUEN, + 0, 1); + rtwn_write_1(sc, R92C_MCUFWDL, 0); + + /* Move card to Disabled state. */ + /* Turn off RF. */ + rtwn_write_1(sc, R92C_RF_CTRL, 0); + + rtwn_setbits_1(sc, R92C_LEDCFG3, 0x01, 0); + + /* Enable rising edge triggering interrupt. */ + rtwn_setbits_1(sc, R92C_GPIO_INTM + 1, 0x02, 0); + + /* Release WLON reset. */ + rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, 0, + R92C_APS_FSMCO_RDY_MACON, 2); + + /* Turn off MAC by HW state machine */ + rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, 0, R92C_APS_FSMCO_APFM_OFF, + 1); + for (ntries = 0; ntries < 10; ntries++) { + /* Wait until it will be disabled. */ + if ((rtwn_read_2(sc, R92C_APS_FSMCO) & + R92C_APS_FSMCO_APFM_OFF) == 0) + break; + + rtwn_delay(sc, 5000); + } + if (ntries == 10) { + device_printf(sc->sc_dev, "%s: could not turn off MAC\n", + __func__); + return; + } + + /* Analog Ips to digital isolation. */ + rtwn_setbits_1(sc, R92C_SYS_ISO_CTRL, 0, R92C_SYS_ISO_CTRL_IP2MAC); + + /* Disable LDOA12 MACRO block. */ + rtwn_setbits_1(sc, R92C_LDOA15_CTRL, R92C_LDOA15_CTRL_EN, 0); + + /* Enable WL suspend. */ + rtwn_setbits_1_shift(sc, R92C_APS_FSMCO, R92C_APS_FSMCO_AFSM_PCIE, + R92C_APS_FSMCO_AFSM_HSUS, 1); + + /* Enable GPIO9 as EXT WAKEUP. */ + rtwn_setbits_1(sc, R92C_GPIO_INTM + 2, 0, 0x01); + + rs->rs_flags &= ~R12A_IQK_RUNNING; +} + +int +r21a_check_condition(struct rtwn_softc *sc, const uint8_t cond[]) +{ + struct r12a_softc *rs = sc->sc_priv; + uint8_t mask; + int i; + + RTWN_DPRINTF(sc, RTWN_DEBUG_RESET, + "%s: condition byte 0: %02X; ext 5ghz pa/lna %d/%d\n", + __func__, cond[0], rs->ext_pa_5g, rs->ext_lna_5g); + + if (cond[0] == 0) + return (1); + + mask = 0; + if (rs->ext_pa_5g) + mask |= R21A_COND_EXT_PA_5G; + if (rs->ext_lna_5g) + mask |= R21A_COND_EXT_LNA_5G; + if (rs->bt_coex) + mask |= R21A_COND_BT; + if (!rs->ext_pa_2g && !rs->ext_lna_2g && + !rs->ext_pa_5g && !rs->ext_lna_5g && !rs->bt_coex) + mask = R21A_COND_BOARD_DEF; + + if (mask == 0) + return (0); + + for (i = 0; i < RTWN_MAX_CONDITIONS && cond[i] != 0; i++) + if (cond[i] == mask) + return (1); + + return (0); +} + +void +r21a_crystalcap_write(struct rtwn_softc *sc) +{ + struct r12a_softc *rs = sc->sc_priv; + uint32_t reg; + uint8_t val; + + val = rs->crystalcap & 0x3f; + reg = rtwn_bb_read(sc, R92C_MAC_PHY_CTRL); + reg = RW(reg, R21A_MAC_PHY_CRYSTALCAP, val | (val << 6)); + rtwn_bb_write(sc, R92C_MAC_PHY_CTRL, reg); +} + +int +r21a_init_bcnq1_boundary(struct rtwn_softc *sc) +{ +#define RTWN_CHK(res) do { \ + if (res != 0) \ + return (EIO); \ +} while(0) + RTWN_CHK(rtwn_write_1(sc, R88E_TXPKTBUF_BCNQ1_BDNY, + R21A_BCNQ0_BOUNDARY)); + RTWN_CHK(rtwn_write_1(sc, R21A_DWBCN1_CTRL + 1, + R21A_BCNQ0_BOUNDARY)); + RTWN_CHK(rtwn_setbits_1_shift(sc, R21A_DWBCN1_CTRL, 0, + R21A_DWBCN1_CTRL_SEL_EN, 2)); + + return (0); +#undef RTWN_CHK +} + +void +r21a_init_ampdu_fwhw(struct rtwn_softc *sc) +{ + rtwn_write_1(sc, R92C_FWHW_TXQ_CTRL, + R92C_FWHW_TXQ_CTRL_AMPDU_RTY_NEW); + rtwn_write_4(sc, R92C_FAST_EDCA_CTRL, 0x03087777); +} diff --git a/sys/dev/rtwn/rtl8821a/r21a_led.c b/sys/dev/rtwn/rtl8821a/r21a_led.c new file mode 100644 index 000000000000..3e682c2a5efd --- /dev/null +++ b/sys/dev/rtwn/rtl8821a/r21a_led.c @@ -0,0 +1,67 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include +#include + + +void +r21a_set_led(struct rtwn_softc *sc, int led, int on) +{ + if (led == RTWN_LED_LINK) { + rtwn_write_1(sc, R92C_LEDCFG2, + R12A_LEDCFG2_ENA | (on ? 0 : R92C_LEDCFG0_DIS)); + sc->ledlink = on; /* Save LED state. */ + } +} diff --git a/sys/dev/rtwn/rtl8821a/r21a_priv.h b/sys/dev/rtwn/rtl8821a/r21a_priv.h new file mode 100644 index 000000000000..d4cfa46afecf --- /dev/null +++ b/sys/dev/rtwn/rtl8821a/r21a_priv.h @@ -0,0 +1,464 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef R21A_PRIV_H +#define R21A_PRIV_H + +/* + * MAC initialization values. + */ +static const struct rtwn_mac_prog rtl8821au_mac[] = { + { 0x421, 0x0f }, { 0x428, 0x0a }, { 0x429, 0x10 }, { 0x430, 0x00 }, + { 0x431, 0x00 }, { 0x432, 0x00 }, { 0x433, 0x01 }, { 0x434, 0x04 }, + { 0x435, 0x05 }, { 0x436, 0x07 }, { 0x437, 0x08 }, { 0x43c, 0x04 }, + { 0x43d, 0x05 }, { 0x43e, 0x07 }, { 0x43f, 0x08 }, { 0x440, 0x5d }, + { 0x441, 0x01 }, { 0x442, 0x00 }, { 0x444, 0x10 }, { 0x445, 0x00 }, + { 0x446, 0x00 }, { 0x447, 0x00 }, { 0x448, 0x00 }, { 0x449, 0xf0 }, + { 0x44a, 0x0f }, { 0x44b, 0x3e }, { 0x44c, 0x10 }, { 0x44d, 0x00 }, + { 0x44e, 0x00 }, { 0x44f, 0x00 }, { 0x450, 0x00 }, { 0x451, 0xf0 }, + { 0x452, 0x0f }, { 0x453, 0x00 }, { 0x456, 0x5e }, { 0x460, 0x66 }, + { 0x461, 0x66 }, { 0x4c8, 0x3f }, { 0x4c9, 0xff }, { 0x4cc, 0xff }, + { 0x4cd, 0xff }, { 0x4ce, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 }, + { 0x502, 0x2f }, { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 }, + { 0x506, 0x5e }, { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 }, + { 0x50a, 0x5e }, { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 }, + { 0x50e, 0x00 }, { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a }, + { 0x516, 0x0a }, { 0x525, 0x4f }, { 0x550, 0x10 }, { 0x551, 0x10 }, + { 0x559, 0x02 }, { 0x55c, 0x50 }, { 0x55d, 0xff }, { 0x605, 0x30 }, + { 0x607, 0x07 }, { 0x608, 0x0e }, { 0x609, 0x2a }, { 0x620, 0xff }, + { 0x621, 0xff }, { 0x622, 0xff }, { 0x623, 0xff }, { 0x624, 0xff }, + { 0x625, 0xff }, { 0x626, 0xff }, { 0x627, 0xff }, { 0x638, 0x50 }, + { 0x63c, 0x0a }, { 0x63d, 0x0a }, { 0x63e, 0x0e }, { 0x63f, 0x0e }, + { 0x640, 0x40 }, { 0x642, 0x40 }, { 0x643, 0x00 }, { 0x652, 0xc8 }, + { 0x66e, 0x05 }, { 0x700, 0x21 }, { 0x701, 0x43 }, { 0x702, 0x65 }, + { 0x703, 0x87 }, { 0x708, 0x21 }, { 0x709, 0x43 }, { 0x70a, 0x65 }, + { 0x70b, 0x87 }, { 0x718, 0x40 } +}; + + +/* + * Baseband initialization values. + */ +#define R21A_COND_EXT_PA_5G 0x01 +#define R21A_COND_EXT_LNA_5G 0x02 +#define R21A_COND_BOARD_DEF 0x04 +#define R21A_COND_BT 0x08 + +static const uint16_t rtl8821au_bb_regs[] = { + 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, 0x820, 0x824, + 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, 0x840, 0x844, 0x848, + 0x84c, 0x850, 0x854, 0x858, 0x85c, 0x860, 0x864, 0x868, 0x86c, + 0x870, 0x874, 0x878, 0x87c, 0x8a0, 0x8a4, 0x8a8, 0x8ac, 0x8b4, + 0x8b8, 0x8bc, 0x8c0, 0x8c4, 0x8c8, 0x8cc, 0x8d4, 0x8d8, 0x8f8, + 0x8fc, 0x900, 0x90c, 0x910, 0x914, 0x918, 0x91c, 0x920, 0x924, + 0x928, 0x92c, 0x930, 0x934, 0x960, 0x964, 0x968, 0x96c, 0x970, + 0x974, 0x978, 0x97c, 0x980, 0x984, 0x988, 0x990, 0x994, 0x998, + 0x99c, 0x9a0, 0x9a4, 0x9a8, 0x9ac, 0x9b0, 0x9b4, 0x9b8, 0x9bc, + 0x9d0, 0x9d4, 0x9d8, 0x9dc, 0x9e0, 0x9e4, 0x9e8, 0xa00, 0xa04, + 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c, 0xa20, 0xa24, 0xa28, + 0xa2c, 0xa70, 0xa74, 0xa78, 0xa7c, 0xa80, 0xa84, 0xb00, 0xb04, + 0xb08, 0xb0c, 0xb10, 0xb14, 0xb18, 0xb1c, 0xb20, 0xb24, 0xb28, + 0xb2c, 0xb30, 0xb34, 0xb38, 0xb3c, 0xb40, 0xb44, 0xb48, 0xb4c, + 0xb50, 0xb54, 0xb58, 0xb5c, 0xc00, 0xc04, 0xc08, 0xc0c, 0xc10, + 0xc14, 0xc1c, 0xc20, 0xc24, 0xc28, 0xc2c, 0xc30, 0xc34, 0xc38, + 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, 0xc54, 0xc58, 0xc5c, + 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, 0xc74, 0xc78, 0xc7c, 0xc80, + 0xc84, 0xc94, 0xc98, 0xc9c, 0xca0, 0xca4, 0xca8, 0xcb0, 0xcb4, + 0xcb8 +}; + +static const uint32_t rtl8821au_bb_vals[] = { + 0x0020d090, 0x080112e0, 0x0e028211, 0x92131111, 0x20101261, + 0x020c3d10, 0x03a00385, 0x00000000, 0x00030fe0, 0x00000000, + 0x002081dd, 0x2aaaeec8, 0x0037a706, 0x06489b44, 0x0000095b, + 0xc0000001, 0x40003cde, 0x62103f8b, 0x6cfdffb8, 0x28874706, + 0x0001520c, 0x8060e000, 0x74210168, 0x6929c321, 0x79727432, + 0x8ca7a314, 0x888c2878, 0x08888888, 0x31612c2e, 0x00000152, + 0x000fd000, 0x00000013, 0x7f7f7f7f, 0xa2000338, 0x0ff0fa0a, + 0x000fc080, 0x6c10d7ff, 0x0ca52090, 0x1bf00020, 0x00000000, + 0x00013169, 0x08248492, 0x940008a0, 0x290b5612, 0x400002c0, + 0x00000000, 0x00000700, 0x00000000, 0x0000fc00, 0x00000404, + 0x1c1028c0, 0x64b11a1c, 0xe0767233, 0x055aa500, 0x00000004, + 0xfffe0000, 0xfffffffe, 0x001fffff, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x801fffff, 0x000003ff, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x27100000, + 0xffff0100, 0xffffff5c, 0xffffffff, 0x000000ff, 0x00480080, + 0x00000000, 0x00000000, 0x81081008, 0x01081008, 0x01081008, + 0x01081008, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00005d00, 0x00000003, 0x00000001, 0x00d047c8, 0x01ff800c, + 0x8c8a8300, 0x2e68000f, 0x9500bb78, 0x11144028, 0x00881117, + 0x89140f00, 0x1a1b0000, 0x090e1317, 0x00000204, 0x00900000, + 0x101fff00, 0x00000008, 0x00000900, 0x225b0606, 0x21805490, + 0x001f0000, 0x03100040, 0x0000b000, 0xae0201eb, 0x01003207, + 0x00009807, 0x01000000, 0x00000002, 0x00000002, 0x0000001f, + 0x03020100, 0x07060504, 0x0b0a0908, 0x0f0e0d0c, 0x13121110, + 0x17161514, 0x0000003a, 0x00000000, 0x00000000, 0x13000032, + 0x48080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000007, 0x00042020, 0x80410231, 0x00000000, 0x00000100, + 0x01000000, 0x40000003, 0x2c2c2c2c, 0x30303030, 0x30303030, + 0x2c2c2c2c, 0x2c2c2c2c, 0x2c2c2c2c, 0x2c2c2c2c, 0x2a2a2a2a, + 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000020, + 0x001c1208, 0x30000c1c, 0x00000058, 0x34344443, 0x07003333, + 0x19791979, 0x19791979, 0x19791979, 0x19791979, 0x19791979, + 0x19791979, 0x19791979, 0x19791979, 0x0100005c, 0x00000000, + 0x00000000, 0x00000029, 0x08040201, 0x80402010, 0x77775747, + 0x10000077, 0x00508240 +}; + +static const struct rtwn_bb_prog rtl8821au_bb[] = { + { + nitems(rtl8821au_bb_regs), + rtl8821au_bb_regs, + rtl8821au_bb_vals, + { 0 }, + NULL + } +}; + +static const uint32_t rtl8821au_agc_vals0[] = { + 0xbf000001, 0xbf020001, 0xbf040001, 0xbf060001, 0xbe080001, + 0xbd0a0001, 0xbc0c0001, 0xba0e0001, 0xb9100001, 0xb8120001, + 0xb7140001, 0xb6160001, 0xb5180001, 0xb41a0001, 0xb31c0001, + 0xb21e0001, 0xb1200001, 0xb0220001, 0xaf240001, 0xae260001, + 0xad280001, 0xac2a0001, 0xab2c0001, 0xaa2e0001, 0xa9300001, + 0xa8320001, 0xa7340001, 0xa6360001, 0xa5380001, 0xa43a0001, + 0x683c0001, 0x673e0001, 0x66400001, 0x65420001, 0x64440001, + 0x63460001, 0x62480001, 0x614a0001, 0x474c0001, 0x464e0001, + 0x45500001, 0x44520001, 0x43540001, 0x42560001, 0x41580001, + 0x285a0001, 0x275c0001, 0x265e0001, 0x25600001, 0x24620001, + 0x0a640001, 0x09660001, 0x08680001, 0x076a0001, 0x066c0001, + 0x056e0001, 0x04700001, 0x03720001, 0x02740001, 0x01760001, + 0x01780001, 0x017a0001, 0x017c0001, 0x017e0001 +}, rtl8821au_agc_vals1_pa_lna_5g[] = { + 0xfb000101, 0xfa020101, 0xf9040101, 0xf8060101, 0xf7080101, + 0xf60a0101, 0xf50c0101, 0xf40e0101, 0xf3100101, 0xf2120101, + 0xf1140101, 0xf0160101, 0xef180101, 0xee1a0101, 0xed1c0101, + 0xec1e0101, 0xeb200101, 0xea220101, 0xe9240101, 0xe8260101, + 0xe7280101, 0xe62a0101, 0xe52c0101, 0xe42e0101, 0xe3300101, + 0xa5320101, 0xa4340101, 0xa3360101, 0x87380101, 0x863a0101, + 0x853c0101, 0x843e0101, 0x69400101, 0x68420101, 0x67440101, + 0x66460101, 0x49480101, 0x484a0101, 0x474c0101, 0x2a4e0101, + 0x29500101, 0x28520101, 0x27540101, 0x26560101, 0x25580101, + 0x245a0101, 0x235c0101, 0x055e0101, 0x04600101, 0x03620101, + 0x02640101, 0x01660101, 0x01680101, 0x016a0101, 0x016c0101, + 0x016e0101, 0x01700101, 0x01720101 +}, rtl8821au_agc_vals1[] = { + 0xff000101, 0xff020101, 0xfe040101, 0xfd060101, 0xfc080101, + 0xfd0a0101, 0xfc0c0101, 0xfb0e0101, 0xfa100101, 0xf9120101, + 0xf8140101, 0xf7160101, 0xf6180101, 0xf51a0101, 0xf41c0101, + 0xf31e0101, 0xf2200101, 0xf1220101, 0xf0240101, 0xef260101, + 0xee280101, 0xed2a0101, 0xec2c0101, 0xeb2e0101, 0xea300101, + 0xe9320101, 0xe8340101, 0xe7360101, 0xe6380101, 0xe53a0101, + 0xe43c0101, 0xe33e0101, 0xa5400101, 0xa4420101, 0xa3440101, + 0x87460101, 0x86480101, 0x854a0101, 0x844c0101, 0x694e0101, + 0x68500101, 0x67520101, 0x66540101, 0x49560101, 0x48580101, + 0x475a0101, 0x2a5c0101, 0x295e0101, 0x28600101, 0x27620101, + 0x26640101, 0x25660101, 0x24680101, 0x236a0101, 0x056c0101, + 0x046e0101, 0x03700101, 0x02720101 +}, rtl8821au_agc_vals2[] = { + 0x01740101, 0x01760101, 0x01780101, 0x017a0101, 0x017c0101, + 0x017e0101 +}; + +static const struct rtwn_agc_prog rtl8821au_agc[] = { + { + nitems(rtl8821au_agc_vals0), + rtl8821au_agc_vals0, + { 0 }, + NULL + }, + /* + * For devices with external 5GHz PA / LNA. + */ + { + nitems(rtl8821au_agc_vals1_pa_lna_5g), + rtl8821au_agc_vals1_pa_lna_5g, + { R21A_COND_EXT_PA_5G | R21A_COND_EXT_LNA_5G, 0 }, + /* + * Others. + */ + &(const struct rtwn_agc_prog){ + nitems(rtl8821au_agc_vals1), + rtl8821au_agc_vals1, + { 0 }, + NULL + } + }, + { + nitems(rtl8821au_agc_vals2), + rtl8821au_agc_vals2, + { 0 }, + NULL + } +}; + + +/* + * RF initialization values. + */ +static const uint8_t rtl8821au_rf_regs0[] = { + 0x18, 0x56, 0x66, 0x00, 0x1e, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0xef, 0x3e, 0x3f, + 0x3e, 0x3f, 0x3e, 0x3f, 0x3e, 0x3f, 0xef, 0x18, 0x89, 0x8b, 0xef, + 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, + 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, + 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, + 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, + 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, + 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0x3a, 0x3b, 0x3c, 0xef, 0xef +}, rtl8821au_rf_regs1[] = { + 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, + 0x34, 0x34 +}, rtl8821au_rf_regs2[] = { + 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, + 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0xef, 0x18, + 0xef +}, rtl8821au_rf_regs3[] = { + 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0xef, 0x18, + 0xef, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, + 0x36, 0x36, 0xef, 0xef, 0x3c, 0x3c +}, rtl8821au_rf_regs4[] = { + 0x3c, 0xef, 0x18, 0xef, 0x08, 0xef, 0xdf, 0x1f, 0x58, 0x59, 0x61, + 0x62, 0x63, 0x64, 0x65 +}, rtl8821au_rf_regs5[] = { + 0x18, 0xef, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, + 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xef, 0xef, 0x34, 0x34, + 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0xef, 0xed, + 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, + 0xed, 0xed, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xed, + 0xef, 0xdf, 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0xef, 0x51, + 0x52, 0x53, 0x54, 0x56, 0x51, 0x52, 0x53, 0x70, 0x71, 0x72, 0x74, + 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0xed, 0x45, 0x45, 0x45, + 0x46, 0x46, 0x46, 0x46, 0xdf, 0xb3, 0xb4, 0xb7, 0x1c, 0xc4, 0x18, + 0xfe, 0xfe, 0x18, +}; + +static const uint32_t rtl8821au_rf_vals0[] = { + 0x1712a, 0x51cf2, 0x40000, 0x10000, 0x80000, 0x00830, 0x21800, + 0x28000, 0x48000, 0x94838, 0x44980, 0x48000, 0x0d480, 0x42240, + 0xf0380, 0x90000, 0x22852, 0x65540, 0x88001, 0x20000, 0x00380, + 0x90018, 0x20380, 0xa0018, 0x40308, 0xa0018, 0x60018, 0xa0018, + 0x00000, 0x1712a, 0x00080, 0x80180, 0x01000, 0x00244, 0x38027, + 0x82000, 0x00244, 0x30113, 0x82000, 0x0014c, 0x28027, 0x82000, + 0x000cc, 0x27027, 0x42000, 0x0014c, 0x1f913, 0x42000, 0x0010c, + 0x17f10, 0x12000, 0x000d0, 0x08027, 0xca000, 0x00244, 0x78027, + 0x82000, 0x00244, 0x70113, 0x82000, 0x0014c, 0x68027, 0x82000, + 0x000cc, 0x67027, 0x42000, 0x0014c, 0x5f913, 0x42000, 0x0010c, + 0x57f10, 0x12000, 0x000d0, 0x48027, 0xca000, 0x00244, 0xb8027, + 0x82000, 0x00244, 0xb0113, 0x82000, 0x0014c, 0xa8027, 0x82000, + 0x000cc, 0xa7027, 0x42000, 0x0014c, 0x9f913, 0x42000, 0x0010c, + 0x97f10, 0x12000, 0x000d0, 0x88027, 0xca000, 0x00000, 0x01100 +}, rtl8821au_rf_vals1_def_or_bt[] = { + 0x4adf5, 0x49df2, 0x48def, 0x47dec, 0x46de9, 0x45ccb, 0x4488d, + 0x4348d, 0x4248a, 0x4108d, 0x4008a, 0x2adf4, 0x29df1 +}, rtl8821au_rf_vals1_ext_5g[] = { + 0x4a0f3, 0x490b1, 0x480ae, 0x470ab, 0x4608b, 0x45069, 0x44048, + 0x43045, 0x42026, 0x41023, 0x40002, 0x2a0f3, 0x290f0 +}, rtl8821au_rf_vals1[] = { + 0x4adf7, 0x49df3, 0x48def, 0x47dec, 0x46de9, 0x45ccb, 0x4488d, + 0x4348d, 0x4248a, 0x4108d, 0x4008a, 0x2adf7, 0x29df2 +}, rtl8821au_rf_vals2_ext_5g[] = { + 0x280af, 0x270ac, 0x2608b, 0x25069, 0x24048, 0x23045, 0x22026, + 0x21023, 0x20002, 0x0a0d7, 0x090d3, 0x080b1, 0x070ae, 0x0608d, + 0x0506b, 0x0404a, 0x03047, 0x02044, 0x01025, 0x00004, 0x00000, + 0x1712a, 0x00040 +}, rtl8821au_rf_vals2[] = { + 0x28dee, 0x27deb, 0x26ccd, 0x25cca, 0x2488c, 0x2384c, 0x22849, + 0x21449, 0x2004d, 0x0adf7, 0x09df4, 0x08df1, 0x07dee, 0x06dcd, + 0x05ccd, 0x04cca, 0x0388c, 0x02888, 0x01488, 0x00486, 0x00000, + 0x1712a, 0x00040 +}, rtl8821au_rf_vals3_def_or_bt[] = { + 0x00128, 0x08128, 0x10128, 0x201c8, 0x281c8, 0x301c8, 0x401c8, + 0x481c8, 0x501c8, 0x00000, 0x1712a, 0x00010, 0x063b5, 0x0e3b5, + 0x163b5, 0x1e3b5, 0x263b5, 0x2e3b5, 0x363b5, 0x3e3b5, 0x463b5, + 0x4e3b5, 0x563b5, 0x5e3b5, 0x00000, 0x00008, 0x001b6, 0x00492 +}, rtl8821au_rf_vals3[] = { + 0x00145, 0x08145, 0x10145, 0x20196, 0x28196, 0x30196, 0x401c7, + 0x481c7, 0x501c7, 0x00000, 0x1712a, 0x00010, 0x056b3, 0x0d6b3, + 0x156b3, 0x1d6b3, 0x26634, 0x2e634, 0x36634, 0x3e634, 0x467b4, + 0x4e7b4, 0x567b4, 0x5e7b4, 0x00000, 0x00008, 0x0022a, 0x00594 +}, rtl8821au_rf_vals4_def_or_bt[] = { + 0x00800, 0x00000, 0x1712a, 0x00002, 0x02000, 0x00000, 0x000c0, + 0x00064, 0x81184, 0x6016c, 0xefd83, 0x93fcc, 0x110eb, 0x1c27c, + 0x93016 +}, rtl8821au_rf_vals4_ext_5g[] = { + 0x00820, 0x00000, 0x1712a, 0x00002, 0x02000, 0x00000, 0x000c0, + 0x00064, 0x81184, 0x6016c, 0xead53, 0x93bc4, 0x110e9, 0x1c67c, + 0x93015 +}, rtl8821au_rf_vals4[] = { + 0x00900, 0x00000, 0x1712a, 0x00002, 0x02000, 0x00000, 0x000c0, + 0x00064, 0x81184, 0x6016c, 0xead53, 0x93bc4, 0x714e9, 0x1c67c, + 0x91016 +}, rtl8821au_rf_vals5[] = { + 0x00006, 0x02000, 0x3824b, 0x3024b, 0x2844b, 0x20f4b, 0x18f4b, + 0x104b2, 0x08049, 0x00148, 0x7824b, 0x7024b, 0x6824b, 0x60f4b, + 0x58f4b, 0x504b2, 0x48049, 0x40148, 0x00000, 0x00100, 0x0adf3, + 0x09df0, 0x08d70, 0x07d6d, 0x06cee, 0x05ccc, 0x044ec, 0x034ac, + 0x0246d, 0x0106f, 0x0006c, 0x00000, 0x00010, 0x0adf2, 0x09def, + 0x08dec, 0x07de9, 0x06cec, 0x05ce9, 0x044ec, 0x034e9, 0x0246c, + 0x01469, 0x0006c, 0x00000, 0x00001, 0x38da7, 0x300c2, 0x288e2, + 0x200b8, 0x188a5, 0x10fbc, 0x08f71, 0x00240, 0x00000, 0x020a2, + 0x00080, 0x00120, 0x08120, 0x10120, 0x00085, 0x08085, 0x10085, + 0x18085, 0x00000, 0x00c31, 0x00622, 0xfc70b, 0x0017e, 0x51df3, + 0x00c01, 0x006d6, 0xfc649, 0x49661, 0x7843e, 0x00382, 0x51400, + 0x00160, 0x08160, 0x10160, 0x00124, 0x08124, 0x10124, 0x18124, + 0x0000c, 0x00140, 0x08140, 0x10140, 0x00124, 0x08124, 0x10124, + 0x18124, 0x00088, 0xf0e18, 0x1214c, 0x3000c, 0x539d2, 0xafe00, + 0x1f12a, 0x0c350, 0x0c350, 0x1712a, +}; + +static const struct rtwn_rf_prog rtl8821au_rf[] = { + /* RF chain 0. */ + { + nitems(rtl8821au_rf_regs0), + rtl8821au_rf_regs0, + rtl8821au_rf_vals0, + { 0 }, + NULL + }, + /* + * No external PA/LNA; with or without BT. + */ + { + nitems(rtl8821au_rf_regs1), + rtl8821au_rf_regs1, + rtl8821au_rf_vals1_def_or_bt, + { R21A_COND_BOARD_DEF, R21A_COND_BT, 0 }, + /* + * With external 5GHz PA and LNA. + */ + &(const struct rtwn_rf_prog){ + nitems(rtl8821au_rf_regs1), + rtl8821au_rf_regs1, + rtl8821au_rf_vals1_ext_5g, + { R21A_COND_EXT_PA_5G | R21A_COND_EXT_LNA_5G, 0 }, + /* + * Others. + */ + &(const struct rtwn_rf_prog){ + nitems(rtl8821au_rf_regs1), + rtl8821au_rf_regs1, + rtl8821au_rf_vals1, + { 0 }, + NULL + } + } + }, + /* + * With external 5GHz PA and LNA. + */ + { + nitems(rtl8821au_rf_regs2), + rtl8821au_rf_regs2, + rtl8821au_rf_vals2_ext_5g, + { R21A_COND_EXT_PA_5G | R21A_COND_EXT_LNA_5G, 0 }, + /* + * Others. + */ + &(const struct rtwn_rf_prog){ + nitems(rtl8821au_rf_regs2), + rtl8821au_rf_regs2, + rtl8821au_rf_vals2, + { 0 }, + NULL + } + }, + /* + * No external PA/LNA; with or without BT. + */ + { + nitems(rtl8821au_rf_regs3), + rtl8821au_rf_regs3, + rtl8821au_rf_vals3_def_or_bt, + { R21A_COND_BOARD_DEF, R21A_COND_BT, 0 }, + /* + * Others. + */ + &(const struct rtwn_rf_prog){ + nitems(rtl8821au_rf_regs3), + rtl8821au_rf_regs3, + rtl8821au_rf_vals3, + { 0 }, + NULL + } + }, + /* + * No external PA/LNA; with or without BT. + */ + { + nitems(rtl8821au_rf_regs4), + rtl8821au_rf_regs4, + rtl8821au_rf_vals4_def_or_bt, + { R21A_COND_BOARD_DEF, R21A_COND_BT, 0 }, + /* + * With external 5GHz PA and LNA. + */ + &(const struct rtwn_rf_prog){ + nitems(rtl8821au_rf_regs4), + rtl8821au_rf_regs4, + rtl8821au_rf_vals4_ext_5g, + { R21A_COND_EXT_PA_5G | R21A_COND_EXT_LNA_5G, 0 }, + /* + * Others. + */ + &(const struct rtwn_rf_prog){ + nitems(rtl8821au_rf_regs4), + rtl8821au_rf_regs4, + rtl8821au_rf_vals4, + { 0 }, + NULL + } + } + }, + { + nitems(rtl8821au_rf_regs5), + rtl8821au_rf_regs5, + rtl8821au_rf_vals5, + { 0 }, + NULL + }, + { 0, NULL, NULL, { 0 }, NULL } +}; + + +/* + * Registers to save before IQ calibration. + */ +static const uint16_t r21a_iq_bb_regs[] = { + 0x520, 0x550, 0x808, 0xa04, 0x90c, 0xc00, 0x838, 0x82c +}; + +static const uint16_t r21a_iq_afe_regs[] = { + 0xc5c, 0xc60, 0xc64, 0xc68 +}; + +static const uint8_t r21a_iq_rf_regs[] = { + 0x65, 0x8f, 0x0 +}; + +#endif /* R21A_PRIV_H */ diff --git a/sys/dev/rtwn/rtl8821a/r21a_reg.h b/sys/dev/rtwn/rtl8821a/r21a_reg.h new file mode 100644 index 000000000000..d13872d59cbc --- /dev/null +++ b/sys/dev/rtwn/rtl8821a/r21a_reg.h @@ -0,0 +1,50 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef R21A_REG_H +#define R21A_REG_H + +#include + +/* + * MAC registers. + */ +/* Tx DMA Configuration. */ +#define R21A_DWBCN0_CTRL R92C_TDECTRL +#define R21A_DWBCN1_CTRL 0x228 + + +/* Bits for R92C_MAC_PHY_CTRL. */ +#define R21A_MAC_PHY_CRYSTALCAP_M 0x00fff000 +#define R21A_MAC_PHY_CRYSTALCAP_S 12 + +/* Bits for R21A_DWBCN1_CTRL. */ +#define R21A_DWBCN1_CTRL_SEL_EN 0x00020000 +#define R21A_DWBCN1_CTRL_SEL_BCN1 0x00100000 + +#endif /* R21A_REG_H */ diff --git a/sys/dev/rtwn/rtl8821a/r21a_rom.c b/sys/dev/rtwn/rtl8821a/r21a_rom.c new file mode 100644 index 000000000000..cda5913e9a81 --- /dev/null +++ b/sys/dev/rtwn/rtl8821a/r21a_rom.c @@ -0,0 +1,91 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include + +#include +#include + + +void +r21a_parse_rom(struct rtwn_softc *sc, uint8_t *buf) +{ + struct r12a_softc *rs = sc->sc_priv; + struct r12a_rom *rom = (struct r12a_rom *)buf; + uint8_t pa_type, lna_type_2g, lna_type_5g; + + /* Read PA/LNA types. */ + pa_type = RTWN_GET_ROM_VAR(rom->pa_type, 0); + lna_type_2g = RTWN_GET_ROM_VAR(rom->lna_type_2g, 0); + lna_type_5g = RTWN_GET_ROM_VAR(rom->lna_type_5g, 0); + + rs->ext_pa_2g = R21A_ROM_IS_PA_EXT_2GHZ(pa_type); + rs->ext_pa_5g = R21A_ROM_IS_PA_EXT_5GHZ(pa_type); + rs->ext_lna_2g = R21A_ROM_IS_LNA_EXT(lna_type_2g); + rs->ext_lna_5g = R21A_ROM_IS_LNA_EXT(lna_type_5g); + + RTWN_LOCK(sc); + rs->bt_coex = + !!(rtwn_read_4(sc, R92C_MULTI_FUNC_CTRL) & R92C_MULTI_BT_FUNC_EN); + RTWN_UNLOCK(sc); + rs->bt_ant_num = (rom->rf_bt_opt & R12A_RF_BT_OPT_ANT_NUM); + + /* Read MAC address. */ + IEEE80211_ADDR_COPY(sc->sc_ic.ic_macaddr, rom->macaddr_21a); + + /* Execute common part of initialization. */ + r12a_parse_rom_common(sc, buf); +} diff --git a/sys/dev/rtwn/rtl8821a/r21a_rx.c b/sys/dev/rtwn/rtl8821a/r21a_rx.c new file mode 100644 index 000000000000..bd0721b3edc7 --- /dev/null +++ b/sys/dev/rtwn/rtl8821a/r21a_rx.c @@ -0,0 +1,88 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include + +#include + + +int8_t +r21a_get_rssi_cck(struct rtwn_softc *sc, void *physt) +{ + struct r12a_rx_phystat *stat = (struct r12a_rx_phystat *)physt; + int8_t lna_idx, rssi; + + lna_idx = (stat->cfosho[0] & 0xe0) >> 5; + rssi = -6 - 2*(stat->cfosho[0] & 0x1f); /* Pout - (2 * VGA_idx) */ + + switch (lna_idx) { + case 5: + rssi -= 32; + break; + case 4: + rssi -= 24; + break; + case 2: + rssi -= 11; + break; + case 1: + rssi += 5; + break; + case 0: + rssi += 21; + break; + } + + return (rssi); +} diff --git a/sys/dev/rtwn/rtl8821a/usb/r21au.h b/sys/dev/rtwn/rtl8821a/usb/r21au.h new file mode 100644 index 000000000000..e1e8b4692c57 --- /dev/null +++ b/sys/dev/rtwn/rtl8821a/usb/r21au.h @@ -0,0 +1,42 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef RTL8821AU_H +#define RTL8821AU_H + +#include + + +/* + * Function declarations. + */ +/* r21au_init.c */ +void r21au_init_tx_agg(struct rtwn_softc *); +void r21au_init_burstlen(struct rtwn_softc *); + +#endif /* RTL8821AU_H */ diff --git a/sys/dev/rtwn/rtl8821a/usb/r21au_attach.c b/sys/dev/rtwn/rtl8821a/usb/r21au_attach.c new file mode 100644 index 000000000000..a9bc47b8969b --- /dev/null +++ b/sys/dev/rtwn/rtl8821a/usb/r21au_attach.c @@ -0,0 +1,241 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include + +#include + +#include + +#include +#include + +#include +#include + +#include +#include + +#include + + +void r21au_attach(struct rtwn_usb_softc *); + +static void +r21a_postattach(struct rtwn_softc *sc) +{ + struct r12a_softc *rs = sc->sc_priv; + + if (rs->board_type == R92C_BOARD_TYPE_MINICARD || + rs->board_type == R92C_BOARD_TYPE_SOLO || + rs->board_type == R92C_BOARD_TYPE_COMBO) + sc->sc_set_led = r88e_set_led; + else + sc->sc_set_led = r21a_set_led; + + sc->sc_ic.ic_ioctl = r12a_ioctl_net; +} + +static void +r21a_attach_private(struct rtwn_softc *sc) +{ + struct r12a_softc *rs; + + rs = malloc(sizeof(struct r12a_softc), M_RTWN_PRIV, M_WAITOK | M_ZERO); + + rs->rs_flags = R12A_RXCKSUM_EN | R12A_RXCKSUM6_EN; + + rs->rs_fix_spur = rtwn_nop_softc_chan; + rs->rs_set_band_2ghz = r21a_set_band_2ghz; + rs->rs_set_band_5ghz = r21a_set_band_5ghz; + rs->rs_init_burstlen = r21au_init_burstlen; + rs->rs_init_ampdu_fwhw = r21a_init_ampdu_fwhw; + rs->rs_crystalcap_write = r21a_crystalcap_write; +#ifndef RTWN_WITHOUT_UCODE + rs->rs_iq_calib_fw_supported = r21a_iq_calib_fw_supported; +#endif + rs->rs_iq_calib_sw = r21a_iq_calib_sw; + + rs->ampdu_max_time = 0x5e; + + rs->ac_usb_dma_size = 0x01; + rs->ac_usb_dma_time = 0x10; + + sc->sc_priv = rs; +} + +static void +r21au_adj_devcaps(struct rtwn_softc *sc) +{ + /* TODO: DFS, LDPC etc */ +} + +void +r21au_attach(struct rtwn_usb_softc *uc) +{ + struct rtwn_softc *sc = &uc->uc_sc; + + /* USB part. */ + uc->uc_align_rx = r12au_align_rx; + uc->tx_agg_desc_num = 6; + + /* Common part. */ + sc->sc_flags = RTWN_FLAG_EXT_HDR; + + sc->sc_set_chan = r12a_set_chan; + sc->sc_fill_tx_desc = r12a_fill_tx_desc; + sc->sc_fill_tx_desc_raw = r12a_fill_tx_desc_raw; + sc->sc_fill_tx_desc_null = r12a_fill_tx_desc_null; + sc->sc_dump_tx_desc = r12au_dump_tx_desc; + sc->sc_tx_radiotap_flags = r12a_tx_radiotap_flags; + sc->sc_rx_radiotap_flags = r12a_rx_radiotap_flags; + sc->sc_get_rssi_cck = r21a_get_rssi_cck; + sc->sc_get_rssi_ofdm = r88e_get_rssi_ofdm; + sc->sc_classify_intr = r12au_classify_intr; + sc->sc_handle_tx_report = r12a_ratectl_tx_complete; + sc->sc_handle_c2h_report = r12a_handle_c2h_report; + sc->sc_check_frame = r12a_check_frame_checksum; + sc->sc_rf_read = r12a_c_cut_rf_read; + sc->sc_rf_write = r12a_rf_write; + sc->sc_check_condition = r21a_check_condition; + sc->sc_efuse_postread = rtwn_nop_softc; + sc->sc_parse_rom = r21a_parse_rom; + sc->sc_power_on = r21a_power_on; + sc->sc_power_off = r21a_power_off; +#ifndef RTWN_WITHOUT_UCODE + sc->sc_fw_reset = r21a_fw_reset; + sc->sc_fw_download_enable = r12a_fw_download_enable; +#endif + sc->sc_set_page_size = rtwn_nop_int_softc; + sc->sc_lc_calib = rtwn_nop_softc; /* XXX not used */ + sc->sc_iq_calib = r12a_iq_calib; + sc->sc_read_chipid_vendor = rtwn_nop_softc_uint32; + sc->sc_adj_devcaps = r21au_adj_devcaps; + sc->sc_vap_preattach = r12a_vap_preattach; + sc->sc_postattach = r21a_postattach; + sc->sc_detach_private = r12a_detach_private; +#ifndef RTWN_WITHOUT_UCODE + sc->sc_set_media_status = r12a_set_media_status; + sc->sc_set_rsvd_page = r88e_set_rsvd_page; + sc->sc_set_pwrmode = r12a_set_pwrmode; + sc->sc_set_rssi = rtwn_nop_softc; /* XXX TODO */ +#else + sc->sc_set_media_status = rtwn_nop_softc_int; +#endif + sc->sc_beacon_init = r21a_beacon_init; + sc->sc_beacon_enable = r92c_beacon_enable; + sc->sc_beacon_set_rate = r12a_beacon_set_rate; + sc->sc_beacon_select = r21a_beacon_select; + sc->sc_temp_measure = r88e_temp_measure; + sc->sc_temp_read = r88e_temp_read; + sc->sc_init_tx_agg = r21au_init_tx_agg; + sc->sc_init_rx_agg = r12au_init_rx_agg; + sc->sc_init_ampdu = r12au_init_ampdu; + sc->sc_init_intr = r12a_init_intr; + sc->sc_init_edca = r12a_init_edca; + sc->sc_init_bb = r12a_init_bb; + sc->sc_init_rf = r12a_init_rf; + sc->sc_init_antsel = r12a_init_antsel; + sc->sc_post_init = r12au_post_init; + sc->sc_init_bcnq1_boundary = r21a_init_bcnq1_boundary; + + sc->chan_list_5ghz[0] = r12a_chan_5ghz_0; + sc->chan_list_5ghz[1] = r12a_chan_5ghz_1; + sc->chan_list_5ghz[2] = r12a_chan_5ghz_2; + sc->chan_num_5ghz[0] = nitems(r12a_chan_5ghz_0); + sc->chan_num_5ghz[1] = nitems(r12a_chan_5ghz_1); + sc->chan_num_5ghz[2] = nitems(r12a_chan_5ghz_2); + + sc->mac_prog = &rtl8821au_mac[0]; + sc->mac_size = nitems(rtl8821au_mac); + sc->bb_prog = &rtl8821au_bb[0]; + sc->bb_size = nitems(rtl8821au_bb); + sc->agc_prog = &rtl8821au_agc[0]; + sc->agc_size = nitems(rtl8821au_agc); + sc->rf_prog = &rtl8821au_rf[0]; + + sc->name = "RTL8821AU"; + sc->fwname = "rtwn-rtl8821aufw"; + sc->fwsig = 0x210; + + sc->page_count = R21A_TX_PAGE_COUNT; + sc->pktbuf_count = R12A_TXPKTBUF_COUNT; + + sc->ackto = 0x80; + sc->npubqpages = R12A_PUBQ_NPAGES; + sc->page_size = R21A_TX_PAGE_SIZE; + + sc->txdesc_len = sizeof(struct r12au_tx_desc); + sc->efuse_maxlen = R12A_EFUSE_MAX_LEN; + sc->efuse_maplen = R12A_EFUSE_MAP_LEN; + sc->rx_dma_size = R12A_RX_DMA_BUFFER_SIZE; + + sc->macid_limit = R12A_MACID_MAX + 1; + sc->cam_entry_limit = R12A_CAM_ENTRY_COUNT; + sc->fwsize_limit = R12A_MAX_FW_SIZE; + sc->temp_delta = R88E_CALIB_THRESHOLD; + + sc->bcn_status_reg[0] = R92C_TDECTRL; + sc->bcn_status_reg[1] = R21A_DWBCN1_CTRL; + sc->rcr = R12A_RCR_DIS_CHK_14 | + R12A_RCR_VHT_ACK | + R12A_RCR_TCP_OFFLD_EN; + + sc->ntxchains = 1; + sc->nrxchains = 1; + + r21a_attach_private(sc); +} diff --git a/sys/dev/rtwn/rtl8821a/usb/r21au_init.c b/sys/dev/rtwn/rtl8821a/usb/r21au_init.c new file mode 100644 index 000000000000..08af2af318ca --- /dev/null +++ b/sys/dev/rtwn/rtl8821a/usb/r21au_init.c @@ -0,0 +1,83 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include + +#include + +#include +#include + + +void +r21au_init_tx_agg(struct rtwn_softc *sc) +{ + struct rtwn_usb_softc *uc = RTWN_USB_SOFTC(sc); + + r92cu_init_tx_agg(sc); + + rtwn_write_1(sc, R21A_DWBCN1_CTRL, uc->tx_agg_desc_num << 1); +} + +void +r21au_init_burstlen(struct rtwn_softc *sc) +{ + if ((rtwn_read_1(sc, R92C_USB_INFO) & 0x30) == 0) { + /* Set burst packet length to 512 B. */ + rtwn_setbits_1(sc, R12A_RXDMA_PRO, 0x20, 0x1e); + } else { + /* Set burst packet length to 64 B. */ + rtwn_setbits_1(sc, R12A_RXDMA_PRO, 0x10, 0x2e); + } +} diff --git a/sys/dev/rtwn/rtl8821a/usb/r21au_reg.h b/sys/dev/rtwn/rtl8821a/usb/r21au_reg.h new file mode 100644 index 000000000000..cd0deb5f7c64 --- /dev/null +++ b/sys/dev/rtwn/rtl8821a/usb/r21au_reg.h @@ -0,0 +1,35 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef R21AU_REG_H +#define R21AU_REG_H + +#include +#include + +#endif /* R21AU_REG_H */ diff --git a/sys/dev/rtwn/usb/rtwn_usb_attach.c b/sys/dev/rtwn/usb/rtwn_usb_attach.c new file mode 100644 index 000000000000..a47797b56af7 --- /dev/null +++ b/sys/dev/rtwn/usb/rtwn_usb_attach.c @@ -0,0 +1,433 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +#include +#include +#include "usbdevs.h" + +#include +#include + +#include + +#include +#include +#include +#include + +#include + +static device_probe_t rtwn_usb_match; +static device_attach_t rtwn_usb_attach; +static device_detach_t rtwn_usb_detach; +static device_suspend_t rtwn_usb_suspend; +static device_resume_t rtwn_usb_resume; + +static int rtwn_usb_alloc_list(struct rtwn_softc *, + struct rtwn_data[], int, int); +static int rtwn_usb_alloc_rx_list(struct rtwn_softc *); +static int rtwn_usb_alloc_tx_list(struct rtwn_softc *); +static void rtwn_usb_free_list(struct rtwn_softc *, + struct rtwn_data data[], int); +static void rtwn_usb_free_rx_list(struct rtwn_softc *); +static void rtwn_usb_free_tx_list(struct rtwn_softc *); +static void rtwn_usb_reset_lists(struct rtwn_softc *, + struct ieee80211vap *); +static void rtwn_usb_reset_tx_list(struct rtwn_usb_softc *, + rtwn_datahead *, struct ieee80211vap *); +static void rtwn_usb_start_xfers(struct rtwn_softc *); +static void rtwn_usb_abort_xfers(struct rtwn_softc *); +static int rtwn_usb_fw_write_block(struct rtwn_softc *, + const uint8_t *, uint16_t, int); +static void rtwn_usb_attach_methods(struct rtwn_softc *); + +#define RTWN_CONFIG_INDEX 0 + + +static int +rtwn_usb_match(device_t self) +{ + struct usb_attach_arg *uaa = device_get_ivars(self); + + if (uaa->usb_mode != USB_MODE_HOST) + return (ENXIO); + if (uaa->info.bConfigIndex != RTWN_CONFIG_INDEX) + return (ENXIO); + if (uaa->info.bIfaceIndex != RTWN_IFACE_INDEX) + return (ENXIO); + + return (usbd_lookup_id_by_uaa(rtwn_devs, sizeof(rtwn_devs), uaa)); +} + +static int +rtwn_usb_alloc_list(struct rtwn_softc *sc, struct rtwn_data data[], + int ndata, int maxsz) +{ + int i, error; + + for (i = 0; i < ndata; i++) { + struct rtwn_data *dp = &data[i]; + dp->m = NULL; + dp->buf = malloc(maxsz, M_USBDEV, M_NOWAIT); + if (dp->buf == NULL) { + device_printf(sc->sc_dev, + "could not allocate buffer\n"); + error = ENOMEM; + goto fail; + } + dp->ni = NULL; + } + + return (0); +fail: + rtwn_usb_free_list(sc, data, ndata); + return (error); +} + +static int +rtwn_usb_alloc_rx_list(struct rtwn_softc *sc) +{ + struct rtwn_usb_softc *uc = RTWN_USB_SOFTC(sc); + int error, i; + + error = rtwn_usb_alloc_list(sc, uc->uc_rx, RTWN_USB_RX_LIST_COUNT, + RTWN_RXBUFSZ); + if (error != 0) + return (error); + + STAILQ_INIT(&uc->uc_rx_active); + STAILQ_INIT(&uc->uc_rx_inactive); + + for (i = 0; i < RTWN_USB_RX_LIST_COUNT; i++) + STAILQ_INSERT_HEAD(&uc->uc_rx_inactive, &uc->uc_rx[i], next); + + return (0); +} + +static int +rtwn_usb_alloc_tx_list(struct rtwn_softc *sc) +{ + struct rtwn_usb_softc *uc = RTWN_USB_SOFTC(sc); + int error, i; + + error = rtwn_usb_alloc_list(sc, uc->uc_tx, RTWN_USB_TX_LIST_COUNT, + RTWN_TXBUFSZ); + if (error != 0) + return (error); + + STAILQ_INIT(&uc->uc_tx_active); + STAILQ_INIT(&uc->uc_tx_inactive); + STAILQ_INIT(&uc->uc_tx_pending); + + for (i = 0; i < RTWN_USB_TX_LIST_COUNT; i++) + STAILQ_INSERT_HEAD(&uc->uc_tx_inactive, &uc->uc_tx[i], next); + + return (0); +} + +static void +rtwn_usb_free_list(struct rtwn_softc *sc, struct rtwn_data data[], int ndata) +{ + int i; + + for (i = 0; i < ndata; i++) { + struct rtwn_data *dp = &data[i]; + + if (dp->buf != NULL) { + free(dp->buf, M_USBDEV); + dp->buf = NULL; + } + if (dp->ni != NULL) { + ieee80211_free_node(dp->ni); + dp->ni = NULL; + } + if (dp->m != NULL) { + m_freem(dp->m); + dp->m = NULL; + } + } +} + +static void +rtwn_usb_free_rx_list(struct rtwn_softc *sc) +{ + struct rtwn_usb_softc *uc = RTWN_USB_SOFTC(sc); + + rtwn_usb_free_list(sc, uc->uc_rx, RTWN_USB_RX_LIST_COUNT); + + STAILQ_INIT(&uc->uc_rx_active); + STAILQ_INIT(&uc->uc_rx_inactive); +} + +static void +rtwn_usb_free_tx_list(struct rtwn_softc *sc) +{ + struct rtwn_usb_softc *uc = RTWN_USB_SOFTC(sc); + + rtwn_usb_free_list(sc, uc->uc_tx, RTWN_USB_TX_LIST_COUNT); + + STAILQ_INIT(&uc->uc_tx_active); + STAILQ_INIT(&uc->uc_tx_inactive); + STAILQ_INIT(&uc->uc_tx_pending); +} + +static void +rtwn_usb_reset_lists(struct rtwn_softc *sc, struct ieee80211vap *vap) +{ + struct rtwn_usb_softc *uc = RTWN_USB_SOFTC(sc); + + RTWN_ASSERT_LOCKED(sc); + + rtwn_usb_reset_tx_list(uc, &uc->uc_tx_active, vap); + rtwn_usb_reset_tx_list(uc, &uc->uc_tx_pending, vap); + if (vap == NULL) + sc->qfullmsk = 0; +} + +static void +rtwn_usb_reset_tx_list(struct rtwn_usb_softc *uc, + rtwn_datahead *head, struct ieee80211vap *vap) +{ + struct rtwn_vap *uvp = RTWN_VAP(vap); + struct rtwn_data *dp, *tmp; + int id; + + id = (uvp != NULL ? uvp->id : RTWN_VAP_ID_INVALID); + + STAILQ_FOREACH_SAFE(dp, head, next, tmp) { + if (vap == NULL || (dp->ni == NULL && + (dp->id == id || id == RTWN_VAP_ID_INVALID)) || + (dp->ni != NULL && dp->ni->ni_vap == vap)) { + if (dp->ni != NULL) { + ieee80211_free_node(dp->ni); + dp->ni = NULL; + } + + if (dp->m != NULL) { + m_freem(dp->m); + dp->m = NULL; + } + + STAILQ_REMOVE(head, dp, rtwn_data, next); + STAILQ_INSERT_TAIL(&uc->uc_tx_inactive, dp, next); + } + } +} + +static void +rtwn_usb_start_xfers(struct rtwn_softc *sc) +{ + struct rtwn_usb_softc *uc = RTWN_USB_SOFTC(sc); + + usbd_transfer_start(uc->uc_xfer[RTWN_BULK_RX]); +} + +static void +rtwn_usb_abort_xfers(struct rtwn_softc *sc) +{ + struct rtwn_usb_softc *uc = RTWN_USB_SOFTC(sc); + int i; + + RTWN_ASSERT_LOCKED(sc); + + /* abort any pending transfers */ + for (i = 0; i < RTWN_N_TRANSFER; i++) + usbd_transfer_stop(uc->uc_xfer[i]); +} + +static int +rtwn_usb_fw_write_block(struct rtwn_softc *sc, const uint8_t *buf, + uint16_t reg, int mlen) +{ + int error; + + /* XXX fix this deconst */ + error = rtwn_usb_write_region_1(sc, reg, __DECONST(uint8_t *, buf), + mlen); + + return (error); +} + +static void +rtwn_usb_drop_incorrect_tx(struct rtwn_softc *sc) +{ + + rtwn_setbits_1_shift(sc, R92C_TXDMA_OFFSET_CHK, 0, + R92C_TXDMA_OFFSET_DROP_DATA_EN, 1); +} + +static void +rtwn_usb_attach_methods(struct rtwn_softc *sc) +{ + sc->sc_write_1 = rtwn_usb_write_1; + sc->sc_write_2 = rtwn_usb_write_2; + sc->sc_write_4 = rtwn_usb_write_4; + sc->sc_read_1 = rtwn_usb_read_1; + sc->sc_read_2 = rtwn_usb_read_2; + sc->sc_read_4 = rtwn_usb_read_4; + sc->sc_delay = rtwn_usb_delay; + sc->sc_tx_start = rtwn_usb_tx_start; + sc->sc_start_xfers = rtwn_usb_start_xfers; + sc->sc_reset_lists = rtwn_usb_reset_lists; + sc->sc_abort_xfers = rtwn_usb_abort_xfers; + sc->sc_fw_write_block = rtwn_usb_fw_write_block; + sc->sc_get_qmap = rtwn_usb_get_qmap; + sc->sc_set_desc_addr = rtwn_nop_softc; + sc->sc_drop_incorrect_tx = rtwn_usb_drop_incorrect_tx; +} + +static int +rtwn_usb_attach(device_t self) +{ + struct usb_attach_arg *uaa = device_get_ivars(self); + struct rtwn_usb_softc *uc = device_get_softc(self); + struct rtwn_softc *sc = &uc->uc_sc; + struct ieee80211com *ic = &sc->sc_ic; + int error; + + device_set_usb_desc(self); + uc->uc_udev = uaa->device; + sc->sc_dev = self; + ic->ic_name = device_get_nameunit(self); + + /* Need to be initialized early. */ + rtwn_sysctlattach(sc); + mtx_init(&sc->sc_mtx, ic->ic_name, MTX_NETWORK_LOCK, MTX_DEF); + + rtwn_usb_attach_methods(sc); + rtwn_usb_attach_private(uc, USB_GET_DRIVER_INFO(uaa)); + + error = rtwn_usb_setup_endpoints(uc); + if (error != 0) + goto detach; + + /* Allocate Tx/Rx buffers. */ + error = rtwn_usb_alloc_rx_list(sc); + if (error != 0) + goto detach; + + error = rtwn_usb_alloc_tx_list(sc); + if (error != 0) + goto detach; + + /* Generic attach. */ + error = rtwn_attach(sc); + if (error != 0) + goto detach; + + return (0); + +detach: + rtwn_usb_detach(self); /* failure */ + return (ENXIO); +} + +static int +rtwn_usb_detach(device_t self) +{ + struct rtwn_usb_softc *uc = device_get_softc(self); + struct rtwn_softc *sc = &uc->uc_sc; + + /* Generic detach. */ + rtwn_detach(sc); + + /* Free Tx/Rx buffers. */ + rtwn_usb_free_tx_list(sc); + rtwn_usb_free_rx_list(sc); + + /* Detach all USB transfers. */ + usbd_transfer_unsetup(uc->uc_xfer, RTWN_N_TRANSFER); + + rtwn_detach_private(sc); + mtx_destroy(&sc->sc_mtx); + + return (0); +} + +static int +rtwn_usb_suspend(device_t self) +{ + struct rtwn_usb_softc *uc = device_get_softc(self); + + rtwn_suspend(&uc->uc_sc); + + return (0); +} + +static int +rtwn_usb_resume(device_t self) +{ + struct rtwn_usb_softc *uc = device_get_softc(self); + + rtwn_resume(&uc->uc_sc); + + return (0); +} + +static device_method_t rtwn_usb_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, rtwn_usb_match), + DEVMETHOD(device_attach, rtwn_usb_attach), + DEVMETHOD(device_detach, rtwn_usb_detach), + DEVMETHOD(device_suspend, rtwn_usb_suspend), + DEVMETHOD(device_resume, rtwn_usb_resume), + + DEVMETHOD_END +}; + +static driver_t rtwn_usb_driver = { + "rtwn", + rtwn_usb_methods, + sizeof(struct rtwn_usb_softc) +}; + +static devclass_t rtwn_usb_devclass; + +DRIVER_MODULE(rtwn_usb, uhub, rtwn_usb_driver, rtwn_usb_devclass, NULL, NULL); +MODULE_VERSION(rtwn_usb, 1); +MODULE_DEPEND(rtwn_usb, usb, 1, 1, 1); +MODULE_DEPEND(rtwn_usb, wlan, 1, 1, 1); +MODULE_DEPEND(rtwn_usb, rtwn, 2, 2, 2); +USB_PNP_HOST_INFO(rtwn_devs); diff --git a/sys/dev/rtwn/usb/rtwn_usb_attach.h b/sys/dev/rtwn/usb/rtwn_usb_attach.h new file mode 100644 index 000000000000..6bfed2e43a07 --- /dev/null +++ b/sys/dev/rtwn/usb/rtwn_usb_attach.h @@ -0,0 +1,159 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +void r92cu_attach(struct rtwn_usb_softc *); +void r88eu_attach(struct rtwn_usb_softc *); +void r12au_attach(struct rtwn_usb_softc *); +void r21au_attach(struct rtwn_usb_softc *); + +enum { + RTWN_CHIP_RTL8192CU, + RTWN_CHIP_RTL8188EU, + RTWN_CHIP_RTL8812AU, + RTWN_CHIP_RTL8821AU, + RTWN_CHIP_MAX_USB +}; + +/* various supported device vendors/products */ +static const STRUCT_USB_HOST_ID rtwn_devs[] = { + /* RTL8188CE-VAU/RTL8188CUS/RTL8188RU/RTL8192CU */ +#define RTWN_RTL8192CU_DEV(v,p) \ + { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, RTWN_CHIP_RTL8192CU) } + RTWN_RTL8192CU_DEV(ABOCOM, RTL8188CU_1), + RTWN_RTL8192CU_DEV(ABOCOM, RTL8188CU_2), + RTWN_RTL8192CU_DEV(ABOCOM, RTL8192CU), + RTWN_RTL8192CU_DEV(ASUS, RTL8192CU), + RTWN_RTL8192CU_DEV(ASUS, USBN10NANO), + RTWN_RTL8192CU_DEV(AZUREWAVE, RTL8188CE_1), + RTWN_RTL8192CU_DEV(AZUREWAVE, RTL8188CE_2), + RTWN_RTL8192CU_DEV(AZUREWAVE, RTL8188CU), + RTWN_RTL8192CU_DEV(BELKIN, F7D2102), + RTWN_RTL8192CU_DEV(BELKIN, RTL8188CU), + RTWN_RTL8192CU_DEV(BELKIN, RTL8192CU), + RTWN_RTL8192CU_DEV(CHICONY, RTL8188CUS_1), + RTWN_RTL8192CU_DEV(CHICONY, RTL8188CUS_2), + RTWN_RTL8192CU_DEV(CHICONY, RTL8188CUS_3), + RTWN_RTL8192CU_DEV(CHICONY, RTL8188CUS_4), + RTWN_RTL8192CU_DEV(CHICONY, RTL8188CUS_5), + RTWN_RTL8192CU_DEV(COREGA, RTL8192CU), + RTWN_RTL8192CU_DEV(DLINK, RTL8188CU), + RTWN_RTL8192CU_DEV(DLINK, RTL8192CU_1), + RTWN_RTL8192CU_DEV(DLINK, RTL8192CU_2), + RTWN_RTL8192CU_DEV(DLINK, RTL8192CU_3), + RTWN_RTL8192CU_DEV(DLINK, DWA131B), + RTWN_RTL8192CU_DEV(EDIMAX, EW7811UN), + RTWN_RTL8192CU_DEV(EDIMAX, RTL8192CU), + RTWN_RTL8192CU_DEV(FEIXUN, RTL8188CU), + RTWN_RTL8192CU_DEV(FEIXUN, RTL8192CU), + RTWN_RTL8192CU_DEV(GUILLEMOT, HWNUP150), + RTWN_RTL8192CU_DEV(HAWKING, RTL8192CU), + RTWN_RTL8192CU_DEV(HP3, RTL8188CU), + RTWN_RTL8192CU_DEV(NETGEAR, WNA1000M), + RTWN_RTL8192CU_DEV(NETGEAR, RTL8192CU), + RTWN_RTL8192CU_DEV(NETGEAR4, RTL8188CU), + RTWN_RTL8192CU_DEV(NOVATECH, RTL8188CU), + RTWN_RTL8192CU_DEV(PLANEX2, RTL8188CU_1), + RTWN_RTL8192CU_DEV(PLANEX2, RTL8188CU_2), + RTWN_RTL8192CU_DEV(PLANEX2, RTL8188CU_3), + RTWN_RTL8192CU_DEV(PLANEX2, RTL8188CU_4), + RTWN_RTL8192CU_DEV(PLANEX2, RTL8188CUS), + RTWN_RTL8192CU_DEV(PLANEX2, RTL8192CU), + RTWN_RTL8192CU_DEV(REALTEK, RTL8188CE_0), + RTWN_RTL8192CU_DEV(REALTEK, RTL8188CE_1), + RTWN_RTL8192CU_DEV(REALTEK, RTL8188CTV), + RTWN_RTL8192CU_DEV(REALTEK, RTL8188CU_0), + RTWN_RTL8192CU_DEV(REALTEK, RTL8188CU_1), + RTWN_RTL8192CU_DEV(REALTEK, RTL8188CU_2), + RTWN_RTL8192CU_DEV(REALTEK, RTL8188CU_3), + RTWN_RTL8192CU_DEV(REALTEK, RTL8188CU_COMBO), + RTWN_RTL8192CU_DEV(REALTEK, RTL8188CUS), + RTWN_RTL8192CU_DEV(REALTEK, RTL8188RU_1), + RTWN_RTL8192CU_DEV(REALTEK, RTL8188RU_2), + RTWN_RTL8192CU_DEV(REALTEK, RTL8188RU_3), + RTWN_RTL8192CU_DEV(REALTEK, RTL8191CU), + RTWN_RTL8192CU_DEV(REALTEK, RTL8192CE), + RTWN_RTL8192CU_DEV(REALTEK, RTL8192CU), + RTWN_RTL8192CU_DEV(SITECOMEU, RTL8188CU_1), + RTWN_RTL8192CU_DEV(SITECOMEU, RTL8188CU_2), + RTWN_RTL8192CU_DEV(SITECOMEU, RTL8192CU), + RTWN_RTL8192CU_DEV(TRENDNET, RTL8188CU), + RTWN_RTL8192CU_DEV(TRENDNET, RTL8192CU), + RTWN_RTL8192CU_DEV(ZYXEL, RTL8192CU), +#undef RTWN_RTL8192CU_DEV + + /* RTL8188EU */ +#define RTWN_RTL8188EU_DEV(v,p) \ + { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, RTWN_CHIP_RTL8188EU) } + RTWN_RTL8188EU_DEV(ABOCOM, RTL8188EU), + RTWN_RTL8188EU_DEV(DLINK, DWA123D1), + RTWN_RTL8188EU_DEV(DLINK, DWA125D1), + RTWN_RTL8188EU_DEV(ELECOM, WDC150SU2M), + RTWN_RTL8188EU_DEV(REALTEK, RTL8188ETV), + RTWN_RTL8188EU_DEV(REALTEK, RTL8188EU), +#undef RTWN_RTL8188EU_DEV + + /* RTL8812AU */ +#define RTWN_RTL8812AU_DEV(v,p) \ + { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, RTWN_CHIP_RTL8812AU) } + RTWN_RTL8812AU_DEV(ASUS, USBAC56), + RTWN_RTL8812AU_DEV(CISCOLINKSYS, WUSB6300), + RTWN_RTL8812AU_DEV(DLINK, DWA182C1), + RTWN_RTL8812AU_DEV(DLINK, DWA180A1), + RTWN_RTL8812AU_DEV(EDIMAX, EW7822UAC), + RTWN_RTL8812AU_DEV(IODATA, WNAC867U), + RTWN_RTL8812AU_DEV(MELCO, WIU3866D), + RTWN_RTL8812AU_DEV(NEC, WL900U), + RTWN_RTL8812AU_DEV(PLANEX2, GW900D), + RTWN_RTL8812AU_DEV(SENAO, EUB1200AC), + RTWN_RTL8812AU_DEV(SITECOMEU, WLA7100), + RTWN_RTL8812AU_DEV(TPLINK, T4U), + RTWN_RTL8812AU_DEV(TRENDNET, TEW805UB), + RTWN_RTL8812AU_DEV(ZYXEL, NWD6605), +#undef RTWN_RTL8812AU_DEV + + /* RTL8821AU */ +#define RTWN_RTL8821AU_DEV(v,p) \ + { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, RTWN_CHIP_RTL8821AU) } + RTWN_RTL8821AU_DEV(DLINK, DWA171A1), + RTWN_RTL8821AU_DEV(DLINK, DWA172A1), + RTWN_RTL8821AU_DEV(EDIMAX, EW7811UTC_1), + RTWN_RTL8821AU_DEV(EDIMAX, EW7811UTC_2), + RTWN_RTL8821AU_DEV(HAWKING, HD65U), + RTWN_RTL8821AU_DEV(MELCO, WIU2433DM), + RTWN_RTL8821AU_DEV(NETGEAR, A6100) +#undef RTWN_RTL8821AU_DEV +}; + +typedef void (*chip_usb_attach)(struct rtwn_usb_softc *); + +static const chip_usb_attach rtwn_chip_usb_attach[RTWN_CHIP_MAX_USB] = { + [RTWN_CHIP_RTL8192CU] = r92cu_attach, + [RTWN_CHIP_RTL8188EU] = r88eu_attach, + [RTWN_CHIP_RTL8812AU] = r12au_attach, + [RTWN_CHIP_RTL8821AU] = r21au_attach +}; + +static __inline void +rtwn_usb_attach_private(struct rtwn_usb_softc *uc, int chip) +{ + rtwn_chip_usb_attach[chip](uc); +} diff --git a/sys/dev/rtwn/usb/rtwn_usb_ep.c b/sys/dev/rtwn/usb/rtwn_usb_ep.c new file mode 100644 index 000000000000..8694e33dd2d1 --- /dev/null +++ b/sys/dev/rtwn/usb/rtwn_usb_ep.c @@ -0,0 +1,253 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include + +#include + + +static struct usb_config rtwn_config[RTWN_N_TRANSFER] = { + [RTWN_BULK_RX] = { + .type = UE_BULK, + .endpoint = UE_ADDR_ANY, + .direction = UE_DIR_IN, + .bufsize = RTWN_RXBUFSZ, + .flags = { + .pipe_bof = 1, + .short_xfer_ok = 1 + }, + .callback = rtwn_bulk_rx_callback, + }, + [RTWN_BULK_TX_BE] = { + .type = UE_BULK, + .endpoint = UE_ADDR_ANY, + .direction = UE_DIR_OUT, + .bufsize = RTWN_TXBUFSZ, + .flags = { + .ext_buffer = 1, + .pipe_bof = 1, + .force_short_xfer = 1, + }, + .callback = rtwn_bulk_tx_callback, + .timeout = RTWN_TX_TIMEOUT, /* ms */ + }, + [RTWN_BULK_TX_BK] = { + .type = UE_BULK, + .endpoint = UE_ADDR_ANY, + .direction = UE_DIR_OUT, + .bufsize = RTWN_TXBUFSZ, + .flags = { + .ext_buffer = 1, + .pipe_bof = 1, + .force_short_xfer = 1, + }, + .callback = rtwn_bulk_tx_callback, + .timeout = RTWN_TX_TIMEOUT, /* ms */ + }, + [RTWN_BULK_TX_VI] = { + .type = UE_BULK, + .endpoint = UE_ADDR_ANY, + .direction = UE_DIR_OUT, + .bufsize = RTWN_TXBUFSZ, + .flags = { + .ext_buffer = 1, + .pipe_bof = 1, + .force_short_xfer = 1 + }, + .callback = rtwn_bulk_tx_callback, + .timeout = RTWN_TX_TIMEOUT, /* ms */ + }, + [RTWN_BULK_TX_VO] = { + .type = UE_BULK, + .endpoint = UE_ADDR_ANY, + .direction = UE_DIR_OUT, + .bufsize = RTWN_TXBUFSZ, + .flags = { + .ext_buffer = 1, + .pipe_bof = 1, + .force_short_xfer = 1 + }, + .callback = rtwn_bulk_tx_callback, + .timeout = RTWN_TX_TIMEOUT, /* ms */ + }, +}; + +static void +rtwn_usb_setup_queues(struct rtwn_usb_softc *uc) +{ + struct rtwn_softc *sc = &uc->uc_sc; + int hasnq, haslq, nqueues, nqpages, nrempages; + + /* Get Tx queues to USB endpoints mapping. */ + hasnq = haslq = 0; + switch (uc->ntx) { + case 4: + case 3: + haslq = 1; + /* FALLTHROUGH */ + case 2: + hasnq = 1; + /* FALLTHROUGH */ + default: + break; + } + nqueues = 1 + hasnq + haslq; + + /* Get the number of pages for each queue. */ + nqpages = (sc->page_count - sc->npubqpages) / nqueues; + + /* + * The remaining pages are assigned to the high priority + * queue. + */ + nrempages = (sc->page_count - sc->npubqpages) % nqueues; + + sc->nhqpages = nqpages + nrempages; + sc->nnqpages = (hasnq ? nqpages : 0); + sc->nlqpages = (haslq ? nqpages : 0); +} + +int +rtwn_usb_setup_endpoints(struct rtwn_usb_softc *uc) +{ + struct rtwn_softc *sc = &uc->uc_sc; + const uint8_t iface_index = RTWN_IFACE_INDEX; + struct usb_endpoint *ep, *ep_end; + uint8_t addr[RTWN_MAX_EPOUT]; + int error; + + /* Determine the number of bulk-out pipes. */ + uc->ntx = 0; + ep = uc->uc_udev->endpoints; + ep_end = uc->uc_udev->endpoints + uc->uc_udev->endpoints_max; + for (; ep != ep_end; ep++) { + uint8_t eaddr; + + if ((ep->edesc == NULL) || (ep->iface_index != iface_index)) + continue; + + eaddr = ep->edesc->bEndpointAddress; + RTWN_DPRINTF(sc, RTWN_DEBUG_USB, + "%s: endpoint: addr %u, direction %s\n", __func__, + UE_GET_ADDR(eaddr), UE_GET_DIR(eaddr) == UE_DIR_OUT ? + "output" : "input"); + + if (UE_GET_DIR(eaddr) == UE_DIR_OUT) { + if (uc->ntx == RTWN_MAX_EPOUT) + break; + + addr[uc->ntx++] = UE_GET_ADDR(eaddr); + } + } + if (uc->ntx == 0 || uc->ntx > RTWN_MAX_EPOUT) { + device_printf(sc->sc_dev, + "%s: invalid number of Tx bulk pipes (%d)\n", __func__, + uc->ntx); + return (EINVAL); + } + + /* NB: keep in sync with rtwn_dma_init(). */ + rtwn_config[RTWN_BULK_TX_VO].endpoint = addr[0]; + switch (uc->ntx) { + case 4: + case 3: + rtwn_config[RTWN_BULK_TX_BE].endpoint = addr[2]; + rtwn_config[RTWN_BULK_TX_BK].endpoint = addr[2]; + rtwn_config[RTWN_BULK_TX_VI].endpoint = addr[1]; + break; + case 2: + rtwn_config[RTWN_BULK_TX_BE].endpoint = addr[1]; + rtwn_config[RTWN_BULK_TX_BK].endpoint = addr[1]; + rtwn_config[RTWN_BULK_TX_VI].endpoint = addr[0]; + break; + case 1: + rtwn_config[RTWN_BULK_TX_BE].endpoint = addr[0]; + rtwn_config[RTWN_BULK_TX_BK].endpoint = addr[0]; + rtwn_config[RTWN_BULK_TX_VI].endpoint = addr[0]; + break; + default: + KASSERT(0, ("unhandled number of endpoints %d\n", uc->ntx)); + break; + } + + error = usbd_transfer_setup(uc->uc_udev, &iface_index, + uc->uc_xfer, rtwn_config, RTWN_N_TRANSFER, uc, &sc->sc_mtx); + if (error) { + device_printf(sc->sc_dev, "could not allocate USB transfers, " + "err=%s\n", usbd_errstr(error)); + return (error); + } + + /* Assign pages for each queue (if not done). */ + if (sc->nhqpages == 0 && sc->nnqpages == 0 && sc->nlqpages == 0) + rtwn_usb_setup_queues(uc); + + return (0); +} + +uint16_t +rtwn_usb_get_qmap(struct rtwn_softc *sc) +{ + struct rtwn_usb_softc *uc = RTWN_USB_SOFTC(sc); + + switch (uc->ntx) { + case 1: + return (R92C_TRXDMA_CTRL_QMAP_HQ); + case 2: + return (R92C_TRXDMA_CTRL_QMAP_HQ_NQ); + default: + return (R92C_TRXDMA_CTRL_QMAP_3EP); + } +} diff --git a/sys/dev/rtwn/usb/rtwn_usb_ep.h b/sys/dev/rtwn/usb/rtwn_usb_ep.h new file mode 100644 index 000000000000..0cdd738e1794 --- /dev/null +++ b/sys/dev/rtwn/usb/rtwn_usb_ep.h @@ -0,0 +1,25 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef IF_RTWN_EP_H +#define IF_RTWN_EP_H + +int rtwn_usb_setup_endpoints(struct rtwn_usb_softc *); +uint16_t rtwn_usb_get_qmap(struct rtwn_softc *); + +#endif /* IF_RTWN_EP_H */ diff --git a/sys/dev/rtwn/usb/rtwn_usb_reg.c b/sys/dev/rtwn/usb/rtwn_usb_reg.c new file mode 100644 index 000000000000..2091c6ac6444 --- /dev/null +++ b/sys/dev/rtwn/usb/rtwn_usb_reg.c @@ -0,0 +1,179 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include + +static int rtwn_do_request(struct rtwn_softc *, + struct usb_device_request *, void *); +static int rtwn_usb_read_region_1(struct rtwn_softc *, + uint16_t, uint8_t *, int); + +/* USB Requests. */ +#define R92C_REQ_REGS 0x05 + + +static int +rtwn_do_request(struct rtwn_softc *sc, struct usb_device_request *req, + void *data) +{ + struct rtwn_usb_softc *uc = RTWN_USB_SOFTC(sc); + usb_error_t err; + int ntries = 10; + + RTWN_ASSERT_LOCKED(sc); + + while (ntries--) { + err = usbd_do_request_flags(uc->uc_udev, &sc->sc_mtx, + req, data, 0, NULL, 250 /* ms */); + if (err == USB_ERR_NORMAL_COMPLETION) + return (0); + + RTWN_DPRINTF(sc, RTWN_DEBUG_USB, + "%s: control request failed, %s (retries left: %d)\n", + __func__, usbd_errstr(err), ntries); + if (err == USB_ERR_NOT_CONFIGURED) + return (ENXIO); + + usb_pause_mtx(&sc->sc_mtx, hz / 100); + } + return (EIO); +} + +/* export for rtwn_fw_write_block() */ +int +rtwn_usb_write_region_1(struct rtwn_softc *sc, uint16_t addr, uint8_t *buf, + int len) +{ + usb_device_request_t req; + + req.bmRequestType = UT_WRITE_VENDOR_DEVICE; + req.bRequest = R92C_REQ_REGS; + USETW(req.wValue, addr); + USETW(req.wIndex, 0); + USETW(req.wLength, len); + return (rtwn_do_request(sc, &req, buf)); +} + +int +rtwn_usb_write_1(struct rtwn_softc *sc, uint16_t addr, uint8_t val) +{ + return (rtwn_usb_write_region_1(sc, addr, &val, sizeof(val))); +} + +int +rtwn_usb_write_2(struct rtwn_softc *sc, uint16_t addr, uint16_t val) +{ + val = htole16(val); + return (rtwn_usb_write_region_1(sc, addr, (uint8_t *)&val, sizeof(val))); +} + +int +rtwn_usb_write_4(struct rtwn_softc *sc, uint16_t addr, uint32_t val) +{ + val = htole32(val); + return (rtwn_usb_write_region_1(sc, addr, (uint8_t *)&val, sizeof(val))); +} + +static int +rtwn_usb_read_region_1(struct rtwn_softc *sc, uint16_t addr, uint8_t *buf, + int len) +{ + usb_device_request_t req; + + req.bmRequestType = UT_READ_VENDOR_DEVICE; + req.bRequest = R92C_REQ_REGS; + USETW(req.wValue, addr); + USETW(req.wIndex, 0); + USETW(req.wLength, len); + return (rtwn_do_request(sc, &req, buf)); +} + +uint8_t +rtwn_usb_read_1(struct rtwn_softc *sc, uint16_t addr) +{ + uint8_t val; + + if (rtwn_usb_read_region_1(sc, addr, &val, 1) != 0) + return (0xff); + return (val); +} + +uint16_t +rtwn_usb_read_2(struct rtwn_softc *sc, uint16_t addr) +{ + uint16_t val; + + if (rtwn_usb_read_region_1(sc, addr, (uint8_t *)&val, 2) != 0) + return (0xffff); + return (le16toh(val)); +} + +uint32_t +rtwn_usb_read_4(struct rtwn_softc *sc, uint16_t addr) +{ + uint32_t val; + + if (rtwn_usb_read_region_1(sc, addr, (uint8_t *)&val, 4) != 0) + return (0xffffffff); + return (le32toh(val)); +} + +void +rtwn_usb_delay(struct rtwn_softc *sc, int usec) +{ + + /* 1ms delay as default is too big. */ + if (usec < 1000) + DELAY(usec); + else { + usb_pause_mtx(&sc->sc_mtx, + MAX(msecs_to_ticks(usec / 1000), 1)); + } +} diff --git a/sys/dev/rtwn/usb/rtwn_usb_reg.h b/sys/dev/rtwn/usb/rtwn_usb_reg.h new file mode 100644 index 000000000000..1149248d71aa --- /dev/null +++ b/sys/dev/rtwn/usb/rtwn_usb_reg.h @@ -0,0 +1,45 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef RTWN_USB_REG_H +#define RTWN_USB_REG_H + +static __inline uint16_t +rtwn_usb_calc_tx_checksum(void *buf) +{ + uint16_t sum = 0; + int i; + + /* NB: checksum calculation takes into account only first 32 bytes. */ + for (i = 0; i < 32 / 2; i++) + sum ^= ((uint16_t *)buf)[i]; + + return (sum); /* NB: already little endian. */ +} + +int rtwn_usb_write_region_1(struct rtwn_softc *, uint16_t, + uint8_t *, int); +int rtwn_usb_write_1(struct rtwn_softc *, uint16_t, uint8_t); +int rtwn_usb_write_2(struct rtwn_softc *, uint16_t, uint16_t); +int rtwn_usb_write_4(struct rtwn_softc *, uint16_t, uint32_t); +uint8_t rtwn_usb_read_1(struct rtwn_softc *, uint16_t); +uint16_t rtwn_usb_read_2(struct rtwn_softc *, uint16_t); +uint32_t rtwn_usb_read_4(struct rtwn_softc *, uint16_t); +void rtwn_usb_delay(struct rtwn_softc *, int); + +#endif /* RTWN_USB_REG_H */ diff --git a/sys/dev/rtwn/usb/rtwn_usb_rx.c b/sys/dev/rtwn/usb/rtwn_usb_rx.c new file mode 100644 index 000000000000..edb605e1aaf1 --- /dev/null +++ b/sys/dev/rtwn/usb/rtwn_usb_rx.c @@ -0,0 +1,335 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#ifdef IEEE80211_SUPPORT_SUPERG +#include +#endif + +#include +#include + +#include +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include /* for CAM_ALGO_NONE */ +#include + + +static struct mbuf * +rtwn_rx_copy_to_mbuf(struct rtwn_softc *sc, struct r92c_rx_stat *stat, + int totlen) +{ + struct ieee80211com *ic = &sc->sc_ic; + struct mbuf *m; + uint32_t rxdw0; + int pktlen; + + RTWN_ASSERT_LOCKED(sc); + + /* Dump Rx descriptor. */ + RTWN_DPRINTF(sc, RTWN_DEBUG_RECV_DESC, + "%s: dw: 0 %08X, 1 %08X, 2 %08X, 3 %08X, 4 %08X, tsfl %08X\n", + __func__, le32toh(stat->rxdw0), le32toh(stat->rxdw1), + le32toh(stat->rxdw2), le32toh(stat->rxdw3), le32toh(stat->rxdw4), + le32toh(stat->tsf_low)); + + /* + * don't pass packets to the ieee80211 framework if the driver isn't + * RUNNING. + */ + if (!(sc->sc_flags & RTWN_RUNNING)) + return (NULL); + + rxdw0 = le32toh(stat->rxdw0); + if (__predict_false(rxdw0 & (R92C_RXDW0_CRCERR | R92C_RXDW0_ICVERR))) { + /* + * This should not happen since we setup our Rx filter + * to not receive these frames. + */ + RTWN_DPRINTF(sc, RTWN_DEBUG_RECV, + "%s: RX flags error (%s)\n", __func__, + rxdw0 & R92C_RXDW0_CRCERR ? "CRC" : "ICV"); + goto fail; + } + + pktlen = MS(rxdw0, R92C_RXDW0_PKTLEN); + if (__predict_false(pktlen < sizeof(struct ieee80211_frame_ack))) { + /* + * Should not happen (because of Rx filter setup). + */ + RTWN_DPRINTF(sc, RTWN_DEBUG_RECV, + "%s: frame is too short: %d\n", __func__, pktlen); + goto fail; + } + + m = m_get2(totlen, M_NOWAIT, MT_DATA, M_PKTHDR); + if (__predict_false(m == NULL)) { + device_printf(sc->sc_dev, "%s: could not allocate RX mbuf\n", + __func__); + goto fail; + } + + /* Finalize mbuf. */ + memcpy(mtod(m, uint8_t *), (uint8_t *)stat, totlen); + m->m_pkthdr.len = m->m_len = totlen; + + if (rtwn_check_frame(sc, m) != 0) { + m_freem(m); + goto fail; + } + + return (m); +fail: + counter_u64_add(ic->ic_ierrors, 1); + return (NULL); +} + +static struct mbuf * +rtwn_rxeof(struct rtwn_softc *sc, uint8_t *buf, int len) +{ + struct rtwn_usb_softc *uc = RTWN_USB_SOFTC(sc); + struct r92c_rx_stat *stat; + struct mbuf *m, *m0 = NULL; + uint32_t rxdw0; + int totlen, pktlen, infosz; + + /* Process packets. */ + while (len >= sizeof(*stat)) { + stat = (struct r92c_rx_stat *)buf; + rxdw0 = le32toh(stat->rxdw0); + + pktlen = MS(rxdw0, R92C_RXDW0_PKTLEN); + if (__predict_false(pktlen == 0)) + break; + + infosz = MS(rxdw0, R92C_RXDW0_INFOSZ) * 8; + + /* Make sure everything fits in xfer. */ + totlen = sizeof(*stat) + infosz + pktlen; + if (totlen > len) + break; + + if (m0 == NULL) + m0 = m = rtwn_rx_copy_to_mbuf(sc, stat, totlen); + else { + m->m_next = rtwn_rx_copy_to_mbuf(sc, stat, totlen); + if (m->m_next != NULL) + m = m->m_next; + } + + /* Align next frame. */ + totlen = rtwn_usb_align_rx(uc, totlen, len); + buf += totlen; + len -= totlen; + } + + return (m0); +} + +static struct mbuf * +rtwn_report_intr(struct rtwn_usb_softc *uc, struct usb_xfer *xfer, + struct rtwn_data *data) +{ + struct rtwn_softc *sc = &uc->uc_sc; + struct ieee80211com *ic = &sc->sc_ic; + uint8_t *buf; + int len; + + usbd_xfer_status(xfer, &len, NULL, NULL, NULL); + + if (__predict_false(len < sizeof(struct r92c_rx_stat))) { + counter_u64_add(ic->ic_ierrors, 1); + return (NULL); + } + + buf = data->buf; + switch (rtwn_classify_intr(sc, buf, len)) { + case RTWN_RX_DATA: + return (rtwn_rxeof(sc, buf, len)); + case RTWN_RX_TX_REPORT: + if (sc->sc_ratectl != RTWN_RATECTL_NET80211) { + /* shouldn't happen */ + device_printf(sc->sc_dev, + "%s called while ratectl = %d!\n", + __func__, sc->sc_ratectl); + break; + } + + RTWN_NT_LOCK(sc); + rtwn_handle_tx_report(sc, buf, len); + RTWN_NT_UNLOCK(sc); + +#ifdef IEEE80211_SUPPORT_SUPERG + /* + * NB: this will executed only when 'report' bit is set. + */ + if (sc->sc_tx_n_active > 0 && --sc->sc_tx_n_active <= 1) + rtwn_cmd_sleepable(uc, NULL, 0, rtwn_ff_flush_all); +#endif + break; + case RTWN_RX_OTHER: + rtwn_handle_c2h_report(sc, buf, len); + break; + default: + /* NOTREACHED */ + KASSERT(0, ("unknown Rx classification code")); + break; + } + + return (NULL); +} + +static struct ieee80211_node * +rtwn_rx_frame(struct rtwn_softc *sc, struct mbuf *m, int8_t *rssi) +{ + struct r92c_rx_stat stat; + + /* Imitate PCIe layout. */ + m_copydata(m, 0, sizeof(struct r92c_rx_stat), (caddr_t)&stat); + m_adj(m, sizeof(struct r92c_rx_stat)); + + return (rtwn_rx_common(sc, m, &stat, rssi)); +} + +void +rtwn_bulk_rx_callback(struct usb_xfer *xfer, usb_error_t error) +{ + struct rtwn_usb_softc *uc = usbd_xfer_softc(xfer); + struct rtwn_softc *sc = &uc->uc_sc; + struct ieee80211com *ic = &sc->sc_ic; + struct ieee80211_node *ni; + struct mbuf *m = NULL, *next; + struct rtwn_data *data; + int8_t nf, rssi; + + RTWN_ASSERT_LOCKED(sc); + + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: + data = STAILQ_FIRST(&uc->uc_rx_active); + if (data == NULL) + goto tr_setup; + STAILQ_REMOVE_HEAD(&uc->uc_rx_active, next); + m = rtwn_report_intr(uc, xfer, data); + STAILQ_INSERT_TAIL(&uc->uc_rx_inactive, data, next); + /* FALLTHROUGH */ + case USB_ST_SETUP: +tr_setup: + data = STAILQ_FIRST(&uc->uc_rx_inactive); + if (data == NULL) { + KASSERT(m == NULL, ("mbuf isn't NULL")); + goto finish; + } + STAILQ_REMOVE_HEAD(&uc->uc_rx_inactive, next); + STAILQ_INSERT_TAIL(&uc->uc_rx_active, data, next); + usbd_xfer_set_frame_data(xfer, 0, data->buf, + usbd_xfer_max_len(xfer)); + usbd_transfer_submit(xfer); + + /* + * To avoid LOR we should unlock our private mutex here to call + * ieee80211_input() because here is at the end of a USB + * callback and safe to unlock. + */ + while (m != NULL) { + next = m->m_next; + m->m_next = NULL; + + ni = rtwn_rx_frame(sc, m, &rssi); + + RTWN_UNLOCK(sc); + + nf = RTWN_NOISE_FLOOR; + if (ni != NULL) { + if (ni->ni_flags & IEEE80211_NODE_HT) + m->m_flags |= M_AMPDU; + (void)ieee80211_input(ni, m, rssi - nf, nf); + ieee80211_free_node(ni); + } else { + (void)ieee80211_input_all(ic, m, + rssi - nf, nf); + } + RTWN_LOCK(sc); + m = next; + } + break; + default: + /* needs it to the inactive queue due to a error. */ + data = STAILQ_FIRST(&uc->uc_rx_active); + if (data != NULL) { + STAILQ_REMOVE_HEAD(&uc->uc_rx_active, next); + STAILQ_INSERT_TAIL(&uc->uc_rx_inactive, data, next); + } + if (error != USB_ERR_CANCELLED) { + usbd_xfer_set_stall(xfer); + counter_u64_add(ic->ic_ierrors, 1); + goto tr_setup; + } + break; + } +finish: + /* Finished receive; age anything left on the FF queue by a little bump */ + /* + * XXX TODO: just make this a callout timer schedule so we can + * flush the FF staging queue if we're approaching idle. + */ +#ifdef IEEE80211_SUPPORT_SUPERG + if (!(sc->sc_flags & RTWN_FW_LOADED)) + rtwn_cmd_sleepable(uc, NULL, 0, rtwn_ff_flush_all); +#endif + + /* Kick-start more transmit in case we stalled */ + rtwn_start(sc); +} diff --git a/sys/dev/rtwn/usb/rtwn_usb_rx.h b/sys/dev/rtwn/usb/rtwn_usb_rx.h new file mode 100644 index 000000000000..e370816969a7 --- /dev/null +++ b/sys/dev/rtwn/usb/rtwn_usb_rx.h @@ -0,0 +1,24 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef RTWN_USB_RX_H +#define RTWN_USB_RX_H + +void rtwn_bulk_rx_callback(struct usb_xfer *, usb_error_t); + +#endif /* RTWN_USB_RX_H */ diff --git a/sys/dev/rtwn/usb/rtwn_usb_tx.c b/sys/dev/rtwn/usb/rtwn_usb_tx.c new file mode 100644 index 000000000000..1580d85d0323 --- /dev/null +++ b/sys/dev/rtwn/usb/rtwn_usb_tx.c @@ -0,0 +1,282 @@ +/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ + +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2014 Kevin Lo + * Copyright (c) 2015-2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_wlan.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include +#include +#include + +#include + +#include +#include + +static struct rtwn_data * _rtwn_usb_getbuf(struct rtwn_usb_softc *); +static struct rtwn_data * rtwn_usb_getbuf(struct rtwn_usb_softc *); +static void rtwn_usb_txeof(struct rtwn_usb_softc *, + struct rtwn_data *, int); + + +static const uint8_t wme2qid[] = + { RTWN_BULK_TX_BE, RTWN_BULK_TX_BK, + RTWN_BULK_TX_VI, RTWN_BULK_TX_VO }; + + +static struct rtwn_data * +_rtwn_usb_getbuf(struct rtwn_usb_softc *uc) +{ + struct rtwn_softc *sc = &uc->uc_sc; + struct rtwn_data *bf; + + bf = STAILQ_FIRST(&uc->uc_tx_inactive); + if (bf != NULL) + STAILQ_REMOVE_HEAD(&uc->uc_tx_inactive, next); + else { + RTWN_DPRINTF(sc, RTWN_DEBUG_XMIT, + "%s: out of xmit buffers\n", __func__); + } + return (bf); +} + +static struct rtwn_data * +rtwn_usb_getbuf(struct rtwn_usb_softc *uc) +{ + struct rtwn_softc *sc = &uc->uc_sc; + struct rtwn_data *bf; + + RTWN_ASSERT_LOCKED(sc); + + bf = _rtwn_usb_getbuf(uc); + if (bf == NULL) { + RTWN_DPRINTF(sc, RTWN_DEBUG_XMIT, "%s: stop queue\n", + __func__); + } + return (bf); +} + +static void +rtwn_usb_txeof(struct rtwn_usb_softc *uc, struct rtwn_data *data, int status) +{ + struct rtwn_softc *sc = &uc->uc_sc; + + RTWN_ASSERT_LOCKED(sc); + + if (data->ni != NULL) /* not a beacon frame */ + ieee80211_tx_complete(data->ni, data->m, status); + + if (sc->sc_ratectl != RTWN_RATECTL_NET80211) + if (sc->sc_tx_n_active > 0) + sc->sc_tx_n_active--; + + data->ni = NULL; + data->m = NULL; + + STAILQ_INSERT_TAIL(&uc->uc_tx_inactive, data, next); + sc->qfullmsk = 0; +#ifndef D4054 + if (STAILQ_EMPTY(&uc->uc_tx_active) && STAILQ_EMPTY(&uc->uc_tx_pending)) + sc->sc_tx_timer = 0; + else + sc->sc_tx_timer = 5; +#endif +} + +void +rtwn_bulk_tx_callback(struct usb_xfer *xfer, usb_error_t error) +{ + struct rtwn_usb_softc *uc = usbd_xfer_softc(xfer); + struct rtwn_softc *sc = &uc->uc_sc; + struct rtwn_data *data; + + RTWN_ASSERT_LOCKED(sc); + + switch (USB_GET_STATE(xfer)){ + case USB_ST_TRANSFERRED: + data = STAILQ_FIRST(&uc->uc_tx_active); + if (data == NULL) + goto tr_setup; + STAILQ_REMOVE_HEAD(&uc->uc_tx_active, next); + rtwn_usb_txeof(uc, data, 0); + /* FALLTHROUGH */ + case USB_ST_SETUP: +tr_setup: + data = STAILQ_FIRST(&uc->uc_tx_pending); + if (data == NULL) { + RTWN_DPRINTF(sc, RTWN_DEBUG_XMIT, + "%s: empty pending queue\n", __func__); + sc->sc_tx_n_active = 0; + goto finish; + } + STAILQ_REMOVE_HEAD(&uc->uc_tx_pending, next); + STAILQ_INSERT_TAIL(&uc->uc_tx_active, data, next); + + /* + * Note: if this is a beacon frame, ensure that it will go + * into appropriate queue. + */ + if (data->ni == NULL && RTWN_CHIP_HAS_BCNQ1(sc)) + rtwn_switch_bcnq(sc, data->id); + usbd_xfer_set_frame_data(xfer, 0, data->buf, data->buflen); + usbd_transfer_submit(xfer); + if (sc->sc_ratectl != RTWN_RATECTL_NET80211) + sc->sc_tx_n_active++; + break; + default: + data = STAILQ_FIRST(&uc->uc_tx_active); + if (data == NULL) + goto tr_setup; + STAILQ_REMOVE_HEAD(&uc->uc_tx_active, next); + rtwn_usb_txeof(uc, data, 1); + if (error != USB_ERR_CANCELLED) { + usbd_xfer_set_stall(xfer); + goto tr_setup; + } + break; + } +finish: +#ifdef IEEE80211_SUPPORT_SUPERG + /* + * If the TX active queue drops below a certain + * threshold, ensure we age fast-frames out so they're + * transmitted. + */ + if (sc->sc_ratectl != RTWN_RATECTL_NET80211 && + sc->sc_tx_n_active <= 1) { + /* XXX ew - net80211 should defer this for us! */ + + /* + * Note: this sc_tx_n_active currently tracks + * the number of pending transmit submissions + * and not the actual depth of the TX frames + * pending to the hardware. That means that + * we're going to end up with some sub-optimal + * aggregation behaviour. + */ + /* + * XXX TODO: just make this a callout timer schedule so we can + * flush the FF staging queue if we're approaching idle. + */ + rtwn_cmd_sleepable(uc, NULL, 0, rtwn_ff_flush_all); + } +#endif + /* Kick-start more transmit */ + rtwn_start(sc); +} + +static void +rtwn_usb_tx_checksum(struct rtwn_tx_desc_common *txd) +{ + txd->txdw7.usb_checksum = 0; + txd->txdw7.usb_checksum = rtwn_usb_calc_tx_checksum(txd); +} + +int +rtwn_usb_tx_start(struct rtwn_softc *sc, struct ieee80211_node *ni, + struct mbuf *m, uint8_t *tx_desc, uint8_t type, int id) +{ + struct rtwn_usb_softc *uc = RTWN_USB_SOFTC(sc); + struct rtwn_tx_desc_common *txd; + struct rtwn_data *data; + struct usb_xfer *xfer; + uint16_t ac; + + RTWN_ASSERT_LOCKED(sc); + + data = rtwn_usb_getbuf(uc); + if (data == NULL) + return (ENOBUFS); + + ac = M_WME_GETAC(m); + + switch (type) { + case IEEE80211_FC0_TYPE_CTL: + case IEEE80211_FC0_TYPE_MGT: + xfer = uc->uc_xfer[RTWN_BULK_TX_VO]; + break; + default: + xfer = uc->uc_xfer[wme2qid[ac]]; + break; + } + + txd = (struct rtwn_tx_desc_common *)tx_desc; + txd->pktlen = htole16(m->m_pkthdr.len); + txd->offset = sc->txdesc_len; + txd->flags0 |= RTWN_FLAGS0_OWN; + rtwn_usb_tx_checksum(txd); + + /* Dump Tx descriptor. */ + rtwn_dump_tx_desc(sc, tx_desc); + + memcpy(data->buf, tx_desc, sc->txdesc_len); + m_copydata(m, 0, m->m_pkthdr.len, + (caddr_t)(data->buf + sc->txdesc_len)); + + data->buflen = m->m_pkthdr.len + sc->txdesc_len; + data->id = id; + data->ni = ni; + if (data->ni != NULL) { + data->m = m; +#ifndef D4054 + sc->sc_tx_timer = 5; +#endif + } + + STAILQ_INSERT_TAIL(&uc->uc_tx_pending, data, next); + if (STAILQ_EMPTY(&uc->uc_tx_inactive)) + sc->qfullmsk = 1; + + usbd_transfer_start(xfer); + + return (0); +} diff --git a/sys/dev/rtwn/usb/rtwn_usb_tx.h b/sys/dev/rtwn/usb/rtwn_usb_tx.h new file mode 100644 index 000000000000..01527080d515 --- /dev/null +++ b/sys/dev/rtwn/usb/rtwn_usb_tx.h @@ -0,0 +1,26 @@ +/*- + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef RTWN_USB_TX_H +#define RTWN_USB_TX_H + +void rtwn_bulk_tx_callback(struct usb_xfer *, usb_error_t); +int rtwn_usb_tx_start(struct rtwn_softc *, struct ieee80211_node *, + struct mbuf *, uint8_t *, uint8_t, int); + +#endif /* RTWN_USB_TX_H */ diff --git a/sys/dev/rtwn/usb/rtwn_usb_var.h b/sys/dev/rtwn/usb/rtwn_usb_var.h new file mode 100644 index 000000000000..be7f8f198834 --- /dev/null +++ b/sys/dev/rtwn/usb/rtwn_usb_var.h @@ -0,0 +1,74 @@ +/*- + * Copyright (c) 2010 Damien Bergamini + * Copyright (c) 2016 Andriy Voskoboinyk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ + * $FreeBSD$ + */ + +#ifndef RTWN_USBVAR_H +#define RTWN_USBVAR_H + +#define RTWN_IFACE_INDEX 0 + +#define RTWN_USB_RX_LIST_COUNT 1 +#define RTWN_USB_TX_LIST_COUNT 16 + +struct rtwn_data { + uint8_t *buf; + /* 'id' is meaningful for beacons only */ + int id; + uint16_t buflen; + struct mbuf *m; + struct ieee80211_node *ni; + STAILQ_ENTRY(rtwn_data) next; +}; +typedef STAILQ_HEAD(, rtwn_data) rtwn_datahead; + +enum { + RTWN_BULK_RX, + RTWN_BULK_TX_BE, /* = WME_AC_BE */ + RTWN_BULK_TX_BK, /* = WME_AC_BK */ + RTWN_BULK_TX_VI, /* = WME_AC_VI */ + RTWN_BULK_TX_VO, /* = WME_AC_VO */ + RTWN_N_TRANSFER = 5, +}; + +#define RTWN_EP_QUEUES RTWN_BULK_RX + +struct rtwn_usb_softc { + struct rtwn_softc uc_sc; /* must be the first */ + struct usb_device *uc_udev; + struct usb_xfer *uc_xfer[RTWN_N_TRANSFER]; + + struct rtwn_data uc_rx[RTWN_USB_RX_LIST_COUNT]; + rtwn_datahead uc_rx_active; + rtwn_datahead uc_rx_inactive; + struct rtwn_data uc_tx[RTWN_USB_TX_LIST_COUNT]; + rtwn_datahead uc_tx_active; + rtwn_datahead uc_tx_inactive; + rtwn_datahead uc_tx_pending; + + int (*uc_align_rx)(int, int); + + int ntx; + int tx_agg_desc_num; +}; +#define RTWN_USB_SOFTC(sc) ((struct rtwn_usb_softc *)(sc)) + +#define rtwn_usb_align_rx(_uc, _totlen, _len) \ + (((_uc)->uc_align_rx)((_totlen), (_len))) + +#endif /* RTWN_USBVAR_H */ diff --git a/sys/dev/urtwn/if_urtwn.c b/sys/dev/urtwn/if_urtwn.c deleted file mode 100644 index 7c22aaa6faa3..000000000000 --- a/sys/dev/urtwn/if_urtwn.c +++ /dev/null @@ -1,5681 +0,0 @@ -/* $OpenBSD: if_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp $ */ - -/*- - * Copyright (c) 2010 Damien Bergamini - * Copyright (c) 2014 Kevin Lo - * Copyright (c) 2015 Andriy Voskoboinyk - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include -__FBSDID("$FreeBSD$"); - -/* - * Driver for Realtek RTL8188CE-VAU/RTL8188CUS/RTL8188EU/RTL8188RU/RTL8192CU. - */ - -#include "opt_wlan.h" -#include "opt_urtwn.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#ifdef IEEE80211_SUPPORT_SUPERG -#include -#endif - -#include -#include -#include -#include "usbdevs.h" - -#include - -#include -#include - -#ifdef USB_DEBUG -enum { - URTWN_DEBUG_XMIT = 0x00000001, /* basic xmit operation */ - URTWN_DEBUG_RECV = 0x00000002, /* basic recv operation */ - URTWN_DEBUG_STATE = 0x00000004, /* 802.11 state transitions */ - URTWN_DEBUG_RA = 0x00000008, /* f/w rate adaptation setup */ - URTWN_DEBUG_USB = 0x00000010, /* usb requests */ - URTWN_DEBUG_FIRMWARE = 0x00000020, /* firmware(9) loading debug */ - URTWN_DEBUG_BEACON = 0x00000040, /* beacon handling */ - URTWN_DEBUG_INTR = 0x00000080, /* ISR */ - URTWN_DEBUG_TEMP = 0x00000100, /* temperature calibration */ - URTWN_DEBUG_ROM = 0x00000200, /* various ROM info */ - URTWN_DEBUG_KEY = 0x00000400, /* crypto keys management */ - URTWN_DEBUG_TXPWR = 0x00000800, /* dump Tx power values */ - URTWN_DEBUG_RSSI = 0x00001000, /* dump RSSI lookups */ - URTWN_DEBUG_ANY = 0xffffffff -}; - -#define URTWN_DPRINTF(_sc, _m, ...) do { \ - if ((_sc)->sc_debug & (_m)) \ - device_printf((_sc)->sc_dev, __VA_ARGS__); \ -} while(0) - -#else -#define URTWN_DPRINTF(_sc, _m, ...) do { (void) sc; } while (0) -#endif - -#define IEEE80211_HAS_ADDR4(wh) IEEE80211_IS_DSTODS(wh) - -static int urtwn_enable_11n = 1; -TUNABLE_INT("hw.usb.urtwn.enable_11n", &urtwn_enable_11n); - -/* various supported device vendors/products */ -static const STRUCT_USB_HOST_ID urtwn_devs[] = { -#define URTWN_DEV(v,p) { USB_VP(USB_VENDOR_##v, USB_PRODUCT_##v##_##p) } -#define URTWN_RTL8188E_DEV(v,p) \ - { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, URTWN_RTL8188E) } -#define URTWN_RTL8188E 1 - URTWN_DEV(ABOCOM, RTL8188CU_1), - URTWN_DEV(ABOCOM, RTL8188CU_2), - URTWN_DEV(ABOCOM, RTL8192CU), - URTWN_DEV(ASUS, RTL8192CU), - URTWN_DEV(ASUS, USBN10NANO), - URTWN_DEV(AZUREWAVE, RTL8188CE_1), - URTWN_DEV(AZUREWAVE, RTL8188CE_2), - URTWN_DEV(AZUREWAVE, RTL8188CU), - URTWN_DEV(BELKIN, F7D2102), - URTWN_DEV(BELKIN, RTL8188CU), - URTWN_DEV(BELKIN, RTL8192CU), - URTWN_DEV(CHICONY, RTL8188CUS_1), - URTWN_DEV(CHICONY, RTL8188CUS_2), - URTWN_DEV(CHICONY, RTL8188CUS_3), - URTWN_DEV(CHICONY, RTL8188CUS_4), - URTWN_DEV(CHICONY, RTL8188CUS_5), - URTWN_DEV(COREGA, RTL8192CU), - URTWN_DEV(DLINK, RTL8188CU), - URTWN_DEV(DLINK, RTL8192CU_1), - URTWN_DEV(DLINK, RTL8192CU_2), - URTWN_DEV(DLINK, RTL8192CU_3), - URTWN_DEV(DLINK, DWA131B), - URTWN_DEV(EDIMAX, EW7811UN), - URTWN_DEV(EDIMAX, RTL8192CU), - URTWN_DEV(FEIXUN, RTL8188CU), - URTWN_DEV(FEIXUN, RTL8192CU), - URTWN_DEV(GUILLEMOT, HWNUP150), - URTWN_DEV(HAWKING, RTL8192CU), - URTWN_DEV(HP3, RTL8188CU), - URTWN_DEV(NETGEAR, WNA1000M), - URTWN_DEV(NETGEAR, RTL8192CU), - URTWN_DEV(NETGEAR4, RTL8188CU), - URTWN_DEV(NOVATECH, RTL8188CU), - URTWN_DEV(PLANEX2, RTL8188CU_1), - URTWN_DEV(PLANEX2, RTL8188CU_2), - URTWN_DEV(PLANEX2, RTL8188CU_3), - URTWN_DEV(PLANEX2, RTL8188CU_4), - URTWN_DEV(PLANEX2, RTL8188CUS), - URTWN_DEV(PLANEX2, RTL8192CU), - URTWN_DEV(REALTEK, RTL8188CE_0), - URTWN_DEV(REALTEK, RTL8188CE_1), - URTWN_DEV(REALTEK, RTL8188CTV), - URTWN_DEV(REALTEK, RTL8188CU_0), - URTWN_DEV(REALTEK, RTL8188CU_1), - URTWN_DEV(REALTEK, RTL8188CU_2), - URTWN_DEV(REALTEK, RTL8188CU_3), - URTWN_DEV(REALTEK, RTL8188CU_COMBO), - URTWN_DEV(REALTEK, RTL8188CUS), - URTWN_DEV(REALTEK, RTL8188RU_1), - URTWN_DEV(REALTEK, RTL8188RU_2), - URTWN_DEV(REALTEK, RTL8188RU_3), - URTWN_DEV(REALTEK, RTL8191CU), - URTWN_DEV(REALTEK, RTL8192CE), - URTWN_DEV(REALTEK, RTL8192CU), - URTWN_DEV(SITECOMEU, RTL8188CU_1), - URTWN_DEV(SITECOMEU, RTL8188CU_2), - URTWN_DEV(SITECOMEU, RTL8192CU), - URTWN_DEV(TRENDNET, RTL8188CU), - URTWN_DEV(TRENDNET, RTL8192CU), - URTWN_DEV(ZYXEL, RTL8192CU), - /* URTWN_RTL8188E */ - URTWN_RTL8188E_DEV(ABOCOM, RTL8188EU), - URTWN_RTL8188E_DEV(DLINK, DWA123D1), - URTWN_RTL8188E_DEV(DLINK, DWA125D1), - URTWN_RTL8188E_DEV(ELECOM, WDC150SU2M), - URTWN_RTL8188E_DEV(REALTEK, RTL8188ETV), - URTWN_RTL8188E_DEV(REALTEK, RTL8188EU), -#undef URTWN_RTL8188E_DEV -#undef URTWN_DEV -}; - -static device_probe_t urtwn_match; -static device_attach_t urtwn_attach; -static device_detach_t urtwn_detach; - -static usb_callback_t urtwn_bulk_tx_callback; -static usb_callback_t urtwn_bulk_rx_callback; - -static void urtwn_sysctlattach(struct urtwn_softc *); -static void urtwn_drain_mbufq(struct urtwn_softc *); -static usb_error_t urtwn_do_request(struct urtwn_softc *, - struct usb_device_request *, void *); -static struct ieee80211vap *urtwn_vap_create(struct ieee80211com *, - const char [IFNAMSIZ], int, enum ieee80211_opmode, int, - const uint8_t [IEEE80211_ADDR_LEN], - const uint8_t [IEEE80211_ADDR_LEN]); -static void urtwn_vap_delete(struct ieee80211vap *); -static void urtwn_vap_clear_tx(struct urtwn_softc *, - struct ieee80211vap *); -static void urtwn_vap_clear_tx_queue(struct urtwn_softc *, - urtwn_datahead *, struct ieee80211vap *); -static struct mbuf * urtwn_rx_copy_to_mbuf(struct urtwn_softc *, - struct r92c_rx_stat *, int); -static struct mbuf * urtwn_report_intr(struct usb_xfer *, - struct urtwn_data *); -static struct mbuf * urtwn_rxeof(struct urtwn_softc *, uint8_t *, int); -static void urtwn_r88e_ratectl_tx_complete(struct urtwn_softc *, - void *); -static struct ieee80211_node *urtwn_rx_frame(struct urtwn_softc *, - struct mbuf *, int8_t *); -static void urtwn_txeof(struct urtwn_softc *, struct urtwn_data *, - int); -static int urtwn_alloc_list(struct urtwn_softc *, - struct urtwn_data[], int, int); -static int urtwn_alloc_rx_list(struct urtwn_softc *); -static int urtwn_alloc_tx_list(struct urtwn_softc *); -static void urtwn_free_list(struct urtwn_softc *, - struct urtwn_data data[], int); -static void urtwn_free_rx_list(struct urtwn_softc *); -static void urtwn_free_tx_list(struct urtwn_softc *); -static struct urtwn_data * _urtwn_getbuf(struct urtwn_softc *); -static struct urtwn_data * urtwn_getbuf(struct urtwn_softc *); -static usb_error_t urtwn_write_region_1(struct urtwn_softc *, uint16_t, - uint8_t *, int); -static usb_error_t urtwn_write_1(struct urtwn_softc *, uint16_t, uint8_t); -static usb_error_t urtwn_write_2(struct urtwn_softc *, uint16_t, uint16_t); -static usb_error_t urtwn_write_4(struct urtwn_softc *, uint16_t, uint32_t); -static usb_error_t urtwn_read_region_1(struct urtwn_softc *, uint16_t, - uint8_t *, int); -static uint8_t urtwn_read_1(struct urtwn_softc *, uint16_t); -static uint16_t urtwn_read_2(struct urtwn_softc *, uint16_t); -static uint32_t urtwn_read_4(struct urtwn_softc *, uint16_t); -static int urtwn_fw_cmd(struct urtwn_softc *, uint8_t, - const void *, int); -static void urtwn_cmdq_cb(void *, int); -static int urtwn_cmd_sleepable(struct urtwn_softc *, const void *, - size_t, CMD_FUNC_PROTO); -static void urtwn_r92c_rf_write(struct urtwn_softc *, int, - uint8_t, uint32_t); -static void urtwn_r88e_rf_write(struct urtwn_softc *, int, - uint8_t, uint32_t); -static uint32_t urtwn_rf_read(struct urtwn_softc *, int, uint8_t); -static int urtwn_llt_write(struct urtwn_softc *, uint32_t, - uint32_t); -static int urtwn_efuse_read_next(struct urtwn_softc *, uint8_t *); -static int urtwn_efuse_read_data(struct urtwn_softc *, uint8_t *, - uint8_t, uint8_t); -#ifdef USB_DEBUG -static void urtwn_dump_rom_contents(struct urtwn_softc *, - uint8_t *, uint16_t); -#endif -static int urtwn_efuse_read(struct urtwn_softc *, uint8_t *, - uint16_t); -static int urtwn_efuse_switch_power(struct urtwn_softc *); -static int urtwn_read_chipid(struct urtwn_softc *); -static int urtwn_read_rom(struct urtwn_softc *); -static int urtwn_r88e_read_rom(struct urtwn_softc *); -static int urtwn_ra_init(struct urtwn_softc *); -static void urtwn_init_beacon(struct urtwn_softc *, - struct urtwn_vap *); -static int urtwn_setup_beacon(struct urtwn_softc *, - struct ieee80211_node *); -static void urtwn_update_beacon(struct ieee80211vap *, int); -static int urtwn_tx_beacon(struct urtwn_softc *sc, - struct urtwn_vap *); -static int urtwn_key_alloc(struct ieee80211vap *, - struct ieee80211_key *, ieee80211_keyix *, - ieee80211_keyix *); -static void urtwn_key_set_cb(struct urtwn_softc *, - union sec_param *); -static void urtwn_key_del_cb(struct urtwn_softc *, - union sec_param *); -static int urtwn_key_set(struct ieee80211vap *, - const struct ieee80211_key *); -static int urtwn_key_delete(struct ieee80211vap *, - const struct ieee80211_key *); -static void urtwn_tsf_task_adhoc(void *, int); -static void urtwn_tsf_sync_enable(struct urtwn_softc *, - struct ieee80211vap *); -static void urtwn_get_tsf(struct urtwn_softc *, uint64_t *); -static void urtwn_set_led(struct urtwn_softc *, int, int); -static void urtwn_set_mode(struct urtwn_softc *, uint8_t); -static void urtwn_ibss_recv_mgmt(struct ieee80211_node *, - struct mbuf *, int, - const struct ieee80211_rx_stats *, int, int); -static int urtwn_newstate(struct ieee80211vap *, - enum ieee80211_state, int); -static void urtwn_calib_to(void *); -static void urtwn_calib_cb(struct urtwn_softc *, - union sec_param *); -static void urtwn_watchdog(void *); -static void urtwn_update_avgrssi(struct urtwn_softc *, int, int8_t); -static int8_t urtwn_get_rssi(struct urtwn_softc *, int, void *); -static int8_t urtwn_r88e_get_rssi(struct urtwn_softc *, int, void *); -static int urtwn_tx_data(struct urtwn_softc *, - struct ieee80211_node *, struct mbuf *, - struct urtwn_data *); -static int urtwn_tx_raw(struct urtwn_softc *, - struct ieee80211_node *, struct mbuf *, - struct urtwn_data *, - const struct ieee80211_bpf_params *); -static void urtwn_tx_start(struct urtwn_softc *, struct mbuf *, - uint8_t, struct urtwn_data *); -static int urtwn_transmit(struct ieee80211com *, struct mbuf *); -static void urtwn_start(struct urtwn_softc *); -static void urtwn_parent(struct ieee80211com *); -static int urtwn_r92c_power_on(struct urtwn_softc *); -static int urtwn_r88e_power_on(struct urtwn_softc *); -static void urtwn_r92c_power_off(struct urtwn_softc *); -static void urtwn_r88e_power_off(struct urtwn_softc *); -static int urtwn_llt_init(struct urtwn_softc *); -#ifndef URTWN_WITHOUT_UCODE -static void urtwn_fw_reset(struct urtwn_softc *); -static void urtwn_r88e_fw_reset(struct urtwn_softc *); -static int urtwn_fw_loadpage(struct urtwn_softc *, int, - const uint8_t *, int); -static int urtwn_load_firmware(struct urtwn_softc *); -#endif -static int urtwn_dma_init(struct urtwn_softc *); -static int urtwn_mac_init(struct urtwn_softc *); -static void urtwn_bb_init(struct urtwn_softc *); -static void urtwn_rf_init(struct urtwn_softc *); -static void urtwn_cam_init(struct urtwn_softc *); -static int urtwn_cam_write(struct urtwn_softc *, uint32_t, - uint32_t); -static void urtwn_pa_bias_init(struct urtwn_softc *); -static void urtwn_rxfilter_init(struct urtwn_softc *); -static void urtwn_edca_init(struct urtwn_softc *); -static void urtwn_write_txpower(struct urtwn_softc *, int, - uint16_t[]); -static void urtwn_get_txpower(struct urtwn_softc *, int, - struct ieee80211_channel *, - struct ieee80211_channel *, uint16_t[]); -static void urtwn_r88e_get_txpower(struct urtwn_softc *, int, - struct ieee80211_channel *, - struct ieee80211_channel *, uint16_t[]); -static void urtwn_set_txpower(struct urtwn_softc *, - struct ieee80211_channel *, - struct ieee80211_channel *); -static void urtwn_set_rx_bssid_all(struct urtwn_softc *, int); -static void urtwn_set_gain(struct urtwn_softc *, uint8_t); -static void urtwn_scan_start(struct ieee80211com *); -static void urtwn_scan_end(struct ieee80211com *); -static void urtwn_getradiocaps(struct ieee80211com *, int, int *, - struct ieee80211_channel[]); -static void urtwn_set_channel(struct ieee80211com *); -static int urtwn_wme_update(struct ieee80211com *); -static void urtwn_update_slot(struct ieee80211com *); -static void urtwn_update_slot_cb(struct urtwn_softc *, - union sec_param *); -static void urtwn_update_aifs(struct urtwn_softc *, uint8_t); -static uint8_t urtwn_get_multi_pos(const uint8_t[]); -static void urtwn_set_multi(struct urtwn_softc *); -static void urtwn_set_promisc(struct urtwn_softc *); -static void urtwn_update_promisc(struct ieee80211com *); -static void urtwn_update_mcast(struct ieee80211com *); -static struct ieee80211_node *urtwn_node_alloc(struct ieee80211vap *, - const uint8_t mac[IEEE80211_ADDR_LEN]); -static void urtwn_newassoc(struct ieee80211_node *, int); -static void urtwn_node_free(struct ieee80211_node *); -static void urtwn_set_chan(struct urtwn_softc *, - struct ieee80211_channel *, - struct ieee80211_channel *); -static void urtwn_iq_calib(struct urtwn_softc *); -static void urtwn_lc_calib(struct urtwn_softc *); -static void urtwn_temp_calib(struct urtwn_softc *); -static void urtwn_setup_static_keys(struct urtwn_softc *, - struct urtwn_vap *); -static int urtwn_init(struct urtwn_softc *); -static void urtwn_stop(struct urtwn_softc *); -static void urtwn_abort_xfers(struct urtwn_softc *); -static int urtwn_raw_xmit(struct ieee80211_node *, struct mbuf *, - const struct ieee80211_bpf_params *); -static void urtwn_ms_delay(struct urtwn_softc *); - -/* Aliases. */ -#define urtwn_bb_write urtwn_write_4 -#define urtwn_bb_read urtwn_read_4 - -static const struct usb_config urtwn_config[URTWN_N_TRANSFER] = { - [URTWN_BULK_RX] = { - .type = UE_BULK, - .endpoint = UE_ADDR_ANY, - .direction = UE_DIR_IN, - .bufsize = URTWN_RXBUFSZ, - .flags = { - .pipe_bof = 1, - .short_xfer_ok = 1 - }, - .callback = urtwn_bulk_rx_callback, - }, - [URTWN_BULK_TX_BE] = { - .type = UE_BULK, - .endpoint = 0x03, - .direction = UE_DIR_OUT, - .bufsize = URTWN_TXBUFSZ, - .flags = { - .ext_buffer = 1, - .pipe_bof = 1, - .force_short_xfer = 1 - }, - .callback = urtwn_bulk_tx_callback, - .timeout = URTWN_TX_TIMEOUT, /* ms */ - }, - [URTWN_BULK_TX_BK] = { - .type = UE_BULK, - .endpoint = 0x03, - .direction = UE_DIR_OUT, - .bufsize = URTWN_TXBUFSZ, - .flags = { - .ext_buffer = 1, - .pipe_bof = 1, - .force_short_xfer = 1, - }, - .callback = urtwn_bulk_tx_callback, - .timeout = URTWN_TX_TIMEOUT, /* ms */ - }, - [URTWN_BULK_TX_VI] = { - .type = UE_BULK, - .endpoint = 0x02, - .direction = UE_DIR_OUT, - .bufsize = URTWN_TXBUFSZ, - .flags = { - .ext_buffer = 1, - .pipe_bof = 1, - .force_short_xfer = 1 - }, - .callback = urtwn_bulk_tx_callback, - .timeout = URTWN_TX_TIMEOUT, /* ms */ - }, - [URTWN_BULK_TX_VO] = { - .type = UE_BULK, - .endpoint = 0x02, - .direction = UE_DIR_OUT, - .bufsize = URTWN_TXBUFSZ, - .flags = { - .ext_buffer = 1, - .pipe_bof = 1, - .force_short_xfer = 1 - }, - .callback = urtwn_bulk_tx_callback, - .timeout = URTWN_TX_TIMEOUT, /* ms */ - }, -}; - -static const struct wme_to_queue { - uint16_t reg; - uint8_t qid; -} wme2queue[WME_NUM_AC] = { - { R92C_EDCA_BE_PARAM, URTWN_BULK_TX_BE}, - { R92C_EDCA_BK_PARAM, URTWN_BULK_TX_BK}, - { R92C_EDCA_VI_PARAM, URTWN_BULK_TX_VI}, - { R92C_EDCA_VO_PARAM, URTWN_BULK_TX_VO} -}; - -static const uint8_t urtwn_chan_2ghz[] = - { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }; - -static int -urtwn_match(device_t self) -{ - struct usb_attach_arg *uaa = device_get_ivars(self); - - if (uaa->usb_mode != USB_MODE_HOST) - return (ENXIO); - if (uaa->info.bConfigIndex != URTWN_CONFIG_INDEX) - return (ENXIO); - if (uaa->info.bIfaceIndex != URTWN_IFACE_INDEX) - return (ENXIO); - - return (usbd_lookup_id_by_uaa(urtwn_devs, sizeof(urtwn_devs), uaa)); -} - -static void -urtwn_update_chw(struct ieee80211com *ic) -{ -} - -static int -urtwn_ampdu_enable(struct ieee80211_node *ni, struct ieee80211_tx_ampdu *tap) -{ - - /* We're driving this ourselves (eventually); don't involve net80211 */ - return (0); -} - -static int -urtwn_attach(device_t self) -{ - struct usb_attach_arg *uaa = device_get_ivars(self); - struct urtwn_softc *sc = device_get_softc(self); - struct ieee80211com *ic = &sc->sc_ic; - int error; - - device_set_usb_desc(self); - sc->sc_udev = uaa->device; - sc->sc_dev = self; - if (USB_GET_DRIVER_INFO(uaa) == URTWN_RTL8188E) - sc->chip |= URTWN_CHIP_88E; - -#ifdef USB_DEBUG - int debug; - if (resource_int_value(device_get_name(sc->sc_dev), - device_get_unit(sc->sc_dev), "debug", &debug) == 0) - sc->sc_debug = debug; -#endif - - mtx_init(&sc->sc_mtx, device_get_nameunit(self), - MTX_NETWORK_LOCK, MTX_DEF); - URTWN_CMDQ_LOCK_INIT(sc); - URTWN_NT_LOCK_INIT(sc); - callout_init(&sc->sc_calib_to, 0); - callout_init(&sc->sc_watchdog_ch, 0); - mbufq_init(&sc->sc_snd, ifqmaxlen); - - sc->sc_iface_index = URTWN_IFACE_INDEX; - error = usbd_transfer_setup(uaa->device, &sc->sc_iface_index, - sc->sc_xfer, urtwn_config, URTWN_N_TRANSFER, sc, &sc->sc_mtx); - if (error) { - device_printf(self, "could not allocate USB transfers, " - "err=%s\n", usbd_errstr(error)); - goto detach; - } - - URTWN_LOCK(sc); - - error = urtwn_read_chipid(sc); - if (error) { - device_printf(sc->sc_dev, "unsupported test chip\n"); - URTWN_UNLOCK(sc); - goto detach; - } - - /* Determine number of Tx/Rx chains. */ - if (sc->chip & URTWN_CHIP_92C) { - sc->ntxchains = (sc->chip & URTWN_CHIP_92C_1T2R) ? 1 : 2; - sc->nrxchains = 2; - } else { - sc->ntxchains = 1; - sc->nrxchains = 1; - } - - if (sc->chip & URTWN_CHIP_88E) - error = urtwn_r88e_read_rom(sc); - else - error = urtwn_read_rom(sc); - if (error != 0) { - device_printf(sc->sc_dev, "%s: cannot read rom, error %d\n", - __func__, error); - URTWN_UNLOCK(sc); - goto detach; - } - - device_printf(sc->sc_dev, "MAC/BB RTL%s, RF 6052 %dT%dR\n", - (sc->chip & URTWN_CHIP_92C) ? "8192CU" : - (sc->chip & URTWN_CHIP_88E) ? "8188EU" : - (sc->board_type == R92C_BOARD_TYPE_HIGHPA) ? "8188RU" : - (sc->board_type == R92C_BOARD_TYPE_MINICARD) ? "8188CE-VAU" : - "8188CUS", sc->ntxchains, sc->nrxchains); - - URTWN_UNLOCK(sc); - - ic->ic_softc = sc; - ic->ic_name = device_get_nameunit(self); - ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ - ic->ic_opmode = IEEE80211_M_STA; /* default to BSS mode */ - - /* set device capabilities */ - ic->ic_caps = - IEEE80211_C_STA /* station mode */ - | IEEE80211_C_MONITOR /* monitor mode */ - | IEEE80211_C_IBSS /* adhoc mode */ - | IEEE80211_C_HOSTAP /* hostap mode */ - | IEEE80211_C_SHPREAMBLE /* short preamble supported */ - | IEEE80211_C_SHSLOT /* short slot time supported */ -#if 0 - | IEEE80211_C_BGSCAN /* capable of bg scanning */ -#endif - | IEEE80211_C_WPA /* 802.11i */ - | IEEE80211_C_WME /* 802.11e */ - | IEEE80211_C_SWAMSDUTX /* Do software A-MSDU TX */ - | IEEE80211_C_FF /* Atheros fast-frames */ - ; - - ic->ic_cryptocaps = - IEEE80211_CRYPTO_WEP | - IEEE80211_CRYPTO_TKIP | - IEEE80211_CRYPTO_AES_CCM; - - /* Assume they're all 11n capable for now */ - if (urtwn_enable_11n) { - device_printf(self, "enabling 11n\n"); - ic->ic_htcaps = IEEE80211_HTC_HT | -#if 0 - IEEE80211_HTC_AMPDU | -#endif - IEEE80211_HTC_AMSDU | - IEEE80211_HTCAP_MAXAMSDU_3839 | - IEEE80211_HTCAP_SMPS_OFF; - /* no HT40 just yet */ - // ic->ic_htcaps |= IEEE80211_HTCAP_CHWIDTH40; - - /* XXX TODO: verify chains versus streams for urtwn */ - ic->ic_txstream = sc->ntxchains; - ic->ic_rxstream = sc->nrxchains; - } - - /* XXX TODO: setup regdomain if R92C_CHANNEL_PLAN_BY_HW bit is set. */ - - urtwn_getradiocaps(ic, IEEE80211_CHAN_MAX, &ic->ic_nchans, - ic->ic_channels); - - ieee80211_ifattach(ic); - ic->ic_raw_xmit = urtwn_raw_xmit; - ic->ic_scan_start = urtwn_scan_start; - ic->ic_scan_end = urtwn_scan_end; - ic->ic_getradiocaps = urtwn_getradiocaps; - ic->ic_set_channel = urtwn_set_channel; - ic->ic_transmit = urtwn_transmit; - ic->ic_parent = urtwn_parent; - ic->ic_vap_create = urtwn_vap_create; - ic->ic_vap_delete = urtwn_vap_delete; - ic->ic_wme.wme_update = urtwn_wme_update; - ic->ic_updateslot = urtwn_update_slot; - ic->ic_update_promisc = urtwn_update_promisc; - ic->ic_update_mcast = urtwn_update_mcast; - if (sc->chip & URTWN_CHIP_88E) { - ic->ic_node_alloc = urtwn_node_alloc; - ic->ic_newassoc = urtwn_newassoc; - sc->sc_node_free = ic->ic_node_free; - ic->ic_node_free = urtwn_node_free; - } - ic->ic_update_chw = urtwn_update_chw; - ic->ic_ampdu_enable = urtwn_ampdu_enable; - - ieee80211_radiotap_attach(ic, &sc->sc_txtap.wt_ihdr, - sizeof(sc->sc_txtap), URTWN_TX_RADIOTAP_PRESENT, - &sc->sc_rxtap.wr_ihdr, sizeof(sc->sc_rxtap), - URTWN_RX_RADIOTAP_PRESENT); - - TASK_INIT(&sc->cmdq_task, 0, urtwn_cmdq_cb, sc); - - urtwn_sysctlattach(sc); - - if (bootverbose) - ieee80211_announce(ic); - - return (0); - -detach: - urtwn_detach(self); - return (ENXIO); /* failure */ -} - -static void -urtwn_sysctlattach(struct urtwn_softc *sc) -{ -#ifdef USB_DEBUG - struct sysctl_ctx_list *ctx = device_get_sysctl_ctx(sc->sc_dev); - struct sysctl_oid *tree = device_get_sysctl_tree(sc->sc_dev); - - SYSCTL_ADD_U32(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, - "debug", CTLFLAG_RW, &sc->sc_debug, sc->sc_debug, - "control debugging printfs"); -#endif -} - -static int -urtwn_detach(device_t self) -{ - struct urtwn_softc *sc = device_get_softc(self); - struct ieee80211com *ic = &sc->sc_ic; - - /* Prevent further ioctls. */ - URTWN_LOCK(sc); - sc->sc_flags |= URTWN_DETACHED; - URTWN_UNLOCK(sc); - - urtwn_stop(sc); - - callout_drain(&sc->sc_watchdog_ch); - callout_drain(&sc->sc_calib_to); - - /* stop all USB transfers */ - usbd_transfer_unsetup(sc->sc_xfer, URTWN_N_TRANSFER); - - if (ic->ic_softc == sc) { - ieee80211_draintask(ic, &sc->cmdq_task); - ieee80211_ifdetach(ic); - } - - URTWN_NT_LOCK_DESTROY(sc); - URTWN_CMDQ_LOCK_DESTROY(sc); - mtx_destroy(&sc->sc_mtx); - - return (0); -} - -static void -urtwn_drain_mbufq(struct urtwn_softc *sc) -{ - struct mbuf *m; - struct ieee80211_node *ni; - URTWN_ASSERT_LOCKED(sc); - while ((m = mbufq_dequeue(&sc->sc_snd)) != NULL) { - ni = (struct ieee80211_node *)m->m_pkthdr.rcvif; - m->m_pkthdr.rcvif = NULL; - ieee80211_free_node(ni); - m_freem(m); - } -} - -static usb_error_t -urtwn_do_request(struct urtwn_softc *sc, struct usb_device_request *req, - void *data) -{ - usb_error_t err; - int ntries = 10; - - URTWN_ASSERT_LOCKED(sc); - - while (ntries--) { - err = usbd_do_request_flags(sc->sc_udev, &sc->sc_mtx, - req, data, 0, NULL, 250 /* ms */); - if (err == 0) - break; - - URTWN_DPRINTF(sc, URTWN_DEBUG_USB, - "%s: control request failed, %s (retries left: %d)\n", - __func__, usbd_errstr(err), ntries); - usb_pause_mtx(&sc->sc_mtx, hz / 100); - } - return (err); -} - -static struct ieee80211vap * -urtwn_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit, - enum ieee80211_opmode opmode, int flags, - const uint8_t bssid[IEEE80211_ADDR_LEN], - const uint8_t mac[IEEE80211_ADDR_LEN]) -{ - struct urtwn_softc *sc = ic->ic_softc; - struct urtwn_vap *uvp; - struct ieee80211vap *vap; - - if (!TAILQ_EMPTY(&ic->ic_vaps)) /* only one at a time */ - return (NULL); - - uvp = malloc(sizeof(struct urtwn_vap), M_80211_VAP, M_WAITOK | M_ZERO); - vap = &uvp->vap; - /* enable s/w bmiss handling for sta mode */ - - if (ieee80211_vap_setup(ic, vap, name, unit, opmode, - flags | IEEE80211_CLONE_NOBEACONS, bssid) != 0) { - /* out of memory */ - free(uvp, M_80211_VAP); - return (NULL); - } - - if (opmode == IEEE80211_M_HOSTAP || opmode == IEEE80211_M_IBSS) - urtwn_init_beacon(sc, uvp); - - /* override state transition machine */ - uvp->newstate = vap->iv_newstate; - vap->iv_newstate = urtwn_newstate; - vap->iv_update_beacon = urtwn_update_beacon; - vap->iv_key_alloc = urtwn_key_alloc; - vap->iv_key_set = urtwn_key_set; - vap->iv_key_delete = urtwn_key_delete; - - /* 802.11n parameters */ - vap->iv_ampdu_density = IEEE80211_HTCAP_MPDUDENSITY_16; - vap->iv_ampdu_rxmax = IEEE80211_HTCAP_MAXRXAMPDU_64K; - - if (opmode == IEEE80211_M_IBSS) { - uvp->recv_mgmt = vap->iv_recv_mgmt; - vap->iv_recv_mgmt = urtwn_ibss_recv_mgmt; - TASK_INIT(&uvp->tsf_task_adhoc, 0, urtwn_tsf_task_adhoc, vap); - } - - if (URTWN_CHIP_HAS_RATECTL(sc)) - ieee80211_ratectl_init(vap); - /* complete setup */ - ieee80211_vap_attach(vap, ieee80211_media_change, - ieee80211_media_status, mac); - ic->ic_opmode = opmode; - return (vap); -} - -static void -urtwn_vap_delete(struct ieee80211vap *vap) -{ - struct ieee80211com *ic = vap->iv_ic; - struct urtwn_softc *sc = ic->ic_softc; - struct urtwn_vap *uvp = URTWN_VAP(vap); - - /* Guarantee that nothing will go through this vap. */ - ieee80211_new_state(vap, IEEE80211_S_INIT, -1); - ieee80211_draintask(ic, &vap->iv_nstate_task); - - URTWN_LOCK(sc); - if (uvp->bcn_mbuf != NULL) - m_freem(uvp->bcn_mbuf); - /* Cancel any unfinished Tx. */ - urtwn_vap_clear_tx(sc, vap); - URTWN_UNLOCK(sc); - if (vap->iv_opmode == IEEE80211_M_IBSS) - ieee80211_draintask(ic, &uvp->tsf_task_adhoc); - if (URTWN_CHIP_HAS_RATECTL(sc)) - ieee80211_ratectl_deinit(vap); - ieee80211_vap_detach(vap); - free(uvp, M_80211_VAP); -} - -static void -urtwn_vap_clear_tx(struct urtwn_softc *sc, struct ieee80211vap *vap) -{ - - URTWN_ASSERT_LOCKED(sc); - - urtwn_vap_clear_tx_queue(sc, &sc->sc_tx_active, vap); - urtwn_vap_clear_tx_queue(sc, &sc->sc_tx_pending, vap); -} - -static void -urtwn_vap_clear_tx_queue(struct urtwn_softc *sc, urtwn_datahead *head, - struct ieee80211vap *vap) -{ - struct urtwn_data *dp, *tmp; - - STAILQ_FOREACH_SAFE(dp, head, next, tmp) { - if (dp->ni != NULL) { - if (dp->ni->ni_vap == vap) { - ieee80211_free_node(dp->ni); - dp->ni = NULL; - - if (dp->m != NULL) { - m_freem(dp->m); - dp->m = NULL; - } - - STAILQ_REMOVE(head, dp, urtwn_data, next); - STAILQ_INSERT_TAIL(&sc->sc_tx_inactive, dp, - next); - } - } - } -} - -static struct mbuf * -urtwn_rx_copy_to_mbuf(struct urtwn_softc *sc, struct r92c_rx_stat *stat, - int totlen) -{ - struct ieee80211com *ic = &sc->sc_ic; - struct mbuf *m; - uint32_t rxdw0; - int pktlen; - - /* - * don't pass packets to the ieee80211 framework if the driver isn't - * RUNNING. - */ - if (!(sc->sc_flags & URTWN_RUNNING)) - return (NULL); - - rxdw0 = le32toh(stat->rxdw0); - if (rxdw0 & (R92C_RXDW0_CRCERR | R92C_RXDW0_ICVERR)) { - /* - * This should not happen since we setup our Rx filter - * to not receive these frames. - */ - URTWN_DPRINTF(sc, URTWN_DEBUG_RECV, - "%s: RX flags error (%s)\n", __func__, - rxdw0 & R92C_RXDW0_CRCERR ? "CRC" : "ICV"); - goto fail; - } - - pktlen = MS(rxdw0, R92C_RXDW0_PKTLEN); - if (pktlen < sizeof(struct ieee80211_frame_ack)) { - URTWN_DPRINTF(sc, URTWN_DEBUG_RECV, - "%s: frame is too short: %d\n", __func__, pktlen); - goto fail; - } - - m = m_get2(totlen, M_NOWAIT, MT_DATA, M_PKTHDR); - if (__predict_false(m == NULL)) { - device_printf(sc->sc_dev, "%s: could not allocate RX mbuf\n", - __func__); - goto fail; - } - - /* Finalize mbuf. */ - memcpy(mtod(m, uint8_t *), (uint8_t *)stat, totlen); - m->m_pkthdr.len = m->m_len = totlen; - - return (m); -fail: - counter_u64_add(ic->ic_ierrors, 1); - return (NULL); -} - -static struct mbuf * -urtwn_report_intr(struct usb_xfer *xfer, struct urtwn_data *data) -{ - struct urtwn_softc *sc = data->sc; - struct ieee80211com *ic = &sc->sc_ic; - struct r92c_rx_stat *stat; - uint8_t *buf; - int len; - - usbd_xfer_status(xfer, &len, NULL, NULL, NULL); - - if (len < sizeof(*stat)) { - counter_u64_add(ic->ic_ierrors, 1); - return (NULL); - } - - buf = data->buf; - stat = (struct r92c_rx_stat *)buf; - - /* - * For 88E chips we can tie the FF flushing here; - * this is where we do know exactly how deep the - * transmit queue is. - * - * But it won't work for R92 chips, so we can't - * take the easy way out. - */ - - if (sc->chip & URTWN_CHIP_88E) { - int report_sel = MS(le32toh(stat->rxdw3), R88E_RXDW3_RPT); - - switch (report_sel) { - case R88E_RXDW3_RPT_RX: - return (urtwn_rxeof(sc, buf, len)); - case R88E_RXDW3_RPT_TX1: - urtwn_r88e_ratectl_tx_complete(sc, &stat[1]); - break; - default: - URTWN_DPRINTF(sc, URTWN_DEBUG_INTR, - "%s: case %d was not handled\n", __func__, - report_sel); - break; - } - } else - return (urtwn_rxeof(sc, buf, len)); - - return (NULL); -} - -static struct mbuf * -urtwn_rxeof(struct urtwn_softc *sc, uint8_t *buf, int len) -{ - struct r92c_rx_stat *stat; - struct mbuf *m, *m0 = NULL, *prevm = NULL; - uint32_t rxdw0; - int totlen, pktlen, infosz, npkts; - - /* Get the number of encapsulated frames. */ - stat = (struct r92c_rx_stat *)buf; - npkts = MS(le32toh(stat->rxdw2), R92C_RXDW2_PKTCNT); - URTWN_DPRINTF(sc, URTWN_DEBUG_RECV, - "%s: Rx %d frames in one chunk\n", __func__, npkts); - - /* Process all of them. */ - while (npkts-- > 0) { - if (len < sizeof(*stat)) - break; - stat = (struct r92c_rx_stat *)buf; - rxdw0 = le32toh(stat->rxdw0); - - pktlen = MS(rxdw0, R92C_RXDW0_PKTLEN); - if (pktlen == 0) - break; - - infosz = MS(rxdw0, R92C_RXDW0_INFOSZ) * 8; - - /* Make sure everything fits in xfer. */ - totlen = sizeof(*stat) + infosz + pktlen; - if (totlen > len) - break; - - m = urtwn_rx_copy_to_mbuf(sc, stat, totlen); - if (m0 == NULL) - m0 = m; - if (prevm == NULL) - prevm = m; - else { - prevm->m_next = m; - prevm = m; - } - - /* Next chunk is 128-byte aligned. */ - totlen = (totlen + 127) & ~127; - buf += totlen; - len -= totlen; - } - - return (m0); -} - -static void -urtwn_r88e_ratectl_tx_complete(struct urtwn_softc *sc, void *arg) -{ - struct r88e_tx_rpt_ccx *rpt = arg; - struct ieee80211_ratectl_tx_status *txs = &sc->sc_txs; - struct ieee80211_node *ni; - uint8_t macid; - int ntries; - - macid = MS(rpt->rptb1, R88E_RPTB1_MACID); - ntries = MS(rpt->rptb2, R88E_RPTB2_RETRY_CNT); - - URTWN_NT_LOCK(sc); - ni = sc->node_list[macid]; - if (ni != NULL) { - URTWN_DPRINTF(sc, URTWN_DEBUG_INTR, "%s: frame for macid %d was" - "%s sent (%d retries)\n", __func__, macid, - (rpt->rptb1 & R88E_RPTB1_PKT_OK) ? "" : " not", - ntries); - - txs->flags = IEEE80211_RATECTL_STATUS_LONG_RETRY | - IEEE80211_RATECTL_STATUS_FINAL_RATE; - txs->long_retries = ntries; - if (rpt->final_rate > URTWN_RIDX_OFDM54) { /* MCS */ - txs->final_rate = - (rpt->final_rate - 12) | IEEE80211_RATE_MCS; - } else - txs->final_rate = ridx2rate[rpt->final_rate]; - if (rpt->rptb1 & R88E_RPTB1_PKT_OK) - txs->status = IEEE80211_RATECTL_TX_SUCCESS; - else if (rpt->rptb2 & R88E_RPTB2_RETRY_OVER) - txs->status = IEEE80211_RATECTL_TX_FAIL_LONG; - else if (rpt->rptb2 & R88E_RPTB2_LIFE_EXPIRE) - txs->status = IEEE80211_RATECTL_TX_FAIL_EXPIRED; - else - txs->status = IEEE80211_RATECTL_TX_FAIL_UNSPECIFIED; - ieee80211_ratectl_tx_complete(ni, txs); - } else { - URTWN_DPRINTF(sc, URTWN_DEBUG_INTR, "%s: macid %d, ni is NULL\n", - __func__, macid); - } - URTWN_NT_UNLOCK(sc); -} - -static struct ieee80211_node * -urtwn_rx_frame(struct urtwn_softc *sc, struct mbuf *m, int8_t *rssi_p) -{ - struct ieee80211com *ic = &sc->sc_ic; - struct ieee80211_frame_min *wh; - struct r92c_rx_stat *stat; - uint32_t rxdw0, rxdw3; - uint8_t rate, cipher; - int8_t rssi = -127; - int infosz; - - stat = mtod(m, struct r92c_rx_stat *); - rxdw0 = le32toh(stat->rxdw0); - rxdw3 = le32toh(stat->rxdw3); - - rate = MS(rxdw3, R92C_RXDW3_RATE); - cipher = MS(rxdw0, R92C_RXDW0_CIPHER); - infosz = MS(rxdw0, R92C_RXDW0_INFOSZ) * 8; - - /* Get RSSI from PHY status descriptor if present. */ - if (infosz != 0 && (rxdw0 & R92C_RXDW0_PHYST)) { - if (sc->chip & URTWN_CHIP_88E) - rssi = urtwn_r88e_get_rssi(sc, rate, &stat[1]); - else - rssi = urtwn_get_rssi(sc, rate, &stat[1]); - URTWN_DPRINTF(sc, URTWN_DEBUG_RSSI, "%s: rssi=%d\n", __func__, rssi); - /* Update our average RSSI. */ - urtwn_update_avgrssi(sc, rate, rssi); - } - - if (ieee80211_radiotap_active(ic)) { - struct urtwn_rx_radiotap_header *tap = &sc->sc_rxtap; - - tap->wr_flags = 0; - - urtwn_get_tsf(sc, &tap->wr_tsft); - if (__predict_false(le32toh((uint32_t)tap->wr_tsft) < - le32toh(stat->rxdw5))) { - tap->wr_tsft = le32toh(tap->wr_tsft >> 32) - 1; - tap->wr_tsft = (uint64_t)htole32(tap->wr_tsft) << 32; - } else - tap->wr_tsft &= 0xffffffff00000000; - tap->wr_tsft += stat->rxdw5; - - /* XXX 20/40? */ - /* XXX shortgi? */ - - /* Map HW rate index to 802.11 rate. */ - if (!(rxdw3 & R92C_RXDW3_HT)) { - tap->wr_rate = ridx2rate[rate]; - } else if (rate >= 12) { /* MCS0~15. */ - /* Bit 7 set means HT MCS instead of rate. */ - tap->wr_rate = 0x80 | (rate - 12); - } - - /* XXX TODO: this isn't right; should use the last good RSSI */ - tap->wr_dbm_antsignal = rssi; - tap->wr_dbm_antnoise = URTWN_NOISE_FLOOR; - } - - *rssi_p = rssi; - - /* Drop descriptor. */ - m_adj(m, sizeof(*stat) + infosz); - wh = mtod(m, struct ieee80211_frame_min *); - - if ((wh->i_fc[1] & IEEE80211_FC1_PROTECTED) && - cipher != R92C_CAM_ALGO_NONE) { - m->m_flags |= M_WEP; - } - - if (m->m_len >= sizeof(*wh)) - return (ieee80211_find_rxnode(ic, wh)); - - return (NULL); -} - -static void -urtwn_bulk_rx_callback(struct usb_xfer *xfer, usb_error_t error) -{ - struct urtwn_softc *sc = usbd_xfer_softc(xfer); - struct ieee80211com *ic = &sc->sc_ic; - struct ieee80211_node *ni; - struct mbuf *m = NULL, *next; - struct urtwn_data *data; - int8_t nf, rssi; - - URTWN_ASSERT_LOCKED(sc); - - switch (USB_GET_STATE(xfer)) { - case USB_ST_TRANSFERRED: - data = STAILQ_FIRST(&sc->sc_rx_active); - if (data == NULL) - goto tr_setup; - STAILQ_REMOVE_HEAD(&sc->sc_rx_active, next); - m = urtwn_report_intr(xfer, data); - STAILQ_INSERT_TAIL(&sc->sc_rx_inactive, data, next); - /* FALLTHROUGH */ - case USB_ST_SETUP: -tr_setup: - data = STAILQ_FIRST(&sc->sc_rx_inactive); - if (data == NULL) { - KASSERT(m == NULL, ("mbuf isn't NULL")); - goto finish; - } - STAILQ_REMOVE_HEAD(&sc->sc_rx_inactive, next); - STAILQ_INSERT_TAIL(&sc->sc_rx_active, data, next); - usbd_xfer_set_frame_data(xfer, 0, data->buf, - usbd_xfer_max_len(xfer)); - usbd_transfer_submit(xfer); - - /* - * To avoid LOR we should unlock our private mutex here to call - * ieee80211_input() because here is at the end of a USB - * callback and safe to unlock. - */ - while (m != NULL) { - next = m->m_next; - m->m_next = NULL; - - ni = urtwn_rx_frame(sc, m, &rssi); - - /* Store a global last-good RSSI */ - if (rssi != -127) - sc->last_rssi = rssi; - - URTWN_UNLOCK(sc); - - nf = URTWN_NOISE_FLOOR; - if (ni != NULL) { - if (rssi != -127) - URTWN_NODE(ni)->last_rssi = rssi; - if (ni->ni_flags & IEEE80211_NODE_HT) - m->m_flags |= M_AMPDU; - (void)ieee80211_input(ni, m, - URTWN_NODE(ni)->last_rssi - nf, nf); - ieee80211_free_node(ni); - } else { - /* Use last good global RSSI */ - (void)ieee80211_input_all(ic, m, - sc->last_rssi - nf, nf); - } - URTWN_LOCK(sc); - m = next; - } - break; - default: - /* needs it to the inactive queue due to a error. */ - data = STAILQ_FIRST(&sc->sc_rx_active); - if (data != NULL) { - STAILQ_REMOVE_HEAD(&sc->sc_rx_active, next); - STAILQ_INSERT_TAIL(&sc->sc_rx_inactive, data, next); - } - if (error != USB_ERR_CANCELLED) { - usbd_xfer_set_stall(xfer); - counter_u64_add(ic->ic_ierrors, 1); - goto tr_setup; - } - break; - } -finish: - /* Finished receive; age anything left on the FF queue by a little bump */ - /* - * XXX TODO: just make this a callout timer schedule so we can - * flush the FF staging queue if we're approaching idle. - */ -#ifdef IEEE80211_SUPPORT_SUPERG - URTWN_UNLOCK(sc); - ieee80211_ff_age_all(ic, 1); - URTWN_LOCK(sc); -#endif - - /* Kick-start more transmit in case we stalled */ - urtwn_start(sc); -} - -static void -urtwn_txeof(struct urtwn_softc *sc, struct urtwn_data *data, int status) -{ - - URTWN_ASSERT_LOCKED(sc); - - if (data->ni != NULL) /* not a beacon frame */ - ieee80211_tx_complete(data->ni, data->m, status); - - if (sc->sc_tx_n_active > 0) - sc->sc_tx_n_active--; - - data->ni = NULL; - data->m = NULL; - - sc->sc_txtimer = 0; - - STAILQ_INSERT_TAIL(&sc->sc_tx_inactive, data, next); -} - -static int -urtwn_alloc_list(struct urtwn_softc *sc, struct urtwn_data data[], - int ndata, int maxsz) -{ - int i, error; - - for (i = 0; i < ndata; i++) { - struct urtwn_data *dp = &data[i]; - dp->sc = sc; - dp->m = NULL; - dp->buf = malloc(maxsz, M_USBDEV, M_NOWAIT); - if (dp->buf == NULL) { - device_printf(sc->sc_dev, - "could not allocate buffer\n"); - error = ENOMEM; - goto fail; - } - dp->ni = NULL; - } - - return (0); -fail: - urtwn_free_list(sc, data, ndata); - return (error); -} - -static int -urtwn_alloc_rx_list(struct urtwn_softc *sc) -{ - int error, i; - - error = urtwn_alloc_list(sc, sc->sc_rx, URTWN_RX_LIST_COUNT, - URTWN_RXBUFSZ); - if (error != 0) - return (error); - - STAILQ_INIT(&sc->sc_rx_active); - STAILQ_INIT(&sc->sc_rx_inactive); - - for (i = 0; i < URTWN_RX_LIST_COUNT; i++) - STAILQ_INSERT_HEAD(&sc->sc_rx_inactive, &sc->sc_rx[i], next); - - return (0); -} - -static int -urtwn_alloc_tx_list(struct urtwn_softc *sc) -{ - int error, i; - - error = urtwn_alloc_list(sc, sc->sc_tx, URTWN_TX_LIST_COUNT, - URTWN_TXBUFSZ); - if (error != 0) - return (error); - - STAILQ_INIT(&sc->sc_tx_active); - STAILQ_INIT(&sc->sc_tx_inactive); - STAILQ_INIT(&sc->sc_tx_pending); - - for (i = 0; i < URTWN_TX_LIST_COUNT; i++) - STAILQ_INSERT_HEAD(&sc->sc_tx_inactive, &sc->sc_tx[i], next); - - return (0); -} - -static void -urtwn_free_list(struct urtwn_softc *sc, struct urtwn_data data[], int ndata) -{ - int i; - - for (i = 0; i < ndata; i++) { - struct urtwn_data *dp = &data[i]; - - if (dp->buf != NULL) { - free(dp->buf, M_USBDEV); - dp->buf = NULL; - } - if (dp->ni != NULL) { - ieee80211_free_node(dp->ni); - dp->ni = NULL; - } - } -} - -static void -urtwn_free_rx_list(struct urtwn_softc *sc) -{ - urtwn_free_list(sc, sc->sc_rx, URTWN_RX_LIST_COUNT); - - STAILQ_INIT(&sc->sc_rx_active); - STAILQ_INIT(&sc->sc_rx_inactive); -} - -static void -urtwn_free_tx_list(struct urtwn_softc *sc) -{ - urtwn_free_list(sc, sc->sc_tx, URTWN_TX_LIST_COUNT); - - STAILQ_INIT(&sc->sc_tx_active); - STAILQ_INIT(&sc->sc_tx_inactive); - STAILQ_INIT(&sc->sc_tx_pending); -} - -static void -urtwn_bulk_tx_callback(struct usb_xfer *xfer, usb_error_t error) -{ - struct urtwn_softc *sc = usbd_xfer_softc(xfer); -#ifdef IEEE80211_SUPPORT_SUPERG - struct ieee80211com *ic = &sc->sc_ic; -#endif - struct urtwn_data *data; - - URTWN_ASSERT_LOCKED(sc); - - switch (USB_GET_STATE(xfer)){ - case USB_ST_TRANSFERRED: - data = STAILQ_FIRST(&sc->sc_tx_active); - if (data == NULL) - goto tr_setup; - STAILQ_REMOVE_HEAD(&sc->sc_tx_active, next); - urtwn_txeof(sc, data, 0); - /* FALLTHROUGH */ - case USB_ST_SETUP: -tr_setup: - data = STAILQ_FIRST(&sc->sc_tx_pending); - if (data == NULL) { - URTWN_DPRINTF(sc, URTWN_DEBUG_XMIT, - "%s: empty pending queue\n", __func__); - sc->sc_tx_n_active = 0; - goto finish; - } - STAILQ_REMOVE_HEAD(&sc->sc_tx_pending, next); - STAILQ_INSERT_TAIL(&sc->sc_tx_active, data, next); - usbd_xfer_set_frame_data(xfer, 0, data->buf, data->buflen); - usbd_transfer_submit(xfer); - sc->sc_tx_n_active++; - break; - default: - data = STAILQ_FIRST(&sc->sc_tx_active); - if (data == NULL) - goto tr_setup; - STAILQ_REMOVE_HEAD(&sc->sc_tx_active, next); - urtwn_txeof(sc, data, 1); - if (error != USB_ERR_CANCELLED) { - usbd_xfer_set_stall(xfer); - goto tr_setup; - } - break; - } -finish: -#ifdef IEEE80211_SUPPORT_SUPERG - /* - * If the TX active queue drops below a certain - * threshold, ensure we age fast-frames out so they're - * transmitted. - */ - if (sc->sc_tx_n_active <= 1) { - /* XXX ew - net80211 should defer this for us! */ - - /* - * Note: this sc_tx_n_active currently tracks - * the number of pending transmit submissions - * and not the actual depth of the TX frames - * pending to the hardware. That means that - * we're going to end up with some sub-optimal - * aggregation behaviour. - */ - /* - * XXX TODO: just make this a callout timer schedule so we can - * flush the FF staging queue if we're approaching idle. - */ - URTWN_UNLOCK(sc); - ieee80211_ff_flush(ic, WME_AC_VO); - ieee80211_ff_flush(ic, WME_AC_VI); - ieee80211_ff_flush(ic, WME_AC_BE); - ieee80211_ff_flush(ic, WME_AC_BK); - URTWN_LOCK(sc); - } -#endif - /* Kick-start more transmit */ - urtwn_start(sc); -} - -static struct urtwn_data * -_urtwn_getbuf(struct urtwn_softc *sc) -{ - struct urtwn_data *bf; - - bf = STAILQ_FIRST(&sc->sc_tx_inactive); - if (bf != NULL) - STAILQ_REMOVE_HEAD(&sc->sc_tx_inactive, next); - else { - URTWN_DPRINTF(sc, URTWN_DEBUG_XMIT, - "%s: out of xmit buffers\n", __func__); - } - return (bf); -} - -static struct urtwn_data * -urtwn_getbuf(struct urtwn_softc *sc) -{ - struct urtwn_data *bf; - - URTWN_ASSERT_LOCKED(sc); - - bf = _urtwn_getbuf(sc); - if (bf == NULL) { - URTWN_DPRINTF(sc, URTWN_DEBUG_XMIT, "%s: stop queue\n", - __func__); - } - return (bf); -} - -static usb_error_t -urtwn_write_region_1(struct urtwn_softc *sc, uint16_t addr, uint8_t *buf, - int len) -{ - usb_device_request_t req; - - req.bmRequestType = UT_WRITE_VENDOR_DEVICE; - req.bRequest = R92C_REQ_REGS; - USETW(req.wValue, addr); - USETW(req.wIndex, 0); - USETW(req.wLength, len); - return (urtwn_do_request(sc, &req, buf)); -} - -static usb_error_t -urtwn_write_1(struct urtwn_softc *sc, uint16_t addr, uint8_t val) -{ - return (urtwn_write_region_1(sc, addr, &val, sizeof(val))); -} - -static usb_error_t -urtwn_write_2(struct urtwn_softc *sc, uint16_t addr, uint16_t val) -{ - val = htole16(val); - return (urtwn_write_region_1(sc, addr, (uint8_t *)&val, sizeof(val))); -} - -static usb_error_t -urtwn_write_4(struct urtwn_softc *sc, uint16_t addr, uint32_t val) -{ - val = htole32(val); - return (urtwn_write_region_1(sc, addr, (uint8_t *)&val, sizeof(val))); -} - -static usb_error_t -urtwn_read_region_1(struct urtwn_softc *sc, uint16_t addr, uint8_t *buf, - int len) -{ - usb_device_request_t req; - - req.bmRequestType = UT_READ_VENDOR_DEVICE; - req.bRequest = R92C_REQ_REGS; - USETW(req.wValue, addr); - USETW(req.wIndex, 0); - USETW(req.wLength, len); - return (urtwn_do_request(sc, &req, buf)); -} - -static uint8_t -urtwn_read_1(struct urtwn_softc *sc, uint16_t addr) -{ - uint8_t val; - - if (urtwn_read_region_1(sc, addr, &val, 1) != 0) - return (0xff); - return (val); -} - -static uint16_t -urtwn_read_2(struct urtwn_softc *sc, uint16_t addr) -{ - uint16_t val; - - if (urtwn_read_region_1(sc, addr, (uint8_t *)&val, 2) != 0) - return (0xffff); - return (le16toh(val)); -} - -static uint32_t -urtwn_read_4(struct urtwn_softc *sc, uint16_t addr) -{ - uint32_t val; - - if (urtwn_read_region_1(sc, addr, (uint8_t *)&val, 4) != 0) - return (0xffffffff); - return (le32toh(val)); -} - -static int -urtwn_fw_cmd(struct urtwn_softc *sc, uint8_t id, const void *buf, int len) -{ - struct r92c_fw_cmd cmd; - usb_error_t error; - int ntries; - - if (!(sc->sc_flags & URTWN_FW_LOADED)) { - URTWN_DPRINTF(sc, URTWN_DEBUG_FIRMWARE, "%s: firmware " - "was not loaded; command (id %d) will be discarded\n", - __func__, id); - return (0); - } - - /* Wait for current FW box to be empty. */ - for (ntries = 0; ntries < 100; ntries++) { - if (!(urtwn_read_1(sc, R92C_HMETFR) & (1 << sc->fwcur))) - break; - urtwn_ms_delay(sc); - } - if (ntries == 100) { - device_printf(sc->sc_dev, - "could not send firmware command\n"); - return (ETIMEDOUT); - } - memset(&cmd, 0, sizeof(cmd)); - cmd.id = id; - if (len > 3) - cmd.id |= R92C_CMD_FLAG_EXT; - KASSERT(len <= sizeof(cmd.msg), ("urtwn_fw_cmd\n")); - memcpy(cmd.msg, buf, len); - - /* Write the first word last since that will trigger the FW. */ - error = urtwn_write_region_1(sc, R92C_HMEBOX_EXT(sc->fwcur), - (uint8_t *)&cmd + 4, 2); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - error = urtwn_write_region_1(sc, R92C_HMEBOX(sc->fwcur), - (uint8_t *)&cmd + 0, 4); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - - sc->fwcur = (sc->fwcur + 1) % R92C_H2C_NBOX; - return (0); -} - -static void -urtwn_cmdq_cb(void *arg, int pending) -{ - struct urtwn_softc *sc = arg; - struct urtwn_cmdq *item; - - /* - * Device must be powered on (via urtwn_power_on()) - * before any command may be sent. - */ - URTWN_LOCK(sc); - if (!(sc->sc_flags & URTWN_RUNNING)) { - URTWN_UNLOCK(sc); - return; - } - - URTWN_CMDQ_LOCK(sc); - while (sc->cmdq[sc->cmdq_first].func != NULL) { - item = &sc->cmdq[sc->cmdq_first]; - sc->cmdq_first = (sc->cmdq_first + 1) % URTWN_CMDQ_SIZE; - URTWN_CMDQ_UNLOCK(sc); - - item->func(sc, &item->data); - - URTWN_CMDQ_LOCK(sc); - memset(item, 0, sizeof (*item)); - } - URTWN_CMDQ_UNLOCK(sc); - URTWN_UNLOCK(sc); -} - -static int -urtwn_cmd_sleepable(struct urtwn_softc *sc, const void *ptr, size_t len, - CMD_FUNC_PROTO) -{ - struct ieee80211com *ic = &sc->sc_ic; - - KASSERT(len <= sizeof(union sec_param), ("buffer overflow")); - - URTWN_CMDQ_LOCK(sc); - if (sc->cmdq[sc->cmdq_last].func != NULL) { - device_printf(sc->sc_dev, "%s: cmdq overflow\n", __func__); - URTWN_CMDQ_UNLOCK(sc); - - return (EAGAIN); - } - - if (ptr != NULL) - memcpy(&sc->cmdq[sc->cmdq_last].data, ptr, len); - sc->cmdq[sc->cmdq_last].func = func; - sc->cmdq_last = (sc->cmdq_last + 1) % URTWN_CMDQ_SIZE; - URTWN_CMDQ_UNLOCK(sc); - - ieee80211_runtask(ic, &sc->cmdq_task); - - return (0); -} - -static __inline void -urtwn_rf_write(struct urtwn_softc *sc, int chain, uint8_t addr, uint32_t val) -{ - - sc->sc_rf_write(sc, chain, addr, val); -} - -static void -urtwn_r92c_rf_write(struct urtwn_softc *sc, int chain, uint8_t addr, - uint32_t val) -{ - urtwn_bb_write(sc, R92C_LSSI_PARAM(chain), - SM(R92C_LSSI_PARAM_ADDR, addr) | - SM(R92C_LSSI_PARAM_DATA, val)); -} - -static void -urtwn_r88e_rf_write(struct urtwn_softc *sc, int chain, uint8_t addr, -uint32_t val) -{ - urtwn_bb_write(sc, R92C_LSSI_PARAM(chain), - SM(R88E_LSSI_PARAM_ADDR, addr) | - SM(R92C_LSSI_PARAM_DATA, val)); -} - -static uint32_t -urtwn_rf_read(struct urtwn_softc *sc, int chain, uint8_t addr) -{ - uint32_t reg[R92C_MAX_CHAINS], val; - - reg[0] = urtwn_bb_read(sc, R92C_HSSI_PARAM2(0)); - if (chain != 0) - reg[chain] = urtwn_bb_read(sc, R92C_HSSI_PARAM2(chain)); - - urtwn_bb_write(sc, R92C_HSSI_PARAM2(0), - reg[0] & ~R92C_HSSI_PARAM2_READ_EDGE); - urtwn_ms_delay(sc); - - urtwn_bb_write(sc, R92C_HSSI_PARAM2(chain), - RW(reg[chain], R92C_HSSI_PARAM2_READ_ADDR, addr) | - R92C_HSSI_PARAM2_READ_EDGE); - urtwn_ms_delay(sc); - - urtwn_bb_write(sc, R92C_HSSI_PARAM2(0), - reg[0] | R92C_HSSI_PARAM2_READ_EDGE); - urtwn_ms_delay(sc); - - if (urtwn_bb_read(sc, R92C_HSSI_PARAM1(chain)) & R92C_HSSI_PARAM1_PI) - val = urtwn_bb_read(sc, R92C_HSPI_READBACK(chain)); - else - val = urtwn_bb_read(sc, R92C_LSSI_READBACK(chain)); - return (MS(val, R92C_LSSI_READBACK_DATA)); -} - -static int -urtwn_llt_write(struct urtwn_softc *sc, uint32_t addr, uint32_t data) -{ - usb_error_t error; - int ntries; - - error = urtwn_write_4(sc, R92C_LLT_INIT, - SM(R92C_LLT_INIT_OP, R92C_LLT_INIT_OP_WRITE) | - SM(R92C_LLT_INIT_ADDR, addr) | - SM(R92C_LLT_INIT_DATA, data)); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - /* Wait for write operation to complete. */ - for (ntries = 0; ntries < 20; ntries++) { - if (MS(urtwn_read_4(sc, R92C_LLT_INIT), R92C_LLT_INIT_OP) == - R92C_LLT_INIT_OP_NO_ACTIVE) - return (0); - urtwn_ms_delay(sc); - } - return (ETIMEDOUT); -} - -static int -urtwn_efuse_read_next(struct urtwn_softc *sc, uint8_t *val) -{ - uint32_t reg; - usb_error_t error; - int ntries; - - if (sc->last_rom_addr >= URTWN_EFUSE_MAX_LEN) - return (EFAULT); - - reg = urtwn_read_4(sc, R92C_EFUSE_CTRL); - reg = RW(reg, R92C_EFUSE_CTRL_ADDR, sc->last_rom_addr); - reg &= ~R92C_EFUSE_CTRL_VALID; - - error = urtwn_write_4(sc, R92C_EFUSE_CTRL, reg); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - /* Wait for read operation to complete. */ - for (ntries = 0; ntries < 100; ntries++) { - reg = urtwn_read_4(sc, R92C_EFUSE_CTRL); - if (reg & R92C_EFUSE_CTRL_VALID) - break; - urtwn_ms_delay(sc); - } - if (ntries == 100) { - device_printf(sc->sc_dev, - "could not read efuse byte at address 0x%x\n", - sc->last_rom_addr); - return (ETIMEDOUT); - } - - *val = MS(reg, R92C_EFUSE_CTRL_DATA); - sc->last_rom_addr++; - - return (0); -} - -static int -urtwn_efuse_read_data(struct urtwn_softc *sc, uint8_t *rom, uint8_t off, - uint8_t msk) -{ - uint8_t reg; - int i, error; - - for (i = 0; i < 4; i++) { - if (msk & (1 << i)) - continue; - error = urtwn_efuse_read_next(sc, ®); - if (error != 0) - return (error); - URTWN_DPRINTF(sc, URTWN_DEBUG_ROM, "rom[0x%03X] == 0x%02X\n", - off * 8 + i * 2, reg); - rom[off * 8 + i * 2 + 0] = reg; - - error = urtwn_efuse_read_next(sc, ®); - if (error != 0) - return (error); - URTWN_DPRINTF(sc, URTWN_DEBUG_ROM, "rom[0x%03X] == 0x%02X\n", - off * 8 + i * 2 + 1, reg); - rom[off * 8 + i * 2 + 1] = reg; - } - - return (0); -} - -#ifdef USB_DEBUG -static void -urtwn_dump_rom_contents(struct urtwn_softc *sc, uint8_t *rom, uint16_t size) -{ - int i; - - /* Dump ROM contents. */ - device_printf(sc->sc_dev, "%s:", __func__); - for (i = 0; i < size; i++) { - if (i % 32 == 0) - printf("\n%03X: ", i); - else if (i % 4 == 0) - printf(" "); - - printf("%02X", rom[i]); - } - printf("\n"); -} -#endif - -static int -urtwn_efuse_read(struct urtwn_softc *sc, uint8_t *rom, uint16_t size) -{ -#define URTWN_CHK(res) do { \ - if ((error = res) != 0) \ - goto end; \ -} while(0) - uint8_t msk, off, reg; - int error; - - URTWN_CHK(urtwn_efuse_switch_power(sc)); - - /* Read full ROM image. */ - sc->last_rom_addr = 0; - memset(rom, 0xff, size); - - URTWN_CHK(urtwn_efuse_read_next(sc, ®)); - while (reg != 0xff) { - /* check for extended header */ - if ((sc->chip & URTWN_CHIP_88E) && (reg & 0x1f) == 0x0f) { - off = reg >> 5; - URTWN_CHK(urtwn_efuse_read_next(sc, ®)); - - if ((reg & 0x0f) != 0x0f) - off = ((reg & 0xf0) >> 1) | off; - else - continue; - } else - off = reg >> 4; - msk = reg & 0xf; - - URTWN_CHK(urtwn_efuse_read_data(sc, rom, off, msk)); - URTWN_CHK(urtwn_efuse_read_next(sc, ®)); - } - -end: - -#ifdef USB_DEBUG - if (sc->sc_debug & URTWN_DEBUG_ROM) - urtwn_dump_rom_contents(sc, rom, size); -#endif - - urtwn_write_1(sc, R92C_EFUSE_ACCESS, R92C_EFUSE_ACCESS_OFF); - - if (error != 0) { - device_printf(sc->sc_dev, "%s: error while reading ROM\n", - __func__); - } - - return (error); -#undef URTWN_CHK -} - -static int -urtwn_efuse_switch_power(struct urtwn_softc *sc) -{ - usb_error_t error; - uint32_t reg; - - error = urtwn_write_1(sc, R92C_EFUSE_ACCESS, R92C_EFUSE_ACCESS_ON); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - - reg = urtwn_read_2(sc, R92C_SYS_ISO_CTRL); - if (!(reg & R92C_SYS_ISO_CTRL_PWC_EV12V)) { - error = urtwn_write_2(sc, R92C_SYS_ISO_CTRL, - reg | R92C_SYS_ISO_CTRL_PWC_EV12V); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - } - reg = urtwn_read_2(sc, R92C_SYS_FUNC_EN); - if (!(reg & R92C_SYS_FUNC_EN_ELDR)) { - error = urtwn_write_2(sc, R92C_SYS_FUNC_EN, - reg | R92C_SYS_FUNC_EN_ELDR); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - } - reg = urtwn_read_2(sc, R92C_SYS_CLKR); - if ((reg & (R92C_SYS_CLKR_LOADER_EN | R92C_SYS_CLKR_ANA8M)) != - (R92C_SYS_CLKR_LOADER_EN | R92C_SYS_CLKR_ANA8M)) { - error = urtwn_write_2(sc, R92C_SYS_CLKR, - reg | R92C_SYS_CLKR_LOADER_EN | R92C_SYS_CLKR_ANA8M); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - } - - return (0); -} - -static int -urtwn_read_chipid(struct urtwn_softc *sc) -{ - uint32_t reg; - - if (sc->chip & URTWN_CHIP_88E) - return (0); - - reg = urtwn_read_4(sc, R92C_SYS_CFG); - if (reg & R92C_SYS_CFG_TRP_VAUX_EN) - return (EIO); - - if (reg & R92C_SYS_CFG_TYPE_92C) { - sc->chip |= URTWN_CHIP_92C; - /* Check if it is a castrated 8192C. */ - if (MS(urtwn_read_4(sc, R92C_HPON_FSM), - R92C_HPON_FSM_CHIP_BONDING_ID) == - R92C_HPON_FSM_CHIP_BONDING_ID_92C_1T2R) - sc->chip |= URTWN_CHIP_92C_1T2R; - } - if (reg & R92C_SYS_CFG_VENDOR_UMC) { - sc->chip |= URTWN_CHIP_UMC; - if (MS(reg, R92C_SYS_CFG_CHIP_VER_RTL) == 0) - sc->chip |= URTWN_CHIP_UMC_A_CUT; - } - return (0); -} - -static int -urtwn_read_rom(struct urtwn_softc *sc) -{ - struct r92c_rom *rom = &sc->rom.r92c_rom; - int error; - - /* Read full ROM image. */ - error = urtwn_efuse_read(sc, (uint8_t *)rom, sizeof(*rom)); - if (error != 0) - return (error); - - /* XXX Weird but this is what the vendor driver does. */ - sc->last_rom_addr = 0x1fa; - error = urtwn_efuse_read_next(sc, &sc->pa_setting); - if (error != 0) - return (error); - URTWN_DPRINTF(sc, URTWN_DEBUG_ROM, "%s: PA setting=0x%x\n", __func__, - sc->pa_setting); - - sc->board_type = MS(rom->rf_opt1, R92C_ROM_RF1_BOARD_TYPE); - - sc->regulatory = MS(rom->rf_opt1, R92C_ROM_RF1_REGULATORY); - URTWN_DPRINTF(sc, URTWN_DEBUG_ROM, "%s: regulatory type=%d\n", - __func__, sc->regulatory); - IEEE80211_ADDR_COPY(sc->sc_ic.ic_macaddr, rom->macaddr); - - sc->sc_rf_write = urtwn_r92c_rf_write; - sc->sc_power_on = urtwn_r92c_power_on; - sc->sc_power_off = urtwn_r92c_power_off; - - return (0); -} - -static int -urtwn_r88e_read_rom(struct urtwn_softc *sc) -{ - struct r88e_rom *rom = &sc->rom.r88e_rom; - int error; - - error = urtwn_efuse_read(sc, (uint8_t *)rom, sizeof(sc->rom.r88e_rom)); - if (error != 0) - return (error); - - sc->bw20_tx_pwr_diff = (rom->tx_pwr_diff >> 4); - if (sc->bw20_tx_pwr_diff & 0x08) - sc->bw20_tx_pwr_diff |= 0xf0; - sc->ofdm_tx_pwr_diff = (rom->tx_pwr_diff & 0xf); - if (sc->ofdm_tx_pwr_diff & 0x08) - sc->ofdm_tx_pwr_diff |= 0xf0; - sc->regulatory = MS(rom->rf_board_opt, R92C_ROM_RF1_REGULATORY); - URTWN_DPRINTF(sc, URTWN_DEBUG_ROM, "%s: regulatory type %d\n", - __func__,sc->regulatory); - IEEE80211_ADDR_COPY(sc->sc_ic.ic_macaddr, rom->macaddr); - - sc->sc_rf_write = urtwn_r88e_rf_write; - sc->sc_power_on = urtwn_r88e_power_on; - sc->sc_power_off = urtwn_r88e_power_off; - - return (0); -} - -static __inline uint8_t -rate2ridx(uint8_t rate) -{ - if (rate & IEEE80211_RATE_MCS) { - /* 11n rates start at idx 12 */ - return ((rate & 0xf) + 12); - } - switch (rate) { - /* 11g */ - case 12: return 4; - case 18: return 5; - case 24: return 6; - case 36: return 7; - case 48: return 8; - case 72: return 9; - case 96: return 10; - case 108: return 11; - /* 11b */ - case 2: return 0; - case 4: return 1; - case 11: return 2; - case 22: return 3; - default: return URTWN_RIDX_UNKNOWN; - } -} - -/* - * Initialize rate adaptation in firmware. - */ -static int -urtwn_ra_init(struct urtwn_softc *sc) -{ - struct ieee80211com *ic = &sc->sc_ic; - struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); - struct ieee80211_node *ni; - struct ieee80211_rateset *rs, *rs_ht; - struct r92c_fw_cmd_macid_cfg cmd; - uint32_t rates, basicrates; - uint8_t mode, ridx; - int maxrate, maxbasicrate, error, i; - - ni = ieee80211_ref_node(vap->iv_bss); - rs = &ni->ni_rates; - rs_ht = (struct ieee80211_rateset *) &ni->ni_htrates; - - /* Get normal and basic rates mask. */ - rates = basicrates = 0; - maxrate = maxbasicrate = 0; - - /* This is for 11bg */ - for (i = 0; i < rs->rs_nrates; i++) { - /* Convert 802.11 rate to HW rate index. */ - ridx = rate2ridx(IEEE80211_RV(rs->rs_rates[i])); - if (ridx == URTWN_RIDX_UNKNOWN) /* Unknown rate, skip. */ - continue; - rates |= 1 << ridx; - if (ridx > maxrate) - maxrate = ridx; - if (rs->rs_rates[i] & IEEE80211_RATE_BASIC) { - basicrates |= 1 << ridx; - if (ridx > maxbasicrate) - maxbasicrate = ridx; - } - } - - /* If we're doing 11n, enable 11n rates */ - if (ni->ni_flags & IEEE80211_NODE_HT) { - for (i = 0; i < rs_ht->rs_nrates; i++) { - if ((rs_ht->rs_rates[i] & 0x7f) > 0xf) - continue; - /* 11n rates start at index 12 */ - ridx = ((rs_ht->rs_rates[i]) & 0xf) + 12; - rates |= (1 << ridx); - - /* Guard against the rate table being oddly ordered */ - if (ridx > maxrate) - maxrate = ridx; - } - } - -#if 0 - if (ic->ic_curmode == IEEE80211_MODE_11NG) - raid = R92C_RAID_11GN; -#endif - /* NB: group addressed frames are done at 11bg rates for now */ - if (ic->ic_curmode == IEEE80211_MODE_11B) - mode = R92C_RAID_11B; - else - mode = R92C_RAID_11BG; - /* XXX misleading 'mode' value here for unicast frames */ - URTWN_DPRINTF(sc, URTWN_DEBUG_RA, - "%s: mode 0x%x, rates 0x%08x, basicrates 0x%08x\n", __func__, - mode, rates, basicrates); - - /* Set rates mask for group addressed frames. */ - cmd.macid = URTWN_MACID_BC | URTWN_MACID_VALID; - cmd.mask = htole32(mode << 28 | basicrates); - error = urtwn_fw_cmd(sc, R92C_CMD_MACID_CONFIG, &cmd, sizeof(cmd)); - if (error != 0) { - ieee80211_free_node(ni); - device_printf(sc->sc_dev, - "could not add broadcast station\n"); - return (error); - } - - /* Set initial MRR rate. */ - URTWN_DPRINTF(sc, URTWN_DEBUG_RA, "%s: maxbasicrate %d\n", __func__, - maxbasicrate); - urtwn_write_1(sc, R92C_INIDATA_RATE_SEL(URTWN_MACID_BC), - maxbasicrate); - - /* Set rates mask for unicast frames. */ - if (ni->ni_flags & IEEE80211_NODE_HT) - mode = R92C_RAID_11GN; - else if (ic->ic_curmode == IEEE80211_MODE_11B) - mode = R92C_RAID_11B; - else - mode = R92C_RAID_11BG; - cmd.macid = URTWN_MACID_BSS | URTWN_MACID_VALID; - cmd.mask = htole32(mode << 28 | rates); - error = urtwn_fw_cmd(sc, R92C_CMD_MACID_CONFIG, &cmd, sizeof(cmd)); - if (error != 0) { - ieee80211_free_node(ni); - device_printf(sc->sc_dev, "could not add BSS station\n"); - return (error); - } - /* Set initial MRR rate. */ - URTWN_DPRINTF(sc, URTWN_DEBUG_RA, "%s: maxrate %d\n", __func__, - maxrate); - urtwn_write_1(sc, R92C_INIDATA_RATE_SEL(URTWN_MACID_BSS), - maxrate); - - /* Indicate highest supported rate. */ - if (ni->ni_flags & IEEE80211_NODE_HT) - ni->ni_txrate = rs_ht->rs_rates[rs_ht->rs_nrates - 1] - | IEEE80211_RATE_MCS; - else - ni->ni_txrate = rs->rs_rates[rs->rs_nrates - 1]; - ieee80211_free_node(ni); - - return (0); -} - -static void -urtwn_init_beacon(struct urtwn_softc *sc, struct urtwn_vap *uvp) -{ - struct r92c_tx_desc *txd = &uvp->bcn_desc; - - txd->txdw0 = htole32( - SM(R92C_TXDW0_OFFSET, sizeof(*txd)) | R92C_TXDW0_BMCAST | - R92C_TXDW0_OWN | R92C_TXDW0_FSG | R92C_TXDW0_LSG); - txd->txdw1 = htole32( - SM(R92C_TXDW1_QSEL, R92C_TXDW1_QSEL_BEACON) | - SM(R92C_TXDW1_RAID, R92C_RAID_11B)); - - if (sc->chip & URTWN_CHIP_88E) { - txd->txdw1 |= htole32(SM(R88E_TXDW1_MACID, URTWN_MACID_BC)); - txd->txdseq |= htole16(R88E_TXDSEQ_HWSEQ_EN); - } else { - txd->txdw1 |= htole32(SM(R92C_TXDW1_MACID, URTWN_MACID_BC)); - txd->txdw4 |= htole32(R92C_TXDW4_HWSEQ_EN); - } - - txd->txdw4 = htole32(R92C_TXDW4_DRVRATE); - txd->txdw5 = htole32(SM(R92C_TXDW5_DATARATE, URTWN_RIDX_CCK1)); -} - -static int -urtwn_setup_beacon(struct urtwn_softc *sc, struct ieee80211_node *ni) -{ - struct ieee80211vap *vap = ni->ni_vap; - struct urtwn_vap *uvp = URTWN_VAP(vap); - struct mbuf *m; - int error; - - URTWN_ASSERT_LOCKED(sc); - - if (ni->ni_chan == IEEE80211_CHAN_ANYC) - return (EINVAL); - - m = ieee80211_beacon_alloc(ni); - if (m == NULL) { - device_printf(sc->sc_dev, - "%s: could not allocate beacon frame\n", __func__); - return (ENOMEM); - } - - if (uvp->bcn_mbuf != NULL) - m_freem(uvp->bcn_mbuf); - - uvp->bcn_mbuf = m; - - if ((error = urtwn_tx_beacon(sc, uvp)) != 0) - return (error); - - /* XXX bcnq stuck workaround */ - if ((error = urtwn_tx_beacon(sc, uvp)) != 0) - return (error); - - URTWN_DPRINTF(sc, URTWN_DEBUG_BEACON, "%s: beacon was %srecognized\n", - __func__, urtwn_read_1(sc, R92C_TDECTRL + 2) & - (R92C_TDECTRL_BCN_VALID >> 16) ? "" : "not "); - - return (0); -} - -static void -urtwn_update_beacon(struct ieee80211vap *vap, int item) -{ - struct urtwn_softc *sc = vap->iv_ic->ic_softc; - struct urtwn_vap *uvp = URTWN_VAP(vap); - struct ieee80211_beacon_offsets *bo = &vap->iv_bcn_off; - struct ieee80211_node *ni = vap->iv_bss; - int mcast = 0; - - URTWN_LOCK(sc); - if (uvp->bcn_mbuf == NULL) { - uvp->bcn_mbuf = ieee80211_beacon_alloc(ni); - if (uvp->bcn_mbuf == NULL) { - device_printf(sc->sc_dev, - "%s: could not allocate beacon frame\n", __func__); - URTWN_UNLOCK(sc); - return; - } - } - URTWN_UNLOCK(sc); - - if (item == IEEE80211_BEACON_TIM) - mcast = 1; /* XXX */ - - setbit(bo->bo_flags, item); - ieee80211_beacon_update(ni, uvp->bcn_mbuf, mcast); - - URTWN_LOCK(sc); - urtwn_tx_beacon(sc, uvp); - URTWN_UNLOCK(sc); -} - -/* - * Push a beacon frame into the chip. Beacon will - * be repeated by the chip every R92C_BCN_INTERVAL. - */ -static int -urtwn_tx_beacon(struct urtwn_softc *sc, struct urtwn_vap *uvp) -{ - struct r92c_tx_desc *desc = &uvp->bcn_desc; - struct urtwn_data *bf; - - URTWN_ASSERT_LOCKED(sc); - - bf = urtwn_getbuf(sc); - if (bf == NULL) - return (ENOMEM); - - memcpy(bf->buf, desc, sizeof(*desc)); - urtwn_tx_start(sc, uvp->bcn_mbuf, IEEE80211_FC0_TYPE_MGT, bf); - - sc->sc_txtimer = 5; - callout_reset(&sc->sc_watchdog_ch, hz, urtwn_watchdog, sc); - - return (0); -} - -static int -urtwn_key_alloc(struct ieee80211vap *vap, struct ieee80211_key *k, - ieee80211_keyix *keyix, ieee80211_keyix *rxkeyix) -{ - struct urtwn_softc *sc = vap->iv_ic->ic_softc; - uint8_t i; - - if (!(&vap->iv_nw_keys[0] <= k && - k < &vap->iv_nw_keys[IEEE80211_WEP_NKID])) { - if (!(k->wk_flags & IEEE80211_KEY_SWCRYPT)) { - URTWN_LOCK(sc); - /* - * First 4 slots for group keys, - * what is left - for pairwise. - * XXX incompatible with IBSS RSN. - */ - for (i = IEEE80211_WEP_NKID; - i < R92C_CAM_ENTRY_COUNT; i++) { - if ((sc->keys_bmap & (1 << i)) == 0) { - sc->keys_bmap |= 1 << i; - *keyix = i; - break; - } - } - URTWN_UNLOCK(sc); - if (i == R92C_CAM_ENTRY_COUNT) { - device_printf(sc->sc_dev, - "%s: no free space in the key table\n", - __func__); - return 0; - } - } else - *keyix = 0; - } else { - *keyix = k - vap->iv_nw_keys; - } - *rxkeyix = *keyix; - return 1; -} - -static void -urtwn_key_set_cb(struct urtwn_softc *sc, union sec_param *data) -{ - struct ieee80211_key *k = &data->key; - uint8_t algo, keyid; - int i, error; - - if (k->wk_keyix < IEEE80211_WEP_NKID) - keyid = k->wk_keyix; - else - keyid = 0; - - /* Map net80211 cipher to HW crypto algorithm. */ - switch (k->wk_cipher->ic_cipher) { - case IEEE80211_CIPHER_WEP: - if (k->wk_keylen < 8) - algo = R92C_CAM_ALGO_WEP40; - else - algo = R92C_CAM_ALGO_WEP104; - break; - case IEEE80211_CIPHER_TKIP: - algo = R92C_CAM_ALGO_TKIP; - break; - case IEEE80211_CIPHER_AES_CCM: - algo = R92C_CAM_ALGO_AES; - break; - default: - device_printf(sc->sc_dev, "%s: undefined cipher %d\n", - __func__, k->wk_cipher->ic_cipher); - return; - } - - URTWN_DPRINTF(sc, URTWN_DEBUG_KEY, - "%s: keyix %d, keyid %d, algo %d/%d, flags %04X, len %d, " - "macaddr %s\n", __func__, k->wk_keyix, keyid, - k->wk_cipher->ic_cipher, algo, k->wk_flags, k->wk_keylen, - ether_sprintf(k->wk_macaddr)); - - /* Clear high bits. */ - urtwn_cam_write(sc, R92C_CAM_CTL6(k->wk_keyix), 0); - urtwn_cam_write(sc, R92C_CAM_CTL7(k->wk_keyix), 0); - - /* Write key. */ - for (i = 0; i < 4; i++) { - error = urtwn_cam_write(sc, R92C_CAM_KEY(k->wk_keyix, i), - le32dec(&k->wk_key[i * 4])); - if (error != 0) - goto fail; - } - - /* Write CTL0 last since that will validate the CAM entry. */ - error = urtwn_cam_write(sc, R92C_CAM_CTL1(k->wk_keyix), - le32dec(&k->wk_macaddr[2])); - if (error != 0) - goto fail; - error = urtwn_cam_write(sc, R92C_CAM_CTL0(k->wk_keyix), - SM(R92C_CAM_ALGO, algo) | - SM(R92C_CAM_KEYID, keyid) | - SM(R92C_CAM_MACLO, le16dec(&k->wk_macaddr[0])) | - R92C_CAM_VALID); - if (error != 0) - goto fail; - - return; - -fail: - device_printf(sc->sc_dev, "%s fails, error %d\n", __func__, error); -} - -static void -urtwn_key_del_cb(struct urtwn_softc *sc, union sec_param *data) -{ - struct ieee80211_key *k = &data->key; - int i; - - URTWN_DPRINTF(sc, URTWN_DEBUG_KEY, - "%s: keyix %d, flags %04X, macaddr %s\n", __func__, - k->wk_keyix, k->wk_flags, ether_sprintf(k->wk_macaddr)); - - urtwn_cam_write(sc, R92C_CAM_CTL0(k->wk_keyix), 0); - urtwn_cam_write(sc, R92C_CAM_CTL1(k->wk_keyix), 0); - - /* Clear key. */ - for (i = 0; i < 4; i++) - urtwn_cam_write(sc, R92C_CAM_KEY(k->wk_keyix, i), 0); - sc->keys_bmap &= ~(1 << k->wk_keyix); -} - -static int -urtwn_key_set(struct ieee80211vap *vap, const struct ieee80211_key *k) -{ - struct urtwn_softc *sc = vap->iv_ic->ic_softc; - struct urtwn_vap *uvp = URTWN_VAP(vap); - - if (k->wk_flags & IEEE80211_KEY_SWCRYPT) { - /* Not for us. */ - return (1); - } - - if (&vap->iv_nw_keys[0] <= k && - k < &vap->iv_nw_keys[IEEE80211_WEP_NKID]) { - URTWN_LOCK(sc); - uvp->keys[k->wk_keyix] = k; - if ((sc->sc_flags & URTWN_RUNNING) == 0) { - /* - * The device was not started; - * the key will be installed later. - */ - URTWN_UNLOCK(sc); - return (1); - } - URTWN_UNLOCK(sc); - } - - return (!urtwn_cmd_sleepable(sc, k, sizeof(*k), urtwn_key_set_cb)); -} - -static int -urtwn_key_delete(struct ieee80211vap *vap, const struct ieee80211_key *k) -{ - struct urtwn_softc *sc = vap->iv_ic->ic_softc; - struct urtwn_vap *uvp = URTWN_VAP(vap); - - if (k->wk_flags & IEEE80211_KEY_SWCRYPT) { - /* Not for us. */ - return (1); - } - - if (&vap->iv_nw_keys[0] <= k && - k < &vap->iv_nw_keys[IEEE80211_WEP_NKID]) { - URTWN_LOCK(sc); - uvp->keys[k->wk_keyix] = NULL; - if ((sc->sc_flags & URTWN_RUNNING) == 0) { - /* All keys are removed on device reset. */ - URTWN_UNLOCK(sc); - return (1); - } - URTWN_UNLOCK(sc); - } - - return (!urtwn_cmd_sleepable(sc, k, sizeof(*k), urtwn_key_del_cb)); -} - -static void -urtwn_tsf_task_adhoc(void *arg, int pending) -{ - struct ieee80211vap *vap = arg; - struct urtwn_softc *sc = vap->iv_ic->ic_softc; - struct ieee80211_node *ni; - uint32_t reg; - - URTWN_LOCK(sc); - ni = ieee80211_ref_node(vap->iv_bss); - reg = urtwn_read_1(sc, R92C_BCN_CTRL); - - /* Accept beacons with the same BSSID. */ - urtwn_set_rx_bssid_all(sc, 0); - - /* Enable synchronization. */ - reg &= ~R92C_BCN_CTRL_DIS_TSF_UDT0; - urtwn_write_1(sc, R92C_BCN_CTRL, reg); - - /* Synchronize. */ - usb_pause_mtx(&sc->sc_mtx, hz * ni->ni_intval * 5 / 1000); - - /* Disable synchronization. */ - reg |= R92C_BCN_CTRL_DIS_TSF_UDT0; - urtwn_write_1(sc, R92C_BCN_CTRL, reg); - - /* Remove beacon filter. */ - urtwn_set_rx_bssid_all(sc, 1); - - /* Enable beaconing. */ - urtwn_write_1(sc, R92C_MBID_NUM, - urtwn_read_1(sc, R92C_MBID_NUM) | R92C_MBID_TXBCN_RPT0); - reg |= R92C_BCN_CTRL_EN_BCN; - - urtwn_write_1(sc, R92C_BCN_CTRL, reg); - ieee80211_free_node(ni); - URTWN_UNLOCK(sc); -} - -static void -urtwn_tsf_sync_enable(struct urtwn_softc *sc, struct ieee80211vap *vap) -{ - struct ieee80211com *ic = &sc->sc_ic; - struct urtwn_vap *uvp = URTWN_VAP(vap); - - /* Reset TSF. */ - urtwn_write_1(sc, R92C_DUAL_TSF_RST, R92C_DUAL_TSF_RST0); - - switch (vap->iv_opmode) { - case IEEE80211_M_STA: - /* Enable TSF synchronization. */ - urtwn_write_1(sc, R92C_BCN_CTRL, - urtwn_read_1(sc, R92C_BCN_CTRL) & - ~R92C_BCN_CTRL_DIS_TSF_UDT0); - break; - case IEEE80211_M_IBSS: - ieee80211_runtask(ic, &uvp->tsf_task_adhoc); - break; - case IEEE80211_M_HOSTAP: - /* Enable beaconing. */ - urtwn_write_1(sc, R92C_MBID_NUM, - urtwn_read_1(sc, R92C_MBID_NUM) | R92C_MBID_TXBCN_RPT0); - urtwn_write_1(sc, R92C_BCN_CTRL, - urtwn_read_1(sc, R92C_BCN_CTRL) | R92C_BCN_CTRL_EN_BCN); - break; - default: - device_printf(sc->sc_dev, "undefined opmode %d\n", - vap->iv_opmode); - return; - } -} - -static void -urtwn_get_tsf(struct urtwn_softc *sc, uint64_t *buf) -{ - urtwn_read_region_1(sc, R92C_TSFTR, (uint8_t *)buf, sizeof(*buf)); -} - -static void -urtwn_set_led(struct urtwn_softc *sc, int led, int on) -{ - uint8_t reg; - - if (led == URTWN_LED_LINK) { - if (sc->chip & URTWN_CHIP_88E) { - reg = urtwn_read_1(sc, R92C_LEDCFG2) & 0xf0; - urtwn_write_1(sc, R92C_LEDCFG2, reg | 0x60); - if (!on) { - reg = urtwn_read_1(sc, R92C_LEDCFG2) & 0x90; - urtwn_write_1(sc, R92C_LEDCFG2, - reg | R92C_LEDCFG0_DIS); - urtwn_write_1(sc, R92C_MAC_PINMUX_CFG, - urtwn_read_1(sc, R92C_MAC_PINMUX_CFG) & - 0xfe); - } - } else { - reg = urtwn_read_1(sc, R92C_LEDCFG0) & 0x70; - if (!on) - reg |= R92C_LEDCFG0_DIS; - urtwn_write_1(sc, R92C_LEDCFG0, reg); - } - sc->ledlink = on; /* Save LED state. */ - } -} - -static void -urtwn_set_mode(struct urtwn_softc *sc, uint8_t mode) -{ - uint8_t reg; - - reg = urtwn_read_1(sc, R92C_MSR); - reg = (reg & ~R92C_MSR_MASK) | mode; - urtwn_write_1(sc, R92C_MSR, reg); -} - -static void -urtwn_ibss_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m, int subtype, - const struct ieee80211_rx_stats *rxs, - int rssi, int nf) -{ - struct ieee80211vap *vap = ni->ni_vap; - struct urtwn_softc *sc = vap->iv_ic->ic_softc; - struct urtwn_vap *uvp = URTWN_VAP(vap); - uint64_t ni_tstamp, curr_tstamp; - - uvp->recv_mgmt(ni, m, subtype, rxs, rssi, nf); - - if (vap->iv_state == IEEE80211_S_RUN && - (subtype == IEEE80211_FC0_SUBTYPE_BEACON || - subtype == IEEE80211_FC0_SUBTYPE_PROBE_RESP)) { - ni_tstamp = le64toh(ni->ni_tstamp.tsf); - URTWN_LOCK(sc); - urtwn_get_tsf(sc, &curr_tstamp); - URTWN_UNLOCK(sc); - curr_tstamp = le64toh(curr_tstamp); - - if (ni_tstamp >= curr_tstamp) - (void) ieee80211_ibss_merge(ni); - } -} - -static int -urtwn_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg) -{ - struct urtwn_vap *uvp = URTWN_VAP(vap); - struct ieee80211com *ic = vap->iv_ic; - struct urtwn_softc *sc = ic->ic_softc; - struct ieee80211_node *ni; - enum ieee80211_state ostate; - uint32_t reg; - uint8_t mode; - int error = 0; - - ostate = vap->iv_state; - URTWN_DPRINTF(sc, URTWN_DEBUG_STATE, "%s -> %s\n", - ieee80211_state_name[ostate], ieee80211_state_name[nstate]); - - IEEE80211_UNLOCK(ic); - URTWN_LOCK(sc); - callout_stop(&sc->sc_watchdog_ch); - - if (ostate == IEEE80211_S_RUN) { - /* Stop calibration. */ - callout_stop(&sc->sc_calib_to); - - /* Turn link LED off. */ - urtwn_set_led(sc, URTWN_LED_LINK, 0); - - /* Set media status to 'No Link'. */ - urtwn_set_mode(sc, R92C_MSR_NOLINK); - - /* Stop Rx of data frames. */ - urtwn_write_2(sc, R92C_RXFLTMAP2, 0); - - /* Disable TSF synchronization. */ - urtwn_write_1(sc, R92C_BCN_CTRL, - (urtwn_read_1(sc, R92C_BCN_CTRL) & ~R92C_BCN_CTRL_EN_BCN) | - R92C_BCN_CTRL_DIS_TSF_UDT0); - - /* Disable beaconing. */ - urtwn_write_1(sc, R92C_MBID_NUM, - urtwn_read_1(sc, R92C_MBID_NUM) & ~R92C_MBID_TXBCN_RPT0); - - /* Reset TSF. */ - urtwn_write_1(sc, R92C_DUAL_TSF_RST, R92C_DUAL_TSF_RST0); - - /* Reset EDCA parameters. */ - urtwn_write_4(sc, R92C_EDCA_VO_PARAM, 0x002f3217); - urtwn_write_4(sc, R92C_EDCA_VI_PARAM, 0x005e4317); - urtwn_write_4(sc, R92C_EDCA_BE_PARAM, 0x00105320); - urtwn_write_4(sc, R92C_EDCA_BK_PARAM, 0x0000a444); - } - - switch (nstate) { - case IEEE80211_S_INIT: - /* Turn link LED off. */ - urtwn_set_led(sc, URTWN_LED_LINK, 0); - break; - case IEEE80211_S_SCAN: - /* Pause AC Tx queues. */ - urtwn_write_1(sc, R92C_TXPAUSE, - urtwn_read_1(sc, R92C_TXPAUSE) | R92C_TX_QUEUE_AC); - break; - case IEEE80211_S_AUTH: - urtwn_set_chan(sc, ic->ic_curchan, NULL); - break; - case IEEE80211_S_RUN: - if (vap->iv_opmode == IEEE80211_M_MONITOR) { - /* Turn link LED on. */ - urtwn_set_led(sc, URTWN_LED_LINK, 1); - break; - } - - ni = ieee80211_ref_node(vap->iv_bss); - - if (ic->ic_bsschan == IEEE80211_CHAN_ANYC || - ni->ni_chan == IEEE80211_CHAN_ANYC) { - device_printf(sc->sc_dev, - "%s: could not move to RUN state\n", __func__); - error = EINVAL; - goto end_run; - } - - switch (vap->iv_opmode) { - case IEEE80211_M_STA: - mode = R92C_MSR_INFRA; - break; - case IEEE80211_M_IBSS: - mode = R92C_MSR_ADHOC; - break; - case IEEE80211_M_HOSTAP: - mode = R92C_MSR_AP; - break; - default: - device_printf(sc->sc_dev, "undefined opmode %d\n", - vap->iv_opmode); - error = EINVAL; - goto end_run; - } - - /* Set media status to 'Associated'. */ - urtwn_set_mode(sc, mode); - - /* Set BSSID. */ - urtwn_write_4(sc, R92C_BSSID + 0, le32dec(&ni->ni_bssid[0])); - urtwn_write_4(sc, R92C_BSSID + 4, le16dec(&ni->ni_bssid[4])); - - if (ic->ic_curmode == IEEE80211_MODE_11B) - urtwn_write_1(sc, R92C_INIRTS_RATE_SEL, 0); - else /* 802.11b/g */ - urtwn_write_1(sc, R92C_INIRTS_RATE_SEL, 3); - - /* Enable Rx of data frames. */ - urtwn_write_2(sc, R92C_RXFLTMAP2, 0xffff); - - /* Flush all AC queues. */ - urtwn_write_1(sc, R92C_TXPAUSE, 0); - - /* Set beacon interval. */ - urtwn_write_2(sc, R92C_BCN_INTERVAL, ni->ni_intval); - - /* Allow Rx from our BSSID only. */ - if (ic->ic_promisc == 0) { - reg = urtwn_read_4(sc, R92C_RCR); - - if (vap->iv_opmode != IEEE80211_M_HOSTAP) { - reg |= R92C_RCR_CBSSID_DATA; - if (vap->iv_opmode != IEEE80211_M_IBSS) - reg |= R92C_RCR_CBSSID_BCN; - } - - urtwn_write_4(sc, R92C_RCR, reg); - } - - if (vap->iv_opmode == IEEE80211_M_HOSTAP || - vap->iv_opmode == IEEE80211_M_IBSS) { - error = urtwn_setup_beacon(sc, ni); - if (error != 0) { - device_printf(sc->sc_dev, - "unable to push beacon into the chip, " - "error %d\n", error); - goto end_run; - } - } - - /* Enable TSF synchronization. */ - urtwn_tsf_sync_enable(sc, vap); - - urtwn_write_1(sc, R92C_SIFS_CCK + 1, 10); - urtwn_write_1(sc, R92C_SIFS_OFDM + 1, 10); - urtwn_write_1(sc, R92C_SPEC_SIFS + 1, 10); - urtwn_write_1(sc, R92C_MAC_SPEC_SIFS + 1, 10); - urtwn_write_1(sc, R92C_R2T_SIFS + 1, 10); - urtwn_write_1(sc, R92C_T2T_SIFS + 1, 10); - - /* Intialize rate adaptation. */ - if (!(sc->chip & URTWN_CHIP_88E)) - urtwn_ra_init(sc); - /* Turn link LED on. */ - urtwn_set_led(sc, URTWN_LED_LINK, 1); - - sc->avg_pwdb = -1; /* Reset average RSSI. */ - /* Reset temperature calibration state machine. */ - sc->sc_flags &= ~URTWN_TEMP_MEASURED; - sc->thcal_lctemp = 0; - /* Start periodic calibration. */ - callout_reset(&sc->sc_calib_to, 2*hz, urtwn_calib_to, sc); - -end_run: - ieee80211_free_node(ni); - break; - default: - break; - } - - URTWN_UNLOCK(sc); - IEEE80211_LOCK(ic); - return (error != 0 ? error : uvp->newstate(vap, nstate, arg)); -} - -static void -urtwn_calib_to(void *arg) -{ - struct urtwn_softc *sc = arg; - - /* Do it in a process context. */ - urtwn_cmd_sleepable(sc, NULL, 0, urtwn_calib_cb); -} - -static void -urtwn_calib_cb(struct urtwn_softc *sc, union sec_param *data) -{ - /* Do temperature compensation. */ - urtwn_temp_calib(sc); - - if ((urtwn_read_1(sc, R92C_MSR) & R92C_MSR_MASK) != R92C_MSR_NOLINK) - callout_reset(&sc->sc_calib_to, 2*hz, urtwn_calib_to, sc); -} - -static void -urtwn_watchdog(void *arg) -{ - struct urtwn_softc *sc = arg; - - if (sc->sc_txtimer > 0) { - if (--sc->sc_txtimer == 0) { - device_printf(sc->sc_dev, "device timeout\n"); - counter_u64_add(sc->sc_ic.ic_oerrors, 1); - return; - } - callout_reset(&sc->sc_watchdog_ch, hz, urtwn_watchdog, sc); - } -} - -static void -urtwn_update_avgrssi(struct urtwn_softc *sc, int rate, int8_t rssi) -{ - int pwdb; - - /* Convert antenna signal to percentage. */ - if (rssi <= -100 || rssi >= 20) - pwdb = 0; - else if (rssi >= 0) - pwdb = 100; - else - pwdb = 100 + rssi; - if (!(sc->chip & URTWN_CHIP_88E)) { - if (rate <= URTWN_RIDX_CCK11) { - /* CCK gain is smaller than OFDM/MCS gain. */ - pwdb += 6; - if (pwdb > 100) - pwdb = 100; - if (pwdb <= 14) - pwdb -= 4; - else if (pwdb <= 26) - pwdb -= 8; - else if (pwdb <= 34) - pwdb -= 6; - else if (pwdb <= 42) - pwdb -= 2; - } - } - if (sc->avg_pwdb == -1) /* Init. */ - sc->avg_pwdb = pwdb; - else if (sc->avg_pwdb < pwdb) - sc->avg_pwdb = ((sc->avg_pwdb * 19 + pwdb) / 20) + 1; - else - sc->avg_pwdb = ((sc->avg_pwdb * 19 + pwdb) / 20); - URTWN_DPRINTF(sc, URTWN_DEBUG_RSSI, "%s: PWDB %d, EMA %d\n", __func__, - pwdb, sc->avg_pwdb); -} - -static int8_t -urtwn_get_rssi(struct urtwn_softc *sc, int rate, void *physt) -{ - static const int8_t cckoff[] = { 16, -12, -26, -46 }; - struct r92c_rx_phystat *phy; - struct r92c_rx_cck *cck; - uint8_t rpt; - int8_t rssi; - - if (rate <= URTWN_RIDX_CCK11) { - cck = (struct r92c_rx_cck *)physt; - if (sc->sc_flags & URTWN_FLAG_CCK_HIPWR) { - rpt = (cck->agc_rpt >> 5) & 0x3; - rssi = (cck->agc_rpt & 0x1f) << 1; - } else { - rpt = (cck->agc_rpt >> 6) & 0x3; - rssi = cck->agc_rpt & 0x3e; - } - rssi = cckoff[rpt] - rssi; - } else { /* OFDM/HT. */ - phy = (struct r92c_rx_phystat *)physt; - rssi = ((le32toh(phy->phydw1) >> 1) & 0x7f) - 110; - } - return (rssi); -} - -static int8_t -urtwn_r88e_get_rssi(struct urtwn_softc *sc, int rate, void *physt) -{ - struct r92c_rx_phystat *phy; - struct r88e_rx_cck *cck; - uint8_t cck_agc_rpt, lna_idx, vga_idx; - int8_t rssi; - - rssi = 0; - if (rate <= URTWN_RIDX_CCK11) { - cck = (struct r88e_rx_cck *)physt; - cck_agc_rpt = cck->agc_rpt; - lna_idx = (cck_agc_rpt & 0xe0) >> 5; - vga_idx = cck_agc_rpt & 0x1f; - switch (lna_idx) { - case 7: - if (vga_idx <= 27) - rssi = -100 + 2* (27 - vga_idx); - else - rssi = -100; - break; - case 6: - rssi = -48 + 2 * (2 - vga_idx); - break; - case 5: - rssi = -42 + 2 * (7 - vga_idx); - break; - case 4: - rssi = -36 + 2 * (7 - vga_idx); - break; - case 3: - rssi = -24 + 2 * (7 - vga_idx); - break; - case 2: - rssi = -12 + 2 * (5 - vga_idx); - break; - case 1: - rssi = 8 - (2 * vga_idx); - break; - case 0: - rssi = 14 - (2 * vga_idx); - break; - } - rssi += 6; - } else { /* OFDM/HT. */ - phy = (struct r92c_rx_phystat *)physt; - rssi = ((le32toh(phy->phydw1) >> 1) & 0x7f) - 110; - } - return (rssi); -} - -static int -urtwn_tx_data(struct urtwn_softc *sc, struct ieee80211_node *ni, - struct mbuf *m, struct urtwn_data *data) -{ - const struct ieee80211_txparam *tp; - struct ieee80211com *ic = &sc->sc_ic; - struct ieee80211vap *vap = ni->ni_vap; - struct ieee80211_key *k = NULL; - struct ieee80211_channel *chan; - struct ieee80211_frame *wh; - struct r92c_tx_desc *txd; - uint8_t macid, raid, rate, ridx, type, tid, qos, qsel; - int hasqos, ismcast; - - URTWN_ASSERT_LOCKED(sc); - - wh = mtod(m, struct ieee80211_frame *); - type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK; - hasqos = IEEE80211_QOS_HAS_SEQ(wh); - ismcast = IEEE80211_IS_MULTICAST(wh->i_addr1); - - /* Select TX ring for this frame. */ - if (hasqos) { - qos = ((const struct ieee80211_qosframe *)wh)->i_qos[0]; - tid = qos & IEEE80211_QOS_TID; - } else { - qos = 0; - tid = 0; - } - - chan = (ni->ni_chan != IEEE80211_CHAN_ANYC) ? - ni->ni_chan : ic->ic_curchan; - tp = &vap->iv_txparms[ieee80211_chan2mode(chan)]; - - /* Choose a TX rate index. */ - if (type == IEEE80211_FC0_TYPE_MGT) - rate = tp->mgmtrate; - else if (ismcast) - rate = tp->mcastrate; - else if (tp->ucastrate != IEEE80211_FIXED_RATE_NONE) - rate = tp->ucastrate; - else if (m->m_flags & M_EAPOL) - rate = tp->mgmtrate; - else { - if (URTWN_CHIP_HAS_RATECTL(sc)) { - /* XXX pass pktlen */ - (void) ieee80211_ratectl_rate(ni, NULL, 0); - rate = ni->ni_txrate; - } else { - /* XXX TODO: drop the default rate for 11b/11g? */ - if (ni->ni_flags & IEEE80211_NODE_HT) - rate = IEEE80211_RATE_MCS | 0x4; /* MCS4 */ - else if (ic->ic_curmode != IEEE80211_MODE_11B) - rate = 108; - else - rate = 22; - } - } - - /* - * XXX TODO: this should be per-node, for 11b versus 11bg - * nodes in hostap mode - */ - ridx = rate2ridx(rate); - if (ni->ni_flags & IEEE80211_NODE_HT) - raid = R92C_RAID_11GN; - else if (ic->ic_curmode != IEEE80211_MODE_11B) - raid = R92C_RAID_11BG; - else - raid = R92C_RAID_11B; - - if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { - k = ieee80211_crypto_encap(ni, m); - if (k == NULL) { - device_printf(sc->sc_dev, - "ieee80211_crypto_encap returns NULL.\n"); - return (ENOBUFS); - } - - /* in case packet header moved, reset pointer */ - wh = mtod(m, struct ieee80211_frame *); - } - - /* Fill Tx descriptor. */ - txd = (struct r92c_tx_desc *)data->buf; - memset(txd, 0, sizeof(*txd)); - - txd->txdw0 |= htole32( - SM(R92C_TXDW0_OFFSET, sizeof(*txd)) | - R92C_TXDW0_OWN | R92C_TXDW0_FSG | R92C_TXDW0_LSG); - if (ismcast) - txd->txdw0 |= htole32(R92C_TXDW0_BMCAST); - - if (!ismcast) { - /* Unicast frame, check if an ACK is expected. */ - if (!qos || (qos & IEEE80211_QOS_ACKPOLICY) != - IEEE80211_QOS_ACKPOLICY_NOACK) { - txd->txdw5 |= htole32(R92C_TXDW5_RTY_LMT_ENA); - txd->txdw5 |= htole32(SM(R92C_TXDW5_RTY_LMT, - tp->maxretry)); - } - - if (sc->chip & URTWN_CHIP_88E) { - struct urtwn_node *un = URTWN_NODE(ni); - macid = un->id; - } else - macid = URTWN_MACID_BSS; - - if (type == IEEE80211_FC0_TYPE_DATA) { - qsel = tid % URTWN_MAX_TID; - - if (sc->chip & URTWN_CHIP_88E) { - txd->txdw2 |= htole32( - R88E_TXDW2_AGGBK | - R88E_TXDW2_CCX_RPT); - } else - txd->txdw1 |= htole32(R92C_TXDW1_AGGBK); - - /* protmode, non-HT */ - /* XXX TODO: noack frames? */ - if ((rate & 0x80) == 0 && - (ic->ic_flags & IEEE80211_F_USEPROT)) { - switch (ic->ic_protmode) { - case IEEE80211_PROT_CTSONLY: - txd->txdw4 |= htole32( - R92C_TXDW4_CTS2SELF); - break; - case IEEE80211_PROT_RTSCTS: - txd->txdw4 |= htole32( - R92C_TXDW4_RTSEN | - R92C_TXDW4_HWRTSEN); - break; - default: - break; - } - } - - /* protmode, HT */ - /* XXX TODO: noack frames? */ - if ((rate & 0x80) && - (ic->ic_htprotmode == IEEE80211_PROT_RTSCTS)) { - txd->txdw4 |= htole32( - R92C_TXDW4_RTSEN | - R92C_TXDW4_HWRTSEN); - } - - /* XXX TODO: rtsrate is configurable? 24mbit may - * be a bit high for RTS rate? */ - txd->txdw4 |= htole32(SM(R92C_TXDW4_RTSRATE, - URTWN_RIDX_OFDM24)); - - txd->txdw5 |= htole32(0x0001ff00); - } else /* IEEE80211_FC0_TYPE_MGT */ - qsel = R92C_TXDW1_QSEL_MGNT; - } else { - macid = URTWN_MACID_BC; - qsel = R92C_TXDW1_QSEL_MGNT; - } - - txd->txdw1 |= htole32( - SM(R92C_TXDW1_QSEL, qsel) | - SM(R92C_TXDW1_RAID, raid)); - - /* XXX TODO: 40MHZ flag? */ - /* XXX TODO: AMPDU flag? (AGG_ENABLE or AGG_BREAK?) Density shift? */ - /* XXX Short preamble? */ - /* XXX Short-GI? */ - - if (sc->chip & URTWN_CHIP_88E) - txd->txdw1 |= htole32(SM(R88E_TXDW1_MACID, macid)); - else - txd->txdw1 |= htole32(SM(R92C_TXDW1_MACID, macid)); - - txd->txdw5 |= htole32(SM(R92C_TXDW5_DATARATE, ridx)); - - /* Force this rate if needed. */ - if (URTWN_CHIP_HAS_RATECTL(sc) || ismcast || - (tp->ucastrate != IEEE80211_FIXED_RATE_NONE) || - (m->m_flags & M_EAPOL) || type != IEEE80211_FC0_TYPE_DATA) - txd->txdw4 |= htole32(R92C_TXDW4_DRVRATE); - - if (!hasqos) { - /* Use HW sequence numbering for non-QoS frames. */ - if (sc->chip & URTWN_CHIP_88E) - txd->txdseq = htole16(R88E_TXDSEQ_HWSEQ_EN); - else - txd->txdw4 |= htole32(R92C_TXDW4_HWSEQ_EN); - } else { - /* Set sequence number. */ - txd->txdseq = htole16(M_SEQNO_GET(m) % IEEE80211_SEQ_RANGE); - } - - if (k != NULL && !(k->wk_flags & IEEE80211_KEY_SWCRYPT)) { - uint8_t cipher; - - switch (k->wk_cipher->ic_cipher) { - case IEEE80211_CIPHER_WEP: - case IEEE80211_CIPHER_TKIP: - cipher = R92C_TXDW1_CIPHER_RC4; - break; - case IEEE80211_CIPHER_AES_CCM: - cipher = R92C_TXDW1_CIPHER_AES; - break; - default: - device_printf(sc->sc_dev, "%s: unknown cipher %d\n", - __func__, k->wk_cipher->ic_cipher); - return (EINVAL); - } - - txd->txdw1 |= htole32(SM(R92C_TXDW1_CIPHER, cipher)); - } - - if (ieee80211_radiotap_active_vap(vap)) { - struct urtwn_tx_radiotap_header *tap = &sc->sc_txtap; - - tap->wt_flags = 0; - if (k != NULL) - tap->wt_flags |= IEEE80211_RADIOTAP_F_WEP; - ieee80211_radiotap_tx(vap, m); - } - - data->ni = ni; - - urtwn_tx_start(sc, m, type, data); - - return (0); -} - -static int -urtwn_tx_raw(struct urtwn_softc *sc, struct ieee80211_node *ni, - struct mbuf *m, struct urtwn_data *data, - const struct ieee80211_bpf_params *params) -{ - struct ieee80211vap *vap = ni->ni_vap; - struct ieee80211_key *k = NULL; - struct ieee80211_frame *wh; - struct r92c_tx_desc *txd; - uint8_t cipher, ridx, type; - - /* Encrypt the frame if need be. */ - cipher = R92C_TXDW1_CIPHER_NONE; - if (params->ibp_flags & IEEE80211_BPF_CRYPTO) { - /* Retrieve key for TX. */ - k = ieee80211_crypto_encap(ni, m); - if (k == NULL) - return (ENOBUFS); - - if (!(k->wk_flags & IEEE80211_KEY_SWCRYPT)) { - switch (k->wk_cipher->ic_cipher) { - case IEEE80211_CIPHER_WEP: - case IEEE80211_CIPHER_TKIP: - cipher = R92C_TXDW1_CIPHER_RC4; - break; - case IEEE80211_CIPHER_AES_CCM: - cipher = R92C_TXDW1_CIPHER_AES; - break; - default: - device_printf(sc->sc_dev, - "%s: unknown cipher %d\n", - __func__, k->wk_cipher->ic_cipher); - return (EINVAL); - } - } - } - - /* XXX TODO: 11n checks, matching urtwn_tx_data() */ - - wh = mtod(m, struct ieee80211_frame *); - type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK; - - /* Fill Tx descriptor. */ - txd = (struct r92c_tx_desc *)data->buf; - memset(txd, 0, sizeof(*txd)); - - txd->txdw0 |= htole32( - SM(R92C_TXDW0_OFFSET, sizeof(*txd)) | - R92C_TXDW0_OWN | R92C_TXDW0_FSG | R92C_TXDW0_LSG); - if (IEEE80211_IS_MULTICAST(wh->i_addr1)) - txd->txdw0 |= htole32(R92C_TXDW0_BMCAST); - - if ((params->ibp_flags & IEEE80211_BPF_NOACK) == 0) { - txd->txdw5 |= htole32(R92C_TXDW5_RTY_LMT_ENA); - txd->txdw5 |= htole32(SM(R92C_TXDW5_RTY_LMT, - params->ibp_try0)); - } - if (params->ibp_flags & IEEE80211_BPF_RTS) - txd->txdw4 |= htole32(R92C_TXDW4_RTSEN | R92C_TXDW4_HWRTSEN); - if (params->ibp_flags & IEEE80211_BPF_CTS) - txd->txdw4 |= htole32(R92C_TXDW4_CTS2SELF); - if (txd->txdw4 & htole32(R92C_TXDW4_RTSEN | R92C_TXDW4_CTS2SELF)) { - txd->txdw4 |= htole32(SM(R92C_TXDW4_RTSRATE, - URTWN_RIDX_OFDM24)); - } - - if (sc->chip & URTWN_CHIP_88E) - txd->txdw1 |= htole32(SM(R88E_TXDW1_MACID, URTWN_MACID_BC)); - else - txd->txdw1 |= htole32(SM(R92C_TXDW1_MACID, URTWN_MACID_BC)); - - /* XXX TODO: rate index/config (RAID) for 11n? */ - txd->txdw1 |= htole32(SM(R92C_TXDW1_QSEL, R92C_TXDW1_QSEL_MGNT)); - txd->txdw1 |= htole32(SM(R92C_TXDW1_CIPHER, cipher)); - - /* Choose a TX rate index. */ - ridx = rate2ridx(params->ibp_rate0); - txd->txdw5 |= htole32(SM(R92C_TXDW5_DATARATE, ridx)); - txd->txdw5 |= htole32(0x0001ff00); - txd->txdw4 |= htole32(R92C_TXDW4_DRVRATE); - - if (!IEEE80211_QOS_HAS_SEQ(wh)) { - /* Use HW sequence numbering for non-QoS frames. */ - if (sc->chip & URTWN_CHIP_88E) - txd->txdseq = htole16(R88E_TXDSEQ_HWSEQ_EN); - else - txd->txdw4 |= htole32(R92C_TXDW4_HWSEQ_EN); - } else { - /* Set sequence number. */ - txd->txdseq = htole16(M_SEQNO_GET(m) % IEEE80211_SEQ_RANGE); - } - - if (ieee80211_radiotap_active_vap(vap)) { - struct urtwn_tx_radiotap_header *tap = &sc->sc_txtap; - - tap->wt_flags = 0; - if (k != NULL) - tap->wt_flags |= IEEE80211_RADIOTAP_F_WEP; - ieee80211_radiotap_tx(vap, m); - } - - data->ni = ni; - - urtwn_tx_start(sc, m, type, data); - - return (0); -} - -static void -urtwn_tx_start(struct urtwn_softc *sc, struct mbuf *m, uint8_t type, - struct urtwn_data *data) -{ - struct usb_xfer *xfer; - struct r92c_tx_desc *txd; - uint16_t ac, sum; - int i, xferlen; - - URTWN_ASSERT_LOCKED(sc); - - ac = M_WME_GETAC(m); - - switch (type) { - case IEEE80211_FC0_TYPE_CTL: - case IEEE80211_FC0_TYPE_MGT: - xfer = sc->sc_xfer[URTWN_BULK_TX_VO]; - break; - default: - xfer = sc->sc_xfer[wme2queue[ac].qid]; - break; - } - - txd = (struct r92c_tx_desc *)data->buf; - txd->txdw0 |= htole32(SM(R92C_TXDW0_PKTLEN, m->m_pkthdr.len)); - - /* Compute Tx descriptor checksum. */ - sum = 0; - for (i = 0; i < sizeof(*txd) / 2; i++) - sum ^= ((uint16_t *)txd)[i]; - txd->txdsum = sum; /* NB: already little endian. */ - - xferlen = sizeof(*txd) + m->m_pkthdr.len; - m_copydata(m, 0, m->m_pkthdr.len, (caddr_t)&txd[1]); - - data->buflen = xferlen; - data->m = m; - - STAILQ_INSERT_TAIL(&sc->sc_tx_pending, data, next); - usbd_transfer_start(xfer); -} - -static int -urtwn_transmit(struct ieee80211com *ic, struct mbuf *m) -{ - struct urtwn_softc *sc = ic->ic_softc; - int error; - - URTWN_LOCK(sc); - if ((sc->sc_flags & URTWN_RUNNING) == 0) { - URTWN_UNLOCK(sc); - return (ENXIO); - } - error = mbufq_enqueue(&sc->sc_snd, m); - if (error) { - URTWN_UNLOCK(sc); - return (error); - } - urtwn_start(sc); - URTWN_UNLOCK(sc); - - return (0); -} - -static void -urtwn_start(struct urtwn_softc *sc) -{ - struct ieee80211_node *ni; - struct mbuf *m; - struct urtwn_data *bf; - - URTWN_ASSERT_LOCKED(sc); - while ((m = mbufq_dequeue(&sc->sc_snd)) != NULL) { - bf = urtwn_getbuf(sc); - if (bf == NULL) { - mbufq_prepend(&sc->sc_snd, m); - break; - } - ni = (struct ieee80211_node *)m->m_pkthdr.rcvif; - m->m_pkthdr.rcvif = NULL; - - URTWN_DPRINTF(sc, URTWN_DEBUG_XMIT, "%s: called; m=%p\n", - __func__, - m); - - if (urtwn_tx_data(sc, ni, m, bf) != 0) { - if_inc_counter(ni->ni_vap->iv_ifp, - IFCOUNTER_OERRORS, 1); - STAILQ_INSERT_HEAD(&sc->sc_tx_inactive, bf, next); - m_freem(m); - ieee80211_free_node(ni); - break; - } - sc->sc_txtimer = 5; - callout_reset(&sc->sc_watchdog_ch, hz, urtwn_watchdog, sc); - } -} - -static void -urtwn_parent(struct ieee80211com *ic) -{ - struct urtwn_softc *sc = ic->ic_softc; - - URTWN_LOCK(sc); - if (sc->sc_flags & URTWN_DETACHED) { - URTWN_UNLOCK(sc); - return; - } - URTWN_UNLOCK(sc); - - if (ic->ic_nrunning > 0) { - if (urtwn_init(sc) != 0) { - struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); - if (vap != NULL) - ieee80211_stop(vap); - } else - ieee80211_start_all(ic); - } else - urtwn_stop(sc); -} - -static __inline int -urtwn_power_on(struct urtwn_softc *sc) -{ - - return sc->sc_power_on(sc); -} - -static int -urtwn_r92c_power_on(struct urtwn_softc *sc) -{ - uint32_t reg; - usb_error_t error; - int ntries; - - /* Wait for autoload done bit. */ - for (ntries = 0; ntries < 1000; ntries++) { - if (urtwn_read_1(sc, R92C_APS_FSMCO) & R92C_APS_FSMCO_PFM_ALDN) - break; - urtwn_ms_delay(sc); - } - if (ntries == 1000) { - device_printf(sc->sc_dev, - "timeout waiting for chip autoload\n"); - return (ETIMEDOUT); - } - - /* Unlock ISO/CLK/Power control register. */ - error = urtwn_write_1(sc, R92C_RSV_CTRL, 0); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - /* Move SPS into PWM mode. */ - error = urtwn_write_1(sc, R92C_SPS0_CTRL, 0x2b); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - urtwn_ms_delay(sc); - - reg = urtwn_read_1(sc, R92C_LDOV12D_CTRL); - if (!(reg & R92C_LDOV12D_CTRL_LDV12_EN)) { - error = urtwn_write_1(sc, R92C_LDOV12D_CTRL, - reg | R92C_LDOV12D_CTRL_LDV12_EN); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - urtwn_ms_delay(sc); - error = urtwn_write_1(sc, R92C_SYS_ISO_CTRL, - urtwn_read_1(sc, R92C_SYS_ISO_CTRL) & - ~R92C_SYS_ISO_CTRL_MD2PP); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - } - - /* Auto enable WLAN. */ - error = urtwn_write_2(sc, R92C_APS_FSMCO, - urtwn_read_2(sc, R92C_APS_FSMCO) | R92C_APS_FSMCO_APFM_ONMAC); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - for (ntries = 0; ntries < 1000; ntries++) { - if (!(urtwn_read_2(sc, R92C_APS_FSMCO) & - R92C_APS_FSMCO_APFM_ONMAC)) - break; - urtwn_ms_delay(sc); - } - if (ntries == 1000) { - device_printf(sc->sc_dev, - "timeout waiting for MAC auto ON\n"); - return (ETIMEDOUT); - } - - /* Enable radio, GPIO and LED functions. */ - error = urtwn_write_2(sc, R92C_APS_FSMCO, - R92C_APS_FSMCO_AFSM_HSUS | - R92C_APS_FSMCO_PDN_EN | - R92C_APS_FSMCO_PFM_ALDN); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - /* Release RF digital isolation. */ - error = urtwn_write_2(sc, R92C_SYS_ISO_CTRL, - urtwn_read_2(sc, R92C_SYS_ISO_CTRL) & ~R92C_SYS_ISO_CTRL_DIOR); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - - /* Initialize MAC. */ - error = urtwn_write_1(sc, R92C_APSD_CTRL, - urtwn_read_1(sc, R92C_APSD_CTRL) & ~R92C_APSD_CTRL_OFF); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - for (ntries = 0; ntries < 200; ntries++) { - if (!(urtwn_read_1(sc, R92C_APSD_CTRL) & - R92C_APSD_CTRL_OFF_STATUS)) - break; - urtwn_ms_delay(sc); - } - if (ntries == 200) { - device_printf(sc->sc_dev, - "timeout waiting for MAC initialization\n"); - return (ETIMEDOUT); - } - - /* Enable MAC DMA/WMAC/SCHEDULE/SEC blocks. */ - reg = urtwn_read_2(sc, R92C_CR); - reg |= R92C_CR_HCI_TXDMA_EN | R92C_CR_HCI_RXDMA_EN | - R92C_CR_TXDMA_EN | R92C_CR_RXDMA_EN | R92C_CR_PROTOCOL_EN | - R92C_CR_SCHEDULE_EN | R92C_CR_MACTXEN | R92C_CR_MACRXEN | - R92C_CR_ENSEC; - error = urtwn_write_2(sc, R92C_CR, reg); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - - error = urtwn_write_1(sc, 0xfe10, 0x19); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - return (0); -} - -static int -urtwn_r88e_power_on(struct urtwn_softc *sc) -{ - uint32_t reg; - usb_error_t error; - int ntries; - - /* Wait for power ready bit. */ - for (ntries = 0; ntries < 5000; ntries++) { - if (urtwn_read_4(sc, R92C_APS_FSMCO) & R92C_APS_FSMCO_SUS_HOST) - break; - urtwn_ms_delay(sc); - } - if (ntries == 5000) { - device_printf(sc->sc_dev, - "timeout waiting for chip power up\n"); - return (ETIMEDOUT); - } - - /* Reset BB. */ - error = urtwn_write_1(sc, R92C_SYS_FUNC_EN, - urtwn_read_1(sc, R92C_SYS_FUNC_EN) & ~(R92C_SYS_FUNC_EN_BBRSTB | - R92C_SYS_FUNC_EN_BB_GLB_RST)); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - - error = urtwn_write_1(sc, R92C_AFE_XTAL_CTRL + 2, - urtwn_read_1(sc, R92C_AFE_XTAL_CTRL + 2) | 0x80); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - - /* Disable HWPDN. */ - error = urtwn_write_2(sc, R92C_APS_FSMCO, - urtwn_read_2(sc, R92C_APS_FSMCO) & ~R92C_APS_FSMCO_APDM_HPDN); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - - /* Disable WL suspend. */ - error = urtwn_write_2(sc, R92C_APS_FSMCO, - urtwn_read_2(sc, R92C_APS_FSMCO) & - ~(R92C_APS_FSMCO_AFSM_HSUS | R92C_APS_FSMCO_AFSM_PCIE)); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - - error = urtwn_write_2(sc, R92C_APS_FSMCO, - urtwn_read_2(sc, R92C_APS_FSMCO) | R92C_APS_FSMCO_APFM_ONMAC); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - for (ntries = 0; ntries < 5000; ntries++) { - if (!(urtwn_read_2(sc, R92C_APS_FSMCO) & - R92C_APS_FSMCO_APFM_ONMAC)) - break; - urtwn_ms_delay(sc); - } - if (ntries == 5000) - return (ETIMEDOUT); - - /* Enable LDO normal mode. */ - error = urtwn_write_1(sc, R92C_LPLDO_CTRL, - urtwn_read_1(sc, R92C_LPLDO_CTRL) & ~R92C_LPLDO_CTRL_SLEEP); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - - /* Enable MAC DMA/WMAC/SCHEDULE/SEC blocks. */ - error = urtwn_write_2(sc, R92C_CR, 0); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - reg = urtwn_read_2(sc, R92C_CR); - reg |= R92C_CR_HCI_TXDMA_EN | R92C_CR_HCI_RXDMA_EN | - R92C_CR_TXDMA_EN | R92C_CR_RXDMA_EN | R92C_CR_PROTOCOL_EN | - R92C_CR_SCHEDULE_EN | R92C_CR_ENSEC | R92C_CR_CALTMR_EN; - error = urtwn_write_2(sc, R92C_CR, reg); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - - return (0); -} - -static __inline void -urtwn_power_off(struct urtwn_softc *sc) -{ - - return sc->sc_power_off(sc); -} - -static void -urtwn_r92c_power_off(struct urtwn_softc *sc) -{ - uint32_t reg; - - /* Block all Tx queues. */ - urtwn_write_1(sc, R92C_TXPAUSE, R92C_TX_QUEUE_ALL); - - /* Disable RF */ - urtwn_rf_write(sc, 0, 0, 0); - - urtwn_write_1(sc, R92C_APSD_CTRL, R92C_APSD_CTRL_OFF); - - /* Reset BB state machine */ - urtwn_write_1(sc, R92C_SYS_FUNC_EN, - R92C_SYS_FUNC_EN_USBD | R92C_SYS_FUNC_EN_USBA | - R92C_SYS_FUNC_EN_BB_GLB_RST); - urtwn_write_1(sc, R92C_SYS_FUNC_EN, - R92C_SYS_FUNC_EN_USBD | R92C_SYS_FUNC_EN_USBA); - - /* - * Reset digital sequence - */ -#ifndef URTWN_WITHOUT_UCODE - if (urtwn_read_1(sc, R92C_MCUFWDL) & R92C_MCUFWDL_RDY) { - /* Reset MCU ready status */ - urtwn_write_1(sc, R92C_MCUFWDL, 0); - - /* If firmware in ram code, do reset */ - urtwn_fw_reset(sc); - } -#endif - - /* Reset MAC and Enable 8051 */ - urtwn_write_1(sc, R92C_SYS_FUNC_EN + 1, - (R92C_SYS_FUNC_EN_CPUEN | - R92C_SYS_FUNC_EN_ELDR | - R92C_SYS_FUNC_EN_HWPDN) >> 8); - - /* Reset MCU ready status */ - urtwn_write_1(sc, R92C_MCUFWDL, 0); - - /* Disable MAC clock */ - urtwn_write_2(sc, R92C_SYS_CLKR, - R92C_SYS_CLKR_ANAD16V_EN | - R92C_SYS_CLKR_ANA8M | - R92C_SYS_CLKR_LOADER_EN | - R92C_SYS_CLKR_80M_SSC_DIS | - R92C_SYS_CLKR_SYS_EN | - R92C_SYS_CLKR_RING_EN | - 0x4000); - - /* Disable AFE PLL */ - urtwn_write_1(sc, R92C_AFE_PLL_CTRL, 0x80); - - /* Gated AFE DIG_CLOCK */ - urtwn_write_2(sc, R92C_AFE_XTAL_CTRL, 0x880F); - - /* Isolated digital to PON */ - urtwn_write_1(sc, R92C_SYS_ISO_CTRL, - R92C_SYS_ISO_CTRL_MD2PP | - R92C_SYS_ISO_CTRL_PA2PCIE | - R92C_SYS_ISO_CTRL_PD2CORE | - R92C_SYS_ISO_CTRL_IP2MAC | - R92C_SYS_ISO_CTRL_DIOP | - R92C_SYS_ISO_CTRL_DIOE); - - /* - * Pull GPIO PIN to balance level and LED control - */ - /* 1. Disable GPIO[7:0] */ - urtwn_write_2(sc, R92C_GPIO_IOSEL, 0x0000); - - reg = urtwn_read_4(sc, R92C_GPIO_PIN_CTRL) & ~0x0000ff00; - reg |= ((reg << 8) & 0x0000ff00) | 0x00ff0000; - urtwn_write_4(sc, R92C_GPIO_PIN_CTRL, reg); - - /* Disable GPIO[10:8] */ - urtwn_write_1(sc, R92C_MAC_PINMUX_CFG, 0x00); - - reg = urtwn_read_2(sc, R92C_GPIO_IO_SEL) & ~0x00f0; - reg |= (((reg & 0x000f) << 4) | 0x0780); - urtwn_write_2(sc, R92C_GPIO_IO_SEL, reg); - - /* Disable LED0 & 1 */ - urtwn_write_2(sc, R92C_LEDCFG0, 0x8080); - - /* - * Reset digital sequence - */ - /* Disable ELDR clock */ - urtwn_write_2(sc, R92C_SYS_CLKR, - R92C_SYS_CLKR_ANAD16V_EN | - R92C_SYS_CLKR_ANA8M | - R92C_SYS_CLKR_LOADER_EN | - R92C_SYS_CLKR_80M_SSC_DIS | - R92C_SYS_CLKR_SYS_EN | - R92C_SYS_CLKR_RING_EN | - 0x4000); - - /* Isolated ELDR to PON */ - urtwn_write_1(sc, R92C_SYS_ISO_CTRL + 1, - (R92C_SYS_ISO_CTRL_DIOR | - R92C_SYS_ISO_CTRL_PWC_EV12V) >> 8); - - /* - * Disable analog sequence - */ - /* Disable A15 power */ - urtwn_write_1(sc, R92C_LDOA15_CTRL, R92C_LDOA15_CTRL_OBUF); - /* Disable digital core power */ - urtwn_write_1(sc, R92C_LDOV12D_CTRL, - urtwn_read_1(sc, R92C_LDOV12D_CTRL) & - ~R92C_LDOV12D_CTRL_LDV12_EN); - - /* Enter PFM mode */ - urtwn_write_1(sc, R92C_SPS0_CTRL, 0x23); - - /* Set USB suspend */ - urtwn_write_2(sc, R92C_APS_FSMCO, - R92C_APS_FSMCO_APDM_HOST | - R92C_APS_FSMCO_AFSM_HSUS | - R92C_APS_FSMCO_PFM_ALDN); - - /* Lock ISO/CLK/Power control register. */ - urtwn_write_1(sc, R92C_RSV_CTRL, 0x0E); -} - -static void -urtwn_r88e_power_off(struct urtwn_softc *sc) -{ - uint8_t reg; - int ntries; - - /* Disable any kind of TX reports. */ - urtwn_write_1(sc, R88E_TX_RPT_CTRL, - urtwn_read_1(sc, R88E_TX_RPT_CTRL) & - ~(R88E_TX_RPT1_ENA | R88E_TX_RPT2_ENA)); - - /* Stop Rx. */ - urtwn_write_1(sc, R92C_CR, 0); - - /* Move card to Low Power State. */ - /* Block all Tx queues. */ - urtwn_write_1(sc, R92C_TXPAUSE, R92C_TX_QUEUE_ALL); - - for (ntries = 0; ntries < 20; ntries++) { - /* Should be zero if no packet is transmitting. */ - if (urtwn_read_4(sc, R88E_SCH_TXCMD) == 0) - break; - - urtwn_ms_delay(sc); - } - if (ntries == 20) { - device_printf(sc->sc_dev, "%s: failed to block Tx queues\n", - __func__); - return; - } - - /* CCK and OFDM are disabled, and clock are gated. */ - urtwn_write_1(sc, R92C_SYS_FUNC_EN, - urtwn_read_1(sc, R92C_SYS_FUNC_EN) & ~R92C_SYS_FUNC_EN_BBRSTB); - - urtwn_ms_delay(sc); - - /* Reset MAC TRX */ - urtwn_write_1(sc, R92C_CR, - R92C_CR_HCI_TXDMA_EN | R92C_CR_HCI_RXDMA_EN | - R92C_CR_TXDMA_EN | R92C_CR_RXDMA_EN | - R92C_CR_PROTOCOL_EN | R92C_CR_SCHEDULE_EN); - - /* check if removed later */ - urtwn_write_1(sc, R92C_CR + 1, - urtwn_read_1(sc, R92C_CR + 1) & ~(R92C_CR_ENSEC >> 8)); - - /* Respond TxOK to scheduler */ - urtwn_write_1(sc, R92C_DUAL_TSF_RST, - urtwn_read_1(sc, R92C_DUAL_TSF_RST) | 0x20); - - /* If firmware in ram code, do reset. */ -#ifndef URTWN_WITHOUT_UCODE - if (urtwn_read_1(sc, R92C_MCUFWDL) & R92C_MCUFWDL_RDY) - urtwn_r88e_fw_reset(sc); -#endif - - /* Reset MCU ready status. */ - urtwn_write_1(sc, R92C_MCUFWDL, 0x00); - - /* Disable 32k. */ - urtwn_write_1(sc, R88E_32K_CTRL, - urtwn_read_1(sc, R88E_32K_CTRL) & ~0x01); - - /* Move card to Disabled state. */ - /* Turn off RF. */ - urtwn_write_1(sc, R92C_RF_CTRL, 0); - - /* LDO Sleep mode. */ - urtwn_write_1(sc, R92C_LPLDO_CTRL, - urtwn_read_1(sc, R92C_LPLDO_CTRL) | R92C_LPLDO_CTRL_SLEEP); - - /* Turn off MAC by HW state machine */ - urtwn_write_1(sc, R92C_APS_FSMCO + 1, - urtwn_read_1(sc, R92C_APS_FSMCO + 1) | - (R92C_APS_FSMCO_APFM_OFF >> 8)); - - for (ntries = 0; ntries < 20; ntries++) { - /* Wait until it will be disabled. */ - if ((urtwn_read_1(sc, R92C_APS_FSMCO + 1) & - (R92C_APS_FSMCO_APFM_OFF >> 8)) == 0) - break; - - urtwn_ms_delay(sc); - } - if (ntries == 20) { - device_printf(sc->sc_dev, "%s: could not turn off MAC\n", - __func__); - return; - } - - /* schmit trigger */ - urtwn_write_1(sc, R92C_AFE_XTAL_CTRL + 2, - urtwn_read_1(sc, R92C_AFE_XTAL_CTRL + 2) | 0x80); - - /* Enable WL suspend. */ - urtwn_write_1(sc, R92C_APS_FSMCO + 1, - (urtwn_read_1(sc, R92C_APS_FSMCO + 1) & ~0x10) | 0x08); - - /* Enable bandgap mbias in suspend. */ - urtwn_write_1(sc, R92C_APS_FSMCO + 3, 0); - - /* Clear SIC_EN register. */ - urtwn_write_1(sc, R92C_GPIO_MUXCFG + 1, - urtwn_read_1(sc, R92C_GPIO_MUXCFG + 1) & ~0x10); - - /* Set USB suspend enable local register */ - urtwn_write_1(sc, R92C_USB_SUSPEND, - urtwn_read_1(sc, R92C_USB_SUSPEND) | 0x10); - - /* Reset MCU IO Wrapper. */ - reg = urtwn_read_1(sc, R92C_RSV_CTRL + 1); - urtwn_write_1(sc, R92C_RSV_CTRL + 1, reg & ~0x08); - urtwn_write_1(sc, R92C_RSV_CTRL + 1, reg | 0x08); - - /* marked as 'For Power Consumption' code. */ - urtwn_write_1(sc, R92C_GPIO_OUT, urtwn_read_1(sc, R92C_GPIO_IN)); - urtwn_write_1(sc, R92C_GPIO_IOSEL, 0xff); - - urtwn_write_1(sc, R92C_GPIO_IO_SEL, - urtwn_read_1(sc, R92C_GPIO_IO_SEL) << 4); - urtwn_write_1(sc, R92C_GPIO_MOD, - urtwn_read_1(sc, R92C_GPIO_MOD) | 0x0f); - - /* Set LNA, TRSW, EX_PA Pin to output mode. */ - urtwn_write_4(sc, R88E_BB_PAD_CTRL, 0x00080808); -} - -static int -urtwn_llt_init(struct urtwn_softc *sc) -{ - int i, error, page_count, pktbuf_count; - - page_count = (sc->chip & URTWN_CHIP_88E) ? - R88E_TX_PAGE_COUNT : R92C_TX_PAGE_COUNT; - pktbuf_count = (sc->chip & URTWN_CHIP_88E) ? - R88E_TXPKTBUF_COUNT : R92C_TXPKTBUF_COUNT; - - /* Reserve pages [0; page_count]. */ - for (i = 0; i < page_count; i++) { - if ((error = urtwn_llt_write(sc, i, i + 1)) != 0) - return (error); - } - /* NB: 0xff indicates end-of-list. */ - if ((error = urtwn_llt_write(sc, i, 0xff)) != 0) - return (error); - /* - * Use pages [page_count + 1; pktbuf_count - 1] - * as ring buffer. - */ - for (++i; i < pktbuf_count - 1; i++) { - if ((error = urtwn_llt_write(sc, i, i + 1)) != 0) - return (error); - } - /* Make the last page point to the beginning of the ring buffer. */ - error = urtwn_llt_write(sc, i, page_count + 1); - return (error); -} - -#ifndef URTWN_WITHOUT_UCODE -static void -urtwn_fw_reset(struct urtwn_softc *sc) -{ - uint16_t reg; - int ntries; - - /* Tell 8051 to reset itself. */ - urtwn_write_1(sc, R92C_HMETFR + 3, 0x20); - - /* Wait until 8051 resets by itself. */ - for (ntries = 0; ntries < 100; ntries++) { - reg = urtwn_read_2(sc, R92C_SYS_FUNC_EN); - if (!(reg & R92C_SYS_FUNC_EN_CPUEN)) - return; - urtwn_ms_delay(sc); - } - /* Force 8051 reset. */ - urtwn_write_2(sc, R92C_SYS_FUNC_EN, reg & ~R92C_SYS_FUNC_EN_CPUEN); -} - -static void -urtwn_r88e_fw_reset(struct urtwn_softc *sc) -{ - uint16_t reg; - - reg = urtwn_read_2(sc, R92C_SYS_FUNC_EN); - urtwn_write_2(sc, R92C_SYS_FUNC_EN, reg & ~R92C_SYS_FUNC_EN_CPUEN); - urtwn_write_2(sc, R92C_SYS_FUNC_EN, reg | R92C_SYS_FUNC_EN_CPUEN); -} - -static int -urtwn_fw_loadpage(struct urtwn_softc *sc, int page, const uint8_t *buf, int len) -{ - uint32_t reg; - usb_error_t error = USB_ERR_NORMAL_COMPLETION; - int off, mlen; - - reg = urtwn_read_4(sc, R92C_MCUFWDL); - reg = RW(reg, R92C_MCUFWDL_PAGE, page); - urtwn_write_4(sc, R92C_MCUFWDL, reg); - - off = R92C_FW_START_ADDR; - while (len > 0) { - if (len > 196) - mlen = 196; - else if (len > 4) - mlen = 4; - else - mlen = 1; - /* XXX fix this deconst */ - error = urtwn_write_region_1(sc, off, - __DECONST(uint8_t *, buf), mlen); - if (error != USB_ERR_NORMAL_COMPLETION) - break; - off += mlen; - buf += mlen; - len -= mlen; - } - return (error); -} - -static int -urtwn_load_firmware(struct urtwn_softc *sc) -{ - const struct firmware *fw; - const struct r92c_fw_hdr *hdr; - const char *imagename; - const u_char *ptr; - size_t len; - uint32_t reg; - int mlen, ntries, page, error; - - URTWN_UNLOCK(sc); - /* Read firmware image from the filesystem. */ - if (sc->chip & URTWN_CHIP_88E) - imagename = "urtwn-rtl8188eufw"; - else if ((sc->chip & (URTWN_CHIP_UMC_A_CUT | URTWN_CHIP_92C)) == - URTWN_CHIP_UMC_A_CUT) - imagename = "urtwn-rtl8192cfwU"; - else - imagename = "urtwn-rtl8192cfwT"; - - fw = firmware_get(imagename); - URTWN_LOCK(sc); - if (fw == NULL) { - device_printf(sc->sc_dev, - "failed loadfirmware of file %s\n", imagename); - return (ENOENT); - } - - len = fw->datasize; - - if (len < sizeof(*hdr)) { - device_printf(sc->sc_dev, "firmware too short\n"); - error = EINVAL; - goto fail; - } - ptr = fw->data; - hdr = (const struct r92c_fw_hdr *)ptr; - /* Check if there is a valid FW header and skip it. */ - if ((le16toh(hdr->signature) >> 4) == 0x88c || - (le16toh(hdr->signature) >> 4) == 0x88e || - (le16toh(hdr->signature) >> 4) == 0x92c) { - URTWN_DPRINTF(sc, URTWN_DEBUG_FIRMWARE, - "FW V%d.%d %02d-%02d %02d:%02d\n", - le16toh(hdr->version), le16toh(hdr->subversion), - hdr->month, hdr->date, hdr->hour, hdr->minute); - ptr += sizeof(*hdr); - len -= sizeof(*hdr); - } - - if (urtwn_read_1(sc, R92C_MCUFWDL) & R92C_MCUFWDL_RAM_DL_SEL) { - if (sc->chip & URTWN_CHIP_88E) - urtwn_r88e_fw_reset(sc); - else - urtwn_fw_reset(sc); - urtwn_write_1(sc, R92C_MCUFWDL, 0); - } - - if (!(sc->chip & URTWN_CHIP_88E)) { - urtwn_write_2(sc, R92C_SYS_FUNC_EN, - urtwn_read_2(sc, R92C_SYS_FUNC_EN) | - R92C_SYS_FUNC_EN_CPUEN); - } - urtwn_write_1(sc, R92C_MCUFWDL, - urtwn_read_1(sc, R92C_MCUFWDL) | R92C_MCUFWDL_EN); - urtwn_write_1(sc, R92C_MCUFWDL + 2, - urtwn_read_1(sc, R92C_MCUFWDL + 2) & ~0x08); - - /* Reset the FWDL checksum. */ - urtwn_write_1(sc, R92C_MCUFWDL, - urtwn_read_1(sc, R92C_MCUFWDL) | R92C_MCUFWDL_CHKSUM_RPT); - - for (page = 0; len > 0; page++) { - mlen = min(len, R92C_FW_PAGE_SIZE); - error = urtwn_fw_loadpage(sc, page, ptr, mlen); - if (error != 0) { - device_printf(sc->sc_dev, - "could not load firmware page\n"); - goto fail; - } - ptr += mlen; - len -= mlen; - } - urtwn_write_1(sc, R92C_MCUFWDL, - urtwn_read_1(sc, R92C_MCUFWDL) & ~R92C_MCUFWDL_EN); - urtwn_write_1(sc, R92C_MCUFWDL + 1, 0); - - /* Wait for checksum report. */ - for (ntries = 0; ntries < 1000; ntries++) { - if (urtwn_read_4(sc, R92C_MCUFWDL) & R92C_MCUFWDL_CHKSUM_RPT) - break; - urtwn_ms_delay(sc); - } - if (ntries == 1000) { - device_printf(sc->sc_dev, - "timeout waiting for checksum report\n"); - error = ETIMEDOUT; - goto fail; - } - - reg = urtwn_read_4(sc, R92C_MCUFWDL); - reg = (reg & ~R92C_MCUFWDL_WINTINI_RDY) | R92C_MCUFWDL_RDY; - urtwn_write_4(sc, R92C_MCUFWDL, reg); - if (sc->chip & URTWN_CHIP_88E) - urtwn_r88e_fw_reset(sc); - /* Wait for firmware readiness. */ - for (ntries = 0; ntries < 1000; ntries++) { - if (urtwn_read_4(sc, R92C_MCUFWDL) & R92C_MCUFWDL_WINTINI_RDY) - break; - urtwn_ms_delay(sc); - } - if (ntries == 1000) { - device_printf(sc->sc_dev, - "timeout waiting for firmware readiness\n"); - error = ETIMEDOUT; - goto fail; - } -fail: - firmware_put(fw, FIRMWARE_UNLOAD); - return (error); -} -#endif - -static int -urtwn_dma_init(struct urtwn_softc *sc) -{ - struct usb_endpoint *ep, *ep_end; - usb_error_t usb_err; - uint32_t reg; - int hashq, hasnq, haslq, nqueues, ntx; - int error, pagecount, npubqpages, nqpages, nrempages, tx_boundary; - - /* Initialize LLT table. */ - error = urtwn_llt_init(sc); - if (error != 0) - return (error); - - /* Determine the number of bulk-out pipes. */ - ntx = 0; - ep = sc->sc_udev->endpoints; - ep_end = sc->sc_udev->endpoints + sc->sc_udev->endpoints_max; - for (; ep != ep_end; ep++) { - if ((ep->edesc == NULL) || - (ep->iface_index != sc->sc_iface_index)) - continue; - if (UE_GET_DIR(ep->edesc->bEndpointAddress) == UE_DIR_OUT) - ntx++; - } - if (ntx == 0) { - device_printf(sc->sc_dev, - "%d: invalid number of Tx bulk pipes\n", ntx); - return (EIO); - } - - /* Get Tx queues to USB endpoints mapping. */ - hashq = hasnq = haslq = nqueues = 0; - switch (ntx) { - case 1: hashq = 1; break; - case 2: hashq = hasnq = 1; break; - case 3: case 4: hashq = hasnq = haslq = 1; break; - } - nqueues = hashq + hasnq + haslq; - if (nqueues == 0) - return (EIO); - - npubqpages = nqpages = nrempages = pagecount = 0; - if (sc->chip & URTWN_CHIP_88E) - tx_boundary = R88E_TX_PAGE_BOUNDARY; - else { - pagecount = R92C_TX_PAGE_COUNT; - npubqpages = R92C_PUBQ_NPAGES; - tx_boundary = R92C_TX_PAGE_BOUNDARY; - } - - /* Set number of pages for normal priority queue. */ - if (sc->chip & URTWN_CHIP_88E) { - usb_err = urtwn_write_2(sc, R92C_RQPN_NPQ, 0xd); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - return (EIO); - usb_err = urtwn_write_4(sc, R92C_RQPN, 0x808e000d); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - return (EIO); - } else { - /* Get the number of pages for each queue. */ - nqpages = (pagecount - npubqpages) / nqueues; - /* - * The remaining pages are assigned to the high priority - * queue. - */ - nrempages = (pagecount - npubqpages) % nqueues; - usb_err = urtwn_write_1(sc, R92C_RQPN_NPQ, hasnq ? nqpages : 0); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - return (EIO); - usb_err = urtwn_write_4(sc, R92C_RQPN, - /* Set number of pages for public queue. */ - SM(R92C_RQPN_PUBQ, npubqpages) | - /* Set number of pages for high priority queue. */ - SM(R92C_RQPN_HPQ, hashq ? nqpages + nrempages : 0) | - /* Set number of pages for low priority queue. */ - SM(R92C_RQPN_LPQ, haslq ? nqpages : 0) | - /* Load values. */ - R92C_RQPN_LD); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - return (EIO); - } - - usb_err = urtwn_write_1(sc, R92C_TXPKTBUF_BCNQ_BDNY, tx_boundary); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - return (EIO); - usb_err = urtwn_write_1(sc, R92C_TXPKTBUF_MGQ_BDNY, tx_boundary); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - return (EIO); - usb_err = urtwn_write_1(sc, R92C_TXPKTBUF_WMAC_LBK_BF_HD, tx_boundary); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - return (EIO); - usb_err = urtwn_write_1(sc, R92C_TRXFF_BNDY, tx_boundary); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - return (EIO); - usb_err = urtwn_write_1(sc, R92C_TDECTRL + 1, tx_boundary); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - return (EIO); - - /* Set queue to USB pipe mapping. */ - reg = urtwn_read_2(sc, R92C_TRXDMA_CTRL); - reg &= ~R92C_TRXDMA_CTRL_QMAP_M; - if (nqueues == 1) { - if (hashq) - reg |= R92C_TRXDMA_CTRL_QMAP_HQ; - else if (hasnq) - reg |= R92C_TRXDMA_CTRL_QMAP_NQ; - else - reg |= R92C_TRXDMA_CTRL_QMAP_LQ; - } else if (nqueues == 2) { - /* - * All 2-endpoints configs have high and normal - * priority queues. - */ - reg |= R92C_TRXDMA_CTRL_QMAP_HQ_NQ; - } else - reg |= R92C_TRXDMA_CTRL_QMAP_3EP; - usb_err = urtwn_write_2(sc, R92C_TRXDMA_CTRL, reg); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - return (EIO); - - /* Set Tx/Rx transfer page boundary. */ - usb_err = urtwn_write_2(sc, R92C_TRXFF_BNDY + 2, - (sc->chip & URTWN_CHIP_88E) ? 0x23ff : 0x27ff); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - return (EIO); - - /* Set Tx/Rx transfer page size. */ - usb_err = urtwn_write_1(sc, R92C_PBP, - SM(R92C_PBP_PSRX, R92C_PBP_128) | - SM(R92C_PBP_PSTX, R92C_PBP_128)); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - return (EIO); - - return (0); -} - -static int -urtwn_mac_init(struct urtwn_softc *sc) -{ - usb_error_t error; - int i; - - /* Write MAC initialization values. */ - if (sc->chip & URTWN_CHIP_88E) { - for (i = 0; i < nitems(rtl8188eu_mac); i++) { - error = urtwn_write_1(sc, rtl8188eu_mac[i].reg, - rtl8188eu_mac[i].val); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - } - urtwn_write_1(sc, R92C_MAX_AGGR_NUM, 0x07); - } else { - for (i = 0; i < nitems(rtl8192cu_mac); i++) - error = urtwn_write_1(sc, rtl8192cu_mac[i].reg, - rtl8192cu_mac[i].val); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - } - - return (0); -} - -static void -urtwn_bb_init(struct urtwn_softc *sc) -{ - const struct urtwn_bb_prog *prog; - uint32_t reg; - uint8_t crystalcap; - int i; - - /* Enable BB and RF. */ - urtwn_write_2(sc, R92C_SYS_FUNC_EN, - urtwn_read_2(sc, R92C_SYS_FUNC_EN) | - R92C_SYS_FUNC_EN_BBRSTB | R92C_SYS_FUNC_EN_BB_GLB_RST | - R92C_SYS_FUNC_EN_DIO_RF); - - if (!(sc->chip & URTWN_CHIP_88E)) - urtwn_write_2(sc, R92C_AFE_PLL_CTRL, 0xdb83); - - urtwn_write_1(sc, R92C_RF_CTRL, - R92C_RF_CTRL_EN | R92C_RF_CTRL_RSTB | R92C_RF_CTRL_SDMRSTB); - urtwn_write_1(sc, R92C_SYS_FUNC_EN, - R92C_SYS_FUNC_EN_USBA | R92C_SYS_FUNC_EN_USBD | - R92C_SYS_FUNC_EN_BB_GLB_RST | R92C_SYS_FUNC_EN_BBRSTB); - - if (!(sc->chip & URTWN_CHIP_88E)) { - urtwn_write_1(sc, R92C_LDOHCI12_CTRL, 0x0f); - urtwn_write_1(sc, 0x15, 0xe9); - urtwn_write_1(sc, R92C_AFE_XTAL_CTRL + 1, 0x80); - } - - /* Select BB programming based on board type. */ - if (sc->chip & URTWN_CHIP_88E) - prog = &rtl8188eu_bb_prog; - else if (!(sc->chip & URTWN_CHIP_92C)) { - if (sc->board_type == R92C_BOARD_TYPE_MINICARD) - prog = &rtl8188ce_bb_prog; - else if (sc->board_type == R92C_BOARD_TYPE_HIGHPA) - prog = &rtl8188ru_bb_prog; - else - prog = &rtl8188cu_bb_prog; - } else { - if (sc->board_type == R92C_BOARD_TYPE_MINICARD) - prog = &rtl8192ce_bb_prog; - else - prog = &rtl8192cu_bb_prog; - } - /* Write BB initialization values. */ - for (i = 0; i < prog->count; i++) { - urtwn_bb_write(sc, prog->regs[i], prog->vals[i]); - urtwn_ms_delay(sc); - } - - if (sc->chip & URTWN_CHIP_92C_1T2R) { - /* 8192C 1T only configuration. */ - reg = urtwn_bb_read(sc, R92C_FPGA0_TXINFO); - reg = (reg & ~0x00000003) | 0x2; - urtwn_bb_write(sc, R92C_FPGA0_TXINFO, reg); - - reg = urtwn_bb_read(sc, R92C_FPGA1_TXINFO); - reg = (reg & ~0x00300033) | 0x00200022; - urtwn_bb_write(sc, R92C_FPGA1_TXINFO, reg); - - reg = urtwn_bb_read(sc, R92C_CCK0_AFESETTING); - reg = (reg & ~0xff000000) | 0x45 << 24; - urtwn_bb_write(sc, R92C_CCK0_AFESETTING, reg); - - reg = urtwn_bb_read(sc, R92C_OFDM0_TRXPATHENA); - reg = (reg & ~0x000000ff) | 0x23; - urtwn_bb_write(sc, R92C_OFDM0_TRXPATHENA, reg); - - reg = urtwn_bb_read(sc, R92C_OFDM0_AGCPARAM1); - reg = (reg & ~0x00000030) | 1 << 4; - urtwn_bb_write(sc, R92C_OFDM0_AGCPARAM1, reg); - - reg = urtwn_bb_read(sc, 0xe74); - reg = (reg & ~0x0c000000) | 2 << 26; - urtwn_bb_write(sc, 0xe74, reg); - reg = urtwn_bb_read(sc, 0xe78); - reg = (reg & ~0x0c000000) | 2 << 26; - urtwn_bb_write(sc, 0xe78, reg); - reg = urtwn_bb_read(sc, 0xe7c); - reg = (reg & ~0x0c000000) | 2 << 26; - urtwn_bb_write(sc, 0xe7c, reg); - reg = urtwn_bb_read(sc, 0xe80); - reg = (reg & ~0x0c000000) | 2 << 26; - urtwn_bb_write(sc, 0xe80, reg); - reg = urtwn_bb_read(sc, 0xe88); - reg = (reg & ~0x0c000000) | 2 << 26; - urtwn_bb_write(sc, 0xe88, reg); - } - - /* Write AGC values. */ - for (i = 0; i < prog->agccount; i++) { - urtwn_bb_write(sc, R92C_OFDM0_AGCRSSITABLE, - prog->agcvals[i]); - urtwn_ms_delay(sc); - } - - if (sc->chip & URTWN_CHIP_88E) { - urtwn_bb_write(sc, R92C_OFDM0_AGCCORE1(0), 0x69553422); - urtwn_ms_delay(sc); - urtwn_bb_write(sc, R92C_OFDM0_AGCCORE1(0), 0x69553420); - urtwn_ms_delay(sc); - - crystalcap = sc->rom.r88e_rom.crystalcap; - if (crystalcap == 0xff) - crystalcap = 0x20; - crystalcap &= 0x3f; - reg = urtwn_bb_read(sc, R92C_AFE_XTAL_CTRL); - urtwn_bb_write(sc, R92C_AFE_XTAL_CTRL, - RW(reg, R92C_AFE_XTAL_CTRL_ADDR, - crystalcap | crystalcap << 6)); - } else { - if (urtwn_bb_read(sc, R92C_HSSI_PARAM2(0)) & - R92C_HSSI_PARAM2_CCK_HIPWR) - sc->sc_flags |= URTWN_FLAG_CCK_HIPWR; - } -} - -static void -urtwn_rf_init(struct urtwn_softc *sc) -{ - const struct urtwn_rf_prog *prog; - uint32_t reg, type; - int i, j, idx, off; - - /* Select RF programming based on board type. */ - if (sc->chip & URTWN_CHIP_88E) - prog = rtl8188eu_rf_prog; - else if (!(sc->chip & URTWN_CHIP_92C)) { - if (sc->board_type == R92C_BOARD_TYPE_MINICARD) - prog = rtl8188ce_rf_prog; - else if (sc->board_type == R92C_BOARD_TYPE_HIGHPA) - prog = rtl8188ru_rf_prog; - else - prog = rtl8188cu_rf_prog; - } else - prog = rtl8192ce_rf_prog; - - for (i = 0; i < sc->nrxchains; i++) { - /* Save RF_ENV control type. */ - idx = i / 2; - off = (i % 2) * 16; - reg = urtwn_bb_read(sc, R92C_FPGA0_RFIFACESW(idx)); - type = (reg >> off) & 0x10; - - /* Set RF_ENV enable. */ - reg = urtwn_bb_read(sc, R92C_FPGA0_RFIFACEOE(i)); - reg |= 0x100000; - urtwn_bb_write(sc, R92C_FPGA0_RFIFACEOE(i), reg); - urtwn_ms_delay(sc); - /* Set RF_ENV output high. */ - reg = urtwn_bb_read(sc, R92C_FPGA0_RFIFACEOE(i)); - reg |= 0x10; - urtwn_bb_write(sc, R92C_FPGA0_RFIFACEOE(i), reg); - urtwn_ms_delay(sc); - /* Set address and data lengths of RF registers. */ - reg = urtwn_bb_read(sc, R92C_HSSI_PARAM2(i)); - reg &= ~R92C_HSSI_PARAM2_ADDR_LENGTH; - urtwn_bb_write(sc, R92C_HSSI_PARAM2(i), reg); - urtwn_ms_delay(sc); - reg = urtwn_bb_read(sc, R92C_HSSI_PARAM2(i)); - reg &= ~R92C_HSSI_PARAM2_DATA_LENGTH; - urtwn_bb_write(sc, R92C_HSSI_PARAM2(i), reg); - urtwn_ms_delay(sc); - - /* Write RF initialization values for this chain. */ - for (j = 0; j < prog[i].count; j++) { - if (prog[i].regs[j] >= 0xf9 && - prog[i].regs[j] <= 0xfe) { - /* - * These are fake RF registers offsets that - * indicate a delay is required. - */ - usb_pause_mtx(&sc->sc_mtx, hz / 20); /* 50ms */ - continue; - } - urtwn_rf_write(sc, i, prog[i].regs[j], - prog[i].vals[j]); - urtwn_ms_delay(sc); - } - - /* Restore RF_ENV control type. */ - reg = urtwn_bb_read(sc, R92C_FPGA0_RFIFACESW(idx)); - reg &= ~(0x10 << off) | (type << off); - urtwn_bb_write(sc, R92C_FPGA0_RFIFACESW(idx), reg); - - /* Cache RF register CHNLBW. */ - sc->rf_chnlbw[i] = urtwn_rf_read(sc, i, R92C_RF_CHNLBW); - } - - if ((sc->chip & (URTWN_CHIP_UMC_A_CUT | URTWN_CHIP_92C)) == - URTWN_CHIP_UMC_A_CUT) { - urtwn_rf_write(sc, 0, R92C_RF_RX_G1, 0x30255); - urtwn_rf_write(sc, 0, R92C_RF_RX_G2, 0x50a00); - } -} - -static void -urtwn_cam_init(struct urtwn_softc *sc) -{ - /* Invalidate all CAM entries. */ - urtwn_write_4(sc, R92C_CAMCMD, - R92C_CAMCMD_POLLING | R92C_CAMCMD_CLR); -} - -static int -urtwn_cam_write(struct urtwn_softc *sc, uint32_t addr, uint32_t data) -{ - usb_error_t error; - - error = urtwn_write_4(sc, R92C_CAMWRITE, data); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - error = urtwn_write_4(sc, R92C_CAMCMD, - R92C_CAMCMD_POLLING | R92C_CAMCMD_WRITE | - SM(R92C_CAMCMD_ADDR, addr)); - if (error != USB_ERR_NORMAL_COMPLETION) - return (EIO); - - return (0); -} - -static void -urtwn_pa_bias_init(struct urtwn_softc *sc) -{ - uint8_t reg; - int i; - - for (i = 0; i < sc->nrxchains; i++) { - if (sc->pa_setting & (1 << i)) - continue; - urtwn_rf_write(sc, i, R92C_RF_IPA, 0x0f406); - urtwn_rf_write(sc, i, R92C_RF_IPA, 0x4f406); - urtwn_rf_write(sc, i, R92C_RF_IPA, 0x8f406); - urtwn_rf_write(sc, i, R92C_RF_IPA, 0xcf406); - } - if (!(sc->pa_setting & 0x10)) { - reg = urtwn_read_1(sc, 0x16); - reg = (reg & ~0xf0) | 0x90; - urtwn_write_1(sc, 0x16, reg); - } -} - -static void -urtwn_rxfilter_init(struct urtwn_softc *sc) -{ - struct ieee80211com *ic = &sc->sc_ic; - struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); - uint32_t rcr; - uint16_t filter; - - URTWN_ASSERT_LOCKED(sc); - - /* Setup multicast filter. */ - urtwn_set_multi(sc); - - /* Filter for management frames. */ - filter = 0x7f3f; - switch (vap->iv_opmode) { - case IEEE80211_M_STA: - filter &= ~( - R92C_RXFLTMAP_SUBTYPE(IEEE80211_FC0_SUBTYPE_ASSOC_REQ) | - R92C_RXFLTMAP_SUBTYPE(IEEE80211_FC0_SUBTYPE_REASSOC_REQ) | - R92C_RXFLTMAP_SUBTYPE(IEEE80211_FC0_SUBTYPE_PROBE_REQ)); - break; - case IEEE80211_M_HOSTAP: - filter &= ~( - R92C_RXFLTMAP_SUBTYPE(IEEE80211_FC0_SUBTYPE_ASSOC_RESP) | - R92C_RXFLTMAP_SUBTYPE(IEEE80211_FC0_SUBTYPE_REASSOC_RESP)); - break; - case IEEE80211_M_MONITOR: - case IEEE80211_M_IBSS: - break; - default: - device_printf(sc->sc_dev, "%s: undefined opmode %d\n", - __func__, vap->iv_opmode); - break; - } - urtwn_write_2(sc, R92C_RXFLTMAP0, filter); - - /* Reject all control frames. */ - urtwn_write_2(sc, R92C_RXFLTMAP1, 0x0000); - - /* Reject all data frames. */ - urtwn_write_2(sc, R92C_RXFLTMAP2, 0x0000); - - rcr = R92C_RCR_AM | R92C_RCR_AB | R92C_RCR_APM | - R92C_RCR_HTC_LOC_CTRL | R92C_RCR_APP_PHYSTS | - R92C_RCR_APP_ICV | R92C_RCR_APP_MIC; - - if (vap->iv_opmode == IEEE80211_M_MONITOR) { - /* Accept all frames. */ - rcr |= R92C_RCR_ACF | R92C_RCR_ADF | R92C_RCR_AMF | - R92C_RCR_AAP; - } - - /* Set Rx filter. */ - urtwn_write_4(sc, R92C_RCR, rcr); - - if (ic->ic_promisc != 0) { - /* Update Rx filter. */ - urtwn_set_promisc(sc); - } -} - -static void -urtwn_edca_init(struct urtwn_softc *sc) -{ - urtwn_write_2(sc, R92C_SPEC_SIFS, 0x100a); - urtwn_write_2(sc, R92C_MAC_SPEC_SIFS, 0x100a); - urtwn_write_2(sc, R92C_SIFS_CCK, 0x100a); - urtwn_write_2(sc, R92C_SIFS_OFDM, 0x100a); - urtwn_write_4(sc, R92C_EDCA_BE_PARAM, 0x005ea42b); - urtwn_write_4(sc, R92C_EDCA_BK_PARAM, 0x0000a44f); - urtwn_write_4(sc, R92C_EDCA_VI_PARAM, 0x005ea324); - urtwn_write_4(sc, R92C_EDCA_VO_PARAM, 0x002fa226); -} - -static void -urtwn_write_txpower(struct urtwn_softc *sc, int chain, - uint16_t power[URTWN_RIDX_COUNT]) -{ - uint32_t reg; - - /* Write per-CCK rate Tx power. */ - if (chain == 0) { - reg = urtwn_bb_read(sc, R92C_TXAGC_A_CCK1_MCS32); - reg = RW(reg, R92C_TXAGC_A_CCK1, power[0]); - urtwn_bb_write(sc, R92C_TXAGC_A_CCK1_MCS32, reg); - reg = urtwn_bb_read(sc, R92C_TXAGC_B_CCK11_A_CCK2_11); - reg = RW(reg, R92C_TXAGC_A_CCK2, power[1]); - reg = RW(reg, R92C_TXAGC_A_CCK55, power[2]); - reg = RW(reg, R92C_TXAGC_A_CCK11, power[3]); - urtwn_bb_write(sc, R92C_TXAGC_B_CCK11_A_CCK2_11, reg); - } else { - reg = urtwn_bb_read(sc, R92C_TXAGC_B_CCK1_55_MCS32); - reg = RW(reg, R92C_TXAGC_B_CCK1, power[0]); - reg = RW(reg, R92C_TXAGC_B_CCK2, power[1]); - reg = RW(reg, R92C_TXAGC_B_CCK55, power[2]); - urtwn_bb_write(sc, R92C_TXAGC_B_CCK1_55_MCS32, reg); - reg = urtwn_bb_read(sc, R92C_TXAGC_B_CCK11_A_CCK2_11); - reg = RW(reg, R92C_TXAGC_B_CCK11, power[3]); - urtwn_bb_write(sc, R92C_TXAGC_B_CCK11_A_CCK2_11, reg); - } - /* Write per-OFDM rate Tx power. */ - urtwn_bb_write(sc, R92C_TXAGC_RATE18_06(chain), - SM(R92C_TXAGC_RATE06, power[ 4]) | - SM(R92C_TXAGC_RATE09, power[ 5]) | - SM(R92C_TXAGC_RATE12, power[ 6]) | - SM(R92C_TXAGC_RATE18, power[ 7])); - urtwn_bb_write(sc, R92C_TXAGC_RATE54_24(chain), - SM(R92C_TXAGC_RATE24, power[ 8]) | - SM(R92C_TXAGC_RATE36, power[ 9]) | - SM(R92C_TXAGC_RATE48, power[10]) | - SM(R92C_TXAGC_RATE54, power[11])); - /* Write per-MCS Tx power. */ - urtwn_bb_write(sc, R92C_TXAGC_MCS03_MCS00(chain), - SM(R92C_TXAGC_MCS00, power[12]) | - SM(R92C_TXAGC_MCS01, power[13]) | - SM(R92C_TXAGC_MCS02, power[14]) | - SM(R92C_TXAGC_MCS03, power[15])); - urtwn_bb_write(sc, R92C_TXAGC_MCS07_MCS04(chain), - SM(R92C_TXAGC_MCS04, power[16]) | - SM(R92C_TXAGC_MCS05, power[17]) | - SM(R92C_TXAGC_MCS06, power[18]) | - SM(R92C_TXAGC_MCS07, power[19])); - urtwn_bb_write(sc, R92C_TXAGC_MCS11_MCS08(chain), - SM(R92C_TXAGC_MCS08, power[20]) | - SM(R92C_TXAGC_MCS09, power[21]) | - SM(R92C_TXAGC_MCS10, power[22]) | - SM(R92C_TXAGC_MCS11, power[23])); - urtwn_bb_write(sc, R92C_TXAGC_MCS15_MCS12(chain), - SM(R92C_TXAGC_MCS12, power[24]) | - SM(R92C_TXAGC_MCS13, power[25]) | - SM(R92C_TXAGC_MCS14, power[26]) | - SM(R92C_TXAGC_MCS15, power[27])); -} - -static void -urtwn_get_txpower(struct urtwn_softc *sc, int chain, - struct ieee80211_channel *c, struct ieee80211_channel *extc, - uint16_t power[URTWN_RIDX_COUNT]) -{ - struct ieee80211com *ic = &sc->sc_ic; - struct r92c_rom *rom = &sc->rom.r92c_rom; - uint16_t cckpow, ofdmpow, htpow, diff, max; - const struct urtwn_txpwr *base; - int ridx, chan, group; - - /* Determine channel group. */ - chan = ieee80211_chan2ieee(ic, c); /* XXX center freq! */ - if (chan <= 3) - group = 0; - else if (chan <= 9) - group = 1; - else - group = 2; - - /* Get original Tx power based on board type and RF chain. */ - if (!(sc->chip & URTWN_CHIP_92C)) { - if (sc->board_type == R92C_BOARD_TYPE_HIGHPA) - base = &rtl8188ru_txagc[chain]; - else - base = &rtl8192cu_txagc[chain]; - } else - base = &rtl8192cu_txagc[chain]; - - memset(power, 0, URTWN_RIDX_COUNT * sizeof(power[0])); - if (sc->regulatory == 0) { - for (ridx = URTWN_RIDX_CCK1; ridx <= URTWN_RIDX_CCK11; ridx++) - power[ridx] = base->pwr[0][ridx]; - } - for (ridx = URTWN_RIDX_OFDM6; ridx < URTWN_RIDX_COUNT; ridx++) { - if (sc->regulatory == 3) { - power[ridx] = base->pwr[0][ridx]; - /* Apply vendor limits. */ - if (extc != NULL) - max = rom->ht40_max_pwr[group]; - else - max = rom->ht20_max_pwr[group]; - max = (max >> (chain * 4)) & 0xf; - if (power[ridx] > max) - power[ridx] = max; - } else if (sc->regulatory == 1) { - if (extc == NULL) - power[ridx] = base->pwr[group][ridx]; - } else if (sc->regulatory != 2) - power[ridx] = base->pwr[0][ridx]; - } - - /* Compute per-CCK rate Tx power. */ - cckpow = rom->cck_tx_pwr[chain][group]; - for (ridx = URTWN_RIDX_CCK1; ridx <= URTWN_RIDX_CCK11; ridx++) { - power[ridx] += cckpow; - if (power[ridx] > R92C_MAX_TX_PWR) - power[ridx] = R92C_MAX_TX_PWR; - } - - htpow = rom->ht40_1s_tx_pwr[chain][group]; - if (sc->ntxchains > 1) { - /* Apply reduction for 2 spatial streams. */ - diff = rom->ht40_2s_tx_pwr_diff[group]; - diff = (diff >> (chain * 4)) & 0xf; - htpow = (htpow > diff) ? htpow - diff : 0; - } - - /* Compute per-OFDM rate Tx power. */ - diff = rom->ofdm_tx_pwr_diff[group]; - diff = (diff >> (chain * 4)) & 0xf; - ofdmpow = htpow + diff; /* HT->OFDM correction. */ - for (ridx = URTWN_RIDX_OFDM6; ridx <= URTWN_RIDX_OFDM54; ridx++) { - power[ridx] += ofdmpow; - if (power[ridx] > R92C_MAX_TX_PWR) - power[ridx] = R92C_MAX_TX_PWR; - } - - /* Compute per-MCS Tx power. */ - if (extc == NULL) { - diff = rom->ht20_tx_pwr_diff[group]; - diff = (diff >> (chain * 4)) & 0xf; - htpow += diff; /* HT40->HT20 correction. */ - } - for (ridx = 12; ridx <= 27; ridx++) { - power[ridx] += htpow; - if (power[ridx] > R92C_MAX_TX_PWR) - power[ridx] = R92C_MAX_TX_PWR; - } -#ifdef USB_DEBUG - if (sc->sc_debug & URTWN_DEBUG_TXPWR) { - /* Dump per-rate Tx power values. */ - printf("Tx power for chain %d:\n", chain); - for (ridx = URTWN_RIDX_CCK1; ridx < URTWN_RIDX_COUNT; ridx++) - printf("Rate %d = %u\n", ridx, power[ridx]); - } -#endif -} - -static void -urtwn_r88e_get_txpower(struct urtwn_softc *sc, int chain, - struct ieee80211_channel *c, struct ieee80211_channel *extc, - uint16_t power[URTWN_RIDX_COUNT]) -{ - struct ieee80211com *ic = &sc->sc_ic; - struct r88e_rom *rom = &sc->rom.r88e_rom; - uint16_t cckpow, ofdmpow, bw20pow, htpow; - const struct urtwn_r88e_txpwr *base; - int ridx, chan, group; - - /* Determine channel group. */ - chan = ieee80211_chan2ieee(ic, c); /* XXX center freq! */ - if (chan <= 2) - group = 0; - else if (chan <= 5) - group = 1; - else if (chan <= 8) - group = 2; - else if (chan <= 11) - group = 3; - else if (chan <= 13) - group = 4; - else - group = 5; - - /* Get original Tx power based on board type and RF chain. */ - base = &rtl8188eu_txagc[chain]; - - memset(power, 0, URTWN_RIDX_COUNT * sizeof(power[0])); - if (sc->regulatory == 0) { - for (ridx = URTWN_RIDX_CCK1; ridx <= URTWN_RIDX_CCK11; ridx++) - power[ridx] = base->pwr[0][ridx]; - } - for (ridx = URTWN_RIDX_OFDM6; ridx < URTWN_RIDX_COUNT; ridx++) { - if (sc->regulatory == 3) - power[ridx] = base->pwr[0][ridx]; - else if (sc->regulatory == 1) { - if (extc == NULL) - power[ridx] = base->pwr[group][ridx]; - } else if (sc->regulatory != 2) - power[ridx] = base->pwr[0][ridx]; - } - - /* Compute per-CCK rate Tx power. */ - cckpow = rom->cck_tx_pwr[group]; - for (ridx = URTWN_RIDX_CCK1; ridx <= URTWN_RIDX_CCK11; ridx++) { - power[ridx] += cckpow; - if (power[ridx] > R92C_MAX_TX_PWR) - power[ridx] = R92C_MAX_TX_PWR; - } - - htpow = rom->ht40_tx_pwr[group]; - - /* Compute per-OFDM rate Tx power. */ - ofdmpow = htpow + sc->ofdm_tx_pwr_diff; - for (ridx = URTWN_RIDX_OFDM6; ridx <= URTWN_RIDX_OFDM54; ridx++) { - power[ridx] += ofdmpow; - if (power[ridx] > R92C_MAX_TX_PWR) - power[ridx] = R92C_MAX_TX_PWR; - } - - bw20pow = htpow + sc->bw20_tx_pwr_diff; - for (ridx = 12; ridx <= 27; ridx++) { - power[ridx] += bw20pow; - if (power[ridx] > R92C_MAX_TX_PWR) - power[ridx] = R92C_MAX_TX_PWR; - } -} - -static void -urtwn_set_txpower(struct urtwn_softc *sc, struct ieee80211_channel *c, - struct ieee80211_channel *extc) -{ - uint16_t power[URTWN_RIDX_COUNT]; - int i; - - for (i = 0; i < sc->ntxchains; i++) { - /* Compute per-rate Tx power values. */ - if (sc->chip & URTWN_CHIP_88E) - urtwn_r88e_get_txpower(sc, i, c, extc, power); - else - urtwn_get_txpower(sc, i, c, extc, power); - /* Write per-rate Tx power values to hardware. */ - urtwn_write_txpower(sc, i, power); - } -} - -static void -urtwn_set_rx_bssid_all(struct urtwn_softc *sc, int enable) -{ - uint32_t reg; - - reg = urtwn_read_4(sc, R92C_RCR); - if (enable) - reg &= ~R92C_RCR_CBSSID_BCN; - else - reg |= R92C_RCR_CBSSID_BCN; - urtwn_write_4(sc, R92C_RCR, reg); -} - -static void -urtwn_set_gain(struct urtwn_softc *sc, uint8_t gain) -{ - uint32_t reg; - - reg = urtwn_bb_read(sc, R92C_OFDM0_AGCCORE1(0)); - reg = RW(reg, R92C_OFDM0_AGCCORE1_GAIN, gain); - urtwn_bb_write(sc, R92C_OFDM0_AGCCORE1(0), reg); - - if (!(sc->chip & URTWN_CHIP_88E)) { - reg = urtwn_bb_read(sc, R92C_OFDM0_AGCCORE1(1)); - reg = RW(reg, R92C_OFDM0_AGCCORE1_GAIN, gain); - urtwn_bb_write(sc, R92C_OFDM0_AGCCORE1(1), reg); - } -} - -static void -urtwn_scan_start(struct ieee80211com *ic) -{ - struct urtwn_softc *sc = ic->ic_softc; - - URTWN_LOCK(sc); - /* Receive beacons / probe responses from any BSSID. */ - if (ic->ic_opmode != IEEE80211_M_IBSS && - ic->ic_opmode != IEEE80211_M_HOSTAP) - urtwn_set_rx_bssid_all(sc, 1); - - /* Set gain for scanning. */ - urtwn_set_gain(sc, 0x20); - URTWN_UNLOCK(sc); -} - -static void -urtwn_scan_end(struct ieee80211com *ic) -{ - struct urtwn_softc *sc = ic->ic_softc; - - URTWN_LOCK(sc); - /* Restore limitations. */ - if (ic->ic_promisc == 0 && - ic->ic_opmode != IEEE80211_M_IBSS && - ic->ic_opmode != IEEE80211_M_HOSTAP) - urtwn_set_rx_bssid_all(sc, 0); - - /* Set gain under link. */ - urtwn_set_gain(sc, 0x32); - URTWN_UNLOCK(sc); -} - -static void -urtwn_getradiocaps(struct ieee80211com *ic, - int maxchans, int *nchans, struct ieee80211_channel chans[]) -{ - uint8_t bands[IEEE80211_MODE_BYTES]; - - memset(bands, 0, sizeof(bands)); - setbit(bands, IEEE80211_MODE_11B); - setbit(bands, IEEE80211_MODE_11G); - if (urtwn_enable_11n) - setbit(bands, IEEE80211_MODE_11NG); - ieee80211_add_channel_list_2ghz(chans, maxchans, nchans, - urtwn_chan_2ghz, nitems(urtwn_chan_2ghz), bands, 0); -} - -static void -urtwn_set_channel(struct ieee80211com *ic) -{ - struct urtwn_softc *sc = ic->ic_softc; - struct ieee80211_channel *c = ic->ic_curchan; - struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); - - URTWN_LOCK(sc); - if (vap->iv_state == IEEE80211_S_SCAN) { - /* Make link LED blink during scan. */ - urtwn_set_led(sc, URTWN_LED_LINK, !sc->ledlink); - } - urtwn_set_chan(sc, c, NULL); - sc->sc_rxtap.wr_chan_freq = htole16(c->ic_freq); - sc->sc_rxtap.wr_chan_flags = htole16(c->ic_flags); - sc->sc_txtap.wt_chan_freq = htole16(c->ic_freq); - sc->sc_txtap.wt_chan_flags = htole16(c->ic_flags); - URTWN_UNLOCK(sc); -} - -static int -urtwn_wme_update(struct ieee80211com *ic) -{ - const struct wmeParams *wmep = - ic->ic_wme.wme_chanParams.cap_wmeParams; - struct urtwn_softc *sc = ic->ic_softc; - uint8_t aifs, acm, slottime; - int ac; - - acm = 0; - slottime = IEEE80211_GET_SLOTTIME(ic); - - URTWN_LOCK(sc); - for (ac = WME_AC_BE; ac < WME_NUM_AC; ac++) { - /* AIFS[AC] = AIFSN[AC] * aSlotTime + aSIFSTime. */ - aifs = wmep[ac].wmep_aifsn * slottime + IEEE80211_DUR_SIFS; - urtwn_write_4(sc, wme2queue[ac].reg, - SM(R92C_EDCA_PARAM_TXOP, wmep[ac].wmep_txopLimit) | - SM(R92C_EDCA_PARAM_ECWMIN, wmep[ac].wmep_logcwmin) | - SM(R92C_EDCA_PARAM_ECWMAX, wmep[ac].wmep_logcwmax) | - SM(R92C_EDCA_PARAM_AIFS, aifs)); - if (ac != WME_AC_BE) - acm |= wmep[ac].wmep_acm << ac; - } - - if (acm != 0) - acm |= R92C_ACMHWCTRL_EN; - urtwn_write_1(sc, R92C_ACMHWCTRL, - (urtwn_read_1(sc, R92C_ACMHWCTRL) & ~R92C_ACMHWCTRL_ACM_MASK) | - acm); - - URTWN_UNLOCK(sc); - - return 0; -} - -static void -urtwn_update_slot(struct ieee80211com *ic) -{ - urtwn_cmd_sleepable(ic->ic_softc, NULL, 0, urtwn_update_slot_cb); -} - -static void -urtwn_update_slot_cb(struct urtwn_softc *sc, union sec_param *data) -{ - struct ieee80211com *ic = &sc->sc_ic; - uint8_t slottime; - - slottime = IEEE80211_GET_SLOTTIME(ic); - - URTWN_DPRINTF(sc, URTWN_DEBUG_ANY, "%s: setting slot time to %uus\n", - __func__, slottime); - - urtwn_write_1(sc, R92C_SLOT, slottime); - urtwn_update_aifs(sc, slottime); -} - -static void -urtwn_update_aifs(struct urtwn_softc *sc, uint8_t slottime) -{ - const struct wmeParams *wmep = - sc->sc_ic.ic_wme.wme_chanParams.cap_wmeParams; - uint8_t aifs, ac; - - for (ac = WME_AC_BE; ac < WME_NUM_AC; ac++) { - /* AIFS[AC] = AIFSN[AC] * aSlotTime + aSIFSTime. */ - aifs = wmep[ac].wmep_aifsn * slottime + IEEE80211_DUR_SIFS; - urtwn_write_1(sc, wme2queue[ac].reg, aifs); - } -} - -static uint8_t -urtwn_get_multi_pos(const uint8_t maddr[]) -{ - uint64_t mask = 0x00004d101df481b4; - uint8_t pos = 0x27; /* initial value */ - int i, j; - - for (i = 0; i < IEEE80211_ADDR_LEN; i++) - for (j = (i == 0) ? 1 : 0; j < 8; j++) - if ((maddr[i] >> j) & 1) - pos ^= (mask >> (i * 8 + j - 1)); - - pos &= 0x3f; - - return (pos); -} - -static void -urtwn_set_multi(struct urtwn_softc *sc) -{ - struct ieee80211com *ic = &sc->sc_ic; - uint32_t mfilt[2]; - - URTWN_ASSERT_LOCKED(sc); - - /* general structure was copied from ath(4). */ - if (ic->ic_allmulti == 0) { - struct ieee80211vap *vap; - struct ifnet *ifp; - struct ifmultiaddr *ifma; - - /* - * Merge multicast addresses to form the hardware filter. - */ - mfilt[0] = mfilt[1] = 0; - TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) { - ifp = vap->iv_ifp; - if_maddr_rlock(ifp); - TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { - caddr_t dl; - uint8_t pos; - - dl = LLADDR((struct sockaddr_dl *) - ifma->ifma_addr); - pos = urtwn_get_multi_pos(dl); - - mfilt[pos / 32] |= (1 << (pos % 32)); - } - if_maddr_runlock(ifp); - } - } else - mfilt[0] = mfilt[1] = ~0; - - - urtwn_write_4(sc, R92C_MAR + 0, mfilt[0]); - urtwn_write_4(sc, R92C_MAR + 4, mfilt[1]); - - URTWN_DPRINTF(sc, URTWN_DEBUG_STATE, "%s: MC filter %08x:%08x\n", - __func__, mfilt[0], mfilt[1]); -} - -static void -urtwn_set_promisc(struct urtwn_softc *sc) -{ - struct ieee80211com *ic = &sc->sc_ic; - struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); - uint32_t rcr, mask1, mask2; - - URTWN_ASSERT_LOCKED(sc); - - if (vap->iv_opmode == IEEE80211_M_MONITOR) - return; - - mask1 = R92C_RCR_ACF | R92C_RCR_ADF | R92C_RCR_AMF | R92C_RCR_AAP; - mask2 = R92C_RCR_APM; - - if (vap->iv_state == IEEE80211_S_RUN) { - switch (vap->iv_opmode) { - case IEEE80211_M_STA: - mask2 |= R92C_RCR_CBSSID_BCN; - /* FALLTHROUGH */ - case IEEE80211_M_IBSS: - mask2 |= R92C_RCR_CBSSID_DATA; - break; - case IEEE80211_M_HOSTAP: - break; - default: - device_printf(sc->sc_dev, "%s: undefined opmode %d\n", - __func__, vap->iv_opmode); - return; - } - } - - rcr = urtwn_read_4(sc, R92C_RCR); - if (ic->ic_promisc == 0) - rcr = (rcr & ~mask1) | mask2; - else - rcr = (rcr & ~mask2) | mask1; - urtwn_write_4(sc, R92C_RCR, rcr); -} - -static void -urtwn_update_promisc(struct ieee80211com *ic) -{ - struct urtwn_softc *sc = ic->ic_softc; - - URTWN_LOCK(sc); - if (sc->sc_flags & URTWN_RUNNING) - urtwn_set_promisc(sc); - URTWN_UNLOCK(sc); -} - -static void -urtwn_update_mcast(struct ieee80211com *ic) -{ - struct urtwn_softc *sc = ic->ic_softc; - - URTWN_LOCK(sc); - if (sc->sc_flags & URTWN_RUNNING) - urtwn_set_multi(sc); - URTWN_UNLOCK(sc); -} - -static struct ieee80211_node * -urtwn_node_alloc(struct ieee80211vap *vap, - const uint8_t mac[IEEE80211_ADDR_LEN]) -{ - struct urtwn_node *un; - - un = malloc(sizeof (struct urtwn_node), M_80211_NODE, - M_NOWAIT | M_ZERO); - - if (un == NULL) - return NULL; - - un->id = URTWN_MACID_UNDEFINED; - - return &un->ni; -} - -static void -urtwn_newassoc(struct ieee80211_node *ni, int isnew) -{ - struct urtwn_softc *sc = ni->ni_ic->ic_softc; - struct urtwn_node *un = URTWN_NODE(ni); - uint8_t id; - - /* Only do this bit for R88E chips */ - if (! (sc->chip & URTWN_CHIP_88E)) - return; - - if (!isnew) - return; - - URTWN_NT_LOCK(sc); - for (id = 0; id <= URTWN_MACID_MAX(sc); id++) { - if (id != URTWN_MACID_BC && sc->node_list[id] == NULL) { - un->id = id; - sc->node_list[id] = ni; - break; - } - } - URTWN_NT_UNLOCK(sc); - - if (id > URTWN_MACID_MAX(sc)) { - device_printf(sc->sc_dev, "%s: node table is full\n", - __func__); - } -} - -static void -urtwn_node_free(struct ieee80211_node *ni) -{ - struct urtwn_softc *sc = ni->ni_ic->ic_softc; - struct urtwn_node *un = URTWN_NODE(ni); - - URTWN_NT_LOCK(sc); - if (un->id != URTWN_MACID_UNDEFINED) - sc->node_list[un->id] = NULL; - URTWN_NT_UNLOCK(sc); - - sc->sc_node_free(ni); -} - -static void -urtwn_set_chan(struct urtwn_softc *sc, struct ieee80211_channel *c, - struct ieee80211_channel *extc) -{ - struct ieee80211com *ic = &sc->sc_ic; - uint32_t reg; - u_int chan; - int i; - - chan = ieee80211_chan2ieee(ic, c); /* XXX center freq! */ - if (chan == 0 || chan == IEEE80211_CHAN_ANY) { - device_printf(sc->sc_dev, - "%s: invalid channel %x\n", __func__, chan); - return; - } - - /* Set Tx power for this new channel. */ - urtwn_set_txpower(sc, c, extc); - - for (i = 0; i < sc->nrxchains; i++) { - urtwn_rf_write(sc, i, R92C_RF_CHNLBW, - RW(sc->rf_chnlbw[i], R92C_RF_CHNLBW_CHNL, chan)); - } -#ifndef IEEE80211_NO_HT - if (extc != NULL) { - /* Is secondary channel below or above primary? */ - int prichlo = c->ic_freq < extc->ic_freq; - - urtwn_write_1(sc, R92C_BWOPMODE, - urtwn_read_1(sc, R92C_BWOPMODE) & ~R92C_BWOPMODE_20MHZ); - - reg = urtwn_read_1(sc, R92C_RRSR + 2); - reg = (reg & ~0x6f) | (prichlo ? 1 : 2) << 5; - urtwn_write_1(sc, R92C_RRSR + 2, reg); - - urtwn_bb_write(sc, R92C_FPGA0_RFMOD, - urtwn_bb_read(sc, R92C_FPGA0_RFMOD) | R92C_RFMOD_40MHZ); - urtwn_bb_write(sc, R92C_FPGA1_RFMOD, - urtwn_bb_read(sc, R92C_FPGA1_RFMOD) | R92C_RFMOD_40MHZ); - - /* Set CCK side band. */ - reg = urtwn_bb_read(sc, R92C_CCK0_SYSTEM); - reg = (reg & ~0x00000010) | (prichlo ? 0 : 1) << 4; - urtwn_bb_write(sc, R92C_CCK0_SYSTEM, reg); - - reg = urtwn_bb_read(sc, R92C_OFDM1_LSTF); - reg = (reg & ~0x00000c00) | (prichlo ? 1 : 2) << 10; - urtwn_bb_write(sc, R92C_OFDM1_LSTF, reg); - - urtwn_bb_write(sc, R92C_FPGA0_ANAPARAM2, - urtwn_bb_read(sc, R92C_FPGA0_ANAPARAM2) & - ~R92C_FPGA0_ANAPARAM2_CBW20); - - reg = urtwn_bb_read(sc, 0x818); - reg = (reg & ~0x0c000000) | (prichlo ? 2 : 1) << 26; - urtwn_bb_write(sc, 0x818, reg); - - /* Select 40MHz bandwidth. */ - urtwn_rf_write(sc, 0, R92C_RF_CHNLBW, - (sc->rf_chnlbw[0] & ~0xfff) | chan); - } else -#endif - { - urtwn_write_1(sc, R92C_BWOPMODE, - urtwn_read_1(sc, R92C_BWOPMODE) | R92C_BWOPMODE_20MHZ); - - urtwn_bb_write(sc, R92C_FPGA0_RFMOD, - urtwn_bb_read(sc, R92C_FPGA0_RFMOD) & ~R92C_RFMOD_40MHZ); - urtwn_bb_write(sc, R92C_FPGA1_RFMOD, - urtwn_bb_read(sc, R92C_FPGA1_RFMOD) & ~R92C_RFMOD_40MHZ); - - if (!(sc->chip & URTWN_CHIP_88E)) { - urtwn_bb_write(sc, R92C_FPGA0_ANAPARAM2, - urtwn_bb_read(sc, R92C_FPGA0_ANAPARAM2) | - R92C_FPGA0_ANAPARAM2_CBW20); - } - - /* Select 20MHz bandwidth. */ - urtwn_rf_write(sc, 0, R92C_RF_CHNLBW, - (sc->rf_chnlbw[0] & ~0xfff) | chan | - ((sc->chip & URTWN_CHIP_88E) ? R88E_RF_CHNLBW_BW20 : - R92C_RF_CHNLBW_BW20)); - } -} - -static void -urtwn_iq_calib(struct urtwn_softc *sc) -{ - /* TODO */ -} - -static void -urtwn_lc_calib(struct urtwn_softc *sc) -{ - uint32_t rf_ac[2]; - uint8_t txmode; - int i; - - txmode = urtwn_read_1(sc, R92C_OFDM1_LSTF + 3); - if ((txmode & 0x70) != 0) { - /* Disable all continuous Tx. */ - urtwn_write_1(sc, R92C_OFDM1_LSTF + 3, txmode & ~0x70); - - /* Set RF mode to standby mode. */ - for (i = 0; i < sc->nrxchains; i++) { - rf_ac[i] = urtwn_rf_read(sc, i, R92C_RF_AC); - urtwn_rf_write(sc, i, R92C_RF_AC, - RW(rf_ac[i], R92C_RF_AC_MODE, - R92C_RF_AC_MODE_STANDBY)); - } - } else { - /* Block all Tx queues. */ - urtwn_write_1(sc, R92C_TXPAUSE, R92C_TX_QUEUE_ALL); - } - /* Start calibration. */ - urtwn_rf_write(sc, 0, R92C_RF_CHNLBW, - urtwn_rf_read(sc, 0, R92C_RF_CHNLBW) | R92C_RF_CHNLBW_LCSTART); - - /* Give calibration the time to complete. */ - usb_pause_mtx(&sc->sc_mtx, hz / 10); /* 100ms */ - - /* Restore configuration. */ - if ((txmode & 0x70) != 0) { - /* Restore Tx mode. */ - urtwn_write_1(sc, R92C_OFDM1_LSTF + 3, txmode); - /* Restore RF mode. */ - for (i = 0; i < sc->nrxchains; i++) - urtwn_rf_write(sc, i, R92C_RF_AC, rf_ac[i]); - } else { - /* Unblock all Tx queues. */ - urtwn_write_1(sc, R92C_TXPAUSE, 0x00); - } -} - -static void -urtwn_temp_calib(struct urtwn_softc *sc) -{ - uint8_t temp; - - URTWN_ASSERT_LOCKED(sc); - - if (!(sc->sc_flags & URTWN_TEMP_MEASURED)) { - /* Start measuring temperature. */ - URTWN_DPRINTF(sc, URTWN_DEBUG_TEMP, - "%s: start measuring temperature\n", __func__); - if (sc->chip & URTWN_CHIP_88E) { - urtwn_rf_write(sc, 0, R88E_RF_T_METER, - R88E_RF_T_METER_START); - } else { - urtwn_rf_write(sc, 0, R92C_RF_T_METER, - R92C_RF_T_METER_START); - } - sc->sc_flags |= URTWN_TEMP_MEASURED; - return; - } - sc->sc_flags &= ~URTWN_TEMP_MEASURED; - - /* Read measured temperature. */ - if (sc->chip & URTWN_CHIP_88E) { - temp = MS(urtwn_rf_read(sc, 0, R88E_RF_T_METER), - R88E_RF_T_METER_VAL); - } else { - temp = MS(urtwn_rf_read(sc, 0, R92C_RF_T_METER), - R92C_RF_T_METER_VAL); - } - if (temp == 0) { /* Read failed, skip. */ - URTWN_DPRINTF(sc, URTWN_DEBUG_TEMP, - "%s: temperature read failed, skipping\n", __func__); - return; - } - - URTWN_DPRINTF(sc, URTWN_DEBUG_TEMP, - "%s: temperature: previous %u, current %u\n", - __func__, sc->thcal_lctemp, temp); - - /* - * Redo LC calibration if temperature changed significantly since - * last calibration. - */ - if (sc->thcal_lctemp == 0) { - /* First LC calibration is performed in urtwn_init(). */ - sc->thcal_lctemp = temp; - } else if (abs(temp - sc->thcal_lctemp) > 1) { - URTWN_DPRINTF(sc, URTWN_DEBUG_TEMP, - "%s: LC calib triggered by temp: %u -> %u\n", - __func__, sc->thcal_lctemp, temp); - urtwn_lc_calib(sc); - /* Record temperature of last LC calibration. */ - sc->thcal_lctemp = temp; - } -} - -static void -urtwn_setup_static_keys(struct urtwn_softc *sc, struct urtwn_vap *uvp) -{ - int i; - - for (i = 0; i < IEEE80211_WEP_NKID; i++) { - const struct ieee80211_key *k = uvp->keys[i]; - if (k != NULL) { - urtwn_cmd_sleepable(sc, k, sizeof(*k), - urtwn_key_set_cb); - } - } -} - -static int -urtwn_init(struct urtwn_softc *sc) -{ - struct ieee80211com *ic = &sc->sc_ic; - struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); - uint8_t macaddr[IEEE80211_ADDR_LEN]; - uint32_t reg; - usb_error_t usb_err = USB_ERR_NORMAL_COMPLETION; - int error; - - URTWN_LOCK(sc); - if (sc->sc_flags & URTWN_RUNNING) { - URTWN_UNLOCK(sc); - return (0); - } - - /* Init firmware commands ring. */ - sc->fwcur = 0; - - /* Allocate Tx/Rx buffers. */ - error = urtwn_alloc_rx_list(sc); - if (error != 0) - goto fail; - - error = urtwn_alloc_tx_list(sc); - if (error != 0) - goto fail; - - /* Power on adapter. */ - error = urtwn_power_on(sc); - if (error != 0) - goto fail; - - /* Initialize DMA. */ - error = urtwn_dma_init(sc); - if (error != 0) - goto fail; - - /* Set info size in Rx descriptors (in 64-bit words). */ - urtwn_write_1(sc, R92C_RX_DRVINFO_SZ, 4); - - /* Init interrupts. */ - if (sc->chip & URTWN_CHIP_88E) { - usb_err = urtwn_write_4(sc, R88E_HISR, 0xffffffff); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - goto fail; - usb_err = urtwn_write_4(sc, R88E_HIMR, R88E_HIMR_CPWM | R88E_HIMR_CPWM2 | - R88E_HIMR_TBDER | R88E_HIMR_PSTIMEOUT); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - goto fail; - usb_err = urtwn_write_4(sc, R88E_HIMRE, R88E_HIMRE_RXFOVW | - R88E_HIMRE_TXFOVW | R88E_HIMRE_RXERR | R88E_HIMRE_TXERR); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - goto fail; - usb_err = urtwn_write_1(sc, R92C_USB_SPECIAL_OPTION, - urtwn_read_1(sc, R92C_USB_SPECIAL_OPTION) | - R92C_USB_SPECIAL_OPTION_INT_BULK_SEL); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - goto fail; - } else { - usb_err = urtwn_write_4(sc, R92C_HISR, 0xffffffff); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - goto fail; - usb_err = urtwn_write_4(sc, R92C_HIMR, 0xffffffff); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - goto fail; - } - - /* Set MAC address. */ - IEEE80211_ADDR_COPY(macaddr, vap ? vap->iv_myaddr : ic->ic_macaddr); - usb_err = urtwn_write_region_1(sc, R92C_MACID, macaddr, IEEE80211_ADDR_LEN); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - goto fail; - - /* Set initial network type. */ - urtwn_set_mode(sc, R92C_MSR_INFRA); - - /* Initialize Rx filter. */ - urtwn_rxfilter_init(sc); - - /* Set response rate. */ - reg = urtwn_read_4(sc, R92C_RRSR); - reg = RW(reg, R92C_RRSR_RATE_BITMAP, R92C_RRSR_RATE_CCK_ONLY_1M); - urtwn_write_4(sc, R92C_RRSR, reg); - - /* Set short/long retry limits. */ - urtwn_write_2(sc, R92C_RL, - SM(R92C_RL_SRL, 0x30) | SM(R92C_RL_LRL, 0x30)); - - /* Initialize EDCA parameters. */ - urtwn_edca_init(sc); - - /* Setup rate fallback. */ - if (!(sc->chip & URTWN_CHIP_88E)) { - urtwn_write_4(sc, R92C_DARFRC + 0, 0x00000000); - urtwn_write_4(sc, R92C_DARFRC + 4, 0x10080404); - urtwn_write_4(sc, R92C_RARFRC + 0, 0x04030201); - urtwn_write_4(sc, R92C_RARFRC + 4, 0x08070605); - } - - urtwn_write_1(sc, R92C_FWHW_TXQ_CTRL, - urtwn_read_1(sc, R92C_FWHW_TXQ_CTRL) | - R92C_FWHW_TXQ_CTRL_AMPDU_RTY_NEW); - /* Set ACK timeout. */ - urtwn_write_1(sc, R92C_ACKTO, 0x40); - - /* Setup USB aggregation. */ - reg = urtwn_read_4(sc, R92C_TDECTRL); - reg = RW(reg, R92C_TDECTRL_BLK_DESC_NUM, 6); - urtwn_write_4(sc, R92C_TDECTRL, reg); - urtwn_write_1(sc, R92C_TRXDMA_CTRL, - urtwn_read_1(sc, R92C_TRXDMA_CTRL) | - R92C_TRXDMA_CTRL_RXDMA_AGG_EN); - urtwn_write_1(sc, R92C_RXDMA_AGG_PG_TH, 48); - if (sc->chip & URTWN_CHIP_88E) - urtwn_write_1(sc, R92C_RXDMA_AGG_PG_TH + 1, 4); - else { - urtwn_write_1(sc, R92C_USB_DMA_AGG_TO, 4); - urtwn_write_1(sc, R92C_USB_SPECIAL_OPTION, - urtwn_read_1(sc, R92C_USB_SPECIAL_OPTION) | - R92C_USB_SPECIAL_OPTION_AGG_EN); - urtwn_write_1(sc, R92C_USB_AGG_TH, 8); - urtwn_write_1(sc, R92C_USB_AGG_TO, 6); - } - - /* Initialize beacon parameters. */ - urtwn_write_2(sc, R92C_BCN_CTRL, 0x1010); - urtwn_write_2(sc, R92C_TBTT_PROHIBIT, 0x6404); - urtwn_write_1(sc, R92C_DRVERLYINT, 0x05); - urtwn_write_1(sc, R92C_BCNDMATIM, 0x02); - urtwn_write_2(sc, R92C_BCNTCFG, 0x660f); - - if (!(sc->chip & URTWN_CHIP_88E)) { - /* Setup AMPDU aggregation. */ - urtwn_write_4(sc, R92C_AGGLEN_LMT, 0x99997631); /* MCS7~0 */ - urtwn_write_1(sc, R92C_AGGR_BREAK_TIME, 0x16); - urtwn_write_2(sc, R92C_MAX_AGGR_NUM, 0x0708); - - urtwn_write_1(sc, R92C_BCN_MAX_ERR, 0xff); - } - -#ifndef URTWN_WITHOUT_UCODE - /* Load 8051 microcode. */ - error = urtwn_load_firmware(sc); - if (error == 0) - sc->sc_flags |= URTWN_FW_LOADED; -#endif - - /* Initialize MAC/BB/RF blocks. */ - error = urtwn_mac_init(sc); - if (error != 0) { - device_printf(sc->sc_dev, - "%s: error while initializing MAC block\n", __func__); - goto fail; - } - urtwn_bb_init(sc); - urtwn_rf_init(sc); - - /* Reinitialize Rx filter (D3845 is not committed yet). */ - urtwn_rxfilter_init(sc); - - if (sc->chip & URTWN_CHIP_88E) { - urtwn_write_2(sc, R92C_CR, - urtwn_read_2(sc, R92C_CR) | R92C_CR_MACTXEN | - R92C_CR_MACRXEN); - } - - /* Turn CCK and OFDM blocks on. */ - reg = urtwn_bb_read(sc, R92C_FPGA0_RFMOD); - reg |= R92C_RFMOD_CCK_EN; - usb_err = urtwn_bb_write(sc, R92C_FPGA0_RFMOD, reg); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - goto fail; - reg = urtwn_bb_read(sc, R92C_FPGA0_RFMOD); - reg |= R92C_RFMOD_OFDM_EN; - usb_err = urtwn_bb_write(sc, R92C_FPGA0_RFMOD, reg); - if (usb_err != USB_ERR_NORMAL_COMPLETION) - goto fail; - - /* Clear per-station keys table. */ - urtwn_cam_init(sc); - - /* Enable decryption / encryption. */ - urtwn_write_2(sc, R92C_SECCFG, - R92C_SECCFG_TXUCKEY_DEF | R92C_SECCFG_RXUCKEY_DEF | - R92C_SECCFG_TXENC_ENA | R92C_SECCFG_RXDEC_ENA | - R92C_SECCFG_TXBCKEY_DEF | R92C_SECCFG_RXBCKEY_DEF); - - /* Enable hardware sequence numbering. */ - urtwn_write_1(sc, R92C_HWSEQ_CTRL, R92C_TX_QUEUE_ALL); - - /* Enable per-packet TX report. */ - if (sc->chip & URTWN_CHIP_88E) { - urtwn_write_1(sc, R88E_TX_RPT_CTRL, - urtwn_read_1(sc, R88E_TX_RPT_CTRL) | R88E_TX_RPT1_ENA); - } - - /* Perform LO and IQ calibrations. */ - urtwn_iq_calib(sc); - /* Perform LC calibration. */ - urtwn_lc_calib(sc); - - /* Fix USB interference issue. */ - if (!(sc->chip & URTWN_CHIP_88E)) { - urtwn_write_1(sc, 0xfe40, 0xe0); - urtwn_write_1(sc, 0xfe41, 0x8d); - urtwn_write_1(sc, 0xfe42, 0x80); - - urtwn_pa_bias_init(sc); - } - - /* Initialize GPIO setting. */ - urtwn_write_1(sc, R92C_GPIO_MUXCFG, - urtwn_read_1(sc, R92C_GPIO_MUXCFG) & ~R92C_GPIO_MUXCFG_ENBT); - - /* Fix for lower temperature. */ - if (!(sc->chip & URTWN_CHIP_88E)) - urtwn_write_1(sc, 0x15, 0xe9); - - usbd_transfer_start(sc->sc_xfer[URTWN_BULK_RX]); - - sc->sc_flags |= URTWN_RUNNING; - - /* - * Install static keys (if any). - * Must be called after urtwn_cam_init(). - */ - if (vap != NULL) - urtwn_setup_static_keys(sc, URTWN_VAP(vap)); - - callout_reset(&sc->sc_watchdog_ch, hz, urtwn_watchdog, sc); -fail: - if (usb_err != USB_ERR_NORMAL_COMPLETION) - error = EIO; - - URTWN_UNLOCK(sc); - - return (error); -} - -static void -urtwn_stop(struct urtwn_softc *sc) -{ - - URTWN_LOCK(sc); - if (!(sc->sc_flags & URTWN_RUNNING)) { - URTWN_UNLOCK(sc); - return; - } - - sc->sc_flags &= ~(URTWN_RUNNING | URTWN_FW_LOADED | - URTWN_TEMP_MEASURED); - sc->thcal_lctemp = 0; - callout_stop(&sc->sc_watchdog_ch); - - urtwn_abort_xfers(sc); - urtwn_drain_mbufq(sc); - urtwn_free_tx_list(sc); - urtwn_free_rx_list(sc); - urtwn_power_off(sc); - URTWN_UNLOCK(sc); -} - -static void -urtwn_abort_xfers(struct urtwn_softc *sc) -{ - int i; - - URTWN_ASSERT_LOCKED(sc); - - /* abort any pending transfers */ - for (i = 0; i < URTWN_N_TRANSFER; i++) - usbd_transfer_stop(sc->sc_xfer[i]); -} - -static int -urtwn_raw_xmit(struct ieee80211_node *ni, struct mbuf *m, - const struct ieee80211_bpf_params *params) -{ - struct ieee80211com *ic = ni->ni_ic; - struct urtwn_softc *sc = ic->ic_softc; - struct urtwn_data *bf; - int error; - - URTWN_DPRINTF(sc, URTWN_DEBUG_XMIT, "%s: called; m=%p\n", - __func__, - m); - - /* prevent management frames from being sent if we're not ready */ - URTWN_LOCK(sc); - if (!(sc->sc_flags & URTWN_RUNNING)) { - error = ENETDOWN; - goto end; - } - - bf = urtwn_getbuf(sc); - if (bf == NULL) { - error = ENOBUFS; - goto end; - } - - if (params == NULL) { - /* - * Legacy path; interpret frame contents to decide - * precisely how to send the frame. - */ - error = urtwn_tx_data(sc, ni, m, bf); - } else { - /* - * Caller supplied explicit parameters to use in - * sending the frame. - */ - error = urtwn_tx_raw(sc, ni, m, bf, params); - } - if (error != 0) { - STAILQ_INSERT_HEAD(&sc->sc_tx_inactive, bf, next); - goto end; - } - - sc->sc_txtimer = 5; - callout_reset(&sc->sc_watchdog_ch, hz, urtwn_watchdog, sc); - -end: - if (error != 0) { - if (m->m_flags & M_TXCB) - ieee80211_process_callback(ni, m, 1); - m_freem(m); - } - - URTWN_UNLOCK(sc); - - return (error); -} - -static void -urtwn_ms_delay(struct urtwn_softc *sc) -{ - usb_pause_mtx(&sc->sc_mtx, hz / 1000); -} - -static device_method_t urtwn_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, urtwn_match), - DEVMETHOD(device_attach, urtwn_attach), - DEVMETHOD(device_detach, urtwn_detach), - - DEVMETHOD_END -}; - -static driver_t urtwn_driver = { - "urtwn", - urtwn_methods, - sizeof(struct urtwn_softc) -}; - -static devclass_t urtwn_devclass; - -DRIVER_MODULE(urtwn, uhub, urtwn_driver, urtwn_devclass, NULL, NULL); -MODULE_DEPEND(urtwn, usb, 1, 1, 1); -MODULE_DEPEND(urtwn, wlan, 1, 1, 1); -#ifndef URTWN_WITHOUT_UCODE -MODULE_DEPEND(urtwn, firmware, 1, 1, 1); -#endif -MODULE_VERSION(urtwn, 1); -USB_PNP_HOST_INFO(urtwn_devs); diff --git a/sys/dev/urtwn/if_urtwnreg.h b/sys/dev/urtwn/if_urtwnreg.h deleted file mode 100644 index 1846a967ca4c..000000000000 --- a/sys/dev/urtwn/if_urtwnreg.h +++ /dev/null @@ -1,2183 +0,0 @@ -/*- - * Copyright (c) 2010 Damien Bergamini - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ - * $FreeBSD$ - */ - -#define URTWN_CONFIG_INDEX 0 -#define URTWN_IFACE_INDEX 0 - -#define URTWN_NOISE_FLOOR -95 - -#define R92C_MAX_CHAINS 2 - -/* Maximum number of output pipes is 3. */ -#define R92C_MAX_EPOUT 3 - -#define R92C_MAX_TX_PWR 0x3f - -#define R92C_PUBQ_NPAGES 231 -#define R92C_TXPKTBUF_COUNT 256 -#define R92C_TX_PAGE_COUNT 248 -#define R92C_TX_PAGE_BOUNDARY (R92C_TX_PAGE_COUNT + 1) -#define R88E_TXPKTBUF_COUNT 177 -#define R88E_TX_PAGE_COUNT 169 -#define R88E_TX_PAGE_BOUNDARY (R88E_TX_PAGE_COUNT + 1) - -#define R92C_H2C_NBOX 4 - -/* USB Requests. */ -#define R92C_REQ_REGS 0x05 - -/* - * MAC registers. - */ -/* System Configuration. */ -#define R92C_SYS_ISO_CTRL 0x000 -#define R92C_SYS_FUNC_EN 0x002 -#define R92C_APS_FSMCO 0x004 -#define R92C_SYS_CLKR 0x008 -#define R92C_AFE_MISC 0x010 -#define R92C_SPS0_CTRL 0x011 -#define R92C_SPS_OCP_CFG 0x018 -#define R92C_RSV_CTRL 0x01c -#define R92C_RF_CTRL 0x01f -#define R92C_LDOA15_CTRL 0x020 -#define R92C_LDOV12D_CTRL 0x021 -#define R92C_LDOHCI12_CTRL 0x022 -#define R92C_LPLDO_CTRL 0x023 -#define R92C_AFE_XTAL_CTRL 0x024 -#define R92C_AFE_PLL_CTRL 0x028 -#define R92C_EFUSE_CTRL 0x030 -#define R92C_EFUSE_TEST 0x034 -#define R92C_PWR_DATA 0x038 -#define R92C_CAL_TIMER 0x03c -#define R92C_ACLK_MON 0x03e -#define R92C_GPIO_MUXCFG 0x040 -#define R92C_GPIO_IO_SEL 0x042 -#define R92C_MAC_PINMUX_CFG 0x043 -#define R92C_GPIO_PIN_CTRL 0x044 -#define R92C_GPIO_IN 0x044 -#define R92C_GPIO_OUT 0x045 -#define R92C_GPIO_IOSEL 0x046 -#define R92C_GPIO_MOD 0x047 -#define R92C_GPIO_INTM 0x048 -#define R92C_LEDCFG0 0x04c -#define R92C_LEDCFG1 0x04d -#define R92C_LEDCFG2 0x04e -#define R92C_LEDCFG3 0x04f -#define R92C_FSIMR 0x050 -#define R92C_FSISR 0x054 -#define R92C_HSIMR 0x058 -#define R92C_HSISR 0x05c -#define R88E_BB_PAD_CTRL 0x064 -#define R92C_MCUFWDL 0x080 -#define R92C_HMEBOX_EXT(idx) (0x088 + (idx) * 2) -#define R88E_HIMR 0x0b0 -#define R88E_HISR 0x0b4 -#define R88E_HIMRE 0x0b8 -#define R88E_HISRE 0x0bc -#define R92C_EFUSE_ACCESS 0x0cf -#define R92C_BIST_SCAN 0x0d0 -#define R92C_BIST_RPT 0x0d4 -#define R92C_BIST_ROM_RPT 0x0d8 -#define R92C_USB_SIE_INTF 0x0e0 -#define R92C_PCIE_MIO_INTF 0x0e4 -#define R92C_PCIE_MIO_INTD 0x0e8 -#define R92C_HPON_FSM 0x0ec -#define R92C_SYS_CFG 0x0f0 -/* MAC General Configuration. */ -#define R92C_CR 0x100 -#define R92C_MSR 0x102 -#define R92C_PBP 0x104 -#define R92C_TRXDMA_CTRL 0x10c -#define R92C_TRXFF_BNDY 0x114 -#define R92C_TRXFF_STATUS 0x118 -#define R92C_RXFF_PTR 0x11c -#define R92C_HIMR 0x120 -#define R92C_HISR 0x124 -#define R92C_HIMRE 0x128 -#define R92C_HISRE 0x12c -#define R92C_CPWM 0x12f -#define R92C_FWIMR 0x130 -#define R92C_FWISR 0x134 -#define R92C_PKTBUF_DBG_CTRL 0x140 -#define R92C_PKTBUF_DBG_DATA_L 0x144 -#define R92C_PKTBUF_DBG_DATA_H 0x148 -#define R92C_TC0_CTRL(i) (0x150 + (i) * 4) -#define R92C_TCUNIT_BASE 0x164 -#define R92C_MBIST_START 0x174 -#define R92C_MBIST_DONE 0x178 -#define R92C_MBIST_FAIL 0x17c -#define R88E_32K_CTRL 0x194 -#define R92C_C2HEVT_MSG_NORMAL 0x1a0 -#define R92C_C2HEVT_MSG_TEST 0x1b8 -#define R92C_C2HEVT_CLEAR 0x1bf -#define R92C_MCUTST_1 0x1c0 -#define R92C_FMETHR 0x1c8 -#define R92C_HMETFR 0x1cc -#define R92C_HMEBOX(idx) (0x1d0 + (idx) * 4) -#define R92C_LLT_INIT 0x1e0 -#define R92C_BB_ACCESS_CTRL 0x1e8 -#define R92C_BB_ACCESS_DATA 0x1ec -#define R88E_HMEBOX_EXT(idx) (0x1f0 + (idx) * 4) -/* Tx DMA Configuration. */ -#define R92C_RQPN 0x200 -#define R92C_FIFOPAGE 0x204 -#define R92C_TDECTRL 0x208 -#define R92C_TXDMA_OFFSET_CHK 0x20c -#define R92C_TXDMA_STATUS 0x210 -#define R92C_RQPN_NPQ 0x214 -/* Rx DMA Configuration. */ -#define R92C_RXDMA_AGG_PG_TH 0x280 -#define R92C_RXPKT_NUM 0x284 -#define R92C_RXDMA_STATUS 0x288 -/* Protocol Configuration. */ -#define R92C_FWHW_TXQ_CTRL 0x420 -#define R92C_HWSEQ_CTRL 0x423 -#define R92C_TXPKTBUF_BCNQ_BDNY 0x424 -#define R92C_TXPKTBUF_MGQ_BDNY 0x425 -#define R92C_SPEC_SIFS 0x428 -#define R92C_RL 0x42a -#define R92C_DARFRC 0x430 -#define R92C_RARFRC 0x438 -#define R92C_RRSR 0x440 -#define R92C_ARFR(i) (0x444 + (i) * 4) -#define R92C_AGGLEN_LMT 0x458 -#define R92C_AMPDU_MIN_SPACE 0x45c -#define R92C_TXPKTBUF_WMAC_LBK_BF_HD 0x45d -#define R92C_FAST_EDCA_CTRL 0x460 -#define R92C_RD_RESP_PKT_TH 0x463 -#define R92C_INIRTS_RATE_SEL 0x480 -#define R92C_INIDATA_RATE_SEL(macid) (0x484 + (macid)) -#define R92C_MAX_AGGR_NUM 0x4ca -#define R88E_TX_RPT_CTRL 0x4ec -#define R88E_TX_RPT_MACID_MAX 0x4ed -#define R88E_TX_RPT_TIME 0x4f0 -/* EDCA Configuration. */ -#define R92C_EDCA_VO_PARAM 0x500 -#define R92C_EDCA_VI_PARAM 0x504 -#define R92C_EDCA_BE_PARAM 0x508 -#define R92C_EDCA_BK_PARAM 0x50c -#define R92C_BCNTCFG 0x510 -#define R92C_PIFS 0x512 -#define R92C_RDG_PIFS 0x513 -#define R92C_SIFS_CCK 0x514 -#define R92C_SIFS_OFDM 0x516 -#define R92C_AGGR_BREAK_TIME 0x51a -#define R92C_SLOT 0x51b -#define R92C_TX_PTCL_CTRL 0x520 -#define R92C_TXPAUSE 0x522 -#define R92C_DIS_TXREQ_CLR 0x523 -#define R92C_RD_CTRL 0x524 -#define R92C_TBTT_PROHIBIT 0x540 -#define R92C_RD_NAV_NXT 0x544 -#define R92C_NAV_PROT_LEN 0x546 -#define R92C_BCN_CTRL 0x550 -#define R92C_MBID_NUM 0x552 -#define R92C_DUAL_TSF_RST 0x553 -#define R92C_BCN_INTERVAL 0x554 -#define R92C_DRVERLYINT 0x558 -#define R92C_BCNDMATIM 0x559 -#define R92C_ATIMWND 0x55a -#define R92C_USTIME_TSF 0x55c -#define R92C_BCN_MAX_ERR 0x55d -#define R92C_RXTSF_OFFSET_CCK 0x55e -#define R92C_RXTSF_OFFSET_OFDM 0x55f -#define R92C_TSFTR 0x560 -#define R92C_INIT_TSFTR 0x564 -#define R92C_PSTIMER 0x580 -#define R92C_TIMER0 0x584 -#define R92C_TIMER1 0x588 -#define R92C_ACMHWCTRL 0x5c0 -#define R92C_ACMRSTCTRL 0x5c1 -#define R92C_ACMAVG 0x5c2 -#define R92C_VO_ADMTIME 0x5c4 -#define R92C_VI_ADMTIME 0x5c6 -#define R92C_BE_ADMTIME 0x5c8 -#define R92C_EDCA_RANDOM_GEN 0x5cc -#define R92C_SCH_TXCMD 0x5d0 -#define R88E_SCH_TXCMD 0x5f8 -/* WMAC Configuration. */ -#define R92C_APSD_CTRL 0x600 -#define R92C_BWOPMODE 0x603 -#define R92C_RCR 0x608 -#define R92C_RX_DRVINFO_SZ 0x60f -#define R92C_MACID 0x610 -#define R92C_BSSID 0x618 -#define R92C_MAR 0x620 -#define R92C_MAC_SPEC_SIFS 0x63a -#define R92C_R2T_SIFS 0x63c -#define R92C_T2T_SIFS 0x63e -#define R92C_ACKTO 0x640 -#define R92C_CAMCMD 0x670 -#define R92C_CAMWRITE 0x674 -#define R92C_CAMREAD 0x678 -#define R92C_CAMDBG 0x67c -#define R92C_SECCFG 0x680 -#define R92C_RXFLTMAP0 0x6a0 -#define R92C_RXFLTMAP1 0x6a2 -#define R92C_RXFLTMAP2 0x6a4 - -/* Bits for R92C_SYS_ISO_CTRL. */ -#define R92C_SYS_ISO_CTRL_MD2PP 0x0001 -#define R92C_SYS_ISO_CTRL_UA2USB 0x0002 -#define R92C_SYS_ISO_CTRL_UD2CORE 0x0004 -#define R92C_SYS_ISO_CTRL_PA2PCIE 0x0008 -#define R92C_SYS_ISO_CTRL_PD2CORE 0x0010 -#define R92C_SYS_ISO_CTRL_IP2MAC 0x0020 -#define R92C_SYS_ISO_CTRL_DIOP 0x0040 -#define R92C_SYS_ISO_CTRL_DIOE 0x0080 -#define R92C_SYS_ISO_CTRL_EB2CORE 0x0100 -#define R92C_SYS_ISO_CTRL_DIOR 0x0200 -#define R92C_SYS_ISO_CTRL_PWC_EV25V 0x4000 -#define R92C_SYS_ISO_CTRL_PWC_EV12V 0x8000 - -/* Bits for R92C_SYS_FUNC_EN. */ -#define R92C_SYS_FUNC_EN_BBRSTB 0x0001 -#define R92C_SYS_FUNC_EN_BB_GLB_RST 0x0002 -#define R92C_SYS_FUNC_EN_USBA 0x0004 -#define R92C_SYS_FUNC_EN_UPLL 0x0008 -#define R92C_SYS_FUNC_EN_USBD 0x0010 -#define R92C_SYS_FUNC_EN_DIO_PCIE 0x0020 -#define R92C_SYS_FUNC_EN_PCIEA 0x0040 -#define R92C_SYS_FUNC_EN_PPLL 0x0080 -#define R92C_SYS_FUNC_EN_PCIED 0x0100 -#define R92C_SYS_FUNC_EN_DIOE 0x0200 -#define R92C_SYS_FUNC_EN_CPUEN 0x0400 -#define R92C_SYS_FUNC_EN_DCORE 0x0800 -#define R92C_SYS_FUNC_EN_ELDR 0x1000 -#define R92C_SYS_FUNC_EN_DIO_RF 0x2000 -#define R92C_SYS_FUNC_EN_HWPDN 0x4000 -#define R92C_SYS_FUNC_EN_MREGEN 0x8000 - -/* Bits for R92C_APS_FSMCO. */ -#define R92C_APS_FSMCO_PFM_LDALL 0x00000001 -#define R92C_APS_FSMCO_PFM_ALDN 0x00000002 -#define R92C_APS_FSMCO_PFM_LDKP 0x00000004 -#define R92C_APS_FSMCO_PFM_WOWL 0x00000008 -#define R92C_APS_FSMCO_PDN_EN 0x00000010 -#define R92C_APS_FSMCO_PDN_PL 0x00000020 -#define R92C_APS_FSMCO_APFM_ONMAC 0x00000100 -#define R92C_APS_FSMCO_APFM_OFF 0x00000200 -#define R92C_APS_FSMCO_APFM_RSM 0x00000400 -#define R92C_APS_FSMCO_AFSM_HSUS 0x00000800 -#define R92C_APS_FSMCO_AFSM_PCIE 0x00001000 -#define R92C_APS_FSMCO_APDM_MAC 0x00002000 -#define R92C_APS_FSMCO_APDM_HOST 0x00004000 -#define R92C_APS_FSMCO_APDM_HPDN 0x00008000 -#define R92C_APS_FSMCO_RDY_MACON 0x00010000 -#define R92C_APS_FSMCO_SUS_HOST 0x00020000 -#define R92C_APS_FSMCO_ROP_ALD 0x00100000 -#define R92C_APS_FSMCO_ROP_PWR 0x00200000 -#define R92C_APS_FSMCO_ROP_SPS 0x00400000 -#define R92C_APS_FSMCO_SOP_MRST 0x02000000 -#define R92C_APS_FSMCO_SOP_FUSE 0x04000000 -#define R92C_APS_FSMCO_SOP_ABG 0x08000000 -#define R92C_APS_FSMCO_SOP_AMB 0x10000000 -#define R92C_APS_FSMCO_SOP_RCK 0x20000000 -#define R92C_APS_FSMCO_SOP_A8M 0x40000000 -#define R92C_APS_FSMCO_XOP_BTCK 0x80000000 - -/* Bits for R92C_SYS_CLKR. */ -#define R92C_SYS_CLKR_ANAD16V_EN 0x00000001 -#define R92C_SYS_CLKR_ANA8M 0x00000002 -#define R92C_SYS_CLKR_MACSLP 0x00000010 -#define R92C_SYS_CLKR_LOADER_EN 0x00000020 -#define R92C_SYS_CLKR_80M_SSC_DIS 0x00000080 -#define R92C_SYS_CLKR_80M_SSC_EN_HO 0x00000100 -#define R92C_SYS_CLKR_PHY_SSC_RSTB 0x00000200 -#define R92C_SYS_CLKR_SEC_EN 0x00000400 -#define R92C_SYS_CLKR_MAC_EN 0x00000800 -#define R92C_SYS_CLKR_SYS_EN 0x00001000 -#define R92C_SYS_CLKR_RING_EN 0x00002000 - -/* Bits for R92C_RF_CTRL. */ -#define R92C_RF_CTRL_EN 0x01 -#define R92C_RF_CTRL_RSTB 0x02 -#define R92C_RF_CTRL_SDMRSTB 0x04 - -/* Bits for R92C_LDOA15_CTRL. */ -#define R92C_LDOA15_CTRL_EN 0x01 -#define R92C_LDOA15_CTRL_STBY 0x02 -#define R92C_LDOA15_CTRL_OBUF 0x04 -#define R92C_LDOA15_CTRL_REG_VOS 0x08 - -/* Bits for R92C_LDOV12D_CTRL. */ -#define R92C_LDOV12D_CTRL_LDV12_EN 0x01 - -/* Bits for R92C_LPLDO_CTRL. */ -#define R92C_LPLDO_CTRL_SLEEP 0x10 - -/* Bits for R92C_AFE_XTAL_CTRL. */ -#define R92C_AFE_XTAL_CTRL_ADDR_M 0x007ff800 -#define R92C_AFE_XTAL_CTRL_ADDR_S 11 - -/* Bits for R92C_AFE_PLL_CTRL. */ -#define R92C_AFE_PLL_CTRL_EN 0x0001 -#define R92C_AFE_PLL_CTRL_320_EN 0x0002 -#define R92C_AFE_PLL_CTRL_FREF_SEL 0x0004 -#define R92C_AFE_PLL_CTRL_EDGE_SEL 0x0008 -#define R92C_AFE_PLL_CTRL_WDOGB 0x0010 -#define R92C_AFE_PLL_CTRL_LPFEN 0x0020 - -/* Bits for R92C_EFUSE_CTRL. */ -#define R92C_EFUSE_CTRL_DATA_M 0x000000ff -#define R92C_EFUSE_CTRL_DATA_S 0 -#define R92C_EFUSE_CTRL_ADDR_M 0x0003ff00 -#define R92C_EFUSE_CTRL_ADDR_S 8 -#define R92C_EFUSE_CTRL_VALID 0x80000000 - -/* Bits for R92C_GPIO_MUXCFG. */ -#define R92C_GPIO_MUXCFG_ENBT 0x0020 - -/* Bits for R92C_LEDCFG0. */ -#define R92C_LEDCFG0_DIS 0x08 - -/* Bits for R92C_MCUFWDL. */ -#define R92C_MCUFWDL_EN 0x00000001 -#define R92C_MCUFWDL_RDY 0x00000002 -#define R92C_MCUFWDL_CHKSUM_RPT 0x00000004 -#define R92C_MCUFWDL_MACINI_RDY 0x00000008 -#define R92C_MCUFWDL_BBINI_RDY 0x00000010 -#define R92C_MCUFWDL_RFINI_RDY 0x00000020 -#define R92C_MCUFWDL_WINTINI_RDY 0x00000040 -#define R92C_MCUFWDL_RAM_DL_SEL 0x00000080 -#define R92C_MCUFWDL_PAGE_M 0x00070000 -#define R92C_MCUFWDL_PAGE_S 16 -#define R92C_MCUFWDL_CPRST 0x00800000 - -/* Bits for R88E_HIMR. */ -#define R88E_HIMR_CPWM 0x00000100 -#define R88E_HIMR_CPWM2 0x00000200 -#define R88E_HIMR_TBDER 0x04000000 -#define R88E_HIMR_PSTIMEOUT 0x20000000 - -/* Bits for R88E_HIMRE.*/ -#define R88E_HIMRE_RXFOVW 0x00000100 -#define R88E_HIMRE_TXFOVW 0x00000200 -#define R88E_HIMRE_RXERR 0x00000400 -#define R88E_HIMRE_TXERR 0x00000800 - -/* Bits for R92C_EFUSE_ACCESS. */ -#define R92C_EFUSE_ACCESS_OFF 0x00 -#define R92C_EFUSE_ACCESS_ON 0x69 - -/* Bits for R92C_HPON_FSM. */ -#define R92C_HPON_FSM_CHIP_BONDING_ID_S 22 -#define R92C_HPON_FSM_CHIP_BONDING_ID_M 0x00c00000 -#define R92C_HPON_FSM_CHIP_BONDING_ID_92C_1T2R 1 - -/* Bits for R92C_SYS_CFG. */ -#define R92C_SYS_CFG_XCLK_VLD 0x00000001 -#define R92C_SYS_CFG_ACLK_VLD 0x00000002 -#define R92C_SYS_CFG_UCLK_VLD 0x00000004 -#define R92C_SYS_CFG_PCLK_VLD 0x00000008 -#define R92C_SYS_CFG_PCIRSTB 0x00000010 -#define R92C_SYS_CFG_V15_VLD 0x00000020 -#define R92C_SYS_CFG_TRP_B15V_EN 0x00000080 -#define R92C_SYS_CFG_SIC_IDLE 0x00000100 -#define R92C_SYS_CFG_BD_MAC2 0x00000200 -#define R92C_SYS_CFG_BD_MAC1 0x00000400 -#define R92C_SYS_CFG_IC_MACPHY_MODE 0x00000800 -#define R92C_SYS_CFG_CHIP_VER_RTL_M 0x0000f000 -#define R92C_SYS_CFG_CHIP_VER_RTL_S 12 -#define R92C_SYS_CFG_BT_FUNC 0x00010000 -#define R92C_SYS_CFG_VENDOR_UMC 0x00080000 -#define R92C_SYS_CFG_PAD_HWPD_IDN 0x00400000 -#define R92C_SYS_CFG_TRP_VAUX_EN 0x00800000 -#define R92C_SYS_CFG_TRP_BT_EN 0x01000000 -#define R92C_SYS_CFG_BD_PKG_SEL 0x02000000 -#define R92C_SYS_CFG_BD_HCI_SEL 0x04000000 -#define R92C_SYS_CFG_TYPE_92C 0x08000000 - -/* Bits for R92C_CR. */ -#define R92C_CR_HCI_TXDMA_EN 0x0001 -#define R92C_CR_HCI_RXDMA_EN 0x0002 -#define R92C_CR_TXDMA_EN 0x0004 -#define R92C_CR_RXDMA_EN 0x0008 -#define R92C_CR_PROTOCOL_EN 0x0010 -#define R92C_CR_SCHEDULE_EN 0x0020 -#define R92C_CR_MACTXEN 0x0040 -#define R92C_CR_MACRXEN 0x0080 -#define R92C_CR_ENSEC 0x0200 -#define R92C_CR_CALTMR_EN 0x0400 - -/* Bits for R92C_MSR. */ -#define R92C_MSR_NOLINK 0x00 -#define R92C_MSR_ADHOC 0x01 -#define R92C_MSR_INFRA 0x02 -#define R92C_MSR_AP 0x03 -#define R92C_MSR_MASK (R92C_MSR_AP) - -/* Bits for R92C_PBP. */ -#define R92C_PBP_PSRX_M 0x0f -#define R92C_PBP_PSRX_S 0 -#define R92C_PBP_PSTX_M 0xf0 -#define R92C_PBP_PSTX_S 4 -#define R92C_PBP_64 0 -#define R92C_PBP_128 1 -#define R92C_PBP_256 2 -#define R92C_PBP_512 3 -#define R92C_PBP_1024 4 - -/* Bits for R92C_TRXDMA_CTRL. */ -#define R92C_TRXDMA_CTRL_RXDMA_AGG_EN 0x0004 -#define R92C_TRXDMA_CTRL_TXDMA_VOQ_MAP_M 0x0030 -#define R92C_TRXDMA_CTRL_TXDMA_VOQ_MAP_S 4 -#define R92C_TRXDMA_CTRL_TXDMA_VIQ_MAP_M 0x00c0 -#define R92C_TRXDMA_CTRL_TXDMA_VIQ_MAP_S 6 -#define R92C_TRXDMA_CTRL_TXDMA_BEQ_MAP_M 0x0300 -#define R92C_TRXDMA_CTRL_TXDMA_BEQ_MAP_S 8 -#define R92C_TRXDMA_CTRL_TXDMA_BKQ_MAP_M 0x0c00 -#define R92C_TRXDMA_CTRL_TXDMA_BKQ_MAP_S 10 -#define R92C_TRXDMA_CTRL_TXDMA_MGQ_MAP_M 0x3000 -#define R92C_TRXDMA_CTRL_TXDMA_MGQ_MAP_S 12 -#define R92C_TRXDMA_CTRL_TXDMA_HIQ_MAP_M 0xc000 -#define R92C_TRXDMA_CTRL_TXDMA_HIQ_MAP_S 14 -#define R92C_TRXDMA_CTRL_QUEUE_LOW 1 -#define R92C_TRXDMA_CTRL_QUEUE_NORMAL 2 -#define R92C_TRXDMA_CTRL_QUEUE_HIGH 3 -#define R92C_TRXDMA_CTRL_QMAP_M 0xfff0 -/* Shortcuts. */ -#define R92C_TRXDMA_CTRL_QMAP_3EP 0xf5b0 -#define R92C_TRXDMA_CTRL_QMAP_HQ_LQ 0xf5f0 -#define R92C_TRXDMA_CTRL_QMAP_HQ_NQ 0xfaf0 -#define R92C_TRXDMA_CTRL_QMAP_LQ 0x5550 -#define R92C_TRXDMA_CTRL_QMAP_NQ 0xaaa0 -#define R92C_TRXDMA_CTRL_QMAP_HQ 0xfff0 - -/* Bits for R92C_LLT_INIT. */ -#define R92C_LLT_INIT_DATA_M 0x000000ff -#define R92C_LLT_INIT_DATA_S 0 -#define R92C_LLT_INIT_ADDR_M 0x0000ff00 -#define R92C_LLT_INIT_ADDR_S 8 -#define R92C_LLT_INIT_OP_M 0xc0000000 -#define R92C_LLT_INIT_OP_S 30 -#define R92C_LLT_INIT_OP_NO_ACTIVE 0 -#define R92C_LLT_INIT_OP_WRITE 1 - -/* Bits for R92C_RQPN. */ -#define R92C_RQPN_HPQ_M 0x000000ff -#define R92C_RQPN_HPQ_S 0 -#define R92C_RQPN_LPQ_M 0x0000ff00 -#define R92C_RQPN_LPQ_S 8 -#define R92C_RQPN_PUBQ_M 0x00ff0000 -#define R92C_RQPN_PUBQ_S 16 -#define R92C_RQPN_LD 0x80000000 - -/* Bits for R92C_TDECTRL. */ -#define R92C_TDECTRL_BLK_DESC_NUM_M 0x000000f0 -#define R92C_TDECTRL_BLK_DESC_NUM_S 4 -#define R92C_TDECTRL_BCN_VALID 0x00010000 - -/* Bits for R92C_FWHW_TXQ_CTRL. */ -#define R92C_FWHW_TXQ_CTRL_AMPDU_RTY_NEW 0x80 - -/* Bits for R92C_SPEC_SIFS. */ -#define R92C_SPEC_SIFS_CCK_M 0x00ff -#define R92C_SPEC_SIFS_CCK_S 0 -#define R92C_SPEC_SIFS_OFDM_M 0xff00 -#define R92C_SPEC_SIFS_OFDM_S 8 - -/* Bits for R92C_RL. */ -#define R92C_RL_LRL_M 0x003f -#define R92C_RL_LRL_S 0 -#define R92C_RL_SRL_M 0x3f00 -#define R92C_RL_SRL_S 8 - -/* Bits for R92C_RRSR. */ -#define R92C_RRSR_RATE_BITMAP_M 0x000fffff -#define R92C_RRSR_RATE_BITMAP_S 0 -#define R92C_RRSR_RATE_CCK_ONLY_1M 0xffff1 -#define R92C_RRSR_RSC_LOWSUBCHNL 0x00200000 -#define R92C_RRSR_RSC_UPSUBCHNL 0x00400000 -#define R92C_RRSR_SHORT 0x00800000 - -/* Bits for R88E_TX_RPT_CTRL. */ -#define R88E_TX_RPT1_ENA 0x01 -#define R88E_TX_RPT2_ENA 0x02 - -/* Bits for R92C_EDCA_XX_PARAM. */ -#define R92C_EDCA_PARAM_AIFS_M 0x000000ff -#define R92C_EDCA_PARAM_AIFS_S 0 -#define R92C_EDCA_PARAM_ECWMIN_M 0x00000f00 -#define R92C_EDCA_PARAM_ECWMIN_S 8 -#define R92C_EDCA_PARAM_ECWMAX_M 0x0000f000 -#define R92C_EDCA_PARAM_ECWMAX_S 12 -#define R92C_EDCA_PARAM_TXOP_M 0xffff0000 -#define R92C_EDCA_PARAM_TXOP_S 16 - -/* Bits for R92C_HWSEQ_CTRL / R92C_TXPAUSE. */ -#define R92C_TX_QUEUE_VO 0x01 -#define R92C_TX_QUEUE_VI 0x02 -#define R92C_TX_QUEUE_BE 0x04 -#define R92C_TX_QUEUE_BK 0x08 -#define R92C_TX_QUEUE_MGT 0x10 -#define R92C_TX_QUEUE_HIGH 0x20 -#define R92C_TX_QUEUE_BCN 0x40 - -/* Shortcuts. */ -#define R92C_TX_QUEUE_AC \ - (R92C_TX_QUEUE_VO | R92C_TX_QUEUE_VI | \ - R92C_TX_QUEUE_BE | R92C_TX_QUEUE_BK) - -#define R92C_TX_QUEUE_ALL \ - (R92C_TX_QUEUE_AC | R92C_TX_QUEUE_MGT | \ - R92C_TX_QUEUE_HIGH | R92C_TX_QUEUE_BCN | 0x80) /* XXX */ - -/* Bits for R92C_BCN_CTRL. */ -#define R92C_BCN_CTRL_EN_MBSSID 0x02 -#define R92C_BCN_CTRL_TXBCN_RPT 0x04 -#define R92C_BCN_CTRL_EN_BCN 0x08 -#define R92C_BCN_CTRL_DIS_TSF_UDT0 0x10 - -/* Bits for R92C_MBID_NUM. */ -#define R92C_MBID_TXBCN_RPT0 0x08 -#define R92C_MBID_TXBCN_RPT1 0x10 - -/* Bits for R92C_DUAL_TSF_RST. */ -#define R92C_DUAL_TSF_RST0 0x01 -#define R92C_DUAL_TSF_RST1 0x02 - -/* Bits for R92C_ACMHWCTRL. */ -#define R92C_ACMHWCTRL_EN 0x01 -#define R92C_ACMHWCTRL_BE 0x02 -#define R92C_ACMHWCTRL_VI 0x04 -#define R92C_ACMHWCTRL_VO 0x08 -#define R92C_ACMHWCTRL_ACM_MASK 0x0f - -/* Bits for R92C_APSD_CTRL. */ -#define R92C_APSD_CTRL_OFF 0x40 -#define R92C_APSD_CTRL_OFF_STATUS 0x80 - -/* Bits for R92C_BWOPMODE. */ -#define R92C_BWOPMODE_11J 0x01 -#define R92C_BWOPMODE_5G 0x02 -#define R92C_BWOPMODE_20MHZ 0x04 - -/* Bits for R92C_RCR. */ -#define R92C_RCR_AAP 0x00000001 -#define R92C_RCR_APM 0x00000002 -#define R92C_RCR_AM 0x00000004 -#define R92C_RCR_AB 0x00000008 -#define R92C_RCR_ADD3 0x00000010 -#define R92C_RCR_APWRMGT 0x00000020 -#define R92C_RCR_CBSSID_DATA 0x00000040 -#define R92C_RCR_CBSSID_BCN 0x00000080 -#define R92C_RCR_ACRC32 0x00000100 -#define R92C_RCR_AICV 0x00000200 -#define R92C_RCR_ADF 0x00000800 -#define R92C_RCR_ACF 0x00001000 -#define R92C_RCR_AMF 0x00002000 -#define R92C_RCR_HTC_LOC_CTRL 0x00004000 -#define R92C_RCR_MFBEN 0x00400000 -#define R92C_RCR_LSIGEN 0x00800000 -#define R92C_RCR_ENMBID 0x01000000 -#define R92C_RCR_APP_BA_SSN 0x08000000 -#define R92C_RCR_APP_PHYSTS 0x10000000 -#define R92C_RCR_APP_ICV 0x20000000 -#define R92C_RCR_APP_MIC 0x40000000 -#define R92C_RCR_APPFCS 0x80000000 - -/* Bits for R92C_CAMCMD. */ -#define R92C_CAMCMD_ADDR_M 0x0000ffff -#define R92C_CAMCMD_ADDR_S 0 -#define R92C_CAMCMD_WRITE 0x00010000 -#define R92C_CAMCMD_CLR 0x40000000 -#define R92C_CAMCMD_POLLING 0x80000000 - -/* Bits for R92C_SECCFG. */ -#define R92C_SECCFG_TXUCKEY_DEF 0x0001 -#define R92C_SECCFG_RXUCKEY_DEF 0x0002 -#define R92C_SECCFG_TXENC_ENA 0x0004 -#define R92C_SECCFG_RXDEC_ENA 0x0008 -#define R92C_SECCFG_CMP_A2 0x0010 -#define R92C_SECCFG_TXBCKEY_DEF 0x0040 -#define R92C_SECCFG_RXBCKEY_DEF 0x0080 -#define R88E_SECCFG_CHK_KEYID 0x0100 - -/* Bits for R92C_RXFLTMAP*. */ -#define R92C_RXFLTMAP_SUBTYPE(subtype) \ - (1 << ((subtype) >> IEEE80211_FC0_SUBTYPE_SHIFT)) - - -/* - * Baseband registers. - */ -#define R92C_FPGA0_RFMOD 0x800 -#define R92C_FPGA0_TXINFO 0x804 -#define R92C_HSSI_PARAM1(chain) (0x820 + (chain) * 8) -#define R92C_HSSI_PARAM2(chain) (0x824 + (chain) * 8) -#define R92C_TXAGC_RATE18_06(i) (((i) == 0) ? 0xe00 : 0x830) -#define R92C_TXAGC_RATE54_24(i) (((i) == 0) ? 0xe04 : 0x834) -#define R92C_TXAGC_A_CCK1_MCS32 0xe08 -#define R92C_TXAGC_B_CCK1_55_MCS32 0x838 -#define R92C_TXAGC_B_CCK11_A_CCK2_11 0x86c -#define R92C_TXAGC_MCS03_MCS00(i) (((i) == 0) ? 0xe10 : 0x83c) -#define R92C_TXAGC_MCS07_MCS04(i) (((i) == 0) ? 0xe14 : 0x848) -#define R92C_TXAGC_MCS11_MCS08(i) (((i) == 0) ? 0xe18 : 0x84c) -#define R92C_TXAGC_MCS15_MCS12(i) (((i) == 0) ? 0xe1c : 0x868) -#define R92C_LSSI_PARAM(chain) (0x840 + (chain) * 4) -#define R92C_FPGA0_RFIFACEOE(chain) (0x860 + (chain) * 4) -#define R92C_FPGA0_RFIFACESW(idx) (0x870 + (idx) * 4) -#define R92C_FPGA0_RFPARAM(idx) (0x878 + (idx) * 4) -#define R92C_FPGA0_ANAPARAM2 0x884 -#define R92C_LSSI_READBACK(chain) (0x8a0 + (chain) * 4) -#define R92C_HSPI_READBACK(chain) (0x8b8 + (chain) * 4) -#define R92C_FPGA1_RFMOD 0x900 -#define R92C_FPGA1_TXINFO 0x90c -#define R92C_CCK0_SYSTEM 0xa00 -#define R92C_CCK0_AFESETTING 0xa04 -#define R92C_OFDM0_TRXPATHENA 0xc04 -#define R92C_OFDM0_TRMUXPAR 0xc08 -#define R92C_OFDM0_AGCCORE1(chain) (0xc50 + (chain) * 8) -#define R92C_OFDM0_AGCPARAM1 0xc70 -#define R92C_OFDM0_AGCRSSITABLE 0xc78 -#define R92C_OFDM1_LSTF 0xd00 - -/* Bits for R92C_FPGA[01]_RFMOD. */ -#define R92C_RFMOD_40MHZ 0x00000001 -#define R92C_RFMOD_JAPAN 0x00000002 -#define R92C_RFMOD_CCK_TXSC 0x00000030 -#define R92C_RFMOD_CCK_EN 0x01000000 -#define R92C_RFMOD_OFDM_EN 0x02000000 - -/* Bits for R92C_HSSI_PARAM1(i). */ -#define R92C_HSSI_PARAM1_PI 0x00000100 - -/* Bits for R92C_HSSI_PARAM2(i). */ -#define R92C_HSSI_PARAM2_CCK_HIPWR 0x00000200 -#define R92C_HSSI_PARAM2_ADDR_LENGTH 0x00000400 -#define R92C_HSSI_PARAM2_DATA_LENGTH 0x00000800 -#define R92C_HSSI_PARAM2_READ_ADDR_M 0x7f800000 -#define R92C_HSSI_PARAM2_READ_ADDR_S 23 -#define R92C_HSSI_PARAM2_READ_EDGE 0x80000000 - -/* Bits for R92C_TXAGC_A_CCK1_MCS32. */ -#define R92C_TXAGC_A_CCK1_M 0x0000ff00 -#define R92C_TXAGC_A_CCK1_S 8 - -/* Bits for R92C_TXAGC_B_CCK11_A_CCK2_11. */ -#define R92C_TXAGC_B_CCK11_M 0x000000ff -#define R92C_TXAGC_B_CCK11_S 0 -#define R92C_TXAGC_A_CCK2_M 0x0000ff00 -#define R92C_TXAGC_A_CCK2_S 8 -#define R92C_TXAGC_A_CCK55_M 0x00ff0000 -#define R92C_TXAGC_A_CCK55_S 16 -#define R92C_TXAGC_A_CCK11_M 0xff000000 -#define R92C_TXAGC_A_CCK11_S 24 - -/* Bits for R92C_TXAGC_B_CCK1_55_MCS32. */ -#define R92C_TXAGC_B_CCK1_M 0x0000ff00 -#define R92C_TXAGC_B_CCK1_S 8 -#define R92C_TXAGC_B_CCK2_M 0x00ff0000 -#define R92C_TXAGC_B_CCK2_S 16 -#define R92C_TXAGC_B_CCK55_M 0xff000000 -#define R92C_TXAGC_B_CCK55_S 24 - -/* Bits for R92C_TXAGC_RATE18_06(x). */ -#define R92C_TXAGC_RATE06_M 0x000000ff -#define R92C_TXAGC_RATE06_S 0 -#define R92C_TXAGC_RATE09_M 0x0000ff00 -#define R92C_TXAGC_RATE09_S 8 -#define R92C_TXAGC_RATE12_M 0x00ff0000 -#define R92C_TXAGC_RATE12_S 16 -#define R92C_TXAGC_RATE18_M 0xff000000 -#define R92C_TXAGC_RATE18_S 24 - -/* Bits for R92C_TXAGC_RATE54_24(x). */ -#define R92C_TXAGC_RATE24_M 0x000000ff -#define R92C_TXAGC_RATE24_S 0 -#define R92C_TXAGC_RATE36_M 0x0000ff00 -#define R92C_TXAGC_RATE36_S 8 -#define R92C_TXAGC_RATE48_M 0x00ff0000 -#define R92C_TXAGC_RATE48_S 16 -#define R92C_TXAGC_RATE54_M 0xff000000 -#define R92C_TXAGC_RATE54_S 24 - -/* Bits for R92C_TXAGC_MCS03_MCS00(x). */ -#define R92C_TXAGC_MCS00_M 0x000000ff -#define R92C_TXAGC_MCS00_S 0 -#define R92C_TXAGC_MCS01_M 0x0000ff00 -#define R92C_TXAGC_MCS01_S 8 -#define R92C_TXAGC_MCS02_M 0x00ff0000 -#define R92C_TXAGC_MCS02_S 16 -#define R92C_TXAGC_MCS03_M 0xff000000 -#define R92C_TXAGC_MCS03_S 24 - -/* Bits for R92C_TXAGC_MCS07_MCS04(x). */ -#define R92C_TXAGC_MCS04_M 0x000000ff -#define R92C_TXAGC_MCS04_S 0 -#define R92C_TXAGC_MCS05_M 0x0000ff00 -#define R92C_TXAGC_MCS05_S 8 -#define R92C_TXAGC_MCS06_M 0x00ff0000 -#define R92C_TXAGC_MCS06_S 16 -#define R92C_TXAGC_MCS07_M 0xff000000 -#define R92C_TXAGC_MCS07_S 24 - -/* Bits for R92C_TXAGC_MCS11_MCS08(x). */ -#define R92C_TXAGC_MCS08_M 0x000000ff -#define R92C_TXAGC_MCS08_S 0 -#define R92C_TXAGC_MCS09_M 0x0000ff00 -#define R92C_TXAGC_MCS09_S 8 -#define R92C_TXAGC_MCS10_M 0x00ff0000 -#define R92C_TXAGC_MCS10_S 16 -#define R92C_TXAGC_MCS11_M 0xff000000 -#define R92C_TXAGC_MCS11_S 24 - -/* Bits for R92C_TXAGC_MCS15_MCS12(x). */ -#define R92C_TXAGC_MCS12_M 0x000000ff -#define R92C_TXAGC_MCS12_S 0 -#define R92C_TXAGC_MCS13_M 0x0000ff00 -#define R92C_TXAGC_MCS13_S 8 -#define R92C_TXAGC_MCS14_M 0x00ff0000 -#define R92C_TXAGC_MCS14_S 16 -#define R92C_TXAGC_MCS15_M 0xff000000 -#define R92C_TXAGC_MCS15_S 24 - -/* Bits for R92C_LSSI_PARAM(i). */ -#define R92C_LSSI_PARAM_DATA_M 0x000fffff -#define R92C_LSSI_PARAM_DATA_S 0 -#define R92C_LSSI_PARAM_ADDR_M 0x03f00000 -#define R92C_LSSI_PARAM_ADDR_S 20 -#define R88E_LSSI_PARAM_ADDR_M 0x0ff00000 -#define R88E_LSSI_PARAM_ADDR_S 20 - -/* Bits for R92C_FPGA0_ANAPARAM2. */ -#define R92C_FPGA0_ANAPARAM2_CBW20 0x00000400 - -/* Bits for R92C_LSSI_READBACK(i). */ -#define R92C_LSSI_READBACK_DATA_M 0x000fffff -#define R92C_LSSI_READBACK_DATA_S 0 - -/* Bits for R92C_OFDM0_AGCCORE1(i). */ -#define R92C_OFDM0_AGCCORE1_GAIN_M 0x0000007f -#define R92C_OFDM0_AGCCORE1_GAIN_S 0 - - -/* - * USB registers. - */ -#define R92C_USB_SUSPEND 0xfe10 -#define R92C_USB_INFO 0xfe17 -#define R92C_USB_SPECIAL_OPTION 0xfe55 -#define R92C_USB_HCPWM 0xfe57 -#define R92C_USB_HRPWM 0xfe58 -#define R92C_USB_DMA_AGG_TO 0xfe5b -#define R92C_USB_AGG_TO 0xfe5c -#define R92C_USB_AGG_TH 0xfe5d -#define R92C_USB_VID 0xfe60 -#define R92C_USB_PID 0xfe62 -#define R92C_USB_OPTIONAL 0xfe64 -#define R92C_USB_EP 0xfe65 -#define R92C_USB_PHY 0xfe68 -#define R92C_USB_MAC_ADDR 0xfe70 -#define R92C_USB_STRING 0xfe80 - -/* Bits for R92C_USB_SPECIAL_OPTION. */ -#define R92C_USB_SPECIAL_OPTION_AGG_EN 0x08 -#define R92C_USB_SPECIAL_OPTION_INT_BULK_SEL 0x10 - -/* Bits for R92C_USB_EP. */ -#define R92C_USB_EP_HQ_M 0x000f -#define R92C_USB_EP_HQ_S 0 -#define R92C_USB_EP_NQ_M 0x00f0 -#define R92C_USB_EP_NQ_S 4 -#define R92C_USB_EP_LQ_M 0x0f00 -#define R92C_USB_EP_LQ_S 8 - - -/* - * Firmware base address. - */ -#define R92C_FW_START_ADDR 0x1000 -#define R92C_FW_PAGE_SIZE 4096 - - -/* - * RF (6052) registers. - */ -#define R92C_RF_AC 0x00 -#define R92C_RF_IQADJ_G(i) (0x01 + (i)) -#define R92C_RF_POW_TRSW 0x05 -#define R92C_RF_GAIN_RX 0x06 -#define R92C_RF_GAIN_TX 0x07 -#define R92C_RF_TXM_IDAC 0x08 -#define R92C_RF_BS_IQGEN 0x0f -#define R92C_RF_MODE1 0x10 -#define R92C_RF_MODE2 0x11 -#define R92C_RF_RX_AGC_HP 0x12 -#define R92C_RF_TX_AGC 0x13 -#define R92C_RF_BIAS 0x14 -#define R92C_RF_IPA 0x15 -#define R92C_RF_POW_ABILITY 0x17 -#define R92C_RF_CHNLBW 0x18 -#define R92C_RF_RX_G1 0x1a -#define R92C_RF_RX_G2 0x1b -#define R92C_RF_RX_BB2 0x1c -#define R92C_RF_RX_BB1 0x1d -#define R92C_RF_RCK1 0x1e -#define R92C_RF_RCK2 0x1f -#define R92C_RF_TX_G(i) (0x20 + (i)) -#define R92C_RF_TX_BB1 0x23 -#define R92C_RF_T_METER 0x24 -#define R92C_RF_SYN_G(i) (0x25 + (i)) -#define R92C_RF_RCK_OS 0x30 -#define R92C_RF_TXPA_G(i) (0x31 + (i)) -#define R88E_RF_T_METER 0x42 - -/* Bits for R92C_RF_AC. */ -#define R92C_RF_AC_MODE_M 0x70000 -#define R92C_RF_AC_MODE_S 16 -#define R92C_RF_AC_MODE_STANDBY 1 - -/* Bits for R92C_RF_CHNLBW. */ -#define R92C_RF_CHNLBW_CHNL_M 0x003ff -#define R92C_RF_CHNLBW_CHNL_S 0 -#define R92C_RF_CHNLBW_BW20 0x00400 -#define R88E_RF_CHNLBW_BW20 0x00c00 -#define R92C_RF_CHNLBW_LCSTART 0x08000 - -/* Bits for R92C_RF_T_METER. */ -#define R92C_RF_T_METER_START 0x60 -#define R92C_RF_T_METER_VAL_M 0x1f -#define R92C_RF_T_METER_VAL_S 0 - -/* Bits for R88E_RF_T_METER. */ -#define R88E_RF_T_METER_VAL_M 0x0fc00 -#define R88E_RF_T_METER_VAL_S 10 -#define R88E_RF_T_METER_START 0x30000 - - -/* - * CAM entries. - */ -#define R92C_CAM_ENTRY_COUNT 32 - -#define R92C_CAM_CTL0(entry) ((entry) * 8 + 0) -#define R92C_CAM_CTL1(entry) ((entry) * 8 + 1) -#define R92C_CAM_KEY(entry, i) ((entry) * 8 + 2 + (i)) -#define R92C_CAM_CTL6(entry) ((entry) * 8 + 6) -#define R92C_CAM_CTL7(entry) ((entry) * 8 + 7) - -/* Bits for R92C_CAM_CTL0(i). */ -#define R92C_CAM_KEYID_M 0x00000003 -#define R92C_CAM_KEYID_S 0 -#define R92C_CAM_ALGO_M 0x0000001c -#define R92C_CAM_ALGO_S 2 -#define R92C_CAM_ALGO_NONE 0 -#define R92C_CAM_ALGO_WEP40 1 -#define R92C_CAM_ALGO_TKIP 2 -#define R92C_CAM_ALGO_AES 4 -#define R92C_CAM_ALGO_WEP104 5 -#define R92C_CAM_VALID 0x00008000 -#define R92C_CAM_MACLO_M 0xffff0000 -#define R92C_CAM_MACLO_S 16 - -/* Rate adaptation modes. */ -#define R92C_RAID_11GN 1 -#define R92C_RAID_11N 3 -#define R92C_RAID_11BG 4 -#define R92C_RAID_11G 5 /* "pure" 11g */ -#define R92C_RAID_11B 6 - - -/* - * Macros to access subfields in registers. - */ -/* Mask and Shift (getter). */ -#define MS(val, field) \ - (((val) & field##_M) >> field##_S) - -/* Shift and Mask (setter). */ -#define SM(field, val) \ - (((val) << field##_S) & field##_M) - -/* Rewrite. */ -#define RW(var, field, val) \ - (((var) & ~field##_M) | SM(field, val)) - -/* - * Firmware image header. - */ -struct r92c_fw_hdr { - /* QWORD0 */ - uint16_t signature; - uint8_t category; - uint8_t function; - uint16_t version; - uint16_t subversion; - /* QWORD1 */ - uint8_t month; - uint8_t date; - uint8_t hour; - uint8_t minute; - uint16_t ramcodesize; - uint16_t reserved2; - /* QWORD2 */ - uint32_t svnidx; - uint32_t reserved3; - /* QWORD3 */ - uint32_t reserved4; - uint32_t reserved5; -} __packed; - -/* - * Host to firmware commands. - */ -struct r92c_fw_cmd { - uint8_t id; -#define R92C_CMD_AP_OFFLOAD 0 -#define R92C_CMD_SET_PWRMODE 1 -#define R92C_CMD_JOINBSS_RPT 2 -#define R92C_CMD_RSVD_PAGE 3 -#define R92C_CMD_RSSI 4 -#define R92C_CMD_RSSI_SETTING 5 -#define R92C_CMD_MACID_CONFIG 6 -#define R92C_CMD_MACID_PS_MODE 7 -#define R92C_CMD_P2P_PS_OFFLOAD 8 -#define R92C_CMD_SELECTIVE_SUSPEND 9 -#define R92C_CMD_FLAG_EXT 0x80 - - uint8_t msg[5]; -} __packed; - -/* Structure for R92C_CMD_RSSI_SETTING. */ -struct r92c_fw_cmd_rssi { - uint8_t macid; - uint8_t reserved; - uint8_t pwdb; -} __packed; - -/* Structure for R92C_CMD_MACID_CONFIG. */ -struct r92c_fw_cmd_macid_cfg { - uint32_t mask; - uint8_t macid; -#define URTWN_MACID_BSS 0 -#define URTWN_MACID_BC 4 /* Broadcast. */ -#define R92C_MACID_MAX 31 -#define R88E_MACID_MAX 63 -#define URTWN_MACID_MAX(sc) (((sc)->chip & URTWN_CHIP_88E) ? \ - R88E_MACID_MAX : R92C_MACID_MAX) -#define URTWN_MACID_UNDEFINED (uint8_t)-1 -#define URTWN_MACID_VALID 0x80 -} __packed; - -/* - * RTL8192CU ROM image. - */ -struct r92c_rom { - uint16_t id; /* 0x8192 */ - uint8_t reserved1[5]; - uint8_t dbg_sel; - uint16_t reserved2; - uint16_t vid; - uint16_t pid; - uint8_t usb_opt; - uint8_t ep_setting; - uint16_t reserved3; - uint8_t usb_phy; - uint8_t reserved4[3]; - uint8_t macaddr[IEEE80211_ADDR_LEN]; - uint8_t string[61]; /* "Realtek" */ - uint8_t subcustomer_id; - uint8_t cck_tx_pwr[R92C_MAX_CHAINS][3]; - uint8_t ht40_1s_tx_pwr[R92C_MAX_CHAINS][3]; - uint8_t ht40_2s_tx_pwr_diff[3]; - uint8_t ht20_tx_pwr_diff[3]; - uint8_t ofdm_tx_pwr_diff[3]; - uint8_t ht40_max_pwr[3]; - uint8_t ht20_max_pwr[3]; - uint8_t xtal_calib; - uint8_t tssi[R92C_MAX_CHAINS]; - uint8_t thermal_meter; - uint8_t rf_opt1; -#define R92C_ROM_RF1_REGULATORY_M 0x07 -#define R92C_ROM_RF1_REGULATORY_S 0 -#define R92C_ROM_RF1_BOARD_TYPE_M 0xe0 -#define R92C_ROM_RF1_BOARD_TYPE_S 5 -#define R92C_BOARD_TYPE_DONGLE 0 -#define R92C_BOARD_TYPE_HIGHPA 1 -#define R92C_BOARD_TYPE_MINICARD 2 -#define R92C_BOARD_TYPE_SOLO 3 -#define R92C_BOARD_TYPE_COMBO 4 - - uint8_t rf_opt2; - uint8_t rf_opt3; - uint8_t rf_opt4; - uint8_t channel_plan; -#define R92C_CHANNEL_PLAN_BY_HW 0x80 - - uint8_t version; - uint8_t customer_id; -} __packed; - -/* - * RTL8188EU ROM image. - */ -struct r88e_rom { - uint8_t reserved1[16]; - uint8_t cck_tx_pwr[6]; - uint8_t ht40_tx_pwr[5]; - uint8_t tx_pwr_diff; - uint8_t reserved2[156]; - uint8_t channel_plan; - uint8_t crystalcap; - uint8_t reserved3[7]; - uint8_t rf_board_opt; - uint8_t rf_feature_opt; - uint8_t rf_bt_opt; - uint8_t version; - uint8_t customer_id; - uint8_t reserved4[3]; - uint8_t rf_ant_opt; - uint8_t reserved5[6]; - uint16_t vid; - uint16_t pid; - uint8_t usb_opt; - uint8_t reserved6[2]; - uint8_t macaddr[IEEE80211_ADDR_LEN]; - uint8_t reserved7[2]; - uint8_t string[33]; /* "realtek 802.11n NIC" */ - uint8_t reserved8[256]; -} __packed; - -#define URTWN_EFUSE_MAX_LEN 512 - -/* Rx MAC descriptor. */ -struct r92c_rx_stat { - uint32_t rxdw0; -#define R92C_RXDW0_PKTLEN_M 0x00003fff -#define R92C_RXDW0_PKTLEN_S 0 -#define R92C_RXDW0_CRCERR 0x00004000 -#define R92C_RXDW0_ICVERR 0x00008000 -#define R92C_RXDW0_INFOSZ_M 0x000f0000 -#define R92C_RXDW0_INFOSZ_S 16 -#define R92C_RXDW0_CIPHER_M 0x00700000 -#define R92C_RXDW0_CIPHER_S 20 -#define R92C_RXDW0_QOS 0x00800000 -#define R92C_RXDW0_SHIFT_M 0x03000000 -#define R92C_RXDW0_SHIFT_S 24 -#define R92C_RXDW0_PHYST 0x04000000 -#define R92C_RXDW0_DECRYPTED 0x08000000 - - uint32_t rxdw1; - uint32_t rxdw2; -#define R92C_RXDW2_PKTCNT_M 0x00ff0000 -#define R92C_RXDW2_PKTCNT_S 16 - - uint32_t rxdw3; -#define R92C_RXDW3_RATE_M 0x0000003f -#define R92C_RXDW3_RATE_S 0 -#define R92C_RXDW3_HT 0x00000040 -#define R92C_RXDW3_HTC 0x00000400 -#define R88E_RXDW3_RPT_M 0x0000c000 -#define R88E_RXDW3_RPT_S 14 -#define R88E_RXDW3_RPT_RX 0 -#define R88E_RXDW3_RPT_TX1 1 -#define R88E_RXDW3_RPT_TX2 2 - - uint32_t rxdw4; - uint32_t rxdw5; -} __packed __attribute__((aligned(4))); - -/* Rx PHY descriptor. */ -struct r92c_rx_phystat { - uint32_t phydw0; - uint32_t phydw1; - uint32_t phydw2; - uint32_t phydw3; - uint32_t phydw4; - uint32_t phydw5; - uint32_t phydw6; - uint32_t phydw7; -} __packed __attribute__((aligned(4))); - -/* Rx PHY CCK descriptor. */ -struct r92c_rx_cck { - uint8_t adc_pwdb[4]; - uint8_t sq_rpt; - uint8_t agc_rpt; -} __packed; - -struct r88e_rx_cck { - uint8_t path_agc[2]; - uint8_t chan; - uint8_t reserved1; - uint8_t sig_qual; - uint8_t agc_rpt; - uint8_t rpt_b; - uint8_t reserved2; - uint8_t noise_power; - uint8_t path_cfotail[2]; - uint8_t pcts_mask[2]; - uint8_t stream_rxevm[2]; - uint8_t path_rxsnr[2]; - uint8_t noise_power_db_lsb; - uint8_t reserved3[3]; - uint8_t stream_csi[2]; - uint8_t stream_target_csi[2]; - uint8_t sig_evm; -} __packed; - -/* Tx MAC descriptor. */ -struct r92c_tx_desc { - uint32_t txdw0; -#define R92C_TXDW0_PKTLEN_M 0x0000ffff -#define R92C_TXDW0_PKTLEN_S 0 -#define R92C_TXDW0_OFFSET_M 0x00ff0000 -#define R92C_TXDW0_OFFSET_S 16 -#define R92C_TXDW0_BMCAST 0x01000000 -#define R92C_TXDW0_LSG 0x04000000 -#define R92C_TXDW0_FSG 0x08000000 -#define R92C_TXDW0_OWN 0x80000000 - - uint32_t txdw1; -#define R92C_TXDW1_MACID_M 0x0000001f -#define R92C_TXDW1_MACID_S 0 -#define R88E_TXDW1_MACID_M 0x0000003f -#define R88E_TXDW1_MACID_S 0 -#define R92C_TXDW1_AGGEN 0x00000020 -#define R92C_TXDW1_AGGBK 0x00000040 -#define R92C_TXDW1_QSEL_M 0x00001f00 -#define R92C_TXDW1_QSEL_S 8 - -#define R92C_TXDW1_QSEL_BE 0x00 /* or 0x03 */ -#define R92C_TXDW1_QSEL_BK 0x01 /* or 0x02 */ -#define R92C_TXDW1_QSEL_VI 0x04 /* or 0x05 */ -#define R92C_TXDW1_QSEL_VO 0x06 /* or 0x07 */ -#define URTWN_MAX_TID 8 - -#define R92C_TXDW1_QSEL_BEACON 0x10 -#define R92C_TXDW1_QSEL_MGNT 0x12 - -#define R92C_TXDW1_RAID_M 0x000f0000 -#define R92C_TXDW1_RAID_S 16 -#define R92C_TXDW1_CIPHER_M 0x00c00000 -#define R92C_TXDW1_CIPHER_S 22 -#define R92C_TXDW1_CIPHER_NONE 0 -#define R92C_TXDW1_CIPHER_RC4 1 -#define R92C_TXDW1_CIPHER_AES 3 -#define R92C_TXDW1_PKTOFF_M 0x7c000000 -#define R92C_TXDW1_PKTOFF_S 26 - - uint32_t txdw2; -#define R88E_TXDW2_AGGBK 0x00010000 -#define R88E_TXDW2_CCX_RPT 0x00080000 - - uint16_t txdw3; - uint16_t txdseq; -#define R88E_TXDSEQ_HWSEQ_EN 0x8000 - - uint32_t txdw4; -#define R92C_TXDW4_RTSRATE_M 0x0000003f -#define R92C_TXDW4_RTSRATE_S 0 -#define R92C_TXDW4_HWSEQ_QOS 0x00000040 -#define R92C_TXDW4_HWSEQ_EN 0x00000080 -#define R92C_TXDW4_DRVRATE 0x00000100 -#define R92C_TXDW4_CTS2SELF 0x00000800 -#define R92C_TXDW4_RTSEN 0x00001000 -#define R92C_TXDW4_HWRTSEN 0x00002000 -#define R92C_TXDW4_SCO_M 0x003f0000 -#define R92C_TXDW4_SCO_S 20 -#define R92C_TXDW4_SCO_SCA 1 -#define R92C_TXDW4_SCO_SCB 2 -#define R92C_TXDW4_40MHZ 0x02000000 - - uint32_t txdw5; -#define R92C_TXDW5_DATARATE_M 0x0000003f -#define R92C_TXDW5_DATARATE_S 0 -#define R92C_TXDW5_SGI 0x00000040 -#define R92C_TXDW5_RTY_LMT_ENA 0x00020000 -#define R92C_TXDW5_RTY_LMT_M 0x00fc0000 -#define R92C_TXDW5_RTY_LMT_S 18 -#define R92C_TXDW5_AGGNUM_M 0xff000000 -#define R92C_TXDW5_AGGNUM_S 24 - - uint32_t txdw6; - uint16_t txdsum; - uint16_t pad; -} __packed __attribute__((aligned(4))); - -struct r88e_tx_rpt_ccx { - uint8_t rptb0; - uint8_t rptb1; -#define R88E_RPTB1_MACID_M 0x3f -#define R88E_RPTB1_MACID_S 0 -#define R88E_RPTB1_PKT_OK 0x40 -#define R88E_RPTB1_BMC 0x80 - - uint8_t rptb2; -#define R88E_RPTB2_RETRY_CNT_M 0x3f -#define R88E_RPTB2_RETRY_CNT_S 0 -#define R88E_RPTB2_LIFE_EXPIRE 0x40 -#define R88E_RPTB2_RETRY_OVER 0x80 - - uint16_t ccx_qtime; - uint8_t final_rate; - uint8_t rptb6; -#define R88E_RPTB6_QSEL_M 0xf0 -#define R88E_RPTB6_QSEL_S 4 - - uint8_t rptb7; -} __packed; - - -static const uint8_t ridx2rate[] = - { 2, 4, 11, 22, 12, 18, 24, 36, 48, 72, 96, 108 }; - -/* HW rate indices. */ -#define URTWN_RIDX_CCK1 0 -#define URTWN_RIDX_CCK11 3 -#define URTWN_RIDX_OFDM6 4 -#define URTWN_RIDX_OFDM24 8 -#define URTWN_RIDX_OFDM54 11 - -#define URTWN_RIDX_COUNT 28 -#define URTWN_RIDX_UNKNOWN (uint8_t)-1 - - -/* - * MAC initialization values. - */ -static const struct { - uint16_t reg; - uint8_t val; -} rtl8188eu_mac[] = { - { 0x026, 0x41 }, { 0x027, 0x35 }, { 0x040, 0x00 }, { 0x428, 0x0a }, - { 0x429, 0x10 }, { 0x430, 0x00 }, { 0x431, 0x01 }, { 0x432, 0x02 }, - { 0x433, 0x04 }, { 0x434, 0x05 }, { 0x435, 0x06 }, { 0x436, 0x07 }, - { 0x437, 0x08 }, { 0x438, 0x00 }, { 0x439, 0x00 }, { 0x43a, 0x01 }, - { 0x43b, 0x02 }, { 0x43c, 0x04 }, { 0x43d, 0x05 }, { 0x43e, 0x06 }, - { 0x43f, 0x07 }, { 0x440, 0x5d }, { 0x441, 0x01 }, { 0x442, 0x00 }, - { 0x444, 0x15 }, { 0x445, 0xf0 }, { 0x446, 0x0f }, { 0x447, 0x00 }, - { 0x458, 0x41 }, { 0x459, 0xa8 }, { 0x45a, 0x72 }, { 0x45b, 0xb9 }, - { 0x460, 0x66 }, { 0x461, 0x66 }, { 0x480, 0x08 }, { 0x4c8, 0xff }, - { 0x4c9, 0x08 }, { 0x4cc, 0xff }, { 0x4cd, 0xff }, { 0x4ce, 0x01 }, - { 0x4d3, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 }, { 0x502, 0x2f }, - { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 }, { 0x506, 0x5e }, - { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 }, { 0x50a, 0x5e }, - { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 }, { 0x50e, 0x00 }, - { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a }, { 0x516, 0x0a }, - { 0x525, 0x4f }, { 0x550, 0x10 }, { 0x551, 0x10 }, { 0x559, 0x02 }, - { 0x55d, 0xff }, { 0x605, 0x30 }, { 0x608, 0x0e }, { 0x609, 0x2a }, - { 0x620, 0xff }, { 0x621, 0xff }, { 0x622, 0xff }, { 0x623, 0xff }, - { 0x624, 0xff }, { 0x625, 0xff }, { 0x626, 0xff }, { 0x627, 0xff }, - { 0x652, 0x20 }, { 0x63c, 0x0a }, { 0x63d, 0x0a }, { 0x63e, 0x0e }, - { 0x63f, 0x0e }, { 0x640, 0x40 }, { 0x66e, 0x05 }, { 0x700, 0x21 }, - { 0x701, 0x43 }, { 0x702, 0x65 }, { 0x703, 0x87 }, { 0x708, 0x21 }, - { 0x709, 0x43 }, { 0x70a, 0x65 }, { 0x70b, 0x87 } -}, rtl8192cu_mac[] = { - { 0x420, 0x80 }, { 0x423, 0x00 }, { 0x430, 0x00 }, { 0x431, 0x00 }, - { 0x432, 0x00 }, { 0x433, 0x01 }, { 0x434, 0x04 }, { 0x435, 0x05 }, - { 0x436, 0x06 }, { 0x437, 0x07 }, { 0x438, 0x00 }, { 0x439, 0x00 }, - { 0x43a, 0x00 }, { 0x43b, 0x01 }, { 0x43c, 0x04 }, { 0x43d, 0x05 }, - { 0x43e, 0x06 }, { 0x43f, 0x07 }, { 0x440, 0x5d }, { 0x441, 0x01 }, - { 0x442, 0x00 }, { 0x444, 0x15 }, { 0x445, 0xf0 }, { 0x446, 0x0f }, - { 0x447, 0x00 }, { 0x458, 0x41 }, { 0x459, 0xa8 }, { 0x45a, 0x72 }, - { 0x45b, 0xb9 }, { 0x460, 0x66 }, { 0x461, 0x66 }, { 0x462, 0x08 }, - { 0x463, 0x03 }, { 0x4c8, 0xff }, { 0x4c9, 0x08 }, { 0x4cc, 0xff }, - { 0x4cd, 0xff }, { 0x4ce, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 }, - { 0x502, 0x2f }, { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 }, - { 0x506, 0x5e }, { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 }, - { 0x50a, 0x5e }, { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 }, - { 0x50e, 0x00 }, { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a }, - { 0x515, 0x10 }, { 0x516, 0x0a }, { 0x517, 0x10 }, { 0x51a, 0x16 }, - { 0x524, 0x0f }, { 0x525, 0x4f }, { 0x546, 0x40 }, { 0x547, 0x00 }, - { 0x550, 0x10 }, { 0x551, 0x10 }, { 0x559, 0x02 }, { 0x55a, 0x02 }, - { 0x55d, 0xff }, { 0x605, 0x30 }, { 0x608, 0x0e }, { 0x609, 0x2a }, - { 0x652, 0x20 }, { 0x63c, 0x0a }, { 0x63d, 0x0e }, { 0x63e, 0x0a }, - { 0x63f, 0x0e }, { 0x66e, 0x05 }, { 0x700, 0x21 }, { 0x701, 0x43 }, - { 0x702, 0x65 }, { 0x703, 0x87 }, { 0x708, 0x21 }, { 0x709, 0x43 }, - { 0x70a, 0x65 }, { 0x70b, 0x87 } -}; - -/* - * Baseband initialization values. - */ -struct urtwn_bb_prog { - int count; - const uint16_t *regs; - const uint32_t *vals; - int agccount; - const uint32_t *agcvals; -}; - -/* - * RTL8192CU and RTL8192CE-VAU. - */ -static const uint16_t rtl8192ce_bb_regs[] = { - 0x024, 0x028, 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, - 0x81c, 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, - 0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, 0x860, - 0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880, 0x884, - 0x888, 0x88c, 0x890, 0x894, 0x898, 0x89c, 0x900, 0x904, 0x908, - 0x90c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c, - 0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xc00, 0xc04, 0xc08, - 0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, 0xc20, 0xc24, 0xc28, 0xc2c, - 0xc30, 0xc34, 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, - 0xc54, 0xc58, 0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, 0xc74, - 0xc78, 0xc7c, 0xc80, 0xc84, 0xc88, 0xc8c, 0xc90, 0xc94, 0xc98, - 0xc9c, 0xca0, 0xca4, 0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8, 0xcbc, - 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc, 0xce0, - 0xce4, 0xce8, 0xcec, 0xd00, 0xd04, 0xd08, 0xd0c, 0xd10, 0xd14, - 0xd18, 0xd2c, 0xd30, 0xd34, 0xd38, 0xd3c, 0xd40, 0xd44, 0xd48, - 0xd4c, 0xd50, 0xd54, 0xd58, 0xd5c, 0xd60, 0xd64, 0xd68, 0xd6c, - 0xd70, 0xd74, 0xd78, 0xe00, 0xe04, 0xe08, 0xe10, 0xe14, 0xe18, - 0xe1c, 0xe28, 0xe30, 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44, 0xe48, - 0xe4c, 0xe50, 0xe54, 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c, 0xe70, - 0xe74, 0xe78, 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0, 0xed4, - 0xed8, 0xedc, 0xee0, 0xeec, 0xf14, 0xf4c, 0xf00 -}; - -static const uint32_t rtl8192ce_bb_vals[] = { - 0x0011800d, 0x00ffdb83, 0x80040002, 0x00000003, 0x0000fc00, - 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, - 0x01000100, 0x00390004, 0x01000100, 0x00390004, 0x27272727, - 0x27272727, 0x27272727, 0x27272727, 0x00010000, 0x00010000, - 0x27272727, 0x27272727, 0x00000000, 0x00000000, 0x569a569a, - 0x0c1b25a4, 0x66e60230, 0x061f0130, 0x27272727, 0x2b2b2b27, - 0x07000700, 0x22184000, 0x08080808, 0x00000000, 0xc0083070, - 0x000004d5, 0x00000000, 0xcc0000c0, 0x00000800, 0xfffffffe, - 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, - 0x81121313, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, - 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, - 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, - 0x48071d40, 0x03a05633, 0x000000e4, 0x6c6c6c6c, 0x08800000, - 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, - 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, - 0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000, - 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db, - 0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100, - 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, - 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, - 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, - 0x00080740, 0x00020403, 0x0000907f, 0x20010201, 0xa0633333, - 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, - 0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064, - 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, - 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, - 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, - 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, - 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, - 0x02140102, 0x28160d05, 0x00000010, 0x001b25a4, 0x63db25a4, - 0x63db25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, - 0x63db25a4, 0x0c1b25a4, 0x63db25a4, 0x63db25a4, 0x63db25a4, - 0x63db25a4, 0x001b25a4, 0x001b25a4, 0x6fdb25a4, 0x00000003, - 0x00000000, 0x00000300 -}; - -static const uint32_t rtl8192ce_agc_vals[] = { - 0x7b000001, 0x7b010001, 0x7b020001, 0x7b030001, 0x7b040001, - 0x7b050001, 0x7a060001, 0x79070001, 0x78080001, 0x77090001, - 0x760a0001, 0x750b0001, 0x740c0001, 0x730d0001, 0x720e0001, - 0x710f0001, 0x70100001, 0x6f110001, 0x6e120001, 0x6d130001, - 0x6c140001, 0x6b150001, 0x6a160001, 0x69170001, 0x68180001, - 0x67190001, 0x661a0001, 0x651b0001, 0x641c0001, 0x631d0001, - 0x621e0001, 0x611f0001, 0x60200001, 0x49210001, 0x48220001, - 0x47230001, 0x46240001, 0x45250001, 0x44260001, 0x43270001, - 0x42280001, 0x41290001, 0x402a0001, 0x262b0001, 0x252c0001, - 0x242d0001, 0x232e0001, 0x222f0001, 0x21300001, 0x20310001, - 0x06320001, 0x05330001, 0x04340001, 0x03350001, 0x02360001, - 0x01370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001, - 0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001, 0x7b400001, - 0x7b410001, 0x7b420001, 0x7b430001, 0x7b440001, 0x7b450001, - 0x7a460001, 0x79470001, 0x78480001, 0x77490001, 0x764a0001, - 0x754b0001, 0x744c0001, 0x734d0001, 0x724e0001, 0x714f0001, - 0x70500001, 0x6f510001, 0x6e520001, 0x6d530001, 0x6c540001, - 0x6b550001, 0x6a560001, 0x69570001, 0x68580001, 0x67590001, - 0x665a0001, 0x655b0001, 0x645c0001, 0x635d0001, 0x625e0001, - 0x615f0001, 0x60600001, 0x49610001, 0x48620001, 0x47630001, - 0x46640001, 0x45650001, 0x44660001, 0x43670001, 0x42680001, - 0x41690001, 0x406a0001, 0x266b0001, 0x256c0001, 0x246d0001, - 0x236e0001, 0x226f0001, 0x21700001, 0x20710001, 0x06720001, - 0x05730001, 0x04740001, 0x03750001, 0x02760001, 0x01770001, - 0x00780001, 0x00790001, 0x007a0001, 0x007b0001, 0x007c0001, - 0x007d0001, 0x007e0001, 0x007f0001, 0x3800001e, 0x3801001e, - 0x3802001e, 0x3803001e, 0x3804001e, 0x3805001e, 0x3806001e, - 0x3807001e, 0x3808001e, 0x3c09001e, 0x3e0a001e, 0x400b001e, - 0x440c001e, 0x480d001e, 0x4c0e001e, 0x500f001e, 0x5210001e, - 0x5611001e, 0x5a12001e, 0x5e13001e, 0x6014001e, 0x6015001e, - 0x6016001e, 0x6217001e, 0x6218001e, 0x6219001e, 0x621a001e, - 0x621b001e, 0x621c001e, 0x621d001e, 0x621e001e, 0x621f001e -}; - -static const struct urtwn_bb_prog rtl8192ce_bb_prog = { - nitems(rtl8192ce_bb_regs), - rtl8192ce_bb_regs, - rtl8192ce_bb_vals, - nitems(rtl8192ce_agc_vals), - rtl8192ce_agc_vals -}; - -/* - * RTL8188CU. - */ -static const uint32_t rtl8192cu_bb_vals[] = { - 0x0011800d, 0x00ffdb83, 0x80040002, 0x00000003, 0x0000fc00, - 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, - 0x01000100, 0x00390004, 0x01000100, 0x00390004, 0x27272727, - 0x27272727, 0x27272727, 0x27272727, 0x00010000, 0x00010000, - 0x27272727, 0x27272727, 0x00000000, 0x00000000, 0x569a569a, - 0x0c1b25a4, 0x66e60230, 0x061f0130, 0x27272727, 0x2b2b2b27, - 0x07000700, 0x22184000, 0x08080808, 0x00000000, 0xc0083070, - 0x000004d5, 0x00000000, 0xcc0000c0, 0x00000800, 0xfffffffe, - 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, - 0x81121313, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, - 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, - 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, - 0x48071d40, 0x03a05633, 0x000000e4, 0x6c6c6c6c, 0x08800000, - 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, - 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, - 0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000, - 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x0186115b, - 0x0000001f, 0x00b99612, 0x40000100, 0x20f60000, 0x40000100, - 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, - 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, - 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, - 0x00080740, 0x00020403, 0x0000907f, 0x20010201, 0xa0633333, - 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, - 0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064, - 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, - 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, - 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, - 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, - 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, - 0x02140102, 0x28160d05, 0x00000010, 0x001b25a4, 0x63db25a4, - 0x63db25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, - 0x63db25a4, 0x0c1b25a4, 0x63db25a4, 0x63db25a4, 0x63db25a4, - 0x63db25a4, 0x001b25a4, 0x001b25a4, 0x6fdb25a4, 0x00000003, - 0x00000000, 0x00000300 -}; - -static const struct urtwn_bb_prog rtl8192cu_bb_prog = { - nitems(rtl8192ce_bb_regs), - rtl8192ce_bb_regs, - rtl8192cu_bb_vals, - nitems(rtl8192ce_agc_vals), - rtl8192ce_agc_vals -}; - -/* - * RTL8188CE-VAU. - */ -static const uint32_t rtl8188ce_bb_vals[] = { - 0x0011800d, 0x00ffdb83, 0x80040000, 0x00000001, 0x0000fc00, - 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, - 0x01000100, 0x00390004, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x569a569a, - 0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, 0x32323200, - 0x07000700, 0x22004000, 0x00000808, 0x00000000, 0xc0083070, - 0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, 0xfffffffe, - 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, - 0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, - 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, - 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, - 0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000, - 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, - 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, - 0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000, - 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db, - 0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100, - 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, - 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, - 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, - 0x00080740, 0x00020401, 0x0000907f, 0x20010201, 0xa0633333, - 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, - 0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064, - 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, - 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, - 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, - 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, - 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, - 0x02140102, 0x28160d05, 0x00000008, 0x001b25a4, 0x631b25a0, - 0x631b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, - 0x631b25a0, 0x081b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0, - 0x631b25a0, 0x001b25a0, 0x001b25a0, 0x6b1b25a0, 0x00000003, - 0x00000000, 0x00000300 -}; - -static const uint32_t rtl8188ce_agc_vals[] = { - 0x7b000001, 0x7b010001, 0x7b020001, 0x7b030001, 0x7b040001, - 0x7b050001, 0x7a060001, 0x79070001, 0x78080001, 0x77090001, - 0x760a0001, 0x750b0001, 0x740c0001, 0x730d0001, 0x720e0001, - 0x710f0001, 0x70100001, 0x6f110001, 0x6e120001, 0x6d130001, - 0x6c140001, 0x6b150001, 0x6a160001, 0x69170001, 0x68180001, - 0x67190001, 0x661a0001, 0x651b0001, 0x641c0001, 0x631d0001, - 0x621e0001, 0x611f0001, 0x60200001, 0x49210001, 0x48220001, - 0x47230001, 0x46240001, 0x45250001, 0x44260001, 0x43270001, - 0x42280001, 0x41290001, 0x402a0001, 0x262b0001, 0x252c0001, - 0x242d0001, 0x232e0001, 0x222f0001, 0x21300001, 0x20310001, - 0x06320001, 0x05330001, 0x04340001, 0x03350001, 0x02360001, - 0x01370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001, - 0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001, 0x7b400001, - 0x7b410001, 0x7b420001, 0x7b430001, 0x7b440001, 0x7b450001, - 0x7a460001, 0x79470001, 0x78480001, 0x77490001, 0x764a0001, - 0x754b0001, 0x744c0001, 0x734d0001, 0x724e0001, 0x714f0001, - 0x70500001, 0x6f510001, 0x6e520001, 0x6d530001, 0x6c540001, - 0x6b550001, 0x6a560001, 0x69570001, 0x68580001, 0x67590001, - 0x665a0001, 0x655b0001, 0x645c0001, 0x635d0001, 0x625e0001, - 0x615f0001, 0x60600001, 0x49610001, 0x48620001, 0x47630001, - 0x46640001, 0x45650001, 0x44660001, 0x43670001, 0x42680001, - 0x41690001, 0x406a0001, 0x266b0001, 0x256c0001, 0x246d0001, - 0x236e0001, 0x226f0001, 0x21700001, 0x20710001, 0x06720001, - 0x05730001, 0x04740001, 0x03750001, 0x02760001, 0x01770001, - 0x00780001, 0x00790001, 0x007a0001, 0x007b0001, 0x007c0001, - 0x007d0001, 0x007e0001, 0x007f0001, 0x3800001e, 0x3801001e, - 0x3802001e, 0x3803001e, 0x3804001e, 0x3805001e, 0x3806001e, - 0x3807001e, 0x3808001e, 0x3c09001e, 0x3e0a001e, 0x400b001e, - 0x440c001e, 0x480d001e, 0x4c0e001e, 0x500f001e, 0x5210001e, - 0x5611001e, 0x5a12001e, 0x5e13001e, 0x6014001e, 0x6015001e, - 0x6016001e, 0x6217001e, 0x6218001e, 0x6219001e, 0x621a001e, - 0x621b001e, 0x621c001e, 0x621d001e, 0x621e001e, 0x621f001e -}; - -static const struct urtwn_bb_prog rtl8188ce_bb_prog = { - nitems(rtl8192ce_bb_regs), - rtl8192ce_bb_regs, - rtl8188ce_bb_vals, - nitems(rtl8188ce_agc_vals), - rtl8188ce_agc_vals -}; - -static const uint32_t rtl8188cu_bb_vals[] = { - 0x0011800d, 0x00ffdb83, 0x80040000, 0x00000001, 0x0000fc00, - 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, - 0x01000100, 0x00390004, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x569a569a, - 0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, 0x32323200, - 0x07000700, 0x22004000, 0x00000808, 0x00000000, 0xc0083070, - 0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, 0xfffffffe, - 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, - 0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, - 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, - 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, - 0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000, - 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, - 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, - 0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000, - 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db, - 0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100, - 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, - 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, - 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, - 0x00080740, 0x00020401, 0x0000907f, 0x20010201, 0xa0633333, - 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, - 0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064, - 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, - 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, - 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, - 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, - 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, - 0x02140102, 0x28160d05, 0x00000008, 0x001b25a4, 0x631b25a0, - 0x631b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, - 0x631b25a0, 0x081b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0, - 0x631b25a0, 0x001b25a0, 0x001b25a0, 0x6b1b25a0, 0x00000003, - 0x00000000, 0x00000300 -}; - -static const struct urtwn_bb_prog rtl8188cu_bb_prog = { - nitems(rtl8192ce_bb_regs), - rtl8192ce_bb_regs, - rtl8188cu_bb_vals, - nitems(rtl8188ce_agc_vals), - rtl8188ce_agc_vals -}; - -/* - * RTL8188EU. - */ -static const uint16_t rtl8188eu_bb_regs[] = { - 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, 0x81c, - 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, - 0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, - 0x860, 0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, - 0x880, 0x884, 0x888, 0x88c, 0x890, 0x894, 0x898, 0x89c, - 0x900, 0x904, 0x908, 0x90c, 0x910, 0x914, 0xa00, 0xa04, - 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c, 0xa20, 0xa24, - 0xa28, 0xa2c, 0xa70, 0xa74, 0xa78, 0xa7c, 0xa80, 0xb2c, - 0xc00, 0xc04, 0xc08, 0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, - 0xc20, 0xc24, 0xc28, 0xc2c, 0xc30, 0xc34, 0xc38, 0xc3c, - 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, 0xc54, 0xc58, 0xc5c, - 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, 0xc74, 0xc78, 0xc7c, - 0xc80, 0xc84, 0xc88, 0xc8c, 0xc90, 0xc94, 0xc98, 0xc9c, - 0xca0, 0xca4, 0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8, 0xcbc, - 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc, - 0xce0, 0xce4, 0xce8, 0xcec, 0xd00, 0xd04, 0xd08, 0xd0c, - 0xd10, 0xd14, 0xd18, 0xd2c, 0xd30, 0xd34, 0xd38, 0xd3c, - 0xd40, 0xd44, 0xd48, 0xd4c, 0xd50, 0xd54, 0xd58, 0xd5c, - 0xd60, 0xd64, 0xd68, 0xd6c, 0xd70, 0xd74, 0xd78, 0xe00, - 0xe04, 0xe08, 0xe10, 0xe14, 0xe18, 0xe1c, 0xe28, 0xe30, - 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44, 0xe48, 0xe4c, 0xe50, - 0xe54, 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c, 0xe70, 0xe74, - 0xe78, 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0, 0xed4, - 0xed8, 0xedc, 0xee0, 0xee8, 0xeec, 0xf14, 0xf4c, 0xf00 -}; - -static const uint32_t rtl8188eu_bb_vals[] = { - 0x80040000, 0x00000003, 0x0000fc00, 0x0000000a, 0x10001331, - 0x020c3d10, 0x02200385, 0x00000000, 0x01000100, 0x00390204, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x569a11a9, 0x01000014, 0x66f60110, - 0x061f0649, 0x00000000, 0x27272700, 0x07000760, 0x25004000, - 0x00000808, 0x00000000, 0xb0000c1c, 0x00000001, 0x00000000, - 0xccc000c0, 0x00000800, 0xfffffffe, 0x40302010, 0x00706050, - 0x00000000, 0x00000023, 0x00000000, 0x81121111, 0x00000002, - 0x00000201, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e7f120f, - 0x9500bb78, 0x1114d028, 0x00881117, 0x89140f00, 0x1a1b0000, - 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, - 0x00000900, 0x225b0606, 0x218075b1, 0x80000000, 0x48071d40, - 0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000, 0x40000100, - 0x08800000, 0x40000100, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x69e9ac47, 0x469652af, 0x49795994, 0x0a97971c, - 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, 0x69553420, - 0x43bc0094, 0x00013169, 0x00250492, 0x00000000, 0x7112848b, - 0x47c00bff, 0x00000036, 0x2c7f000d, 0x020610db, 0x0000001f, - 0x00b91612, 0x390000e4, 0x20f60000, 0x40000100, 0x20200000, - 0x00091521, 0x00000000, 0x00121820, 0x00007f7f, 0x00000000, - 0x000300a0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x28000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x64b22427, 0x00766932, - 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, 0x00000740, - 0x00020401, 0x0000907f, 0x20010201, 0xa0633333, 0x3333bc43, - 0x7a8f5b6f, 0xcc979975, 0x00000000, 0x80608000, 0x00000000, - 0x00127353, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x6437140a, 0x00000000, 0x00000282, 0x30032064, 0x4653de68, - 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, 0x322c2220, - 0x000e3c24, 0x2d2d2d2d, 0x2d2d2d2d, 0x0390272d, 0x2d2d2d2d, - 0x2d2d2d2d, 0x2d2d2d2d, 0x2d2d2d2d, 0x00000000, 0x1000dc1f, - 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, 0x01004800, - 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, 0x02140102, - 0x28160d05, 0x00000008, 0x001b25a4, 0x00c00014, 0x00c00014, - 0x01000014, 0x01000014, 0x01000014, 0x01000014, 0x00c00014, - 0x01000014, 0x00c00014, 0x00c00014, 0x00c00014, 0x00c00014, - 0x00000014, 0x00000014, 0x21555448, 0x01c00014, 0x00000003, - 0x00000000, 0x00000300 -}; - -static const uint32_t rtl8188eu_agc_vals[] = { - 0xfb000001, 0xfb010001, 0xfb020001, 0xfb030001, 0xfb040001, - 0xfb050001, 0xfa060001, 0xf9070001, 0xf8080001, 0xf7090001, - 0xf60a0001, 0xf50b0001, 0xf40c0001, 0xf30d0001, 0xf20e0001, - 0xf10f0001, 0xf0100001, 0xef110001, 0xee120001, 0xed130001, - 0xec140001, 0xeb150001, 0xea160001, 0xe9170001, 0xe8180001, - 0xe7190001, 0xe61a0001, 0xe51b0001, 0xe41c0001, 0xe31d0001, - 0xe21e0001, 0xe11f0001, 0x8a200001, 0x89210001, 0x88220001, - 0x87230001, 0x86240001, 0x85250001, 0x84260001, 0x83270001, - 0x82280001, 0x6b290001, 0x6a2a0001, 0x692b0001, 0x682c0001, - 0x672d0001, 0x662e0001, 0x652f0001, 0x64300001, 0x63310001, - 0x62320001, 0x61330001, 0x46340001, 0x45350001, 0x44360001, - 0x43370001, 0x42380001, 0x41390001, 0x403a0001, 0x403b0001, - 0x403c0001, 0x403d0001, 0x403e0001, 0x403f0001, 0xfb400001, - 0xfb410001, 0xfb420001, 0xfb430001, 0xfb440001, 0xfb450001, - 0xfb460001, 0xfb470001, 0xfb480001, 0xfa490001, 0xf94a0001, - 0xf84B0001, 0xf74c0001, 0xf64d0001, 0xf54e0001, 0xf44f0001, - 0xf3500001, 0xf2510001, 0xf1520001, 0xf0530001, 0xef540001, - 0xee550001, 0xed560001, 0xec570001, 0xeb580001, 0xea590001, - 0xe95a0001, 0xe85b0001, 0xe75c0001, 0xe65d0001, 0xe55e0001, - 0xe45f0001, 0xe3600001, 0xe2610001, 0xc3620001, 0xc2630001, - 0xc1640001, 0x8b650001, 0x8a660001, 0x89670001, 0x88680001, - 0x87690001, 0x866a0001, 0x856b0001, 0x846c0001, 0x676d0001, - 0x666e0001, 0x656f0001, 0x64700001, 0x63710001, 0x62720001, - 0x61730001, 0x60740001, 0x46750001, 0x45760001, 0x44770001, - 0x43780001, 0x42790001, 0x417a0001, 0x407b0001, 0x407c0001, - 0x407d0001, 0x407e0001, 0x407f0001 -}; - -static const struct urtwn_bb_prog rtl8188eu_bb_prog = { - nitems(rtl8188eu_bb_regs), - rtl8188eu_bb_regs, - rtl8188eu_bb_vals, - nitems(rtl8188eu_agc_vals), - rtl8188eu_agc_vals -}; - -/* - * RTL8188RU. - */ -static const uint16_t rtl8188ru_bb_regs[] = { - 0x024, 0x028, 0x040, 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, - 0x818, 0x81c, 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, - 0x83c, 0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, - 0x860, 0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880, - 0x884, 0x888, 0x88c, 0x890, 0x894, 0x898, 0x89c, 0x900, 0x904, - 0x908, 0x90c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, - 0xa1c, 0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xc00, 0xc04, - 0xc08, 0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, 0xc20, 0xc24, 0xc28, - 0xc2c, 0xc30, 0xc34, 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, - 0xc50, 0xc54, 0xc58, 0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, - 0xc74, 0xc78, 0xc7c, 0xc80, 0xc84, 0xc88, 0xc8c, 0xc90, 0xc94, - 0xc98, 0xc9c, 0xca0, 0xca4, 0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8, - 0xcbc, 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc, - 0xce0, 0xce4, 0xce8, 0xcec, 0xd00, 0xd04, 0xd08, 0xd0c, 0xd10, - 0xd14, 0xd18, 0xd2c, 0xd30, 0xd34, 0xd38, 0xd3c, 0xd40, 0xd44, - 0xd48, 0xd4c, 0xd50, 0xd54, 0xd58, 0xd5c, 0xd60, 0xd64, 0xd68, - 0xd6c, 0xd70, 0xd74, 0xd78, 0xe00, 0xe04, 0xe08, 0xe10, 0xe14, - 0xe18, 0xe1c, 0xe28, 0xe30, 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44, - 0xe48, 0xe4c, 0xe50, 0xe54, 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c, - 0xe70, 0xe74, 0xe78, 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0, - 0xed4, 0xed8, 0xedc, 0xee0, 0xeec, 0xee8, 0xf14, 0xf4c, 0xf00 -}; - -static const uint32_t rtl8188ru_bb_vals[] = { - 0x0011800d, 0x00ffdb83, 0x000c0004, 0x80040000, 0x00000001, - 0x0000fc00, 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, - 0x00000000, 0x01000100, 0x00390204, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x569a569a, 0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, - 0x32323200, 0x03000300, 0x22004000, 0x00000808, 0x00ffc3f1, - 0xc0083070, 0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, - 0xfffffffe, 0x40302010, 0x00706050, 0x00000000, 0x00000023, - 0x00000000, 0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, - 0x2e68120f, 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, - 0x15160000, 0x070b0f12, 0x00000104, 0x00d30000, 0x101fbf00, - 0x00000007, 0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, - 0x08800000, 0x40000100, 0x08800000, 0x40000100, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, - 0x49795994, 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, - 0x007f037f, 0x6954342e, 0x43bc0094, 0x6954342f, 0x433c0094, - 0x00000000, 0x5116848b, 0x47c00bff, 0x00000036, 0x2c56000d, - 0x018610db, 0x0000001f, 0x00b91612, 0x24000090, 0x20f60000, - 0x24000090, 0x20200000, 0x00121820, 0x00000000, 0x00121820, - 0x00007f7f, 0x00000000, 0x00000080, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x28000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x64b22427, 0x00766932, 0x00222222, 0x00000000, 0x37644302, - 0x2f97d40c, 0x00080740, 0x00020401, 0x0000907f, 0x20010201, - 0xa0633333, 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, - 0x80608000, 0x00000000, 0x00027293, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x6437140a, 0x00000000, 0x00000000, - 0x30032064, 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, - 0x1812362e, 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, - 0x03902a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, - 0x00000000, 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, - 0x01007c00, 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, - 0x10008c1f, 0x02140102, 0x28160d05, 0x00000010, 0x001b25a4, - 0x631b25a0, 0x631b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, - 0x081b25a0, 0x631b25a0, 0x081b25a0, 0x631b25a0, 0x631b25a0, - 0x631b25a0, 0x631b25a0, 0x001b25a0, 0x001b25a0, 0x6b1b25a0, - 0x31555448, 0x00000003, 0x00000000, 0x00000300 -}; - -static const uint32_t rtl8188ru_agc_vals[] = { - 0x7b000001, 0x7b010001, 0x7b020001, 0x7b030001, 0x7b040001, - 0x7b050001, 0x7b060001, 0x7b070001, 0x7b080001, 0x7a090001, - 0x790a0001, 0x780b0001, 0x770c0001, 0x760d0001, 0x750e0001, - 0x740f0001, 0x73100001, 0x72110001, 0x71120001, 0x70130001, - 0x6f140001, 0x6e150001, 0x6d160001, 0x6c170001, 0x6b180001, - 0x6a190001, 0x691a0001, 0x681b0001, 0x671c0001, 0x661d0001, - 0x651e0001, 0x641f0001, 0x63200001, 0x62210001, 0x61220001, - 0x60230001, 0x46240001, 0x45250001, 0x44260001, 0x43270001, - 0x42280001, 0x41290001, 0x402a0001, 0x262b0001, 0x252c0001, - 0x242d0001, 0x232e0001, 0x222f0001, 0x21300001, 0x20310001, - 0x06320001, 0x05330001, 0x04340001, 0x03350001, 0x02360001, - 0x01370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001, - 0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001, 0x7b400001, - 0x7b410001, 0x7b420001, 0x7b430001, 0x7b440001, 0x7b450001, - 0x7b460001, 0x7b470001, 0x7b480001, 0x7a490001, 0x794a0001, - 0x784b0001, 0x774c0001, 0x764d0001, 0x754e0001, 0x744f0001, - 0x73500001, 0x72510001, 0x71520001, 0x70530001, 0x6f540001, - 0x6e550001, 0x6d560001, 0x6c570001, 0x6b580001, 0x6a590001, - 0x695a0001, 0x685b0001, 0x675c0001, 0x665d0001, 0x655e0001, - 0x645f0001, 0x63600001, 0x62610001, 0x61620001, 0x60630001, - 0x46640001, 0x45650001, 0x44660001, 0x43670001, 0x42680001, - 0x41690001, 0x406a0001, 0x266b0001, 0x256c0001, 0x246d0001, - 0x236e0001, 0x226f0001, 0x21700001, 0x20710001, 0x06720001, - 0x05730001, 0x04740001, 0x03750001, 0x02760001, 0x01770001, - 0x00780001, 0x00790001, 0x007a0001, 0x007b0001, 0x007c0001, - 0x007d0001, 0x007e0001, 0x007f0001, 0x3800001e, 0x3801001e, - 0x3802001e, 0x3803001e, 0x3804001e, 0x3805001e, 0x3806001e, - 0x3807001e, 0x3808001e, 0x3c09001e, 0x3e0a001e, 0x400b001e, - 0x440c001e, 0x480d001e, 0x4c0e001e, 0x500f001e, 0x5210001e, - 0x5611001e, 0x5a12001e, 0x5e13001e, 0x6014001e, 0x6015001e, - 0x6016001e, 0x6217001e, 0x6218001e, 0x6219001e, 0x621a001e, - 0x621b001e, 0x621c001e, 0x621d001e, 0x621e001e, 0x621f001e -}; - -static const struct urtwn_bb_prog rtl8188ru_bb_prog = { - nitems(rtl8188ru_bb_regs), - rtl8188ru_bb_regs, - rtl8188ru_bb_vals, - nitems(rtl8188ru_agc_vals), - rtl8188ru_agc_vals -}; - -/* - * RF initialization values. - */ -struct urtwn_rf_prog { - int count; - const uint8_t *regs; - const uint32_t *vals; -}; - -/* - * RTL8192CU and RTL8192CE-VAU. - */ -static const uint8_t rtl8192ce_rf1_regs[] = { - 0x00, 0x01, 0x02, 0x03, 0x04, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, - 0x0f, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, - 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2a, 0x2b, - 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, - 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, - 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, - 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, - 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, - 0x2c, 0x2a, 0x10, 0x11, 0x10, 0x11, 0x10, 0x11, 0x10, 0x11, 0x10, - 0x11, 0x10, 0x11, 0x10, 0x11, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, - 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, - 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, 0x16, 0x00, - 0x18, 0xfe, 0xfe, 0x1f, 0xfe, 0xfe, 0x1e, 0x1f, 0x00 -}; - -static const uint32_t rtl8192ce_rf1_vals[] = { - 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1, - 0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x00000, 0x10255, - 0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000, - 0x00000, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x577c0, - 0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808, - 0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003, - 0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d, - 0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333, - 0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a, - 0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a, - 0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d, - 0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333, - 0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f, - 0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500, - 0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0x32000, - 0x71000, 0xb0000, 0xfc000, 0x287af, 0x244b7, 0x204ab, 0x1c49f, - 0x18493, 0x14297, 0x10295, 0x0c298, 0x0819c, 0x040a8, 0x0001c, - 0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f424, 0x4f424, 0x8f424, - 0xcf424, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401, - 0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000, - 0x30159 -}; - -static const uint8_t rtl8192ce_rf2_regs[] = { - 0x00, 0x01, 0x02, 0x03, 0x04, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, - 0x0f, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, - 0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, - 0x15, 0x15, 0x16, 0x16, 0x16, 0x16 -}; - -static const uint32_t rtl8192ce_rf2_vals[] = { - 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1, - 0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x32000, 0x71000, - 0xb0000, 0xfc000, 0x287af, 0x244b7, 0x204ab, 0x1c49f, 0x18493, - 0x14297, 0x10295, 0x0c298, 0x0819c, 0x040a8, 0x0001c, 0x1944c, - 0x59444, 0x9944c, 0xd9444, 0x0f424, 0x4f424, 0x8f424, 0xcf424, - 0xe0330, 0xa0330, 0x60330, 0x20330 -}; - -static const struct urtwn_rf_prog rtl8192ce_rf_prog[] = { - { - nitems(rtl8192ce_rf1_regs), - rtl8192ce_rf1_regs, - rtl8192ce_rf1_vals - }, - { - nitems(rtl8192ce_rf2_regs), - rtl8192ce_rf2_regs, - rtl8192ce_rf2_vals - } -}; - -/* - * RTL8188CE-VAU. - */ -static const uint32_t rtl8188ce_rf_vals[] = { - 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1, - 0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x00000, 0x10255, - 0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000, - 0x00000, 0x01558, 0x00060, 0x00483, 0x4f200, 0xec7d9, 0x577c0, - 0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808, - 0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003, - 0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d, - 0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333, - 0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a, - 0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a, - 0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d, - 0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333, - 0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f, - 0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500, - 0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0x32000, - 0x71000, 0xb0000, 0xfc000, 0x287b3, 0x244b7, 0x204ab, 0x1c49f, - 0x18493, 0x1429b, 0x10299, 0x0c29c, 0x081a0, 0x040ac, 0x00020, - 0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f424, 0x4f424, 0x8f424, - 0xcf424, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401, - 0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000, - 0x30159 -}; - -static const struct urtwn_rf_prog rtl8188ce_rf_prog[] = { - { - nitems(rtl8192ce_rf1_regs), - rtl8192ce_rf1_regs, - rtl8188ce_rf_vals - } -}; - - -/* - * RTL8188CU. - */ -static const uint32_t rtl8188cu_rf_vals[] = { - 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1, - 0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x00000, 0x10255, - 0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000, - 0x00000, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x577c0, - 0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808, - 0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003, - 0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d, - 0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333, - 0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a, - 0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a, - 0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d, - 0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333, - 0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f, - 0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500, - 0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0x32000, - 0x71000, 0xb0000, 0xfc000, 0x287b3, 0x244b7, 0x204ab, 0x1c49f, - 0x18493, 0x1429b, 0x10299, 0x0c29c, 0x081a0, 0x040ac, 0x00020, - 0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f405, 0x4f405, 0x8f405, - 0xcf405, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401, - 0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000, - 0x30159 -}; - -static const struct urtwn_rf_prog rtl8188cu_rf_prog[] = { - { - nitems(rtl8192ce_rf1_regs), - rtl8192ce_rf1_regs, - rtl8188cu_rf_vals - } -}; - -/* - * RTL8188EU. - */ -static const uint8_t rtl8188eu_rf_regs[] = { - 0x00, 0x08, 0x18, 0x19, 0x1e, 0x1f, 0x2f, 0x3f, 0x42, 0x57, - 0x58, 0x67, 0x83, 0xb0, 0xb1, 0xb2, 0xb4, 0xb6, 0xb7, 0xb8, - 0xb9, 0xba, 0xbb, 0xbf, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, - 0xc8, 0xc9, 0xca, 0xdf, 0xef, 0x51, 0x52, 0x53, 0x56, - 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0xb6, 0x18, 0x5a, - 0x19, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, - 0x34, 0x34, 0x00, 0x84, 0x86, 0x87, 0x8e, 0x8f, 0xef, 0x3b, - 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, - 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xef, 0x00, 0x18, 0xfe, 0xfe, - 0x1f, 0xfe, 0xfe, 0x1e, 0x1f, 0x00 -}; - -static const uint32_t rtl8188eu_rf_vals[] = { - 0x30000, 0x84000, 0x00407, 0x00012, 0x80009, 0x00880, 0x1a060, - 0x00000, 0x060c0, 0xd0000, 0xbe180, 0x01552, 0x00000, 0xff8fc, - 0x54400, 0xccc19, 0x43003, 0x4953e, 0x1c718, 0x060ff, 0x80001, - 0x40000, 0x00400, 0xc0000, 0x02400, 0x00009, 0x40c91, 0x99999, - 0x000a3, 0x88820, 0x76c06, 0x00000, 0x80000, 0x00180, 0x001a0, - 0x6b27d, 0x7e49d, 0x00073, 0x51ff3, 0x00086, 0x00186, - 0x00286, 0x01c25, 0x09c25, 0x11c25, 0x19c25, 0x48538, 0x00c07, - 0x4bd00, 0x739d0, 0x0adf3, 0x09df0, 0x08ded, 0x07dea, 0x06de7, - 0x054ee, 0x044eb, 0x034e8, 0x0246b, 0x01468, 0x0006d, 0x30159, - 0x68200, 0x000ce, 0x48a00, 0x65540, 0x88000, 0x020a0, 0xf02b0, - 0xef7b0, 0xd4fb0, 0xcf060, 0xb0090, 0xa0080, 0x90080, 0x8f780, - 0x722b0, 0x6f7b0, 0x54fb0, 0x4f060, 0x30090, 0x20080, 0x10080, - 0x0f780, 0x000a0, 0x10159, 0x0f407, 0x00000, 0x00000, 0x80003, - 0x00000, 0x00000, 0x00001, 0x80000, 0x33e60 -}; - -static const struct urtwn_rf_prog rtl8188eu_rf_prog[] = { - { - nitems(rtl8188eu_rf_regs), - rtl8188eu_rf_regs, - rtl8188eu_rf_vals - } -}; - -/* - * RTL8188RU. - */ -static const uint32_t rtl8188ru_rf_vals[] = { - 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb0, - 0x54867, 0x8992e, 0x0e529, 0x39ce7, 0x00451, 0x00000, 0x00255, - 0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000, - 0x0083c, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x977c0, - 0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808, - 0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003, - 0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d, - 0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333, - 0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a, - 0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a, - 0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d, - 0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333, - 0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f, - 0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500, - 0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0xd8000, - 0x90000, 0x51000, 0x12000, 0x28fb4, 0x24fa8, 0x207a4, 0x1c798, - 0x183a4, 0x14398, 0x101a4, 0x0c198, 0x080a4, 0x04098, 0x00014, - 0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f405, 0x4f405, 0x8f405, - 0xcf405, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401, - 0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000, - 0x30159 -}; - -static const struct urtwn_rf_prog rtl8188ru_rf_prog[] = { - { - nitems(rtl8192ce_rf1_regs), - rtl8192ce_rf1_regs, - rtl8188ru_rf_vals - } -}; - -struct urtwn_txpwr { - uint8_t pwr[3][28]; -}; - -struct urtwn_r88e_txpwr { - uint8_t pwr[6][28]; -}; - -/* - * Per RF chain/group/rate Tx gain values. - */ -static const struct urtwn_txpwr rtl8192cu_txagc[] = { - { { /* Chain 0. */ - { /* Group 0. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x0c, 0x0c, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02, /* OFDM6~54. */ - 0x0e, 0x0d, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02, /* MCS0~7. */ - 0x0e, 0x0d, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02 /* MCS8~15. */ - }, - { /* Group 1. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - }, - { /* Group 2. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - } - } }, - { { /* Chain 1. */ - { /* Group 0. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - }, - { /* Group 1. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - }, - { /* Group 2. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - } - } } -}; - -static const struct urtwn_txpwr rtl8188ru_txagc[] = { - { { /* Chain 0. */ - { /* Group 0. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x08, 0x08, 0x08, 0x06, 0x06, 0x04, 0x04, 0x00, /* OFDM6~54. */ - 0x08, 0x06, 0x06, 0x04, 0x04, 0x02, 0x02, 0x00, /* MCS0~7. */ - 0x08, 0x06, 0x06, 0x04, 0x04, 0x02, 0x02, 0x00 /* MCS8~15. */ - }, - { /* Group 1. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - }, - { /* Group 2. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - } - } } -}; - -static const struct urtwn_r88e_txpwr rtl8188eu_txagc[] = { - { { /* Chain 0. */ - { /* Group 0. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - }, - { /* Group 1. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - }, - { /* Group 2. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - }, - { /* Group 3. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - }, - { /* Group 4. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - }, - { /* Group 5. */ - 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ - } - } } -}; diff --git a/sys/dev/urtwn/if_urtwnvar.h b/sys/dev/urtwn/if_urtwnvar.h deleted file mode 100644 index 71c6f4e2b666..000000000000 --- a/sys/dev/urtwn/if_urtwnvar.h +++ /dev/null @@ -1,230 +0,0 @@ -/*- - * Copyright (c) 2010 Damien Bergamini - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ - * $FreeBSD$ - */ - -#define URTWN_RX_LIST_COUNT 64 -#define URTWN_TX_LIST_COUNT 8 -#define URTWN_HOST_CMD_RING_COUNT 32 - -#define URTWN_RXBUFSZ (8 * 1024) -//#define URTWN_TXBUFSZ (sizeof(struct r92c_tx_desc) + IEEE80211_MAX_LEN) -/* Leave enough space for an A-MSDU frame */ -#define URTWN_TXBUFSZ (16 * 1024) -#define URTWN_RX_DESC_SIZE (sizeof(struct r92c_rx_stat)) -#define URTWN_TX_DESC_SIZE (sizeof(struct r92c_tx_desc)) - -#define URTWN_TX_TIMEOUT 5000 /* ms */ - -#define URTWN_LED_LINK 0 -#define URTWN_LED_DATA 1 - -struct urtwn_rx_radiotap_header { - struct ieee80211_radiotap_header wr_ihdr; - uint64_t wr_tsft; - uint8_t wr_flags; - uint8_t wr_rate; - uint16_t wr_chan_freq; - uint16_t wr_chan_flags; - int8_t wr_dbm_antsignal; - int8_t wr_dbm_antnoise; -} __packed __aligned(8); - -#define URTWN_RX_RADIOTAP_PRESENT \ - (1 << IEEE80211_RADIOTAP_TSFT | \ - 1 << IEEE80211_RADIOTAP_FLAGS | \ - 1 << IEEE80211_RADIOTAP_RATE | \ - 1 << IEEE80211_RADIOTAP_CHANNEL | \ - 1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL | \ - 1 << IEEE80211_RADIOTAP_DBM_ANTNOISE) - -struct urtwn_tx_radiotap_header { - struct ieee80211_radiotap_header wt_ihdr; - uint8_t wt_flags; - uint16_t wt_chan_freq; - uint16_t wt_chan_flags; -} __packed __aligned(8); - -#define URTWN_TX_RADIOTAP_PRESENT \ - (1 << IEEE80211_RADIOTAP_FLAGS | \ - 1 << IEEE80211_RADIOTAP_CHANNEL) - -struct urtwn_softc; - -struct urtwn_data { - struct urtwn_softc *sc; - uint8_t *buf; - uint16_t buflen; - struct mbuf *m; - struct ieee80211_node *ni; - STAILQ_ENTRY(urtwn_data) next; -}; -typedef STAILQ_HEAD(, urtwn_data) urtwn_datahead; - -union sec_param { - struct ieee80211_key key; -}; - -#define CMD_FUNC_PROTO void (*func)(struct urtwn_softc *, \ - union sec_param *) - -struct urtwn_cmdq { - union sec_param data; - CMD_FUNC_PROTO; -}; -#define URTWN_CMDQ_SIZE 16 - -struct urtwn_fw_info { - const uint8_t *data; - size_t size; -}; - -struct urtwn_node { - struct ieee80211_node ni; /* must be the first */ - uint8_t id; - int last_rssi; -}; -#define URTWN_NODE(ni) ((struct urtwn_node *)(ni)) - -struct urtwn_vap { - struct ieee80211vap vap; - - struct r92c_tx_desc bcn_desc; - struct mbuf *bcn_mbuf; - struct task tsf_task_adhoc; - - const struct ieee80211_key *keys[IEEE80211_WEP_NKID]; - - int (*newstate)(struct ieee80211vap *, - enum ieee80211_state, int); - void (*recv_mgmt)(struct ieee80211_node *, - struct mbuf *, int, - const struct ieee80211_rx_stats *, - int, int); -}; -#define URTWN_VAP(vap) ((struct urtwn_vap *)(vap)) - -enum { - URTWN_BULK_RX, - URTWN_BULK_TX_BE, /* = WME_AC_BE */ - URTWN_BULK_TX_BK, /* = WME_AC_BK */ - URTWN_BULK_TX_VI, /* = WME_AC_VI */ - URTWN_BULK_TX_VO, /* = WME_AC_VI */ - URTWN_N_TRANSFER = 5, -}; - -#define URTWN_EP_QUEUES URTWN_BULK_RX - -union urtwn_rom { - struct r92c_rom r92c_rom; - struct r88e_rom r88e_rom; -}; - -struct urtwn_softc { - struct ieee80211com sc_ic; - struct ieee80211_ratectl_tx_status sc_txs; - struct mbufq sc_snd; - device_t sc_dev; - struct usb_device *sc_udev; - - uint32_t sc_debug; - uint8_t sc_iface_index; - uint8_t sc_flags; -#define URTWN_FLAG_CCK_HIPWR 0x01 -#define URTWN_DETACHED 0x02 -#define URTWN_RUNNING 0x04 -#define URTWN_FW_LOADED 0x08 -#define URTWN_TEMP_MEASURED 0x10 - - u_int chip; -#define URTWN_CHIP_92C 0x01 -#define URTWN_CHIP_92C_1T2R 0x02 -#define URTWN_CHIP_UMC 0x04 -#define URTWN_CHIP_UMC_A_CUT 0x08 -#define URTWN_CHIP_88E 0x10 - -#define URTWN_CHIP_HAS_RATECTL(_sc) (!!((_sc)->chip & URTWN_CHIP_88E)) - - void (*sc_node_free)(struct ieee80211_node *); - void (*sc_rf_write)(struct urtwn_softc *, - int, uint8_t, uint32_t); - int (*sc_power_on)(struct urtwn_softc *); - void (*sc_power_off)(struct urtwn_softc *); - - struct ieee80211_node *node_list[R88E_MACID_MAX + 1]; - struct mtx nt_mtx; - - uint8_t board_type; - uint8_t regulatory; - uint8_t pa_setting; - int8_t ofdm_tx_pwr_diff; - int8_t bw20_tx_pwr_diff; - int avg_pwdb; - uint8_t thcal_lctemp; - int ntxchains; - int nrxchains; - int ledlink; - int sc_txtimer; - - int last_rssi; - - int fwcur; - struct urtwn_data sc_rx[URTWN_RX_LIST_COUNT]; - urtwn_datahead sc_rx_active; - urtwn_datahead sc_rx_inactive; - struct urtwn_data sc_tx[URTWN_TX_LIST_COUNT]; - urtwn_datahead sc_tx_active; - int sc_tx_n_active; - urtwn_datahead sc_tx_inactive; - urtwn_datahead sc_tx_pending; - - union urtwn_rom rom; - uint16_t last_rom_addr; - - struct callout sc_calib_to; - struct callout sc_watchdog_ch; - struct mtx sc_mtx; - uint32_t keys_bmap; - - struct urtwn_cmdq cmdq[URTWN_CMDQ_SIZE]; - struct mtx cmdq_mtx; - struct task cmdq_task; - uint8_t cmdq_first; - uint8_t cmdq_last; - - uint32_t rf_chnlbw[R92C_MAX_CHAINS]; - struct usb_xfer *sc_xfer[URTWN_N_TRANSFER]; - - struct urtwn_rx_radiotap_header sc_rxtap; - struct urtwn_tx_radiotap_header sc_txtap; -}; - -#define URTWN_LOCK(sc) mtx_lock(&(sc)->sc_mtx) -#define URTWN_UNLOCK(sc) mtx_unlock(&(sc)->sc_mtx) -#define URTWN_ASSERT_LOCKED(sc) mtx_assert(&(sc)->sc_mtx, MA_OWNED) - -#define URTWN_CMDQ_LOCK_INIT(sc) \ - mtx_init(&(sc)->cmdq_mtx, "cmdq lock", NULL, MTX_DEF) -#define URTWN_CMDQ_LOCK(sc) mtx_lock(&(sc)->cmdq_mtx) -#define URTWN_CMDQ_UNLOCK(sc) mtx_unlock(&(sc)->cmdq_mtx) -#define URTWN_CMDQ_LOCK_DESTROY(sc) mtx_destroy(&(sc)->cmdq_mtx) - -#define URTWN_NT_LOCK_INIT(sc) \ - mtx_init(&(sc)->nt_mtx, "node table lock", NULL, MTX_DEF) -#define URTWN_NT_LOCK(sc) mtx_lock(&(sc)->nt_mtx) -#define URTWN_NT_UNLOCK(sc) mtx_unlock(&(sc)->nt_mtx) -#define URTWN_NT_LOCK_DESTROY(sc) mtx_destroy(&(sc)->nt_mtx) diff --git a/sys/mips/conf/std.AR933X b/sys/mips/conf/std.AR933X index f9a4d875b571..5b35213d9c30 100644 --- a/sys/mips/conf/std.AR933X +++ b/sys/mips/conf/std.AR933X @@ -1,131 +1,131 @@ # # AR91XX -- Kernel configuration base file for the Atheros AR913x SoC. # # This file (and the hints file accompanying it) are not designed to be # used by themselves. Instead, users of this file should create a kernel # config file which includes this file (which gets the basic hints), then # override the default options (adding devices as needed) and adding # hints as needed (for example, the GPIO and LAN PHY.) # # $FreeBSD$ # machine mips mips #ident std.AR933X cpu CPU_MIPS24K makeoptions KERNLOADADDR=0x80050000 options HZ=1000 files "../atheros/files.ar71xx" hints "AR933X_BASE.hints" makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols -makeoptions MODULES_OVERRIDE="gpio ar71xx if_gif if_vlan if_gre if_tap if_tun if_bridge bridgestp usb wlan wlan_xauth wlan_acl wlan_wep wlan_tkip wlan_ccmp wlan_rssadapt wlan_amrr hwpmc ipfw ipfw_nat libalias ipfw_nptv6 urtwn urtwnfw otus otusfw" +makeoptions MODULES_OVERRIDE="gpio ar71xx if_gif if_vlan if_gre if_tap if_tun if_bridge bridgestp usb wlan wlan_xauth wlan_acl wlan_wep wlan_tkip wlan_ccmp wlan_rssadapt wlan_amrr hwpmc ipfw ipfw_nat libalias ipfw_nptv6 rtwn rtwn_usb rtwnfw otus otusfw" options DDB options KDB options ALQ options ALT_BREAK_TO_DEBUGGER options SCHED_4BSD #4BSD scheduler options INET #InterNETworking #options INET6 #InterNETworking options TCP_HHOOK # hhook(9) framework for TCP #options NFSCL #Network Filesystem Client options PSEUDOFS #Pseudo-filesystem framework options _KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B real-time extensions # Don't include the SCSI/CAM strings in the default build options SCSI_NO_SENSE_STRINGS options SCSI_NO_OP_STRINGS # .. And no sysctl strings options NO_SYSCTL_DESCR # For small memory footprints options VM_KMEM_SIZE_SCALE=1 # Limit IO size options NBUF=128 # Limit UMTX hash size # options UMTX_NUM_CHAINS=64 # PMC #options HWPMC_HOOKS #device hwpmc #device hwpmc_mips24k # options NFS_LEGACYRPC # Debugging for use in -current #options INVARIANTS #options INVARIANT_SUPPORT #options WITNESS #options WITNESS_SKIPSPIN options FFS #Berkeley Fast Filesystem #options SOFTUPDATES #Enable FFS soft updates support #options UFS_ACL #Support for access control lists #options UFS_DIRHASH #Improve performance on big directories options NO_FFS_SNAPSHOT # We don't require snapshot support options IPFIREWALL_DEFAULT_TO_ACCEPT # Wireless NIC cards options IEEE80211_DEBUG options IEEE80211_SUPPORT_MESH options IEEE80211_SUPPORT_TDMA options IEEE80211_SUPPORT_SUPERG options IEEE80211_ALQ # 802.11 ALQ logging support device wlan # 802.11 support device wlan_wep # 802.11 WEP support device wlan_ccmp # 802.11 CCMP support device wlan_tkip # 802.11 TKIP support device wlan_xauth # 802.11 hostap support # ath(4) device ath # Atheros network device device ath_rate_sample device ath_ahb # Atheros host bus glue options ATH_DEBUG options ATH_DIAGAPI option ATH_ENABLE_11N option AH_DEBUG_ALQ #device ath_hal device ath_ar9300 # AR9330 HAL; no need for the others option AH_DEBUG option AH_SUPPORT_AR5416 # 11n HAL support option AH_SUPPORT_AR9330 # Chipset support option AH_AR5416_INTERRUPT_MITIGATION device mii device arge device usb options USB_EHCI_BIG_ENDIAN_DESC # handle big-endian byte order options USB_DEBUG options USB_HOST_ALIGN=32 # AR71XX (MIPS in general?) requires this device ehci device scbus device umass device da device spibus device ar71xx_spi device mx25l device ar71xx_wdog device uart device uart_ar933x device ar71xx_apb device loop device ether device md device bpf device random device if_bridge device gpio device gpioled diff --git a/sys/mips/conf/std.AR934X b/sys/mips/conf/std.AR934X index 19399450a493..50b6f01c373f 100644 --- a/sys/mips/conf/std.AR934X +++ b/sys/mips/conf/std.AR934X @@ -1,131 +1,131 @@ # # AR91XX -- Kernel configuration base file for the Atheros AR913x SoC. # # This file (and the hints file accompanying it) are not designed to be # used by themselves. Instead, users of this file should create a kernel # config file which includes this file (which gets the basic hints), then # override the default options (adding devices as needed) and adding # hints as needed (for example, the GPIO and LAN PHY.) # # $FreeBSD$ # machine mips mips #ident std.AR934X cpu CPU_MIPS74K makeoptions KERNLOADADDR=0x80050000 options HZ=1000 files "../atheros/files.ar71xx" hints "AR934X_BASE.hints" makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols -makeoptions MODULES_OVERRIDE="gpio ar71xx if_gif if_vlan if_gre if_tap if_tun if_bridge bridgestp usb wlan wlan_xauth wlan_acl wlan_wep wlan_tkip wlan_ccmp wlan_rssadapt wlan_amrr hwpmc ipfw ipfw_nat libalias ipfw_nptv6 urtwn urtwnfw otus otusfw" +makeoptions MODULES_OVERRIDE="gpio ar71xx if_gif if_vlan if_gre if_tap if_tun if_bridge bridgestp usb wlan wlan_xauth wlan_acl wlan_wep wlan_tkip wlan_ccmp wlan_rssadapt wlan_amrr hwpmc ipfw ipfw_nat libalias ipfw_nptv6 rtwn rtwn_usb rtwnfw otus otusfw" # makeoptions MODULES_OVERRIDE="" options DDB options KDB options ALT_BREAK_TO_DEBUGGER options ALQ options SCHED_4BSD #4BSD scheduler options INET #InterNETworking #options INET6 #InterNETworking options TCP_HHOOK # hhook(9) framework for TCP #options NFSCL #Network Filesystem Client options PSEUDOFS #Pseudo-filesystem framework options _KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B real-time extensions # Don't include the SCSI/CAM strings in the default build options SCSI_NO_SENSE_STRINGS options SCSI_NO_OP_STRINGS # .. And no sysctl strings options NO_SYSCTL_DESCR # Limit IO size options NBUF=128 # Limit UMTX hash size # options UMTX_NUM_CHAINS=64 # PMC #options HWPMC_HOOKS #device hwpmc #device hwpmc_mips24k # options NFS_LEGACYRPC # Debugging for use in -current #options INVARIANTS #options INVARIANT_SUPPORT #options WITNESS #options WITNESS_SKIPSPIN options FFS #Berkeley Fast Filesystem #options SOFTUPDATES #Enable FFS soft updates support #options UFS_ACL #Support for access control lists #options UFS_DIRHASH #Improve performance on big directories options NO_FFS_SNAPSHOT # We don't require snapshot support # Wireless NIC cards options IEEE80211_DEBUG options IEEE80211_SUPPORT_MESH options IEEE80211_SUPPORT_TDMA options IEEE80211_SUPPORT_SUPERG options IEEE80211_ALQ # 802.11 ALQ logging support device wlan # 802.11 support device wlan_wep # 802.11 WEP support device wlan_ccmp # 802.11 CCMP support device wlan_tkip # 802.11 TKIP support device wlan_xauth # 802.11 hostap support # ath(4) device ath # Atheros network device device ath_rate_sample device ath_ahb # Atheros host bus glue options ATH_DEBUG options ATH_DIAGAPI option ATH_ENABLE_11N #device ath_hal device ath_ar9300 # AR9330 HAL; no need for the others option AH_DEBUG option AH_SUPPORT_AR5416 # 11n HAL support option AH_SUPPORT_AR9340 # Chipset support option AH_DEBUG_ALQ option AH_AR5416_INTERRUPT_MITIGATION device mii device arge device usb options USB_EHCI_BIG_ENDIAN_DESC # handle big-endian byte order options USB_DEBUG options USB_HOST_ALIGN=32 # AR71XX (MIPS in general?) requires this device ehci device pci device ar724x_pci device scbus device umass device da device spibus device ar71xx_spi device mx25l device ar71xx_wdog device uart device uart_ar71xx # XXX for now; later a separate APB mux is needed to demux PCI/WLAN interrupts. device ar71xx_apb device loop device ether device md device bpf device random device if_bridge device gpio device gpioled diff --git a/sys/mips/conf/std.QCA955X b/sys/mips/conf/std.QCA955X index 822a03a0b754..7144d4b386e6 100644 --- a/sys/mips/conf/std.QCA955X +++ b/sys/mips/conf/std.QCA955X @@ -1,141 +1,141 @@ # # QCA955X_BASE -- Kernel configuration base file for the Qualcomm Atheros # QCA955x SoC. # # This file (and the hints file accompanying it) are not designed to be # used by themselves. Instead, users of this file should create a kernel # config file which includes this file (which gets the basic hints), then # override the default options (adding devices as needed) and adding # hints as needed (for example, the GPIO and LAN PHY.) # # $FreeBSD$ # machine mips mips #ident std.QCA955X cpu CPU_MIPS74K makeoptions KERNLOADADDR=0x80050000 options HZ=1000 #options BREAK_TO_DEBUGGER options ALT_BREAK_TO_DEBUGGER # options BOOTVERBOSE=10 files "../atheros/files.ar71xx" hints "QCA955X_BASE.hints" makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols -makeoptions MODULES_OVERRIDE="gpio ar71xx if_gif if_vlan if_gre if_tap if_tun if_bridge bridgestp usb wlan wlan_xauth wlan_acl wlan_wep wlan_tkip wlan_ccmp wlan_rssadapt wlan_amrr hwpmc ipfw ipfw_nat libalias ipfw_nptv6 urtwn urtwnfw otus otusfw" +makeoptions MODULES_OVERRIDE="gpio ar71xx if_gif if_vlan if_gre if_tap if_tun if_bridge bridgestp usb wlan wlan_xauth wlan_acl wlan_wep wlan_tkip wlan_ccmp wlan_rssadapt wlan_amrr hwpmc ipfw ipfw_nat libalias ipfw_nptv6 rtwn rtwn_usb rtwnfw otus otusfw" options DDB options KDB options ALQ options SCHED_4BSD #4BSD scheduler options INET #InterNETworking #options INET6 #InterNETworking options TCP_HHOOK # hhook(9) framework for TCP #options NFSCL #Network Filesystem Client options PSEUDOFS #Pseudo-filesystem framework options _KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B real-time extensions # Don't include the SCSI/CAM strings in the default build options SCSI_NO_SENSE_STRINGS options SCSI_NO_OP_STRINGS # .. And no sysctl strings options NO_SYSCTL_DESCR # Limit IO size options NBUF=128 # Limit UMTX hash size # options UMTX_NUM_CHAINS=64 # PMC - fow now there's no hwpmc module for mips74k #options HWPMC_HOOKS #device hwpmc #device hwpmc_mips74k # options NFS_LEGACYRPC # Debugging for use in -current #options INVARIANTS #options INVARIANT_SUPPORT #options WITNESS #options WITNESS_SKIPSPIN options FFS #Berkeley Fast Filesystem #options SOFTUPDATES #Enable FFS soft updates support #options UFS_ACL #Support for access control lists #options UFS_DIRHASH #Improve performance on big directories options NO_FFS_SNAPSHOT # We don't require snapshot support # Wireless NIC cards options IEEE80211_DEBUG options IEEE80211_SUPPORT_MESH options IEEE80211_SUPPORT_TDMA options IEEE80211_SUPPORT_SUPERG options IEEE80211_ALQ # 802.11 ALQ logging support device wlan # 802.11 support device wlan_wep # 802.11 WEP support device wlan_ccmp # 802.11 CCMP support device wlan_tkip # 802.11 TKIP support device wlan_xauth # 802.11 hostap support # ath(4) device ath # Atheros network device device ath_rate_sample device ath_ahb # Atheros host bus glue options ATH_DEBUG options ATH_DIAGAPI option ATH_ENABLE_11N option AH_DEBUG_ALQ #device ath_hal device ath_ar9300 # AR9330 HAL; no need for the others option AH_DEBUG option AH_SUPPORT_AR5416 # 11n HAL support option AH_SUPPORT_QCA9550 # Chipset support option AH_DEBUG_ALQ option AH_AR5416_INTERRUPT_MITIGATION device mii device arge options ARGE_DEBUG device usb options USB_EHCI_BIG_ENDIAN_DESC # handle big-endian byte order options USB_DEBUG options USB_HOST_ALIGN=32 # AR71XX (MIPS in general?) requires this device ehci device scbus device umass device da device spibus device ar71xx_spi device mx25l device ar71xx_wdog device uart device uart_ar71xx device ar71xx_apb # Until some better interrupt handling is shoehorned into qca955x_apb, # we'll have to stick to shared interrupts for IP2/IP3 demux. # device qca955x_apb device loop device ether device md device bpf device random device if_bridge device gpio device gpioled #options KTR #options KTR_MASK=(KTR_INTR) #options KTR_COMPILE=(KTR_INTR) #options KTR_VERBOSE diff --git a/sys/modules/Makefile b/sys/modules/Makefile index 75bbd0f998fe..fbaefc3ebe9a 100644 --- a/sys/modules/Makefile +++ b/sys/modules/Makefile @@ -1,803 +1,802 @@ # $FreeBSD$ SYSDIR?=${.CURDIR}/.. .include "${SYSDIR}/conf/kern.opts.mk" SUBDIR_PARALLEL= # Modules that include binary-only blobs of microcode should be selectable by # MK_SOURCELESS_UCODE option (see below). .if defined(MODULES_OVERRIDE) && !defined(ALL_MODULES) SUBDIR=${MODULES_OVERRIDE} .else SUBDIR= \ ${_3dfx} \ ${_3dfx_linux} \ ${_aac} \ ${_aacraid} \ accf_data \ accf_dns \ accf_http \ acl_nfs4 \ acl_posix1e \ ${_acpi} \ ae \ ${_aesni} \ age \ ${_agp} \ aha \ ${_ahb} \ ahci \ ${_aic} \ aic7xxx \ alc \ ale \ alq \ ${_amdsbwd} \ ${_amdtemp} \ amr \ ${_an} \ ${_aout} \ ${_apm} \ ${_arcmsr} \ ${_arcnet} \ ${_asmc} \ ata \ ath \ ath_pci \ ${_autofs} \ ${_auxio} \ ${_bce} \ bfe \ bhnd \ bge \ bhnd \ ${_bxe} \ ${_bios} \ ${_bktr} \ ${_bm} \ bridgestp \ bwi \ bwn \ bwn_pci \ cam \ ${_canbepm} \ ${_canbus} \ ${_cardbus} \ ${_carp} \ cas \ ${_cbb} \ cc \ cd9660 \ cd9660_iconv \ ${_ce} \ ${_cfi} \ ${_ciss} \ cloudabi \ ${_cloudabi32} \ ${_cloudabi64} \ ${_cm} \ ${_cmx} \ ${_coff} \ ${_coretemp} \ ${_cp} \ ${_cpsw} \ ${_cpuctl} \ ${_cpufreq} \ ${_crypto} \ ${_cryptodev} \ ${_cs} \ ${_ct} \ ${_ctau} \ ctl \ ${_cxgb} \ ${_cxgbe} \ dc \ dcons \ dcons_crom \ de \ ${_dpms} \ ${_dpt} \ ${_drm} \ ${_drm2} \ dummynet \ ${_ed} \ ${_efirt} \ ${_elink} \ ${_em} \ en \ ${_ep} \ ${_epic} \ esp \ ${_et} \ evdev \ ${_ex} \ ${_exca} \ ext2fs \ ${_fatm} \ fdc \ fdescfs \ ${_fe} \ filemon \ firewire \ firmware \ fuse \ ${_fxp} \ gem \ geom \ ${_glxiic} \ ${_glxsb} \ gpio \ hatm \ hifn \ hme \ ${_hpt27xx} \ ${_hptiop} \ ${_hptmv} \ ${_hptnr} \ ${_hptrr} \ hwpmc \ ${_hyperv} \ i2c \ ${_ibcore} \ ${_ibcs2} \ ${_ichwd} \ ${_ida} \ if_bridge \ if_disc \ if_edsc \ ${_if_enc} \ if_epair \ ${_if_gif} \ ${_if_gre} \ ${_if_me} \ if_lagg \ ${_if_ndis} \ ${_if_stf} \ if_tap \ if_tun \ if_vlan \ if_vxlan \ ${_igb} \ ${_iir} \ imgact_binmisc \ ${_io} \ ${_ioat} \ ${_ipoib} \ ${_ipdivert} \ ${_ipfilter} \ ${_ipfw} \ ipfw_nat \ ${_ipfw_nat64} \ ${_ipfw_nptv6} \ ${_ipmi} \ ip6_mroute_mod \ ip_mroute_mod \ ${_ips} \ ${_ipw} \ ${_ipwfw} \ ${_isci} \ ${_iser} \ isp \ ${_ispfw} \ ${_iwi} \ ${_iwifw} \ ${_iwm} \ ${_iwmfw} \ ${_iwn} \ ${_iwnfw} \ ${_ix} \ ${_ixv} \ ${_ixgb} \ ${_ixl} \ ${_ixlv} \ jme \ joy \ kbdmux \ kgssapi \ kgssapi_krb5 \ khelp \ krpc \ ksyms \ le \ lge \ libalias \ libiconv \ libmbpool \ libmchain \ ${_linprocfs} \ ${_linsysfs} \ ${_linux} \ ${_linux_common} \ ${_linux64} \ linuxkpi \ lmc \ lpt \ mac_biba \ mac_bsdextended \ mac_ifoff \ mac_lomac \ mac_mls \ mac_none \ mac_partition \ mac_portacl \ mac_seeotheruids \ mac_stub \ mac_test \ malo \ md \ mdio \ mem \ mfi \ mii \ mlx \ ${_mlx4} \ ${_mlx4ib} \ ${_mlx4en} \ ${_mlx5} \ ${_mlx5en} \ ${_mly} \ mmc \ mmcsd \ mpr \ mps \ mpt \ mqueue \ mrsas \ msdosfs \ msdosfs_iconv \ ${_mse} \ msk \ ${_mthca} \ mvs \ mwl \ ${_mwlfw} \ mxge \ my \ ${_nandfs} \ ${_nandsim} \ ${_ncr} \ ${_nctgpio} \ ${_ncv} \ ${_ndis} \ netfpga10g \ ${_netgraph} \ ${_nfe} \ nfscl \ nfscommon \ nfsd \ nfslock \ nfslockd \ nfssvc \ nge \ nmdm \ ${_nsp} \ nullfs \ ${_ntb} \ ${_nvd} \ ${_nvme} \ ${_nvram} \ ${_nxge} \ oce \ otus \ ${_otusfw} \ ow \ ${_padlock} \ ${_padlock_rng} \ patm \ ${_pccard} \ ${_pcfclock} \ pcn \ ${_pf} \ ${_pflog} \ ${_pfsync} \ plip \ ${_pmc} \ ${_pms} \ ppbus \ ppc \ ppi \ pps \ procfs \ proto \ pseudofs \ ${_pst} \ pty \ puc \ ${_qlxge} \ ${_qlxgb} \ ${_qlxgbe} \ ral \ ${_ralfw} \ ${_random_fortuna} \ ${_random_yarrow} \ ${_random_other} \ rc4 \ ${_rdma} \ ${_rdrand_rng} \ re \ rl \ rtwn \ + rtwn_pci \ + rtwn_usb \ ${_rtwnfw} \ ${_s3} \ ${_safe} \ ${_sbni} \ scc \ ${_scsi_low} \ sdhci \ sdhci_pci \ sem \ send \ ${_sf} \ ${_sfxge} \ sge \ siba_bwn \ siftr \ siis \ sis \ sk \ smbfs \ sn \ ${_snc} \ snp \ sound \ ${_speaker} \ ${_splash} \ ${_sppp} \ ste \ ${_stg} \ stge \ ${_streams} \ ${_svr4} \ ${_sym} \ ${_syscons} \ sysvipc \ ${_ti} \ ${_tcp_fastpath} \ tests/framework \ tests/callout_test \ tl \ tmpfs \ ${_toecore} \ ${_tpm} \ trm \ ${_twa} \ twe \ tws \ tx \ ${_txp} \ uart \ ubsec \ udf \ udf_iconv \ ufs \ uinput \ unionfs \ - urtwn \ - ${_urtwnfw} \ usb \ utopia \ ${_vesa} \ ${_virtio} \ vge \ ${_viawd} \ videomode \ vkbd \ ${_vmm} \ ${_vmware} \ ${_vpo} \ vr \ vte \ vx \ ${_vxge} \ wb \ ${_wbwd} \ ${_wi} \ wlan \ wlan_acl \ wlan_amrr \ wlan_ccmp \ wlan_rssadapt \ wlan_tkip \ wlan_wep \ wlan_xauth \ ${_wpi} \ ${_wpifw} \ ${_x86bios} \ ${_xe} \ xl \ zlib .if ${MK_AUTOFS} != "no" || defined(ALL_MODULES) _autofs= autofs .endif .if ${MK_CDDL} != "no" || defined(ALL_MODULES) .if (${MACHINE_CPUARCH} != "arm" || ${MACHINE_ARCH:Marmv6*} != "") && \ ${MACHINE_CPUARCH} != "mips" && \ ${MACHINE_CPUARCH} != "sparc64" SUBDIR+= dtrace .endif SUBDIR+= opensolaris .endif .if ${MK_CRYPT} != "no" || defined(ALL_MODULES) .if exists(${.CURDIR}/../opencrypto) _crypto= crypto _cryptodev= cryptodev _random_fortuna=random_fortuna _random_yarrow= random_yarrow _random_other= random_other .endif .endif .if ${MK_CUSE} != "no" || defined(ALL_MODULES) SUBDIR+= cuse .endif .if ${MK_EXTRA_TCP_STACKS} != "no" || defined(ALL_MODULES) _tcp_fastpath= tcp/fastpath .endif .if (${MK_INET_SUPPORT} != "no" || ${MK_INET6_SUPPORT} != "no") || \ defined(ALL_MODULES) _carp= carp _toecore= toecore _if_enc= if_enc _if_gif= if_gif _if_gre= if_gre .endif .if (${MK_INET_SUPPORT} != "no" && ${MK_INET6_SUPPORT} != "no") || \ defined(ALL_MODULES) _if_stf= if_stf .endif .if ${MK_INET_SUPPORT} != "no" || defined(ALL_MODULES) _if_me= if_me _ipdivert= ipdivert _ipfw= ipfw .if ${MK_INET6_SUPPORT} != "no" || defined(ALL_MODULES) _ipfw_nat64= ipfw_nat64 .endif .endif .if ${MK_INET6_SUPPORT} != "no" || defined(ALL_MODULES) _ipfw_nptv6= ipfw_nptv6 .endif .if ${MK_IPFILTER} != "no" || defined(ALL_MODULES) _ipfilter= ipfilter .endif .if ${MK_ISCSI} != "no" || defined(ALL_MODULES) SUBDIR+= iscsi SUBDIR+= iscsi_initiator .endif .if ${MK_NAND} != "no" || defined(ALL_MODULES) _nandfs= nandfs _nandsim= nandsim .endif .if ${MK_NETGRAPH} != "no" || defined(ALL_MODULES) _netgraph= netgraph .endif .if (${MK_PF} != "no" && (${MK_INET_SUPPORT} != "no" || \ ${MK_INET6_SUPPORT} != "no")) || defined(ALL_MODULES) _pf= pf _pflog= pflog .if ${MK_INET_SUPPORT} != "no" _pfsync= pfsync .endif .endif .if ${MK_SOURCELESS_UCODE} != "no" _bce= bce _fatm= fatm _fxp= fxp _ispfw= ispfw _mwlfw= mwlfw _otusfw= otusfw _ralfw= ralfw _rtwnfw= rtwnfw -_urtwnfw= urtwnfw _sf= sf _ti= ti _txp= txp .endif .if ${MK_SOURCELESS_UCODE} != "no" && ${MACHINE_CPUARCH} != "arm" && \ ${MACHINE_CPUARCH} != "mips" && \ ${MACHINE_ARCH} != "powerpc" && ${MACHINE_CPUARCH} != "riscv" _cxgbe= cxgbe .endif .if ${MK_ZFS} != "no" || defined(ALL_MODULES) SUBDIR+= zfs .endif .if ${MACHINE_CPUARCH} != "aarch64" && ${MACHINE_CPUARCH} != "arm" && \ ${MACHINE_CPUARCH} != "mips" && ${MACHINE_CPUARCH} != "powerpc" && \ ${MACHINE_CPUARCH} != "riscv" _syscons= syscons _vpo= vpo .endif .if ${MACHINE_CPUARCH} != "mips" # no BUS_SPACE_UNSPECIFIED # No barrier instruction support (specific to this driver) _sym= sym # intr_disable() is a macro, causes problems .if ${MK_SOURCELESS_UCODE} != "no" _cxgb= cxgb .endif .endif .if ${MACHINE_CPUARCH} == "aarch64" _em= em _igb= igb .endif .if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64" _agp= agp _an= an _aout= aout _bktr= bktr _bxe= bxe _cardbus= cardbus _cbb= cbb _cpuctl= cpuctl _cpufreq= cpufreq _cs= cs _dpms= dpms _drm= drm _drm2= drm2 _ed= ed _em= em _ep= ep _et= et _exca= exca _fe= fe .if ${MK_OFED} != "no" || defined(ALL_MODULES) _ibcore= ibcore .endif _if_ndis= if_ndis _igb= igb _io= io .if ${MK_OFED} != "no" || defined(ALL_MODULES) _ipoib= ipoib _iser= iser .endif _ix= ix _ixv= ixv _linprocfs= linprocfs _linsysfs= linsysfs _linux= linux _nctgpio= nctgpio _ndis= ndis _pccard= pccard .if ${MK_OFED} != "no" || defined(ALL_MODULES) _rdma= rdma .endif _safe= safe _scsi_low= scsi_low _speaker= speaker _splash= splash _sppp= sppp _vmware= vmware _vxge= vxge _wbwd= wbwd _wi= wi _xe= xe .if ${MACHINE} != "pc98" _aac= aac _aacraid= aacraid _acpi= acpi .if ${MK_CRYPT} != "no" || defined(ALL_MODULES) _aesni= aesni .endif _amdsbwd= amdsbwd _amdtemp= amdtemp _arcmsr= arcmsr _asmc= asmc _ciss= ciss _cmx= cmx _coretemp= coretemp .if ${MK_SOURCELESS_HOST} != "no" _hpt27xx= hpt27xx .endif _hptiop= hptiop .if ${MK_SOURCELESS_HOST} != "no" _hptmv= hptmv _hptnr= hptnr _hptrr= hptrr .endif _hyperv= hyperv _ichwd= ichwd _ida= ida _iir= iir _ipmi= ipmi _ips= ips _isci= isci _ipw= ipw _iwi= iwi _iwm= iwm _iwn= iwn _ixgb= ixgb .if ${MK_SOURCELESS_UCODE} != "no" _ipwfw= ipwfw _iwifw= iwifw _iwmfw= iwmfw _iwnfw= iwnfw .endif _mlx4= mlx4 _mlx5= mlx5 .if (${MK_INET_SUPPORT} != "no" && ${MK_INET6_SUPPORT} != "no") || \ defined(ALL_MODULES) _mlx4en= mlx4en _mlx5en= mlx5en .endif .if ${MK_OFED} != "no" || defined(ALL_MODULES) _mlx4ib= mlx4ib .endif _mly= mly .if ${MK_OFED} != "no" || defined(ALL_MODULES) _mthca= mthca .endif _nfe= nfe _nvd= nvd _nvme= nvme _nvram= nvram _nxge= nxge .if ${MK_CRYPT} != "no" || defined(ALL_MODULES) _padlock= padlock _padlock_rng= padlock_rng _rdrand_rng= rdrand_rng .endif _s3= s3 _tpm= tpm _twa= twa _vesa= vesa _viawd= viawd _virtio= virtio _wpi= wpi .if ${MK_SOURCELESS_UCODE} != "no" _wpifw= wpifw .endif _x86bios= x86bios .endif .endif .if ${MACHINE_CPUARCH} == "amd64" _efirt= efirt _ioat= ioat _ixl= ixl _ixlv= ixlv _linux64= linux64 _linux_common= linux_common _ntb= ntb _pms= pms _qlxge= qlxge _qlxgb= qlxgb _qlxgbe= qlxgbe _sfxge= sfxge .if ${MK_BHYVE} != "no" || defined(ALL_MODULES) _vmm= vmm .endif .endif .if ${MACHINE_CPUARCH} == "i386" # XXX some of these can move to the general case when de-i386'ed # XXX some of these can move now, but are untested on other architectures. _3dfx= 3dfx _3dfx_linux= 3dfx_linux _aic= aic _apm= apm _arcnet= arcnet .if ${MK_SOURCELESS_UCODE} != "no" _ce= ce .endif _coff= coff .if ${MK_SOURCELESS_UCODE} != "no" _cp= cp .endif _elink= elink _glxiic= glxiic _glxsb= glxsb #_ibcs2= ibcs2 _mse= mse _ncr= ncr _ncv= ncv _nsp= nsp _pcfclock= pcfclock _pst= pst _sbni= sbni _streams= streams _stg= stg _svr4= svr4 .if ${MACHINE} == "i386" .if ${MK_EISA} != "no" _ahb= ahb .endif _bios= bios _cm= cm .if ${MK_SOURCELESS_UCODE} != "no" _ctau= ctau .endif _dpt= dpt _ex= ex .elif ${MACHINE} == "pc98" _canbepm= canbepm _canbus= canbus _ct= ct _pmc= pmc _snc= snc .endif .endif .if ${MACHINE_CPUARCH} == "arm" _cfi= cfi _cpsw= cpsw .endif .if ${MACHINE_CPUARCH} == "powerpc" _agp= agp _an= an _bm= bm _cardbus= cardbus _cbb= cbb _cfi= cfi _cpufreq= cpufreq _drm= drm _exca= exca _nvram= powermac_nvram _pccard= pccard _wi= wi .endif .if ${MACHINE_ARCH} == "powerpc64" _drm2= drm2 .endif .if ${MACHINE_CPUARCH} == "sparc64" _auxio= auxio _em= em _epic= epic _igb= igb .endif .if (${MACHINE_CPUARCH} == "amd64" || ${MACHINE_ARCH} == "armv6" || \ ${MACHINE_CPUARCH} == "i386") _cloudabi32= cloudabi32 .endif .if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64" _cloudabi64= cloudabi64 .endif .endif SUBDIR+=${MODULES_EXTRA} .for reject in ${WITHOUT_MODULES} SUBDIR:= ${SUBDIR:N${reject}} .endfor # Calling kldxref(8) for each module is expensive. .if !defined(NO_XREF) .MAKEFLAGS+= -DNO_XREF afterinstall: .PHONY @if type kldxref >/dev/null 2>&1; then \ ${ECHO} kldxref ${DESTDIR}${KMODDIR}; \ kldxref ${DESTDIR}${KMODDIR}; \ fi .endif .include "${SYSDIR}/conf/config.mk" SUBDIR:= ${SUBDIR:u:O} .include diff --git a/sys/modules/rtwn/Makefile b/sys/modules/rtwn/Makefile index f5d230caab5f..d6d9d6d48d9b 100644 --- a/sys/modules/rtwn/Makefile +++ b/sys/modules/rtwn/Makefile @@ -1,8 +1,45 @@ # $FreeBSD$ -.PATH: ${.CURDIR}/../../dev/rtwn +.PATH: ${.CURDIR}/../../dev/rtwn -KMOD = if_rtwn -SRCS = if_rtwn.c device_if.h bus_if.h pci_if.h +SYSDIR?=${.CURDIR}/../.. +.include "${SYSDIR}/conf/kern.opts.mk" + +KMOD = if_rtwn +SRCS = if_rtwn.c if_rtwn_tx.c if_rtwn_rx.c if_rtwn_beacon.c \ + if_rtwn_calib.c if_rtwn_cam.c if_rtwn_task.c if_rtwn_efuse.c \ + if_rtwn_fw.c if_rtwn_nop.h if_rtwnreg.h if_rtwnvar.h if_rtwn_tx.h \ + if_rtwn_rx.h if_rtwn_beacon.h if_rtwn_calib.h if_rtwn_cam.h \ + if_rtwn_task.h if_rtwn_efuse.h if_rtwn_fw.h \ + bus_if.h device_if.h \ + opt_bus.h opt_rtwn.h opt_wlan.h + +.PATH: ${.CURDIR}/../../dev/rtwn/rtl8192c +SRCS += r92c_attach.c r92c_beacon.c r92c_calib.c r92c_chan.c r92c_fw.c \ + r92c_init.c r92c_rf.c r92c_rom.c r92c_rx.c r92c_tx.c \ + r92c.h r92c_priv.h r92c_reg.h r92c_var.h r92c_rom_defs.h \ + r92c_rom_image.h r92c_fw_cmd.h r92c_rx_desc.h r92c_tx_desc.h + +.PATH: ${.CURDIR}/../../dev/rtwn/rtl8188e +SRCS += r88e_beacon.c r88e_calib.c r88e_chan.c r88e_fw.c r88e_init.c \ + r88e_led.c r88e_rf.c r88e_rom.c r88e_rx.c r88e_tx.c r88e.h \ + r88e_priv.h r88e_reg.h r88e_rom_defs.h r88e_rom_image.h \ + r88e_fw_cmd.h r88e_rx_desc.h r88e_tx_desc.h + +.PATH: ${.CURDIR}/../../dev/rtwn/rtl8812a +SRCS += r12a_beacon.c r12a_calib.c r12a_caps.c r12a_chan.c r12a_fw.c \ + r12a_init.c r12a_led.c r12a_rf.c r12a_rom.c r12a_rx.c r12a_tx.c \ + r12a.h r12a_priv.h r12a_reg.h r12a_var.h r12a_rom_defs.h \ + r12a_rom_image.h r12a_fw_cmd.h r12a_rx_desc.h r12a_tx_desc.h + +.PATH: ${.CURDIR}/../../dev/rtwn/rtl8821a +SRCS += r21a_beacon.c r21a_calib.c r21a_chan.c r21a_fw.c r21a_init.c \ + r21a_led.c r21a_rom.c r21a_rx.c r21a.h r21a_priv.h r21a_reg.h + +opt_rtwn.h: + @echo "#define RTWN_DEBUG 1" > ${.TARGET} +.if ${MK_SOURCELESS_UCODE} == "no" + @echo "#define RTWN_WITHOUT_UCODE 1" >> ${.TARGET} +.endif .include diff --git a/sys/modules/rtwn_pci/Makefile b/sys/modules/rtwn_pci/Makefile new file mode 100644 index 000000000000..25cc718b9bee --- /dev/null +++ b/sys/modules/rtwn_pci/Makefile @@ -0,0 +1,26 @@ +# $FreeBSD$ + +.PATH: ${.CURDIR}/../../dev/rtwn/pci + +SYSDIR?=${.CURDIR}/../.. +.include "${SYSDIR}/conf/kern.opts.mk" + +KMOD = if_rtwn_pci +SRCS = rtwn_pci_attach.c rtwn_pci_reg.c rtwn_pci_rx.c rtwn_pci_tx.c \ + rtwn_pci_attach.h rtwn_pci_reg.h rtwn_pci_rx.h rtwn_pci_tx.h \ + rtwn_pci_var.h \ + device_if.h bus_if.h pci_if.h \ + opt_bus.h opt_rtwn.h opt_wlan.h + +.PATH: ${.CURDIR}/../../dev/rtwn/rtl8192c/pci +SRCS += r92ce_attach.c r92ce_calib.c r92ce_fw.c r92ce_init.c r92ce_led.c \ + r92ce_rx.c r92ce_tx.c \ + r92ce.h r92ce_priv.h r92ce_reg.h r92ce_rx_desc.h r92ce_tx_desc.h + +opt_rtwn.h: + @echo "#define RTWN_DEBUG 1" > ${.TARGET} +.if ${MK_SOURCELESS_UCODE} == "no" + @echo "#define RTWN_WITHOUT_UCODE 1" >> ${.TARGET} +.endif + +.include diff --git a/sys/modules/rtwn_usb/Makefile b/sys/modules/rtwn_usb/Makefile new file mode 100644 index 000000000000..57cd56721e1a --- /dev/null +++ b/sys/modules/rtwn_usb/Makefile @@ -0,0 +1,37 @@ +# $FreeBSD$ + +.PATH: ${.CURDIR}/../../dev/rtwn/usb + +SYSDIR?=${.CURDIR}/../.. +.include "${SYSDIR}/conf/kern.opts.mk" + +KMOD = if_rtwn_usb +SRCS = rtwn_usb_attach.c rtwn_usb_ep.c rtwn_usb_reg.c rtwn_usb_rx.c \ + rtwn_usb_tx.c rtwn_usb_attach.h rtwn_usb_ep.h rtwn_usb_reg.h \ + rtwn_usb_rx.h rtwn_usb_tx.h rtwn_usb_var.h \ + bus_if.h device_if.h \ + opt_bus.h opt_rtwn.h opt_usb.h opt_wlan.h usb_if.h usbdevs.h + +.PATH: ${.CURDIR}/../../dev/rtwn/rtl8188e/usb +SRCS += r88eu_attach.c r88eu_init.c r88eu_rx.c \ + r88eu.h r88eu_reg.h + +.PATH: ${.CURDIR}/../../dev/rtwn/rtl8192c/usb +SRCS += r92cu_attach.c r92cu_init.c r92cu_led.c r92cu_rx.c r92cu_tx.c \ + r92cu.h r92cu_priv.h r92cu_reg.h r92cu_tx_desc.h + +.PATH: ${.CURDIR}/../../dev/rtwn/rtl8812a/usb +SRCS += r12au_attach.c r12au_init.c r12au_rx.c r12au_tx.c \ + r12au.h r12au_reg.h r12au_tx_desc.h + +.PATH: ${.CURDIR}/../../dev/rtwn/rtl8821a/usb +SRCS += r21au_attach.c r21au_init.c \ + r21au.h r21au_reg.h + +opt_rtwn.h: + @echo "#define RTWN_DEBUG 1" > ${.TARGET} +.if ${MK_SOURCELESS_UCODE} == "no" + @echo "#define RTWN_WITHOUT_UCODE 1" >> ${.TARGET} +.endif + +.include diff --git a/sys/modules/rtwnfw/Makefile b/sys/modules/rtwnfw/Makefile index 7a679dfbfebb..ca9ab005e183 100644 --- a/sys/modules/rtwnfw/Makefile +++ b/sys/modules/rtwnfw/Makefile @@ -1,5 +1,6 @@ # $FreeBSD$ -SUBDIR= rtwnrtl8192cU rtwnrtl8192cUB +SUBDIR= rtwnrtl8188eu rtwnrtl8192cT rtwnrtl8192cU rtwnrtl8812au rtwnrtl8821au \ + rtwnrtl8192cE rtwnrtl8192cEB .include diff --git a/sys/modules/rtwnfw/Makefile.inc b/sys/modules/rtwnfw/Makefile.inc index ce5bcee3f531..a101166e7063 100644 --- a/sys/modules/rtwnfw/Makefile.inc +++ b/sys/modules/rtwnfw/Makefile.inc @@ -1,15 +1,15 @@ # $FreeBSD$ # # Common rules for building firmware. Note this gets auto-included # by the subdir Makefile's as a consequence of included bsd.kmod.mk. _FIRM= ${IMG}.fw CLEANFILES+= ${_FIRM} FIRMWS= ${_FIRM}:${KMOD}:111 -FIRMWARE_LICENSE= realtek +# FIRMWARE_LICENSE= realtek ${_FIRM}: ${.CURDIR}/../../../contrib/dev/rtwn/${_FIRM}.uu uudecode -p $? > ${.TARGET} diff --git a/sys/modules/rtwnfw/rtwnrtl8188eu/Makefile b/sys/modules/rtwnfw/rtwnrtl8188eu/Makefile new file mode 100644 index 000000000000..2ec128e651da --- /dev/null +++ b/sys/modules/rtwnfw/rtwnrtl8188eu/Makefile @@ -0,0 +1,6 @@ +# $FreeBSD$ + +KMOD= rtwn-rtl8188eufw +IMG= rtwn-rtl8188eufw + +.include diff --git a/sys/modules/rtwnfw/rtwnrtl8192cE/Makefile b/sys/modules/rtwnfw/rtwnrtl8192cE/Makefile new file mode 100644 index 000000000000..095d782b2897 --- /dev/null +++ b/sys/modules/rtwnfw/rtwnrtl8192cE/Makefile @@ -0,0 +1,6 @@ +# $FreeBSD$ + +KMOD= rtwn-rtl8192cfwE +IMG= rtwn-rtl8192cfwE + +.include diff --git a/sys/modules/rtwnfw/rtwnrtl8192cEB/Makefile b/sys/modules/rtwnfw/rtwnrtl8192cEB/Makefile new file mode 100644 index 000000000000..c27f48c92db2 --- /dev/null +++ b/sys/modules/rtwnfw/rtwnrtl8192cEB/Makefile @@ -0,0 +1,6 @@ +# $FreeBSD$ + +KMOD= rtwn-rtl8192cfwE_B +IMG= rtwn-rtl8192cfwE_B + +.include diff --git a/sys/modules/rtwnfw/rtwnrtl8192cT/Makefile b/sys/modules/rtwnfw/rtwnrtl8192cT/Makefile new file mode 100644 index 000000000000..cca32eaf311e --- /dev/null +++ b/sys/modules/rtwnfw/rtwnrtl8192cT/Makefile @@ -0,0 +1,6 @@ +# $FreeBSD$ + +KMOD= rtwn-rtl8192cfwT +IMG= rtwn-rtl8192cfwT + +.include diff --git a/sys/modules/rtwnfw/rtwnrtl8192cUB/Makefile b/sys/modules/rtwnfw/rtwnrtl8192cUB/Makefile deleted file mode 100644 index eb878d48c184..000000000000 --- a/sys/modules/rtwnfw/rtwnrtl8192cUB/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -KMOD= rtwn-rtl8192cfwU_B -IMG= rtwn-rtl8192cfwU_B - -.include diff --git a/sys/modules/rtwnfw/rtwnrtl8812au/Makefile b/sys/modules/rtwnfw/rtwnrtl8812au/Makefile new file mode 100644 index 000000000000..66a83277dc55 --- /dev/null +++ b/sys/modules/rtwnfw/rtwnrtl8812au/Makefile @@ -0,0 +1,6 @@ +# $FreeBSD$ + +KMOD= rtwn-rtl8812aufw +IMG= rtwn-rtl8812aufw + +.include diff --git a/sys/modules/rtwnfw/rtwnrtl8821au/Makefile b/sys/modules/rtwnfw/rtwnrtl8821au/Makefile new file mode 100644 index 000000000000..c0d8060697f8 --- /dev/null +++ b/sys/modules/rtwnfw/rtwnrtl8821au/Makefile @@ -0,0 +1,6 @@ +# $FreeBSD$ + +KMOD= rtwn-rtl8821aufw +IMG= rtwn-rtl8821aufw + +.include diff --git a/sys/modules/urtwn/Makefile b/sys/modules/urtwn/Makefile deleted file mode 100644 index a4fdc254ea24..000000000000 --- a/sys/modules/urtwn/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -# $FreeBSD$ - -.PATH: ${.CURDIR}/../../dev/urtwn - -SYSDIR?=${.CURDIR}/../.. -.include "${SYSDIR}/conf/kern.opts.mk" - -KMOD = if_urtwn -SRCS = if_urtwn.c if_urtwnreg.h if_urtwnvar.h \ - bus_if.h device_if.h \ - opt_bus.h opt_urtwn.h opt_usb.h opt_wlan.h usb_if.h usbdevs.h - -.if ${MK_SOURCELESS_UCODE} == "no" -opt_urtwn.h: - @echo "#define URTWN_WITHOUT_UCODE 1" > ${.TARGET} -.endif - -.include diff --git a/sys/modules/urtwnfw/Makefile b/sys/modules/urtwnfw/Makefile deleted file mode 100644 index 611b4115bb5a..000000000000 --- a/sys/modules/urtwnfw/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -SUBDIR= urtwnrtl8188eu urtwnrtl8192cT urtwnrtl8192cU - -.include diff --git a/sys/modules/urtwnfw/Makefile.inc b/sys/modules/urtwnfw/Makefile.inc deleted file mode 100644 index 2a97a097209f..000000000000 --- a/sys/modules/urtwnfw/Makefile.inc +++ /dev/null @@ -1,15 +0,0 @@ -# $FreeBSD$ -# -# Common rules for building firmware. Note this gets auto-included -# by the subdir Makefile's as a consequence of included bsd.kmod.mk. - -_FIRM= ${IMG}.fw - -CLEANFILES+= ${_FIRM} - -FIRMWS= ${_FIRM}:${KMOD}:111 - -# FIRMWARE_LICENSE= realtek - -${_FIRM}: ${.CURDIR}/../../../contrib/dev/urtwn/${_FIRM}.uu - uudecode -p $? > ${.TARGET} diff --git a/sys/modules/urtwnfw/urtwnrtl8188eu/Makefile b/sys/modules/urtwnfw/urtwnrtl8188eu/Makefile deleted file mode 100644 index d3c974e9c03a..000000000000 --- a/sys/modules/urtwnfw/urtwnrtl8188eu/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -KMOD= urtwn-rtl8188eufw -IMG= urtwn-rtl8188eufw - -.include diff --git a/sys/modules/urtwnfw/urtwnrtl8192cT/Makefile b/sys/modules/urtwnfw/urtwnrtl8192cT/Makefile deleted file mode 100644 index ef4998454e7f..000000000000 --- a/sys/modules/urtwnfw/urtwnrtl8192cT/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -KMOD= urtwn-rtl8192cfwT -IMG= urtwn-rtl8192cfwT - -.include diff --git a/sys/modules/urtwnfw/urtwnrtl8192cU/Makefile b/sys/modules/urtwnfw/urtwnrtl8192cU/Makefile deleted file mode 100644 index e9a932c826e8..000000000000 --- a/sys/modules/urtwnfw/urtwnrtl8192cU/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -KMOD= urtwn-rtl8192cfwU -IMG= urtwn-rtl8192cfwU - -.include diff --git a/sys/riscv/conf/GENERIC b/sys/riscv/conf/GENERIC index aafa3979c186..ad23c6647e73 100644 --- a/sys/riscv/conf/GENERIC +++ b/sys/riscv/conf/GENERIC @@ -1,114 +1,114 @@ # # GENERIC -- Generic kernel configuration file for FreeBSD/RISC-V # # For more information on this file, please read the config(5) manual page, # and/or the handbook section on Kernel Configuration Files: # # http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html # # The handbook is also available locally in /usr/share/doc/handbook # if you've installed the doc distribution, otherwise always see the # FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the # latest information. # # An exhaustive list of options and more detailed explanations of the # device lines is also present in the ../../conf/NOTES and NOTES files. # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # # $FreeBSD$ cpu RISCV ident GENERIC makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols # makeoptions WITH_CTF=1 # Run ctfconvert(1) for DTrace support # FIXME: linker error. "--relax and -r may not be used together" -makeoptions WITHOUT_MODULES="usb otusfw mwlfw ispfw mwlfw ralfw rtwnfw urtwnfw" +makeoptions WITHOUT_MODULES="usb otusfw mwlfw ispfw mwlfw ralfw rtwnfw" # makeoptions NO_MODULES options SCHED_ULE # ULE scheduler options PREEMPTION # Enable kernel thread preemption options INET # InterNETworking options INET6 # IPv6 communications protocols options TCP_HHOOK # hhook(9) framework for TCP options IPSEC # IP (v4/v6) security options TCP_OFFLOAD # TCP offload options SCTP # Stream Control Transmission Protocol options FFS # Berkeley Fast Filesystem options SOFTUPDATES # Enable FFS soft updates support options UFS_ACL # Support for access control lists options UFS_DIRHASH # Improve performance on big directories options UFS_GJOURNAL # Enable gjournal-based UFS journaling options QUOTA # Enable disk quotas for UFS options NFSCL # Network Filesystem Client options NFSD # Network Filesystem Server options NFSLOCKD # Network Lock Manager options NFS_ROOT # NFS usable as /, requires NFSCL options MSDOSFS # MSDOS Filesystem options CD9660 # ISO 9660 Filesystem options PROCFS # Process filesystem (requires PSEUDOFS) options PSEUDOFS # Pseudo-filesystem framework options GEOM_PART_GPT # GUID Partition Tables. # options GEOM_RAID # Soft RAID functionality. options GEOM_LABEL # Provides labelization options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI options KTRACE # ktrace(1) support # options STACK # stack(9) support options SYSVSHM # SYSV-style shared memory options SYSVMSG # SYSV-style message queues options SYSVSEM # SYSV-style semaphores options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions options PRINTF_BUFR_SIZE=128 # Prevent printf output being interspersed. options KBD_INSTALL_CDEV # install a CDEV entry in /dev # options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) options AUDIT # Security event auditing options CAPABILITY_MODE # Capsicum capability mode options CAPABILITIES # Capsicum capabilities options MAC # TrustedBSD MAC Framework options KDTRACE_FRAME # Ensure frames are compiled in options KDTRACE_HOOKS # Kernel DTrace hooks # options VFP # Floating-point support options RACCT # Resource accounting framework options RACCT_DEFAULT_TO_DISABLED # Set kern.racct.enable=0 by default options RCTL # Resource limits options SMP # Uncomment for memory disk # options MD_ROOT # options MD_ROOT_SIZE=32768 # 32MB ram disk # makeoptions MFS_IMAGE=/path/to/img # options ROOTDEVNAME=\"ufs:/dev/md0\" # Debugging support. Always need this: options KDB # Enable kernel debugger support. options KDB_TRACE # Print a stack trace for a panic. # For full debugger support use (turn off in stable branch): options DDB # Support DDB. # options GDB # Support remote GDB. options DEADLKRES # Enable the deadlock resolver options INVARIANTS # Enable calls of extra sanity checking options INVARIANT_SUPPORT # Extra sanity checks of internal structures, required by INVARIANTS # options WITNESS # Enable checks to detect deadlocks and cycles # options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed options MALLOC_DEBUG_MAXZONES=8 # Separate malloc(9) zones # options EARLY_PRINTF # options VERBOSE_SYSINIT # Pseudo devices. device loop # Network loopback device random # Entropy device device ether # Ethernet support device vlan # 802.1Q VLAN support device tun # Packet tunnel. device md # Memory "disks" device gif # IPv6 and IPv4 tunneling device firmware # firmware assist module # The `bpf' device enables the Berkeley Packet Filter. # Be aware of the administrative consequences of enabling this! # Note that 'bpf' is required for DHCP. device bpf # Berkeley packet filter options FDT diff --git a/sys/sys/param.h b/sys/sys/param.h index 02576d6a2a39..7586fa97cf63 100644 --- a/sys/sys/param.h +++ b/sys/sys/param.h @@ -1,363 +1,363 @@ /*- * Copyright (c) 1982, 1986, 1989, 1993 * The Regents of the University of California. All rights reserved. * (c) UNIX System Laboratories, Inc. * All or some portions of this file are derived from material licensed * to the University of California by American Telephone and Telegraph * Co. or Unix System Laboratories, Inc. and are reproduced herein with * the permission of UNIX System Laboratories, Inc. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)param.h 8.3 (Berkeley) 4/4/95 * $FreeBSD$ */ #ifndef _SYS_PARAM_H_ #define _SYS_PARAM_H_ #include #define BSD 199506 /* System version (year & month). */ #define BSD4_3 1 #define BSD4_4 1 /* * __FreeBSD_version numbers are documented in the Porter's Handbook. * If you bump the version for any reason, you should update the documentation * there. * Currently this lives here in the doc/ repository: * * head/en_US.ISO8859-1/books/porters-handbook/versions/chapter.xml * * scheme is: Rxx * 'R' is in the range 0 to 4 if this is a release branch or * x.0-CURRENT before RELENG_*_0 is created, otherwise 'R' is * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 1200013 /* Master, propagated to newvers */ +#define __FreeBSD_version 1200014 /* Master, propagated to newvers */ /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, * which by definition is always true on FreeBSD. This macro is also defined * on other systems that use the kernel of FreeBSD, such as GNU/kFreeBSD. * * It is tempting to use this macro in userland code when we want to enable * kernel-specific routines, and in fact it's fine to do this in code that * is part of FreeBSD itself. However, be aware that as presence of this * macro is still not widespread (e.g. older FreeBSD versions, 3rd party * compilers, etc), it is STRONGLY DISCOURAGED to check for this macro in * external applications without also checking for __FreeBSD__ as an * alternative. */ #undef __FreeBSD_kernel__ #define __FreeBSD_kernel__ #ifdef _KERNEL #define P_OSREL_SIGWAIT 700000 #define P_OSREL_SIGSEGV 700004 #define P_OSREL_MAP_ANON 800104 #define P_OSREL_MAP_FSTRICT 1100036 #define P_OSREL_SHUTDOWN_ENOTCONN 1100077 #define P_OSREL_MAJOR(x) ((x) / 100000) #endif #ifndef LOCORE #include #endif /* * Machine-independent constants (some used in following include files). * Redefined constants are from POSIX 1003.1 limits file. * * MAXCOMLEN should be >= sizeof(ac_comm) (see ) */ #include #define MAXCOMLEN 19 /* max command name remembered */ #define MAXINTERP PATH_MAX /* max interpreter file name length */ #define MAXLOGNAME 33 /* max login name length (incl. NUL) */ #define MAXUPRC CHILD_MAX /* max simultaneous processes */ #define NCARGS ARG_MAX /* max bytes for an exec function */ #define NGROUPS (NGROUPS_MAX+1) /* max number groups */ #define NOFILE OPEN_MAX /* max open files per process */ #define NOGROUP 65535 /* marker for empty group set member */ #define MAXHOSTNAMELEN 256 /* max hostname size */ #define SPECNAMELEN 63 /* max length of devicename */ /* More types and definitions used throughout the kernel. */ #ifdef _KERNEL #include #include #ifndef LOCORE #include #include #endif #ifndef FALSE #define FALSE 0 #endif #ifndef TRUE #define TRUE 1 #endif #endif #ifndef _KERNEL /* Signals. */ #include #endif /* Machine type dependent parameters. */ #include #ifndef _KERNEL #include #endif #ifndef DEV_BSHIFT #define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */ #endif #define DEV_BSIZE (1<>PAGE_SHIFT) #endif /* * btodb() is messy and perhaps slow because `bytes' may be an off_t. We * want to shift an unsigned type to avoid sign extension and we don't * want to widen `bytes' unnecessarily. Assume that the result fits in * a daddr_t. */ #ifndef btodb #define btodb(bytes) /* calculates (bytes / DEV_BSIZE) */ \ (sizeof (bytes) > sizeof(long) \ ? (daddr_t)((unsigned long long)(bytes) >> DEV_BSHIFT) \ : (daddr_t)((unsigned long)(bytes) >> DEV_BSHIFT)) #endif #ifndef dbtob #define dbtob(db) /* calculates (db * DEV_BSIZE) */ \ ((off_t)(db) << DEV_BSHIFT) #endif #define PRIMASK 0x0ff #define PCATCH 0x100 /* OR'd with pri for tsleep to check signals */ #define PDROP 0x200 /* OR'd with pri to stop re-entry of interlock mutex */ #define NZERO 0 /* default "nice" */ #define NBBY 8 /* number of bits in a byte */ #define NBPW sizeof(int) /* number of bytes per word (integer) */ #define CMASK 022 /* default file mask: S_IWGRP|S_IWOTH */ #define NODEV (dev_t)(-1) /* non-existent device */ /* * File system parameters and macros. * * MAXBSIZE - Filesystems are made out of blocks of at most MAXBSIZE bytes * per block. MAXBSIZE may be made larger without effecting * any existing filesystems as long as it does not exceed MAXPHYS, * and may be made smaller at the risk of not being able to use * filesystems which require a block size exceeding MAXBSIZE. * * MAXBCACHEBUF - Maximum size of a buffer in the buffer cache. This must * be >= MAXBSIZE and can be set differently for different * architectures by defining it in . * Making this larger allows NFS to do larger reads/writes. * * BKVASIZE - Nominal buffer space per buffer, in bytes. BKVASIZE is the * minimum KVM memory reservation the kernel is willing to make. * Filesystems can of course request smaller chunks. Actual * backing memory uses a chunk size of a page (PAGE_SIZE). * The default value here can be overridden on a per-architecture * basis by defining it in . This should * probably be done to increase its value, when MAXBCACHEBUF is * defined as a larger value in . * * If you make BKVASIZE too small you risk seriously fragmenting * the buffer KVM map which may slow things down a bit. If you * make it too big the kernel will not be able to optimally use * the KVM memory reserved for the buffer cache and will wind * up with too-few buffers. * * The default is 16384, roughly 2x the block size used by a * normal UFS filesystem. */ #define MAXBSIZE 65536 /* must be power of 2 */ #ifndef MAXBCACHEBUF #define MAXBCACHEBUF MAXBSIZE /* must be a power of 2 >= MAXBSIZE */ #endif #ifndef BKVASIZE #define BKVASIZE 16384 /* must be power of 2 */ #endif #define BKVAMASK (BKVASIZE-1) /* * MAXPATHLEN defines the longest permissible path length after expanding * symbolic links. It is used to allocate a temporary buffer from the buffer * pool in which to do the name expansion, hence should be a power of two, * and must be less than or equal to MAXBSIZE. MAXSYMLINKS defines the * maximum number of symbolic links that may be expanded in a path name. * It should be set high enough to allow all legitimate uses, but halt * infinite loops reasonably quickly. */ #define MAXPATHLEN PATH_MAX #define MAXSYMLINKS 32 /* Bit map related macros. */ #define setbit(a,i) (((unsigned char *)(a))[(i)/NBBY] |= 1<<((i)%NBBY)) #define clrbit(a,i) (((unsigned char *)(a))[(i)/NBBY] &= ~(1<<((i)%NBBY))) #define isset(a,i) \ (((const unsigned char *)(a))[(i)/NBBY] & (1<<((i)%NBBY))) #define isclr(a,i) \ ((((const unsigned char *)(a))[(i)/NBBY] & (1<<((i)%NBBY))) == 0) /* Macros for counting and rounding. */ #ifndef howmany #define howmany(x, y) (((x)+((y)-1))/(y)) #endif #define nitems(x) (sizeof((x)) / sizeof((x)[0])) #define rounddown(x, y) (((x)/(y))*(y)) #define rounddown2(x, y) ((x)&(~((y)-1))) /* if y is power of two */ #define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) /* to any y */ #define roundup2(x, y) (((x)+((y)-1))&(~((y)-1))) /* if y is powers of two */ #define powerof2(x) ((((x)-1)&(x))==0) /* Macros for min/max. */ #define MIN(a,b) (((a)<(b))?(a):(b)) #define MAX(a,b) (((a)>(b))?(a):(b)) #ifdef _KERNEL /* * Basic byte order function prototypes for non-inline functions. */ #ifndef LOCORE #ifndef _BYTEORDER_PROTOTYPED #define _BYTEORDER_PROTOTYPED __BEGIN_DECLS __uint32_t htonl(__uint32_t); __uint16_t htons(__uint16_t); __uint32_t ntohl(__uint32_t); __uint16_t ntohs(__uint16_t); __END_DECLS #endif #endif #ifndef lint #ifndef _BYTEORDER_FUNC_DEFINED #define _BYTEORDER_FUNC_DEFINED #define htonl(x) __htonl(x) #define htons(x) __htons(x) #define ntohl(x) __ntohl(x) #define ntohs(x) __ntohs(x) #endif /* !_BYTEORDER_FUNC_DEFINED */ #endif /* lint */ #endif /* _KERNEL */ /* * Scale factor for scaled integers used to count %cpu time and load avgs. * * The number of CPU `tick's that map to a unique `%age' can be expressed * by the formula (1 / (2 ^ (FSHIFT - 11))). The maximum load average that * can be calculated (assuming 32 bits) can be closely approximated using * the formula (2 ^ (2 * (16 - FSHIFT))) for (FSHIFT < 15). * * For the scheduler to maintain a 1:1 mapping of CPU `tick' to `%age', * FSHIFT must be at least 11; this gives us a maximum load avg of ~1024. */ #define FSHIFT 11 /* bits to right of fixed binary point */ #define FSCALE (1<> (PAGE_SHIFT - DEV_BSHIFT)) #define ctodb(db) /* calculates pages to devblks */ \ ((db) << (PAGE_SHIFT - DEV_BSHIFT)) /* * Old spelling of __containerof(). */ #define member2struct(s, m, x) \ ((struct s *)(void *)((char *)(x) - offsetof(struct s, m))) /* * Access a variable length array that has been declared as a fixed * length array. */ #define __PAST_END(array, offset) (((__typeof__(*(array)) *)(array))[offset]) #endif /* _SYS_PARAM_H_ */ diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc index 8e8d307ca04f..6037da4766bb 100644 --- a/tools/build/mk/OptionalObsoleteFiles.inc +++ b/tools/build/mk/OptionalObsoleteFiles.inc @@ -1,9263 +1,9262 @@ # # $FreeBSD$ # # This file add support for the WITHOUT_* and WITH_* knobs in src.conf(5) to # the check-old and delete-old* targets. # .if ${MK_ACCT} == no OLD_FILES+=etc/rc.d/accounting OLD_FILES+=etc/periodic/daily/310.accounting OLD_FILES+=usr/sbin/accton OLD_FILES+=usr/sbin/sa OLD_FILES+=usr/share/man/man8/accton.8.gz OLD_FILES+=usr/share/man/man8/sa.8.gz OLD_FILES+=usr/tests/usr.sbin/sa/Kyuafile OLD_FILES+=usr/tests/usr.sbin/sa/legacy_test OLD_FILES+=usr/tests/usr.sbin/sa/v1-amd64-sav.in OLD_FILES+=usr/tests/usr.sbin/sa/v1-amd64-sav.out OLD_FILES+=usr/tests/usr.sbin/sa/v1-amd64-u.out OLD_FILES+=usr/tests/usr.sbin/sa/v1-amd64-usr.in OLD_FILES+=usr/tests/usr.sbin/sa/v1-amd64-usr.out OLD_FILES+=usr/tests/usr.sbin/sa/v1-i386-sav.in OLD_FILES+=usr/tests/usr.sbin/sa/v1-i386-sav.out OLD_FILES+=usr/tests/usr.sbin/sa/v1-i386-u.out OLD_FILES+=usr/tests/usr.sbin/sa/v1-i386-usr.in OLD_FILES+=usr/tests/usr.sbin/sa/v1-i386-usr.out OLD_FILES+=usr/tests/usr.sbin/sa/v1-sparc64-sav.in OLD_FILES+=usr/tests/usr.sbin/sa/v1-sparc64-sav.out OLD_FILES+=usr/tests/usr.sbin/sa/v1-sparc64-u.out OLD_FILES+=usr/tests/usr.sbin/sa/v1-sparc64-usr.in OLD_FILES+=usr/tests/usr.sbin/sa/v1-sparc64-usr.out OLD_FILES+=usr/tests/usr.sbin/sa/v2-amd64-sav.in OLD_FILES+=usr/tests/usr.sbin/sa/v2-amd64-u.out OLD_FILES+=usr/tests/usr.sbin/sa/v2-amd64-usr.in OLD_FILES+=usr/tests/usr.sbin/sa/v2-i386-sav.in OLD_FILES+=usr/tests/usr.sbin/sa/v2-i386-u.out OLD_FILES+=usr/tests/usr.sbin/sa/v2-i386-usr.in OLD_FILES+=usr/tests/usr.sbin/sa/v2-sparc64-sav.in OLD_FILES+=usr/tests/usr.sbin/sa/v2-sparc64-u.out OLD_FILES+=usr/tests/usr.sbin/sa/v2-sparc64-usr.in OLD_FILES+=usr/tests/usr.sbin/sa .endif .if ${MK_ACPI} == no OLD_FILES+=etc/devd/asus.conf OLD_FILES+=etc/rc.d/power_profile OLD_FILES+=usr/sbin/acpiconf OLD_FILES+=usr/sbin/acpidb OLD_FILES+=usr/sbin/acpidump OLD_FILES+=usr/sbin/iasl OLD_FILES+=usr/share/man/man8/acpiconf.8.gz OLD_FILES+=usr/share/man/man8/acpidb.8.gz OLD_FILES+=usr/share/man/man8/acpidump.8.gz OLD_FILES+=usr/share/man/man8/iasl.8.gz .endif .if ${MK_AMD} == no OLD_FILES+=etc/amd.map OLD_FILES+=etc/rc.d/amd OLD_FILES+=usr/bin/pawd OLD_FILES+=usr/sbin/amd OLD_FILES+=usr/sbin/amq OLD_FILES+=usr/sbin/fixmount OLD_FILES+=usr/sbin/fsinfo OLD_FILES+=usr/sbin/hlfsd OLD_FILES+=usr/sbin/mk-amd-map OLD_FILES+=usr/sbin/wire-test OLD_FILES+=usr/share/examples/etc/amd.map OLD_FILES+=usr/share/info/am-utils.info.gz OLD_FILES+=usr/share/man/man1/pawd.1.gz OLD_FILES+=usr/share/man/man5/amd.conf.5.gz OLD_FILES+=usr/share/man/man8/amd.8.gz OLD_FILES+=usr/share/man/man8/amq.8.gz OLD_FILES+=usr/share/man/man8/fixmount.8.gz OLD_FILES+=usr/share/man/man8/fsinfo.8.gz OLD_FILES+=usr/share/man/man8/hlfsd.8.gz OLD_FILES+=usr/share/man/man8/mk-amd-map.8.gz OLD_FILES+=usr/share/man/man8/wire-test.8.gz .endif .if ${MK_APM} == no OLD_FILES+=etc/rc.d/apm OLD_FILES+=etc/rc.d/apmd OLD_FILES+=etc/apmd.conf OLD_FILES+=usr/sbin/apm OLD_FILES+=usr/share/examples/etc/apmd.conf OLD_FILES+=usr/share/man/man8/amd64/apm.8.gz OLD_FILES+=usr/share/man/man8/amd64/apmconf.8.gz .endif .if ${MK_AT} == no OLD_FILES+=etc/pam.d/atrun OLD_FILES+=usr/bin/at OLD_FILES+=usr/bin/atq OLD_FILES+=usr/bin/atrm OLD_FILES+=usr/bin/batch OLD_FILES+=usr/libexec/atrun OLD_FILES+=usr/share/man/man1/at.1.gz OLD_FILES+=usr/share/man/man1/atq.1.gz OLD_FILES+=usr/share/man/man1/atrm.1.gz OLD_FILES+=usr/share/man/man1/batch.1.gz OLD_FILES+=usr/share/man/man8/atrun.8.gz .endif .if ${MK_ATM} == no OLD_FILES+=etc/rc.d/atm1 OLD_FILES+=etc/rc.d/atm2 OLD_FILES+=etc/rc.d/atm3 OLD_FILES+=rescue/atmconfig OLD_FILES+=sbin/atmconfig OLD_FILES+=usr/bin/sscop OLD_FILES+=usr/include/bsnmp/snmp_atm.h OLD_FILES+=usr/include/netnatm/addr.h OLD_FILES+=usr/include/netnatm/api/atmapi.h OLD_FILES+=usr/include/netnatm/api/ccatm.h OLD_FILES+=usr/include/netnatm/api/unisap.h OLD_DIRS+=usr/include/netnatm/api OLD_FILES+=usr/include/netnatm/msg/uni_config.h OLD_FILES+=usr/include/netnatm/msg/uni_hdr.h OLD_FILES+=usr/include/netnatm/msg/uni_ie.h OLD_FILES+=usr/include/netnatm/msg/uni_msg.h OLD_FILES+=usr/include/netnatm/msg/unimsglib.h OLD_FILES+=usr/include/netnatm/msg/uniprint.h OLD_FILES+=usr/include/netnatm/msg/unistruct.h OLD_DIRS+=usr/include/netnatm/msg OLD_FILES+=usr/include/netnatm/saal/sscfu.h OLD_FILES+=usr/include/netnatm/saal/sscfudef.h OLD_FILES+=usr/include/netnatm/saal/sscop.h OLD_FILES+=usr/include/netnatm/saal/sscopdef.h OLD_DIRS+=usr/include/netnatm/saal OLD_FILES+=usr/include/netnatm/sig/uni.h OLD_FILES+=usr/include/netnatm/sig/unidef.h OLD_FILES+=usr/include/netnatm/sig/unisig.h OLD_DIRS+=usr/include/netnatm/sig OLD_FILES+=usr/include/netnatm/unimsg.h OLD_FILES+=usr/lib/libngatm.a OLD_FILES+=usr/lib/libngatm.so OLD_LIBS+=usr/lib/libngatm.so.4 OLD_FILES+=usr/lib/libngatm_p.a OLD_FILES+=usr/lib/snmp_atm.so OLD_LIBS+=usr/lib/snmp_atm.so.6 .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" OLD_FILES+=usr/lib32/libngatm.a OLD_FILES+=usr/lib32/libngatm.so OLD_LIBS+=usr/lib32/libngatm.so.4 OLD_FILES+=usr/lib32/libngatm_p.a .endif OLD_FILES+=usr/share/doc/atm/atmconfig.help OLD_FILES+=usr/share/doc/atm/atmconfig_device.help OLD_DIRS+=usr/share/doc/atm OLD_FILES+=usr/share/man/man1/sscop.1.gz OLD_FILES+=usr/share/man/man3/libngatm.3.gz OLD_FILES+=usr/share/man/man3/snmp_atm.3.gz OLD_FILES+=usr/share/man/man3/uniaddr.3.gz OLD_FILES+=usr/share/man/man3/unifunc.3.gz OLD_FILES+=usr/share/man/man3/unimsg.3.gz OLD_FILES+=usr/share/man/man3/unisap.3.gz OLD_FILES+=usr/share/man/man3/unistruct.3.gz OLD_FILES+=usr/share/man/man8/atmconfig.8.gz OLD_FILES+=usr/share/snmp/defs/atm_freebsd.def OLD_FILES+=usr/share/snmp/defs/atm_tree.def OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-ATM-FREEBSD-MIB.txt OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-ATM.txt .endif .if ${MK_AUDIT} == no OLD_FILES+=usr/sbin/audit OLD_FILES+=usr/sbin/auditd OLD_FILES+=usr/sbin/auditreduce OLD_FILES+=usr/sbin/praudit OLD_FILES+=usr/share/man/man1/auditreduce.1.gz OLD_FILES+=usr/share/man/man1/praudit.1.gz OLD_FILES+=usr/share/man/man8/audit.8.gz OLD_FILES+=usr/share/man/man8/auditd.8.gz .endif .if ${MK_AUTHPF} == no OLD_FILES+=usr/sbin/authpf OLD_FILES+=usr/sbin/authpf-noip OLD_FILES+=usr/share/man/man8/authpf.8.gz OLD_FILES+=usr/share/man/man8/authpf-noip.8.gz .endif .if ${MK_AUTOFS} == no OLD_FILES+=etc/autofs/include_ldap OLD_FILES+=etc/autofs/special_hosts OLD_FILES+=etc/autofs/special_media OLD_FILES+=etc/autofs/special_noauto OLD_FILES+=etc/autofs/special_null OLD_FILES+=etc/auto_master OLD_FILES+=etc/rc.d/automount OLD_FILES+=etc/rc.d/automountd OLD_FILES+=etc/rc.d/autounmountd OLD_FILES+=usr/sbin/automount OLD_FILES+=usr/sbin/automountd OLD_FILES+=usr/sbin/autounmountd OLD_FILES+=usr/share/man/man5/autofs.5.gz OLD_FILES+=usr/share/man/man5/auto_master.5.gz OLD_FILES+=usr/share/man/man8/automount.8.gz OLD_FILES+=usr/share/man/man8/automountd.8.gz OLD_FILES+=usr/share/man/man8/autounmountd.8.gz OLD_DIRS+=etc/autofs .endif .if ${MK_BHYVE} == no OLD_FILES+=usr/lib/libvmmapi.a OLD_FILES+=usr/lib/libvmmapi.so OLD_LIBS+=usr/lib/libvmmapi.so.5 OLD_FILES+=usr/include/vmmapi.h OLD_FILES+=usr/sbin/bhyve OLD_FILES+=usr/sbin/bhyvectl OLD_FILES+=usr/sbin/bhyveload OLD_FILES+=usr/share/examples/bhyve/vmrun.sh OLD_FILES+=usr/share/man/man8/bhyve.8.gz OLD_FILES+=usr/share/man/man8/bhyveload.8.gz OLD_DIRS+=usr/share/examples/bhyve .endif .if ${MK_BINUTILS} == no OLD_FILES+=usr/bin/as OLD_FILES+=usr/bin/ld OLD_FILES+=usr/bin/ld.bfd OLD_FILES+=usr/bin/objdump OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.x OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xbn OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xc OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xd OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xdc OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xdw OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xn OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xr OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xs OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xsc OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xsw OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xu OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xw OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.x OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xbn OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xc OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xd OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xdc OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xdw OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xn OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xr OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xs OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xsc OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xsw OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xu OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xw OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.x OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xbn OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xc OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xd OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xdc OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xdw OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xn OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xr OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xs OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xsc OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xsw OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xu OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xw OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.x OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xbn OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xc OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xd OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xdc OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xdw OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xn OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xr OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xs OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xsc OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xsw OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xu OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xw OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.x OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xbn OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xc OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xd OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xdc OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xdw OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xn OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xr OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xs OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xsc OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xsw OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xu OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xw OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.x OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xbn OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xc OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xd OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xdc OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xdw OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xn OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xr OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xs OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xsc OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xsw OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xu OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xw OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.x OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xbn OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xc OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xd OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xdc OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xdw OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xn OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xr OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xs OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xsc OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xsw OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xu OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xw OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.x OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xbn OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xc OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xd OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xdc OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xdw OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xn OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xr OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xs OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xsc OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xsw OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xu OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xw OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.x OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xbn OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xc OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xd OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xdc OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xdw OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xn OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xr OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xs OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xsc OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xsw OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xu OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xw OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.x OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xbn OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xc OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xd OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xdc OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xdw OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xn OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xr OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xs OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xsc OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xsw OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xu OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xw OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.x OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xbn OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xc OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xd OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xdc OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xdw OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xn OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xr OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xs OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xsc OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xsw OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xu OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xw OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.x OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xbn OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xc OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xd OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xdc OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xdw OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xn OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xr OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xs OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xsc OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xsw OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xu OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xw OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.x OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xbn OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xc OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xd OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xdc OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xdw OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xn OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xr OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xs OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xsc OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xsw OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xu OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xw OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.x OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xbn OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xc OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xd OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xdc OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xdw OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xn OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xr OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xs OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xsc OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xsw OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xu OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xw OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.x OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xbn OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xc OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xd OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xdc OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xdw OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xn OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xr OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xs OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xsc OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xsw OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xu OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xw OLD_FILES+=usr/share/man/man1/as.1.gz OLD_FILES+=usr/share/man/man1/ld.1.gz OLD_FILES+=usr/share/man/man1/objdump.1.gz OLD_FILES+=usr/share/man/man7/as.7.gz OLD_FILES+=usr/share/man/man7/ld.7.gz OLD_FILES+=usr/share/man/man7/ldint.7.gz OLD_FILES+=usr/share/man/man7/binutils.7.gz .endif .if ${MK_BLACKLIST} == no OLD_FILES+=etc/rc.d/blacklistd OLD_FILES+=usr/include/blacklist.h OLD_FILES+=usr/lib/libblacklist.a OLD_FILES+=usr/lib/libblacklist_p.a OLD_FILES+=usr/lib/libblacklist.so OLD_LIBS+=usr/lib/libblacklist.so.0 OLD_FILES+=usr/libexec/blacklistd-helper OLD_FILES+=usr/sbin/blacklistctl OLD_FILES+=usr/sbin/blacklistd OLD_FILES+=usr/share/man/man3/blacklist.3.gz OLD_FILES+=usr/share/man/man3/blacklist_close.3.gz OLD_FILES+=usr/share/man/man3/blacklist_open.3.gz OLD_FILES+=usr/share/man/man3/blacklist_r.3.gz OLD_FILES+=usr/share/man/man3/blacklist_sa.3.gz OLD_FILES+=usr/share/man/man3/blacklist_sa_r.3.gz OLD_FILES+=usr/share/man/man5/blacklistd.conf.5.gz OLD_FILES+=usr/share/man/man8/blacklistctl.8.gz OLD_FILES+=usr/share/man/man8/blacklistd.8.gz .endif .if ${MK_BLUETOOTH} == no OLD_FILES+=etc/bluetooth/hcsecd.conf OLD_FILES+=etc/bluetooth/hosts OLD_FILES+=etc/bluetooth/protocols OLD_FILES+=etc/defaults/bluetooth.device.conf OLD_DIRS+=etc/bluetooth OLD_FILES+=etc/rc.d/bluetooth OLD_FILES+=etc/rc.d/bthidd OLD_FILES+=etc/rc.d/hcsecd OLD_FILES+=etc/rc.d/rfcomm_pppd_server OLD_FILES+=etc/rc.d/sdpd OLD_FILES+=etc/rc.d/ubthidhci OLD_FILES+=usr/bin/bthost OLD_FILES+=usr/bin/btsockstat OLD_FILES+=usr/bin/rfcomm_sppd OLD_FILES+=usr/include/bluetooth.h OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_bluetooth.h OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_bt3c.h OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_btsocket.h OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_btsocket_hci_raw.h OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_btsocket_l2cap.h OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_btsocket_rfcomm.h OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_btsocket_sco.h OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_h4.h OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_hci.h OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_l2cap.h OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_ubt.h OLD_DIRS+=usr/include/netgraph/bluetooth/include OLD_DIRS+=usr/include/netgraph/bluetooth OLD_FILES+=usr/include/sdp.h OLD_FILES+=usr/lib/libbluetooth.a OLD_FILES+=usr/lib/libbluetooth.so OLD_LIBS+=usr/lib/libbluetooth.so.4 OLD_FILES+=usr/lib/libbluetooth_p.a OLD_FILES+=usr/lib/libsdp.a OLD_FILES+=usr/lib/libsdp.so OLD_LIBS+=usr/lib/libsdp.so.4 OLD_FILES+=usr/lib/libsdp_p.a .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" OLD_FILES+=usr/lib32/libbluetooth.a OLD_FILES+=usr/lib32/libbluetooth.so OLD_LIBS+=usr/lib32/libbluetooth.so.4 OLD_FILES+=usr/lib32/libbluetooth_p.a OLD_FILES+=usr/lib32/libsdp.a OLD_FILES+=usr/lib32/libsdp.so OLD_LIBS+=usr/lib32/libsdp.so.4 OLD_FILES+=usr/lib32/libsdp_p.a .endif OLD_FILES+=usr/sbin/ath3kfw OLD_FILES+=usr/sbin/bcmfw OLD_FILES+=usr/sbin/bt3cfw OLD_FILES+=usr/sbin/bthidcontrol OLD_FILES+=usr/sbin/bthidd OLD_FILES+=usr/sbin/btpand OLD_FILES+=usr/sbin/hccontrol OLD_FILES+=usr/sbin/hcsecd OLD_FILES+=usr/sbin/hcseriald OLD_FILES+=usr/sbin/l2control OLD_FILES+=usr/sbin/l2ping OLD_FILES+=usr/sbin/rfcomm_pppd OLD_FILES+=usr/sbin/sdpcontrol OLD_FILES+=usr/sbin/sdpd OLD_FILES+=usr/share/examples/etc/defaults/bluetooth.device.conf OLD_FILES+=usr/share/man/man1/bthost.1.gz OLD_FILES+=usr/share/man/man1/btsockstat.1.gz OLD_FILES+=usr/share/man/man1/rfcomm_sppd.1.gz OLD_FILES+=usr/share/man/man3/SDP_GET128.3.gz OLD_FILES+=usr/share/man/man3/SDP_GET16.3.gz OLD_FILES+=usr/share/man/man3/SDP_GET32.3.gz OLD_FILES+=usr/share/man/man3/SDP_GET64.3.gz OLD_FILES+=usr/share/man/man3/SDP_GET8.3.gz OLD_FILES+=usr/share/man/man3/SDP_PUT128.3.gz OLD_FILES+=usr/share/man/man3/SDP_PUT16.3.gz OLD_FILES+=usr/share/man/man3/SDP_PUT32.3.gz OLD_FILES+=usr/share/man/man3/SDP_PUT64.3.gz OLD_FILES+=usr/share/man/man3/SDP_PUT8.3.gz OLD_FILES+=usr/share/man/man3/bdaddr_any.3.gz OLD_FILES+=usr/share/man/man3/bdaddr_copy.3.gz OLD_FILES+=usr/share/man/man3/bdaddr_same.3.gz OLD_FILES+=usr/share/man/man3/bluetooth.3.gz OLD_FILES+=usr/share/man/man3/bt_aton.3.gz OLD_FILES+=usr/share/man/man3/bt_devaddr.3.gz OLD_FILES+=usr/share/man/man3/bt_devclose.3.gz OLD_FILES+=usr/share/man/man3/bt_devenum.3.gz OLD_FILES+=usr/share/man/man3/bt_devfilter.3.gz OLD_FILES+=usr/share/man/man3/bt_devfilter_evt_clr.3.gz OLD_FILES+=usr/share/man/man3/bt_devfilter_evt_set.3.gz OLD_FILES+=usr/share/man/man3/bt_devfilter_evt_tst.3.gz OLD_FILES+=usr/share/man/man3/bt_devfilter_pkt_clr.3.gz OLD_FILES+=usr/share/man/man3/bt_devfilter_pkt_set.3.gz OLD_FILES+=usr/share/man/man3/bt_devfilter_pkt_tst.3.gz OLD_FILES+=usr/share/man/man3/bt_devinfo.3.gz OLD_FILES+=usr/share/man/man3/bt_devinquiry.3.gz OLD_FILES+=usr/share/man/man3/bt_devname.3.gz OLD_FILES+=usr/share/man/man3/bt_devopen.3.gz OLD_FILES+=usr/share/man/man3/bt_devreq.3.gz OLD_FILES+=usr/share/man/man3/bt_devsend.3.gz OLD_FILES+=usr/share/man/man3/bt_endhostent.3.gz OLD_FILES+=usr/share/man/man3/bt_endprotoent.3.gz OLD_FILES+=usr/share/man/man3/bt_gethostbyaddr.3.gz OLD_FILES+=usr/share/man/man3/bt_gethostbyname.3.gz OLD_FILES+=usr/share/man/man3/bt_gethostent.3.gz OLD_FILES+=usr/share/man/man3/bt_getprotobyname.3.gz OLD_FILES+=usr/share/man/man3/bt_getprotobynumber.3.gz OLD_FILES+=usr/share/man/man3/bt_getprotoent.3.gz OLD_FILES+=usr/share/man/man3/bt_ntoa.3.gz OLD_FILES+=usr/share/man/man3/bt_sethostent.3.gz OLD_FILES+=usr/share/man/man3/bt_setprotoent.3.gz OLD_FILES+=usr/share/man/man3/sdp.3.gz OLD_FILES+=usr/share/man/man3/sdp_attr2desc.3.gz OLD_FILES+=usr/share/man/man3/sdp_change_service.3.gz OLD_FILES+=usr/share/man/man3/sdp_close.3.gz OLD_FILES+=usr/share/man/man3/sdp_error.3.gz OLD_FILES+=usr/share/man/man3/sdp_open.3.gz OLD_FILES+=usr/share/man/man3/sdp_open_local.3.gz OLD_FILES+=usr/share/man/man3/sdp_register_service.3.gz OLD_FILES+=usr/share/man/man3/sdp_search.3.gz OLD_FILES+=usr/share/man/man3/sdp_unregister_service.3.gz OLD_FILES+=usr/share/man/man3/sdp_uuid2desc.3.gz OLD_FILES+=usr/share/man/man4/ng_bluetooth.4.gz OLD_FILES+=usr/share/man/man5/bluetooth.device.conf.5.gz OLD_FILES+=usr/share/man/man5/bluetooth.hosts.5.gz OLD_FILES+=usr/share/man/man5/bluetooth.protocols.5.gz OLD_FILES+=usr/share/man/man5/hcsecd.conf.5.gz OLD_FILES+=usr/share/man/man8/ath3kfw.8.gz OLD_FILES+=usr/share/man/man8/bcmfw.8.gz OLD_FILES+=usr/share/man/man8/bt3cfw.8.gz OLD_FILES+=usr/share/man/man8/bthidcontrol.8.gz OLD_FILES+=usr/share/man/man8/bthidd.8.gz OLD_FILES+=usr/share/man/man8/btpand.8.gz OLD_FILES+=usr/share/man/man8/hccontrol.8.gz OLD_FILES+=usr/share/man/man8/hcsecd.8.gz OLD_FILES+=usr/share/man/man8/hcseriald.8.gz OLD_FILES+=usr/share/man/man8/l2control.8.gz OLD_FILES+=usr/share/man/man8/l2ping.8.gz OLD_FILES+=usr/share/man/man8/rfcomm_pppd.8.gz OLD_FILES+=usr/share/man/man8/sdpcontrol.8.gz OLD_FILES+=usr/share/man/man8/sdpd.8.gz .endif .if ${MK_BOOT} == no OLD_FILES+=boot/beastie.4th OLD_FILES+=boot/boot OLD_FILES+=boot/boot0 OLD_FILES+=boot/boot0sio OLD_FILES+=boot/boot1 OLD_FILES+=boot/boot1.efi OLD_FILES+=boot/boot1.efifat OLD_FILES+=boot/boot2 OLD_FILES+=boot/brand.4th OLD_FILES+=boot/cdboot OLD_FILES+=boot/check-password.4th OLD_FILES+=boot/color.4th OLD_FILES+=boot/defaults/loader.conf OLD_FILES+=boot/delay.4th OLD_FILES+=boot/device.hints OLD_FILES+=boot/frames.4th OLD_FILES+=boot/gptboot OLD_FILES+=boot/gptzfsboot OLD_FILES+=boot/loader OLD_FILES+=boot/loader.4th OLD_FILES+=boot/loader.efi OLD_FILES+=boot/loader.help OLD_FILES+=boot/loader.rc OLD_FILES+=boot/mbr OLD_FILES+=boot/menu-commands.4th OLD_FILES+=boot/menu.4th OLD_FILES+=boot/menu.rc OLD_FILES+=boot/menusets.4th OLD_FILES+=boot/pcibios.4th OLD_FILES+=boot/pmbr OLD_FILES+=boot/pxeboot OLD_FILES+=boot/screen.4th OLD_FILES+=boot/shortcuts.4th OLD_FILES+=boot/support.4th OLD_FILES+=boot/userboot.so OLD_FILES+=boot/version.4th OLD_FILES+=boot/zfsboot OLD_FILES+=boot/zfsloader OLD_FILES+=usr/lib/kgzldr.o OLD_FILES+=usr/share/man/man5/loader.conf.5.gz OLD_FILES+=usr/share/man/man8/beastie.4th.8.gz OLD_FILES+=usr/share/man/man8/brand.4th.8.gz OLD_FILES+=usr/share/man/man8/check-password.4th.8.gz OLD_FILES+=usr/share/man/man8/color.4th.8.gz OLD_FILES+=usr/share/man/man8/delay.4th.8.gz OLD_FILES+=usr/share/man/man8/gptboot.8.gz OLD_FILES+=usr/share/man/man8/gptzfsboot.8.gz OLD_FILES+=usr/share/man/man8/loader.4th.8.gz OLD_FILES+=usr/share/man/man8/loader.8.gz OLD_FILES+=usr/share/man/man8/menu.4th.8.gz OLD_FILES+=usr/share/man/man8/menusets.4th.8.gz OLD_FILES+=usr/share/man/man8/pxeboot.8.gz OLD_FILES+=usr/share/man/man8/version.4th.8.gz OLD_FILES+=usr/share/man/man8/zfsboot.8.gz OLD_FILES+=usr/share/man/man8/zfsloader.8.gz .endif .if ${MK_BSD_CPIO} == no OLD_FILES+=usr/bin/bsdcpio OLD_FILES+=usr/bin/cpio OLD_FILES+=usr/share/man/man1/bsdcpio.1.gz OLD_FILES+=usr/share/man/man1/cpio.1.gz .endif .if ${MK_BSD_GREP} == no OLD_FILES+=usr/bin/lzegrep OLD_FILES+=usr/bin/lzfgrep OLD_FILES+=usr/bin/lzgrep OLD_FILES+=usr/bin/xzegrep OLD_FILES+=usr/bin/xzfgrep OLD_FILES+=usr/bin/xzgrep OLD_FILES+=usr/share/man/man1/lzegrep.1.gz OLD_FILES+=usr/share/man/man1/lzfgrep.1.gz OLD_FILES+=usr/share/man/man1/lzgrep.1.gz OLD_FILES+=usr/share/man/man1/xzegrep.1.gz OLD_FILES+=usr/share/man/man1/xzfgrep.1.gz OLD_FILES+=usr/share/man/man1/xzgrep.1.gz .endif .if ${MK_BSDINSTALL} == no OLD_FILES+=usr/libexec/bsdinstall/adduser OLD_FILES+=usr/libexec/bsdinstall/auto OLD_FILES+=usr/libexec/bsdinstall/autopart OLD_FILES+=usr/libexec/bsdinstall/checksum OLD_FILES+=usr/libexec/bsdinstall/config OLD_FILES+=usr/libexec/bsdinstall/distextract OLD_FILES+=usr/libexec/bsdinstall/distfetch OLD_FILES+=usr/libexec/bsdinstall/docsinstall OLD_FILES+=usr/libexec/bsdinstall/entropy OLD_FILES+=usr/libexec/bsdinstall/hostname OLD_FILES+=usr/libexec/bsdinstall/jail OLD_FILES+=usr/libexec/bsdinstall/keymap OLD_FILES+=usr/libexec/bsdinstall/mirrorselect OLD_FILES+=usr/libexec/bsdinstall/mount OLD_FILES+=usr/libexec/bsdinstall/netconfig OLD_FILES+=usr/libexec/bsdinstall/netconfig_ipv4 OLD_FILES+=usr/libexec/bsdinstall/netconfig_ipv6 OLD_FILES+=usr/libexec/bsdinstall/partedit OLD_FILES+=usr/libexec/bsdinstall/rootpass OLD_FILES+=usr/libexec/bsdinstall/script OLD_FILES+=usr/libexec/bsdinstall/scriptedpart OLD_FILES+=usr/libexec/bsdinstall/services OLD_FILES+=usr/libexec/bsdinstall/time OLD_FILES+=usr/libexec/bsdinstall/umount OLD_FILES+=usr/libexec/bsdinstall/wlanconfig OLD_FILES+=usr/libexec/bsdinstall/zfsboot OLD_FILES+=usr/sbin/bsdinstall OLD_FILES+=usr/share/man/man8/bsdinstall.8.gz OLD_FILES+=usr/share/man/man8/sade.8.gz OLD_DIRS+=usr/libexec/bsdinstall .endif .if ${MK_BSNMP} == no OLD_FILES+=etc/snmpd.config OLD_FILES+=etc/rc.d/bsnmpd OLD_FILES+=usr/bin/bsnmpget OLD_FILES+=usr/bin/bsnmpset OLD_FILES+=usr/bin/bsnmpwalk OLD_FILES+=usr/include/bsnmp/asn1.h OLD_FILES+=usr/include/bsnmp/bridge_snmp.h OLD_FILES+=usr/include/bsnmp/snmp.h OLD_FILES+=usr/include/bsnmp/snmp_atm.h OLD_FILES+=usr/include/bsnmp/snmp_mibII.h OLD_FILES+=usr/include/bsnmp/snmp_netgraph.h OLD_FILES+=usr/include/bsnmp/snmpagent.h OLD_FILES+=usr/include/bsnmp/snmpclient.h OLD_FILES+=usr/include/bsnmp/snmpmod.h OLD_FILES+=usr/lib/libbsnmp.a OLD_FILES+=usr/lib/libbsnmp.so OLD_LIBS+=usr/lib/libbsnmp.so.6 OLD_FILES+=usr/lib/libbsnmp_p.a OLD_FILES+=usr/lib/libbsnmptools.a OLD_FILES+=usr/lib/libbsnmptools.so OLD_LIBS+=usr/lib/libbsnmptools.so.0 OLD_FILES+=usr/lib/libbsnmptools_p.a OLD_FILES+=usr/lib/snmp_atm.so OLD_LIBS+=usr/lib/snmp_atm.so.6 OLD_FILES+=usr/lib/snmp_bridge.so OLD_LIBS+=usr/lib/snmp_bridge.so.6 OLD_FILES+=usr/lib/snmp_hast.so OLD_LIBS+=usr/lib/snmp_hast.so.6 OLD_FILES+=usr/lib/snmp_hostres.so OLD_LIBS+=usr/lib/snmp_hostres.so.6 OLD_FILES+=usr/lib/snmp_lm75.so OLD_LIBS+=usr/lib/snmp_lm75.so.6 OLD_FILES+=usr/lib/snmp_mibII.so OLD_LIBS+=usr/lib/snmp_mibII.so.6 OLD_FILES+=usr/lib/snmp_netgraph.so OLD_LIBS+=usr/lib/snmp_netgraph.so.6 OLD_FILES+=usr/lib/snmp_pf.so OLD_LIBS+=usr/lib/snmp_pf.so.6 OLD_FILES+=usr/lib/snmp_target.so OLD_LIBS+=usr/lib/snmp_target.so.6 OLD_FILES+=usr/lib/snmp_usm.so OLD_LIBS+=usr/lib/snmp_usm.so.6 OLD_FILES+=usr/lib/snmp_vacm.so OLD_LIBS+=usr/lib/snmp_vacm.so.6 OLD_FILES+=usr/lib/snmp_wlan.so OLD_LIBS+=usr/lib/snmp_wlan.so.6 OLD_FILES+=usr/lib32/libbsnmp.a OLD_FILES+=usr/lib32/libbsnmp.so OLD_LIBS+=usr/lib32/libbsnmp.so.6 OLD_FILES+=usr/lib32/libbsnmp_p.a OLD_FILES+=usr/sbin/bsnmpd OLD_FILES+=usr/sbin/gensnmptree OLD_FILES+=usr/share/examples/etc/snmpd.config OLD_FILES+=usr/share/man/man1/bsnmpd.1.gz OLD_FILES+=usr/share/man/man1/bsnmpget.1.gz OLD_FILES+=usr/share/man/man1/bsnmpset.1.gz OLD_FILES+=usr/share/man/man1/bsnmpwalk.1.gz OLD_FILES+=usr/share/man/man1/gensnmptree.1.gz OLD_FILES+=usr/share/man/man3/asn1.3.gz OLD_FILES+=usr/share/man/man3/bsnmpagent.3.gz OLD_FILES+=usr/share/man/man3/bsnmpclient.3.gz OLD_FILES+=usr/share/man/man3/bsnmplib.3.gz OLD_FILES+=usr/share/man/man3/snmp_atm.3.gz OLD_FILES+=usr/share/man/man3/snmp_bridge.3.gz OLD_FILES+=usr/share/man/man3/snmp_hast.3.gz OLD_FILES+=usr/share/man/man3/snmp_hostres.3.gz OLD_FILES+=usr/share/man/man3/snmp_lm75.3.gz OLD_FILES+=usr/share/man/man3/snmp_mibII.3.gz OLD_FILES+=usr/share/man/man3/snmp_netgraph.3.gz OLD_FILES+=usr/share/man/man3/snmp_target.3.gz OLD_FILES+=usr/share/man/man3/snmp_usm.3.gz OLD_FILES+=usr/share/man/man3/snmp_vacm.3.gz OLD_FILES+=usr/share/man/man3/snmp_wlan.3.gz OLD_FILES+=usr/share/man/man3/snmpmod.3.gz OLD_FILES+=usr/share/snmp/defs/atm_freebsd.def OLD_FILES+=usr/share/snmp/defs/atm_tree.def OLD_FILES+=usr/share/snmp/defs/bridge_tree.def OLD_FILES+=usr/share/snmp/defs/hast_tree.def OLD_FILES+=usr/share/snmp/defs/hostres_tree.def OLD_FILES+=usr/share/snmp/defs/lm75_tree.def OLD_FILES+=usr/share/snmp/defs/mibII_tree.def OLD_FILES+=usr/share/snmp/defs/netgraph_tree.def OLD_FILES+=usr/share/snmp/defs/pf_tree.def OLD_FILES+=usr/share/snmp/defs/target_tree.def OLD_FILES+=usr/share/snmp/defs/tree.def OLD_FILES+=usr/share/snmp/defs/usm_tree.def OLD_FILES+=usr/share/snmp/defs/vacm_tree.def OLD_FILES+=usr/share/snmp/defs/wlan_tree.def OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-ATM-FREEBSD-MIB.txt OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-ATM.txt OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-BRIDGE-MIB.txt OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-HAST-MIB.txt OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-HOSTRES-MIB.txt OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-IP-MIB.txt OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-LM75-MIB.txt OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-MIB.txt OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-MIB2-MIB.txt OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-NETGRAPH.txt OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-PF-MIB.txt OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-SNMPD.txt OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-WIRELESS-MIB.txt OLD_FILES+=usr/share/snmp/mibs/BRIDGE-MIB.txt OLD_FILES+=usr/share/snmp/mibs/FOKUS-MIB.txt OLD_FILES+=usr/share/snmp/mibs/FREEBSD-MIB.txt OLD_FILES+=usr/share/snmp/mibs/RSTP-MIB.txt OLD_DIRS+=usr/include/bsnmp OLD_DIRS+=usr/share/snmp OLD_DIRS+=usr/share/snmp/defs OLD_DIRS+=usr/share/snmp/mibs .endif .if ${MK_CALENDAR} == no OLD_FILES+=etc/periodic/daily/300.calendar OLD_FILES+=usr/bin/calendar OLD_FILES+=usr/share/calendar/calendar.all OLD_FILES+=usr/share/calendar/calendar.australia OLD_FILES+=usr/share/calendar/calendar.birthday OLD_FILES+=usr/share/calendar/calendar.brazilian OLD_FILES+=usr/share/calendar/calendar.christian OLD_FILES+=usr/share/calendar/calendar.computer OLD_FILES+=usr/share/calendar/calendar.croatian OLD_FILES+=usr/share/calendar/calendar.dutch OLD_FILES+=usr/share/calendar/calendar.freebsd OLD_FILES+=usr/share/calendar/calendar.french OLD_FILES+=usr/share/calendar/calendar.german OLD_FILES+=usr/share/calendar/calendar.history OLD_FILES+=usr/share/calendar/calendar.holiday OLD_FILES+=usr/share/calendar/calendar.hungarian OLD_FILES+=usr/share/calendar/calendar.judaic OLD_FILES+=usr/share/calendar/calendar.lotr OLD_FILES+=usr/share/calendar/calendar.music OLD_FILES+=usr/share/calendar/calendar.newzealand OLD_FILES+=usr/share/calendar/calendar.russian OLD_FILES+=usr/share/calendar/calendar.southafrica OLD_FILES+=usr/share/calendar/calendar.ukrainian OLD_FILES+=usr/share/calendar/calendar.usholiday OLD_FILES+=usr/share/calendar/calendar.world OLD_FILES+=usr/share/calendar/de_AT.ISO_8859-15/calendar.feiertag OLD_DIRS+=usr/share/calendar/de_AT.ISO_8859-15 OLD_FILES+=usr/share/calendar/de_DE.ISO8859-1/calendar.all OLD_FILES+=usr/share/calendar/de_DE.ISO8859-1/calendar.feiertag OLD_FILES+=usr/share/calendar/de_DE.ISO8859-1/calendar.geschichte OLD_FILES+=usr/share/calendar/de_DE.ISO8859-1/calendar.kirche OLD_FILES+=usr/share/calendar/de_DE.ISO8859-1/calendar.literatur OLD_FILES+=usr/share/calendar/de_DE.ISO8859-1/calendar.musik OLD_FILES+=usr/share/calendar/de_DE.ISO8859-1/calendar.wissenschaft OLD_DIRS+=usr/share/calendar/de_DE.ISO8859-1 OLD_FILES+=usr/share/calendar/de_DE.ISO8859-15 OLD_FILES+=usr/share/calendar/fr_FR.ISO8859-1/calendar.all OLD_FILES+=usr/share/calendar/fr_FR.ISO8859-1/calendar.fetes OLD_FILES+=usr/share/calendar/fr_FR.ISO8859-1/calendar.french OLD_FILES+=usr/share/calendar/fr_FR.ISO8859-1/calendar.jferies OLD_FILES+=usr/share/calendar/fr_FR.ISO8859-1/calendar.proverbes OLD_DIRS+=usr/share/calendar/fr_FR.ISO8859-1 OLD_FILES+=usr/share/calendar/fr_FR.ISO8859-15 OLD_FILES+=usr/share/calendar/hr_HR.ISO8859-2/calendar.all OLD_FILES+=usr/share/calendar/hr_HR.ISO8859-2/calendar.praznici OLD_DIRS+=usr/share/calendar/hr_HR.ISO8859-2 OLD_FILES+=usr/share/calendar/hu_HU.ISO8859-2/calendar.all OLD_FILES+=usr/share/calendar/hu_HU.ISO8859-2/calendar.nevnapok OLD_FILES+=usr/share/calendar/hu_HU.ISO8859-2/calendar.unnepek OLD_DIRS+=usr/share/calendar/hu_HU.ISO8859-2 OLD_FILES+=usr/share/calendar/pt_BR.ISO8859-1/calendar.all OLD_FILES+=usr/share/calendar/pt_BR.ISO8859-1/calendar.commemorative OLD_FILES+=usr/share/calendar/pt_BR.ISO8859-1/calendar.holidays OLD_FILES+=usr/share/calendar/pt_BR.ISO8859-1/calendar.mcommemorative OLD_DIRS+=usr/share/calendar/pt_BR.ISO8859-1 OLD_FILES+=usr/share/calendar/pt_BR.UTF-8/calendar.all OLD_FILES+=usr/share/calendar/pt_BR.UTF-8/calendar.commemorative OLD_FILES+=usr/share/calendar/pt_BR.UTF-8/calendar.holidays OLD_FILES+=usr/share/calendar/pt_BR.UTF-8/calendar.mcommemorative OLD_DIRS+=usr/share/calendar/pt_BR.UTF-8 OLD_FILES+=usr/share/calendar/ru_RU.KOI8-R/calendar.all OLD_FILES+=usr/share/calendar/ru_RU.KOI8-R/calendar.common OLD_FILES+=usr/share/calendar/ru_RU.KOI8-R/calendar.holiday OLD_FILES+=usr/share/calendar/ru_RU.KOI8-R/calendar.military OLD_FILES+=usr/share/calendar/ru_RU.KOI8-R/calendar.orthodox OLD_FILES+=usr/share/calendar/ru_RU.KOI8-R/calendar.pagan OLD_DIRS+=usr/share/calendar/ru_RU.KOI8-R OLD_FILES+=usr/share/calendar/ru_RU.UTF-8/calendar.all OLD_FILES+=usr/share/calendar/ru_RU.UTF-8/calendar.common OLD_FILES+=usr/share/calendar/ru_RU.UTF-8/calendar.holiday OLD_FILES+=usr/share/calendar/ru_RU.UTF-8/calendar.military OLD_FILES+=usr/share/calendar/ru_RU.UTF-8/calendar.orthodox OLD_FILES+=usr/share/calendar/ru_RU.UTF-8/calendar.pagan OLD_DIRS+=usr/share/calendar/ru_RU.UTF-8 OLD_FILES+=usr/share/calendar/uk_UA.KOI8-U/calendar.all OLD_FILES+=usr/share/calendar/uk_UA.KOI8-U/calendar.holiday OLD_FILES+=usr/share/calendar/uk_UA.KOI8-U/calendar.misc OLD_FILES+=usr/share/calendar/uk_UA.KOI8-U/calendar.orthodox OLD_DIRS+=usr/share/calendar/uk_UA.KOI8-U OLD_DIRS+=usr/share/calendar OLD_FILES+=usr/share/man/man1/calendar.1.gz OLD_FILES+=usr/tests/usr.bin/calendar/Kyuafile OLD_FILES+=usr/tests/usr.bin/calendar/calendar.calibrate OLD_FILES+=usr/tests/usr.bin/calendar/legacy_test OLD_FILES+=usr/tests/usr.bin/calendar/regress.a1.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.a2.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.a3.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.a4.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.a5.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.b1.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.b2.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.b3.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.b4.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.b5.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.s1.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.s2.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.s3.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.s4.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.sh OLD_FILES+=usr/tests/usr.bin/calendar/regress.w0-1.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.w0-2.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.w0-3.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.w0-4.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.w0-5.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.w0-6.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.w0-7.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.wn-1.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.wn-2.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.wn-3.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.wn-4.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.wn-5.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.wn-6.out OLD_FILES+=usr/tests/usr.bin/calendar/regress.wn-7.out OLD_DIRS+=usr/tests/usr.bin/calendar .endif .if ${MK_CASPER} == no OLD_FILES+=etc/casper/system.dns OLD_FILES+=etc/casper/system.grp OLD_FILES+=etc/casper/system.pwd OLD_FILES+=etc/casper/system.random OLD_FILES+=etc/casper/system.sysctl OLD_FILES+=etc/rc.d/casperd OLD_LIBS+=lib/libcapsicum.so.0 OLD_LIBS+=lib/libcasper.so.0 OLD_FILES+=libexec/casper/dns OLD_FILES+=libexec/casper/grp OLD_FILES+=libexec/casper/pwd OLD_FILES+=libexec/casper/random OLD_FILES+=libexec/casper/sysctl OLD_FILES+=sbin/casper OLD_FILES+=sbin/casperd OLD_FILES+=usr/include/libcapsicum.h OLD_FILES+=usr/include/libcapsicum_dns.h OLD_FILES+=usr/include/libcapsicum_grp.h OLD_FILES+=usr/include/libcapsicum_pwd.h OLD_FILES+=usr/include/libcapsicum_random.h OLD_FILES+=usr/include/libcapsicum_service.h OLD_FILES+=usr/include/libcapsicum_sysctl.h OLD_FILES+=usr/include/libcasper.h OLD_FILES+=usr/lib/libcapsicum.a OLD_FILES+=usr/lib/libcapsicum.so OLD_FILES+=usr/lib/libcapsicum_p.a OLD_FILES+=usr/lib/libcasper.a OLD_FILES+=usr/lib/libcasper.so OLD_FILES+=usr/lib/libcasper_p.a OLD_FILES+=usr/lib32/libcapsicum.a OLD_FILES+=usr/lib32/libcapsicum.so OLD_LIBS+=usr/lib32/libcapsicum.so.0 OLD_FILES+=usr/lib32/libcapsicum_p.a OLD_FILES+=usr/lib32/libcasper.a OLD_FILES+=usr/lib32/libcasper.so OLD_LIBS+=usr/lib32/libcasper.so.0 OLD_FILES+=usr/lib32/libcasper_p.a OLD_FILES+=usr/share/man/man3/cap_clone.3.gz OLD_FILES+=usr/share/man/man3/cap_close.3.gz OLD_FILES+=usr/share/man/man3/cap_init.3.gz OLD_FILES+=usr/share/man/man3/cap_limit_get.3.gz OLD_FILES+=usr/share/man/man3/cap_limit_set.3.gz OLD_FILES+=usr/share/man/man3/cap_recv_nvlist.3.gz OLD_FILES+=usr/share/man/man3/cap_send_nvlist.3.gz OLD_FILES+=usr/share/man/man3/cap_service_open.3.gz OLD_FILES+=usr/share/man/man3/cap_sock.3.gz OLD_FILES+=usr/share/man/man3/cap_unwrap.3.gz OLD_FILES+=usr/share/man/man3/cap_wrap.3.gz OLD_FILES+=usr/share/man/man3/cap_xfer_nvlist.3.gz OLD_FILES+=usr/share/man/man3/libcapsicum.3.gz OLD_FILES+=usr/share/man/man8/casperd.8.gz .endif .if ${MK_CCD} == no OLD_FILES+=etc/rc.d/ccd OLD_FILES+=sbin/ccdconfig OLD_FILES+=usr/share/man/man4/ccd.4.gz OLD_FILES+=usr/share/man/man8/ccdconfig.8.gz .endif .if ${MK_CDDL} == no OLD_LIBS+=lib/libavl.so.2 OLD_LIBS+=lib/libctf.so.2 OLD_LIBS+=lib/libdtrace.so.2 OLD_LIBS+=lib/libnvpair.so.2 OLD_LIBS+=lib/libumem.so.2 OLD_LIBS+=lib/libuutil.so.2 OLD_FILES+=usr/bin/ctfconvert OLD_FILES+=usr/bin/ctfdump OLD_FILES+=usr/bin/ctfmerge OLD_FILES+=usr/lib/dtrace/drti.o OLD_FILES+=usr/lib/dtrace/errno.d OLD_FILES+=usr/lib/dtrace/io.d OLD_FILES+=usr/lib/dtrace/ip.d OLD_FILES+=usr/lib/dtrace/psinfo.d .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386" OLD_FILES+=usr/lib/dtrace/regs_x86.d .endif OLD_FILES+=usr/lib/dtrace/signal.d OLD_FILES+=usr/lib/dtrace/tcp.d OLD_FILES+=usr/lib/dtrace/udp.d OLD_FILES+=usr/lib/dtrace/unistd.d OLD_FILES+=usr/lib/libavl.a OLD_FILES+=usr/lib/libavl.so OLD_FILES+=usr/lib/libavl_p.a OLD_FILES+=usr/lib/libctf.a OLD_FILES+=usr/lib/libctf.so OLD_FILES+=usr/lib/libctf_p.a OLD_FILES+=usr/lib/libdtrace.a OLD_FILES+=usr/lib/libdtrace.so OLD_FILES+=usr/lib/libdtrace_p.a OLD_FILES+=usr/lib/libnvpair.a OLD_FILES+=usr/lib/libnvpair.so OLD_FILES+=usr/lib/libnvpair_p.a OLD_FILES+=usr/lib/libumem.a OLD_FILES+=usr/lib/libumem.so OLD_FILES+=usr/lib/libumem_p.a OLD_FILES+=usr/lib/libuutil.a OLD_FILES+=usr/lib/libuutil.so OLD_FILES+=usr/lib/libuutil_p.a .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" OLD_FILES+=usr/lib32/dtrace/drti.o OLD_FILES+=usr/lib32/libavl.a OLD_FILES+=usr/lib32/libavl.so OLD_LIBS+=usr/lib32/libavl.so.2 OLD_FILES+=usr/lib32/libavl_p.a OLD_FILES+=usr/lib32/libctf.a OLD_FILES+=usr/lib32/libctf.so OLD_LIBS+=usr/lib32/libctf.so.2 OLD_FILES+=usr/lib32/libctf_p.a OLD_FILES+=usr/lib32/libdtrace.a OLD_FILES+=usr/lib32/libdtrace.so OLD_LIBS+=usr/lib32/libdtrace.so.2 OLD_FILES+=usr/lib32/libdtrace_p.a OLD_FILES+=usr/lib32/libnvpair.a OLD_FILES+=usr/lib32/libnvpair.so OLD_LIBS+=usr/lib32/libnvpair.so.2 OLD_FILES+=usr/lib32/libnvpair_p.a OLD_FILES+=usr/lib32/libumem.a OLD_FILES+=usr/lib32/libumem.so OLD_LIBS+=usr/lib32/libumem.so.2 OLD_FILES+=usr/lib32/libumem_p.a OLD_FILES+=usr/lib32/libuutil.a OLD_FILES+=usr/lib32/libuutil.so OLD_LIBS+=usr/lib32/libuutil.so.2 OLD_FILES+=usr/lib32/libuutil_p.a .endif OLD_LIBS+=lib/libdtrace.so.2 OLD_FILES+=usr/sbin/dtrace OLD_FILES+=usr/sbin/lockstat OLD_FILES+=usr/sbin/plockstat OLD_FILES+=usr/share/man/man1/dtrace.1.gz OLD_FILES+=usr/share/man/man1/dtruss.1.gz OLD_FILES+=usr/share/man/man1/lockstat.1.gz OLD_FILES+=usr/share/man/man1/plockstat.1.gz OLD_FILES+=usr/share/dtrace/disklatency OLD_FILES+=usr/share/dtrace/disklatencycmd OLD_FILES+=usr/share/dtrace/hotopen OLD_FILES+=usr/share/dtrace/nfsclienttime OLD_FILES+=usr/share/dtrace/toolkit/execsnoop OLD_FILES+=usr/share/dtrace/toolkit/hotkernel OLD_FILES+=usr/share/dtrace/toolkit/hotuser OLD_FILES+=usr/share/dtrace/toolkit/opensnoop OLD_FILES+=usr/share/dtrace/toolkit/procsystime OLD_FILES+=usr/share/dtrace/tcpconn OLD_FILES+=usr/share/dtrace/tcpstate OLD_FILES+=usr/share/dtrace/tcptrack OLD_FILES+=usr/share/dtrace/udptrack OLD_FILES+=usr/share/man/man1/dtrace.1.gz OLD_DIRS+=usr/lib/dtrace OLD_DIRS+=usr/lib32/dtrace OLD_DIRS+=usr/share/dtrace/toolkit OLD_DIRS+=usr/share/dtrace .endif .if ${MK_ZFS} == no OLD_FILES+=boot/gptzfsboot OLD_FILES+=boot/zfsboot OLD_FILES+=boot/zfsloader OLD_FILES+=etc/rc.d/zfs OLD_FILES+=etc/rc.d/zfsbe OLD_FILES+=etc/rc.d/zvol OLD_FILES+=etc/devd/zfs.conf OLD_FILES+=etc/periodic/daily/404.status-zfs OLD_FILES+=etc/periodic/daily/800.scrub-zfs OLD_LIBS+=lib/libzfs.so.2 OLD_LIBS+=lib/libzfs_core.so.2 OLD_LIBS+=lib/libzpool.so.2 OLD_FILES+=rescue/zfs OLD_FILES+=rescue/zpool OLD_FILES+=sbin/zfs OLD_FILES+=sbin/zpool OLD_FILES+=usr/bin/zinject OLD_FILES+=usr/bin/ztest OLD_FILES+=usr/lib/libzfs.a OLD_FILES+=usr/lib/libzfs.so OLD_FILES+=usr/lib/libzfs_core.a OLD_FILES+=usr/lib/libzfs_core.so OLD_FILES+=usr/lib/libzfs_core_p.a OLD_FILES+=usr/lib/libzfs_p.a OLD_FILES+=usr/lib/libzpool.a OLD_FILES+=usr/lib/libzpool.so .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" OLD_FILES+=usr/lib32/libzfs.a OLD_FILES+=usr/lib32/libzfs.so OLD_LIBS+=usr/lib32/libzfs.so.2 OLD_FILES+=usr/lib32/libzfs_core.a OLD_FILES+=usr/lib32/libzfs_core.so OLD_LIBS+=usr/lib32/libzfs_core.so.2 OLD_FILES+=usr/lib32/libzfs_core_p.a OLD_FILES+=usr/lib32/libzfs_p.a OLD_FILES+=usr/lib32/libzpool.a OLD_FILES+=usr/lib32/libzpool.so OLD_LIBS+=usr/lib32/libzpool.so.2 .endif OLD_FILES+=usr/sbin/zdb OLD_FILES+=usr/share/man/man8/zdb.8.gz OLD_FILES+=usr/share/man/man8/zfs.8.gz OLD_FILES+=usr/share/man/man8/zpool.8.gz .endif .if ${MK_CLANG} == no OLD_FILES+=usr/bin/clang OLD_FILES+=usr/bin/clang++ OLD_FILES+=usr/bin/clang-cpp OLD_FILES+=usr/bin/clang-tblgen OLD_FILES+=usr/bin/llvm-tblgen OLD_FILES+=usr/lib/clang/3.8.0/include/sanitizer/allocator_interface.h OLD_FILES+=usr/lib/clang/3.8.0/include/sanitizer/asan_interface.h OLD_FILES+=usr/lib/clang/3.8.0/include/sanitizer/common_interface_defs.h OLD_FILES+=usr/lib/clang/3.8.0/include/sanitizer/coverage_interface.h OLD_FILES+=usr/lib/clang/3.8.0/include/sanitizer/dfsan_interface.h OLD_FILES+=usr/lib/clang/3.8.0/include/sanitizer/linux_syscall_hooks.h OLD_FILES+=usr/lib/clang/3.8.0/include/sanitizer/lsan_interface.h OLD_FILES+=usr/lib/clang/3.8.0/include/sanitizer/msan_interface.h OLD_FILES+=usr/lib/clang/3.8.0/include/sanitizer/tsan_interface_atomic.h OLD_DIRS+=usr/lib/clang/3.8.0/include/sanitizer OLD_FILES+=usr/lib/clang/3.8.0/include/__stddef_max_align_t.h OLD_FILES+=usr/lib/clang/3.8.0/include/__wmmintrin_aes.h OLD_FILES+=usr/lib/clang/3.8.0/include/__wmmintrin_pclmul.h OLD_FILES+=usr/lib/clang/3.8.0/include/adxintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/altivec.h OLD_FILES+=usr/lib/clang/3.8.0/include/ammintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/arm_acle.h OLD_FILES+=usr/lib/clang/3.8.0/include/arm_neon.h OLD_FILES+=usr/lib/clang/3.8.0/include/avx2intrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/avx512bwintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/avx512cdintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/avx512dqintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/avx512erintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/avx512fintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/avx512vlbwintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/avx512vldqintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/avx512vlintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/avxintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/bmi2intrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/bmiintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/cpuid.h OLD_FILES+=usr/lib/clang/3.8.0/include/cuda_builtin_vars.h OLD_FILES+=usr/lib/clang/3.8.0/include/emmintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/f16cintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/fma4intrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/fmaintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/fxsrintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/htmintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/htmxlintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/ia32intrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/immintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/lzcntintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/mm3dnow.h OLD_FILES+=usr/lib/clang/3.8.0/include/mm_malloc.h OLD_FILES+=usr/lib/clang/3.8.0/include/mmintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/module.modulemap OLD_FILES+=usr/lib/clang/3.8.0/include/nmmintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/pkuintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/pmmintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/popcntintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/prfchwintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/rdseedintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/rtmintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/s390intrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/shaintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/smmintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/tbmintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/tmmintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/vadefs.h OLD_FILES+=usr/lib/clang/3.8.0/include/vecintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/wmmintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/x86intrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/xmmintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/xopintrin.h OLD_FILES+=usr/lib/clang/3.8.0/include/xtestintrin.h OLD_DIRS+=usr/lib/clang/3.8.0/include OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.asan-i386.a OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.asan-x86_64.a OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.asan_cxx-i386.a OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.profile-arm.a OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.profile-i386.a OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.profile-x86_64.a OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.safestack-i386.a OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.safestack-x86_64.a OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.ubsan_standalone-i386.a OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a OLD_DIRS+=usr/lib/clang/3.8.0/lib/freebsd OLD_DIRS+=usr/lib/clang/3.8.0/lib OLD_DIRS+=usr/lib/clang/3.8.0 OLD_DIRS+=usr/lib/clang OLD_FILES+=usr/share/doc/llvm/clang/LICENSE.TXT OLD_DIRS+=usr/share/doc/llvm/clang OLD_FILES+=usr/share/doc/llvm/COPYRIGHT.regex OLD_FILES+=usr/share/doc/llvm/LICENSE.TXT OLD_DIRS+=usr/share/doc/llvm OLD_FILES+=usr/share/man/man1/clang.1.gz OLD_FILES+=usr/share/man/man1/clang++.1.gz OLD_FILES+=usr/share/man/man1/clang-cpp.1.gz OLD_FILES+=usr/share/man/man1/llvm-tblgen.1.gz .endif .if ${MK_CLANG_EXTRAS} == no OLD_FILES+=usr/bin/bugpoint OLD_FILES+=usr/bin/clang-format OLD_FILES+=usr/bin/llc OLD_FILES+=usr/bin/lli OLD_FILES+=usr/bin/llvm-ar OLD_FILES+=usr/bin/llvm-as OLD_FILES+=usr/bin/llvm-bcanalyzer OLD_FILES+=usr/bin/llvm-cxxdump OLD_FILES+=usr/bin/llvm-diff OLD_FILES+=usr/bin/llvm-dis OLD_FILES+=usr/bin/llvm-dwarfdump OLD_FILES+=usr/bin/llvm-extract OLD_FILES+=usr/bin/llvm-link OLD_FILES+=usr/bin/llvm-lto OLD_FILES+=usr/bin/llvm-mc OLD_FILES+=usr/bin/llvm-nm OLD_FILES+=usr/bin/llvm-objdump OLD_FILES+=usr/bin/llvm-pdbdump OLD_FILES+=usr/bin/llvm-rtdyld OLD_FILES+=usr/bin/llvm-symbolizer OLD_FILES+=usr/bin/macho-dump OLD_FILES+=usr/bin/opt OLD_FILES+=usr/share/man/man1/bugpoint.1.gz OLD_FILES+=usr/share/man/man1/llc.1.gz OLD_FILES+=usr/share/man/man1/lli.1.gz OLD_FILES+=usr/share/man/man1/llvm-ar.1.gz OLD_FILES+=usr/share/man/man1/llvm-as.1.gz OLD_FILES+=usr/share/man/man1/llvm-bcanalyzer.1.gz OLD_FILES+=usr/share/man/man1/llvm-diff.1.gz OLD_FILES+=usr/share/man/man1/llvm-dis.1.gz OLD_FILES+=usr/share/man/man1/llvm-dwarfdump.1 OLD_FILES+=usr/share/man/man1/llvm-extract.1.gz OLD_FILES+=usr/share/man/man1/llvm-link.1.gz OLD_FILES+=usr/share/man/man1/llvm-nm.1.gz OLD_FILES+=usr/share/man/man1/llvm-symbolizer.1.gz OLD_FILES+=usr/share/man/man1/opt.1.gz .endif .if ${MK_CPP} == no OLD_FILES+=usr/bin/cpp OLD_FILES+=usr/share/man/man1/cpp.1.gz .endif #.if ${MK_CRYPT} == no # to be filled in #.endif .if ${MK_CTM} == no OLD_FILES+=usr/sbin/ctm OLD_FILES+=usr/sbin/ctm_dequeue OLD_FILES+=usr/sbin/ctm_rmail OLD_FILES+=usr/sbin/ctm_smail OLD_FILES+=usr/share/man/man1/ctm.1.gz OLD_FILES+=usr/share/man/man1/ctm_dequeue.1.gz OLD_FILES+=usr/share/man/man1/ctm_rmail.1.gz OLD_FILES+=usr/share/man/man1/ctm_smail.1.gz OLD_FILES+=usr/share/man/man5/ctm.5.gz .endif .if ${MK_CUSE} == no OLD_FILES+=usr/include/fs/cuse/cuse_defs.h OLD_FILES+=usr/include/fs/cuse/cuse_ioctl.h OLD_FILES+=usr/include/cuse.h OLD_FILES+=usr/lib/libcuse.a OLD_LIBS+=usr/lib/libcuse.so.1 OLD_FILES+=usr/lib/libcuse_p.a OLD_FILES+=usr/share/man/man3/cuse.3.gz OLD_FILES+=usr/share/man/man3/cuse_alloc_unit_number.3.gz OLD_FILES+=usr/share/man/man3/cuse_alloc_unit_number_by_id.3.gz OLD_FILES+=usr/share/man/man3/cuse_copy_in.3.gz OLD_FILES+=usr/share/man/man3/cuse_copy_out.3.gz OLD_FILES+=usr/share/man/man3/cuse_dev_create.3.gz OLD_FILES+=usr/share/man/man3/cuse_dev_destroy.3.gz OLD_FILES+=usr/share/man/man3/cuse_dev_get_current.3.gz OLD_FILES+=usr/share/man/man3/cuse_dev_get_per_file_handle.3.gz OLD_FILES+=usr/share/man/man3/cuse_dev_get_priv0.3.gz OLD_FILES+=usr/share/man/man3/cuse_dev_get_priv1.3.gz OLD_FILES+=usr/share/man/man3/cuse_dev_set_per_file_handle.3.gz OLD_FILES+=usr/share/man/man3/cuse_dev_set_priv0.3.gz OLD_FILES+=usr/share/man/man3/cuse_dev_set_priv1.3.gz OLD_FILES+=usr/share/man/man3/cuse_free_unit_number.3.gz OLD_FILES+=usr/share/man/man3/cuse_free_unit_number_by_id.3.gz OLD_FILES+=usr/share/man/man3/cuse_get_local.3.gz OLD_FILES+=usr/share/man/man3/cuse_got_peer_signal.3.gz OLD_FILES+=usr/share/man/man3/cuse_init.3.gz OLD_FILES+=usr/share/man/man3/cuse_is_vmalloc_addr.3.gz OLD_FILES+=usr/share/man/man3/cuse_poll_wakeup.3.gz OLD_FILES+=usr/share/man/man3/cuse_set_local.3.gz OLD_FILES+=usr/share/man/man3/cuse_uninit.3.gz OLD_FILES+=usr/share/man/man3/cuse_vmalloc.3.gz OLD_FILES+=usr/share/man/man3/cuse_vmfree.3.gz OLD_FILES+=usr/share/man/man3/cuse_vmoffset.3.gz OLD_FILES+=usr/share/man/man3/cuse_wait_and_process.3.gz OLD_DIRS+=usr/include/fs/cuse .endif # devd(8) not listed here on purpose .if ${MK_CXX} == no OLD_FILES+=usr/bin/CC OLD_FILES+=usr/bin/c++ OLD_FILES+=usr/bin/g++ OLD_FILES+=usr/libexec/cc1plus .endif .if ${MK_DIALOG} == no OLD_FILES+=usr/bin/dialog OLD_FILES+=usr/bin/dpv OLD_FILES+=usr/lib/libdialog.a OLD_FILES+=usr/lib/libdialog.so OLD_FILES+=usr/lib/libdialog.so.8 OLD_FILES+=usr/lib/libdialog_p.a OLD_FILES+=usr/lib/libdpv.a OLD_FILES+=usr/lib/libdpv.so OLD_FILES+=usr/lib/libdpv.so.1 OLD_FILES+=usr/lib/libdpv_p.a OLD_FILES+=usr/sbin/bsdconfig OLD_FILES+=usr/sbin/tzsetup OLD_FILES+=usr/share/man/man1/dialog.1.gz OLD_FILES+=usr/share/man/man1/dpv.1.gz OLD_FILES+=usr/share/man/man3/dialog.3.gz OLD_FILES+=usr/share/man/man3/dpv.3.gz OLD_FILES+=usr/share/man/man8/tzsetup.8.gz OLD_FILES+=usr/share/man/man8/bsdconfig.8.gz .endif .if ${MK_FMTREE} == no OLD_FILES+=usr/sbin/fmtree OLD_FILES+=usr/share/man/man8/fmtree.8.gz .endif .if ${MK_FTP} == no OLD_FILES+=etc/ftpusers OLD_FILES+=etc/rc.d/ftpd OLD_FILES+=usr/bin/ftp OLD_FILES+=usr/bin/gate-ftp OLD_FILES+=usr/bin/pftp OLD_FILES+=usr/libexec/ftpd OLD_FILES+=usr/share/man/man1/ftp.1.gz OLD_FILES+=usr/share/man/man1/gate-ftp.1.gz OLD_FILES+=usr/share/man/man1/pftp.1.gz OLD_FILES+=usr/share/man/man5/ftpchroot.5.gz OLD_FILES+=usr/share/man/man8/ftpd.8.gz .endif .if ${MK_GNUCXX} == no OLD_FILES+=usr/bin/g++ OLD_FILES+=usr/include/c++/4.2/algorithm OLD_FILES+=usr/include/c++/4.2/backward/algo.h OLD_FILES+=usr/include/c++/4.2/backward/algobase.h OLD_FILES+=usr/include/c++/4.2/backward/alloc.h OLD_FILES+=usr/include/c++/4.2/backward/backward_warning.h OLD_FILES+=usr/include/c++/4.2/backward/bvector.h OLD_FILES+=usr/include/c++/4.2/backward/complex.h OLD_FILES+=usr/include/c++/4.2/backward/defalloc.h OLD_FILES+=usr/include/c++/4.2/backward/deque.h OLD_FILES+=usr/include/c++/4.2/backward/fstream.h OLD_FILES+=usr/include/c++/4.2/backward/function.h OLD_FILES+=usr/include/c++/4.2/backward/hash_map.h OLD_FILES+=usr/include/c++/4.2/backward/hash_set.h OLD_FILES+=usr/include/c++/4.2/backward/hashtable.h OLD_FILES+=usr/include/c++/4.2/backward/heap.h OLD_FILES+=usr/include/c++/4.2/backward/iomanip.h OLD_FILES+=usr/include/c++/4.2/backward/iostream.h OLD_FILES+=usr/include/c++/4.2/backward/istream.h OLD_FILES+=usr/include/c++/4.2/backward/iterator.h OLD_FILES+=usr/include/c++/4.2/backward/list.h OLD_FILES+=usr/include/c++/4.2/backward/map.h OLD_FILES+=usr/include/c++/4.2/backward/multimap.h OLD_FILES+=usr/include/c++/4.2/backward/multiset.h OLD_FILES+=usr/include/c++/4.2/backward/new.h OLD_FILES+=usr/include/c++/4.2/backward/ostream.h OLD_FILES+=usr/include/c++/4.2/backward/pair.h OLD_FILES+=usr/include/c++/4.2/backward/queue.h OLD_FILES+=usr/include/c++/4.2/backward/rope.h OLD_FILES+=usr/include/c++/4.2/backward/set.h OLD_FILES+=usr/include/c++/4.2/backward/slist.h OLD_FILES+=usr/include/c++/4.2/backward/stack.h OLD_FILES+=usr/include/c++/4.2/backward/stream.h OLD_FILES+=usr/include/c++/4.2/backward/streambuf.h OLD_FILES+=usr/include/c++/4.2/backward/strstream OLD_FILES+=usr/include/c++/4.2/backward/tempbuf.h OLD_FILES+=usr/include/c++/4.2/backward/tree.h OLD_FILES+=usr/include/c++/4.2/backward/vector.h OLD_FILES+=usr/include/c++/4.2/bits/allocator.h OLD_FILES+=usr/include/c++/4.2/bits/atomic_word.h OLD_FILES+=usr/include/c++/4.2/bits/basic_file.h OLD_FILES+=usr/include/c++/4.2/bits/basic_ios.h OLD_FILES+=usr/include/c++/4.2/bits/basic_ios.tcc OLD_FILES+=usr/include/c++/4.2/bits/basic_string.h OLD_FILES+=usr/include/c++/4.2/bits/basic_string.tcc OLD_FILES+=usr/include/c++/4.2/bits/boost_concept_check.h OLD_FILES+=usr/include/c++/4.2/bits/c++allocator.h OLD_FILES+=usr/include/c++/4.2/bits/c++config.h OLD_FILES+=usr/include/c++/4.2/bits/c++io.h OLD_FILES+=usr/include/c++/4.2/bits/c++locale.h OLD_FILES+=usr/include/c++/4.2/bits/c++locale_internal.h OLD_FILES+=usr/include/c++/4.2/bits/char_traits.h OLD_FILES+=usr/include/c++/4.2/bits/cmath.tcc OLD_FILES+=usr/include/c++/4.2/bits/codecvt.h OLD_FILES+=usr/include/c++/4.2/bits/compatibility.h OLD_FILES+=usr/include/c++/4.2/bits/concept_check.h OLD_FILES+=usr/include/c++/4.2/bits/cpp_type_traits.h OLD_FILES+=usr/include/c++/4.2/bits/cpu_defines.h OLD_FILES+=usr/include/c++/4.2/bits/ctype_base.h OLD_FILES+=usr/include/c++/4.2/bits/ctype_inline.h OLD_FILES+=usr/include/c++/4.2/bits/ctype_noninline.h OLD_FILES+=usr/include/c++/4.2/bits/cxxabi_tweaks.h OLD_FILES+=usr/include/c++/4.2/bits/deque.tcc OLD_FILES+=usr/include/c++/4.2/bits/fstream.tcc OLD_FILES+=usr/include/c++/4.2/bits/functexcept.h OLD_FILES+=usr/include/c++/4.2/bits/gslice.h OLD_FILES+=usr/include/c++/4.2/bits/gslice_array.h OLD_FILES+=usr/include/c++/4.2/bits/gthr-default.h OLD_FILES+=usr/include/c++/4.2/bits/gthr-posix.h OLD_FILES+=usr/include/c++/4.2/bits/gthr-single.h OLD_FILES+=usr/include/c++/4.2/bits/gthr-tpf.h OLD_FILES+=usr/include/c++/4.2/bits/gthr.h OLD_FILES+=usr/include/c++/4.2/bits/indirect_array.h OLD_FILES+=usr/include/c++/4.2/bits/ios_base.h OLD_FILES+=usr/include/c++/4.2/bits/istream.tcc OLD_FILES+=usr/include/c++/4.2/bits/list.tcc OLD_FILES+=usr/include/c++/4.2/bits/locale_classes.h OLD_FILES+=usr/include/c++/4.2/bits/locale_facets.h OLD_FILES+=usr/include/c++/4.2/bits/locale_facets.tcc OLD_FILES+=usr/include/c++/4.2/bits/localefwd.h OLD_FILES+=usr/include/c++/4.2/bits/mask_array.h OLD_FILES+=usr/include/c++/4.2/bits/messages_members.h OLD_FILES+=usr/include/c++/4.2/bits/os_defines.h OLD_FILES+=usr/include/c++/4.2/bits/ostream.tcc OLD_FILES+=usr/include/c++/4.2/bits/ostream_insert.h OLD_FILES+=usr/include/c++/4.2/bits/postypes.h OLD_FILES+=usr/include/c++/4.2/bits/slice_array.h OLD_FILES+=usr/include/c++/4.2/bits/sstream.tcc OLD_FILES+=usr/include/c++/4.2/bits/stl_algo.h OLD_FILES+=usr/include/c++/4.2/bits/stl_algobase.h OLD_FILES+=usr/include/c++/4.2/bits/stl_bvector.h OLD_FILES+=usr/include/c++/4.2/bits/stl_construct.h OLD_FILES+=usr/include/c++/4.2/bits/stl_deque.h OLD_FILES+=usr/include/c++/4.2/bits/stl_function.h OLD_FILES+=usr/include/c++/4.2/bits/stl_heap.h OLD_FILES+=usr/include/c++/4.2/bits/stl_iterator.h OLD_FILES+=usr/include/c++/4.2/bits/stl_iterator_base_funcs.h OLD_FILES+=usr/include/c++/4.2/bits/stl_iterator_base_types.h OLD_FILES+=usr/include/c++/4.2/bits/stl_list.h OLD_FILES+=usr/include/c++/4.2/bits/stl_map.h OLD_FILES+=usr/include/c++/4.2/bits/stl_multimap.h OLD_FILES+=usr/include/c++/4.2/bits/stl_multiset.h OLD_FILES+=usr/include/c++/4.2/bits/stl_numeric.h OLD_FILES+=usr/include/c++/4.2/bits/stl_pair.h OLD_FILES+=usr/include/c++/4.2/bits/stl_queue.h OLD_FILES+=usr/include/c++/4.2/bits/stl_raw_storage_iter.h OLD_FILES+=usr/include/c++/4.2/bits/stl_relops.h OLD_FILES+=usr/include/c++/4.2/bits/stl_set.h OLD_FILES+=usr/include/c++/4.2/bits/stl_stack.h OLD_FILES+=usr/include/c++/4.2/bits/stl_tempbuf.h OLD_FILES+=usr/include/c++/4.2/bits/stl_tree.h OLD_FILES+=usr/include/c++/4.2/bits/stl_uninitialized.h OLD_FILES+=usr/include/c++/4.2/bits/stl_vector.h OLD_FILES+=usr/include/c++/4.2/bits/stream_iterator.h OLD_FILES+=usr/include/c++/4.2/bits/streambuf.tcc OLD_FILES+=usr/include/c++/4.2/bits/streambuf_iterator.h OLD_FILES+=usr/include/c++/4.2/bits/stringfwd.h OLD_FILES+=usr/include/c++/4.2/bits/time_members.h OLD_FILES+=usr/include/c++/4.2/bits/valarray_after.h OLD_FILES+=usr/include/c++/4.2/bits/valarray_array.h OLD_FILES+=usr/include/c++/4.2/bits/valarray_array.tcc OLD_FILES+=usr/include/c++/4.2/bits/valarray_before.h OLD_FILES+=usr/include/c++/4.2/bits/vector.tcc OLD_FILES+=usr/include/c++/4.2/bitset OLD_FILES+=usr/include/c++/4.2/cassert OLD_FILES+=usr/include/c++/4.2/cctype OLD_FILES+=usr/include/c++/4.2/cerrno OLD_FILES+=usr/include/c++/4.2/cfloat OLD_FILES+=usr/include/c++/4.2/ciso646 OLD_FILES+=usr/include/c++/4.2/climits OLD_FILES+=usr/include/c++/4.2/clocale OLD_FILES+=usr/include/c++/4.2/cmath OLD_FILES+=usr/include/c++/4.2/complex OLD_FILES+=usr/include/c++/4.2/csetjmp OLD_FILES+=usr/include/c++/4.2/csignal OLD_FILES+=usr/include/c++/4.2/cstdarg OLD_FILES+=usr/include/c++/4.2/cstddef OLD_FILES+=usr/include/c++/4.2/cstdio OLD_FILES+=usr/include/c++/4.2/cstdlib OLD_FILES+=usr/include/c++/4.2/cstring OLD_FILES+=usr/include/c++/4.2/ctime OLD_FILES+=usr/include/c++/4.2/cwchar OLD_FILES+=usr/include/c++/4.2/cwctype OLD_FILES+=usr/include/c++/4.2/cxxabi.h OLD_FILES+=usr/include/c++/4.2/debug/bitset OLD_FILES+=usr/include/c++/4.2/debug/debug.h OLD_FILES+=usr/include/c++/4.2/debug/deque OLD_FILES+=usr/include/c++/4.2/debug/formatter.h OLD_FILES+=usr/include/c++/4.2/debug/functions.h OLD_FILES+=usr/include/c++/4.2/debug/hash_map OLD_FILES+=usr/include/c++/4.2/debug/hash_map.h OLD_FILES+=usr/include/c++/4.2/debug/hash_multimap.h OLD_FILES+=usr/include/c++/4.2/debug/hash_multiset.h OLD_FILES+=usr/include/c++/4.2/debug/hash_set OLD_FILES+=usr/include/c++/4.2/debug/hash_set.h OLD_FILES+=usr/include/c++/4.2/debug/list OLD_FILES+=usr/include/c++/4.2/debug/macros.h OLD_FILES+=usr/include/c++/4.2/debug/map OLD_FILES+=usr/include/c++/4.2/debug/map.h OLD_FILES+=usr/include/c++/4.2/debug/multimap.h OLD_FILES+=usr/include/c++/4.2/debug/multiset.h OLD_FILES+=usr/include/c++/4.2/debug/safe_base.h OLD_FILES+=usr/include/c++/4.2/debug/safe_iterator.h OLD_FILES+=usr/include/c++/4.2/debug/safe_iterator.tcc OLD_FILES+=usr/include/c++/4.2/debug/safe_sequence.h OLD_FILES+=usr/include/c++/4.2/debug/set OLD_FILES+=usr/include/c++/4.2/debug/set.h OLD_FILES+=usr/include/c++/4.2/debug/string OLD_FILES+=usr/include/c++/4.2/debug/vector OLD_FILES+=usr/include/c++/4.2/deque OLD_FILES+=usr/include/c++/4.2/exception OLD_FILES+=usr/include/c++/4.2/exception_defines.h OLD_FILES+=usr/include/c++/4.2/ext/algorithm OLD_FILES+=usr/include/c++/4.2/ext/array_allocator.h OLD_FILES+=usr/include/c++/4.2/ext/atomicity.h OLD_FILES+=usr/include/c++/4.2/ext/bitmap_allocator.h OLD_FILES+=usr/include/c++/4.2/ext/codecvt_specializations.h OLD_FILES+=usr/include/c++/4.2/ext/concurrence.h OLD_FILES+=usr/include/c++/4.2/ext/debug_allocator.h OLD_FILES+=usr/include/c++/4.2/ext/functional OLD_FILES+=usr/include/c++/4.2/ext/hash_fun.h OLD_FILES+=usr/include/c++/4.2/ext/hash_map OLD_FILES+=usr/include/c++/4.2/ext/hash_set OLD_FILES+=usr/include/c++/4.2/ext/hashtable.h OLD_FILES+=usr/include/c++/4.2/ext/iterator OLD_FILES+=usr/include/c++/4.2/ext/malloc_allocator.h OLD_FILES+=usr/include/c++/4.2/ext/memory OLD_FILES+=usr/include/c++/4.2/ext/mt_allocator.h OLD_FILES+=usr/include/c++/4.2/ext/new_allocator.h OLD_FILES+=usr/include/c++/4.2/ext/numeric OLD_FILES+=usr/include/c++/4.2/ext/numeric_traits.h OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/assoc_container.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/basic_tree_policy/traits.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/basic_types.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/traits.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/const_iterator.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/entry_pred.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/resize_policy.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cond_dealtor.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/container_base_dispatch.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/eq_fn/eq_by_less.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/lu_map_.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/map_debug_base.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/traits.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/child_iterator.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/head.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/internal_node.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/leaf.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/node_base.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/node_iterators.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/point_iterators.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/traits.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/priority_queue_base_dispatch.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/node.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/traits.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/node.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/traits.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/standard_policies.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/tree_trace_base.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/type_utils.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/types_traits.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/unordered_iterator/iterator.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/exception.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/hash_policy.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/list_update_policy.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/priority_queue.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/tag_and_trait.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/tree_policy.hpp OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/trie_policy.hpp OLD_FILES+=usr/include/c++/4.2/ext/pod_char_traits.h OLD_FILES+=usr/include/c++/4.2/ext/pool_allocator.h OLD_FILES+=usr/include/c++/4.2/ext/rb_tree OLD_FILES+=usr/include/c++/4.2/ext/rc_string_base.h OLD_FILES+=usr/include/c++/4.2/ext/rope OLD_FILES+=usr/include/c++/4.2/ext/ropeimpl.h OLD_FILES+=usr/include/c++/4.2/ext/slist OLD_FILES+=usr/include/c++/4.2/ext/sso_string_base.h OLD_FILES+=usr/include/c++/4.2/ext/stdio_filebuf.h OLD_FILES+=usr/include/c++/4.2/ext/stdio_sync_filebuf.h OLD_FILES+=usr/include/c++/4.2/ext/throw_allocator.h OLD_FILES+=usr/include/c++/4.2/ext/type_traits.h OLD_FILES+=usr/include/c++/4.2/ext/typelist.h OLD_FILES+=usr/include/c++/4.2/ext/vstring.h OLD_FILES+=usr/include/c++/4.2/ext/vstring.tcc OLD_FILES+=usr/include/c++/4.2/ext/vstring_fwd.h OLD_FILES+=usr/include/c++/4.2/ext/vstring_util.h OLD_FILES+=usr/include/c++/4.2/fstream OLD_FILES+=usr/include/c++/4.2/functional OLD_FILES+=usr/include/c++/4.2/iomanip OLD_FILES+=usr/include/c++/4.2/ios OLD_FILES+=usr/include/c++/4.2/iosfwd OLD_FILES+=usr/include/c++/4.2/iostream OLD_FILES+=usr/include/c++/4.2/istream OLD_FILES+=usr/include/c++/4.2/iterator OLD_FILES+=usr/include/c++/4.2/limits OLD_FILES+=usr/include/c++/4.2/list OLD_FILES+=usr/include/c++/4.2/locale OLD_FILES+=usr/include/c++/4.2/map OLD_FILES+=usr/include/c++/4.2/memory OLD_FILES+=usr/include/c++/4.2/new OLD_FILES+=usr/include/c++/4.2/numeric OLD_FILES+=usr/include/c++/4.2/ostream OLD_FILES+=usr/include/c++/4.2/queue OLD_FILES+=usr/include/c++/4.2/set OLD_FILES+=usr/include/c++/4.2/sstream OLD_FILES+=usr/include/c++/4.2/stack OLD_FILES+=usr/include/c++/4.2/stdexcept OLD_FILES+=usr/include/c++/4.2/streambuf OLD_FILES+=usr/include/c++/4.2/string OLD_FILES+=usr/include/c++/4.2/tr1/array OLD_FILES+=usr/include/c++/4.2/tr1/bind_iterate.h OLD_FILES+=usr/include/c++/4.2/tr1/bind_repeat.h OLD_FILES+=usr/include/c++/4.2/tr1/boost_shared_ptr.h OLD_FILES+=usr/include/c++/4.2/tr1/cctype OLD_FILES+=usr/include/c++/4.2/tr1/cfenv OLD_FILES+=usr/include/c++/4.2/tr1/cfloat OLD_FILES+=usr/include/c++/4.2/tr1/cinttypes OLD_FILES+=usr/include/c++/4.2/tr1/climits OLD_FILES+=usr/include/c++/4.2/tr1/cmath OLD_FILES+=usr/include/c++/4.2/tr1/common.h OLD_FILES+=usr/include/c++/4.2/tr1/complex OLD_FILES+=usr/include/c++/4.2/tr1/cstdarg OLD_FILES+=usr/include/c++/4.2/tr1/cstdbool OLD_FILES+=usr/include/c++/4.2/tr1/cstdint OLD_FILES+=usr/include/c++/4.2/tr1/cstdio OLD_FILES+=usr/include/c++/4.2/tr1/cstdlib OLD_FILES+=usr/include/c++/4.2/tr1/ctgmath OLD_FILES+=usr/include/c++/4.2/tr1/ctime OLD_FILES+=usr/include/c++/4.2/tr1/ctype.h OLD_FILES+=usr/include/c++/4.2/tr1/cwchar OLD_FILES+=usr/include/c++/4.2/tr1/cwctype OLD_FILES+=usr/include/c++/4.2/tr1/fenv.h OLD_FILES+=usr/include/c++/4.2/tr1/float.h OLD_FILES+=usr/include/c++/4.2/tr1/functional OLD_FILES+=usr/include/c++/4.2/tr1/functional_hash.h OLD_FILES+=usr/include/c++/4.2/tr1/functional_iterate.h OLD_FILES+=usr/include/c++/4.2/tr1/hashtable OLD_FILES+=usr/include/c++/4.2/tr1/hashtable_policy.h OLD_FILES+=usr/include/c++/4.2/tr1/inttypes.h OLD_FILES+=usr/include/c++/4.2/tr1/limits.h OLD_FILES+=usr/include/c++/4.2/tr1/math.h OLD_FILES+=usr/include/c++/4.2/tr1/memory OLD_FILES+=usr/include/c++/4.2/tr1/mu_iterate.h OLD_FILES+=usr/include/c++/4.2/tr1/random OLD_FILES+=usr/include/c++/4.2/tr1/random.tcc OLD_FILES+=usr/include/c++/4.2/tr1/ref_fwd.h OLD_FILES+=usr/include/c++/4.2/tr1/ref_wrap_iterate.h OLD_FILES+=usr/include/c++/4.2/tr1/repeat.h OLD_FILES+=usr/include/c++/4.2/tr1/stdarg.h OLD_FILES+=usr/include/c++/4.2/tr1/stdbool.h OLD_FILES+=usr/include/c++/4.2/tr1/stdint.h OLD_FILES+=usr/include/c++/4.2/tr1/stdio.h OLD_FILES+=usr/include/c++/4.2/tr1/stdlib.h OLD_FILES+=usr/include/c++/4.2/tr1/tgmath.h OLD_FILES+=usr/include/c++/4.2/tr1/tuple OLD_FILES+=usr/include/c++/4.2/tr1/tuple_defs.h OLD_FILES+=usr/include/c++/4.2/tr1/tuple_iterate.h OLD_FILES+=usr/include/c++/4.2/tr1/type_traits OLD_FILES+=usr/include/c++/4.2/tr1/type_traits_fwd.h OLD_FILES+=usr/include/c++/4.2/tr1/unordered_map OLD_FILES+=usr/include/c++/4.2/tr1/unordered_set OLD_FILES+=usr/include/c++/4.2/tr1/utility OLD_FILES+=usr/include/c++/4.2/tr1/wchar.h OLD_FILES+=usr/include/c++/4.2/tr1/wctype.h OLD_FILES+=usr/include/c++/4.2/typeinfo OLD_FILES+=usr/include/c++/4.2/utility OLD_FILES+=usr/include/c++/4.2/valarray OLD_FILES+=usr/include/c++/4.2/vector OLD_FILES+=usr/lib/libstdc++.a OLD_FILES+=usr/lib/libstdc++.so OLD_LIBS+=usr/lib/libstdc++.so.6 OLD_FILES+=usr/lib/libstdc++_p.a OLD_FILES+=usr/lib/libsupc++.a OLD_FILES+=usr/lib/libsupc++.so OLD_LIBS+=usr/lib/libsupc++.so.1 OLD_FILES+=usr/lib/libsupc++_p.a .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" OLD_FILES+=usr/lib32/libstdc++.a OLD_FILES+=usr/lib32/libstdc++.so OLD_LIBS+=usr/lib32/libstdc++.so.6 OLD_FILES+=usr/lib32/libstdc++_p.a OLD_FILES+=usr/lib32/libsupc++.a OLD_FILES+=usr/lib32/libsupc++.so OLD_LIBS+=usr/lib32/libsupc++.so.1 OLD_FILES+=usr/lib32/libsupc++_p.a .endif OLD_FILES+=usr/libexec/cc1plus .endif .if ${MK_DICT} == no OLD_FILES+=usr/share/dict/README OLD_FILES+=usr/share/dict/eign OLD_FILES+=usr/share/dict/freebsd OLD_FILES+=usr/share/dict/propernames OLD_FILES+=usr/share/dict/web2 OLD_FILES+=usr/share/dict/web2a OLD_FILES+=usr/share/dict/words OLD_DIRS+=usr/share/dict .endif .if ${MK_DMAGENT} == no OLD_FILES+=etc/dma/dma.conf OLD_FILES+=usr/libexec/dma OLD_FILES+=usr/libexec/dma-mbox-create OLD_FILES+=usr/share/man/man8/dma.8.gz OLD_FILES+=usr/share/examples/dma/mailer.conf .endif .if ${MK_EE} == no OLD_FILES+=usr/bin/edit OLD_FILES+=usr/bin/ee OLD_FILES+=usr/bin/ree OLD_FILES+=usr/share/man/man1/edit.1.gz OLD_FILES+=usr/share/man/man1/ee.1.gz OLD_FILES+=usr/share/man/man1/ree.1.gz OLD_FILES+=usr/share/nls/C/ee.cat OLD_FILES+=usr/share/nls/de_DE.ISO8859-1/ee.cat OLD_FILES+=usr/share/nls/fr_FR.ISO8859-1/ee.cat OLD_FILES+=usr/share/nls/hu_HU.ISO8859-2/ee.cat OLD_FILES+=usr/share/nls/pl_PL.ISO8859-2/ee.cat OLD_FILES+=usr/share/nls/pt_BR.ISO8859-1/ee.cat OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/ee.cat OLD_FILES+=usr/share/nls/uk_UA.KOI8-U/ee.cat .endif #.if ${MK_EXAMPLES} == no # to be filled in #.endif .if ${MK_FLOPPY} == no OLD_FILES+=usr/sbin/fdcontrol OLD_FILES+=usr/sbin/fdformat OLD_FILES+=usr/sbin/fdread OLD_FILES+=usr/sbin/fdwrite OLD_FILES+=usr/share/man/man1/fdformat.1.gz OLD_FILES+=usr/share/man/man1/fdread.1.gz OLD_FILES+=usr/share/man/man1/fdwrite.1.gz OLD_FILES+=usr/share/man/man8/fdcontrol.8.gz .endif .if ${MK_FORTH} == no OLD_FILES+=usr/share/man/man5/loader.conf.5.gz OLD_FILES+=usr/share/man/man8/beastie.4th.8.gz OLD_FILES+=usr/share/man/man8/brand.4th.8.gz OLD_FILES+=usr/share/man/man8/check-password.4th.8.gz OLD_FILES+=usr/share/man/man8/color.4th.8.gz OLD_FILES+=usr/share/man/man8/delay.4th.8.gz OLD_FILES+=usr/share/man/man8/loader.4th.8.gz OLD_FILES+=usr/share/man/man8/menu.4th.8.gz OLD_FILES+=usr/share/man/man8/menusets.4th.8.gz OLD_FILES+=usr/share/man/man8/version.4th.8.gz .endif .if ${MK_FREEBSD_UPDATE} == no OLD_FILES+=etc/freebsd-update.conf OLD_FILES+=usr/sbin/freebsd-update OLD_FILES+=usr/share/examples/etc/freebsd-update.conf OLD_FILES+=usr/share/man/man5/freebsd-update.conf.5.gz OLD_FILES+=usr/share/man/man8/freebsd-update.8.gz .endif .if ${MK_GAMES} == no OLD_FILES+=usr/bin/caesar OLD_FILES+=usr/bin/factor OLD_FILES+=usr/bin/fortune OLD_FILES+=usr/bin/grdc OLD_FILES+=usr/bin/morse OLD_FILES+=usr/bin/number OLD_FILES+=usr/bin/pom OLD_FILES+=usr/bin/primes OLD_FILES+=usr/bin/random OLD_FILES+=usr/bin/rot13 OLD_FILES+=usr/bin/strfile OLD_FILES+=usr/bin/unstr OLD_FILES+=usr/share/games/fortune/fortunes OLD_FILES+=usr/share/games/fortune/fortunes.dat OLD_FILES+=usr/share/games/fortune/freebsd-tips OLD_FILES+=usr/share/games/fortune/freebsd-tips.dat OLD_FILES+=usr/share/games/fortune/gerrold.limerick OLD_FILES+=usr/share/games/fortune/gerrold.limerick.dat OLD_FILES+=usr/share/games/fortune/limerick OLD_FILES+=usr/share/games/fortune/limerick.dat OLD_FILES+=usr/share/games/fortune/murphy OLD_FILES+=usr/share/games/fortune/murphy-o OLD_FILES+=usr/share/games/fortune/murphy-o.dat OLD_FILES+=usr/share/games/fortune/murphy.dat OLD_FILES+=usr/share/games/fortune/startrek OLD_FILES+=usr/share/games/fortune/startrek.dat OLD_FILES+=usr/share/games/fortune/zippy OLD_FILES+=usr/share/games/fortune/zippy.dat OLD_DIRS+=usr/share/games/fortune OLD_DIRS+=usr/share/games OLD_FILES+=usr/share/man/man6/caesar.6.gz OLD_FILES+=usr/share/man/man6/factor.6.gz OLD_FILES+=usr/share/man/man6/fortune.6.gz OLD_FILES+=usr/share/man/man6/grdc.6.gz OLD_FILES+=usr/share/man/man6/morse.6.gz OLD_FILES+=usr/share/man/man6/number.6.gz OLD_FILES+=usr/share/man/man6/pom.6.gz OLD_FILES+=usr/share/man/man6/primes.6.gz OLD_FILES+=usr/share/man/man6/random.6.gz OLD_FILES+=usr/share/man/man6/rot13.6.gz OLD_FILES+=usr/share/man/man8/strfile.8.gz OLD_FILES+=usr/share/man/man8/unstr.8.gz .endif .if ${MK_GCC} == no OLD_FILES+=usr/bin/g++ OLD_FILES+=usr/bin/gcc OLD_FILES+=usr/bin/gcov OLD_FILES+=usr/bin/gcpp OLD_FILES+=usr/bin/gperf .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386" OLD_FILES+=usr/include/gcc/4.2/__wmmintrin_aes.h OLD_FILES+=usr/include/gcc/4.2/__wmmintrin_pclmul.h OLD_FILES+=usr/include/gcc/4.2/ammintrin.h OLD_FILES+=usr/include/gcc/4.2/emmintrin.h OLD_FILES+=usr/include/gcc/4.2/mm3dnow.h OLD_FILES+=usr/include/gcc/4.2/mm_malloc.h OLD_FILES+=usr/include/gcc/4.2/mmintrin.h OLD_FILES+=usr/include/gcc/4.2/pmmintrin.h OLD_FILES+=usr/include/gcc/4.2/tmmintrin.h OLD_FILES+=usr/include/gcc/4.2/wmmintrin.h OLD_FILES+=usr/include/gcc/4.2/xmmintrin.h .elif ${TARGET_ARCH} == "arm" OLD_FILES+=usr/include/gcc/4.2/mmintrin.h .elif ${TARGET_ARCH} == "powerpc" || ${TARGET_ARCH} == "powerpc64" OLD_FILES+=usr/include/gcc/4.2/altivec.h OLD_FILES+=usr/include/gcc/4.2/ppc-asm.h OLD_FILES+=usr/include/gcc/4.2/spe.h .endif OLD_FILES+=usr/include/omp.h OLD_FILES+=usr/lib/libgcov.a OLD_FILES+=usr/lib/libgomp.a OLD_FILES+=usr/lib/libgomp.so OLD_LIBS+=usr/lib/libgomp.so.1 OLD_FILES+=usr/lib/libgomp_p.a OLD_FILES+=usr/lib32/libgcov.a OLD_FILES+=usr/lib32/libgomp.a OLD_FILES+=usr/lib32/libgomp.so OLD_LIBS+=usr/lib32/libgomp.so.1 OLD_FILES+=usr/lib32/libgomp_p.a OLD_FILES+=usr/libexec/cc1 OLD_FILES+=usr/libexec/cc1plus OLD_FILES+=usr/share/info/cpp.info.gz OLD_FILES+=usr/share/info/cppinternals.info.gz OLD_FILES+=usr/share/info/gcc.info.gz OLD_FILES+=usr/share/info/gccint.info.gz OLD_FILES+=usr/share/info/gperf.info.gz OLD_FILES+=usr/share/man/man1/g++.1.gz OLD_FILES+=usr/share/man/man1/gcc.1.gz OLD_FILES+=usr/share/man/man1/gcov.1.gz OLD_FILES+=usr/share/man/man1/gcpp.1.gz OLD_FILES+=usr/share/man/man1/gperf.1.gz OLD_FILES+=usr/share/man/man1/gperf.7.gz .endif .if ${MK_GCOV} == no OLD_FILES+=usr/bin/gcov OLD_FILES+=usr/share/man/man1/gcov.1.gz .endif .if ${MK_GDB} == no OLD_FILES+=usr/bin/gdb OLD_FILES+=usr/bin/gdbserver OLD_FILES+=usr/bin/gdbtui OLD_FILES+=usr/bin/kgdb OLD_FILES+=usr/share/info/gdb.info.gz OLD_FILES+=usr/share/info/gdbint.info.gz OLD_FILES+=usr/share/info/stabs.info.gz OLD_FILES+=usr/share/man/man1/gdb.1.gz OLD_FILES+=usr/share/man/man1/gdbserver.1.gz OLD_FILES+=usr/share/man/man1/kgdb.1.gz .endif .if ${MK_GPIO} == no OLD_FILES+=usr/include/libgpio.h OLD_FILES+=usr/lib/libgpio.a OLD_FILES+=usr/lib/libgpio.so OLD_LIBS+=usr/lib/libgpio.so.0 OLD_FILES+=usr/lib/libgpio_p.a OLD_FILES+=usr/lib32/libgpio.a OLD_FILES+=usr/lib32/libgpio.so OLD_LIBS+=usr/lib32/libgpio.so.0 OLD_FILES+=usr/lib32/libgpio_p.a OLD_FILES+=usr/sbin/gpioctl OLD_FILES+=usr/share/man/man3/gpio.3.gz OLD_FILES+=usr/share/man/man3/gpio_close.3.gz OLD_FILES+=usr/share/man/man3/gpio_open.3.gz OLD_FILES+=usr/share/man/man3/gpio_open_device.3.gz OLD_FILES+=usr/share/man/man3/gpio_pin_config.3.gz OLD_FILES+=usr/share/man/man3/gpio_pin_get.3.gz OLD_FILES+=usr/share/man/man3/gpio_pin_high.3.gz OLD_FILES+=usr/share/man/man3/gpio_pin_input.3.gz OLD_FILES+=usr/share/man/man3/gpio_pin_invin.3.gz OLD_FILES+=usr/share/man/man3/gpio_pin_invout.3.gz OLD_FILES+=usr/share/man/man3/gpio_pin_list.3.gz OLD_FILES+=usr/share/man/man3/gpio_pin_low.3.gz OLD_FILES+=usr/share/man/man3/gpio_pin_opendrain.3.gz OLD_FILES+=usr/share/man/man3/gpio_pin_output.3.gz OLD_FILES+=usr/share/man/man3/gpio_pin_pulldown.3.gz OLD_FILES+=usr/share/man/man3/gpio_pin_pullup.3.gz OLD_FILES+=usr/share/man/man3/gpio_pin_pulsate.3.gz OLD_FILES+=usr/share/man/man3/gpio_pin_pushpull.3.gz OLD_FILES+=usr/share/man/man3/gpio_pin_set.3.gz OLD_FILES+=usr/share/man/man3/gpio_pin_set_flags.3.gz OLD_FILES+=usr/share/man/man3/gpio_pin_tristate.3.gz OLD_FILES+=usr/share/man/man8/gpioctl.8.gz .endif # Also includes vgrind(1) .if ${MK_GROFF} == no OLD_FILES+=usr/bin/addftinfo OLD_FILES+=usr/bin/afmtodit OLD_FILES+=usr/bin/eqn OLD_FILES+=usr/bin/grn OLD_FILES+=usr/bin/grodvi OLD_FILES+=usr/bin/groff OLD_FILES+=usr/bin/grog OLD_FILES+=usr/bin/grolbp OLD_FILES+=usr/bin/grolj4 OLD_FILES+=usr/bin/grops OLD_FILES+=usr/bin/grotty OLD_FILES+=usr/bin/hpftodit OLD_FILES+=usr/bin/indxbib OLD_FILES+=usr/bin/lkbib OLD_FILES+=usr/bin/lookbib OLD_FILES+=usr/bin/mmroff OLD_FILES+=usr/bin/neqn OLD_FILES+=usr/bin/nroff OLD_FILES+=usr/bin/pfbtops OLD_FILES+=usr/bin/pic OLD_FILES+=usr/bin/post-grohtml OLD_FILES+=usr/bin/pre-grohtml OLD_FILES+=usr/bin/psroff OLD_FILES+=usr/bin/refer OLD_FILES+=usr/bin/tbl OLD_FILES+=usr/bin/tfmtodit OLD_FILES+=usr/bin/troff OLD_FILES+=usr/bin/vgrind OLD_FILES+=usr/libexec/vfontedpr OLD_FILES+=usr/share/dict/eign OLD_FILES+=usr/share/doc/papers/beyond43.ascii.gz OLD_FILES+=usr/share/doc/papers/bio.ascii.gz OLD_FILES+=usr/share/doc/papers/contents.ascii.gz OLD_FILES+=usr/share/doc/papers/devfs.ascii.gz OLD_FILES+=usr/share/doc/papers/diskperf.ascii.gz OLD_FILES+=usr/share/doc/papers/fsinterface.ascii.gz OLD_FILES+=usr/share/doc/papers/hwpmc.ascii.gz OLD_FILES+=usr/share/doc/papers/jail.ascii.gz OLD_FILES+=usr/share/doc/papers/kernmalloc.ascii.gz OLD_FILES+=usr/share/doc/papers/kerntune.ascii.gz OLD_FILES+=usr/share/doc/papers/malloc.ascii.gz OLD_FILES+=usr/share/doc/papers/newvm.ascii.gz OLD_FILES+=usr/share/doc/papers/releng.ascii.gz OLD_FILES+=usr/share/doc/papers/sysperf.ascii.gz OLD_FILES+=usr/share/doc/papers/timecounter.ascii.gz OLD_FILES+=usr/share/doc/psd/01.cacm/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/02.implement/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/03.iosys/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/04.uprog/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/05.sysman/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/06.Clang/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/12.make/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/13.rcs/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/13.rcs/rcs_func.ascii.gz OLD_FILES+=usr/share/doc/psd/15.yacc/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/16.lex/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/17.m4/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/18.gprof/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/20.ipctut/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/21.ipc/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/22.rpcgen/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/23.rpc/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/24.xdr/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/25.xdrrfc/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/26.rpcrfc/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/27.nfsrfc/paper.ascii.gz OLD_FILES+=usr/share/doc/psd/Title.ascii.gz OLD_FILES+=usr/share/doc/psd/contents.ascii.gz OLD_FILES+=usr/share/doc/smm/01.setup/paper.ascii.gz OLD_FILES+=usr/share/doc/smm/02.config/paper.ascii.gz OLD_FILES+=usr/share/doc/smm/03.fsck/paper.ascii.gz OLD_FILES+=usr/share/doc/smm/04.quotas/paper.ascii.gz OLD_FILES+=usr/share/doc/smm/05.fastfs/paper.ascii.gz OLD_FILES+=usr/share/doc/smm/06.nfs/paper.ascii.gz OLD_FILES+=usr/share/doc/smm/07.lpd/paper.ascii.gz OLD_FILES+=usr/share/doc/smm/08.sendmailop/paper.ascii.gz OLD_FILES+=usr/share/doc/smm/11.timedop/paper.ascii.gz OLD_FILES+=usr/share/doc/smm/12.timed/paper.ascii.gz OLD_FILES+=usr/share/doc/smm/18.net/paper.ascii.gz OLD_FILES+=usr/share/doc/smm/Title.ascii.gz OLD_FILES+=usr/share/doc/smm/contents.ascii.gz OLD_FILES+=usr/share/doc/usd/04.csh/paper.ascii.gz OLD_FILES+=usr/share/doc/usd/05.dc/paper.ascii.gz OLD_FILES+=usr/share/doc/usd/06.bc/paper.ascii.gz OLD_FILES+=usr/share/doc/usd/07.mail/paper.ascii.gz OLD_FILES+=usr/share/doc/usd/10.exref/paper.ascii.gz OLD_FILES+=usr/share/doc/usd/10.exref/summary.ascii.gz OLD_FILES+=usr/share/doc/usd/11.edit/paper.ascii.gz OLD_FILES+=usr/share/doc/usd/12.vi/paper.ascii.gz OLD_FILES+=usr/share/doc/usd/12.vi/summary.ascii.gz OLD_FILES+=usr/share/doc/usd/12.vi/viapwh.ascii.gz OLD_FILES+=usr/share/doc/usd/13.viref/paper.ascii.gz OLD_FILES+=usr/share/doc/usd/18.msdiffs/paper.ascii.gz OLD_FILES+=usr/share/doc/usd/19.memacros/paper.ascii.gz OLD_FILES+=usr/share/doc/usd/20.meref/paper.ascii.gz OLD_FILES+=usr/share/doc/usd/21.troff/paper.ascii.gz OLD_FILES+=usr/share/doc/usd/22.trofftut/paper.ascii.gz OLD_FILES+=usr/share/doc/usd/Title.ascii.gz OLD_FILES+=usr/share/doc/usd/contents.ascii.gz OLD_FILES+=usr/share/groff_font/devX100-12/CB OLD_FILES+=usr/share/groff_font/devX100-12/CBI OLD_FILES+=usr/share/groff_font/devX100-12/CI OLD_FILES+=usr/share/groff_font/devX100-12/CR OLD_FILES+=usr/share/groff_font/devX100-12/DESC OLD_FILES+=usr/share/groff_font/devX100-12/HB OLD_FILES+=usr/share/groff_font/devX100-12/HBI OLD_FILES+=usr/share/groff_font/devX100-12/HI OLD_FILES+=usr/share/groff_font/devX100-12/HR OLD_FILES+=usr/share/groff_font/devX100-12/NB OLD_FILES+=usr/share/groff_font/devX100-12/NBI OLD_FILES+=usr/share/groff_font/devX100-12/NI OLD_FILES+=usr/share/groff_font/devX100-12/NR OLD_FILES+=usr/share/groff_font/devX100-12/S OLD_FILES+=usr/share/groff_font/devX100-12/TB OLD_FILES+=usr/share/groff_font/devX100-12/TBI OLD_FILES+=usr/share/groff_font/devX100-12/TI OLD_FILES+=usr/share/groff_font/devX100-12/TR OLD_DIRS+=usr/share/groff_font/devX100-12 OLD_FILES+=usr/share/groff_font/devX100/CB OLD_FILES+=usr/share/groff_font/devX100/CBI OLD_FILES+=usr/share/groff_font/devX100/CI OLD_FILES+=usr/share/groff_font/devX100/CR OLD_FILES+=usr/share/groff_font/devX100/DESC OLD_FILES+=usr/share/groff_font/devX100/HB OLD_FILES+=usr/share/groff_font/devX100/HBI OLD_FILES+=usr/share/groff_font/devX100/HI OLD_FILES+=usr/share/groff_font/devX100/HR OLD_FILES+=usr/share/groff_font/devX100/NB OLD_FILES+=usr/share/groff_font/devX100/NBI OLD_FILES+=usr/share/groff_font/devX100/NI OLD_FILES+=usr/share/groff_font/devX100/NR OLD_FILES+=usr/share/groff_font/devX100/S OLD_FILES+=usr/share/groff_font/devX100/TB OLD_FILES+=usr/share/groff_font/devX100/TBI OLD_FILES+=usr/share/groff_font/devX100/TI OLD_FILES+=usr/share/groff_font/devX100/TR OLD_DIRS+=usr/share/groff_font/devX100 OLD_FILES+=usr/share/groff_font/devX75-12/CB OLD_FILES+=usr/share/groff_font/devX75-12/CBI OLD_FILES+=usr/share/groff_font/devX75-12/CI OLD_FILES+=usr/share/groff_font/devX75-12/CR OLD_FILES+=usr/share/groff_font/devX75-12/DESC OLD_FILES+=usr/share/groff_font/devX75-12/HB OLD_FILES+=usr/share/groff_font/devX75-12/HBI OLD_FILES+=usr/share/groff_font/devX75-12/HI OLD_FILES+=usr/share/groff_font/devX75-12/HR OLD_FILES+=usr/share/groff_font/devX75-12/NB OLD_FILES+=usr/share/groff_font/devX75-12/NBI OLD_FILES+=usr/share/groff_font/devX75-12/NI OLD_FILES+=usr/share/groff_font/devX75-12/NR OLD_FILES+=usr/share/groff_font/devX75-12/S OLD_FILES+=usr/share/groff_font/devX75-12/TB OLD_FILES+=usr/share/groff_font/devX75-12/TBI OLD_FILES+=usr/share/groff_font/devX75-12/TI OLD_FILES+=usr/share/groff_font/devX75-12/TR OLD_DIRS+=usr/share/groff_font/devX75-12 OLD_FILES+=usr/share/groff_font/devX75/CB OLD_FILES+=usr/share/groff_font/devX75/CBI OLD_FILES+=usr/share/groff_font/devX75/CI OLD_FILES+=usr/share/groff_font/devX75/CR OLD_FILES+=usr/share/groff_font/devX75/DESC OLD_FILES+=usr/share/groff_font/devX75/HB OLD_FILES+=usr/share/groff_font/devX75/HBI OLD_FILES+=usr/share/groff_font/devX75/HI OLD_FILES+=usr/share/groff_font/devX75/HR OLD_FILES+=usr/share/groff_font/devX75/NB OLD_FILES+=usr/share/groff_font/devX75/NBI OLD_FILES+=usr/share/groff_font/devX75/NI OLD_FILES+=usr/share/groff_font/devX75/NR OLD_FILES+=usr/share/groff_font/devX75/S OLD_FILES+=usr/share/groff_font/devX75/TB OLD_FILES+=usr/share/groff_font/devX75/TBI OLD_FILES+=usr/share/groff_font/devX75/TI OLD_FILES+=usr/share/groff_font/devX75/TR OLD_DIRS+=usr/share/groff_font/devX75 OLD_FILES+=usr/share/groff_font/devascii/B OLD_FILES+=usr/share/groff_font/devascii/BI OLD_FILES+=usr/share/groff_font/devascii/CW OLD_FILES+=usr/share/groff_font/devascii/DESC OLD_FILES+=usr/share/groff_font/devascii/I OLD_FILES+=usr/share/groff_font/devascii/L OLD_FILES+=usr/share/groff_font/devascii/R OLD_FILES+=usr/share/groff_font/devascii/S OLD_DIRS+=usr/share/groff_font/devascii OLD_FILES+=usr/share/groff_font/devcp1047/B OLD_FILES+=usr/share/groff_font/devcp1047/BI OLD_FILES+=usr/share/groff_font/devcp1047/CW OLD_FILES+=usr/share/groff_font/devcp1047/DESC OLD_FILES+=usr/share/groff_font/devcp1047/I OLD_FILES+=usr/share/groff_font/devcp1047/L OLD_FILES+=usr/share/groff_font/devcp1047/R OLD_FILES+=usr/share/groff_font/devcp1047/S OLD_DIRS+=usr/share/groff_font/devcp1047 OLD_FILES+=usr/share/groff_font/devdvi/CW OLD_FILES+=usr/share/groff_font/devdvi/CWEC OLD_FILES+=usr/share/groff_font/devdvi/CWI OLD_FILES+=usr/share/groff_font/devdvi/CWIEC OLD_FILES+=usr/share/groff_font/devdvi/CWITC OLD_FILES+=usr/share/groff_font/devdvi/CWTC OLD_FILES+=usr/share/groff_font/devdvi/CompileFonts OLD_FILES+=usr/share/groff_font/devdvi/DESC OLD_FILES+=usr/share/groff_font/devdvi/EX OLD_FILES+=usr/share/groff_font/devdvi/HB OLD_FILES+=usr/share/groff_font/devdvi/HBEC OLD_FILES+=usr/share/groff_font/devdvi/HBI OLD_FILES+=usr/share/groff_font/devdvi/HBIEC OLD_FILES+=usr/share/groff_font/devdvi/HBITC OLD_FILES+=usr/share/groff_font/devdvi/HBTC OLD_FILES+=usr/share/groff_font/devdvi/HI OLD_FILES+=usr/share/groff_font/devdvi/HIEC OLD_FILES+=usr/share/groff_font/devdvi/HITC OLD_FILES+=usr/share/groff_font/devdvi/HR OLD_FILES+=usr/share/groff_font/devdvi/HREC OLD_FILES+=usr/share/groff_font/devdvi/HRTC OLD_FILES+=usr/share/groff_font/devdvi/MI OLD_FILES+=usr/share/groff_font/devdvi/Makefile OLD_FILES+=usr/share/groff_font/devdvi/S OLD_FILES+=usr/share/groff_font/devdvi/SA OLD_FILES+=usr/share/groff_font/devdvi/SB OLD_FILES+=usr/share/groff_font/devdvi/SC OLD_FILES+=usr/share/groff_font/devdvi/TB OLD_FILES+=usr/share/groff_font/devdvi/TBEC OLD_FILES+=usr/share/groff_font/devdvi/TBI OLD_FILES+=usr/share/groff_font/devdvi/TBIEC OLD_FILES+=usr/share/groff_font/devdvi/TBITC OLD_FILES+=usr/share/groff_font/devdvi/TBTC OLD_FILES+=usr/share/groff_font/devdvi/TI OLD_FILES+=usr/share/groff_font/devdvi/TIEC OLD_FILES+=usr/share/groff_font/devdvi/TITC OLD_FILES+=usr/share/groff_font/devdvi/TR OLD_FILES+=usr/share/groff_font/devdvi/TREC OLD_FILES+=usr/share/groff_font/devdvi/TRTC OLD_FILES+=usr/share/groff_font/devdvi/ec.map OLD_FILES+=usr/share/groff_font/devdvi/msam.map OLD_FILES+=usr/share/groff_font/devdvi/msbm.map OLD_FILES+=usr/share/groff_font/devdvi/tc.map OLD_FILES+=usr/share/groff_font/devdvi/texb.map OLD_FILES+=usr/share/groff_font/devdvi/texex.map OLD_FILES+=usr/share/groff_font/devdvi/texi.map OLD_FILES+=usr/share/groff_font/devdvi/texmi.map OLD_FILES+=usr/share/groff_font/devdvi/texr.map OLD_FILES+=usr/share/groff_font/devdvi/texsy.map OLD_FILES+=usr/share/groff_font/devdvi/textex.map OLD_FILES+=usr/share/groff_font/devdvi/textt.map OLD_DIRS+=usr/share/groff_font/devdvi OLD_FILES+=usr/share/groff_font/devhtml/B OLD_FILES+=usr/share/groff_font/devhtml/BI OLD_FILES+=usr/share/groff_font/devhtml/CB OLD_FILES+=usr/share/groff_font/devhtml/CBI OLD_FILES+=usr/share/groff_font/devhtml/CI OLD_FILES+=usr/share/groff_font/devhtml/CR OLD_FILES+=usr/share/groff_font/devhtml/DESC OLD_FILES+=usr/share/groff_font/devhtml/I OLD_FILES+=usr/share/groff_font/devhtml/R OLD_FILES+=usr/share/groff_font/devhtml/S OLD_DIRS+=usr/share/groff_font/devhtml OLD_FILES+=usr/share/groff_font/devkoi8-r/B OLD_FILES+=usr/share/groff_font/devkoi8-r/BI OLD_FILES+=usr/share/groff_font/devkoi8-r/CW OLD_FILES+=usr/share/groff_font/devkoi8-r/DESC OLD_FILES+=usr/share/groff_font/devkoi8-r/I OLD_FILES+=usr/share/groff_font/devkoi8-r/L OLD_FILES+=usr/share/groff_font/devkoi8-r/R OLD_FILES+=usr/share/groff_font/devkoi8-r/S OLD_DIRS+=usr/share/groff_font/devkoi8-r OLD_FILES+=usr/share/groff_font/devlatin1/B OLD_FILES+=usr/share/groff_font/devlatin1/BI OLD_FILES+=usr/share/groff_font/devlatin1/CW OLD_FILES+=usr/share/groff_font/devlatin1/DESC OLD_FILES+=usr/share/groff_font/devlatin1/I OLD_FILES+=usr/share/groff_font/devlatin1/L OLD_FILES+=usr/share/groff_font/devlatin1/R OLD_FILES+=usr/share/groff_font/devlatin1/S OLD_DIRS+=usr/share/groff_font/devlatin1 OLD_FILES+=usr/share/groff_font/devlbp/CB OLD_FILES+=usr/share/groff_font/devlbp/CI OLD_FILES+=usr/share/groff_font/devlbp/CR OLD_FILES+=usr/share/groff_font/devlbp/DESC OLD_FILES+=usr/share/groff_font/devlbp/EB OLD_FILES+=usr/share/groff_font/devlbp/EI OLD_FILES+=usr/share/groff_font/devlbp/ER OLD_FILES+=usr/share/groff_font/devlbp/HB OLD_FILES+=usr/share/groff_font/devlbp/HBI OLD_FILES+=usr/share/groff_font/devlbp/HI OLD_FILES+=usr/share/groff_font/devlbp/HNB OLD_FILES+=usr/share/groff_font/devlbp/HNBI OLD_FILES+=usr/share/groff_font/devlbp/HNI OLD_FILES+=usr/share/groff_font/devlbp/HNR OLD_FILES+=usr/share/groff_font/devlbp/HR OLD_FILES+=usr/share/groff_font/devlbp/TB OLD_FILES+=usr/share/groff_font/devlbp/TBI OLD_FILES+=usr/share/groff_font/devlbp/TI OLD_FILES+=usr/share/groff_font/devlbp/TR OLD_DIRS+=usr/share/groff_font/devlbp OLD_FILES+=usr/share/groff_font/devlj4/AB OLD_FILES+=usr/share/groff_font/devlj4/ABI OLD_FILES+=usr/share/groff_font/devlj4/AI OLD_FILES+=usr/share/groff_font/devlj4/ALBB OLD_FILES+=usr/share/groff_font/devlj4/ALBR OLD_FILES+=usr/share/groff_font/devlj4/AOB OLD_FILES+=usr/share/groff_font/devlj4/AOI OLD_FILES+=usr/share/groff_font/devlj4/AOR OLD_FILES+=usr/share/groff_font/devlj4/AR OLD_FILES+=usr/share/groff_font/devlj4/CB OLD_FILES+=usr/share/groff_font/devlj4/CBI OLD_FILES+=usr/share/groff_font/devlj4/CI OLD_FILES+=usr/share/groff_font/devlj4/CLARENDON OLD_FILES+=usr/share/groff_font/devlj4/CORONET OLD_FILES+=usr/share/groff_font/devlj4/CR OLD_FILES+=usr/share/groff_font/devlj4/DESC OLD_FILES+=usr/share/groff_font/devlj4/GB OLD_FILES+=usr/share/groff_font/devlj4/GBI OLD_FILES+=usr/share/groff_font/devlj4/GI OLD_FILES+=usr/share/groff_font/devlj4/GR OLD_FILES+=usr/share/groff_font/devlj4/LGB OLD_FILES+=usr/share/groff_font/devlj4/LGI OLD_FILES+=usr/share/groff_font/devlj4/LGR OLD_FILES+=usr/share/groff_font/devlj4/MARIGOLD OLD_FILES+=usr/share/groff_font/devlj4/OB OLD_FILES+=usr/share/groff_font/devlj4/OBI OLD_FILES+=usr/share/groff_font/devlj4/OI OLD_FILES+=usr/share/groff_font/devlj4/OR OLD_FILES+=usr/share/groff_font/devlj4/S OLD_FILES+=usr/share/groff_font/devlj4/SYMBOL OLD_FILES+=usr/share/groff_font/devlj4/TB OLD_FILES+=usr/share/groff_font/devlj4/TBI OLD_FILES+=usr/share/groff_font/devlj4/TI OLD_FILES+=usr/share/groff_font/devlj4/TNRB OLD_FILES+=usr/share/groff_font/devlj4/TNRBI OLD_FILES+=usr/share/groff_font/devlj4/TNRI OLD_FILES+=usr/share/groff_font/devlj4/TNRR OLD_FILES+=usr/share/groff_font/devlj4/TR OLD_FILES+=usr/share/groff_font/devlj4/UB OLD_FILES+=usr/share/groff_font/devlj4/UBI OLD_FILES+=usr/share/groff_font/devlj4/UCB OLD_FILES+=usr/share/groff_font/devlj4/UCBI OLD_FILES+=usr/share/groff_font/devlj4/UCI OLD_FILES+=usr/share/groff_font/devlj4/UCR OLD_FILES+=usr/share/groff_font/devlj4/UI OLD_FILES+=usr/share/groff_font/devlj4/UR OLD_FILES+=usr/share/groff_font/devlj4/WINGDINGS OLD_DIRS+=usr/share/groff_font/devlj4 OLD_FILES+=usr/share/groff_font/devps/AB OLD_FILES+=usr/share/groff_font/devps/ABI OLD_FILES+=usr/share/groff_font/devps/AI OLD_FILES+=usr/share/groff_font/devps/AR OLD_FILES+=usr/share/groff_font/devps/BMB OLD_FILES+=usr/share/groff_font/devps/BMBI OLD_FILES+=usr/share/groff_font/devps/BMI OLD_FILES+=usr/share/groff_font/devps/BMR OLD_FILES+=usr/share/groff_font/devps/CB OLD_FILES+=usr/share/groff_font/devps/CBI OLD_FILES+=usr/share/groff_font/devps/CI OLD_FILES+=usr/share/groff_font/devps/CR OLD_FILES+=usr/share/groff_font/devps/DESC OLD_FILES+=usr/share/groff_font/devps/EURO OLD_FILES+=usr/share/groff_font/devps/HB OLD_FILES+=usr/share/groff_font/devps/HBI OLD_FILES+=usr/share/groff_font/devps/HI OLD_FILES+=usr/share/groff_font/devps/HNB OLD_FILES+=usr/share/groff_font/devps/HNBI OLD_FILES+=usr/share/groff_font/devps/HNI OLD_FILES+=usr/share/groff_font/devps/HNR OLD_FILES+=usr/share/groff_font/devps/HR OLD_FILES+=usr/share/groff_font/devps/Makefile OLD_FILES+=usr/share/groff_font/devps/NB OLD_FILES+=usr/share/groff_font/devps/NBI OLD_FILES+=usr/share/groff_font/devps/NI OLD_FILES+=usr/share/groff_font/devps/NR OLD_FILES+=usr/share/groff_font/devps/PB OLD_FILES+=usr/share/groff_font/devps/PBI OLD_FILES+=usr/share/groff_font/devps/PI OLD_FILES+=usr/share/groff_font/devps/PR OLD_FILES+=usr/share/groff_font/devps/S OLD_FILES+=usr/share/groff_font/devps/SS OLD_FILES+=usr/share/groff_font/devps/TB OLD_FILES+=usr/share/groff_font/devps/TBI OLD_FILES+=usr/share/groff_font/devps/TI OLD_FILES+=usr/share/groff_font/devps/TR OLD_FILES+=usr/share/groff_font/devps/ZCMI OLD_FILES+=usr/share/groff_font/devps/ZD OLD_FILES+=usr/share/groff_font/devps/ZDR OLD_FILES+=usr/share/groff_font/devps/afmname OLD_FILES+=usr/share/groff_font/devps/dingbats.map OLD_FILES+=usr/share/groff_font/devps/dingbats.rmap OLD_FILES+=usr/share/groff_font/devps/download OLD_FILES+=usr/share/groff_font/devps/freeeuro.pfa OLD_FILES+=usr/share/groff_font/devps/lgreekmap OLD_FILES+=usr/share/groff_font/devps/prologue OLD_FILES+=usr/share/groff_font/devps/symbol.sed OLD_FILES+=usr/share/groff_font/devps/symbolchars OLD_FILES+=usr/share/groff_font/devps/symbolsl.afm OLD_FILES+=usr/share/groff_font/devps/symbolsl.pfa OLD_FILES+=usr/share/groff_font/devps/text.enc OLD_FILES+=usr/share/groff_font/devps/textmap OLD_FILES+=usr/share/groff_font/devps/zapfdr.pfa OLD_DIRS+=usr/share/groff_font/devps OLD_FILES+=usr/share/groff_font/devutf8/B OLD_FILES+=usr/share/groff_font/devutf8/BI OLD_FILES+=usr/share/groff_font/devutf8/CW OLD_FILES+=usr/share/groff_font/devutf8/DESC OLD_FILES+=usr/share/groff_font/devutf8/I OLD_FILES+=usr/share/groff_font/devutf8/L OLD_FILES+=usr/share/groff_font/devutf8/R OLD_FILES+=usr/share/groff_font/devutf8/S OLD_DIRS+=usr/share/groff_font/devutf8 OLD_DIRS+=usr/share/groff_font OLD_FILES+=usr/share/info/groff.info.gz OLD_FILES+=usr/share/man/man1/addftinfo.1.gz OLD_FILES+=usr/share/man/man1/afmtodit.1.gz OLD_FILES+=usr/share/man/man1/eqn.1.gz OLD_FILES+=usr/share/man/man1/grn.1.gz OLD_FILES+=usr/share/man/man1/grodvi.1.gz OLD_FILES+=usr/share/man/man1/groff.1.gz OLD_FILES+=usr/share/man/man1/grog.1.gz OLD_FILES+=usr/share/man/man1/grolbp.1.gz OLD_FILES+=usr/share/man/man1/grolj4.1.gz OLD_FILES+=usr/share/man/man1/grops.1.gz OLD_FILES+=usr/share/man/man1/grotty.1.gz OLD_FILES+=usr/share/man/man1/hpftodit.1.gz OLD_FILES+=usr/share/man/man1/indxbib.1.gz OLD_FILES+=usr/share/man/man1/lkbib.1.gz OLD_FILES+=usr/share/man/man1/lookbib.1.gz OLD_FILES+=usr/share/man/man1/mmroff.1.gz OLD_FILES+=usr/share/man/man1/neqn.1.gz OLD_FILES+=usr/share/man/man1/nroff.1.gz OLD_FILES+=usr/share/man/man1/pfbtops.1.gz OLD_FILES+=usr/share/man/man1/pic.1.gz OLD_FILES+=usr/share/man/man1/psroff.1.gz OLD_FILES+=usr/share/man/man1/refer.1.gz OLD_FILES+=usr/share/man/man1/tbl.1.gz OLD_FILES+=usr/share/man/man1/tfmtodit.1.gz OLD_FILES+=usr/share/man/man1/troff.1.gz OLD_FILES+=usr/share/man/man1/vgrind.1.gz OLD_FILES+=usr/share/man/man5/groff_font.5.gz OLD_FILES+=usr/share/man/man5/groff_out.5.gz OLD_FILES+=usr/share/man/man5/groff_tmac.5.gz OLD_FILES+=usr/share/man/man5/lj4_font.5.gz OLD_FILES+=usr/share/man/man5/tmac.5.gz OLD_FILES+=usr/share/man/man5/vgrindefs.5.gz OLD_FILES+=usr/share/man/man7/ditroff.7.gz OLD_FILES+=usr/share/man/man7/groff.7.gz OLD_FILES+=usr/share/man/man7/groff_char.7.gz OLD_FILES+=usr/share/man/man7/groff_diff.7.gz OLD_FILES+=usr/share/man/man7/groff_man.7.gz OLD_FILES+=usr/share/man/man7/groff_mdoc.7.gz OLD_FILES+=usr/share/man/man7/groff_me.7.gz OLD_FILES+=usr/share/man/man7/groff_mm.7.gz OLD_FILES+=usr/share/man/man7/groff_mmse.7.gz OLD_FILES+=usr/share/man/man7/groff_ms.7.gz OLD_FILES+=usr/share/man/man7/groff_trace.7.gz OLD_FILES+=usr/share/man/man7/groff_www.7.gz OLD_FILES+=usr/share/man/man7/mdoc.samples.7.gz OLD_FILES+=usr/share/man/man7/me.7.gz OLD_FILES+=usr/share/man/man7/mm.7.gz OLD_FILES+=usr/share/man/man7/mmse.7.gz OLD_FILES+=usr/share/man/man7/ms.7.gz OLD_FILES+=usr/share/man/man7/orig_me.7.gz OLD_FILES+=usr/share/man/man7/roff.7.gz OLD_FILES+=usr/share/me/acm.me OLD_FILES+=usr/share/me/chars.me OLD_FILES+=usr/share/me/deltext.me OLD_FILES+=usr/share/me/eqn.me OLD_FILES+=usr/share/me/float.me OLD_FILES+=usr/share/me/footnote.me OLD_FILES+=usr/share/me/index.me OLD_FILES+=usr/share/me/letterhead.me OLD_FILES+=usr/share/me/local.me OLD_FILES+=usr/share/me/null.me OLD_FILES+=usr/share/me/refer.me OLD_FILES+=usr/share/me/revisions OLD_FILES+=usr/share/me/sh.me OLD_FILES+=usr/share/me/tbl.me OLD_FILES+=usr/share/me/thesis.me OLD_DIRS+=usr/share/me OLD_FILES+=usr/share/misc/vgrindefs OLD_FILES+=usr/share/misc/vgrindefs.db OLD_FILES+=usr/share/tmac/X.tmac OLD_FILES+=usr/share/tmac/Xps.tmac OLD_FILES+=usr/share/tmac/a4.tmac OLD_FILES+=usr/share/tmac/an-old.tmac OLD_FILES+=usr/share/tmac/an.tmac OLD_FILES+=usr/share/tmac/andoc.tmac OLD_FILES+=usr/share/tmac/composite.tmac OLD_FILES+=usr/share/tmac/cp1047.tmac OLD_FILES+=usr/share/tmac/devtag.tmac OLD_FILES+=usr/share/tmac/doc.tmac OLD_FILES+=usr/share/tmac/dvi.tmac OLD_FILES+=usr/share/tmac/e.tmac OLD_FILES+=usr/share/tmac/ec.tmac OLD_FILES+=usr/share/tmac/eqnrc OLD_FILES+=usr/share/tmac/europs.tmac OLD_FILES+=usr/share/tmac/html-end.tmac OLD_FILES+=usr/share/tmac/html.tmac OLD_FILES+=usr/share/tmac/hyphen.ru OLD_FILES+=usr/share/tmac/hyphen.us OLD_FILES+=usr/share/tmac/hyphenex.us OLD_FILES+=usr/share/tmac/koi8-r.tmac OLD_FILES+=usr/share/tmac/latin1.tmac OLD_FILES+=usr/share/tmac/latin2.tmac OLD_FILES+=usr/share/tmac/latin9.tmac OLD_FILES+=usr/share/tmac/lbp.tmac OLD_FILES+=usr/share/tmac/lj4.tmac OLD_FILES+=usr/share/tmac/m.tmac OLD_FILES+=usr/share/tmac/man.local OLD_FILES+=usr/share/tmac/man.tmac OLD_FILES+=usr/share/tmac/mandoc.tmac OLD_FILES+=usr/share/tmac/mdoc.local OLD_FILES+=usr/share/tmac/mdoc.tmac OLD_FILES+=usr/share/tmac/mdoc/doc-common OLD_FILES+=usr/share/tmac/mdoc/doc-ditroff OLD_FILES+=usr/share/tmac/mdoc/doc-nroff OLD_FILES+=usr/share/tmac/mdoc/doc-syms OLD_FILES+=usr/share/tmac/mdoc/fr.ISO8859-1 OLD_FILES+=usr/share/tmac/mdoc/ru.KOI8-R OLD_DIRS+=usr/share/tmac/mdoc OLD_FILES+=usr/share/tmac/me.tmac OLD_FILES+=usr/share/tmac/mm/0.MT OLD_FILES+=usr/share/tmac/mm/4.MT OLD_FILES+=usr/share/tmac/mm/5.MT OLD_FILES+=usr/share/tmac/mm/locale OLD_FILES+=usr/share/tmac/mm/mm.tmac OLD_FILES+=usr/share/tmac/mm/mmse.tmac OLD_FILES+=usr/share/tmac/mm/ms.cov OLD_FILES+=usr/share/tmac/mm/se_locale OLD_FILES+=usr/share/tmac/mm/se_ms.cov OLD_DIRS+=usr/share/tmac/mm OLD_FILES+=usr/share/tmac/ms.tmac OLD_FILES+=usr/share/tmac/mse.tmac OLD_FILES+=usr/share/tmac/papersize.tmac OLD_FILES+=usr/share/tmac/pic.tmac OLD_FILES+=usr/share/tmac/ps.tmac OLD_FILES+=usr/share/tmac/psatk.tmac OLD_FILES+=usr/share/tmac/psold.tmac OLD_FILES+=usr/share/tmac/pspic.tmac OLD_FILES+=usr/share/tmac/s.tmac OLD_FILES+=usr/share/tmac/safer.tmac OLD_FILES+=usr/share/tmac/tmac.orig_me OLD_FILES+=usr/share/tmac/tmac.vgrind OLD_FILES+=usr/share/tmac/trace.tmac OLD_FILES+=usr/share/tmac/troffrc OLD_FILES+=usr/share/tmac/troffrc-end OLD_FILES+=usr/share/tmac/tty-char.tmac OLD_FILES+=usr/share/tmac/tty.tmac OLD_FILES+=usr/share/tmac/unicode.tmac OLD_FILES+=usr/share/tmac/www.tmac OLD_DIRS+=usr/share/tmac .endif .if ${MK_GSSAPI} == no OLD_FILES+=usr/include/gssapi/gssapi.h OLD_DIRS+=usr/include/gssapi OLD_FILES+=usr/include/gssapi.h OLD_FILES+=usr/lib/libgssapi.a OLD_FILES+=usr/lib/libgssapi.so OLD_LIBS+=usr/lib/libgssapi.so.10 OLD_FILES+=usr/lib/libgssapi_p.a OLD_FILES+=usr/lib/librpcsec_gss.a OLD_FILES+=usr/lib/librpcsec_gss.so OLD_LIBS+=usr/lib/librpcsec_gss.so.1 .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" OLD_FILES+=usr/lib32/libgssapi.a OLD_FILES+=usr/lib32/libgssapi.so OLD_LIBS+=usr/lib32/libgssapi.so.10 OLD_FILES+=usr/lib32/libgssapi_p.a OLD_FILES+=usr/lib32/librpcsec_gss.a OLD_FILES+=usr/lib32/librpcsec_gss.so OLD_LIBS+=usr/lib32/librpcsec_gss.so.1 .endif OLD_FILES+=usr/sbin/gssd OLD_FILES+=usr/share/man/man3/gss_accept_sec_context.3.gz OLD_FILES+=usr/share/man/man3/gss_acquire_cred.3.gz OLD_FILES+=usr/share/man/man3/gss_add_cred.3.gz OLD_FILES+=usr/share/man/man3/gss_add_oid_set_member.3.gz OLD_FILES+=usr/share/man/man3/gss_canonicalize_name.3.gz OLD_FILES+=usr/share/man/man3/gss_compare_name.3.gz OLD_FILES+=usr/share/man/man3/gss_context_time.3.gz OLD_FILES+=usr/share/man/man3/gss_create_empty_oid_set.3.gz OLD_FILES+=usr/share/man/man3/gss_delete_sec_context.3.gz OLD_FILES+=usr/share/man/man3/gss_display_name.3.gz OLD_FILES+=usr/share/man/man3/gss_display_status.3.gz OLD_FILES+=usr/share/man/man3/gss_duplicate_name.3.gz OLD_FILES+=usr/share/man/man3/gss_export_name.3.gz OLD_FILES+=usr/share/man/man3/gss_export_sec_context.3.gz OLD_FILES+=usr/share/man/man3/gss_get_mic.3.gz OLD_FILES+=usr/share/man/man3/gss_import_name.3.gz OLD_FILES+=usr/share/man/man3/gss_import_sec_context.3.gz OLD_FILES+=usr/share/man/man3/gss_indicate_mechs.3.gz OLD_FILES+=usr/share/man/man3/gss_init_sec_context.3.gz OLD_FILES+=usr/share/man/man3/gss_inquire_context.3.gz OLD_FILES+=usr/share/man/man3/gss_inquire_cred.3.gz OLD_FILES+=usr/share/man/man3/gss_inquire_cred_by_mech.3.gz OLD_FILES+=usr/share/man/man3/gss_inquire_mechs_for_name.3.gz OLD_FILES+=usr/share/man/man3/gss_inquire_names_for_mech.3.gz OLD_FILES+=usr/share/man/man3/gss_process_context_token.3.gz OLD_FILES+=usr/share/man/man3/gss_release_buffer.3.gz OLD_FILES+=usr/share/man/man3/gss_release_cred.3.gz OLD_FILES+=usr/share/man/man3/gss_release_name.3.gz OLD_FILES+=usr/share/man/man3/gss_release_oid_set.3.gz OLD_FILES+=usr/share/man/man3/gss_seal.3.gz OLD_FILES+=usr/share/man/man3/gss_sign.3.gz OLD_FILES+=usr/share/man/man3/gss_test_oid_set_member.3.gz OLD_FILES+=usr/share/man/man3/gss_unseal.3.gz OLD_FILES+=usr/share/man/man3/gss_unwrap.3.gz OLD_FILES+=usr/share/man/man3/gss_verify.3.gz OLD_FILES+=usr/share/man/man3/gss_verify_mic.3.gz OLD_FILES+=usr/share/man/man3/gss_wrap.3.gz OLD_FILES+=usr/share/man/man3/gss_wrap_size_limit.3.gz OLD_FILES+=usr/share/man/man3/gssapi.3.gz OLD_FILES+=usr/share/man/man3/rpc_gss_get_error.3.gz OLD_FILES+=usr/share/man/man3/rpc_gss_get_mech_info.3.gz OLD_FILES+=usr/share/man/man3/rpc_gss_get_mechanisms.3.gz OLD_FILES+=usr/share/man/man3/rpc_gss_get_principal_name.3.gz OLD_FILES+=usr/share/man/man3/rpc_gss_get_versions.3.gz OLD_FILES+=usr/share/man/man3/rpc_gss_getcred.3.gz OLD_FILES+=usr/share/man/man3/rpc_gss_is_installed.3.gz OLD_FILES+=usr/share/man/man3/rpc_gss_max_data_length.3.gz OLD_FILES+=usr/share/man/man3/rpc_gss_mech_to_oid.3.gz OLD_FILES+=usr/share/man/man3/rpc_gss_oid_to_mech.3.gz OLD_FILES+=usr/share/man/man3/rpc_gss_qop_to_num.3.gz OLD_FILES+=usr/share/man/man3/rpc_gss_seccreate.3.gz OLD_FILES+=usr/share/man/man3/rpc_gss_set_callback.3.gz OLD_FILES+=usr/share/man/man3/rpc_gss_set_defaults.3.gz OLD_FILES+=usr/share/man/man3/rpc_gss_set_svc_name.3.gz OLD_FILES+=usr/share/man/man3/rpc_gss_svc_max_data_length.3.gz OLD_FILES+=usr/share/man/man3/rpcsec_gss.3.gz OLD_FILES+=usr/share/man/man5/mech.5.gz OLD_FILES+=usr/share/man/man5/qop.5.gz OLD_FILES+=usr/share/man/man8/gssd.8.gz .endif .if ${MK_HAST} == no OLD_FILES+=sbin/hastctl OLD_FILES+=sbin/hastd OLD_FILES+=usr/share/examples/hast/ucarp.sh OLD_FILES+=usr/share/examples/hast/ucarp_down.sh OLD_FILES+=usr/share/examples/hast/ucarp_up.sh OLD_FILES+=usr/share/examples/hast/vip-down.sh OLD_FILES+=usr/share/examples/hast/vip-up.sh OLD_FILES+=usr/share/man/man5/hast.conf.5.gz OLD_FILES+=usr/share/man/man8/hastctl.8.gz OLD_FILES+=usr/share/man/man8/hastd.8.gz OLD_DIRS+=usr/share/examples/hast .endif .if ${MK_HESIOD} == no OLD_FILES+=usr/bin/hesinfo OLD_FILES+=usr/include/hesiod.h OLD_FILES+=usr/share/man/man1/hesinfo.1.gz OLD_FILES+=usr/share/man/man3/hesiod.3.gz OLD_FILES+=usr/share/man/man5/hesiod.conf.5.gz .endif .if ${MK_HTML} == no OLD_FILES+=usr/share/doc/ncurses/hackguide.html OLD_FILES+=usr/share/doc/ncurses/ncurses-intro.html OLD_FILES+=usr/share/doc/ntp/accopt.html OLD_FILES+=usr/share/doc/ntp/assoc.html OLD_FILES+=usr/share/doc/ntp/audio.html OLD_FILES+=usr/share/doc/ntp/authopt.html OLD_FILES+=usr/share/doc/ntp/build.html OLD_FILES+=usr/share/doc/ntp/clockopt.html OLD_FILES+=usr/share/doc/ntp/config.html OLD_FILES+=usr/share/doc/ntp/confopt.html OLD_FILES+=usr/share/doc/ntp/copyright.html OLD_FILES+=usr/share/doc/ntp/debug.html OLD_FILES+=usr/share/doc/ntp/driver1.html OLD_FILES+=usr/share/doc/ntp/driver10.html OLD_FILES+=usr/share/doc/ntp/driver11.html OLD_FILES+=usr/share/doc/ntp/driver12.html OLD_FILES+=usr/share/doc/ntp/driver16.html OLD_FILES+=usr/share/doc/ntp/driver18.html OLD_FILES+=usr/share/doc/ntp/driver19.html OLD_FILES+=usr/share/doc/ntp/driver2.html OLD_FILES+=usr/share/doc/ntp/driver20.html OLD_FILES+=usr/share/doc/ntp/driver22.html OLD_FILES+=usr/share/doc/ntp/driver26.html OLD_FILES+=usr/share/doc/ntp/driver27.html OLD_FILES+=usr/share/doc/ntp/driver28.html OLD_FILES+=usr/share/doc/ntp/driver29.html OLD_FILES+=usr/share/doc/ntp/driver3.html OLD_FILES+=usr/share/doc/ntp/driver30.html OLD_FILES+=usr/share/doc/ntp/driver32.html OLD_FILES+=usr/share/doc/ntp/driver33.html OLD_FILES+=usr/share/doc/ntp/driver34.html OLD_FILES+=usr/share/doc/ntp/driver35.html OLD_FILES+=usr/share/doc/ntp/driver36.html OLD_FILES+=usr/share/doc/ntp/driver37.html OLD_FILES+=usr/share/doc/ntp/driver4.html OLD_FILES+=usr/share/doc/ntp/driver5.html OLD_FILES+=usr/share/doc/ntp/driver6.html OLD_FILES+=usr/share/doc/ntp/driver7.html OLD_FILES+=usr/share/doc/ntp/driver8.html OLD_FILES+=usr/share/doc/ntp/driver9.html OLD_FILES+=usr/share/doc/ntp/extern.html OLD_FILES+=usr/share/doc/ntp/hints.html OLD_FILES+=usr/share/doc/ntp/howto.html OLD_FILES+=usr/share/doc/ntp/index.html OLD_FILES+=usr/share/doc/ntp/kern.html OLD_FILES+=usr/share/doc/ntp/ldisc.html OLD_FILES+=usr/share/doc/ntp/measure.html OLD_FILES+=usr/share/doc/ntp/miscopt.html OLD_FILES+=usr/share/doc/ntp/monopt.html OLD_FILES+=usr/share/doc/ntp/mx4200data.html OLD_FILES+=usr/share/doc/ntp/notes.html OLD_FILES+=usr/share/doc/ntp/ntpd.html OLD_FILES+=usr/share/doc/ntp/ntpdate.html OLD_FILES+=usr/share/doc/ntp/ntpdc.html OLD_FILES+=usr/share/doc/ntp/ntpq.html OLD_FILES+=usr/share/doc/ntp/ntptime.html OLD_FILES+=usr/share/doc/ntp/ntptrace.html OLD_FILES+=usr/share/doc/ntp/parsedata.html OLD_FILES+=usr/share/doc/ntp/parsenew.html OLD_FILES+=usr/share/doc/ntp/patches.html OLD_FILES+=usr/share/doc/ntp/porting.html OLD_FILES+=usr/share/doc/ntp/pps.html OLD_FILES+=usr/share/doc/ntp/prefer.html OLD_FILES+=usr/share/doc/ntp/quick.html OLD_FILES+=usr/share/doc/ntp/rdebug.html OLD_FILES+=usr/share/doc/ntp/refclock.html OLD_FILES+=usr/share/doc/ntp/release.html OLD_FILES+=usr/share/doc/ntp/tickadj.html .endif .if ${MK_ICONV} == no OLD_FILES+=usr/bin/iconv OLD_FILES+=usr/bin/mkcsmapper OLD_FILES+=usr/bin/mkesdb OLD_FILES+=usr/include/_libiconv_compat.h OLD_FILES+=usr/include/iconv.h OLD_FILES+=usr/share/man/man1/iconv.1.gz OLD_FILES+=usr/share/man/man1/mkcsmapper.1.gz OLD_FILES+=usr/share/man/man1/mkesdb.1.gz OLD_FILES+=usr/share/man/man3/__iconv.3.gz OLD_FILES+=usr/share/man/man3/__iconv_free_list.3.gz OLD_FILES+=usr/share/man/man3/__iconv_get_list.3.gz OLD_FILES+=usr/share/man/man3/iconv.3.gz OLD_FILES+=usr/share/man/man3/iconv_canonicalize.3.gz OLD_FILES+=usr/share/man/man3/iconv_close.3.gz OLD_FILES+=usr/share/man/man3/iconv_open.3.gz OLD_FILES+=usr/share/man/man3/iconv_open_into.3.gz OLD_FILES+=usr/share/man/man3/iconvctl.3.gz OLD_FILES+=usr/share/man/man3/iconvlist.3.gz .endif .if ${MK_INET6} == no OLD_FILES+=sbin/ping6 OLD_FILES+=sbin/rtsol OLD_FILES+=usr/sbin/ip6addrctl OLD_FILES+=usr/sbin/mld6query OLD_FILES+=usr/sbin/ndp OLD_FILES+=usr/sbin/rip6query OLD_FILES+=usr/sbin/route6d OLD_FILES+=usr/sbin/rrenumd OLD_FILES+=usr/sbin/rtadvctl OLD_FILES+=usr/sbin/rtadvd OLD_FILES+=usr/sbin/rtsold OLD_FILES+=usr/sbin/traceroute6 OLD_FILES+=usr/share/doc/IPv6/IMPLEMENTATION OLD_FILES+=usr/share/man/man5/rrenumd.conf.5.gz OLD_FILES+=usr/share/man/man5/rtadvd.conf.5.gz OLD_FILES+=usr/share/man/man8/ip6addrctl.8.gz OLD_FILES+=usr/share/man/man8/mld6query.8.gz OLD_FILES+=usr/share/man/man8/ndp.8.gz OLD_FILES+=usr/share/man/man8/ping6.8.gz OLD_FILES+=usr/share/man/man8/rip6query.8.gz OLD_FILES+=usr/share/man/man8/route6d.8.gz OLD_FILES+=usr/share/man/man8/rrenumd.8.gz OLD_FILES+=usr/share/man/man8/rtadvctl.8.gz OLD_FILES+=usr/share/man/man8/rtadvd.8.gz OLD_FILES+=usr/share/man/man8/rtsol.8.gz OLD_FILES+=usr/share/man/man8/rtsold.8.gz OLD_FILES+=usr/share/man/man8/traceroute6.8.gz .endif .if ${MK_INET6_SUPPORT} == no OLD_FILES+=rescue/ping6 .endif .if ${MK_INETD} == no OLD_FILES+=etc/rc.d/inetd OLD_FILES+=usr/sbin/inetd OLD_FILES+=usr/share/man/man5/inetd.conf.5.gz OLD_FILES+=usr/share/man/man8/inetd.8.gz .endif .if ${MK_IPFILTER} == no OLD_FILES+=etc/periodic/security/510.ipfdenied OLD_FILES+=etc/periodic/security/610.ipf6denied OLD_FILES+=rescue/ipf OLD_FILES+=sbin/ipf OLD_FILES+=sbin/ipfs OLD_FILES+=sbin/ipfstat OLD_FILES+=sbin/ipftest OLD_FILES+=sbin/ipmon OLD_FILES+=sbin/ipnat OLD_FILES+=sbin/ippool OLD_FILES+=sbin/ipresend OLD_FILES+=usr/include/netinet/ip_auth.h OLD_FILES+=usr/include/netinet/ip_compat.h OLD_FILES+=usr/include/netinet/ip_fil.h OLD_FILES+=usr/include/netinet/ip_frag.h OLD_FILES+=usr/include/netinet/ip_htable.h OLD_FILES+=usr/include/netinet/ip_lookup.h OLD_FILES+=usr/include/netinet/ip_nat.h OLD_FILES+=usr/include/netinet/ip_pool.h OLD_FILES+=usr/include/netinet/ip_proxy.h OLD_FILES+=usr/include/netinet/ip_rules.h OLD_FILES+=usr/include/netinet/ip_scan.h OLD_FILES+=usr/include/netinet/ip_state.h OLD_FILES+=usr/include/netinet/ip_sync.h OLD_FILES+=usr/include/netinet/ipl.h OLD_FILES+=usr/share/examples/ipfilter/README OLD_FILES+=usr/share/examples/ipfilter/BASIC.NAT OLD_FILES+=usr/share/examples/ipfilter/BASIC_1.FW OLD_FILES+=usr/share/examples/ipfilter/BASIC_2.FW OLD_FILES+=usr/share/examples/ipfilter/example.1 OLD_FILES+=usr/share/examples/ipfilter/example.2 OLD_FILES+=usr/share/examples/ipfilter/example.3 OLD_FILES+=usr/share/examples/ipfilter/example.4 OLD_FILES+=usr/share/examples/ipfilter/example.5 OLD_FILES+=usr/share/examples/ipfilter/example.6 OLD_FILES+=usr/share/examples/ipfilter/example.7 OLD_FILES+=usr/share/examples/ipfilter/example.8 OLD_FILES+=usr/share/examples/ipfilter/example.9 OLD_FILES+=usr/share/examples/ipfilter/example.10 OLD_FILES+=usr/share/examples/ipfilter/example.11 OLD_FILES+=usr/share/examples/ipfilter/example.12 OLD_FILES+=usr/share/examples/ipfilter/example.13 OLD_FILES+=usr/share/examples/ipfilter/example.sr OLD_FILES+=usr/share/examples/ipfilter/firewall OLD_FILES+=usr/share/examples/ipfilter/ftp-proxy OLD_FILES+=usr/share/examples/ipfilter/ftppxy OLD_FILES+=usr/share/examples/ipfilter/nat-setup OLD_FILES+=usr/share/examples/ipfilter/nat.eg OLD_FILES+=usr/share/examples/ipfilter/server OLD_FILES+=usr/share/examples/ipfilter/tcpstate OLD_FILES+=usr/share/examples/ipfilter/example.14 OLD_FILES+=usr/share/examples/ipfilter/firewall.1 OLD_FILES+=usr/share/examples/ipfilter/firewall.2 OLD_FILES+=usr/share/examples/ipfilter/ipf.conf.permissive OLD_FILES+=usr/share/examples/ipfilter/ipf.conf.restrictive OLD_FILES+=usr/share/examples/ipfilter/ipf.conf.sample OLD_FILES+=usr/share/examples/ipfilter/ipnat.conf.sample OLD_FILES+=usr/share/examples/ipfilter/ipf-howto.txt OLD_FILES+=usr/share/examples/ipfilter/examples.txt OLD_FILES+=usr/share/examples/ipfilter/rules.txt OLD_FILES+=usr/share/examples/ipfilter/mkfilters OLD_DIRS+=usr/share/examples/ipfilter OLD_FILES+=usr/share/man/man1/ipftest.1.gz OLD_FILES+=usr/share/man/man1/ipresend.1.gz OLD_FILES+=usr/share/man/man4/ipf.4.gz OLD_FILES+=usr/share/man/man4/ipl.4.gz OLD_FILES+=usr/share/man/man4/ipfilter.4.gz OLD_FILES+=usr/share/man/man4/ipnat.4.gz OLD_FILES+=usr/share/man/man5/ipf.5.gz OLD_FILES+=usr/share/man/man5/ipf.conf.5.gz OLD_FILES+=usr/share/man/man5/ipf6.conf.5.gz OLD_FILES+=usr/share/man/man5/ipnat.5.gz OLD_FILES+=usr/share/man/man5/ipnat.conf.5.gz OLD_FILES+=usr/share/man/man5/ippool.5.gz OLD_FILES+=usr/share/man/man8/ipf.8.gz OLD_FILES+=usr/share/man/man8/ipfs.8.gz OLD_FILES+=usr/share/man/man8/ipfstat.8.gz OLD_FILES+=usr/share/man/man8/ipmon.8.gz OLD_FILES+=usr/share/man/man8/ipnat.8.gz OLD_FILES+=usr/share/man/man8/ippool.8.gz .endif .if ${MK_IPFW} == no OLD_FILES+=etc/periodic/security/500.ipfwdenied OLD_FILES+=etc/periodic/security/550.ipfwlimit OLD_FILES+=sbin/ipfw OLD_FILES+=sbin/natd OLD_FILES+=usr/sbin/ipfwpcap OLD_FILES+=usr/share/man/man8/ipfw.8.gz OLD_FILES+=usr/share/man/man8/ipfwpcap.8.gz OLD_FILES+=usr/share/man/man8/natd.8.gz .endif .if ${MK_ISCSI} == no OLD_FILES+=etc/rc.d/iscsictl OLD_FILES+=etc/rc.d/iscsid OLD_FILES+=sbin/iscontrol OLD_FILES+=usr/bin/iscsictl OLD_FILES+=usr/sbin/iscsid OLD_FILES+=usr/share/man/man4/iscsi.4.gz OLD_FILES+=usr/share/man/man4/iscsi_initiator.4.gz OLD_FILES+=usr/share/man/man5/iscsi.conf.5.gz OLD_FILES+=usr/share/man/man8/iscontrol.8.gz OLD_FILES+=usr/share/man/man8/iscsictl.8.gz OLD_FILES+=usr/share/man/man8/iscsid.8.gz .endif .if ${MK_JAIL} == no OLD_FILES+=etc/rc.d/jail OLD_FILES+=usr/sbin/jail OLD_FILES+=usr/sbin/jexec OLD_FILES+=usr/sbin/jls OLD_FILES+=usr/share/man/man5/jail.conf.5.gz OLD_FILES+=usr/share/man/man8/jail.8.gz OLD_FILES+=usr/share/man/man8/jexec.8.gz OLD_FILES+=usr/share/man/man8/jls.8.gz .endif .if ${MK_KDUMP} == no OLD_FILES+=usr/bin/kdump OLD_FILES+=usr/bin/truss OLD_FILES+=usr/share/man/man1/kdump.1.gz OLD_FILES+=usr/share/man/man1/truss.1.gz .endif .if ${MK_KERBEROS} == no OLD_FILES+=etc/rc.d/ipropd_master OLD_FILES+=etc/rc.d/ipropd_slave OLD_FILES+=usr/bin/compile_et OLD_FILES+=usr/bin/hxtool OLD_FILES+=usr/bin/kadmin OLD_FILES+=usr/bin/kdestroy OLD_FILES+=usr/bin/kf OLD_FILES+=usr/bin/kgetcred OLD_FILES+=usr/bin/kinit OLD_FILES+=usr/bin/klist OLD_FILES+=usr/bin/kpasswd OLD_FILES+=usr/bin/krb5-config OLD_FILES+=usr/bin/ksu OLD_FILES+=usr/bin/kswitch OLD_FILES+=usr/bin/string2key OLD_FILES+=usr/bin/verify_krb5_conf OLD_FILES+=usr/include/asn1-common.h OLD_FILES+=usr/include/asn1_err.h OLD_FILES+=usr/include/base64.h OLD_FILES+=usr/include/cms_asn1.h OLD_FILES+=usr/include/crmf_asn1.h OLD_FILES+=usr/include/der-private.h OLD_FILES+=usr/include/der-protos.h OLD_FILES+=usr/include/der.h OLD_FILES+=usr/include/digest_asn1.h OLD_FILES+=usr/include/getarg.h OLD_FILES+=usr/include/gssapi/gssapi_krb5.h OLD_FILES+=usr/include/hdb-protos.h OLD_FILES+=usr/include/hdb.h OLD_FILES+=usr/include/hdb_asn1.h OLD_FILES+=usr/include/hdb_err.h OLD_FILES+=usr/include/heim_asn1.h OLD_FILES+=usr/include/heim_err.h OLD_FILES+=usr/include/heim_threads.h OLD_FILES+=usr/include/heimbase.h OLD_FILES+=usr/include/heimntlm-protos.h OLD_FILES+=usr/include/heimntlm.h OLD_FILES+=usr/include/hex.h OLD_FILES+=usr/include/hx509-private.h OLD_FILES+=usr/include/hx509-protos.h OLD_FILES+=usr/include/hx509.h OLD_FILES+=usr/include/hx509_err.h OLD_FILES+=usr/include/k524_err.h OLD_FILES+=usr/include/kadm5/admin.h OLD_FILES+=usr/include/kadm5/kadm5-private.h OLD_FILES+=usr/include/kadm5/kadm5-protos.h OLD_FILES+=usr/include/kadm5/kadm5-pwcheck.h OLD_FILES+=usr/include/kadm5/kadm5_err.h OLD_FILES+=usr/include/kadm5/private.h OLD_DIRS+=usr/include/kadm5 OLD_FILES+=usr/include/kafs.h OLD_FILES+=usr/include/kdc-protos.h OLD_FILES+=usr/include/kdc.h OLD_FILES+=usr/include/krb5-private.h OLD_FILES+=usr/include/krb5-protos.h OLD_FILES+=usr/include/krb5-types.h OLD_FILES+=usr/include/krb5.h OLD_FILES+=usr/include/krb5/ccache_plugin.h OLD_FILES+=usr/include/krb5/locate_plugin.h OLD_FILES+=usr/include/krb5/send_to_kdc_plugin.h OLD_FILES+=usr/include/krb5/windc_plugin.h OLD_DIRS+=usr/include/krb5 OLD_FILES+=usr/include/krb5_asn1.h OLD_FILES+=usr/include/krb5_ccapi.h OLD_FILES+=usr/include/krb5_err.h OLD_FILES+=usr/include/kx509_asn1.h OLD_FILES+=usr/include/ntlm_err.h OLD_FILES+=usr/include/ocsp_asn1.h OLD_FILES+=usr/include/parse_bytes.h OLD_FILES+=usr/include/parse_time.h OLD_FILES+=usr/include/parse_units.h OLD_FILES+=usr/include/pkcs10_asn1.h OLD_FILES+=usr/include/pkcs12_asn1.h OLD_FILES+=usr/include/pkcs8_asn1.h OLD_FILES+=usr/include/pkcs9_asn1.h OLD_FILES+=usr/include/pkinit_asn1.h OLD_FILES+=usr/include/resolve.h OLD_FILES+=usr/include/rfc2459_asn1.h OLD_FILES+=usr/include/roken-common.h OLD_FILES+=usr/include/rtbl.h OLD_FILES+=usr/include/wind.h OLD_FILES+=usr/include/wind_err.h OLD_FILES+=usr/include/xdbm.h OLD_FILES+=usr/lib/libasn1.a OLD_FILES+=usr/lib/libasn1.so OLD_LIBS+=usr/lib/libasn1.so.11 OLD_FILES+=usr/lib/libasn1_p.a OLD_FILES+=usr/lib/libcom_err.a OLD_FILES+=usr/lib/libcom_err.so OLD_LIBS+=usr/lib/libcom_err.so.5 OLD_FILES+=usr/lib/libcom_err_p.a OLD_FILES+=usr/lib/libgssapi_krb5.a OLD_FILES+=usr/lib/libgssapi_krb5.so OLD_LIBS+=usr/lib/libgssapi_krb5.so.10 OLD_FILES+=usr/lib/libgssapi_krb5_p.a OLD_FILES+=usr/lib/libgssapi_ntlm.a OLD_FILES+=usr/lib/libgssapi_ntlm.so OLD_LIBS+=usr/lib/libgssapi_ntlm.so.10 OLD_FILES+=usr/lib/libgssapi_ntlm_p.a OLD_FILES+=usr/lib/libgssapi_spnego.a OLD_FILES+=usr/lib/libgssapi_spnego.so OLD_LIBS+=usr/lib/libgssapi_spnego.so.10 OLD_FILES+=usr/lib/libgssapi_spnego_p.a OLD_FILES+=usr/lib/libhdb.a OLD_FILES+=usr/lib/libhdb.so OLD_LIBS+=usr/lib/libhdb.so.11 OLD_FILES+=usr/lib/libhdb_p.a OLD_FILES+=usr/lib/libheimbase.a OLD_FILES+=usr/lib/libheimbase.so OLD_LIBS+=usr/lib/libheimbase.so.11 OLD_FILES+=usr/lib/libheimbase_p.a OLD_FILES+=usr/lib/libheimntlm.a OLD_FILES+=usr/lib/libheimntlm.so OLD_LIBS+=usr/lib/libheimntlm.so.11 OLD_FILES+=usr/lib/libheimntlm_p.a OLD_FILES+=usr/lib/libheimsqlite.a OLD_FILES+=usr/lib/libheimsqlite.so OLD_LIBS+=usr/lib/libheimsqlite.so.11 OLD_FILES+=usr/lib/libheimsqlite_p.a OLD_FILES+=usr/lib/libhx509.a OLD_FILES+=usr/lib/libhx509.so OLD_LIBS+=usr/lib/libhx509.so.11 OLD_FILES+=usr/lib/libhx509_p.a OLD_FILES+=usr/lib/libkadm5clnt.a OLD_FILES+=usr/lib/libkadm5clnt.so OLD_LIBS+=usr/lib/libkadm5clnt.so.11 OLD_FILES+=usr/lib/libkadm5clnt_p.a OLD_FILES+=usr/lib/libkadm5srv.a OLD_FILES+=usr/lib/libkadm5srv.so OLD_LIBS+=usr/lib/libkadm5srv.so.11 OLD_FILES+=usr/lib/libkadm5srv_p.a OLD_FILES+=usr/lib/libkafs5.a OLD_FILES+=usr/lib/libkafs5.so OLD_LIBS+=usr/lib/libkafs5.so.11 OLD_FILES+=usr/lib/libkafs5_p.a OLD_FILES+=usr/lib/libkdc.a OLD_FILES+=usr/lib/libkdc.so OLD_LIBS+=usr/lib/libkdc.so.11 OLD_FILES+=usr/lib/libkdc_p.a OLD_FILES+=usr/lib/libkrb5.a OLD_FILES+=usr/lib/libkrb5.so OLD_LIBS+=usr/lib/libkrb5.so.11 OLD_FILES+=usr/lib/libkrb5_p.a OLD_FILES+=usr/lib/libroken.a OLD_FILES+=usr/lib/libroken.so OLD_LIBS+=usr/lib/libroken.so.11 OLD_FILES+=usr/lib/libroken_p.a OLD_FILES+=usr/lib/libwind.a OLD_FILES+=usr/lib/libwind.so OLD_LIBS+=usr/lib/libwind.so.11 OLD_FILES+=usr/lib/libwind_p.a OLD_FILES+=usr/lib/pam_krb5.so OLD_LIBS+=usr/lib/pam_krb5.so.6 OLD_FILES+=usr/lib/pam_ksu.so OLD_LIBS+=usr/lib/pam_ksu.so.6 OLD_FILES+=usr/lib/private/libheimipcc.a OLD_FILES+=usr/lib/private/libheimipcc.so OLD_LIBS+=usr/lib/private/libheimipcc.so.11 OLD_FILES+=usr/lib/private/libheimipcc_p.a OLD_FILES+=usr/lib/private/libheimipcs.a OLD_FILES+=usr/lib/private/libheimipcs.so OLD_LIBS+=usr/lib/private/libheimipcs.so.11 OLD_FILES+=usr/lib/private/libheimipcs_p.a .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" OLD_FILES+=usr/lib32/libasn1.a OLD_FILES+=usr/lib32/libasn1.so OLD_LIBS+=usr/lib32/libasn1.so.11 OLD_FILES+=usr/lib32/libasn1_p.a OLD_FILES+=usr/lib32/libgssapi_krb5.a OLD_FILES+=usr/lib32/libgssapi_krb5.so OLD_LIBS+=usr/lib32/libgssapi_krb5.so.10 OLD_FILES+=usr/lib32/libgssapi_krb5_p.a OLD_FILES+=usr/lib32/libgssapi_ntlm.a OLD_FILES+=usr/lib32/libgssapi_ntlm.so OLD_LIBS+=usr/lib32/libgssapi_ntlm.so.10 OLD_FILES+=usr/lib32/libgssapi_ntlm_p.a OLD_FILES+=usr/lib32/libgssapi_spnego.a OLD_FILES+=usr/lib32/libgssapi_spnego.so OLD_LIBS+=usr/lib32/libgssapi_spnego.so.10 OLD_FILES+=usr/lib32/libgssapi_spnego_p.a OLD_FILES+=usr/lib32/libhdb.a OLD_FILES+=usr/lib32/libhdb.so OLD_LIBS+=usr/lib32/libhdb.so.11 OLD_FILES+=usr/lib32/libhdb_p.a OLD_FILES+=usr/lib32/libheimbase.a OLD_FILES+=usr/lib32/libheimbase.so OLD_LIBS+=usr/lib32/libheimbase.so.11 OLD_FILES+=usr/lib32/libheimbase_p.a OLD_FILES+=usr/lib32/libheimntlm.a OLD_FILES+=usr/lib32/libheimntlm.so OLD_LIBS+=usr/lib32/libheimntlm.so.11 OLD_FILES+=usr/lib32/libheimntlm_p.a OLD_FILES+=usr/lib32/libheimsqlite.a OLD_FILES+=usr/lib32/libheimsqlite.so OLD_LIBS+=usr/lib32/libheimsqlite.so.11 OLD_FILES+=usr/lib32/libheimsqlite_p.a OLD_FILES+=usr/lib32/libhx509.a OLD_FILES+=usr/lib32/libhx509.so OLD_LIBS+=usr/lib32/libhx509.so.11 OLD_FILES+=usr/lib32/libhx509_p.a OLD_FILES+=usr/lib32/libkadm5clnt.a OLD_FILES+=usr/lib32/libkadm5clnt.so OLD_LIBS+=usr/lib32/libkadm5clnt.so.11 OLD_FILES+=usr/lib32/libkadm5clnt_p.a OLD_FILES+=usr/lib32/libkadm5srv.a OLD_FILES+=usr/lib32/libkadm5srv.so OLD_LIBS+=usr/lib32/libkadm5srv.so.11 OLD_FILES+=usr/lib32/libkadm5srv_p.a OLD_FILES+=usr/lib32/libkafs5.a OLD_FILES+=usr/lib32/libkafs5.so OLD_LIBS+=usr/lib32/libkafs5.so.11 OLD_FILES+=usr/lib32/libkafs5_p.a OLD_FILES+=usr/lib32/libkdc.a OLD_FILES+=usr/lib32/libkdc.so OLD_LIBS+=usr/lib32/libkdc.so.11 OLD_FILES+=usr/lib32/libkdc_p.a OLD_FILES+=usr/lib32/libkrb5.a OLD_FILES+=usr/lib32/libkrb5.so OLD_LIBS+=usr/lib32/libkrb5.so.11 OLD_FILES+=usr/lib32/libkrb5_p.a OLD_FILES+=usr/lib32/libroken.a OLD_FILES+=usr/lib32/libroken.so OLD_LIBS+=usr/lib32/libroken.so.11 OLD_FILES+=usr/lib32/libroken_p.a OLD_FILES+=usr/lib32/libwind.a OLD_FILES+=usr/lib32/libwind.so OLD_LIBS+=usr/lib32/libwind.so.11 OLD_FILES+=usr/lib32/libwind_p.a OLD_FILES+=usr/lib32/pam_krb5.so OLD_LIBS+=usr/lib32/pam_krb5.so.6 OLD_FILES+=usr/lib32/pam_ksu.so OLD_LIBS+=usr/lib32/pam_ksu.so.6 OLD_FILES+=usr/lib32/private/libheimipcc.a OLD_FILES+=usr/lib32/private/libheimipcc.so OLD_LIBS+=usr/lib32/private/libheimipcc.so.11 OLD_FILES+=usr/lib32/private/libheimipcc_p.a OLD_FILES+=usr/lib32/private/libheimipcs.a OLD_FILES+=usr/lib32/private/libheimipcs.so OLD_LIBS+=usr/lib32/private/libheimipcs.so.11 OLD_FILES+=usr/lib32/private/libheimipcs_p.a .endif OLD_FILES+=usr/libexec/digest-service OLD_FILES+=usr/libexec/hprop OLD_FILES+=usr/libexec/hpropd OLD_FILES+=usr/libexec/ipropd-master OLD_FILES+=usr/libexec/ipropd-slave OLD_FILES+=usr/libexec/kadmind OLD_FILES+=usr/libexec/kcm OLD_FILES+=usr/libexec/kdc OLD_FILES+=usr/libexec/kdigest OLD_FILES+=usr/libexec/kfd OLD_FILES+=usr/libexec/kimpersonate OLD_FILES+=usr/libexec/kpasswdd OLD_FILES+=usr/sbin/kstash OLD_FILES+=usr/sbin/ktutil OLD_FILES+=usr/sbin/iprop-log OLD_FILES+=usr/share/info/heimdal.info.gz OLD_FILES+=usr/share/man/man1/kdestroy.1.gz OLD_FILES+=usr/share/man/man1/kf.1.gz OLD_FILES+=usr/share/man/man1/kinit.1.gz OLD_FILES+=usr/share/man/man1/klist.1.gz OLD_FILES+=usr/share/man/man1/kpasswd.1.gz OLD_FILES+=usr/share/man/man1/krb5-config.1.gz OLD_FILES+=usr/share/man/man1/kswitch.1.gz OLD_FILES+=usr/share/man/man3/HDB.3.gz OLD_FILES+=usr/share/man/man3/hdb__del.3.gz OLD_FILES+=usr/share/man/man3/hdb__get.3.gz OLD_FILES+=usr/share/man/man3/hdb__put.3.gz OLD_FILES+=usr/share/man/man3/hdb_auth_status.3.gz OLD_FILES+=usr/share/man/man3/hdb_check_constrained_delegation.3.gz OLD_FILES+=usr/share/man/man3/hdb_check_pkinit_ms_upn_match.3.gz OLD_FILES+=usr/share/man/man3/hdb_check_s4u2self.3.gz OLD_FILES+=usr/share/man/man3/hdb_close.3.gz OLD_FILES+=usr/share/man/man3/hdb_destroy.3.gz OLD_FILES+=usr/share/man/man3/hdb_entry_ex.3.gz OLD_FILES+=usr/share/man/man3/hdb_fetch_kvno.3.gz OLD_FILES+=usr/share/man/man3/hdb_firstkey.3.gz OLD_FILES+=usr/share/man/man3/hdb_free.3.gz OLD_FILES+=usr/share/man/man3/hdb_get_realms.3.gz OLD_FILES+=usr/share/man/man3/hdb_lock.3.gz OLD_FILES+=usr/share/man/man3/hdb_name.3.gz OLD_FILES+=usr/share/man/man3/hdb_nextkey.3.gz OLD_FILES+=usr/share/man/man3/hdb_open.3.gz OLD_FILES+=usr/share/man/man3/hdb_password.3.gz OLD_FILES+=usr/share/man/man3/hdb_remove.3.gz OLD_FILES+=usr/share/man/man3/hdb_rename.3.gz OLD_FILES+=usr/share/man/man3/hdb_store.3.gz OLD_FILES+=usr/share/man/man3/hdb_unlock.3.gz OLD_FILES+=usr/share/man/man3/heim_ntlm_build_ntlm1_master.3.gz OLD_FILES+=usr/share/man/man3/heim_ntlm_build_ntlm2_master.3.gz OLD_FILES+=usr/share/man/man3/heim_ntlm_calculate_lm2.3.gz OLD_FILES+=usr/share/man/man3/heim_ntlm_calculate_ntlm1.3.gz OLD_FILES+=usr/share/man/man3/heim_ntlm_calculate_ntlm2.3.gz OLD_FILES+=usr/share/man/man3/heim_ntlm_decode_targetinfo.3.gz OLD_FILES+=usr/share/man/man3/heim_ntlm_encode_targetinfo.3.gz OLD_FILES+=usr/share/man/man3/heim_ntlm_encode_type1.3.gz OLD_FILES+=usr/share/man/man3/heim_ntlm_encode_type2.3.gz OLD_FILES+=usr/share/man/man3/heim_ntlm_encode_type3.3.gz OLD_FILES+=usr/share/man/man3/heim_ntlm_free_buf.3.gz OLD_FILES+=usr/share/man/man3/heim_ntlm_free_targetinfo.3.gz OLD_FILES+=usr/share/man/man3/heim_ntlm_free_type1.3.gz OLD_FILES+=usr/share/man/man3/heim_ntlm_free_type2.3.gz OLD_FILES+=usr/share/man/man3/heim_ntlm_free_type3.3.gz OLD_FILES+=usr/share/man/man3/heim_ntlm_keyex_unwrap.3.gz OLD_FILES+=usr/share/man/man3/heim_ntlm_nt_key.3.gz OLD_FILES+=usr/share/man/man3/heim_ntlm_ntlmv2_key.3.gz OLD_FILES+=usr/share/man/man3/heim_ntlm_verify_ntlm2.3.gz OLD_FILES+=usr/share/man/man3/hx509.3.gz OLD_FILES+=usr/share/man/man3/hx509_bitstring_print.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_sign.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_sign_self.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_add_crl_dp_uri.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_add_eku.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_add_san_hostname.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_add_san_jid.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_add_san_ms_upn.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_add_san_otherName.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_add_san_pkinit.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_add_san_rfc822name.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_free.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_init.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_ca.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_domaincontroller.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_notAfter.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_notAfter_lifetime.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_notBefore.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_proxy.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_serialnumber.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_spki.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_subject.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_template.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_unique.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_subject_expand.3.gz OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_template_units.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_binary.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_check_eku.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_cmp.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_find_subjectAltName_otherName.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_free.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_get_SPKI.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_get_SPKI_AlgorithmIdentifier.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_get_attribute.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_get_base_subject.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_get_friendly_name.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_get_issuer.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_get_issuer_unique_id.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_get_notAfter.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_get_notBefore.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_get_serialnumber.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_get_subject.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_get_subject_unique_id.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_init.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_init_data.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_keyusage_print.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_ref.3.gz OLD_FILES+=usr/share/man/man3/hx509_cert_set_friendly_name.3.gz OLD_FILES+=usr/share/man/man3/hx509_certs_add.3.gz OLD_FILES+=usr/share/man/man3/hx509_certs_append.3.gz OLD_FILES+=usr/share/man/man3/hx509_certs_end_seq.3.gz OLD_FILES+=usr/share/man/man3/hx509_certs_filter.3.gz OLD_FILES+=usr/share/man/man3/hx509_certs_find.3.gz OLD_FILES+=usr/share/man/man3/hx509_certs_free.3.gz OLD_FILES+=usr/share/man/man3/hx509_certs_info.3.gz OLD_FILES+=usr/share/man/man3/hx509_certs_init.3.gz OLD_FILES+=usr/share/man/man3/hx509_certs_iter_f.3.gz OLD_FILES+=usr/share/man/man3/hx509_certs_merge.3.gz OLD_FILES+=usr/share/man/man3/hx509_certs_next_cert.3.gz OLD_FILES+=usr/share/man/man3/hx509_certs_start_seq.3.gz OLD_FILES+=usr/share/man/man3/hx509_certs_store.3.gz OLD_FILES+=usr/share/man/man3/hx509_ci_print_names.3.gz OLD_FILES+=usr/share/man/man3/hx509_clear_error_string.3.gz OLD_FILES+=usr/share/man/man3/hx509_cms.3.gz OLD_FILES+=usr/share/man/man3/hx509_cms_create_signed_1.3.gz OLD_FILES+=usr/share/man/man3/hx509_cms_envelope_1.3.gz OLD_FILES+=usr/share/man/man3/hx509_cms_unenvelope.3.gz OLD_FILES+=usr/share/man/man3/hx509_cms_unwrap_ContentInfo.3.gz OLD_FILES+=usr/share/man/man3/hx509_cms_verify_signed.3.gz OLD_FILES+=usr/share/man/man3/hx509_cms_wrap_ContentInfo.3.gz OLD_FILES+=usr/share/man/man3/hx509_context_free.3.gz OLD_FILES+=usr/share/man/man3/hx509_context_init.3.gz OLD_FILES+=usr/share/man/man3/hx509_context_set_missing_revoke.3.gz OLD_FILES+=usr/share/man/man3/hx509_crl_add_revoked_certs.3.gz OLD_FILES+=usr/share/man/man3/hx509_crl_alloc.3.gz OLD_FILES+=usr/share/man/man3/hx509_crl_free.3.gz OLD_FILES+=usr/share/man/man3/hx509_crl_lifetime.3.gz OLD_FILES+=usr/share/man/man3/hx509_crl_sign.3.gz OLD_FILES+=usr/share/man/man3/hx509_crypto.3.gz OLD_FILES+=usr/share/man/man3/hx509_env.3.gz OLD_FILES+=usr/share/man/man3/hx509_env_add.3.gz OLD_FILES+=usr/share/man/man3/hx509_env_add_binding.3.gz OLD_FILES+=usr/share/man/man3/hx509_env_find.3.gz OLD_FILES+=usr/share/man/man3/hx509_env_find_binding.3.gz OLD_FILES+=usr/share/man/man3/hx509_env_free.3.gz OLD_FILES+=usr/share/man/man3/hx509_env_lfind.3.gz OLD_FILES+=usr/share/man/man3/hx509_err.3.gz OLD_FILES+=usr/share/man/man3/hx509_error.3.gz OLD_FILES+=usr/share/man/man3/hx509_free_error_string.3.gz OLD_FILES+=usr/share/man/man3/hx509_free_octet_string_list.3.gz OLD_FILES+=usr/share/man/man3/hx509_general_name_unparse.3.gz OLD_FILES+=usr/share/man/man3/hx509_get_error_string.3.gz OLD_FILES+=usr/share/man/man3/hx509_get_one_cert.3.gz OLD_FILES+=usr/share/man/man3/hx509_keyset.3.gz OLD_FILES+=usr/share/man/man3/hx509_lock.3.gz OLD_FILES+=usr/share/man/man3/hx509_misc.3.gz OLD_FILES+=usr/share/man/man3/hx509_name.3.gz OLD_FILES+=usr/share/man/man3/hx509_name_binary.3.gz OLD_FILES+=usr/share/man/man3/hx509_name_cmp.3.gz OLD_FILES+=usr/share/man/man3/hx509_name_copy.3.gz OLD_FILES+=usr/share/man/man3/hx509_name_expand.3.gz OLD_FILES+=usr/share/man/man3/hx509_name_free.3.gz OLD_FILES+=usr/share/man/man3/hx509_name_is_null_p.3.gz OLD_FILES+=usr/share/man/man3/hx509_name_to_Name.3.gz OLD_FILES+=usr/share/man/man3/hx509_name_to_string.3.gz OLD_FILES+=usr/share/man/man3/hx509_ocsp_request.3.gz OLD_FILES+=usr/share/man/man3/hx509_ocsp_verify.3.gz OLD_FILES+=usr/share/man/man3/hx509_oid_print.3.gz OLD_FILES+=usr/share/man/man3/hx509_oid_sprint.3.gz OLD_FILES+=usr/share/man/man3/hx509_parse_name.3.gz OLD_FILES+=usr/share/man/man3/hx509_peer.3.gz OLD_FILES+=usr/share/man/man3/hx509_peer_info_add_cms_alg.3.gz OLD_FILES+=usr/share/man/man3/hx509_peer_info_alloc.3.gz OLD_FILES+=usr/share/man/man3/hx509_peer_info_free.3.gz OLD_FILES+=usr/share/man/man3/hx509_peer_info_set_cert.3.gz OLD_FILES+=usr/share/man/man3/hx509_peer_info_set_cms_algs.3.gz OLD_FILES+=usr/share/man/man3/hx509_print.3.gz OLD_FILES+=usr/share/man/man3/hx509_print_cert.3.gz OLD_FILES+=usr/share/man/man3/hx509_print_stdout.3.gz OLD_FILES+=usr/share/man/man3/hx509_query.3.gz OLD_FILES+=usr/share/man/man3/hx509_query_alloc.3.gz OLD_FILES+=usr/share/man/man3/hx509_query_free.3.gz OLD_FILES+=usr/share/man/man3/hx509_query_match_cmp_func.3.gz OLD_FILES+=usr/share/man/man3/hx509_query_match_eku.3.gz OLD_FILES+=usr/share/man/man3/hx509_query_match_friendly_name.3.gz OLD_FILES+=usr/share/man/man3/hx509_query_match_issuer_serial.3.gz OLD_FILES+=usr/share/man/man3/hx509_query_match_option.3.gz OLD_FILES+=usr/share/man/man3/hx509_query_statistic_file.3.gz OLD_FILES+=usr/share/man/man3/hx509_query_unparse_stats.3.gz OLD_FILES+=usr/share/man/man3/hx509_revoke.3.gz OLD_FILES+=usr/share/man/man3/hx509_revoke_add_crl.3.gz OLD_FILES+=usr/share/man/man3/hx509_revoke_add_ocsp.3.gz OLD_FILES+=usr/share/man/man3/hx509_revoke_free.3.gz OLD_FILES+=usr/share/man/man3/hx509_revoke_init.3.gz OLD_FILES+=usr/share/man/man3/hx509_revoke_ocsp_print.3.gz OLD_FILES+=usr/share/man/man3/hx509_revoke_verify.3.gz OLD_FILES+=usr/share/man/man3/hx509_set_error_string.3.gz OLD_FILES+=usr/share/man/man3/hx509_set_error_stringv.3.gz OLD_FILES+=usr/share/man/man3/hx509_unparse_der_name.3.gz OLD_FILES+=usr/share/man/man3/hx509_validate_cert.3.gz OLD_FILES+=usr/share/man/man3/hx509_validate_ctx_add_flags.3.gz OLD_FILES+=usr/share/man/man3/hx509_validate_ctx_free.3.gz OLD_FILES+=usr/share/man/man3/hx509_validate_ctx_init.3.gz OLD_FILES+=usr/share/man/man3/hx509_validate_ctx_set_print.3.gz OLD_FILES+=usr/share/man/man3/hx509_verify.3.gz OLD_FILES+=usr/share/man/man3/hx509_verify_attach_anchors.3.gz OLD_FILES+=usr/share/man/man3/hx509_verify_attach_revoke.3.gz OLD_FILES+=usr/share/man/man3/hx509_verify_ctx_f_allow_default_trustanchors.3.gz OLD_FILES+=usr/share/man/man3/hx509_verify_destroy_ctx.3.gz OLD_FILES+=usr/share/man/man3/hx509_verify_hostname.3.gz OLD_FILES+=usr/share/man/man3/hx509_verify_init_ctx.3.gz OLD_FILES+=usr/share/man/man3/hx509_verify_path.3.gz OLD_FILES+=usr/share/man/man3/hx509_verify_set_max_depth.3.gz OLD_FILES+=usr/share/man/man3/hx509_verify_set_proxy_certificate.3.gz OLD_FILES+=usr/share/man/man3/hx509_verify_set_strict_rfc3280_verification.3.gz OLD_FILES+=usr/share/man/man3/hx509_verify_set_time.3.gz OLD_FILES+=usr/share/man/man3/hx509_verify_signature.3.gz OLD_FILES+=usr/share/man/man3/hx509_xfree.3.gz OLD_FILES+=usr/share/man/man3/k_afs_cell_of_file.3.gz OLD_FILES+=usr/share/man/man3/k_hasafs.3.gz OLD_FILES+=usr/share/man/man3/k_pioctl.3.gz OLD_FILES+=usr/share/man/man3/k_setpag.3.gz OLD_FILES+=usr/share/man/man3/k_unlog.3.gz OLD_FILES+=usr/share/man/man3/kadm5_pwcheck.3.gz OLD_FILES+=usr/share/man/man3/kafs.3.gz OLD_FILES+=usr/share/man/man3/kafs5.3.gz OLD_FILES+=usr/share/man/man3/kafs_set_verbose.3.gz OLD_FILES+=usr/share/man/man3/kafs_settoken.3.gz OLD_FILES+=usr/share/man/man3/kafs_settoken5.3.gz OLD_FILES+=usr/share/man/man3/kafs_settoken_rxkad.3.gz OLD_FILES+=usr/share/man/man3/krb5.3.gz OLD_FILES+=usr/share/man/man3/krb524_convert_creds_kdc.3.gz OLD_FILES+=usr/share/man/man3/krb524_convert_creds_kdc_ccache.3.gz OLD_FILES+=usr/share/man/man3/krb5_425_conv_principal.3.gz OLD_FILES+=usr/share/man/man3/krb5_425_conv_principal_ext.3.gz OLD_FILES+=usr/share/man/man3/krb5_524_conv_principal.3.gz OLD_FILES+=usr/share/man/man3/krb5_acc_ops.3.gz OLD_FILES+=usr/share/man/man3/krb5_acl_match_file.3.gz OLD_FILES+=usr/share/man/man3/krb5_acl_match_string.3.gz OLD_FILES+=usr/share/man/man3/krb5_add_et_list.3.gz OLD_FILES+=usr/share/man/man3/krb5_add_extra_addresses.3.gz OLD_FILES+=usr/share/man/man3/krb5_add_ignore_addresses.3.gz OLD_FILES+=usr/share/man/man3/krb5_addlog_dest.3.gz OLD_FILES+=usr/share/man/man3/krb5_addlog_func.3.gz OLD_FILES+=usr/share/man/man3/krb5_addr2sockaddr.3.gz OLD_FILES+=usr/share/man/man3/krb5_address.3.gz OLD_FILES+=usr/share/man/man3/krb5_address_compare.3.gz OLD_FILES+=usr/share/man/man3/krb5_address_order.3.gz OLD_FILES+=usr/share/man/man3/krb5_address_prefixlen_boundary.3.gz OLD_FILES+=usr/share/man/man3/krb5_address_search.3.gz OLD_FILES+=usr/share/man/man3/krb5_afslog.3.gz OLD_FILES+=usr/share/man/man3/krb5_afslog_uid.3.gz OLD_FILES+=usr/share/man/man3/krb5_allow_weak_crypto.3.gz OLD_FILES+=usr/share/man/man3/krb5_aname_to_localname.3.gz OLD_FILES+=usr/share/man/man3/krb5_anyaddr.3.gz OLD_FILES+=usr/share/man/man3/krb5_appdefault.3.gz OLD_FILES+=usr/share/man/man3/krb5_appdefault_boolean.3.gz OLD_FILES+=usr/share/man/man3/krb5_appdefault_string.3.gz OLD_FILES+=usr/share/man/man3/krb5_appdefault_time.3.gz OLD_FILES+=usr/share/man/man3/krb5_append_addresses.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_free.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_genaddrs.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_getaddrs.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_getflags.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_getkey.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_getlocalsubkey.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_getrcache.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_getremotesubkey.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_getuserkey.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_init.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_initivector.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_setaddrs.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_setaddrs_from_fd.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_setflags.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_setivector.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_setkey.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_setlocalsubkey.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_setrcache.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_setremotesubkey.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_con_setuserkey.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_context.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_getauthenticator.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_getcksumtype.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_getkeytype.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_getlocalseqnumber.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_getremoteseqnumber.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_setcksumtype.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_setkeytype.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_setlocalseqnumber.3.gz OLD_FILES+=usr/share/man/man3/krb5_auth_setremoteseqnumber.3.gz OLD_FILES+=usr/share/man/man3/krb5_build_principal.3.gz OLD_FILES+=usr/share/man/man3/krb5_build_principal_ext.3.gz OLD_FILES+=usr/share/man/man3/krb5_build_principal_va.3.gz OLD_FILES+=usr/share/man/man3/krb5_build_principal_va_ext.3.gz OLD_FILES+=usr/share/man/man3/krb5_c_enctype_compare.3.gz OLD_FILES+=usr/share/man/man3/krb5_c_make_checksum.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_cache_end_seq_get.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_cache_get_first.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_cache_match.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_cache_next.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_clear_mcred.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_close.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_copy_cache.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_copy_creds.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_copy_match_f.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_default.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_default_name.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_destroy.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_end_seq_get.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_gen_new.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_get_config.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_get_flags.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_get_friendly_name.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_get_full_name.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_get_kdc_offset.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_get_lifetime.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_get_name.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_get_ops.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_get_prefix_ops.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_get_principal.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_get_type.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_get_version.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_initialize.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_last_change_time.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_move.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_new_unique.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_next_cred.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_register.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_remove_cred.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_resolve.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_retrieve_cred.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_set_config.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_set_default_name.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_set_flags.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_set_friendly_name.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_set_kdc_offset.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_start_seq_get.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_store_cred.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_support_switch.3.gz OLD_FILES+=usr/share/man/man3/krb5_cc_switch.3.gz OLD_FILES+=usr/share/man/man3/krb5_ccache.3.gz OLD_FILES+=usr/share/man/man3/krb5_ccache_intro.3.gz OLD_FILES+=usr/share/man/man3/krb5_cccol_cursor_free.3.gz OLD_FILES+=usr/share/man/man3/krb5_cccol_cursor_new.3.gz OLD_FILES+=usr/share/man/man3/krb5_cccol_cursor_next.3.gz OLD_FILES+=usr/share/man/man3/krb5_cccol_last_change_time.3.gz OLD_FILES+=usr/share/man/man3/krb5_change_password.3.gz OLD_FILES+=usr/share/man/man3/krb5_check_transited.3.gz OLD_FILES+=usr/share/man/man3/krb5_checksum_is_collision_proof.3.gz OLD_FILES+=usr/share/man/man3/krb5_checksum_is_keyed.3.gz OLD_FILES+=usr/share/man/man3/krb5_checksumsize.3.gz OLD_FILES+=usr/share/man/man3/krb5_cksumtype_to_enctype.3.gz OLD_FILES+=usr/share/man/man3/krb5_clear_error_message.3.gz OLD_FILES+=usr/share/man/man3/krb5_clear_error_string.3.gz OLD_FILES+=usr/share/man/man3/krb5_closelog.3.gz OLD_FILES+=usr/share/man/man3/krb5_compare_creds.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_file_free.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_free_strings.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_get_bool.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_get_bool_default.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_get_list.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_get_string.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_get_string_default.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_get_strings.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_get_time.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_get_time_default.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_parse_file_multi.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_parse_string_multi.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_vget_bool.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_vget_bool_default.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_vget_list.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_vget_string.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_vget_string_default.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_vget_strings.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_vget_time.3.gz OLD_FILES+=usr/share/man/man3/krb5_config_vget_time_default.3.gz OLD_FILES+=usr/share/man/man3/krb5_copy_address.3.gz OLD_FILES+=usr/share/man/man3/krb5_copy_addresses.3.gz OLD_FILES+=usr/share/man/man3/krb5_copy_context.3.gz OLD_FILES+=usr/share/man/man3/krb5_copy_creds.3.gz OLD_FILES+=usr/share/man/man3/krb5_copy_creds_contents.3.gz OLD_FILES+=usr/share/man/man3/krb5_copy_data.3.gz OLD_FILES+=usr/share/man/man3/krb5_copy_host_realm.3.gz OLD_FILES+=usr/share/man/man3/krb5_copy_keyblock.3.gz OLD_FILES+=usr/share/man/man3/krb5_copy_keyblock_contents.3.gz OLD_FILES+=usr/share/man/man3/krb5_copy_principal.3.gz OLD_FILES+=usr/share/man/man3/krb5_copy_ticket.3.gz OLD_FILES+=usr/share/man/man3/krb5_create_checksum.3.gz OLD_FILES+=usr/share/man/man3/krb5_create_checksum_iov.3.gz OLD_FILES+=usr/share/man/man3/krb5_credential.3.gz OLD_FILES+=usr/share/man/man3/krb5_creds.3.gz OLD_FILES+=usr/share/man/man3/krb5_creds_get_ticket_flags.3.gz OLD_FILES+=usr/share/man/man3/krb5_crypto.3.gz OLD_FILES+=usr/share/man/man3/krb5_crypto_destroy.3.gz OLD_FILES+=usr/share/man/man3/krb5_crypto_fx_cf2.3.gz OLD_FILES+=usr/share/man/man3/krb5_crypto_getblocksize.3.gz OLD_FILES+=usr/share/man/man3/krb5_crypto_getconfoundersize.3.gz OLD_FILES+=usr/share/man/man3/krb5_crypto_getenctype.3.gz OLD_FILES+=usr/share/man/man3/krb5_crypto_getpadsize.3.gz OLD_FILES+=usr/share/man/man3/krb5_crypto_init.3.gz OLD_FILES+=usr/share/man/man3/krb5_crypto_iov.3.gz OLD_FILES+=usr/share/man/man3/krb5_data_alloc.3.gz OLD_FILES+=usr/share/man/man3/krb5_data_cmp.3.gz OLD_FILES+=usr/share/man/man3/krb5_data_copy.3.gz OLD_FILES+=usr/share/man/man3/krb5_data_ct_cmp.3.gz OLD_FILES+=usr/share/man/man3/krb5_data_free.3.gz OLD_FILES+=usr/share/man/man3/krb5_data_realloc.3.gz OLD_FILES+=usr/share/man/man3/krb5_data_zero.3.gz OLD_FILES+=usr/share/man/man3/krb5_decrypt.3.gz OLD_FILES+=usr/share/man/man3/krb5_decrypt_EncryptedData.3.gz OLD_FILES+=usr/share/man/man3/krb5_decrypt_iov_ivec.3.gz OLD_FILES+=usr/share/man/man3/krb5_deprecated.3.gz OLD_FILES+=usr/share/man/man3/krb5_digest.3.gz OLD_FILES+=usr/share/man/man3/krb5_digest_probe.3.gz OLD_FILES+=usr/share/man/man3/krb5_eai_to_heim_errno.3.gz OLD_FILES+=usr/share/man/man3/krb5_encrypt.3.gz OLD_FILES+=usr/share/man/man3/krb5_encrypt_EncryptedData.3.gz OLD_FILES+=usr/share/man/man3/krb5_encrypt_iov_ivec.3.gz OLD_FILES+=usr/share/man/man3/krb5_enctype_disable.3.gz OLD_FILES+=usr/share/man/man3/krb5_enctype_enable.3.gz OLD_FILES+=usr/share/man/man3/krb5_enctype_valid.3.gz OLD_FILES+=usr/share/man/man3/krb5_enctypes_compatible_keys.3.gz OLD_FILES+=usr/share/man/man3/krb5_error.3.gz OLD_FILES+=usr/share/man/man3/krb5_expand_hostname.3.gz OLD_FILES+=usr/share/man/man3/krb5_expand_hostname_realms.3.gz OLD_FILES+=usr/share/man/man3/krb5_fcc_ops.3.gz OLD_FILES+=usr/share/man/man3/krb5_fileformats.3.gz OLD_FILES+=usr/share/man/man3/krb5_find_padata.3.gz OLD_FILES+=usr/share/man/man3/krb5_free_address.3.gz OLD_FILES+=usr/share/man/man3/krb5_free_addresses.3.gz OLD_FILES+=usr/share/man/man3/krb5_free_config_files.3.gz OLD_FILES+=usr/share/man/man3/krb5_free_context.3.gz OLD_FILES+=usr/share/man/man3/krb5_free_cred_contents.3.gz OLD_FILES+=usr/share/man/man3/krb5_free_creds.3.gz OLD_FILES+=usr/share/man/man3/krb5_free_creds_contents.3.gz OLD_FILES+=usr/share/man/man3/krb5_free_data.3.gz OLD_FILES+=usr/share/man/man3/krb5_free_data_contents.3.gz OLD_FILES+=usr/share/man/man3/krb5_free_error_string.3.gz OLD_FILES+=usr/share/man/man3/krb5_free_host_realm.3.gz OLD_FILES+=usr/share/man/man3/krb5_free_keyblock.3.gz OLD_FILES+=usr/share/man/man3/krb5_free_keyblock_contents.3.gz OLD_FILES+=usr/share/man/man3/krb5_free_krbhst.3.gz OLD_FILES+=usr/share/man/man3/krb5_free_principal.3.gz OLD_FILES+=usr/share/man/man3/krb5_free_ticket.3.gz OLD_FILES+=usr/share/man/man3/krb5_free_unparsed_name.3.gz OLD_FILES+=usr/share/man/man3/krb5_fwd_tgt_creds.3.gz OLD_FILES+=usr/share/man/man3/krb5_generate_random_block.3.gz OLD_FILES+=usr/share/man/man3/krb5_generate_subkey.3.gz OLD_FILES+=usr/share/man/man3/krb5_generate_subkey_extended.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_all_client_addrs.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_all_server_addrs.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_cred_from_kdc.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_cred_from_kdc_opt.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_credentials.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_creds.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_default_config_files.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_default_in_tkt_etypes.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_default_principal.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_default_realm.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_default_realms.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_dns_canonicalize_hostname.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_extra_addresses.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_fcache_version.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_forwarded_creds.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_host_realm.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_ignore_addresses.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_in_cred.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_in_tkt_with_keytab.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_in_tkt_with_password.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_in_tkt_with_skey.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_init_creds.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_init_creds_keyblock.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_init_creds_keytab.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_init_creds_opt_alloc.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_init_creds_opt_free.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_init_creds_opt_get_error.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_init_creds_opt_init.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_init_creds_password.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_kdc_sec_offset.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_krb524hst.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_krb_admin_hst.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_krb_changepw_hst.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_krbhst.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_max_time_skew.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_use_admin_kdc.3.gz OLD_FILES+=usr/share/man/man3/krb5_get_validated_creds.3.gz OLD_FILES+=usr/share/man/man3/krb5_getportbyname.3.gz OLD_FILES+=usr/share/man/man3/krb5_h_addr2addr.3.gz OLD_FILES+=usr/share/man/man3/krb5_h_addr2sockaddr.3.gz OLD_FILES+=usr/share/man/man3/krb5_h_errno_to_heim_errno.3.gz OLD_FILES+=usr/share/man/man3/krb5_init_context.3.gz OLD_FILES+=usr/share/man/man3/krb5_init_creds_free.3.gz OLD_FILES+=usr/share/man/man3/krb5_init_creds_get.3.gz OLD_FILES+=usr/share/man/man3/krb5_init_creds_get_error.3.gz OLD_FILES+=usr/share/man/man3/krb5_init_creds_init.3.gz OLD_FILES+=usr/share/man/man3/krb5_init_creds_intro.3.gz OLD_FILES+=usr/share/man/man3/krb5_init_creds_set_keytab.3.gz OLD_FILES+=usr/share/man/man3/krb5_init_creds_set_password.3.gz OLD_FILES+=usr/share/man/man3/krb5_init_creds_set_service.3.gz OLD_FILES+=usr/share/man/man3/krb5_init_creds_step.3.gz OLD_FILES+=usr/share/man/man3/krb5_init_ets.3.gz OLD_FILES+=usr/share/man/man3/krb5_initlog.3.gz OLD_FILES+=usr/share/man/man3/krb5_introduction.3.gz OLD_FILES+=usr/share/man/man3/krb5_is_config_principal.3.gz OLD_FILES+=usr/share/man/man3/krb5_is_thread_safe.3.gz OLD_FILES+=usr/share/man/man3/krb5_kerberos_enctypes.3.gz OLD_FILES+=usr/share/man/man3/krb5_keyblock_get_enctype.3.gz OLD_FILES+=usr/share/man/man3/krb5_keyblock_init.3.gz OLD_FILES+=usr/share/man/man3/krb5_keyblock_zero.3.gz OLD_FILES+=usr/share/man/man3/krb5_keytab.3.gz OLD_FILES+=usr/share/man/man3/krb5_keytab_intro.3.gz OLD_FILES+=usr/share/man/man3/krb5_keytab_key_proc.3.gz OLD_FILES+=usr/share/man/man3/krb5_keytype_to_enctypes.3.gz OLD_FILES+=usr/share/man/man3/krb5_keytype_to_enctypes_default.3.gz OLD_FILES+=usr/share/man/man3/krb5_keytype_to_string.3.gz OLD_FILES+=usr/share/man/man3/krb5_krbhst_format_string.3.gz OLD_FILES+=usr/share/man/man3/krb5_krbhst_free.3.gz OLD_FILES+=usr/share/man/man3/krb5_krbhst_get_addrinfo.3.gz OLD_FILES+=usr/share/man/man3/krb5_krbhst_init.3.gz OLD_FILES+=usr/share/man/man3/krb5_krbhst_next.3.gz OLD_FILES+=usr/share/man/man3/krb5_krbhst_next_as_string.3.gz OLD_FILES+=usr/share/man/man3/krb5_krbhst_reset.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_add_entry.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_close.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_compare.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_copy_entry_contents.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_default.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_default_modify_name.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_default_name.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_destroy.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_end_seq_get.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_free_entry.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_get_entry.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_get_full_name.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_get_name.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_get_type.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_have_content.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_next_entry.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_read_service_key.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_register.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_remove_entry.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_resolve.3.gz OLD_FILES+=usr/share/man/man3/krb5_kt_start_seq_get.3.gz OLD_FILES+=usr/share/man/man3/krb5_kuserok.3.gz OLD_FILES+=usr/share/man/man3/krb5_log.3.gz OLD_FILES+=usr/share/man/man3/krb5_log_msg.3.gz OLD_FILES+=usr/share/man/man3/krb5_make_addrport.3.gz OLD_FILES+=usr/share/man/man3/krb5_make_principal.3.gz OLD_FILES+=usr/share/man/man3/krb5_max_sockaddr_size.3.gz OLD_FILES+=usr/share/man/man3/krb5_mcc_ops.3.gz OLD_FILES+=usr/share/man/man3/krb5_mk_req.3.gz OLD_FILES+=usr/share/man/man3/krb5_mk_safe.3.gz OLD_FILES+=usr/share/man/man3/krb5_openlog.3.gz OLD_FILES+=usr/share/man/man3/krb5_pac.3.gz OLD_FILES+=usr/share/man/man3/krb5_pac_get_buffer.3.gz OLD_FILES+=usr/share/man/man3/krb5_pac_verify.3.gz OLD_FILES+=usr/share/man/man3/krb5_parse_address.3.gz OLD_FILES+=usr/share/man/man3/krb5_parse_name.3.gz OLD_FILES+=usr/share/man/man3/krb5_parse_name_flags.3.gz OLD_FILES+=usr/share/man/man3/krb5_parse_nametype.3.gz OLD_FILES+=usr/share/man/man3/krb5_password_key_proc.3.gz OLD_FILES+=usr/share/man/man3/krb5_plugin_register.3.gz OLD_FILES+=usr/share/man/man3/krb5_prepend_config_files_default.3.gz OLD_FILES+=usr/share/man/man3/krb5_princ_realm.3.gz OLD_FILES+=usr/share/man/man3/krb5_princ_set_realm.3.gz OLD_FILES+=usr/share/man/man3/krb5_principal.3.gz OLD_FILES+=usr/share/man/man3/krb5_principal_compare.3.gz OLD_FILES+=usr/share/man/man3/krb5_principal_compare_any_realm.3.gz OLD_FILES+=usr/share/man/man3/krb5_principal_get_comp_string.3.gz OLD_FILES+=usr/share/man/man3/krb5_principal_get_num_comp.3.gz OLD_FILES+=usr/share/man/man3/krb5_principal_get_realm.3.gz OLD_FILES+=usr/share/man/man3/krb5_principal_get_type.3.gz OLD_FILES+=usr/share/man/man3/krb5_principal_intro.3.gz OLD_FILES+=usr/share/man/man3/krb5_principal_is_krbtgt.3.gz OLD_FILES+=usr/share/man/man3/krb5_principal_match.3.gz OLD_FILES+=usr/share/man/man3/krb5_principal_set_realm.3.gz OLD_FILES+=usr/share/man/man3/krb5_principal_set_type.3.gz OLD_FILES+=usr/share/man/man3/krb5_print_address.3.gz OLD_FILES+=usr/share/man/man3/krb5_random_to_key.3.gz OLD_FILES+=usr/share/man/man3/krb5_rcache.3.gz OLD_FILES+=usr/share/man/man3/krb5_rd_error.3.gz OLD_FILES+=usr/share/man/man3/krb5_rd_req_ctx.3.gz OLD_FILES+=usr/share/man/man3/krb5_rd_req_in_ctx_alloc.3.gz OLD_FILES+=usr/share/man/man3/krb5_rd_req_in_set_keytab.3.gz OLD_FILES+=usr/share/man/man3/krb5_rd_req_in_set_pac_check.3.gz OLD_FILES+=usr/share/man/man3/krb5_rd_req_out_ctx_free.3.gz OLD_FILES+=usr/share/man/man3/krb5_rd_req_out_get_server.3.gz OLD_FILES+=usr/share/man/man3/krb5_rd_safe.3.gz OLD_FILES+=usr/share/man/man3/krb5_realm_compare.3.gz OLD_FILES+=usr/share/man/man3/krb5_ret_address.3.gz OLD_FILES+=usr/share/man/man3/krb5_ret_addrs.3.gz OLD_FILES+=usr/share/man/man3/krb5_ret_authdata.3.gz OLD_FILES+=usr/share/man/man3/krb5_ret_creds.3.gz OLD_FILES+=usr/share/man/man3/krb5_ret_creds_tag.3.gz OLD_FILES+=usr/share/man/man3/krb5_ret_data.3.gz OLD_FILES+=usr/share/man/man3/krb5_ret_int16.3.gz OLD_FILES+=usr/share/man/man3/krb5_ret_int32.3.gz OLD_FILES+=usr/share/man/man3/krb5_ret_int8.3.gz OLD_FILES+=usr/share/man/man3/krb5_ret_keyblock.3.gz OLD_FILES+=usr/share/man/man3/krb5_ret_principal.3.gz OLD_FILES+=usr/share/man/man3/krb5_ret_string.3.gz OLD_FILES+=usr/share/man/man3/krb5_ret_stringz.3.gz OLD_FILES+=usr/share/man/man3/krb5_ret_times.3.gz OLD_FILES+=usr/share/man/man3/krb5_ret_uint16.3.gz OLD_FILES+=usr/share/man/man3/krb5_ret_uint32.3.gz OLD_FILES+=usr/share/man/man3/krb5_ret_uint8.3.gz OLD_FILES+=usr/share/man/man3/krb5_set_config_files.3.gz OLD_FILES+=usr/share/man/man3/krb5_set_default_in_tkt_etypes.3.gz OLD_FILES+=usr/share/man/man3/krb5_set_default_realm.3.gz OLD_FILES+=usr/share/man/man3/krb5_set_dns_canonicalize_hostname.3.gz OLD_FILES+=usr/share/man/man3/krb5_set_error_message.3.gz OLD_FILES+=usr/share/man/man3/krb5_set_error_string.3.gz OLD_FILES+=usr/share/man/man3/krb5_set_extra_addresses.3.gz OLD_FILES+=usr/share/man/man3/krb5_set_fcache_version.3.gz OLD_FILES+=usr/share/man/man3/krb5_set_home_dir_access.3.gz OLD_FILES+=usr/share/man/man3/krb5_set_ignore_addresses.3.gz OLD_FILES+=usr/share/man/man3/krb5_set_kdc_sec_offset.3.gz OLD_FILES+=usr/share/man/man3/krb5_set_max_time_skew.3.gz OLD_FILES+=usr/share/man/man3/krb5_set_password.3.gz OLD_FILES+=usr/share/man/man3/krb5_set_real_time.3.gz OLD_FILES+=usr/share/man/man3/krb5_set_use_admin_kdc.3.gz OLD_FILES+=usr/share/man/man3/krb5_sname_to_principal.3.gz OLD_FILES+=usr/share/man/man3/krb5_sock_to_principal.3.gz OLD_FILES+=usr/share/man/man3/krb5_sockaddr2address.3.gz OLD_FILES+=usr/share/man/man3/krb5_sockaddr2port.3.gz OLD_FILES+=usr/share/man/man3/krb5_sockaddr_uninteresting.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage_clear_flags.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage_emem.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage_free.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage_from_data.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage_from_fd.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage_from_mem.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage_from_readonly_mem.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage_get_byteorder.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage_get_eof_code.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage_is_flags.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage_read.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage_seek.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage_set_byteorder.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage_set_eof_code.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage_set_flags.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage_set_max_alloc.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage_to_data.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage_truncate.3.gz OLD_FILES+=usr/share/man/man3/krb5_storage_write.3.gz OLD_FILES+=usr/share/man/man3/krb5_store_address.3.gz OLD_FILES+=usr/share/man/man3/krb5_store_addrs.3.gz OLD_FILES+=usr/share/man/man3/krb5_store_authdata.3.gz OLD_FILES+=usr/share/man/man3/krb5_store_creds.3.gz OLD_FILES+=usr/share/man/man3/krb5_store_creds_tag.3.gz OLD_FILES+=usr/share/man/man3/krb5_store_data.3.gz OLD_FILES+=usr/share/man/man3/krb5_store_int16.3.gz OLD_FILES+=usr/share/man/man3/krb5_store_int32.3.gz OLD_FILES+=usr/share/man/man3/krb5_store_int8.3.gz OLD_FILES+=usr/share/man/man3/krb5_store_keyblock.3.gz OLD_FILES+=usr/share/man/man3/krb5_store_principal.3.gz OLD_FILES+=usr/share/man/man3/krb5_store_string.3.gz OLD_FILES+=usr/share/man/man3/krb5_store_stringz.3.gz OLD_FILES+=usr/share/man/man3/krb5_store_times.3.gz OLD_FILES+=usr/share/man/man3/krb5_store_uint16.3.gz OLD_FILES+=usr/share/man/man3/krb5_store_uint32.3.gz OLD_FILES+=usr/share/man/man3/krb5_store_uint8.3.gz OLD_FILES+=usr/share/man/man3/krb5_string_to_key.3.gz OLD_FILES+=usr/share/man/man3/krb5_string_to_keytype.3.gz OLD_FILES+=usr/share/man/man3/krb5_support.3.gz OLD_FILES+=usr/share/man/man3/krb5_ticket.3.gz OLD_FILES+=usr/share/man/man3/krb5_ticket_get_authorization_data_type.3.gz OLD_FILES+=usr/share/man/man3/krb5_ticket_get_client.3.gz OLD_FILES+=usr/share/man/man3/krb5_ticket_get_endtime.3.gz OLD_FILES+=usr/share/man/man3/krb5_ticket_get_flags.3.gz OLD_FILES+=usr/share/man/man3/krb5_ticket_get_server.3.gz OLD_FILES+=usr/share/man/man3/krb5_timeofday.3.gz OLD_FILES+=usr/share/man/man3/krb5_unparse_name.3.gz OLD_FILES+=usr/share/man/man3/krb5_unparse_name_fixed.3.gz OLD_FILES+=usr/share/man/man3/krb5_unparse_name_fixed_flags.3.gz OLD_FILES+=usr/share/man/man3/krb5_unparse_name_fixed_short.3.gz OLD_FILES+=usr/share/man/man3/krb5_unparse_name_flags.3.gz OLD_FILES+=usr/share/man/man3/krb5_unparse_name_short.3.gz OLD_FILES+=usr/share/man/man3/krb5_us_timeofday.3.gz OLD_FILES+=usr/share/man/man3/krb5_v4compat.3.gz OLD_FILES+=usr/share/man/man3/krb5_verify_checksum.3.gz OLD_FILES+=usr/share/man/man3/krb5_verify_checksum_iov.3.gz OLD_FILES+=usr/share/man/man3/krb5_verify_init_creds.3.gz OLD_FILES+=usr/share/man/man3/krb5_verify_opt_init.3.gz OLD_FILES+=usr/share/man/man3/krb5_verify_opt_set_flags.3.gz OLD_FILES+=usr/share/man/man3/krb5_verify_opt_set_keytab.3.gz OLD_FILES+=usr/share/man/man3/krb5_verify_opt_set_secure.3.gz OLD_FILES+=usr/share/man/man3/krb5_verify_opt_set_service.3.gz OLD_FILES+=usr/share/man/man3/krb5_verify_user.3.gz OLD_FILES+=usr/share/man/man3/krb5_verify_user_lrealm.3.gz OLD_FILES+=usr/share/man/man3/krb5_verify_user_opt.3.gz OLD_FILES+=usr/share/man/man3/krb5_vlog.3.gz OLD_FILES+=usr/share/man/man3/krb5_vlog_msg.3.gz OLD_FILES+=usr/share/man/man3/krb5_vset_error_string.3.gz OLD_FILES+=usr/share/man/man3/krb5_vwarn.3.gz OLD_FILES+=usr/share/man/man3/krb_afslog.3.gz OLD_FILES+=usr/share/man/man3/krb_afslog_uid.3.gz OLD_FILES+=usr/share/man/man3/ntlm_buf.3.gz OLD_FILES+=usr/share/man/man3/ntlm_core.3.gz OLD_FILES+=usr/share/man/man3/ntlm_type1.3.gz OLD_FILES+=usr/share/man/man3/ntlm_type2.3.gz OLD_FILES+=usr/share/man/man3/ntlm_type3.3.gz OLD_FILES+=usr/share/man/man5/krb5.conf.5.gz OLD_FILES+=usr/share/man/man8/hprop.8.gz OLD_FILES+=usr/share/man/man8/hpropd.8.gz OLD_FILES+=usr/share/man/man8/iprop-log.8.gz OLD_FILES+=usr/share/man/man8/iprop.8.gz OLD_FILES+=usr/share/man/man8/kadmin.8.gz OLD_FILES+=usr/share/man/man8/kadmind.8.gz OLD_FILES+=usr/share/man/man8/kcm.8.gz OLD_FILES+=usr/share/man/man8/kdc.8.gz OLD_FILES+=usr/share/man/man8/kdigest.8.gz OLD_FILES+=usr/share/man/man8/kerberos.8.gz OLD_FILES+=usr/share/man/man8/kimpersonate.8.gz OLD_FILES+=usr/share/man/man8/kpasswdd.8.gz OLD_FILES+=usr/share/man/man8/kstash.8.gz OLD_FILES+=usr/share/man/man8/ktutil.8.gz OLD_FILES+=usr/share/man/man8/pam_krb5.8.gz OLD_FILES+=usr/share/man/man8/pam_ksu.8.gz OLD_FILES+=usr/share/man/man8/string2key.8.gz OLD_FILES+=usr/share/man/man8/verify_krb5_conf.8.gz .endif .if ${MK_KERBEROS_SUPPORT} == no OLD_FILES+=usr/bin/compile_et OLD_FILES+=usr/include/com_err.h OLD_FILES+=usr/include/com_right.h OLD_FILES+=usr/lib/libcom_err.a OLD_FILES+=usr/lib/libcom_err.so OLD_LIBS+=usr/lib/libcom_err.so.5 OLD_FILES+=usr/lib/libcom_err_p.a OLD_FILES+=usr/lib32/libcom_err.a OLD_FILES+=usr/lib32/libcom_err.so OLD_LIBS+=usr/lib32/libcom_err.so.5 OLD_FILES+=usr/lib32/libcom_err_p.a OLD_FILES+=usr/share/man/man1/compile_et.1.gz OLD_FILES+=usr/share/man/man3/com_err.3.gz .endif .if ${MK_LDNS} == no OLD_FILES+=usr/lib/private/libldns.a OLD_FILES+=usr/lib/private/libldns.so OLD_LIBS+=usr/lib/private/libldns.so.5 OLD_FILES+=usr/lib/private/libldns_p.a .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" OLD_FILES+=usr/lib32/private/libldns.a OLD_FILES+=usr/lib32/private/libldns.so OLD_LIBS+=usr/lib32/private/libldns.so.5 OLD_FILES+=usr/lib32/private/libldns_p.a .endif .endif .if ${MK_LDNS_UTILS} == no OLD_FILES+=usr/bin/drill OLD_FILES+=usr/share/man/man1/drill.1.gz OLD_FILES+=usr/bin/host OLD_FILES+=usr/share/man/man1/host.1.gz .endif .if ${MK_LEGACY_CONSOLE} == no OLD_FILES+=usr/sbin/kbdcontrol OLD_FILES+=usr/sbin/kbdmap OLD_FILES+=usr/sbin/moused OLD_FILES+=usr/sbin/vidcontrol OLD_FILES+=usr/sbin/vidfont OLD_FILES+=usr/share/man/man1/kbdcontrol.1.gz OLD_FILES+=usr/share/man/man1/kbdmap.1.gz OLD_FILES+=usr/share/man/man1/vidcontrol.1.gz OLD_FILES+=usr/share/man/man1/vidfont.1.gz OLD_FILES+=usr/share/man/man5/kbdmap.5.gz OLD_FILES+=usr/share/man/man5/keymap.5.gz OLD_FILES+=usr/share/man/man8/moused.8.gz .endif .if ${MK_LIB32} == no OLD_FILES+=etc/mtree/BSD.lib32.dist OLD_FILES+=libexec/ld-elf32.so.1 . if exists(${DESTDIR}/usr/lib32) LIB32_DIRS!=find ${DESTDIR}/usr/lib32 -type d \ | sed -e 's,^${DESTDIR}/,,'; echo LIB32_FILES!=find ${DESTDIR}/usr/lib32 \! -type d \ \! -name "lib*.so*" | sed -e 's,^${DESTDIR}/,,'; echo LIB32_LIBS!=find ${DESTDIR}/usr/lib32 \! -type d \ -name "lib*.so*" | sed -e 's,^${DESTDIR}/,,'; echo OLD_DIRS+=${LIB32_DIRS} OLD_FILES+=${LIB32_FILES} OLD_LIBS+=${LIB32_LIBS} . endif . if ${MK_DEBUG_FILES} == no . if exists(${DESTDIR}/usr/lib/debug/usr/lib32) DEBUG_LIB32_DIRS!=find ${DESTDIR}/usr/lib/debug/usr/lib32 -type d \ | sed -e 's,^${DESTDIR}/,,'; echo DEBUG_LIB32_FILES!=find ${DESTDIR}/usr/lib/debug/usr/lib32 \! -type d \ \! -name "lib*.so*" | sed -e 's,^${DESTDIR}/,,'; echo DEBUG_LIB32_LIBS!=find ${DESTDIR}/usr/lib/debug/usr/lib32 \! -type d \ -name "lib*.so*" | sed -e 's,^${DESTDIR}/,,'; echo OLD_DIRS+=${DEBUG_LIB32_DIRS} OLD_FILES+=${DEBUG_LIB32_FILES} OLD_LIBS+=${DEBUG_LIB32_LIBS} . endif . endif .endif .if ${MK_LIBCPLUSPLUS} == no OLD_LIBS+=lib/libcxxrt.so.1 OLD_FILES+=usr/lib/libc++.a OLD_FILES+=usr/lib/libc++_p.a OLD_FILES+=usr/lib/libc++.so OLD_LIBS+=usr/lib/libc++.so.1 OLD_FILES+=usr/lib/libcxxrt.a OLD_FILES+=usr/lib/libcxxrt.so OLD_FILES+=usr/lib/libcxxrt_p.a OLD_FILES+=usr/include/c++/v1/__bit_reference OLD_FILES+=usr/include/c++/v1/__config OLD_FILES+=usr/include/c++/v1/__debug OLD_FILES+=usr/include/c++/v1/__functional_03 OLD_FILES+=usr/include/c++/v1/__functional_base OLD_FILES+=usr/include/c++/v1/__functional_base_03 OLD_FILES+=usr/include/c++/v1/__hash_table OLD_FILES+=usr/include/c++/v1/__locale OLD_FILES+=usr/include/c++/v1/__mutex_base OLD_FILES+=usr/include/c++/v1/__refstring OLD_FILES+=usr/include/c++/v1/__split_buffer OLD_FILES+=usr/include/c++/v1/__sso_allocator OLD_FILES+=usr/include/c++/v1/__std_stream OLD_FILES+=usr/include/c++/v1/__tree OLD_FILES+=usr/include/c++/v1/__tuple OLD_FILES+=usr/include/c++/v1/__undef___deallocate OLD_FILES+=usr/include/c++/v1/__undef_min_max OLD_FILES+=usr/include/c++/v1/algorithm OLD_FILES+=usr/include/c++/v1/array OLD_FILES+=usr/include/c++/v1/atomic OLD_FILES+=usr/include/c++/v1/bitset OLD_FILES+=usr/include/c++/v1/cassert OLD_FILES+=usr/include/c++/v1/ccomplex OLD_FILES+=usr/include/c++/v1/cctype OLD_FILES+=usr/include/c++/v1/cerrno OLD_FILES+=usr/include/c++/v1/cfenv OLD_FILES+=usr/include/c++/v1/cfloat OLD_FILES+=usr/include/c++/v1/chrono OLD_FILES+=usr/include/c++/v1/cinttypes OLD_FILES+=usr/include/c++/v1/ciso646 OLD_FILES+=usr/include/c++/v1/climits OLD_FILES+=usr/include/c++/v1/clocale OLD_FILES+=usr/include/c++/v1/cmath OLD_FILES+=usr/include/c++/v1/codecvt OLD_FILES+=usr/include/c++/v1/complex OLD_FILES+=usr/include/c++/v1/complex.h OLD_FILES+=usr/include/c++/v1/condition_variable OLD_FILES+=usr/include/c++/v1/csetjmp OLD_FILES+=usr/include/c++/v1/csignal OLD_FILES+=usr/include/c++/v1/cstdarg OLD_FILES+=usr/include/c++/v1/cstdbool OLD_FILES+=usr/include/c++/v1/cstddef OLD_FILES+=usr/include/c++/v1/cstdint OLD_FILES+=usr/include/c++/v1/cstdio OLD_FILES+=usr/include/c++/v1/cstdlib OLD_FILES+=usr/include/c++/v1/cstring OLD_FILES+=usr/include/c++/v1/ctgmath OLD_FILES+=usr/include/c++/v1/ctime OLD_FILES+=usr/include/c++/v1/cwchar OLD_FILES+=usr/include/c++/v1/cwctype OLD_FILES+=usr/include/c++/v1/cxxabi.h OLD_FILES+=usr/include/c++/v1/deque OLD_FILES+=usr/include/c++/v1/exception OLD_FILES+=usr/include/c++/v1/experimental/__config OLD_FILES+=usr/include/c++/v1/experimental/chrono OLD_FILES+=usr/include/c++/v1/experimental/dynarray OLD_FILES+=usr/include/c++/v1/experimental/dynarray OLD_FILES+=usr/include/c++/v1/experimental/optional OLD_FILES+=usr/include/c++/v1/experimental/ratio OLD_FILES+=usr/include/c++/v1/experimental/string_view OLD_FILES+=usr/include/c++/v1/experimental/system_error OLD_FILES+=usr/include/c++/v1/experimental/tuple OLD_FILES+=usr/include/c++/v1/experimental/type_traits OLD_FILES+=usr/include/c++/v1/experimental/utility OLD_FILES+=usr/include/c++/v1/ext/__hash OLD_FILES+=usr/include/c++/v1/ext/hash_map OLD_FILES+=usr/include/c++/v1/ext/hash_set OLD_FILES+=usr/include/c++/v1/forward_list OLD_FILES+=usr/include/c++/v1/fstream OLD_FILES+=usr/include/c++/v1/functional OLD_FILES+=usr/include/c++/v1/future OLD_FILES+=usr/include/c++/v1/initializer_list OLD_FILES+=usr/include/c++/v1/iomanip OLD_FILES+=usr/include/c++/v1/ios OLD_FILES+=usr/include/c++/v1/iosfwd OLD_FILES+=usr/include/c++/v1/iostream OLD_FILES+=usr/include/c++/v1/istream OLD_FILES+=usr/include/c++/v1/iterator OLD_FILES+=usr/include/c++/v1/limits OLD_FILES+=usr/include/c++/v1/list OLD_FILES+=usr/include/c++/v1/locale OLD_FILES+=usr/include/c++/v1/map OLD_FILES+=usr/include/c++/v1/memory OLD_FILES+=usr/include/c++/v1/mutex OLD_FILES+=usr/include/c++/v1/new OLD_FILES+=usr/include/c++/v1/numeric OLD_FILES+=usr/include/c++/v1/ostream OLD_FILES+=usr/include/c++/v1/queue OLD_FILES+=usr/include/c++/v1/random OLD_FILES+=usr/include/c++/v1/ratio OLD_FILES+=usr/include/c++/v1/regex OLD_FILES+=usr/include/c++/v1/scoped_allocator OLD_FILES+=usr/include/c++/v1/set OLD_FILES+=usr/include/c++/v1/shared_mutex OLD_FILES+=usr/include/c++/v1/sstream OLD_FILES+=usr/include/c++/v1/stack OLD_FILES+=usr/include/c++/v1/stdexcept OLD_FILES+=usr/include/c++/v1/streambuf OLD_FILES+=usr/include/c++/v1/string OLD_FILES+=usr/include/c++/v1/strstream OLD_FILES+=usr/include/c++/v1/system_error OLD_FILES+=usr/include/c++/v1/tgmath.h OLD_FILES+=usr/include/c++/v1/thread OLD_FILES+=usr/include/c++/v1/tr1/__bit_reference OLD_FILES+=usr/include/c++/v1/tr1/__config OLD_FILES+=usr/include/c++/v1/tr1/__debug OLD_FILES+=usr/include/c++/v1/tr1/__functional_03 OLD_FILES+=usr/include/c++/v1/tr1/__functional_base OLD_FILES+=usr/include/c++/v1/tr1/__functional_base_03 OLD_FILES+=usr/include/c++/v1/tr1/__hash_table OLD_FILES+=usr/include/c++/v1/tr1/__locale OLD_FILES+=usr/include/c++/v1/tr1/__mutex_base OLD_FILES+=usr/include/c++/v1/tr1/__refstring OLD_FILES+=usr/include/c++/v1/tr1/__split_buffer OLD_FILES+=usr/include/c++/v1/tr1/__sso_allocator OLD_FILES+=usr/include/c++/v1/tr1/__std_stream OLD_FILES+=usr/include/c++/v1/tr1/__tree OLD_FILES+=usr/include/c++/v1/tr1/__tuple OLD_FILES+=usr/include/c++/v1/tr1/__tuple_03 OLD_FILES+=usr/include/c++/v1/tr1/__undef_min_max OLD_FILES+=usr/include/c++/v1/tr1/algorithm OLD_FILES+=usr/include/c++/v1/tr1/array OLD_FILES+=usr/include/c++/v1/tr1/atomic OLD_FILES+=usr/include/c++/v1/tr1/bitset OLD_FILES+=usr/include/c++/v1/tr1/cassert OLD_FILES+=usr/include/c++/v1/tr1/ccomplex OLD_FILES+=usr/include/c++/v1/tr1/cctype OLD_FILES+=usr/include/c++/v1/tr1/cerrno OLD_FILES+=usr/include/c++/v1/tr1/cfenv OLD_FILES+=usr/include/c++/v1/tr1/cfloat OLD_FILES+=usr/include/c++/v1/tr1/chrono OLD_FILES+=usr/include/c++/v1/tr1/cinttypes OLD_FILES+=usr/include/c++/v1/tr1/ciso646 OLD_FILES+=usr/include/c++/v1/tr1/climits OLD_FILES+=usr/include/c++/v1/tr1/clocale OLD_FILES+=usr/include/c++/v1/tr1/cmath OLD_FILES+=usr/include/c++/v1/tr1/codecvt OLD_FILES+=usr/include/c++/v1/tr1/complex OLD_FILES+=usr/include/c++/v1/tr1/complex.h OLD_FILES+=usr/include/c++/v1/tr1/condition_variable OLD_FILES+=usr/include/c++/v1/tr1/csetjmp OLD_FILES+=usr/include/c++/v1/tr1/csignal OLD_FILES+=usr/include/c++/v1/tr1/cstdarg OLD_FILES+=usr/include/c++/v1/tr1/cstdbool OLD_FILES+=usr/include/c++/v1/tr1/cstddef OLD_FILES+=usr/include/c++/v1/tr1/cstdint OLD_FILES+=usr/include/c++/v1/tr1/cstdio OLD_FILES+=usr/include/c++/v1/tr1/cstdlib OLD_FILES+=usr/include/c++/v1/tr1/cstring OLD_FILES+=usr/include/c++/v1/tr1/ctgmath OLD_FILES+=usr/include/c++/v1/tr1/ctime OLD_FILES+=usr/include/c++/v1/tr1/cwchar OLD_FILES+=usr/include/c++/v1/tr1/cwctype OLD_FILES+=usr/include/c++/v1/tr1/deque OLD_FILES+=usr/include/c++/v1/tr1/exception OLD_FILES+=usr/include/c++/v1/tr1/forward_list OLD_FILES+=usr/include/c++/v1/tr1/fstream OLD_FILES+=usr/include/c++/v1/tr1/functional OLD_FILES+=usr/include/c++/v1/tr1/future OLD_FILES+=usr/include/c++/v1/tr1/initializer_list OLD_FILES+=usr/include/c++/v1/tr1/iomanip OLD_FILES+=usr/include/c++/v1/tr1/ios OLD_FILES+=usr/include/c++/v1/tr1/iosfwd OLD_FILES+=usr/include/c++/v1/tr1/iostream OLD_FILES+=usr/include/c++/v1/tr1/istream OLD_FILES+=usr/include/c++/v1/tr1/iterator OLD_FILES+=usr/include/c++/v1/tr1/limits OLD_FILES+=usr/include/c++/v1/tr1/list OLD_FILES+=usr/include/c++/v1/tr1/locale OLD_FILES+=usr/include/c++/v1/tr1/map OLD_FILES+=usr/include/c++/v1/tr1/memory OLD_FILES+=usr/include/c++/v1/tr1/mutex OLD_FILES+=usr/include/c++/v1/tr1/new OLD_FILES+=usr/include/c++/v1/tr1/numeric OLD_FILES+=usr/include/c++/v1/tr1/ostream OLD_FILES+=usr/include/c++/v1/tr1/queue OLD_FILES+=usr/include/c++/v1/tr1/random OLD_FILES+=usr/include/c++/v1/tr1/ratio OLD_FILES+=usr/include/c++/v1/tr1/regex OLD_FILES+=usr/include/c++/v1/tr1/scoped_allocator OLD_FILES+=usr/include/c++/v1/tr1/set OLD_FILES+=usr/include/c++/v1/tr1/shared_mutex OLD_FILES+=usr/include/c++/v1/tr1/sstream OLD_FILES+=usr/include/c++/v1/tr1/stack OLD_FILES+=usr/include/c++/v1/tr1/stdexcept OLD_FILES+=usr/include/c++/v1/tr1/streambuf OLD_FILES+=usr/include/c++/v1/tr1/string OLD_FILES+=usr/include/c++/v1/tr1/strstream OLD_FILES+=usr/include/c++/v1/tr1/system_error OLD_FILES+=usr/include/c++/v1/tr1/tgmath.h OLD_FILES+=usr/include/c++/v1/tr1/thread OLD_FILES+=usr/include/c++/v1/tr1/tuple OLD_FILES+=usr/include/c++/v1/tr1/type_traits OLD_FILES+=usr/include/c++/v1/tr1/typeindex OLD_FILES+=usr/include/c++/v1/tr1/typeinfo OLD_FILES+=usr/include/c++/v1/tr1/unordered_map OLD_FILES+=usr/include/c++/v1/tr1/unordered_set OLD_FILES+=usr/include/c++/v1/tr1/utility OLD_FILES+=usr/include/c++/v1/tr1/valarray OLD_FILES+=usr/include/c++/v1/tr1/vector OLD_FILES+=usr/include/c++/v1/tuple OLD_FILES+=usr/include/c++/v1/type_traits OLD_FILES+=usr/include/c++/v1/typeindex OLD_FILES+=usr/include/c++/v1/typeinfo OLD_FILES+=usr/include/c++/v1/unordered_map OLD_FILES+=usr/include/c++/v1/unordered_set OLD_FILES+=usr/include/c++/v1/unwind-arm.h OLD_FILES+=usr/include/c++/v1/unwind-itanium.h OLD_FILES+=usr/include/c++/v1/unwind.h OLD_FILES+=usr/include/c++/v1/utility OLD_FILES+=usr/include/c++/v1/valarray OLD_FILES+=usr/include/c++/v1/vector OLD_FILES+=usr/lib32/libc++.a OLD_FILES+=usr/lib32/libc++.so OLD_LIBS+=usr/lib32/libc++.so.1 OLD_FILES+=usr/lib32/libc++_p.a OLD_FILES+=usr/lib32/libcxxrt.a OLD_FILES+=usr/lib32/libcxxrt.so OLD_LIBS+=usr/lib32/libcxxrt.so.1 OLD_FILES+=usr/lib32/libcxxrt_p.a OLD_DIRS+=usr/include/c++/v1/tr1 OLD_DIRS+=usr/include/c++/v1/experimental OLD_DIRS+=usr/include/c++/v1/ext OLD_DIRS+=usr/include/c++/v1 .endif #.if ${MK_LIBTHR} == no # to be filled in #.endif .if ${MK_LLDB} == no OLD_FILES+=usr/bin/lldb OLD_FILES+=usr/share/man/man1/lldb.1.gz .endif .if ${MK_LOCALES} == no OLD_FILES+=usr/share/locale/af_ZA.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/af_ZA.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/af_ZA.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/af_ZA.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/af_ZA.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/af_ZA.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/af_ZA.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/af_ZA.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/af_ZA.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/af_ZA.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/af_ZA.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/af_ZA.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/af_ZA.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/af_ZA.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/af_ZA.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/af_ZA.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/af_ZA.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/af_ZA.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/am_ET.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/am_ET.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/am_ET.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/am_ET.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/am_ET.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/am_ET.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/ar_AE.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/ar_AE.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/ar_AE.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/ar_AE.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/ar_AE.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/ar_AE.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/ar_EG.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/ar_EG.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/ar_EG.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/ar_EG.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/ar_EG.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/ar_EG.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/ar_JO.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/ar_JO.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/ar_JO.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/ar_JO.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/ar_JO.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/ar_JO.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/ar_MA.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/ar_MA.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/ar_MA.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/ar_MA.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/ar_MA.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/ar_MA.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/ar_QA.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/ar_QA.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/ar_QA.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/ar_QA.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/ar_QA.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/ar_QA.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/ar_SA.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/ar_SA.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/ar_SA.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/ar_SA.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/ar_SA.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/ar_SA.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/be_BY.CP1131/LC_COLLATE OLD_FILES+=usr/share/locale/be_BY.CP1131/LC_CTYPE OLD_FILES+=usr/share/locale/be_BY.CP1131/LC_MESSAGES OLD_FILES+=usr/share/locale/be_BY.CP1131/LC_MONETARY OLD_FILES+=usr/share/locale/be_BY.CP1131/LC_NUMERIC OLD_FILES+=usr/share/locale/be_BY.CP1131/LC_TIME OLD_FILES+=usr/share/locale/be_BY.CP1251/LC_COLLATE OLD_FILES+=usr/share/locale/be_BY.CP1251/LC_CTYPE OLD_FILES+=usr/share/locale/be_BY.CP1251/LC_MESSAGES OLD_FILES+=usr/share/locale/be_BY.CP1251/LC_MONETARY OLD_FILES+=usr/share/locale/be_BY.CP1251/LC_NUMERIC OLD_FILES+=usr/share/locale/be_BY.CP1251/LC_TIME OLD_FILES+=usr/share/locale/be_BY.ISO8859-5/LC_COLLATE OLD_FILES+=usr/share/locale/be_BY.ISO8859-5/LC_CTYPE OLD_FILES+=usr/share/locale/be_BY.ISO8859-5/LC_MESSAGES OLD_FILES+=usr/share/locale/be_BY.ISO8859-5/LC_MONETARY OLD_FILES+=usr/share/locale/be_BY.ISO8859-5/LC_NUMERIC OLD_FILES+=usr/share/locale/be_BY.ISO8859-5/LC_TIME OLD_FILES+=usr/share/locale/be_BY.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/be_BY.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/be_BY.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/be_BY.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/be_BY.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/be_BY.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/bg_BG.CP1251/LC_COLLATE OLD_FILES+=usr/share/locale/bg_BG.CP1251/LC_CTYPE OLD_FILES+=usr/share/locale/bg_BG.CP1251/LC_MESSAGES OLD_FILES+=usr/share/locale/bg_BG.CP1251/LC_MONETARY OLD_FILES+=usr/share/locale/bg_BG.CP1251/LC_NUMERIC OLD_FILES+=usr/share/locale/bg_BG.CP1251/LC_TIME OLD_FILES+=usr/share/locale/bg_BG.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/bg_BG.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/bg_BG.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/bg_BG.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/bg_BG.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/bg_BG.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/ca_AD.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/ca_AD.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/ca_AD.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/ca_AD.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/ca_AD.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/ca_AD.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/ca_AD.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/ca_AD.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/ca_AD.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/ca_AD.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/ca_AD.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/ca_AD.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/ca_AD.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/ca_AD.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/ca_AD.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/ca_AD.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/ca_AD.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/ca_AD.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/ca_ES.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/ca_ES.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/ca_ES.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/ca_ES.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/ca_ES.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/ca_ES.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/ca_ES.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/ca_ES.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/ca_ES.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/ca_ES.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/ca_ES.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/ca_ES.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/ca_ES.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/ca_ES.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/ca_ES.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/ca_ES.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/ca_ES.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/ca_ES.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/ca_FR.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/ca_FR.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/ca_FR.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/ca_FR.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/ca_FR.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/ca_FR.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/ca_FR.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/ca_FR.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/ca_FR.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/ca_FR.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/ca_FR.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/ca_FR.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/ca_FR.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/ca_FR.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/ca_FR.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/ca_FR.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/ca_FR.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/ca_FR.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/ca_IT.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/ca_IT.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/ca_IT.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/ca_IT.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/ca_IT.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/ca_IT.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/ca_IT.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/ca_IT.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/ca_IT.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/ca_IT.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/ca_IT.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/ca_IT.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/ca_IT.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/ca_IT.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/ca_IT.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/ca_IT.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/ca_IT.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/ca_IT.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/cs_CZ.ISO8859-2/LC_COLLATE OLD_FILES+=usr/share/locale/cs_CZ.ISO8859-2/LC_CTYPE OLD_FILES+=usr/share/locale/cs_CZ.ISO8859-2/LC_MESSAGES OLD_FILES+=usr/share/locale/cs_CZ.ISO8859-2/LC_MONETARY OLD_FILES+=usr/share/locale/cs_CZ.ISO8859-2/LC_NUMERIC OLD_FILES+=usr/share/locale/cs_CZ.ISO8859-2/LC_TIME OLD_FILES+=usr/share/locale/cs_CZ.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/cs_CZ.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/cs_CZ.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/cs_CZ.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/cs_CZ.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/cs_CZ.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/da_DK.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/da_DK.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/da_DK.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/da_DK.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/da_DK.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/da_DK.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/da_DK.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/da_DK.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/da_DK.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/da_DK.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/da_DK.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/da_DK.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/da_DK.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/da_DK.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/da_DK.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/da_DK.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/da_DK.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/da_DK.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/de_AT.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/de_AT.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/de_AT.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/de_AT.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/de_AT.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/de_AT.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/de_AT.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/de_AT.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/de_AT.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/de_AT.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/de_AT.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/de_AT.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/de_AT.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/de_AT.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/de_AT.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/de_AT.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/de_AT.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/de_AT.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/de_CH.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/de_CH.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/de_CH.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/de_CH.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/de_CH.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/de_CH.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/de_CH.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/de_CH.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/de_CH.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/de_CH.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/de_CH.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/de_CH.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/de_CH.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/de_CH.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/de_CH.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/de_CH.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/de_CH.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/de_CH.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/de_DE.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/de_DE.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/de_DE.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/de_DE.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/de_DE.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/de_DE.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/de_DE.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/de_DE.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/de_DE.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/de_DE.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/de_DE.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/de_DE.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/de_DE.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/de_DE.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/de_DE.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/de_DE.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/de_DE.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/de_DE.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/el_GR.ISO8859-7/LC_COLLATE OLD_FILES+=usr/share/locale/el_GR.ISO8859-7/LC_CTYPE OLD_FILES+=usr/share/locale/el_GR.ISO8859-7/LC_MESSAGES OLD_FILES+=usr/share/locale/el_GR.ISO8859-7/LC_MONETARY OLD_FILES+=usr/share/locale/el_GR.ISO8859-7/LC_NUMERIC OLD_FILES+=usr/share/locale/el_GR.ISO8859-7/LC_TIME OLD_FILES+=usr/share/locale/el_GR.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/el_GR.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/el_GR.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/el_GR.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/el_GR.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/el_GR.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/en_AU.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/en_AU.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/en_AU.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/en_AU.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/en_AU.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/en_AU.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/en_AU.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/en_AU.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/en_AU.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/en_AU.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/en_AU.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/en_AU.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/en_AU.US-ASCII/LC_COLLATE OLD_FILES+=usr/share/locale/en_AU.US-ASCII/LC_CTYPE OLD_FILES+=usr/share/locale/en_AU.US-ASCII/LC_MESSAGES OLD_FILES+=usr/share/locale/en_AU.US-ASCII/LC_MONETARY OLD_FILES+=usr/share/locale/en_AU.US-ASCII/LC_NUMERIC OLD_FILES+=usr/share/locale/en_AU.US-ASCII/LC_TIME OLD_FILES+=usr/share/locale/en_AU.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/en_AU.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/en_AU.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/en_AU.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/en_AU.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/en_AU.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/en_CA.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/en_CA.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/en_CA.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/en_CA.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/en_CA.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/en_CA.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/en_CA.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/en_CA.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/en_CA.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/en_CA.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/en_CA.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/en_CA.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/en_CA.US-ASCII/LC_COLLATE OLD_FILES+=usr/share/locale/en_CA.US-ASCII/LC_CTYPE OLD_FILES+=usr/share/locale/en_CA.US-ASCII/LC_MESSAGES OLD_FILES+=usr/share/locale/en_CA.US-ASCII/LC_MONETARY OLD_FILES+=usr/share/locale/en_CA.US-ASCII/LC_NUMERIC OLD_FILES+=usr/share/locale/en_CA.US-ASCII/LC_TIME OLD_FILES+=usr/share/locale/en_CA.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/en_CA.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/en_CA.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/en_CA.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/en_CA.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/en_CA.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/en_GB.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/en_GB.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/en_GB.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/en_GB.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/en_GB.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/en_GB.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/en_GB.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/en_GB.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/en_GB.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/en_GB.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/en_GB.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/en_GB.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/en_GB.US-ASCII/LC_COLLATE OLD_FILES+=usr/share/locale/en_GB.US-ASCII/LC_CTYPE OLD_FILES+=usr/share/locale/en_GB.US-ASCII/LC_MESSAGES OLD_FILES+=usr/share/locale/en_GB.US-ASCII/LC_MONETARY OLD_FILES+=usr/share/locale/en_GB.US-ASCII/LC_NUMERIC OLD_FILES+=usr/share/locale/en_GB.US-ASCII/LC_TIME OLD_FILES+=usr/share/locale/en_GB.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/en_GB.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/en_GB.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/en_GB.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/en_GB.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/en_GB.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/en_HK.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/en_HK.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/en_HK.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/en_HK.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/en_HK.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/en_HK.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/en_HK.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/en_HK.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/en_HK.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/en_HK.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/en_HK.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/en_HK.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/en_IE.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/en_IE.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/en_IE.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/en_IE.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/en_IE.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/en_IE.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/en_IE.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/en_IE.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/en_IE.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/en_IE.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/en_IE.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/en_IE.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/en_IE.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/en_IE.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/en_IE.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/en_IE.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/en_IE.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/en_IE.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/en_NZ.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/en_NZ.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/en_NZ.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/en_NZ.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/en_NZ.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/en_NZ.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/en_NZ.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/en_NZ.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/en_NZ.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/en_NZ.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/en_NZ.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/en_NZ.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/en_NZ.US-ASCII/LC_COLLATE OLD_FILES+=usr/share/locale/en_NZ.US-ASCII/LC_CTYPE OLD_FILES+=usr/share/locale/en_NZ.US-ASCII/LC_MESSAGES OLD_FILES+=usr/share/locale/en_NZ.US-ASCII/LC_MONETARY OLD_FILES+=usr/share/locale/en_NZ.US-ASCII/LC_NUMERIC OLD_FILES+=usr/share/locale/en_NZ.US-ASCII/LC_TIME OLD_FILES+=usr/share/locale/en_NZ.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/en_NZ.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/en_NZ.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/en_NZ.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/en_NZ.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/en_NZ.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/en_PH.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/en_PH.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/en_PH.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/en_PH.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/en_PH.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/en_PH.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/en_SG.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/en_SG.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/en_SG.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/en_SG.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/en_SG.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/en_SG.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/en_SG.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/en_SG.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/en_SG.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/en_SG.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/en_SG.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/en_SG.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/en_US.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/en_US.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/en_US.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/en_US.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/en_US.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/en_US.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/en_US.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/en_US.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/en_US.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/en_US.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/en_US.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/en_US.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/en_US.US-ASCII/LC_COLLATE OLD_FILES+=usr/share/locale/en_US.US-ASCII/LC_CTYPE OLD_FILES+=usr/share/locale/en_US.US-ASCII/LC_MESSAGES OLD_FILES+=usr/share/locale/en_US.US-ASCII/LC_MONETARY OLD_FILES+=usr/share/locale/en_US.US-ASCII/LC_NUMERIC OLD_FILES+=usr/share/locale/en_US.US-ASCII/LC_TIME OLD_FILES+=usr/share/locale/en_US.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/en_US.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/en_US.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/en_US.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/en_US.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/en_US.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/en_ZA.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/en_ZA.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/en_ZA.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/en_ZA.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/en_ZA.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/en_ZA.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/en_ZA.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/en_ZA.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/en_ZA.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/en_ZA.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/en_ZA.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/en_ZA.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/en_ZA.US-ASCII/LC_COLLATE OLD_FILES+=usr/share/locale/en_ZA.US-ASCII/LC_CTYPE OLD_FILES+=usr/share/locale/en_ZA.US-ASCII/LC_MESSAGES OLD_FILES+=usr/share/locale/en_ZA.US-ASCII/LC_MONETARY OLD_FILES+=usr/share/locale/en_ZA.US-ASCII/LC_NUMERIC OLD_FILES+=usr/share/locale/en_ZA.US-ASCII/LC_TIME OLD_FILES+=usr/share/locale/en_ZA.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/en_ZA.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/en_ZA.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/en_ZA.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/en_ZA.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/en_ZA.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/es_AR.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/es_AR.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/es_AR.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/es_AR.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/es_AR.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/es_AR.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/es_AR.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/es_AR.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/es_AR.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/es_AR.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/es_AR.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/es_AR.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/es_CR.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/es_CR.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/es_CR.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/es_CR.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/es_CR.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/es_CR.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/es_ES.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/es_ES.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/es_ES.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/es_ES.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/es_ES.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/es_ES.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/es_ES.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/es_ES.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/es_ES.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/es_ES.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/es_ES.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/es_ES.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/es_ES.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/es_ES.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/es_ES.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/es_ES.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/es_ES.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/es_ES.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/es_MX.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/es_MX.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/es_MX.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/es_MX.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/es_MX.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/es_MX.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/es_MX.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/es_MX.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/es_MX.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/es_MX.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/es_MX.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/es_MX.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/et_EE.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/et_EE.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/et_EE.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/et_EE.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/et_EE.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/et_EE.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/et_EE.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/et_EE.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/et_EE.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/et_EE.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/et_EE.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/et_EE.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/et_EE.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/et_EE.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/et_EE.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/et_EE.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/et_EE.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/et_EE.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/eu_ES.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/eu_ES.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/eu_ES.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/eu_ES.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/eu_ES.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/eu_ES.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/eu_ES.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/eu_ES.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/eu_ES.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/eu_ES.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/eu_ES.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/eu_ES.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/eu_ES.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/eu_ES.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/eu_ES.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/eu_ES.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/eu_ES.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/eu_ES.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/fi_FI.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/fi_FI.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/fi_FI.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/fi_FI.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/fi_FI.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/fi_FI.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/fi_FI.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/fi_FI.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/fi_FI.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/fi_FI.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/fi_FI.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/fi_FI.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/fi_FI.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/fi_FI.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/fi_FI.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/fi_FI.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/fi_FI.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/fi_FI.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/fr_BE.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/fr_BE.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/fr_BE.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/fr_BE.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/fr_BE.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/fr_BE.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/fr_BE.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/fr_BE.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/fr_BE.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/fr_BE.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/fr_BE.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/fr_BE.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/fr_BE.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/fr_BE.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/fr_BE.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/fr_BE.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/fr_BE.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/fr_BE.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/fr_CA.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/fr_CA.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/fr_CA.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/fr_CA.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/fr_CA.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/fr_CA.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/fr_CA.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/fr_CA.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/fr_CA.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/fr_CA.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/fr_CA.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/fr_CA.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/fr_CA.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/fr_CA.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/fr_CA.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/fr_CA.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/fr_CA.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/fr_CA.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/fr_CH.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/fr_CH.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/fr_CH.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/fr_CH.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/fr_CH.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/fr_CH.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/fr_CH.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/fr_CH.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/fr_CH.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/fr_CH.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/fr_CH.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/fr_CH.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/fr_CH.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/fr_CH.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/fr_CH.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/fr_CH.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/fr_CH.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/fr_CH.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/fr_FR.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/fr_FR.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/fr_FR.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/fr_FR.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/fr_FR.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/fr_FR.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/fr_FR.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/fr_FR.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/fr_FR.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/fr_FR.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/fr_FR.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/fr_FR.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/fr_FR.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/fr_FR.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/fr_FR.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/fr_FR.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/fr_FR.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/fr_FR.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/he_IL.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/he_IL.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/he_IL.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/he_IL.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/he_IL.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/he_IL.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/hi_IN.ISCII-DEV/LC_COLLATE OLD_FILES+=usr/share/locale/hi_IN.ISCII-DEV/LC_CTYPE OLD_FILES+=usr/share/locale/hi_IN.ISCII-DEV/LC_MESSAGES OLD_FILES+=usr/share/locale/hi_IN.ISCII-DEV/LC_MONETARY OLD_FILES+=usr/share/locale/hi_IN.ISCII-DEV/LC_NUMERIC OLD_FILES+=usr/share/locale/hi_IN.ISCII-DEV/LC_TIME OLD_FILES+=usr/share/locale/hi_IN.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/hi_IN.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/hi_IN.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/hi_IN.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/hi_IN.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/hi_IN.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/hr_HR.ISO8859-2/LC_COLLATE OLD_FILES+=usr/share/locale/hr_HR.ISO8859-2/LC_CTYPE OLD_FILES+=usr/share/locale/hr_HR.ISO8859-2/LC_MESSAGES OLD_FILES+=usr/share/locale/hr_HR.ISO8859-2/LC_MONETARY OLD_FILES+=usr/share/locale/hr_HR.ISO8859-2/LC_NUMERIC OLD_FILES+=usr/share/locale/hr_HR.ISO8859-2/LC_TIME OLD_FILES+=usr/share/locale/hr_HR.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/hr_HR.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/hr_HR.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/hr_HR.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/hr_HR.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/hr_HR.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/hu_HU.ISO8859-2/LC_COLLATE OLD_FILES+=usr/share/locale/hu_HU.ISO8859-2/LC_CTYPE OLD_FILES+=usr/share/locale/hu_HU.ISO8859-2/LC_MESSAGES OLD_FILES+=usr/share/locale/hu_HU.ISO8859-2/LC_MONETARY OLD_FILES+=usr/share/locale/hu_HU.ISO8859-2/LC_NUMERIC OLD_FILES+=usr/share/locale/hu_HU.ISO8859-2/LC_TIME OLD_FILES+=usr/share/locale/hu_HU.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/hu_HU.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/hu_HU.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/hu_HU.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/hu_HU.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/hu_HU.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/hy_AM.ARMSCII-8/LC_COLLATE OLD_FILES+=usr/share/locale/hy_AM.ARMSCII-8/LC_CTYPE OLD_FILES+=usr/share/locale/hy_AM.ARMSCII-8/LC_MESSAGES OLD_FILES+=usr/share/locale/hy_AM.ARMSCII-8/LC_MONETARY OLD_FILES+=usr/share/locale/hy_AM.ARMSCII-8/LC_NUMERIC OLD_FILES+=usr/share/locale/hy_AM.ARMSCII-8/LC_TIME OLD_FILES+=usr/share/locale/hy_AM.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/hy_AM.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/hy_AM.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/hy_AM.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/hy_AM.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/hy_AM.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/is_IS.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/is_IS.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/is_IS.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/is_IS.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/is_IS.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/is_IS.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/is_IS.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/is_IS.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/is_IS.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/is_IS.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/is_IS.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/is_IS.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/is_IS.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/is_IS.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/is_IS.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/is_IS.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/is_IS.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/is_IS.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/it_CH.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/it_CH.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/it_CH.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/it_CH.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/it_CH.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/it_CH.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/it_CH.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/it_CH.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/it_CH.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/it_CH.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/it_CH.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/it_CH.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/it_CH.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/it_CH.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/it_CH.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/it_CH.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/it_CH.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/it_CH.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/it_IT.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/it_IT.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/it_IT.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/it_IT.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/it_IT.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/it_IT.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/it_IT.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/it_IT.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/it_IT.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/it_IT.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/it_IT.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/it_IT.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/it_IT.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/it_IT.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/it_IT.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/it_IT.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/it_IT.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/it_IT.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/ja_JP.eucJP/LC_COLLATE OLD_FILES+=usr/share/locale/ja_JP.eucJP/LC_CTYPE OLD_FILES+=usr/share/locale/ja_JP.eucJP/LC_MESSAGES OLD_FILES+=usr/share/locale/ja_JP.eucJP/LC_MONETARY OLD_FILES+=usr/share/locale/ja_JP.eucJP/LC_NUMERIC OLD_FILES+=usr/share/locale/ja_JP.eucJP/LC_TIME OLD_FILES+=usr/share/locale/ja_JP.SJIS/LC_COLLATE OLD_FILES+=usr/share/locale/ja_JP.SJIS/LC_CTYPE OLD_FILES+=usr/share/locale/ja_JP.SJIS/LC_MESSAGES OLD_FILES+=usr/share/locale/ja_JP.SJIS/LC_MONETARY OLD_FILES+=usr/share/locale/ja_JP.SJIS/LC_NUMERIC OLD_FILES+=usr/share/locale/ja_JP.SJIS/LC_TIME OLD_FILES+=usr/share/locale/ja_JP.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/ja_JP.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/ja_JP.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/ja_JP.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/ja_JP.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/ja_JP.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/kk_KZ.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/kk_KZ.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/kk_KZ.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/kk_KZ.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/kk_KZ.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/kk_KZ.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/ko_KR.CP949/LC_COLLATE OLD_FILES+=usr/share/locale/ko_KR.CP949/LC_CTYPE OLD_FILES+=usr/share/locale/ko_KR.CP949/LC_MESSAGES OLD_FILES+=usr/share/locale/ko_KR.CP949/LC_MONETARY OLD_FILES+=usr/share/locale/ko_KR.CP949/LC_NUMERIC OLD_FILES+=usr/share/locale/ko_KR.CP949/LC_TIME OLD_FILES+=usr/share/locale/ko_KR.eucKR/LC_COLLATE OLD_FILES+=usr/share/locale/ko_KR.eucKR/LC_CTYPE OLD_FILES+=usr/share/locale/ko_KR.eucKR/LC_MESSAGES OLD_FILES+=usr/share/locale/ko_KR.eucKR/LC_MONETARY OLD_FILES+=usr/share/locale/ko_KR.eucKR/LC_NUMERIC OLD_FILES+=usr/share/locale/ko_KR.eucKR/LC_TIME OLD_FILES+=usr/share/locale/ko_KR.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/ko_KR.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/ko_KR.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/ko_KR.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/ko_KR.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/ko_KR.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/lt_LT.ISO8859-13/LC_COLLATE OLD_FILES+=usr/share/locale/lt_LT.ISO8859-13/LC_CTYPE OLD_FILES+=usr/share/locale/lt_LT.ISO8859-13/LC_MESSAGES OLD_FILES+=usr/share/locale/lt_LT.ISO8859-13/LC_MONETARY OLD_FILES+=usr/share/locale/lt_LT.ISO8859-13/LC_NUMERIC OLD_FILES+=usr/share/locale/lt_LT.ISO8859-13/LC_TIME OLD_FILES+=usr/share/locale/lt_LT.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/lt_LT.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/lt_LT.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/lt_LT.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/lt_LT.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/lt_LT.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/lv_LV.ISO8859-13/LC_COLLATE OLD_FILES+=usr/share/locale/lv_LV.ISO8859-13/LC_CTYPE OLD_FILES+=usr/share/locale/lv_LV.ISO8859-13/LC_MESSAGES OLD_FILES+=usr/share/locale/lv_LV.ISO8859-13/LC_MONETARY OLD_FILES+=usr/share/locale/lv_LV.ISO8859-13/LC_NUMERIC OLD_FILES+=usr/share/locale/lv_LV.ISO8859-13/LC_TIME OLD_FILES+=usr/share/locale/lv_LV.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/lv_LV.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/lv_LV.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/lv_LV.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/lv_LV.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/lv_LV.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/mn_MN.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/mn_MN.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/mn_MN.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/mn_MN.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/mn_MN.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/mn_MN.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/nb_NO.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/nb_NO.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/nb_NO.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/nb_NO.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/nb_NO.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/nb_NO.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/nb_NO.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/nb_NO.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/nb_NO.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/nb_NO.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/nb_NO.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/nb_NO.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/nb_NO.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/nb_NO.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/nb_NO.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/nb_NO.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/nb_NO.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/nb_NO.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/nl_BE.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/nl_BE.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/nl_BE.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/nl_BE.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/nl_BE.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/nl_BE.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/nl_BE.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/nl_BE.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/nl_BE.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/nl_BE.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/nl_BE.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/nl_BE.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/nl_BE.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/nl_BE.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/nl_BE.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/nl_BE.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/nl_BE.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/nl_BE.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/nl_NL.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/nl_NL.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/nl_NL.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/nl_NL.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/nl_NL.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/nl_NL.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/nl_NL.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/nl_NL.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/nl_NL.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/nl_NL.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/nl_NL.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/nl_NL.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/nl_NL.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/nl_NL.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/nl_NL.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/nl_NL.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/nl_NL.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/nl_NL.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/nn_NO.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/nn_NO.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/nn_NO.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/nn_NO.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/nn_NO.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/nn_NO.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/nn_NO.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/nn_NO.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/nn_NO.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/nn_NO.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/nn_NO.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/nn_NO.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/nn_NO.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/nn_NO.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/nn_NO.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/nn_NO.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/nn_NO.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/nn_NO.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/pl_PL.ISO8859-2/LC_COLLATE OLD_FILES+=usr/share/locale/pl_PL.ISO8859-2/LC_CTYPE OLD_FILES+=usr/share/locale/pl_PL.ISO8859-2/LC_MESSAGES OLD_FILES+=usr/share/locale/pl_PL.ISO8859-2/LC_MONETARY OLD_FILES+=usr/share/locale/pl_PL.ISO8859-2/LC_NUMERIC OLD_FILES+=usr/share/locale/pl_PL.ISO8859-2/LC_TIME OLD_FILES+=usr/share/locale/pl_PL.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/pl_PL.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/pl_PL.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/pl_PL.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/pl_PL.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/pl_PL.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/pt_BR.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/pt_BR.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/pt_BR.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/pt_BR.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/pt_BR.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/pt_BR.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/pt_BR.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/pt_BR.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/pt_BR.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/pt_BR.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/pt_BR.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/pt_BR.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/pt_PT.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/pt_PT.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/pt_PT.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/pt_PT.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/pt_PT.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/pt_PT.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/pt_PT.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/pt_PT.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/pt_PT.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/pt_PT.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/pt_PT.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/pt_PT.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/pt_PT.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/pt_PT.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/pt_PT.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/pt_PT.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/pt_PT.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/pt_PT.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/ro_RO.ISO8859-2/LC_COLLATE OLD_FILES+=usr/share/locale/ro_RO.ISO8859-2/LC_CTYPE OLD_FILES+=usr/share/locale/ro_RO.ISO8859-2/LC_MESSAGES OLD_FILES+=usr/share/locale/ro_RO.ISO8859-2/LC_MONETARY OLD_FILES+=usr/share/locale/ro_RO.ISO8859-2/LC_NUMERIC OLD_FILES+=usr/share/locale/ro_RO.ISO8859-2/LC_TIME OLD_FILES+=usr/share/locale/ro_RO.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/ro_RO.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/ro_RO.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/ro_RO.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/ro_RO.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/ro_RO.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/ru_RU.CP1251/LC_COLLATE OLD_FILES+=usr/share/locale/ru_RU.CP1251/LC_CTYPE OLD_FILES+=usr/share/locale/ru_RU.CP1251/LC_MESSAGES OLD_FILES+=usr/share/locale/ru_RU.CP1251/LC_MONETARY OLD_FILES+=usr/share/locale/ru_RU.CP1251/LC_NUMERIC OLD_FILES+=usr/share/locale/ru_RU.CP1251/LC_TIME OLD_FILES+=usr/share/locale/ru_RU.CP866/LC_COLLATE OLD_FILES+=usr/share/locale/ru_RU.CP866/LC_CTYPE OLD_FILES+=usr/share/locale/ru_RU.CP866/LC_MESSAGES OLD_FILES+=usr/share/locale/ru_RU.CP866/LC_MONETARY OLD_FILES+=usr/share/locale/ru_RU.CP866/LC_NUMERIC OLD_FILES+=usr/share/locale/ru_RU.CP866/LC_TIME OLD_FILES+=usr/share/locale/ru_RU.ISO8859-5/LC_COLLATE OLD_FILES+=usr/share/locale/ru_RU.ISO8859-5/LC_CTYPE OLD_FILES+=usr/share/locale/ru_RU.ISO8859-5/LC_MESSAGES OLD_FILES+=usr/share/locale/ru_RU.ISO8859-5/LC_MONETARY OLD_FILES+=usr/share/locale/ru_RU.ISO8859-5/LC_NUMERIC OLD_FILES+=usr/share/locale/ru_RU.ISO8859-5/LC_TIME OLD_FILES+=usr/share/locale/ru_RU.KOI8-R/LC_COLLATE OLD_FILES+=usr/share/locale/ru_RU.KOI8-R/LC_CTYPE OLD_FILES+=usr/share/locale/ru_RU.KOI8-R/LC_MESSAGES OLD_FILES+=usr/share/locale/ru_RU.KOI8-R/LC_MONETARY OLD_FILES+=usr/share/locale/ru_RU.KOI8-R/LC_NUMERIC OLD_FILES+=usr/share/locale/ru_RU.KOI8-R/LC_TIME OLD_FILES+=usr/share/locale/ru_RU.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/ru_RU.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/ru_RU.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/ru_RU.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/ru_RU.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/ru_RU.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/se_FI.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/se_FI.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/se_FI.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/se_FI.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/se_FI.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/se_FI.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/se_NO.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/se_NO.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/se_NO.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/se_NO.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/se_NO.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/se_NO.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/sk_SK.ISO8859-2/LC_COLLATE OLD_FILES+=usr/share/locale/sk_SK.ISO8859-2/LC_CTYPE OLD_FILES+=usr/share/locale/sk_SK.ISO8859-2/LC_MESSAGES OLD_FILES+=usr/share/locale/sk_SK.ISO8859-2/LC_MONETARY OLD_FILES+=usr/share/locale/sk_SK.ISO8859-2/LC_NUMERIC OLD_FILES+=usr/share/locale/sk_SK.ISO8859-2/LC_TIME OLD_FILES+=usr/share/locale/sk_SK.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/sk_SK.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/sk_SK.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/sk_SK.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/sk_SK.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/sk_SK.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/sl_SI.ISO8859-2/LC_COLLATE OLD_FILES+=usr/share/locale/sl_SI.ISO8859-2/LC_CTYPE OLD_FILES+=usr/share/locale/sl_SI.ISO8859-2/LC_MESSAGES OLD_FILES+=usr/share/locale/sl_SI.ISO8859-2/LC_MONETARY OLD_FILES+=usr/share/locale/sl_SI.ISO8859-2/LC_NUMERIC OLD_FILES+=usr/share/locale/sl_SI.ISO8859-2/LC_TIME OLD_FILES+=usr/share/locale/sl_SI.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/sl_SI.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/sl_SI.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/sl_SI.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/sl_SI.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/sl_SI.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/sr_RS.ISO8859-5/LC_COLLATE OLD_FILES+=usr/share/locale/sr_RS.ISO8859-5/LC_CTYPE OLD_FILES+=usr/share/locale/sr_RS.ISO8859-5/LC_MESSAGES OLD_FILES+=usr/share/locale/sr_RS.ISO8859-5/LC_MONETARY OLD_FILES+=usr/share/locale/sr_RS.ISO8859-5/LC_NUMERIC OLD_FILES+=usr/share/locale/sr_RS.ISO8859-5/LC_TIME OLD_FILES+=usr/share/locale/sr_RS.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/sr_RS.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/sr_RS.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/sr_RS.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/sr_RS.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/sr_RS.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/sr_RS.ISO8859-2/LC_COLLATE OLD_FILES+=usr/share/locale/sr_RS.ISO8859-2/LC_CTYPE OLD_FILES+=usr/share/locale/sr_RS.ISO8859-2/LC_MESSAGES OLD_FILES+=usr/share/locale/sr_RS.ISO8859-2/LC_MONETARY OLD_FILES+=usr/share/locale/sr_RS.ISO8859-2/LC_NUMERIC OLD_FILES+=usr/share/locale/sr_RS.ISO8859-2/LC_TIME OLD_FILES+=usr/share/locale/sr_RS.UTF-8@latin/LC_COLLATE OLD_FILES+=usr/share/locale/sr_RS.UTF-8@latin/LC_CTYPE OLD_FILES+=usr/share/locale/sr_RS.UTF-8@latin/LC_MESSAGES OLD_FILES+=usr/share/locale/sr_RS.UTF-8@latin/LC_MONETARY OLD_FILES+=usr/share/locale/sr_RS.UTF-8@latin/LC_NUMERIC OLD_FILES+=usr/share/locale/sr_RS.UTF-8@latin/LC_TIME OLD_FILES+=usr/share/locale/sv_FI.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/sv_FI.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/sv_FI.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/sv_FI.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/sv_FI.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/sv_FI.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/sv_FI.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/sv_FI.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/sv_FI.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/sv_FI.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/sv_FI.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/sv_FI.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/sv_FI.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/sv_FI.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/sv_FI.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/sv_FI.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/sv_FI.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/sv_FI.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/sv_SE.ISO8859-1/LC_COLLATE OLD_FILES+=usr/share/locale/sv_SE.ISO8859-1/LC_CTYPE OLD_FILES+=usr/share/locale/sv_SE.ISO8859-1/LC_MESSAGES OLD_FILES+=usr/share/locale/sv_SE.ISO8859-1/LC_MONETARY OLD_FILES+=usr/share/locale/sv_SE.ISO8859-1/LC_NUMERIC OLD_FILES+=usr/share/locale/sv_SE.ISO8859-1/LC_TIME OLD_FILES+=usr/share/locale/sv_SE.ISO8859-15/LC_COLLATE OLD_FILES+=usr/share/locale/sv_SE.ISO8859-15/LC_CTYPE OLD_FILES+=usr/share/locale/sv_SE.ISO8859-15/LC_MESSAGES OLD_FILES+=usr/share/locale/sv_SE.ISO8859-15/LC_MONETARY OLD_FILES+=usr/share/locale/sv_SE.ISO8859-15/LC_NUMERIC OLD_FILES+=usr/share/locale/sv_SE.ISO8859-15/LC_TIME OLD_FILES+=usr/share/locale/sv_SE.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/sv_SE.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/sv_SE.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/sv_SE.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/sv_SE.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/sv_SE.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/tr_TR.ISO8859-9/LC_COLLATE OLD_FILES+=usr/share/locale/tr_TR.ISO8859-9/LC_CTYPE OLD_FILES+=usr/share/locale/tr_TR.ISO8859-9/LC_MESSAGES OLD_FILES+=usr/share/locale/tr_TR.ISO8859-9/LC_MONETARY OLD_FILES+=usr/share/locale/tr_TR.ISO8859-9/LC_NUMERIC OLD_FILES+=usr/share/locale/tr_TR.ISO8859-9/LC_TIME OLD_FILES+=usr/share/locale/tr_TR.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/tr_TR.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/tr_TR.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/tr_TR.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/tr_TR.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/tr_TR.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/uk_UA.CP1251/LC_COLLATE OLD_FILES+=usr/share/locale/uk_UA.CP1251/LC_CTYPE OLD_FILES+=usr/share/locale/uk_UA.CP1251/LC_MESSAGES OLD_FILES+=usr/share/locale/uk_UA.CP1251/LC_MONETARY OLD_FILES+=usr/share/locale/uk_UA.CP1251/LC_NUMERIC OLD_FILES+=usr/share/locale/uk_UA.CP1251/LC_TIME OLD_FILES+=usr/share/locale/uk_UA.ISO8859-5/LC_COLLATE OLD_FILES+=usr/share/locale/uk_UA.ISO8859-5/LC_CTYPE OLD_FILES+=usr/share/locale/uk_UA.ISO8859-5/LC_MESSAGES OLD_FILES+=usr/share/locale/uk_UA.ISO8859-5/LC_MONETARY OLD_FILES+=usr/share/locale/uk_UA.ISO8859-5/LC_NUMERIC OLD_FILES+=usr/share/locale/uk_UA.ISO8859-5/LC_TIME OLD_FILES+=usr/share/locale/uk_UA.KOI8-U/LC_COLLATE OLD_FILES+=usr/share/locale/uk_UA.KOI8-U/LC_CTYPE OLD_FILES+=usr/share/locale/uk_UA.KOI8-U/LC_MESSAGES OLD_FILES+=usr/share/locale/uk_UA.KOI8-U/LC_MONETARY OLD_FILES+=usr/share/locale/uk_UA.KOI8-U/LC_NUMERIC OLD_FILES+=usr/share/locale/uk_UA.KOI8-U/LC_TIME OLD_FILES+=usr/share/locale/uk_UA.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/uk_UA.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/uk_UA.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/uk_UA.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/uk_UA.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/uk_UA.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/zh_CN.eucCN/LC_COLLATE OLD_FILES+=usr/share/locale/zh_CN.eucCN/LC_CTYPE OLD_FILES+=usr/share/locale/zh_CN.eucCN/LC_MESSAGES OLD_FILES+=usr/share/locale/zh_CN.eucCN/LC_MONETARY OLD_FILES+=usr/share/locale/zh_CN.eucCN/LC_NUMERIC OLD_FILES+=usr/share/locale/zh_CN.eucCN/LC_TIME OLD_FILES+=usr/share/locale/zh_CN.GB18030/LC_COLLATE OLD_FILES+=usr/share/locale/zh_CN.GB18030/LC_CTYPE OLD_FILES+=usr/share/locale/zh_CN.GB18030/LC_MESSAGES OLD_FILES+=usr/share/locale/zh_CN.GB18030/LC_MONETARY OLD_FILES+=usr/share/locale/zh_CN.GB18030/LC_NUMERIC OLD_FILES+=usr/share/locale/zh_CN.GB18030/LC_TIME OLD_FILES+=usr/share/locale/zh_CN.GB2312/LC_COLLATE OLD_FILES+=usr/share/locale/zh_CN.GB2312/LC_CTYPE OLD_FILES+=usr/share/locale/zh_CN.GB2312/LC_MESSAGES OLD_FILES+=usr/share/locale/zh_CN.GB2312/LC_MONETARY OLD_FILES+=usr/share/locale/zh_CN.GB2312/LC_NUMERIC OLD_FILES+=usr/share/locale/zh_CN.GB2312/LC_TIME OLD_FILES+=usr/share/locale/zh_CN.GBK/LC_COLLATE OLD_FILES+=usr/share/locale/zh_CN.GBK/LC_CTYPE OLD_FILES+=usr/share/locale/zh_CN.GBK/LC_MESSAGES OLD_FILES+=usr/share/locale/zh_CN.GBK/LC_MONETARY OLD_FILES+=usr/share/locale/zh_CN.GBK/LC_NUMERIC OLD_FILES+=usr/share/locale/zh_CN.GBK/LC_TIME OLD_FILES+=usr/share/locale/zh_CN.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/zh_CN.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/zh_CN.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/zh_CN.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/zh_CN.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/zh_CN.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/zh_HK.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/zh_HK.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/zh_HK.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/zh_HK.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/zh_HK.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/zh_HK.UTF-8/LC_TIME OLD_FILES+=usr/share/locale/zh_TW.Big5/LC_COLLATE OLD_FILES+=usr/share/locale/zh_TW.Big5/LC_CTYPE OLD_FILES+=usr/share/locale/zh_TW.Big5/LC_MESSAGES OLD_FILES+=usr/share/locale/zh_TW.Big5/LC_MONETARY OLD_FILES+=usr/share/locale/zh_TW.Big5/LC_NUMERIC OLD_FILES+=usr/share/locale/zh_TW.Big5/LC_TIME OLD_FILES+=usr/share/locale/zh_TW.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/zh_TW.UTF-8/LC_CTYPE OLD_FILES+=usr/share/locale/zh_TW.UTF-8/LC_MESSAGES OLD_FILES+=usr/share/locale/zh_TW.UTF-8/LC_MONETARY OLD_FILES+=usr/share/locale/zh_TW.UTF-8/LC_NUMERIC OLD_FILES+=usr/share/locale/zh_TW.UTF-8/LC_TIME .endif .if ${MK_LOCATE} == no OLD_FILES+=etc/locate.rc OLD_FILES+=etc/periodic/weekly/310.locate OLD_FILES+=usr/bin/locate OLD_FILES+=usr/libexec/locate.bigram OLD_FILES+=usr/libexec/locate.code OLD_FILES+=usr/libexec/locate.concatdb OLD_FILES+=usr/libexec/locate.mklocatedb OLD_FILES+=usr/libexec/locate.updatedb OLD_FILES+=usr/share/man/man1/locate.1.gz OLD_FILES+=usr/share/man/man8/locate.updatedb.8.gz OLD_FILES+=usr/share/man/man8/updatedb.8.gz .endif .if ${MK_LPR} == no OLD_FILES+=etc/hosts.lpd OLD_FILES+=etc/printcap OLD_FILES+=etc/rc.d/lpd OLD_FILES+=usr/bin/lp OLD_FILES+=usr/bin/lpq OLD_FILES+=usr/bin/lpr OLD_FILES+=usr/bin/lprm OLD_FILES+=usr/libexec/lpr/ru/bjc-240.sh.sample OLD_FILES+=usr/libexec/lpr/ru/koi2alt OLD_FILES+=usr/libexec/lpr/ru/koi2855 OLD_DIRS+=usr/libexec/lpr/ru OLD_FILES+=usr/libexec/lpr/lpf OLD_DIRS+=usr/libexec/lpr OLD_FILES+=usr/sbin/chkprintcap OLD_FILES+=usr/sbin/lpc OLD_FILES+=usr/sbin/lpd OLD_FILES+=usr/sbin/lptest OLD_FILES+=usr/sbin/pac OLD_FILES+=usr/share/doc/smm/07.lpd/paper.ascii.gz OLD_DIRS+=usr/share/doc/smm/07.lpd OLD_FILES+=usr/share/examples/etc/hosts.lpd OLD_FILES+=usr/share/examples/etc/printcap OLD_FILES+=usr/share/man/man1/lp.1.gz OLD_FILES+=usr/share/man/man1/lpq.1.gz OLD_FILES+=usr/share/man/man1/lpr.1.gz OLD_FILES+=usr/share/man/man1/lprm.1.gz OLD_FILES+=usr/share/man/man1/lptest.1.gz OLD_FILES+=usr/share/man/man5/printcap.5.gz OLD_FILES+=usr/share/man/man8/chkprintcap.8.gz OLD_FILES+=usr/share/man/man8/lpc.8.gz OLD_FILES+=usr/share/man/man8/lpd.8.gz OLD_FILES+=usr/share/man/man8/pac.8.gz .endif .if ${MK_MAIL} == no OLD_FILES+=etc/aliases OLD_FILES+=etc/mail.rc OLD_FILES+=etc/mail/aliases OLD_FILES+=etc/mail/mailer.conf OLD_FILES+=etc/periodic/daily/130.clean-msgs OLD_FILES+=usr/bin/Mail OLD_FILES+=usr/bin/biff OLD_FILES+=usr/bin/from OLD_FILES+=usr/bin/mail OLD_FILES+=usr/bin/mailx OLD_FILES+=usr/bin/msgs OLD_FILES+=usr/libexec/comsat OLD_FILES+=usr/share/examples/etc/mail.rc OLD_FILES+=usr/share/man/man1/Mail.1.gz OLD_FILES+=usr/share/man/man1/biff.1.gz OLD_FILES+=usr/share/man/man1/from.1.gz OLD_FILES+=usr/share/man/man1/mail.1.gz OLD_FILES+=usr/share/man/man1/mailx.1.gz OLD_FILES+=usr/share/man/man1/msgs.1.gz OLD_FILES+=usr/share/man/man8/comsat.8.gz OLD_FILES+=usr/share/misc/mail.help OLD_FILES+=usr/share/misc/mail.tildehelp .endif .if ${MK_MAILWRAPPER} == no OLD_FILES+=etc/mail/mailer.conf # Don't remove, for no mailwrapper case: # /usr/sbin/sendmail -> /usr/sbin/mailwrapper # /usr/sbin/mailwrapper -> /usr/libexec/sendmail/sendmail #OLD_FILES+=usr/sbin/mailwrapper OLD_FILES+=usr/share/man/man8/mailwrapper.8.gz .endif .if ${MK_MAKE} == no OLD_FILES+=usr/bin/make OLD_FILES+=usr/share/man/man1/make.1.gz OLD_FILES+=usr/share/mk/atf.test.mk OLD_FILES+=usr/share/mk/bsd.README OLD_FILES+=usr/share/mk/bsd.arch.inc.mk OLD_FILES+=usr/share/mk/bsd.compiler.mk OLD_FILES+=usr/share/mk/bsd.cpu.mk OLD_FILES+=usr/share/mk/bsd.crunchgen.mk OLD_FILES+=usr/share/mk/bsd.dep.mk OLD_FILES+=usr/share/mk/bsd.doc.mk OLD_FILES+=usr/share/mk/bsd.dtb.mk OLD_FILES+=usr/share/mk/bsd.endian.mk OLD_FILES+=usr/share/mk/bsd.files.mk OLD_FILES+=usr/share/mk/bsd.incs.mk OLD_FILES+=usr/share/mk/bsd.info.mk OLD_FILES+=usr/share/mk/bsd.init.mk OLD_FILES+=usr/share/mk/bsd.kmod.mk OLD_FILES+=usr/share/mk/bsd.lib.mk OLD_FILES+=usr/share/mk/bsd.libnames.mk OLD_FILES+=usr/share/mk/bsd.links.mk OLD_FILES+=usr/share/mk/bsd.man.mk OLD_FILES+=usr/share/mk/bsd.mkopt.mk OLD_FILES+=usr/share/mk/bsd.nls.mk OLD_FILES+=usr/share/mk/bsd.obj.mk OLD_FILES+=usr/share/mk/bsd.opts.mk OLD_FILES+=usr/share/mk/bsd.own.mk OLD_FILES+=usr/share/mk/bsd.port.mk OLD_FILES+=usr/share/mk/bsd.port.options.mk OLD_FILES+=usr/share/mk/bsd.port.post.mk OLD_FILES+=usr/share/mk/bsd.port.pre.mk OLD_FILES+=usr/share/mk/bsd.port.subdir.mk OLD_FILES+=usr/share/mk/bsd.prog.mk OLD_FILES+=usr/share/mk/bsd.progs.mk OLD_FILES+=usr/share/mk/bsd.snmpmod.mk OLD_FILES+=usr/share/mk/bsd.subdir.mk OLD_FILES+=usr/share/mk/bsd.symver.mk OLD_FILES+=usr/share/mk/bsd.sys.mk OLD_FILES+=usr/share/mk/bsd.test.mk OLD_FILES+=usr/share/mk/plain.test.mk OLD_FILES+=usr/share/mk/suite.test.mk OLD_FILES+=usr/share/mk/sys.mk OLD_FILES+=usr/share/mk/tap.test.mk OLD_FILES+=usr/share/mk/version_gen.awk OLD_FILES+=usr/tests/usr.bin/bmake/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/archives/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.status.2 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.status.3 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.status.4 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.status.5 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.status.6 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.status.7 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stderr.3 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stderr.4 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stderr.5 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stderr.6 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stderr.7 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stdout.3 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stdout.4 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stdout.5 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stdout.6 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stdout.7 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/libtest.a OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.status.2 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.status.3 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.status.4 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.status.5 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.status.6 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.status.7 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stderr.3 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stderr.4 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stderr.5 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stderr.6 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stderr.7 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stdout.3 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stdout.4 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stdout.5 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stdout.6 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stdout.7 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/libtest.a OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.status.2 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.status.3 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.status.4 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.status.5 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.status.6 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.status.7 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stderr.3 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stderr.4 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stderr.5 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stderr.6 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stderr.7 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stdout.3 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stdout.4 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stdout.5 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stdout.6 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stdout.7 OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/libtest.a OLD_FILES+=usr/tests/usr.bin/bmake/basic/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/basic/t0/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/basic/t0/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/basic/t0/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/basic/t0/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/basic/t0/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/basic/t1/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/basic/t1/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/basic/t1/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/basic/t1/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/basic/t1/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/basic/t1/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/basic/t2/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/basic/t2/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/basic/t2/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/basic/t2/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/basic/t2/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/basic/t2/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/basic/t3/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/basic/t3/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/basic/t3/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/basic/t3/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/basic/t3/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/common.sh OLD_FILES+=usr/tests/usr.bin/bmake/execution/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/execution/ellipsis/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/execution/ellipsis/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/execution/ellipsis/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/execution/ellipsis/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/execution/ellipsis/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/execution/ellipsis/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/execution/empty/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/execution/empty/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/execution/empty/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/execution/empty/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/execution/empty/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/execution/empty/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/execution/joberr/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/execution/joberr/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/execution/joberr/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/execution/joberr/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/execution/joberr/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/execution/joberr/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/execution/plus/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/execution/plus/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/execution/plus/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/execution/plus/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/execution/plus/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/execution/plus/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/shell/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/expected.status.2 OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/sh OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/expected.status.2 OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/sh OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/expected.status.2 OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/sh OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/expected.status.2 OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/shell OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/expected.status.2 OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/shell OLD_FILES+=usr/tests/usr.bin/bmake/shell/select/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/shell/select/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/shell/select/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/shell/select/expected.status.2 OLD_FILES+=usr/tests/usr.bin/bmake/shell/select/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/shell/select/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/bmake/shell/select/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/shell/select/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/bmake/shell/select/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/basic/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/basic/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/basic/TEST1.a OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/basic/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/basic/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/basic/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/basic/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild1/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild1/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild1/TEST1.a OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild1/TEST2.a OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild1/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild1/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild1/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild1/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild2/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild2/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild2/TEST1.a OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild2/TEST2.a OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild2/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild2/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild2/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild2/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/syntax/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/syntax/directive-t0/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/syntax/directive-t0/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/syntax/directive-t0/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/directive-t0/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/directive-t0/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/directive-t0/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.status.2 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.status.3 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.status.4 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.status.5 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stderr.3 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stderr.4 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stderr.5 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stdout.3 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stdout.4 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stdout.5 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/syntax/funny-targets/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/syntax/funny-targets/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/syntax/funny-targets/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/funny-targets/expected.status.2 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/funny-targets/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/funny-targets/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/funny-targets/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/funny-targets/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/funny-targets/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/syntax/semi/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/syntax/semi/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/syntax/semi/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/semi/expected.status.2 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/semi/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/semi/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/semi/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/semi/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/bmake/syntax/semi/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/2/1/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/2/1/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/2/1/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/2/1/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/2/1/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/2/1/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/2/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/mk/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/mk/sys.mk OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/2/1/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/2/1/cleanup OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/2/1/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/2/1/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/2/1/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/2/1/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/2/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/mk/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/mk/sys.mk OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/2/1/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/2/1/cleanup OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/2/1/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/2/1/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/2/1/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/2/1/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/2/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/mk/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/mk/sys.mk OLD_FILES+=usr/tests/usr.bin/bmake/test-new.mk OLD_FILES+=usr/tests/usr.bin/bmake/variables/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_M/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_M/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_M/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_M/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_M/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_M/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/expected.status.2 OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/expected.status.3 OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/expected.stderr.3 OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/expected.stdout.3 OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/variables/opt_V/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/variables/opt_V/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/variables/opt_V/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/variables/opt_V/expected.status.2 OLD_FILES+=usr/tests/usr.bin/bmake/variables/opt_V/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/variables/opt_V/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/bmake/variables/opt_V/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/variables/opt_V/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/bmake/variables/opt_V/legacy_test OLD_FILES+=usr/tests/usr.bin/bmake/variables/t0/Kyuafile OLD_FILES+=usr/tests/usr.bin/bmake/variables/t0/Makefile.test OLD_FILES+=usr/tests/usr.bin/bmake/variables/t0/expected.status.1 OLD_FILES+=usr/tests/usr.bin/bmake/variables/t0/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/bmake/variables/t0/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/bmake/variables/t0/legacy_test .endif .if ${MK_MAN} == no MAN_FILES!=find ${DESTDIR}/usr/share/man ${DESTDIR}/usr/share/openssl/man -type f | sed -e 's,^${DESTDIR}/,,'; echo OLD_FILES+=${MAN_FILES} .endif .if ${MK_MAN_UTILS} == no OLD_FILES+=etc/periodic/weekly/320.whatis OLD_FILES+=etc/periodic/weekly/330.catman OLD_FILES+=usr/bin/apropos OLD_FILES+=usr/bin/catman OLD_FILES+=usr/bin/makewhatis OLD_FILES+=usr/bin/man OLD_FILES+=usr/bin/manpath OLD_FILES+=usr/bin/whatis OLD_FILES+=usr/libexec/catman.local OLD_FILES+=usr/libexec/makewhatis.local OLD_FILES+=usr/sbin/manctl OLD_FILES+=usr/share/man/man1/apropos.1.gz OLD_FILES+=usr/share/man/man1/catman.1.gz OLD_FILES+=usr/share/man/man1/makewhatis.1.gz OLD_FILES+=usr/share/man/man1/man.1.gz OLD_FILES+=usr/share/man/man1/manpath.1.gz OLD_FILES+=usr/share/man/man1/whatis.1.gz OLD_FILES+=usr/share/man/man5/man.conf.5.gz OLD_FILES+=usr/share/man/man8/catman.local.8.gz OLD_FILES+=usr/share/man/man8/makewhatis.local.8.gz OLD_FILES+=usr/share/man/man8/manctl.8.gz OLD_FILES+=usr/share/man/whatis OLD_FILES+=usr/share/openssl/man/whatis .endif .if ${MK_MANDOCDB} != no OLD_FILES+=usr/share/man/man1/makewhatis.1.gz .endif .if ${MK_NDIS} == no OLD_FILES+=usr/sbin/ndiscvt OLD_FILES+=usr/sbin/ndisgen OLD_FILES+=usr/share/man/man8/ndiscvt.8.gz OLD_FILES+=usr/share/man/man8/ndisgen.8.gz OLD_FILES+=usr/share/misc/windrv_stub.c .endif .if ${MK_NETCAT} == no OLD_FILES+=usr/bin/nc OLD_FILES+=usr/share/man/man1/nc.1.gz .endif .if ${MK_NETGRAPH} == no OLD_FILES+=usr/include/netgraph.h OLD_FILES+=usr/lib/libnetgraph.a OLD_FILES+=usr/lib/libnetgraph.so OLD_LIBS+=usr/lib/libnetgraph.so.4 OLD_FILES+=usr/lib/libnetgraph_p.a OLD_FILES+=usr/lib32/libnetgraph.a OLD_FILES+=usr/lib32/libnetgraph.so OLD_LIBS+=usr/lib32/libnetgraph.so.4 OLD_FILES+=usr/lib32/libnetgraph_p.a OLD_FILES+=usr/libexec/pppoed OLD_FILES+=usr/sbin/flowctl OLD_FILES+=usr/sbin/lmcconfig OLD_FILES+=usr/sbin/ngctl OLD_FILES+=usr/sbin/nghook OLD_FILES+=usr/share/man/man3/NgAllocRecvAsciiMsg.3.gz OLD_FILES+=usr/share/man/man3/NgAllocRecvData.3.gz OLD_FILES+=usr/share/man/man3/NgAllocRecvMsg.3.gz OLD_FILES+=usr/share/man/man3/NgMkSockNode.3.gz OLD_FILES+=usr/share/man/man3/NgNameNode.3.gz OLD_FILES+=usr/share/man/man3/NgRecvAsciiMsg.3.gz OLD_FILES+=usr/share/man/man3/NgRecvData.3.gz OLD_FILES+=usr/share/man/man3/NgRecvMsg.3.gz OLD_FILES+=usr/share/man/man3/NgSendAsciiMsg.3.gz OLD_FILES+=usr/share/man/man3/NgSendData.3.gz OLD_FILES+=usr/share/man/man3/NgSendMsg.3.gz OLD_FILES+=usr/share/man/man3/NgSendMsgReply.3.gz OLD_FILES+=usr/share/man/man3/NgSetDebug.3.gz OLD_FILES+=usr/share/man/man3/NgSetErrLog.3.gz OLD_FILES+=usr/share/man/man3/netgraph.3.gz OLD_FILES+=usr/share/man/man8/flowctl.8.gz OLD_FILES+=usr/share/man/man8/lmcconfig.8.gz OLD_FILES+=usr/share/man/man8/ngctl.8.gz OLD_FILES+=usr/share/man/man8/nghook.8.gz OLD_FILES+=usr/share/man/man8/pppoed.8.gz .endif .if ${MK_NETGRAPH_SUPPORT} == no OLD_FILES+=usr/include/bsnmp/snmp_netgraph.h OLD_FILES+=usr/lib/snmp_netgraph.so OLD_LIBS+=usr/lib/snmp_netgraph.so.6 OLD_FILES+=usr/share/man/man3/snmp_netgraph.3.gz OLD_FILES+=usr/share/snmp/defs/netgraph_tree.def OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-NETGRAPH.txt .endif .if ${MK_NIS} == no OLD_FILES+=usr/bin/ypcat OLD_FILES+=usr/bin/ypchfn OLD_FILES+=usr/bin/ypchpass OLD_FILES+=usr/bin/ypchsh OLD_FILES+=usr/bin/ypmatch OLD_FILES+=usr/bin/yppasswd OLD_FILES+=usr/bin/ypwhich OLD_FILES+=usr/include/ypclnt.h OLD_FILES+=usr/lib/libypclnt.a OLD_FILES+=usr/lib/libypclnt.so OLD_LIBS+=usr/lib/libypclnt.so.4 OLD_FILES+=usr/lib/libypclnt_p.a .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" OLD_FILES+=usr/lib32/libypclnt.a OLD_FILES+=usr/lib32/libypclnt.so OLD_LIBS+=usr/lib32/libypclnt.so.4 OLD_FILES+=usr/lib32/libypclnt_p.a .endif OLD_FILES+=usr/libexec/mknetid OLD_FILES+=usr/libexec/yppwupdate OLD_FILES+=usr/libexec/ypxfr OLD_FILES+=usr/sbin/rpc.yppasswdd OLD_FILES+=usr/sbin/rpc.ypupdated OLD_FILES+=usr/sbin/rpc.ypxfrd OLD_FILES+=usr/sbin/yp_mkdb OLD_FILES+=usr/sbin/ypbind OLD_FILES+=usr/sbin/ypinit OLD_FILES+=usr/sbin/yppoll OLD_FILES+=usr/sbin/yppush OLD_FILES+=usr/sbin/ypserv OLD_FILES+=usr/sbin/ypset OLD_FILES+=usr/share/man/man1/ypcat.1.gz OLD_FILES+=usr/share/man/man1/ypchfn.1.gz OLD_FILES+=usr/share/man/man1/ypchpass.1.gz OLD_FILES+=usr/share/man/man1/ypchsh.1.gz OLD_FILES+=usr/share/man/man1/ypmatch.1.gz OLD_FILES+=usr/share/man/man1/yppasswd.1.gz OLD_FILES+=usr/share/man/man1/ypwhich.1.gz OLD_FILES+=usr/share/man/man5/netid.5.gz OLD_FILES+=usr/share/man/man8/mknetid.8.gz OLD_FILES+=usr/share/man/man8/rpc.yppasswdd.8.gz OLD_FILES+=usr/share/man/man8/rpc.ypxfrd.8.gz OLD_FILES+=usr/share/man/man8/NIS.8.gz OLD_FILES+=usr/share/man/man8/YP.8.gz OLD_FILES+=usr/share/man/man8/yp.8.gz OLD_FILES+=usr/share/man/man8/nis.8.gz OLD_FILES+=usr/share/man/man8/yp_mkdb.8.gz OLD_FILES+=usr/share/man/man8/ypbind.8.gz OLD_FILES+=usr/share/man/man8/ypinit.8.gz OLD_FILES+=usr/share/man/man8/yppoll.8.gz OLD_FILES+=usr/share/man/man8/yppush.8.gz OLD_FILES+=usr/share/man/man8/ypserv.8.gz OLD_FILES+=usr/share/man/man8/ypset.8.gz OLD_FILES+=usr/share/man/man8/ypxfr.8.gz OLD_FILES+=var/yp/Makefile OLD_FILES+=var/yp/Makefile.dist .endif .if ${MK_NLS} == no OLD_FILES+=usr/share/nls/C/ee.cat OLD_FILES+=usr/share/nls/be_BY.UTF-8/libc.cat OLD_FILES+=usr/share/nls/ca_ES.ISO8859-1/libc.cat OLD_FILES+=usr/share/nls/de_AT.ISO8859-1/ee.cat OLD_FILES+=usr/share/nls/de_AT.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/de_AT.ISO8859-15/ee.cat OLD_FILES+=usr/share/nls/de_AT.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/de_AT.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/de_CH.ISO8859-1/ee.cat OLD_FILES+=usr/share/nls/de_CH.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/de_CH.ISO8859-15/ee.cat OLD_FILES+=usr/share/nls/de_CH.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/de_CH.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/de_DE.ISO8859-1/ee.cat OLD_FILES+=usr/share/nls/de_DE.ISO8859-1/libc.cat OLD_FILES+=usr/share/nls/de_DE.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/de_DE.ISO8859-15/ee.cat OLD_FILES+=usr/share/nls/de_DE.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/de_DE.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/el_GR.ISO8859-7/libc.cat OLD_FILES+=usr/share/nls/el_GR.ISO8859-7/tcsh.cat OLD_FILES+=usr/share/nls/el_GR.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/en_US.ISO8859-1/ee.cat OLD_FILES+=usr/share/nls/en_US.ISO8859-15/ee.cat OLD_FILES+=usr/share/nls/es_ES.ISO8859-1/grep.cat OLD_FILES+=usr/share/nls/es_ES.ISO8859-1/libc.cat OLD_FILES+=usr/share/nls/es_ES.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/es_ES.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/es_ES.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/et_EE.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/et_EE.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/fi_FI.ISO8859-1/libc.cat OLD_FILES+=usr/share/nls/fi_FI.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/fi_FI.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/fi_FI.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/fr_BE.ISO8859-1/ee.cat OLD_FILES+=usr/share/nls/fr_BE.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/fr_BE.ISO8859-15/ee.cat OLD_FILES+=usr/share/nls/fr_BE.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/fr_BE.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/fr_CA.ISO8859-1/ee.cat OLD_FILES+=usr/share/nls/fr_CA.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/fr_CA.ISO8859-15/ee.cat OLD_FILES+=usr/share/nls/fr_CA.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/fr_CA.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/fr_CH.ISO8859-1/ee.cat OLD_FILES+=usr/share/nls/fr_CH.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/fr_CH.ISO8859-15/ee.cat OLD_FILES+=usr/share/nls/fr_CH.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/fr_CH.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/fr_FR.ISO8859-1/ee.cat OLD_FILES+=usr/share/nls/fr_FR.ISO8859-1/libc.cat OLD_FILES+=usr/share/nls/fr_FR.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/fr_FR.ISO8859-15/ee.cat OLD_FILES+=usr/share/nls/fr_FR.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/fr_FR.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/gl_ES.ISO8859-1/grep.cat OLD_FILES+=usr/share/nls/gl_ES.ISO8859-1/libc.cat OLD_FILES+=usr/share/nls/hu_HU.ISO8859-2/ee.cat OLD_FILES+=usr/share/nls/hu_HU.ISO8859-2/grep.cat OLD_FILES+=usr/share/nls/hu_HU.ISO8859-2/libc.cat OLD_FILES+=usr/share/nls/hu_HU.ISO8859-2/sort.cat OLD_FILES+=usr/share/nls/it_CH.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/it_CH.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/it_CH.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/it_IT.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/it_IT.ISO8859-15/libc.cat OLD_FILES+=usr/share/nls/it_IT.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/it_IT.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/ja_JP.SJIS/grep.cat OLD_FILES+=usr/share/nls/ja_JP.SJIS/tcsh.cat OLD_FILES+=usr/share/nls/ja_JP.UTF-8/grep.cat OLD_FILES+=usr/share/nls/ja_JP.UTF-8/libc.cat OLD_FILES+=usr/share/nls/ja_JP.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/ja_JP.eucJP/grep.cat OLD_FILES+=usr/share/nls/ja_JP.eucJP/libc.cat OLD_FILES+=usr/share/nls/ja_JP.eucJP/tcsh.cat OLD_FILES+=usr/share/nls/ko_KR.UTF-8/libc.cat OLD_FILES+=usr/share/nls/ko_KR.eucKR/libc.cat OLD_FILES+=usr/share/nls/mn_MN.UTF-8/libc.cat OLD_FILES+=usr/share/nls/nl_NL.ISO8859-1/libc.cat OLD_FILES+=usr/share/nls/no_NO.ISO8859-1/libc.cat OLD_FILES+=usr/share/nls/pl_PL.ISO8859-2/ee.cat OLD_FILES+=usr/share/nls/pl_PL.ISO8859-2/libc.cat OLD_FILES+=usr/share/nls/pt_BR.ISO8859-1/ee.cat OLD_FILES+=usr/share/nls/pt_BR.ISO8859-1/grep.cat OLD_FILES+=usr/share/nls/pt_BR.ISO8859-1/libc.cat OLD_FILES+=usr/share/nls/pt_PT.ISO8859-1/ee.cat OLD_FILES+=usr/share/nls/ru_RU.CP1251/tcsh.cat OLD_FILES+=usr/share/nls/ru_RU.CP866/tcsh.cat OLD_FILES+=usr/share/nls/ru_RU.ISO8859-5/tcsh.cat OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/ee.cat OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/grep.cat OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/libc.cat OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/tcsh.cat OLD_FILES+=usr/share/nls/ru_RU.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/sk_SK.ISO8859-2/libc.cat OLD_FILES+=usr/share/nls/sv_SE.ISO8859-1/libc.cat OLD_FILES+=usr/share/nls/uk_UA.ISO8859-5/tcsh.cat OLD_FILES+=usr/share/nls/uk_UA.KOI8-U/ee.cat OLD_FILES+=usr/share/nls/uk_UA.KOI8-U/tcsh.cat OLD_FILES+=usr/share/nls/uk_UA.UTF-8/grep.cat OLD_FILES+=usr/share/nls/uk_UA.UTF-8/libc.cat OLD_FILES+=usr/share/nls/uk_UA.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/zh_CN.GB18030/libc.cat OLD_FILES+=usr/share/nls/zh_CN.GB2312/libc.cat OLD_FILES+=usr/share/nls/zh_CN.UTF-8/grep.cat OLD_FILES+=usr/share/nls/zh_CN.UTF-8/libc.cat OLD_FILES+=usr/tests/bin/sh/builtins/locale1.0 .endif .if ${MK_NLS_CATALOGS} == no OLD_FILES+=usr/share/nls/de_AT.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/de_CH.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/de_DE.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/el_GR.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/es_ES.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/et_EE.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/fi_FI.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/fr_BE.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/fr_CA.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/fr_CH.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/fr_FR.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/it_CH.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/it_IT.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/ja_JP.SJIS/tcsh.cat OLD_FILES+=usr/share/nls/ja_JP.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/ru_RU.CP1251/tcsh.cat OLD_FILES+=usr/share/nls/ru_RU.CP866/tcsh.cat OLD_FILES+=usr/share/nls/ru_RU.ISO8859-5/tcsh.cat OLD_FILES+=usr/share/nls/ru_RU.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/uk_UA.ISO8859-5/tcsh.cat OLD_FILES+=usr/share/nls/uk_UA.UTF-8/tcsh.cat .endif .if ${MK_NS_CACHING} == no OLD_FILES+=etc/nscd.conf OLD_FILES+=etc/rc.d/nscd OLD_FILES+=usr/sbin/nscd OLD_FILES+=usr/share/examples/etc/nscd.conf OLD_FILES+=usr/share/man/man5/nscd.conf.5.gz OLD_FILES+=usr/share/man/man8/nscd.8.gz .endif .if ${MK_NTP} == no OLD_FILES+=etc/ntp.conf OLD_FILES+=etc/periodic/daily/480.status-ntpd OLD_FILES+=usr/bin/ntpq OLD_FILES+=usr/sbin/ntp-keygen OLD_FILES+=usr/sbin/ntpd OLD_FILES+=usr/sbin/ntpdate OLD_FILES+=usr/sbin/ntpdc OLD_FILES+=usr/sbin/ntptime OLD_FILES+=usr/sbin/sntp OLD_FILES+=usr/share/doc/ntp/accopt.html OLD_FILES+=usr/share/doc/ntp/assoc.html OLD_FILES+=usr/share/doc/ntp/audio.html OLD_FILES+=usr/share/doc/ntp/authopt.html OLD_FILES+=usr/share/doc/ntp/build.html OLD_FILES+=usr/share/doc/ntp/clockopt.html OLD_FILES+=usr/share/doc/ntp/config.html OLD_FILES+=usr/share/doc/ntp/confopt.html OLD_FILES+=usr/share/doc/ntp/copyright.html OLD_FILES+=usr/share/doc/ntp/debug.html OLD_FILES+=usr/share/doc/ntp/driver1.html OLD_FILES+=usr/share/doc/ntp/driver10.html OLD_FILES+=usr/share/doc/ntp/driver11.html OLD_FILES+=usr/share/doc/ntp/driver12.html OLD_FILES+=usr/share/doc/ntp/driver16.html OLD_FILES+=usr/share/doc/ntp/driver18.html OLD_FILES+=usr/share/doc/ntp/driver19.html OLD_FILES+=usr/share/doc/ntp/driver2.html OLD_FILES+=usr/share/doc/ntp/driver20.html OLD_FILES+=usr/share/doc/ntp/driver22.html OLD_FILES+=usr/share/doc/ntp/driver26.html OLD_FILES+=usr/share/doc/ntp/driver27.html OLD_FILES+=usr/share/doc/ntp/driver28.html OLD_FILES+=usr/share/doc/ntp/driver29.html OLD_FILES+=usr/share/doc/ntp/driver3.html OLD_FILES+=usr/share/doc/ntp/driver30.html OLD_FILES+=usr/share/doc/ntp/driver32.html OLD_FILES+=usr/share/doc/ntp/driver33.html OLD_FILES+=usr/share/doc/ntp/driver34.html OLD_FILES+=usr/share/doc/ntp/driver35.html OLD_FILES+=usr/share/doc/ntp/driver36.html OLD_FILES+=usr/share/doc/ntp/driver37.html OLD_FILES+=usr/share/doc/ntp/driver4.html OLD_FILES+=usr/share/doc/ntp/driver5.html OLD_FILES+=usr/share/doc/ntp/driver6.html OLD_FILES+=usr/share/doc/ntp/driver7.html OLD_FILES+=usr/share/doc/ntp/driver8.html OLD_FILES+=usr/share/doc/ntp/driver9.html OLD_FILES+=usr/share/doc/ntp/extern.html OLD_FILES+=usr/share/doc/ntp/hints.html OLD_FILES+=usr/share/doc/ntp/howto.html OLD_FILES+=usr/share/doc/ntp/index.html OLD_FILES+=usr/share/doc/ntp/kern.html OLD_FILES+=usr/share/doc/ntp/ldisc.html OLD_FILES+=usr/share/doc/ntp/measure.html OLD_FILES+=usr/share/doc/ntp/miscopt.html OLD_FILES+=usr/share/doc/ntp/monopt.html OLD_FILES+=usr/share/doc/ntp/mx4200data.html OLD_FILES+=usr/share/doc/ntp/notes.html OLD_FILES+=usr/share/doc/ntp/ntpd.html OLD_FILES+=usr/share/doc/ntp/ntpdate.html OLD_FILES+=usr/share/doc/ntp/ntpdc.html OLD_FILES+=usr/share/doc/ntp/ntpq.html OLD_FILES+=usr/share/doc/ntp/ntptime.html OLD_FILES+=usr/share/doc/ntp/ntptrace.html OLD_FILES+=usr/share/doc/ntp/parsedata.html OLD_FILES+=usr/share/doc/ntp/parsenew.html OLD_FILES+=usr/share/doc/ntp/patches.html OLD_FILES+=usr/share/doc/ntp/porting.html OLD_FILES+=usr/share/doc/ntp/pps.html OLD_FILES+=usr/share/doc/ntp/prefer.html OLD_FILES+=usr/share/doc/ntp/quick.html OLD_FILES+=usr/share/doc/ntp/rdebug.html OLD_FILES+=usr/share/doc/ntp/refclock.html OLD_FILES+=usr/share/doc/ntp/release.html OLD_FILES+=usr/share/doc/ntp/tickadj.html OLD_DIRS+=usr/share/doc/ntp OLD_FILES+=usr/share/examples/etc/ntp.conf OLD_FILES+=usr/share/man/man1/sntp.1.gz OLD_FILES+=usr/share/man/man5/ntp.conf.5.gz OLD_FILES+=usr/share/man/man5/ntp.keys.5.gz OLD_FILES+=usr/share/man/man8/ntp-keygen.8.gz OLD_FILES+=usr/share/man/man8/ntpd.8.gz OLD_FILES+=usr/share/man/man8/ntpdate.8.gz OLD_FILES+=usr/share/man/man8/ntpdc.8.gz OLD_FILES+=usr/share/man/man8/ntpq.8.gz OLD_FILES+=usr/share/man/man8/ntptime.8.gz .endif #.if ${MK_OBJC} == no # to be filled in #.endif .if ${MK_OPENSSH} == no OLD_FILES+=etc/rc.d/sshd OLD_FILES+=etc/ssh/moduli OLD_FILES+=etc/ssh/ssh_config OLD_FILES+=etc/ssh/sshd_config OLD_FILES+=usr/bin/scp OLD_FILES+=usr/bin/sftp OLD_FILES+=usr/bin/slogin OLD_FILES+=usr/bin/ssh OLD_FILES+=usr/bin/ssh-add OLD_FILES+=usr/bin/ssh-agent OLD_FILES+=usr/bin/ssh-copy-id OLD_FILES+=usr/bin/ssh-keygen OLD_FILES+=usr/bin/ssh-keyscan OLD_FILES+=usr/lib/pam_ssh.so OLD_LIBS+=usr/lib/pam_ssh.so.6 OLD_FILES+=usr/lib/private/libssh.a OLD_FILES+=usr/lib/private/libssh.so OLD_LIBS+=usr/lib/private/libssh.so.5 OLD_FILES+=usr/lib/private/libssh_p.a .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" OLD_FILES+=usr/lib32/pam_ssh.so OLD_LIBS+=usr/lib32/pam_ssh.so.6 OLD_FILES+=usr/lib32/private/libssh.a OLD_FILES+=usr/lib32/private/libssh.so OLD_LIBS+=usr/lib32/private/libssh.so.5 OLD_FILES+=usr/lib32/private/libssh_p.a .endif OLD_FILES+=usr/libexec/sftp-server OLD_FILES+=usr/libexec/ssh-keysign OLD_FILES+=usr/libexec/ssh-pkcs11-helper OLD_FILES+=usr/sbin/sshd OLD_FILES+=usr/share/man/man1/scp.1.gz OLD_FILES+=usr/share/man/man1/sftp.1.gz OLD_FILES+=usr/share/man/man1/slogin.1.gz OLD_FILES+=usr/share/man/man1/ssh-add.1.gz OLD_FILES+=usr/share/man/man1/ssh-agent.1.gz OLD_FILES+=usr/share/man/man1/ssh-copy-id.1.gz OLD_FILES+=usr/share/man/man1/ssh-keygen.1.gz OLD_FILES+=usr/share/man/man1/ssh-keyscan.1.gz OLD_FILES+=usr/share/man/man1/ssh.1.gz OLD_FILES+=usr/share/man/man5/ssh_config.5.gz OLD_FILES+=usr/share/man/man5/sshd_config.5.gz OLD_FILES+=usr/share/man/man8/pam_ssh.8.gz OLD_FILES+=usr/share/man/man8/sftp-server.8.gz OLD_FILES+=usr/share/man/man8/ssh-keysign.8.gz OLD_FILES+=usr/share/man/man8/ssh-pkcs11-helper.8.gz OLD_FILES+=usr/share/man/man8/sshd.8.gz .endif .if ${MK_OPENSSL} == no OLD_FILES+=etc/rc.d/keyserv .endif .if ${MK_PC_SYSINSTALL} == no # backend-partmanager OLD_FILES+=usr/share/pc-sysinstall/backend-partmanager/create-part.sh OLD_FILES+=usr/share/pc-sysinstall/backend-partmanager/delete-part.sh # backend-query OLD_FILES+=usr/share/pc-sysinstall/backend-query/detect-emulation.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/detect-laptop.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/detect-nics.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/disk-info.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/disk-list.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/disk-part.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/enable-net.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/get-packages.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/list-components.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/list-config.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/list-mirrors.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/list-packages.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/list-rsync-backups.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/list-tzones.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/query-langs.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/send-logs.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/setup-ssh-keys.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/set-mirror.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/sys-mem.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/test-live.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/test-netup.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/update-part-list.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/xkeyboard-layouts.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/xkeyboard-models.sh OLD_FILES+=usr/share/pc-sysinstall/backend-query/xkeyboard-variants.sh # backend OLD_FILES+=usr/share/pc-sysinstall/backend/functions-bsdlabel.sh OLD_FILES+=usr/share/pc-sysinstall/backend/functions-cleanup.sh OLD_FILES+=usr/share/pc-sysinstall/backend/functions-disk.sh OLD_FILES+=usr/share/pc-sysinstall/backend/functions-extractimage.sh OLD_FILES+=usr/share/pc-sysinstall/backend/functions-ftp.sh OLD_FILES+=usr/share/pc-sysinstall/backend/functions-installcomponents.sh OLD_FILES+=usr/share/pc-sysinstall/backend/functions-installpackages.sh OLD_FILES+=usr/share/pc-sysinstall/backend/functions-localize.sh OLD_FILES+=usr/share/pc-sysinstall/backend/functions-mountdisk.sh OLD_FILES+=usr/share/pc-sysinstall/backend/functions-mountoptical.sh OLD_FILES+=usr/share/pc-sysinstall/backend/functions-networking.sh OLD_FILES+=usr/share/pc-sysinstall/backend/functions-newfs.sh OLD_FILES+=usr/share/pc-sysinstall/backend/functions-parse.sh OLD_FILES+=usr/share/pc-sysinstall/backend/functions-packages.sh OLD_FILES+=usr/share/pc-sysinstall/backend/functions-runcommands.sh OLD_FILES+=usr/share/pc-sysinstall/backend/functions-unmount.sh OLD_FILES+=usr/share/pc-sysinstall/backend/functions-upgrade.sh OLD_FILES+=usr/share/pc-sysinstall/backend/functions-users.sh OLD_FILES+=usr/share/pc-sysinstall/backend/functions.sh OLD_FILES+=usr/share/pc-sysinstall/backend/installimage.sh OLD_FILES+=usr/share/pc-sysinstall/backend/parseconfig.sh OLD_FILES+=usr/share/pc-sysinstall/backend/startautoinstall.sh # conf OLD_FILES+=usr/share/pc-sysinstall/conf/avail-langs OLD_FILES+=usr/share/pc-sysinstall/conf/exclude-from-upgrade OLD_FILES+=usr/share/pc-sysinstall/conf/license/bsd-en.txt OLD_FILES+=usr/share/pc-sysinstall/conf/license/intel-en.txt OLD_FILES+=usr/share/pc-sysinstall/conf/license/nvidia-en.txt OLD_FILES+=usr/share/pc-sysinstall/conf/pc-sysinstall.conf # doc OLD_FILES+=usr/share/pc-sysinstall/doc/help-disk-list OLD_FILES+=usr/share/pc-sysinstall/doc/help-disk-size OLD_FILES+=usr/share/pc-sysinstall/doc/help-index OLD_FILES+=usr/share/pc-sysinstall/doc/help-start-autoinstall # examples OLD_FILES+=usr/share/examples/pc-sysinstall/README OLD_FILES+=usr/share/examples/pc-sysinstall/pc-autoinstall.conf OLD_FILES+=usr/share/examples/pc-sysinstall/pcinstall.cfg.fbsd-netinstall OLD_FILES+=usr/share/examples/pc-sysinstall/pcinstall.cfg.geli OLD_FILES+=usr/share/examples/pc-sysinstall/pcinstall.cfg.gmirror OLD_FILES+=usr/share/examples/pc-sysinstall/pcinstall.cfg.netinstall OLD_FILES+=usr/share/examples/pc-sysinstall/pcinstall.cfg.restore OLD_FILES+=usr/share/examples/pc-sysinstall/pcinstall.cfg.rsync OLD_FILES+=usr/share/examples/pc-sysinstall/pcinstall.cfg.upgrade OLD_FILES+=usr/share/examples/pc-sysinstall/pcinstall.cfg.zfs # pc-sysinstall OLD_FILES+=usr/sbin/pc-sysinstall OLD_FILES+=usr/share/man/man8/pc-sysinstall.8.gz OLD_DIRS+=usr/share/pc-sysinstall/backend OLD_DIRS+=usr/share/pc-sysinstall/backend-partmanager OLD_DIRS+=usr/share/pc-sysinstall/backend-query OLD_DIRS+=usr/share/pc-sysinstall/conf/license OLD_DIRS+=usr/share/pc-sysinstall/conf OLD_DIRS+=usr/share/pc-sysinstall/doc OLD_DIRS+=usr/share/pc-sysinstall OLD_DIRS+=usr/share/examples/pc-sysinstall .endif .if ${MK_PF} == no OLD_FILES+=etc/periodic/security/520.pfdenied OLD_FILES+=etc/pf.os OLD_FILES+=etc/rc.d/ftp-proxy OLD_FILES+=sbin/pfctl OLD_FILES+=sbin/pflogd OLD_FILES+=usr/include/netpfil/pf/pf.h OLD_FILES+=usr/include/netpfil/pf/pf_altq.h OLD_FILES+=usr/include/netpfil/pf/pf_mtag.h OLD_FILES+=usr/lib/snmp_pf.so OLD_LIBS+=usr/lib/snmp_pf.so.6 OLD_FILES+=usr/libexec/tftp-proxy OLD_FILES+=usr/sbin/ftp-proxy OLD_FILES+=usr/share/examples/etc/pf.os OLD_FILES+=usr/share/examples/pf/ackpri OLD_FILES+=usr/share/examples/pf/faq-example1 OLD_FILES+=usr/share/examples/pf/faq-example2 OLD_FILES+=usr/share/examples/pf/faq-example3 OLD_FILES+=usr/share/examples/pf/pf.conf OLD_FILES+=usr/share/examples/pf/queue1 OLD_FILES+=usr/share/examples/pf/queue2 OLD_FILES+=usr/share/examples/pf/queue3 OLD_FILES+=usr/share/examples/pf/queue4 OLD_FILES+=usr/share/examples/pf/spamd OLD_DIRS+=usr/share/examples/pf OLD_FILES+=usr/share/man/man4/pf.4.gz OLD_FILES+=usr/share/man/man4/pflog.4.gz OLD_FILES+=usr/share/man/man4/pfsync.4.gz OLD_FILES+=usr/share/man/man5/pf.conf.5.gz OLD_FILES+=usr/share/man/man5/pf.os.5.gz OLD_FILES+=usr/share/man/man8/ftp-proxy.8.gz OLD_FILES+=usr/share/man/man8/pfctl.8.gz OLD_FILES+=usr/share/man/man8/pflogd.8.gz OLD_FILES+=usr/share/man/man8/tftp-proxy.8.gz OLD_FILES+=usr/share/snmp/defs/pf_tree.def OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-PF-MIB.txt .endif .if ${MK_PKGBOOTSTRAP} == no OLD_FILES+=usr/sbin/pkg OLD_FILES+=usr/share/man/man7/pkg.7.gz .endif .if ${MK_PMC} == no OLD_FILES+=usr/bin/pmcstudy OLD_FILES+=usr/include/pmc.h OLD_FILES+=usr/include/pmclog.h OLD_FILES+=usr/lib/libpmc.a OLD_FILES+=usr/lib/libpmc.so OLD_LIBS+=usr/lib/libpmc.so.5 OLD_FILES+=usr/lib/libpmc_p.a OLD_FILES+=usr/lib32/libpmc.a OLD_FILES+=usr/lib32/libpmc.so OLD_LIBS+=usr/lib32/libpmc.so.5 OLD_FILES+=usr/lib32/libpmc_p.a OLD_FILES+=usr/sbin/pmcannotate OLD_FILES+=usr/sbin/pmccontrol OLD_FILES+=usr/sbin/pmcstat OLD_FILES+=usr/share/man/man1/pmcstudy.1.gz OLD_FILES+=usr/share/man/man3/pmc.3.gz OLD_FILES+=usr/share/man/man3/pmc.atom.3.gz OLD_FILES+=usr/share/man/man3/pmc.atomsilvermont.3.gz OLD_FILES+=usr/share/man/man3/pmc.core.3.gz OLD_FILES+=usr/share/man/man3/pmc.core2.3.gz OLD_FILES+=usr/share/man/man3/pmc.corei7.3.gz OLD_FILES+=usr/share/man/man3/pmc.corei7uc.3.gz OLD_FILES+=usr/share/man/man3/pmc.haswell.3.gz OLD_FILES+=usr/share/man/man3/pmc.haswelluc.3.gz OLD_FILES+=usr/share/man/man3/pmc.iaf.3.gz OLD_FILES+=usr/share/man/man3/pmc.ivybridge.3.gz OLD_FILES+=usr/share/man/man3/pmc.ivybridgexeon.3.gz OLD_FILES+=usr/share/man/man3/pmc.k7.3.gz OLD_FILES+=usr/share/man/man3/pmc.k8.3.gz OLD_FILES+=usr/share/man/man3/pmc.mips24k.3.gz OLD_FILES+=usr/share/man/man3/pmc.octeon.3.gz OLD_FILES+=usr/share/man/man3/pmc.p4.3.gz OLD_FILES+=usr/share/man/man3/pmc.p5.3.gz OLD_FILES+=usr/share/man/man3/pmc.p6.3.gz OLD_FILES+=usr/share/man/man3/pmc.sandybridge.3.gz OLD_FILES+=usr/share/man/man3/pmc.sandybridgeuc.3.gz OLD_FILES+=usr/share/man/man3/pmc.sandybridgexeon.3.gz OLD_FILES+=usr/share/man/man3/pmc.soft.3.gz OLD_FILES+=usr/share/man/man3/pmc.tsc.3.gz OLD_FILES+=usr/share/man/man3/pmc.ucf.3.gz OLD_FILES+=usr/share/man/man3/pmc.westmere.3.gz OLD_FILES+=usr/share/man/man3/pmc.westmereuc.3.gz OLD_FILES+=usr/share/man/man3/pmc.xscale.3.gz OLD_FILES+=usr/share/man/man3/pmc_allocate.3.gz OLD_FILES+=usr/share/man/man3/pmc_attach.3.gz OLD_FILES+=usr/share/man/man3/pmc_capabilities.3.gz OLD_FILES+=usr/share/man/man3/pmc_configure_logfile.3.gz OLD_FILES+=usr/share/man/man3/pmc_cpuinfo.3.gz OLD_FILES+=usr/share/man/man3/pmc_detach.3.gz OLD_FILES+=usr/share/man/man3/pmc_disable.3.gz OLD_FILES+=usr/share/man/man3/pmc_enable.3.gz OLD_FILES+=usr/share/man/man3/pmc_event_names_of_class.3.gz OLD_FILES+=usr/share/man/man3/pmc_flush_logfile.3.gz OLD_FILES+=usr/share/man/man3/pmc_get_driver_stats.3.gz OLD_FILES+=usr/share/man/man3/pmc_get_msr.3.gz OLD_FILES+=usr/share/man/man3/pmc_init.3.gz OLD_FILES+=usr/share/man/man3/pmc_name_of_capability.3.gz OLD_FILES+=usr/share/man/man3/pmc_name_of_class.3.gz OLD_FILES+=usr/share/man/man3/pmc_name_of_cputype.3.gz OLD_FILES+=usr/share/man/man3/pmc_name_of_disposition.3.gz OLD_FILES+=usr/share/man/man3/pmc_name_of_event.3.gz OLD_FILES+=usr/share/man/man3/pmc_name_of_mode.3.gz OLD_FILES+=usr/share/man/man3/pmc_name_of_state.3.gz OLD_FILES+=usr/share/man/man3/pmc_ncpu.3.gz OLD_FILES+=usr/share/man/man3/pmc_npmc.3.gz OLD_FILES+=usr/share/man/man3/pmc_pmcinfo.3.gz OLD_FILES+=usr/share/man/man3/pmc_read.3.gz OLD_FILES+=usr/share/man/man3/pmc_release.3.gz OLD_FILES+=usr/share/man/man3/pmc_rw.3.gz OLD_FILES+=usr/share/man/man3/pmc_set.3.gz OLD_FILES+=usr/share/man/man3/pmc_start.3.gz OLD_FILES+=usr/share/man/man3/pmc_stop.3.gz OLD_FILES+=usr/share/man/man3/pmc_width.3.gz OLD_FILES+=usr/share/man/man3/pmc_write.3.gz OLD_FILES+=usr/share/man/man3/pmc_writelog.3.gz OLD_FILES+=usr/share/man/man3/pmclog.3.gz OLD_FILES+=usr/share/man/man3/pmclog_close.3.gz OLD_FILES+=usr/share/man/man3/pmclog_feed.3.gz OLD_FILES+=usr/share/man/man3/pmclog_open.3.gz OLD_FILES+=usr/share/man/man3/pmclog_read.3.gz OLD_FILES+=usr/share/man/man8/pmcannotate.8.gz OLD_FILES+=usr/share/man/man8/pmccontrol.8.gz OLD_FILES+=usr/share/man/man8/pmcstat.8.gz .endif .if ${MK_PORTSNAP} == no OLD_FILES+=etc/portsnap.conf OLD_FILES+=usr/libexec/make_index OLD_FILES+=usr/libexec/phttpget OLD_FILES+=usr/sbin/portsnap OLD_FILES+=usr/share/examples/etc/portsnap.conf OLD_FILES+=usr/share/man/man8/phttpget.8.gz OLD_FILES+=usr/share/man/man8/portsnap.8.gz .endif .if ${MK_PPP} == no OLD_FILES+=etc/ppp/ppp.conf OLD_DIRS+=etc/ppp OLD_FILES+=usr/sbin/ppp OLD_FILES+=usr/sbin/pppctl OLD_FILES+=usr/share/man/man8/ppp.8.gz OLD_FILES+=usr/share/man/man8/pppctl.8.gz .endif .if ${MK_PROFILE} == no OLD_FILES+=usr/lib/libalias_cuseeme_p.a OLD_FILES+=usr/lib/libalias_dummy_p.a OLD_FILES+=usr/lib/libalias_ftp_p.a OLD_FILES+=usr/lib/libalias_irc_p.a OLD_FILES+=usr/lib/libalias_nbt_p.a OLD_FILES+=usr/lib/libalias_p.a OLD_FILES+=usr/lib/libalias_pptp_p.a OLD_FILES+=usr/lib/libalias_skinny_p.a OLD_FILES+=usr/lib/libalias_smedia_p.a OLD_FILES+=usr/lib/libarchive_p.a OLD_FILES+=usr/lib/libasn1_p.a OLD_FILES+=usr/lib/libbegemot_p.a OLD_FILES+=usr/lib/libbluetooth_p.a OLD_FILES+=usr/lib/libbsdxml_p.a OLD_FILES+=usr/lib/libbsm_p.a OLD_FILES+=usr/lib/libbsnmp_p.a OLD_FILES+=usr/lib/libbz2_p.a OLD_FILES+=usr/lib/libc_p.a OLD_FILES+=usr/lib/libcalendar_p.a OLD_FILES+=usr/lib/libcam_p.a OLD_FILES+=usr/lib/libcom_err_p.a OLD_FILES+=usr/lib/libcompat_p.a OLD_FILES+=usr/lib/libcrypt_p.a OLD_FILES+=usr/lib/libcrypto_p.a OLD_FILES+=usr/lib/libcurses_p.a OLD_FILES+=usr/lib/libcursesw_p.a OLD_FILES+=usr/lib/libdevinfo_p.a OLD_FILES+=usr/lib/libdevstat_p.a OLD_FILES+=usr/lib/libdialog_p.a OLD_FILES+=usr/lib/libedit_p.a OLD_FILES+=usr/lib/libelf_p.a OLD_FILES+=usr/lib/libfetch_p.a OLD_FILES+=usr/lib/libfl_p.a OLD_FILES+=usr/lib/libform_p.a OLD_FILES+=usr/lib/libformw_p.a OLD_FILES+=usr/lib/libgcc_p.a OLD_FILES+=usr/lib/libgeom_p.a OLD_FILES+=usr/lib/libgnuregex_p.a OLD_FILES+=usr/lib/libgssapi_krb5_p.a OLD_FILES+=usr/lib/libgssapi_p.a OLD_FILES+=usr/lib/libhdb_p.a OLD_FILES+=usr/lib/libheimbase_p.a OLD_FILES+=usr/lib/libheimsqlite_p.a OLD_FILES+=usr/lib/libhistory_p.a OLD_FILES+=usr/lib/libipsec_p.a OLD_FILES+=usr/lib/libjail_p.a OLD_FILES+=usr/lib/libkadm5clnt_p.a OLD_FILES+=usr/lib/libkadm5srv_p.a OLD_FILES+=usr/lib/libkafs5_p.a OLD_FILES+=usr/lib/libkdc_p.a OLD_FILES+=usr/lib/libkiconv_p.a OLD_FILES+=usr/lib/libkrb5_p.a OLD_FILES+=usr/lib/libkvm_p.a OLD_FILES+=usr/lib/libl_p.a OLD_FILES+=usr/lib/libln_p.a OLD_FILES+=usr/lib/libm_p.a OLD_FILES+=usr/lib/libmagic_p.a OLD_FILES+=usr/lib/libmd_p.a OLD_FILES+=usr/lib/libmemstat_p.a OLD_FILES+=usr/lib/libmenu_p.a OLD_FILES+=usr/lib/libmenuw_p.a OLD_FILES+=usr/lib/libmilter_p.a OLD_FILES+=usr/lib/libmp_p.a OLD_FILES+=usr/lib/libncurses_p.a OLD_FILES+=usr/lib/libncursesw_p.a OLD_FILES+=usr/lib/libnetgraph_p.a OLD_FILES+=usr/lib/libngatm_p.a OLD_FILES+=usr/lib/libopie_p.a OLD_FILES+=usr/lib/libpanel_p.a OLD_FILES+=usr/lib/libpanelw_p.a OLD_FILES+=usr/lib/libpcap_p.a OLD_FILES+=usr/lib/libpmc_p.a OLD_FILES+=usr/lib/libpthread_p.a OLD_FILES+=usr/lib/libradius_p.a OLD_FILES+=usr/lib/libroken_p.a OLD_FILES+=usr/lib/librpcsvc_p.a OLD_FILES+=usr/lib/librt_p.a OLD_FILES+=usr/lib/libsbuf_p.a OLD_FILES+=usr/lib/libsdp_p.a OLD_FILES+=usr/lib/libsmb_p.a OLD_FILES+=usr/lib/libssl_p.a OLD_FILES+=usr/lib/libstdc++_p.a OLD_FILES+=usr/lib/libsupc++_p.a OLD_FILES+=usr/lib/libtacplus_p.a OLD_FILES+=usr/lib/libtermcap_p.a OLD_FILES+=usr/lib/libtermcapw_p.a OLD_FILES+=usr/lib/libtermlib_p.a OLD_FILES+=usr/lib/libtermlibw_p.a OLD_FILES+=usr/lib/libthr_p.a OLD_FILES+=usr/lib/libthread_db_p.a OLD_FILES+=usr/lib/libtinfo_p.a OLD_FILES+=usr/lib/libtinfow_p.a OLD_FILES+=usr/lib/libufs_p.a OLD_FILES+=usr/lib/libugidfw_p.a OLD_FILES+=usr/lib/libusbhid_p.a OLD_FILES+=usr/lib/libutil_p.a OLD_FILES+=usr/lib/libvgl_p.a OLD_FILES+=usr/lib/libwind_p.a OLD_FILES+=usr/lib/libwrap_p.a OLD_FILES+=usr/lib/liby_p.a OLD_FILES+=usr/lib/libypclnt_p.a OLD_FILES+=usr/lib/libz_p.a OLD_FILES+=usr/lib/private/libldns_p.a OLD_FILES+=usr/lib/private/libssh_p.a .endif .if ${MK_QUOTAS} == no OLD_FILES+=sbin/quotacheck OLD_FILES+=usr/bin/quota OLD_FILES+=usr/sbin/edquota OLD_FILES+=usr/sbin/quotaoff OLD_FILES+=usr/sbin/quotaon OLD_FILES+=usr/sbin/repquota OLD_FILES+=usr/share/man/man1/quota.1.gz OLD_FILES+=usr/share/man/man8/edquota.8.gz OLD_FILES+=usr/share/man/man8/quotacheck.8.gz OLD_FILES+=usr/share/man/man8/quotaoff.8.gz OLD_FILES+=usr/share/man/man8/quotaon.8.gz OLD_FILES+=usr/share/man/man8/repquota.8.gz .endif .if ${MK_RCMDS} == no OLD_FILES+=bin/rcp OLD_FILES+=etc/rc.d/rwho OLD_FILES+=etc/periodic/daily/140.clean-rwho OLD_FILES+=rescue/rcp OLD_FILES+=usr/bin/rlogin OLD_FILES+=usr/bin/rsh OLD_FILES+=usr/bin/ruptime OLD_FILES+=usr/bin/rwho OLD_FILES+=usr/libexec/rlogind OLD_FILES+=usr/libexec/rshd OLD_FILES+=usr/sbin/rwhod OLD_FILES+=usr/share/man/man1/rcp.1.gz OLD_FILES+=usr/share/man/man1/rlogin.1.gz OLD_FILES+=usr/share/man/man1/rsh.1.gz OLD_FILES+=usr/share/man/man1/ruptime.1.gz OLD_FILES+=usr/share/man/man1/rwho.1.gz OLD_FILES+=usr/share/man/man8/rlogind.8.gz OLD_FILES+=usr/share/man/man8/rshd.8.gz OLD_FILES+=usr/share/man/man8/rwhod.8.gz .endif #.if ${MK_RESCUE} == no # to be filled in or replaced with a special target #.endif .if ${MK_ROUTED} == no OLD_FILES+=sbin/routed OLD_FILES+=sbin/rtquery OLD_FILES+=usr/share/man/man8/routed.8.gz OLD_FILES+=usr/share/man/man8/rtquery.8.gz .endif .if ${MK_SENDMAIL} == no OLD_FILES+=etc/periodic/daily/150.clean-hoststat OLD_FILES+=etc/periodic/daily/440.status-mailq OLD_FILES+=etc/periodic/daily/460.status-mail-rejects OLD_FILES+=etc/periodic/daily/500.queuerun OLD_FILES+=bin/rmail OLD_FILES+=usr/bin/vacation OLD_FILES+=usr/include/libmilter/mfapi.h OLD_FILES+=usr/include/libmilter/mfdef.h OLD_DIRS+=usr/include/libmilter OLD_FILES+=usr/lib/libmilter.a OLD_FILES+=usr/lib/libmilter.so OLD_LIBS+=usr/lib/libmilter.so.5 OLD_FILES+=usr/lib/libmilter_p.a .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" OLD_FILES+=usr/lib32/libmilter.a OLD_FILES+=usr/lib32/libmilter.so OLD_LIBS+=usr/lib32/libmilter.so.5 OLD_FILES+=usr/lib32/libmilter_p.a .endif OLD_FILES+=usr/libexec/mail.local OLD_FILES+=usr/libexec/sendmail/sendmail OLD_FILES+=usr/libexec/smrsh OLD_FILES+=usr/sbin/editmap OLD_FILES+=usr/sbin/mailstats OLD_FILES+=usr/sbin/makemap OLD_FILES+=usr/sbin/praliases OLD_FILES+=usr/share/doc/smm/08.sendmailop/paper.ascii.gz OLD_DIRS+=usr/share/doc/smm/08.sendmailop OLD_FILES+=usr/share/man/man1/mailq.1.gz OLD_FILES+=usr/share/man/man1/newaliases.1.gz OLD_FILES+=usr/share/man/man1/vacation.1.gz OLD_FILES+=usr/share/man/man5/aliases.5.gz OLD_FILES+=usr/share/man/man8/editmap.8.gz OLD_FILES+=usr/share/man/man8/hoststat.8.gz OLD_FILES+=usr/share/man/man8/mail.local.8.gz OLD_FILES+=usr/share/man/man8/mailstats.8.gz OLD_FILES+=usr/share/man/man8/makemap.8.gz OLD_FILES+=usr/share/man/man8/praliases.8.gz OLD_FILES+=usr/share/man/man8/purgestat.8.gz OLD_FILES+=usr/share/man/man8/rmail.8.gz OLD_FILES+=usr/share/man/man8/sendmail.8.gz OLD_FILES+=usr/share/man/man8/smrsh.8.gz OLD_FILES+=usr/share/sendmail/cf/README OLD_FILES+=usr/share/sendmail/cf/cf/Makefile OLD_FILES+=usr/share/sendmail/cf/cf/README OLD_FILES+=usr/share/sendmail/cf/cf/chez.cs.mc OLD_FILES+=usr/share/sendmail/cf/cf/clientproto.mc OLD_FILES+=usr/share/sendmail/cf/cf/cs-hpux10.mc OLD_FILES+=usr/share/sendmail/cf/cf/cs-hpux9.mc OLD_FILES+=usr/share/sendmail/cf/cf/cs-osf1.mc OLD_FILES+=usr/share/sendmail/cf/cf/cs-solaris2.mc OLD_FILES+=usr/share/sendmail/cf/cf/cs-sunos4.1.mc OLD_FILES+=usr/share/sendmail/cf/cf/cs-ultrix4.mc OLD_FILES+=usr/share/sendmail/cf/cf/cyrusproto.mc OLD_FILES+=usr/share/sendmail/cf/cf/generic-bsd4.4.mc OLD_FILES+=usr/share/sendmail/cf/cf/generic-hpux10.mc OLD_FILES+=usr/share/sendmail/cf/cf/generic-hpux9.mc OLD_FILES+=usr/share/sendmail/cf/cf/generic-linux.mc OLD_FILES+=usr/share/sendmail/cf/cf/generic-mpeix.mc OLD_FILES+=usr/share/sendmail/cf/cf/generic-nextstep3.3.mc OLD_FILES+=usr/share/sendmail/cf/cf/generic-osf1.mc OLD_FILES+=usr/share/sendmail/cf/cf/generic-solaris.mc OLD_FILES+=usr/share/sendmail/cf/cf/generic-sunos4.1.mc OLD_FILES+=usr/share/sendmail/cf/cf/generic-ultrix4.mc OLD_FILES+=usr/share/sendmail/cf/cf/huginn.cs.mc OLD_FILES+=usr/share/sendmail/cf/cf/knecht.mc OLD_FILES+=usr/share/sendmail/cf/cf/mail.cs.mc OLD_FILES+=usr/share/sendmail/cf/cf/mail.eecs.mc OLD_FILES+=usr/share/sendmail/cf/cf/mailspool.cs.mc OLD_FILES+=usr/share/sendmail/cf/cf/python.cs.mc OLD_FILES+=usr/share/sendmail/cf/cf/s2k-osf1.mc OLD_FILES+=usr/share/sendmail/cf/cf/s2k-ultrix4.mc OLD_FILES+=usr/share/sendmail/cf/cf/submit.cf OLD_FILES+=usr/share/sendmail/cf/cf/submit.mc OLD_FILES+=usr/share/sendmail/cf/cf/tcpproto.mc OLD_FILES+=usr/share/sendmail/cf/cf/ucbarpa.mc OLD_FILES+=usr/share/sendmail/cf/cf/ucbvax.mc OLD_FILES+=usr/share/sendmail/cf/cf/uucpproto.mc OLD_FILES+=usr/share/sendmail/cf/cf/vangogh.cs.mc OLD_DIRS+=usr/share/sendmail/cf/cf OLD_FILES+=usr/share/sendmail/cf/domain/Berkeley.EDU.m4 OLD_FILES+=usr/share/sendmail/cf/domain/CS.Berkeley.EDU.m4 OLD_FILES+=usr/share/sendmail/cf/domain/EECS.Berkeley.EDU.m4 OLD_FILES+=usr/share/sendmail/cf/domain/S2K.Berkeley.EDU.m4 OLD_FILES+=usr/share/sendmail/cf/domain/berkeley-only.m4 OLD_FILES+=usr/share/sendmail/cf/domain/generic.m4 OLD_DIRS+=usr/share/sendmail/cf/domain OLD_FILES+=usr/share/sendmail/cf/feature/accept_unqualified_senders.m4 OLD_FILES+=usr/share/sendmail/cf/feature/accept_unresolvable_domains.m4 OLD_FILES+=usr/share/sendmail/cf/feature/access_db.m4 OLD_FILES+=usr/share/sendmail/cf/feature/allmasquerade.m4 OLD_FILES+=usr/share/sendmail/cf/feature/always_add_domain.m4 OLD_FILES+=usr/share/sendmail/cf/feature/authinfo.m4 OLD_FILES+=usr/share/sendmail/cf/feature/badmx.m4 OLD_FILES+=usr/share/sendmail/cf/feature/bcc.m4 OLD_FILES+=usr/share/sendmail/cf/feature/bestmx_is_local.m4 OLD_FILES+=usr/share/sendmail/cf/feature/bitdomain.m4 OLD_FILES+=usr/share/sendmail/cf/feature/blacklist_recipients.m4 OLD_FILES+=usr/share/sendmail/cf/feature/block_bad_helo.m4 OLD_FILES+=usr/share/sendmail/cf/feature/compat_check.m4 OLD_FILES+=usr/share/sendmail/cf/feature/conncontrol.m4 OLD_FILES+=usr/share/sendmail/cf/feature/delay_checks.m4 OLD_FILES+=usr/share/sendmail/cf/feature/dnsbl.m4 OLD_FILES+=usr/share/sendmail/cf/feature/domaintable.m4 OLD_FILES+=usr/share/sendmail/cf/feature/enhdnsbl.m4 OLD_FILES+=usr/share/sendmail/cf/feature/generics_entire_domain.m4 OLD_FILES+=usr/share/sendmail/cf/feature/genericstable.m4 OLD_FILES+=usr/share/sendmail/cf/feature/greet_pause.m4 OLD_FILES+=usr/share/sendmail/cf/feature/ldap_routing.m4 OLD_FILES+=usr/share/sendmail/cf/feature/limited_masquerade.m4 OLD_FILES+=usr/share/sendmail/cf/feature/local_lmtp.m4 OLD_FILES+=usr/share/sendmail/cf/feature/local_no_masquerade.m4 OLD_FILES+=usr/share/sendmail/cf/feature/local_procmail.m4 OLD_FILES+=usr/share/sendmail/cf/feature/lookupdotdomain.m4 OLD_FILES+=usr/share/sendmail/cf/feature/loose_relay_check.m4 OLD_FILES+=usr/share/sendmail/cf/feature/mailertable.m4 OLD_FILES+=usr/share/sendmail/cf/feature/masquerade_entire_domain.m4 OLD_FILES+=usr/share/sendmail/cf/feature/masquerade_envelope.m4 OLD_FILES+=usr/share/sendmail/cf/feature/msp.m4 OLD_FILES+=usr/share/sendmail/cf/feature/mtamark.m4 OLD_FILES+=usr/share/sendmail/cf/feature/no_default_msa.m4 OLD_FILES+=usr/share/sendmail/cf/feature/nocanonify.m4 OLD_FILES+=usr/share/sendmail/cf/feature/nopercenthack.m4 OLD_FILES+=usr/share/sendmail/cf/feature/notsticky.m4 OLD_FILES+=usr/share/sendmail/cf/feature/nouucp.m4 OLD_FILES+=usr/share/sendmail/cf/feature/nullclient.m4 OLD_FILES+=usr/share/sendmail/cf/feature/prefixmod.m4 OLD_FILES+=usr/share/sendmail/cf/feature/preserve_local_plus_detail.m4 OLD_FILES+=usr/share/sendmail/cf/feature/preserve_luser_host.m4 OLD_FILES+=usr/share/sendmail/cf/feature/promiscuous_relay.m4 OLD_FILES+=usr/share/sendmail/cf/feature/queuegroup.m4 OLD_FILES+=usr/share/sendmail/cf/feature/ratecontrol.m4 OLD_FILES+=usr/share/sendmail/cf/feature/redirect.m4 OLD_FILES+=usr/share/sendmail/cf/feature/relay_based_on_MX.m4 OLD_FILES+=usr/share/sendmail/cf/feature/relay_entire_domain.m4 OLD_FILES+=usr/share/sendmail/cf/feature/relay_hosts_only.m4 OLD_FILES+=usr/share/sendmail/cf/feature/relay_local_from.m4 OLD_FILES+=usr/share/sendmail/cf/feature/relay_mail_from.m4 OLD_FILES+=usr/share/sendmail/cf/feature/require_rdns.m4 OLD_FILES+=usr/share/sendmail/cf/feature/smrsh.m4 OLD_FILES+=usr/share/sendmail/cf/feature/stickyhost.m4 OLD_FILES+=usr/share/sendmail/cf/feature/tls_session_features.m4 OLD_FILES+=usr/share/sendmail/cf/feature/use_client_ptr.m4 OLD_FILES+=usr/share/sendmail/cf/feature/use_ct_file.m4 OLD_FILES+=usr/share/sendmail/cf/feature/use_cw_file.m4 OLD_FILES+=usr/share/sendmail/cf/feature/uucpdomain.m4 OLD_FILES+=usr/share/sendmail/cf/feature/virtuser_entire_domain.m4 OLD_FILES+=usr/share/sendmail/cf/feature/virtusertable.m4 OLD_DIRS+=usr/share/sendmail/cf/feature OLD_FILES+=usr/share/sendmail/cf/hack/cssubdomain.m4 OLD_FILES+=usr/share/sendmail/cf/hack/xconnect.m4 OLD_DIRS+=usr/share/sendmail/cf/hack OLD_FILES+=usr/share/sendmail/cf/m4/cf.m4 OLD_FILES+=usr/share/sendmail/cf/m4/cfhead.m4 OLD_FILES+=usr/share/sendmail/cf/m4/proto.m4 OLD_FILES+=usr/share/sendmail/cf/m4/version.m4 OLD_DIRS+=usr/share/sendmail/cf/m4 OLD_FILES+=usr/share/sendmail/cf/mailer/cyrus.m4 OLD_FILES+=usr/share/sendmail/cf/mailer/cyrusv2.m4 OLD_FILES+=usr/share/sendmail/cf/mailer/fax.m4 OLD_FILES+=usr/share/sendmail/cf/mailer/local.m4 OLD_FILES+=usr/share/sendmail/cf/mailer/mail11.m4 OLD_FILES+=usr/share/sendmail/cf/mailer/phquery.m4 OLD_FILES+=usr/share/sendmail/cf/mailer/pop.m4 OLD_FILES+=usr/share/sendmail/cf/mailer/procmail.m4 OLD_FILES+=usr/share/sendmail/cf/mailer/qpage.m4 OLD_FILES+=usr/share/sendmail/cf/mailer/smtp.m4 OLD_FILES+=usr/share/sendmail/cf/mailer/usenet.m4 OLD_FILES+=usr/share/sendmail/cf/mailer/uucp.m4 OLD_DIRS+=usr/share/sendmail/cf/mailer OLD_FILES+=usr/share/sendmail/cf/ostype/a-ux.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/aix3.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/aix4.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/aix5.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/altos.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/amdahl-uts.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/bsd4.3.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/bsd4.4.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/bsdi.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/bsdi1.0.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/bsdi2.0.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/darwin.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/dgux.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/domainos.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/dragonfly.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/dynix3.2.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/freebsd4.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/freebsd5.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/freebsd6.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/gnu.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/hpux10.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/hpux11.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/hpux9.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/irix4.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/irix5.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/irix6.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/isc4.1.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/linux.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/maxion.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/mklinux.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/mpeix.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/nextstep.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/openbsd.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/osf1.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/powerux.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/ptx2.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/qnx.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/riscos4.5.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/sco-uw-2.1.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/sco3.2.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/sinix.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/solaris11.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/solaris2.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/solaris2.ml.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/solaris2.pre5.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/solaris8.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/sunos3.5.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/sunos4.1.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/svr4.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/ultrix4.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/unicos.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/unicosmk.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/unicosmp.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/unixware7.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/unknown.m4 OLD_FILES+=usr/share/sendmail/cf/ostype/uxpds.m4 OLD_DIRS+=usr/share/sendmail/cf/ostype OLD_FILES+=usr/share/sendmail/cf/sendmail.schema OLD_FILES+=usr/share/sendmail/cf/sh/makeinfo.sh OLD_DIRS+=usr/share/sendmail/cf/sh OLD_FILES+=usr/share/sendmail/cf/siteconfig/uucp.cogsci.m4 OLD_FILES+=usr/share/sendmail/cf/siteconfig/uucp.old.arpa.m4 OLD_FILES+=usr/share/sendmail/cf/siteconfig/uucp.ucbarpa.m4 OLD_FILES+=usr/share/sendmail/cf/siteconfig/uucp.ucbvax.m4 OLD_DIRS+=usr/share/sendmail/cf/siteconfig OLD_DIRS+=usr/share/sendmail/cf OLD_DIRS+=usr/share/sendmail .endif .if ${MK_SHAREDOCS} == no OLD_FILES+=usr/share/doc/pjdfstest/README OLD_DIRS+=usr/share/doc/pjdfstest .endif .if ${MK_SSP} == no OLD_LIBS+=lib/libssp.so.0 OLD_FILES+=usr/include/ssp/ssp.h OLD_FILES+=usr/include/ssp/stdio.h OLD_FILES+=usr/include/ssp/string.h OLD_FILES+=usr/include/ssp/unistd.h OLD_FILES+=usr/lib/libssp.a OLD_FILES+=usr/lib/libssp.so OLD_FILES+=usr/lib/libssp_nonshared.a OLD_FILES+=usr/lib32/libssp.a OLD_FILES+=usr/lib32/libssp.so OLD_LIBS+=usr/lib32/libssp.so.0 OLD_FILES+=usr/lib32/libssp_nonshared.a OLD_FILES+=usr/tests/lib/libc/ssp/Kyuafile OLD_FILES+=usr/tests/lib/libc/ssp/h_fgets OLD_FILES+=usr/tests/lib/libc/ssp/h_getcwd OLD_FILES+=usr/tests/lib/libc/ssp/h_gets OLD_FILES+=usr/tests/lib/libc/ssp/h_memcpy OLD_FILES+=usr/tests/lib/libc/ssp/h_memmove OLD_FILES+=usr/tests/lib/libc/ssp/h_memset OLD_FILES+=usr/tests/lib/libc/ssp/h_read OLD_FILES+=usr/tests/lib/libc/ssp/h_readlink OLD_FILES+=usr/tests/lib/libc/ssp/h_snprintf OLD_FILES+=usr/tests/lib/libc/ssp/h_sprintf OLD_FILES+=usr/tests/lib/libc/ssp/h_stpcpy OLD_FILES+=usr/tests/lib/libc/ssp/h_stpncpy OLD_FILES+=usr/tests/lib/libc/ssp/h_strcat OLD_FILES+=usr/tests/lib/libc/ssp/h_strcpy OLD_FILES+=usr/tests/lib/libc/ssp/h_strncat OLD_FILES+=usr/tests/lib/libc/ssp/h_strncpy OLD_FILES+=usr/tests/lib/libc/ssp/h_vsnprintf OLD_FILES+=usr/tests/lib/libc/ssp/h_vsprintf OLD_FILES+=usr/tests/lib/libc/ssp/ssp_test .endif .if ${MK_SYSCONS} == no OLD_FILES+=usr/share/syscons/fonts/INDEX.fonts OLD_FILES+=usr/share/syscons/fonts/armscii8-8x14.fnt OLD_FILES+=usr/share/syscons/fonts/armscii8-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/armscii8-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/cp1251-8x14.fnt OLD_FILES+=usr/share/syscons/fonts/cp1251-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/cp1251-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/cp437-8x14.fnt OLD_FILES+=usr/share/syscons/fonts/cp437-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/cp437-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/cp437-thin-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/cp437-thin-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/cp850-8x14.fnt OLD_FILES+=usr/share/syscons/fonts/cp850-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/cp850-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/cp850-thin-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/cp850-thin-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/cp865-8x14.fnt OLD_FILES+=usr/share/syscons/fonts/cp865-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/cp865-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/cp865-thin-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/cp865-thin-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/cp866-8x14.fnt OLD_FILES+=usr/share/syscons/fonts/cp866-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/cp866-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/cp866b-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/cp866c-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/cp866u-8x14.fnt OLD_FILES+=usr/share/syscons/fonts/cp866u-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/cp866u-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/haik8-8x14.fnt OLD_FILES+=usr/share/syscons/fonts/haik8-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/haik8-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/iso-8x14.fnt OLD_FILES+=usr/share/syscons/fonts/iso-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/iso-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/iso-thin-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/iso02-8x14.fnt OLD_FILES+=usr/share/syscons/fonts/iso02-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/iso02-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/iso04-8x14.fnt OLD_FILES+=usr/share/syscons/fonts/iso04-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/iso04-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/iso04-vga9-8x14.fnt OLD_FILES+=usr/share/syscons/fonts/iso04-vga9-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/iso04-vga9-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/iso04-vga9-wide-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/iso04-wide-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/iso05-8x14.fnt OLD_FILES+=usr/share/syscons/fonts/iso05-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/iso05-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/iso07-8x14.fnt OLD_FILES+=usr/share/syscons/fonts/iso07-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/iso07-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/iso08-8x14.fnt OLD_FILES+=usr/share/syscons/fonts/iso08-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/iso08-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/iso09-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/iso15-8x14.fnt OLD_FILES+=usr/share/syscons/fonts/iso15-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/iso15-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/iso15-thin-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/koi8-r-8x14.fnt OLD_FILES+=usr/share/syscons/fonts/koi8-r-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/koi8-r-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/koi8-rb-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/koi8-rc-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/koi8-u-8x14.fnt OLD_FILES+=usr/share/syscons/fonts/koi8-u-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/koi8-u-8x8.fnt OLD_FILES+=usr/share/syscons/fonts/swiss-1131-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/swiss-1251-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/swiss-8x14.fnt OLD_FILES+=usr/share/syscons/fonts/swiss-8x16.fnt OLD_FILES+=usr/share/syscons/fonts/swiss-8x8.fnt OLD_FILES+=usr/share/syscons/keymaps/INDEX.keymaps OLD_FILES+=usr/share/syscons/keymaps/be.iso.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/be.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/bg.bds.ctrlcaps.kbd OLD_FILES+=usr/share/syscons/keymaps/bg.phonetic.ctrlcaps.kbd OLD_FILES+=usr/share/syscons/keymaps/br275.cp850.kbd OLD_FILES+=usr/share/syscons/keymaps/br275.iso.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/br275.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/by.cp1131.kbd OLD_FILES+=usr/share/syscons/keymaps/by.cp1251.kbd OLD_FILES+=usr/share/syscons/keymaps/by.iso5.kbd OLD_FILES+=usr/share/syscons/keymaps/ce.iso2.kbd OLD_FILES+=usr/share/syscons/keymaps/colemak.iso15.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/cs.latin2.qwertz.kbd OLD_FILES+=usr/share/syscons/keymaps/cz.iso2.kbd OLD_FILES+=usr/share/syscons/keymaps/danish.cp865.kbd OLD_FILES+=usr/share/syscons/keymaps/danish.iso.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/danish.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/danish.iso.macbook.kbd OLD_FILES+=usr/share/syscons/keymaps/dutch.iso.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/eee_nordic.kbd OLD_FILES+=usr/share/syscons/keymaps/el.iso07.kbd OLD_FILES+=usr/share/syscons/keymaps/estonian.cp850.kbd OLD_FILES+=usr/share/syscons/keymaps/estonian.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/estonian.iso15.kbd OLD_FILES+=usr/share/syscons/keymaps/finnish.cp850.kbd OLD_FILES+=usr/share/syscons/keymaps/finnish.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/fr.dvorak.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/fr.dvorak.kbd OLD_FILES+=usr/share/syscons/keymaps/fr.iso.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/fr.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/fr.macbook.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/fr_CA.iso.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/german.cp850.kbd OLD_FILES+=usr/share/syscons/keymaps/german.iso.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/german.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/gr.elot.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/gr.us101.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/hr.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/hu.iso2.101keys.kbd OLD_FILES+=usr/share/syscons/keymaps/hu.iso2.102keys.kbd OLD_FILES+=usr/share/syscons/keymaps/hy.armscii-8.kbd OLD_FILES+=usr/share/syscons/keymaps/icelandic.iso.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/icelandic.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/it.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/iw.iso8.kbd OLD_FILES+=usr/share/syscons/keymaps/jp.106.kbd OLD_FILES+=usr/share/syscons/keymaps/jp.106x.kbd OLD_FILES+=usr/share/syscons/keymaps/jp.pc98.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/jp.pc98.kbd OLD_FILES+=usr/share/syscons/keymaps/kk.pt154.io.kbd OLD_FILES+=usr/share/syscons/keymaps/kk.pt154.kst.kbd OLD_FILES+=usr/share/syscons/keymaps/latinamerican.iso.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/latinamerican.kbd OLD_FILES+=usr/share/syscons/keymaps/lt.iso4.kbd OLD_FILES+=usr/share/syscons/keymaps/norwegian.dvorak.kbd OLD_FILES+=usr/share/syscons/keymaps/norwegian.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/pl_PL.ISO8859-2.kbd OLD_FILES+=usr/share/syscons/keymaps/pl_PL.dvorak.kbd OLD_FILES+=usr/share/syscons/keymaps/pt.iso.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/pt.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/ru.cp866.kbd OLD_FILES+=usr/share/syscons/keymaps/ru.iso5.kbd OLD_FILES+=usr/share/syscons/keymaps/ru.koi8-r.kbd OLD_FILES+=usr/share/syscons/keymaps/ru.koi8-r.shift.kbd OLD_FILES+=usr/share/syscons/keymaps/ru.koi8-r.win.kbd OLD_FILES+=usr/share/syscons/keymaps/si.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/sk.iso2.kbd OLD_FILES+=usr/share/syscons/keymaps/spanish.dvorak.kbd OLD_FILES+=usr/share/syscons/keymaps/spanish.iso.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/spanish.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/spanish.iso15.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/swedish.cp850.kbd OLD_FILES+=usr/share/syscons/keymaps/swedish.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/swissfrench.cp850.kbd OLD_FILES+=usr/share/syscons/keymaps/swissfrench.iso.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/swissfrench.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/swissgerman.cp850.kbd OLD_FILES+=usr/share/syscons/keymaps/swissgerman.iso.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/swissgerman.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/swissgerman.macbook.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/tr.iso9.q.kbd OLD_FILES+=usr/share/syscons/keymaps/ua.iso5.kbd OLD_FILES+=usr/share/syscons/keymaps/ua.koi8-u.kbd OLD_FILES+=usr/share/syscons/keymaps/ua.koi8-u.shift.alt.kbd OLD_FILES+=usr/share/syscons/keymaps/uk.cp850-ctrl.kbd OLD_FILES+=usr/share/syscons/keymaps/uk.cp850.kbd OLD_FILES+=usr/share/syscons/keymaps/uk.dvorak.kbd OLD_FILES+=usr/share/syscons/keymaps/uk.iso-ctrl.kbd OLD_FILES+=usr/share/syscons/keymaps/uk.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/us.dvorak.kbd OLD_FILES+=usr/share/syscons/keymaps/us.dvorakl.kbd OLD_FILES+=usr/share/syscons/keymaps/us.dvorakp.kbd OLD_FILES+=usr/share/syscons/keymaps/us.dvorakr.kbd OLD_FILES+=usr/share/syscons/keymaps/us.dvorakx.kbd OLD_FILES+=usr/share/syscons/keymaps/us.emacs.kbd OLD_FILES+=usr/share/syscons/keymaps/us.iso.acc.kbd OLD_FILES+=usr/share/syscons/keymaps/us.iso.kbd OLD_FILES+=usr/share/syscons/keymaps/us.pc-ctrl.kbd OLD_FILES+=usr/share/syscons/keymaps/us.unix.kbd OLD_FILES+=usr/share/syscons/scrnmaps/armscii8-2haik8.scm OLD_FILES+=usr/share/syscons/scrnmaps/iso-8859-1_to_cp437.scm OLD_FILES+=usr/share/syscons/scrnmaps/iso-8859-4_for_vga9.scm OLD_FILES+=usr/share/syscons/scrnmaps/iso-8859-7_to_cp437.scm OLD_FILES+=usr/share/syscons/scrnmaps/koi8-r2cp866.scm OLD_FILES+=usr/share/syscons/scrnmaps/koi8-u2cp866u.scm OLD_FILES+=usr/share/syscons/scrnmaps/us-ascii_to_cp437.scm .endif .if ${MK_TALK} == no OLD_FILES+=usr/bin/talk OLD_FILES+=usr/libexec/ntalkd OLD_FILES+=usr/share/man/man1/talk.1.gz OLD_FILES+=usr/share/man/man8/talkd.8.gz .endif .if ${MK_TCSH} == no OLD_FILES+=.cshrc OLD_FILES+=etc/csh.cshrc OLD_FILES+=etc/csh.login OLD_FILES+=etc/csh.logout OLD_FILES+=bin/csh OLD_FILES+=bin/tcsh OLD_FILES+=rescue/csh OLD_FILES+=rescue/tcsh OLD_FILES+=root/.cshrc OLD_FILES+=root/.login OLD_FILES+=usr/share/examples/etc/csh.cshrc OLD_FILES+=usr/share/examples/etc/csh.login OLD_FILES+=usr/share/examples/etc/csh.logout OLD_FILES+=usr/share/examples/tcsh/complete.tcsh OLD_FILES+=usr/share/examples/tcsh/csh-mode.el OLD_DIRS+=usr/share/examples/tcsh OLD_FILES+=usr/share/man/man1/csh.1.gz OLD_FILES+=usr/share/man/man1/tcsh.1.gz OLD_FILES+=usr/share/nls/de_AT.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/de_AT.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/de_AT.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/de_CH.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/de_CH.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/de_CH.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/de_DE.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/de_DE.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/de_DE.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/el_GR.ISO8859-7/tcsh.cat OLD_FILES+=usr/share/nls/el_GR.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/es_ES.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/es_ES.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/es_ES.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/et_EE.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/et_EE.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/fi_FI.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/fi_FI.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/fi_FI.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/fr_BE.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/fr_BE.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/fr_BE.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/fr_CA.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/fr_CA.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/fr_CA.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/fr_CH.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/fr_CH.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/fr_CH.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/fr_FR.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/fr_FR.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/fr_FR.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/it_CH.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/it_CH.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/it_CH.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/it_IT.ISO8859-1/tcsh.cat OLD_FILES+=usr/share/nls/it_IT.ISO8859-15/tcsh.cat OLD_FILES+=usr/share/nls/it_IT.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/ja_JP.SJIS/tcsh.cat OLD_FILES+=usr/share/nls/ja_JP.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/ja_JP.eucJP/tcsh.cat OLD_FILES+=usr/share/nls/ru_RU.CP1251/tcsh.cat OLD_FILES+=usr/share/nls/ru_RU.CP866/tcsh.cat OLD_FILES+=usr/share/nls/ru_RU.ISO8859-5/tcsh.cat OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/tcsh.cat OLD_FILES+=usr/share/nls/ru_RU.UTF-8/tcsh.cat OLD_FILES+=usr/share/nls/uk_UA.ISO8859-5/tcsh.cat OLD_FILES+=usr/share/nls/uk_UA.KOI8-U/tcsh.cat OLD_FILES+=usr/share/nls/uk_UA.UTF-8/tcsh.cat .endif .if ${MK_TELNET} == no OLD_FILES+=usr/bin/telnet OLD_FILES+=usr/libexec/telnetd OLD_FILES+=usr/share/man/man1/telnet.1.gz OLD_FILES+=usr/share/man/man8/telnetd.8.gz .endif .if ${MK_TESTS} == yes OLD_FILES+=usr/bin/atf-sh OLD_FILES+=usr/include/atf-c++/config.hpp OLD_FILES+=usr/include/atf-c/config.h OLD_LIBS+=usr/lib/libatf-c++.a OLD_LIBS+=usr/lib/libatf-c++.so OLD_LIBS+=usr/lib/libatf-c++.so.1 OLD_LIBS+=usr/lib/libatf-c++.so.2 OLD_LIBS+=usr/lib/libatf-c++_p.a OLD_LIBS+=usr/lib/libatf-c.a OLD_LIBS+=usr/lib/libatf-c.so OLD_LIBS+=usr/lib/libatf-c.so.1 OLD_LIBS+=usr/lib/libatf-c_p.a OLD_LIBS+=usr/lib/private/libatf-c.so.0 OLD_LIBS+=usr/lib/private/libatf-c++.so.1 .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" OLD_LIBS+=usr/lib32/libatf-c++.a OLD_LIBS+=usr/lib32/libatf-c++.so OLD_LIBS+=usr/lib32/libatf-c++.so.1 OLD_LIBS+=usr/lib32/libatf-c++.so.2 OLD_LIBS+=usr/lib32/libatf-c++_p.a OLD_LIBS+=usr/lib32/libatf-c.a OLD_LIBS+=usr/lib32/libatf-c.so OLD_LIBS+=usr/lib32/libatf-c.so.1 OLD_LIBS+=usr/lib32/libatf-c_p.a OLD_LIBS+=usr/lib32/private/libatf-c.so.0 OLD_LIBS+=usr/lib32/private/libatf-c++.so.1 .endif OLD_FILES+=usr/libdata/pkgconfig/atf-c++.pc OLD_FILES+=usr/libdata/pkgconfig/atf-c.pc OLD_FILES+=usr/libdata/pkgconfig/atf-sh.pc OLD_FILES+=usr/share/aclocal/atf-c++.m4 OLD_FILES+=usr/share/aclocal/atf-c.m4 OLD_FILES+=usr/share/aclocal/atf-common.m4 OLD_FILES+=usr/share/aclocal/atf-sh.m4 OLD_DIRS+=usr/share/aclocal OLD_DIRS+=usr/tests/bin/chown OLD_FILES+=usr/tests/bin/chown/Kyuafile OLD_FILES+=usr/tests/bin/chown/chown-f_test OLD_FILES+=usr/tests/bin/chown/units_basics OLD_FILES+=usr/tests/bin/date/legacy_test OLD_FILES+=usr/tests/bin/sh/legacy_test OLD_FILES+=usr/tests/usr.bin/atf/Kyuafile OLD_FILES+=usr/tests/usr.bin/atf/atf-sh/Kyuafile OLD_FILES+=usr/tests/usr.bin/atf/atf-sh/atf_check_test OLD_FILES+=usr/tests/usr.bin/atf/atf-sh/config_test OLD_FILES+=usr/tests/usr.bin/atf/atf-sh/integration_test OLD_FILES+=usr/tests/usr.bin/atf/atf-sh/misc_helpers OLD_FILES+=usr/tests/usr.bin/atf/atf-sh/normalize_test OLD_FILES+=usr/tests/usr.bin/atf/atf-sh/tc_test OLD_FILES+=usr/tests/usr.bin/atf/atf-sh/tp_test OLD_DIRS+=usr/tests/usr.bin/atf/atf-sh OLD_DIRS+=usr/tests/usr.bin/atf OLD_FILES+=usr/tests/lib/atf/libatf-c/test_helpers_test OLD_FILES+=usr/tests/lib/atf/test-programs/fork_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/application_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/config_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/expand_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/parser_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/sanity_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/ui_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/env_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/exceptions_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/expand_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/fs_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/parser_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/process_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/sanity_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/pkg_config_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/text_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/ui_test OLD_FILES+=usr/tests/lib/atf/libatf-c/config_test OLD_FILES+=usr/tests/lib/atf/libatf-c/dynstr_test OLD_FILES+=usr/tests/lib/atf/libatf-c/env_test OLD_FILES+=usr/tests/lib/atf/libatf-c/fs_test OLD_FILES+=usr/tests/lib/atf/libatf-c/list_test OLD_FILES+=usr/tests/lib/atf/libatf-c/map_test OLD_FILES+=usr/tests/lib/atf/libatf-c/pkg_config_test OLD_FILES+=usr/tests/lib/atf/libatf-c/process_helpers OLD_FILES+=usr/tests/lib/atf/libatf-c/process_test OLD_FILES+=usr/tests/lib/atf/libatf-c/sanity_test OLD_FILES+=usr/tests/lib/atf/libatf-c/text_test OLD_FILES+=usr/tests/lib/atf/libatf-c/user_test .if ${MK_MAKE} == yes OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/legacy_test OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.status.2 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.status.3 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.status.4 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.status.5 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.status.6 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.status.7 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stderr.3 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stderr.4 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stderr.5 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stderr.6 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stderr.7 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stdout.3 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stdout.4 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stdout.5 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stdout.6 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stdout.7 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/libtest.a OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/legacy_test OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.status.2 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.status.3 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.status.4 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.status.5 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.status.6 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.status.7 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.3 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.4 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.5 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.6 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.7 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.3 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.4 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.5 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.6 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.7 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/libtest.a OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/legacy_test OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.status.2 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.status.3 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.status.4 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.status.5 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.status.6 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.status.7 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stderr.3 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stderr.4 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stderr.5 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stderr.6 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stderr.7 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stdout.3 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stdout.4 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stdout.5 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stdout.6 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stdout.7 OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/libtest.a OLD_FILES+=usr/tests/usr.bin/make/archives/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/basic/t0/legacy_test OLD_FILES+=usr/tests/usr.bin/make/basic/t0/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/basic/t0/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/basic/t0/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/basic/t0/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/basic/t1/legacy_test OLD_FILES+=usr/tests/usr.bin/make/basic/t1/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/basic/t1/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/basic/t1/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/basic/t1/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/basic/t1/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/basic/t2/legacy_test OLD_FILES+=usr/tests/usr.bin/make/basic/t2/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/basic/t2/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/basic/t2/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/basic/t2/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/basic/t2/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/basic/t3/legacy_test OLD_FILES+=usr/tests/usr.bin/make/basic/t3/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/basic/t3/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/basic/t3/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/basic/t3/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/basic/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/execution/ellipsis/legacy_test OLD_FILES+=usr/tests/usr.bin/make/execution/ellipsis/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/execution/ellipsis/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/execution/ellipsis/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/execution/ellipsis/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/execution/ellipsis/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/execution/empty/legacy_test OLD_FILES+=usr/tests/usr.bin/make/execution/empty/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/execution/empty/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/execution/empty/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/execution/empty/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/execution/empty/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/execution/joberr/legacy_test OLD_FILES+=usr/tests/usr.bin/make/execution/joberr/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/execution/joberr/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/execution/joberr/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/execution/joberr/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/execution/joberr/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/execution/plus/legacy_test OLD_FILES+=usr/tests/usr.bin/make/execution/plus/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/execution/plus/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/execution/plus/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/execution/plus/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/execution/plus/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/execution/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/legacy_test OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/expected.status.2 OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/sh OLD_FILES+=usr/tests/usr.bin/make/shell/meta/legacy_test OLD_FILES+=usr/tests/usr.bin/make/shell/meta/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/shell/meta/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/shell/meta/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/shell/meta/expected.status.2 OLD_FILES+=usr/tests/usr.bin/make/shell/meta/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/shell/meta/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/make/shell/meta/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/shell/meta/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/make/shell/meta/sh OLD_FILES+=usr/tests/usr.bin/make/shell/path/legacy_test OLD_FILES+=usr/tests/usr.bin/make/shell/path/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/shell/path/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/shell/path/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/shell/path/expected.status.2 OLD_FILES+=usr/tests/usr.bin/make/shell/path/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/shell/path/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/make/shell/path/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/shell/path/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/make/shell/path/sh OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/legacy_test OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/expected.status.2 OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/shell OLD_FILES+=usr/tests/usr.bin/make/shell/replace/legacy_test OLD_FILES+=usr/tests/usr.bin/make/shell/replace/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/shell/replace/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/shell/replace/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/shell/replace/expected.status.2 OLD_FILES+=usr/tests/usr.bin/make/shell/replace/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/shell/replace/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/make/shell/replace/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/shell/replace/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/make/shell/replace/shell OLD_FILES+=usr/tests/usr.bin/make/shell/select/legacy_test OLD_FILES+=usr/tests/usr.bin/make/shell/select/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/shell/select/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/shell/select/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/shell/select/expected.status.2 OLD_FILES+=usr/tests/usr.bin/make/shell/select/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/shell/select/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/make/shell/select/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/shell/select/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/make/shell/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/suffixes/basic/legacy_test OLD_FILES+=usr/tests/usr.bin/make/suffixes/basic/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/suffixes/basic/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/suffixes/basic/TEST1.a OLD_FILES+=usr/tests/usr.bin/make/suffixes/basic/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/suffixes/basic/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/suffixes/basic/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild1/legacy_test OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild1/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild1/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild1/TEST1.a OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild1/TEST2.a OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild1/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild1/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild1/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild2/legacy_test OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild2/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild2/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild2/TEST1.a OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild2/TEST2.a OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild2/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild2/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild2/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/suffixes/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/syntax/directive-t0/legacy_test OLD_FILES+=usr/tests/usr.bin/make/syntax/directive-t0/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/syntax/directive-t0/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/syntax/directive-t0/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/syntax/directive-t0/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/syntax/directive-t0/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/legacy_test OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.status.2 OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.status.3 OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.status.4 OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.status.5 OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stderr.3 OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stderr.4 OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stderr.5 OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stdout.3 OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stdout.4 OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stdout.5 OLD_FILES+=usr/tests/usr.bin/make/syntax/funny-targets/legacy_test OLD_FILES+=usr/tests/usr.bin/make/syntax/funny-targets/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/syntax/funny-targets/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/syntax/funny-targets/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/syntax/funny-targets/expected.status.2 OLD_FILES+=usr/tests/usr.bin/make/syntax/funny-targets/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/syntax/funny-targets/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/make/syntax/funny-targets/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/syntax/funny-targets/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/make/syntax/semi/legacy_test OLD_FILES+=usr/tests/usr.bin/make/syntax/semi/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/syntax/semi/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/syntax/semi/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/syntax/semi/expected.status.2 OLD_FILES+=usr/tests/usr.bin/make/syntax/semi/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/syntax/semi/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/make/syntax/semi/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/syntax/semi/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/make/syntax/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/2/1/legacy_test OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/2/1/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/2/1/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/2/1/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/2/1/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/2/1/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/2/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/mk/sys.mk OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/mk/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/2/1/legacy_test OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/2/1/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/2/1/cleanup OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/2/1/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/2/1/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/2/1/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/2/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/mk/sys.mk OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/mk/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/2/1/legacy_test OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/2/1/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/2/1/cleanup OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/2/1/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/2/1/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/2/1/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/2/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/mk/sys.mk OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/mk/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/sysmk/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_M/legacy_test OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_M/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_M/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_M/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_M/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_M/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/legacy_test OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/expected.status.2 OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/expected.status.3 OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/expected.stderr.3 OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/expected.stdout.3 OLD_FILES+=usr/tests/usr.bin/make/variables/opt_V/legacy_test OLD_FILES+=usr/tests/usr.bin/make/variables/opt_V/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/variables/opt_V/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/variables/opt_V/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/variables/opt_V/expected.status.2 OLD_FILES+=usr/tests/usr.bin/make/variables/opt_V/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/variables/opt_V/expected.stderr.2 OLD_FILES+=usr/tests/usr.bin/make/variables/opt_V/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/variables/opt_V/expected.stdout.2 OLD_FILES+=usr/tests/usr.bin/make/variables/t0/legacy_test OLD_FILES+=usr/tests/usr.bin/make/variables/t0/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/variables/t0/Makefile.test OLD_FILES+=usr/tests/usr.bin/make/variables/t0/expected.status.1 OLD_FILES+=usr/tests/usr.bin/make/variables/t0/expected.stderr.1 OLD_FILES+=usr/tests/usr.bin/make/variables/t0/expected.stdout.1 OLD_FILES+=usr/tests/usr.bin/make/variables/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/Kyuafile OLD_FILES+=usr/tests/usr.bin/make/common.sh OLD_FILES+=usr/tests/usr.bin/make/test-new.mk OLD_DIRS+=usr/tests/usr.bin/make/variables/t0 OLD_DIRS+=usr/tests/usr.bin/make/variables/opt_V OLD_DIRS+=usr/tests/usr.bin/make/variables/modifier_t OLD_DIRS+=usr/tests/usr.bin/make/variables/modifier_M OLD_DIRS+=usr/tests/usr.bin/make/variables OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t2/mk OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t2/2/1 OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t2/2 OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t2 OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t1/mk OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t1/2/1 OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t1/2 OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t1 OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t0/mk OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t0/2/1 OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t0/2 OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t0 OLD_DIRS+=usr/tests/usr.bin/make/sysmk OLD_DIRS+=usr/tests/usr.bin/make/syntax/semi OLD_DIRS+=usr/tests/usr.bin/make/syntax/funny-targets OLD_DIRS+=usr/tests/usr.bin/make/syntax/enl OLD_DIRS+=usr/tests/usr.bin/make/syntax/directive-t0 OLD_DIRS+=usr/tests/usr.bin/make/syntax OLD_DIRS+=usr/tests/usr.bin/make/suffixes/src_wild2 OLD_DIRS+=usr/tests/usr.bin/make/suffixes/src_wild1 OLD_DIRS+=usr/tests/usr.bin/make/suffixes/basic OLD_DIRS+=usr/tests/usr.bin/make/suffixes OLD_DIRS+=usr/tests/usr.bin/make/shell/select OLD_DIRS+=usr/tests/usr.bin/make/shell/replace OLD_DIRS+=usr/tests/usr.bin/make/shell/path_select OLD_DIRS+=usr/tests/usr.bin/make/shell/path OLD_DIRS+=usr/tests/usr.bin/make/shell/meta OLD_DIRS+=usr/tests/usr.bin/make/shell/builtin OLD_DIRS+=usr/tests/usr.bin/make/shell OLD_DIRS+=usr/tests/usr.bin/make/execution/plus OLD_DIRS+=usr/tests/usr.bin/make/execution/joberr OLD_DIRS+=usr/tests/usr.bin/make/execution/empty OLD_DIRS+=usr/tests/usr.bin/make/execution/ellipsis OLD_DIRS+=usr/tests/usr.bin/make/execution OLD_DIRS+=usr/tests/usr.bin/make/basic/t3 OLD_DIRS+=usr/tests/usr.bin/make/basic/t2 OLD_DIRS+=usr/tests/usr.bin/make/basic/t1 OLD_DIRS+=usr/tests/usr.bin/make/basic/t0 OLD_DIRS+=usr/tests/usr.bin/make/basic OLD_DIRS+=usr/tests/usr.bin/make/archives/fmt_oldbsd OLD_DIRS+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod OLD_DIRS+=usr/tests/usr.bin/make/archives/fmt_44bsd OLD_DIRS+=usr/tests/usr.bin/make/archives OLD_DIRS+=usr/tests/usr.bin/make OLD_FILES+=usr/tests/usr.bin/yacc/legacy_test OLD_FILES+=usr/tests/usr.bin/yacc/regress.00.out OLD_FILES+=usr/tests/usr.bin/yacc/regress.01.out OLD_FILES+=usr/tests/usr.bin/yacc/regress.02.out OLD_FILES+=usr/tests/usr.bin/yacc/regress.03.out OLD_FILES+=usr/tests/usr.bin/yacc/regress.04.out OLD_FILES+=usr/tests/usr.bin/yacc/regress.05.out OLD_FILES+=usr/tests/usr.bin/yacc/regress.06.out OLD_FILES+=usr/tests/usr.bin/yacc/regress.07.out OLD_FILES+=usr/tests/usr.bin/yacc/regress.08.out OLD_FILES+=usr/tests/usr.bin/yacc/regress.09.out OLD_FILES+=usr/tests/usr.bin/yacc/regress.10.out OLD_FILES+=usr/tests/usr.bin/yacc/regress.11.out OLD_FILES+=usr/tests/usr.bin/yacc/regress.12.out OLD_FILES+=usr/tests/usr.bin/yacc/regress.13.out OLD_FILES+=usr/tests/usr.bin/yacc/regress.14.out OLD_FILES+=usr/tests/usr.bin/yacc/regress.sh OLD_FILES+=usr/tests/usr.bin/yacc/undefined.y .endif .else # ATF libraries. OLD_FILES+=etc/mtree/BSD.tests.dist OLD_FILES+=usr/bin/atf-sh OLD_DIRS+=usr/include/atf-c OLD_FILES+=usr/include/atf-c/build.h OLD_FILES+=usr/include/atf-c/check.h OLD_FILES+=usr/include/atf-c/config.h OLD_FILES+=usr/include/atf-c/defs.h OLD_FILES+=usr/include/atf-c/error.h OLD_FILES+=usr/include/atf-c/error_fwd.h OLD_FILES+=usr/include/atf-c/macros.h OLD_FILES+=usr/include/atf-c/tc.h OLD_FILES+=usr/include/atf-c/tp.h OLD_FILES+=usr/include/atf-c/utils.h OLD_FILES+=usr/include/atf-c.h OLD_DIRS+=usr/include/atf-c++ OLD_FILES+=usr/include/atf-c++/build.hpp OLD_FILES+=usr/include/atf-c++/check.hpp OLD_FILES+=usr/include/atf-c++/config.hpp OLD_FILES+=usr/include/atf-c++/macros.hpp OLD_FILES+=usr/include/atf-c++/tests.hpp OLD_FILES+=usr/include/atf-c++/utils.hpp OLD_FILES+=usr/include/atf-c++.hpp OLD_FILES+=usr/lib/libatf-c_p.a OLD_FILES+=usr/lib/libatf-c.so.1 OLD_FILES+=usr/lib/libatf-c.so OLD_FILES+=usr/lib/libatf-c++.a OLD_FILES+=usr/lib/libatf-c++_p.a OLD_FILES+=usr/lib/libatf-c++.so.1 OLD_FILES+=usr/lib/libatf-c++.so OLD_FILES+=usr/lib/libatf-c.a OLD_FILES+=usr/libexec/atf-check OLD_FILES+=usr/libexec/atf-sh OLD_DIRS+=usr/share/atf OLD_FILES+=usr/share/atf/libatf-sh.subr OLD_DIRS+=usr/share/doc/atf OLD_FILES+=usr/share/doc/atf/AUTHORS OLD_FILES+=usr/share/doc/atf/COPYING OLD_FILES+=usr/share/doc/atf/NEWS OLD_FILES+=usr/share/doc/atf/README OLD_FILES+=usr/share/doc/pjdfstest/README OLD_FILES+=usr/share/man/man1/atf-check.1.gz OLD_FILES+=usr/share/man/man1/atf-sh.1.gz OLD_FILES+=usr/share/man/man1/atf-test-program.1.gz OLD_FILES+=usr/share/man/man3/atf-c-api.3.gz OLD_FILES+=usr/share/man/man3/atf-c++-api.3.gz OLD_FILES+=usr/share/man/man3/atf-sh-api.3.gz OLD_FILES+=usr/share/man/man3/atf-sh.3.gz OLD_FILES+=usr/share/man/man4/atf-test-case.4.gz OLD_FILES+=usr/share/man/man7/atf.7.gz OLD_FILES+=usr/share/mk/atf.test.mk OLD_FILES+=usr/share/mk/plain.test.mk OLD_FILES+=usr/share/mk/suite.test.mk OLD_FILES+=usr/share/mk/tap.test.mk # Test suite. . if exists(${DESTDIR}${TESTSBASE}) TESTS_DIRS!=find ${DESTDIR}${TESTSBASE} -type d | sed -e 's,^${DESTDIR}/,,'; echo OLD_DIRS+=${TESTS_DIRS} TESTS_FILES!=find ${DESTDIR}${TESTSBASE} \! -type d | sed -e 's,^${DESTDIR}/,,'; echo OLD_FILES+=${TESTS_FILES} . endif .endif # Test suite. .if ${MK_TESTS_SUPPORT} == no OLD_FILES+=usr/include/atf-c++.hpp OLD_FILES+=usr/include/atf-c++/build.hpp OLD_FILES+=usr/include/atf-c++/check.hpp OLD_FILES+=usr/include/atf-c++/macros.hpp OLD_FILES+=usr/include/atf-c++/tests.hpp OLD_FILES+=usr/include/atf-c++/utils.hpp OLD_FILES+=usr/include/atf-c.h OLD_FILES+=usr/include/atf-c/build.h OLD_FILES+=usr/include/atf-c/check.h OLD_FILES+=usr/include/atf-c/defs.h OLD_FILES+=usr/include/atf-c/error.h OLD_FILES+=usr/include/atf-c/error_fwd.h OLD_FILES+=usr/include/atf-c/macros.h OLD_FILES+=usr/include/atf-c/tc.h OLD_FILES+=usr/include/atf-c/tp.h OLD_FILES+=usr/include/atf-c/utils.h OLD_LIBS+=usr/lib/private/libatf-c++.so.2 OLD_LIBS+=usr/lib/private/libatf-c.so.1 OLD_FILES+=usr/share/man/man3/atf-c++.3.gz OLD_FILES+=usr/share/man/man3/atf-c-api++.3.gz OLD_FILES+=usr/share/man/man3/atf-c-api.3.gz OLD_FILES+=usr/share/man/man3/atf-c.3.gz OLD_FILES+=usr/tests/lib/atf/Kyuafile OLD_FILES+=usr/tests/lib/atf/libatf-c++/Kyuafile OLD_FILES+=usr/tests/lib/atf/libatf-c++/atf_c++_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/build_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/check_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/Kyuafile OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/application_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/env_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/exceptions_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/fs_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/process_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/text_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/version_helper OLD_FILES+=usr/tests/lib/atf/libatf-c++/macros_hpp_test.cpp OLD_FILES+=usr/tests/lib/atf/libatf-c++/macros_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/tests_test OLD_FILES+=usr/tests/lib/atf/libatf-c++/unused_test.cpp OLD_FILES+=usr/tests/lib/atf/libatf-c++/utils_test OLD_FILES+=usr/tests/lib/atf/libatf-c/Kyuafile OLD_FILES+=usr/tests/lib/atf/libatf-c/atf_c_test OLD_FILES+=usr/tests/lib/atf/libatf-c/build_test OLD_FILES+=usr/tests/lib/atf/libatf-c/check_test OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/Kyuafile OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/dynstr_test OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/env_test OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/fs_test OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/list_test OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/map_test OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/process_helpers OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/process_test OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/sanity_test OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/text_test OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/user_test OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/version_helper OLD_FILES+=usr/tests/lib/atf/libatf-c/error_test OLD_FILES+=usr/tests/lib/atf/libatf-c/macros_h_test.c OLD_FILES+=usr/tests/lib/atf/libatf-c/macros_test OLD_FILES+=usr/tests/lib/atf/libatf-c/tc_test OLD_FILES+=usr/tests/lib/atf/libatf-c/tp_test OLD_FILES+=usr/tests/lib/atf/libatf-c/unused_test.c OLD_FILES+=usr/tests/lib/atf/libatf-c/utils_test OLD_FILES+=usr/tests/lib/atf/test-programs/Kyuafile OLD_FILES+=usr/tests/lib/atf/test-programs/c_helpers OLD_FILES+=usr/tests/lib/atf/test-programs/config_test OLD_FILES+=usr/tests/lib/atf/test-programs/cpp_helpers OLD_FILES+=usr/tests/lib/atf/test-programs/expect_test OLD_FILES+=usr/tests/lib/atf/test-programs/meta_data_test OLD_FILES+=usr/tests/lib/atf/test-programs/result_test OLD_FILES+=usr/tests/lib/atf/test-programs/sh_helpers OLD_FILES+=usr/tests/lib/atf/test-programs/srcdir_test .endif .if ${MK_TEXTPROC} == no OLD_FILES+=usr/bin/checknr OLD_FILES+=usr/bin/colcrt OLD_FILES+=usr/bin/ul OLD_FILES+=usr/share/man/man1/checknr.1.gz OLD_FILES+=usr/share/man/man1/colcrt.1.gz OLD_FILES+=usr/share/man/man1/ul.1.gz .endif .if ${MK_TOOLCHAIN} == no OLD_FILES+=usr/bin/addr2line OLD_FILES+=usr/bin/as OLD_FILES+=usr/bin/byacc OLD_FILES+=usr/bin/cc OLD_FILES+=usr/bin/c88 OLD_FILES+=usr/bin/c++ OLD_FILES+=usr/bin/c++filt OLD_FILES+=usr/bin/ld OLD_FILES+=usr/bin/ld.bfd OLD_FILES+=usr/bin/nm OLD_FILES+=usr/bin/objcopy OLD_FILES+=usr/bin/readelf OLD_FILES+=usr/bin/size OLD_FILES+=usr/bin/strings OLD_FILES+=usr/bin/strip OLD_FILES+=usr/bin/yacc OLD_FILES+=usr/share/man/man1/addr2line.1.gz OLD_FILES+=usr/share/man/man1/c++filt.1.gz OLD_FILES+=usr/share/man/man1/nm.1.gz OLD_FILES+=usr/share/man/man1/readelf.1.gz OLD_FILES+=usr/share/man/man1/size.1.gz OLD_FILES+=usr/share/man/man1/strings.1.gz OLD_FILES+=usr/share/man/man1/strip.1.gz OLD_FILES+=usr/share/man/man1/objcopy.1.gz OLD_FILES+=usr/tests/usr.bin/yacc/Kyuafile OLD_FILES+=usr/tests/usr.bin/yacc/btyacc_calc1.y OLD_FILES+=usr/tests/usr.bin/yacc/btyacc_demo.y OLD_FILES+=usr/tests/usr.bin/yacc/calc.y OLD_FILES+=usr/tests/usr.bin/yacc/calc1.y OLD_FILES+=usr/tests/usr.bin/yacc/calc2.y OLD_FILES+=usr/tests/usr.bin/yacc/calc3.y OLD_FILES+=usr/tests/usr.bin/yacc/code_calc.y OLD_FILES+=usr/tests/usr.bin/yacc/code_debug.y OLD_FILES+=usr/tests/usr.bin/yacc/code_error.y OLD_FILES+=usr/tests/usr.bin/yacc/empty.y OLD_FILES+=usr/tests/usr.bin/yacc/err_inherit1.y OLD_FILES+=usr/tests/usr.bin/yacc/err_inherit2.y OLD_FILES+=usr/tests/usr.bin/yacc/err_inherit3.y OLD_FILES+=usr/tests/usr.bin/yacc/err_inherit4.y OLD_FILES+=usr/tests/usr.bin/yacc/err_inherit5.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax1.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax10.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax11.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax12.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax13.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax14.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax15.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax16.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax17.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax18.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax19.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax2.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax20.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax21.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax22.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax23.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax24.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax25.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax26.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax27.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax3.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax4.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax5.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax6.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax7.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax7a.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax7b.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax8.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax8a.y OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax9.y OLD_FILES+=usr/tests/usr.bin/yacc/error.y OLD_FILES+=usr/tests/usr.bin/yacc/grammar.y OLD_FILES+=usr/tests/usr.bin/yacc/inherit0.y OLD_FILES+=usr/tests/usr.bin/yacc/inherit1.y OLD_FILES+=usr/tests/usr.bin/yacc/inherit2.y OLD_FILES+=usr/tests/usr.bin/yacc/ok_syntax1.y OLD_FILES+=usr/tests/usr.bin/yacc/pure_calc.y OLD_FILES+=usr/tests/usr.bin/yacc/pure_error.y OLD_FILES+=usr/tests/usr.bin/yacc/quote_calc.y OLD_FILES+=usr/tests/usr.bin/yacc/quote_calc2.y OLD_FILES+=usr/tests/usr.bin/yacc/quote_calc3.y OLD_FILES+=usr/tests/usr.bin/yacc/quote_calc4.y OLD_FILES+=usr/tests/usr.bin/yacc/run_test OLD_FILES+=usr/tests/usr.bin/yacc/varsyntax_calc1.y OLD_FILES+=usr/tests/usr.bin/yacc/yacc/big_b.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/big_b.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/big_l.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/big_l.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc1.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc1.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc1.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc1.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc2.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc2.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc2.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc2.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc3.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc3.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc3.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc3.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_calc.code.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_calc.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_calc.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_calc.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_calc.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_error.code.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_error.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_error.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_error.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_error.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/empty.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/empty.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/empty.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/empty.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax1.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax1.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax1.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax1.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax10.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax10.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax10.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax10.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax11.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax11.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax11.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax11.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax12.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax12.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax12.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax12.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax13.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax13.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax13.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax13.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax14.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax14.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax14.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax14.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax15.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax15.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax15.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax15.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax16.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax16.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax16.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax16.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax17.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax17.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax17.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax17.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax18.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax18.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax18.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax18.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax19.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax19.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax19.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax19.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax2.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax2.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax2.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax2.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax20.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax20.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax20.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax20.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax21.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax21.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax21.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax21.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax22.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax22.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax22.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax22.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax23.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax23.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax23.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax23.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax24.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax24.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax24.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax24.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax25.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax25.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax25.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax25.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax26.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax26.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax26.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax26.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax27.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax27.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax27.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax27.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax3.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax3.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax3.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax3.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax4.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax4.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax4.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax4.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax5.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax5.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax5.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax5.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax6.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax6.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax6.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax6.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7a.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7a.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7a.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7a.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7b.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7b.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7b.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7b.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax8.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax8.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax8.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax8.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax8a.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax8a.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax8a.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax8a.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax9.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax9.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax9.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax9.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/error.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/error.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/error.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/error.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/grammar.dot OLD_FILES+=usr/tests/usr.bin/yacc/yacc/grammar.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/grammar.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/grammar.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/grammar.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/help.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/help.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_b_opt.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_b_opt.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_b_opt1.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_b_opt1.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_code_c.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_code_c.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_defines.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_defines.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_graph.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_graph.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_include.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_include.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_opts.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_opts.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_output.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_output.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_output1.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_output1.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_output2.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_output2.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_p_opt.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_p_opt.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_p_opt1.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_p_opt1.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_verbose.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_verbose.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/nostdin.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/nostdin.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/ok_syntax1.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/ok_syntax1.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/ok_syntax1.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/ok_syntax1.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/pure_calc.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/pure_calc.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/pure_calc.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/pure_calc.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/pure_error.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/pure_error.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/pure_error.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/pure_error.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc-s.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc-s.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc-s.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc-s.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc2-s.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc2-s.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc2-s.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc2-s.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc2.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc2.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc2.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc2.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc3-s.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc3-s.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc3-s.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc3-s.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc3.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc3.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc3.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc3.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc4-s.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc4-s.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc4-s.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc4-s.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc4.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc4.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc4.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc4.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/rename_debug.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/rename_debug.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/rename_debug.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc/rename_debug.i OLD_FILES+=usr/tests/usr.bin/yacc/yacc/rename_debug.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/varsyntax_calc1.error OLD_FILES+=usr/tests/usr.bin/yacc/yacc/varsyntax_calc1.output OLD_FILES+=usr/tests/usr.bin/yacc/yacc/varsyntax_calc1.tab.c OLD_FILES+=usr/tests/usr.bin/yacc/yacc/varsyntax_calc1.tab.h OLD_FILES+=usr/tests/usr.bin/yacc/yacc_tests OLD_DIRS+=usr/tests/usr.bin/yacc .endif .if ${MK_UNBOUND} == no OLD_FILES+=etc/rc.d/local_unbound OLD_FILES+=etc/unbound OLD_FILES+=usr/lib/private/libunbound.a OLD_FILES+=usr/lib/private/libunbound.so OLD_LIBS+=usr/lib/private/libunbound.so.5 OLD_FILES+=usr/lib/private/libunbound_p.a .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" OLD_FILES+=usr/lib32/private/libunbound.a OLD_FILES+=usr/lib32/private/libunbound.so OLD_LIBS+=usr/lib32/private/libunbound.so.5 OLD_FILES+=usr/lib32/private/libunbound_p.a .endif OLD_FILES+=usr/sbin/local-unbound-setup OLD_FILES+=usr/sbin/unbound OLD_FILES+=usr/sbin/unbound-anchor OLD_FILES+=usr/sbin/unbound-checkconf OLD_FILES+=usr/sbin/unbound-control OLD_FILES+=usr/share/man/man5/unbound.conf.5.gz OLD_FILES+=usr/share/man/man8/unbound-anchor.8.gz OLD_FILES+=usr/share/man/man8/unbound-checkconf.8.gz OLD_FILES+=usr/share/man/man8/unbound-control.8.gz OLD_FILES+=usr/share/man/man8/unbound.8.gz .endif .if ${MK_USB} == no OLD_FILES+=etc/devd/uath.conf OLD_FILES+=etc/devd/uauth.conf OLD_FILES+=etc/devd/ulpt.conf OLD_FILES+=etc/devd/usb.conf OLD_FILES+=usr/bin/usbhidaction OLD_FILES+=usr/bin/usbhidctl OLD_FILES+=usr/include/libusb.h OLD_FILES+=usr/include/libusb20.h OLD_FILES+=usr/include/libusb20_desc.h OLD_FILES+=usr/include/usb.h OLD_FILES+=usr/include/usbhid.h OLD_FILES+=usr/lib/libusb.a OLD_FILES+=usr/lib/libusb.so OLD_LIBS+=usr/lib/libusb.so.3 OLD_FILES+=usr/lib/libusb_p.a OLD_FILES+=usr/lib/libusbhid.a OLD_FILES+=usr/lib/libusbhid.so OLD_LIBS+=usr/lib/libusbhid.so.4 OLD_FILES+=usr/lib/libusbhid_p.a OLD_FILES+=usr/lib32/libusb.a OLD_FILES+=usr/lib32/libusb.so OLD_LIBS+=usr/lib32/libusb.so.3 OLD_FILES+=usr/lib32/libusb_p.a OLD_FILES+=usr/lib32/libusbhid.a OLD_FILES+=usr/lib32/libusbhid.so OLD_LIBS+=usr/lib32/libusbhid.so.4 OLD_FILES+=usr/lib32/libusbhid_p.a OLD_FILES+=usr/libdata/pkgconfig/libusb-0.1.pc OLD_FILES+=usr/libdata/pkgconfig/libusb-1.0.pc OLD_FILES+=usr/libdata/pkgconfig/libusb-2.0.pc OLD_FILES+=usr/sbin/uathload OLD_FILES+=usr/sbin/uhsoctl OLD_FILES+=usr/sbin/usbconfig OLD_FILES+=usr/sbin/usbdump OLD_FILES+=usr/share/examples/libusb20/Makefile OLD_FILES+=usr/share/examples/libusb20/README OLD_FILES+=usr/share/examples/libusb20/bulk.c OLD_FILES+=usr/share/examples/libusb20/control.c OLD_FILES+=usr/share/examples/libusb20/util.c OLD_FILES+=usr/share/examples/libusb20/util.h OLD_DIRS+=usr/share/examples/libusb20 OLD_FILES+=usr/share/firmware/ar5523.bin OLD_FILES+=usr/share/man/man1/uhsoctl.1.gz OLD_FILES+=usr/share/man/man1/usbhidaction.1.gz OLD_FILES+=usr/share/man/man1/usbhidctl.1.gz OLD_FILES+=usr/share/man/man3/hid_dispose_report_desc.3.gz OLD_FILES+=usr/share/man/man3/hid_end_parse.3.gz OLD_FILES+=usr/share/man/man3/hid_get_data.3.gz OLD_FILES+=usr/share/man/man3/hid_get_item.3.gz OLD_FILES+=usr/share/man/man3/hid_get_report_desc.3.gz OLD_FILES+=usr/share/man/man3/hid_init.3.gz OLD_FILES+=usr/share/man/man3/hid_locate.3.gz OLD_FILES+=usr/share/man/man3/hid_report_size.3.gz OLD_FILES+=usr/share/man/man3/hid_set_data.3.gz OLD_FILES+=usr/share/man/man3/hid_start_parse.3.gz OLD_FILES+=usr/share/man/man3/hid_usage_in_page.3.gz OLD_FILES+=usr/share/man/man3/hid_usage_page.3.gz OLD_FILES+=usr/share/man/man3/libusb.3.gz OLD_FILES+=usr/share/man/man3/libusb20.3.gz OLD_FILES+=usr/share/man/man3/libusb20_be_add_dev_quirk.3.gz OLD_FILES+=usr/share/man/man3/libusb20_be_alloc_default.3.gz OLD_FILES+=usr/share/man/man3/libusb20_be_dequeue_device.3.gz OLD_FILES+=usr/share/man/man3/libusb20_be_device_foreach.3.gz OLD_FILES+=usr/share/man/man3/libusb20_be_enqueue_device.3.gz OLD_FILES+=usr/share/man/man3/libusb20_be_free.3.gz OLD_FILES+=usr/share/man/man3/libusb20_be_get_dev_quirk.3.gz OLD_FILES+=usr/share/man/man3/libusb20_be_get_quirk_name.3.gz OLD_FILES+=usr/share/man/man3/libusb20_be_get_template.3.gz OLD_FILES+=usr/share/man/man3/libusb20_be_remove_dev_quirk.3.gz OLD_FILES+=usr/share/man/man3/libusb20_be_set_template.3.gz OLD_FILES+=usr/share/man/man3/libusb20_desc_foreach.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_alloc.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_alloc_config.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_check_connected.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_close.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_detach_kernel_driver.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_free.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_get_address.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_get_backend_name.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_get_bus_number.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_get_config_index.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_get_debug.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_get_desc.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_get_device_desc.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_get_fd.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_get_iface_desc.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_get_info.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_get_mode.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_get_parent_address.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_get_parent_port.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_get_port_path.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_get_power_mode.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_get_power_usage.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_get_speed.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_kernel_driver_active.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_open.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_process.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_req_string_simple_sync.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_req_string_sync.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_request_sync.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_reset.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_set_alt_index.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_set_config_index.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_set_debug.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_set_power_mode.3.gz OLD_FILES+=usr/share/man/man3/libusb20_dev_wait_process.3.gz OLD_FILES+=usr/share/man/man3/libusb20_error_name.3.gz OLD_FILES+=usr/share/man/man3/libusb20_me_decode.3.gz OLD_FILES+=usr/share/man/man3/libusb20_me_encode.3.gz OLD_FILES+=usr/share/man/man3/libusb20_me_get_1.3.gz OLD_FILES+=usr/share/man/man3/libusb20_me_get_2.3.gz OLD_FILES+=usr/share/man/man3/libusb20_strerror.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_bulk_intr_sync.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_callback_wrapper.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_clear_stall_sync.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_close.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_drain.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_get_actual_frames.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_get_actual_length.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_get_length.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_get_max_frames.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_get_max_packet_length.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_get_max_total_length.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_get_pointer.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_get_priv_sc0.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_get_priv_sc1.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_get_status.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_get_time_complete.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_open.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_pending.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_set_buffer.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_set_callback.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_set_flags.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_set_length.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_set_priv_sc0.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_set_priv_sc1.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_set_timeout.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_set_total_frames.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_setup_bulk.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_setup_control.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_setup_intr.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_setup_isoc.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_start.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_stop.3.gz OLD_FILES+=usr/share/man/man3/libusb20_tr_submit.3.gz OLD_FILES+=usr/share/man/man3/libusb_alloc_transfer.3.gz OLD_FILES+=usr/share/man/man3/libusb_attach_kernel_driver.3.gz OLD_FILES+=usr/share/man/man3/libusb_bulk_transfer.3.gz OLD_FILES+=usr/share/man/man3/libusb_cancel_transfer.3.gz OLD_FILES+=usr/share/man/man3/libusb_check_connected.3.gz OLD_FILES+=usr/share/man/man3/libusb_claim_interface.3.gz OLD_FILES+=usr/share/man/man3/libusb_clear_halt.3.gz OLD_FILES+=usr/share/man/man3/libusb_close.3.gz OLD_FILES+=usr/share/man/man3/libusb_control_transfer.3.gz OLD_FILES+=usr/share/man/man3/libusb_detach_kernel_driver.3.gz OLD_FILES+=usr/share/man/man3/libusb_detach_kernel_driver_np.3.gz OLD_FILES+=usr/share/man/man3/libusb_error_name.3.gz OLD_FILES+=usr/share/man/man3/libusb_event_handler_active.3.gz OLD_FILES+=usr/share/man/man3/libusb_event_handling_ok.3.gz OLD_FILES+=usr/share/man/man3/libusb_exit.3.gz OLD_FILES+=usr/share/man/man3/libusb_free_bos_descriptor.3.gz OLD_FILES+=usr/share/man/man3/libusb_free_config_descriptor.3.gz OLD_FILES+=usr/share/man/man3/libusb_free_device_list.3.gz OLD_FILES+=usr/share/man/man3/libusb_free_ss_endpoint_comp.3.gz OLD_FILES+=usr/share/man/man3/libusb_free_transfer.3.gz OLD_FILES+=usr/share/man/man3/libusb_get_active_config_descriptor.3.gz OLD_FILES+=usr/share/man/man3/libusb_get_bus_number.3.gz OLD_FILES+=usr/share/man/man3/libusb_get_config_descriptor.3.gz OLD_FILES+=usr/share/man/man3/libusb_get_config_descriptor_by_value.3.gz OLD_FILES+=usr/share/man/man3/libusb_get_configuration.3.gz OLD_FILES+=usr/share/man/man3/libusb_get_device.3.gz OLD_FILES+=usr/share/man/man3/libusb_get_device_address.3.gz OLD_FILES+=usr/share/man/man3/libusb_get_device_descriptor.3.gz OLD_FILES+=usr/share/man/man3/libusb_get_device_list.3.gz OLD_FILES+=usr/share/man/man3/libusb_get_device_speed.3.gz OLD_FILES+=usr/share/man/man3/libusb_get_driver.3.gz OLD_FILES+=usr/share/man/man3/libusb_get_driver_np.3.gz OLD_FILES+=usr/share/man/man3/libusb_get_max_iso_packet_size.3.gz OLD_FILES+=usr/share/man/man3/libusb_get_max_packet_size.3.gz OLD_FILES+=usr/share/man/man3/libusb_get_next_timeout.3.gz OLD_FILES+=usr/share/man/man3/libusb_get_pollfds.3.gz OLD_FILES+=usr/share/man/man3/libusb_get_string_descriptor.3.gz OLD_FILES+=usr/share/man/man3/libusb_get_string_descriptor_ascii.3.gz OLD_FILES+=usr/share/man/man3/libusb_handle_events.3.gz OLD_FILES+=usr/share/man/man3/libusb_handle_events_completed.3.gz OLD_FILES+=usr/share/man/man3/libusb_handle_events_locked.3.gz OLD_FILES+=usr/share/man/man3/libusb_handle_events_timeout.3.gz OLD_FILES+=usr/share/man/man3/libusb_handle_events_timeout_completed.3.gz OLD_FILES+=usr/share/man/man3/libusb_init.3.gz OLD_FILES+=usr/share/man/man3/libusb_interrupt_transfer.3.gz OLD_FILES+=usr/share/man/man3/libusb_kernel_driver_active.3.gz OLD_FILES+=usr/share/man/man3/libusb_lock_event_waiters.3.gz OLD_FILES+=usr/share/man/man3/libusb_lock_events.3.gz OLD_FILES+=usr/share/man/man3/libusb_open.3.gz OLD_FILES+=usr/share/man/man3/libusb_open_device_with_vid_pid.3.gz OLD_FILES+=usr/share/man/man3/libusb_parse_bos_descriptor.3.gz OLD_FILES+=usr/share/man/man3/libusb_parse_ss_endpoint_comp.3.gz OLD_FILES+=usr/share/man/man3/libusb_ref_device.3.gz OLD_FILES+=usr/share/man/man3/libusb_release_interface.3.gz OLD_FILES+=usr/share/man/man3/libusb_reset_device.3.gz OLD_FILES+=usr/share/man/man3/libusb_set_configuration.3.gz OLD_FILES+=usr/share/man/man3/libusb_set_debug.3.gz OLD_FILES+=usr/share/man/man3/libusb_set_interface_alt_setting.3.gz OLD_FILES+=usr/share/man/man3/libusb_set_pollfd_notifiers.3.gz OLD_FILES+=usr/share/man/man3/libusb_strerror.3.gz OLD_FILES+=usr/share/man/man3/libusb_submit_transfer.3.gz OLD_FILES+=usr/share/man/man3/libusb_try_lock_events.3.gz OLD_FILES+=usr/share/man/man3/libusb_unlock_event_waiters.3.gz OLD_FILES+=usr/share/man/man3/libusb_unlock_events.3.gz OLD_FILES+=usr/share/man/man3/libusb_unref_device.3.gz OLD_FILES+=usr/share/man/man3/libusb_wait_for_event.3.gz OLD_FILES+=usr/share/man/man3/libusbhid.3.gz OLD_FILES+=usr/share/man/man3/usb.3.gz OLD_FILES+=usr/share/man/man3/usb_bulk_read.3.gz OLD_FILES+=usr/share/man/man3/usb_bulk_write.3.gz OLD_FILES+=usr/share/man/man3/usb_check_connected.3.gz OLD_FILES+=usr/share/man/man3/usb_claim_interface.3.gz OLD_FILES+=usr/share/man/man3/usb_clear_halt.3.gz OLD_FILES+=usr/share/man/man3/usb_close.3.gz OLD_FILES+=usr/share/man/man3/usb_control_msg.3.gz OLD_FILES+=usr/share/man/man3/usb_destroy_configuration.3.gz OLD_FILES+=usr/share/man/man3/usb_device.3.gz OLD_FILES+=usr/share/man/man3/usb_fetch_and_parse_descriptors.3.gz OLD_FILES+=usr/share/man/man3/usb_find_busses.3.gz OLD_FILES+=usr/share/man/man3/usb_find_devices.3.gz OLD_FILES+=usr/share/man/man3/usb_get_busses.3.gz OLD_FILES+=usr/share/man/man3/usb_get_descriptor.3.gz OLD_FILES+=usr/share/man/man3/usb_get_descriptor_by_endpoint.3.gz OLD_FILES+=usr/share/man/man3/usb_get_string.3.gz OLD_FILES+=usr/share/man/man3/usb_get_string_simple.3.gz OLD_FILES+=usr/share/man/man3/usb_init.3.gz OLD_FILES+=usr/share/man/man3/usb_interrupt_read.3.gz OLD_FILES+=usr/share/man/man3/usb_interrupt_write.3.gz OLD_FILES+=usr/share/man/man3/usb_open.3.gz OLD_FILES+=usr/share/man/man3/usb_parse_configuration.3.gz OLD_FILES+=usr/share/man/man3/usb_parse_descriptor.3.gz OLD_FILES+=usr/share/man/man3/usb_release_interface.3.gz OLD_FILES+=usr/share/man/man3/usb_reset.3.gz OLD_FILES+=usr/share/man/man3/usb_resetep.3.gz OLD_FILES+=usr/share/man/man3/usb_set_altinterface.3.gz OLD_FILES+=usr/share/man/man3/usb_set_configuration.3.gz OLD_FILES+=usr/share/man/man3/usb_set_debug.3.gz OLD_FILES+=usr/share/man/man3/usb_strerror.3.gz OLD_FILES+=usr/share/man/man3/usbhid.3.gz OLD_FILES+=usr/share/man/man4/if_otus.4.gz OLD_FILES+=usr/share/man/man4/if_rsu.4.gz OLD_FILES+=usr/share/man/man4/otus.4.gz OLD_FILES+=usr/share/man/man4/otusfw.4.gz OLD_FILES+=usr/share/man/man4/rsu.4.gz OLD_FILES+=usr/share/man/man4/rsufw.4.gz +OLD_FILES+=usr/share/man/man4/rtwn_usb.4.gz OLD_FILES+=usr/share/man/man4/u3g.4.gz OLD_FILES+=usr/share/man/man4/u3gstub.4.gz OLD_FILES+=usr/share/man/man4/uark.4.gz OLD_FILES+=usr/share/man/man4/uart.4.gz OLD_FILES+=usr/share/man/man4/uath.4.gz OLD_FILES+=usr/share/man/man4/ubsa.4.gz OLD_FILES+=usr/share/man/man4/ubsec.4.gz OLD_FILES+=usr/share/man/man4/ubser.4.gz OLD_FILES+=usr/share/man/man4/ubtbcmfw.4.gz OLD_FILES+=usr/share/man/man4/uchcom.4.gz OLD_FILES+=usr/share/man/man4/ucom.4.gz OLD_FILES+=usr/share/man/man4/ucycom.4.gz OLD_FILES+=usr/share/man/man4/udav.4.gz OLD_FILES+=usr/share/man/man4/udbp.4.gz OLD_FILES+=usr/share/man/man4/udp.4.gz OLD_FILES+=usr/share/man/man4/udplite.4.gz OLD_FILES+=usr/share/man/man4/uep.4.gz OLD_FILES+=usr/share/man/man4/ufm.4.gz OLD_FILES+=usr/share/man/man4/ufoma.4.gz OLD_FILES+=usr/share/man/man4/uftdi.4.gz OLD_FILES+=usr/share/man/man4/ugen.4.gz OLD_FILES+=usr/share/man/man4/uhci.4.gz OLD_FILES+=usr/share/man/man4/uhid.4.gz OLD_FILES+=usr/share/man/man4/uhso.4.gz OLD_FILES+=usr/share/man/man4/uipaq.4.gz OLD_FILES+=usr/share/man/man4/ukbd.4.gz OLD_FILES+=usr/share/man/man4/uled.4.gz OLD_FILES+=usr/share/man/man4/ulpt.4.gz OLD_FILES+=usr/share/man/man4/umass.4.gz OLD_FILES+=usr/share/man/man4/umcs.4.gz OLD_FILES+=usr/share/man/man4/umct.4.gz OLD_FILES+=usr/share/man/man4/umodem.4.gz OLD_FILES+=usr/share/man/man4/umoscom.4.gz OLD_FILES+=usr/share/man/man4/ums.4.gz OLD_FILES+=usr/share/man/man4/unix.4.gz OLD_FILES+=usr/share/man/man4/upgt.4.gz OLD_FILES+=usr/share/man/man4/uplcom.4.gz OLD_FILES+=usr/share/man/man4/ural.4.gz OLD_FILES+=usr/share/man/man4/urio.4.gz OLD_FILES+=usr/share/man/man4/urndis.4.gz OLD_FILES+=usr/share/man/man4/urtw.4.gz -OLD_FILES+=usr/share/man/man4/urtwn.4.gz -OLD_FILES+=usr/share/man/man4/urtwnfw.4.gz OLD_FILES+=usr/share/man/man4/usb.4.gz OLD_FILES+=usr/share/man/man4/usb_quirk.4.gz OLD_FILES+=usr/share/man/man4/usb_template.4.gz OLD_FILES+=usr/share/man/man4/usfs.4.gz OLD_FILES+=usr/share/man/man4/uslcom.4.gz OLD_FILES+=usr/share/man/man4/utopia.4.gz OLD_FILES+=usr/share/man/man4/uvisor.4.gz OLD_FILES+=usr/share/man/man4/uvscom.4.gz OLD_FILES+=usr/share/man/man8/uathload.8.gz OLD_FILES+=usr/share/man/man8/usbconfig.8.gz OLD_FILES+=usr/share/man/man8/usbdump.8.gz OLD_FILES+=usr/share/man/man9/usb_fifo_alloc_buffer.9.gz OLD_FILES+=usr/share/man/man9/usb_fifo_attach.9.gz OLD_FILES+=usr/share/man/man9/usb_fifo_detach.9.gz OLD_FILES+=usr/share/man/man9/usb_fifo_free_buffer.9.gz OLD_FILES+=usr/share/man/man9/usb_fifo_get_data.9.gz OLD_FILES+=usr/share/man/man9/usb_fifo_get_data_buffer.9.gz OLD_FILES+=usr/share/man/man9/usb_fifo_get_data_error.9.gz OLD_FILES+=usr/share/man/man9/usb_fifo_get_data_linear.9.gz OLD_FILES+=usr/share/man/man9/usb_fifo_put_bytes_max.9.gz OLD_FILES+=usr/share/man/man9/usb_fifo_put_data.9.gz OLD_FILES+=usr/share/man/man9/usb_fifo_put_data_buffer.9.gz OLD_FILES+=usr/share/man/man9/usb_fifo_put_data_error.9.gz OLD_FILES+=usr/share/man/man9/usb_fifo_put_data_linear.9.gz OLD_FILES+=usr/share/man/man9/usb_fifo_reset.9.gz OLD_FILES+=usr/share/man/man9/usb_fifo_softc.9.gz OLD_FILES+=usr/share/man/man9/usb_fifo_wakeup.9.gz OLD_FILES+=usr/share/man/man9/usbd_do_request.9.gz OLD_FILES+=usr/share/man/man9/usbd_do_request_flags.9.gz OLD_FILES+=usr/share/man/man9/usbd_errstr.9.gz OLD_FILES+=usr/share/man/man9/usbd_lookup_id_by_info.9.gz OLD_FILES+=usr/share/man/man9/usbd_lookup_id_by_uaa.9.gz OLD_FILES+=usr/share/man/man9/usbd_transfer_clear_stall.9.gz OLD_FILES+=usr/share/man/man9/usbd_transfer_drain.9.gz OLD_FILES+=usr/share/man/man9/usbd_transfer_pending.9.gz OLD_FILES+=usr/share/man/man9/usbd_transfer_poll.9.gz OLD_FILES+=usr/share/man/man9/usbd_transfer_setup.9.gz OLD_FILES+=usr/share/man/man9/usbd_transfer_start.9.gz OLD_FILES+=usr/share/man/man9/usbd_transfer_stop.9.gz OLD_FILES+=usr/share/man/man9/usbd_transfer_submit.9.gz OLD_FILES+=usr/share/man/man9/usbd_transfer_unsetup.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_clr_flag.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_frame_data.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_frame_len.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_get_frame.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_get_priv.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_is_stalled.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_max_framelen.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_max_frames.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_max_len.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_set_flag.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_set_frame_data.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_set_frame_len.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_set_frame_offset.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_set_frames.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_set_interval.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_set_priv.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_set_stall.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_set_timeout.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_softc.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_state.9.gz OLD_FILES+=usr/share/man/man9/usbd_xfer_status.9.gz OLD_FILES+=usr/share/man/man9/usbdi.9.gz OLD_FILES+=usr/share/misc/usb_hid_usages OLD_FILES+=usr/share/misc/usbdevs .endif .if ${MK_UTMPX} == no OLD_FILES+=etc/periodic/monthly/200.accounting OLD_FILES+=usr/bin/last OLD_FILES+=usr/bin/users OLD_FILES+=usr/bin/who OLD_FILES+=usr/sbin/ac OLD_FILES+=usr/sbin/lastlogin OLD_FILES+=usr/sbin/utx OLD_FILES+=usr/share/man/man1/last.1.gz OLD_FILES+=usr/share/man/man1/users.1.gz OLD_FILES+=usr/share/man/man1/who.1.gz OLD_FILES+=usr/share/man/man8/ac.8.gz OLD_FILES+=usr/share/man/man8/lastlogin.8.gz OLD_FILES+=usr/share/man/man8/utx.8.gz .endif .if ${MK_WIRELESS} == no OLD_FILES+=etc/regdomain.xml OLD_FILES+=etc/rc.d/hostapd OLD_FILES+=etc/rc.d/wpa_supplicant OLD_FILES+=usr/sbin/ancontrol OLD_FILES+=usr/sbin/hostapd OLD_FILES+=usr/sbin/hostapd_cli OLD_FILES+=usr/sbin/ndis_events OLD_FILES+=usr/sbin/wlandebug OLD_FILES+=usr/sbin/wpa_cli OLD_FILES+=usr/sbin/wpa_passphrase OLD_FILES+=usr/sbin/wpa_supplicant OLD_FILES+=usr/share/examples/etc/regdomain.xml OLD_FILES+=usr/share/examples/etc/wpa_supplicant.conf OLD_FILES+=usr/share/examples/hostapd/hostapd.conf OLD_FILES+=usr/share/examples/hostapd/hostapd.eap_user OLD_FILES+=usr/share/examples/hostapd/hostapd.wpa_psk OLD_DIRS+=usr/share/examples/hostapd OLD_FILES+=usr/share/man/man5/hostapd.conf.5.gz OLD_FILES+=usr/share/man/man5/wpa_supplicant.conf.5.gz OLD_FILES+=usr/share/man/man8/ancontrol.8.gz OLD_FILES+=usr/share/man/man8/hostapd.8.gz OLD_FILES+=usr/share/man/man8/hostapd_cli.8.gz OLD_FILES+=usr/share/man/man8/ndis_events.8.gz OLD_FILES+=usr/share/man/man8/wlandebug.8.gz OLD_FILES+=usr/share/man/man8/wpa_cli.8.gz OLD_FILES+=usr/share/man/man8/wpa_passphrase.8.gz OLD_FILES+=usr/share/man/man8/wpa_supplicant.8.gz .endif .if ${MK_SVNLITE} == no || ${MK_SVN} == yes OLD_FILES+=usr/bin/svnlite OLD_FILES+=usr/bin/svnliteadmin OLD_FILES+=usr/bin/svnlitedumpfilter OLD_FILES+=usr/bin/svnlitelook OLD_FILES+=usr/bin/svnlitemucc OLD_FILES+=usr/bin/svnliterdump OLD_FILES+=usr/bin/svnliteserve OLD_FILES+=usr/bin/svnlitesync OLD_FILES+=usr/bin/svnliteversion OLD_FILES+=usr/share/man/man1/svnlite.1.gz .endif .if ${MK_SVN} == no OLD_FILES+=usr/bin/svn OLD_FILES+=usr/bin/svnadmin OLD_FILES+=usr/bin/svndumpfilter OLD_FILES+=usr/bin/svnlook OLD_FILES+=usr/bin/svnmucc OLD_FILES+=usr/bin/svnrdump OLD_FILES+=usr/bin/svnserve OLD_FILES+=usr/bin/svnsync OLD_FILES+=usr/bin/svnversion .endif .if ${MK_HYPERV} == no OLD_FILES+=etc/devd/hyperv.conf OLD_FILES+=usr/libexec/hyperv/hv_set_ifconfig OLD_FILES+=usr/libexec/hyperv/hv_get_dns_info OLD_FILES+=usr/libexec/hyperv/hv_get_dhcp_info OLD_FILES+=usr/sbin/hv_kvp_daemon OLD_FILES+=usr/share/man/man8/hv_kvp_daemon.8.gz .endif .if ${MK_ZONEINFO} == no OLD_FILES+=usr/share/zoneinfo/Africa/Abidjan OLD_FILES+=usr/share/zoneinfo/Africa/Accra OLD_FILES+=usr/share/zoneinfo/Africa/Addis_Ababa OLD_FILES+=usr/share/zoneinfo/Africa/Algiers OLD_FILES+=usr/share/zoneinfo/Africa/Asmara OLD_FILES+=usr/share/zoneinfo/Africa/Bamako OLD_FILES+=usr/share/zoneinfo/Africa/Bangui OLD_FILES+=usr/share/zoneinfo/Africa/Banjul OLD_FILES+=usr/share/zoneinfo/Africa/Bissau OLD_FILES+=usr/share/zoneinfo/Africa/Blantyre OLD_FILES+=usr/share/zoneinfo/Africa/Brazzaville OLD_FILES+=usr/share/zoneinfo/Africa/Bujumbura OLD_FILES+=usr/share/zoneinfo/Africa/Cairo OLD_FILES+=usr/share/zoneinfo/Africa/Casablanca OLD_FILES+=usr/share/zoneinfo/Africa/Ceuta OLD_FILES+=usr/share/zoneinfo/Africa/Conakry OLD_FILES+=usr/share/zoneinfo/Africa/Dakar OLD_FILES+=usr/share/zoneinfo/Africa/Dar_es_Salaam OLD_FILES+=usr/share/zoneinfo/Africa/Djibouti OLD_FILES+=usr/share/zoneinfo/Africa/Douala OLD_FILES+=usr/share/zoneinfo/Africa/El_Aaiun OLD_FILES+=usr/share/zoneinfo/Africa/Freetown OLD_FILES+=usr/share/zoneinfo/Africa/Gaborone OLD_FILES+=usr/share/zoneinfo/Africa/Harare OLD_FILES+=usr/share/zoneinfo/Africa/Johannesburg OLD_FILES+=usr/share/zoneinfo/Africa/Juba OLD_FILES+=usr/share/zoneinfo/Africa/Kampala OLD_FILES+=usr/share/zoneinfo/Africa/Khartoum OLD_FILES+=usr/share/zoneinfo/Africa/Kigali OLD_FILES+=usr/share/zoneinfo/Africa/Kinshasa OLD_FILES+=usr/share/zoneinfo/Africa/Lagos OLD_FILES+=usr/share/zoneinfo/Africa/Libreville OLD_FILES+=usr/share/zoneinfo/Africa/Lome OLD_FILES+=usr/share/zoneinfo/Africa/Luanda OLD_FILES+=usr/share/zoneinfo/Africa/Lubumbashi OLD_FILES+=usr/share/zoneinfo/Africa/Lusaka OLD_FILES+=usr/share/zoneinfo/Africa/Malabo OLD_FILES+=usr/share/zoneinfo/Africa/Maputo OLD_FILES+=usr/share/zoneinfo/Africa/Maseru OLD_FILES+=usr/share/zoneinfo/Africa/Mbabane OLD_FILES+=usr/share/zoneinfo/Africa/Mogadishu OLD_FILES+=usr/share/zoneinfo/Africa/Monrovia OLD_FILES+=usr/share/zoneinfo/Africa/Nairobi OLD_FILES+=usr/share/zoneinfo/Africa/Ndjamena OLD_FILES+=usr/share/zoneinfo/Africa/Niamey OLD_FILES+=usr/share/zoneinfo/Africa/Nouakchott OLD_FILES+=usr/share/zoneinfo/Africa/Ouagadougou OLD_FILES+=usr/share/zoneinfo/Africa/Porto-Novo OLD_FILES+=usr/share/zoneinfo/Africa/Sao_Tome OLD_FILES+=usr/share/zoneinfo/Africa/Tripoli OLD_FILES+=usr/share/zoneinfo/Africa/Tunis OLD_FILES+=usr/share/zoneinfo/Africa/Windhoek OLD_FILES+=usr/share/zoneinfo/America/Adak OLD_FILES+=usr/share/zoneinfo/America/Anchorage OLD_FILES+=usr/share/zoneinfo/America/Anguilla OLD_FILES+=usr/share/zoneinfo/America/Antigua OLD_FILES+=usr/share/zoneinfo/America/Araguaina OLD_FILES+=usr/share/zoneinfo/America/Argentina/Buenos_Aires OLD_FILES+=usr/share/zoneinfo/America/Argentina/Catamarca OLD_FILES+=usr/share/zoneinfo/America/Argentina/Cordoba OLD_FILES+=usr/share/zoneinfo/America/Argentina/Jujuy OLD_FILES+=usr/share/zoneinfo/America/Argentina/La_Rioja OLD_FILES+=usr/share/zoneinfo/America/Argentina/Mendoza OLD_FILES+=usr/share/zoneinfo/America/Argentina/Rio_Gallegos OLD_FILES+=usr/share/zoneinfo/America/Argentina/Salta OLD_FILES+=usr/share/zoneinfo/America/Argentina/San_Juan OLD_FILES+=usr/share/zoneinfo/America/Argentina/San_Luis OLD_FILES+=usr/share/zoneinfo/America/Argentina/Tucuman OLD_FILES+=usr/share/zoneinfo/America/Argentina/Ushuaia OLD_FILES+=usr/share/zoneinfo/America/Aruba OLD_FILES+=usr/share/zoneinfo/America/Asuncion OLD_FILES+=usr/share/zoneinfo/America/Atikokan OLD_FILES+=usr/share/zoneinfo/America/Bahia OLD_FILES+=usr/share/zoneinfo/America/Bahia_Banderas OLD_FILES+=usr/share/zoneinfo/America/Barbados OLD_FILES+=usr/share/zoneinfo/America/Belem OLD_FILES+=usr/share/zoneinfo/America/Belize OLD_FILES+=usr/share/zoneinfo/America/Blanc-Sablon OLD_FILES+=usr/share/zoneinfo/America/Boa_Vista OLD_FILES+=usr/share/zoneinfo/America/Bogota OLD_FILES+=usr/share/zoneinfo/America/Boise OLD_FILES+=usr/share/zoneinfo/America/Cambridge_Bay OLD_FILES+=usr/share/zoneinfo/America/Campo_Grande OLD_FILES+=usr/share/zoneinfo/America/Cancun OLD_FILES+=usr/share/zoneinfo/America/Caracas OLD_FILES+=usr/share/zoneinfo/America/Cayenne OLD_FILES+=usr/share/zoneinfo/America/Cayman OLD_FILES+=usr/share/zoneinfo/America/Chicago OLD_FILES+=usr/share/zoneinfo/America/Chihuahua OLD_FILES+=usr/share/zoneinfo/America/Costa_Rica OLD_FILES+=usr/share/zoneinfo/America/Creston OLD_FILES+=usr/share/zoneinfo/America/Cuiaba OLD_FILES+=usr/share/zoneinfo/America/Curacao OLD_FILES+=usr/share/zoneinfo/America/Danmarkshavn OLD_FILES+=usr/share/zoneinfo/America/Dawson OLD_FILES+=usr/share/zoneinfo/America/Dawson_Creek OLD_FILES+=usr/share/zoneinfo/America/Denver OLD_FILES+=usr/share/zoneinfo/America/Detroit OLD_FILES+=usr/share/zoneinfo/America/Dominica OLD_FILES+=usr/share/zoneinfo/America/Edmonton OLD_FILES+=usr/share/zoneinfo/America/Eirunepe OLD_FILES+=usr/share/zoneinfo/America/El_Salvador OLD_FILES+=usr/share/zoneinfo/America/Fortaleza OLD_FILES+=usr/share/zoneinfo/America/Glace_Bay OLD_FILES+=usr/share/zoneinfo/America/Godthab OLD_FILES+=usr/share/zoneinfo/America/Goose_Bay OLD_FILES+=usr/share/zoneinfo/America/Grand_Turk OLD_FILES+=usr/share/zoneinfo/America/Grenada OLD_FILES+=usr/share/zoneinfo/America/Guadeloupe OLD_FILES+=usr/share/zoneinfo/America/Guatemala OLD_FILES+=usr/share/zoneinfo/America/Guayaquil OLD_FILES+=usr/share/zoneinfo/America/Guyana OLD_FILES+=usr/share/zoneinfo/America/Halifax OLD_FILES+=usr/share/zoneinfo/America/Havana OLD_FILES+=usr/share/zoneinfo/America/Hermosillo OLD_FILES+=usr/share/zoneinfo/America/Indiana/Indianapolis OLD_FILES+=usr/share/zoneinfo/America/Indiana/Knox OLD_FILES+=usr/share/zoneinfo/America/Indiana/Marengo OLD_FILES+=usr/share/zoneinfo/America/Indiana/Petersburg OLD_FILES+=usr/share/zoneinfo/America/Indiana/Tell_City OLD_FILES+=usr/share/zoneinfo/America/Indiana/Vevay OLD_FILES+=usr/share/zoneinfo/America/Indiana/Vincennes OLD_FILES+=usr/share/zoneinfo/America/Indiana/Winamac OLD_FILES+=usr/share/zoneinfo/America/Inuvik OLD_FILES+=usr/share/zoneinfo/America/Iqaluit OLD_FILES+=usr/share/zoneinfo/America/Jamaica OLD_FILES+=usr/share/zoneinfo/America/Juneau OLD_FILES+=usr/share/zoneinfo/America/Kentucky/Louisville OLD_FILES+=usr/share/zoneinfo/America/Kentucky/Monticello OLD_FILES+=usr/share/zoneinfo/America/Kralendijk OLD_FILES+=usr/share/zoneinfo/America/La_Paz OLD_FILES+=usr/share/zoneinfo/America/Lima OLD_FILES+=usr/share/zoneinfo/America/Los_Angeles OLD_FILES+=usr/share/zoneinfo/America/Lower_Princes OLD_FILES+=usr/share/zoneinfo/America/Maceio OLD_FILES+=usr/share/zoneinfo/America/Managua OLD_FILES+=usr/share/zoneinfo/America/Manaus OLD_FILES+=usr/share/zoneinfo/America/Marigot OLD_FILES+=usr/share/zoneinfo/America/Martinique OLD_FILES+=usr/share/zoneinfo/America/Matamoros OLD_FILES+=usr/share/zoneinfo/America/Mazatlan OLD_FILES+=usr/share/zoneinfo/America/Menominee OLD_FILES+=usr/share/zoneinfo/America/Merida OLD_FILES+=usr/share/zoneinfo/America/Metlakatla OLD_FILES+=usr/share/zoneinfo/America/Mexico_City OLD_FILES+=usr/share/zoneinfo/America/Miquelon OLD_FILES+=usr/share/zoneinfo/America/Moncton OLD_FILES+=usr/share/zoneinfo/America/Monterrey OLD_FILES+=usr/share/zoneinfo/America/Montevideo OLD_FILES+=usr/share/zoneinfo/America/Montreal OLD_FILES+=usr/share/zoneinfo/America/Montserrat OLD_FILES+=usr/share/zoneinfo/America/Nassau OLD_FILES+=usr/share/zoneinfo/America/New_York OLD_FILES+=usr/share/zoneinfo/America/Nipigon OLD_FILES+=usr/share/zoneinfo/America/Nome OLD_FILES+=usr/share/zoneinfo/America/Noronha OLD_FILES+=usr/share/zoneinfo/America/North_Dakota/Beulah OLD_FILES+=usr/share/zoneinfo/America/North_Dakota/Center OLD_FILES+=usr/share/zoneinfo/America/North_Dakota/New_Salem OLD_FILES+=usr/share/zoneinfo/America/Ojinaga OLD_FILES+=usr/share/zoneinfo/America/Panama OLD_FILES+=usr/share/zoneinfo/America/Pangnirtung OLD_FILES+=usr/share/zoneinfo/America/Paramaribo OLD_FILES+=usr/share/zoneinfo/America/Phoenix OLD_FILES+=usr/share/zoneinfo/America/Port-au-Prince OLD_FILES+=usr/share/zoneinfo/America/Port_of_Spain OLD_FILES+=usr/share/zoneinfo/America/Porto_Velho OLD_FILES+=usr/share/zoneinfo/America/Puerto_Rico OLD_FILES+=usr/share/zoneinfo/America/Rainy_River OLD_FILES+=usr/share/zoneinfo/America/Rankin_Inlet OLD_FILES+=usr/share/zoneinfo/America/Recife OLD_FILES+=usr/share/zoneinfo/America/Regina OLD_FILES+=usr/share/zoneinfo/America/Resolute OLD_FILES+=usr/share/zoneinfo/America/Rio_Branco OLD_FILES+=usr/share/zoneinfo/America/Santa_Isabel OLD_FILES+=usr/share/zoneinfo/America/Santarem OLD_FILES+=usr/share/zoneinfo/America/Santiago OLD_FILES+=usr/share/zoneinfo/America/Santo_Domingo OLD_FILES+=usr/share/zoneinfo/America/Sao_Paulo OLD_FILES+=usr/share/zoneinfo/America/Scoresbysund OLD_FILES+=usr/share/zoneinfo/America/Sitka OLD_FILES+=usr/share/zoneinfo/America/St_Barthelemy OLD_FILES+=usr/share/zoneinfo/America/St_Johns OLD_FILES+=usr/share/zoneinfo/America/St_Kitts OLD_FILES+=usr/share/zoneinfo/America/St_Lucia OLD_FILES+=usr/share/zoneinfo/America/St_Thomas OLD_FILES+=usr/share/zoneinfo/America/St_Vincent OLD_FILES+=usr/share/zoneinfo/America/Swift_Current OLD_FILES+=usr/share/zoneinfo/America/Tegucigalpa OLD_FILES+=usr/share/zoneinfo/America/Thule OLD_FILES+=usr/share/zoneinfo/America/Thunder_Bay OLD_FILES+=usr/share/zoneinfo/America/Tijuana OLD_FILES+=usr/share/zoneinfo/America/Toronto OLD_FILES+=usr/share/zoneinfo/America/Tortola OLD_FILES+=usr/share/zoneinfo/America/Vancouver OLD_FILES+=usr/share/zoneinfo/America/Whitehorse OLD_FILES+=usr/share/zoneinfo/America/Winnipeg OLD_FILES+=usr/share/zoneinfo/America/Yakutat OLD_FILES+=usr/share/zoneinfo/America/Yellowknife OLD_FILES+=usr/share/zoneinfo/Antarctica/Casey OLD_FILES+=usr/share/zoneinfo/Antarctica/Davis OLD_FILES+=usr/share/zoneinfo/Antarctica/DumontDUrville OLD_FILES+=usr/share/zoneinfo/Antarctica/Macquarie OLD_FILES+=usr/share/zoneinfo/Antarctica/Mawson OLD_FILES+=usr/share/zoneinfo/Antarctica/McMurdo OLD_FILES+=usr/share/zoneinfo/Antarctica/Palmer OLD_FILES+=usr/share/zoneinfo/Antarctica/Rothera OLD_FILES+=usr/share/zoneinfo/Antarctica/Syowa OLD_FILES+=usr/share/zoneinfo/Antarctica/Troll OLD_FILES+=usr/share/zoneinfo/Antarctica/Vostok OLD_FILES+=usr/share/zoneinfo/Arctic/Longyearbyen OLD_FILES+=usr/share/zoneinfo/Asia/Aden OLD_FILES+=usr/share/zoneinfo/Asia/Almaty OLD_FILES+=usr/share/zoneinfo/Asia/Amman OLD_FILES+=usr/share/zoneinfo/Asia/Anadyr OLD_FILES+=usr/share/zoneinfo/Asia/Aqtau OLD_FILES+=usr/share/zoneinfo/Asia/Aqtobe OLD_FILES+=usr/share/zoneinfo/Asia/Ashgabat OLD_FILES+=usr/share/zoneinfo/Asia/Baghdad OLD_FILES+=usr/share/zoneinfo/Asia/Bahrain OLD_FILES+=usr/share/zoneinfo/Asia/Baku OLD_FILES+=usr/share/zoneinfo/Asia/Bangkok OLD_FILES+=usr/share/zoneinfo/Asia/Beirut OLD_FILES+=usr/share/zoneinfo/Asia/Bishkek OLD_FILES+=usr/share/zoneinfo/Asia/Brunei OLD_FILES+=usr/share/zoneinfo/Asia/Chita OLD_FILES+=usr/share/zoneinfo/Asia/Choibalsan OLD_FILES+=usr/share/zoneinfo/Asia/Colombo OLD_FILES+=usr/share/zoneinfo/Asia/Damascus OLD_FILES+=usr/share/zoneinfo/Asia/Dhaka OLD_FILES+=usr/share/zoneinfo/Asia/Dili OLD_FILES+=usr/share/zoneinfo/Asia/Dubai OLD_FILES+=usr/share/zoneinfo/Asia/Dushanbe OLD_FILES+=usr/share/zoneinfo/Asia/Gaza OLD_FILES+=usr/share/zoneinfo/Asia/Hebron OLD_FILES+=usr/share/zoneinfo/Asia/Ho_Chi_Minh OLD_FILES+=usr/share/zoneinfo/Asia/Hong_Kong OLD_FILES+=usr/share/zoneinfo/Asia/Hovd OLD_FILES+=usr/share/zoneinfo/Asia/Irkutsk OLD_FILES+=usr/share/zoneinfo/Asia/Istanbul OLD_FILES+=usr/share/zoneinfo/Asia/Jakarta OLD_FILES+=usr/share/zoneinfo/Asia/Jayapura OLD_FILES+=usr/share/zoneinfo/Asia/Jerusalem OLD_FILES+=usr/share/zoneinfo/Asia/Kabul OLD_FILES+=usr/share/zoneinfo/Asia/Kamchatka OLD_FILES+=usr/share/zoneinfo/Asia/Karachi OLD_FILES+=usr/share/zoneinfo/Asia/Kathmandu OLD_FILES+=usr/share/zoneinfo/Asia/Khandyga OLD_FILES+=usr/share/zoneinfo/Asia/Kolkata OLD_FILES+=usr/share/zoneinfo/Asia/Krasnoyarsk OLD_FILES+=usr/share/zoneinfo/Asia/Kuala_Lumpur OLD_FILES+=usr/share/zoneinfo/Asia/Kuching OLD_FILES+=usr/share/zoneinfo/Asia/Kuwait OLD_FILES+=usr/share/zoneinfo/Asia/Macau OLD_FILES+=usr/share/zoneinfo/Asia/Magadan OLD_FILES+=usr/share/zoneinfo/Asia/Makassar OLD_FILES+=usr/share/zoneinfo/Asia/Manila OLD_FILES+=usr/share/zoneinfo/Asia/Muscat OLD_FILES+=usr/share/zoneinfo/Asia/Nicosia OLD_FILES+=usr/share/zoneinfo/Asia/Novokuznetsk OLD_FILES+=usr/share/zoneinfo/Asia/Novosibirsk OLD_FILES+=usr/share/zoneinfo/Asia/Omsk OLD_FILES+=usr/share/zoneinfo/Asia/Oral OLD_FILES+=usr/share/zoneinfo/Asia/Phnom_Penh OLD_FILES+=usr/share/zoneinfo/Asia/Pontianak OLD_FILES+=usr/share/zoneinfo/Asia/Pyongyang OLD_FILES+=usr/share/zoneinfo/Asia/Qatar OLD_FILES+=usr/share/zoneinfo/Asia/Qyzylorda OLD_FILES+=usr/share/zoneinfo/Asia/Rangoon OLD_FILES+=usr/share/zoneinfo/Asia/Riyadh OLD_FILES+=usr/share/zoneinfo/Asia/Sakhalin OLD_FILES+=usr/share/zoneinfo/Asia/Samarkand OLD_FILES+=usr/share/zoneinfo/Asia/Seoul OLD_FILES+=usr/share/zoneinfo/Asia/Shanghai OLD_FILES+=usr/share/zoneinfo/Asia/Singapore OLD_FILES+=usr/share/zoneinfo/Asia/Srednekolymsk OLD_FILES+=usr/share/zoneinfo/Asia/Taipei OLD_FILES+=usr/share/zoneinfo/Asia/Tashkent OLD_FILES+=usr/share/zoneinfo/Asia/Tbilisi OLD_FILES+=usr/share/zoneinfo/Asia/Tehran OLD_FILES+=usr/share/zoneinfo/Asia/Thimphu OLD_FILES+=usr/share/zoneinfo/Asia/Tokyo OLD_FILES+=usr/share/zoneinfo/Asia/Ulaanbaatar OLD_FILES+=usr/share/zoneinfo/Asia/Urumqi OLD_FILES+=usr/share/zoneinfo/Asia/Ust-Nera OLD_FILES+=usr/share/zoneinfo/Asia/Vientiane OLD_FILES+=usr/share/zoneinfo/Asia/Vladivostok OLD_FILES+=usr/share/zoneinfo/Asia/Yakutsk OLD_FILES+=usr/share/zoneinfo/Asia/Yekaterinburg OLD_FILES+=usr/share/zoneinfo/Asia/Yerevan OLD_FILES+=usr/share/zoneinfo/Atlantic/Azores OLD_FILES+=usr/share/zoneinfo/Atlantic/Bermuda OLD_FILES+=usr/share/zoneinfo/Atlantic/Canary OLD_FILES+=usr/share/zoneinfo/Atlantic/Cape_Verde OLD_FILES+=usr/share/zoneinfo/Atlantic/Faroe OLD_FILES+=usr/share/zoneinfo/Atlantic/Madeira OLD_FILES+=usr/share/zoneinfo/Atlantic/Reykjavik OLD_FILES+=usr/share/zoneinfo/Atlantic/South_Georgia OLD_FILES+=usr/share/zoneinfo/Atlantic/St_Helena OLD_FILES+=usr/share/zoneinfo/Atlantic/Stanley OLD_FILES+=usr/share/zoneinfo/Australia/Adelaide OLD_FILES+=usr/share/zoneinfo/Australia/Brisbane OLD_FILES+=usr/share/zoneinfo/Australia/Broken_Hill OLD_FILES+=usr/share/zoneinfo/Australia/Currie OLD_FILES+=usr/share/zoneinfo/Australia/Darwin OLD_FILES+=usr/share/zoneinfo/Australia/Eucla OLD_FILES+=usr/share/zoneinfo/Australia/Hobart OLD_FILES+=usr/share/zoneinfo/Australia/Lindeman OLD_FILES+=usr/share/zoneinfo/Australia/Lord_Howe OLD_FILES+=usr/share/zoneinfo/Australia/Melbourne OLD_FILES+=usr/share/zoneinfo/Australia/Perth OLD_FILES+=usr/share/zoneinfo/Australia/Sydney OLD_FILES+=usr/share/zoneinfo/CET OLD_FILES+=usr/share/zoneinfo/CST6CDT OLD_FILES+=usr/share/zoneinfo/EET OLD_FILES+=usr/share/zoneinfo/EST OLD_FILES+=usr/share/zoneinfo/EST5EDT OLD_FILES+=usr/share/zoneinfo/Etc/GMT OLD_FILES+=usr/share/zoneinfo/Etc/GMT+0 OLD_FILES+=usr/share/zoneinfo/Etc/GMT+1 OLD_FILES+=usr/share/zoneinfo/Etc/GMT+10 OLD_FILES+=usr/share/zoneinfo/Etc/GMT+11 OLD_FILES+=usr/share/zoneinfo/Etc/GMT+12 OLD_FILES+=usr/share/zoneinfo/Etc/GMT+2 OLD_FILES+=usr/share/zoneinfo/Etc/GMT+3 OLD_FILES+=usr/share/zoneinfo/Etc/GMT+4 OLD_FILES+=usr/share/zoneinfo/Etc/GMT+5 OLD_FILES+=usr/share/zoneinfo/Etc/GMT+6 OLD_FILES+=usr/share/zoneinfo/Etc/GMT+7 OLD_FILES+=usr/share/zoneinfo/Etc/GMT+8 OLD_FILES+=usr/share/zoneinfo/Etc/GMT+9 OLD_FILES+=usr/share/zoneinfo/Etc/GMT-0 OLD_FILES+=usr/share/zoneinfo/Etc/GMT-1 OLD_FILES+=usr/share/zoneinfo/Etc/GMT-10 OLD_FILES+=usr/share/zoneinfo/Etc/GMT-11 OLD_FILES+=usr/share/zoneinfo/Etc/GMT-12 OLD_FILES+=usr/share/zoneinfo/Etc/GMT-13 OLD_FILES+=usr/share/zoneinfo/Etc/GMT-14 OLD_FILES+=usr/share/zoneinfo/Etc/GMT-2 OLD_FILES+=usr/share/zoneinfo/Etc/GMT-3 OLD_FILES+=usr/share/zoneinfo/Etc/GMT-4 OLD_FILES+=usr/share/zoneinfo/Etc/GMT-5 OLD_FILES+=usr/share/zoneinfo/Etc/GMT-6 OLD_FILES+=usr/share/zoneinfo/Etc/GMT-7 OLD_FILES+=usr/share/zoneinfo/Etc/GMT-8 OLD_FILES+=usr/share/zoneinfo/Etc/GMT-9 OLD_FILES+=usr/share/zoneinfo/Etc/GMT0 OLD_FILES+=usr/share/zoneinfo/Etc/Greenwich OLD_FILES+=usr/share/zoneinfo/Etc/UCT OLD_FILES+=usr/share/zoneinfo/Etc/UTC OLD_FILES+=usr/share/zoneinfo/Etc/Universal OLD_FILES+=usr/share/zoneinfo/Etc/Zulu OLD_FILES+=usr/share/zoneinfo/Europe/Amsterdam OLD_FILES+=usr/share/zoneinfo/Europe/Andorra OLD_FILES+=usr/share/zoneinfo/Europe/Athens OLD_FILES+=usr/share/zoneinfo/Europe/Belgrade OLD_FILES+=usr/share/zoneinfo/Europe/Berlin OLD_FILES+=usr/share/zoneinfo/Europe/Bratislava OLD_FILES+=usr/share/zoneinfo/Europe/Brussels OLD_FILES+=usr/share/zoneinfo/Europe/Bucharest OLD_FILES+=usr/share/zoneinfo/Europe/Budapest OLD_FILES+=usr/share/zoneinfo/Europe/Busingen OLD_FILES+=usr/share/zoneinfo/Europe/Chisinau OLD_FILES+=usr/share/zoneinfo/Europe/Copenhagen OLD_FILES+=usr/share/zoneinfo/Europe/Dublin OLD_FILES+=usr/share/zoneinfo/Europe/Gibraltar OLD_FILES+=usr/share/zoneinfo/Europe/Guernsey OLD_FILES+=usr/share/zoneinfo/Europe/Helsinki OLD_FILES+=usr/share/zoneinfo/Europe/Isle_of_Man OLD_FILES+=usr/share/zoneinfo/Europe/Istanbul OLD_FILES+=usr/share/zoneinfo/Europe/Jersey OLD_FILES+=usr/share/zoneinfo/Europe/Kaliningrad OLD_FILES+=usr/share/zoneinfo/Europe/Kiev OLD_FILES+=usr/share/zoneinfo/Europe/Lisbon OLD_FILES+=usr/share/zoneinfo/Europe/Ljubljana OLD_FILES+=usr/share/zoneinfo/Europe/London OLD_FILES+=usr/share/zoneinfo/Europe/Luxembourg OLD_FILES+=usr/share/zoneinfo/Europe/Madrid OLD_FILES+=usr/share/zoneinfo/Europe/Malta OLD_FILES+=usr/share/zoneinfo/Europe/Mariehamn OLD_FILES+=usr/share/zoneinfo/Europe/Minsk OLD_FILES+=usr/share/zoneinfo/Europe/Monaco OLD_FILES+=usr/share/zoneinfo/Europe/Moscow OLD_FILES+=usr/share/zoneinfo/Europe/Nicosia OLD_FILES+=usr/share/zoneinfo/Europe/Oslo OLD_FILES+=usr/share/zoneinfo/Europe/Paris OLD_FILES+=usr/share/zoneinfo/Europe/Podgorica OLD_FILES+=usr/share/zoneinfo/Europe/Prague OLD_FILES+=usr/share/zoneinfo/Europe/Riga OLD_FILES+=usr/share/zoneinfo/Europe/Rome OLD_FILES+=usr/share/zoneinfo/Europe/Samara OLD_FILES+=usr/share/zoneinfo/Europe/San_Marino OLD_FILES+=usr/share/zoneinfo/Europe/Sarajevo OLD_FILES+=usr/share/zoneinfo/Europe/Simferopol OLD_FILES+=usr/share/zoneinfo/Europe/Skopje OLD_FILES+=usr/share/zoneinfo/Europe/Sofia OLD_FILES+=usr/share/zoneinfo/Europe/Stockholm OLD_FILES+=usr/share/zoneinfo/Europe/Tallinn OLD_FILES+=usr/share/zoneinfo/Europe/Tirane OLD_FILES+=usr/share/zoneinfo/Europe/Uzhgorod OLD_FILES+=usr/share/zoneinfo/Europe/Vaduz OLD_FILES+=usr/share/zoneinfo/Europe/Vatican OLD_FILES+=usr/share/zoneinfo/Europe/Vienna OLD_FILES+=usr/share/zoneinfo/Europe/Vilnius OLD_FILES+=usr/share/zoneinfo/Europe/Volgograd OLD_FILES+=usr/share/zoneinfo/Europe/Warsaw OLD_FILES+=usr/share/zoneinfo/Europe/Zagreb OLD_FILES+=usr/share/zoneinfo/Europe/Zaporozhye OLD_FILES+=usr/share/zoneinfo/Europe/Zurich OLD_FILES+=usr/share/zoneinfo/Factory OLD_FILES+=usr/share/zoneinfo/HST OLD_FILES+=usr/share/zoneinfo/Indian/Antananarivo OLD_FILES+=usr/share/zoneinfo/Indian/Chagos OLD_FILES+=usr/share/zoneinfo/Indian/Christmas OLD_FILES+=usr/share/zoneinfo/Indian/Cocos OLD_FILES+=usr/share/zoneinfo/Indian/Comoro OLD_FILES+=usr/share/zoneinfo/Indian/Kerguelen OLD_FILES+=usr/share/zoneinfo/Indian/Mahe OLD_FILES+=usr/share/zoneinfo/Indian/Maldives OLD_FILES+=usr/share/zoneinfo/Indian/Mauritius OLD_FILES+=usr/share/zoneinfo/Indian/Mayotte OLD_FILES+=usr/share/zoneinfo/Indian/Reunion OLD_FILES+=usr/share/zoneinfo/MET OLD_FILES+=usr/share/zoneinfo/MST OLD_FILES+=usr/share/zoneinfo/MST7MDT OLD_FILES+=usr/share/zoneinfo/PST8PDT OLD_FILES+=usr/share/zoneinfo/Pacific/Apia OLD_FILES+=usr/share/zoneinfo/Pacific/Auckland OLD_FILES+=usr/share/zoneinfo/Pacific/Bougainville OLD_FILES+=usr/share/zoneinfo/Pacific/Chatham OLD_FILES+=usr/share/zoneinfo/Pacific/Chuuk OLD_FILES+=usr/share/zoneinfo/Pacific/Easter OLD_FILES+=usr/share/zoneinfo/Pacific/Efate OLD_FILES+=usr/share/zoneinfo/Pacific/Enderbury OLD_FILES+=usr/share/zoneinfo/Pacific/Fakaofo OLD_FILES+=usr/share/zoneinfo/Pacific/Fiji OLD_FILES+=usr/share/zoneinfo/Pacific/Funafuti OLD_FILES+=usr/share/zoneinfo/Pacific/Galapagos OLD_FILES+=usr/share/zoneinfo/Pacific/Gambier OLD_FILES+=usr/share/zoneinfo/Pacific/Guadalcanal OLD_FILES+=usr/share/zoneinfo/Pacific/Guam OLD_FILES+=usr/share/zoneinfo/Pacific/Honolulu OLD_FILES+=usr/share/zoneinfo/Pacific/Johnston OLD_FILES+=usr/share/zoneinfo/Pacific/Kiritimati OLD_FILES+=usr/share/zoneinfo/Pacific/Kosrae OLD_FILES+=usr/share/zoneinfo/Pacific/Kwajalein OLD_FILES+=usr/share/zoneinfo/Pacific/Majuro OLD_FILES+=usr/share/zoneinfo/Pacific/Marquesas OLD_FILES+=usr/share/zoneinfo/Pacific/Midway OLD_FILES+=usr/share/zoneinfo/Pacific/Nauru OLD_FILES+=usr/share/zoneinfo/Pacific/Niue OLD_FILES+=usr/share/zoneinfo/Pacific/Norfolk OLD_FILES+=usr/share/zoneinfo/Pacific/Noumea OLD_FILES+=usr/share/zoneinfo/Pacific/Pago_Pago OLD_FILES+=usr/share/zoneinfo/Pacific/Palau OLD_FILES+=usr/share/zoneinfo/Pacific/Pitcairn OLD_FILES+=usr/share/zoneinfo/Pacific/Pohnpei OLD_FILES+=usr/share/zoneinfo/Pacific/Port_Moresby OLD_FILES+=usr/share/zoneinfo/Pacific/Rarotonga OLD_FILES+=usr/share/zoneinfo/Pacific/Saipan OLD_FILES+=usr/share/zoneinfo/Pacific/Tahiti OLD_FILES+=usr/share/zoneinfo/Pacific/Tarawa OLD_FILES+=usr/share/zoneinfo/Pacific/Tongatapu OLD_FILES+=usr/share/zoneinfo/Pacific/Wake OLD_FILES+=usr/share/zoneinfo/Pacific/Wallis OLD_FILES+=usr/share/zoneinfo/UTC OLD_FILES+=usr/share/zoneinfo/WET OLD_FILES+=usr/share/zoneinfo/posixrules OLD_FILES+=usr/share/zoneinfo/zone.tab .endif